mirror of
https://github.com/akveo/eva-icons.git
synced 2025-09-01 18:03:01 +02:00
feat: initial commit, add base app structure, base modules, components, services
This commit is contained in:
13
.editorconfig
Normal file
13
.editorconfig
Normal file
@@ -0,0 +1,13 @@
|
||||
# Editor configuration, see http://editorconfig.org
|
||||
root = true
|
||||
|
||||
[*]
|
||||
charset = utf-8
|
||||
indent_style = space
|
||||
indent_size = 2
|
||||
insert_final_newline = true
|
||||
trim_trailing_whitespace = true
|
||||
|
||||
[*.md]
|
||||
max_line_length = off
|
||||
trim_trailing_whitespace = false
|
43
.gitignore
vendored
Normal file
43
.gitignore
vendored
Normal file
@@ -0,0 +1,43 @@
|
||||
# compiled output
|
||||
/dist
|
||||
/tmp
|
||||
/out-tsc
|
||||
|
||||
# dependencies
|
||||
/node_modules
|
||||
|
||||
# IDEs and editors
|
||||
/.idea
|
||||
.project
|
||||
.classpath
|
||||
.c9/
|
||||
*.launch
|
||||
.settings/
|
||||
*.sublime-workspace
|
||||
|
||||
# IDE - VSCode
|
||||
.vscode/*
|
||||
!.vscode/settings.json
|
||||
!.vscode/tasks.json
|
||||
!.vscode/launch.json
|
||||
!.vscode/extensions.json
|
||||
|
||||
# misc
|
||||
/.sass-cache
|
||||
/connect.lock
|
||||
/coverage
|
||||
/libpeerconnection.log
|
||||
npm-debug.log
|
||||
yarn-error.log
|
||||
testem.log
|
||||
/typings
|
||||
|
||||
# e2e
|
||||
/e2e/*.js
|
||||
/e2e/*.map
|
||||
|
||||
# System Files
|
||||
.DS_Store
|
||||
Thumbs.db
|
||||
debug.log
|
||||
local.log
|
28
README.md
28
README.md
@@ -1 +1,27 @@
|
||||
# eva-icons
|
||||
# EvaIcons
|
||||
|
||||
This project was generated with [Angular CLI](https://github.com/angular/angular-cli) version 6.1.4.
|
||||
|
||||
## Development server
|
||||
|
||||
Run `ng serve` for a dev server. Navigate to `http://localhost:4200/`. The app will automatically reload if you change any of the source files.
|
||||
|
||||
## Code scaffolding
|
||||
|
||||
Run `ng generate component component-name` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module`.
|
||||
|
||||
## Build
|
||||
|
||||
Run `ng build` to build the project. The build artifacts will be stored in the `dist/` directory. Use the `--prod` flag for a production build.
|
||||
|
||||
## Running unit tests
|
||||
|
||||
Run `ng test` to execute the unit tests via [Karma](https://karma-runner.github.io).
|
||||
|
||||
## Running end-to-end tests
|
||||
|
||||
Run `ng e2e` to execute the end-to-end tests via [Protractor](http://www.protractortest.org/).
|
||||
|
||||
## Further help
|
||||
|
||||
To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI README](https://github.com/angular/angular-cli/blob/master/README.md).
|
||||
|
136
angular.json
Normal file
136
angular.json
Normal file
@@ -0,0 +1,136 @@
|
||||
{
|
||||
"$schema": "./node_modules/@angular/cli/lib/config/schema.json",
|
||||
"version": 1,
|
||||
"newProjectRoot": "projects",
|
||||
"projects": {
|
||||
"eva-icons": {
|
||||
"root": "",
|
||||
"sourceRoot": "src",
|
||||
"projectType": "application",
|
||||
"prefix": "app",
|
||||
"schematics": {},
|
||||
"architect": {
|
||||
"build": {
|
||||
"builder": "@angular-devkit/build-angular:browser",
|
||||
"options": {
|
||||
"outputPath": "dist/eva-icons",
|
||||
"index": "src/index.html",
|
||||
"main": "src/main.ts",
|
||||
"polyfills": "src/polyfills.ts",
|
||||
"tsConfig": "src/tsconfig.app.json",
|
||||
"assets": [
|
||||
"src/favicon.ico",
|
||||
"src/assets"
|
||||
],
|
||||
"styles": [
|
||||
"node_modules/bootstrap/dist/css/bootstrap.css",
|
||||
"node_modules/nebular-icons/scss/nebular-icons.scss",
|
||||
"src/app/@theme/styles/styles.scss"
|
||||
],
|
||||
"scripts": []
|
||||
},
|
||||
"configurations": {
|
||||
"production": {
|
||||
"fileReplacements": [
|
||||
{
|
||||
"replace": "src/environments/environment.ts",
|
||||
"with": "src/environments/environment.prod.ts"
|
||||
}
|
||||
],
|
||||
"optimization": true,
|
||||
"outputHashing": "all",
|
||||
"sourceMap": false,
|
||||
"extractCss": true,
|
||||
"namedChunks": false,
|
||||
"aot": true,
|
||||
"extractLicenses": true,
|
||||
"vendorChunk": false,
|
||||
"buildOptimizer": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"serve": {
|
||||
"builder": "@angular-devkit/build-angular:dev-server",
|
||||
"options": {
|
||||
"browserTarget": "eva-icons:build"
|
||||
},
|
||||
"configurations": {
|
||||
"production": {
|
||||
"browserTarget": "eva-icons:build:production"
|
||||
}
|
||||
}
|
||||
},
|
||||
"extract-i18n": {
|
||||
"builder": "@angular-devkit/build-angular:extract-i18n",
|
||||
"options": {
|
||||
"browserTarget": "eva-icons:build"
|
||||
}
|
||||
},
|
||||
"test": {
|
||||
"builder": "@angular-devkit/build-angular:karma",
|
||||
"options": {
|
||||
"main": "src/test.ts",
|
||||
"polyfills": "src/polyfills.ts",
|
||||
"tsConfig": "src/tsconfig.spec.json",
|
||||
"karmaConfig": "src/karma.conf.js",
|
||||
"styles": [
|
||||
"node_modules/bootstrap/dist/css/bootstrap.css",
|
||||
"node_modules/nebular-icons/scss/nebular-icons.scss",
|
||||
"src/app/@theme/styles/styles.scss"
|
||||
],
|
||||
"scripts": [],
|
||||
"assets": [
|
||||
"src/favicon.ico",
|
||||
"src/assets"
|
||||
]
|
||||
}
|
||||
},
|
||||
"lint": {
|
||||
"builder": "@angular-devkit/build-angular:tslint",
|
||||
"options": {
|
||||
"tsConfig": [
|
||||
"src/tsconfig.app.json",
|
||||
"src/tsconfig.spec.json"
|
||||
],
|
||||
"exclude": [
|
||||
"**/node_modules/**"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"eva-icons-e2e": {
|
||||
"root": "e2e/",
|
||||
"projectType": "application",
|
||||
"architect": {
|
||||
"e2e": {
|
||||
"builder": "@angular-devkit/build-angular:protractor",
|
||||
"options": {
|
||||
"protractorConfig": "e2e/protractor.conf.js",
|
||||
"devServerTarget": "eva-icons:serve"
|
||||
},
|
||||
"configurations": {
|
||||
"production": {
|
||||
"devServerTarget": "eva-icons:serve:production"
|
||||
}
|
||||
}
|
||||
},
|
||||
"lint": {
|
||||
"builder": "@angular-devkit/build-angular:tslint",
|
||||
"options": {
|
||||
"tsConfig": "e2e/tsconfig.e2e.json",
|
||||
"exclude": [
|
||||
"**/node_modules/**"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"defaultProject": "eva-icons",
|
||||
"schematics": {
|
||||
"@schematics/angular:component": {
|
||||
"styleext": "scss"
|
||||
}
|
||||
}
|
||||
}
|
14
e2e/src/app.e2e-spec.ts
Normal file
14
e2e/src/app.e2e-spec.ts
Normal file
@@ -0,0 +1,14 @@
|
||||
import { AppPage } from './app.po';
|
||||
|
||||
describe('workspace-project App', () => {
|
||||
let page: AppPage;
|
||||
|
||||
beforeEach(() => {
|
||||
page = new AppPage();
|
||||
});
|
||||
|
||||
it('should display welcome message', () => {
|
||||
page.navigateTo();
|
||||
expect(page.getParagraphText()).toEqual('Welcome to eva-icons!');
|
||||
});
|
||||
});
|
11
e2e/src/app.po.ts
Normal file
11
e2e/src/app.po.ts
Normal file
@@ -0,0 +1,11 @@
|
||||
import { browser, by, element } from 'protractor';
|
||||
|
||||
export class AppPage {
|
||||
navigateTo() {
|
||||
return browser.get('/');
|
||||
}
|
||||
|
||||
getParagraphText() {
|
||||
return element(by.css('app-root h1')).getText();
|
||||
}
|
||||
}
|
13
e2e/tsconfig.e2e.json
Normal file
13
e2e/tsconfig.e2e.json
Normal file
@@ -0,0 +1,13 @@
|
||||
{
|
||||
"extends": "../tsconfig.json",
|
||||
"compilerOptions": {
|
||||
"outDir": "../out-tsc/app",
|
||||
"module": "commonjs",
|
||||
"target": "es5",
|
||||
"types": [
|
||||
"jasmine",
|
||||
"jasminewd2",
|
||||
"node"
|
||||
]
|
||||
}
|
||||
}
|
10464
package-lock.json
generated
Normal file
10464
package-lock.json
generated
Normal file
File diff suppressed because it is too large
Load Diff
51
package.json
Normal file
51
package.json
Normal file
@@ -0,0 +1,51 @@
|
||||
{
|
||||
"name": "eva-icons",
|
||||
"version": "0.0.1",
|
||||
"scripts": {
|
||||
"ng": "ng",
|
||||
"start": "ng serve",
|
||||
"build": "ng build",
|
||||
"test": "ng test",
|
||||
"lint": "ng lint",
|
||||
"e2e": "ng e2e"
|
||||
},
|
||||
"private": true,
|
||||
"dependencies": {
|
||||
"@angular/animations": "^6.1.0",
|
||||
"@angular/common": "^6.1.0",
|
||||
"@angular/compiler": "^6.1.0",
|
||||
"@angular/core": "^6.1.0",
|
||||
"@angular/forms": "^6.1.0",
|
||||
"@angular/http": "^6.1.0",
|
||||
"@angular/platform-browser": "^6.1.0",
|
||||
"@angular/platform-browser-dynamic": "^6.1.0",
|
||||
"@angular/router": "^6.1.0",
|
||||
"@nebular/theme": "^2.0.0-rc.10",
|
||||
"bootstrap": "^4.1.3",
|
||||
"core-js": "^2.5.4",
|
||||
"nebular-icons": "^1.0.9",
|
||||
"rxjs": "^6.0.0",
|
||||
"zone.js": "~0.8.26"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@angular-devkit/build-angular": "~0.7.0",
|
||||
"@angular/cli": "~6.1.4",
|
||||
"@angular/compiler-cli": "^6.1.0",
|
||||
"@angular/language-service": "^6.1.0",
|
||||
"@types/jasmine": "~2.8.6",
|
||||
"@types/jasminewd2": "~2.0.3",
|
||||
"@types/node": "~8.9.4",
|
||||
"codelyzer": "~4.2.1",
|
||||
"jasmine-core": "~2.99.1",
|
||||
"jasmine-spec-reporter": "~4.2.1",
|
||||
"karma": "~1.7.1",
|
||||
"karma-chrome-launcher": "~2.2.0",
|
||||
"karma-coverage-istanbul-reporter": "~2.0.0",
|
||||
"karma-jasmine": "~1.1.1",
|
||||
"karma-jasmine-html-reporter": "^0.2.2",
|
||||
"protractor": "~5.4.0",
|
||||
"ts-node": "~5.0.1",
|
||||
"tslint": "~5.9.1",
|
||||
"typescript": "~2.7.2"
|
||||
}
|
||||
}
|
31
src/app/@core/core.module.ts
Normal file
31
src/app/@core/core.module.ts
Normal file
@@ -0,0 +1,31 @@
|
||||
import { ModuleWithProviders, NgModule, Optional, SkipSelf } from '@angular/core';
|
||||
import { CommonModule } from '@angular/common';
|
||||
|
||||
import { throwIfAlreadyLoaded } from './module-import-guard';
|
||||
import { DataModule } from './data/data.module';
|
||||
|
||||
const NB_CORE_PROVIDERS = [
|
||||
...DataModule.forRoot().providers,
|
||||
];
|
||||
|
||||
@NgModule({
|
||||
imports: [
|
||||
CommonModule,
|
||||
],
|
||||
exports: [],
|
||||
declarations: [],
|
||||
})
|
||||
export class CoreModule {
|
||||
constructor(@Optional() @SkipSelf() parentModule: CoreModule) {
|
||||
throwIfAlreadyLoaded(parentModule, 'CoreModule');
|
||||
}
|
||||
|
||||
static forRoot(): ModuleWithProviders {
|
||||
return <ModuleWithProviders>{
|
||||
ngModule: CoreModule,
|
||||
providers: [
|
||||
...NB_CORE_PROVIDERS,
|
||||
],
|
||||
};
|
||||
}
|
||||
}
|
27
src/app/@core/data/data.module.ts
Normal file
27
src/app/@core/data/data.module.ts
Normal file
@@ -0,0 +1,27 @@
|
||||
import { NgModule, ModuleWithProviders } from '@angular/core';
|
||||
import { CommonModule } from '@angular/common';
|
||||
|
||||
import { IconService } from './icon.service';
|
||||
|
||||
const SERVICES = [
|
||||
IconService,
|
||||
];
|
||||
|
||||
@NgModule({
|
||||
imports: [
|
||||
CommonModule,
|
||||
],
|
||||
providers: [
|
||||
...SERVICES,
|
||||
],
|
||||
})
|
||||
export class DataModule {
|
||||
static forRoot(): ModuleWithProviders {
|
||||
return <ModuleWithProviders>{
|
||||
ngModule: DataModule,
|
||||
providers: [
|
||||
...SERVICES,
|
||||
],
|
||||
};
|
||||
}
|
||||
}
|
44
src/app/@core/data/icon.service.ts
Normal file
44
src/app/@core/data/icon.service.ts
Normal file
@@ -0,0 +1,44 @@
|
||||
import { of as observableOf, Observable } from 'rxjs';
|
||||
import { Injectable } from '@angular/core';
|
||||
|
||||
@Injectable()
|
||||
export class IconService {
|
||||
|
||||
private fakeIconsData = ['nb-alert', 'nb-angle-double-left', 'nb-angle-double-right',
|
||||
'nb-arrow-down', 'nb-arrow-dropdown', 'nb-arrow-dropleft',
|
||||
'nb-arrow-dropright', 'nb-arrow-dropup', 'nb-arrow-left', 'nb-arrow-retweet', 'nb-arrow-right',
|
||||
'nb-arrow-thin-down', 'nb-arrow-thin-left', 'nb-arrow-thin-right', 'nb-arrow-thin-up',
|
||||
'nb-arrow-up', 'nb-audio', 'nb-bar-chart', 'nb-checkmark', 'nb-chevron-down',
|
||||
'nb-chevron-down-outline', 'nb-chevron-left', 'nb-chevron-left-outline', 'nb-chevron-right',
|
||||
'nb-chevron-right-outline', 'nb-chevron-up', 'nb-chevron-up-outline', 'nb-close',
|
||||
'nb-close-circled', 'nb-cloudy', 'nb-coffee-maker', 'nb-compose', 'nb-edit', 'nb-email',
|
||||
'nb-flame-circled', 'nb-gear', 'nb-grid-a', 'nb-grid-a-outline', 'nb-grid-b', 'nb-grid-b-outline',
|
||||
'nb-heart', 'nb-home', 'nb-keypad', 'nb-layout-centre', 'nb-layout-default', 'nb-layout-one-column',
|
||||
'nb-layout-sidebar-left', 'nb-layout-sidebar-right', 'nb-layout-two-column', 'nb-lightbulb',
|
||||
'nb-list', 'nb-location', 'nb-locked', 'nb-loop', 'nb-loop-circled', 'nb-menu', 'nb-notifications',
|
||||
'nb-paper-plane', 'nb-partlysunny', 'nb-pause', 'nb-pause-outline', 'nb-person', 'nb-phone',
|
||||
'nb-play', 'nb-play-outline', 'nb-plus', 'nb-plus-circled', 'nb-power', 'nb-power-circled',
|
||||
'nb-rainy', 'nb-roller-shades', 'nb-search', 'nb-shuffle', 'nb-skip-backward',
|
||||
'nb-skip-backward-outline', 'nb-skip-forward', 'nb-skip-forward-outline', 'nb-snowy-circled',
|
||||
'nb-square', 'nb-square-outline', 'nb-star', 'nb-sunny', 'nb-sunny-circled', 'nb-tables', 'nb-title',
|
||||
'nb-trash', 'nb-volume-high', 'nb-volume-mute', 'nb-drop', 'nb-drops', 'nb-info', 'nb-expand', 'nb-collapse',
|
||||
'nb-e-commerce'];
|
||||
|
||||
data: string[];
|
||||
|
||||
constructor() {
|
||||
this.data = this.fakeIconsData;
|
||||
}
|
||||
|
||||
getIconsData(): Observable<string[]> {
|
||||
return observableOf(this.data);
|
||||
}
|
||||
|
||||
getFilteredIconsData(searchKey: string) {
|
||||
const data = this.data.filter((item) => {
|
||||
return item.indexOf(searchKey) !== -1;
|
||||
});
|
||||
|
||||
return observableOf(data);
|
||||
}
|
||||
}
|
5
src/app/@core/module-import-guard.ts
Normal file
5
src/app/@core/module-import-guard.ts
Normal file
@@ -0,0 +1,5 @@
|
||||
export function throwIfAlreadyLoaded(parentModule: any, moduleName: string) {
|
||||
if (parentModule) {
|
||||
throw new Error(`${moduleName} has already been loaded. Import Core modules in the AppModule only.`);
|
||||
}
|
||||
}
|
38
src/app/@theme/components/footer/footer.component.html
Normal file
38
src/app/@theme/components/footer/footer.component.html
Normal file
@@ -0,0 +1,38 @@
|
||||
<div class="logo">
|
||||
<a href="http://akveo.com" target="_blank"><img src="assets/img/akveo-logo.png"></a>
|
||||
</div>
|
||||
<div>
|
||||
<ul>
|
||||
<li class="title">More from Akveo</li>
|
||||
<li><a href="http://akveo.com?utm_source=nebular_documentation&utm_medium=footer" target="_blank">Homepage</a></li>
|
||||
<li><a href="https://akveo.github.io/react-native-ui-kitten?utm_source=nebular_documentation&utm_medium=footer">React Native UI Kitten</a></li>
|
||||
<li><a href="http://akveo.com/ngx-admin?utm_source=nebular_documentation&utm_medium=footer"
|
||||
target="_blank">ngx-admin</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div>
|
||||
<ul>
|
||||
<li class="title">Follow Us</li>
|
||||
<li class="social">
|
||||
<a href="https://github.com/akveo/ngx-admin" target="_blank">
|
||||
<i class="small-social-github"></i>
|
||||
</a>
|
||||
<a href="https://twitter.com/akveo_inc" target="_blank">
|
||||
<i class="small-social-twitter"></i>
|
||||
</a>
|
||||
<a href="https://www.facebook.com/akveo" target="_blank">
|
||||
<i class="small-social-facebook"></i>
|
||||
</a>
|
||||
</li>
|
||||
<li class="copy">
|
||||
© 2015-2018 <a href="http://akveo.com?utm_source=nebular_documentation&utm_medium=footer" target="_blank">Akveo LLC</a><br>
|
||||
Documentation licensed under CC BY 4.0.
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="contact">
|
||||
<ul>
|
||||
<li class="title">Contact Us</li>
|
||||
<li><a href="#">contact@akveo.com</a></li>
|
||||
</ul>
|
||||
</div>
|
100
src/app/@theme/components/footer/footer.component.scss
Normal file
100
src/app/@theme/components/footer/footer.component.scss
Normal file
@@ -0,0 +1,100 @@
|
||||
@import '../../../@theme/styles/themes';
|
||||
@import '~bootstrap/scss/mixins/breakpoints';
|
||||
@import '~@nebular/theme/styles/global/bootstrap/breakpoints';
|
||||
|
||||
@include nb-install-component() {
|
||||
$text-fg: nb-theme(footer-fg);
|
||||
$social-fg: nb-theme(color-fg-icon);
|
||||
$title-fg: nb-theme(color-fg);
|
||||
|
||||
display: flex;
|
||||
flex: 1;
|
||||
flex-wrap: wrap;
|
||||
padding-top: 1.25rem;
|
||||
justify-content: space-between;
|
||||
|
||||
> div {
|
||||
display: flex;
|
||||
margin-right: 0;
|
||||
justify-content: center;
|
||||
width: 100%;
|
||||
&:last-child {
|
||||
margin-right: 0;
|
||||
}
|
||||
|
||||
a {
|
||||
color: $text-fg;
|
||||
}
|
||||
|
||||
ul {
|
||||
list-style: none;
|
||||
padding-left: 0;
|
||||
}
|
||||
|
||||
li {
|
||||
display: flex;
|
||||
margin-bottom: 1.375rem;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
&.logo {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.title {
|
||||
color: $title-fg;
|
||||
font-size: 1.125rem;
|
||||
line-height: 1.375rem;
|
||||
}
|
||||
|
||||
.copy {
|
||||
color: $text-fg;
|
||||
display: list-item;
|
||||
font-size: 0.75rem;
|
||||
}
|
||||
|
||||
.social {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
|
||||
a {
|
||||
font-size: 3rem;
|
||||
text-decoration: none;
|
||||
color: $social-fg;
|
||||
margin-right: 1rem;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
> div.logo {
|
||||
display: none;
|
||||
}
|
||||
|
||||
@include media-breakpoint-up(md) {
|
||||
> div {
|
||||
justify-content: flex-start;
|
||||
margin-right: 2rem;
|
||||
width: auto;
|
||||
|
||||
li {
|
||||
justify-content: flex-start;
|
||||
align-items: flex-start;
|
||||
text-align: left;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@include media-breakpoint-up(lg) {
|
||||
> div.logo {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
margin-top: 0;
|
||||
text-align: center;
|
||||
img {
|
||||
max-width: 9rem;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
9
src/app/@theme/components/footer/footer.component.ts
Normal file
9
src/app/@theme/components/footer/footer.component.ts
Normal file
@@ -0,0 +1,9 @@
|
||||
import { Component } from '@angular/core';
|
||||
|
||||
@Component({
|
||||
selector: 'eva-footer',
|
||||
styleUrls: ['./footer.component.scss'],
|
||||
templateUrl: './footer.component.html',
|
||||
})
|
||||
export class FooterComponent {
|
||||
}
|
18
src/app/@theme/components/header/header.component.html
Normal file
18
src/app/@theme/components/header/header.component.html
Normal file
@@ -0,0 +1,18 @@
|
||||
<div class="section left">
|
||||
<div class="logo">
|
||||
<a routerLink="/">Eva Icons</a>
|
||||
<span class="version">V.{{ currentVersion }}</span>
|
||||
</div>
|
||||
<iframe class="stars"
|
||||
src="https://ghbtns.com/github-btn.html?user=akveo&repo=nebular&type=star&count=true"
|
||||
frameborder="0"
|
||||
scrolling="0">
|
||||
</iframe>
|
||||
</div>
|
||||
<div class="section right">
|
||||
<nb-menu [items]="mainMenu"></nb-menu>
|
||||
<button class="btn btn-primary btn-download">
|
||||
<i class="nb-star"></i>
|
||||
<span>Download</span>
|
||||
</button>
|
||||
</div>
|
151
src/app/@theme/components/header/header.component.scss
Normal file
151
src/app/@theme/components/header/header.component.scss
Normal file
@@ -0,0 +1,151 @@
|
||||
@import '../../../@theme/styles/themes';
|
||||
@import '~bootstrap/scss/mixins/breakpoints';
|
||||
@import '~@nebular/theme/styles/global/bootstrap/breakpoints';
|
||||
|
||||
@include nb-install-component() {
|
||||
$right-section-width: nb-theme(settings-col-width);
|
||||
$logo-fg: nb-theme(header-fg);
|
||||
$version-fg: nb-theme(color-primary);
|
||||
$primary: nb-theme(color-primary);
|
||||
|
||||
display: flex;
|
||||
flex: 1 0 auto;
|
||||
flex-direction: row;
|
||||
align-items: center;
|
||||
margin: 0 7rem;
|
||||
justify-content: space-between;
|
||||
|
||||
.section {
|
||||
display: flex;
|
||||
padding: 0.875rem 0.5rem;
|
||||
|
||||
&.left {
|
||||
}
|
||||
}
|
||||
|
||||
.logo {
|
||||
display: flex;
|
||||
flex: 1 0 auto;
|
||||
flex-direction: row;
|
||||
font-size: nb-theme(font-size-xlg);
|
||||
|
||||
a {
|
||||
color: $logo-fg;
|
||||
text-decoration: none !important;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.version {
|
||||
font-size: nb-theme(font-size);
|
||||
display: none;
|
||||
font-weight: bold;
|
||||
color: $version-fg;
|
||||
}
|
||||
}
|
||||
|
||||
.stars {
|
||||
width: 95px;
|
||||
height: 20px;
|
||||
margin-left: 3rem;
|
||||
align-self: flex-end;
|
||||
}
|
||||
|
||||
/deep/ nb-menu {
|
||||
flex: 1;
|
||||
|
||||
.menu-items {
|
||||
display: flex;
|
||||
justify-content: flex-end;
|
||||
|
||||
.menu-item {
|
||||
border: none;
|
||||
|
||||
&:first-child a {
|
||||
padding-left: 0;
|
||||
}
|
||||
|
||||
a {
|
||||
position: relative;
|
||||
font-size: nb-theme(font-size-sm);
|
||||
color: nb-theme(menu-item-fg);
|
||||
padding: 0.5rem 1.625rem 0.5rem 1rem;
|
||||
display: block;
|
||||
|
||||
&:hover, &.active, &:focus {
|
||||
color: $primary;
|
||||
text-shadow: 0.5px 0 0 currentColor;
|
||||
font-weight: normal;
|
||||
outline: none!important;
|
||||
|
||||
.menu-icon {
|
||||
color: $primary;
|
||||
}
|
||||
}
|
||||
|
||||
&.active {
|
||||
&::after {
|
||||
content: '';
|
||||
position: absolute;
|
||||
border: 2px solid $primary;
|
||||
width: 100%;
|
||||
left: 0;
|
||||
bottom: 0;
|
||||
border-radius: nb-theme(radius);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.menu-icon {
|
||||
font-size: 1.5rem;
|
||||
}
|
||||
|
||||
.menu-title {
|
||||
vertical-align: super;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.btn-download {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
margin-left: 2rem;
|
||||
color: nb-theme(color-white);
|
||||
font-size: nb-theme(font-size-xs);
|
||||
padding: 0.5rem 1rem;
|
||||
border-radius: 0.25rem;
|
||||
cursor: pointer;
|
||||
|
||||
i {
|
||||
font-size: 1rem;
|
||||
}
|
||||
|
||||
span {
|
||||
margin-left: 1.25rem;
|
||||
}
|
||||
}
|
||||
|
||||
@include media-breakpoint-down(xl) {
|
||||
margin: 0 1rem;
|
||||
}
|
||||
|
||||
@include media-breakpoint-up(sm) {
|
||||
.logo {
|
||||
align-items: baseline;
|
||||
flex: 1 0 auto;
|
||||
|
||||
a {
|
||||
margin-right: 0.5rem;
|
||||
}
|
||||
.version {
|
||||
display: inline;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@include media-breakpoint-up(is) {
|
||||
.section {
|
||||
padding: 0.875rem 1.125rem;
|
||||
}
|
||||
}
|
||||
}
|
30
src/app/@theme/components/header/header.component.ts
Normal file
30
src/app/@theme/components/header/header.component.ts
Normal file
@@ -0,0 +1,30 @@
|
||||
import { Component } from '@angular/core';
|
||||
import { EvoVersionService } from '../../services/version.service';
|
||||
import { NbMenuItem } from '@nebular/theme';
|
||||
|
||||
@Component({
|
||||
selector: 'eva-header',
|
||||
styleUrls: ['./header.component.scss'],
|
||||
templateUrl: './header.component.html',
|
||||
})
|
||||
export class HeaderComponent {
|
||||
|
||||
currentVersion: string;
|
||||
|
||||
constructor(private versionService: EvoVersionService) {
|
||||
this.currentVersion = versionService.getEvoVersion();
|
||||
}
|
||||
|
||||
mainMenu: NbMenuItem[] = [
|
||||
{
|
||||
title: 'Outline',
|
||||
link: '/outline',
|
||||
icon: 'nb-star',
|
||||
},
|
||||
{
|
||||
title: 'Fill',
|
||||
link: '/fill',
|
||||
icon: 'nb-star',
|
||||
},
|
||||
];
|
||||
}
|
5
src/app/@theme/services/index.ts
Normal file
5
src/app/@theme/services/index.ts
Normal file
@@ -0,0 +1,5 @@
|
||||
import { EvoVersionService } from './version.service';
|
||||
|
||||
export default [
|
||||
EvoVersionService,
|
||||
];
|
9
src/app/@theme/services/version.service.ts
Normal file
9
src/app/@theme/services/version.service.ts
Normal file
@@ -0,0 +1,9 @@
|
||||
import { Injectable } from '@angular/core';
|
||||
|
||||
@Injectable()
|
||||
export class EvoVersionService {
|
||||
|
||||
getEvoVersion() {
|
||||
return require('../../../../package.json').version;
|
||||
}
|
||||
}
|
35
src/app/@theme/styles/_small-social.scss
Normal file
35
src/app/@theme/styles/_small-social.scss
Normal file
@@ -0,0 +1,35 @@
|
||||
$small-social-font-path: '/assets/fonts/small-social' !default;
|
||||
@font-face {
|
||||
font-family: 'small-social';
|
||||
src: url('#{$small-social-font-path}/small-social.eot?skntni');
|
||||
src: url('#{$small-social-font-path}/small-social.eot?skntni#iefix') format('embedded-opentype'),
|
||||
url('#{$small-social-font-path}/small-social.ttf?skntni') format('truetype'),
|
||||
url('#{$small-social-font-path}/small-social.woff?skntni') format('woff'),
|
||||
url('#{$small-social-font-path}/small-social.svg?skntni#small-social') format('svg');
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
[class^='small-social-'], [class*=' small-social-'] {
|
||||
font-family: 'small-social' !important;
|
||||
speak: none;
|
||||
font-style: normal;
|
||||
font-weight: normal;
|
||||
font-variant: normal;
|
||||
text-transform: none;
|
||||
line-height: 1;
|
||||
|
||||
/* Better Font Rendering =========== */
|
||||
-webkit-font-smoothing: antialiased;
|
||||
-moz-osx-font-smoothing: grayscale;
|
||||
}
|
||||
|
||||
.small-social-facebook::before {
|
||||
content: '\e900';
|
||||
}
|
||||
.small-social-github::before {
|
||||
content: '\e901';
|
||||
}
|
||||
.small-social-twitter::before {
|
||||
content: '\e902';
|
||||
}
|
8
src/app/@theme/styles/styles.scss
Normal file
8
src/app/@theme/styles/styles.scss
Normal file
@@ -0,0 +1,8 @@
|
||||
@import 'themes';
|
||||
@import 'small-social';
|
||||
|
||||
@import '~@nebular/theme/styles/globals';
|
||||
|
||||
@include nb-install() {
|
||||
@include nb-theme-global();
|
||||
};
|
52
src/app/@theme/styles/themes.scss
Normal file
52
src/app/@theme/styles/themes.scss
Normal file
@@ -0,0 +1,52 @@
|
||||
@import '~@nebular/theme/styles/theming';
|
||||
@import '~@nebular/theme/styles/themes/corporate';
|
||||
|
||||
$nb-enabled-themes: (eva);
|
||||
|
||||
$nb-themes: nb-register-theme((
|
||||
font-main: unquote('-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"'),
|
||||
|
||||
content-width: 1100px,
|
||||
|
||||
color-primary: #3366ff,
|
||||
|
||||
separator: transparent,
|
||||
color-bg: transparent,
|
||||
color-fg: #0d1c2e,
|
||||
color-fg-heading: #546d8d,
|
||||
color-fg-text: #919fb1,
|
||||
color-fg-icon: #c4c8d1,
|
||||
|
||||
shadow: none,
|
||||
|
||||
layout-bg: transparent,
|
||||
layout-padding: 0,
|
||||
layout-medium-padding: 0,
|
||||
layout-small-padding: 0,
|
||||
|
||||
header-bg: color-bg,
|
||||
header-padding: 0 0,
|
||||
header-height: 4.25rem,
|
||||
header-fg: color-fg,
|
||||
|
||||
menu-bg: transparent,
|
||||
menu-item-padding: 0.675rem 1rem,
|
||||
menu-item-fg: #d8e1f0,
|
||||
menu-active-fg: color-primary,
|
||||
menu-font-size: 0.95rem,
|
||||
menu-font-weight: font-weight-normal,
|
||||
|
||||
menu-active-bg: transparent,
|
||||
|
||||
footer-height: 18.75rem,
|
||||
footer-padding: 1.25rem 0,
|
||||
footer-fg: #8992a3,
|
||||
footer-fg-highlight: footer-fg,
|
||||
footer-separator: transparent,
|
||||
|
||||
|
||||
list-icon-item-bg: #ebf1fa,
|
||||
list-icon-item-fg: #0d1c2e,
|
||||
|
||||
switcher-view-bg: #d8e1f0
|
||||
), eva, corporate);
|
55
src/app/@theme/theme.module.ts
Normal file
55
src/app/@theme/theme.module.ts
Normal file
@@ -0,0 +1,55 @@
|
||||
import { RouterModule } from '@angular/router';
|
||||
import { ModuleWithProviders, NgModule } from '@angular/core';
|
||||
import { CommonModule } from '@angular/common';
|
||||
|
||||
// components
|
||||
import { FooterComponent } from './components/footer/footer.component';
|
||||
import { HeaderComponent } from './components/header/header.component';
|
||||
// components
|
||||
|
||||
// services
|
||||
import evaServices from './services';
|
||||
// services
|
||||
|
||||
|
||||
import {
|
||||
NbMenuModule,
|
||||
NbLayoutModule,
|
||||
NbCardModule,
|
||||
NbThemeModule,
|
||||
} from '@nebular/theme';
|
||||
|
||||
@NgModule({
|
||||
imports: [
|
||||
RouterModule,
|
||||
CommonModule,
|
||||
NbMenuModule,
|
||||
NbLayoutModule,
|
||||
NbCardModule,
|
||||
],
|
||||
declarations: [
|
||||
FooterComponent,
|
||||
HeaderComponent,
|
||||
],
|
||||
exports: [
|
||||
RouterModule,
|
||||
CommonModule,
|
||||
NbMenuModule,
|
||||
NbLayoutModule,
|
||||
NbCardModule,
|
||||
FooterComponent,
|
||||
HeaderComponent,
|
||||
],
|
||||
})
|
||||
export class EvaThemeModule {
|
||||
static forRoot(): ModuleWithProviders {
|
||||
return <ModuleWithProviders>{
|
||||
ngModule: EvaThemeModule,
|
||||
providers: [
|
||||
...NbThemeModule.forRoot({ name: 'eva' }).providers,
|
||||
...evaServices,
|
||||
...NbMenuModule.forRoot().providers,
|
||||
],
|
||||
};
|
||||
}
|
||||
}
|
30
src/app/app-routing.module.ts
Normal file
30
src/app/app-routing.module.ts
Normal file
@@ -0,0 +1,30 @@
|
||||
import { ExtraOptions, RouterModule, Routes } from '@angular/router';
|
||||
import { NgModule } from '@angular/core';
|
||||
|
||||
import { FillComponent } from './pages/fill/fill.component';
|
||||
import { OutlineComponent } from './pages/outline/outline.component';
|
||||
|
||||
const routes: Routes = [
|
||||
{
|
||||
path: 'outline',
|
||||
component: OutlineComponent,
|
||||
},
|
||||
{
|
||||
path: 'fill',
|
||||
component: FillComponent,
|
||||
},
|
||||
{ path: '', redirectTo: 'outline', pathMatch: 'full' },
|
||||
{ path: '**', redirectTo: 'outline' },
|
||||
];
|
||||
|
||||
const config: ExtraOptions = {
|
||||
useHash: true,
|
||||
};
|
||||
|
||||
@NgModule({
|
||||
imports: [RouterModule.forRoot(routes, config)],
|
||||
exports: [RouterModule],
|
||||
})
|
||||
|
||||
export class AppRoutingModule {
|
||||
}
|
13
src/app/app.component.html
Normal file
13
src/app/app.component.html
Normal file
@@ -0,0 +1,13 @@
|
||||
<nb-layout>
|
||||
<nb-layout-header>
|
||||
<eva-header></eva-header>
|
||||
</nb-layout-header>
|
||||
|
||||
<nb-layout-column>
|
||||
<router-outlet></router-outlet>
|
||||
</nb-layout-column>
|
||||
|
||||
<nb-layout-footer fixed>
|
||||
<eva-footer></eva-footer>
|
||||
</nb-layout-footer>
|
||||
</nb-layout>
|
57
src/app/app.component.scss
Normal file
57
src/app/app.component.scss
Normal file
@@ -0,0 +1,57 @@
|
||||
@import '@theme/styles/themes';
|
||||
|
||||
@include nb-install-component() {
|
||||
|
||||
$content-width: nb-theme(content-width);
|
||||
|
||||
.content-center {
|
||||
max-width: $content-width;
|
||||
width: 100%;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
|
||||
.contact-us {
|
||||
padding: 5rem 1rem;
|
||||
h2 {
|
||||
color: black;
|
||||
}
|
||||
}
|
||||
|
||||
/deep/ nb-layout .main-container {
|
||||
padding-top: 3rem;
|
||||
|
||||
.scrollable {
|
||||
padding-top: 0;
|
||||
}
|
||||
}
|
||||
|
||||
/deep/ nb-layout .layout-container {
|
||||
max-width: $content-width;
|
||||
width: 100%;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
}
|
||||
|
||||
/deep/ nb-layout-footer {
|
||||
margin-top: 6rem;
|
||||
}
|
||||
|
||||
/* /deep/ nb-layout-footer ngd-footer .contact {
|
||||
display: none;
|
||||
}
|
||||
|
||||
@include media-breakpoint-up(xl) {
|
||||
.contact-us {
|
||||
padding: 5rem 0;
|
||||
}
|
||||
}
|
||||
|
||||
@include media-breakpoint-up(macpro) {
|
||||
/deep/ nb-layout-footer {
|
||||
margin-right: $settings-width + $settings-margin;
|
||||
}
|
||||
}*/
|
||||
}
|
10
src/app/app.component.ts
Normal file
10
src/app/app.component.ts
Normal file
@@ -0,0 +1,10 @@
|
||||
import { Component } from '@angular/core';
|
||||
|
||||
@Component({
|
||||
selector: 'eva-app',
|
||||
templateUrl: './app.component.html',
|
||||
styleUrls: ['./app.component.scss'],
|
||||
})
|
||||
export class AppComponent {
|
||||
|
||||
}
|
30
src/app/app.module.ts
Normal file
30
src/app/app.module.ts
Normal file
@@ -0,0 +1,30 @@
|
||||
import { APP_BASE_HREF } from '@angular/common';
|
||||
import { BrowserModule } from '@angular/platform-browser';
|
||||
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
|
||||
import { NgModule } from '@angular/core';
|
||||
|
||||
import { EvaThemeModule } from './@theme/theme.module';
|
||||
import { AppRoutingModule } from './app-routing.module';
|
||||
import { CoreModule } from './@core/core.module';
|
||||
import { AppComponent } from './app.component';
|
||||
import { PagesModule } from './pages/pages.module';
|
||||
|
||||
@NgModule({
|
||||
declarations: [
|
||||
AppComponent,
|
||||
],
|
||||
imports: [
|
||||
BrowserModule,
|
||||
BrowserAnimationsModule,
|
||||
AppRoutingModule,
|
||||
PagesModule,
|
||||
|
||||
EvaThemeModule.forRoot(),
|
||||
CoreModule.forRoot(),
|
||||
],
|
||||
bootstrap: [AppComponent],
|
||||
providers: [
|
||||
{ provide: APP_BASE_HREF, useValue: '/' },
|
||||
],
|
||||
})
|
||||
export class AppModule { }
|
0
src/app/pages/fill/fill.component.css
Normal file
0
src/app/pages/fill/fill.component.css
Normal file
3
src/app/pages/fill/fill.component.html
Normal file
3
src/app/pages/fill/fill.component.html
Normal file
@@ -0,0 +1,3 @@
|
||||
<p>
|
||||
fill works!
|
||||
</p>
|
15
src/app/pages/fill/fill.component.ts
Normal file
15
src/app/pages/fill/fill.component.ts
Normal file
@@ -0,0 +1,15 @@
|
||||
import { Component, OnInit } from '@angular/core';
|
||||
|
||||
@Component({
|
||||
selector: 'eva-fill',
|
||||
templateUrl: './fill.component.html',
|
||||
styleUrls: ['./fill.component.css'],
|
||||
})
|
||||
export class FillComponent implements OnInit {
|
||||
|
||||
constructor() { }
|
||||
|
||||
ngOnInit() {
|
||||
}
|
||||
|
||||
}
|
17
src/app/pages/outline/icon-list/icon-list.component.html
Normal file
17
src/app/pages/outline/icon-list/icon-list.component.html
Normal file
@@ -0,0 +1,17 @@
|
||||
<nb-card *ngFor="let icon of icons">
|
||||
<nb-card-body>
|
||||
<i class="{{ icon }}"></i>
|
||||
<span *ngIf="isFullViewMode"
|
||||
class="icon-class">
|
||||
{{ icon }}
|
||||
</span>
|
||||
</nb-card-body>
|
||||
</nb-card>
|
||||
|
||||
<nb-card class="fake-card"></nb-card>
|
||||
<nb-card class="fake-card"></nb-card>
|
||||
<nb-card class="fake-card"></nb-card>
|
||||
<nb-card class="fake-card"></nb-card>
|
||||
<nb-card class="fake-card"></nb-card>
|
||||
<nb-card class="fake-card"></nb-card>
|
||||
<nb-card class="fake-card"></nb-card>
|
79
src/app/pages/outline/icon-list/icon-list.component.scss
Normal file
79
src/app/pages/outline/icon-list/icon-list.component.scss
Normal file
@@ -0,0 +1,79 @@
|
||||
@import '../../../@theme/styles/themes';
|
||||
@import '~bootstrap/scss/mixins/breakpoints';
|
||||
@import '~@nebular/theme/styles/global/bootstrap/breakpoints';
|
||||
|
||||
@include nb-install-component() {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
justify-content: space-between;
|
||||
|
||||
nb-card {
|
||||
overflow: hidden;
|
||||
cursor: pointer;
|
||||
|
||||
&:hover {
|
||||
background-color: nb-theme(list-icon-item-bg);
|
||||
}
|
||||
}
|
||||
|
||||
nb-card-body {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
color: nb-theme(list-icon-item-fg);
|
||||
|
||||
i {
|
||||
font-size: 1.5rem;
|
||||
}
|
||||
}
|
||||
|
||||
&.full-icon-mode {
|
||||
nb-card {
|
||||
width: 24%;
|
||||
|
||||
&:hover {
|
||||
border-color: nb-theme(list-icon-item-bg);
|
||||
}
|
||||
}
|
||||
|
||||
nb-card-body {
|
||||
padding: 2.25rem 1.25rem;
|
||||
|
||||
span {
|
||||
margin-left: 1.5rem;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
&.only-icon-mode {
|
||||
justify-content: space-around;
|
||||
|
||||
nb-card {
|
||||
width: 11%;
|
||||
border: none;
|
||||
align-items: center;
|
||||
border-radius: 0.25rem;
|
||||
}
|
||||
|
||||
nb-card-body {
|
||||
padding: 3rem 1.25rem;
|
||||
|
||||
i {
|
||||
font-weight: nb-theme(font-weight-bold);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.fake-card {
|
||||
visibility: hidden;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
height: 0;
|
||||
|
||||
nb-card-body {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
}
|
31
src/app/pages/outline/icon-list/icon-list.component.ts
Normal file
31
src/app/pages/outline/icon-list/icon-list.component.ts
Normal file
@@ -0,0 +1,31 @@
|
||||
import {
|
||||
ChangeDetectionStrategy,
|
||||
Component,
|
||||
HostBinding,
|
||||
Input,
|
||||
} from '@angular/core';
|
||||
|
||||
const FULL = 'full';
|
||||
const ICON = 'icon';
|
||||
|
||||
@Component({
|
||||
selector: 'eva-icon-list',
|
||||
templateUrl: './icon-list.component.html',
|
||||
styleUrls: ['./icon-list.component.scss'],
|
||||
changeDetection: ChangeDetectionStrategy.OnPush,
|
||||
})
|
||||
export class IconListComponent {
|
||||
|
||||
@Input() icons: string[];
|
||||
@Input() view: string;
|
||||
|
||||
@HostBinding('class.full-icon-mode')
|
||||
get isFullViewMode() {
|
||||
return this.view === FULL;
|
||||
}
|
||||
|
||||
@HostBinding('class.only-icon-mode')
|
||||
get isIconViewMode() {
|
||||
return this.view === ICON;
|
||||
}
|
||||
}
|
@@ -0,0 +1,19 @@
|
||||
<div class="switch-button full-view"
|
||||
[class.active]="isFullViewMode"
|
||||
(click)="changeViewMode('full')">
|
||||
<div class="rectangle"></div>
|
||||
<div class="rectangle"></div>
|
||||
</div>
|
||||
|
||||
<div class="switch-button icon-view"
|
||||
[class.active]="isIconViewMode"
|
||||
(click)="changeViewMode('icon')">
|
||||
<div class="square-container">
|
||||
<div class="square"></div>
|
||||
<div class="square"></div>
|
||||
</div>
|
||||
<div class="square-container">
|
||||
<div class="square"></div>
|
||||
<div class="square"></div>
|
||||
</div>
|
||||
</div>
|
@@ -0,0 +1,69 @@
|
||||
@import '../../../@theme/styles/themes';
|
||||
@import '~bootstrap/scss/mixins/breakpoints';
|
||||
@import '~@nebular/theme/styles/global/bootstrap/breakpoints';
|
||||
|
||||
@include nb-install-component() {
|
||||
$color-primary: nb-theme(color-primary);
|
||||
|
||||
display: flex;
|
||||
|
||||
.switch-button {
|
||||
width: 2rem;
|
||||
height: 2rem;
|
||||
margin-left: 1rem;
|
||||
cursor: pointer;
|
||||
|
||||
&:first-child {
|
||||
margin-left: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.full-view, .icon-view {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: space-between;
|
||||
}
|
||||
|
||||
.rectangle {
|
||||
flex: 1;
|
||||
margin-top: 0.25rem;
|
||||
|
||||
&:first-child {
|
||||
margin-top: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.square-container {
|
||||
flex: 1;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
width: 100%;
|
||||
height: 50%;
|
||||
margin-top: 0.25rem;
|
||||
|
||||
&:first-child {
|
||||
margin-top: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.square {
|
||||
flex: 1;
|
||||
width: 50%;
|
||||
height: 100%;
|
||||
margin-left: 0.25rem;
|
||||
|
||||
&:first-child {
|
||||
margin-left: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.rectangle, .square {
|
||||
background-color: nb-theme(switcher-view-bg);
|
||||
}
|
||||
|
||||
.active {
|
||||
.rectangle, .square {
|
||||
background-color: $color-primary;
|
||||
}
|
||||
}
|
||||
}
|
@@ -0,0 +1,29 @@
|
||||
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
||||
|
||||
const FULL = 'full';
|
||||
const ICON = 'icon';
|
||||
|
||||
@Component({
|
||||
selector: 'eva-list-view-switcher',
|
||||
templateUrl: './list-view-switcher.component.html',
|
||||
styleUrls: ['./list-view-switcher.component.scss'],
|
||||
})
|
||||
export class ListViewSwitcherComponent {
|
||||
|
||||
@Output() changeView: EventEmitter<string> = new EventEmitter();
|
||||
|
||||
@Input() view: string;
|
||||
|
||||
get isFullViewMode() {
|
||||
return this.view === FULL;
|
||||
}
|
||||
|
||||
get isIconViewMode() {
|
||||
return this.view === ICON;
|
||||
}
|
||||
|
||||
changeViewMode(value) {
|
||||
this.changeView.emit(value);
|
||||
this.view = value;
|
||||
}
|
||||
}
|
21
src/app/pages/outline/outline.component.html
Normal file
21
src/app/pages/outline/outline.component.html
Normal file
@@ -0,0 +1,21 @@
|
||||
<h1>Eva icons</h1>
|
||||
|
||||
<div class="search">
|
||||
<i class="nb-search"></i>
|
||||
<input class="search-input"
|
||||
#searchInput
|
||||
autocomplete="off"
|
||||
[attr.placeholder]="'Search...'"
|
||||
tabindex="-1"/>
|
||||
</div>
|
||||
|
||||
<div class="icons">
|
||||
<eva-list-view-switcher *ngIf="icons.length !== 0"
|
||||
[view]="view"
|
||||
(changeView)="changeView($event)">
|
||||
</eva-list-view-switcher>
|
||||
|
||||
<eva-icon-list [icons]="icons"
|
||||
[view]="view">
|
||||
</eva-icon-list>
|
||||
</div>
|
79
src/app/pages/outline/outline.component.scss
Normal file
79
src/app/pages/outline/outline.component.scss
Normal file
@@ -0,0 +1,79 @@
|
||||
@import '../../@theme/styles/themes';
|
||||
@import '~bootstrap/scss/mixins/breakpoints';
|
||||
@import '~@nebular/theme/styles/global/bootstrap/breakpoints';
|
||||
|
||||
@include nb-install-component() {
|
||||
$primary: nb-theme(color-primary);
|
||||
$search-input-padding-sides: 2.5rem;
|
||||
$search-input-padding-tops: 1.625rem;
|
||||
|
||||
margin-top: 3.5rem;
|
||||
margin-bottom: 4rem;
|
||||
display: block;
|
||||
|
||||
h1 {
|
||||
color: $primary;
|
||||
font-size: 5rem;
|
||||
text-transform: capitalize;
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
// search
|
||||
.search {
|
||||
width: 100%;
|
||||
position: relative;
|
||||
|
||||
&::after {
|
||||
content: '';
|
||||
position: absolute;
|
||||
border: 2px solid $primary;
|
||||
width: 100%;
|
||||
left: 0;
|
||||
bottom: 0;
|
||||
border-radius: nb-theme(radius);
|
||||
box-shadow: 0 8px 32px 0 #edf0f5;
|
||||
}
|
||||
|
||||
i {
|
||||
color: $primary;
|
||||
position: absolute;
|
||||
font-size: 2.5rem;
|
||||
font-weight: nb-theme(font-weight-bold);
|
||||
right: $search-input-padding-sides;
|
||||
top: calc(#{$search-input-padding-tops} - 0.25rem);
|
||||
}
|
||||
}
|
||||
|
||||
.search-input {
|
||||
width: 100%;
|
||||
border: none;
|
||||
font-size: nb-theme(font-size-xlg);
|
||||
padding: $search-input-padding-tops $search-input-padding-sides;
|
||||
|
||||
&::placeholder {
|
||||
color: nb-theme(color-fg-text);
|
||||
font-weight: nb-theme(font-weight-light);
|
||||
}
|
||||
|
||||
&::-ms-clear {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
// search
|
||||
|
||||
// icons container
|
||||
.icons {
|
||||
position: relative;
|
||||
}
|
||||
// icons container
|
||||
|
||||
eva-list-view-switcher {
|
||||
position: absolute;
|
||||
left: 110%;
|
||||
top: 25%;
|
||||
}
|
||||
|
||||
eva-icon-list {
|
||||
margin-top: 5rem;
|
||||
}
|
||||
}
|
50
src/app/pages/outline/outline.component.ts
Normal file
50
src/app/pages/outline/outline.component.ts
Normal file
@@ -0,0 +1,50 @@
|
||||
import { AfterViewInit, Component, ElementRef, OnDestroy, ViewChild } from '@angular/core';
|
||||
import { IconService } from '../../@core/data/icon.service';
|
||||
import { debounceTime, mergeMap, takeWhile } from 'rxjs/operators';
|
||||
import { fromEvent } from 'rxjs';
|
||||
|
||||
|
||||
@Component({
|
||||
selector: 'eva-outline',
|
||||
templateUrl: './outline.component.html',
|
||||
styleUrls: ['./outline.component.scss'],
|
||||
})
|
||||
export class OutlineComponent implements AfterViewInit, OnDestroy {
|
||||
|
||||
private alive = true;
|
||||
|
||||
icons: string[];
|
||||
view: string = 'full';
|
||||
|
||||
@ViewChild('searchInput') searchInput: ElementRef;
|
||||
|
||||
constructor(private iconService: IconService) {
|
||||
this.iconService.getIconsData()
|
||||
.pipe(
|
||||
takeWhile(() => this.alive),
|
||||
)
|
||||
.subscribe((iconsData) => {
|
||||
this.icons = iconsData;
|
||||
});
|
||||
}
|
||||
|
||||
ngAfterViewInit() {
|
||||
fromEvent(this.searchInput.nativeElement, 'keyup')
|
||||
.pipe(
|
||||
debounceTime(500),
|
||||
takeWhile(() => this.alive),
|
||||
mergeMap((event: any) => this.iconService.getFilteredIconsData(event.target.value)),
|
||||
)
|
||||
.subscribe((iconsData) => {
|
||||
this.icons = iconsData;
|
||||
});
|
||||
}
|
||||
|
||||
changeView(viewMode) {
|
||||
this.view = viewMode;
|
||||
}
|
||||
|
||||
ngOnDestroy() {
|
||||
this.alive = false;
|
||||
}
|
||||
}
|
23
src/app/pages/pages.module.ts
Normal file
23
src/app/pages/pages.module.ts
Normal file
@@ -0,0 +1,23 @@
|
||||
import { NgModule } from '@angular/core';
|
||||
|
||||
import { EvaThemeModule } from '../@theme/theme.module';
|
||||
|
||||
import { OutlineComponent } from './outline/outline.component';
|
||||
import { FillComponent } from './fill/fill.component';
|
||||
import { IconListComponent } from './outline/icon-list/icon-list.component';
|
||||
import { ListViewSwitcherComponent } from './outline/list-view-switcher/list-view-switcher.component';
|
||||
|
||||
|
||||
@NgModule({
|
||||
imports: [
|
||||
EvaThemeModule,
|
||||
],
|
||||
declarations: [
|
||||
OutlineComponent,
|
||||
FillComponent,
|
||||
IconListComponent,
|
||||
ListViewSwitcherComponent,
|
||||
],
|
||||
})
|
||||
export class PagesModule {
|
||||
}
|
0
src/assets/.gitkeep
Normal file
0
src/assets/.gitkeep
Normal file
BIN
src/assets/fonts/small-social/small-social.eot
Normal file
BIN
src/assets/fonts/small-social/small-social.eot
Normal file
Binary file not shown.
12
src/assets/fonts/small-social/small-social.svg
Normal file
12
src/assets/fonts/small-social/small-social.svg
Normal file
@@ -0,0 +1,12 @@
|
||||
<?xml version="1.0" standalone="no"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
|
||||
<svg xmlns="http://www.w3.org/2000/svg">
|
||||
<defs>
|
||||
<font id="small-social" horiz-adv-x="1024">
|
||||
<font-face units-per-em="1024" ascent="960" descent="-64" />
|
||||
<missing-glyph horiz-adv-x="1024" />
|
||||
<glyph unicode=" " horiz-adv-x="512" d="" />
|
||||
<glyph unicode="" glyph-name="facebook" d="M1024 789.333c0 89.664-80.96 170.667-170.667 170.667h-682.667c-89.707 0-170.667-81.003-170.667-170.667v-682.667c0-89.664 80.96-170.667 170.667-170.667h341.333v386.837h-125.163v170.667h125.163v66.496c0 114.688 86.101 217.963 192 217.963h137.963v-170.667h-137.963c-15.104 0-32.704-18.347-32.704-45.781v-68.011h170.667v-170.667h-170.667v-386.837h182.037c89.707 0 170.667 81.003 170.667 170.667v682.667z" />
|
||||
<glyph unicode="" glyph-name="github" d="M368.96 137.536c-7.125-1.323-10.24-4.672-9.344-9.984 0.896-5.333 4.907-7.104 11.989-5.333 7.104 1.771 10.219 4.907 9.323 9.323-0.875 4.907-4.885 6.891-11.968 5.995zM330.987 132.203c-7.104 0-10.667-2.432-10.667-7.317 0-5.76 3.797-8.213 11.328-7.317 7.104 0 10.667 2.432 10.667 7.317 0 5.76-3.776 8.213-11.328 7.317zM279.040 134.208c-1.771-4.885 1.109-8.192 8.661-9.984 6.656-2.645 10.88-1.323 12.651 3.989 1.344 4.907-1.557 8.427-8.661 10.667-6.656 1.771-10.88 0.235-12.651-4.672zM966.635 903.723c-37.504 37.525-82.667 56.277-135.488 56.277h-639.36c-52.821 0-98.005-18.773-135.509-56.277-37.525-37.504-56.277-82.688-56.277-135.509v-639.36c0-52.821 18.773-97.984 56.277-135.488 37.504-37.547 82.688-56.277 135.509-56.277h149.184c9.749 0 17.088 0.32 21.973 0.981s9.749 3.563 14.656 8.661c4.885 5.12 7.317 12.544 7.317 22.315l-0.341 45.291c-0.213 28.864-0.341 51.733-0.341 68.608l-15.317-2.667c-9.749-1.771-22.080-2.56-36.949-2.347s-30.293 1.792-46.293 4.672c-17.082 3.236-32.142 10.244-44.84 20.142l0.232-0.174c-13.488 10.266-23.684 24.223-29.137 40.364l-0.175 0.596-6.656 15.317c-4.437 10.219-11.435 21.547-20.971 33.963-9.557 12.437-19.2 20.864-28.971 25.301l-4.672 3.328c-3.252 2.37-6.087 5.002-8.583 7.931l-0.057 0.069c-2.366 2.678-4.374 5.752-5.9 9.091l-0.095 0.231c-1.344 3.115-0.213 5.675 3.328 7.68 3.563 1.984 9.984 2.987 19.307 2.987l13.312-2.005c8.896-1.771 19.883-7.083 32.981-15.979 13.216-9.085 24.049-20.66 32.026-34.126l0.273-0.498c10.219-18.197 22.528-32.064 36.949-41.6 14.421-9.579 28.971-14.336 43.627-14.336 14.635 0 27.307 1.109 37.973 3.307 10.624 2.24 20.629 5.568 29.952 10.027 3.989 29.717 14.869 52.608 32.64 68.587-25.681 2.561-48.902 6.788-71.442 12.696l3.175-0.707c-20.203 5.333-41.067 13.973-62.613 25.984-21.547 11.989-39.403 26.837-53.611 44.608s-25.856 41.088-34.944 69.931c-9.109 28.864-13.653 62.165-13.653 99.904 0 53.717 17.536 99.456 52.608 137.173-16.427 40.405-14.869 85.696 4.651 135.872 12.885 3.989 31.979 1.003 57.28-9.003 25.301-9.984 43.84-18.56 55.616-25.643s21.205-13.077 28.309-17.984c38.007 10.998 81.664 17.324 126.799 17.324 0.37 0 0.739 0 1.108-0.001h-0.057c43.947 0 86.592-5.76 127.893-17.323l25.301 16c17.323 10.667 37.739 20.416 61.269 29.291s41.515 11.307 53.952 7.317c19.968-50.176 21.76-95.445 5.312-135.851 35.072-37.739 52.608-83.456 52.608-137.173 0-37.76-4.544-71.168-13.653-100.245-9.088-29.077-20.843-52.395-35.285-69.931-14.421-17.536-32.405-32.277-53.931-44.288-21.547-11.968-42.411-20.651-62.613-25.963-20.203-5.333-42.944-9.344-68.267-12.011 23.083-19.968 34.624-51.477 34.624-94.549v-159.168c0-7.552 1.109-13.653 3.328-18.325 2.24-4.651 5.76-7.851 10.667-9.643 4.907-1.771 9.195-2.88 12.992-3.328 3.776-0.427 9.216-0.661 16.32-0.661h149.163c52.821 0 98.005 18.752 135.509 56.277 37.525 37.504 56.277 82.688 56.277 135.509v639.317c0 52.821-18.773 98.005-56.277 135.509zM202.453 215.467c-3.115-2.219-2.667-5.76 1.323-10.667 4.459-4.437 8-5.12 10.667-1.984 3.115 2.197 2.667 5.76-1.344 10.667-4.437 3.968-7.979 4.651-10.667 1.963zM180.48 232.107c-1.323-3.115 0.213-5.781 4.672-8 3.541-2.219 6.443-1.792 8.64 1.323 1.344 3.115-0.213 5.781-4.651 8.021-4.437 1.323-7.339 0.875-8.661-1.344zM223.104 189.483c-4.011-2.219-4.011-6.229 0-11.989 3.989-5.76 7.765-7.317 11.307-4.651 4.011 3.115 4.011 7.317 0 12.651-3.541 5.76-7.317 7.104-11.307 3.989zM246.4 159.531c-3.989-3.563-3.093-7.765 2.688-12.672 5.312-5.333 9.749-5.973 13.312-1.984 3.541 3.541 2.667 7.765-2.667 12.651-5.333 5.333-9.771 5.973-13.312 2.005z" />
|
||||
<glyph unicode="" glyph-name="twitter" d="M830.955 960h-639.168c-0.013 0-0.028 0-0.043 0-105.897 0-191.744-85.847-191.744-191.744 0-0.008 0-0.015 0-0.023v0.001-639.168c0-0.006 0-0.014 0-0.021 0-105.897 85.847-191.744 191.744-191.744 0.008 0 0.015 0 0.023 0h639.167c0.006 0 0.014 0 0.021 0 105.897 0 191.744 85.847 191.744 191.744 0 0.008 0 0.015 0 0.023v-0.001 639.147c0 0.013 0 0.028 0 0.043 0 105.897-85.847 191.744-191.744 191.744 0 0 0 0 0 0v0zM765.76 563.435l0.384-16.299c0-166.443-126.613-358.187-358.208-358.187-71.083 0-137.237 20.821-192.981 56.533 9.856-1.131 19.883-1.771 30.059-1.771 58.987 0 113.259 20.139 156.331 53.888-54.852 1.089-101.027 37.039-117.356 86.554l-0.254 0.891c7.744-1.408 15.531-2.176 23.723-2.176 11.52 0 22.613 1.472 33.173 4.352-57.984 12.065-100.937 62.715-100.992 123.407v1.606c16.441-9.315 35.986-15.082 56.817-15.781l0.207-0.006c-33.961 22.898-56 61.223-56 104.695 0 0.026 0 0.051 0 0.077v-0.004c0 23.083 6.187 44.672 17.003 63.275 62.358-76.314 154.627-126.156 258.654-131.506l0.866-0.035c-2.099 8.607-3.303 18.488-3.303 28.651 0 69.538 56.372 125.909 125.909 125.909 0.021 0 0.042 0 0.064 0h-0.003c0.028 0 0.061 0 0.095 0 36.177 0 68.788-15.262 91.748-39.699l0.062-0.066c30.156 6.113 56.936 16.706 81.116 31.193l-1.158-0.643c-9.744-29.678-29.31-53.885-54.778-69.337l-0.561-0.316c26.818 3.259 51.232 10.228 73.869 20.439l-1.591-0.642c-17.244-25.512-38.114-47.054-62.153-64.493l-0.737-0.509z" />
|
||||
</font></defs></svg>
|
After Width: | Height: | Size: 5.7 KiB |
BIN
src/assets/fonts/small-social/small-social.ttf
Normal file
BIN
src/assets/fonts/small-social/small-social.ttf
Normal file
Binary file not shown.
BIN
src/assets/fonts/small-social/small-social.woff
Normal file
BIN
src/assets/fonts/small-social/small-social.woff
Normal file
Binary file not shown.
BIN
src/assets/img/akveo-logo.png
Normal file
BIN
src/assets/img/akveo-logo.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 34 KiB |
9
src/browserslist
Normal file
9
src/browserslist
Normal file
@@ -0,0 +1,9 @@
|
||||
# This file is currently used by autoprefixer to adjust CSS to support the below specified browsers
|
||||
# For additional information regarding the format and rule options, please see:
|
||||
# https://github.com/browserslist/browserslist#queries
|
||||
# For IE 9-11 support, please uncomment the last line of the file and adjust as needed
|
||||
> 0.5%
|
||||
last 2 versions
|
||||
Firefox ESR
|
||||
not dead
|
||||
# IE 9-11
|
3
src/environments/environment.prod.ts
Normal file
3
src/environments/environment.prod.ts
Normal file
@@ -0,0 +1,3 @@
|
||||
export const environment = {
|
||||
production: true
|
||||
};
|
15
src/environments/environment.ts
Normal file
15
src/environments/environment.ts
Normal file
@@ -0,0 +1,15 @@
|
||||
// This file can be replaced during build by using the `fileReplacements` array.
|
||||
// `ng build ---prod` replaces `environment.ts` with `environment.prod.ts`.
|
||||
// The list of file replacements can be found in `angular.json`.
|
||||
|
||||
export const environment = {
|
||||
production: false
|
||||
};
|
||||
|
||||
/*
|
||||
* In development mode, for easier debugging, you can ignore zone related error
|
||||
* stack frames such as `zone.run`/`zoneDelegate.invokeTask` by importing the
|
||||
* below file. Don't forget to comment it out in production mode
|
||||
* because it will have a performance impact when errors are thrown
|
||||
*/
|
||||
// import 'zone.js/dist/zone-error'; // Included with Angular CLI.
|
BIN
src/favicon.ico
Normal file
BIN
src/favicon.ico
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.1 KiB |
14
src/index.html
Normal file
14
src/index.html
Normal file
@@ -0,0 +1,14 @@
|
||||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Eva Icons</title>
|
||||
<base href="/">
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<link rel="icon" type="image/x-icon" href="favicon.ico">
|
||||
</head>
|
||||
<body>
|
||||
<eva-app></eva-app>
|
||||
</body>
|
||||
</html>
|
31
src/karma.conf.js
Normal file
31
src/karma.conf.js
Normal file
@@ -0,0 +1,31 @@
|
||||
// Karma configuration file, see link for more information
|
||||
// https://karma-runner.github.io/1.0/config/configuration-file.html
|
||||
|
||||
module.exports = function (config) {
|
||||
config.set({
|
||||
basePath: '',
|
||||
frameworks: ['jasmine', '@angular-devkit/build-angular'],
|
||||
plugins: [
|
||||
require('karma-jasmine'),
|
||||
require('karma-chrome-launcher'),
|
||||
require('karma-jasmine-html-reporter'),
|
||||
require('karma-coverage-istanbul-reporter'),
|
||||
require('@angular-devkit/build-angular/plugins/karma')
|
||||
],
|
||||
client: {
|
||||
clearContext: false // leave Jasmine Spec Runner output visible in browser
|
||||
},
|
||||
coverageIstanbulReporter: {
|
||||
dir: require('path').join(__dirname, '../coverage'),
|
||||
reports: ['html', 'lcovonly'],
|
||||
fixWebpackSourcePaths: true
|
||||
},
|
||||
reporters: ['progress', 'kjhtml'],
|
||||
port: 9876,
|
||||
colors: true,
|
||||
logLevel: config.LOG_INFO,
|
||||
autoWatch: true,
|
||||
browsers: ['Chrome'],
|
||||
singleRun: false
|
||||
});
|
||||
};
|
12
src/main.ts
Normal file
12
src/main.ts
Normal file
@@ -0,0 +1,12 @@
|
||||
import { enableProdMode } from '@angular/core';
|
||||
import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
|
||||
|
||||
import { AppModule } from './app/app.module';
|
||||
import { environment } from './environments/environment';
|
||||
|
||||
if (environment.production) {
|
||||
enableProdMode();
|
||||
}
|
||||
|
||||
platformBrowserDynamic().bootstrapModule(AppModule)
|
||||
.catch(err => console.log(err));
|
80
src/polyfills.ts
Normal file
80
src/polyfills.ts
Normal file
@@ -0,0 +1,80 @@
|
||||
/**
|
||||
* This file includes polyfills needed by Angular and is loaded before the app.
|
||||
* You can add your own extra polyfills to this file.
|
||||
*
|
||||
* This file is divided into 2 sections:
|
||||
* 1. Browser polyfills. These are applied before loading ZoneJS and are sorted by browsers.
|
||||
* 2. Application imports. Files imported after ZoneJS that should be loaded before your main
|
||||
* file.
|
||||
*
|
||||
* The current setup is for so-called "evergreen" browsers; the last versions of browsers that
|
||||
* automatically update themselves. This includes Safari >= 10, Chrome >= 55 (including Opera),
|
||||
* Edge >= 13 on the desktop, and iOS 10 and Chrome on mobile.
|
||||
*
|
||||
* Learn more in https://angular.io/docs/ts/latest/guide/browser-support.html
|
||||
*/
|
||||
|
||||
/***************************************************************************************************
|
||||
* BROWSER POLYFILLS
|
||||
*/
|
||||
|
||||
/** IE9, IE10 and IE11 requires all of the following polyfills. **/
|
||||
// import 'core-js/es6/symbol';
|
||||
// import 'core-js/es6/object';
|
||||
// import 'core-js/es6/function';
|
||||
// import 'core-js/es6/parse-int';
|
||||
// import 'core-js/es6/parse-float';
|
||||
// import 'core-js/es6/number';
|
||||
// import 'core-js/es6/math';
|
||||
// import 'core-js/es6/string';
|
||||
// import 'core-js/es6/date';
|
||||
// import 'core-js/es6/array';
|
||||
// import 'core-js/es6/regexp';
|
||||
// import 'core-js/es6/map';
|
||||
// import 'core-js/es6/weak-map';
|
||||
// import 'core-js/es6/set';
|
||||
|
||||
/** IE10 and IE11 requires the following for NgClass support on SVG elements */
|
||||
// import 'classlist.js'; // Run `npm install --save classlist.js`.
|
||||
|
||||
/** IE10 and IE11 requires the following for the Reflect API. */
|
||||
// import 'core-js/es6/reflect';
|
||||
|
||||
|
||||
/** Evergreen browsers require these. **/
|
||||
// Used for reflect-metadata in JIT. If you use AOT (and only Angular decorators), you can remove.
|
||||
import 'core-js/es7/reflect';
|
||||
|
||||
|
||||
/**
|
||||
* Web Animations `@angular/platform-browser/animations`
|
||||
* Only required if AnimationBuilder is used within the application and using IE/Edge or Safari.
|
||||
* Standard animation support in Angular DOES NOT require any polyfills (as of Angular 6.0).
|
||||
**/
|
||||
// import 'web-animations-js'; // Run `npm install --save web-animations-js`.
|
||||
|
||||
/**
|
||||
* By default, zone.js will patch all possible macroTask and DomEvents
|
||||
* user can disable parts of macroTask/DomEvents patch by setting following flags
|
||||
*/
|
||||
|
||||
// (window as any).__Zone_disable_requestAnimationFrame = true; // disable patch requestAnimationFrame
|
||||
// (window as any).__Zone_disable_on_property = true; // disable patch onProperty such as onclick
|
||||
// (window as any).__zone_symbol__BLACK_LISTED_EVENTS = ['scroll', 'mousemove']; // disable patch specified eventNames
|
||||
|
||||
/*
|
||||
* in IE/Edge developer tools, the addEventListener will also be wrapped by zone.js
|
||||
* with the following flag, it will bypass `zone.js` patch for IE/Edge
|
||||
*/
|
||||
// (window as any).__Zone_enable_cross_context_check = true;
|
||||
|
||||
/***************************************************************************************************
|
||||
* Zone JS is required by default for Angular itself.
|
||||
*/
|
||||
import 'zone.js/dist/zone'; // Included with Angular CLI.
|
||||
|
||||
|
||||
|
||||
/***************************************************************************************************
|
||||
* APPLICATION IMPORTS
|
||||
*/
|
20
src/test.ts
Normal file
20
src/test.ts
Normal file
@@ -0,0 +1,20 @@
|
||||
// This file is required by karma.conf.js and loads recursively all the .spec and framework files
|
||||
|
||||
import 'zone.js/dist/zone-testing';
|
||||
import { getTestBed } from '@angular/core/testing';
|
||||
import {
|
||||
BrowserDynamicTestingModule,
|
||||
platformBrowserDynamicTesting
|
||||
} from '@angular/platform-browser-dynamic/testing';
|
||||
|
||||
declare const require: any;
|
||||
|
||||
// First, initialize the Angular testing environment.
|
||||
getTestBed().initTestEnvironment(
|
||||
BrowserDynamicTestingModule,
|
||||
platformBrowserDynamicTesting()
|
||||
);
|
||||
// Then we find all the tests.
|
||||
const context = require.context('./', true, /\.spec\.ts$/);
|
||||
// And load the modules.
|
||||
context.keys().map(context);
|
27
src/tsconfig.app.json
Normal file
27
src/tsconfig.app.json
Normal file
@@ -0,0 +1,27 @@
|
||||
{
|
||||
"extends": "../tsconfig.json",
|
||||
"compilerOptions": {
|
||||
"outDir": "../out-tsc/app",
|
||||
"module": "es2015",
|
||||
"baseUrl": "./",
|
||||
"types": [],
|
||||
"paths": {
|
||||
"@angular/*": [
|
||||
"../node_modules/@angular/*"
|
||||
],
|
||||
"@nebular/*": [
|
||||
"../node_modules/@nebular/*"
|
||||
]
|
||||
}
|
||||
},
|
||||
"exclude": [
|
||||
"test.ts",
|
||||
"**/*.spec.ts",
|
||||
"../node_modules/@nebular/**/*.spec.ts"
|
||||
],
|
||||
"include": [
|
||||
"../src/*.ts",
|
||||
"../src/**/*.ts",
|
||||
"../node_modules/@nebular/**/*.ts"
|
||||
]
|
||||
}
|
21
src/tsconfig.spec.json
Normal file
21
src/tsconfig.spec.json
Normal file
@@ -0,0 +1,21 @@
|
||||
{
|
||||
"extends": "../tsconfig.json",
|
||||
"compilerOptions": {
|
||||
"outDir": "../out-tsc/spec",
|
||||
"baseUrl": "./",
|
||||
"module": "commonjs",
|
||||
"target": "es5",
|
||||
"types": [
|
||||
"jasmine",
|
||||
"node"
|
||||
]
|
||||
},
|
||||
"files": [
|
||||
"test.ts",
|
||||
"polyfills.ts"
|
||||
],
|
||||
"include": [
|
||||
"**/*.spec.ts",
|
||||
"**/*.d.ts"
|
||||
]
|
||||
}
|
13
src/typings.d.ts
vendored
Normal file
13
src/typings.d.ts
vendored
Normal file
@@ -0,0 +1,13 @@
|
||||
/**
|
||||
* @license
|
||||
* Copyright Akveo. All Rights Reserved.
|
||||
* Licensed under the MIT License. See License.txt in the project root for license information.
|
||||
*/
|
||||
|
||||
/* SystemJS module definition */
|
||||
declare var module: NodeModule;
|
||||
interface NodeModule {
|
||||
id: string;
|
||||
}
|
||||
|
||||
declare var require: any;
|
22
tsconfig.json
Normal file
22
tsconfig.json
Normal file
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"compileOnSave": false,
|
||||
"compilerOptions": {
|
||||
"outDir": "./dist/out-tsc",
|
||||
"sourceMap": true,
|
||||
"declaration": false,
|
||||
"moduleResolution": "node",
|
||||
"emitDecoratorMetadata": true,
|
||||
"experimentalDecorators": true,
|
||||
"target": "es5",
|
||||
"typeRoots": [
|
||||
"node_modules/@types"
|
||||
],
|
||||
"lib": [
|
||||
"es2017",
|
||||
"dom"
|
||||
],
|
||||
"plugins": [
|
||||
{ "name": "tslint-language-service"}
|
||||
]
|
||||
}
|
||||
}
|
136
tslint.json
Normal file
136
tslint.json
Normal file
@@ -0,0 +1,136 @@
|
||||
{
|
||||
"rulesDirectory": [
|
||||
"node_modules/codelyzer"
|
||||
],
|
||||
"rules": {
|
||||
"trailing-comma": [
|
||||
true,
|
||||
{
|
||||
"multiline": "always",
|
||||
"singleline": "never"
|
||||
}
|
||||
],
|
||||
"arrow-return-shorthand": true,
|
||||
"callable-types": true,
|
||||
"class-name": true,
|
||||
"comment-format": [
|
||||
true,
|
||||
"check-space"
|
||||
],
|
||||
"eofline": true,
|
||||
"forin": true,
|
||||
"import-blacklist": [
|
||||
true
|
||||
],
|
||||
"import-spacing": true,
|
||||
"indent": [
|
||||
true,
|
||||
"spaces"
|
||||
],
|
||||
"interface-over-type-literal": true,
|
||||
"label-position": true,
|
||||
"max-line-length": [
|
||||
true,
|
||||
120
|
||||
],
|
||||
"member-access": false,
|
||||
"no-arg": true,
|
||||
"no-console": [
|
||||
true,
|
||||
"debug",
|
||||
"log",
|
||||
"time",
|
||||
"timeEnd",
|
||||
"trace"
|
||||
],
|
||||
"no-construct": true,
|
||||
"no-debugger": true,
|
||||
"no-duplicate-super": true,
|
||||
"no-empty": false,
|
||||
"no-empty-interface": true,
|
||||
"no-eval": true,
|
||||
"no-misused-new": true,
|
||||
"no-non-null-assertion": true,
|
||||
"no-shadowed-variable": true,
|
||||
"no-string-literal": false,
|
||||
"no-string-throw": true,
|
||||
"no-switch-case-fall-through": true,
|
||||
"no-trailing-whitespace": true,
|
||||
"no-unnecessary-initializer": true,
|
||||
"no-use-before-declare": true,
|
||||
"no-var-keyword": true,
|
||||
"object-literal-sort-keys": false,
|
||||
"one-line": [
|
||||
true,
|
||||
"check-open-brace",
|
||||
"check-catch",
|
||||
"check-else",
|
||||
"check-whitespace"
|
||||
],
|
||||
"prefer-const": true,
|
||||
"quotemark": [
|
||||
true,
|
||||
"single"
|
||||
],
|
||||
"radix": true,
|
||||
"semicolon": [
|
||||
true,
|
||||
"always"
|
||||
],
|
||||
"triple-equals": [
|
||||
true,
|
||||
"allow-null-check"
|
||||
],
|
||||
"typedef-whitespace": [
|
||||
true,
|
||||
{
|
||||
"call-signature": "nospace",
|
||||
"index-signature": "nospace",
|
||||
"parameter": "nospace",
|
||||
"property-declaration": "nospace",
|
||||
"variable-declaration": "nospace"
|
||||
}
|
||||
],
|
||||
"typeof-compare": true,
|
||||
"unified-signatures": true,
|
||||
"variable-name": false,
|
||||
"whitespace": [
|
||||
true,
|
||||
"check-branch",
|
||||
"check-decl",
|
||||
"check-operator",
|
||||
"check-separator",
|
||||
"check-type"
|
||||
],
|
||||
"directive-selector": [
|
||||
true,
|
||||
"attribute",
|
||||
"eva",
|
||||
"camelCase"
|
||||
],
|
||||
"component-selector": [
|
||||
true,
|
||||
"element",
|
||||
"eva",
|
||||
"kebab-case"
|
||||
],
|
||||
"ban": [
|
||||
true,
|
||||
"eval",
|
||||
"fit",
|
||||
"fdescribe",
|
||||
{
|
||||
"name": "$",
|
||||
"message": "please don't"
|
||||
}
|
||||
],
|
||||
"use-input-property-decorator": true,
|
||||
"use-output-property-decorator": true,
|
||||
"no-output-rename": true,
|
||||
"use-life-cycle-interface": true,
|
||||
"use-pipe-transform-interface": true,
|
||||
"component-class-suffix": true,
|
||||
"directive-class-suffix": true,
|
||||
"no-unused-variable": true
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user