├── src ├── assets │ ├── .gitkeep │ ├── .npmignore │ ├── .DS_Store │ ├── img │ │ ├── bg1.jpg │ │ ├── bg10.jpg │ │ ├── bg2.jpg │ │ ├── bg3.jpg │ │ ├── bg4.jpg │ │ ├── bg5.jpg │ │ ├── bg6.jpg │ │ ├── bg7.jpg │ │ ├── bg8.jpg │ │ ├── bg9.jpg │ │ ├── dummy.png │ │ ├── logo.png │ │ ├── lock-bg.jpg │ │ ├── mockup.png │ │ ├── user │ │ │ ├── 01.jpg │ │ │ ├── 02.jpg │ │ │ ├── 03.jpg │ │ │ ├── 04.jpg │ │ │ ├── 05.jpg │ │ │ ├── 06.jpg │ │ │ ├── 07.jpg │ │ │ ├── 08.jpg │ │ │ ├── 09.jpg │ │ │ ├── 10.jpg │ │ │ ├── 11.jpg │ │ │ ├── 12.jpg │ │ │ └── 13.jpg │ │ ├── mb-sample.jpg │ │ ├── profile-bg.jpg │ │ ├── logo-single.png │ │ ├── preloader │ │ │ ├── preloader.empty.png │ │ │ └── preloader.full.png │ │ └── angular.svg │ ├── server │ │ ├── .DS_Store │ │ └── chart │ │ │ ├── bar.json │ │ │ ├── pie.json │ │ │ ├── donut.json │ │ │ ├── area.json │ │ │ ├── spline.json │ │ │ ├── splinev2.json │ │ │ ├── splinev3.json │ │ │ ├── line.json │ │ │ ├── barstacked.json │ │ │ └── barstackedv2.json │ ├── codemirror │ │ ├── source │ │ │ ├── css │ │ │ │ └── style.css │ │ │ ├── index.html │ │ │ └── another.html │ │ ├── theme │ │ │ ├── ambiance-mobile.css │ │ │ ├── neat.css │ │ │ ├── elegant.css │ │ │ ├── neo.css │ │ │ └── eclipse.css │ │ ├── mode │ │ │ ├── tiddlywiki │ │ │ │ └── tiddlywiki.css │ │ │ ├── tiki │ │ │ │ └── tiki.css │ │ │ └── diff │ │ │ │ └── diff.js │ │ └── filetree.json │ └── i18n │ │ ├── en.json │ │ └── es_AR.json ├── app │ ├── app.component.scss │ ├── layout │ │ ├── layout.component.scss │ │ ├── footer │ │ │ ├── footer.component.scss │ │ │ ├── footer.component.html │ │ │ ├── footer.component.ts │ │ │ └── footer.component.spec.ts │ │ ├── header │ │ │ ├── header.component.scss │ │ │ ├── navsearch │ │ │ │ ├── navsearch.component.scss │ │ │ │ ├── navsearch.component.html │ │ │ │ └── navsearch.component.spec.ts │ │ │ └── header.component.spec.ts │ │ ├── sidebar │ │ │ ├── sidebar.component.scss │ │ │ ├── userblock │ │ │ │ ├── userblock.component.scss │ │ │ │ ├── userblock.service.spec.ts │ │ │ │ ├── userblock.service.ts │ │ │ │ ├── userblock.component.html │ │ │ │ ├── userblock.component.ts │ │ │ │ └── userblock.component.spec.ts │ │ │ └── sidebar.component.spec.ts │ │ ├── offsidebar │ │ │ ├── offsidebar.component.scss │ │ │ └── offsidebar.component.ts │ │ ├── layout.component.ts │ │ ├── layout.component.spec.ts │ │ ├── layout.component.h.html │ │ ├── layout.component.html │ │ └── layout.module.ts │ ├── routes │ │ ├── blog │ │ │ ├── list │ │ │ │ ├── list.component.scss │ │ │ │ └── list.component.ts │ │ │ ├── post │ │ │ │ ├── post.component.scss │ │ │ │ └── post.component.ts │ │ │ ├── articles │ │ │ │ ├── articles.component.scss │ │ │ │ └── articles.component.ts │ │ │ ├── articleview │ │ │ │ └── articleview.component.scss │ │ │ └── blog.module.ts │ │ ├── charts │ │ │ ├── flot │ │ │ │ └── flot.component.scss │ │ │ ├── chartjs │ │ │ │ └── chartjs.component.scss │ │ │ ├── radial │ │ │ │ └── radial.component.scss │ │ │ └── charts.module.ts │ │ ├── elements │ │ │ ├── grid │ │ │ │ ├── grid.component.scss │ │ │ │ ├── grid.component.ts │ │ │ │ └── grid.component.spec.ts │ │ │ ├── colors │ │ │ │ ├── colors.component.scss │ │ │ │ ├── colors.component.ts │ │ │ │ └── colors.component.spec.ts │ │ │ ├── buttons │ │ │ │ ├── buttons.component.scss │ │ │ │ ├── buttons.component.spec.ts │ │ │ │ └── buttons.component.ts │ │ │ ├── dropdown │ │ │ │ ├── dropdown.component.scss │ │ │ │ ├── dropdown.component.ts │ │ │ │ └── dropdown.component.spec.ts │ │ │ ├── iconsfont │ │ │ │ ├── iconsfont.component.scss │ │ │ │ ├── iconsfont.component.ts │ │ │ │ └── iconsfont.component.spec.ts │ │ │ ├── navtree │ │ │ │ └── navtree.component.scss │ │ │ ├── sortable │ │ │ │ ├── sortable.component.scss │ │ │ │ └── sortable.product.ts │ │ │ ├── spinners │ │ │ │ ├── spinners.component.scss │ │ │ │ ├── spinners.component.ts │ │ │ │ └── spinners.component.spec.ts │ │ │ ├── gridmasonry │ │ │ │ ├── gridmasonry.component.scss │ │ │ │ ├── gridmasonry.component.ts │ │ │ │ └── gridmasonry.component.spec.ts │ │ │ ├── interaction │ │ │ │ ├── interaction.component.scss │ │ │ │ └── interaction.component.spec.ts │ │ │ ├── sweetalert │ │ │ │ ├── sweetalert.component.scss │ │ │ │ └── sweetalert.component.spec.ts │ │ │ ├── typography │ │ │ │ ├── typography.component.scss │ │ │ │ ├── typography.component.ts │ │ │ │ └── typography.component.spec.ts │ │ │ ├── iconsweather │ │ │ │ ├── iconsweather.component.scss │ │ │ │ ├── iconsweather.component.ts │ │ │ │ └── iconsweather.component.spec.ts │ │ │ ├── infinitescroll │ │ │ │ ├── infinitescroll.component.scss │ │ │ │ ├── infinitescroll.component.html │ │ │ │ └── infinitescroll.component.ts │ │ │ └── notification │ │ │ │ └── notification.component.scss │ │ ├── extras │ │ │ ├── faq │ │ │ │ ├── faq.component.scss │ │ │ │ └── faq.component.ts │ │ │ ├── forum │ │ │ │ ├── forum.component.scss │ │ │ │ ├── forumtopics │ │ │ │ │ ├── forumtopics.component.scss │ │ │ │ │ └── forumtopics.component.ts │ │ │ │ ├── forumdiscussion │ │ │ │ │ ├── forumdiscussion.component.scss │ │ │ │ │ └── forumdiscussion.component.ts │ │ │ │ └── forum.component.ts │ │ │ ├── plans │ │ │ │ ├── plans.component.scss │ │ │ │ └── plans.component.ts │ │ │ ├── invoice │ │ │ │ ├── invoice.component.scss │ │ │ │ └── invoice.component.ts │ │ │ ├── mailbox │ │ │ │ ├── mailbox.component.scss │ │ │ │ ├── folder │ │ │ │ │ ├── folder.component.scss │ │ │ │ │ └── folder.component.ts │ │ │ │ ├── view │ │ │ │ │ ├── view.component.scss │ │ │ │ │ └── view.component.ts │ │ │ │ ├── compose │ │ │ │ │ ├── compose.component.scss │ │ │ │ │ └── compose.component.ts │ │ │ │ └── mailbox.component.ts │ │ │ ├── profile │ │ │ │ ├── profile.component.scss │ │ │ │ └── profile.component.ts │ │ │ ├── search │ │ │ │ ├── search.component.scss │ │ │ │ └── search.component.ts │ │ │ ├── bugtracker │ │ │ │ ├── bugtracker.component.scss │ │ │ │ └── bugtracker.component.ts │ │ │ ├── calendar │ │ │ │ └── calendar.component.scss │ │ │ ├── codeeditor │ │ │ │ └── codeeditor.component.scss │ │ │ ├── contacts │ │ │ │ ├── contacts.component.scss │ │ │ │ └── contacts.component.ts │ │ │ ├── followers │ │ │ │ ├── followers.component.scss │ │ │ │ └── followers.component.ts │ │ │ ├── helpcenter │ │ │ │ ├── helpcenter.component.scss │ │ │ │ └── helpcenter.component.ts │ │ │ ├── projects │ │ │ │ ├── projects.component.scss │ │ │ │ └── projects.component.ts │ │ │ ├── settings │ │ │ │ ├── settings.component.scss │ │ │ │ └── settings.component.ts │ │ │ ├── teamviewer │ │ │ │ ├── teamviewer.component.scss │ │ │ │ └── teamviewer.component.ts │ │ │ ├── timeline │ │ │ │ ├── timeline.component.scss │ │ │ │ └── timeline.component.ts │ │ │ ├── todolist │ │ │ │ └── todolist.component.scss │ │ │ ├── votelinks │ │ │ │ ├── votelinks.component.scss │ │ │ │ └── votelinks.component.ts │ │ │ ├── filemanager │ │ │ │ ├── filemanager.component.scss │ │ │ │ └── filemanager.component.ts │ │ │ ├── socialboard │ │ │ │ ├── socialboard.component.scss │ │ │ │ └── socialboard.component.ts │ │ │ ├── contactdetails │ │ │ │ ├── contactdetails.component.scss │ │ │ │ └── contactdetails.component.ts │ │ │ └── projectsdetails │ │ │ │ └── projectsdetails.component.scss │ │ ├── maps │ │ │ ├── google │ │ │ │ ├── google.component.scss │ │ │ │ └── google.component.ts │ │ │ ├── vector │ │ │ │ ├── vector.component.scss │ │ │ │ └── vector.component.html │ │ │ └── maps.module.ts │ │ ├── pages │ │ │ ├── lock │ │ │ │ ├── lock.component.scss │ │ │ │ └── lock.component.ts │ │ │ ├── login │ │ │ │ ├── login.component.scss │ │ │ │ └── login.component.ts │ │ │ ├── error404 │ │ │ │ ├── error404.component.scss │ │ │ │ └── error404.component.ts │ │ │ ├── error500 │ │ │ │ ├── error500.component.scss │ │ │ │ ├── error500.component.ts │ │ │ │ └── error500.component.html │ │ │ ├── recover │ │ │ │ ├── recover.component.scss │ │ │ │ └── recover.component.ts │ │ │ ├── register │ │ │ │ └── register.component.scss │ │ │ └── maintenance │ │ │ │ ├── maintenance.component.scss │ │ │ │ ├── maintenance.component.ts │ │ │ │ └── maintenance.component.html │ │ ├── account │ │ │ ├── account │ │ │ │ ├── account.component.scss │ │ │ │ └── account.component.ts │ │ │ └── account.module.ts │ │ ├── ecommerce │ │ │ ├── orders │ │ │ │ ├── orders.component.scss │ │ │ │ └── orders.component.ts │ │ │ ├── checkout │ │ │ │ ├── checkout.component.scss │ │ │ │ └── checkout.component.ts │ │ │ ├── products │ │ │ │ ├── products.component.scss │ │ │ │ └── products.component.ts │ │ │ ├── orderview │ │ │ │ ├── orderview.component.scss │ │ │ │ └── orderview.component.ts │ │ │ ├── productview │ │ │ │ ├── productview.component.scss │ │ │ │ └── productview.component.ts │ │ │ └── ecommerce.module.ts │ │ ├── forms │ │ │ ├── standard │ │ │ │ ├── standard.component.scss │ │ │ │ └── standard.component.ts │ │ │ ├── upload │ │ │ │ ├── upload.component.scss │ │ │ │ └── upload.component.ts │ │ │ ├── validation │ │ │ │ └── validation.component.scss │ │ │ ├── cropper │ │ │ │ └── cropper.component.scss │ │ │ └── extended │ │ │ │ └── extended.component.scss │ │ ├── widgets │ │ │ ├── widgets │ │ │ │ ├── widgets.component.scss │ │ │ │ └── widgets.component.ts │ │ │ └── widgets.module.ts │ │ ├── tables │ │ │ ├── datatable │ │ │ │ └── datatable.component.scss │ │ │ ├── extended │ │ │ │ ├── extended.component.scss │ │ │ │ └── extended.component.ts │ │ │ ├── standard │ │ │ │ ├── standard.component.scss │ │ │ │ └── standard.component.ts │ │ │ ├── angulargrid │ │ │ │ ├── angulargrid.component.scss │ │ │ │ └── angulargrid.component.html │ │ │ └── tables.module.ts │ │ ├── dashboard │ │ │ ├── dashboardv1 │ │ │ │ └── dashboardv1.component.scss │ │ │ ├── dashboardv2 │ │ │ │ └── dashboardv2.component.scss │ │ │ ├── dashboardv3 │ │ │ │ └── dashboardv3.component.scss │ │ │ └── dashboard.module.ts │ │ ├── abusedusers │ │ │ ├── abusedusers │ │ │ │ ├── abusedusers.component.scss │ │ │ │ └── abusedusers.component.html │ │ │ └── abusedusers.module.ts │ │ ├── replymanager │ │ │ ├── replymanager │ │ │ │ ├── replymanager.component.scss │ │ │ │ ├── replymanager.component.ts │ │ │ │ └── replymanager.component.html │ │ │ └── replymanager.module.ts │ │ ├── configuration │ │ │ ├── configuration │ │ │ │ ├── configuration.component.scss │ │ │ │ └── configuration.component.html │ │ │ └── configuration.module.ts │ │ ├── abusedcomments │ │ │ ├── abusedcomments │ │ │ │ ├── abusedcomments.component.scss │ │ │ │ └── abusedcomments.component.html │ │ │ └── abusedcomments.module.ts │ │ ├── commentmanager │ │ │ ├── commentmanager │ │ │ │ ├── commentmanager.component.scss │ │ │ │ └── commentmanager.component.ts │ │ │ └── commentmanager.module.ts │ │ ├── home │ │ │ ├── home │ │ │ │ ├── home.component.ts │ │ │ │ ├── home.component.spec.ts │ │ │ │ └── home.component.scss │ │ │ └── home.module.ts │ │ └── routes.module.ts │ ├── app.component.html │ ├── index.ts │ ├── .DS_Store │ ├── core │ │ ├── .DS_Store │ │ ├── preloader │ │ │ └── preloader.component.html │ │ ├── module-import-guard.ts │ │ ├── menu │ │ │ ├── menu.service.spec.ts │ │ │ └── menu.service.ts │ │ ├── themes │ │ │ └── themes.service.spec.ts │ │ ├── settings │ │ │ └── settings.service.spec.ts │ │ ├── core.module.ts │ │ └── translator │ │ │ ├── translator.service.ts │ │ │ └── translator.service.spec.ts │ ├── shared │ │ ├── styles │ │ │ ├── bootstrap │ │ │ │ ├── bootstrap │ │ │ │ │ ├── mixins │ │ │ │ │ │ ├── _center-block.scss │ │ │ │ │ │ ├── _opacity.scss │ │ │ │ │ │ ├── _size.scss │ │ │ │ │ │ ├── _text-overflow.scss │ │ │ │ │ │ ├── _resize.scss │ │ │ │ │ │ ├── _labels.scss │ │ │ │ │ │ ├── _progress-bar.scss │ │ │ │ │ │ ├── _text-emphasis.scss │ │ │ │ │ │ ├── _reset-filter.scss │ │ │ │ │ │ ├── _nav-divider.scss │ │ │ │ │ │ ├── _background-variant.scss │ │ │ │ │ │ ├── _alerts.scss │ │ │ │ │ │ ├── _tab-focus.scss │ │ │ │ │ │ ├── _nav-vertical-align.scss │ │ │ │ │ │ ├── _reset-text.scss │ │ │ │ │ │ ├── _border-radius.scss │ │ │ │ │ │ ├── _pagination.scss │ │ │ │ │ │ ├── _responsive-visibility.scss │ │ │ │ │ │ ├── _panels.scss │ │ │ │ │ │ ├── _hide-text.scss │ │ │ │ │ │ ├── _clearfix.scss │ │ │ │ │ │ ├── _list-group.scss │ │ │ │ │ │ ├── _table-row.scss │ │ │ │ │ │ └── _image.scss │ │ │ │ │ ├── _wells.scss │ │ │ │ │ ├── _responsive-embed.scss │ │ │ │ │ ├── _breadcrumbs.scss │ │ │ │ │ ├── _close.scss │ │ │ │ │ ├── _component-animations.scss │ │ │ │ │ ├── _utilities.scss │ │ │ │ │ ├── _thumbnails.scss │ │ │ │ │ ├── _pager.scss │ │ │ │ │ ├── _mixins.scss │ │ │ │ │ ├── _media.scss │ │ │ │ │ ├── _jumbotron.scss │ │ │ │ │ └── _labels.scss │ │ │ │ ├── _bootstrap-sprockets.scss │ │ │ │ ├── _bootstrap-compass.scss │ │ │ │ └── _bootstrap-mincer.scss │ │ │ ├── bootstrap.scss │ │ │ └── app │ │ │ │ ├── typeahead.scss │ │ │ │ ├── gmap.scss │ │ │ │ ├── typo.scss │ │ │ │ ├── file-upload.scss │ │ │ │ ├── print.scss │ │ │ │ ├── widget.scss │ │ │ │ ├── slim-scroll.scss │ │ │ │ ├── breadcrumbs.scss │ │ │ │ ├── vector-map.scss │ │ │ │ ├── chart-easypie.scss │ │ │ │ ├── media-queries.scss │ │ │ │ ├── progress-extra.scss │ │ │ │ ├── row-extra.scss │ │ │ │ ├── summernote.scss │ │ │ │ ├── table-extras.scss │ │ │ │ ├── half-float.scss │ │ │ │ ├── dropdown-extra.scss │ │ │ │ └── layout-animation.scss │ │ ├── directives │ │ │ ├── scrollable │ │ │ │ └── scrollable.directive.ts │ │ │ ├── now │ │ │ │ └── now.directive.ts │ │ │ ├── checkall │ │ │ │ └── checkall.directive.ts │ │ │ └── jqcloud │ │ │ │ └── jqcloud.directive.ts │ │ └── colors │ │ │ └── colors.service.ts │ └── app.component.spec.ts ├── .DS_Store ├── favicon.ico ├── environments │ ├── environment.prod.ts │ └── environment.ts ├── typings.d.ts ├── tsconfig.app.json ├── tsconfig.spec.json ├── main.ts ├── index.html ├── vendor.ts ├── test.ts └── styles.scss ├── .DS_Store ├── e2e ├── tsconfig.e2e.json ├── app.po.ts └── app.e2e-spec.ts ├── .editorconfig ├── tsconfig.json ├── protractor.conf.js ├── modernizr-config.json └── README.md /src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/.npmignore: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/app.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/layout/layout.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/layout/footer/footer.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/layout/header/header.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/layout/sidebar/sidebar.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/routes/blog/list/list.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/routes/blog/post/post.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/routes/charts/flot/flot.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/routes/elements/grid/grid.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/routes/extras/faq/faq.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/routes/extras/forum/forum.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/routes/extras/plans/plans.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/routes/maps/google/google.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/routes/maps/vector/vector.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/routes/pages/lock/lock.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/routes/pages/login/login.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/layout/offsidebar/offsidebar.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/routes/account/account/account.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/routes/blog/articles/articles.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/routes/charts/chartjs/chartjs.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/routes/charts/radial/radial.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/routes/ecommerce/orders/orders.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/routes/elements/colors/colors.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/routes/extras/invoice/invoice.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/routes/extras/mailbox/mailbox.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/routes/extras/profile/profile.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/routes/extras/search/search.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/routes/forms/standard/standard.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/routes/forms/upload/upload.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/routes/pages/error404/error404.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/routes/pages/error500/error500.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/routes/pages/recover/recover.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/routes/pages/register/register.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/routes/widgets/widgets/widgets.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/layout/header/navsearch/navsearch.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/layout/sidebar/userblock/userblock.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/routes/blog/articleview/articleview.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/routes/ecommerce/checkout/checkout.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/routes/ecommerce/products/products.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/routes/elements/buttons/buttons.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/routes/elements/dropdown/dropdown.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/routes/elements/iconsfont/iconsfont.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/routes/elements/navtree/navtree.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/routes/elements/sortable/sortable.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/routes/elements/spinners/spinners.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/routes/extras/bugtracker/bugtracker.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/routes/extras/calendar/calendar.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/routes/extras/codeeditor/codeeditor.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/routes/extras/contacts/contacts.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/routes/extras/followers/followers.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/routes/extras/helpcenter/helpcenter.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/routes/extras/mailbox/folder/folder.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/routes/extras/mailbox/view/view.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/routes/extras/projects/projects.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/routes/extras/settings/settings.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/routes/extras/teamviewer/teamviewer.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/routes/extras/timeline/timeline.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/routes/extras/todolist/todolist.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/routes/extras/votelinks/votelinks.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/routes/forms/validation/validation.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/routes/tables/datatable/datatable.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/routes/tables/extended/extended.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/routes/tables/standard/standard.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/app.component.html: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /src/app/routes/dashboard/dashboardv1/dashboardv1.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/routes/dashboard/dashboardv2/dashboardv2.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/routes/dashboard/dashboardv3/dashboardv3.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/routes/ecommerce/orderview/orderview.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/routes/ecommerce/productview/productview.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/routes/elements/gridmasonry/gridmasonry.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/routes/elements/interaction/interaction.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/routes/elements/sweetalert/sweetalert.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/routes/elements/typography/typography.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/routes/extras/filemanager/filemanager.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/routes/extras/mailbox/compose/compose.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/routes/extras/socialboard/socialboard.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/routes/pages/maintenance/maintenance.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/routes/tables/angulargrid/angulargrid.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/routes/abusedusers/abusedusers/abusedusers.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/routes/elements/iconsweather/iconsweather.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/routes/elements/infinitescroll/infinitescroll.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/routes/extras/contactdetails/contactdetails.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/routes/extras/forum/forumtopics/forumtopics.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/routes/extras/projectsdetails/projectsdetails.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/routes/replymanager/replymanager/replymanager.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/routes/configuration/configuration/configuration.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/routes/abusedcomments/abusedcomments/abusedcomments.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/routes/commentmanager/commentmanager/commentmanager.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/routes/extras/forum/forumdiscussion/forumdiscussion.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WangStar1031/Angular2Template/HEAD/.DS_Store -------------------------------------------------------------------------------- /src/app/index.ts: -------------------------------------------------------------------------------- 1 | export * from './app.component'; 2 | export * from './app.module'; 3 | -------------------------------------------------------------------------------- /src/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WangStar1031/Angular2Template/HEAD/src/.DS_Store -------------------------------------------------------------------------------- /src/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WangStar1031/Angular2Template/HEAD/src/favicon.ico -------------------------------------------------------------------------------- /src/app/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WangStar1031/Angular2Template/HEAD/src/app/.DS_Store -------------------------------------------------------------------------------- /src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /src/assets/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WangStar1031/Angular2Template/HEAD/src/assets/.DS_Store -------------------------------------------------------------------------------- /src/app/core/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WangStar1031/Angular2Template/HEAD/src/app/core/.DS_Store -------------------------------------------------------------------------------- /src/app/layout/footer/footer.component.html: -------------------------------------------------------------------------------- 1 | © {{settings.app.year}} - {{ settings.app.name }} -------------------------------------------------------------------------------- /src/app/routes/elements/notification/notification.component.scss: -------------------------------------------------------------------------------- 1 | 2 | .modal-content { 3 | top: 100px; 4 | } -------------------------------------------------------------------------------- /src/app/routes/forms/cropper/cropper.component.scss: -------------------------------------------------------------------------------- 1 | .image-cropper-container { 2 | max-width: 790px; 3 | } -------------------------------------------------------------------------------- /src/assets/img/bg1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WangStar1031/Angular2Template/HEAD/src/assets/img/bg1.jpg -------------------------------------------------------------------------------- /src/assets/img/bg10.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WangStar1031/Angular2Template/HEAD/src/assets/img/bg10.jpg -------------------------------------------------------------------------------- /src/assets/img/bg2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WangStar1031/Angular2Template/HEAD/src/assets/img/bg2.jpg -------------------------------------------------------------------------------- /src/assets/img/bg3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WangStar1031/Angular2Template/HEAD/src/assets/img/bg3.jpg -------------------------------------------------------------------------------- /src/assets/img/bg4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WangStar1031/Angular2Template/HEAD/src/assets/img/bg4.jpg -------------------------------------------------------------------------------- /src/assets/img/bg5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WangStar1031/Angular2Template/HEAD/src/assets/img/bg5.jpg -------------------------------------------------------------------------------- /src/assets/img/bg6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WangStar1031/Angular2Template/HEAD/src/assets/img/bg6.jpg -------------------------------------------------------------------------------- /src/assets/img/bg7.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WangStar1031/Angular2Template/HEAD/src/assets/img/bg7.jpg -------------------------------------------------------------------------------- /src/assets/img/bg8.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WangStar1031/Angular2Template/HEAD/src/assets/img/bg8.jpg -------------------------------------------------------------------------------- /src/assets/img/bg9.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WangStar1031/Angular2Template/HEAD/src/assets/img/bg9.jpg -------------------------------------------------------------------------------- /src/assets/img/dummy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WangStar1031/Angular2Template/HEAD/src/assets/img/dummy.png -------------------------------------------------------------------------------- /src/assets/img/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WangStar1031/Angular2Template/HEAD/src/assets/img/logo.png -------------------------------------------------------------------------------- /src/assets/img/lock-bg.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WangStar1031/Angular2Template/HEAD/src/assets/img/lock-bg.jpg -------------------------------------------------------------------------------- /src/assets/img/mockup.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WangStar1031/Angular2Template/HEAD/src/assets/img/mockup.png -------------------------------------------------------------------------------- /src/assets/img/user/01.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WangStar1031/Angular2Template/HEAD/src/assets/img/user/01.jpg -------------------------------------------------------------------------------- /src/assets/img/user/02.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WangStar1031/Angular2Template/HEAD/src/assets/img/user/02.jpg -------------------------------------------------------------------------------- /src/assets/img/user/03.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WangStar1031/Angular2Template/HEAD/src/assets/img/user/03.jpg -------------------------------------------------------------------------------- /src/assets/img/user/04.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WangStar1031/Angular2Template/HEAD/src/assets/img/user/04.jpg -------------------------------------------------------------------------------- /src/assets/img/user/05.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WangStar1031/Angular2Template/HEAD/src/assets/img/user/05.jpg -------------------------------------------------------------------------------- /src/assets/img/user/06.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WangStar1031/Angular2Template/HEAD/src/assets/img/user/06.jpg -------------------------------------------------------------------------------- /src/assets/img/user/07.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WangStar1031/Angular2Template/HEAD/src/assets/img/user/07.jpg -------------------------------------------------------------------------------- /src/assets/img/user/08.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WangStar1031/Angular2Template/HEAD/src/assets/img/user/08.jpg -------------------------------------------------------------------------------- /src/assets/img/user/09.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WangStar1031/Angular2Template/HEAD/src/assets/img/user/09.jpg -------------------------------------------------------------------------------- /src/assets/img/user/10.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WangStar1031/Angular2Template/HEAD/src/assets/img/user/10.jpg -------------------------------------------------------------------------------- /src/assets/img/user/11.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WangStar1031/Angular2Template/HEAD/src/assets/img/user/11.jpg -------------------------------------------------------------------------------- /src/assets/img/user/12.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WangStar1031/Angular2Template/HEAD/src/assets/img/user/12.jpg -------------------------------------------------------------------------------- /src/assets/img/user/13.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WangStar1031/Angular2Template/HEAD/src/assets/img/user/13.jpg -------------------------------------------------------------------------------- /src/assets/img/mb-sample.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WangStar1031/Angular2Template/HEAD/src/assets/img/mb-sample.jpg -------------------------------------------------------------------------------- /src/assets/img/profile-bg.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WangStar1031/Angular2Template/HEAD/src/assets/img/profile-bg.jpg -------------------------------------------------------------------------------- /src/assets/server/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WangStar1031/Angular2Template/HEAD/src/assets/server/.DS_Store -------------------------------------------------------------------------------- /src/assets/img/logo-single.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WangStar1031/Angular2Template/HEAD/src/assets/img/logo-single.png -------------------------------------------------------------------------------- /src/assets/codemirror/source/css/style.css: -------------------------------------------------------------------------------- 1 | .some { 2 | width: 100%; 3 | height: 100%; 4 | } 5 | 6 | .some-css { 7 | overflow: hidden; 8 | } 9 | -------------------------------------------------------------------------------- /src/assets/img/preloader/preloader.empty.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WangStar1031/Angular2Template/HEAD/src/assets/img/preloader/preloader.empty.png -------------------------------------------------------------------------------- /src/assets/img/preloader/preloader.full.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WangStar1031/Angular2Template/HEAD/src/assets/img/preloader/preloader.full.png -------------------------------------------------------------------------------- /src/app/core/preloader/preloader.component.html: -------------------------------------------------------------------------------- 1 |
2 |
3 |
-------------------------------------------------------------------------------- /src/assets/codemirror/theme/ambiance-mobile.css: -------------------------------------------------------------------------------- 1 | .cm-s-ambiance.CodeMirror { 2 | -webkit-box-shadow: none; 3 | -moz-box-shadow: none; 4 | box-shadow: none; 5 | } 6 | -------------------------------------------------------------------------------- /src/app/routes/elements/sortable/sortable.product.ts: -------------------------------------------------------------------------------- 1 | export class Product { 2 | constructor(public name: string, public quantity: number, public cost: number) { } 3 | } 4 | -------------------------------------------------------------------------------- /src/typings.d.ts: -------------------------------------------------------------------------------- 1 | /* SystemJS module definition */ 2 | declare var module: NodeModule; 3 | interface NodeModule { 4 | id: string; 5 | } 6 | declare var System: any; 7 | declare const require: any; 8 | -------------------------------------------------------------------------------- /src/assets/codemirror/source/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Document 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /src/app/shared/styles/bootstrap/bootstrap/mixins/_center-block.scss: -------------------------------------------------------------------------------- 1 | // Center-align a block level element 2 | 3 | @mixin center-block() { 4 | display: block; 5 | margin-left: auto; 6 | margin-right: auto; 7 | } 8 | -------------------------------------------------------------------------------- /src/assets/codemirror/source/another.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Another Document 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /src/app/shared/styles/bootstrap.scss: -------------------------------------------------------------------------------- 1 | // 2 | // This file compiles to a custom bootstrap stylesheet for Angle 3 | // 4 | 5 | // Override bootstrap variables 6 | @import "app/variables"; 7 | // Bootstrap 8 | @import "bootstrap/bootstrap"; -------------------------------------------------------------------------------- /src/app/shared/styles/bootstrap/bootstrap/mixins/_opacity.scss: -------------------------------------------------------------------------------- 1 | // Opacity 2 | 3 | @mixin opacity($opacity) { 4 | opacity: $opacity; 5 | // IE8 filter 6 | $opacity-ie: ($opacity * 100); 7 | filter: alpha(opacity=$opacity-ie); 8 | } 9 | -------------------------------------------------------------------------------- /src/app/shared/styles/bootstrap/bootstrap/mixins/_size.scss: -------------------------------------------------------------------------------- 1 | // Sizing shortcuts 2 | 3 | @mixin size($width, $height) { 4 | width: $width; 5 | height: $height; 6 | } 7 | 8 | @mixin square($size) { 9 | @include size($size, $size); 10 | } 11 | -------------------------------------------------------------------------------- /src/app/shared/styles/bootstrap/bootstrap/mixins/_text-overflow.scss: -------------------------------------------------------------------------------- 1 | // Text overflow 2 | // Requires inline-block or block for proper styling 3 | 4 | @mixin text-overflow() { 5 | overflow: hidden; 6 | text-overflow: ellipsis; 7 | white-space: nowrap; 8 | } 9 | -------------------------------------------------------------------------------- /src/app/shared/styles/bootstrap/_bootstrap-sprockets.scss: -------------------------------------------------------------------------------- 1 | @function twbs-font-path($path) { 2 | @return font-path($path); 3 | } 4 | 5 | @function twbs-image-path($path) { 6 | @return image-path($path); 7 | } 8 | 9 | $bootstrap-sass-asset-helper: true; 10 | -------------------------------------------------------------------------------- /e2e/tsconfig.e2e.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../out-tsc/e2e", 5 | "module": "commonjs", 6 | "target": "es5", 7 | "types":[ 8 | "jasmine", 9 | "node" 10 | ] 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/app/shared/styles/bootstrap/_bootstrap-compass.scss: -------------------------------------------------------------------------------- 1 | @function twbs-font-path($path) { 2 | @return font-url($path, true); 3 | } 4 | 5 | @function twbs-image-path($path) { 6 | @return image-url($path, true); 7 | } 8 | 9 | $bootstrap-sass-asset-helper: true; 10 | -------------------------------------------------------------------------------- /src/app/shared/styles/bootstrap/bootstrap/mixins/_resize.scss: -------------------------------------------------------------------------------- 1 | // Resize anything 2 | 3 | @mixin resizable($direction) { 4 | resize: $direction; // Options: horizontal, vertical, both 5 | overflow: auto; // Per CSS3 UI, `resize` only applies when `overflow` isn't `visible` 6 | } 7 | -------------------------------------------------------------------------------- /src/app/shared/styles/bootstrap/bootstrap/mixins/_labels.scss: -------------------------------------------------------------------------------- 1 | // Labels 2 | 3 | @mixin label-variant($color) { 4 | background-color: $color; 5 | 6 | &[href] { 7 | &:hover, 8 | &:focus { 9 | background-color: darken($color, 10%); 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /e2e/app.po.ts: -------------------------------------------------------------------------------- 1 | import { browser, element, by } from 'protractor'; 2 | 3 | export class Ng2anglePage { 4 | navigateTo() { 5 | return browser.get('/'); 6 | } 7 | 8 | getParagraphText() { 9 | return element(by.css('app-root h1')).getText(); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /src/tsconfig.app.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../out-tsc/app", 5 | "module": "es2015", 6 | "baseUrl": "", 7 | "types": [] 8 | }, 9 | "exclude": [ 10 | "test.ts", 11 | "**/*.spec.ts" 12 | ] 13 | } 14 | -------------------------------------------------------------------------------- /src/app/core/module-import-guard.ts: -------------------------------------------------------------------------------- 1 | // https://angular.io/styleguide#!#04-12 2 | export function throwIfAlreadyLoaded(parentModule: any, moduleName: string) { 3 | if (parentModule) { 4 | throw new Error(`${moduleName} has already been loaded. Import Core modules in the AppModule only.`); 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /src/app/routes/maps/vector/vector.component.html: -------------------------------------------------------------------------------- 1 |
Vector Maps 2 |
3 | Resolution independent maps 4 |
5 |
6 | -------------------------------------------------------------------------------- /src/app/shared/styles/bootstrap/bootstrap/mixins/_progress-bar.scss: -------------------------------------------------------------------------------- 1 | // Progress bars 2 | 3 | @mixin progress-bar-variant($color) { 4 | background-color: $color; 5 | 6 | // Deprecated parent class requirement as of v3.2.0 7 | .progress-striped & { 8 | @include gradient-striped; 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | # Editor configuration, see http://editorconfig.org 2 | root = true 3 | 4 | [*] 5 | charset = utf-8 6 | indent_style = space 7 | indent_size = 2 8 | insert_final_newline = true 9 | trim_trailing_whitespace = true 10 | 11 | [*.md] 12 | max_line_length = off 13 | trim_trailing_whitespace = false 14 | -------------------------------------------------------------------------------- /src/app/shared/styles/bootstrap/bootstrap/mixins/_text-emphasis.scss: -------------------------------------------------------------------------------- 1 | // Typography 2 | 3 | // [converter] $parent hack 4 | @mixin text-emphasis-variant($parent, $color) { 5 | #{$parent} { 6 | color: $color; 7 | } 8 | a#{$parent}:hover, 9 | a#{$parent}:focus { 10 | color: darken($color, 10%); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/assets/codemirror/mode/tiddlywiki/tiddlywiki.css: -------------------------------------------------------------------------------- 1 | span.cm-underlined { 2 | text-decoration: underline; 3 | } 4 | span.cm-strikethrough { 5 | text-decoration: line-through; 6 | } 7 | span.cm-brace { 8 | color: #170; 9 | font-weight: bold; 10 | } 11 | span.cm-table { 12 | color: blue; 13 | font-weight: bold; 14 | } 15 | -------------------------------------------------------------------------------- /src/assets/server/chart/bar.json: -------------------------------------------------------------------------------- 1 | [{ 2 | "label": "Sales", 3 | "color": "#9cd159", 4 | "data": [ 5 | ["Jan", 27], 6 | ["Feb", 82], 7 | ["Mar", 56], 8 | ["Apr", 14], 9 | ["May", 28], 10 | ["Jun", 77], 11 | ["Jul", 23], 12 | ["Aug", 49], 13 | ["Sep", 81], 14 | ["Oct", 20] 15 | ] 16 | }] -------------------------------------------------------------------------------- /src/app/routes/configuration/configuration/configuration.component.html: -------------------------------------------------------------------------------- 1 |
Configuration
2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /src/app/shared/styles/bootstrap/bootstrap/mixins/_reset-filter.scss: -------------------------------------------------------------------------------- 1 | // Reset filters for IE 2 | // 3 | // When you need to remove a gradient background, do not forget to use this to reset 4 | // the IE filter for IE9 and below. 5 | 6 | @mixin reset-filter() { 7 | filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); 8 | } 9 | -------------------------------------------------------------------------------- /src/app/shared/styles/bootstrap/bootstrap/mixins/_nav-divider.scss: -------------------------------------------------------------------------------- 1 | // Horizontal dividers 2 | // 3 | // Dividers (basically an hr) within dropdowns and nav lists 4 | 5 | @mixin nav-divider($color: #e5e5e5) { 6 | height: 1px; 7 | margin: (($line-height-computed / 2) - 1) 0; 8 | overflow: hidden; 9 | background-color: $color; 10 | } 11 | -------------------------------------------------------------------------------- /src/app/shared/styles/bootstrap/bootstrap/mixins/_background-variant.scss: -------------------------------------------------------------------------------- 1 | // Contextual backgrounds 2 | 3 | // [converter] $parent hack 4 | @mixin bg-variant($parent, $color) { 5 | #{$parent} { 6 | background-color: $color; 7 | } 8 | a#{$parent}:hover, 9 | a#{$parent}:focus { 10 | background-color: darken($color, 10%); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/app/routes/elements/grid/grid.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-grid', 5 | templateUrl: './grid.component.html', 6 | styleUrls: ['./grid.component.scss'] 7 | }) 8 | export class GridComponent implements OnInit { 9 | 10 | constructor() { } 11 | 12 | ngOnInit() { 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /src/app/routes/extras/forum/forum.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-forum', 5 | templateUrl: './forum.component.html', 6 | styleUrls: ['./forum.component.scss'] 7 | }) 8 | export class ForumComponent implements OnInit { 9 | 10 | constructor() { } 11 | 12 | ngOnInit() { 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /src/app/routes/extras/plans/plans.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-plans', 5 | templateUrl: './plans.component.html', 6 | styleUrls: ['./plans.component.scss'] 7 | }) 8 | export class PlansComponent implements OnInit { 9 | 10 | constructor() { } 11 | 12 | ngOnInit() { 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /e2e/app.e2e-spec.ts: -------------------------------------------------------------------------------- 1 | import { Ng2anglePage } from './app.po'; 2 | 3 | describe('ng2angle App', function() { 4 | let page: Ng2anglePage; 5 | 6 | beforeEach(() => { 7 | page = new Ng2anglePage(); 8 | }); 9 | 10 | it('should display Angle in h1 tag', () => { 11 | page.navigateTo(); 12 | expect(page.getParagraphText()).toEqual('Angle'); 13 | }); 14 | }); 15 | -------------------------------------------------------------------------------- /src/app/layout/layout.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-layout', 5 | templateUrl: './layout.component.html', 6 | styleUrls: ['./layout.component.scss'] 7 | }) 8 | export class LayoutComponent implements OnInit { 9 | 10 | constructor() { } 11 | 12 | ngOnInit() { 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /src/app/routes/ecommerce/orders/orders.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-orders', 5 | templateUrl: './orders.component.html', 6 | styleUrls: ['./orders.component.scss'] 7 | }) 8 | export class OrdersComponent implements OnInit { 9 | 10 | constructor() { } 11 | 12 | ngOnInit() { 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /src/app/routes/elements/colors/colors.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-colors', 5 | templateUrl: './colors.component.html', 6 | styleUrls: ['./colors.component.scss'] 7 | }) 8 | export class ColorsComponent implements OnInit { 9 | 10 | constructor() { } 11 | 12 | ngOnInit() { 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /src/app/routes/home/home/home.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | 3 | 4 | @Component({ 5 | selector: 'app-home', 6 | templateUrl: './home.component.html', 7 | styleUrls: ['./home.component.scss'] 8 | }) 9 | export class HomeComponent implements OnInit { 10 | 11 | constructor() { } 12 | 13 | ngOnInit() { 14 | } 15 | 16 | } 17 | -------------------------------------------------------------------------------- /src/app/shared/styles/bootstrap/bootstrap/mixins/_alerts.scss: -------------------------------------------------------------------------------- 1 | // Alerts 2 | 3 | @mixin alert-variant($background, $border, $text-color) { 4 | background-color: $background; 5 | border-color: $border; 6 | color: $text-color; 7 | 8 | hr { 9 | border-top-color: darken($border, 5%); 10 | } 11 | .alert-link { 12 | color: darken($text-color, 10%); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/app/routes/extras/invoice/invoice.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-invoice', 5 | templateUrl: './invoice.component.html', 6 | styleUrls: ['./invoice.component.scss'] 7 | }) 8 | export class InvoiceComponent implements OnInit { 9 | 10 | constructor() { } 11 | 12 | ngOnInit() { 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /src/app/routes/blog/articles/articles.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-articles', 5 | templateUrl: './articles.component.html', 6 | styleUrls: ['./articles.component.scss'] 7 | }) 8 | export class ArticlesComponent implements OnInit { 9 | 10 | constructor() { } 11 | 12 | ngOnInit() { 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /src/app/routes/elements/dropdown/dropdown.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-dropdown', 5 | templateUrl: './dropdown.component.html', 6 | styleUrls: ['./dropdown.component.scss'] 7 | }) 8 | export class DropdownComponent implements OnInit { 9 | 10 | constructor() { } 11 | 12 | ngOnInit() { 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /src/app/routes/elements/spinners/spinners.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-spinners', 5 | templateUrl: './spinners.component.html', 6 | styleUrls: ['./spinners.component.scss'] 7 | }) 8 | export class SpinnersComponent implements OnInit { 9 | 10 | constructor() { } 11 | 12 | ngOnInit() { 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /src/app/routes/forms/standard/standard.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-standard', 5 | templateUrl: './standard.component.html', 6 | styleUrls: ['./standard.component.scss'] 7 | }) 8 | export class StandardComponent implements OnInit { 9 | 10 | constructor() { } 11 | 12 | ngOnInit() { 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /src/app/routes/tables/standard/standard.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-standard', 5 | templateUrl: './standard.component.html', 6 | styleUrls: ['./standard.component.scss'] 7 | }) 8 | export class StandardComponent implements OnInit { 9 | 10 | constructor() { } 11 | 12 | ngOnInit() { 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /src/app/routes/ecommerce/products/products.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-products', 5 | templateUrl: './products.component.html', 6 | styleUrls: ['./products.component.scss'] 7 | }) 8 | export class ProductsComponent implements OnInit { 9 | 10 | constructor() { } 11 | 12 | ngOnInit() { 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /src/app/routes/extras/followers/followers.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-followers', 5 | templateUrl: './followers.component.html', 6 | styleUrls: ['./followers.component.scss'] 7 | }) 8 | export class FollowersComponent implements OnInit { 9 | 10 | constructor() { } 11 | 12 | ngOnInit() { 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /src/app/shared/styles/app/typeahead.scss: -------------------------------------------------------------------------------- 1 | /* ======================================================================== 2 | Component: typeahead 3 | ========================================================================== */ 4 | 5 | // Limits the typeahead list when it becomes too large 6 | .typeahead-ctrl { 7 | .dropdown-menu { 8 | max-height: 300px; 9 | overflow: auto; 10 | } 11 | } -------------------------------------------------------------------------------- /src/app/layout/layout.component.spec.ts: -------------------------------------------------------------------------------- 1 | /* tslint:disable:no-unused-variable */ 2 | 3 | import { TestBed, async } from '@angular/core/testing'; 4 | import { LayoutComponent } from './layout.component'; 5 | 6 | describe('Component: Layout', () => { 7 | it('should create an instance', () => { 8 | let component = new LayoutComponent(); 9 | expect(component).toBeTruthy(); 10 | }); 11 | }); 12 | -------------------------------------------------------------------------------- /src/app/routes/ecommerce/orderview/orderview.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-orderview', 5 | templateUrl: './orderview.component.html', 6 | styleUrls: ['./orderview.component.scss'] 7 | }) 8 | export class OrderviewComponent implements OnInit { 9 | 10 | constructor() { } 11 | 12 | ngOnInit() { 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /src/app/routes/elements/iconsfont/iconsfont.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-iconsfont', 5 | templateUrl: './iconsfont.component.html', 6 | styleUrls: ['./iconsfont.component.scss'] 7 | }) 8 | export class IconsfontComponent implements OnInit { 9 | 10 | constructor() { } 11 | 12 | ngOnInit() { 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /src/app/routes/extras/helpcenter/helpcenter.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-helpcenter', 5 | templateUrl: './helpcenter.component.html', 6 | styleUrls: ['./helpcenter.component.scss'] 7 | }) 8 | export class HelpcenterComponent implements OnInit { 9 | 10 | constructor() { } 11 | 12 | ngOnInit() { 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /src/app/routes/home/home/home.component.spec.ts: -------------------------------------------------------------------------------- 1 | /* tslint:disable:no-unused-variable */ 2 | 3 | import { TestBed, async } from '@angular/core/testing'; 4 | import { HomeComponent } from './home.component'; 5 | 6 | describe('Component: Home', () => { 7 | it('should create an instance', () => { 8 | let component = new HomeComponent(); 9 | expect(component).toBeTruthy(); 10 | }); 11 | }); 12 | -------------------------------------------------------------------------------- /src/app/routes/elements/grid/grid.component.spec.ts: -------------------------------------------------------------------------------- 1 | /* tslint:disable:no-unused-variable */ 2 | 3 | import { TestBed, async } from '@angular/core/testing'; 4 | import { GridComponent } from './grid.component'; 5 | 6 | describe('Component: Grid', () => { 7 | it('should create an instance', () => { 8 | let component = new GridComponent(); 9 | expect(component).toBeTruthy(); 10 | }); 11 | }); 12 | -------------------------------------------------------------------------------- /src/app/routes/elements/typography/typography.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-typography', 5 | templateUrl: './typography.component.html', 6 | styleUrls: ['./typography.component.scss'] 7 | }) 8 | export class TypographyComponent implements OnInit { 9 | 10 | constructor() { } 11 | 12 | ngOnInit() { 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /src/app/routes/pages/maintenance/maintenance.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-maintenance', 5 | templateUrl: './maintenance.component.html', 6 | styleUrls: ['./maintenance.component.scss'] 7 | }) 8 | export class MaintenanceComponent implements OnInit { 9 | 10 | constructor() { } 11 | 12 | ngOnInit() { 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /src/app/shared/styles/app/gmap.scss: -------------------------------------------------------------------------------- 1 | /* ======================================================================== 2 | Component: gmap 3 | ========================================================================== */ 4 | 5 | .gmap { 6 | // Sets an arbitrary height for the map element 7 | // Google Map requires it 8 | height: 300px; 9 | 10 | &.gmap-sm { 11 | height: 150px; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/app/routes/ecommerce/productview/productview.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-productview', 5 | templateUrl: './productview.component.html', 6 | styleUrls: ['./productview.component.scss'] 7 | }) 8 | export class ProductviewComponent implements OnInit { 9 | 10 | constructor() { } 11 | 12 | ngOnInit() { 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /src/app/routes/elements/gridmasonry/gridmasonry.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-gridmasonry', 5 | templateUrl: './gridmasonry.component.html', 6 | styleUrls: ['./gridmasonry.component.scss'] 7 | }) 8 | export class GridmasonryComponent implements OnInit { 9 | 10 | constructor() { } 11 | 12 | ngOnInit() { 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /src/app/routes/extras/filemanager/filemanager.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-filemanager', 5 | templateUrl: './filemanager.component.html', 6 | styleUrls: ['./filemanager.component.scss'] 7 | }) 8 | export class FilemanagerComponent implements OnInit { 9 | 10 | constructor() { } 11 | 12 | ngOnInit() { 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /src/tsconfig.spec.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../out-tsc/spec", 5 | "module": "commonjs", 6 | "target": "es5", 7 | "baseUrl": "", 8 | "types": [ 9 | "jasmine", 10 | "node" 11 | ] 12 | }, 13 | "files": [ 14 | "test.ts" 15 | ], 16 | "include": [ 17 | "**/*.spec.ts", 18 | "**/*.d.ts" 19 | ] 20 | } 21 | -------------------------------------------------------------------------------- /src/app/routes/elements/colors/colors.component.spec.ts: -------------------------------------------------------------------------------- 1 | /* tslint:disable:no-unused-variable */ 2 | 3 | import { TestBed, async } from '@angular/core/testing'; 4 | import { ColorsComponent } from './colors.component'; 5 | 6 | describe('Component: Colors', () => { 7 | it('should create an instance', () => { 8 | let component = new ColorsComponent(); 9 | expect(component).toBeTruthy(); 10 | }); 11 | }); 12 | -------------------------------------------------------------------------------- /src/app/routes/elements/iconsweather/iconsweather.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-iconsweather', 5 | templateUrl: './iconsweather.component.html', 6 | styleUrls: ['./iconsweather.component.scss'] 7 | }) 8 | export class IconsweatherComponent implements OnInit { 9 | 10 | constructor() { } 11 | 12 | ngOnInit() { 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /src/app/routes/forms/extended/extended.component.scss: -------------------------------------------------------------------------------- 1 | 2 | @import '../../../shared/styles/app/variables.scss'; 3 | @import '../../../shared/styles/app/media-queries.scss'; 4 | 5 | .ng2-tag-input.minimal { 6 | border: 1px solid $input-border !important; 7 | border-radius: $input-border-radius; 8 | &.ng2-tag-input--focused { 9 | border: 1px solid $input-border-focus !important; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /src/assets/server/chart/pie.json: -------------------------------------------------------------------------------- 1 | [{ 2 | "label": "jQuery", 3 | "color": "#4acab4", 4 | "data": 30 5 | }, { 6 | "label": "CSS", 7 | "color": "#ffea88", 8 | "data": 40 9 | }, { 10 | "label": "LESS", 11 | "color": "#ff8153", 12 | "data": 90 13 | }, { 14 | "label": "SASS", 15 | "color": "#878bb6", 16 | "data": 75 17 | }, { 18 | "label": "Jade", 19 | "color": "#b2d767", 20 | "data": 120 21 | }] -------------------------------------------------------------------------------- /src/app/routes/elements/buttons/buttons.component.spec.ts: -------------------------------------------------------------------------------- 1 | /* tslint:disable:no-unused-variable */ 2 | 3 | import { TestBed, async } from '@angular/core/testing'; 4 | import { ButtonsComponent } from './buttons.component'; 5 | 6 | describe('Component: Buttons', () => { 7 | it('should create an instance', () => { 8 | let component = new ButtonsComponent(); 9 | expect(component).toBeTruthy(); 10 | }); 11 | }); 12 | -------------------------------------------------------------------------------- /src/app/routes/extras/contactdetails/contactdetails.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-contactdetails', 5 | templateUrl: './contactdetails.component.html', 6 | styleUrls: ['./contactdetails.component.scss'] 7 | }) 8 | export class ContactdetailsComponent implements OnInit { 9 | 10 | constructor() { } 11 | 12 | ngOnInit() { 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /src/app/routes/elements/dropdown/dropdown.component.spec.ts: -------------------------------------------------------------------------------- 1 | /* tslint:disable:no-unused-variable */ 2 | 3 | import { TestBed, async } from '@angular/core/testing'; 4 | import { DropdownComponent } from './dropdown.component'; 5 | 6 | describe('Component: Dropdown', () => { 7 | it('should create an instance', () => { 8 | let component = new DropdownComponent(); 9 | expect(component).toBeTruthy(); 10 | }); 11 | }); 12 | -------------------------------------------------------------------------------- /src/app/routes/elements/spinners/spinners.component.spec.ts: -------------------------------------------------------------------------------- 1 | /* tslint:disable:no-unused-variable */ 2 | 3 | import { TestBed, async } from '@angular/core/testing'; 4 | import { SpinnersComponent } from './spinners.component'; 5 | 6 | describe('Component: Spinners', () => { 7 | it('should create an instance', () => { 8 | let component = new SpinnersComponent(); 9 | expect(component).toBeTruthy(); 10 | }); 11 | }); 12 | -------------------------------------------------------------------------------- /src/app/shared/styles/bootstrap/bootstrap/mixins/_tab-focus.scss: -------------------------------------------------------------------------------- 1 | // WebKit-style focus 2 | 3 | @mixin tab-focus() { 4 | // WebKit-specific. Other browsers will keep their default outline style. 5 | // (Initially tried to also force default via `outline: initial`, 6 | // but that seems to erroneously remove the outline in Firefox altogether.) 7 | outline: 5px auto -webkit-focus-ring-color; 8 | outline-offset: -2px; 9 | } 10 | -------------------------------------------------------------------------------- /src/app/routes/elements/iconsfont/iconsfont.component.spec.ts: -------------------------------------------------------------------------------- 1 | /* tslint:disable:no-unused-variable */ 2 | 3 | import { TestBed, async } from '@angular/core/testing'; 4 | import { IconsfontComponent } from './iconsfont.component'; 5 | 6 | describe('Component: Iconsfont', () => { 7 | it('should create an instance', () => { 8 | let component = new IconsfontComponent(); 9 | expect(component).toBeTruthy(); 10 | }); 11 | }); 12 | -------------------------------------------------------------------------------- /src/app/routes/extras/settings/settings.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-settings', 5 | templateUrl: './settings.component.html', 6 | styleUrls: ['./settings.component.scss'] 7 | }) 8 | export class SettingsComponent implements OnInit { 9 | 10 | settingActive = 1; 11 | 12 | constructor() { } 13 | 14 | ngOnInit() { 15 | } 16 | 17 | } 18 | -------------------------------------------------------------------------------- /src/environments/environment.ts: -------------------------------------------------------------------------------- 1 | // The file contents for the current environment will overwrite these during build. 2 | // The build system defaults to the dev environment which uses `environment.ts`, but if you do 3 | // `ng build --env=prod` then `environment.prod.ts` will be used instead. 4 | // The list of which env maps to which file can be found in `.angular-cli.json`. 5 | 6 | export const environment = { 7 | production: false 8 | }; 9 | -------------------------------------------------------------------------------- /src/app/routes/elements/typography/typography.component.spec.ts: -------------------------------------------------------------------------------- 1 | /* tslint:disable:no-unused-variable */ 2 | 3 | import { TestBed, async } from '@angular/core/testing'; 4 | import { TypographyComponent } from './typography.component'; 5 | 6 | describe('Component: Typography', () => { 7 | it('should create an instance', () => { 8 | let component = new TypographyComponent(); 9 | expect(component).toBeTruthy(); 10 | }); 11 | }); 12 | -------------------------------------------------------------------------------- /src/app/routes/extras/timeline/timeline.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-timeline', 5 | templateUrl: './timeline.component.html', 6 | styleUrls: ['./timeline.component.scss'] 7 | }) 8 | export class TimelineComponent implements OnInit { 9 | 10 | timelineAlt = false; 11 | 12 | constructor() { } 13 | 14 | ngOnInit() { 15 | } 16 | 17 | } 18 | -------------------------------------------------------------------------------- /src/app/routes/elements/gridmasonry/gridmasonry.component.spec.ts: -------------------------------------------------------------------------------- 1 | /* tslint:disable:no-unused-variable */ 2 | 3 | import { TestBed, async } from '@angular/core/testing'; 4 | import { GridmasonryComponent } from './gridmasonry.component'; 5 | 6 | describe('Component: Gridmasonry', () => { 7 | it('should create an instance', () => { 8 | let component = new GridmasonryComponent(); 9 | expect(component).toBeTruthy(); 10 | }); 11 | }); 12 | -------------------------------------------------------------------------------- /src/app/routes/elements/interaction/interaction.component.spec.ts: -------------------------------------------------------------------------------- 1 | /* tslint:disable:no-unused-variable */ 2 | 3 | import { TestBed, async } from '@angular/core/testing'; 4 | import { InteractionComponent } from './interaction.component'; 5 | 6 | describe('Component: Interaction', () => { 7 | it('should create an instance', () => { 8 | let component = new InteractionComponent(); 9 | expect(component).toBeTruthy(); 10 | }); 11 | }); 12 | -------------------------------------------------------------------------------- /src/app/routes/extras/socialboard/socialboard.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-socialboard', 5 | templateUrl: './socialboard.component.html', 6 | styleUrls: ['./socialboard.component.scss'] 7 | }) 8 | export class SocialboardComponent implements OnInit { 9 | 10 | following; 11 | 12 | constructor() { } 13 | 14 | ngOnInit() { 15 | } 16 | 17 | } 18 | -------------------------------------------------------------------------------- /src/app/routes/elements/iconsweather/iconsweather.component.spec.ts: -------------------------------------------------------------------------------- 1 | /* tslint:disable:no-unused-variable */ 2 | 3 | import { TestBed, async } from '@angular/core/testing'; 4 | import { IconsweatherComponent } from './iconsweather.component'; 5 | 6 | describe('Component: Iconsweather', () => { 7 | it('should create an instance', () => { 8 | let component = new IconsweatherComponent(); 9 | expect(component).toBeTruthy(); 10 | }); 11 | }); 12 | -------------------------------------------------------------------------------- /src/app/routes/home/home/home.component.scss: -------------------------------------------------------------------------------- 1 | @import '../../../shared/styles/app/variables.scss'; 2 | @import '../../../shared/styles/app/media-queries.scss'; 3 | 4 | .home-container { 5 | margin: 0 auto; 6 | max-width: $container-md; 7 | 8 | .home-logo { 9 | width: 240px; 10 | } 11 | 12 | .home-text { 13 | @media only screen and (max-width: $mq-tablet) { 14 | text-align: center; 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/assets/server/chart/donut.json: -------------------------------------------------------------------------------- 1 | [ { "color" : "#39C558", 2 | "data" : 60, 3 | "label" : "Coffee" 4 | }, 5 | { "color" : "#00b4ff", 6 | "data" : 90, 7 | "label" : "CSS" 8 | }, 9 | { "color" : "#FFBE41", 10 | "data" : 50, 11 | "label" : "LESS" 12 | }, 13 | { "color" : "#ff3e43", 14 | "data" : 80, 15 | "label" : "Jade" 16 | }, 17 | { "color" : "#937fc7", 18 | "data" : 116, 19 | "label" : "AngularJS" 20 | } 21 | ] -------------------------------------------------------------------------------- /src/app/shared/styles/app/typo.scss: -------------------------------------------------------------------------------- 1 | /* ======================================================================== 2 | Component: typo 3 | ========================================================================== */ 4 | 5 | @import url(//fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,600,400italic); 6 | 7 | body { 8 | font-family: "Source Sans Pro", sans-serif; 9 | color: #656565; 10 | } 11 | 12 | h1, h2, h3, h4 { 13 | font-weight: bold; 14 | } 15 | -------------------------------------------------------------------------------- /src/app/shared/styles/bootstrap/bootstrap/mixins/_nav-vertical-align.scss: -------------------------------------------------------------------------------- 1 | // Navbar vertical align 2 | // 3 | // Vertically center elements in the navbar. 4 | // Example: an element has a height of 30px, so write out `.navbar-vertical-align(30px);` to calculate the appropriate top margin. 5 | 6 | @mixin navbar-vertical-align($element-height) { 7 | margin-top: (($navbar-height - $element-height) / 2); 8 | margin-bottom: (($navbar-height - $element-height) / 2); 9 | } 10 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compileOnSave": false, 3 | "compilerOptions": { 4 | "outDir": "./dist/out-tsc", 5 | "baseUrl": "src", 6 | "sourceMap": true, 7 | "declaration": false, 8 | "moduleResolution": "node", 9 | "emitDecoratorMetadata": true, 10 | "experimentalDecorators": true, 11 | "target": "es5", 12 | "typeRoots": [ 13 | "node_modules/@types" 14 | ], 15 | "lib": [ 16 | "es2016", 17 | "dom" 18 | ] 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/app/layout/footer/footer.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | import { SettingsService } from '../../core/settings/settings.service'; 3 | 4 | @Component({ 5 | selector: '[app-footer]', 6 | templateUrl: './footer.component.html', 7 | styleUrls: ['./footer.component.scss'] 8 | }) 9 | export class FooterComponent implements OnInit { 10 | 11 | constructor(public settings: SettingsService) { } 12 | 13 | ngOnInit() { 14 | 15 | } 16 | 17 | } 18 | -------------------------------------------------------------------------------- /src/app/routes/pages/error404/error404.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | import { SettingsService } from '../../../core/settings/settings.service'; 3 | 4 | @Component({ 5 | selector: 'app-error404', 6 | templateUrl: './error404.component.html', 7 | styleUrls: ['./error404.component.scss'] 8 | }) 9 | export class Error404Component implements OnInit { 10 | 11 | constructor(public settings: SettingsService) { } 12 | 13 | ngOnInit() { 14 | } 15 | 16 | } 17 | -------------------------------------------------------------------------------- /src/app/routes/pages/error500/error500.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | import { SettingsService } from '../../../core/settings/settings.service'; 3 | 4 | @Component({ 5 | selector: 'app-error500', 6 | templateUrl: './error500.component.html', 7 | styleUrls: ['./error500.component.scss'] 8 | }) 9 | export class Error500Component implements OnInit { 10 | 11 | constructor(public settings: SettingsService) { } 12 | 13 | ngOnInit() { 14 | } 15 | 16 | } 17 | -------------------------------------------------------------------------------- /src/app/core/menu/menu.service.spec.ts: -------------------------------------------------------------------------------- 1 | /* tslint:disable:no-unused-variable */ 2 | 3 | import { TestBed, async, inject } from '@angular/core/testing'; 4 | import { MenuService } from './menu.service'; 5 | 6 | describe('Service: Menu', () => { 7 | beforeEach(() => { 8 | TestBed.configureTestingModule({ 9 | providers: [MenuService] 10 | }); 11 | }); 12 | 13 | it('should ...', inject([MenuService], (service: MenuService) => { 14 | expect(service).toBeTruthy(); 15 | })); 16 | }); 17 | -------------------------------------------------------------------------------- /src/assets/server/chart/area.json: -------------------------------------------------------------------------------- 1 | [{ 2 | "label": "Uniques", 3 | "color": "#aad874", 4 | "data": [ 5 | ["Mar", 50], 6 | ["Apr", 84], 7 | ["May", 52], 8 | ["Jun", 88], 9 | ["Jul", 69], 10 | ["Aug", 92], 11 | ["Sep", 58] 12 | ] 13 | }, { 14 | "label": "Recurrent", 15 | "color": "#7dc7df", 16 | "data": [ 17 | ["Mar", 13], 18 | ["Apr", 44], 19 | ["May", 44], 20 | ["Jun", 27], 21 | ["Jul", 38], 22 | ["Aug", 11], 23 | ["Sep", 39] 24 | ] 25 | }] -------------------------------------------------------------------------------- /src/app/routes/home/home.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from '@angular/core'; 2 | import { HomeComponent } from './home/home.component'; 3 | import { Routes, RouterModule } from '@angular/router'; 4 | 5 | const routes: Routes = [ 6 | { path: '', component: HomeComponent }, 7 | ]; 8 | 9 | @NgModule({ 10 | imports: [ 11 | RouterModule.forChild(routes) 12 | ], 13 | declarations: [HomeComponent], 14 | exports: [ 15 | RouterModule 16 | ] 17 | }) 18 | export class HomeModule { } -------------------------------------------------------------------------------- /src/assets/server/chart/spline.json: -------------------------------------------------------------------------------- 1 | [{ 2 | "label": "Uniques", 3 | "color": "#768294", 4 | "data": [ 5 | ["Mar", 70], 6 | ["Apr", 85], 7 | ["May", 59], 8 | ["Jun", 93], 9 | ["Jul", 66], 10 | ["Aug", 86], 11 | ["Sep", 60] 12 | ] 13 | }, { 14 | "label": "Recurrent", 15 | "color": "#1f92fe", 16 | "data": [ 17 | ["Mar", 21], 18 | ["Apr", 12], 19 | ["May", 27], 20 | ["Jun", 24], 21 | ["Jul", 16], 22 | ["Aug", 39], 23 | ["Sep", 15] 24 | ] 25 | }] -------------------------------------------------------------------------------- /src/app/layout/layout.component.h.html: -------------------------------------------------------------------------------- 1 |
2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 |
10 | 11 |
12 |
13 | 14 | 15 |
-------------------------------------------------------------------------------- /src/app/core/themes/themes.service.spec.ts: -------------------------------------------------------------------------------- 1 | /* tslint:disable:no-unused-variable */ 2 | 3 | import { TestBed, async, inject } from '@angular/core/testing'; 4 | import { ThemesService } from './themes.service'; 5 | 6 | describe('Service: Themes', () => { 7 | beforeEach(() => { 8 | TestBed.configureTestingModule({ 9 | providers: [ThemesService] 10 | }); 11 | }); 12 | 13 | it('should ...', inject([ThemesService], (service: ThemesService) => { 14 | expect(service).toBeTruthy(); 15 | })); 16 | }); 17 | -------------------------------------------------------------------------------- /src/app/routes/replymanager/replymanager/replymanager.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | import { FormControl } from '@angular/forms'; 3 | 4 | @Component({ 5 | selector: 'app-replymanager', 6 | templateUrl: './replymanager.component.html', 7 | styleUrls: ['./replymanager.component.scss'] 8 | }) 9 | export class ReplyManagerComponent implements OnInit { 10 | chkSwitch: number; 11 | constructor() { this.chkSwitch = 0;} 12 | 13 | ngOnInit() { 14 | } 15 | 16 | } 17 | -------------------------------------------------------------------------------- /src/app/routes/extras/profile/profile.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-profile', 5 | templateUrl: './profile.component.html', 6 | styleUrls: ['./profile.component.scss'] 7 | }) 8 | export class ProfileComponent implements OnInit { 9 | 10 | lat: number = 33.790807; 11 | lng: number = -117.835734; 12 | zoom: number = 14; 13 | scrollwheel = false; 14 | 15 | constructor() { } 16 | 17 | ngOnInit() { 18 | } 19 | 20 | } 21 | -------------------------------------------------------------------------------- /src/app/core/settings/settings.service.spec.ts: -------------------------------------------------------------------------------- 1 | /* tslint:disable:no-unused-variable */ 2 | 3 | import { TestBed, async, inject } from '@angular/core/testing'; 4 | import { SettingsService } from './settings.service'; 5 | 6 | describe('Service: Settings', () => { 7 | beforeEach(() => { 8 | TestBed.configureTestingModule({ 9 | providers: [SettingsService] 10 | }); 11 | }); 12 | 13 | it('should ...', inject([SettingsService], (service: SettingsService) => { 14 | expect(service).toBeTruthy(); 15 | })); 16 | }); 17 | -------------------------------------------------------------------------------- /src/app/routes/ecommerce/checkout/checkout.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-checkout', 5 | templateUrl: './checkout.component.html', 6 | styleUrls: ['./checkout.component.scss'] 7 | }) 8 | export class CheckoutComponent implements OnInit { 9 | 10 | step1 = true; 11 | step2 = false; 12 | step3 = false; 13 | step4 = false; 14 | step5 = false; 15 | step6 = false; 16 | 17 | constructor() { } 18 | 19 | ngOnInit() { } 20 | 21 | } 22 | -------------------------------------------------------------------------------- /src/app/routes/extras/faq/faq.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-faq', 5 | templateUrl: './faq.component.html', 6 | styleUrls: ['./faq.component.scss'] 7 | }) 8 | export class FaqComponent implements OnInit { 9 | 10 | isAccOpen1 = false; 11 | isAccOpen2 = false; 12 | isAccOpen3 = false; 13 | isAccOpen4 = false; 14 | isAccOpen5 = false; 15 | isAccOpen6 = false; 16 | 17 | constructor() { } 18 | 19 | ngOnInit() { } 20 | 21 | } 22 | -------------------------------------------------------------------------------- /src/main.ts: -------------------------------------------------------------------------------- 1 | import './vendor.ts'; 2 | import { enableProdMode } from '@angular/core'; 3 | import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; 4 | 5 | import { AppModule } from './app/app.module'; 6 | import { environment } from './environments/environment'; 7 | 8 | if (environment.production) { 9 | enableProdMode(); 10 | } 11 | 12 | let p = platformBrowserDynamic().bootstrapModule(AppModule); 13 | p.then(() => { (window).appBootstrap && (window).appBootstrap(); }) 14 | // .catch(err => console.error(err)); 15 | -------------------------------------------------------------------------------- /src/app/layout/sidebar/userblock/userblock.service.spec.ts: -------------------------------------------------------------------------------- 1 | /* tslint:disable:no-unused-variable */ 2 | 3 | import { TestBed, async, inject } from '@angular/core/testing'; 4 | import { UserblockService } from './userblock.service'; 5 | 6 | describe('Service: Userblock', () => { 7 | beforeEach(() => { 8 | TestBed.configureTestingModule({ 9 | providers: [UserblockService] 10 | }); 11 | }); 12 | 13 | it('should ...', inject([UserblockService], (service: UserblockService) => { 14 | expect(service).toBeTruthy(); 15 | })); 16 | }); 17 | -------------------------------------------------------------------------------- /src/assets/i18n/en.json: -------------------------------------------------------------------------------- 1 | { 2 | "header": { 3 | "search": { 4 | "PLACEHOLDER": "Type and hit enter.." 5 | } 6 | }, 7 | "offsidebar": { 8 | "setting": { 9 | "SETTINGS": "Settings" 10 | } 11 | }, 12 | "sidebar": { 13 | "WELCOME": "Welcome", 14 | "heading": { 15 | "HEADER": "Menu Heading" 16 | }, 17 | "nav": { 18 | "SINGLEVIEW": "Single View" 19 | } 20 | }, 21 | "dashboard": { 22 | "WELCOME": "Welcome" 23 | } 24 | } -------------------------------------------------------------------------------- /src/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Ng2angle 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 |
16 |
17 |
18 |
19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /src/app/shared/directives/scrollable/scrollable.directive.ts: -------------------------------------------------------------------------------- 1 | import { OnInit, Directive, Input, ElementRef } from '@angular/core'; 2 | declare var $: any; 3 | 4 | @Directive({ 5 | selector: 'scrollable' 6 | }) 7 | export class ScrollableDirective implements OnInit { 8 | 9 | @Input() height: number; 10 | defaultHeight = 250; 11 | 12 | constructor(public element: ElementRef) { } 13 | 14 | ngOnInit() { 15 | $(this.element.nativeElement).slimScroll({ 16 | height: (this.height || this.defaultHeight) 17 | }); 18 | } 19 | 20 | } 21 | -------------------------------------------------------------------------------- /src/app/layout/layout.component.html: -------------------------------------------------------------------------------- 1 |
2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 |
12 | 13 |
14 |
15 | 16 |
17 |
-------------------------------------------------------------------------------- /src/app/routes/extras/votelinks/votelinks.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-votelinks', 5 | templateUrl: './votelinks.component.html', 6 | styleUrls: ['./votelinks.component.scss'] 7 | }) 8 | export class VotelinksComponent implements OnInit { 9 | 10 | vCount1 = 10; 11 | vCount2 = 20; 12 | vCount3 = 27; 13 | vCount4 = 10; 14 | vCount5 = 5; 15 | vCount6 = 10; 16 | vCount7 = -1; 17 | vCount8 = 300; 18 | 19 | constructor() { } 20 | 21 | ngOnInit() { } 22 | 23 | } 24 | -------------------------------------------------------------------------------- /src/assets/codemirror/mode/tiki/tiki.css: -------------------------------------------------------------------------------- 1 | .cm-tw-syntaxerror { 2 | color: #FFF; 3 | background-color: #900; 4 | } 5 | 6 | .cm-tw-deleted { 7 | text-decoration: line-through; 8 | } 9 | 10 | .cm-tw-header5 { 11 | font-weight: bold; 12 | } 13 | .cm-tw-listitem:first-child { /*Added first child to fix duplicate padding when highlighting*/ 14 | padding-left: 10px; 15 | } 16 | 17 | .cm-tw-box { 18 | border-top-width: 0px !important; 19 | border-style: solid; 20 | border-width: 1px; 21 | border-color: inherit; 22 | } 23 | 24 | .cm-tw-underline { 25 | text-decoration: underline; 26 | } -------------------------------------------------------------------------------- /src/assets/i18n/es_AR.json: -------------------------------------------------------------------------------- 1 | { 2 | "header": { 3 | "search": { 4 | "PLACEHOLDER": "Escribe y presiona enter.." 5 | } 6 | }, 7 | "offsidebar": { 8 | "setting": { 9 | "SETTINGS": "Configuración" 10 | } 11 | }, 12 | "sidebar": { 13 | "WELCOME": "Bienvenido", 14 | "heading": { 15 | "HEADER": "Cabecera Menu" 16 | }, 17 | "nav": { 18 | "SINGLEVIEW": "Vista Simple" 19 | } 20 | }, 21 | "dashboard": { 22 | "WELCOME": "Bienvenido" 23 | } 24 | } -------------------------------------------------------------------------------- /src/app/routes/tables/extended/extended.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | import { ColorsService } from '../../../shared/colors/colors.service'; 3 | 4 | @Component({ 5 | selector: 'app-extended', 6 | templateUrl: './extended.component.html', 7 | styleUrls: ['./extended.component.scss'] 8 | }) 9 | export class ExtendedComponent implements OnInit { 10 | 11 | constructor(public colors: ColorsService) { } 12 | 13 | ngOnInit() { 14 | } 15 | 16 | colorByName(name) { 17 | return this.colors.byName(name); 18 | } 19 | 20 | } 21 | -------------------------------------------------------------------------------- /src/app/layout/header/navsearch/navsearch.component.html: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | -------------------------------------------------------------------------------- /src/app/layout/sidebar/userblock/userblock.service.ts: -------------------------------------------------------------------------------- 1 | import { Injectable } from '@angular/core'; 2 | 3 | @Injectable() 4 | export class UserblockService { 5 | public userBlockVisible: boolean; 6 | constructor() { 7 | // initially visible 8 | this.userBlockVisible = true; 9 | } 10 | 11 | getVisibility() { 12 | return this.userBlockVisible; 13 | } 14 | 15 | setVisibility(stat = true) { 16 | this.userBlockVisible = stat; 17 | } 18 | 19 | toggleVisibility() { 20 | this.userBlockVisible = !this.userBlockVisible; 21 | } 22 | 23 | } 24 | -------------------------------------------------------------------------------- /src/app/shared/styles/bootstrap/bootstrap/mixins/_reset-text.scss: -------------------------------------------------------------------------------- 1 | @mixin reset-text() { 2 | font-family: $font-family-base; 3 | // We deliberately do NOT reset font-size. 4 | font-style: normal; 5 | font-weight: normal; 6 | letter-spacing: normal; 7 | line-break: auto; 8 | line-height: $line-height-base; 9 | text-align: left; // Fallback for where `start` is not supported 10 | text-align: start; 11 | text-decoration: none; 12 | text-shadow: none; 13 | text-transform: none; 14 | white-space: normal; 15 | word-break: normal; 16 | word-spacing: normal; 17 | word-wrap: normal; 18 | } 19 | -------------------------------------------------------------------------------- /src/app/shared/styles/bootstrap/bootstrap/mixins/_border-radius.scss: -------------------------------------------------------------------------------- 1 | // Single side border-radius 2 | 3 | @mixin border-top-radius($radius) { 4 | border-top-right-radius: $radius; 5 | border-top-left-radius: $radius; 6 | } 7 | @mixin border-right-radius($radius) { 8 | border-bottom-right-radius: $radius; 9 | border-top-right-radius: $radius; 10 | } 11 | @mixin border-bottom-radius($radius) { 12 | border-bottom-right-radius: $radius; 13 | border-bottom-left-radius: $radius; 14 | } 15 | @mixin border-left-radius($radius) { 16 | border-bottom-left-radius: $radius; 17 | border-top-left-radius: $radius; 18 | } 19 | -------------------------------------------------------------------------------- /src/app/routes/pages/maintenance/maintenance.component.html: -------------------------------------------------------------------------------- 1 |
2 |
3 |
4 |

5 | 6 | 7 |

8 |
SITE IS UNDER MAINTENANCE
9 |

We'll back online shortly!

10 |
11 |
12 |
13 | -------------------------------------------------------------------------------- /src/app/layout/sidebar/userblock/userblock.component.html: -------------------------------------------------------------------------------- 1 |
2 | 3 |
4 |
5 | Avatar 6 |
7 |
8 |
9 | 10 |
11 | {{ 'sidebar.WELCOME' | translate }} John 12 | Programmer 13 |
14 |
15 | -------------------------------------------------------------------------------- /src/app/shared/styles/app/file-upload.scss: -------------------------------------------------------------------------------- 1 | /* ======================================================================== 2 | Component: file-upload 3 | ========================================================================== */ 4 | 5 | .file-upload { 6 | display: block; 7 | overflow: hidden; 8 | position: relative; 9 | 10 | [type=file] { 11 | cursor: pointer; 12 | display: block; 13 | filter: alpha(opacity=0); 14 | min-height: 100%; 15 | min-width: 100%; 16 | opacity: 0; 17 | position: absolute; 18 | right: 0; 19 | text-align: right; 20 | top: 0; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/app/routes/extras/contacts/contacts.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-contacts', 5 | templateUrl: './contacts.component.html', 6 | styleUrls: ['./contacts.component.scss'] 7 | }) 8 | export class ContactsComponent implements OnInit { 9 | 10 | favContact1 = false; 11 | favContact2 = true; 12 | favContact3 = false; 13 | favContact4 = false; 14 | favContact5 = true; 15 | favContact6 = true; 16 | favContact7 = false; 17 | favContact8 = false; 18 | favContact9 = false; 19 | 20 | constructor() { } 21 | 22 | ngOnInit() { 23 | } 24 | 25 | } 26 | -------------------------------------------------------------------------------- /src/app/shared/styles/bootstrap/bootstrap/mixins/_pagination.scss: -------------------------------------------------------------------------------- 1 | // Pagination 2 | 3 | @mixin pagination-size($padding-vertical, $padding-horizontal, $font-size, $line-height, $border-radius) { 4 | > li { 5 | > a, 6 | > span { 7 | padding: $padding-vertical $padding-horizontal; 8 | font-size: $font-size; 9 | line-height: $line-height; 10 | } 11 | &:first-child { 12 | > a, 13 | > span { 14 | @include border-left-radius($border-radius); 15 | } 16 | } 17 | &:last-child { 18 | > a, 19 | > span { 20 | @include border-right-radius($border-radius); 21 | } 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /src/app/shared/styles/bootstrap/bootstrap/mixins/_responsive-visibility.scss: -------------------------------------------------------------------------------- 1 | // Responsive utilities 2 | 3 | // 4 | // More easily include all the states for responsive-utilities.less. 5 | // [converter] $parent hack 6 | @mixin responsive-visibility($parent) { 7 | #{$parent} { 8 | display: block !important; 9 | } 10 | table#{$parent} { display: table !important; } 11 | tr#{$parent} { display: table-row !important; } 12 | th#{$parent}, 13 | td#{$parent} { display: table-cell !important; } 14 | } 15 | 16 | // [converter] $parent hack 17 | @mixin responsive-invisibility($parent) { 18 | #{$parent} { 19 | display: none !important; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/app/shared/styles/bootstrap/bootstrap/mixins/_panels.scss: -------------------------------------------------------------------------------- 1 | // Panels 2 | 3 | @mixin panel-variant($border, $heading-text-color, $heading-bg-color, $heading-border) { 4 | border-color: $border; 5 | 6 | & > .panel-heading { 7 | color: $heading-text-color; 8 | background-color: $heading-bg-color; 9 | border-color: $heading-border; 10 | 11 | + .panel-collapse > .panel-body { 12 | border-top-color: $border; 13 | } 14 | .badge { 15 | color: $heading-bg-color; 16 | background-color: $heading-text-color; 17 | } 18 | } 19 | & > .panel-footer { 20 | + .panel-collapse > .panel-body { 21 | border-bottom-color: $border; 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /src/app/shared/styles/bootstrap/bootstrap/_wells.scss: -------------------------------------------------------------------------------- 1 | // 2 | // Wells 3 | // -------------------------------------------------- 4 | 5 | 6 | // Base class 7 | .well { 8 | min-height: 20px; 9 | padding: 19px; 10 | margin-bottom: 20px; 11 | background-color: $well-bg; 12 | border: 1px solid $well-border; 13 | border-radius: $border-radius-base; 14 | @include box-shadow(inset 0 1px 1px rgba(0,0,0,.05)); 15 | blockquote { 16 | border-color: #ddd; 17 | border-color: rgba(0,0,0,.15); 18 | } 19 | } 20 | 21 | // Sizes 22 | .well-lg { 23 | padding: 24px; 24 | border-radius: $border-radius-large; 25 | } 26 | .well-sm { 27 | padding: 9px; 28 | border-radius: $border-radius-small; 29 | } 30 | -------------------------------------------------------------------------------- /src/vendor.ts: -------------------------------------------------------------------------------- 1 | 2 | import './modernizr.js'; // 'npm run modernizr' to create this file 3 | 4 | import '../node_modules/ika.jvectormap/jquery-jvectormap-1.2.2.min.js'; 5 | import '../node_modules/ika.jvectormap/jquery-jvectormap-world-mill-en.js'; 6 | import '../node_modules/ika.jvectormap/jquery-jvectormap-us-mill-en.js'; 7 | 8 | import '../node_modules/jquery-slimscroll/jquery.slimscroll.js'; 9 | 10 | import '../node_modules/codemirror/lib/codemirror.js'; 11 | import '../node_modules/codemirror/mode/javascript/javascript.js'; 12 | import '../node_modules/codemirror/mode/xml/xml.js'; 13 | import '../node_modules/codemirror/mode/htmlmixed/htmlmixed.js'; 14 | import '../node_modules/codemirror/mode/css/css.js'; 15 | -------------------------------------------------------------------------------- /src/assets/server/chart/splinev2.json: -------------------------------------------------------------------------------- 1 | [{ 2 | "label": "Hours", 3 | "color": "#23b7e5", 4 | "data": [ 5 | ["Jan", 70], 6 | ["Feb", 20], 7 | ["Mar", 70], 8 | ["Apr", 85], 9 | ["May", 59], 10 | ["Jun", 93], 11 | ["Jul", 66], 12 | ["Aug", 86], 13 | ["Sep", 60], 14 | ["Oct", 60], 15 | ["Nov", 12], 16 | ["Dec", 50] 17 | ] 18 | }, { 19 | "label": "Commits", 20 | "color": "#7266ba", 21 | "data": [ 22 | ["Jan", 20], 23 | ["Feb", 70], 24 | ["Mar", 30], 25 | ["Apr", 50], 26 | ["May", 85], 27 | ["Jun", 43], 28 | ["Jul", 96], 29 | ["Aug", 36], 30 | ["Sep", 80], 31 | ["Oct", 10], 32 | ["Nov", 72], 33 | ["Dec", 31] 34 | ] 35 | }] -------------------------------------------------------------------------------- /src/app/layout/header/navsearch/navsearch.component.spec.ts: -------------------------------------------------------------------------------- 1 | // /* tslint:disable:no-unused-variable */ 2 | 3 | // import { TestBed, async, inject } from '@angular/core/testing'; 4 | // import { NavsearchComponent } from './navsearch.component'; 5 | 6 | // import { ElementRef } from '@angular/core'; 7 | 8 | // describe('Component: Navsearch', () => { 9 | 10 | // beforeEach(() => { 11 | // TestBed.configureTestingModule({ 12 | // providers: [ElementRef] 13 | // }).compileComponents(); 14 | // }); 15 | 16 | // it('should create an instance', () => { 17 | // let component = new NavsearchComponent(new ElementRef({})); 18 | // expect(component).toBeTruthy(); 19 | // }); 20 | // }); 21 | -------------------------------------------------------------------------------- /src/app/shared/styles/bootstrap/bootstrap/mixins/_hide-text.scss: -------------------------------------------------------------------------------- 1 | // CSS image replacement 2 | // 3 | // Heads up! v3 launched with only `.hide-text()`, but per our pattern for 4 | // mixins being reused as classes with the same name, this doesn't hold up. As 5 | // of v3.0.1 we have added `.text-hide()` and deprecated `.hide-text()`. 6 | // 7 | // Source: https://github.com/h5bp/html5-boilerplate/commit/aa0396eae757 8 | 9 | // Deprecated as of v3.0.1 (has been removed in v4) 10 | @mixin hide-text() { 11 | font: 0/0 a; 12 | color: transparent; 13 | text-shadow: none; 14 | background-color: transparent; 15 | border: 0; 16 | } 17 | 18 | // New mixin to use as of v3.0.1 19 | @mixin text-hide() { 20 | @include hide-text; 21 | } 22 | -------------------------------------------------------------------------------- /src/assets/codemirror/filetree.json: -------------------------------------------------------------------------------- 1 | [{ 2 | "name": "ProjectX", 3 | "expanded": true, 4 | "children": [ 5 | { 6 | "name": "css", 7 | "expanded": true, 8 | "children": [{ 9 | "name": "style.css", 10 | "path": "source/css/style.css", 11 | "hasChildren": false 12 | }] 13 | }, { 14 | "name": "ts", 15 | "children": [{ 16 | "name": "script.ts", 17 | "path": "source/ts/script.ts", 18 | "hasChildren": false 19 | }] 20 | }, { 21 | "name": "index.html", 22 | "path": "source/index.html" 23 | } 24 | ] 25 | }] -------------------------------------------------------------------------------- /src/app/layout/sidebar/userblock/userblock.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | 3 | import { UserblockService } from './userblock.service'; 4 | 5 | @Component({ 6 | selector: 'app-userblock', 7 | templateUrl: './userblock.component.html', 8 | styleUrls: ['./userblock.component.scss'] 9 | }) 10 | export class UserblockComponent implements OnInit { 11 | user: any; 12 | constructor(public userblockService: UserblockService) { 13 | 14 | this.user = { 15 | picture: 'assets/img/user/01.jpg' 16 | }; 17 | } 18 | 19 | ngOnInit() { 20 | } 21 | 22 | userBlockIsVisible() { 23 | return this.userblockService.getVisibility(); 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /src/app/layout/footer/footer.component.spec.ts: -------------------------------------------------------------------------------- 1 | /* tslint:disable:no-unused-variable */ 2 | 3 | import { TestBed, async, inject } from '@angular/core/testing'; 4 | import { FooterComponent } from './footer.component'; 5 | 6 | import { SettingsService } from '../../core/settings/settings.service'; 7 | 8 | describe('Component: Footer', () => { 9 | 10 | beforeEach(() => { 11 | TestBed.configureTestingModule({ 12 | providers: [SettingsService] 13 | }).compileComponents(); 14 | }); 15 | 16 | it('should create an instance', async(inject([SettingsService], (settingsService) => { 17 | let component = new FooterComponent(settingsService); 18 | expect(component).toBeTruthy(); 19 | }))); 20 | }); 21 | -------------------------------------------------------------------------------- /src/app/layout/sidebar/userblock/userblock.component.spec.ts: -------------------------------------------------------------------------------- 1 | /* tslint:disable:no-unused-variable */ 2 | 3 | import { TestBed, async, inject } from '@angular/core/testing'; 4 | 5 | import { UserblockComponent } from './userblock.component'; 6 | import { UserblockService } from './userblock.service'; 7 | 8 | describe('Component: Userblock', () => { 9 | 10 | beforeEach(() => { 11 | TestBed.configureTestingModule({ 12 | providers: [UserblockService] 13 | }).compileComponents(); 14 | }); 15 | 16 | it('should create an instance', async(inject([UserblockService], (userBlockService) => { 17 | let component = new UserblockComponent(userBlockService); 18 | expect(component).toBeTruthy(); 19 | }))); 20 | }); 21 | -------------------------------------------------------------------------------- /src/app/shared/styles/bootstrap/bootstrap/_responsive-embed.scss: -------------------------------------------------------------------------------- 1 | // Embeds responsive 2 | // 3 | // Credit: Nicolas Gallagher and SUIT CSS. 4 | 5 | .embed-responsive { 6 | position: relative; 7 | display: block; 8 | height: 0; 9 | padding: 0; 10 | overflow: hidden; 11 | 12 | .embed-responsive-item, 13 | iframe, 14 | embed, 15 | object, 16 | video { 17 | position: absolute; 18 | top: 0; 19 | left: 0; 20 | bottom: 0; 21 | height: 100%; 22 | width: 100%; 23 | border: 0; 24 | } 25 | } 26 | 27 | // Modifier class for 16:9 aspect ratio 28 | .embed-responsive-16by9 { 29 | padding-bottom: 56.25%; 30 | } 31 | 32 | // Modifier class for 4:3 aspect ratio 33 | .embed-responsive-4by3 { 34 | padding-bottom: 75%; 35 | } 36 | -------------------------------------------------------------------------------- /src/app/shared/styles/bootstrap/bootstrap/mixins/_clearfix.scss: -------------------------------------------------------------------------------- 1 | // Clearfix 2 | // 3 | // For modern browsers 4 | // 1. The space content is one way to avoid an Opera bug when the 5 | // contenteditable attribute is included anywhere else in the document. 6 | // Otherwise it causes space to appear at the top and bottom of elements 7 | // that are clearfixed. 8 | // 2. The use of `table` rather than `block` is only necessary if using 9 | // `:before` to contain the top-margins of child elements. 10 | // 11 | // Source: http://nicolasgallagher.com/micro-clearfix-hack/ 12 | 13 | @mixin clearfix() { 14 | &:before, 15 | &:after { 16 | content: " "; // 1 17 | display: table; // 2 18 | } 19 | &:after { 20 | clear: both; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/assets/codemirror/theme/neat.css: -------------------------------------------------------------------------------- 1 | .cm-s-neat span.cm-comment { color: #a86; } 2 | .cm-s-neat span.cm-keyword { line-height: 1em; font-weight: bold; color: blue; } 3 | .cm-s-neat span.cm-string { color: #a22; } 4 | .cm-s-neat span.cm-builtin { line-height: 1em; font-weight: bold; color: #077; } 5 | .cm-s-neat span.cm-special { line-height: 1em; font-weight: bold; color: #0aa; } 6 | .cm-s-neat span.cm-variable { color: black; } 7 | .cm-s-neat span.cm-number, .cm-s-neat span.cm-atom { color: #3a3; } 8 | .cm-s-neat span.cm-meta { color: #555; } 9 | .cm-s-neat span.cm-link { color: #3a3; } 10 | 11 | .cm-s-neat .CodeMirror-activeline-background { background: #e8f2ff; } 12 | .cm-s-neat .CodeMirror-matchingbracket { outline:1px solid grey; color:black !important; } 13 | -------------------------------------------------------------------------------- /src/app/shared/directives/now/now.directive.ts: -------------------------------------------------------------------------------- 1 | import { OnInit, OnDestroy, Directive, Input, ElementRef } from '@angular/core'; 2 | import * as moment from 'moment'; 3 | 4 | @Directive({ 5 | selector: '[now]' 6 | }) 7 | export class NowDirective implements OnInit, OnDestroy { 8 | 9 | @Input() format; 10 | intervalId; 11 | 12 | constructor(public element: ElementRef) { } 13 | 14 | ngOnInit() { 15 | this.updateTime(); 16 | this.intervalId = setInterval(this.updateTime.bind(this), 1000); 17 | } 18 | 19 | updateTime() { 20 | let dt = moment().format(this.format); 21 | this.element.nativeElement.innerHTML = dt; 22 | } 23 | 24 | ngOnDestroy() { 25 | clearInterval(this.intervalId); 26 | } 27 | 28 | } 29 | -------------------------------------------------------------------------------- /src/app/routes/account/account.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from '@angular/core'; 2 | import { Routes, RouterModule } from '@angular/router'; 3 | import { AgmCoreModule } from '@agm/core'; 4 | 5 | import { SharedModule } from '../../shared/shared.module'; 6 | import { AccountComponent } from './account/account.component'; 7 | 8 | const routes: Routes = [ 9 | { path: '', component: AccountComponent } 10 | ]; 11 | 12 | @NgModule({ 13 | imports: [ 14 | SharedModule, 15 | RouterModule.forChild(routes), 16 | AgmCoreModule.forRoot({ 17 | apiKey: 'AIzaSyBNs42Rt_CyxAqdbIBK0a5Ut83QiauESPA' 18 | }) 19 | ], 20 | declarations: [AccountComponent], 21 | exports: [ 22 | RouterModule 23 | ] 24 | }) 25 | export class AccountModule { } 26 | -------------------------------------------------------------------------------- /src/app/routes/widgets/widgets.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from '@angular/core'; 2 | import { Routes, RouterModule } from '@angular/router'; 3 | import { AgmCoreModule } from '@agm/core'; 4 | 5 | import { SharedModule } from '../../shared/shared.module'; 6 | import { WidgetsComponent } from './widgets/widgets.component'; 7 | 8 | const routes: Routes = [ 9 | { path: '', component: WidgetsComponent } 10 | ]; 11 | 12 | @NgModule({ 13 | imports: [ 14 | SharedModule, 15 | RouterModule.forChild(routes), 16 | AgmCoreModule.forRoot({ 17 | apiKey: 'AIzaSyBNs42Rt_CyxAqdbIBK0a5Ut83QiauESPA' 18 | }) 19 | ], 20 | declarations: [WidgetsComponent], 21 | exports: [ 22 | RouterModule 23 | ] 24 | }) 25 | export class WidgetsModule { } 26 | -------------------------------------------------------------------------------- /src/assets/server/chart/splinev3.json: -------------------------------------------------------------------------------- 1 | [{ 2 | "label": "Home", 3 | "color": "#1ba3cd", 4 | "data": [ 5 | ["1", 38], 6 | ["2", 40], 7 | ["3", 42], 8 | ["4", 48], 9 | ["5", 50], 10 | ["6", 70], 11 | ["7", 145], 12 | ["8", 70], 13 | ["9", 59], 14 | ["10", 48], 15 | ["11", 38], 16 | ["12", 29], 17 | ["13", 30], 18 | ["14", 22], 19 | ["15", 28] 20 | ] 21 | }, { 22 | "label": "Overall", 23 | "color": "#3a3f51", 24 | "data": [ 25 | ["1", 16], 26 | ["2", 18], 27 | ["3", 17], 28 | ["4", 16], 29 | ["5", 30], 30 | ["6", 110], 31 | ["7", 19], 32 | ["8", 18], 33 | ["9", 110], 34 | ["10", 19], 35 | ["11", 16], 36 | ["12", 10], 37 | ["13", 20], 38 | ["14", 10], 39 | ["15", 20] 40 | ] 41 | }] -------------------------------------------------------------------------------- /src/app/routes/elements/sweetalert/sweetalert.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { SweetalertComponent } from './sweetalert.component'; 4 | 5 | describe('SweetalertComponent', () => { 6 | let component: SweetalertComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [ SweetalertComponent ] 12 | }) 13 | .compileComponents(); 14 | })); 15 | 16 | beforeEach(() => { 17 | fixture = TestBed.createComponent(SweetalertComponent); 18 | component = fixture.componentInstance; 19 | fixture.detectChanges(); 20 | }); 21 | 22 | it('should create', () => { 23 | expect(component).toBeTruthy(); 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /src/app/routes/extras/forum/forumtopics/forumtopics.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit, OnDestroy } from '@angular/core'; 2 | import { ActivatedRoute } from '@angular/router'; 3 | 4 | @Component({ 5 | selector: 'app-forumtopics', 6 | templateUrl: './forumtopics.component.html', 7 | styleUrls: ['./forumtopics.component.scss'] 8 | }) 9 | export class ForumtopicsComponent implements OnInit, OnDestroy { 10 | 11 | catid: number; 12 | private sub: any; 13 | 14 | constructor(public route: ActivatedRoute) { } 15 | 16 | ngOnInit() { 17 | this.sub = this.route.params.subscribe(params => { 18 | this.catid = +params['catid']; // (+) converts string param to a number 19 | }); 20 | } 21 | 22 | ngOnDestroy() { 23 | this.sub.unsubscribe(); 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /src/app/shared/styles/app/print.scss: -------------------------------------------------------------------------------- 1 | /* ======================================================================== 2 | Component: print 3 | ========================================================================== */ 4 | 5 | // 6 | // Put here all rules required to style the print view 7 | // 8 | 9 | @media print { 10 | 11 | .sidebar, 12 | .topnavbar, 13 | .offsidebar, 14 | .btn { 15 | display: none !important; 16 | width: 0 !important; 17 | height: 0 !important; 18 | } 19 | 20 | .wrapper, 21 | .wrapper > section, 22 | .content-wrapper { 23 | margin: 0 !important; /* remove margin used for sidebar and expand the content */ 24 | padding: 0 !important; 25 | width: 100% !important; 26 | } 27 | 28 | 29 | .content-wrapper { 30 | overflow: hidden !important; 31 | } 32 | } -------------------------------------------------------------------------------- /src/app/core/menu/menu.service.ts: -------------------------------------------------------------------------------- 1 | import { Injectable } from '@angular/core'; 2 | 3 | @Injectable() 4 | export class MenuService { 5 | 6 | menuItems: Array; 7 | 8 | constructor() { 9 | this.menuItems = []; 10 | } 11 | 12 | addMenu(items: Array<{ 13 | text: string, 14 | heading?: boolean, 15 | link?: string, // internal route links 16 | elink?: string, // used only for external links 17 | target?: string, // anchor target="_blank|_self|_parent|_top|framename" 18 | icon?: string, 19 | alert?: string, 20 | submenu?: Array 21 | }>) { 22 | items.forEach((item) => { 23 | this.menuItems.push(item); 24 | }); 25 | } 26 | 27 | getMenu() { 28 | return this.menuItems; 29 | } 30 | 31 | } 32 | -------------------------------------------------------------------------------- /src/app/shared/directives/checkall/checkall.directive.ts: -------------------------------------------------------------------------------- 1 | import { Directive, ElementRef } from '@angular/core'; 2 | declare var $: any; 3 | 4 | @Directive({ 5 | selector: '[checkAll]' 6 | }) 7 | export class CheckallDirective { 8 | 9 | constructor(public el: ElementRef) { 10 | let $element = $(el.nativeElement); 11 | 12 | $element.on('change', function() { 13 | let index = $element.index() + 1, 14 | checkbox = $element.find('input[type="checkbox"]'), 15 | table = $element.parents('table'); 16 | // Make sure to affect only the correct checkbox column 17 | table.find('tbody > tr > td:nth-child(' + index + ') input[type="checkbox"]') 18 | .prop('checked', checkbox[0].checked); 19 | 20 | }); 21 | 22 | } 23 | 24 | } 25 | -------------------------------------------------------------------------------- /src/app/shared/styles/app/widget.scss: -------------------------------------------------------------------------------- 1 | /* ======================================================================== 2 | Component: widget 3 | ========================================================================== */ 4 | 5 | // 6 | // Extras styles to use panel as widgets 7 | // ------------------------------------- 8 | 9 | $widget-margin: 20px; 10 | 11 | .widget { 12 | 13 | margin-bottom: $widget-margin; 14 | border: 0; 15 | 16 | &.panel, 17 | & .panel { 18 | overflow: hidden; 19 | } 20 | 21 | 22 | .lateral-picture { 23 | position: relative; 24 | display: block; 25 | height: 240px; 26 | width: auto; 27 | overflow: hidden; 28 | > img { 29 | position: absolute; 30 | top: 0; left: 0; 31 | max-height: 100%; 32 | width: auto; 33 | } 34 | } 35 | } 36 | 37 | -------------------------------------------------------------------------------- /src/app/routes/elements/infinitescroll/infinitescroll.component.html: -------------------------------------------------------------------------------- 1 |
Infinite Scroll 2 | Total items: {{sum + sum2}} 3 |
4 |

Scroll in element

5 |
6 |
7 |
Item #{{i}}
8 |
9 |
10 |

Page scroll

11 |
12 |
13 |
14 |

{{i}}

15 |
16 |
17 |
18 | -------------------------------------------------------------------------------- /src/app/routes/commentmanager/commentmanager.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from '@angular/core'; 2 | import { Routes, RouterModule } from '@angular/router'; 3 | import { AgmCoreModule } from '@agm/core'; 4 | 5 | import { SharedModule } from '../../shared/shared.module'; 6 | import { CommentManagerComponent } from './commentmanager/commentmanager.component'; 7 | 8 | const routes: Routes = [ 9 | { path: '', component: CommentManagerComponent } 10 | ]; 11 | 12 | @NgModule({ 13 | imports: [ 14 | SharedModule, 15 | RouterModule.forChild(routes), 16 | AgmCoreModule.forRoot({ 17 | apiKey: 'AIzaSyBNs42Rt_CyxAqdbIBK0a5Ut83QiauESPA' 18 | }) 19 | ], 20 | declarations: [CommentManagerComponent], 21 | exports: [ 22 | RouterModule 23 | ] 24 | }) 25 | export class CommentManagerModule { } 26 | -------------------------------------------------------------------------------- /src/app/shared/styles/app/slim-scroll.scss: -------------------------------------------------------------------------------- 1 | /* ======================================================================== 2 | Component: slim-scroll 3 | ========================================================================== */ 4 | 5 | $slim-scroll-bar-bg: fade-out(#000, 0.65); 6 | $slim-scroll-rail-bg: fade-out(#000, 0.85); 7 | 8 | // New scrollable element 9 | scrollable { 10 | display: block; 11 | } 12 | 13 | // Important to override js inline styles 14 | .slimScrollBar { 15 | opacity: 1 !important; 16 | background-color: $slim-scroll-bar-bg !important; 17 | border: 0 !important; 18 | border-radius: 1px !important; 19 | } 20 | 21 | .slimScrollRail { 22 | opacity: 1 !important; 23 | background-color: $slim-scroll-rail-bg !important; 24 | border: 0 !important; 25 | border-radius: 0 !important; 26 | bottom: 0; 27 | } -------------------------------------------------------------------------------- /src/assets/codemirror/theme/elegant.css: -------------------------------------------------------------------------------- 1 | .cm-s-elegant span.cm-number, .cm-s-elegant span.cm-string, .cm-s-elegant span.cm-atom { color: #762; } 2 | .cm-s-elegant span.cm-comment { color: #262; font-style: italic; line-height: 1em; } 3 | .cm-s-elegant span.cm-meta { color: #555; font-style: italic; line-height: 1em; } 4 | .cm-s-elegant span.cm-variable { color: black; } 5 | .cm-s-elegant span.cm-variable-2 { color: #b11; } 6 | .cm-s-elegant span.cm-qualifier { color: #555; } 7 | .cm-s-elegant span.cm-keyword { color: #730; } 8 | .cm-s-elegant span.cm-builtin { color: #30a; } 9 | .cm-s-elegant span.cm-link { color: #762; } 10 | .cm-s-elegant span.cm-error { background-color: #fdd; } 11 | 12 | .cm-s-elegant .CodeMirror-activeline-background { background: #e8f2ff; } 13 | .cm-s-elegant .CodeMirror-matchingbracket { outline:1px solid grey; color:black !important; } 14 | -------------------------------------------------------------------------------- /src/app/shared/styles/bootstrap/bootstrap/mixins/_list-group.scss: -------------------------------------------------------------------------------- 1 | // List Groups 2 | 3 | @mixin list-group-item-variant($state, $background, $color) { 4 | .list-group-item-#{$state} { 5 | color: $color; 6 | background-color: $background; 7 | 8 | // [converter] extracted a&, button& to a.list-group-item-#{$state}, button.list-group-item-#{$state} 9 | } 10 | 11 | a.list-group-item-#{$state}, 12 | button.list-group-item-#{$state} { 13 | color: $color; 14 | 15 | .list-group-item-heading { 16 | color: inherit; 17 | } 18 | 19 | &:hover, 20 | &:focus { 21 | color: $color; 22 | background-color: darken($background, 5%); 23 | } 24 | &.active, 25 | &.active:hover, 26 | &.active:focus { 27 | color: #fff; 28 | background-color: $color; 29 | border-color: $color; 30 | } 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /src/app/core/core.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule, Optional, SkipSelf } from '@angular/core'; 2 | 3 | import { SettingsService } from './settings/settings.service'; 4 | import { ThemesService } from './themes/themes.service'; 5 | import { TranslatorService } from './translator/translator.service'; 6 | import { MenuService } from './menu/menu.service'; 7 | 8 | import { throwIfAlreadyLoaded } from './module-import-guard'; 9 | 10 | @NgModule({ 11 | imports: [ 12 | ], 13 | providers: [ 14 | SettingsService, 15 | ThemesService, 16 | TranslatorService, 17 | MenuService 18 | ], 19 | declarations: [ 20 | ], 21 | exports: [ 22 | ] 23 | }) 24 | export class CoreModule { 25 | constructor( @Optional() @SkipSelf() parentModule: CoreModule) { 26 | throwIfAlreadyLoaded(parentModule, 'CoreModule'); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/app/core/translator/translator.service.ts: -------------------------------------------------------------------------------- 1 | import { Injectable } from '@angular/core'; 2 | import { TranslateService } from '@ngx-translate/core'; 3 | 4 | @Injectable() 5 | export class TranslatorService { 6 | 7 | private defaultLanguage: string = 'en'; 8 | 9 | private availablelangs = [ 10 | { code: 'en', text: 'English' }, 11 | { code: 'es_AR', text: 'Spanish' } 12 | ]; 13 | 14 | constructor(public translate: TranslateService) { 15 | 16 | if (!translate.getDefaultLang()) 17 | translate.setDefaultLang(this.defaultLanguage); 18 | 19 | this.useLanguage(); 20 | 21 | } 22 | 23 | useLanguage(lang: string = null) { 24 | this.translate.use(lang || this.translate.getDefaultLang()); 25 | } 26 | 27 | getAvailableLanguages() { 28 | return this.availablelangs; 29 | } 30 | 31 | } 32 | -------------------------------------------------------------------------------- /src/app/routes/extras/forum/forumdiscussion/forumdiscussion.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit, OnDestroy } from '@angular/core'; 2 | import { ActivatedRoute } from '@angular/router'; 3 | 4 | @Component({ 5 | selector: 'app-forumdiscussion', 6 | templateUrl: './forumdiscussion.component.html', 7 | styleUrls: ['./forumdiscussion.component.scss'] 8 | }) 9 | export class ForumdiscussionComponent implements OnInit { 10 | 11 | answerCollapsed = false; 12 | topid: number; 13 | private sub: any; 14 | 15 | constructor(public route: ActivatedRoute) { } 16 | 17 | ngOnInit() { 18 | this.sub = this.route.params.subscribe(params => { 19 | this.topid = +params['topid']; // (+) converts string param to a number 20 | }); 21 | } 22 | 23 | ngOnDestroy() { 24 | this.sub.unsubscribe(); 25 | } 26 | 27 | } 28 | -------------------------------------------------------------------------------- /src/app/shared/styles/bootstrap/bootstrap/_breadcrumbs.scss: -------------------------------------------------------------------------------- 1 | // 2 | // Breadcrumbs 3 | // -------------------------------------------------- 4 | 5 | 6 | .breadcrumb { 7 | padding: $breadcrumb-padding-vertical $breadcrumb-padding-horizontal; 8 | margin-bottom: $line-height-computed; 9 | list-style: none; 10 | background-color: $breadcrumb-bg; 11 | border-radius: $border-radius-base; 12 | 13 | > li { 14 | display: inline-block; 15 | 16 | + li:before { 17 | // [converter] Workaround for https://github.com/sass/libsass/issues/1115 18 | $nbsp: "\00a0"; 19 | content: "#{$breadcrumb-separator}#{$nbsp}"; // Unicode space added since inline-block means non-collapsing white-space 20 | padding: 0 5px; 21 | color: $breadcrumb-color; 22 | } 23 | } 24 | 25 | > .active { 26 | color: $breadcrumb-active-color; 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/app/shared/styles/bootstrap/_bootstrap-mincer.scss: -------------------------------------------------------------------------------- 1 | // Mincer asset helper functions 2 | // 3 | // This must be imported into a .css.ejs.scss file. 4 | // Then, <% %>-interpolations will be parsed as strings by Sass, and evaluated by EJS after Sass compilation. 5 | 6 | 7 | @function twbs-font-path($path) { 8 | // do something like following 9 | // from "path/to/font.ext#suffix" to "<%- asset_path(path/to/font.ext)) + #suffix %>" 10 | // from "path/to/font.ext?#suffix" to "<%- asset_path(path/to/font.ext)) + ?#suffix %>" 11 | // or from "path/to/font.ext" just "<%- asset_path(path/to/font.ext)) %>" 12 | @return "<%- asset_path("#{$path}".replace(/[#?].*$/, '')) + "#{$path}".replace(/(^[^#?]*)([#?]?.*$)/, '$2') %>"; 13 | } 14 | 15 | @function twbs-image-path($file) { 16 | @return "<%- asset_path("#{$file}") %>"; 17 | } 18 | 19 | $bootstrap-sass-asset-helper: true; 20 | -------------------------------------------------------------------------------- /src/app/shared/styles/bootstrap/bootstrap/mixins/_table-row.scss: -------------------------------------------------------------------------------- 1 | // Tables 2 | 3 | @mixin table-row-variant($state, $background) { 4 | // Exact selectors below required to override `.table-striped` and prevent 5 | // inheritance to nested tables. 6 | .table > thead > tr, 7 | .table > tbody > tr, 8 | .table > tfoot > tr { 9 | > td.#{$state}, 10 | > th.#{$state}, 11 | &.#{$state} > td, 12 | &.#{$state} > th { 13 | background-color: $background; 14 | } 15 | } 16 | 17 | // Hover states for `.table-hover` 18 | // Note: this is not available for cells or rows within `thead` or `tfoot`. 19 | .table-hover > tbody > tr { 20 | > td.#{$state}:hover, 21 | > th.#{$state}:hover, 22 | &.#{$state}:hover > td, 23 | &:hover > .#{$state}, 24 | &.#{$state}:hover > th { 25 | background-color: darken($background, 5%); 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/app/routes/forms/upload/upload.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | import { FileUploader } from 'ng2-file-upload'; 3 | 4 | const URL = 'https://evening-anchorage-3159.herokuapp.com/api/'; 5 | 6 | @Component({ 7 | selector: 'app-upload', 8 | templateUrl: './upload.component.html', 9 | styleUrls: ['./upload.component.scss'] 10 | }) 11 | export class UploadComponent implements OnInit { 12 | 13 | public uploader: FileUploader = new FileUploader({ url: URL }); 14 | public hasBaseDropZoneOver: boolean = false; 15 | public hasAnotherDropZoneOver: boolean = false; 16 | 17 | public fileOverBase(e: any): void { 18 | this.hasBaseDropZoneOver = e; 19 | } 20 | 21 | public fileOverAnother(e: any): void { 22 | this.hasAnotherDropZoneOver = e; 23 | } 24 | 25 | constructor() { } 26 | 27 | ngOnInit() { 28 | } 29 | 30 | } 31 | -------------------------------------------------------------------------------- /src/app/routes/replymanager/replymanager.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from '@angular/core'; 2 | import { Routes, RouterModule } from '@angular/router'; 3 | import { AgmCoreModule } from '@agm/core'; 4 | import { TagInputModule } from 'ng2-tag-input'; 5 | 6 | import { SharedModule } from '../../shared/shared.module'; 7 | import { ReplyManagerComponent } from './replymanager/replymanager.component'; 8 | 9 | const routes: Routes = [ 10 | { path: '', component: ReplyManagerComponent } 11 | ]; 12 | 13 | @NgModule({ 14 | imports: [ 15 | SharedModule, 16 | TagInputModule, 17 | RouterModule.forChild(routes), 18 | AgmCoreModule.forRoot({ 19 | apiKey: 'AIzaSyBNs42Rt_CyxAqdbIBK0a5Ut83QiauESPA' 20 | }) 21 | ], 22 | declarations: [ReplyManagerComponent], 23 | exports: [ 24 | RouterModule 25 | ] 26 | }) 27 | export class ReplyManagerModule { } 28 | -------------------------------------------------------------------------------- /protractor.conf.js: -------------------------------------------------------------------------------- 1 | // Protractor configuration file, see link for more information 2 | // https://github.com/angular/protractor/blob/master/lib/config.ts 3 | 4 | /*global jasmine */ 5 | const { SpecReporter } = require('jasmine-spec-reporter'); 6 | 7 | exports.config = { 8 | allScriptsTimeout: 11000, 9 | specs: [ 10 | './e2e/**/*.e2e-spec.ts' 11 | ], 12 | capabilities: { 13 | 'browserName': 'chrome' 14 | }, 15 | directConnect: true, 16 | baseUrl: 'http://localhost:4200/', 17 | framework: 'jasmine', 18 | jasmineNodeOpts: { 19 | showColors: true, 20 | defaultTimeoutInterval: 30000, 21 | print: function() {} 22 | }, 23 | beforeLaunch: function() { 24 | require('ts-node').register({ 25 | project: 'e2e/tsconfig.e2e.json' 26 | }); 27 | }, 28 | onPrepare() { 29 | jasmine.getEnv().addReporter(new SpecReporter({ spec: { displayStacktrace: true } })); 30 | } 31 | }; 32 | -------------------------------------------------------------------------------- /modernizr-config.json: -------------------------------------------------------------------------------- 1 | { 2 | "classPrefix": "", 3 | "options": [ 4 | "setClasses" 5 | ], 6 | "feature-detects": [ 7 | "css/backgroundposition-shorthand", 8 | "css/backgroundposition-xy", 9 | "css/backgroundrepeat", 10 | "css/backgroundsizecover", 11 | "css/borderradius", 12 | "css/animations", 13 | "css/calc", 14 | "css/transforms", 15 | "css/transforms3d", 16 | "css/transformstylepreserve3d", 17 | "css/transitions", 18 | "css/flexboxtweener", 19 | "css/fontface", 20 | "svg", 21 | "svg/asimg", 22 | "svg/clippaths", 23 | "svg/filters", 24 | "svg/foreignobject", 25 | "svg/inline", 26 | "svg/smil", 27 | "storage/localstorage", 28 | "storage/sessionstorage", 29 | "storage/websqldatabase", 30 | "css/multiplebgs" 31 | ] 32 | } -------------------------------------------------------------------------------- /src/app/shared/colors/colors.service.ts: -------------------------------------------------------------------------------- 1 | import { Injectable } from '@angular/core'; 2 | 3 | @Injectable() 4 | export class ColorsService { 5 | 6 | APP_COLORS = { 7 | 'primary': '#5d9cec', 8 | 'success': '#27c24c', 9 | 'info': '#23b7e5', 10 | 'warning': '#ff902b', 11 | 'danger': '#f05050', 12 | 'inverse': '#131e26', 13 | 'green': '#37bc9b', 14 | 'pink': '#f532e5', 15 | 'purple': '#7266ba', 16 | 'dark': '#3a3f51', 17 | 'yellow': '#fad732', 18 | 'gray-darker': '#232735', 19 | 'gray-dark': '#3a3f51', 20 | 'gray': '#dde6e9', 21 | 'gray-light': '#e4eaec', 22 | 'gray-lighter': '#edf1f2' 23 | }; 24 | 25 | constructor() { } 26 | 27 | byName(name) { 28 | // console.log(name +' -> ' + this.APP_COLORS[name]) 29 | return (this.APP_COLORS[name] || '#fff'); 30 | } 31 | 32 | } 33 | -------------------------------------------------------------------------------- /src/app/routes/routes.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from '@angular/core'; 2 | import { RouterModule } from '@angular/router'; 3 | import { TranslatorService } from '../core/translator/translator.service'; 4 | import { MenuService } from '../core/menu/menu.service'; 5 | import { SharedModule } from '../shared/shared.module'; 6 | import { PagesModule } from './pages/pages.module'; 7 | 8 | //import { ReplyManagerComponent } from './replymanager/replymanager.module'; 9 | 10 | import { menu } from './menu'; 11 | import { routes } from './routes'; 12 | 13 | @NgModule({ 14 | imports: [ 15 | SharedModule, 16 | RouterModule.forRoot(routes), 17 | PagesModule 18 | ], 19 | declarations: [], 20 | exports: [ 21 | RouterModule 22 | ] 23 | }) 24 | 25 | export class RoutesModule { 26 | constructor(public menuService: MenuService, tr: TranslatorService) { 27 | menuService.addMenu(menu); 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /src/app/routes/maps/maps.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from '@angular/core'; 2 | import { Routes, RouterModule } from '@angular/router'; 3 | import { AgmCoreModule } from '@agm/core'; 4 | 5 | import { SharedModule } from '../../shared/shared.module'; 6 | import { GoogleComponent } from './google/google.component'; 7 | import { VectorComponent } from './vector/vector.component'; 8 | 9 | const routes: Routes = [ 10 | { path: 'google', component: GoogleComponent }, 11 | { path: 'vector', component: VectorComponent } 12 | ]; 13 | 14 | @NgModule({ 15 | imports: [ 16 | SharedModule, 17 | RouterModule.forChild(routes), 18 | AgmCoreModule.forRoot({ 19 | apiKey: 'AIzaSyBNs42Rt_CyxAqdbIBK0a5Ut83QiauESPA' 20 | }) 21 | ], 22 | declarations: [ 23 | GoogleComponent, 24 | VectorComponent 25 | ], 26 | exports: [ 27 | RouterModule 28 | ] 29 | }) 30 | export class MapsModule { } -------------------------------------------------------------------------------- /src/assets/img/angular.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 10 | 11 | 12 | 13 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /src/app/shared/styles/app/breadcrumbs.scss: -------------------------------------------------------------------------------- 1 | /* ======================================================================== 2 | Component: breadcrumbs 3 | ========================================================================== */ 4 | 5 | .breadcrumb { 6 | font-weight: normal; 7 | border-radius: 0; 8 | color: $text-muted; 9 | padding: 10px 20px; 10 | } 11 | 12 | .content-heading { 13 | // Breadcrumb next to view title 14 | + .breadcrumb { 15 | margin: -25px -25px 20px -20px; 16 | background-color: $content-heading-bg; 17 | border-top: 1px solid $content-heading-border; 18 | border-bottom: 1px solid $content-heading-border; 19 | } 20 | // Breadcrumb below title 21 | > .breadcrumb { 22 | background: transparent; 23 | font-size: 13px; 24 | border: 0; 25 | padding: 10px 10px 0 0; 26 | margin-bottom: 0; 27 | // Breadcrumb right aligned 28 | &.pull-right { 29 | margin: -2px 0 0; 30 | } 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /src/app/layout/header/header.component.spec.ts: -------------------------------------------------------------------------------- 1 | /* tslint:disable:no-unused-variable */ 2 | 3 | import { TestBed, async, inject } from '@angular/core/testing'; 4 | import { HeaderComponent } from './header.component'; 5 | 6 | import { UserblockService } from '../sidebar/userblock/userblock.service'; 7 | import { SettingsService } from '../../core/settings/settings.service'; 8 | import { MenuService } from '../../core/menu/menu.service'; 9 | 10 | describe('Component: Header', () => { 11 | 12 | beforeEach(() => { 13 | TestBed.configureTestingModule({ 14 | providers: [MenuService, UserblockService, SettingsService] 15 | }).compileComponents(); 16 | }); 17 | 18 | it('should create an instance', async(inject([MenuService, UserblockService, SettingsService], (menuService, userblockService, settingsService) => { 19 | let component = new HeaderComponent(menuService, userblockService, settingsService); 20 | expect(component).toBeTruthy(); 21 | }))); 22 | }); 23 | -------------------------------------------------------------------------------- /src/app/shared/styles/bootstrap/bootstrap/_close.scss: -------------------------------------------------------------------------------- 1 | // 2 | // Close icons 3 | // -------------------------------------------------- 4 | 5 | 6 | .close { 7 | float: right; 8 | font-size: ($font-size-base * 1.5); 9 | font-weight: $close-font-weight; 10 | line-height: 1; 11 | color: $close-color; 12 | text-shadow: $close-text-shadow; 13 | @include opacity(.2); 14 | 15 | &:hover, 16 | &:focus { 17 | color: $close-color; 18 | text-decoration: none; 19 | cursor: pointer; 20 | @include opacity(.5); 21 | } 22 | 23 | // [converter] extracted button& to button.close 24 | } 25 | 26 | // Additional properties for button version 27 | // iOS requires the button element instead of an anchor tag. 28 | // If you want the anchor version, it requires `href="#"`. 29 | // See https://developer.mozilla.org/en-US/docs/Web/Events/click#Safari_Mobile 30 | button.close { 31 | padding: 0; 32 | cursor: pointer; 33 | background: transparent; 34 | border: 0; 35 | -webkit-appearance: none; 36 | } 37 | -------------------------------------------------------------------------------- /src/assets/server/chart/line.json: -------------------------------------------------------------------------------- 1 | [{ 2 | "label": "Complete", 3 | "color": "#5ab1ef", 4 | "data": [ 5 | ["Jan", 188], 6 | ["Feb", 183], 7 | ["Mar", 185], 8 | ["Apr", 199], 9 | ["May", 190], 10 | ["Jun", 194], 11 | ["Jul", 194], 12 | ["Aug", 184], 13 | ["Sep", 74] 14 | ] 15 | }, { 16 | "label": "In Progress", 17 | "color": "#f5994e", 18 | "data": [ 19 | ["Jan", 153], 20 | ["Feb", 116], 21 | ["Mar", 136], 22 | ["Apr", 119], 23 | ["May", 148], 24 | ["Jun", 133], 25 | ["Jul", 118], 26 | ["Aug", 161], 27 | ["Sep", 59] 28 | ] 29 | }, { 30 | "label": "Cancelled", 31 | "color": "#d87a80", 32 | "data": [ 33 | ["Jan", 111], 34 | ["Feb", 97], 35 | ["Mar", 93], 36 | ["Apr", 110], 37 | ["May", 102], 38 | ["Jun", 93], 39 | ["Jul", 92], 40 | ["Aug", 92], 41 | ["Sep", 44] 42 | ] 43 | }] -------------------------------------------------------------------------------- /src/app/routes/replymanager/replymanager/replymanager.component.html: -------------------------------------------------------------------------------- 1 |
Reply Manager
2 |
3 |
4 | 5 | 6 |
7 |
8 | 9 |
10 |
11 |
12 | 16 |
17 | 18 |
19 |
20 | 21 |
22 |
23 | -------------------------------------------------------------------------------- /src/app/shared/styles/bootstrap/bootstrap/_component-animations.scss: -------------------------------------------------------------------------------- 1 | // 2 | // Component animations 3 | // -------------------------------------------------- 4 | 5 | // Heads up! 6 | // 7 | // We don't use the `.opacity()` mixin here since it causes a bug with text 8 | // fields in IE7-8. Source: https://github.com/twbs/bootstrap/pull/3552. 9 | 10 | .fade { 11 | opacity: 0; 12 | @include transition(opacity .15s linear); 13 | &.in { 14 | opacity: 1; 15 | } 16 | } 17 | 18 | .collapse { 19 | display: none; 20 | 21 | &.in { display: block; } 22 | // [converter] extracted tr&.in to tr.collapse.in 23 | // [converter] extracted tbody&.in to tbody.collapse.in 24 | } 25 | 26 | tr.collapse.in { display: table-row; } 27 | 28 | tbody.collapse.in { display: table-row-group; } 29 | 30 | .collapsing { 31 | position: relative; 32 | height: 0; 33 | overflow: hidden; 34 | @include transition-property(height, visibility); 35 | @include transition-duration(.35s); 36 | @include transition-timing-function(ease); 37 | } 38 | -------------------------------------------------------------------------------- /src/app/routes/charts/charts.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from '@angular/core'; 2 | import { Routes, RouterModule } from '@angular/router'; 3 | import { ChartsModule as Ng2ChartsModule } from 'ng2-charts/ng2-charts'; 4 | 5 | import { SharedModule } from '../../shared/shared.module'; 6 | import { ChartjsComponent } from './chartjs/chartjs.component'; 7 | import { FlotComponent } from './flot/flot.component'; 8 | import { RadialComponent } from './radial/radial.component'; 9 | 10 | const routes: Routes = [ 11 | { path: 'flot', component: FlotComponent }, 12 | { path: 'radial', component: RadialComponent }, 13 | { path: 'chartjs', component: ChartjsComponent } 14 | ]; 15 | 16 | @NgModule({ 17 | imports: [ 18 | SharedModule, 19 | RouterModule.forChild(routes), 20 | Ng2ChartsModule 21 | ], 22 | declarations: [ 23 | FlotComponent, 24 | RadialComponent, 25 | ChartjsComponent 26 | ], 27 | exports: [ 28 | RouterModule 29 | ] 30 | }) 31 | export class ChartsModule { } -------------------------------------------------------------------------------- /src/app/shared/styles/bootstrap/bootstrap/_utilities.scss: -------------------------------------------------------------------------------- 1 | // 2 | // Utility classes 3 | // -------------------------------------------------- 4 | 5 | 6 | // Floats 7 | // ------------------------- 8 | 9 | .clearfix { 10 | @include clearfix; 11 | } 12 | .center-block { 13 | @include center-block; 14 | } 15 | .pull-right { 16 | float: right !important; 17 | } 18 | .pull-left { 19 | float: left !important; 20 | } 21 | 22 | 23 | // Toggling content 24 | // ------------------------- 25 | 26 | // Note: Deprecated .hide in favor of .hidden or .sr-only (as appropriate) in v3.0.1 27 | .hide { 28 | display: none !important; 29 | } 30 | .show { 31 | display: block !important; 32 | } 33 | .invisible { 34 | visibility: hidden; 35 | } 36 | .text-hide { 37 | @include text-hide; 38 | } 39 | 40 | 41 | // Hide from screenreaders and browsers 42 | // 43 | // Credit: HTML5 Boilerplate 44 | 45 | .hidden { 46 | display: none !important; 47 | } 48 | 49 | 50 | // For Affix plugin 51 | // ------------------------- 52 | 53 | .affix { 54 | position: fixed; 55 | } 56 | -------------------------------------------------------------------------------- /src/assets/server/chart/barstacked.json: -------------------------------------------------------------------------------- 1 | [{ 2 | "label": "Tweets", 3 | "color": "#51bff2", 4 | "data": [ 5 | ["Jan", 56], 6 | ["Feb", 81], 7 | ["Mar", 97], 8 | ["Apr", 44], 9 | ["May", 24], 10 | ["Jun", 85], 11 | ["Jul", 94], 12 | ["Aug", 78], 13 | ["Sep", 52], 14 | ["Oct", 17], 15 | ["Nov", 90], 16 | ["Dec", 62] 17 | ] 18 | }, { 19 | "label": "Likes", 20 | "color": "#4a8ef1", 21 | "data": [ 22 | ["Jan", 69], 23 | ["Feb", 135], 24 | ["Mar", 14], 25 | ["Apr", 100], 26 | ["May", 100], 27 | ["Jun", 62], 28 | ["Jul", 115], 29 | ["Aug", 22], 30 | ["Sep", 104], 31 | ["Oct", 132], 32 | ["Nov", 72], 33 | ["Dec", 61] 34 | ] 35 | }, { 36 | "label": "+1", 37 | "color": "#f0693a", 38 | "data": [ 39 | ["Jan", 29], 40 | ["Feb", 36], 41 | ["Mar", 47], 42 | ["Apr", 21], 43 | ["May", 5], 44 | ["Jun", 49], 45 | ["Jul", 37], 46 | ["Aug", 44], 47 | ["Sep", 28], 48 | ["Oct", 9], 49 | ["Nov", 12], 50 | ["Dec", 35] 51 | ] 52 | }] -------------------------------------------------------------------------------- /src/app/routes/dashboard/dashboard.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from '@angular/core'; 2 | import { Routes, RouterModule } from '@angular/router'; 3 | import { SharedModule } from '../../shared/shared.module'; 4 | 5 | import { Dashboardv1Component } from './dashboardv1/dashboardv1.component'; 6 | import { Dashboardv2Component } from './dashboardv2/dashboardv2.component'; 7 | import { Dashboardv3Component } from './dashboardv3/dashboardv3.component'; 8 | 9 | const routes: Routes = [ 10 | { path: '', component: Dashboardv2Component }, 11 | { path: 'v1', component: Dashboardv1Component }, 12 | { path: 'v2', redirectTo: 'dashboard' }, 13 | { path: 'v3', component: Dashboardv3Component }, 14 | ]; 15 | 16 | @NgModule({ 17 | imports: [ 18 | SharedModule, 19 | RouterModule.forChild(routes) 20 | ], 21 | declarations: [ 22 | Dashboardv1Component, 23 | Dashboardv2Component, 24 | Dashboardv3Component 25 | ], 26 | exports: [ 27 | RouterModule 28 | ] 29 | }) 30 | export class DashboardModule { } 31 | -------------------------------------------------------------------------------- /src/app/routes/extras/projects/projects.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | 3 | import { ColorsService } from '../../../shared/colors/colors.service'; 4 | 5 | @Component({ 6 | selector: 'app-projects', 7 | templateUrl: './projects.component.html', 8 | styleUrls: ['./projects.component.scss'] 9 | }) 10 | export class ProjectsComponent implements OnInit { 11 | 12 | sparkOptionsInfo = { 13 | type: 'pie', 14 | sliceColors: [this.colors.byName('gray-lighter'), this.colors.byName('info')], 15 | height: 24 16 | }; 17 | 18 | sparkOptionsWarning = { 19 | type: 'pie', 20 | sliceColors: [this.colors.byName('gray-lighter'), this.colors.byName('warning')], 21 | height: 24 22 | }; 23 | 24 | sparkOptionsSuccess = { 25 | type: 'pie', 26 | sliceColors: [this.colors.byName('gray-lighter'), this.colors.byName('success')], 27 | height: 24 28 | }; 29 | 30 | constructor(public colors: ColorsService) { } 31 | 32 | ngOnInit() { 33 | } 34 | 35 | } 36 | -------------------------------------------------------------------------------- /src/app/shared/styles/bootstrap/bootstrap/_thumbnails.scss: -------------------------------------------------------------------------------- 1 | // 2 | // Thumbnails 3 | // -------------------------------------------------- 4 | 5 | 6 | // Mixin and adjust the regular image class 7 | .thumbnail { 8 | display: block; 9 | padding: $thumbnail-padding; 10 | margin-bottom: $line-height-computed; 11 | line-height: $line-height-base; 12 | background-color: $thumbnail-bg; 13 | border: 1px solid $thumbnail-border; 14 | border-radius: $thumbnail-border-radius; 15 | @include transition(border .2s ease-in-out); 16 | 17 | > img, 18 | a > img { 19 | @include img-responsive; 20 | margin-left: auto; 21 | margin-right: auto; 22 | } 23 | 24 | // [converter] extracted a&:hover, a&:focus, a&.active to a.thumbnail:hover, a.thumbnail:focus, a.thumbnail.active 25 | 26 | // Image captions 27 | .caption { 28 | padding: $thumbnail-caption-padding; 29 | color: $thumbnail-caption-color; 30 | } 31 | } 32 | 33 | // Add a hover state for linked versions only 34 | a.thumbnail:hover, 35 | a.thumbnail:focus, 36 | a.thumbnail.active { 37 | border-color: $link-color; 38 | } 39 | -------------------------------------------------------------------------------- /src/app/routes/extras/mailbox/compose/compose.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | declare var $: any; 3 | 4 | @Component({ 5 | selector: 'app-compose', 6 | templateUrl: './compose.component.html', 7 | styleUrls: ['./compose.component.scss'] 8 | }) 9 | export class ComposeComponent implements OnInit { 10 | 11 | showCC = false; 12 | showBCC = false; 13 | contents: string; 14 | 15 | constructor() { } 16 | 17 | ngOnInit() { 18 | // Summernote is currently not ported as a native angular2 module 19 | // For a quick use it we use the component a wrapper 20 | // Plugin events can be used to keep component props 21 | // in sync with the editor content 22 | $('#summernote').summernote({ 23 | height: 230, 24 | dialogsInBody: true, 25 | callbacks: { 26 | onChange: (contents, $editable) => { 27 | this.contents = contents; 28 | // console.log(contents); 29 | } 30 | } 31 | }); 32 | 33 | } 34 | 35 | } 36 | -------------------------------------------------------------------------------- /src/app/shared/styles/app/vector-map.scss: -------------------------------------------------------------------------------- 1 | /* ======================================================================== 2 | Component: vector-map 3 | ========================================================================== */ 4 | 5 | $vmap-label-bg: #313232; 6 | $vmap-zoom-ctrl-bg: #515253; 7 | 8 | body { // adds priority 9 | 10 | .jvectormap-label { 11 | position: absolute; 12 | display: none; 13 | border: solid 1px $vmap-label-bg; 14 | border-radius: 2px; 15 | background: $vmap-label-bg; 16 | color: white; 17 | padding: 3px 6px; 18 | opacity: 0.9; 19 | z-index: 1100; 20 | } 21 | 22 | .jvectormap-zoomin, 23 | .jvectormap-zoomout { 24 | position: absolute; 25 | left: 10px; 26 | width: 22px; 27 | height: 22px; 28 | border-radius: 2px; 29 | background: $vmap-zoom-ctrl-bg; 30 | padding: 5px; 31 | color: white; 32 | cursor: pointer; 33 | line-height: 10px; 34 | text-align: center; 35 | } 36 | .jvectormap-zoomin {top: 10px;} 37 | .jvectormap-zoomout {top: 30px;} 38 | } 39 | -------------------------------------------------------------------------------- /src/app/routes/abusedusers/abusedusers.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from '@angular/core'; 2 | import { Routes, RouterModule } from '@angular/router'; 3 | import { AgmCoreModule } from '@agm/core'; 4 | import { AgGridModule } from 'ag-grid-angular/main'; 5 | 6 | import { SharedModule } from '../../shared/shared.module'; 7 | import { AbusedUsersComponent } from './abusedusers/abusedusers.component'; 8 | 9 | import { DataTableModule } from 'angular2-datatable'; 10 | import { Ng2TableModule } from 'ng2-table/ng2-table'; 11 | 12 | const routes: Routes = [ 13 | { path: '', component: AbusedUsersComponent } 14 | ]; 15 | 16 | @NgModule({ 17 | imports: [ 18 | SharedModule, 19 | RouterModule.forChild(routes), 20 | DataTableModule, 21 | Ng2TableModule, 22 | AgGridModule.withComponents([AbusedUsersComponent]), 23 | AgmCoreModule.forRoot({ 24 | apiKey: 'AIzaSyBNs42Rt_CyxAqdbIBK0a5Ut83QiauESPA' 25 | }) 26 | ], 27 | declarations: [AbusedUsersComponent], 28 | exports: [ 29 | RouterModule 30 | ] 31 | }) 32 | export class AbusedUsersModule { } 33 | -------------------------------------------------------------------------------- /src/app/shared/styles/app/chart-easypie.scss: -------------------------------------------------------------------------------- 1 | /* ======================================================================== 2 | Component: chart-easypie 3 | ========================================================================== */ 4 | 5 | // Makes possible to show the percetage 6 | // centered in the middle of the pie 7 | .easypie-chart { 8 | display: inline-block; 9 | position: relative; 10 | padding: 0 6px; 11 | 12 | span { 13 | display: block; 14 | position: absolute; 15 | left: 50%; 16 | top: 50%; 17 | width: 100%; 18 | margin-left: -50%; 19 | height: 30px; 20 | margin-top: -15px; 21 | font-size: 20px; 22 | } 23 | canvas { 24 | max-width: 100%; 25 | } 26 | 27 | &.easypie-chart-lg { 28 | span { 29 | font-size: 40px; 30 | margin-top: -25px; 31 | line-height: 40px; 32 | } 33 | } 34 | 35 | &.easypie-chart-md { 36 | span { 37 | font-size: 30px; 38 | margin-top: -25px; 39 | line-height: 40px; 40 | } 41 | } 42 | } -------------------------------------------------------------------------------- /src/app/routes/configuration/configuration.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from '@angular/core'; 2 | import { Routes, RouterModule } from '@angular/router'; 3 | import { AgmCoreModule } from '@agm/core'; 4 | import { AgGridModule } from 'ag-grid-angular/main'; 5 | 6 | import { SharedModule } from '../../shared/shared.module'; 7 | import { ConfigurationComponent } from './configuration/configuration.component'; 8 | 9 | import { DataTableModule } from 'angular2-datatable'; 10 | import { Ng2TableModule } from 'ng2-table/ng2-table'; 11 | 12 | const routes: Routes = [ 13 | { path: '', component: ConfigurationComponent } 14 | ]; 15 | 16 | @NgModule({ 17 | imports: [ 18 | SharedModule, 19 | RouterModule.forChild(routes), 20 | DataTableModule, 21 | Ng2TableModule, 22 | AgGridModule.withComponents([ConfigurationComponent]), 23 | AgmCoreModule.forRoot({ 24 | apiKey: 'AIzaSyBNs42Rt_CyxAqdbIBK0a5Ut83QiauESPA' 25 | }) 26 | ], 27 | declarations: [ConfigurationComponent], 28 | exports: [ 29 | RouterModule 30 | ] 31 | }) 32 | export class ConfigurationModule { } 33 | -------------------------------------------------------------------------------- /src/app/shared/styles/bootstrap/bootstrap/_pager.scss: -------------------------------------------------------------------------------- 1 | // 2 | // Pager pagination 3 | // -------------------------------------------------- 4 | 5 | 6 | .pager { 7 | padding-left: 0; 8 | margin: $line-height-computed 0; 9 | list-style: none; 10 | text-align: center; 11 | @include clearfix; 12 | li { 13 | display: inline; 14 | > a, 15 | > span { 16 | display: inline-block; 17 | padding: 5px 14px; 18 | background-color: $pager-bg; 19 | border: 1px solid $pager-border; 20 | border-radius: $pager-border-radius; 21 | } 22 | 23 | > a:hover, 24 | > a:focus { 25 | text-decoration: none; 26 | background-color: $pager-hover-bg; 27 | } 28 | } 29 | 30 | .next { 31 | > a, 32 | > span { 33 | float: right; 34 | } 35 | } 36 | 37 | .previous { 38 | > a, 39 | > span { 40 | float: left; 41 | } 42 | } 43 | 44 | .disabled { 45 | > a, 46 | > a:hover, 47 | > a:focus, 48 | > span { 49 | color: $pager-disabled-color; 50 | background-color: $pager-bg; 51 | cursor: $cursor-disabled; 52 | } 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /src/app/layout/sidebar/sidebar.component.spec.ts: -------------------------------------------------------------------------------- 1 | /* tslint:disable:no-unused-variable */ 2 | import { TestBed, async, inject } from '@angular/core/testing'; 3 | import { SidebarComponent } from './sidebar.component'; 4 | import { RouterModule, Router } from '@angular/router'; 5 | 6 | import { MenuService } from '../../core/menu/menu.service'; 7 | import { SettingsService } from '../../core/settings/settings.service'; 8 | 9 | describe('Component: Sidebar', () => { 10 | let mockRouter = { 11 | navigate: jasmine.createSpy('navigate') 12 | }; 13 | beforeEach(() => { 14 | TestBed.configureTestingModule({ 15 | providers: [ 16 | MenuService, 17 | SettingsService, 18 | { provide: Router, useValue: mockRouter } 19 | ] 20 | }).compileComponents(); 21 | }); 22 | 23 | it('should create an instance', async(inject([MenuService, SettingsService, Router], (menuService, settingsService, router) => { 24 | let component = new SidebarComponent(menuService, settingsService, router); 25 | expect(component).toBeTruthy(); 26 | }))); 27 | }); 28 | -------------------------------------------------------------------------------- /src/app/routes/abusedcomments/abusedcomments.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from '@angular/core'; 2 | import { Routes, RouterModule } from '@angular/router'; 3 | import { AgmCoreModule } from '@agm/core'; 4 | import { AgGridModule } from 'ag-grid-angular/main'; 5 | 6 | import { SharedModule } from '../../shared/shared.module'; 7 | import { AbusedCommentsComponent } from './abusedcomments/abusedcomments.component'; 8 | 9 | import { DataTableModule } from 'angular2-datatable'; 10 | import { Ng2TableModule } from 'ng2-table/ng2-table'; 11 | 12 | const routes: Routes = [ 13 | { path: '', component: AbusedCommentsComponent } 14 | ]; 15 | 16 | @NgModule({ 17 | imports: [ 18 | SharedModule, 19 | RouterModule.forChild(routes), 20 | DataTableModule, 21 | Ng2TableModule, 22 | AgGridModule.withComponents([AbusedCommentsComponent]), 23 | AgmCoreModule.forRoot({ 24 | apiKey: 'AIzaSyBNs42Rt_CyxAqdbIBK0a5Ut83QiauESPA' 25 | }) 26 | ], 27 | declarations: [AbusedCommentsComponent], 28 | exports: [ 29 | RouterModule 30 | ] 31 | }) 32 | export class AbusedCommentsModule { } 33 | -------------------------------------------------------------------------------- /src/assets/server/chart/barstackedv2.json: -------------------------------------------------------------------------------- 1 | [{ 2 | "label": "Pending", 3 | "color": "#9289ca", 4 | "data": [ 5 | ["Pj1", 86], 6 | ["Pj2", 136], 7 | ["Pj3", 97], 8 | ["Pj4", 110], 9 | ["Pj5", 62], 10 | ["Pj6", 85], 11 | ["Pj7", 115], 12 | ["Pj8", 78], 13 | ["Pj9", 104], 14 | ["Pj10", 82], 15 | ["Pj11", 97], 16 | ["Pj12", 110], 17 | ["Pj13", 62] 18 | ] 19 | }, { 20 | "label": "Assigned", 21 | "color": "#7266ba", 22 | "data": [ 23 | ["Pj1", 49], 24 | ["Pj2", 81], 25 | ["Pj3", 47], 26 | ["Pj4", 44], 27 | ["Pj5", 100], 28 | ["Pj6", 49], 29 | ["Pj7", 94], 30 | ["Pj8", 44], 31 | ["Pj9", 52], 32 | ["Pj10", 17], 33 | ["Pj11", 47], 34 | ["Pj12", 44], 35 | ["Pj13", 100] 36 | ] 37 | }, { 38 | "label": "Completed", 39 | "color": "#564aa3", 40 | "data": [ 41 | ["Pj1", 29], 42 | ["Pj2", 56], 43 | ["Pj3", 14], 44 | ["Pj4", 21], 45 | ["Pj5", 5], 46 | ["Pj6", 24], 47 | ["Pj7", 37], 48 | ["Pj8", 22], 49 | ["Pj9", 28], 50 | ["Pj10", 9], 51 | ["Pj11", 14], 52 | ["Pj12", 21], 53 | ["Pj13", 5] 54 | ] 55 | }] -------------------------------------------------------------------------------- /src/app/core/translator/translator.service.spec.ts: -------------------------------------------------------------------------------- 1 | /* tslint:disable:no-unused-variable */ 2 | 3 | import { TestBed, async, inject } from '@angular/core/testing'; 4 | import { TranslateService, TranslateModule, TranslateLoader } from '@ngx-translate/core'; 5 | import { HttpModule, Http } from '@angular/http'; 6 | 7 | import { TranslatorService } from './translator.service'; 8 | import { createTranslateLoader } from '../../app.module'; 9 | 10 | describe('Service: Translator', () => { 11 | beforeEach(() => { 12 | TestBed.configureTestingModule({ 13 | imports: [ 14 | HttpModule, 15 | TranslateModule.forRoot({ 16 | loader: { 17 | provide: TranslateLoader, 18 | useFactory: (createTranslateLoader), 19 | deps: [Http] 20 | } 21 | }) 22 | ], 23 | providers: [TranslatorService] 24 | }); 25 | }); 26 | 27 | it('should ...', inject([TranslatorService], (service: TranslatorService) => { 28 | expect(service).toBeTruthy(); 29 | })); 30 | }); 31 | -------------------------------------------------------------------------------- /src/assets/codemirror/theme/neo.css: -------------------------------------------------------------------------------- 1 | /* neo theme for codemirror */ 2 | 3 | /* Color scheme */ 4 | 5 | .cm-s-neo.CodeMirror { 6 | background-color:#ffffff; 7 | color:#2e383c; 8 | line-height:1.4375; 9 | } 10 | .cm-s-neo .cm-comment { color:#75787b; } 11 | .cm-s-neo .cm-keyword, .cm-s-neo .cm-property { color:#1d75b3; } 12 | .cm-s-neo .cm-atom,.cm-s-neo .cm-number { color:#75438a; } 13 | .cm-s-neo .cm-node,.cm-s-neo .cm-tag { color:#9c3328; } 14 | .cm-s-neo .cm-string { color:#b35e14; } 15 | .cm-s-neo .cm-variable,.cm-s-neo .cm-qualifier { color:#047d65; } 16 | 17 | 18 | /* Editor styling */ 19 | 20 | .cm-s-neo pre { 21 | padding:0; 22 | } 23 | 24 | .cm-s-neo .CodeMirror-gutters { 25 | border:none; 26 | border-right:10px solid transparent; 27 | background-color:transparent; 28 | } 29 | 30 | .cm-s-neo .CodeMirror-linenumber { 31 | padding:0; 32 | color:#e0e2e5; 33 | } 34 | 35 | .cm-s-neo .CodeMirror-guttermarker { color: #1d75b3; } 36 | .cm-s-neo .CodeMirror-guttermarker-subtle { color: #e0e2e5; } 37 | 38 | .cm-s-neo .CodeMirror-cursor { 39 | width: auto; 40 | border: 0; 41 | background: rgba(155,157,162,0.37); 42 | z-index: 1; 43 | } 44 | -------------------------------------------------------------------------------- /src/app/routes/elements/buttons/buttons.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-buttons', 5 | templateUrl: './buttons.component.html', 6 | styleUrls: ['./buttons.component.scss'] 7 | }) 8 | export class ButtonsComponent implements OnInit { 9 | // buttons 10 | public singleModel: boolean = true; 11 | public radioModel: string = 'Middle'; 12 | public checkModel: any = { left: false, middle: true, right: false }; 13 | 14 | // pagination/pager 15 | public totalItems: number = 64; 16 | public currentPage: number = 4; 17 | 18 | public maxSize: number = 5; 19 | public bigTotalItems: number = 175; 20 | public bigCurrentPage: number = 1; 21 | 22 | public setPage(pageNo: number): void { 23 | this.currentPage = pageNo; 24 | }; 25 | smallnumPages; 26 | numPages; 27 | 28 | public pageChanged(event: any): void { 29 | console.log('Page changed to: ' + event.page); 30 | console.log('Number items per page: ' + event.itemsPerPage); 31 | }; 32 | 33 | constructor() { } 34 | 35 | ngOnInit() { 36 | } 37 | 38 | } 39 | -------------------------------------------------------------------------------- /src/app/routes/blog/blog.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from '@angular/core'; 2 | import { Routes, RouterModule } from '@angular/router'; 3 | import { SelectModule } from 'ng2-select'; 4 | 5 | import { SharedModule } from '../../shared/shared.module'; 6 | import { ListComponent } from './list/list.component'; 7 | import { PostComponent } from './post/post.component'; 8 | import { ArticlesComponent } from './articles/articles.component'; 9 | import { ArticleviewComponent } from './articleview/articleview.component'; 10 | 11 | const routes: Routes = [ 12 | { path: 'list', component: ListComponent }, 13 | { path: 'post', component: PostComponent }, 14 | { path: 'articles', component: ArticlesComponent }, 15 | { path: 'articleview', component: ArticleviewComponent } 16 | ]; 17 | 18 | @NgModule({ 19 | imports: [ 20 | SharedModule, 21 | RouterModule.forChild(routes), 22 | SelectModule 23 | ], 24 | declarations: [ 25 | ListComponent, 26 | PostComponent, 27 | ArticlesComponent, 28 | ArticleviewComponent 29 | ], 30 | exports: [ 31 | RouterModule 32 | ] 33 | }) 34 | export class BlogModule { } -------------------------------------------------------------------------------- /src/app/routes/pages/recover/recover.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | import { SettingsService } from '../../../core/settings/settings.service'; 3 | import { FormGroup, FormBuilder, Validators } from '@angular/forms'; 4 | import { CustomValidators } from 'ng2-validation'; 5 | 6 | @Component({ 7 | selector: 'app-recover', 8 | templateUrl: './recover.component.html', 9 | styleUrls: ['./recover.component.scss'] 10 | }) 11 | export class RecoverComponent implements OnInit { 12 | 13 | valForm: FormGroup; 14 | 15 | constructor(public settings: SettingsService, fb: FormBuilder) { 16 | this.valForm = fb.group({ 17 | 'email': [null, Validators.compose([Validators.required, CustomValidators.email])] 18 | }); 19 | } 20 | 21 | submitForm($ev, value: any) { 22 | $ev.preventDefault(); 23 | for (let c in this.valForm.controls) { 24 | this.valForm.controls[c].markAsTouched(); 25 | } 26 | if (this.valForm.valid) { 27 | console.log('Valid!'); 28 | console.log(value); 29 | } 30 | } 31 | 32 | ngOnInit() { 33 | } 34 | 35 | } 36 | -------------------------------------------------------------------------------- /src/app/shared/styles/app/media-queries.scss: -------------------------------------------------------------------------------- 1 | /* ======================================================================== 2 | Component: media-queries 3 | ========================================================================== */ 4 | 5 | // Taken from bootstrap variables 6 | // to match all components media queries 7 | 8 | $mq-desktop-lg: $screen-lg-desktop; // Usually 1200px 9 | $mq-desktop: $screen-desktop; // Usually 992px 10 | $mq-tablet: $screen-sm-min; // Usually 768px 11 | $mq-mobile: $screen-phone; // Usually 480px 12 | 13 | // Inverse version media queries (for use with max-width) 14 | // Some components needs to be strictly defined only for mobile 15 | 16 | $mq-up-to-desktop-lg: ($screen-lg-desktop - 1); // Usually 1199px 17 | $mq-up-to-desktop: ($screen-desktop - 1); // Usually 991px 18 | $mq-up-to-tablet: ($screen-sm-min - 1); // Usually 767px 19 | $mq-up-to-mobile: ($screen-phone - 1); // Usually 479px 20 | 21 | -------------------------------------------------------------------------------- /src/app/routes/extras/search/search.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-search', 5 | templateUrl: './search.component.html', 6 | styleUrls: ['./search.component.scss'] 7 | }) 8 | export class SearchComponent implements OnInit { 9 | 10 | public items: Array = ['Amsterdam', 'Antwerp', 'Athens', 'Barcelona', 11 | 'Berlin', 'Birmingham', 'Bradford', 'Bremen', 'Brussels', 'Bucharest', 12 | 'Budapest', 'Cologne', 'Copenhagen', 'Dortmund', 'Dresden', 'Dublin', 13 | 'Düsseldorf', 'Essen', 'Frankfurt', 'Genoa', 'Glasgow', 'Gothenburg', 14 | 'Hamburg', 'Hannover', 'Helsinki', 'Kraków', 'Leeds', 'Leipzig', 'Lisbon', 15 | 'London', 'Madrid', 'Manchester', 'Marseille', 'Milan', 'Munich', 'Málaga', 16 | 'Naples', 'Palermo', 'Paris', 'Poznań', 'Prague', 'Riga', 'Rome', 17 | 'Rotterdam', 'Seville', 'Sheffield', 'Sofia', 'Stockholm', 'Stuttgart', 18 | 'The Hague', 'Turin', 'Valencia', 'Vienna', 'Vilnius', 'Warsaw', 'Wrocław', 19 | 'Zagreb', 'Zaragoza', 'Łódź']; 20 | 21 | constructor() { } 22 | 23 | ngOnInit() { 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Ng2angle 2 | 3 | This project was generated with [Angular CLI](https://github.com/angular/angular-cli) version 1.0.0. 4 | 5 | ## Development server 6 | 7 | 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. 8 | 9 | ## Code scaffolding 10 | 11 | Run `ng generate component component-name` to generate a new component. You can also use `ng generate directive/pipe/service/class/module`. 12 | 13 | ## Build 14 | 15 | 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. 16 | 17 | ## Running unit tests 18 | 19 | Run `ng test` to execute the unit tests via [Karma](https://karma-runner.github.io). 20 | 21 | ## Running end-to-end tests 22 | 23 | Run `ng e2e` to execute the end-to-end tests via [Protractor](http://www.protractortest.org/). 24 | Before running the tests make sure you are serving the app via `ng serve`. 25 | 26 | ## Further help 27 | 28 | 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). 29 | -------------------------------------------------------------------------------- /src/app/layout/offsidebar/offsidebar.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | 3 | import { SettingsService } from '../../core/settings/settings.service'; 4 | import { ThemesService } from '../../core/themes/themes.service'; 5 | import { TranslatorService } from '../../core/translator/translator.service'; 6 | 7 | @Component({ 8 | selector: 'app-offsidebar', 9 | templateUrl: './offsidebar.component.html', 10 | styleUrls: ['./offsidebar.component.scss'] 11 | }) 12 | export class OffsidebarComponent implements OnInit { 13 | 14 | currentTheme: any ; 15 | selectedLanguage: string; 16 | 17 | constructor(public settings: SettingsService, public themes: ThemesService, public translator: TranslatorService) { 18 | this.currentTheme = themes.getDefaultTheme(); 19 | this.selectedLanguage = this.getLangs()[0].code; 20 | } 21 | 22 | ngOnInit() { } 23 | 24 | setTheme() { 25 | this.themes.setTheme(this.currentTheme); 26 | } 27 | 28 | getLangs() { 29 | return this.translator.getAvailableLanguages(); 30 | } 31 | 32 | setLang(value) { 33 | this.translator.useLanguage(value); 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /src/app/routes/tables/angulargrid/angulargrid.component.html: -------------------------------------------------------------------------------- 1 |
Tables 2 | An Advanced Datagrid for AngularJS 3 |
4 |
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 |
13 | 14 |
15 |
16 | 17 | 18 | 19 | 20 |
21 | -------------------------------------------------------------------------------- /src/app/shared/styles/bootstrap/bootstrap/_mixins.scss: -------------------------------------------------------------------------------- 1 | // Mixins 2 | // -------------------------------------------------- 3 | 4 | // Utilities 5 | @import "mixins/hide-text"; 6 | @import "mixins/opacity"; 7 | @import "mixins/image"; 8 | @import "mixins/labels"; 9 | @import "mixins/reset-filter"; 10 | @import "mixins/resize"; 11 | @import "mixins/responsive-visibility"; 12 | @import "mixins/size"; 13 | @import "mixins/tab-focus"; 14 | @import "mixins/reset-text"; 15 | @import "mixins/text-emphasis"; 16 | @import "mixins/text-overflow"; 17 | @import "mixins/vendor-prefixes"; 18 | 19 | // Components 20 | @import "mixins/alerts"; 21 | @import "mixins/buttons"; 22 | @import "mixins/panels"; 23 | @import "mixins/pagination"; 24 | @import "mixins/list-group"; 25 | @import "mixins/nav-divider"; 26 | @import "mixins/forms"; 27 | @import "mixins/progress-bar"; 28 | @import "mixins/table-row"; 29 | 30 | // Skins 31 | @import "mixins/background-variant"; 32 | @import "mixins/border-radius"; 33 | @import "mixins/gradients"; 34 | 35 | // Layout 36 | @import "mixins/clearfix"; 37 | @import "mixins/center-block"; 38 | @import "mixins/nav-vertical-align"; 39 | @import "mixins/grid-framework"; 40 | @import "mixins/grid"; 41 | -------------------------------------------------------------------------------- /src/test.ts: -------------------------------------------------------------------------------- 1 | // This file is required by karma.conf.js and loads recursively all the .spec and framework files 2 | 3 | import 'zone.js/dist/long-stack-trace-zone'; 4 | import 'zone.js/dist/proxy.js'; 5 | import 'zone.js/dist/sync-test'; 6 | import 'zone.js/dist/jasmine-patch'; 7 | import 'zone.js/dist/async-test'; 8 | import 'zone.js/dist/fake-async-test'; 9 | import { getTestBed } from '@angular/core/testing'; 10 | import { 11 | BrowserDynamicTestingModule, 12 | platformBrowserDynamicTesting 13 | } from '@angular/platform-browser-dynamic/testing'; 14 | 15 | // Unfortunately there's no typing for the `__karma__` variable. Just declare it as any. 16 | declare var __karma__: any; 17 | declare var require: any; 18 | 19 | // Prevent Karma from running prematurely. 20 | __karma__.loaded = function () {}; 21 | 22 | // First, initialize the Angular testing environment. 23 | getTestBed().initTestEnvironment( 24 | BrowserDynamicTestingModule, 25 | platformBrowserDynamicTesting() 26 | ); 27 | // Then we find all the tests. 28 | const context = require.context('./', true, /\.spec\.ts$/); 29 | // And load the modules. 30 | context.keys().map(context); 31 | // Finally, start Karma to run the tests. 32 | __karma__.start(); 33 | -------------------------------------------------------------------------------- /src/app/shared/styles/app/progress-extra.scss: -------------------------------------------------------------------------------- 1 | /* ======================================================================== 2 | Component: progress-extra 3 | ========================================================================== */ 4 | 5 | // Different size of Progress bars 6 | 7 | $progress-height-sm: 15px; 8 | $progress-height-xs: 8px; 9 | 10 | .progress-sm.progress, 11 | .progress-sm .progress { 12 | height: $progress-height-sm; 13 | } 14 | 15 | .progress-xs.progress, 16 | .progress-xs .progress { 17 | height: $progress-height-xs; 18 | } 19 | 20 | .m0 .progress { 21 | margin: 0; 22 | } 23 | // Progress color variants 24 | 25 | .progress-bar-purple { 26 | @include progress-bar-variant($brand-purple); 27 | } 28 | .progress-bar-inverse { 29 | @include progress-bar-variant($brand-inverse); 30 | } 31 | .progress-bar-green { 32 | @include progress-bar-variant($brand-green); 33 | } 34 | .progress-bar-pink { 35 | @include progress-bar-variant($brand-pink); 36 | } 37 | .progress-bar-yellow { 38 | @include progress-bar-variant($brand-yellow); 39 | } 40 | 41 | // progress-% classes for simple usage 42 | 43 | @for $i from 1 through 100 { 44 | .progress-#{$i} { 45 | width: percentage($i/100); 46 | } 47 | } -------------------------------------------------------------------------------- /src/app/routes/abusedusers/abusedusers/abusedusers.component.html: -------------------------------------------------------------------------------- 1 |
Abused Users
2 | 3 |
4 | 5 |
6 | 7 |
8 | 10 | 20 |
21 | 22 |
23 | 24 |
25 | 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /src/app/routes/extras/mailbox/view/view.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit, OnDestroy } from '@angular/core'; 2 | import { ActivatedRoute } from "@angular/router"; 3 | import { Http } from '@angular/http'; 4 | 5 | import { SettingsService } from '../../../../core/settings/settings.service'; 6 | 7 | @Component({ 8 | selector: 'app-view', 9 | templateUrl: './view.component.html', 10 | styleUrls: ['./view.component.scss'] 11 | }) 12 | export class ViewComponent implements OnInit { 13 | 14 | private sub: any; 15 | mail: any = {}; 16 | 17 | constructor(public route: ActivatedRoute, public http: Http, public settings: SettingsService) { 18 | 19 | this.sub = this.route.params.subscribe(params => { 20 | 21 | this.http.get('assets/server/mails.json') 22 | .map(data => data.json()) 23 | .subscribe((data) => { 24 | let mailsFound = data.mails.filter(m => (m.id === +params['mid'])); 25 | this.mail = mailsFound.length ? mailsFound[0] : {}; 26 | }); 27 | 28 | }); 29 | 30 | } 31 | 32 | ngOnDestroy() { 33 | this.sub.unsubscribe(); 34 | } 35 | 36 | ngOnInit() { 37 | } 38 | 39 | } 40 | -------------------------------------------------------------------------------- /src/app/routes/pages/login/login.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | import { SettingsService } from '../../../core/settings/settings.service'; 3 | import { FormGroup, FormBuilder, Validators } from '@angular/forms'; 4 | import { CustomValidators } from 'ng2-validation'; 5 | 6 | @Component({ 7 | selector: 'app-login', 8 | templateUrl: './login.component.html', 9 | styleUrls: ['./login.component.scss'] 10 | }) 11 | export class LoginComponent implements OnInit { 12 | 13 | valForm: FormGroup; 14 | 15 | constructor(public settings: SettingsService, fb: FormBuilder) { 16 | 17 | this.valForm = fb.group({ 18 | 'email': [null, Validators.compose([Validators.required, CustomValidators.email])], 19 | 'password': [null, Validators.required] 20 | }); 21 | 22 | } 23 | 24 | submitForm($ev, value: any) { 25 | $ev.preventDefault(); 26 | for (let c in this.valForm.controls) { 27 | this.valForm.controls[c].markAsTouched(); 28 | } 29 | if (this.valForm.valid) { 30 | console.log('Valid!'); 31 | console.log(value); 32 | } 33 | } 34 | 35 | ngOnInit() { 36 | 37 | } 38 | 39 | } 40 | -------------------------------------------------------------------------------- /src/app/shared/styles/app/row-extra.scss: -------------------------------------------------------------------------------- 1 | /* ======================================================================== 2 | Component: row-extra 3 | ========================================================================== */ 4 | 5 | 6 | // Different container size to wrap content 7 | 8 | .container-sm { 9 | max-width: $container-sm; 10 | width: auto; 11 | } 12 | .container-md { 13 | max-width: $container-md; 14 | width: auto; 15 | } 16 | .container-lg { 17 | max-width: $container-lg; 18 | width: auto; 19 | } 20 | // 21 | // Utilities to manage bootstrap rows and cols 22 | // with more flexibility 23 | // Use in conjunction with .row 24 | // --------------------------------------------- 25 | 26 | // Display a row using table layout 27 | // allows to have vertically aligned elements 28 | 29 | .row-table { 30 | display: table; 31 | table-layout: fixed; 32 | height: 100%; 33 | width: 100%; 34 | margin: 0; 35 | 36 | > [class*="col-"] { 37 | display: table-cell; 38 | float: none; 39 | table-layout: fixed; 40 | vertical-align: middle; 41 | } 42 | } 43 | 44 | // Remove padding and collapse columns 45 | .row-flush { 46 | > [class*="col-"] { 47 | padding-left: 0; 48 | padding-right: 0; 49 | } 50 | } -------------------------------------------------------------------------------- /src/app/shared/styles/bootstrap/bootstrap/_media.scss: -------------------------------------------------------------------------------- 1 | .media { 2 | // Proper spacing between instances of .media 3 | margin-top: 15px; 4 | 5 | &:first-child { 6 | margin-top: 0; 7 | } 8 | } 9 | 10 | .media, 11 | .media-body { 12 | zoom: 1; 13 | overflow: hidden; 14 | } 15 | 16 | .media-body { 17 | width: 10000px; 18 | } 19 | 20 | .media-object { 21 | display: block; 22 | 23 | // Fix collapse in webkit from max-width: 100% and display: table-cell. 24 | &.img-thumbnail { 25 | max-width: none; 26 | } 27 | } 28 | 29 | .media-right, 30 | .media > .pull-right { 31 | padding-left: 10px; 32 | } 33 | 34 | .media-left, 35 | .media > .pull-left { 36 | padding-right: 10px; 37 | } 38 | 39 | .media-left, 40 | .media-right, 41 | .media-body { 42 | display: table-cell; 43 | vertical-align: top; 44 | } 45 | 46 | .media-middle { 47 | vertical-align: middle; 48 | } 49 | 50 | .media-bottom { 51 | vertical-align: bottom; 52 | } 53 | 54 | // Reset margins on headings for tighter default spacing 55 | .media-heading { 56 | margin-top: 0; 57 | margin-bottom: 5px; 58 | } 59 | 60 | // Media list variation 61 | // 62 | // Undo default ul/ol styles 63 | .media-list { 64 | padding-left: 0; 65 | list-style: none; 66 | } 67 | -------------------------------------------------------------------------------- /src/app/routes/abusedcomments/abusedcomments/abusedcomments.component.html: -------------------------------------------------------------------------------- 1 |
Abused Comments
2 | 3 |
4 | 5 |
6 | 7 |
8 | 10 | 20 |
21 | 22 |
23 | 24 |
25 | 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /src/app/routes/extras/bugtracker/bugtracker.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | 3 | import { ColorsService } from '../../../shared/colors/colors.service'; 4 | 5 | @Component({ 6 | selector: 'app-bugtracker', 7 | templateUrl: './bugtracker.component.html', 8 | styleUrls: ['./bugtracker.component.scss'] 9 | }) 10 | export class BugtrackerComponent implements OnInit { 11 | 12 | sparkOptionsInfo = { 13 | type: 'pie', 14 | sliceColors: [this.colors.byName('gray-lighter'), this.colors.byName('info')], 15 | height: 50 16 | }; 17 | 18 | sparkOptionsWarning = { 19 | type: 'pie', 20 | sliceColors: [this.colors.byName('gray-lighter'), this.colors.byName('warning')], 21 | height: 50 22 | }; 23 | 24 | sparkOptionsSuccess = { 25 | type: 'pie', 26 | sliceColors: [this.colors.byName('gray-lighter'), this.colors.byName('success')], 27 | height: 50 28 | }; 29 | 30 | sparkOptionsDanger = { 31 | type: 'pie', 32 | sliceColors: [this.colors.byName('gray-lighter'), this.colors.byName('danger')], 33 | height: 50 34 | }; 35 | 36 | constructor(public colors: ColorsService) { } 37 | 38 | ngOnInit() { 39 | } 40 | 41 | } 42 | -------------------------------------------------------------------------------- /src/app/routes/extras/teamviewer/teamviewer.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | 3 | import { ColorsService } from '../../../shared/colors/colors.service'; 4 | 5 | @Component({ 6 | selector: 'app-teamviewer', 7 | templateUrl: './teamviewer.component.html', 8 | styleUrls: ['./teamviewer.component.scss'] 9 | }) 10 | export class TeamviewerComponent implements OnInit { 11 | 12 | sparkOptionsInfo = { 13 | type: 'pie', 14 | sliceColors: [this.colors.byName('gray-lighter'), this.colors.byName('info')], 15 | height: 24 16 | }; 17 | 18 | sparkOptionsWarning = { 19 | type: 'pie', 20 | sliceColors: [this.colors.byName('gray-lighter'), this.colors.byName('warning')], 21 | height: 24 22 | }; 23 | 24 | sparkOptionsSuccess = { 25 | type: 'pie', 26 | sliceColors: [this.colors.byName('gray-lighter'), this.colors.byName('success')], 27 | height: 24 28 | }; 29 | 30 | sparkOptionsDanger = { 31 | type: 'pie', 32 | sliceColors: [this.colors.byName('gray-lighter'), this.colors.byName('danger')], 33 | height: 24 34 | }; 35 | 36 | constructor(public colors: ColorsService) { } 37 | 38 | ngOnInit() { 39 | } 40 | 41 | } 42 | -------------------------------------------------------------------------------- /src/assets/codemirror/theme/eclipse.css: -------------------------------------------------------------------------------- 1 | .cm-s-eclipse span.cm-meta { color: #FF1717; } 2 | .cm-s-eclipse span.cm-keyword { line-height: 1em; font-weight: bold; color: #7F0055; } 3 | .cm-s-eclipse span.cm-atom { color: #219; } 4 | .cm-s-eclipse span.cm-number { color: #164; } 5 | .cm-s-eclipse span.cm-def { color: #00f; } 6 | .cm-s-eclipse span.cm-variable { color: black; } 7 | .cm-s-eclipse span.cm-variable-2 { color: #0000C0; } 8 | .cm-s-eclipse span.cm-variable-3 { color: #0000C0; } 9 | .cm-s-eclipse span.cm-property { color: black; } 10 | .cm-s-eclipse span.cm-operator { color: black; } 11 | .cm-s-eclipse span.cm-comment { color: #3F7F5F; } 12 | .cm-s-eclipse span.cm-string { color: #2A00FF; } 13 | .cm-s-eclipse span.cm-string-2 { color: #f50; } 14 | .cm-s-eclipse span.cm-qualifier { color: #555; } 15 | .cm-s-eclipse span.cm-builtin { color: #30a; } 16 | .cm-s-eclipse span.cm-bracket { color: #cc7; } 17 | .cm-s-eclipse span.cm-tag { color: #170; } 18 | .cm-s-eclipse span.cm-attribute { color: #00c; } 19 | .cm-s-eclipse span.cm-link { color: #219; } 20 | .cm-s-eclipse span.cm-error { color: #f00; } 21 | 22 | .cm-s-eclipse .CodeMirror-activeline-background { background: #e8f2ff; } 23 | .cm-s-eclipse .CodeMirror-matchingbracket { outline:1px solid grey; color:black !important; } 24 | -------------------------------------------------------------------------------- /src/app/routes/pages/lock/lock.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit, Injector } from '@angular/core'; 2 | import { SettingsService } from '../../../core/settings/settings.service'; 3 | import { FormGroup, FormBuilder, Validators } from '@angular/forms'; 4 | import { Router } from '@angular/router'; 5 | 6 | @Component({ 7 | selector: 'app-lock', 8 | templateUrl: './lock.component.html', 9 | styleUrls: ['./lock.component.scss'] 10 | }) 11 | export class LockComponent implements OnInit { 12 | 13 | valForm: FormGroup; 14 | router: Router; 15 | 16 | constructor(public settings: SettingsService, fb: FormBuilder, public injector: Injector) { 17 | 18 | this.valForm = fb.group({ 19 | 'password': [null, Validators.required] 20 | }); 21 | 22 | } 23 | 24 | submitForm($ev, value: any) { 25 | $ev.preventDefault(); 26 | for (let c in this.valForm.controls) { 27 | this.valForm.controls[c].markAsTouched(); 28 | } 29 | if (this.valForm.valid) { 30 | console.log('Valid!'); 31 | console.log(value); 32 | this.router.navigate(['home']); 33 | } 34 | } 35 | 36 | ngOnInit() { 37 | this.router = this.injector.get(Router); 38 | } 39 | 40 | } 41 | -------------------------------------------------------------------------------- /src/app/shared/styles/app/summernote.scss: -------------------------------------------------------------------------------- 1 | // Summernote 2 | 3 | .summernote { 4 | + .note-editor { 5 | background-image: none !important; 6 | &.note-frame { 7 | border-color: $gray-light; 8 | &.fullscreen { 9 | margin-top: 0; 10 | @media only screen and (min-width: $mq-tablet) { 11 | top: $navbar-hg; 12 | left: $aside-wd; 13 | right: 0; 14 | width: auto !important; 15 | } 16 | } 17 | } 18 | } 19 | } 20 | // Summernote fullscreen layout support 21 | .aside-collapsed { 22 | .summernote + .note-editor.note-frame.fullscreen { 23 | @media only screen and (min-width: $mq-tablet) { 24 | left: $aside-wd-collapsed; 25 | } 26 | } 27 | } 28 | 29 | .aside-collapsed-text { 30 | .summernote + .note-editor.note-frame.fullscreen { 31 | @media only screen and (min-width: $mq-tablet) { 32 | left: $aside-wd-collapsed-text; 33 | } 34 | } 35 | } 36 | 37 | .aside-float { 38 | .summernote + .note-editor.note-frame.fullscreen { 39 | @media only screen and (min-width: $mq-tablet) { 40 | margin-left: 30px; 41 | } 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /src/styles.scss: -------------------------------------------------------------------------------- 1 | /* You can add global styles to this file, and also import other style files */ 2 | 3 | //== Vendor 4 | @import '../node_modules/font-awesome/css/font-awesome.css'; 5 | @import '../node_modules/simple-line-icons/css/simple-line-icons.css'; 6 | @import '../node_modules/weather-icons/css/weather-icons.css'; 7 | @import '../node_modules/weather-icons/css/weather-icons-wind.css'; 8 | 9 | @import '../node_modules/spinkit/css/spinkit.css'; 10 | @import '../node_modules/loaders.css/loaders.css'; 11 | 12 | @import '../node_modules/angular2-toaster/toaster.css'; 13 | 14 | @import '../node_modules/ng2-dnd/style.css'; 15 | 16 | @import '../node_modules/ag-grid/dist/styles/ag-grid.css'; 17 | @import '../node_modules/ag-grid/dist/styles/theme-fresh.css'; 18 | 19 | @import '../node_modules/ika.jvectormap/jquery-jvectormap-1.2.2.css'; 20 | 21 | @import '../node_modules/jqcloud2/dist/jqcloud.css'; 22 | 23 | @import '../node_modules/summernote/dist/summernote.css'; 24 | 25 | @import '../node_modules/fullcalendar/dist/fullcalendar.min.css'; 26 | 27 | @import '../node_modules/codemirror/lib/codemirror.css'; 28 | 29 | @import '../node_modules/sweetalert/dist/sweetalert.css'; 30 | 31 | //== Bootstrap 32 | @import "./app/shared/styles/bootstrap.scss"; 33 | //== Application 34 | @import "./app/shared/styles/app.scss"; 35 | -------------------------------------------------------------------------------- /src/app/routes/ecommerce/ecommerce.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from '@angular/core'; 2 | import { Routes, RouterModule } from '@angular/router'; 3 | 4 | import { SharedModule } from '../../shared/shared.module'; 5 | import { OrdersComponent } from './orders/orders.component'; 6 | import { OrderviewComponent } from './orderview/orderview.component'; 7 | import { ProductsComponent } from './products/products.component'; 8 | import { ProductviewComponent } from './productview/productview.component'; 9 | import { CheckoutComponent } from './checkout/checkout.component'; 10 | 11 | const routes: Routes = [ 12 | { path: 'orders', component: OrdersComponent }, 13 | { path: 'orderview', component: OrderviewComponent }, 14 | { path: 'products', component: ProductsComponent }, 15 | { path: 'productview', component: ProductviewComponent }, 16 | { path: 'checkout', component: CheckoutComponent } 17 | ]; 18 | 19 | @NgModule({ 20 | imports: [ 21 | SharedModule, 22 | RouterModule.forChild(routes) 23 | ], 24 | declarations: [ 25 | OrdersComponent, 26 | OrderviewComponent, 27 | ProductsComponent, 28 | ProductviewComponent, 29 | CheckoutComponent 30 | ], 31 | exports: [ 32 | RouterModule 33 | ] 34 | }) 35 | export class EcommerceModule { } 36 | -------------------------------------------------------------------------------- /src/assets/codemirror/mode/diff/diff.js: -------------------------------------------------------------------------------- 1 | // CodeMirror, copyright (c) by Marijn Haverbeke and others 2 | // Distributed under an MIT license: http://codemirror.net/LICENSE 3 | 4 | (function(mod) { 5 | if (typeof exports == "object" && typeof module == "object") // CommonJS 6 | mod(require("../../lib/codemirror")); 7 | else if (typeof define == "function" && define.amd) // AMD 8 | define(["../../lib/codemirror"], mod); 9 | else // Plain browser env 10 | mod(CodeMirror); 11 | })(function(CodeMirror) { 12 | "use strict"; 13 | 14 | CodeMirror.defineMode("diff", function() { 15 | 16 | var TOKEN_NAMES = { 17 | '+': 'positive', 18 | '-': 'negative', 19 | '@': 'meta' 20 | }; 21 | 22 | return { 23 | token: function(stream) { 24 | var tw_pos = stream.string.search(/[\t ]+?$/); 25 | 26 | if (!stream.sol() || tw_pos === 0) { 27 | stream.skipToEnd(); 28 | return ("error " + ( 29 | TOKEN_NAMES[stream.string.charAt(0)] || '')).replace(/ $/, ''); 30 | } 31 | 32 | var token_name = TOKEN_NAMES[stream.peek()] || stream.skipToEnd(); 33 | 34 | if (tw_pos === -1) { 35 | stream.skipToEnd(); 36 | } else { 37 | stream.pos = tw_pos; 38 | } 39 | 40 | return token_name; 41 | } 42 | }; 43 | }); 44 | 45 | CodeMirror.defineMIME("text/x-diff", "diff"); 46 | 47 | }); 48 | -------------------------------------------------------------------------------- /src/app/shared/styles/app/table-extras.scss: -------------------------------------------------------------------------------- 1 | /* ======================================================================== 2 | Component: table-extras 3 | ========================================================================== */ 4 | 5 | // 6 | // Add support to components inside tables 7 | // 8 | 9 | .table { 10 | > thead > tr > th { 11 | padding: 14px 8px; 12 | color: #888; 13 | } 14 | > tbody > tr > td { 15 | vertical-align: middle; 16 | > .media { 17 | img { 18 | width: 36px; 19 | height: 36px; 20 | margin: 0 auto; 21 | } 22 | } 23 | } 24 | 25 | .checkbox { 26 | margin: 0 auto; 27 | width: 20px; 28 | } 29 | 30 | .progress { 31 | margin-bottom: 0 32 | } 33 | 34 | .radial-bar { 35 | margin-bottom: 0; 36 | margin: 0 auto; 37 | } 38 | } 39 | 40 | .jqstooltip { box-sizing: content-box;} 41 | 42 | // Extended table demos 43 | 44 | #table-ext-1 { 45 | th { 46 | &:nth-child(1) { 47 | width: 3%; 48 | } 49 | &:nth-child(2) { 50 | width: 5%; 51 | } 52 | &:nth-child(7) { 53 | width: 5%; 54 | } 55 | &:nth-child(9) { 56 | width: 5%; 57 | } 58 | } 59 | } 60 | 61 | #table-ext-2 { 62 | th { 63 | &:nth-child(1) { 64 | width: 5%; 65 | } 66 | &:nth-child(3) { 67 | width: 10%; 68 | } 69 | } 70 | } -------------------------------------------------------------------------------- /src/app/shared/styles/app/half-float.scss: -------------------------------------------------------------------------------- 1 | /* ======================================================================== 2 | Component: half-float 3 | ========================================================================== */ 4 | 5 | // 6 | // Float an absolute positioned element 7 | // and align it with a half top and bottom offset 8 | // relative to its parent 9 | // 10 | // .half-float 11 | // > .half-float-[top|bottom] 12 | // 13 | // ---------------------------------------------- 14 | 15 | $half-aligned-size: 120px; 16 | $half-aligned-gutter: 5px; 17 | 18 | .half-float { 19 | position: relative; 20 | margin-bottom: ($half-aligned-size/2) + $half-aligned-gutter; 21 | 22 | .half-float-bottom, 23 | .half-float-top { 24 | position: absolute; 25 | left: 50%; 26 | bottom: -($half-aligned-size/2); 27 | width: $half-aligned-size; 28 | height: $half-aligned-size; 29 | margin-left: -($half-aligned-size/2); 30 | z-index: 2; 31 | } 32 | 33 | .half-float-top { 34 | bottom: auto; 35 | top: -($half-aligned-size/2); 36 | } 37 | 38 | // The next sibling elements gets a negative margin 39 | // and padding to collapse the space between 40 | & + * { 41 | margin-top: -($half-aligned-size/2) + $half-aligned-gutter; 42 | padding-top: ($half-aligned-size/2) + $half-aligned-gutter; 43 | } 44 | 45 | } 46 | -------------------------------------------------------------------------------- /src/app/layout/layout.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from '@angular/core'; 2 | 3 | import { LayoutComponent } from './layout.component'; 4 | import { SidebarComponent } from './sidebar/sidebar.component'; 5 | import { HeaderComponent } from './header/header.component'; 6 | import { NavsearchComponent } from './header/navsearch/navsearch.component'; 7 | import { OffsidebarComponent } from './offsidebar/offsidebar.component'; 8 | import { UserblockComponent } from './sidebar/userblock/userblock.component'; 9 | import { UserblockService } from './sidebar/userblock/userblock.service'; 10 | import { FooterComponent } from './footer/footer.component'; 11 | 12 | import { SharedModule } from '../shared/shared.module'; 13 | 14 | @NgModule({ 15 | imports: [ 16 | SharedModule 17 | ], 18 | providers: [ 19 | UserblockService 20 | ], 21 | declarations: [ 22 | LayoutComponent, 23 | SidebarComponent, 24 | UserblockComponent, 25 | HeaderComponent, 26 | NavsearchComponent, 27 | OffsidebarComponent, 28 | FooterComponent 29 | ], 30 | exports: [ 31 | LayoutComponent, 32 | SidebarComponent, 33 | UserblockComponent, 34 | HeaderComponent, 35 | NavsearchComponent, 36 | OffsidebarComponent, 37 | FooterComponent 38 | ] 39 | }) 40 | export class LayoutModule { } 41 | -------------------------------------------------------------------------------- /src/app/shared/styles/bootstrap/bootstrap/mixins/_image.scss: -------------------------------------------------------------------------------- 1 | // Image Mixins 2 | // - Responsive image 3 | // - Retina image 4 | 5 | 6 | // Responsive image 7 | // 8 | // Keep images from scaling beyond the width of their parents. 9 | @mixin img-responsive($display: block) { 10 | display: $display; 11 | max-width: 100%; // Part 1: Set a maximum relative to the parent 12 | height: auto; // Part 2: Scale the height according to the width, otherwise you get stretching 13 | } 14 | 15 | 16 | // Retina image 17 | // 18 | // Short retina mixin for setting background-image and -size. Note that the 19 | // spelling of `min--moz-device-pixel-ratio` is intentional. 20 | @mixin img-retina($file-1x, $file-2x, $width-1x, $height-1x) { 21 | background-image: url(if($bootstrap-sass-asset-helper, twbs-image-path("#{$file-1x}"), "#{$file-1x}")); 22 | 23 | @media 24 | only screen and (-webkit-min-device-pixel-ratio: 2), 25 | only screen and ( min--moz-device-pixel-ratio: 2), 26 | only screen and ( -o-min-device-pixel-ratio: 2/1), 27 | only screen and ( min-device-pixel-ratio: 2), 28 | only screen and ( min-resolution: 192dpi), 29 | only screen and ( min-resolution: 2dppx) { 30 | background-image: url(if($bootstrap-sass-asset-helper, twbs-image-path("#{$file-2x}"), "#{$file-2x}")); 31 | background-size: $width-1x $height-1x; 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /src/app/shared/styles/app/dropdown-extra.scss: -------------------------------------------------------------------------------- 1 | /* ======================================================================== 2 | Component: dropdown-extras 3 | ========================================================================== */ 4 | 5 | // 6 | // Dropdopwn extras 7 | // 8 | // ------------------------------ 9 | 10 | 11 | // place components with more space 12 | .dropdown-lg > .dropdown-menu { 13 | min-width: 200px; 14 | } 15 | 16 | // Allows to mix list group inside dropdowns 17 | .dropdown-list { 18 | 19 | > .dropdown-menu { 20 | padding: 0; 21 | min-width: 220px; 22 | } 23 | 24 | .list-group { 25 | margin: 0; 26 | } 27 | 28 | .list-group-item { 29 | border-radius: 0; 30 | border-left: 0; 31 | border-right: 0; 32 | &:first-child { 33 | border-top: 0; 34 | } 35 | &:last-child { 36 | border-bottom: 0; 37 | } 38 | } 39 | } 40 | 41 | // Labels inside dropdowns 42 | .dropdown { 43 | > a { 44 | position: relative; 45 | > .label { 46 | position: absolute; 47 | top: 0; 48 | right: 0; 49 | padding: 2px 5px; 50 | @media only screen and (min-width: $mq-tablet) { 51 | top: 10px; 52 | } 53 | } 54 | } 55 | } 56 | 57 | // Dropdown header 58 | .dropdown-menu-header { 59 | padding: 10px 15px; 60 | background-color: #fafafa; 61 | border-bottom: 1px solid $dropdown-border; 62 | } -------------------------------------------------------------------------------- /src/app/app.component.spec.ts: -------------------------------------------------------------------------------- 1 | /* tslint:disable:no-unused-variable */ 2 | 3 | import { TestBed, async} from '@angular/core/testing'; 4 | import { AppComponent } from './app.component'; 5 | import { TranslateModule } from '@ngx-translate/core'; 6 | 7 | import { CoreModule } from './core/core.module'; 8 | import { LayoutModule } from './layout/layout.module'; 9 | import { SharedModule } from './shared/shared.module'; 10 | import { RoutesModule } from './routes/routes.module'; 11 | import { APP_BASE_HREF } from '@angular/common'; 12 | 13 | describe('App: Ng2angle', () => { 14 | beforeEach(() => { 15 | 16 | jasmine.DEFAULT_TIMEOUT_INTERVAL = 60000; 17 | 18 | TestBed.configureTestingModule({ 19 | declarations: [ 20 | AppComponent 21 | ], 22 | imports: [ 23 | TranslateModule.forRoot(), 24 | CoreModule, 25 | LayoutModule, 26 | SharedModule, 27 | RoutesModule 28 | ], 29 | providers: [ 30 | { provide: APP_BASE_HREF, useValue: '/' } 31 | ] 32 | }); 33 | }); 34 | 35 | it('should create the app', async(() => { 36 | let fixture = TestBed.createComponent(AppComponent); 37 | let app = fixture.debugElement.componentInstance; 38 | expect(app).toBeTruthy(); 39 | })); 40 | 41 | }); 42 | -------------------------------------------------------------------------------- /src/app/routes/elements/infinitescroll/infinitescroll.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-infinitescroll', 5 | templateUrl: './infinitescroll.component.html', 6 | styleUrls: ['./infinitescroll.component.scss'] 7 | }) 8 | export class InfinitescrollComponent implements OnInit { 9 | 10 | array = []; 11 | sum = 100; 12 | 13 | array2 = []; 14 | sum2 = 100; 15 | 16 | constructor() { 17 | for (let i = 0; i < this.sum; ++i) { 18 | this.array.push(i); 19 | } 20 | for (let i = 0; i < this.sum2; ++i) { 21 | this.array2.push(i); 22 | } 23 | } 24 | 25 | onScrollDown() { 26 | console.log('scrolled!!'); 27 | 28 | // add another 20 items 29 | const start = this.sum; 30 | this.sum += 50; 31 | for (let i = start; i < this.sum; ++i) { 32 | this.array.push(i); 33 | } 34 | } 35 | 36 | onScrollDown2() { 37 | console.log('scrolled 2!!'); 38 | 39 | // add another 20 items 40 | const start = this.sum2; 41 | this.sum2 += 50; 42 | for (let i = start; i < this.sum2; ++i) { 43 | this.array2.push(i); 44 | } 45 | } 46 | 47 | onScrollUp() { 48 | console.log('scrolled up!!'); 49 | } 50 | 51 | ngOnInit() { 52 | } 53 | 54 | } 55 | -------------------------------------------------------------------------------- /src/app/routes/extras/mailbox/mailbox.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | import { Router } from "@angular/router"; 3 | 4 | @Component({ 5 | selector: 'app-mailbox', 6 | templateUrl: './mailbox.component.html', 7 | styleUrls: ['./mailbox.component.scss'] 8 | }) 9 | export class MailboxComponent implements OnInit { 10 | 11 | mailboxMenuCollapsed = true; 12 | 13 | folders = [ 14 | { name: 'Inbox', folder: 'inbox', alert: 42, icon: 'fa-inbox' }, 15 | { name: 'Starred', folder: 'starred', alert: 10, icon: 'fa-star' }, 16 | { name: 'Sent', folder: 'sent', alert: 0, icon: 'fa-paper-plane-o' }, 17 | { name: 'Draft', folder: 'draft', alert: 5, icon: 'fa-edit' }, 18 | { name: 'Trash', folder: 'trash', alert: 0, icon: 'fa-trash' } 19 | ]; 20 | 21 | labels = [ 22 | { name: 'Red', color: 'danger' }, 23 | { name: 'Pink', color: 'pink' }, 24 | { name: 'Blue', color: 'info' }, 25 | { name: 'Yellow', color: 'warning' } 26 | ]; 27 | 28 | mail = { 29 | cc: false, 30 | bcc: false 31 | }; 32 | // Mailbox editr initial content 33 | content = '

Type something..

'; 34 | 35 | constructor(public router: Router) { } 36 | 37 | routeIsActive(routePath: string) { 38 | return this.router.url == routePath; 39 | } 40 | 41 | ngOnInit() { 42 | } 43 | 44 | } 45 | -------------------------------------------------------------------------------- /src/app/routes/extras/mailbox/folder/folder.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit, OnDestroy } from '@angular/core'; 2 | import { ActivatedRoute } from "@angular/router"; 3 | import { Http } from '@angular/http'; 4 | 5 | @Component({ 6 | selector: 'app-folder', 7 | templateUrl: './folder.component.html', 8 | styleUrls: ['./folder.component.scss'] 9 | }) 10 | export class FolderComponent implements OnInit, OnDestroy { 11 | 12 | folder: string = null; 13 | mails: Array = []; 14 | private sub: any; 15 | 16 | constructor(public route: ActivatedRoute, public http: Http) { 17 | 18 | this.http.get('assets/server/mails.json') 19 | .map(data => data.json()) 20 | .subscribe((data) => { 21 | this.mails = data.mails; 22 | }); 23 | 24 | this.sub = this.route.params.subscribe(params => { 25 | this.folder = params['folder'] === 'inbox' ? '' : params['folder']; 26 | }); 27 | } 28 | 29 | ngOnInit() { 30 | 31 | } 32 | 33 | ngOnDestroy() { 34 | this.sub.unsubscribe(); 35 | } 36 | 37 | isMailOfFolder(mail) { 38 | return mail.folder === this.folder; 39 | } 40 | 41 | folderMailsCount() { 42 | return this.folderMails().length; 43 | } 44 | 45 | folderMails() { 46 | return this.mails.filter(m => (m.folder === this.folder || this.folder === '')) 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /src/app/routes/pages/error500/error500.component.html: -------------------------------------------------------------------------------- 1 |
2 |
3 | 4 |
5 |
6 | 7 |
8 |
500
9 |

Oh! Something went wrong :(

10 |

Don't worry, we're now checking this.

11 |

In the meantime, please try one of those links below or come back in a moment

12 |
13 | 23 |
24 | © 25 | {{ settings.app.year }} 26 | - 27 | {{ settings.app.name }} 28 |
29 | {{ settings.app.description }} 30 |
31 |
32 |
33 | -------------------------------------------------------------------------------- /src/app/shared/styles/bootstrap/bootstrap/_jumbotron.scss: -------------------------------------------------------------------------------- 1 | // 2 | // Jumbotron 3 | // -------------------------------------------------- 4 | 5 | 6 | .jumbotron { 7 | padding-top: $jumbotron-padding; 8 | padding-bottom: $jumbotron-padding; 9 | margin-bottom: $jumbotron-padding; 10 | color: $jumbotron-color; 11 | background-color: $jumbotron-bg; 12 | 13 | h1, 14 | .h1 { 15 | color: $jumbotron-heading-color; 16 | } 17 | 18 | p { 19 | margin-bottom: ($jumbotron-padding / 2); 20 | font-size: $jumbotron-font-size; 21 | font-weight: 200; 22 | } 23 | 24 | > hr { 25 | border-top-color: darken($jumbotron-bg, 10%); 26 | } 27 | 28 | .container &, 29 | .container-fluid & { 30 | border-radius: $border-radius-large; // Only round corners at higher resolutions if contained in a container 31 | padding-left: ($grid-gutter-width / 2); 32 | padding-right: ($grid-gutter-width / 2); 33 | } 34 | 35 | .container { 36 | max-width: 100%; 37 | } 38 | 39 | @media screen and (min-width: $screen-sm-min) { 40 | padding-top: ($jumbotron-padding * 1.6); 41 | padding-bottom: ($jumbotron-padding * 1.6); 42 | 43 | .container &, 44 | .container-fluid & { 45 | padding-left: ($jumbotron-padding * 2); 46 | padding-right: ($jumbotron-padding * 2); 47 | } 48 | 49 | h1, 50 | .h1 { 51 | font-size: $jumbotron-heading-font-size; 52 | } 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /src/app/routes/tables/tables.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from '@angular/core'; 2 | import { Routes, RouterModule } from '@angular/router'; 3 | import { DataTableModule } from 'angular2-datatable'; 4 | import { Ng2TableModule } from 'ng2-table/ng2-table'; 5 | import { AgGridModule } from 'ag-grid-angular/main'; 6 | 7 | import { SharedModule } from '../../shared/shared.module'; 8 | import { StandardComponent } from './standard/standard.component'; 9 | import { ExtendedComponent } from './extended/extended.component'; 10 | import { DatatableComponent } from './datatable/datatable.component'; 11 | import { AngulargridComponent } from './angulargrid/angulargrid.component'; 12 | 13 | const routes: Routes = [ 14 | { path: 'standard', component: StandardComponent }, 15 | { path: 'extended', component: ExtendedComponent }, 16 | { path: 'datatable', component: DatatableComponent }, 17 | { path: 'aggrid', component: AngulargridComponent } 18 | ]; 19 | 20 | @NgModule({ 21 | imports: [ 22 | SharedModule, 23 | RouterModule.forChild(routes), 24 | DataTableModule, 25 | Ng2TableModule, 26 | AgGridModule.withComponents([AngulargridComponent]) 27 | ], 28 | declarations: [ 29 | StandardComponent, 30 | ExtendedComponent, 31 | DatatableComponent, 32 | AngulargridComponent 33 | ], 34 | exports: [ 35 | RouterModule 36 | ] 37 | }) 38 | export class TablesModule { } 39 | -------------------------------------------------------------------------------- /src/app/routes/account/account/account.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | 3 | import { ColorsService } from '../../../shared/colors/colors.service'; 4 | 5 | @Component({ 6 | selector: 'app-account', 7 | templateUrl: './account.component.html', 8 | styleUrls: ['./account.component.scss'] 9 | }) 10 | export class AccountComponent implements OnInit { 11 | 12 | lat: number = 33.790807; 13 | lng: number = -117.835734; 14 | zoom: number = 14; 15 | scrollwheel = false; 16 | 17 | sparkOptions1 = { 18 | barColor: this.colors.byName('primary'), 19 | height: 20, 20 | barWidth: 3, 21 | barSpacing: 2 22 | }; 23 | 24 | sparkOptions2 = { 25 | type: 'line', 26 | height: 80, 27 | width: '100%', 28 | lineWidth: 2, 29 | lineColor: '#dddddd', 30 | spotColor: '#bbbbbb', 31 | fillColor: '', 32 | highlightLineColor: '#fff', 33 | spotRadius: 3, 34 | resize: true 35 | }; 36 | 37 | sparkOptions3 = { 38 | barColor: '#fff', 39 | height: 50, 40 | barWidth: 6, 41 | barSpacing: 6 42 | }; 43 | 44 | sparkOptions4 = { 45 | barColor: this.colors.byName('primary'), 46 | height: 30, 47 | barWidth: 6, 48 | barSpacing: 6 49 | }; 50 | 51 | constructor(public colors: ColorsService) { } 52 | 53 | ngOnInit() { 54 | } 55 | 56 | } 57 | -------------------------------------------------------------------------------- /src/app/routes/widgets/widgets/widgets.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | 3 | import { ColorsService } from '../../../shared/colors/colors.service'; 4 | 5 | @Component({ 6 | selector: 'app-widgets', 7 | templateUrl: './widgets.component.html', 8 | styleUrls: ['./widgets.component.scss'] 9 | }) 10 | export class WidgetsComponent implements OnInit { 11 | 12 | lat: number = 33.790807; 13 | lng: number = -117.835734; 14 | zoom: number = 14; 15 | scrollwheel = false; 16 | 17 | sparkOptions1 = { 18 | barColor: this.colors.byName('primary'), 19 | height: 20, 20 | barWidth: 3, 21 | barSpacing: 2 22 | }; 23 | 24 | sparkOptions2 = { 25 | type: 'line', 26 | height: 80, 27 | width: '100%', 28 | lineWidth: 2, 29 | lineColor: '#dddddd', 30 | spotColor: '#bbbbbb', 31 | fillColor: '', 32 | highlightLineColor: '#fff', 33 | spotRadius: 3, 34 | resize: true 35 | }; 36 | 37 | sparkOptions3 = { 38 | barColor: '#fff', 39 | height: 50, 40 | barWidth: 6, 41 | barSpacing: 6 42 | }; 43 | 44 | sparkOptions4 = { 45 | barColor: this.colors.byName('primary'), 46 | height: 30, 47 | barWidth: 6, 48 | barSpacing: 6 49 | }; 50 | 51 | constructor(public colors: ColorsService) { } 52 | 53 | ngOnInit() { 54 | } 55 | 56 | } 57 | -------------------------------------------------------------------------------- /src/app/shared/directives/jqcloud/jqcloud.directive.ts: -------------------------------------------------------------------------------- 1 | import { Directive, Input, OnInit, OnDestroy, ElementRef, OnChanges, SimpleChange } from '@angular/core'; 2 | declare var $: any; 3 | 4 | @Directive({ 5 | selector: '[jqcloud]' 6 | }) 7 | export class JqcloudDirective implements OnInit, OnDestroy, OnChanges { 8 | 9 | @Input() words; 10 | @Input() width; 11 | @Input() height; 12 | @Input() steps; 13 | $elem: any; 14 | options: any; 15 | initialized = false; // flag to not update before plugin was initialized 16 | 17 | constructor(element: ElementRef) { 18 | this.$elem = $(element.nativeElement); 19 | this.options = $.fn.jQCloud.defaults.get(); 20 | } 21 | 22 | ngOnInit() { 23 | let opts: any = {}; 24 | if (this.width) { 25 | opts.width = this.width; 26 | } 27 | if (this.height) { 28 | opts.height = this.height; 29 | } 30 | if (this.steps) { 31 | opts.steps = this.steps; 32 | } 33 | 34 | $.extend(this.options, opts); 35 | this.$elem.jQCloud(this.words, opts); 36 | this.initialized = true; 37 | } 38 | 39 | ngOnChanges(changes: { [propertyName: string]: SimpleChange }) { 40 | if (this.initialized && this.words && changes['words']) { 41 | this.$elem.jQCloud('update', this.words); 42 | } 43 | } 44 | 45 | ngOnDestroy() { 46 | this.$elem.jQCloud('destroy'); 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /src/app/shared/styles/bootstrap/bootstrap/_labels.scss: -------------------------------------------------------------------------------- 1 | // 2 | // Labels 3 | // -------------------------------------------------- 4 | 5 | .label { 6 | display: inline; 7 | padding: .2em .6em .3em; 8 | font-size: 75%; 9 | font-weight: bold; 10 | line-height: 1; 11 | color: $label-color; 12 | text-align: center; 13 | white-space: nowrap; 14 | vertical-align: baseline; 15 | border-radius: .25em; 16 | 17 | // [converter] extracted a& to a.label 18 | 19 | // Empty labels collapse automatically (not available in IE8) 20 | &:empty { 21 | display: none; 22 | } 23 | 24 | // Quick fix for labels in buttons 25 | .btn & { 26 | position: relative; 27 | top: -1px; 28 | } 29 | } 30 | 31 | // Add hover effects, but only for links 32 | a.label { 33 | &:hover, 34 | &:focus { 35 | color: $label-link-hover-color; 36 | text-decoration: none; 37 | cursor: pointer; 38 | } 39 | } 40 | 41 | // Colors 42 | // Contextual variations (linked labels get darker on :hover) 43 | 44 | .label-default { 45 | @include label-variant($label-default-bg); 46 | } 47 | 48 | .label-primary { 49 | @include label-variant($label-primary-bg); 50 | } 51 | 52 | .label-success { 53 | @include label-variant($label-success-bg); 54 | } 55 | 56 | .label-info { 57 | @include label-variant($label-info-bg); 58 | } 59 | 60 | .label-warning { 61 | @include label-variant($label-warning-bg); 62 | } 63 | 64 | .label-danger { 65 | @include label-variant($label-danger-bg); 66 | } 67 | -------------------------------------------------------------------------------- /src/app/routes/maps/google/google.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-google', 5 | templateUrl: './google.component.html', 6 | styleUrls: ['./google.component.scss'] 7 | }) 8 | export class GoogleComponent implements OnInit { 9 | 10 | lat: number = 33.790807; 11 | lng: number = -117.835734; 12 | zoom: number = 14; 13 | scrollwheel = false; 14 | 15 | // custom map style 16 | mapStyles = [{ 'featureType': 'water', 'stylers': [{ 'visibility': 'on' }, { 'color': '#bdd1f9' }] }, { 'featureType': 'all', 'elementType': 'labels.text.fill', 'stylers': [{ 'color': '#334165' }] }, { featureType: 'landscape', stylers: [{ color: '#e9ebf1' }] }, { featureType: 'road.highway', elementType: 'geometry', stylers: [{ color: '#c5c6c6' }] }, { featureType: 'road.arterial', elementType: 'geometry', stylers: [{ color: '#fff' }] }, { featureType: 'road.local', elementType: 'geometry', stylers: [{ color: '#fff' }] }, { featureType: 'transit', elementType: 'geometry', stylers: [{ color: '#d8dbe0' }] }, { featureType: 'poi', elementType: 'geometry', stylers: [{ color: '#cfd5e0' }] }, { featureType: 'administrative', stylers: [{ visibility: 'on' }, { lightness: 33 }] }, { featureType: 'poi.park', elementType: 'labels', stylers: [{ visibility: 'on' }, { lightness: 20 }] }, { featureType: 'road', stylers: [{ color: '#d8dbe0', lightness: 20 }] }]; 17 | 18 | constructor() { } 19 | 20 | ngOnInit() { 21 | } 22 | 23 | } 24 | -------------------------------------------------------------------------------- /src/app/routes/blog/post/post.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-post', 5 | templateUrl: './post.component.html', 6 | styleUrls: ['./post.component.scss'] 7 | }) 8 | export class PostComponent implements OnInit { 9 | 10 | words: Array; 11 | 12 | constructor() { 13 | this.words = [ 14 | { 15 | text: 'Lorem', 16 | weight: 13 17 | //link: 'http://themicon.co' 18 | }, { 19 | text: 'Ipsum', 20 | weight: 10.5 21 | }, { 22 | text: 'Dolor', 23 | weight: 9.4 24 | }, { 25 | text: 'Sit', 26 | weight: 8 27 | }, { 28 | text: 'Amet', 29 | weight: 6.2 30 | }, { 31 | text: 'Consectetur', 32 | weight: 5 33 | }, { 34 | text: 'Adipiscing', 35 | weight: 5 36 | }, { 37 | text: 'Sit', 38 | weight: 8 39 | }, { 40 | text: 'Amet', 41 | weight: 6.2 42 | }, { 43 | text: 'Consectetur', 44 | weight: 5 45 | }, { 46 | text: 'Adipiscing', 47 | weight: 5 48 | } 49 | ]; 50 | } 51 | 52 | ngOnInit() { 53 | } 54 | 55 | } 56 | -------------------------------------------------------------------------------- /src/app/routes/blog/list/list.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-list', 5 | templateUrl: './list.component.html', 6 | styleUrls: ['./list.component.scss'] 7 | }) 8 | export class ListComponent implements OnInit { 9 | 10 | words: Array; 11 | 12 | constructor() { 13 | 14 | this.words = [ 15 | { 16 | text: 'Lorem', 17 | weight: 13 18 | //link: 'http://themicon.co' 19 | }, { 20 | text: 'Ipsum', 21 | weight: 10.5 22 | }, { 23 | text: 'Dolor', 24 | weight: 9.4 25 | }, { 26 | text: 'Sit', 27 | weight: 8 28 | }, { 29 | text: 'Amet', 30 | weight: 6.2 31 | }, { 32 | text: 'Consectetur', 33 | weight: 5 34 | }, { 35 | text: 'Adipiscing', 36 | weight: 5 37 | }, { 38 | text: 'Sit', 39 | weight: 8 40 | }, { 41 | text: 'Amet', 42 | weight: 6.2 43 | }, { 44 | text: 'Consectetur', 45 | weight: 5 46 | }, { 47 | text: 'Adipiscing', 48 | weight: 5 49 | } 50 | ]; 51 | } 52 | 53 | ngOnInit() { 54 | } 55 | 56 | } 57 | -------------------------------------------------------------------------------- /src/app/routes/commentmanager/commentmanager/commentmanager.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | 3 | import { ColorsService } from '../../../shared/colors/colors.service'; 4 | 5 | @Component({ 6 | selector: 'app-commentmanager', 7 | templateUrl: './commentmanager.component.html', 8 | styleUrls: ['./commentmanager.component.scss'] 9 | }) 10 | export class CommentManagerComponent implements OnInit { 11 | 12 | lat: number = 33.790807; 13 | lng: number = -117.835734; 14 | zoom: number = 14; 15 | scrollwheel = false; 16 | 17 | sparkOptions1 = { 18 | barColor: this.colors.byName('primary'), 19 | height: 20, 20 | barWidth: 3, 21 | barSpacing: 2 22 | }; 23 | 24 | sparkOptions2 = { 25 | type: 'line', 26 | height: 80, 27 | width: '100%', 28 | lineWidth: 2, 29 | lineColor: '#dddddd', 30 | spotColor: '#bbbbbb', 31 | fillColor: '', 32 | highlightLineColor: '#fff', 33 | spotRadius: 3, 34 | resize: true 35 | }; 36 | 37 | sparkOptions3 = { 38 | barColor: '#fff', 39 | height: 50, 40 | barWidth: 6, 41 | barSpacing: 6 42 | }; 43 | 44 | sparkOptions4 = { 45 | barColor: this.colors.byName('primary'), 46 | height: 30, 47 | barWidth: 6, 48 | barSpacing: 6 49 | }; 50 | 51 | constructor(public colors: ColorsService) { } 52 | 53 | ngOnInit() { 54 | } 55 | 56 | } 57 | -------------------------------------------------------------------------------- /src/app/shared/styles/app/layout-animation.scss: -------------------------------------------------------------------------------- 1 | /* ======================================================================== 2 | Component: layout-animation.less 3 | ========================================================================== */ 4 | 5 | .wrapper > .aside { 6 | @include transition(#{"width .2s cubic-bezier(0.35, 0, 0.25, 1), translate .2s cubic-bezier(0.35, 0, 0.25, 1)"}); 7 | } 8 | .aside-inner, 9 | .navbar-header, 10 | .sidebar > .nav > li { 11 | @include transition(width .2s cubic-bezier(0.35, 0, 0.25, 1)); 12 | } 13 | .wrapper > section { 14 | @include transition(margin-left .2s cubic-bezier(0.35, 0, 0.25, 1)); 15 | } 16 | .sidebar > .nav .label { 17 | @include animation(fadeInRight 1s); 18 | @include animation-fill-mode(both); 19 | } 20 | .aside-collapsed .sidebar > .nav .label, 21 | .aside-collapsed-text .sidebar > .nav .label { 22 | @include animation(fadeIn 1s); 23 | } 24 | .sidebar .nav > li > a { 25 | @include animation(fadeInLeft .5s); 26 | } 27 | 28 | .sidebar > .nav > .nav-heading, 29 | .sidebar > .nav > li > a > span, 30 | .navbar-brand .brand-logo { 31 | @include animation(fadeIn 1s); 32 | } 33 | 34 | .sidebar li > a, .sidebar li > .nav-item, 35 | .sidebar > .nav > .nav-heading { 36 | white-space: nowrap; 37 | } 38 | 39 | .aside-collapsed, 40 | .aside-collapsed-text { 41 | .user-block-picture { 42 | @include transition(width .2s cubic-bezier(0.35, 0, 0.25, 1)); 43 | } 44 | .user-block { 45 | @include transition(padding .2s cubic-bezier(0.35, 0, 0.25, 1)); 46 | } 47 | } --------------------------------------------------------------------------------