├── src ├── assets │ ├── .gitkeep │ ├── .npmignore │ ├── 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 │ ├── codemirror │ │ ├── source │ │ │ ├── css │ │ │ │ └── style.css │ │ │ ├── index.html │ │ │ └── another.html │ │ ├── theme │ │ │ ├── ambiance-mobile.css │ │ │ ├── neat.css │ │ │ ├── elegant.css │ │ │ ├── neo.css │ │ │ ├── eclipse.css │ │ │ └── bespin.css │ │ ├── mode │ │ │ ├── tiddlywiki │ │ │ │ └── tiddlywiki.css │ │ │ ├── tiki │ │ │ │ └── tiki.css │ │ │ ├── diff │ │ │ │ └── diff.js │ │ │ └── htmlembedded │ │ │ │ └── htmlembedded.js │ │ └── filetree.json │ ├── server │ │ └── chart │ │ │ ├── bar.json │ │ │ ├── pie.json │ │ │ ├── donut.json │ │ │ ├── area.json │ │ │ ├── spline.json │ │ │ ├── splinev2.json │ │ │ ├── splinev3.json │ │ │ ├── line.json │ │ │ ├── barstacked.json │ │ │ └── barstackedv2.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 │ │ │ │ └── navsearch.component.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 │ │ ├── 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 │ │ ├── extras │ │ │ ├── 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 │ │ │ ├── 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 │ │ │ ├── faq │ │ │ │ ├── faq.component.scss │ │ │ │ └── faq.component.ts │ │ │ └── codeeditor │ │ │ │ └── codeeditor.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 │ │ │ ├── recover │ │ │ │ ├── recover.component.scss │ │ │ │ └── recover.component.ts │ │ │ ├── register │ │ │ │ └── register.component.scss │ │ │ └── maintenance │ │ │ │ ├── maintenance.component.scss │ │ │ │ ├── maintenance.component.ts │ │ │ │ └── maintenance.component.html │ │ ├── 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 │ │ ├── elements │ │ │ ├── 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 │ │ │ ├── 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 │ │ │ ├── navtree │ │ │ │ └── navtree.component.scss │ │ │ └── grid │ │ │ │ ├── grid.component.scss │ │ │ │ ├── grid.component.ts │ │ │ │ └── grid.component.spec.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 │ │ │ ├── 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 │ │ ├── home │ │ │ ├── home │ │ │ │ ├── home.component.ts │ │ │ │ ├── home.component.spec.ts │ │ │ │ └── home.component.scss │ │ │ └── home.module.ts │ │ └── routes.module.ts │ ├── app.component.html │ ├── index.ts │ ├── shared │ │ ├── styles │ │ │ ├── bootstrap │ │ │ │ ├── utilities │ │ │ │ │ ├── _clearfix.scss │ │ │ │ │ ├── _overflow.scss │ │ │ │ │ ├── _interactions.scss │ │ │ │ │ ├── _screenreaders.scss │ │ │ │ │ ├── _visibility.scss │ │ │ │ │ ├── _shadows.scss │ │ │ │ │ ├── _float.scss │ │ │ │ │ ├── _align.scss │ │ │ │ │ ├── _background.scss │ │ │ │ │ ├── _stretched-link.scss │ │ │ │ │ ├── _sizing.scss │ │ │ │ │ ├── _position.scss │ │ │ │ │ ├── _display.scss │ │ │ │ │ └── _embed.scss │ │ │ │ ├── _media.scss │ │ │ │ ├── mixins │ │ │ │ │ ├── _clearfix.scss │ │ │ │ │ ├── _size.scss │ │ │ │ │ ├── _lists.scss │ │ │ │ │ ├── _text-truncate.scss │ │ │ │ │ ├── _resize.scss │ │ │ │ │ ├── _visibility.scss │ │ │ │ │ ├── _alert.scss │ │ │ │ │ ├── _text-hide.scss │ │ │ │ │ ├── _badge.scss │ │ │ │ │ ├── _nav-divider.scss │ │ │ │ │ ├── _float.scss │ │ │ │ │ ├── _list-group.scss │ │ │ │ │ ├── _text-emphasis.scss │ │ │ │ │ ├── _reset-text.scss │ │ │ │ │ ├── _pagination.scss │ │ │ │ │ ├── _box-shadow.scss │ │ │ │ │ ├── _deprecate.scss │ │ │ │ │ ├── _transition.scss │ │ │ │ │ ├── _background-variant.scss │ │ │ │ │ ├── _hover.scss │ │ │ │ │ ├── _table-row.scss │ │ │ │ │ ├── _screen-reader.scss │ │ │ │ │ └── _image.scss │ │ │ │ ├── _transitions.scss │ │ │ │ ├── bootstrap-reboot.scss │ │ │ │ ├── _jumbotron.scss │ │ │ │ ├── _utilities.scss │ │ │ │ ├── _root.scss │ │ │ │ ├── bootstrap-grid.scss │ │ │ │ ├── _close.scss │ │ │ │ ├── bootstrap.scss │ │ │ │ ├── _code.scss │ │ │ │ ├── _mixins.scss │ │ │ │ ├── _toasts.scss │ │ │ │ ├── _images.scss │ │ │ │ ├── _badge.scss │ │ │ │ ├── _progress.scss │ │ │ │ ├── _alert.scss │ │ │ │ ├── _breadcrumb.scss │ │ │ │ └── _spinners.scss │ │ │ ├── bootstrap.scss │ │ │ └── app │ │ │ │ ├── typeahead.scss │ │ │ │ ├── gmap.scss │ │ │ │ ├── file-upload.scss │ │ │ │ ├── slim-scroll.scss │ │ │ │ ├── todo.scss │ │ │ │ ├── circles.scss │ │ │ │ ├── form-tags-input.scss │ │ │ │ ├── form-select2.scss │ │ │ │ ├── half-float.scss │ │ │ │ ├── chart-easypie.scss │ │ │ │ ├── print.scss │ │ │ │ ├── vector-map.scss │ │ │ │ ├── placeholder.scss │ │ │ │ ├── dropdown-extra.scss │ │ │ │ ├── chart-flot.scss │ │ │ │ └── layout-animation.scss │ │ ├── directives │ │ │ ├── scrollable │ │ │ │ └── scrollable.directive.ts │ │ │ ├── now │ │ │ │ └── now.directive.ts │ │ │ ├── checkall │ │ │ │ └── checkall.directive.ts │ │ │ ├── jqcloud │ │ │ │ └── jqcloud.directive.ts │ │ │ └── easypiechart │ │ │ │ └── easypiechart.directive.ts │ │ └── colors │ │ │ └── colors.service.ts │ ├── core │ │ ├── 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 │ └── app.component.spec.ts ├── favicon.ico ├── environments │ ├── environment.prod.ts │ └── environment.ts ├── vendor.ts ├── index.html ├── main.ts ├── test.ts └── styles.scss ├── .editorconfig ├── tsconfig.app.json ├── tsconfig.spec.json ├── .browserslistrc ├── .gitignore ├── modernizr-config.json ├── tsconfig.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/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/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/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/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/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/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/extras/forum/forumdiscussion/forumdiscussion.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/index.ts: -------------------------------------------------------------------------------- 1 | export * from './app.component'; 2 | export * from './app.module'; 3 | -------------------------------------------------------------------------------- /src/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevPioneer007/angle/HEAD/src/favicon.ico -------------------------------------------------------------------------------- /src/assets/img/bg1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevPioneer007/angle/HEAD/src/assets/img/bg1.jpg -------------------------------------------------------------------------------- /src/assets/img/bg10.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevPioneer007/angle/HEAD/src/assets/img/bg10.jpg -------------------------------------------------------------------------------- /src/assets/img/bg2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevPioneer007/angle/HEAD/src/assets/img/bg2.jpg -------------------------------------------------------------------------------- /src/assets/img/bg3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevPioneer007/angle/HEAD/src/assets/img/bg3.jpg -------------------------------------------------------------------------------- /src/assets/img/bg4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevPioneer007/angle/HEAD/src/assets/img/bg4.jpg -------------------------------------------------------------------------------- /src/assets/img/bg5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevPioneer007/angle/HEAD/src/assets/img/bg5.jpg -------------------------------------------------------------------------------- /src/assets/img/bg6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevPioneer007/angle/HEAD/src/assets/img/bg6.jpg -------------------------------------------------------------------------------- /src/assets/img/bg7.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevPioneer007/angle/HEAD/src/assets/img/bg7.jpg -------------------------------------------------------------------------------- /src/assets/img/bg8.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevPioneer007/angle/HEAD/src/assets/img/bg8.jpg -------------------------------------------------------------------------------- /src/assets/img/bg9.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevPioneer007/angle/HEAD/src/assets/img/bg9.jpg -------------------------------------------------------------------------------- /src/assets/img/dummy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevPioneer007/angle/HEAD/src/assets/img/dummy.png -------------------------------------------------------------------------------- /src/assets/img/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevPioneer007/angle/HEAD/src/assets/img/logo.png -------------------------------------------------------------------------------- /src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /src/app/shared/styles/bootstrap/utilities/_clearfix.scss: -------------------------------------------------------------------------------- 1 | .clearfix { 2 | @include clearfix(); 3 | } 4 | -------------------------------------------------------------------------------- /src/assets/img/lock-bg.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevPioneer007/angle/HEAD/src/assets/img/lock-bg.jpg -------------------------------------------------------------------------------- /src/assets/img/mockup.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevPioneer007/angle/HEAD/src/assets/img/mockup.png -------------------------------------------------------------------------------- /src/assets/img/user/01.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevPioneer007/angle/HEAD/src/assets/img/user/01.jpg -------------------------------------------------------------------------------- /src/assets/img/user/02.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevPioneer007/angle/HEAD/src/assets/img/user/02.jpg -------------------------------------------------------------------------------- /src/assets/img/user/03.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevPioneer007/angle/HEAD/src/assets/img/user/03.jpg -------------------------------------------------------------------------------- /src/assets/img/user/04.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevPioneer007/angle/HEAD/src/assets/img/user/04.jpg -------------------------------------------------------------------------------- /src/assets/img/user/05.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevPioneer007/angle/HEAD/src/assets/img/user/05.jpg -------------------------------------------------------------------------------- /src/assets/img/user/06.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevPioneer007/angle/HEAD/src/assets/img/user/06.jpg -------------------------------------------------------------------------------- /src/assets/img/user/07.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevPioneer007/angle/HEAD/src/assets/img/user/07.jpg -------------------------------------------------------------------------------- /src/assets/img/user/08.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevPioneer007/angle/HEAD/src/assets/img/user/08.jpg -------------------------------------------------------------------------------- /src/assets/img/user/09.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevPioneer007/angle/HEAD/src/assets/img/user/09.jpg -------------------------------------------------------------------------------- /src/assets/img/user/10.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevPioneer007/angle/HEAD/src/assets/img/user/10.jpg -------------------------------------------------------------------------------- /src/assets/img/user/11.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevPioneer007/angle/HEAD/src/assets/img/user/11.jpg -------------------------------------------------------------------------------- /src/assets/img/user/12.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevPioneer007/angle/HEAD/src/assets/img/user/12.jpg -------------------------------------------------------------------------------- /src/assets/img/user/13.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevPioneer007/angle/HEAD/src/assets/img/user/13.jpg -------------------------------------------------------------------------------- /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/mb-sample.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevPioneer007/angle/HEAD/src/assets/img/mb-sample.jpg -------------------------------------------------------------------------------- /src/assets/img/profile-bg.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevPioneer007/angle/HEAD/src/assets/img/profile-bg.jpg -------------------------------------------------------------------------------- /src/assets/img/logo-single.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevPioneer007/angle/HEAD/src/assets/img/logo-single.png -------------------------------------------------------------------------------- /src/app/routes/extras/faq/faq.component.scss: -------------------------------------------------------------------------------- 1 | [accordion-heading] { 2 | font-size: 1rem; 3 | font-weight: bold; 4 | } -------------------------------------------------------------------------------- /src/app/routes/elements/navtree/navtree.component.scss: -------------------------------------------------------------------------------- 1 | @import '~@circlon/angular-tree-component/css/angular-tree-component.css'; 2 | -------------------------------------------------------------------------------- /src/app/layout/footer/footer.component.html: -------------------------------------------------------------------------------- 1 | © {{settings.getAppSetting('year')}} - {{ settings.getAppSetting('name') }} -------------------------------------------------------------------------------- /src/assets/img/preloader/preloader.empty.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevPioneer007/angle/HEAD/src/assets/img/preloader/preloader.empty.png -------------------------------------------------------------------------------- /src/assets/img/preloader/preloader.full.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevPioneer007/angle/HEAD/src/assets/img/preloader/preloader.full.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/app/shared/styles/bootstrap/_media.scss: -------------------------------------------------------------------------------- 1 | .media { 2 | display: flex; 3 | align-items: flex-start; 4 | } 5 | 6 | .media-body { 7 | flex: 1; 8 | } 9 | -------------------------------------------------------------------------------- /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/app/shared/styles/bootstrap/mixins/_clearfix.scss: -------------------------------------------------------------------------------- 1 | @mixin clearfix() { 2 | &::after { 3 | display: block; 4 | clear: both; 5 | content: ""; 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /src/app/shared/styles/bootstrap/utilities/_overflow.scss: -------------------------------------------------------------------------------- 1 | // stylelint-disable declaration-no-important 2 | 3 | @each $value in $overflows { 4 | .overflow-#{$value} { overflow: $value !important; } 5 | } 6 | -------------------------------------------------------------------------------- /src/assets/codemirror/source/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Document 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /src/app/shared/styles/bootstrap/utilities/_interactions.scss: -------------------------------------------------------------------------------- 1 | // stylelint-disable declaration-no-important 2 | 3 | @each $value in $user-selects { 4 | .user-select-#{$value} { user-select: $value !important; } 5 | } 6 | -------------------------------------------------------------------------------- /src/assets/codemirror/source/another.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Another Document 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /src/app/shared/styles/bootstrap/mixins/_size.scss: -------------------------------------------------------------------------------- 1 | // Sizing shortcuts 2 | 3 | @mixin size($width, $height: $width) { 4 | width: $width; 5 | height: $height; 6 | @include deprecate("`size()`", "v4.3.0", "v5"); 7 | } 8 | -------------------------------------------------------------------------------- /src/app/shared/styles/bootstrap/utilities/_screenreaders.scss: -------------------------------------------------------------------------------- 1 | // 2 | // Screenreaders 3 | // 4 | 5 | .sr-only { 6 | @include sr-only(); 7 | } 8 | 9 | .sr-only-focusable { 10 | @include sr-only-focusable(); 11 | } 12 | -------------------------------------------------------------------------------- /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/mixins/_lists.scss: -------------------------------------------------------------------------------- 1 | // Lists 2 | 3 | // Unstyled keeps list items block level, just removes default browser padding and list-style 4 | @mixin list-unstyled() { 5 | padding-left: 0; 6 | list-style: none; 7 | } 8 | -------------------------------------------------------------------------------- /src/app/shared/styles/bootstrap/mixins/_text-truncate.scss: -------------------------------------------------------------------------------- 1 | // Text truncate 2 | // Requires inline-block or block for proper styling 3 | 4 | @mixin text-truncate() { 5 | overflow: hidden; 6 | text-overflow: ellipsis; 7 | white-space: nowrap; 8 | } 9 | -------------------------------------------------------------------------------- /src/app/shared/styles/bootstrap/mixins/_resize.scss: -------------------------------------------------------------------------------- 1 | // Resize anything 2 | 3 | @mixin resizable($direction) { 4 | overflow: auto; // Per CSS3 UI, `resize` only applies when `overflow` isn't `visible` 5 | resize: $direction; // Options: horizontal, vertical, both 6 | } 7 | -------------------------------------------------------------------------------- /src/app/shared/styles/bootstrap/mixins/_visibility.scss: -------------------------------------------------------------------------------- 1 | // stylelint-disable declaration-no-important 2 | 3 | // Visibility 4 | 5 | @mixin invisible($visibility) { 6 | visibility: $visibility !important; 7 | @include deprecate("`invisible()`", "v4.3.0", "v5"); 8 | } 9 | -------------------------------------------------------------------------------- /src/app/routes/elements/grid/grid.component.scss: -------------------------------------------------------------------------------- 1 | .grid-example .row>.col, 2 | .grid-example .row>[class^=col-] { 3 | padding-top: 1.25rem; 4 | padding-bottom: 1.25rem; 5 | background-color: rgba(241, 242, 243, .15); 6 | border: 1px dashed rgba(0, 0, 0, .15); 7 | } 8 | -------------------------------------------------------------------------------- /src/app/shared/styles/bootstrap/utilities/_visibility.scss: -------------------------------------------------------------------------------- 1 | // stylelint-disable declaration-no-important 2 | 3 | // 4 | // Visibility utilities 5 | // 6 | 7 | .visible { 8 | visibility: visible !important; 9 | } 10 | 11 | .invisible { 12 | visibility: hidden !important; 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 |
2 |
Vector Maps 3 | Resolution independent maps
4 |
5 |
6 | -------------------------------------------------------------------------------- /src/app/shared/styles/bootstrap/utilities/_shadows.scss: -------------------------------------------------------------------------------- 1 | // stylelint-disable declaration-no-important 2 | 3 | .shadow-sm { box-shadow: $box-shadow-sm !important; } 4 | .shadow { box-shadow: $box-shadow !important; } 5 | .shadow-lg { box-shadow: $box-shadow-lg !important; } 6 | .shadow-none { box-shadow: none !important; } 7 | -------------------------------------------------------------------------------- /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/shared/styles/bootstrap/mixins/_alert.scss: -------------------------------------------------------------------------------- 1 | @mixin alert-variant($background, $border, $color) { 2 | color: $color; 3 | @include gradient-bg($background); 4 | border-color: $border; 5 | 6 | hr { 7 | border-top-color: darken($border, 5%); 8 | } 9 | 10 | .alert-link { 11 | color: darken($color, 10%); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | # Editor configuration, see https://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 | [*.ts] 12 | quote_type = single 13 | 14 | [*.md] 15 | max_line_length = off 16 | trim_trailing_whitespace = false 17 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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/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/shared/styles/bootstrap/_transitions.scss: -------------------------------------------------------------------------------- 1 | .fade { 2 | @include transition($transition-fade); 3 | 4 | &:not(.show) { 5 | opacity: 0; 6 | } 7 | } 8 | 9 | .collapse { 10 | &:not(.show) { 11 | display: none; 12 | } 13 | } 14 | 15 | .collapsing { 16 | position: relative; 17 | height: 0; 18 | overflow: hidden; 19 | @include transition($transition-collapse); 20 | } 21 | -------------------------------------------------------------------------------- /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/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/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/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/shared/styles/app/gmap.scss: -------------------------------------------------------------------------------- 1 | /* ======================================================================== 2 | Component: gmap 3 | ========================================================================== */ 4 | .gmap { 5 | // Sets an arbitrary height for the map element 6 | // Google Map requires it 7 | height: 300px; 8 | 9 | &.gmap-sm { 10 | height: 150px; 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /src/app/shared/styles/bootstrap/mixins/_text-hide.scss: -------------------------------------------------------------------------------- 1 | // CSS image replacement 2 | @mixin text-hide($ignore-warning: false) { 3 | // stylelint-disable-next-line font-family-no-missing-generic-family-keyword 4 | font: 0/0 a; 5 | color: transparent; 6 | text-shadow: none; 7 | background-color: transparent; 8 | border: 0; 9 | 10 | @include deprecate("`text-hide()`", "v4.1.0", "v5", $ignore-warning); 11 | } 12 | -------------------------------------------------------------------------------- /tsconfig.app.json: -------------------------------------------------------------------------------- 1 | /* To learn more about this file see: https://angular.io/config/tsconfig. */ 2 | { 3 | "extends": "./tsconfig.json", 4 | "compilerOptions": { 5 | "outDir": "../out-tsc/app", 6 | "types": [ 7 | "node" 8 | ] 9 | }, 10 | "files": [ 11 | "src/main.ts", 12 | "src/polyfills.ts" 13 | ], 14 | "include": [ 15 | "src/**/*.d.ts", 16 | "src/vendor.ts" 17 | ] 18 | } 19 | -------------------------------------------------------------------------------- /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/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/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/shared/styles/bootstrap/mixins/_badge.scss: -------------------------------------------------------------------------------- 1 | @mixin badge-variant($bg) { 2 | color: color-yiq($bg); 3 | background-color: $bg; 4 | 5 | @at-root a#{&} { 6 | @include hover-focus() { 7 | color: color-yiq($bg); 8 | background-color: darken($bg, 10%); 9 | } 10 | 11 | &:focus, 12 | &.focus { 13 | outline: 0; 14 | box-shadow: 0 0 0 $badge-focus-width rgba($bg, .5); 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 | -------------------------------------------------------------------------------- /tsconfig.spec.json: -------------------------------------------------------------------------------- 1 | /* To learn more about this file see: https://angular.io/config/tsconfig. */ 2 | { 3 | "extends": "./tsconfig.json", 4 | "compilerOptions": { 5 | "outDir": "./out-tsc/spec", 6 | "types": [ 7 | "jasmine", 8 | "node" 9 | ] 10 | }, 11 | "files": [ 12 | "src/test.ts", 13 | "src/polyfills.ts" 14 | ], 15 | "include": [ 16 | "src/**/*.spec.ts", 17 | "src/**/*.d.ts" 18 | ] 19 | } 20 | -------------------------------------------------------------------------------- /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/shared/styles/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: $nav-divider-color, $margin-y: $nav-divider-margin-y, $ignore-warning: false) { 6 | height: 0; 7 | margin: $margin-y 0; 8 | overflow: hidden; 9 | border-top: 1px solid $color; 10 | @include deprecate("The `nav-divider()` mixin", "v4.4.0", "v5", $ignore-warning); 11 | } 12 | -------------------------------------------------------------------------------- /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/bootstrap/utilities/_float.scss: -------------------------------------------------------------------------------- 1 | // stylelint-disable declaration-no-important 2 | 3 | @each $breakpoint in map-keys($grid-breakpoints) { 4 | @include media-breakpoint-up($breakpoint) { 5 | $infix: breakpoint-infix($breakpoint, $grid-breakpoints); 6 | 7 | .float#{$infix}-left { float: left !important; } 8 | .float#{$infix}-right { float: right !important; } 9 | .float#{$infix}-none { float: none !important; } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /src/vendor.ts: -------------------------------------------------------------------------------- 1 | 2 | import './modernizr.js'; // 'npm run modernizr' to create this file 3 | 4 | import '../node_modules/jquery-slimscroll/jquery.slimscroll.js'; 5 | 6 | import '../node_modules/codemirror/lib/codemirror.js'; 7 | import '../node_modules/codemirror/mode/javascript/javascript.js'; 8 | import '../node_modules/codemirror/mode/xml/xml.js'; 9 | import '../node_modules/codemirror/mode/htmlmixed/htmlmixed.js'; 10 | import '../node_modules/codemirror/mode/css/css.js'; 11 | -------------------------------------------------------------------------------- /src/app/shared/styles/bootstrap/utilities/_align.scss: -------------------------------------------------------------------------------- 1 | // stylelint-disable declaration-no-important 2 | 3 | .align-baseline { vertical-align: baseline !important; } // Browser default 4 | .align-top { vertical-align: top !important; } 5 | .align-middle { vertical-align: middle !important; } 6 | .align-bottom { vertical-align: bottom !important; } 7 | .align-text-bottom { vertical-align: text-bottom !important; } 8 | .align-text-top { vertical-align: text-top !important; } 9 | -------------------------------------------------------------------------------- /src/app/shared/styles/bootstrap/mixins/_float.scss: -------------------------------------------------------------------------------- 1 | // stylelint-disable declaration-no-important 2 | 3 | @mixin float-left() { 4 | float: left !important; 5 | @include deprecate("The `float-left` mixin", "v4.3.0", "v5"); 6 | } 7 | @mixin float-right() { 8 | float: right !important; 9 | @include deprecate("The `float-right` mixin", "v4.3.0", "v5"); 10 | } 11 | @mixin float-none() { 12 | float: none !important; 13 | @include deprecate("The `float-none` mixin", "v4.3.0", "v5"); 14 | } 15 | -------------------------------------------------------------------------------- /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/app/shared/styles/bootstrap/bootstrap-reboot.scss: -------------------------------------------------------------------------------- 1 | /*! 2 | * Bootstrap Reboot v4.6.0 (https://getbootstrap.com/) 3 | * Copyright 2011-2021 The Bootstrap Authors 4 | * Copyright 2011-2021 Twitter, Inc. 5 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 6 | * Forked from Normalize.css, licensed MIT (https://github.com/necolas/normalize.css/blob/master/LICENSE.md) 7 | */ 8 | 9 | @import "functions"; 10 | @import "variables"; 11 | @import "mixins"; 12 | @import "reboot"; 13 | -------------------------------------------------------------------------------- /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/shared/styles/bootstrap/_jumbotron.scss: -------------------------------------------------------------------------------- 1 | .jumbotron { 2 | padding: $jumbotron-padding ($jumbotron-padding / 2); 3 | margin-bottom: $jumbotron-padding; 4 | color: $jumbotron-color; 5 | background-color: $jumbotron-bg; 6 | @include border-radius($border-radius-lg); 7 | 8 | @include media-breakpoint-up(sm) { 9 | padding: ($jumbotron-padding * 2) $jumbotron-padding; 10 | } 11 | } 12 | 13 | .jumbotron-fluid { 14 | padding-right: 0; 15 | padding-left: 0; 16 | @include border-radius(0); 17 | } 18 | -------------------------------------------------------------------------------- /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/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/app/shared/styles/bootstrap/utilities/_background.scss: -------------------------------------------------------------------------------- 1 | // stylelint-disable declaration-no-important 2 | 3 | @each $color, $value in $theme-colors { 4 | @include bg-variant(".bg-#{$color}", $value, true); 5 | } 6 | 7 | @if $enable-gradients { 8 | @each $color, $value in $theme-colors { 9 | @include bg-gradient-variant(".bg-gradient-#{$color}", $value, true); 10 | } 11 | } 12 | 13 | .bg-white { 14 | background-color: $white !important; 15 | } 16 | 17 | .bg-transparent { 18 | background-color: transparent !important; 19 | } 20 | -------------------------------------------------------------------------------- /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/app/layout/layout.component.h.html: -------------------------------------------------------------------------------- 1 |
2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 |
10 | 11 |
12 |
13 | 14 | 15 |
-------------------------------------------------------------------------------- /src/app/layout/header/navsearch/navsearch.component.html: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | -------------------------------------------------------------------------------- /src/app/shared/styles/bootstrap/utilities/_stretched-link.scss: -------------------------------------------------------------------------------- 1 | // 2 | // Stretched link 3 | // 4 | 5 | .stretched-link { 6 | &::after { 7 | position: absolute; 8 | top: 0; 9 | right: 0; 10 | bottom: 0; 11 | left: 0; 12 | z-index: 1; 13 | // Just in case `pointer-events: none` is set on a parent 14 | pointer-events: auto; 15 | content: ""; 16 | // IE10 bugfix, see https://stackoverflow.com/questions/16947967/ie10-hover-pseudo-class-doesnt-work-without-background-color 17 | background-color: rgba(0, 0, 0, 0); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/app/shared/styles/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 | &.list-group-item-action { 9 | @include hover-focus() { 10 | color: $color; 11 | background-color: darken($background, 5%); 12 | } 13 | 14 | &.active { 15 | color: $white; 16 | background-color: $color; 17 | border-color: $color; 18 | } 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /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/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/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 | string = 0; 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/shared/styles/bootstrap/mixins/_text-emphasis.scss: -------------------------------------------------------------------------------- 1 | // stylelint-disable declaration-no-important 2 | 3 | // Typography 4 | 5 | @mixin text-emphasis-variant($parent, $color, $ignore-warning: false) { 6 | #{$parent} { 7 | color: $color !important; 8 | } 9 | @if $emphasized-link-hover-darken-percentage != 0 { 10 | a#{$parent} { 11 | @include hover-focus() { 12 | color: darken($color, $emphasized-link-hover-darken-percentage) !important; 13 | } 14 | } 15 | } 16 | @include deprecate("`text-emphasis-variant()`", "v4.4.0", "v5", $ignore-warning); 17 | } 18 | -------------------------------------------------------------------------------- /src/app/shared/styles/bootstrap/mixins/_reset-text.scss: -------------------------------------------------------------------------------- 1 | @mixin reset-text() { 2 | font-family: $font-family-base; 3 | // We deliberately do NOT reset font-size or word-wrap. 4 | font-style: normal; 5 | font-weight: $font-weight-normal; 6 | line-height: $line-height-base; 7 | text-align: left; // Fallback for where `start` is not supported 8 | text-align: start; 9 | text-decoration: none; 10 | text-shadow: none; 11 | text-transform: none; 12 | letter-spacing: normal; 13 | word-break: normal; 14 | word-spacing: normal; 15 | white-space: normal; 16 | line-break: auto; 17 | } 18 | -------------------------------------------------------------------------------- /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/mixins/_pagination.scss: -------------------------------------------------------------------------------- 1 | // Pagination 2 | 3 | @mixin pagination-size($padding-y, $padding-x, $font-size, $line-height, $border-radius) { 4 | .page-link { 5 | padding: $padding-y $padding-x; 6 | @include font-size($font-size); 7 | line-height: $line-height; 8 | } 9 | 10 | .page-item { 11 | &:first-child { 12 | .page-link { 13 | @include border-left-radius($border-radius); 14 | } 15 | } 16 | &:last-child { 17 | .page-link { 18 | @include border-right-radius($border-radius); 19 | } 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/app/shared/styles/bootstrap/utilities/_sizing.scss: -------------------------------------------------------------------------------- 1 | // stylelint-disable declaration-no-important 2 | 3 | // Width and height 4 | 5 | @each $prop, $abbrev in (width: w, height: h) { 6 | @each $size, $length in $sizes { 7 | .#{$abbrev}-#{$size} { #{$prop}: $length !important; } 8 | } 9 | } 10 | 11 | .mw-100 { max-width: 100% !important; } 12 | .mh-100 { max-height: 100% !important; } 13 | 14 | // Viewport additional helpers 15 | 16 | .min-vw-100 { min-width: 100vw !important; } 17 | .min-vh-100 { min-height: 100vh !important; } 18 | 19 | .vw-100 { width: 100vw !important; } 20 | .vh-100 { height: 100vh !important; } 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/shared/styles/bootstrap/_utilities.scss: -------------------------------------------------------------------------------- 1 | @import "utilities/align"; 2 | @import "utilities/background"; 3 | @import "utilities/borders"; 4 | @import "utilities/clearfix"; 5 | @import "utilities/display"; 6 | @import "utilities/embed"; 7 | @import "utilities/flex"; 8 | @import "utilities/float"; 9 | @import "utilities/interactions"; 10 | @import "utilities/overflow"; 11 | @import "utilities/position"; 12 | @import "utilities/screenreaders"; 13 | @import "utilities/shadows"; 14 | @import "utilities/sizing"; 15 | @import "utilities/spacing"; 16 | @import "utilities/stretched-link"; 17 | @import "utilities/text"; 18 | @import "utilities/visibility"; 19 | -------------------------------------------------------------------------------- /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/shared/styles/bootstrap/mixins/_box-shadow.scss: -------------------------------------------------------------------------------- 1 | @mixin box-shadow($shadow...) { 2 | @if $enable-shadows { 3 | $result: (); 4 | 5 | @if (length($shadow) == 1) { 6 | // We can pass `@include box-shadow(none);` 7 | $result: $shadow; 8 | } @else { 9 | // Filter to avoid invalid properties for example `box-shadow: none, 1px 1px black;` 10 | @for $i from 1 through length($shadow) { 11 | @if nth($shadow, $i) != "none" { 12 | $result: append($result, nth($shadow, $i), "comma"); 13 | } 14 | } 15 | } 16 | @if (length($result) > 0) { 17 | box-shadow: $result; 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /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/utilities/_position.scss: -------------------------------------------------------------------------------- 1 | // stylelint-disable declaration-no-important 2 | 3 | // Common values 4 | @each $position in $positions { 5 | .position-#{$position} { position: $position !important; } 6 | } 7 | 8 | // Shorthand 9 | 10 | .fixed-top { 11 | position: fixed; 12 | top: 0; 13 | right: 0; 14 | left: 0; 15 | z-index: $zindex-fixed; 16 | } 17 | 18 | .fixed-bottom { 19 | position: fixed; 20 | right: 0; 21 | bottom: 0; 22 | left: 0; 23 | z-index: $zindex-fixed; 24 | } 25 | 26 | .sticky-top { 27 | @supports (position: sticky) { 28 | position: sticky; 29 | top: 0; 30 | z-index: $zindex-sticky; 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /src/app/shared/styles/bootstrap/utilities/_display.scss: -------------------------------------------------------------------------------- 1 | // stylelint-disable declaration-no-important 2 | 3 | // 4 | // Utilities for common `display` values 5 | // 6 | 7 | @each $breakpoint in map-keys($grid-breakpoints) { 8 | @include media-breakpoint-up($breakpoint) { 9 | $infix: breakpoint-infix($breakpoint, $grid-breakpoints); 10 | 11 | @each $value in $displays { 12 | .d#{$infix}-#{$value} { display: $value !important; } 13 | } 14 | } 15 | } 16 | 17 | 18 | // 19 | // Utilities for toggling `display` in print 20 | // 21 | 22 | @media print { 23 | @each $value in $displays { 24 | .d-print-#{$value} { display: $value !important; } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/app/shared/styles/bootstrap/_root.scss: -------------------------------------------------------------------------------- 1 | :root { 2 | // Custom variable values only support SassScript inside `#{}`. 3 | @each $color, $value in $colors { 4 | --#{$color}: #{$value}; 5 | } 6 | 7 | @each $color, $value in $theme-colors { 8 | --#{$color}: #{$value}; 9 | } 10 | 11 | @each $bp, $value in $grid-breakpoints { 12 | --breakpoint-#{$bp}: #{$value}; 13 | } 14 | 15 | // Use `inspect` for lists so that quoted items keep the quotes. 16 | // See https://github.com/sass/sass/issues/2383#issuecomment-336349172 17 | --font-family-sans-serif: #{inspect($font-family-sans-serif)}; 18 | --font-family-monospace: #{inspect($font-family-monospace)}; 19 | } 20 | -------------------------------------------------------------------------------- /src/app/routes/home/home/home.component.scss: -------------------------------------------------------------------------------- 1 | @import "../../../shared/styles/bootstrap/_functions.scss"; 2 | @import "../../../shared/styles/bootstrap/_variables.scss"; 3 | @import "../../../shared/styles/bootstrap/_mixins"; 4 | @import '../../../shared/styles/app/variables.scss'; 5 | 6 | .home-container { 7 | margin: 0 auto; 8 | max-width: map-get($container-max-widths, "lg"); 9 | 10 | .home-logo { 11 | width: 240px; 12 | } 13 | 14 | .home-text { 15 | text-align: center; 16 | @include media-breakpoint-up(lg) { 17 | text-align: left; 18 | } 19 | } 20 | .home-text-big { 21 | font-size: 3.9375rem; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/app/shared/styles/bootstrap/mixins/_deprecate.scss: -------------------------------------------------------------------------------- 1 | // Deprecate mixin 2 | // 3 | // This mixin can be used to deprecate mixins or functions. 4 | // `$enable-deprecation-messages` is a global variable, `$ignore-warning` is a variable that can be passed to 5 | // some deprecated mixins to suppress the warning (for example if the mixin is still be used in the current version of Bootstrap) 6 | @mixin deprecate($name, $deprecate-version, $remove-version, $ignore-warning: false) { 7 | @if ($enable-deprecation-messages != false and $ignore-warning != true) { 8 | @warn "#{$name} has been deprecated as of #{$deprecate-version}. It will be removed entirely in #{$remove-version}."; 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /src/app/routes/pages/maintenance/maintenance.component.html: -------------------------------------------------------------------------------- 1 |
2 |
3 |
4 |

5 | 6 | 7 | 8 | 9 | 10 |

11 |
SITE IS UNDER MAINTENANCE
12 |

We'll back online shortly!

13 |
14 |
15 |
16 | -------------------------------------------------------------------------------- /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/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/environments/environment.ts: -------------------------------------------------------------------------------- 1 | // This file can be replaced during build by using the `fileReplacements` array. 2 | // `ng build` replaces `environment.ts` with `environment.prod.ts`. 3 | // The list of file replacements can be found in `angular.json`. 4 | 5 | export const environment = { 6 | production: false 7 | }; 8 | 9 | /* 10 | * For easier debugging in development mode, you can import the following file 11 | * to ignore zone related error stack frames such as `zone.run`, `zoneDelegate.invokeTask`. 12 | * 13 | * This import should be commented out in production mode because it will have a negative impact 14 | * on performance if an error is thrown. 15 | */ 16 | // import 'zone.js/plugins/zone-error'; // Included with Angular CLI. 17 | -------------------------------------------------------------------------------- /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/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 | -------------------------------------------------------------------------------- /.browserslistrc: -------------------------------------------------------------------------------- 1 | # This file is used by the build system to adjust CSS and JS output to support the specified browsers below. 2 | # For additional information regarding the format and rule options, please see: 3 | # https://github.com/browserslist/browserslist#queries 4 | 5 | # For the full list of supported browsers by the Angular framework, please see: 6 | # https://angular.io/guide/browser-support 7 | 8 | # You can see what browsers were selected by your queries by running: 9 | # npx browserslist 10 | 11 | last 1 Chrome version 12 | last 1 Firefox version 13 | last 2 Edge major versions 14 | last 2 Safari major versions 15 | last 2 iOS major versions 16 | Firefox ESR 17 | IE 11 # Angular supports IE 11 only as an opt-in. To opt-in, remove the 'not' prefix on this line. 18 | -------------------------------------------------------------------------------- /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/shared/styles/bootstrap/bootstrap-grid.scss: -------------------------------------------------------------------------------- 1 | /*! 2 | * Bootstrap Grid v4.6.0 (https://getbootstrap.com/) 3 | * Copyright 2011-2021 The Bootstrap Authors 4 | * Copyright 2011-2021 Twitter, Inc. 5 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 6 | */ 7 | 8 | html { 9 | box-sizing: border-box; 10 | -ms-overflow-style: scrollbar; 11 | } 12 | 13 | *, 14 | *::before, 15 | *::after { 16 | box-sizing: inherit; 17 | } 18 | 19 | @import "functions"; 20 | @import "variables"; 21 | 22 | @import "mixins/deprecate"; 23 | @import "mixins/breakpoints"; 24 | @import "mixins/grid-framework"; 25 | @import "mixins/grid"; 26 | 27 | @import "grid"; 28 | @import "utilities/display"; 29 | @import "utilities/flex"; 30 | @import "utilities/spacing"; 31 | -------------------------------------------------------------------------------- /src/main.ts: -------------------------------------------------------------------------------- 1 | /*! 2 | * 3 | * Angle - Bootstrap Admin Template 4 | * 5 | * Version: 4.8.1 6 | * Author: @themicon_co 7 | * Website: http://themicon.co 8 | * License: https://wrapbootstrap.com/help/licenses 9 | * 10 | */ 11 | 12 | import './vendor.ts'; 13 | import { enableProdMode } from '@angular/core'; 14 | import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; 15 | 16 | import { AppModule } from './app/app.module'; 17 | import { environment } from './environments/environment'; 18 | 19 | if (environment.production) { 20 | enableProdMode(); 21 | } 22 | 23 | let p = platformBrowserDynamic().bootstrapModule(AppModule); 24 | p.then(() => { (window).appBootstrap && (window).appBootstrap(); }) 25 | // .catch(err => console.error(err)); 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 | }] -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # See http://help.github.com/ignore-files/ for more about ignoring files. 2 | 3 | # compiled output 4 | /dist 5 | /tmp 6 | /out-tsc 7 | # Only exists if Bazel was run 8 | /bazel-out 9 | 10 | # dependencies 11 | /node_modules 12 | 13 | # profiling files 14 | chrome-profiler-events*.json 15 | 16 | # IDEs and editors 17 | /.idea 18 | .project 19 | .classpath 20 | .c9/ 21 | *.launch 22 | .settings/ 23 | *.sublime-workspace 24 | 25 | # IDE - VSCode 26 | .vscode/* 27 | !.vscode/settings.json 28 | !.vscode/tasks.json 29 | !.vscode/launch.json 30 | !.vscode/extensions.json 31 | .history/* 32 | 33 | # misc 34 | /.sass-cache 35 | /connect.lock 36 | /coverage 37 | /libpeerconnection.log 38 | npm-debug.log 39 | yarn-error.log 40 | testem.log 41 | /typings 42 | 43 | # System Files 44 | .DS_Store 45 | Thumbs.db 46 | -------------------------------------------------------------------------------- /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/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/bootstrap/mixins/_transition.scss: -------------------------------------------------------------------------------- 1 | // stylelint-disable property-disallowed-list 2 | @mixin transition($transition...) { 3 | @if length($transition) == 0 { 4 | $transition: $transition-base; 5 | } 6 | 7 | @if length($transition) > 1 { 8 | @each $value in $transition { 9 | @if $value == null or $value == none { 10 | @warn "The keyword 'none' or 'null' must be used as a single argument."; 11 | } 12 | } 13 | } 14 | 15 | @if $enable-transitions { 16 | @if nth($transition, 1) != null { 17 | transition: $transition; 18 | } 19 | 20 | @if $enable-prefers-reduced-motion-media-query and nth($transition, 1) != null and nth($transition, 1) != none { 21 | @media (prefers-reduced-motion: reduce) { 22 | transition: none; 23 | } 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/app/shared/styles/bootstrap/mixins/_background-variant.scss: -------------------------------------------------------------------------------- 1 | // stylelint-disable declaration-no-important 2 | 3 | // Contextual backgrounds 4 | 5 | @mixin bg-variant($parent, $color, $ignore-warning: false) { 6 | #{$parent} { 7 | background-color: $color !important; 8 | } 9 | a#{$parent}, 10 | button#{$parent} { 11 | @include hover-focus() { 12 | background-color: darken($color, 10%) !important; 13 | } 14 | } 15 | @include deprecate("The `bg-variant` mixin", "v4.4.0", "v5", $ignore-warning); 16 | } 17 | 18 | @mixin bg-gradient-variant($parent, $color, $ignore-warning: false) { 19 | #{$parent} { 20 | background: $color linear-gradient(180deg, mix($body-bg, $color, 15%), $color) repeat-x !important; 21 | } 22 | @include deprecate("The `bg-gradient-variant` mixin", "v4.5.0", "v5", $ignore-warning); 23 | } 24 | -------------------------------------------------------------------------------- /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/testing'; 4 | import { getTestBed } from '@angular/core/testing'; 5 | import { 6 | BrowserDynamicTestingModule, 7 | platformBrowserDynamicTesting 8 | } from '@angular/platform-browser-dynamic/testing'; 9 | 10 | declare const require: { 11 | context(path: string, deep?: boolean, filter?: RegExp): { 12 | keys(): string[]; 13 | (id: string): T; 14 | }; 15 | }; 16 | 17 | // First, initialize the Angular testing environment. 18 | getTestBed().initTestEnvironment( 19 | BrowserDynamicTestingModule, 20 | platformBrowserDynamicTesting() 21 | ); 22 | // Then we find all the tests. 23 | const context = require.context('./', true, /\.spec\.ts$/); 24 | // And load the modules. 25 | context.keys().map(context); 26 | -------------------------------------------------------------------------------- /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/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 { menu } from './menu'; 9 | import { routes } from './routes'; 10 | 11 | @NgModule({ 12 | imports: [ 13 | SharedModule, 14 | RouterModule.forRoot(routes), 15 | PagesModule 16 | ], 17 | declarations: [], 18 | exports: [ 19 | RouterModule 20 | ] 21 | }) 22 | 23 | export class RoutesModule { 24 | constructor(public menuService: MenuService, tr: TranslatorService) { 25 | menuService.addMenu(menu); 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /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 | } 28 | -------------------------------------------------------------------------------- /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 = '') { 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/routes/elements/infinitescroll/infinitescroll.component.html: -------------------------------------------------------------------------------- 1 |
2 |
3 | Infinite Scroll 4 | Total items: {{sum + sum2}} 5 |
6 |
7 |

Scroll in element

8 |
9 |
10 |
Item #{{i}}
11 |
12 |
13 |

Page scroll

14 |
15 |
16 |
17 |

{{i}}

18 |
19 |
20 |
21 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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/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/app/shared/styles/bootstrap/mixins/_hover.scss: -------------------------------------------------------------------------------- 1 | // Hover mixin and `$enable-hover-media-query` are deprecated. 2 | // 3 | // Originally added during our alphas and maintained during betas, this mixin was 4 | // designed to prevent `:hover` stickiness on iOS-an issue where hover styles 5 | // would persist after initial touch. 6 | // 7 | // For backward compatibility, we've kept these mixins and updated them to 8 | // always return their regular pseudo-classes instead of a shimmed media query. 9 | // 10 | // Issue: https://github.com/twbs/bootstrap/issues/25195 11 | 12 | @mixin hover() { 13 | &:hover { @content; } 14 | } 15 | 16 | @mixin hover-focus() { 17 | &:hover, 18 | &:focus { 19 | @content; 20 | } 21 | } 22 | 23 | @mixin plain-hover-focus() { 24 | &, 25 | &:hover, 26 | &:focus { 27 | @content; 28 | } 29 | } 30 | 31 | @mixin hover-focus-active() { 32 | &:hover, 33 | &:focus, 34 | &:active { 35 | @content; 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /src/assets/img/angular.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 10 | 11 | 12 | 13 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /src/app/routes/forms/extended/extended.component.scss: -------------------------------------------------------------------------------- 1 | @import "../../../shared/styles/bootstrap/_functions.scss"; 2 | @import "../../../shared/styles/bootstrap/_variables.scss"; 3 | @import "../../../shared/styles/bootstrap/_mixins"; 4 | @import '../../../shared/styles/app/variables.scss'; 5 | 6 | // Import module styling 7 | @import "~ngx-bootstrap/datepicker/bs-datepicker.css"; 8 | 9 | /* Fix header text placement */ 10 | .bs-datepicker-head > bs-datepicker-navigation-view { 11 | display: flex; 12 | justify-content: space-around; 13 | } 14 | 15 | /* Custom Theme */ 16 | .theme-angle { 17 | .bs-datepicker-head { 18 | background-color: $info; 19 | } 20 | .bs-datepicker-body table td { 21 | span.selected, &.selected span, 22 | span[class*="select-"]:after, 23 | &[class*="select-"] span:after { 24 | background-color: $info; 25 | } 26 | &.week span { 27 | color: $info; 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /src/app/shared/styles/bootstrap/mixins/_table-row.scss: -------------------------------------------------------------------------------- 1 | // Tables 2 | 3 | @mixin table-row-variant($state, $background, $border: null) { 4 | // Exact selectors below required to override `.table-striped` and prevent 5 | // inheritance to nested tables. 6 | .table-#{$state} { 7 | &, 8 | > th, 9 | > td { 10 | background-color: $background; 11 | } 12 | 13 | @if $border != null { 14 | th, 15 | td, 16 | thead th, 17 | tbody + tbody { 18 | border-color: $border; 19 | } 20 | } 21 | } 22 | 23 | // Hover states for `.table-hover` 24 | // Note: this is not available for cells or rows within `thead` or `tfoot`. 25 | .table-hover { 26 | $hover-background: darken($background, 5%); 27 | 28 | .table-#{$state} { 29 | @include hover() { 30 | background-color: $hover-background; 31 | 32 | > td, 33 | > th { 34 | background-color: $hover-background; 35 | } 36 | } 37 | } 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /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/shared/styles/bootstrap/mixins/_screen-reader.scss: -------------------------------------------------------------------------------- 1 | // Only display content to screen readers 2 | // 3 | // See: https://www.a11yproject.com/posts/2013-01-11-how-to-hide-content/ 4 | // See: https://hugogiraudel.com/2016/10/13/css-hide-and-seek/ 5 | 6 | @mixin sr-only() { 7 | position: absolute; 8 | width: 1px; 9 | height: 1px; 10 | padding: 0; 11 | margin: -1px; // Fix for https://github.com/twbs/bootstrap/issues/25686 12 | overflow: hidden; 13 | clip: rect(0, 0, 0, 0); 14 | white-space: nowrap; 15 | border: 0; 16 | } 17 | 18 | // Use in conjunction with .sr-only to only display content when it's focused. 19 | // 20 | // Useful for "Skip to main content" links; see https://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1 21 | // 22 | // Credit: HTML5 Boilerplate 23 | 24 | @mixin sr-only-focusable() { 25 | &:active, 26 | &:focus { 27 | position: static; 28 | width: auto; 29 | height: auto; 30 | overflow: visible; 31 | clip: auto; 32 | white-space: normal; 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /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'; 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/routes/extras/codeeditor/codeeditor.component.scss: -------------------------------------------------------------------------------- 1 | @import "../../../shared/styles/bootstrap/_functions.scss"; 2 | @import "../../../shared/styles/bootstrap/_variables.scss"; 3 | @import "../../../shared/styles/bootstrap/_mixins"; 4 | @import '../../../shared/styles/app/variables.scss'; 5 | 6 | @import '~@circlon/angular-tree-component/css/angular-tree-component.css'; 7 | 8 | .code-editor { 9 | position: relative; 10 | bottom: -1px; 11 | height: 100%; 12 | 13 | .code-editor-files { 14 | width: 100%; 15 | height: 30%; 16 | @include media-breakpoint-up(sm) { 17 | width: 240px; 18 | height: 100%; 19 | } 20 | } 21 | 22 | .code-editor-area { 23 | height: 70%; 24 | @include media-breakpoint-up(sm) { 25 | height: 100%; 26 | } 27 | } 28 | 29 | .code-editor-area-editor, 30 | .code-editor-files-tree { 31 | overflow: auto; 32 | } 33 | 34 | .CodeMirror { 35 | height: 100%; 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /src/app/shared/styles/app/todo.scss: -------------------------------------------------------------------------------- 1 | /* ======================================================================== 2 | Component: todo 3 | ========================================================================== */ 4 | 5 | .todo { 6 | 7 | .todo-item-list { 8 | position: relative; 9 | } 10 | 11 | .todo-item { 12 | 13 | .todo-edit { 14 | display: none; 15 | cursor: pointer; 16 | } 17 | &:hover .todo-edit { 18 | display: inline; 19 | } 20 | &.todo-complete .todo-edit { 21 | display: none; 22 | } 23 | } 24 | 25 | .close { 26 | font-size: 1rem; 27 | } 28 | 29 | textarea { 30 | resize: none; 31 | max-width: 100%; 32 | min-width: 100%; 33 | } 34 | .todo-complete { 35 | background: $gray-lighter; 36 | opacity: .6; 37 | color: $gray-darker; 38 | 39 | .todo-title { 40 | text-decoration: line-through; 41 | } 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /src/app/shared/styles/app/circles.scss: -------------------------------------------------------------------------------- 1 | /* ======================================================================== 2 | Component: circles 3 | ========================================================================== */ 4 | 5 | // Colored circle for indication purposes 6 | $point-sz-sm : 5px; 7 | $point-sz : 7px; 8 | $point-sz-lg : 11px; 9 | $point-sz-xl : 18px; 10 | 11 | .circle { 12 | display: inline-block; 13 | width: $point-sz; 14 | height: $point-sz; 15 | border-radius: 500px; 16 | margin: 0 .5em; 17 | background-color: #ddd; 18 | vertical-align: baseline; 19 | border: 2px solid transparent; 20 | &.text-left { 21 | margin-left: 0; 22 | } 23 | &.text-right { 24 | margin-right: 0; 25 | } 26 | } 27 | 28 | // Sizes 29 | .circle-sm { 30 | width: $point-sz-sm; 31 | height: $point-sz-sm; 32 | } 33 | 34 | .circle-lg { 35 | width: $point-sz-lg; 36 | height: $point-sz-lg; 37 | } 38 | 39 | .circle-xl { 40 | width: $point-sz-xl; 41 | height: $point-sz-xl; 42 | } 43 | -------------------------------------------------------------------------------- /src/app/shared/styles/app/form-tags-input.scss: -------------------------------------------------------------------------------- 1 | /* ======================================================================== 2 | Component: form-tags 3 | ========================================================================== */ 4 | 5 | .ng2-tag-input.minimal { 6 | min-height: 2.25rem !important; 7 | border: 1px solid $input-border-color !important; 8 | border-radius: $input-border-radius; 9 | padding: $input-padding-y $input-padding-x !important; 10 | tag { 11 | height: auto !important; 12 | font-size: .75rem !important; 13 | line-height: 1.4 !important; 14 | padding: 4px 12px !important; 15 | margin: 0 5px 0 0 !important; 16 | } 17 | &.ng2-tag-input--focused { 18 | border: 1px solid $input-focus-border-color !important; 19 | } 20 | svg { 21 | height: auto !important; 22 | } 23 | .ng2-tag-input__text-input { 24 | height: auto !important; 25 | } 26 | delete-icon:hover { 27 | transform: scale(1.25) translateY(0px) !important; 28 | } 29 | } -------------------------------------------------------------------------------- /src/app/shared/styles/bootstrap/utilities/_embed.scss: -------------------------------------------------------------------------------- 1 | // Credit: Nicolas Gallagher and SUIT CSS. 2 | 3 | .embed-responsive { 4 | position: relative; 5 | display: block; 6 | width: 100%; 7 | padding: 0; 8 | overflow: hidden; 9 | 10 | &::before { 11 | display: block; 12 | content: ""; 13 | } 14 | 15 | .embed-responsive-item, 16 | iframe, 17 | embed, 18 | object, 19 | video { 20 | position: absolute; 21 | top: 0; 22 | bottom: 0; 23 | left: 0; 24 | width: 100%; 25 | height: 100%; 26 | border: 0; 27 | } 28 | } 29 | 30 | @each $embed-responsive-aspect-ratio in $embed-responsive-aspect-ratios { 31 | $embed-responsive-aspect-ratio-x: nth($embed-responsive-aspect-ratio, 1); 32 | $embed-responsive-aspect-ratio-y: nth($embed-responsive-aspect-ratio, 2); 33 | 34 | .embed-responsive-#{$embed-responsive-aspect-ratio-x}by#{$embed-responsive-aspect-ratio-y} { 35 | &::before { 36 | padding-top: percentage($embed-responsive-aspect-ratio-y / $embed-responsive-aspect-ratio-x); 37 | } 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /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 | }] -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | /* To learn more about this file see: https://angular.io/config/tsconfig. */ 2 | { 3 | "compileOnSave": false, 4 | "compilerOptions": { 5 | "baseUrl": "./", 6 | "outDir": "./dist/out-tsc", 7 | "noImplicitAny": false, 8 | "forceConsistentCasingInFileNames": true, 9 | "strict": true, 10 | "noImplicitReturns": true, 11 | "noFallthroughCasesInSwitch": true, 12 | "sourceMap": true, 13 | "declaration": false, 14 | "downlevelIteration": true, 15 | "experimentalDecorators": true, 16 | "moduleResolution": "node", 17 | "importHelpers": true, 18 | "target": "es2017", 19 | "module": "es2020", 20 | "typeRoots": [ 21 | "node_modules/@types" 22 | ], 23 | "lib": [ 24 | "es2018", 25 | "dom" 26 | ] 27 | }, 28 | "angularCompilerOptions": { 29 | "enableI18nLegacyMessageIdFormat": false, 30 | "strictInjectionParameters": true, 31 | "strictInputAccessModifiers": true, 32 | "strictTemplates": true, 33 | "strictPropertyInitialization": false 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /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: '', redirectTo: 'dashboard' }, 11 | { path: 'v1', component: Dashboardv1Component }, 12 | { path: 'v2', component: Dashboardv2Component }, 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/shared/styles/app/form-select2.scss: -------------------------------------------------------------------------------- 1 | /* ======================================================================== 2 | Component: form-select2 3 | ========================================================================== */ 4 | 5 | .ngx-select .dropdown-menu { 6 | top: 100%; // relocate for this component 7 | } 8 | 9 | .ngx-select__toggle { 10 | border: 1px solid $input-border-color !important; 11 | border-radius: $input-border-radius; 12 | &:hover { 13 | background-color: $input-bg !important; 14 | } 15 | .ngx-select__clear .ngx-select__clear-icon { 16 | width: .65rem; 17 | color: $body-color !important; 18 | } 19 | } 20 | 21 | .ngx-select_multiple { 22 | height: auto !important; 23 | padding: 0 !important; 24 | .ngx-select__search { 25 | height: auto !important; 26 | padding: $input-padding-y $input-padding-x !important; 27 | margin: 0 !important; 28 | &:focus { 29 | border-color: $input-focus-border-color !important; 30 | } 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /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/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 | sparkOptions1 = { 12 | barColor: this.colors.byName('primary'), 13 | height: 20, 14 | barWidth: 5, 15 | barSpacing: 2, 16 | resize: true 17 | } 18 | 19 | sparkOptions2 = { 20 | barColor: this.colors.byName('purple'), 21 | height: 20, 22 | barWidth: 5, 23 | barSpacing: 2, 24 | resize: true 25 | } 26 | 27 | sparkOptions3 = { 28 | barColor: this.colors.byName('info'), 29 | height: 20, 30 | barWidth: 5, 31 | barSpacing: 2, 32 | resize: true 33 | } 34 | 35 | constructor(public colors: ColorsService) { } 36 | 37 | ngOnInit() { 38 | } 39 | 40 | 41 | } 42 | -------------------------------------------------------------------------------- /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 | $half-aligned-size : 128px; 15 | $half-aligned-gutter : 5px; 16 | 17 | .half-float { 18 | position: relative; 19 | margin-bottom: ($half-aligned-size/2) + $half-aligned-gutter; 20 | 21 | .half-float-bottom, 22 | .half-float-top { 23 | position: absolute; 24 | left: 50%; 25 | bottom: -($half-aligned-size/2); 26 | width: $half-aligned-size; 27 | height: $half-aligned-size; 28 | margin-left: -($half-aligned-size/2); 29 | z-index: 2; 30 | } 31 | 32 | .half-float-top { 33 | bottom: auto; 34 | top: -($half-aligned-size/2); 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /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/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/shared/styles/bootstrap/_close.scss: -------------------------------------------------------------------------------- 1 | .close { 2 | float: right; 3 | @include font-size($close-font-size); 4 | font-weight: $close-font-weight; 5 | line-height: 1; 6 | color: $close-color; 7 | text-shadow: $close-text-shadow; 8 | opacity: .5; 9 | 10 | // Override 's hover style 11 | @include hover() { 12 | color: $close-color; 13 | text-decoration: none; 14 | } 15 | 16 | &:not(:disabled):not(.disabled) { 17 | @include hover-focus() { 18 | opacity: .75; 19 | } 20 | } 21 | } 22 | 23 | // Additional properties for button version 24 | // iOS requires the button element instead of an anchor tag. 25 | // If you want the anchor version, it requires `href="#"`. 26 | // See https://developer.mozilla.org/en-US/docs/Web/Events/click#Safari_Mobile 27 | 28 | // stylelint-disable-next-line selector-no-qualifying-type 29 | button.close { 30 | padding: 0; 31 | background-color: transparent; 32 | border: 0; 33 | } 34 | 35 | // Future-proof disabling of clicks on `` elements 36 | 37 | // stylelint-disable-next-line selector-no-qualifying-type 38 | a.close.disabled { 39 | pointer-events: none; 40 | } 41 | -------------------------------------------------------------------------------- /src/app/shared/styles/bootstrap/bootstrap.scss: -------------------------------------------------------------------------------- 1 | /*! 2 | * Bootstrap v4.6.0 (https://getbootstrap.com/) 3 | * Copyright 2011-2021 The Bootstrap Authors 4 | * Copyright 2011-2021 Twitter, Inc. 5 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 6 | */ 7 | 8 | @import "functions"; 9 | @import "variables"; 10 | @import "mixins"; 11 | @import "root"; 12 | @import "reboot"; 13 | @import "type"; 14 | @import "images"; 15 | @import "code"; 16 | @import "grid"; 17 | @import "tables"; 18 | @import "forms"; 19 | @import "buttons"; 20 | @import "transitions"; 21 | @import "dropdown"; 22 | @import "button-group"; 23 | @import "input-group"; 24 | @import "custom-forms"; 25 | @import "nav"; 26 | @import "navbar"; 27 | @import "card"; 28 | @import "breadcrumb"; 29 | @import "pagination"; 30 | @import "badge"; 31 | @import "jumbotron"; 32 | @import "alert"; 33 | @import "progress"; 34 | @import "media"; 35 | @import "list-group"; 36 | @import "close"; 37 | @import "toasts"; 38 | @import "modal"; 39 | @import "tooltip"; 40 | @import "popover"; 41 | @import "carousel"; 42 | @import "spinners"; 43 | @import "utilities"; 44 | @import "print"; 45 | -------------------------------------------------------------------------------- /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/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 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Ng2angle 2 | 3 | This project was generated with [Angular CLI](https://github.com/angular/angular-cli) version 12.0.2. 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|guard|interface|enum|module`. 12 | 13 | ## Build 14 | 15 | Run `ng build` to build the project. The build artifacts will be stored in the `dist/` directory. 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 a platform of your choice. To use this command, you need to first add a package that implements end-to-end testing capabilities. 24 | 25 | ## Further help 26 | 27 | To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI Overview and Command Reference](https://angular.io/cli) page. 28 | -------------------------------------------------------------------------------- /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/shared/styles/app/print.scss: -------------------------------------------------------------------------------- 1 | /* ======================================================================== 2 | Component: print 3 | ========================================================================== */ 4 | 5 | // Put here all rules required to style the print view 6 | 7 | @media print { 8 | 9 | .sidebar, 10 | .topnavbar, 11 | .offsidebar, 12 | .btn { 13 | display: none !important; 14 | width: 0 !important; 15 | height: 0 !important; 16 | } 17 | 18 | .wrapper, 19 | .wrapper .section-container, 20 | .content-wrapper { 21 | margin: 0 !important; 22 | /* remove margin used for sidebar and expand the content */ 23 | padding: 0 !important; 24 | width: 100% !important; 25 | border: 0; /* optional: remove top border used to separate the page heading */ 26 | } 27 | 28 | .content-wrapper { 29 | overflow: hidden !important; 30 | } 31 | 32 | /* hide sidebar container */ 33 | .aside-container { display: none !important; } 34 | /* remove space used for the sidebar */ 35 | .footer-container { margin: 0 !important; } 36 | 37 | } 38 | -------------------------------------------------------------------------------- /src/app/routes/blog/blog.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from '@angular/core'; 2 | import { Routes, RouterModule } from '@angular/router'; 3 | import { NgxSelectModule } from 'ngx-select-ex' 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 | NgxSelectModule 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/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 | -------------------------------------------------------------------------------- /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 { HttpClientModule, HttpClient } from '@angular/common/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 | HttpClientModule, 15 | TranslateModule.forRoot({ 16 | loader: { 17 | provide: TranslateLoader, 18 | useFactory: (createTranslateLoader), 19 | deps: [HttpClient] 20 | } 21 | }) 22 | ], 23 | providers: [TranslatorService] 24 | }); 25 | }); 26 | 27 | it('should ...', inject([TranslatorService], (service: TranslatorService) => { 28 | expect(service).toBeTruthy(); 29 | })); 30 | }); 31 | -------------------------------------------------------------------------------- /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 'ngx-custom-validators'; 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/routes/extras/mailbox/view/view.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit, OnDestroy } from '@angular/core'; 2 | import { ActivatedRoute } from "@angular/router"; 3 | import { HttpClient } from '@angular/common/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: HttpClient, public settings: SettingsService) { 18 | 19 | this.sub = this.route.params.subscribe(params => { 20 | 21 | this.http.get('assets/server/mails.json') 22 | .subscribe((data) => { 23 | let mailsFound = data.mails.filter(m => (m.id === +params['mid'])); 24 | this.mail = mailsFound.length ? mailsFound[0] : {}; 25 | }); 26 | 27 | }); 28 | 29 | } 30 | 31 | ngOnDestroy() { 32 | this.sub.unsubscribe(); 33 | } 34 | 35 | ngOnInit() { 36 | } 37 | 38 | } 39 | -------------------------------------------------------------------------------- /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 { 9 | // adds priority 10 | 11 | .jvectormap-label { 12 | position: absolute; 13 | display: none; 14 | border: solid 1px $vmap-label-bg; 15 | border-radius: 2px; 16 | background: $vmap-label-bg; 17 | color: white; 18 | padding: 3px 6px; 19 | opacity: 0.9; 20 | z-index: 1100; 21 | } 22 | 23 | .jvectormap-zoomin, .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 | 37 | .jvectormap-zoomin { 38 | top: 10px; 39 | } 40 | 41 | .jvectormap-zoomout { 42 | top: 30px; 43 | } 44 | 45 | } 46 | -------------------------------------------------------------------------------- /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 'ngx-custom-validators'; 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/bootstrap/_code.scss: -------------------------------------------------------------------------------- 1 | // Inline code 2 | code { 3 | @include font-size($code-font-size); 4 | color: $code-color; 5 | word-wrap: break-word; 6 | 7 | // Streamline the style when inside anchors to avoid broken underline and more 8 | a > & { 9 | color: inherit; 10 | } 11 | } 12 | 13 | // User input typically entered via keyboard 14 | kbd { 15 | padding: $kbd-padding-y $kbd-padding-x; 16 | @include font-size($kbd-font-size); 17 | color: $kbd-color; 18 | background-color: $kbd-bg; 19 | @include border-radius($border-radius-sm); 20 | @include box-shadow($kbd-box-shadow); 21 | 22 | kbd { 23 | padding: 0; 24 | @include font-size(100%); 25 | font-weight: $nested-kbd-font-weight; 26 | @include box-shadow(none); 27 | } 28 | } 29 | 30 | // Blocks of code 31 | pre { 32 | display: block; 33 | @include font-size($code-font-size); 34 | color: $pre-color; 35 | 36 | // Account for some code outputs that place code tags in pre tags 37 | code { 38 | @include font-size(inherit); 39 | color: inherit; 40 | word-break: normal; 41 | } 42 | } 43 | 44 | // Enable scrollable blocks of code 45 | .pre-scrollable { 46 | max-height: $pre-scrollable-max-height; 47 | overflow-y: scroll; 48 | } 49 | -------------------------------------------------------------------------------- /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/bootstrap/_mixins.scss: -------------------------------------------------------------------------------- 1 | // Toggles 2 | // 3 | // Used in conjunction with global variables to enable certain theme features. 4 | 5 | // Vendor 6 | @import "vendor/rfs"; 7 | 8 | // Deprecate 9 | @import "mixins/deprecate"; 10 | 11 | // Utilities 12 | @import "mixins/breakpoints"; 13 | @import "mixins/hover"; 14 | @import "mixins/image"; 15 | @import "mixins/badge"; 16 | @import "mixins/resize"; 17 | @import "mixins/screen-reader"; 18 | @import "mixins/size"; 19 | @import "mixins/reset-text"; 20 | @import "mixins/text-emphasis"; 21 | @import "mixins/text-hide"; 22 | @import "mixins/text-truncate"; 23 | @import "mixins/visibility"; 24 | 25 | // Components 26 | @import "mixins/alert"; 27 | @import "mixins/buttons"; 28 | @import "mixins/caret"; 29 | @import "mixins/pagination"; 30 | @import "mixins/lists"; 31 | @import "mixins/list-group"; 32 | @import "mixins/nav-divider"; 33 | @import "mixins/forms"; 34 | @import "mixins/table-row"; 35 | 36 | // Skins 37 | @import "mixins/background-variant"; 38 | @import "mixins/border-radius"; 39 | @import "mixins/box-shadow"; 40 | @import "mixins/gradients"; 41 | @import "mixins/transition"; 42 | 43 | // Layout 44 | @import "mixins/clearfix"; 45 | @import "mixins/grid-framework"; 46 | @import "mixins/grid"; 47 | @import "mixins/float"; 48 | -------------------------------------------------------------------------------- /src/app/routes/tables/angulargrid/angulargrid.component.html: -------------------------------------------------------------------------------- 1 |
2 |
Tables 3 | An Advanced Datagrid for AngularJS
4 |
5 |
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 |
14 | 15 |
16 |
17 | 18 | 19 | 20 | 21 |
22 | -------------------------------------------------------------------------------- /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/app/shared/styles/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 | 10 | @mixin img-fluid() { 11 | // Part 1: Set a maximum relative to the parent 12 | max-width: 100%; 13 | // Part 2: Override the height to auto, otherwise images will be stretched 14 | // when setting a width and height attribute on the img element. 15 | height: auto; 16 | } 17 | 18 | 19 | // Retina image 20 | // 21 | // Short retina mixin for setting background-image and -size. 22 | 23 | @mixin img-retina($file-1x, $file-2x, $width-1x, $height-1x) { 24 | background-image: url($file-1x); 25 | 26 | // Autoprefixer takes care of adding -webkit-min-device-pixel-ratio and -o-min-device-pixel-ratio, 27 | // but doesn't convert dppx=>dpi. 28 | // There's no such thing as unprefixed min-device-pixel-ratio since it's nonstandard. 29 | // Compatibility info: https://caniuse.com/css-media-resolution 30 | @media only screen and (min-resolution: 192dpi), // IE9-11 don't support dppx 31 | only screen and (min-resolution: 2dppx) { // Standardized 32 | background-image: url($file-2x); 33 | background-size: $width-1x $height-1x; 34 | } 35 | @include deprecate("`img-retina()`", "v4.3.0", "v5"); 36 | } 37 | -------------------------------------------------------------------------------- /src/app/shared/styles/bootstrap/_toasts.scss: -------------------------------------------------------------------------------- 1 | .toast { 2 | // Prevents from shrinking in IE11, when in a flex container 3 | // See https://github.com/twbs/bootstrap/issues/28341 4 | flex-basis: $toast-max-width; 5 | max-width: $toast-max-width; 6 | @include font-size($toast-font-size); 7 | color: $toast-color; 8 | background-color: $toast-background-color; 9 | background-clip: padding-box; 10 | border: $toast-border-width solid $toast-border-color; 11 | box-shadow: $toast-box-shadow; 12 | opacity: 0; 13 | @include border-radius($toast-border-radius); 14 | 15 | &:not(:last-child) { 16 | margin-bottom: $toast-padding-x; 17 | } 18 | 19 | &.showing { 20 | opacity: 1; 21 | } 22 | 23 | &.show { 24 | display: block; 25 | opacity: 1; 26 | } 27 | 28 | &.hide { 29 | display: none; 30 | } 31 | } 32 | 33 | .toast-header { 34 | display: flex; 35 | align-items: center; 36 | padding: $toast-padding-y $toast-padding-x; 37 | color: $toast-header-color; 38 | background-color: $toast-header-background-color; 39 | background-clip: padding-box; 40 | border-bottom: $toast-border-width solid $toast-header-border-color; 41 | @include border-top-radius(subtract($toast-border-radius, $toast-border-width)); 42 | } 43 | 44 | .toast-body { 45 | padding: $toast-padding-x; // apply to both vertical and horizontal 46 | } 47 | -------------------------------------------------------------------------------- /src/app/shared/styles/bootstrap/_images.scss: -------------------------------------------------------------------------------- 1 | // Responsive images (ensure images don't scale beyond their parents) 2 | // 3 | // This is purposefully opt-in via an explicit class rather than being the default for all ``s. 4 | // We previously tried the "images are responsive by default" approach in Bootstrap v2, 5 | // and abandoned it in Bootstrap v3 because it breaks lots of third-party widgets (including Google Maps) 6 | // which weren't expecting the images within themselves to be involuntarily resized. 7 | // See also https://github.com/twbs/bootstrap/issues/18178 8 | .img-fluid { 9 | @include img-fluid(); 10 | } 11 | 12 | 13 | // Image thumbnails 14 | .img-thumbnail { 15 | padding: $thumbnail-padding; 16 | background-color: $thumbnail-bg; 17 | border: $thumbnail-border-width solid $thumbnail-border-color; 18 | @include border-radius($thumbnail-border-radius); 19 | @include box-shadow($thumbnail-box-shadow); 20 | 21 | // Keep them at most 100% wide 22 | @include img-fluid(); 23 | } 24 | 25 | // 26 | // Figures 27 | // 28 | 29 | .figure { 30 | // Ensures the caption's text aligns with the image. 31 | display: inline-block; 32 | } 33 | 34 | .figure-img { 35 | margin-bottom: $spacer / 2; 36 | line-height: 1; 37 | } 38 | 39 | .figure-caption { 40 | @include font-size($figure-caption-font-size); 41 | color: $figure-caption-color; 42 | } 43 | -------------------------------------------------------------------------------- /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/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/routes/tables/tables.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from '@angular/core'; 2 | import { Routes, RouterModule } from '@angular/router'; 3 | import { AgGridModule } from 'ag-grid-angular'; 4 | import { NgxDatatableModule } from '@swimlane/ngx-datatable'; 5 | 6 | import { SharedModule } from '../../shared/shared.module'; 7 | import { StandardComponent } from './standard/standard.component'; 8 | import { ExtendedComponent } from './extended/extended.component'; 9 | import { AngulargridComponent } from './angulargrid/angulargrid.component'; 10 | import { NgxdatatableComponent } from './ngxdatatable/ngxdatatable.component'; 11 | 12 | const routes: Routes = [ 13 | { path: 'standard', component: StandardComponent }, 14 | { path: 'extended', component: ExtendedComponent }, 15 | { path: 'aggrid', component: AngulargridComponent }, 16 | { path: 'ngxdatatable', component: NgxdatatableComponent } 17 | ]; 18 | 19 | @NgModule({ 20 | imports: [ 21 | SharedModule, 22 | RouterModule.forChild(routes), 23 | AgGridModule.withComponents([AngulargridComponent]), 24 | NgxDatatableModule 25 | ], 26 | declarations: [ 27 | StandardComponent, 28 | ExtendedComponent, 29 | AngulargridComponent, 30 | NgxdatatableComponent 31 | ], 32 | exports: [ 33 | RouterModule 34 | ] 35 | }) 36 | export class TablesModule { } 37 | -------------------------------------------------------------------------------- /src/app/shared/styles/bootstrap/_badge.scss: -------------------------------------------------------------------------------- 1 | // Base class 2 | // 3 | // Requires one of the contextual, color modifier classes for `color` and 4 | // `background-color`. 5 | 6 | .badge { 7 | display: inline-block; 8 | padding: $badge-padding-y $badge-padding-x; 9 | @include font-size($badge-font-size); 10 | font-weight: $badge-font-weight; 11 | line-height: 1; 12 | text-align: center; 13 | white-space: nowrap; 14 | vertical-align: baseline; 15 | @include border-radius($badge-border-radius); 16 | @include transition($badge-transition); 17 | 18 | @at-root a#{&} { 19 | @include hover-focus() { 20 | text-decoration: none; 21 | } 22 | } 23 | 24 | // Empty badges collapse automatically 25 | &:empty { 26 | display: none; 27 | } 28 | } 29 | 30 | // Quick fix for badges in buttons 31 | .btn .badge { 32 | position: relative; 33 | top: -1px; 34 | } 35 | 36 | // Pill badges 37 | // 38 | // Make them extra rounded with a modifier to replace v3's badges. 39 | 40 | .badge-pill { 41 | padding-right: $badge-pill-padding-x; 42 | padding-left: $badge-pill-padding-x; 43 | @include border-radius($badge-pill-border-radius); 44 | } 45 | 46 | // Colors 47 | // 48 | // Contextual variations (linked badges get darker on :hover). 49 | 50 | @each $color, $value in $theme-colors { 51 | .badge-#{$color} { 52 | @include badge-variant($value); 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /src/app/shared/styles/app/placeholder.scss: -------------------------------------------------------------------------------- 1 | /* ======================================================================== 2 | Component: placeholder 3 | ========================================================================== */ 4 | 5 | // Defines styles for placeholder boxes 6 | // Create a placeholder space that can be used for uploading files via drag and drop. 7 | // Based on uikit placeholder addon 8 | // ========================================================================== 9 | // Variables 10 | // ========================================================================== 11 | $placeholder-margin-vertical : 15px; 12 | $placeholder-padding : 20px; 13 | $placeholder-border : #ddd; 14 | $placeholder-background : #fafafa; 15 | $placeholder-color : #444; 16 | 17 | $placeholder-large-padding-vertical : 80px; 18 | 19 | 20 | // Placeholder container 21 | .box-placeholder { 22 | margin-bottom: $placeholder-margin-vertical; 23 | padding: $placeholder-padding; 24 | border: 1px dashed $placeholder-border; 25 | background: $placeholder-background; 26 | color: $placeholder-color; 27 | } 28 | 29 | 30 | // Remove margin from the last-child 31 | .box-placeholder> :last-child { 32 | margin-bottom: 0; 33 | } 34 | 35 | // Variant 36 | .box-placeholder-lg { 37 | padding-top: $placeholder-large-padding-vertical; 38 | padding-bottom: $placeholder-large-padding-vertical; 39 | } 40 | -------------------------------------------------------------------------------- /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/shared/styles/bootstrap/_progress.scss: -------------------------------------------------------------------------------- 1 | // Disable animation if transitions are disabled 2 | @if $enable-transitions { 3 | @keyframes progress-bar-stripes { 4 | from { background-position: $progress-height 0; } 5 | to { background-position: 0 0; } 6 | } 7 | } 8 | 9 | .progress { 10 | display: flex; 11 | height: $progress-height; 12 | overflow: hidden; // force rounded corners by cropping it 13 | line-height: 0; 14 | @include font-size($progress-font-size); 15 | background-color: $progress-bg; 16 | @include border-radius($progress-border-radius); 17 | @include box-shadow($progress-box-shadow); 18 | } 19 | 20 | .progress-bar { 21 | display: flex; 22 | flex-direction: column; 23 | justify-content: center; 24 | overflow: hidden; 25 | color: $progress-bar-color; 26 | text-align: center; 27 | white-space: nowrap; 28 | background-color: $progress-bar-bg; 29 | @include transition($progress-bar-transition); 30 | } 31 | 32 | .progress-bar-striped { 33 | @include gradient-striped(); 34 | background-size: $progress-height $progress-height; 35 | } 36 | 37 | @if $enable-transitions { 38 | .progress-bar-animated { 39 | animation: $progress-bar-animation-timing progress-bar-stripes; 40 | 41 | @if $enable-prefers-reduced-motion-media-query { 42 | @media (prefers-reduced-motion: reduce) { 43 | animation: none; 44 | } 45 | } 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /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 { HttpClient } from '@angular/common/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 = ''; 13 | mails: Array = []; 14 | private sub: any; 15 | 16 | constructor(public route: ActivatedRoute, public http: HttpClient) { 17 | 18 | this.http.get('assets/server/mails.json') 19 | .subscribe((data) => { 20 | this.mails = data.mails; 21 | }); 22 | 23 | this.sub = this.route.params.subscribe(params => { 24 | this.folder = params['folder'] === 'inbox' ? '' : params['folder']; 25 | }); 26 | } 27 | 28 | ngOnInit() { 29 | 30 | } 31 | 32 | ngOnDestroy() { 33 | this.sub.unsubscribe(); 34 | } 35 | 36 | isMailOfFolder(mail) { 37 | return mail.folder === this.folder; 38 | } 39 | 40 | folderMailsCount() { 41 | return this.folderMails().length; 42 | } 43 | 44 | folderMails() { 45 | return this.mails.filter(m => (m.folder === this.folder || this.folder === '')) 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /src/app/shared/styles/bootstrap/_alert.scss: -------------------------------------------------------------------------------- 1 | // 2 | // Base styles 3 | // 4 | 5 | .alert { 6 | position: relative; 7 | padding: $alert-padding-y $alert-padding-x; 8 | margin-bottom: $alert-margin-bottom; 9 | border: $alert-border-width solid transparent; 10 | @include border-radius($alert-border-radius); 11 | } 12 | 13 | // Headings for larger alerts 14 | .alert-heading { 15 | // Specified to prevent conflicts of changing $headings-color 16 | color: inherit; 17 | } 18 | 19 | // Provide class for links that match alerts 20 | .alert-link { 21 | font-weight: $alert-link-font-weight; 22 | } 23 | 24 | 25 | // Dismissible alerts 26 | // 27 | // Expand the right padding and account for the close button's positioning. 28 | 29 | .alert-dismissible { 30 | padding-right: $close-font-size + $alert-padding-x * 2; 31 | 32 | // Adjust close link position 33 | .close { 34 | position: absolute; 35 | top: 0; 36 | right: 0; 37 | z-index: 2; 38 | padding: $alert-padding-y $alert-padding-x; 39 | color: inherit; 40 | } 41 | } 42 | 43 | 44 | // Alternate styles 45 | // 46 | // Generate contextual modifier classes for colorizing the alert. 47 | 48 | @each $color, $value in $theme-colors { 49 | .alert-#{$color} { 50 | @include alert-variant(theme-color-level($color, $alert-bg-level), theme-color-level($color, $alert-border-level), theme-color-level($color, $alert-color-level)); 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /src/styles.scss: -------------------------------------------------------------------------------- 1 | /* You can add global styles to this file, and also import other style files */ 2 | 3 | //== Vendor 4 | @import '~@fortawesome/fontawesome-free/css/brands.css'; 5 | @import '~@fortawesome/fontawesome-free/css/regular.css'; 6 | @import '~@fortawesome/fontawesome-free/css/solid.css'; 7 | @import '~@fortawesome/fontawesome-free/css/fontawesome.css'; 8 | @import '~simple-line-icons/css/simple-line-icons.css'; 9 | @import '~weather-icons/css/weather-icons.css'; 10 | @import '~weather-icons/css/weather-icons-wind.css'; 11 | 12 | @import '~spinkit/css/spinkit.css'; 13 | @import '~loaders.css/loaders.css'; 14 | 15 | @import '~ngx-toastr/toastr.css'; 16 | 17 | @import '~ng2-dnd/bundles/style.css'; 18 | 19 | @import '~ag-grid-community/dist/styles/ag-grid.css'; 20 | @import '~ag-grid-community/dist/styles/ag-theme-fresh.css'; 21 | 22 | @import '~ika.jvectormap/jquery-jvectormap-1.2.2.css'; 23 | 24 | @import '~jqcloud2/dist/jqcloud.css'; 25 | 26 | @import '~summernote/dist/summernote.css'; 27 | 28 | @import '~@fullcalendar/core/main.css'; 29 | @import '~@fullcalendar/daygrid/main.css'; 30 | @import '~@fullcalendar/timegrid/main.css'; 31 | @import '~@fullcalendar/list/main.css'; 32 | @import '~@fullcalendar/bootstrap/main.css'; 33 | 34 | @import '~codemirror/lib/codemirror.css'; 35 | 36 | //== Bootstrap 37 | @import "./app/shared/styles/bootstrap.scss"; 38 | //== Application 39 | @import "./app/shared/styles/app.scss"; 40 | -------------------------------------------------------------------------------- /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 = false; 12 | 13 | folders = [ 14 | { name: 'Inbox', folder: 'inbox', alert: 42, icon: 'fa fa-inbox' }, 15 | { name: 'Starred', folder: 'starred', alert: 10, icon: 'fa fa-star' }, 16 | { name: 'Sent', folder: 'sent', alert: 0, icon: 'far fa-paper-plane' }, 17 | { name: 'Draft', folder: 'draft', alert: 5, icon: 'fa fa-edit' }, 18 | { name: 'Trash', folder: 'trash', alert: 0, icon: 'fa 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/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: Array = []; 11 | sum = 100; 12 | 13 | array2: Array = []; 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/shared/styles/app/dropdown-extra.scss: -------------------------------------------------------------------------------- 1 | /* ======================================================================== 2 | Component: dropdown-extras 3 | ========================================================================== */ 4 | 5 | 6 | // Allows to mix list group inside dropdowns 7 | .dropdown-list { 8 | 9 | .dropdown-item { 10 | padding: 0; 11 | } 12 | 13 | >.dropdown-menu { 14 | padding: 0; 15 | min-width: 220px; 16 | } 17 | 18 | .list-group { 19 | margin: 0; 20 | } 21 | 22 | .list-group-item { 23 | border-radius: 0; 24 | border-left: 0; 25 | border-right: 0; 26 | &:first-child { 27 | border-top: 0; 28 | } 29 | &:last-child { 30 | border-bottom: 0; 31 | } 32 | } 33 | } 34 | 35 | // Labels inside dropdowns 36 | .dropdown { 37 | >a { 38 | position: relative; 39 | >.badge { 40 | position: absolute; 41 | top: 10px; 42 | right: 0; 43 | padding: 2px 5px; 44 | } 45 | } 46 | } 47 | 48 | // Popper doesnt place correctly dropdowns 49 | // we can use forced class to place them 50 | .dropdown-menu-right-forced { 51 | right: 0 !important; 52 | left: auto !important; 53 | } 54 | 55 | // Remove default icon from dropdowns 56 | .dropdown-toggle-nocaret { 57 | &:after { 58 | display: none; 59 | } 60 | } 61 | -------------------------------------------------------------------------------- /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/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/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: any[] = [{ '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/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/shared/styles/app/chart-flot.scss: -------------------------------------------------------------------------------- 1 | /* ======================================================================== 2 | Component: chart-flot 3 | ======================================================================== */ 4 | 5 | 6 | [flot] { 7 | display: block; 8 | width: 100%; 9 | height: 250px; 10 | .legend { 11 | >table tr td { 12 | padding: 3px; 13 | } 14 | >table tr td:first-child { 15 | padding-left: 3px; 16 | } 17 | >table tr td:last-child { 18 | padding-right: 3px; 19 | } 20 | >table tr+tr td { 21 | padding-top: 0; 22 | } 23 | 24 | >div:first-child { 25 | border-color: rgba(0, 0, 0, .1) !important; 26 | } 27 | 28 | .legendColorBox>div, 29 | .legendColorBox>div>div { 30 | border-radius: 400px; 31 | } 32 | } 33 | } 34 | 35 | .flot-chart-content { 36 | width: 100%; 37 | height: 100%; 38 | } 39 | 40 | // Labels for PIE CHARTS 41 | .flot-pie-label { 42 | padding: 3px 5px; 43 | font-size: 10px; 44 | text-align: center; 45 | color: #fff; 46 | } 47 | 48 | // Tooltip style 49 | // -------------------------------------- 50 | #flotTip { 51 | position: relative; 52 | padding: 5px; 53 | font-size: 12px !important; 54 | border-radius: 2px !important; 55 | border-color: transparent !important; 56 | background-color: rgba(0, 0, 0, .75) !important; 57 | color: #f1f1f1; 58 | z-index: 5; 59 | } 60 | -------------------------------------------------------------------------------- /src/app/shared/styles/bootstrap/_breadcrumb.scss: -------------------------------------------------------------------------------- 1 | .breadcrumb { 2 | display: flex; 3 | flex-wrap: wrap; 4 | padding: $breadcrumb-padding-y $breadcrumb-padding-x; 5 | margin-bottom: $breadcrumb-margin-bottom; 6 | @include font-size($breadcrumb-font-size); 7 | list-style: none; 8 | background-color: $breadcrumb-bg; 9 | @include border-radius($breadcrumb-border-radius); 10 | } 11 | 12 | .breadcrumb-item { 13 | // The separator between breadcrumbs (by default, a forward-slash: "/") 14 | + .breadcrumb-item { 15 | padding-left: $breadcrumb-item-padding; 16 | 17 | &::before { 18 | float: left; // Suppress inline spacings and underlining of the separator 19 | padding-right: $breadcrumb-item-padding; 20 | color: $breadcrumb-divider-color; 21 | content: escape-svg($breadcrumb-divider); 22 | } 23 | } 24 | 25 | // IE9-11 hack to properly handle hyperlink underlines for breadcrumbs built 26 | // without `
    `s. The `::before` pseudo-element generates an element 27 | // *within* the .breadcrumb-item and thereby inherits the `text-decoration`. 28 | // 29 | // To trick IE into suppressing the underline, we give the pseudo-element an 30 | // underline and then immediately remove it. 31 | + .breadcrumb-item:hover::before { 32 | text-decoration: underline; 33 | } 34 | // stylelint-disable-next-line no-duplicate-selectors 35 | + .breadcrumb-item:hover::before { 36 | text-decoration: none; 37 | } 38 | 39 | &.active { 40 | color: $breadcrumb-active-color; 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /src/app/routes/extras/mailbox/compose/compose.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | declare var $: any; 3 | 4 | // Tooltips fix for summernote 5 | // https://github.com/Financial-Times/polyfill-library/issues/164#issuecomment-486977672 6 | const origToString = Object.prototype.toString; 7 | Object.prototype.toString = function() { 8 | 'use strict'; 9 | if (this === null) return '[object Null]'; 10 | return origToString.call(this); 11 | }; 12 | // End Tooltips fix for summernote 13 | 14 | @Component({ 15 | selector: 'app-compose', 16 | templateUrl: './compose.component.html', 17 | styleUrls: ['./compose.component.scss'] 18 | }) 19 | export class ComposeComponent implements OnInit { 20 | 21 | showCC = false; 22 | showBCC = false; 23 | contents: string; 24 | 25 | constructor() { } 26 | 27 | ngOnInit() { 28 | // Summernote is currently not ported as a native angular2 module 29 | // For a quick use it we use the component a wrapper 30 | // Plugin events can be used to keep component props 31 | // in sync with the editor content 32 | $('#summernote').summernote({ 33 | height: 230, 34 | dialogsInBody: true, 35 | callbacks: { 36 | onChange: (contents, $editable) => { 37 | this.contents = contents; 38 | // console.log(contents); 39 | } 40 | } 41 | }); 42 | $('.note-popover').css({'display': 'none'}); 43 | 44 | } 45 | 46 | } 47 | -------------------------------------------------------------------------------- /src/app/shared/styles/app/layout-animation.scss: -------------------------------------------------------------------------------- 1 | /* ======================================================================== 2 | Component: layout-animation.less 3 | ========================================================================== */ 4 | 5 | .wrapper .aside-container { 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 | 9 | .aside-inner, 10 | .navbar-header, 11 | .sidebar>.sidebar-nav>li { 12 | transition: width .2s cubic-bezier(0.35, 0, 0.25, 1); 13 | } 14 | 15 | .wrapper .section-container { 16 | transition: margin-left .2s cubic-bezier(0.35, 0, 0.25, 1); 17 | } 18 | 19 | .sidebar>.sidebar-nav .badge { 20 | animation: fadeInRight 1s; 21 | animation-fill-mode: both; 22 | } 23 | 24 | .aside-collapsed .sidebar>.sidebar-nav .badge, 25 | .aside-collapsed-text .sidebar>.sidebar-nav .badge { 26 | animation: fadeIn 1s; 27 | } 28 | 29 | .sidebar .sidebar-nav>li>a { 30 | animation: fadeInLeft .5s; 31 | } 32 | 33 | .sidebar>.sidebar-nav>.nav-heading, 34 | .sidebar>.sidebar-nav>li>a>span, 35 | .navbar-brand .brand-logo { 36 | animation: fadeIn 1s; 37 | } 38 | 39 | .sidebar li>a, 40 | .sidebar li>.nav-item, 41 | .sidebar>.sidebar-nav>.nav-heading { 42 | white-space: nowrap; 43 | } 44 | 45 | .aside-collapsed, 46 | .aside-collapsed-text { 47 | .user-block-picture { 48 | transition: width .2s cubic-bezier(0.35, 0, 0.25, 1); 49 | } 50 | .user-block { 51 | transition: padding .2s cubic-bezier(0.35, 0, 0.25, 1); 52 | } 53 | } 54 | -------------------------------------------------------------------------------- /src/assets/codemirror/mode/htmlembedded/htmlembedded.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"), require("../htmlmixed/htmlmixed"), 7 | require("../../addon/mode/multiplex")); 8 | else if (typeof define == "function" && define.amd) // AMD 9 | define(["../../lib/codemirror", "../htmlmixed/htmlmixed", 10 | "../../addon/mode/multiplex"], mod); 11 | else // Plain browser env 12 | mod(CodeMirror); 13 | })(function(CodeMirror) { 14 | "use strict"; 15 | 16 | CodeMirror.defineMode("htmlembedded", function(config, parserConfig) { 17 | return CodeMirror.multiplexingMode(CodeMirror.getMode(config, "htmlmixed"), { 18 | open: parserConfig.open || parserConfig.scriptStartRegex || "<%", 19 | close: parserConfig.close || parserConfig.scriptEndRegex || "%>", 20 | mode: CodeMirror.getMode(config, parserConfig.scriptingModeSpec) 21 | }); 22 | }, "htmlmixed"); 23 | 24 | CodeMirror.defineMIME("application/x-ejs", {name: "htmlembedded", scriptingModeSpec:"javascript"}); 25 | CodeMirror.defineMIME("application/x-aspx", {name: "htmlembedded", scriptingModeSpec:"text/x-csharp"}); 26 | CodeMirror.defineMIME("application/x-jsp", {name: "htmlembedded", scriptingModeSpec:"text/x-java"}); 27 | CodeMirror.defineMIME("application/x-erb", {name: "htmlembedded", scriptingModeSpec:"ruby"}); 28 | }); 29 | -------------------------------------------------------------------------------- /src/assets/codemirror/theme/bespin.css: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Name: Bespin 4 | Author: Mozilla / Jan T. Sott 5 | 6 | CodeMirror template by Jan T. Sott (https://github.com/idleberg/base16-codemirror) 7 | Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) 8 | 9 | */ 10 | 11 | .cm-s-bespin.CodeMirror {background: #28211c; color: #9d9b97;} 12 | .cm-s-bespin div.CodeMirror-selected {background: #36312e !important;} 13 | .cm-s-bespin .CodeMirror-gutters {background: #28211c; border-right: 0px;} 14 | .cm-s-bespin .CodeMirror-linenumber {color: #666666;} 15 | .cm-s-bespin .CodeMirror-cursor {border-left: 1px solid #797977 !important;} 16 | 17 | .cm-s-bespin span.cm-comment {color: #937121;} 18 | .cm-s-bespin span.cm-atom {color: #9b859d;} 19 | .cm-s-bespin span.cm-number {color: #9b859d;} 20 | 21 | .cm-s-bespin span.cm-property, .cm-s-bespin span.cm-attribute {color: #54be0d;} 22 | .cm-s-bespin span.cm-keyword {color: #cf6a4c;} 23 | .cm-s-bespin span.cm-string {color: #f9ee98;} 24 | 25 | .cm-s-bespin span.cm-variable {color: #54be0d;} 26 | .cm-s-bespin span.cm-variable-2 {color: #5ea6ea;} 27 | .cm-s-bespin span.cm-def {color: #cf7d34;} 28 | .cm-s-bespin span.cm-error {background: #cf6a4c; color: #797977;} 29 | .cm-s-bespin span.cm-bracket {color: #9d9b97;} 30 | .cm-s-bespin span.cm-tag {color: #cf6a4c;} 31 | .cm-s-bespin span.cm-link {color: #9b859d;} 32 | 33 | .cm-s-bespin .CodeMirror-matchingbracket { text-decoration: underline; color: white !important;} 34 | .cm-s-bespin .CodeMirror-activeline-background { background: #404040; } 35 | -------------------------------------------------------------------------------- /src/app/shared/directives/easypiechart/easypiechart.directive.ts: -------------------------------------------------------------------------------- 1 | import { OnInit, OnChanges, Directive, Input, SimpleChange, ElementRef } from '@angular/core'; 2 | 3 | declare var $: any; 4 | const EasyPieChart = require('easy-pie-chart'); 5 | 6 | @Directive({ 7 | selector: '[easypiechart]' 8 | }) 9 | export class EasypiechartDirective implements OnInit, OnChanges { 10 | 11 | /** 12 | * default easy pie chart options 13 | * @type {Object} 14 | */ 15 | public defaultOptions = { 16 | barColor: '#ef1e25', 17 | trackColor: '#f9f9f9', 18 | scaleColor: '#dfe0e0', 19 | scaleLength: 5, 20 | lineCap: 'round', 21 | lineWidth: 3, 22 | size: 110, 23 | rotate: 0, 24 | animate: { 25 | duration: 1000, 26 | enabled: true 27 | } 28 | }; 29 | 30 | public pieChart: any; 31 | @Input() percent; 32 | @Input() options; 33 | 34 | constructor(public element: ElementRef) { 35 | this.percent = this.percent || 0; 36 | this.options = $.extend({}, this.defaultOptions, this.options); 37 | } 38 | 39 | ngOnInit() { 40 | if(EasyPieChart) { 41 | this.pieChart = new EasyPieChart(this.element.nativeElement, this.options); 42 | this.pieChart.update(this.percent); 43 | } 44 | } 45 | 46 | ngOnChanges(changes: { [propertyName: string]: SimpleChange }) { 47 | if (this.pieChart && changes['percent']) { 48 | this.pieChart.update(this.percent); 49 | } 50 | } 51 | 52 | } 53 | -------------------------------------------------------------------------------- /src/app/layout/header/navsearch/navsearch.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, Input, Output, EventEmitter, OnInit, OnChanges, SimpleChange, ElementRef } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-navsearch', 5 | templateUrl: './navsearch.component.html', 6 | styleUrls: ['./navsearch.component.scss'] 7 | }) 8 | export class NavsearchComponent implements OnInit, OnChanges { 9 | 10 | @Input() visible: boolean; 11 | @Output() onclose = new EventEmitter(); 12 | term: string; 13 | 14 | constructor(public elem: ElementRef) { } 15 | 16 | ngOnInit() { 17 | document.addEventListener('keyup', event => { 18 | if (event.keyCode === 27) {// ESC 19 | this.closeNavSearch(); 20 | } 21 | }); 22 | document.addEventListener('click', event => { 23 | const contains = (this.elem.nativeElement !== event.target && this.elem.nativeElement.contains(event.target)); 24 | if (!contains) { 25 | this.closeNavSearch(); 26 | } 27 | }); 28 | } 29 | 30 | closeNavSearch() { 31 | this.visible = false; 32 | this.onclose.emit(); 33 | } 34 | 35 | ngOnChanges(changes: { [propKey: string]: SimpleChange }) { 36 | // console.log(changes['visible'].currentValue) 37 | if (changes['visible'].currentValue === true) { 38 | this.elem.nativeElement.querySelector('input').focus(); 39 | } 40 | } 41 | 42 | handleForm() { 43 | console.log('Form submit: ' + this.term); 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /src/app/shared/styles/bootstrap/_spinners.scss: -------------------------------------------------------------------------------- 1 | // 2 | // Rotating border 3 | // 4 | 5 | @keyframes spinner-border { 6 | to { transform: rotate(360deg); } 7 | } 8 | 9 | .spinner-border { 10 | display: inline-block; 11 | width: $spinner-width; 12 | height: $spinner-height; 13 | vertical-align: text-bottom; 14 | border: $spinner-border-width solid currentColor; 15 | border-right-color: transparent; 16 | // stylelint-disable-next-line property-disallowed-list 17 | border-radius: 50%; 18 | animation: .75s linear infinite spinner-border; 19 | } 20 | 21 | .spinner-border-sm { 22 | width: $spinner-width-sm; 23 | height: $spinner-height-sm; 24 | border-width: $spinner-border-width-sm; 25 | } 26 | 27 | // 28 | // Growing circle 29 | // 30 | 31 | @keyframes spinner-grow { 32 | 0% { 33 | transform: scale(0); 34 | } 35 | 50% { 36 | opacity: 1; 37 | transform: none; 38 | } 39 | } 40 | 41 | .spinner-grow { 42 | display: inline-block; 43 | width: $spinner-width; 44 | height: $spinner-height; 45 | vertical-align: text-bottom; 46 | background-color: currentColor; 47 | // stylelint-disable-next-line property-disallowed-list 48 | border-radius: 50%; 49 | opacity: 0; 50 | animation: .75s linear infinite spinner-grow; 51 | } 52 | 53 | .spinner-grow-sm { 54 | width: $spinner-width-sm; 55 | height: $spinner-height-sm; 56 | } 57 | 58 | @if $enable-prefers-reduced-motion-media-query { 59 | @media (prefers-reduced-motion: reduce) { 60 | .spinner-border, 61 | .spinner-grow { 62 | animation-duration: 1.5s; 63 | } 64 | } 65 | } 66 | --------------------------------------------------------------------------------