From b47ffe89d21e9b39755c98a7d2bdb800af02c158 Mon Sep 17 00:00:00 2001
From: JoseLuisLanda <71565582+JoseLuisLanda@users.noreply.github.com>
Date: Fri, 5 Mar 2021 22:50:54 -0600
Subject: [PATCH] Revert "reverting to 36865c0"
---
package-lock.json | 22 -
package.json | 1 -
src/app/app-routing.module.ts | 78 +-
src/app/app.component.html | 13 +-
src/app/app.module.ts | 38 +-
src/app/{ => core}/guards/auth.guard.spec.ts | 0
src/app/{ => core}/guards/auth.guard.ts | 5 +-
.../{ => core}/services/auth.service.spec.ts | 0
src/app/core/services/auth.service.ts | 137 +
src/app/core/services/firebase.service.ts | 61 +
src/app/{ => core}/services/navbar.service.ts | 0
.../{ => core}/services/time.service.spec.ts | 0
src/app/{ => core}/services/time.service.ts | 1 +
src/app/pages/home/home.component.css | 3 +
src/app/pages/home/home.component.html | 90 +-
src/app/pages/home/home.component.ts | 37 +-
src/app/pages/login/login.component.ts | 148 +-
src/app/pages/perfil/perfil-rutas.module.ts | 24 -
src/app/pages/perfil/perfil.module.ts | 19 -
.../perfil/principal/principal.component.html | 134 -
.../perfil/principal/principal.component.scss | 16 -
.../principal/principal.component.spec.ts | 25 -
.../perfil/principal/principal.component.ts | 27 -
src/app/pages/profile/profile.component.html | 76 +-
src/app/pages/profile/profile.component.ts | 15 +-
.../profiledetails.component.css} | 0
.../profiledetails.component.html | 6 +
.../profiledetails.component.spec.ts | 25 +
.../profiledetails.component.ts | 20 +
.../profilegrupos.component.css} | 0
.../profilegrupos.component.html | 1 +
.../profilegrupos.component.spec.ts | 25 +
.../profilegrupos/profilegrupos.component.ts | 15 +
.../profileinsignias.component.css} | 0
.../profileinsignias.component.html | 1 +
.../profileinsignias.component.spec.ts | 25 +
.../profileinsignias.component.ts | 15 +
.../profileventos/profileventos.component.css | 0
.../profileventos.component.html | 1 +
.../profileventos.component.spec.ts | 25 +
.../profileventos/profileventos.component.ts | 15 +
src/app/pages/register/register.component.ts | 47 +-
.../comunidad/comunidad-routing.module.ts | 2 +-
.../comunidades/comunidades.component.css | 4 -
.../comunidades/comunidades.component.html | 29 +-
.../comunidades/comunidades.component.ts | 16 +-
.../section/counter/counter-routing.module.ts | 16 -
.../{counter => }/counter.component.css | 0
.../{counter => }/counter.component.html | 0
.../{counter => }/counter.component.spec.ts | 0
.../{counter => }/counter.component.ts | 4 +-
.../pages/section/counter/counter.module.ts | 15 -
.../course/courses/courses.component.css | 40 -
.../course/courses/courses.component.html | 41 -
.../section/sponsor/sponsor-routing.module.ts | 2 +-
.../pages/section/sponsor/sponsor.module.ts | 4 +-
.../sponsor/sponsors/sponsors.component.css | 0
.../sponsor/sponsors/sponsors.component.html | 134 +-
.../sponsor/sponsors/sponsors.component.scss | 134 -
.../sponsor/sponsors/sponsors.component.ts | 42 +-
.../pages/shared/footer/footer.component.css | 4 +-
.../pages/shared/header/header.component.html | 104 +-
.../pages/shared/header/header.component.ts | 30 +-
.../verification-email.component.ts | 38 +-
src/app/services/auth.service.ts | 211 -
src/app/services/firebase.service.ts | 57 -
.../shared/components/components.module.ts | 12 +
.../comunidad/comunidad.component.css | 4 +
.../comunidad/comunidad.component.html | 7 +
.../comunidad/comunidad.component.spec.ts | 25 +
.../comunidad/comunidad.component.ts | 16 +
.../course/course-routing.module.ts | 0
.../components}/course/course.module.ts | 0
.../course/courses/courses.component.css | 0
.../course/courses/courses.component.html | 5 +
.../course/courses/courses.component.spec.ts | 0
.../course/courses/courses.component.ts | 14 +-
.../components/taller/taller.component.css | 5 +
.../components/taller/taller.component.html | 31 +
.../taller/taller.component.spec.ts | 25 +
.../components/taller/taller.component.ts | 35 +
src/app/{ => shared}/helpers/roleValidator.ts | 4 +-
src/app/shared/models/collections.ts | 22 +
src/app/{ => shared}/models/element.ts | 0
src/app/{ => shared}/models/file.model.ts | 0
src/app/{ => shared}/models/user.model.ts | 0
src/assets/css/main.css | 737 +--
src/assets/css_header/colors.css | 868 ---
src/assets/css_header/fonts/Flaticon.eot | Bin 9396 -> 0 bytes
src/assets/css_header/fonts/Flaticon.svg | 361 --
src/assets/css_header/fonts/Flaticon.ttf | Bin 9220 -> 0 bytes
src/assets/css_header/fonts/Flaticon.woff | Bin 5000 -> 0 bytes
src/assets/css_header/fonts/fa-brands-400.eot | Bin 129352 -> 0 bytes
src/assets/css_header/fonts/fa-brands-400.svg | 3442 ------------
src/assets/css_header/fonts/fa-brands-400.ttf | Bin 129048 -> 0 bytes
.../css_header/fonts/fa-brands-400.woff | Bin 87352 -> 0 bytes
.../css_header/fonts/fa-brands-400.woff2 | Bin 74508 -> 0 bytes
.../css_header/fonts/fa-regular-400.eot | Bin 34388 -> 0 bytes
.../css_header/fonts/fa-regular-400.svg | 803 ---
.../css_header/fonts/fa-regular-400.ttf | Bin 34092 -> 0 bytes
.../css_header/fonts/fa-regular-400.woff | Bin 16804 -> 0 bytes
.../css_header/fonts/fa-regular-400.woff2 | Bin 13580 -> 0 bytes
src/assets/css_header/fonts/fa-solid-900.eot | Bin 192116 -> 0 bytes
src/assets/css_header/fonts/fa-solid-900.svg | 4649 -----------------
src/assets/css_header/fonts/fa-solid-900.ttf | Bin 191832 -> 0 bytes
src/assets/css_header/fonts/fa-solid-900.woff | Bin 98020 -> 0 bytes
.../css_header/fonts/fa-solid-900.woff2 | Bin 75440 -> 0 bytes
src/assets/css_header/fonts/houses.eot | Bin 22588 -> 0 bytes
src/assets/css_header/fonts/houses.svg | 640 ---
src/assets/css_header/fonts/houses.ttf | Bin 22412 -> 0 bytes
src/assets/css_header/fonts/houses.woff | Bin 12096 -> 0 bytes
src/assets/css_header/fonts/icofont.woff | Bin 645604 -> 0 bytes
src/assets/css_header/fonts/icofont.woff2 | Bin 537880 -> 0 bytes
src/assets/css_header/fonts/slick.eot | Bin 2048 -> 0 bytes
src/assets/css_header/fonts/slick.ttf | Bin 1892 -> 0 bytes
src/assets/css_header/fonts/slick.woff | Bin 1380 -> 0 bytes
src/assets/css_header/img/close.png | Bin 263 -> 0 bytes
src/assets/css_header/img/lightbox-next.png | Bin 1880 -> 0 bytes
src/assets/css_header/img/lightbox-prev.png | Bin 1897 -> 0 bytes
src/assets/css_header/img/loading.gif | Bin 8476 -> 0 bytes
src/assets/css_header/plugins/ajax-loader.gif | Bin 45030 -> 0 bytes
src/assets/css_header/plugins/animation.css | 1 -
.../css_header/plugins/bootstrap.min.css | 1 -
src/assets/css_header/plugins/date-picker.css | 1 -
src/assets/css_header/plugins/dropzone.css | 1 -
src/assets/css_header/plugins/flaticon.css | 116 -
src/assets/css_header/plugins/iconfont.css | 1 -
.../plugins/ion.rangeSlider.min.css | 1 -
src/assets/css_header/plugins/light-box.css | 1 -
src/assets/css_header/plugins/line-icons.css | 1 -
.../css_header/plugins/magnifypopup.css | 351 --
src/assets/css_header/plugins/morris.css | 2 -
src/assets/css_header/plugins/select2.css | 1 -
src/assets/css_header/plugins/slick-theme.css | 1 -
src/assets/css_header/plugins/slick.css | 1 -
src/assets/css_header/plugins/themify.css | 1 -
src/assets/css_header/styles.css | 1 -
src/assets/img_header/404.png | Bin 11502 -> 0 bytes
src/assets/img_header/iconos/eye.svg | 10 -
src/assets/img_header/iconos/eye2.svg | 4 -
src/assets/img_header/logo/logo.png | Bin 16635 -> 0 bytes
src/assets/js_header/bootstrap.min.js | 6 -
src/assets/js_header/counterup.min.js | 143 -
src/assets/js_header/custom.js | 434 --
src/assets/js_header/jquery.counterup.min.js | 8 -
src/assets/js_header/jquery.min.js | 5 -
src/assets/js_header/metisMenu.min.js | 9 -
src/assets/js_header/popper.min.js | 4 -
src/assets/js_header/select2.min.js | 1 -
src/assets/js_header/slick.js | 18 -
src/assets/scss_header/_global.scss | 36 -
src/assets/scss_header/_main.scss | 2 -
src/assets/scss_header/app.scss | 16 -
src/index.html | 88 +-
src/styles.css | 1 -
155 files changed, 1321 insertions(+), 13769 deletions(-)
rename src/app/{ => core}/guards/auth.guard.spec.ts (100%)
rename src/app/{ => core}/guards/auth.guard.ts (83%)
rename src/app/{ => core}/services/auth.service.spec.ts (100%)
create mode 100644 src/app/core/services/auth.service.ts
create mode 100644 src/app/core/services/firebase.service.ts
rename src/app/{ => core}/services/navbar.service.ts (100%)
rename src/app/{ => core}/services/time.service.spec.ts (100%)
rename src/app/{ => core}/services/time.service.ts (93%)
create mode 100644 src/app/pages/home/home.component.css
delete mode 100644 src/app/pages/perfil/perfil-rutas.module.ts
delete mode 100644 src/app/pages/perfil/perfil.module.ts
delete mode 100644 src/app/pages/perfil/principal/principal.component.html
delete mode 100644 src/app/pages/perfil/principal/principal.component.scss
delete mode 100644 src/app/pages/perfil/principal/principal.component.spec.ts
delete mode 100644 src/app/pages/perfil/principal/principal.component.ts
rename src/app/pages/{home/home.component.scss => profile/profiledetails/profiledetails.component.css} (100%)
create mode 100644 src/app/pages/profile/profiledetails/profiledetails.component.html
create mode 100644 src/app/pages/profile/profiledetails/profiledetails.component.spec.ts
create mode 100644 src/app/pages/profile/profiledetails/profiledetails.component.ts
rename src/{assets/css_header/plugins/font-awesome.css => app/pages/profile/profilegrupos/profilegrupos.component.css} (100%)
create mode 100644 src/app/pages/profile/profilegrupos/profilegrupos.component.html
create mode 100644 src/app/pages/profile/profilegrupos/profilegrupos.component.spec.ts
create mode 100644 src/app/pages/profile/profilegrupos/profilegrupos.component.ts
rename src/{assets/scss_header/_variables.scss => app/pages/profile/profileinsignias/profileinsignias.component.css} (100%)
create mode 100644 src/app/pages/profile/profileinsignias/profileinsignias.component.html
create mode 100644 src/app/pages/profile/profileinsignias/profileinsignias.component.spec.ts
create mode 100644 src/app/pages/profile/profileinsignias/profileinsignias.component.ts
create mode 100644 src/app/pages/profile/profileventos/profileventos.component.css
create mode 100644 src/app/pages/profile/profileventos/profileventos.component.html
create mode 100644 src/app/pages/profile/profileventos/profileventos.component.spec.ts
create mode 100644 src/app/pages/profile/profileventos/profileventos.component.ts
delete mode 100644 src/app/pages/section/counter/counter-routing.module.ts
rename src/app/pages/section/counter/{counter => }/counter.component.css (100%)
rename src/app/pages/section/counter/{counter => }/counter.component.html (100%)
rename src/app/pages/section/counter/{counter => }/counter.component.spec.ts (100%)
rename src/app/pages/section/counter/{counter => }/counter.component.ts (82%)
delete mode 100644 src/app/pages/section/counter/counter.module.ts
delete mode 100644 src/app/pages/section/course/courses/courses.component.css
delete mode 100644 src/app/pages/section/course/courses/courses.component.html
create mode 100644 src/app/pages/section/sponsor/sponsors/sponsors.component.css
delete mode 100644 src/app/pages/section/sponsor/sponsors/sponsors.component.scss
delete mode 100644 src/app/services/auth.service.ts
delete mode 100644 src/app/services/firebase.service.ts
create mode 100644 src/app/shared/components/components.module.ts
create mode 100644 src/app/shared/components/comunidad/comunidad.component.css
create mode 100644 src/app/shared/components/comunidad/comunidad.component.html
create mode 100644 src/app/shared/components/comunidad/comunidad.component.spec.ts
create mode 100644 src/app/shared/components/comunidad/comunidad.component.ts
rename src/app/{pages/section => shared/components}/course/course-routing.module.ts (100%)
rename src/app/{pages/section => shared/components}/course/course.module.ts (100%)
create mode 100644 src/app/shared/components/course/courses/courses.component.css
create mode 100644 src/app/shared/components/course/courses/courses.component.html
rename src/app/{pages/section => shared/components}/course/courses/courses.component.spec.ts (100%)
rename src/app/{pages/section => shared/components}/course/courses/courses.component.ts (53%)
create mode 100644 src/app/shared/components/taller/taller.component.css
create mode 100644 src/app/shared/components/taller/taller.component.html
create mode 100644 src/app/shared/components/taller/taller.component.spec.ts
create mode 100644 src/app/shared/components/taller/taller.component.ts
rename src/app/{ => shared}/helpers/roleValidator.ts (83%)
create mode 100644 src/app/shared/models/collections.ts
rename src/app/{ => shared}/models/element.ts (100%)
rename src/app/{ => shared}/models/file.model.ts (100%)
rename src/app/{ => shared}/models/user.model.ts (100%)
delete mode 100644 src/assets/css_header/colors.css
delete mode 100644 src/assets/css_header/fonts/Flaticon.eot
delete mode 100644 src/assets/css_header/fonts/Flaticon.svg
delete mode 100644 src/assets/css_header/fonts/Flaticon.ttf
delete mode 100644 src/assets/css_header/fonts/Flaticon.woff
delete mode 100644 src/assets/css_header/fonts/fa-brands-400.eot
delete mode 100644 src/assets/css_header/fonts/fa-brands-400.svg
delete mode 100644 src/assets/css_header/fonts/fa-brands-400.ttf
delete mode 100644 src/assets/css_header/fonts/fa-brands-400.woff
delete mode 100644 src/assets/css_header/fonts/fa-brands-400.woff2
delete mode 100644 src/assets/css_header/fonts/fa-regular-400.eot
delete mode 100644 src/assets/css_header/fonts/fa-regular-400.svg
delete mode 100644 src/assets/css_header/fonts/fa-regular-400.ttf
delete mode 100644 src/assets/css_header/fonts/fa-regular-400.woff
delete mode 100644 src/assets/css_header/fonts/fa-regular-400.woff2
delete mode 100644 src/assets/css_header/fonts/fa-solid-900.eot
delete mode 100644 src/assets/css_header/fonts/fa-solid-900.svg
delete mode 100644 src/assets/css_header/fonts/fa-solid-900.ttf
delete mode 100644 src/assets/css_header/fonts/fa-solid-900.woff
delete mode 100644 src/assets/css_header/fonts/fa-solid-900.woff2
delete mode 100644 src/assets/css_header/fonts/houses.eot
delete mode 100644 src/assets/css_header/fonts/houses.svg
delete mode 100644 src/assets/css_header/fonts/houses.ttf
delete mode 100644 src/assets/css_header/fonts/houses.woff
delete mode 100644 src/assets/css_header/fonts/icofont.woff
delete mode 100644 src/assets/css_header/fonts/icofont.woff2
delete mode 100644 src/assets/css_header/fonts/slick.eot
delete mode 100644 src/assets/css_header/fonts/slick.ttf
delete mode 100644 src/assets/css_header/fonts/slick.woff
delete mode 100644 src/assets/css_header/img/close.png
delete mode 100644 src/assets/css_header/img/lightbox-next.png
delete mode 100644 src/assets/css_header/img/lightbox-prev.png
delete mode 100644 src/assets/css_header/img/loading.gif
delete mode 100644 src/assets/css_header/plugins/ajax-loader.gif
delete mode 100644 src/assets/css_header/plugins/animation.css
delete mode 100644 src/assets/css_header/plugins/bootstrap.min.css
delete mode 100644 src/assets/css_header/plugins/date-picker.css
delete mode 100644 src/assets/css_header/plugins/dropzone.css
delete mode 100644 src/assets/css_header/plugins/flaticon.css
delete mode 100644 src/assets/css_header/plugins/iconfont.css
delete mode 100644 src/assets/css_header/plugins/ion.rangeSlider.min.css
delete mode 100644 src/assets/css_header/plugins/light-box.css
delete mode 100644 src/assets/css_header/plugins/line-icons.css
delete mode 100644 src/assets/css_header/plugins/magnifypopup.css
delete mode 100644 src/assets/css_header/plugins/morris.css
delete mode 100644 src/assets/css_header/plugins/select2.css
delete mode 100644 src/assets/css_header/plugins/slick-theme.css
delete mode 100644 src/assets/css_header/plugins/slick.css
delete mode 100644 src/assets/css_header/plugins/themify.css
delete mode 100644 src/assets/css_header/styles.css
delete mode 100644 src/assets/img_header/404.png
delete mode 100644 src/assets/img_header/iconos/eye.svg
delete mode 100644 src/assets/img_header/iconos/eye2.svg
delete mode 100644 src/assets/img_header/logo/logo.png
delete mode 100644 src/assets/js_header/bootstrap.min.js
delete mode 100644 src/assets/js_header/counterup.min.js
delete mode 100644 src/assets/js_header/custom.js
delete mode 100644 src/assets/js_header/jquery.counterup.min.js
delete mode 100644 src/assets/js_header/jquery.min.js
delete mode 100644 src/assets/js_header/metisMenu.min.js
delete mode 100644 src/assets/js_header/popper.min.js
delete mode 100644 src/assets/js_header/select2.min.js
delete mode 100644 src/assets/js_header/slick.js
delete mode 100644 src/assets/scss_header/_global.scss
delete mode 100644 src/assets/scss_header/_main.scss
delete mode 100644 src/assets/scss_header/app.scss
diff --git a/package-lock.json b/package-lock.json
index 5f98921..c084c4c 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -5173,14 +5173,6 @@
"resolved": "https://registry.npmjs.org/dom-storage/-/dom-storage-2.1.0.tgz",
"integrity": "sha512-g6RpyWXzl0RR6OTElHKBl7nwnK87GUyZMYC7JWsB/IA73vpqK2K6LT39x4VepLxlSsWBFrPVLnsSR5Jyty0+2Q=="
},
- "dom7": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/dom7/-/dom7-3.0.0.tgz",
- "integrity": "sha512-oNlcUdHsC4zb7Msx7JN3K0Nro1dzJ48knvBOnDPKJ2GV9wl1i5vydJZUSyOfrkKFDZEud/jBsTk92S/VGSAe/g==",
- "requires": {
- "ssr-window": "^3.0.0-alpha.1"
- }
- },
"domain-browser": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz",
@@ -13411,11 +13403,6 @@
"tweetnacl": "~0.14.0"
}
},
- "ssr-window": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/ssr-window/-/ssr-window-3.0.0.tgz",
- "integrity": "sha512-q+8UfWDg9Itrg0yWK7oe5p/XRCJpJF9OBtXfOPgSJl+u3Xd5KI328RUEvUqSMVM9CiQUEf1QdBzJMkYGErj9QA=="
- },
"ssri": {
"version": "8.0.1",
"resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz",
@@ -13843,15 +13830,6 @@
"resolved": "https://registry.npmjs.org/sweetalert2/-/sweetalert2-10.15.2.tgz",
"integrity": "sha512-PQyFnkfURWyDRXeSmk0bojvdxnhqGj0xbjtecAPtzDMAHSuJeVd8jr0/AdR/nkyzGV9HNEjRXk8b5hyWinhf9w=="
},
- "swiper": {
- "version": "6.4.15",
- "resolved": "https://registry.npmjs.org/swiper/-/swiper-6.4.15.tgz",
- "integrity": "sha512-FuURJ7hE9lCxPnXIJRKu2QCe+roE8CZV2WYsZxz+dcEd3kebgK0JRvV32HpM3LmFOz7UW+k2Dkdfxekk2kTfMg==",
- "requires": {
- "dom7": "^3.0.0",
- "ssr-window": "^3.0.0"
- }
- },
"symbol-observable": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-3.0.0.tgz",
diff --git a/package.json b/package.json
index 90bec57..7cd8fd5 100644
--- a/package.json
+++ b/package.json
@@ -25,7 +25,6 @@
"moment": "^2.29.1",
"rxjs": "~6.6.0",
"sweetalert2": "^10.15.2",
- "swiper": "^6.4.15",
"tslib": "^2.0.0",
"zone.js": "~0.11.3"
},
diff --git a/src/app/app-routing.module.ts b/src/app/app-routing.module.ts
index 486003a..616e406 100644
--- a/src/app/app-routing.module.ts
+++ b/src/app/app-routing.module.ts
@@ -1,60 +1,60 @@
import { NgModule } from '@angular/core';
import { PreloadAllModules, RouterModule, Routes } from '@angular/router';
-import {LoginComponent} from './pages/login/login.component';
-import {AuthGuard} from './guards/auth.guard';
-import {RegisterComponent} from './pages/register/register.component';
-import {HomeComponent} from './pages/home/home.component';
+import {LoginComponent} from "./pages/login/login.component";
+import {AuthGuard} from "./core/guards/auth.guard";
+import {RegisterComponent} from "./pages/register/register.component";
+import {HomeComponent} from "./pages/home/home.component";
import { CopyrightComponent } from './pages/copyright/copyright.component';
import { TermsprivacyComponent } from './pages/termsprivacy/termsprivacy.component';
import { VerificationEmailComponent } from './pages/utils/verification-email/verification-email.component';
import { ProfileComponent } from './pages/profile/profile.component';
-import { PrincipalComponent } from './pages/perfil/principal/principal.component';
-
+import { CounterComponent } from './pages/section/counter/counter.component';
+import { SponsorsComponent } from './pages/section/sponsor/sponsors/sponsors.component';
+import { ProfiledetailsComponent } from './pages/profile/profiledetails/profiledetails.component';
+import { ProfilegruposComponent } from './pages/profile/profilegrupos/profilegrupos.component';
+import { ProfileinsigniasComponent } from './pages/profile/profileinsignias/profileinsignias.component';
+import { ProfileventosComponent } from './pages/profile/profileventos/profileventos.component';
const routes: Routes = [
// {path:'',outlet:'sponsor', loadChildren: () => import('./pages/section/sponsor/sponsor.module').then(mod => mod.SponsorModule)},
- // {path:'course',loadChildren: () => import('./pages/section/course/course.module').then(mod => mod.CourseModule)},
- // {path:'comunidad',loadChildren: () => import('./pages/section/comunidad/comunidad.module').then(mod => mod.ComunidadModule)},
- // {path: 'sponsorList', component: SponsorsComponent},
-
- // {
- // path: 'sponsor',
- // outlet: 'sponsor',
- // loadChildren: () => import('./pages/section/sponsor/sponsor.module').then(mod => mod.SponsorModule)
- // },
- // {
- // path: 'comunidad',
- // outlet: 'comunidad',
- // loadChildren: () => import('./pages/section/comunidad/comunidad.module').then(mod => mod.ComunidadModule)
- // },
- // {
- // path: 'course',
- // outlet: 'course',
- // loadChildren: () => import('./pages/section/course/course.module').then(mod => mod.CourseModule)
- // },
- // {
- // path: 'counter',
- // outlet: 'counter',
- // loadChildren: () => import('./pages/section/counter/counter.module').then( mod => mod.CounterModule)
- // }
-
+ //{path:'course',loadChildren: () => import('./pages/section/course/course.module').then(mod => mod.CourseModule)},
+ //{path:'comunidad',loadChildren: () => import('./pages/section/comunidad/comunidad.module').then(mod => mod.ComunidadModule)},
+ //{path: 'sponsorList', component: SponsorsComponent},
+ {
+ path: '', component: HomeComponent,
+ children: [
+ {
+ path: '',
+ outlet: 'sponsor',
+ loadChildren: () => import('./pages/section/sponsor/sponsor.module').then(mod => mod.SponsorModule)
+ },
+ {
+ path: '',
+ outlet: 'comunidad',
+ loadChildren: () => import('./pages/section/comunidad/comunidad.module').then(mod => mod.ComunidadModule)
+ }
+ ]
+ },
+ {path: 'profiledetails', component: ProfiledetailsComponent},
+ {path: 'profilegrupos', component: ProfilegruposComponent},
+ {path: 'profileinsignias', component: ProfileinsigniasComponent},
+ {path: 'profileventos', component: ProfileventosComponent},
{path: 'login', component: LoginComponent},
{path: 'register', component: RegisterComponent},
{path: 'copyright', component: CopyrightComponent},
{path: 'verification', component: VerificationEmailComponent},
- {path: 'profile', component: ProfileComponent},
+ {path: 'profile', component: ProfileComponent, canActivate:[AuthGuard]},
{path: 'terms', component: TermsprivacyComponent},
+ {path: 'counter', component: CounterComponent},
{path: 'home', component: HomeComponent},
- {
- path: 'perfil',
- loadChildren: () => import('./pages/perfil/perfil.module').then( mod => mod.PerfilModule)
- },
- {path: '**', redirectTo: 'login'}
-
+ {path: '**', redirectTo: 'home'}
];
@NgModule({
- imports: [RouterModule.forRoot(routes)],
+ imports: [RouterModule.forRoot(routes,{
+ enableTracing: true,
+ preloadingStrategy: PreloadAllModules
+ })],
exports: [RouterModule]
})
export class AppRoutingModule { }
diff --git a/src/app/app.component.html b/src/app/app.component.html
index 7aa5107..6c7005e 100644
--- a/src/app/app.component.html
+++ b/src/app/app.component.html
@@ -1,13 +1,4 @@
-
-
-
+
diff --git a/src/app/app.module.ts b/src/app/app.module.ts
index b96d1c0..3b505ba 100644
--- a/src/app/app.module.ts
+++ b/src/app/app.module.ts
@@ -1,10 +1,10 @@
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
-// forms
+//forms
import { FormsModule } from '@angular/forms';
import { HttpClientModule } from '@angular/common/http';
-// firebase
+//firebase
import { AngularFireModule } from '@angular/fire';
import { environment } from 'src/environments/environment';
import { AngularFirestoreModule } from '@angular/fire/firestore';
@@ -23,12 +23,15 @@ import { TermsprivacyComponent } from './pages/termsprivacy/termsprivacy.compone
import { RouterModule } from '@angular/router';
import { VerificationEmailComponent } from './pages/utils/verification-email/verification-email.component';
import { ProfileComponent } from './pages/profile/profile.component';
-import {TimeService} from './services/time.service';
+import { CounterComponent } from './pages/section/counter/counter.component';
+import { TimeService } from './core/services/time.service';
+//import { SponsorsComponent } from './pages/section/sponsor/sponsors/sponsors.component';
+import { ComponentsModule } from './shared/components/components.module';
+import { ProfiledetailsComponent } from './pages/profile/profiledetails/profiledetails.component';
+import { ProfileinsigniasComponent } from './pages/profile/profileinsignias/profileinsignias.component';
+import { ProfilegruposComponent } from './pages/profile/profilegrupos/profilegrupos.component';
+import { ProfileventosComponent } from './pages/profile/profileventos/profileventos.component';
-import {SponsorsComponent} from './pages/section/sponsor/sponsors/sponsors.component'
-import {ComunidadesComponent} from './pages/section/comunidad/comunidades/comunidades.component'
-import {CounterComponent} from './pages/section/counter/counter/counter.component'
-import {CoursesComponent} from './pages/section/course/courses/courses.component'
@NgModule({
declarations: [
AppComponent,
@@ -41,10 +44,12 @@ import {CoursesComponent} from './pages/section/course/courses/courses.component
TermsprivacyComponent,
VerificationEmailComponent,
ProfileComponent,
- SponsorsComponent,
- ComunidadesComponent,
CounterComponent,
- CoursesComponent
+ ProfiledetailsComponent,
+ ProfileinsigniasComponent,
+ ProfilegruposComponent,
+ ProfileventosComponent,
+ // SponsorsComponent
],
imports: [
BrowserModule,
@@ -56,14 +61,9 @@ import {CoursesComponent} from './pages/section/course/courses/courses.component
AngularFireAuthModule,
AngularFirestoreModule,
AngularFireStorageModule,
+ ComponentsModule,
],
- entryComponents: [
- SponsorsComponent,
- ComunidadesComponent,
- CounterComponent,
- CoursesComponent
- ],
- providers: [ TimeService ],
- bootstrap: [AppComponent]
+ providers: [TimeService],
+ bootstrap: [AppComponent],
})
-export class AppModule { }
+export class AppModule {}
diff --git a/src/app/guards/auth.guard.spec.ts b/src/app/core/guards/auth.guard.spec.ts
similarity index 100%
rename from src/app/guards/auth.guard.spec.ts
rename to src/app/core/guards/auth.guard.spec.ts
diff --git a/src/app/guards/auth.guard.ts b/src/app/core/guards/auth.guard.ts
similarity index 83%
rename from src/app/guards/auth.guard.ts
rename to src/app/core/guards/auth.guard.ts
index 0cb6da6..8284614 100644
--- a/src/app/guards/auth.guard.ts
+++ b/src/app/core/guards/auth.guard.ts
@@ -11,8 +11,9 @@ export class AuthGuard implements CanActivate {
constructor(private auth: AuthService, private router: Router) {
}
- canActivate():boolean{
- if ( this.auth.isAuthenticated() ){
+ async canActivate(){
+ const user = await this.auth.isAuthenticated();
+ if ( user ){
return true;
} else {
this.router.navigateByUrl('/login');
diff --git a/src/app/services/auth.service.spec.ts b/src/app/core/services/auth.service.spec.ts
similarity index 100%
rename from src/app/services/auth.service.spec.ts
rename to src/app/core/services/auth.service.spec.ts
diff --git a/src/app/core/services/auth.service.ts b/src/app/core/services/auth.service.ts
new file mode 100644
index 0000000..67b2981
--- /dev/null
+++ b/src/app/core/services/auth.service.ts
@@ -0,0 +1,137 @@
+import { Injectable } from '@angular/core';
+import { HttpClient } from '@angular/common/http';
+import { UserModel } from '../../shared/models/user.model';
+import { first, map, switchMap } from 'rxjs/operators';
+import firebase from 'firebase/app';
+import { AngularFireAuth } from '@angular/fire/auth';
+import {
+ AngularFirestore,
+ AngularFirestoreDocument,
+} from '@angular/fire/firestore';
+import { Observable, of } from 'rxjs';
+import { RoleValidator } from '../../shared/helpers/roleValidator';
+@Injectable({
+ providedIn: 'root',
+})
+export class AuthService extends RoleValidator {
+ //private url: string = 'urlApi';
+ //private apiKey: string = 'apiKey';
+ private url = 'https://www.googleapis.com/identitytoolkit/v3/relyingparty';
+ private apiKey = 'AIzaSyDHxlKfchpJrycT_fAOX3JjBCWp_uFlcjI';
+
+ public userToken: string = '';
+ constructor(
+ private http: HttpClient,
+ public afAuth: AngularFireAuth,
+ private db: AngularFirestore
+ ) {
+ super();
+ }
+ GoogleAuth() {
+ return this.AuthLogin(new firebase.auth.GoogleAuthProvider());
+ }
+ FacebookAuth() {
+ return this.AuthLogin(new firebase.auth.FacebookAuthProvider());
+ }
+ async sendVerificationEmail(): Promise {
+ return (await this.afAuth.currentUser)?.sendEmailVerification();
+ }
+ recoveryPassword(emailAddress: string) {
+ return this.afAuth.sendPasswordResetEmail(emailAddress);
+ }
+
+ // Auth logic to run auth providers
+ AuthLogin(provider: any) {
+ this.logOut();
+ return this.afAuth
+ .signInWithPopup(provider)
+ .then((result: any) => {
+ console.log('You have been successfully logged in!', result);
+ console.log(
+ 'email, user!',
+ result.user['email'] + ' ' + result.user['displayName']
+ );
+ this.updateUserData(result.user);
+ })
+ .catch((error: any) => {
+ console.log(error);
+ });
+ }
+
+ async login(userData: UserModel): Promise {
+ try {
+ const { user } = await this.afAuth.signInWithEmailAndPassword(
+ userData.email,
+ userData.password!
+ );
+ if (user) {
+ this.updateUserData(user);
+ }
+ console.log('recordarme: ' + userData.rememberme);
+ if (userData.rememberme)
+ this.afAuth.setPersistence(firebase.auth.Auth.Persistence.SESSION);
+ else this.afAuth.setPersistence(firebase.auth.Auth.Persistence.NONE);
+ return user;
+ } catch (error) {
+ console.log(error);
+ return error;
+ }
+ }
+
+ async newUser(userData: UserModel): Promise {
+ try {
+ const { user } = await this.afAuth.createUserWithEmailAndPassword(
+ userData.email,
+ userData.password!
+ );
+ await this.sendVerificationEmail();
+ const usernew = await this.isAuthenticated();
+ if (usernew && user) {
+ usernew.updateProfile({ displayName: userData.displayName });
+ userData.uid = user.uid;
+ userData.emailVerified = user.emailVerified;
+ userData.refreshToken = user.refreshToken;
+ this.updateUserData(userData);
+ }
+ return user;
+ } catch (error) {
+ console.log(error);
+ }
+ }
+
+ logOut(): boolean {
+ localStorage.removeItem('token');
+ localStorage.removeItem('displayName');
+ localStorage.removeItem('email');
+ this.userToken = '';
+ return true;
+ }
+ async logout(): Promise {
+ try {
+ await this.afAuth.signOut();
+ } catch (error) {
+ console.log(error);
+ }
+ }
+
+ isAuthenticated() {
+ return this.afAuth.authState.pipe(first()).toPromise();
+ }
+ private updateUserData(user: any) {
+ const userRef: AngularFirestoreDocument = this.db.doc(
+ `users/${user.uid}`
+ );
+ //console.log("user saving :"+JSON.stringify(user));
+ const data: UserModel = {
+ uid: user.uid,
+ email: user.email,
+ emailVerified: user.emailVerified,
+ displayName: user.displayName,
+ photoURL: user.photoURL ? user.photoURL : 'assets/photo',
+ refreshToken: user.refreshToken ? user.refreshToken : '',
+ organization: user.email!.split('@')[1],
+ };
+
+ return userRef.set(data, { merge: true });
+ }
+}
diff --git a/src/app/core/services/firebase.service.ts b/src/app/core/services/firebase.service.ts
new file mode 100644
index 0000000..6682817
--- /dev/null
+++ b/src/app/core/services/firebase.service.ts
@@ -0,0 +1,61 @@
+import { Injectable } from '@angular/core';
+import { HttpClient } from '@angular/common/http';
+import { map } from 'rxjs/operators';
+import {
+ AngularFirestore,
+ AngularFirestoreCollection,
+} from '@angular/fire/firestore';
+import * as firebase from 'firebase';
+import { FileModel } from '../../shared/models/file.model';
+import { Observable } from 'rxjs';
+@Injectable({
+ providedIn: 'root',
+})
+export class FirestoreService {
+ private itemsCollection!: AngularFirestoreCollection;
+ items!: Observable;
+ //private url = 'https://publicastv-a67df.firebaseio.com/';
+ //private CARPETA_FILES = 'file';
+ private newElements: any[] = [];
+ public elementsId: any[] = [];
+ private elementsString = '';
+
+ constructor(private http: HttpClient, private db: AngularFirestore) {}
+
+ public updateDoc(collection: string, uid: string, data: any) {
+ // with ref = (collection,ref => ref.where('uid', '==', uid))
+ this.db
+ .collection(collection)
+ .doc(uid)
+ .set(data)
+ .then(() => {
+ console.log('Document successfully updated!');
+ })
+ .catch(function (error) {
+ console.error('Error writing document: ', error);
+ });
+ }
+
+ public getCollection(nameCollection: string, count: number = 5) {
+ this.itemsCollection = this.db.collection(nameCollection, (ref) =>
+ ref.limit(count)
+ );
+ this.elementsString = '';
+ this.items = this.itemsCollection.snapshotChanges().pipe(
+ map((actions) =>
+ actions.map((a) => {
+ const data = a.payload.doc.data();
+ const id = a.payload.doc.id;
+ return { id, ...data };
+ })
+ )
+ );
+ console.log('getting collection: ', nameCollection);
+ return this.items;
+ }
+
+ public guardarFile(file: any, ruta: string) {
+ this.db.collection(`/${ruta}`).add(file);
+ this.getCollection(file);
+ }
+}
diff --git a/src/app/services/navbar.service.ts b/src/app/core/services/navbar.service.ts
similarity index 100%
rename from src/app/services/navbar.service.ts
rename to src/app/core/services/navbar.service.ts
diff --git a/src/app/services/time.service.spec.ts b/src/app/core/services/time.service.spec.ts
similarity index 100%
rename from src/app/services/time.service.spec.ts
rename to src/app/core/services/time.service.spec.ts
diff --git a/src/app/services/time.service.ts b/src/app/core/services/time.service.ts
similarity index 93%
rename from src/app/services/time.service.ts
rename to src/app/core/services/time.service.ts
index 39c49dd..9238cf7 100644
--- a/src/app/services/time.service.ts
+++ b/src/app/core/services/time.service.ts
@@ -35,6 +35,7 @@ export class TimeService {
getInfoReloj(fechaLimite: Date): Observable{
this.clock.subscribe(t => {
+ console.log( moment.duration( moment(fechaLimite).diff(new Date()) ).minutes() );
this.ar = {
dia: moment.duration( moment(fechaLimite).diff(new Date()) ).days(),
hora: moment.duration( moment(fechaLimite).diff(new Date()) ).hours(),
diff --git a/src/app/pages/home/home.component.css b/src/app/pages/home/home.component.css
new file mode 100644
index 0000000..4fcde8a
--- /dev/null
+++ b/src/app/pages/home/home.component.css
@@ -0,0 +1,3 @@
+.lista {
+ overflow-y: auto;
+}
diff --git a/src/app/pages/home/home.component.html b/src/app/pages/home/home.component.html
index e8d487b..4eaac35 100644
--- a/src/app/pages/home/home.component.html
+++ b/src/app/pages/home/home.component.html
@@ -1,75 +1,31 @@
-
-
-
-
-
-
-
Bienvenidos a Comunity Fest and Code
- ¡Conoce gente, aprende y gana!
-
-
-
-
-
+
-
-
-
-
+
+
-
\ No newline at end of file
+
+
diff --git a/src/app/pages/home/home.component.ts b/src/app/pages/home/home.component.ts
index 5ba9fef..63949bc 100644
--- a/src/app/pages/home/home.component.ts
+++ b/src/app/pages/home/home.component.ts
@@ -1,43 +1,26 @@
import { Component, OnInit, EventEmitter, Input, Output } from '@angular/core';
import { auth } from 'firebase-admin';
import { Observable } from 'rxjs';
-import { ElementId } from 'src/app/models/element';
-import { AuthService } from 'src/app/services/auth.service';
-import { FirestoreService } from 'src/app/services/firebase.service';
-
-import {SponsorsComponent} from '../section/sponsor/sponsors/sponsors.component'
+import { ElementId } from 'src/app/shared/models/element';
+import { AuthService } from 'src/app/core/services/auth.service';
+import { FirestoreService } from 'src/app/core/services/firebase.service';
+import { Comunidad, Taller } from '../../shared/models/collections';
@Component({
selector: 'app-home',
templateUrl: './home.component.html',
- styleUrls: ['./home.component.scss']
+ styleUrls: ['./home.component.css'],
})
export class HomeComponent implements OnInit {
displayName: any;
users: ElementId[] = [];
user: any;
- constructor(private auth: AuthService, private fsService: FirestoreService) {
-
-
- }
- onActivate(component: SponsorsComponent) {
- /*if (component == "sponsor") {
- console.log("----------------loaded sponsor component-----------------")
- //component.list = this.sponsors;
- } else if (component =="course") {
- console.log("----------------loaded course component-----------------")
- //component.list = this.sponsors;
- }else
- console.log("----------------loaded otro component-----------------", component)*/
-
- }
+ comunidades: Comunidad[] = [];
+ constructor(private auth: AuthService, private fsService: FirestoreService) {}
ngOnInit(): void {
-
-
+ this.fsService.getCollection('comunidades', 5).subscribe((v: any) => {
+ this.comunidades = v;
+ });
}
- async doConsult() {
-
- }
-
}
diff --git a/src/app/pages/login/login.component.ts b/src/app/pages/login/login.component.ts
index a42a94a..491b849 100644
--- a/src/app/pages/login/login.component.ts
+++ b/src/app/pages/login/login.component.ts
@@ -1,100 +1,106 @@
import { Component, OnInit } from '@angular/core';
-import { AuthService } from '../../../app/services/auth.service';
+import { AuthService } from '../../core/services/auth.service';
import { Router } from '@angular/router';
import Swal from 'sweetalert2';
import { NgForm } from '@angular/forms';
-import { UserModel } from 'src/app/models/user.model';
+import { UserModel } from 'src/app/shared/models/user.model';
import { AngularFirestore } from '@angular/fire/firestore';
@Component({
selector: 'app-login',
- templateUrl: './login.html', //templateUrl: './login.component.html',
- styleUrls: ['./login.component.css']
+ templateUrl: './login.html', //templateUrl: './login.component.html',
+ styleUrls: ['./login.component.css'],
})
export class LoginComponent implements OnInit {
-
user: UserModel = {} as UserModel;
recordarme = false;
- errMsg = "";
-
- constructor(private authLogin: AuthService,
- private router: Router, public authService: AuthService,
- private db: AngularFirestore) { }
+ errMsg = '';
- ngOnInit(): void {
- }
- loginGmail(){
+ constructor(
+ private authLogin: AuthService,
+ private router: Router,
+ public authService: AuthService,
+ private db: AngularFirestore
+ ) {}
- this.authLogin.GoogleAuth().then(val=>{
- this.router.navigateByUrl('/home');
- }).catch(error =>{
- this.router.navigateByUrl('/register');
- })
+ ngOnInit(): void {}
+ loginGmail() {
+ this.authLogin
+ .GoogleAuth()
+ .then((val) => {
+ this.router.navigateByUrl('/home');
+ })
+ .catch((error) => {
+ this.router.navigateByUrl('/register');
+ });
}
- recoveryPass(mail: string){
- this.errMsg = "";
- Swal
- .fire({
- title: "Inserta tu email",
- input: "email",
- showCancelButton: true,
- confirmButtonText: "Recuperar",
- cancelButtonText: "Cancelar",
- })
- .then(resultado => {
- if (resultado.value) {
- let email = resultado.value;
-
- Swal.fire("Enviando mensaje a ",email,"info");
- this.authService.recoveryPassword(email).then(()=>{
- this.errMsg = "Email enviado a "+email;
- this.user.email ="";
- this.user.password ="";
- Swal.close();
- Swal.fire("Mensaje Enviado ",email,"success");
- }).catch((error) => {
+ recoveryPass(mail: string) {
+ this.errMsg = '';
+ Swal.fire({
+ title: 'Inserta tu email',
+ input: 'email',
+ showCancelButton: true,
+ confirmButtonText: 'Recuperar',
+ cancelButtonText: 'Cancelar',
+ }).then((resultado) => {
+ if (resultado.value) {
+ let email = resultado.value;
+
+ Swal.fire('Enviando mensaje a ', email, 'info');
+ this.authService
+ .recoveryPassword(email)
+ .then(() => {
+ this.errMsg = 'Email enviado a ' + email;
+ this.user.email = '';
+ this.user.password = '';
+ Swal.close();
+ Swal.fire('Mensaje Enviado ', email, 'success');
+ })
+ .catch((error) => {
// An error happened.
- this.errMsg = "Email NO enviado!: "+ error.message;
+ this.errMsg = 'Email NO enviado!: ' + error.message;
Swal.close();
- Swal.fire("Mensaje No Enviado ",error.message,"error");
- }).finally( ()=>{
+ Swal.fire('Mensaje No Enviado ', error.message, 'error');
+ })
+ .finally(() => {
//Swal.close();
});
-
- }
+ }
});
-
}
- loginFace(){
-
- this.authLogin.FacebookAuth().then(val=>{
- this.router.navigateByUrl('/home');
- }).catch(error =>{
- this.router.navigateByUrl('/register');
- })
+ loginFace() {
+ this.authLogin
+ .FacebookAuth()
+ .then((val) => {
+ this.router.navigateByUrl('/home');
+ })
+ .catch((error) => {
+ this.router.navigateByUrl('/register');
+ });
}
async onLogin(form: NgForm) {
- this.errMsg = "";
- if ( !form.valid ) {
- this.errMsg = "Tus datos contienen algún error.";
- return;
+ this.errMsg = '';
+ if (!form.valid) {
+ this.errMsg = 'Tus datos contienen algún error.';
+ return;
}
try {
- await this.authService.login(this.user).then(res=>{
- if (res.code) {
- Swal.fire("Error al iniciar sesión",res.message,"error");
- console.log("error login: "+res);
- }else{
- this.router.navigate(['/home']);
- }
- }).catch(error=>{
- Swal.fire("Error al iniciar sesión",error.message,"error");
- console.log("error login: "+error);
- });
-
+ await this.authService
+ .login(this.user)
+ .then((res) => {
+ if (res.code) {
+ Swal.fire('Error al iniciar sesión', res.message, 'error');
+ console.log('error login: ' + res);
+ } else {
+ this.router.navigate(['/home']);
+ }
+ })
+ .catch((error) => {
+ Swal.fire('Error al iniciar sesión', error.message, 'error');
+ console.log('error login: ' + error);
+ });
} catch (error) {
-
- console.log("error login: "+error);
+ console.log('error login: ' + error);
}
}
}
diff --git a/src/app/pages/perfil/perfil-rutas.module.ts b/src/app/pages/perfil/perfil-rutas.module.ts
deleted file mode 100644
index dcb8184..0000000
--- a/src/app/pages/perfil/perfil-rutas.module.ts
+++ /dev/null
@@ -1,24 +0,0 @@
-
-import { NgModule } from '@angular/core';
-import { Routes, RouterModule } from '@angular/router';
-import {PrincipalComponent } from './principal/principal.component';
-
-const routes: Routes = [
-
- {
- path: 'principal',
- component: PrincipalComponent
- }
-
-
-];
-
-@NgModule({
- imports: [
- RouterModule.forChild(routes)
- ],
- exports: [RouterModule],
-})
-export class PerfilRutasModule {
-
-}
diff --git a/src/app/pages/perfil/perfil.module.ts b/src/app/pages/perfil/perfil.module.ts
deleted file mode 100644
index bfcf24f..0000000
--- a/src/app/pages/perfil/perfil.module.ts
+++ /dev/null
@@ -1,19 +0,0 @@
-import { NgModule } from '@angular/core';
-import { CommonModule } from '@angular/common';
-
-
-
-import { ReactiveFormsModule, FormsModule } from '@angular/forms';
-import { PerfilRutasModule } from './perfil-rutas.module';
-
-@NgModule({
- declarations: [],
- imports: [
- CommonModule,
- PerfilRutasModule,
- ReactiveFormsModule,
- FormsModule
- ],
- entryComponents: []
-})
-export class PerfilModule { }
diff --git a/src/app/pages/perfil/principal/principal.component.html b/src/app/pages/perfil/principal/principal.component.html
deleted file mode 100644
index b3b5725..0000000
--- a/src/app/pages/perfil/principal/principal.component.html
+++ /dev/null
@@ -1,134 +0,0 @@
-
-
-
-
- Mi Perfil
-
-
- Insignias
-
-
- Grupos
-
-
- Eventos
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Actividad Reciente
-
Te has unido al evento Community Fest and Code
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/src/app/pages/perfil/principal/principal.component.scss b/src/app/pages/perfil/principal/principal.component.scss
deleted file mode 100644
index 6f75b39..0000000
--- a/src/app/pages/perfil/principal/principal.component.scss
+++ /dev/null
@@ -1,16 +0,0 @@
-
-
- .btn {
- background-color:#c0c6c9;
- border: none;
- color: black;
- padding: 12px 16px;
- font-size: 12px;
- cursor: pointer;
- font-weight: bold;
- }
-
- .perfil-redondo {
- border-radius: 100%;
- object-fit: cover;
- }
\ No newline at end of file
diff --git a/src/app/pages/perfil/principal/principal.component.spec.ts b/src/app/pages/perfil/principal/principal.component.spec.ts
deleted file mode 100644
index 07113f0..0000000
--- a/src/app/pages/perfil/principal/principal.component.spec.ts
+++ /dev/null
@@ -1,25 +0,0 @@
-import { async, ComponentFixture, TestBed } from '@angular/core/testing';
-
-import { PrincipalComponent } from './principal.component';
-
-describe('PrincipalComponent', () => {
- let component: PrincipalComponent;
- let fixture: ComponentFixture;
-
- beforeEach(async(() => {
- TestBed.configureTestingModule({
- declarations: [ PrincipalComponent ]
- })
- .compileComponents();
- }));
-
- beforeEach(() => {
- fixture = TestBed.createComponent(PrincipalComponent);
- component = fixture.componentInstance;
- fixture.detectChanges();
- });
-
- it('should create', () => {
- expect(component).toBeTruthy();
- });
-});
diff --git a/src/app/pages/perfil/principal/principal.component.ts b/src/app/pages/perfil/principal/principal.component.ts
deleted file mode 100644
index 060e5ae..0000000
--- a/src/app/pages/perfil/principal/principal.component.ts
+++ /dev/null
@@ -1,27 +0,0 @@
-import { Component, OnInit } from '@angular/core';
-
-import { FormGroup, FormBuilder, Validators } from '@angular/forms';
-import Swal from 'sweetalert2';
-
-@Component({
- selector: 'app-principal',
- templateUrl: './principal.component.html',
- styleUrls: ['./principal.component.scss'],
-})
-export class PrincipalComponent implements OnInit {
- menu:any=[]
- constructor(private formBuilder: FormBuilder) {}
-
- ngOnInit() {
- this.obtenerMenu();
- }
- obtenerMenu(){
- this.menu = [
- { id: 1, tema: 'Mi Perfil'},
- { id: 2, tema: 'Insignias'},
- { id: 3, tema: 'Grupos'},
- { id: 4, tema: 'Eventos'}
- ];
- console.log(this.menu)
- }
-}
diff --git a/src/app/pages/profile/profile.component.html b/src/app/pages/profile/profile.component.html
index 682849d..170ff32 100644
--- a/src/app/pages/profile/profile.component.html
+++ b/src/app/pages/profile/profile.component.html
@@ -1,14 +1,66 @@
-
-
+
+
+
+
+
+ Mi Perfil
+
+
+ Insignias
+
+
+
+
+ Grupos
+
+
+
+ Eventos
- Login
+
+
+
+
+
-
-
\ No newline at end of file
+
+
+
+
+
+ Login
+
+
+
diff --git a/src/app/pages/profile/profile.component.ts b/src/app/pages/profile/profile.component.ts
index 5491fae..6d68329 100644
--- a/src/app/pages/profile/profile.component.ts
+++ b/src/app/pages/profile/profile.component.ts
@@ -1,20 +1,19 @@
import { Component, OnInit } from '@angular/core';
-import { AuthService } from 'src/app/services/auth.service';
+import { AuthService } from 'src/app/core/services/auth.service';
@Component({
selector: 'app-profile',
templateUrl: './profile.component.html',
- styleUrls: ['./profile.component.css']
+ styleUrls: ['./profile.component.css'],
})
export class ProfileComponent implements OnInit {
- user:any;
- constructor(private auth:AuthService) { }
+ user: any;
+ constructor(private auth: AuthService) {}
ngOnInit(): void {
this.loadUser();
}
- async loadUser(){
- this.user = await this.auth.isAuthenticated();
-
-}
+ async loadUser() {
+ this.user = await this.auth.isAuthenticated();
+ }
}
diff --git a/src/app/pages/home/home.component.scss b/src/app/pages/profile/profiledetails/profiledetails.component.css
similarity index 100%
rename from src/app/pages/home/home.component.scss
rename to src/app/pages/profile/profiledetails/profiledetails.component.css
diff --git a/src/app/pages/profile/profiledetails/profiledetails.component.html b/src/app/pages/profile/profiledetails/profiledetails.component.html
new file mode 100644
index 0000000..947d204
--- /dev/null
+++ b/src/app/pages/profile/profiledetails/profiledetails.component.html
@@ -0,0 +1,6 @@
+ {{ user?.uid }}
+ {{ user?.displayName }}
+ {{ user?.emailVerified }}
+ {{ user?.providerData[0]?.providerId }}
+ {{ user?.apiKey }}
+ {{ user?.isAnonymous }}
diff --git a/src/app/pages/profile/profiledetails/profiledetails.component.spec.ts b/src/app/pages/profile/profiledetails/profiledetails.component.spec.ts
new file mode 100644
index 0000000..73cf109
--- /dev/null
+++ b/src/app/pages/profile/profiledetails/profiledetails.component.spec.ts
@@ -0,0 +1,25 @@
+import { ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { ProfiledetailsComponent } from './profiledetails.component';
+
+describe('ProfiledetailsComponent', () => {
+ let component: ProfiledetailsComponent;
+ let fixture: ComponentFixture;
+
+ beforeEach(async () => {
+ await TestBed.configureTestingModule({
+ declarations: [ ProfiledetailsComponent ]
+ })
+ .compileComponents();
+ });
+
+ beforeEach(() => {
+ fixture = TestBed.createComponent(ProfiledetailsComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it('should create', () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/src/app/pages/profile/profiledetails/profiledetails.component.ts b/src/app/pages/profile/profiledetails/profiledetails.component.ts
new file mode 100644
index 0000000..0a2c18d
--- /dev/null
+++ b/src/app/pages/profile/profiledetails/profiledetails.component.ts
@@ -0,0 +1,20 @@
+import { Component, OnInit } from '@angular/core';
+import { AuthService } from 'src/app/core/services/auth.service';
+
+@Component({
+ selector: 'app-profiledetails',
+ templateUrl: './profiledetails.component.html',
+ styleUrls: ['./profiledetails.component.css']
+})
+export class ProfiledetailsComponent implements OnInit {
+ user: any;
+ constructor(private auth: AuthService) { }
+
+ ngOnInit(): void {
+ this.loadUser();
+ }
+ async loadUser() {
+ this.user = await this.auth.isAuthenticated();
+ }
+
+}
diff --git a/src/assets/css_header/plugins/font-awesome.css b/src/app/pages/profile/profilegrupos/profilegrupos.component.css
similarity index 100%
rename from src/assets/css_header/plugins/font-awesome.css
rename to src/app/pages/profile/profilegrupos/profilegrupos.component.css
diff --git a/src/app/pages/profile/profilegrupos/profilegrupos.component.html b/src/app/pages/profile/profilegrupos/profilegrupos.component.html
new file mode 100644
index 0000000..27d0391
--- /dev/null
+++ b/src/app/pages/profile/profilegrupos/profilegrupos.component.html
@@ -0,0 +1 @@
+profilegrupos works!
diff --git a/src/app/pages/profile/profilegrupos/profilegrupos.component.spec.ts b/src/app/pages/profile/profilegrupos/profilegrupos.component.spec.ts
new file mode 100644
index 0000000..e480245
--- /dev/null
+++ b/src/app/pages/profile/profilegrupos/profilegrupos.component.spec.ts
@@ -0,0 +1,25 @@
+import { ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { ProfilegruposComponent } from './profilegrupos.component';
+
+describe('ProfilegruposComponent', () => {
+ let component: ProfilegruposComponent;
+ let fixture: ComponentFixture;
+
+ beforeEach(async () => {
+ await TestBed.configureTestingModule({
+ declarations: [ ProfilegruposComponent ]
+ })
+ .compileComponents();
+ });
+
+ beforeEach(() => {
+ fixture = TestBed.createComponent(ProfilegruposComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it('should create', () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/src/app/pages/profile/profilegrupos/profilegrupos.component.ts b/src/app/pages/profile/profilegrupos/profilegrupos.component.ts
new file mode 100644
index 0000000..d94fc78
--- /dev/null
+++ b/src/app/pages/profile/profilegrupos/profilegrupos.component.ts
@@ -0,0 +1,15 @@
+import { Component, OnInit } from '@angular/core';
+
+@Component({
+ selector: 'app-profilegrupos',
+ templateUrl: './profilegrupos.component.html',
+ styleUrls: ['./profilegrupos.component.css']
+})
+export class ProfilegruposComponent implements OnInit {
+
+ constructor() { }
+
+ ngOnInit(): void {
+ }
+
+}
diff --git a/src/assets/scss_header/_variables.scss b/src/app/pages/profile/profileinsignias/profileinsignias.component.css
similarity index 100%
rename from src/assets/scss_header/_variables.scss
rename to src/app/pages/profile/profileinsignias/profileinsignias.component.css
diff --git a/src/app/pages/profile/profileinsignias/profileinsignias.component.html b/src/app/pages/profile/profileinsignias/profileinsignias.component.html
new file mode 100644
index 0000000..f810be7
--- /dev/null
+++ b/src/app/pages/profile/profileinsignias/profileinsignias.component.html
@@ -0,0 +1 @@
+profileinsignias works!
diff --git a/src/app/pages/profile/profileinsignias/profileinsignias.component.spec.ts b/src/app/pages/profile/profileinsignias/profileinsignias.component.spec.ts
new file mode 100644
index 0000000..2923753
--- /dev/null
+++ b/src/app/pages/profile/profileinsignias/profileinsignias.component.spec.ts
@@ -0,0 +1,25 @@
+import { ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { ProfileinsigniasComponent } from './profileinsignias.component';
+
+describe('ProfileinsigniasComponent', () => {
+ let component: ProfileinsigniasComponent;
+ let fixture: ComponentFixture;
+
+ beforeEach(async () => {
+ await TestBed.configureTestingModule({
+ declarations: [ ProfileinsigniasComponent ]
+ })
+ .compileComponents();
+ });
+
+ beforeEach(() => {
+ fixture = TestBed.createComponent(ProfileinsigniasComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it('should create', () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/src/app/pages/profile/profileinsignias/profileinsignias.component.ts b/src/app/pages/profile/profileinsignias/profileinsignias.component.ts
new file mode 100644
index 0000000..b1e9332
--- /dev/null
+++ b/src/app/pages/profile/profileinsignias/profileinsignias.component.ts
@@ -0,0 +1,15 @@
+import { Component, OnInit } from '@angular/core';
+
+@Component({
+ selector: 'app-profileinsignias',
+ templateUrl: './profileinsignias.component.html',
+ styleUrls: ['./profileinsignias.component.css']
+})
+export class ProfileinsigniasComponent implements OnInit {
+
+ constructor() { }
+
+ ngOnInit(): void {
+ }
+
+}
diff --git a/src/app/pages/profile/profileventos/profileventos.component.css b/src/app/pages/profile/profileventos/profileventos.component.css
new file mode 100644
index 0000000..e69de29
diff --git a/src/app/pages/profile/profileventos/profileventos.component.html b/src/app/pages/profile/profileventos/profileventos.component.html
new file mode 100644
index 0000000..dfc45e3
--- /dev/null
+++ b/src/app/pages/profile/profileventos/profileventos.component.html
@@ -0,0 +1 @@
+profileventos works!
diff --git a/src/app/pages/profile/profileventos/profileventos.component.spec.ts b/src/app/pages/profile/profileventos/profileventos.component.spec.ts
new file mode 100644
index 0000000..db4d36b
--- /dev/null
+++ b/src/app/pages/profile/profileventos/profileventos.component.spec.ts
@@ -0,0 +1,25 @@
+import { ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { ProfileventosComponent } from './profileventos.component';
+
+describe('ProfileventosComponent', () => {
+ let component: ProfileventosComponent;
+ let fixture: ComponentFixture;
+
+ beforeEach(async () => {
+ await TestBed.configureTestingModule({
+ declarations: [ ProfileventosComponent ]
+ })
+ .compileComponents();
+ });
+
+ beforeEach(() => {
+ fixture = TestBed.createComponent(ProfileventosComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it('should create', () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/src/app/pages/profile/profileventos/profileventos.component.ts b/src/app/pages/profile/profileventos/profileventos.component.ts
new file mode 100644
index 0000000..51143ab
--- /dev/null
+++ b/src/app/pages/profile/profileventos/profileventos.component.ts
@@ -0,0 +1,15 @@
+import { Component, OnInit } from '@angular/core';
+
+@Component({
+ selector: 'app-profileventos',
+ templateUrl: './profileventos.component.html',
+ styleUrls: ['./profileventos.component.css']
+})
+export class ProfileventosComponent implements OnInit {
+
+ constructor() { }
+
+ ngOnInit(): void {
+ }
+
+}
diff --git a/src/app/pages/register/register.component.ts b/src/app/pages/register/register.component.ts
index 305dbc6..5bad637 100644
--- a/src/app/pages/register/register.component.ts
+++ b/src/app/pages/register/register.component.ts
@@ -3,17 +3,15 @@ import { AngularFirestore } from '@angular/fire/firestore';
import { NgForm } from '@angular/forms';
import { Router } from '@angular/router';
-import { AuthService } from '../../../app/services/auth.service';
-import { UserModel } from 'src/app/models/user.model';
-import { FirestoreService } from 'src/app/services/firebase.service';
-
+import { AuthService } from '../../core/services/auth.service';
+import { UserModel } from 'src/app/shared/models/user.model';
+import { FirestoreService } from 'src/app/core/services/firebase.service';
@Component({
selector: 'app-register',
templateUrl: './register1.html',
- styleUrls: ['./register.component.css']
+ styleUrls: ['./register.component.css'],
})
-
export class RegisterComponent implements OnInit {
user: UserModel = {} as UserModel;
recordarme = false;
@@ -27,26 +25,23 @@ export class RegisterComponent implements OnInit {
private router: Router
) {}
- ngOnInit(): void {
- }
+ ngOnInit(): void {}
async onSubmit(form: NgForm): Promise {
if (form.invalid) {
return;
}
try {
- if ( this.user.password !== this.passwordConfirm ) {
+ if (this.user.password !== this.passwordConfirm) {
return;
}
const user = await this.authLogin.newUser(this.user);
if (user) {
-
this.router.navigate(['/home']);
}
} catch (error) {
console.log(error);
}
-
}
private checkUserIsVerified(user: UserModel): void {
@@ -58,22 +53,24 @@ export class RegisterComponent implements OnInit {
}
loginFace(): void {
- this.authLogin.FacebookAuth()
- .then(val => {
- this.router.navigateByUrl('/home');
- })
- .catch(error => {
- this.router.navigateByUrl('/register');
- });
+ this.authLogin
+ .FacebookAuth()
+ .then((val) => {
+ this.router.navigateByUrl('/home');
+ })
+ .catch((error) => {
+ this.router.navigateByUrl('/register');
+ });
}
loginGmail(): void {
- this.authLogin.GoogleAuth()
- .then(val => {
- this.router.navigateByUrl('/home');
- })
- .catch(error => {
- this.router.navigateByUrl('/register');
- });
+ this.authLogin
+ .GoogleAuth()
+ .then((val) => {
+ this.router.navigateByUrl('/home');
+ })
+ .catch((error) => {
+ this.router.navigateByUrl('/register');
+ });
}
}
diff --git a/src/app/pages/section/comunidad/comunidad-routing.module.ts b/src/app/pages/section/comunidad/comunidad-routing.module.ts
index d79104d..e8a134b 100644
--- a/src/app/pages/section/comunidad/comunidad-routing.module.ts
+++ b/src/app/pages/section/comunidad/comunidad-routing.module.ts
@@ -3,7 +3,7 @@ import { RouterModule, Routes } from '@angular/router';
import { ComunidadesComponent } from './comunidades/comunidades.component';
const routes: Routes = [
- {path:'comunidad',component:ComunidadesComponent}
+ {path:'**',component:ComunidadesComponent}
];
@NgModule({
diff --git a/src/app/pages/section/comunidad/comunidades/comunidades.component.css b/src/app/pages/section/comunidad/comunidades/comunidades.component.css
index f91de62..e69de29 100644
--- a/src/app/pages/section/comunidad/comunidades/comunidades.component.css
+++ b/src/app/pages/section/comunidad/comunidades/comunidades.component.css
@@ -1,4 +0,0 @@
-.perfil-redondo {
- border-radius: 100%;
- object-fit: cover;
- }
\ No newline at end of file
diff --git a/src/app/pages/section/comunidad/comunidades/comunidades.component.html b/src/app/pages/section/comunidad/comunidades/comunidades.component.html
index f78075e..0538026 100644
--- a/src/app/pages/section/comunidad/comunidades/comunidades.component.html
+++ b/src/app/pages/section/comunidad/comunidades/comunidades.component.html
@@ -1,30 +1,5 @@
-
-
-
-
-
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/src/app/pages/section/comunidad/comunidades/comunidades.component.ts b/src/app/pages/section/comunidad/comunidades/comunidades.component.ts
index 31fc803..1923bec 100644
--- a/src/app/pages/section/comunidad/comunidades/comunidades.component.ts
+++ b/src/app/pages/section/comunidad/comunidades/comunidades.component.ts
@@ -1,24 +1,20 @@
import { Component, OnInit } from '@angular/core';
-import { ElementId } from 'src/app/models/element';
-import { FirestoreService } from 'src/app/services/firebase.service';
+import { ElementId } from 'src/app/shared/models/element';
+import { FirestoreService } from 'src/app/core/services/firebase.service';
@Component({
selector: 'app-comunidades',
templateUrl: './comunidades.component.html',
- styleUrls: ['./comunidades.component.css']
+ styleUrls: ['./comunidades.component.css'],
})
export class ComunidadesComponent implements OnInit {
- comunidades:ElementId[] = [{uid:'as',name:'nombre'}];
+ comunidades: ElementId[] = [{ uid: 'as', name: 'nombre' }];
constructor(private fsService: FirestoreService) {
- this.fsService.getCollection("comunidades").subscribe(data => {
-
+ this.fsService.getCollection('comunidades').subscribe((data) => {
this.comunidades = data;
console.log('getting sponsors: ', data);
});
- }
-
-
- ngOnInit(): void {
}
+ ngOnInit(): void {}
}
diff --git a/src/app/pages/section/counter/counter-routing.module.ts b/src/app/pages/section/counter/counter-routing.module.ts
deleted file mode 100644
index ed0d610..0000000
--- a/src/app/pages/section/counter/counter-routing.module.ts
+++ /dev/null
@@ -1,16 +0,0 @@
-import { NgModule } from '@angular/core';
-import { RouterModule, Routes } from '@angular/router';
-import { CounterComponent } from './counter/counter.component';
-
-const routes: Routes = [
- {
- path: '**',
- component: CounterComponent
- }
-];
-
-@NgModule({
- imports: [RouterModule.forChild(routes)],
- exports: [RouterModule]
-})
-export class CounterRoutingModule { }
diff --git a/src/app/pages/section/counter/counter/counter.component.css b/src/app/pages/section/counter/counter.component.css
similarity index 100%
rename from src/app/pages/section/counter/counter/counter.component.css
rename to src/app/pages/section/counter/counter.component.css
diff --git a/src/app/pages/section/counter/counter/counter.component.html b/src/app/pages/section/counter/counter.component.html
similarity index 100%
rename from src/app/pages/section/counter/counter/counter.component.html
rename to src/app/pages/section/counter/counter.component.html
diff --git a/src/app/pages/section/counter/counter/counter.component.spec.ts b/src/app/pages/section/counter/counter.component.spec.ts
similarity index 100%
rename from src/app/pages/section/counter/counter/counter.component.spec.ts
rename to src/app/pages/section/counter/counter.component.spec.ts
diff --git a/src/app/pages/section/counter/counter/counter.component.ts b/src/app/pages/section/counter/counter.component.ts
similarity index 82%
rename from src/app/pages/section/counter/counter/counter.component.ts
rename to src/app/pages/section/counter/counter.component.ts
index 728684e..056d15f 100644
--- a/src/app/pages/section/counter/counter/counter.component.ts
+++ b/src/app/pages/section/counter/counter.component.ts
@@ -1,5 +1,5 @@
import { Component, OnInit } from '@angular/core';
-import {TimeService, ActualReloj} from '../../../../services/time.service';
+import {TimeService, ActualReloj} from '../../../core/services/time.service';
import {Observable} from 'rxjs';
@Component({
@@ -22,7 +22,7 @@ export class CounterComponent implements OnInit {
) { }
ngOnInit(): void {
- this.datos$ = this.segundo.getInfoReloj( new Date('2022-02-28') );
+ this.datos$ = this.segundo.getInfoReloj( new Date("2022-02-28") );
this.datos$.subscribe(x => {
this.dia = x.dia;
this.hora = x.hora;
diff --git a/src/app/pages/section/counter/counter.module.ts b/src/app/pages/section/counter/counter.module.ts
deleted file mode 100644
index ceccd9d..0000000
--- a/src/app/pages/section/counter/counter.module.ts
+++ /dev/null
@@ -1,15 +0,0 @@
-import { NgModule } from '@angular/core';
-import { CommonModule } from '@angular/common';
-
-import { CounterRoutingModule } from './counter-routing.module';
-import { CounterComponent } from './counter/counter.component';
-
-
-@NgModule({
- declarations: [CounterComponent],
- imports: [
- CommonModule,
- CounterRoutingModule
- ]
-})
-export class CounterModule { }
diff --git a/src/app/pages/section/course/courses/courses.component.css b/src/app/pages/section/course/courses/courses.component.css
deleted file mode 100644
index 1662a55..0000000
--- a/src/app/pages/section/course/courses/courses.component.css
+++ /dev/null
@@ -1,40 +0,0 @@
-.perfil-redondo {
- border-radius: 100%;
- object-fit: cover;
- }
-
- .talleres-personalizado {
- max-height: calc(70vh - 250px);
- overflow: auto;
- }
- /* Tamaño del scroll */
- .talleres-personalizado::-webkit-scrollbar {
- width: 5px;
- height: 5px;
- }
-
- /* Estilos barra (thumb) de scroll */
- .talleres-personalizado::-webkit-scrollbar-thumb {
- background: #ccc;
- border-radius: 4px;
- }
-
- .talleres-personalizado::-webkit-scrollbar-thumb:active {
- background-color: #999999;
- }
-
- .talleres-personalizado::-webkit-scrollbar-thumb:hover {
- background: #b3b3b3;
- box-shadow: 0 0 2px 1px rgba(0, 0, 0, 0.2);
- }
-
- /* Estilos track de scroll */
- .talleres-personalizado::-webkit-scrollbar-track {
- background: #e1e1e1;
- border-radius: 4px;
- }
-
- .talleres-personalizado::-webkit-scrollbar-track:hover,
- .talleres-personalizado::-webkit-scrollbar-track:active {
- background: #d4d4d4;
- }
\ No newline at end of file
diff --git a/src/app/pages/section/course/courses/courses.component.html b/src/app/pages/section/course/courses/courses.component.html
deleted file mode 100644
index f13829e..0000000
--- a/src/app/pages/section/course/courses/courses.component.html
+++ /dev/null
@@ -1,41 +0,0 @@
-
-
-
-
-
\ No newline at end of file
diff --git a/src/app/pages/section/sponsor/sponsor-routing.module.ts b/src/app/pages/section/sponsor/sponsor-routing.module.ts
index 3c0d893..85201dd 100644
--- a/src/app/pages/section/sponsor/sponsor-routing.module.ts
+++ b/src/app/pages/section/sponsor/sponsor-routing.module.ts
@@ -3,7 +3,7 @@ import { RouterModule, Routes } from '@angular/router';
import { SponsorsComponent } from './sponsors/sponsors.component';
const routes: Routes = [
- {path: '**', component: SponsorsComponent}
+ {path:'**',component:SponsorsComponent}
];
@NgModule({
diff --git a/src/app/pages/section/sponsor/sponsor.module.ts b/src/app/pages/section/sponsor/sponsor.module.ts
index 13494c7..5f75e0f 100644
--- a/src/app/pages/section/sponsor/sponsor.module.ts
+++ b/src/app/pages/section/sponsor/sponsor.module.ts
@@ -3,15 +3,13 @@ import { CommonModule } from '@angular/common';
import { SponsorRoutingModule } from './sponsor-routing.module';
import { SponsorsComponent } from './sponsors/sponsors.component';
-import {SwiperModule} from 'swiper/angular';
@NgModule({
declarations: [SponsorsComponent],
imports: [
CommonModule,
- SponsorRoutingModule,
- SwiperModule
+ SponsorRoutingModule
]
})
export class SponsorModule { }
diff --git a/src/app/pages/section/sponsor/sponsors/sponsors.component.css b/src/app/pages/section/sponsor/sponsors/sponsors.component.css
new file mode 100644
index 0000000..e69de29
diff --git a/src/app/pages/section/sponsor/sponsors/sponsors.component.html b/src/app/pages/section/sponsor/sponsors/sponsors.component.html
index 8d1b259..54fef10 100644
--- a/src/app/pages/section/sponsor/sponsors/sponsors.component.html
+++ b/src/app/pages/section/sponsor/sponsors/sponsors.component.html
@@ -1,129 +1,5 @@
-
-
- La próxima edición regresa en el 2022, en la cual se planea involucrar a todos los programadores
- independientemente del área de conocimiento que se encuentre, todo con un mismo propósito de
- aprender en comunidad.
-
-
-
-
-Ellos ya creen en ésta iniciativa
-
-
-
-
-
-
-
-
-
-
- Bezael
-
-
-
-
-
-
-
-
-
-
- Bezael
-
-
-
-
-
-
-
-
-
-
- Bezael
-
-
-
-
-
-
-
-
-
-
- Bezael
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+Sponsors:
+
+ {{sponsor.id}}
+ {{sponsor.name}}
+
\ No newline at end of file
diff --git a/src/app/pages/section/sponsor/sponsors/sponsors.component.scss b/src/app/pages/section/sponsor/sponsors/sponsors.component.scss
deleted file mode 100644
index 17f8ff3..0000000
--- a/src/app/pages/section/sponsor/sponsors/sponsors.component.scss
+++ /dev/null
@@ -1,134 +0,0 @@
-@import '~swiper/swiper-bundle.min.css';
-
-.swiper-container {
- width: 100%;
- height: 100%;
-}
-
-.swiper-slide {
- text-align: center;
- font-size: 18px;
- display: -webkit-box;
- display: -ms-flexbox;
- display: -webkit-flex;
- display: flex;
- -webkit-box-pack: center;
- -ms-flex-pack: center;
- -webkit-justify-content: center;
- justify-content: center;
- -webkit-box-align: center;
- -ms-flex-align: center;
- -webkit-align-items: center;
- align-items: center;
-}
-
-.swiper-button-prev {
- font-size: 55px;
- top: 10px;
-}
-
-.swiper-button-next {
- font-size: 55px;
- top: 10px;
-}
-
-img {
- height: 80px;
-}
-
-$white: #ffffff;
- $gray: #212121;
- $primary: #05668D;
- $secondary: #028090;
-
- .card1 {
- $border-radius: 15px;
- $card-social-item-size: 2.5vw;
- border: 0;
- text-align: center;
- box-shadow: 0px 5px 10px -5px rgba(0,0,0,0.75);
- .card-img {
- object-fit: cover;
- }
- .card-socials {
- display: flex;
- flex-wrap: wrap;
- margin-top: -($card-social-item-size/2);
- padding: 0 45px;
- z-index: 1;
- a {
- display: block;
- border-radius: 50%;
- width: $card-social-item-size;
- height: $card-social-item-size;
- background: $primary;
- color: $white;
- line-height: $card-social-item-size;
- text-align: center;
- transition: .3s;
- &:not(:last-of-type) {
- margin-right: 10px;
- }
- &:hover {
- background: $secondary;
- transform: scale(1.15);
- }
- }
- }
- }
-
- @mixin white-gradient {
- background: linear-gradient(to right, rgba(255,255,255,1) 0%,rgba(255,255,255,0) 100%);
-}
-
-$animationSpeed: 40s;
-
-// Animation
-@keyframes scroll {
- 0% { transform: translateX(0); }
- 100% { transform: translateX(calc(-250px * 7))}
-}
-
-
-// Styling
-.slider {
- background: white;
- box-shadow: 0 10px 20px -5px rgba(0, 0, 0, .125);
- height: 100px;
- margin: auto;
- overflow:hidden;
- position: relative;
-
-
- &::before,
- &::after {
- @include white-gradient;
- content: "";
- height: 100px;
- position: absolute;
- width: 200px;
- z-index: 2;
- }
-
- &::after {
- right: 0;
- top: 0;
- transform: rotateZ(180deg);
- }
-
- &::before {
- left: 0;
- top: 0;
- }
-
- .slide-track {
- animation: scroll $animationSpeed linear infinite;
- display: flex;
- width: calc(250px * 14);
- }
-
- .slide {
- height: 100px;
- width: 250px;
- }
-}
\ No newline at end of file
diff --git a/src/app/pages/section/sponsor/sponsors/sponsors.component.ts b/src/app/pages/section/sponsor/sponsors/sponsors.component.ts
index 3a36460..2427b04 100644
--- a/src/app/pages/section/sponsor/sponsors/sponsors.component.ts
+++ b/src/app/pages/section/sponsor/sponsors/sponsors.component.ts
@@ -1,45 +1,19 @@
-import {Component, OnInit, EventEmitter, Input, Output, AfterViewInit} from '@angular/core';
-import { ElementId } from 'src/app/models/element';
-import { AuthService } from 'src/app/services/auth.service';
-import { FirestoreService } from 'src/app/services/firebase.service';
-import SwiperCore, { Navigation, Pagination, Scrollbar } from 'swiper/core';
-import Swiper from 'swiper';
+import { Component, OnInit, EventEmitter, Input, Output } from '@angular/core';
+import { FirestoreService } from 'src/app/core/services/firebase.service';
@Component({
selector: 'app-sponsors',
templateUrl: './sponsors.component.html',
- styleUrls: ['./sponsors.component.scss']
+ styleUrls: ['./sponsors.component.css'],
})
-export class SponsorsComponent implements OnInit, AfterViewInit {
- sponsors: ElementId[] = [{uid: 'as', name: 'nombre'}];
- mySwiper: Swiper | undefined;
- constructor( private fsService: FirestoreService ) {
- this.fsService.getCollection('sponsors').subscribe(data => {
+export class SponsorsComponent implements OnInit {
+ sponsors: any[] = [{ uid: 'as', name: 'nombre' }];
+ constructor(private fsService: FirestoreService) {
+ this.fsService.getCollection('sponsors').subscribe((data) => {
this.sponsors = data;
console.log('getting sponsors: ', data);
});
}
- ngOnInit(): void {
-
- }
-
- ngAfterViewInit(): void {
- SwiperCore.use([Navigation, Pagination, Scrollbar]);
- this.mySwiper = new Swiper('.swiper-container', {
- slidesPerView: 5,
- centeredSlides: false,
- spaceBetween: 0,
- freeMode: true,
- pagination: {
- el: '.swiper-pagination',
- dynamicBullets: true,
- },
- navigation: {
- nextEl: '.swiper-button-next',
- prevEl: '.swiper-button-prev',
- },
- });
- }
-
+ ngOnInit(): void {}
}
diff --git a/src/app/pages/shared/footer/footer.component.css b/src/app/pages/shared/footer/footer.component.css
index 3c8cb9b..7be9bff 100644
--- a/src/app/pages/shared/footer/footer.component.css
+++ b/src/app/pages/shared/footer/footer.component.css
@@ -7,6 +7,8 @@
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
- height: 3.125rem;
+ height: auto;
+ bottom: 0;
+ position: absolute ;
width: 100%;
}
diff --git a/src/app/pages/shared/header/header.component.html b/src/app/pages/shared/header/header.component.html
index 381081a..b2ecea0 100644
--- a/src/app/pages/shared/header/header.component.html
+++ b/src/app/pages/shared/header/header.component.html
@@ -1,4 +1,4 @@
-
- -->
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
+
diff --git a/src/app/pages/shared/header/header.component.ts b/src/app/pages/shared/header/header.component.ts
index 55a622e..5daeef4 100644
--- a/src/app/pages/shared/header/header.component.ts
+++ b/src/app/pages/shared/header/header.component.ts
@@ -1,37 +1,37 @@
import { Component, OnInit } from '@angular/core';
-import { NavbarService } from '../../../services/navbar.service';
-import { AuthService } from '../../../services/auth.service';
+import { NavbarService } from '../../../core/services/navbar.service';
+import { AuthService } from '../../../core/services/auth.service';
import { Router } from '@angular/router';
import { Observable } from 'rxjs';
@Component({
selector: 'app-header',
templateUrl: './header.component.html',
- styleUrls: ['./header.component.css']
+ styleUrls: ['./header.component.css'],
})
export class HeaderComponent implements OnInit {
public user$: Observable = this.authSvc.afAuth.user;
constructor(public authSvc: AuthService, private router: Router) {}
- ngOnInit(): void {
- //throw new Error('Method not implemented.');
- }
+ ngOnInit(): void {}
async onLogout() {
try {
await this.authSvc.logout();
- this.router.navigate(['/login']);
+ this.router.navigate(['/home']);
} catch (error) {
console.log(error);
}
}
-
- async onPerfil() {
-
-
- this.router.navigate(['/perfil/principal']);
-
- }
-
+ async checkUserIsVerified() {
+ const userDta = await this.authSvc.isAuthenticated();
+ if (userDta && userDta.emailVerified) {
+ this.router.navigate(['/profile']);
+ } else if (userDta) {
+ this.router.navigate(['/verification']);
+ } else {
+ this.router.navigate(['/register']);
+ }
+ }
}
diff --git a/src/app/pages/utils/verification-email/verification-email.component.ts b/src/app/pages/utils/verification-email/verification-email.component.ts
index 611bdeb..c1f7e78 100644
--- a/src/app/pages/utils/verification-email/verification-email.component.ts
+++ b/src/app/pages/utils/verification-email/verification-email.component.ts
@@ -1,36 +1,30 @@
import { Component, OnDestroy, OnInit } from '@angular/core';
import { Observable } from 'rxjs';
import { Router } from '@angular/router';
-import { UserModel } from 'src/app/models/user.model';
-import { AuthService } from 'src/app/services/auth.service';
+import { AuthService } from 'src/app/core/services/auth.service';
@Component({
selector: 'app-verification-email',
templateUrl: './verification-email.component.html',
- styleUrls: ['./verification-email.component.css']
+ styleUrls: ['./verification-email.component.css'],
})
-
- export class VerificationEmailComponent implements OnDestroy, OnInit {
- user$: Observable = this.authSvc.afAuth.user;
- user:any;
- constructor(private authSvc: AuthService, private router: Router) {
-
- }
+export class VerificationEmailComponent implements OnDestroy, OnInit {
+ user$: Observable = this.authSvc.afAuth.user;
+ user: any;
+ constructor(private authSvc: AuthService, private router: Router) {}
ngOnInit(): void {
//this.doConsult();
}
async doConsult() {
- // const userData = await this.authSvc.isAuthenticated();
- // if(userData && userData.emailVerified)
- // this.router.navigate(['/profile']);
- // else
- // this.router.navigate(['/home']);
+ const userData = await this.authSvc.isAuthenticated();
+ if (userData && userData.emailVerified) this.router.navigate(['/profile']);
+ else this.router.navigate(['/home']);
+ }
+ onSendEmail(): void {
+ this.authSvc.sendVerificationEmail();
}
- onSendEmail(): void {
- this.authSvc.sendVerificationEmail();
- }
-
- ngOnDestroy() {
- this.authSvc.logout();
- }
+
+ ngOnDestroy() {
+ //this.authSvc.logout();
}
+}
diff --git a/src/app/services/auth.service.ts b/src/app/services/auth.service.ts
deleted file mode 100644
index 0b3578c..0000000
--- a/src/app/services/auth.service.ts
+++ /dev/null
@@ -1,211 +0,0 @@
-import { Injectable } from '@angular/core';
-import {HttpClient} from "@angular/common/http";
-import { UserModel } from "../models/user.model";
-import { map, switchMap } from 'rxjs/operators';
-import firebase from 'firebase/app';
-import { AngularFireAuth } from '@angular/fire/auth';
-import { ElementId } from '../models/element';
-import { AngularFirestore, AngularFirestoreDocument } from '@angular/fire/firestore';
-import { Observable, of } from 'rxjs';
-import { RoleValidator } from '../helpers/roleValidator';
-@Injectable({
- providedIn: 'root'
-})
-export class AuthService extends RoleValidator {
- //private url: string = 'urlApi';
- //private apiKey: string = 'apiKey';
- private url = 'https://www.googleapis.com/identitytoolkit/v3/relyingparty';
- private apiKey = 'AIzaSyDHxlKfchpJrycT_fAOX3JjBCWp_uFlcjI';
-
- public userToken: string = '';
- public user$: Observable;
- constructor(private http: HttpClient, public afAuth: AngularFireAuth, private db: AngularFirestore) {
- super();
- this.user$ = this.afAuth.authState.pipe(
- switchMap((user:any) => {
- if (user) {
- return this.db.doc(`users/${user.uid}`).valueChanges();
- }
- return of(null);
- })
- );
- this.readToken();
- console.log(this.user$)
- }
- GoogleAuth() {
- return this.AuthLogin(new firebase.auth.GoogleAuthProvider());
- }
- FacebookAuth(){
- return this.AuthLogin(new firebase.auth.FacebookAuthProvider());
-
- }
- async sendVerificationEmail(): Promise{
- return (await this.afAuth.currentUser)?.sendEmailVerification();
- }
- recoveryPassword(emailAddress:string){
-
- return this.afAuth.sendPasswordResetEmail(emailAddress);
- }
-
- // Auth logic to run auth providers
- AuthLogin(provider:any) {
- this.logOut();
- return this.afAuth.signInWithPopup(provider)
- .then((result:any) => {
- console.log('You have been successfully logged in!',result);
- console.log('email, user!',result.user['email']+" "+result.user['displayName'])
- this.updateUserData(result.user);
- //this.saveToken( result.user['refreshToken'], userData);
-
- }).catch((error: any) => {
- console.log(error)
- })
- }
- private saveToken( idToken: string, userData: any ): void{
- this.userToken = idToken;
- localStorage.setItem( 'token', idToken);
- localStorage.setItem( 'displayName', userData["displayName"]);
- localStorage.setItem( 'email', userData["email"]);
- let today = new Date();
- today.setSeconds( 3600 );
- localStorage.setItem('expires', today.getTime().toString() )
- }
-
- private readToken(): string | null {
- if( localStorage.getItem('token')){
- this.userToken = localStorage.getItem('token');
- }
- return this.userToken;
- }
- async login(userData: UserModel): Promise {
- try {
- const { user } = await this.afAuth.signInWithEmailAndPassword(
- userData.email,
- userData.password!
- );
- this.updateUserData(user);
- return user;
- } catch (error) {
- console.log(error);
- }
- }
-
- async newUser(userData: UserModel): Promise {
- try {
- const { user } = await this.afAuth.createUserWithEmailAndPassword(
- userData.email,
- userData.password!
- );
- await this.sendVerificationEmail();
- return user;
- } catch (error) {
- console.log(error);
- }
- }
- newUser1(user: UserModel){
- const authData = {
- email: user.email,
- password: user.password,
- displayName: user.name,
- returnSecureToken: true
- };
- return this.http.post(
- `${ this.url }/signupNewUser?key=${ this.apiKey }`,
- authData
- ).pipe(
- map( (response: any) => {
- console.log('entro en el map()');
- this.sendVerificationEmail().then((value:any)=>{
- console.log("Email sent!" + value);
- }).catch((error: any)=>{
- console.log("Email failed!" + error);
- });
- //this.saveToken( response['idToken'], response);
- this.insertUserBD(user);
- return response;
- })
- );
-
- }
- insertUserBD(user: UserModel){
- this.db.collection("users",ref => ref.where('email', '==', user.email)).doc(user.email).set({
- email:user.email,
- displayName:user.displayName != undefined ? user.displayName : user.name,
- organization: user.email!.split("@")[1]
- })
- .then(() => {
- console.log("Document successfully updated!");
- //this.router.navigateByUrl('/home');
- })
- .catch((error) => {
- console.error("Error writing document: ", error);
- //this.router.navigateByUrl('/login');
- });
- }
- loginNormal(user: UserModel) {
- this.logOut();
- const authData = {
- email : user.email,
- password : user.password,
- name: user.name,
- returnSecureToken : true
- };
- return this.http.post(
- `${ this.url }/verifyPassword?key=${ this.apiKey }`,
- authData
- ).pipe(
- map( (resp: any) => {
- console.log('entro en el map() ',resp);
- this.saveToken( resp['idToken'], resp);
- return resp;
- })
- );
- }
-
-
- logOut(): boolean{
- localStorage.removeItem('token');
- localStorage.removeItem('displayName');
- localStorage.removeItem('email');
- this.userToken = '';
- return true;
- }
- async logout(): Promise {
- try {
- await this.afAuth.signOut();
- } catch (error) {
- console.log(error);
- }
- }
- getUserName(){
- return localStorage.getItem('displayName') != "" ? localStorage.getItem('displayName'):"empty"
- }
- isAuthenticated() : boolean{
- if(this.userToken.length < 2) {
- return false;
- }
-
- const expires = Number(localStorage.getItem('expires'));
- const expiresDate = new Date();
-
- expiresDate.setTime(expires);
- return expiresDate > new Date();
- }
- private updateUserData(user: any) {
- const userRef: AngularFirestoreDocument = this.db.doc(
- `users/${user.uid}`
- );
-
- const data: UserModel = {
- uid: user.uid,
- email: user.email,
- emailVerified: user.emailVerified,
- displayName: user.displayName,
- photoURL: user.photoURL,
- role: 'ADMIN',
- };
-
- return userRef.set(data, { merge: true });
- }
-
-}
diff --git a/src/app/services/firebase.service.ts b/src/app/services/firebase.service.ts
deleted file mode 100644
index 5021d65..0000000
--- a/src/app/services/firebase.service.ts
+++ /dev/null
@@ -1,57 +0,0 @@
-import { Injectable } from '@angular/core';
-import { HttpClient } from '@angular/common/http';
-import { map } from 'rxjs/operators';
-import { AngularFirestore, AngularFirestoreCollection } from '@angular/fire/firestore';
-import * as firebase from 'firebase';
-import { FileModel } from '../models/file.model';
-import { Observable } from 'rxjs';
-import { ElementId } from '../models/element';
-@Injectable({
- providedIn: 'root'
- })
- export class FirestoreService {
- private itemsCollection!: AngularFirestoreCollection;
- items!: Observable;
- //private url = 'https://publicastv-a67df.firebaseio.com/';
- //private CARPETA_FILES = 'file';
- private newElements: ElementId[] = [];
- public elementsId: ElementId [] = [];
- private elementsString = '';
-
- constructor(private http: HttpClient,
- private db: AngularFirestore) {
-
- }
-
- public updateDoc(collection: string, uid: string, data: ElementId){
- // with ref = (collection,ref => ref.where('uid', '==', uid))
- this.db.collection(collection).doc(uid).set(data)
- .then(() => {
- console.log("Document successfully updated!");
- })
- .catch(function(error) {
- console.error("Error writing document: ", error);
- });
- }
-
- public getCollection (nameCollection: string, count: number = 5) {
- this.itemsCollection = this.db.collection(nameCollection,ref => ref.limit(count));
- this.elementsString = '';
- this.items = this.itemsCollection.snapshotChanges().pipe(
- map(actions => actions.map(a => {
- const data = a.payload.doc.data();
- const id = a.payload.doc.id;
- return { id, ...data };
- }))
- );
- console.log('getting collection: ', nameCollection);
- return this.items;
- }
-
- public guardarFile(file: any, ruta: string) {
-
- this.db.collection(`/${ruta}`).add(file);
- this.getCollection(file);
- }
-
- }
diff --git a/src/app/shared/components/components.module.ts b/src/app/shared/components/components.module.ts
new file mode 100644
index 0000000..2022cca
--- /dev/null
+++ b/src/app/shared/components/components.module.ts
@@ -0,0 +1,12 @@
+import { NgModule } from '@angular/core';
+import { CommonModule } from '@angular/common';
+import { ComunidadComponent } from './comunidad/comunidad.component';
+import { TallerComponent } from './taller/taller.component';
+import { CoursesComponent } from './course/courses/courses.component';
+
+@NgModule({
+ declarations: [ComunidadComponent, TallerComponent,CoursesComponent],
+ imports: [CommonModule],
+ exports: [ComunidadComponent, TallerComponent, CoursesComponent],
+})
+export class ComponentsModule {}
diff --git a/src/app/shared/components/comunidad/comunidad.component.css b/src/app/shared/components/comunidad/comunidad.component.css
new file mode 100644
index 0000000..ccb5523
--- /dev/null
+++ b/src/app/shared/components/comunidad/comunidad.component.css
@@ -0,0 +1,4 @@
+img {
+ max-width: 40px;
+ border-radius: 50%;
+}
diff --git a/src/app/shared/components/comunidad/comunidad.component.html b/src/app/shared/components/comunidad/comunidad.component.html
new file mode 100644
index 0000000..21a8d4f
--- /dev/null
+++ b/src/app/shared/components/comunidad/comunidad.component.html
@@ -0,0 +1,7 @@
+
+
+
+
{{ comunidad.name }}
+
Unirse
+
+
diff --git a/src/app/shared/components/comunidad/comunidad.component.spec.ts b/src/app/shared/components/comunidad/comunidad.component.spec.ts
new file mode 100644
index 0000000..d36f186
--- /dev/null
+++ b/src/app/shared/components/comunidad/comunidad.component.spec.ts
@@ -0,0 +1,25 @@
+import { ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { ComunidadComponent } from './comunidad.component';
+
+describe('ComunidadComponent', () => {
+ let component: ComunidadComponent;
+ let fixture: ComponentFixture;
+
+ beforeEach(async () => {
+ await TestBed.configureTestingModule({
+ declarations: [ ComunidadComponent ]
+ })
+ .compileComponents();
+ });
+
+ beforeEach(() => {
+ fixture = TestBed.createComponent(ComunidadComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it('should create', () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/src/app/shared/components/comunidad/comunidad.component.ts b/src/app/shared/components/comunidad/comunidad.component.ts
new file mode 100644
index 0000000..92a3aae
--- /dev/null
+++ b/src/app/shared/components/comunidad/comunidad.component.ts
@@ -0,0 +1,16 @@
+import { Component, OnInit, Input } from '@angular/core';
+import { Comunidad } from '../../models/collections';
+
+@Component({
+ selector: 'app-comunidad',
+ templateUrl: './comunidad.component.html',
+ styleUrls: ['./comunidad.component.css'],
+})
+export class ComunidadComponent implements OnInit {
+ @Input() comunidad!: Comunidad;
+ defaultImage =
+ 'https://cdn4.iconfinder.com/data/icons/logos-and-brands/512/91_Discord_logo_logos-512.png';
+ constructor() {}
+
+ ngOnInit(): void {}
+}
diff --git a/src/app/pages/section/course/course-routing.module.ts b/src/app/shared/components/course/course-routing.module.ts
similarity index 100%
rename from src/app/pages/section/course/course-routing.module.ts
rename to src/app/shared/components/course/course-routing.module.ts
diff --git a/src/app/pages/section/course/course.module.ts b/src/app/shared/components/course/course.module.ts
similarity index 100%
rename from src/app/pages/section/course/course.module.ts
rename to src/app/shared/components/course/course.module.ts
diff --git a/src/app/shared/components/course/courses/courses.component.css b/src/app/shared/components/course/courses/courses.component.css
new file mode 100644
index 0000000..e69de29
diff --git a/src/app/shared/components/course/courses/courses.component.html b/src/app/shared/components/course/courses/courses.component.html
new file mode 100644
index 0000000..e7b2b63
--- /dev/null
+++ b/src/app/shared/components/course/courses/courses.component.html
@@ -0,0 +1,5 @@
+Talleres:
+
+ {{course.id}}
+ {{course.title}}
+
\ No newline at end of file
diff --git a/src/app/pages/section/course/courses/courses.component.spec.ts b/src/app/shared/components/course/courses/courses.component.spec.ts
similarity index 100%
rename from src/app/pages/section/course/courses/courses.component.spec.ts
rename to src/app/shared/components/course/courses/courses.component.spec.ts
diff --git a/src/app/pages/section/course/courses/courses.component.ts b/src/app/shared/components/course/courses/courses.component.ts
similarity index 53%
rename from src/app/pages/section/course/courses/courses.component.ts
rename to src/app/shared/components/course/courses/courses.component.ts
index a184f95..e043c09 100644
--- a/src/app/pages/section/course/courses/courses.component.ts
+++ b/src/app/shared/components/course/courses/courses.component.ts
@@ -1,23 +1,19 @@
import { Component, OnInit } from '@angular/core';
-import { ElementId } from 'src/app/models/element';
-import { FirestoreService } from 'src/app/services/firebase.service';
+import { FirestoreService } from 'src/app/core/services/firebase.service';
@Component({
selector: 'app-courses',
templateUrl: './courses.component.html',
- styleUrls: ['./courses.component.css']
+ styleUrls: ['./courses.component.css'],
})
export class CoursesComponent implements OnInit {
- courses:ElementId[] = [];
+ courses: any[] = [];
constructor(private fsService: FirestoreService) {
- this.fsService.getCollection("talleres").subscribe(data => {
-
+ this.fsService.getCollection('talleres').subscribe((data) => {
this.courses = data;
console.log('getting courses: ', data);
});
- }
-
- ngOnInit(): void {
}
+ ngOnInit(): void {}
}
diff --git a/src/app/shared/components/taller/taller.component.css b/src/app/shared/components/taller/taller.component.css
new file mode 100644
index 0000000..ab6ec4e
--- /dev/null
+++ b/src/app/shared/components/taller/taller.component.css
@@ -0,0 +1,5 @@
+.circulo {
+ border-radius: 50%;
+ width: 40px;
+ height: 40px;
+}
diff --git a/src/app/shared/components/taller/taller.component.html b/src/app/shared/components/taller/taller.component.html
new file mode 100644
index 0000000..b137660
--- /dev/null
+++ b/src/app/shared/components/taller/taller.component.html
@@ -0,0 +1,31 @@
+
+ Talleres por areas de conocimiento
+
+ {{ categoria.name | titlecase }}
+
+
+
+
+
+ taller.date.toMillis() ? 'fa-check' : 'fa-ellipsis-h'
+ "
+ >
+
+ {{ taller.title }}
+
+
{{ taller.date.toDate() | date }}
+
+ By
+ {{ taller.autor }}
+
+
diff --git a/src/app/shared/components/taller/taller.component.spec.ts b/src/app/shared/components/taller/taller.component.spec.ts
new file mode 100644
index 0000000..9c1bccc
--- /dev/null
+++ b/src/app/shared/components/taller/taller.component.spec.ts
@@ -0,0 +1,25 @@
+import { ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { TallerComponent } from './taller.component';
+
+describe('TallerComponent', () => {
+ let component: TallerComponent;
+ let fixture: ComponentFixture;
+
+ beforeEach(async () => {
+ await TestBed.configureTestingModule({
+ declarations: [ TallerComponent ]
+ })
+ .compileComponents();
+ });
+
+ beforeEach(() => {
+ fixture = TestBed.createComponent(TallerComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it('should create', () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/src/app/shared/components/taller/taller.component.ts b/src/app/shared/components/taller/taller.component.ts
new file mode 100644
index 0000000..6b13e85
--- /dev/null
+++ b/src/app/shared/components/taller/taller.component.ts
@@ -0,0 +1,35 @@
+import { Component, Input, OnInit } from '@angular/core';
+import { Taller, Categoria } from '../../models/collections';
+import { FirestoreService } from '../../../core/services/firebase.service';
+
+@Component({
+ selector: 'app-taller',
+ templateUrl: './taller.component.html',
+ styleUrls: ['./taller.component.css'],
+})
+export class TallerComponent implements OnInit {
+ talleres: Taller[] = [];
+ categorias: Categoria[] = [];
+ talleresTemp: Taller[] = [];
+ currentDate = new Date().getMilliseconds();
+ constructor(private fsService: FirestoreService) {}
+
+ ngOnInit(): void {
+ this.fsService.getCollection('categorias', 10).subscribe((v) => {
+ this.categorias = v;
+ });
+ this.fsService.getCollection('talleres').subscribe((v: any) => {
+ console.log(v);
+
+ this.talleres = v;
+ this.talleresTemp = this.talleres;
+ });
+ }
+ onFilter(categoria: string): void {
+ if (categoria === '') {
+ this.talleresTemp = this.talleres;
+ return;
+ }
+ this.talleresTemp = this.talleres.filter((v) => v.categoria === categoria);
+ }
+}
diff --git a/src/app/helpers/roleValidator.ts b/src/app/shared/helpers/roleValidator.ts
similarity index 83%
rename from src/app/helpers/roleValidator.ts
rename to src/app/shared/helpers/roleValidator.ts
index 03401ef..293b7fc 100644
--- a/src/app/helpers/roleValidator.ts
+++ b/src/app/shared/helpers/roleValidator.ts
@@ -1,4 +1,4 @@
-import { UserModel } from "../models/user.model";
+import { UserModel } from '../models/user.model';
export class RoleValidator {
isSuscriptor(user: UserModel): boolean {
@@ -12,4 +12,4 @@ export class RoleValidator {
isAdmin(user: UserModel): boolean {
return user.role === 'ADMIN';
}
-}
\ No newline at end of file
+}
diff --git a/src/app/shared/models/collections.ts b/src/app/shared/models/collections.ts
new file mode 100644
index 0000000..bd0648d
--- /dev/null
+++ b/src/app/shared/models/collections.ts
@@ -0,0 +1,22 @@
+export interface Comunidad {
+ id: string;
+ name: string;
+ uid: string;
+ link: string;
+ image: string;
+}
+export interface Taller {
+ uid: string;
+ id: string;
+ autor: string;
+ autorLink: string;
+ description: string;
+ link: string;
+ title: string;
+ categoria: string;
+ date: firebase.default.firestore.Timestamp;
+}
+export interface Categoria {
+ id: string;
+ name: string;
+}
diff --git a/src/app/models/element.ts b/src/app/shared/models/element.ts
similarity index 100%
rename from src/app/models/element.ts
rename to src/app/shared/models/element.ts
diff --git a/src/app/models/file.model.ts b/src/app/shared/models/file.model.ts
similarity index 100%
rename from src/app/models/file.model.ts
rename to src/app/shared/models/file.model.ts
diff --git a/src/app/models/user.model.ts b/src/app/shared/models/user.model.ts
similarity index 100%
rename from src/app/models/user.model.ts
rename to src/app/shared/models/user.model.ts
diff --git a/src/assets/css/main.css b/src/assets/css/main.css
index 91a25cb..0f273d3 100644
--- a/src/assets/css/main.css
+++ b/src/assets/css/main.css
@@ -10,7 +10,7 @@
/*//////////////////////////////////////////////////////////////////
[ RESTYLE TAG ]*/
- /* * {
+ * {
margin: 0px;
padding: 0px;
box-sizing: border-box;
@@ -19,10 +19,10 @@
body, html {
height: 100%;
font-family: Ubuntu-Regular, sans-serif;
- } */
+ }
/*---------------------------------------------*/
- /* a {
+ a {
font-family: Ubuntu-Regular;
font-size: 14px;
line-height: 1.7;
@@ -41,379 +41,380 @@
a:hover {
text-decoration: none;
color: #403866;
- } */
+ }
/*---------------------------------------------*/
h1,h2,h3,h4,h5,h6 {
- margin: 0px;
-}
-
-p {
- font-family: Ubuntu-Regular;
- font-size: 14px;
- line-height: 1.7;
- color: #666666;
- margin: 0px;
-}
-
-ul, li {
- margin: 0px;
- list-style-type: none;
-}
-
-
-/*---------------------------------------------*/
-input {
+ margin: 0px;
+ }
+
+ p {
+ font-family: Ubuntu-Regular;
+ font-size: 14px;
+ line-height: 1.7;
+ color: #666666;
+ margin: 0px;
+ }
+
+ ul, li {
+ margin: 0px;
+ list-style-type: none;
+ }
+
+
+ /*---------------------------------------------*/
+ input {
+ outline: none;
+ border: none;
+ }
+
+ textarea {
outline: none;
border: none;
-}
-
-textarea {
- outline: none;
- border: none;
-}
-
-textarea:focus, input:focus {
- border-color: transparent !important;
-}
-
-input::-webkit-input-placeholder { color: #8f8fa1;}
-input:-moz-placeholder { color: #8f8fa1;}
-input::-moz-placeholder { color: #8f8fa1;}
-input:-ms-input-placeholder { color: #8f8fa1;}
-
-textarea::-webkit-input-placeholder { color: #8f8fa1;}
-textarea:-moz-placeholder { color: #8f8fa1;}
-textarea::-moz-placeholder { color: #8f8fa1;}
-textarea:-ms-input-placeholder { color: #8f8fa1;}
-
-label {
- display: block;
- margin: 0;
-}
-
-/*---------------------------------------------*/
-button {
- outline: none !important;
- border: none;
+ }
+
+ textarea:focus, input:focus {
+ border-color: transparent !important;
+ }
+
+ input::-webkit-input-placeholder { color: #8f8fa1;}
+ input:-moz-placeholder { color: #8f8fa1;}
+ input::-moz-placeholder { color: #8f8fa1;}
+ input:-ms-input-placeholder { color: #8f8fa1;}
+
+ textarea::-webkit-input-placeholder { color: #8f8fa1;}
+ textarea:-moz-placeholder { color: #8f8fa1;}
+ textarea::-moz-placeholder { color: #8f8fa1;}
+ textarea:-ms-input-placeholder { color: #8f8fa1;}
+
+ label {
+ display: block;
+ margin: 0;
+ }
+
+ /*---------------------------------------------*/
+ button {
+ outline: none !important;
+ border: none;
+ background: transparent;
+ }
+
+ button:hover {
+ cursor: pointer;
+ }
+
+ iframe {
+ border: none !important;
+ }
+
+
+ /*//////////////////////////////////////////////////////////////////
+ [ Utility ]*/
+ .txt1 {
+ font-family: Ubuntu-Regular;
+ font-size: 16px;
+ color: #827ffe;
+ line-height: 1.4;
+ }
+
+
+
+ /*//////////////////////////////////////////////////////////////////
+ [ login ]*/
+
+ .limiter {
+ width: 100%;
+ margin: 0 auto;
+ }
+
+ .container-login100 {
+ width: 100%;
+ /* min-height: 100vh; */
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -moz-box;
+ display: -ms-flexbox;
+ display: flex;
+ flex-wrap: wrap;
+ justify-content: center;
+ align-items: center;
+ padding: 15px;
+
+ background-position: center;
+ background-size: cover;
+ background-repeat: no-repeat;;
+ }
+
+
+ .wrap-login100 {
+ width: 390px;
+ background: #fff;
+ border-radius: 10px;
+ position: relative;
+ }
+
+
+ /*==================================================================
+ [ Form ]*/
+
+ .login100-form {
+ width: 100%;
+ }
+
+ .login100-form-title {
+ font-family: Ubuntu-Bold;
+ font-size: 30px;
+ color: #403866;
+ line-height: 1.2;
+ text-transform: uppercase;
+ text-align: center;
+
+ width: 100%;
+ display: block;
+ }
+
+
+
+ /*------------------------------------------------------------------
+ [ Input ]*/
+
+ .wrap-input100 {
+ width: 100%;
+ position: relative;
+ background-color: #e6e6e6;
+ border: 1px solid transparent;
+ border-radius: 3px;
+ }
+
+
+ /*---------------------------------------------*/
+ .input100 {
+ font-family: Ubuntu-Bold;
+ color: #403866;
+ line-height: 1.2;
+ font-size: 18px;
+
+ display: block;
+ width: 100%;
background: transparent;
-}
-
-button:hover {
+ height: 62px;
+ padding: 0 20px 0 38px;
+ }
+ /*------------------------------------------------------------------
+ [ Focus Input ]*/
+
+ .focus-input100 {
+ position: absolute;
+ display: block;
+ width: calc(100% + 2px);
+ height: calc(100% + 2px);
+ top: -1px;
+ left: -1px;
+ pointer-events: none;
+ border: 1px solid #827ffe;
+ border-radius: 3px;
+
+ visibility: hidden;
+ opacity: 0;
+
+ -webkit-transition: all 0.4s;
+ -o-transition: all 0.4s;
+ -moz-transition: all 0.4s;
+ transition: all 0.4s;
+
+ -webkit-transform: scaleX(1.1) scaleY(1.3);
+ -moz-transform: scaleX(1.1) scaleY(1.3);
+ -ms-transform: scaleX(1.1) scaleY(1.3);
+ -o-transform: scaleX(1.1) scaleY(1.3);
+ transform: scaleX(1.1) scaleY(1.3);
+ }
+
+ .input100:focus + .focus-input100 {
+ visibility: visible;
+ opacity: 1;
+
+ -webkit-transform: scale(1);
+ -moz-transform: scale(1);
+ -ms-transform: scale(1);
+ -o-transform: scale(1);
+ transform: scale(1);
+ }
+
+ .eff-focus-selection {
+ visibility: visible;
+ opacity: 1;
+
+ -webkit-transform: scale(1);
+ -moz-transform: scale(1);
+ -ms-transform: scale(1);
+ -o-transform: scale(1);
+ transform: scale(1);
+ }
+
+
+ /*==================================================================
+ [ Restyle Checkbox ]*/
+
+ .input-checkbox100 {
+ display: none;
+ }
+
+ .label-checkbox100 {
+ font-family: Ubuntu-Regular;
+ font-size: 16px;
+ color: #999999;
+ line-height: 1.2;
+
+ display: block;
+ position: relative;
+ padding-left: 26px;
cursor: pointer;
-}
-
-iframe {
- border: none !important;
-}
-
-
-/*//////////////////////////////////////////////////////////////////
-[ Utility ]*/
-.txt1 {
- font-family: Ubuntu-Regular;
- font-size: 16px;
- color: #827ffe;
- line-height: 1.4;
-}
-
-
-
-/*//////////////////////////////////////////////////////////////////
-[ login ]*/
-
-.limiter {
- width: 100%;
- margin: 0 auto;
-}
-
-.container-login100 {
- width: 100%;
- min-height: 100vh;
- display: -webkit-box;
- display: -webkit-flex;
- display: -moz-box;
- display: -ms-flexbox;
- display: flex;
- flex-wrap: wrap;
- justify-content: center;
- align-items: center;
- padding: 15px;
-
- background-position: center;
- background-size: cover;
- background-repeat: no-repeat;;
-}
-
-
-.wrap-login100 {
- width: 390px;
- background: #fff;
- border-radius: 10px;
- position: relative;
-}
-
-
-/*==================================================================
-[ Form ]*/
-
-.login100-form {
- width: 100%;
-}
-
-.login100-form-title {
- font-family: Ubuntu-Bold;
- font-size: 30px;
- color: #403866;
- line-height: 1.2;
- text-transform: uppercase;
- text-align: center;
-
- width: 100%;
- display: block;
-}
-
-
-
-/*------------------------------------------------------------------
-[ Input ]*/
-
-.wrap-input100 {
- width: 100%;
- position: relative;
- background-color: #e6e6e6;
- border: 1px solid transparent;
- border-radius: 3px;
-}
-
-
-/*---------------------------------------------*/
-.input100 {
- font-family: Ubuntu-Bold;
- color: #403866;
- line-height: 1.2;
- font-size: 18px;
-
- display: block;
- width: 100%;
- background: transparent;
- height: 62px;
- padding: 0 20px 0 38px;
-}
-/*------------------------------------------------------------------
-[ Focus Input ]*/
-
-.focus-input100 {
- position: absolute;
- display: block;
- width: calc(100% + 2px);
- height: calc(100% + 2px);
- top: -1px;
- left: -1px;
- pointer-events: none;
- border: 1px solid #827ffe;
- border-radius: 3px;
-
- visibility: hidden;
- opacity: 0;
-
- -webkit-transition: all 0.4s;
- -o-transition: all 0.4s;
- -moz-transition: all 0.4s;
- transition: all 0.4s;
-
- -webkit-transform: scaleX(1.1) scaleY(1.3);
- -moz-transform: scaleX(1.1) scaleY(1.3);
- -ms-transform: scaleX(1.1) scaleY(1.3);
- -o-transform: scaleX(1.1) scaleY(1.3);
- transform: scaleX(1.1) scaleY(1.3);
-}
-
-.input100:focus + .focus-input100 {
- visibility: visible;
- opacity: 1;
-
- -webkit-transform: scale(1);
- -moz-transform: scale(1);
- -ms-transform: scale(1);
- -o-transform: scale(1);
- transform: scale(1);
-}
-
-.eff-focus-selection {
- visibility: visible;
- opacity: 1;
-
- -webkit-transform: scale(1);
- -moz-transform: scale(1);
- -ms-transform: scale(1);
- -o-transform: scale(1);
- transform: scale(1);
-}
-
-
-/*==================================================================
-[ Restyle Checkbox ]*/
-
-.input-checkbox100 {
- display: none;
-}
-
-.label-checkbox100 {
- font-family: Ubuntu-Regular;
- font-size: 16px;
- color: #999999;
- line-height: 1.2;
-
- display: block;
- position: relative;
- padding-left: 26px;
- cursor: pointer;
-}
-
-.label-checkbox100::before {
- content: "\f00c";
- font-family: FontAwesome;
- font-size: 13px;
- color: transparent;
-
- display: -webkit-box;
- display: -webkit-flex;
- display: -moz-box;
- display: -ms-flexbox;
- display: flex;
- justify-content: center;
- align-items: center;
- position: absolute;
- width: 18px;
- height: 18px;
- border-radius: 3px;
- background: #fff;
- border: 2px solid #827ffe;
- left: 0;
- top: 50%;
- -webkit-transform: translateY(-50%);
- -moz-transform: translateY(-50%);
- -ms-transform: translateY(-50%);
- -o-transform: translateY(-50%);
- transform: translateY(-50%);
-}
-
-.input-checkbox100:checked + .label-checkbox100::before {
- color: #827ffe;
-}
-
-
-/*------------------------------------------------------------------
-[ Button ]*/
-.container-login100-form-btn {
- width: 100%;
- display: -webkit-box;
- display: -webkit-flex;
- display: -moz-box;
- display: -ms-flexbox;
- display: flex;
- flex-wrap: wrap;
-}
-
-.login100-form-btn {
- font-family: Ubuntu-Bold;
- font-size: 16px;
- color: #fff;
- line-height: 1.2;
- text-transform: uppercase;
-
- display: -webkit-box;
- display: -webkit-flex;
- display: -moz-box;
- display: -ms-flexbox;
- display: flex;
- justify-content: center;
- align-items: center;
- padding: 0 20px;
- width: 100%;
- height: 62px;
- background-color: #827ffe;
- border-radius: 3px;
-
- -webkit-transition: all 0.4s;
- -o-transition: all 0.4s;
- -moz-transition: all 0.4s;
- transition: all 0.4s;
-}
-
-.login100-form-btn:hover {
- background-color: #403866;
-}
-
-
-/*------------------------------------------------------------------
-[ Alert validate ]*/
-
-.validate-input {
- position: relative;
-}
-
-.alert-validate::before {
- content: attr(data-validate);
- position: absolute;
- max-width: 70%;
- background-color: #fff;
- border: 1px solid #c80000;
- border-radius: 3px;
- padding: 4px 25px 5px 10px;
- top: 50%;
- -webkit-transform: translateY(-50%);
- -moz-transform: translateY(-50%);
- -ms-transform: translateY(-50%);
- -o-transform: translateY(-50%);
- transform: translateY(-50%);
- right: 12px;
- pointer-events: none;
-
- font-family: Ubuntu-Regular;
- color: #c80000;
- font-size: 14px;
- line-height: 1.4;
- text-align: left;
-
- visibility: hidden;
- opacity: 0;
-
- -webkit-transition: opacity 0.4s;
- -o-transition: opacity 0.4s;
- -moz-transition: opacity 0.4s;
- transition: opacity 0.4s;
-}
-
-.alert-validate::after {
- content: "\f12a";
- font-family: FontAwesome;
- display: block;
- position: absolute;
- color: #c80000;
- font-size: 18px;
- top: 50%;
- -webkit-transform: translateY(-50%);
- -moz-transform: translateY(-50%);
- -ms-transform: translateY(-50%);
- -o-transform: translateY(-50%);
- transform: translateY(-50%);
- right: 18px;
-}
-
-.alert-validate:hover:before {
- visibility: visible;
- opacity: 1;
-}
-
-@media (max-width: 992px) {
+ }
+
+ .label-checkbox100::before {
+ content: "\f00c";
+ font-family: FontAwesome;
+ font-size: 13px;
+ color: transparent;
+
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -moz-box;
+ display: -ms-flexbox;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ position: absolute;
+ width: 18px;
+ height: 18px;
+ border-radius: 3px;
+ background: #fff;
+ border: 2px solid #827ffe;
+ left: 0;
+ top: 50%;
+ -webkit-transform: translateY(-50%);
+ -moz-transform: translateY(-50%);
+ -ms-transform: translateY(-50%);
+ -o-transform: translateY(-50%);
+ transform: translateY(-50%);
+ }
+
+ .input-checkbox100:checked + .label-checkbox100::before {
+ color: #827ffe;
+ }
+
+
+ /*------------------------------------------------------------------
+ [ Button ]*/
+ .container-login100-form-btn {
+ width: 100%;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -moz-box;
+ display: -ms-flexbox;
+ display: flex;
+ flex-wrap: wrap;
+ }
+
+ .login100-form-btn {
+ font-family: Ubuntu-Bold;
+ font-size: 16px;
+ color: #fff;
+ line-height: 1.2;
+ text-transform: uppercase;
+
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -moz-box;
+ display: -ms-flexbox;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ padding: 0 20px;
+ width: 100%;
+ height: 62px;
+ background-color: #827ffe;
+ border-radius: 3px;
+
+ -webkit-transition: all 0.4s;
+ -o-transition: all 0.4s;
+ -moz-transition: all 0.4s;
+ transition: all 0.4s;
+ }
+
+ .login100-form-btn:hover {
+ background-color: #403866;
+ }
+
+
+ /*------------------------------------------------------------------
+ [ Alert validate ]*/
+
+ .validate-input {
+ position: relative;
+ }
+
.alert-validate::before {
+ content: attr(data-validate);
+ position: absolute;
+ max-width: 70%;
+ background-color: #fff;
+ border: 1px solid #c80000;
+ border-radius: 3px;
+ padding: 4px 25px 5px 10px;
+ top: 50%;
+ -webkit-transform: translateY(-50%);
+ -moz-transform: translateY(-50%);
+ -ms-transform: translateY(-50%);
+ -o-transform: translateY(-50%);
+ transform: translateY(-50%);
+ right: 12px;
+ pointer-events: none;
+
+ font-family: Ubuntu-Regular;
+ color: #c80000;
+ font-size: 14px;
+ line-height: 1.4;
+ text-align: left;
+
+ visibility: hidden;
+ opacity: 0;
+
+ -webkit-transition: opacity 0.4s;
+ -o-transition: opacity 0.4s;
+ -moz-transition: opacity 0.4s;
+ transition: opacity 0.4s;
+ }
+
+ .alert-validate::after {
+ content: "\f12a";
+ font-family: FontAwesome;
+ display: block;
+ position: absolute;
+ color: #c80000;
+ font-size: 18px;
+ top: 50%;
+ -webkit-transform: translateY(-50%);
+ -moz-transform: translateY(-50%);
+ -ms-transform: translateY(-50%);
+ -o-transform: translateY(-50%);
+ transform: translateY(-50%);
+ right: 18px;
+ }
+
+ .alert-validate:hover:before {
visibility: visible;
opacity: 1;
}
-}
-
-
-/*//////////////////////////////////////////////////////////////////
-[ Responsive ]*/
+
+ @media (max-width: 992px) {
+ .alert-validate::before {
+ visibility: visible;
+ opacity: 1;
+ }
+ }
+
+
+ /*//////////////////////////////////////////////////////////////////
+ [ Responsive ]*/
+
\ No newline at end of file
diff --git a/src/assets/css_header/colors.css b/src/assets/css_header/colors.css
deleted file mode 100644
index f7698bb..0000000
--- a/src/assets/css_header/colors.css
+++ /dev/null
@@ -1,868 +0,0 @@
-/*===============================================
- All Colors Option
-================================================ */
-.red-skin .btn-theme-2, .red-skin .top-header, .red-skin .pricing-bottom .btn-pricing,
-.green-skin .btn-theme-2, .green-skin .top-header, .green-skin .pricing-bottom .btn-pricing,
-.blue-skin .btn-theme-2, .blue-skin .top-header, .blue-skin .pricing-bottom .btn-pricing,
-.yellow-skin .btn-theme-2, .yellow-skin .top-header, .yellow-skin .pricing-bottom .btn-pricing,
-.darkblue-skin .btn-theme-2, .darkblue-skin .top-header, .darkblue-skin .pricing-bottom .btn-pricing,
-.oceangreen-skin .btn-theme-2, .oceangreen-skin .top-header, .oceangreen-skin .pricing-bottom .btn-pricing,
-.purple-skin .btn-theme-2, .purple-skin .top-header, .purple-skin .pricing-bottom .btn-pricing,
-.goodred-skin .btn-theme-2, .goodred-skin .top-header, .goodred-skin .pricing-bottom .btn-pricing,
-.goodgreen-skin .btn-theme-2, .goodgreen-skin .top-header, .goodgreen-skin .pricing-bottom .btn-pricing,
-.blue2-skin .btn-theme-2, .blue2-skin .top-header, .blue2-skin .pricing-bottom .btn-pricing{
- background-color:#252c41;
- background:#252c41;
- border-color:#252c41;
-}
-.red-skin .hero-search h1, .green-skin .hero-search h1, .blue-skin .hero-search h1, .yellow-skin .hero-search h1, .darkblue-skin .hero-search h1,
-.oceangreen-skin .hero-search h1,
-.purple-skin .hero-search h1, .goodred-skin .hero-search h1, .goodgreen-skin .hero-search h1, .blue2-skin .hero-search h1{
- color:#252c41 !important;
-}
-/*-------------- Red Color Option --------------------*/
-.red-skin .theme-bg,.red-skin .property-search-type label:hover, .red-skin .property-search-type label.active,
-.red-skin li.login-attri.theme-log a,
-.red-skin .range-slider .ui-slider .ui-slider-handle,
-.red-skin .range-slider .ui-widget-header,
-.red-skin .pricing-bottom .btn-pricing:hover, .red-skin .pricing-bottom .btn-pricing:focus
-.red-skin .select2-container--default .select2-results__option--highlighted[aria-selected],
-.red-skin .pagination li:first-child a,
-.red-skin .btn.btn-theme,
-.red-skin .btn.btn-theme:hover, .red-skin .btn.btn-theme:focus,
-.red-skin .btn.search-btn,
-.red-skin .btn-theme-2:hover, .red-skin .btn-theme-2:focus,
-.red-skin .btn-outline-theme:hover, .red-skin .btn-outline-theme:focus,
-.red-skin .btn.search-btn,
-.red-skin .simple-search-wrap .pk-input-group .pk-subscribe-submit,
-.red-skin .btn.search-btn-outline:hover, .red-skin .btn.search-btn-outline:focus,
-.red-skin .property-listing.property-1 .listing-detail-btn .more-btn,
-.red-skin .home-slider-desc .read-more,
-.red-skin .nav-tabs .nav-item.show .nav-link, .red-skin .nav-tabs .nav-link.active,
-.red-skin .checkbox-custom:checked + .checkbox-custom-label:before,
-.red-skin .radio-custom:checked + .radio-custom-label:before,
-.red-skin .btn.pop-login,
-.red-skin .single-widgets.widget_search form button,
-.red-skin .single-widgets.widget_tags ul li a:hover, .red-skin .single-widgets.widget_tags ul li a:focus,
-.red-skin .pagination>.active>a, .red-skin .pagination>.active>a:focus, .red-skin .pagination>.active>a:hover, .red-skin .pagination>.active>span, .red-skin .pagination>.active>span:focus, .red-skin .pagination>.active>span:hover, .red-skin .pagination>li>a:focus, .red-skin .pagination>li>a:hover{
- background-color:#da0b4e;
- background:#da0b4e;
-}
-
-.red-skin a.link:hover, .red-skin a.link:focus, .red-skin a:hover, a:focus,
-.red-skin .theme-cl,
-.red-skin .btn.btn-theme-light,
-.red-skin .bl-continue,
-.red-skin .header-dark-transparent.header-fixed .attributes li.submit-attri a,
-.red-skin nav .menu li a.active,
-.red-skin nav .menu li.dropdown.open > a,
-.red-skin nav .menu .mg-menu li a i, .red-skin nav .menu li a:hover,
-.red-skin .recommended .pr-value,
-.red-skin .btn-outline-theme,
-.red-skin .btn.search-btn-outline,
-.red-skin .dw-proprty-info li,
-.red-skin .ps-trep .ps-type,
-.red-skin .d-navigation ul li.active a,
-.red-skin span.mod-close,
-.red-skin .blog-page .blog-details blockquote .icon,
-.red-skin .single-post-pagination .post-pagination-center-grid a,
-.red-skin .blog-page .blog-details .comment-area .all-comments article .comment-details .comment-meta .comment-left-meta .comment-date,
-.red-skin .cn-info-icon i, .red-skin .client-info h5,
-.red-skin .listing-card-info-price{
- color:#da0b4e;
-}
-
-.red-skin .pagination>.active>a, .red-skin .pagination>.active>a:focus, .red-skin .pagination>.active>a:hover, .red-skin .pagination>.active>span, .red-skin .pagination>.active>span:focus, .red-skin .pagination>.active>span:hover, .red-skin .pagination>li>a:focus, .red-skin .pagination>li>a:hover,
-.red-skin .pagination li:first-child a,
-.red-skin .range-slider .ui-slider .ui-slider-handle,
-.red-skin .attributes li.submit-attri.theme-log a,
-.red-skin .header-dark-transparent.header-fixed .attributes li.submit-attri a,
-.red-skin .btn.btn-theme,
-.red-skin .btn-theme-2:hover, .red-skin .btn-theme-2:focus,
-.red-skin .btn.btn-theme:hover, .red-skin .btn.btn-theme:focus,
-.red-skin .btn-outline-theme:hover, .red-skin .btn-outline-theme:focus,
-.red-skin .btn-outline-theme,
-.red-skin .simple-search-wrap .pk-input-group .pk-subscribe-submit,
-.red-skin .btn.search-btn-outline,
-.red-skin .btn.search-btn-outline:hover, .red-skin .btn.search-btn-outline:focus,
-.red-skin .property-listing.property-1 .listing-detail-btn .more-btn,
-.red-skin .nav-tabs .nav-item.show .nav-link, .red-skin .nav-tabs .nav-link.active,
-.red-skin .btn.pop-login,
-.red-skin .single-widgets.widget_tags ul li a:hover, .red-skin .single-widgets.widget_tags ul li a:focus{
- border-color:#da0b4e;
-}
-
-.red-skin li.login-attri.theme-log a {
- box-shadow:0 8px 5px rgba(240, 44, 45, 0.2);
- -webkit-box-shadow:0 8px 5px rgba(240, 44, 45, 0.2);
-}
-.red-skin .btn.btn-theme-light, .red-skin .theme-bg-light{
- background:rgba(240, 44, 45, 0.1);
-}
-
-.nav-menu.nav-menu-social>li.add-listing.theme-border {
- border: 1px solid #da0b4e !important;
- transition:all ease 0.4s;
-}
-.nav-menu.nav-menu-social>li.add-listing.theme-border a {
- color:#da0b4e !important;
-}
-.nav-menu.nav-menu-social>li.add-listing.theme-border:hover, .nav-menu.nav-menu-social>li.add-listing.theme-border:focus{
- background:#da0b4e !important;
-}
-.nav-menu.nav-menu-social>li.add-listing.theme-border:hover a, .nav-menu.nav-menu-social>li.add-listing.theme-border:focus a{
- color:#ffffff !important;
-}
-.nav-menu.nav-menu-social>li.add-listing.black-border {
- border: 1px solid #2e344a !important;
-}
-.nav-menu.nav-menu-social>li.add-listing.black-border a {
- color:#2e344a !important;
-}
-.nav-menu.nav-menu-social>li.add-listing.black-border:hover, .nav-menu.nav-menu-social>li.add-listing.black-border:focus{
- background:#2e344a !important;
-}
-.nav-menu.nav-menu-social>li.add-listing.black-border:hover a, .nav-menu.nav-menu-social>li.add-listing.black-border:focus a{
- color:#ffffff !important;
-}
-.nav-menu.nav-menu-social>li.add-listing.black-bg {
- background:#2e344a !important;
- transition:all ease 0.4s;
- border: 1px solid #2e344a !important;
-}
-.nav-menu.nav-menu-social>li.add-listing.black-bg:focus, .nav-menu.nav-menu-social>li.add-listing.black-bg:hover {
- background:#da0b4e !important;
- border: 1px solid #da0b4e !important;
-}
-.nav-menu.nav-menu-social>li.add-listing.black-bg:focus a, .nav-menu.nav-menu-social>li.add-listing.black-bg:hover a{
- color:#ffffff !important;
-}
-/*-------------- Green Color Option --------------------*/
-.green-skin .theme-bg,.green-skin .property-search-type label:hover, .green-skin .property-search-type label.active,
-.green-skin li.login-attri.theme-log a,
-.green-skin .range-slider .ui-slider .ui-slider-handle,
-.green-skin .range-slider .ui-widget-header,
-.green-skin .pricing-bottom .btn-pricing:hover, .green-skin .pricing-bottom .btn-pricing:focus
-.green-skin .select2-container--default .select2-results__option--highlighted[aria-selected],
-.green-skin .pagination li:first-child a,
-.green-skin .btn.btn-theme,
-.green-skin .btn.btn-theme:hover, .green-skin .btn.btn-theme:focus,
-.green-skin .btn.search-btn,
-.green-skin .btn-theme-2:hover, .green-skin .btn-theme-2:focus,
-.green-skin .btn-outline-theme:hover, .green-skin .btn-outline-theme:focus,
-.green-skin .btn.search-btn,
-.green-skin .simple-search-wrap .pk-input-group .pk-subscribe-submit,
-.green-skin .btn.search-btn-outline:hover, .green-skin .btn.search-btn-outline:focus,
-.green-skin .property-listing.property-1 .listing-detail-btn .more-btn,
-.green-skin .home-slider-desc .read-more,
-.green-skin .nav-tabs .nav-item.show .nav-link, .green-skin .nav-tabs .nav-link.active,
-.green-skin .checkbox-custom:checked + .checkbox-custom-label:before,
-.green-skin .radio-custom:checked + .radio-custom-label:before,
-.green-skin .btn.pop-login,
-.green-skin .single-widgets.widget_search form button,
-.green-skin .single-widgets.widget_tags ul li a:hover, .green-skin .single-widgets.widget_tags ul li a:focus,
-.green-skin .pagination>.active>a, .green-skin .pagination>.active>a:focus, .green-skin .pagination>.active>a:hover, .green-skin .pagination>.active>span, .green-skin .pagination>.active>span:focus, .green-skin .pagination>.active>span:hover, .green-skin .pagination>li>a:focus, .green-skin .pagination>li>a:hover{
- background-color:#00ba74;
- background:#00ba74;
-}
-
-.green-skin a.link:hover, .green-skin a.link:focus, .green-skin a:hover, a:focus,
-.green-skin .theme-cl,
-.green-skin .btn.btn-theme-light,
-.green-skin .bl-continue,
-.green-skin .header-dark-transparent.header-fixed .attributes li.submit-attri a,
-.green-skin nav .menu li a.active,
-.green-skin nav .menu li.dropdown.open > a,
-.green-skin nav .menu .mg-menu li a i, .green-skin nav .menu li a:hover,
-.green-skin .recommended .pr-value,
-.green-skin .btn-outline-theme,
-.green-skin .attributes li.submit-attri.theme-log a,
-.green-skin .btn.search-btn-outline,
-.green-skin .dw-proprty-info li,
-.green-skin .ps-trep .ps-type,
-.green-skin .d-navigation ul li.active a,
-.green-skin span.mod-close,
-.green-skin .blog-page .blog-details blockquote .icon,
-.green-skin .single-post-pagination .post-pagination-center-grid a,
-.green-skin .blog-page .blog-details .comment-area .all-comments article .comment-details .comment-meta .comment-left-meta .comment-date,
-.green-skin .cn-info-icon i, .green-skin .client-info h5,
-.green-skin .listing-card-info-price{
- color:#00ba74;
-}
-
-.green-skin .pagination>.active>a, .green-skin .pagination>.active>a:focus, .green-skin .pagination>.active>a:hover, .green-skin .pagination>.active>span, .green-skin .pagination>.active>span:focus, .green-skin .pagination>.active>span:hover, .green-skin .pagination>li>a:focus, .green-skin .pagination>li>a:hover,
-.green-skin .pagination li:first-child a,
-.green-skin .range-slider .ui-slider .ui-slider-handle,
-.green-skin .attributes li.submit-attri.theme-log a,
-.green-skin .header-dark-transparent.header-fixed .attributes li.submit-attri a,
-.green-skin .btn.btn-theme,
-.green-skin .btn-theme-2:hover, .green-skin .btn-theme-2:focus,
-.green-skin .btn.btn-theme:hover, .green-skin .btn.btn-theme:focus,
-.green-skin .btn-outline-theme:hover, .green-skin .btn-outline-theme:focus,
-.green-skin .btn-outline-theme,
-.green-skin .simple-search-wrap .pk-input-group .pk-subscribe-submit,
-.green-skin .btn.search-btn-outline,
-.green-skin .btn.search-btn-outline:hover, .green-skin .btn.search-btn-outline:focus,
-.green-skin .property-listing.property-1 .listing-detail-btn .more-btn,
-.green-skin .nav-tabs .nav-item.show .nav-link, .green-skin .nav-tabs .nav-link.active,
-.green-skin .btn.pop-login,
-.green-skin .single-widgets.widget_tags ul li a:hover, .green-skin .single-widgets.widget_tags ul li a:focus{
- border-color:#00ba74;
-}
-
-.green-skin li.login-attri.theme-log a {
- box-shadow:0 8px 5px rgba(0, 186, 116, 0.2);
- -webkit-box-shadow:0 8px 5px rgba(0, 186, 116,0.2);
-}
-.green-skin .btn.btn-theme-light, .green-skin .theme-bg-light{
- background:rgba(0, 186, 116, 0.1);
-}
-/*-------------- Blue Color Option --------------------*/
-.blue-skin .theme-bg,.blue-skin .property-search-type label:hover, .blue-skin .property-search-type label.active,
-.blue-skin li.login-attri.theme-log a,
-.blue-skin .range-slider .ui-slider .ui-slider-handle,
-.blue-skin .range-slider .ui-widget-header,
-.blue-skin .pricing-bottom .btn-pricing:hover, .blue-skin .pricing-bottom .btn-pricing:focus
-.blue-skin .select2-container--default .select2-results__option--highlighted[aria-selected],
-.blue-skin .pagination li:first-child a,
-.blue-skin .btn.btn-theme,
-.blue-skin .btn.btn-theme:hover, .blue-skin .btn.btn-theme:focus,
-.blue-skin .btn.search-btn,
-.blue-skin .btn-theme-2:hover, .blue-skin .btn-theme-2:focus,
-.blue-skin .btn-outline-theme:hover, .blue-skin .btn-outline-theme:focus,
-.blue-skin .btn.search-btn,
-.blue-skin .simple-search-wrap .pk-input-group .pk-subscribe-submit,
-.blue-skin .btn.search-btn-outline:hover, .blue-skin .btn.search-btn-outline:focus,
-.blue-skin .property-listing.property-1 .listing-detail-btn .more-btn,
-.blue-skin .home-slider-desc .read-more,
-.blue-skin .nav-tabs .nav-item.show .nav-link, .blue-skin .nav-tabs .nav-link.active,
-.blue-skin .checkbox-custom:checked + .checkbox-custom-label:before,
-.blue-skin .radio-custom:checked + .radio-custom-label:before,
-.blue-skin .btn.pop-login,
-.blue-skin .single-widgets.widget_search form button,
-.blue-skin .single-widgets.widget_tags ul li a:hover, .blue-skin .single-widgets.widget_tags ul li a:focus,
-.blue-skin .pagination>.active>a, .blue-skin .pagination>.active>a:focus, .blue-skin .pagination>.active>a:hover, .blue-skin .pagination>.active>span, .blue-skin .pagination>.active>span:focus, .blue-skin .pagination>.active>span:hover, .blue-skin .pagination>li>a:focus, .blue-skin .pagination>li>a:hover{
- background-color:#0058f3;
- background:#0058f3;
-}
-
-.blue-skin a.link:hover, .blue-skin a.link:focus, .blue-skin a:hover, a:focus,
-.blue-skin .theme-cl,
-.blue-skin .btn.btn-theme-light,
-.blue-skin .bl-continue,
-.blue-skin .header-dark-transparent.header-fixed .attributes li.submit-attri a,
-.blue-skin nav .menu li a.active,
-.blue-skin nav .menu li.dropdown.open > a,
-.blue-skin nav .menu .mg-menu li a i, .blue-skin nav .menu li a:hover,
-.blue-skin .recommended .pr-value,
-.blue-skin .btn-outline-theme,
-.blue-skin .attributes li.submit-attri.theme-log a,
-.blue-skin .btn.search-btn-outline,
-.blue-skin .dw-proprty-info li,
-.blue-skin .ps-trep .ps-type,
-.blue-skin .d-navigation ul li.active a,
-.blue-skin span.mod-close,
-.blue-skin .blog-page .blog-details blockquote .icon,
-.blue-skin .single-post-pagination .post-pagination-center-grid a,
-.blue-skin .blog-page .blog-details .comment-area .all-comments article .comment-details .comment-meta .comment-left-meta .comment-date,
-.blue-skin .cn-info-icon i, .blue-skin .client-info h5,
-.blue-skin .listing-card-info-price{
- color:#0058f3;
-}
-
-.blue-skin .pagination>.active>a, .blue-skin .pagination>.active>a:focus, .blue-skin .pagination>.active>a:hover, .blue-skin .pagination>.active>span, .blue-skin .pagination>.active>span:focus, .blue-skin .pagination>.active>span:hover, .blue-skin .pagination>li>a:focus, .blue-skin .pagination>li>a:hover,
-.blue-skin .pagination li:first-child a,
-.blue-skin .range-slider .ui-slider .ui-slider-handle,
-.blue-skin .attributes li.submit-attri.theme-log a,
-.blue-skin .header-dark-transparent.header-fixed .attributes li.submit-attri a,
-.blue-skin .btn.btn-theme,
-.blue-skin .btn-theme-2:hover, .blue-skin .btn-theme-2:focus,
-.blue-skin .btn.btn-theme:hover, .blue-skin .btn.btn-theme:focus,
-.blue-skin .btn-outline-theme:hover, .blue-skin .btn-outline-theme:focus,
-.blue-skin .btn-outline-theme,
-.blue-skin .simple-search-wrap .pk-input-group .pk-subscribe-submit,
-.blue-skin .btn.search-btn-outline,
-.blue-skin .btn.search-btn-outline:hover, .blue-skin .btn.search-btn-outline:focus,
-.blue-skin .property-listing.property-1 .listing-detail-btn .more-btn,
-.blue-skin .nav-tabs .nav-item.show .nav-link, .blue-skin .nav-tabs .nav-link.active,
-.blue-skin .btn.pop-login,
-.blue-skin .single-widgets.widget_tags ul li a:hover, .blue-skin .single-widgets.widget_tags ul li a:focus{
- border-color:#0058f3;
-}
-
-.blue-skin li.login-attri.theme-log a {
- box-shadow:0 8px 5px rgba(0, 88, 243, 0.2);
- -webkit-box-shadow:0 8px 5px rgba(0, 88, 243, 0.2);
-}
-.blue-skin .btn.btn-theme-light, .blue-skin .theme-bg-light{
- background:rgba(0, 88, 243, 0.1);
-}
-/*-------------- Yellow Color Option --------------------*/
-.yellow-skin .theme-bg,.yellow-skin .property-search-type label:hover, .yellow-skin .property-search-type label.active,
-.yellow-skin li.login-attri.theme-log a,
-.yellow-skin .range-slider .ui-slider .ui-slider-handle,
-.yellow-skin .range-slider .ui-widget-header,
-.yellow-skin .pricing-bottom .btn-pricing:hover, .yellow-skin .pricing-bottom .btn-pricing:focus
-.yellow-skin .select2-container--default .select2-results__option--highlighted[aria-selected],
-.yellow-skin .pagination li:first-child a,
-.yellow-skin .btn.btn-theme,
-.yellow-skin .btn.btn-theme:hover, .yellow-skin .btn.btn-theme:focus,
-.yellow-skin .btn.search-btn,
-.yellow-skin .btn-theme-2:hover, .yellow-skin .btn-theme-2:focus,
-.yellow-skin .btn-outline-theme:hover, .yellow-skin .btn-outline-theme:focus,
-.yellow-skin .btn.search-btn,
-.yellow-skin .simple-search-wrap .pk-input-group .pk-subscribe-submit,
-.yellow-skin .btn.search-btn-outline:hover, .yellow-skin .btn.search-btn-outline:focus,
-.yellow-skin .property-listing.property-1 .listing-detail-btn .more-btn,
-.yellow-skin .home-slider-desc .read-more,
-.yellow-skin .nav-tabs .nav-item.show .nav-link, .yellow-skin .nav-tabs .nav-link.active,
-.yellow-skin .checkbox-custom:checked + .checkbox-custom-label:before,
-.yellow-skin .radio-custom:checked + .radio-custom-label:before,
-.yellow-skin .btn.pop-login,
-.yellow-skin .single-widgets.widget_search form button,
-.yellow-skin .single-widgets.widget_tags ul li a:hover, .yellow-skin .single-widgets.widget_tags ul li a:focus,
-.yellow-skin .pagination>.active>a, .yellow-skin .pagination>.active>a:focus, .yellow-skin .pagination>.active>a:hover, .yellow-skin .pagination>.active>span, .yellow-skin .pagination>.active>span:focus, .yellow-skin .pagination>.active>span:hover, .yellow-skin .pagination>li>a:focus, .yellow-skin .pagination>li>a:hover{
- background-color:#ffa50d;
- background:#ffa50d;
-}
-
-.yellow-skin a.link:hover, .yellow-skin a.link:focus, .yellow-skin a:hover, a:focus,
-.yellow-skin .theme-cl,
-.yellow-skin .btn.btn-theme-light,
-.yellow-skin .bl-continue,
-.yellow-skin .header-dark-transparent.header-fixed .attributes li.submit-attri a,
-.yellow-skin nav .menu li a.active,
-.yellow-skin nav .menu li.dropdown.open > a,
-.yellow-skin nav .menu .mg-menu li a i, .yellow-skin nav .menu li a:hover,
-.yellow-skin .recommended .pr-value,
-.yellow-skin .btn-outline-theme,
-.yellow-skin .attributes li.submit-attri.theme-log a,
-.yellow-skin .btn.search-btn-outline,
-.yellow-skin .dw-proprty-info li,
-.yellow-skin .ps-trep .ps-type,
-.yellow-skin .d-navigation ul li.active a,
-.yellow-skin span.mod-close,
-.yellow-skin .blog-page .blog-details blockquote .icon,
-.yellow-skin .single-post-pagination .post-pagination-center-grid a,
-.yellow-skin .blog-page .blog-details .comment-area .all-comments article .comment-details .comment-meta .comment-left-meta .comment-date,
-.yellow-skin .cn-info-icon i, .yellow-skin .client-info h5,
-.yellow-skin .listing-card-info-price{
- color:#ffa50d;
-}
-
-.yellow-skin .pagination>.active>a, .yellow-skin .pagination>.active>a:focus, .yellow-skin .pagination>.active>a:hover, .yellow-skin .pagination>.active>span, .yellow-skin .pagination>.active>span:focus, .yellow-skin .pagination>.active>span:hover, .yellow-skin .pagination>li>a:focus, .yellow-skin .pagination>li>a:hover,
-.yellow-skin .pagination li:first-child a,
-.yellow-skin .range-slider .ui-slider .ui-slider-handle,
-.yellow-skin .attributes li.submit-attri.theme-log a,
-.yellow-skin .header-dark-transparent.header-fixed .attributes li.submit-attri a,
-.yellow-skin .btn.btn-theme,
-.yellow-skin .btn-theme-2:hover, .yellow-skin .btn-theme-2:focus,
-.yellow-skin .btn.btn-theme:hover, .yellow-skin .btn.btn-theme:focus,
-.yellow-skin .btn-outline-theme:hover, .yellow-skin .btn-outline-theme:focus,
-.yellow-skin .btn-outline-theme,
-.yellow-skin .simple-search-wrap .pk-input-group .pk-subscribe-submit,
-.yellow-skin .btn.search-btn-outline,
-.yellow-skin .btn.search-btn-outline:hover, .yellow-skin .btn.search-btn-outline:focus,
-.yellow-skin .property-listing.property-1 .listing-detail-btn .more-btn,
-.yellow-skin .nav-tabs .nav-item.show .nav-link, .yellow-skin .nav-tabs .nav-link.active,
-.yellow-skin .btn.pop-login,
-.yellow-skin .single-widgets.widget_tags ul li a:hover, .yellow-skin .single-widgets.widget_tags ul li a:focus{
- border-color:#ffa50d;
-}
-
-.yellow-skin li.login-attri.theme-log a {
- box-shadow:0 8px 5px rgba(255, 165, 13, 0.2);
- -webkit-box-shadow:0 8px 5px rgba(255, 165, 13, 0.2);
-}
-.yellow-skin .btn.btn-theme-light, .yellow-skin .theme-bg-light{
- background:rgba(255, 165, 13, 0.1);
-}
-/*-------------- Blue Dark Color Option --------------------*/
-.darkblue-skin .theme-bg,.darkblue-skin .property-search-type label:hover, .darkblue-skin .property-search-type label.active,
-.darkblue-skin li.login-attri.theme-log a,
-.darkblue-skin .range-slider .ui-slider .ui-slider-handle,
-.darkblue-skin .range-slider .ui-widget-header,
-.darkblue-skin .pricing-bottom .btn-pricing:hover, .darkblue-skin .pricing-bottom .btn-pricing:focus
-.darkblue-skin .select2-container--default .select2-results__option--highlighted[aria-selected],
-.darkblue-skin .pagination li:first-child a,
-.darkblue-skin .btn.btn-theme,
-.darkblue-skin .btn.btn-theme:hover, .darkblue-skin .btn.btn-theme:focus,
-.darkblue-skin .btn.search-btn,
-.darkblue-skin .btn-theme-2:hover, .darkblue-skin .btn-theme-2:focus,
-.darkblue-skin .btn-outline-theme:hover, .darkblue-skin .btn-outline-theme:focus,
-.darkblue-skin .btn.search-btn,
-.darkblue-skin .simple-search-wrap .pk-input-group .pk-subscribe-submit,
-.darkblue-skin .btn.search-btn-outline:hover, .darkblue-skin .btn.search-btn-outline:focus,
-.darkblue-skin .property-listing.property-1 .listing-detail-btn .more-btn,
-.darkblue-skin .home-slider-desc .read-more,
-.darkblue-skin .nav-tabs .nav-item.show .nav-link, .darkblue-skin .nav-tabs .nav-link.active,
-.darkblue-skin .checkbox-custom:checked + .checkbox-custom-label:before,
-.darkblue-skin .radio-custom:checked + .radio-custom-label:before,
-.darkblue-skin .btn.pop-login,
-.darkblue-skin .single-widgets.widget_search form button,
-.darkblue-skin .single-widgets.widget_tags ul li a:hover, .darkblue-skin .single-widgets.widget_tags ul li a:focus,
-.darkblue-skin .pagination>.active>a, .darkblue-skin .pagination>.active>a:focus, .darkblue-skin .pagination>.active>a:hover, .darkblue-skin .pagination>.active>span, .darkblue-skin .pagination>.active>span:focus, .darkblue-skin .pagination>.active>span:hover, .darkblue-skin .pagination>li>a:focus, .darkblue-skin .pagination>li>a:hover{
- background-color:#0F52BA;
- background:#0F52BA;
-}
-
-.darkblue-skin a.link:hover, .darkblue-skin a.link:focus, .darkblue-skin a:hover, a:focus,
-.darkblue-skin .theme-cl,
-.darkblue-skin .btn.btn-theme-light,
-.darkblue-skin .bl-continue,
-.darkblue-skin .header-dark-transparent.header-fixed .attributes li.submit-attri a,
-.darkblue-skin nav .menu li a.active,
-.darkblue-skin nav .menu li.dropdown.open > a,
-.darkblue-skin nav .menu .mg-menu li a i, .darkblue-skin nav .menu li a:hover,
-.darkblue-skin .recommended .pr-value,
-.darkblue-skin .btn-outline-theme,
-.darkblue-skin .attributes li.submit-attri.theme-log a,
-.darkblue-skin .btn.search-btn-outline,
-.darkblue-skin .dw-proprty-info li,
-.darkblue-skin .ps-trep .ps-type,
-.darkblue-skin .d-navigation ul li.active a,
-.darkblue-skin span.mod-close,
-.darkblue-skin .blog-page .blog-details blockquote .icon,
-.darkblue-skin .single-post-pagination .post-pagination-center-grid a,
-.darkblue-skin .blog-page .blog-details .comment-area .all-comments article .comment-details .comment-meta .comment-left-meta .comment-date,
-.darkblue-skin .cn-info-icon i, .darkblue-skin .client-info h5,
-.darkblue-skin .listing-card-info-price{
- color:#0F52BA;
-}
-
-.darkblue-skin .pagination>.active>a, .darkblue-skin .pagination>.active>a:focus, .darkblue-skin .pagination>.active>a:hover, .darkblue-skin .pagination>.active>span, .darkblue-skin .pagination>.active>span:focus, .darkblue-skin .pagination>.active>span:hover, .darkblue-skin .pagination>li>a:focus, .darkblue-skin .pagination>li>a:hover,
-.darkblue-skin .pagination li:first-child a,
-.darkblue-skin .range-slider .ui-slider .ui-slider-handle,
-.darkblue-skin .attributes li.submit-attri.theme-log a,
-.darkblue-skin .header-dark-transparent.header-fixed .attributes li.submit-attri a,
-.darkblue-skin .btn.btn-theme,
-.darkblue-skin .btn-theme-2:hover, .darkblue-skin .btn-theme-2:focus,
-.darkblue-skin .btn.btn-theme:hover, .darkblue-skin .btn.btn-theme:focus,
-.darkblue-skin .btn-outline-theme:hover, .darkblue-skin .btn-outline-theme:focus,
-.darkblue-skin .btn-outline-theme,
-.darkblue-skin .simple-search-wrap .pk-input-group .pk-subscribe-submit,
-.darkblue-skin .btn.search-btn-outline,
-.darkblue-skin .btn.search-btn-outline:hover, .darkblue-skin .btn.search-btn-outline:focus,
-.darkblue-skin .property-listing.property-1 .listing-detail-btn .more-btn,
-.darkblue-skin .nav-tabs .nav-item.show .nav-link, .darkblue-skin .nav-tabs .nav-link.active,
-.darkblue-skin .btn.pop-login,
-.darkblue-skin .single-widgets.widget_tags ul li a:hover, .darkblue-skin .single-widgets.widget_tags ul li a:focus{
- border-color:#0F52BA;
-}
-
-.darkblue-skin li.login-attri.theme-log a {
- box-shadow:0 8px 5px rgba(15, 82, 186, 0.2);
- -webkit-box-shadow:0 8px 5px rgba(15, 82, 186, 0.2);
-}
-.darkblue-skin .btn.btn-theme-light, .darkblue-skin .theme-bg-light{
- background:rgba(15, 82, 186, 0.1);
-}
-/*-------------- Ocean Green Color Option --------------------*/
-.oceangreen-skin .theme-bg,.oceangreen-skin .property-search-type label:hover, .oceangreen-skin .property-search-type label.active,
-.oceangreen-skin li.login-attri.theme-log a,
-.oceangreen-skin .range-slider .ui-slider .ui-slider-handle,
-.oceangreen-skin .range-slider .ui-widget-header,
-.oceangreen-skin .pricing-bottom .btn-pricing:hover, .oceangreen-skin .pricing-bottom .btn-pricing:focus
-.oceangreen-skin .select2-container--default .select2-results__option--highlighted[aria-selected],
-.oceangreen-skin .pagination li:first-child a,
-.oceangreen-skin .btn.btn-theme,
-.oceangreen-skin .btn.btn-theme:hover, .oceangreen-skin .btn.btn-theme:focus,
-.oceangreen-skin .btn.search-btn,
-.oceangreen-skin .btn-theme-2:hover, .oceangreen-skin .btn-theme-2:focus,
-.oceangreen-skin .btn-outline-theme:hover, .oceangreen-skin .btn-outline-theme:focus,
-.oceangreen-skin .btn.search-btn,
-.oceangreen-skin .simple-search-wrap .pk-input-group .pk-subscribe-submit,
-.oceangreen-skin .btn.search-btn-outline:hover, .oceangreen-skin .btn.search-btn-outline:focus,
-.oceangreen-skin .property-listing.property-1 .listing-detail-btn .more-btn,
-.oceangreen-skin .home-slider-desc .read-more,
-.oceangreen-skin .nav-tabs .nav-item.show .nav-link, .oceangreen-skin .nav-tabs .nav-link.active,
-.oceangreen-skin .checkbox-custom:checked + .checkbox-custom-label:before,
-.oceangreen-skin .radio-custom:checked + .radio-custom-label:before,
-.oceangreen-skin .btn.pop-login,
-.oceangreen-skin .single-widgets.widget_search form button,
-.oceangreen-skin .single-widgets.widget_tags ul li a:hover, .oceangreen-skin .single-widgets.widget_tags ul li a:focus,
-.oceangreen-skin .pagination>.active>a, .oceangreen-skin .pagination>.active>a:focus, .oceangreen-skin .pagination>.active>a:hover, .oceangreen-skin .pagination>.active>span, .oceangreen-skin .pagination>.active>span:focus, .oceangreen-skin .pagination>.active>span:hover, .oceangreen-skin .pagination>li>a:focus, .oceangreen-skin .pagination>li>a:hover{
- background-color:#00424a;
- background:#00424a;
-}
-
-.oceangreen-skin a.link:hover, .oceangreen-skin a.link:focus, .oceangreen-skin a:hover, a:focus,
-.oceangreen-skin .theme-cl,
-.oceangreen-skin .btn.btn-theme-light,
-.oceangreen-skin .bl-continue,
-.oceangreen-skin .header-dark-transparent.header-fixed .attributes li.submit-attri a,
-.oceangreen-skin nav .menu li a.active,
-.oceangreen-skin nav .menu li.dropdown.open > a,
-.oceangreen-skin nav .menu .mg-menu li a i, .oceangreen-skin nav .menu li a:hover,
-.oceangreen-skin .recommended .pr-value,
-.oceangreen-skin .btn-outline-theme,
-.oceangreen-skin .attributes li.submit-attri.theme-log a,
-.oceangreen-skin .btn.search-btn-outline,
-.oceangreen-skin .dw-proprty-info li,
-.oceangreen-skin .ps-trep .ps-type,
-.oceangreen-skin .d-navigation ul li.active a,
-.oceangreen-skin span.mod-close,
-.oceangreen-skin .blog-page .blog-details blockquote .icon,
-.oceangreen-skin .single-post-pagination .post-pagination-center-grid a,
-.oceangreen-skin .blog-page .blog-details .comment-area .all-comments article .comment-details .comment-meta .comment-left-meta .comment-date,
-.oceangreen-skin .cn-info-icon i, .oceangreen-skin .client-info h5,
-.oceangreen-skin .listing-card-info-price{
- color:#00424a;
-}
-
-.oceangreen-skin .pagination>.active>a, .oceangreen-skin .pagination>.active>a:focus, .oceangreen-skin .pagination>.active>a:hover, .oceangreen-skin .pagination>.active>span, .oceangreen-skin .pagination>.active>span:focus, .oceangreen-skin .pagination>.active>span:hover, .oceangreen-skin .pagination>li>a:focus, .oceangreen-skin .pagination>li>a:hover,
-.oceangreen-skin .pagination li:first-child a,
-.oceangreen-skin .range-slider .ui-slider .ui-slider-handle,
-.oceangreen-skin .attributes li.submit-attri.theme-log a,
-.oceangreen-skin .header-dark-transparent.header-fixed .attributes li.submit-attri a,
-.oceangreen-skin .btn.btn-theme,
-.oceangreen-skin .btn-theme-2:hover, .oceangreen-skin .btn-theme-2:focus,
-.oceangreen-skin .btn.btn-theme:hover, .oceangreen-skin .btn.btn-theme:focus,
-.oceangreen-skin .btn-outline-theme:hover, .oceangreen-skin .btn-outline-theme:focus,
-.oceangreen-skin .btn-outline-theme,
-.oceangreen-skin .simple-search-wrap .pk-input-group .pk-subscribe-submit,
-.oceangreen-skin .btn.search-btn-outline,
-.oceangreen-skin .btn.search-btn-outline:hover, .oceangreen-skin .btn.search-btn-outline:focus,
-.oceangreen-skin .property-listing.property-1 .listing-detail-btn .more-btn,
-.oceangreen-skin .nav-tabs .nav-item.show .nav-link, .oceangreen-skin .nav-tabs .nav-link.active,
-.oceangreen-skin .btn.pop-login,
-.oceangreen-skin .single-widgets.widget_tags ul li a:hover, .oceangreen-skin .single-widgets.widget_tags ul li a:focus{
- border-color:#00424a;
-}
-
-.oceangreen-skin li.login-attri.theme-log a {
- box-shadow:0 8px 5px rgba(0, 168, 119, 0.2);
- -webkit-box-shadow:0 8px 5px rgba(0, 168, 119, 0.2);
-}
-
-.oceangreen-skin .btn.btn-theme-light, .oceangreen-skin .theme-bg-light{
- background:rgba(0, 168, 119, 0.1);
-}
-
-/*-------------- Purple Color Option --------------------*/
-.purple-skin .theme-bg,.purple-skin .property-search-type label:hover, .purple-skin .property-search-type label.active,
-.purple-skin li.login-attri.theme-log a,
-.purple-skin .range-slider .ui-slider .ui-slider-handle,
-.purple-skin .range-slider .ui-widget-header,
-.purple-skin .pricing-bottom .btn-pricing:hover, .purple-skin .pricing-bottom .btn-pricing:focus
-.purple-skin .select2-container--default .select2-results__option--highlighted[aria-selected],
-.purple-skin .pagination li:first-child a,
-.purple-skin .btn.btn-theme,
-.purple-skin .btn.btn-theme:hover, .purple-skin .btn.btn-theme:focus,
-.purple-skin .btn.search-btn,
-.purple-skin .btn-theme-2:hover, .purple-skin .btn-theme-2:focus,
-.purple-skin .btn-outline-theme:hover, .purple-skin .btn-outline-theme:focus,
-.purple-skin .btn.search-btn,
-.purple-skin .simple-search-wrap .pk-input-group .pk-subscribe-submit,
-.purple-skin .btn.search-btn-outline:hover, .purple-skin .btn.search-btn-outline:focus,
-.purple-skin .property-listing.property-1 .listing-detail-btn .more-btn,
-.purple-skin .home-slider-desc .read-more,
-.purple-skin .nav-tabs .nav-item.show .nav-link, .purple-skin .nav-tabs .nav-link.active,
-.purple-skin .checkbox-custom:checked + .checkbox-custom-label:before,
-.purple-skin .radio-custom:checked + .radio-custom-label:before,
-.purple-skin .btn.pop-login,
-.purple-skin .single-widgets.widget_search form button,
-.purple-skin .single-widgets.widget_tags ul li a:hover, .purple-skin .single-widgets.widget_tags ul li a:focus,
-.purple-skin .pagination>.active>a, .purple-skin .pagination>.active>a:focus, .purple-skin .pagination>.active>a:hover, .purple-skin .pagination>.active>span, .purple-skin .pagination>.active>span:focus, .purple-skin .pagination>.active>span:hover, .purple-skin .pagination>li>a:focus, .purple-skin .pagination>li>a:hover{
- background-color:#7065ef;
- background:#7065ef;
-}
-
-.purple-skin a.link:hover, .purple-skin a.link:focus, .purple-skin a:hover, a:focus,
-.purple-skin .theme-cl,
-.purple-skin .btn.btn-theme-light,
-.purple-skin .bl-continue,
-.purple-skin .header-dark-transparent.header-fixed .attributes li.submit-attri a,
-.purple-skin nav .menu li a.active,
-.purple-skin nav .menu li.dropdown.open > a,
-.purple-skin nav .menu .mg-menu li a i, .purple-skin nav .menu li a:hover,
-.purple-skin .recommended .pr-value,
-.purple-skin .btn-outline-theme,
-.purple-skin .attributes li.submit-attri.theme-log a,
-.purple-skin .btn.search-btn-outline,
-.purple-skin .dw-proprty-info li,
-.purple-skin .ps-trep .ps-type,
-.purple-skin .d-navigation ul li.active a,
-.purple-skin span.mod-close,
-.purple-skin .blog-page .blog-details blockquote .icon,
-.purple-skin .single-post-pagination .post-pagination-center-grid a,
-.purple-skin .blog-page .blog-details .comment-area .all-comments article .comment-details .comment-meta .comment-left-meta .comment-date,
-.purple-skin .cn-info-icon i, .purple-skin .client-info h5,
-.purple-skin .listing-card-info-price{
- color:#7065ef;
-}
-
-.purple-skin .pagination>.active>a, .purple-skin .pagination>.active>a:focus, .purple-skin .pagination>.active>a:hover, .purple-skin .pagination>.active>span, .purple-skin .pagination>.active>span:focus, .purple-skin .pagination>.active>span:hover, .purple-skin .pagination>li>a:focus, .purple-skin .pagination>li>a:hover,
-.purple-skin .pagination li:first-child a,
-.purple-skin .range-slider .ui-slider .ui-slider-handle,
-.purple-skin .attributes li.submit-attri.theme-log a,
-.purple-skin .header-dark-transparent.header-fixed .attributes li.submit-attri a,
-.purple-skin .btn.btn-theme,
-.purple-skin .btn-theme-2:hover, .purple-skin .btn-theme-2:focus,
-.purple-skin .btn.btn-theme:hover, .purple-skin .btn.btn-theme:focus,
-.purple-skin .btn-outline-theme:hover, .purple-skin .btn-outline-theme:focus,
-.purple-skin .btn-outline-theme,
-.purple-skin .simple-search-wrap .pk-input-group .pk-subscribe-submit,
-.purple-skin .btn.search-btn-outline,
-.purple-skin .btn.search-btn-outline:hover, .purple-skin .btn.search-btn-outline:focus,
-.purple-skin .property-listing.property-1 .listing-detail-btn .more-btn,
-.purple-skin .nav-tabs .nav-item.show .nav-link, .purple-skin .nav-tabs .nav-link.active,
-.purple-skin .btn.pop-login,
-.purple-skin .single-widgets.widget_tags ul li a:hover, .purple-skin .single-widgets.widget_tags ul li a:focus{
- border-color:#7065ef;
-}
-
-.purple-skin li.login-attri.theme-log a {
- box-shadow:0 8px 5px rgba(112, 101, 239, 0.2);
- -webkit-box-shadow:0 8px 5px rgba(112, 101, 239, 0.2);
-}
-
-.purple-skin .btn.btn-theme-light, .purple-skin .theme-bg-light{
- background:rgba(112, 101, 239, 0.1);
-}
-
-/*-------------- Good Red Color Option --------------------*/
-.goodred-skin .theme-bg,.goodred-skin .property-search-type label:hover, .goodred-skin .property-search-type label.active,
-.goodred-skin li.login-attri.theme-log a,
-.goodred-skin .range-slider .ui-slider .ui-slider-handle,
-.goodred-skin .range-slider .ui-widget-header,
-.goodred-skin .pricing-bottom .btn-pricing:hover, .goodred-skin .pricing-bottom .btn-pricing:focus
-.goodred-skin .select2-container--default .select2-results__option--highlighted[aria-selected],
-.goodred-skin .pagination li:first-child a,
-.goodred-skin .btn.btn-theme,
-.goodred-skin .btn.btn-theme:hover, .goodred-skin .btn.btn-theme:focus,
-.goodred-skin .btn.search-btn,
-.goodred-skin .btn-theme-2:hover, .goodred-skin .btn-theme-2:focus,
-.goodred-skin .btn-outline-theme:hover, .goodred-skin .btn-outline-theme:focus,
-.goodred-skin .btn.search-btn,
-.goodred-skin .simple-search-wrap .pk-input-group .pk-subscribe-submit,
-.goodred-skin .btn.search-btn-outline:hover, .goodred-skin .btn.search-btn-outline:focus,
-.goodred-skin .property-listing.property-1 .listing-detail-btn .more-btn,
-.goodred-skin .home-slider-desc .read-more,
-.goodred-skin .nav-tabs .nav-item.show .nav-link, .goodred-skin .nav-tabs .nav-link.active,
-.goodred-skin .checkbox-custom:checked + .checkbox-custom-label:before,
-.goodred-skin .radio-custom:checked + .radio-custom-label:before,
-.goodred-skin .btn.pop-login,
-.goodred-skin .single-widgets.widget_search form button,
-.goodred-skin .single-widgets.widget_tags ul li a:hover, .goodred-skin .single-widgets.widget_tags ul li a:focus,
-.goodred-skin .pagination>.active>a, .goodred-skin .pagination>.active>a:focus, .goodred-skin .pagination>.active>a:hover, .goodred-skin .pagination>.active>span, .goodred-skin .pagination>.active>span:focus, .goodred-skin .pagination>.active>span:hover, .goodred-skin .pagination>li>a:focus, .goodred-skin .pagination>li>a:hover{
- background-color:#f40c43;
- background:#f40c43;
-}
-
-.goodred-skin a.link:hover, .goodred-skin a.link:focus, .goodred-skin a:hover, a:focus,
-.goodred-skin .theme-cl,
-.goodred-skin .btn.btn-theme-light,
-.goodred-skin .bl-continue,
-.goodred-skin .header-dark-transparent.header-fixed .attributes li.submit-attri a,
-.goodred-skin nav .menu li a.active,
-.goodred-skin nav .menu li.dropdown.open > a,
-.goodred-skin nav .menu .mg-menu li a i, .goodred-skin nav .menu li a:hover,
-.goodred-skin .recommended .pr-value,
-.goodred-skin .btn-outline-theme,
-.goodred-skin .attributes li.submit-attri.theme-log a,
-.goodred-skin .btn.search-btn-outline,
-.goodred-skin .dw-proprty-info li,
-.goodred-skin .ps-trep .ps-type,
-.goodred-skin .d-navigation ul li.active a,
-.goodred-skin span.mod-close,
-.goodred-skin .blog-page .blog-details blockquote .icon,
-.goodred-skin .single-post-pagination .post-pagination-center-grid a,
-.goodred-skin .blog-page .blog-details .comment-area .all-comments article .comment-details .comment-meta .comment-left-meta .comment-date,
-.goodred-skin .cn-info-icon i, .goodred-skin .client-info h5,
-.goodred-skin .listing-card-info-price{
- color:#f40c43;
-}
-
-.goodred-skin .pagination>.active>a, .goodred-skin .pagination>.active>a:focus, .goodred-skin .pagination>.active>a:hover, .goodred-skin .pagination>.active>span, .goodred-skin .pagination>.active>span:focus, .goodred-skin .pagination>.active>span:hover, .goodred-skin .pagination>li>a:focus, .goodred-skin .pagination>li>a:hover,
-.goodred-skin .pagination li:first-child a,
-.goodred-skin .range-slider .ui-slider .ui-slider-handle,
-.goodred-skin .attributes li.submit-attri.theme-log a,
-.goodred-skin .header-dark-transparent.header-fixed .attributes li.submit-attri a,
-.goodred-skin .btn.btn-theme,
-.goodred-skin .btn-theme-2:hover, .goodred-skin .btn-theme-2:focus,
-.goodred-skin .btn.btn-theme:hover, .goodred-skin .btn.btn-theme:focus,
-.goodred-skin .btn-outline-theme:hover, .goodred-skin .btn-outline-theme:focus,
-.goodred-skin .btn-outline-theme,
-.goodred-skin .simple-search-wrap .pk-input-group .pk-subscribe-submit,
-.goodred-skin .btn.search-btn-outline,
-.goodred-skin .btn.search-btn-outline:hover, .goodred-skin .btn.search-btn-outline:focus,
-.goodred-skin .property-listing.property-1 .listing-detail-btn .more-btn,
-.goodred-skin .nav-tabs .nav-item.show .nav-link, .goodred-skin .nav-tabs .nav-link.active,
-.goodred-skin .btn.pop-login,
-.goodred-skin .single-widgets.widget_tags ul li a:hover, .goodred-skin .single-widgets.widget_tags ul li a:focus{
- border-color:#f40c43;
-}
-
-.goodred-skin li.login-attri.theme-log a {
- box-shadow:0 8px 5px rgba(244, 12, 67,0.2);
- -webkit-box-shadow:0 8px 5px rgba(244, 12, 67, 0.2);
-}
-
-.goodred-skin .btn.btn-theme-light, .goodred-skin .theme-bg-light{
- background:rgba(244, 12, 67,0.1);
-}
-
-/*-------------- Good Green Color Option --------------------*/
-.goodgreen-skin .theme-bg,.goodgreen-skin .property-search-type label:hover, .goodgreen-skin .property-search-type label.active,
-.goodgreen-skin li.login-attri.theme-log a,
-.goodgreen-skin .range-slider .ui-slider .ui-slider-handle,
-.goodgreen-skin .range-slider .ui-widget-header,
-.goodgreen-skin .pricing-bottom .btn-pricing:hover, .goodgreen-skin .pricing-bottom .btn-pricing:focus
-.goodgreen-skin .select2-container--default .select2-results__option--highlighted[aria-selected],
-.goodgreen-skin .pagination li:first-child a,
-.goodgreen-skin .btn.btn-theme,
-.goodgreen-skin .btn.btn-theme:hover, .goodgreen-skin .btn.btn-theme:focus,
-.goodgreen-skin .btn.search-btn,
-.goodgreen-skin .btn-theme-2:hover, .goodgreen-skin .btn-theme-2:focus,
-.goodgreen-skin .btn-outline-theme:hover, .goodgreen-skin .btn-outline-theme:focus,
-.goodgreen-skin .btn.search-btn,
-.goodgreen-skin .simple-search-wrap .pk-input-group .pk-subscribe-submit,
-.goodgreen-skin .btn.search-btn-outline:hover, .goodgreen-skin .btn.search-btn-outline:focus,
-.goodgreen-skin .property-listing.property-1 .listing-detail-btn .more-btn,
-.goodgreen-skin .home-slider-desc .read-more,
-.goodgreen-skin .nav-tabs .nav-item.show .nav-link, .goodgreen-skin .nav-tabs .nav-link.active,
-.goodgreen-skin .checkbox-custom:checked + .checkbox-custom-label:before,
-.goodgreen-skin .radio-custom:checked + .radio-custom-label:before,
-.goodgreen-skin .btn.pop-login,
-.goodgreen-skin .single-widgets.widget_search form button,
-.goodgreen-skin .single-widgets.widget_tags ul li a:hover, .goodgreen-skin .single-widgets.widget_tags ul li a:focus,
-.goodgreen-skin .pagination>.active>a, .goodgreen-skin .pagination>.active>a:focus, .goodgreen-skin .pagination>.active>a:hover, .goodgreen-skin .pagination>.active>span, .goodgreen-skin .pagination>.active>span:focus, .goodgreen-skin .pagination>.active>span:hover, .goodgreen-skin .pagination>li>a:focus, .goodgreen-skin .pagination>li>a:hover{
- background-color:#19b521;
- background:#19b521;
-}
-
-.goodgreen-skin a.link:hover, .goodgreen-skin a.link:focus, .goodgreen-skin a:hover, a:focus,
-.goodgreen-skin .theme-cl,
-.goodgreen-skin .btn.btn-theme-light,
-.goodgreen-skin .bl-continue,
-.goodgreen-skin .header-dark-transparent.header-fixed .attributes li.submit-attri a,
-.goodgreen-skin nav .menu li a.active,
-.goodgreen-skin nav .menu li.dropdown.open > a,
-.goodgreen-skin nav .menu .mg-menu li a i, .goodgreen-skin nav .menu li a:hover,
-.goodgreen-skin .recommended .pr-value,
-.goodgreen-skin .btn-outline-theme,
-.goodgreen-skin .attributes li.submit-attri.theme-log a,
-.goodgreen-skin .btn.search-btn-outline,
-.goodgreen-skin .dw-proprty-info li,
-.goodgreen-skin .ps-trep .ps-type,
-.goodgreen-skin .d-navigation ul li.active a,
-.goodgreen-skin span.mod-close,
-.goodgreen-skin .blog-page .blog-details blockquote .icon,
-.goodgreen-skin .single-post-pagination .post-pagination-center-grid a,
-.goodgreen-skin .blog-page .blog-details .comment-area .all-comments article .comment-details .comment-meta .comment-left-meta .comment-date,
-.goodgreen-skin .cn-info-icon i, .goodgreen-skin .client-info h5,
-.goodgreen-skin .listing-card-info-price{
- color:#19b521;
-}
-
-.goodgreen-skin .pagination>.active>a, .goodgreen-skin .pagination>.active>a:focus, .goodgreen-skin .pagination>.active>a:hover, .goodgreen-skin .pagination>.active>span, .goodgreen-skin .pagination>.active>span:focus, .goodgreen-skin .pagination>.active>span:hover, .goodgreen-skin .pagination>li>a:focus, .goodgreen-skin .pagination>li>a:hover,
-.goodgreen-skin .pagination li:first-child a,
-.goodgreen-skin .range-slider .ui-slider .ui-slider-handle,
-.goodgreen-skin .attributes li.submit-attri.theme-log a,
-.goodgreen-skin .header-dark-transparent.header-fixed .attributes li.submit-attri a,
-.goodgreen-skin .btn.btn-theme,
-.goodgreen-skin .btn-theme-2:hover, .goodgreen-skin .btn-theme-2:focus,
-.goodgreen-skin .btn.btn-theme:hover, .goodgreen-skin .btn.btn-theme:focus,
-.goodgreen-skin .btn-outline-theme:hover, .goodgreen-skin .btn-outline-theme:focus,
-.goodgreen-skin .btn-outline-theme,
-.goodgreen-skin .simple-search-wrap .pk-input-group .pk-subscribe-submit,
-.goodgreen-skin .btn.search-btn-outline,
-.goodgreen-skin .btn.search-btn-outline:hover, .goodgreen-skin .btn.search-btn-outline:focus,
-.goodgreen-skin .property-listing.property-1 .listing-detail-btn .more-btn,
-.goodgreen-skin .nav-tabs .nav-item.show .nav-link, .goodgreen-skin .nav-tabs .nav-link.active,
-.goodgreen-skin .btn.pop-login,
-.goodgreen-skin .single-widgets.widget_tags ul li a:hover, .goodgreen-skin .single-widgets.widget_tags ul li a:focus{
- border-color:#19b521;
-}
-
-.goodgreen-skin li.login-attri.theme-log a {
- box-shadow:0 8px 5px rgba(25, 181, 33, 0.2);
- -webkit-box-shadow:0 8px 5px rgba(25, 181, 33, 0.2);
-}
-
-.goodgreen-skin .btn.btn-theme-light, .goodgreen-skin .theme-bg-light{
- background:rgba(25, 181, 33, 0.1);
-}
-
-/*-------------- Blue 2 Color Option --------------------*/
-.blue2-skin .theme-bg,.blue2-skin .property-search-type label:hover, .blue2-skin .property-search-type label.active,
-.blue2-skin li.login-attri.theme-log a,
-.blue2-skin .range-slider .ui-slider .ui-slider-handle,
-.blue2-skin .range-slider .ui-widget-header,
-.blue2-skin .pricing-bottom .btn-pricing:hover, .blue2-skin .pricing-bottom .btn-pricing:focus
-.blue2-skin .select2-container--default .select2-results__option--highlighted[aria-selected],
-.blue2-skin .pagination li:first-child a,
-.blue2-skin .btn.btn-theme,
-.blue2-skin .btn.btn-theme:hover, .blue2-skin .btn.btn-theme:focus,
-.blue2-skin .btn.search-btn,
-.blue2-skin .btn-theme-2:hover, .blue2-skin .btn-theme-2:focus,
-.blue2-skin .btn-outline-theme:hover, .blue2-skin .btn-outline-theme:focus,
-.blue2-skin .btn.search-btn,
-.blue2-skin .simple-search-wrap .pk-input-group .pk-subscribe-submit,
-.blue2-skin .btn.search-btn-outline:hover, .blue2-skin .btn.search-btn-outline:focus,
-.blue2-skin .property-listing.property-1 .listing-detail-btn .more-btn,
-.blue2-skin .home-slider-desc .read-more,
-.blue2-skin .nav-tabs .nav-item.show .nav-link, .blue2-skin .nav-tabs .nav-link.active,
-.blue2-skin .checkbox-custom:checked + .checkbox-custom-label:before,
-.blue2-skin .radio-custom:checked + .radio-custom-label:before,
-.blue2-skin .btn.pop-login,
-.blue2-skin .single-widgets.widget_search form button,
-.blue2-skin .single-widgets.widget_tags ul li a:hover, .blue2-skin .single-widgets.widget_tags ul li a:focus,
-.blue2-skin .pagination>.active>a, .blue2-skin .pagination>.active>a:focus, .blue2-skin .pagination>.active>a:hover, .blue2-skin .pagination>.active>span, .blue2-skin .pagination>.active>span:focus, .blue2-skin .pagination>.active>span:hover, .blue2-skin .pagination>li>a:focus, .blue2-skin .pagination>li>a:hover{
- background-color:#0176ff;
- background:#0176ff;
-}
-
-.blue2-skin a.link:hover, .blue2-skin a.link:focus, .blue2-skin a:hover, a:focus,
-.blue2-skin .theme-cl,
-.blue2-skin .btn.btn-theme-light,
-.blue2-skin .bl-continue,
-.blue2-skin .header-dark-transparent.header-fixed .attributes li.submit-attri a,
-.blue2-skin nav .menu li a.active,
-.blue2-skin nav .menu li.dropdown.open > a,
-.blue2-skin nav .menu .mg-menu li a i, .blue2-skin nav .menu li a:hover,
-.blue2-skin .recommended .pr-value,
-.blue2-skin .btn-outline-theme,
-.blue2-skin .attributes li.submit-attri.theme-log a,
-.blue2-skin .btn.search-btn-outline,
-.blue2-skin .dw-proprty-info li,
-.blue2-skin .ps-trep .ps-type,
-.blue2-skin .d-navigation ul li.active a,
-.blue2-skin span.mod-close,
-.blue2-skin .blog-page .blog-details blockquote .icon,
-.blue2-skin .single-post-pagination .post-pagination-center-grid a,
-.blue2-skin .blog-page .blog-details .comment-area .all-comments article .comment-details .comment-meta .comment-left-meta .comment-date,
-.blue2-skin .cn-info-icon i, .blue2-skin .client-info h5,
-.blue2-skin .listing-card-info-price{
- color:#0176ff;
-}
-
-.blue2-skin .pagination>.active>a, .blue2-skin .pagination>.active>a:focus, .blue2-skin .pagination>.active>a:hover, .blue2-skin .pagination>.active>span, .blue2-skin .pagination>.active>span:focus, .blue2-skin .pagination>.active>span:hover, .blue2-skin .pagination>li>a:focus, .blue2-skin .pagination>li>a:hover,
-.blue2-skin .pagination li:first-child a,
-.blue2-skin .range-slider .ui-slider .ui-slider-handle,
-.blue2-skin .attributes li.submit-attri.theme-log a,
-.blue2-skin .header-dark-transparent.header-fixed .attributes li.submit-attri a,
-.blue2-skin .btn.btn-theme,
-.blue2-skin .btn-theme-2:hover, .blue2-skin .btn-theme-2:focus,
-.blue2-skin .btn.btn-theme:hover, .blue2-skin .btn.btn-theme:focus,
-.blue2-skin .btn-outline-theme:hover, .blue2-skin .btn-outline-theme:focus,
-.blue2-skin .btn-outline-theme,
-.blue2-skin .simple-search-wrap .pk-input-group .pk-subscribe-submit,
-.blue2-skin .btn.search-btn-outline,
-.blue2-skin .btn.search-btn-outline:hover, .blue2-skin .btn.search-btn-outline:focus,
-.blue2-skin .property-listing.property-1 .listing-detail-btn .more-btn,
-.blue2-skin .nav-tabs .nav-item.show .nav-link, .blue2-skin .nav-tabs .nav-link.active,
-.blue2-skin .btn.pop-login,
-.blue2-skin .single-widgets.widget_tags ul li a:hover, .blue2-skin .single-widgets.widget_tags ul li a:focus{
- border-color:#0176ff;
-}
-
-.blue2-skin li.login-attri.theme-log a {
- box-shadow:0 8px 5px rgba(1, 118, 255,0 .2);
- -webkit-box-shadow:0 8px 5px rgba(1, 118, 255, 0.2);
-}
-
-.blue2-skin .btn.btn-theme-light, .blue2-skin .theme-bg-light{
- background:rgba(1, 118, 255,0.1);
-}
\ No newline at end of file
diff --git a/src/assets/css_header/fonts/Flaticon.eot b/src/assets/css_header/fonts/Flaticon.eot
deleted file mode 100644
index 9eab3dd8c4c883d0996dbc18a7800ae9222a0c42..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 9396
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
diff --git a/src/assets/css_header/fonts/Flaticon.svg b/src/assets/css_header/fonts/Flaticon.svg
deleted file mode 100644
index 9f303f7..0000000
--- a/src/assets/css_header/fonts/Flaticon.svg
+++ /dev/null
@@ -1,361 +0,0 @@
-
-
-
-
-
-Created by FontForge 20120731 at Wed Jun 22 15:07:37 2016
- By root
-Created by root with FontForge 2.0 (http://fontforge.sf.net)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/assets/css_header/fonts/Flaticon.ttf b/src/assets/css_header/fonts/Flaticon.ttf
deleted file mode 100644
index 9fdaf5d0d9a1aeb65643c8b05500e0fd7fdcda91..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 9220
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
T5HqJD^S5J2omjVk&
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