Commit e14d56c1 by Adarsh K

changes

parents 436f9118 d332cebb
{ {
"name": "getme", "name": "getme",
"version": "0.0.1", "version": "0.0.1",
"author": "Techware Software Solutions Pvt Ltd", "author": "Techware Software Solutions Pvt Ltd",
"homepage": "https://techware.com/", "homepage": "https://techware.com/",
"scripts": { "scripts": {
"ng": "ng", "ng": "ng",
"start": "ng serve", "start": "ng serve",
"build": "ng build", "build": "ng build",
"test": "ng test", "test": "ng test",
"lint": "ng lint", "lint": "ng lint",
"e2e": "ng e2e" "e2e": "ng e2e"
},
"private": true,
"dependencies": {
"@agm/core": "^1.1.0",
"@angular/animations": "^8.2.14",
"@angular/common": "~8.1.2",
"@angular/compiler": "~8.1.2",
"@angular/core": "~8.1.2",
"@angular/fire": "^5.3.0",
"@angular/forms": "~8.1.2",
"@angular/platform-browser": "~8.1.2",
"@angular/platform-browser-dynamic": "~8.1.2",
"@angular/router": "~8.1.2",
"@ionic-native/call-number": "^5.21.5",
"@ionic-native/core": "^5.19.1",
"@ionic-native/geolocation": "^5.19.1",
"@ionic-native/google-plus": "^5.19.1",
"@ionic-native/native-geocoder": "^5.19.1",
"@ionic-native/social-sharing": "^5.20.0",
"@ionic-native/splash-screen": "^5.19.1",
"@ionic-native/status-bar": "^5.19.1",
"@ionic/angular": "^4.11.8",
"@ionic/storage": "^2.2.0",
"@types/googlemaps": "^3.39.2",
"agm-direction": "^0.7.9",
"call-number": "^1.0.1",
"cordova-android": "8.0.0",
"cordova-plugin-device": "^2.0.3",
"cordova-plugin-geolocation": "^4.0.2",
"cordova-plugin-googleplus": "^8.2.1",
"cordova-plugin-ionic-keyboard": "^2.2.0",
"cordova-plugin-ionic-webview": "^4.1.3",
"cordova-plugin-nativegeocoder": "^3.2.2",
"cordova-plugin-splashscreen": "^5.0.3",
"cordova-plugin-statusbar": "^2.4.3",
"cordova-plugin-whitelist": "^1.3.4",
"cordova-plugin-x-socialsharing": "^5.6.3",
"cordova-sqlite-storage": "^3.4.1",
"core-js": "^2.6.11",
"es6-promise-plugin": "^4.2.2",
"firebase": "^6.6.2",
"rxjs": "^6.5.4",
"rxjs-compat": "^6.5.4",
"tslib": "^1.9.0",
"zone.js": "~0.9.1"
},
"devDependencies": {
"@angular-devkit/architect": "~0.801.2",
"@angular-devkit/build-angular": "~0.801.2",
"@angular-devkit/core": "~8.1.2",
"@angular-devkit/schematics": "~8.1.2",
"@angular/cli": "~8.1.2",
"@angular/compiler": "~8.1.2",
"@angular/compiler-cli": "~8.1.2",
"@angular/language-service": "~8.1.2",
"@ionic/angular-toolkit": "~2.0.0",
"@types/jasmine": "~3.3.8",
"@types/jasminewd2": "^2.0.8",
"@types/node": "~8.9.4",
"codelyzer": "^5.2.1",
"jasmine-core": "~3.4.0",
"jasmine-spec-reporter": "~4.2.1",
"karma": "~4.1.0",
"karma-chrome-launcher": "~2.2.0",
"karma-coverage-istanbul-reporter": "~2.0.1",
"karma-jasmine": "~2.0.1",
"karma-jasmine-html-reporter": "^1.5.1",
"protractor": "~5.4.0",
"ts-node": "~7.0.0",
"tslint": "~5.15.0",
"typescript": "~3.4.3"
},
"description": "An Ionic project",
"cordova": {
"plugins": {
"cordova-plugin-whitelist": {},
"cordova-plugin-statusbar": {},
"cordova-plugin-device": {},
"cordova-plugin-splashscreen": {},
"cordova-plugin-ionic-webview": {
"ANDROID_SUPPORT_ANNOTATIONS_VERSION": "27.+"
},
"cordova-plugin-ionic-keyboard": {},
"cordova-plugin-geolocation": {
"GEOLOCATION_USAGE_DESCRIPTION": "To locate you"
},
"cordova-plugin-nativegeocoder": {},
"cordova-sqlite-storage": {},
"cordova-plugin-googleplus": {
"REVERSED_CLIENT_ID": "com.googleusercontent.apps.949385251610-a6lrfr6uhr73991e38t3t013jj3v56a9",
"PLAY_SERVICES_VERSION": "15.0.1"
},
"cordova-plugin-x-socialsharing": {
"ANDROID_SUPPORT_V4_VERSION": "24.1.1+"
},
"mx.ferreyra.callnumber": {}
}, },
"private": true, "platforms": [
"dependencies": { "android"
"@agm/core": "^1.1.0", ]
"@angular/animations": "^8.2.14", }
"@angular/common": "~8.1.2",
"@angular/compiler": "~8.1.2",
"@angular/core": "~8.1.2",
"@angular/fire": "^5.3.0",
"@angular/forms": "~8.1.2",
"@angular/platform-browser": "~8.1.2",
"@angular/platform-browser-dynamic": "~8.1.2",
"@angular/router": "~8.1.2",
"@ionic-native/core": "^5.19.1",
"@ionic-native/geolocation": "^5.19.1",
"@ionic-native/google-plus": "^5.19.1",
"@ionic-native/native-geocoder": "^5.19.1",
"@ionic-native/social-sharing": "^5.20.0",
"@ionic-native/splash-screen": "^5.19.1",
"@ionic-native/status-bar": "^5.19.1",
"@ionic/angular": "^4.11.8",
"@ionic/storage": "^2.2.0",
"@types/googlemaps": "^3.39.2",
"agm-direction": "^0.7.9",
"cordova-android": "8.0.0",
"cordova-plugin-device": "^2.0.3",
"cordova-plugin-geolocation": "^4.0.2",
"cordova-plugin-googleplus": "^8.2.1",
"cordova-plugin-ionic-keyboard": "^2.2.0",
"cordova-plugin-ionic-webview": "^4.1.3",
"cordova-plugin-nativegeocoder": "^3.2.2",
"cordova-plugin-splashscreen": "^5.0.3",
"cordova-plugin-statusbar": "^2.4.3",
"cordova-plugin-whitelist": "^1.3.4",
"cordova-plugin-x-socialsharing": "^5.6.3",
"cordova-sqlite-storage": "^3.4.1",
"core-js": "^2.6.11",
"es6-promise-plugin": "^4.2.2",
"firebase": "^6.6.2",
"rxjs": "^6.5.4",
"rxjs-compat": "^6.5.4",
"tslib": "^1.9.0",
"zone.js": "~0.9.1"
},
"devDependencies": {
"@angular-devkit/architect": "~0.801.2",
"@angular-devkit/build-angular": "~0.801.2",
"@angular-devkit/core": "~8.1.2",
"@angular-devkit/schematics": "~8.1.2",
"@angular/cli": "~8.1.2",
"@angular/compiler": "~8.1.2",
"@angular/compiler-cli": "~8.1.2",
"@angular/language-service": "~8.1.2",
"@ionic/angular-toolkit": "~2.0.0",
"@types/jasmine": "~3.3.8",
"@types/jasminewd2": "^2.0.8",
"@types/node": "~8.9.4",
"codelyzer": "^5.2.1",
"jasmine-core": "~3.4.0",
"jasmine-spec-reporter": "~4.2.1",
"karma": "~4.1.0",
"karma-chrome-launcher": "~2.2.0",
"karma-coverage-istanbul-reporter": "~2.0.1",
"karma-jasmine": "~2.0.1",
"karma-jasmine-html-reporter": "^1.5.1",
"protractor": "~5.4.0",
"ts-node": "~7.0.0",
"tslint": "~5.15.0",
"typescript": "~3.4.3"
},
"description": "An Ionic project",
"cordova": {
"plugins": {
"cordova-plugin-whitelist": {},
"cordova-plugin-statusbar": {},
"cordova-plugin-device": {},
"cordova-plugin-splashscreen": {},
"cordova-plugin-ionic-webview": {
"ANDROID_SUPPORT_ANNOTATIONS_VERSION": "27.+"
},
"cordova-plugin-ionic-keyboard": {},
"cordova-plugin-geolocation": {
"GEOLOCATION_USAGE_DESCRIPTION": "To locate you"
},
"cordova-plugin-nativegeocoder": {},
"cordova-sqlite-storage": {},
"cordova-plugin-googleplus": {
"REVERSED_CLIENT_ID": "com.googleusercontent.apps.949385251610-a6lrfr6uhr73991e38t3t013jj3v56a9",
"PLAY_SERVICES_VERSION": "15.0.1"
},
"cordova-plugin-x-socialsharing": {
"ANDROID_SUPPORT_V4_VERSION": "24.1.1+"
}
},
"platforms": [
"android"
]
}
} }
\ No newline at end of file
...@@ -78,7 +78,7 @@ ...@@ -78,7 +78,7 @@
input { input {
border: 1px solid rgba(215, 213, 228, 1); border: 1px solid rgba(215, 213, 228, 1);
background: transparent; background: transparent;
color: rgba(215, 213, 228, 1); color: #000;
width: 100%; width: 100%;
height: 45px; height: 45px;
text-align: left; text-align: left;
...@@ -86,6 +86,15 @@ ...@@ -86,6 +86,15 @@
font-size: 16px; font-size: 16px;
padding-left: 15px; padding-left: 15px;
padding-right: 15px; padding-right: 15px;
outline: none;
transition: all .4s ease-in-out;
&::placeholder {
color: rgba(215, 213, 228, 1);
}
&:focus {
border: 1px solid #f3d09f;
box-shadow: 3px 3px 6px 0px rgba(202, 154, 83, 0.11);
}
} }
.login_btn { .login_btn {
width: 100%; width: 100%;
......
...@@ -78,7 +78,7 @@ ...@@ -78,7 +78,7 @@
input { input {
border: 1px solid rgba(215, 213, 228, 1); border: 1px solid rgba(215, 213, 228, 1);
background: transparent; background: transparent;
color: rgba(215, 213, 228, 1); color: #000;
width: 100%; width: 100%;
height: 45px; height: 45px;
text-align: left; text-align: left;
...@@ -87,6 +87,15 @@ ...@@ -87,6 +87,15 @@
padding-left: 15px; padding-left: 15px;
padding-right: 15px; padding-right: 15px;
text-align: center; text-align: center;
outline: none;
transition: all .4s ease-in-out;
&::placeholder {
color: rgba(215, 213, 228, 1);
}
&:focus {
border: 1px solid #f3d09f;
box-shadow: 3px 3px 6px 0px rgba(202, 154, 83, 0.11);
}
} }
.login_btn { .login_btn {
width: 100%; width: 100%;
......
...@@ -95,13 +95,36 @@ const routes: Routes = [ ...@@ -95,13 +95,36 @@ const routes: Routes = [
{ {
path: 'searchmodal', path: 'searchmodal',
loadChildren: './searchmodal/searchmodal.module#SearchmodalPageModule' loadChildren: './searchmodal/searchmodal.module#SearchmodalPageModule'
}, { path: 'noresult', loadChildren: './noresult/noresult.module#NoresultPageModule' }, },
{ path: 'feedback', loadChildren: './feedback/feedback.module#FeedbackPageModule' }, {
{ path: 'address', loadChildren: './address/address.module#AddressPageModule' }, path: 'noresult',
{ path: 'success', loadChildren: './success/success.module#SuccessPageModule' }, loadChildren: './noresult/noresult.module#NoresultPageModule'
{ path: 'failed', loadChildren: './failed/failed.module#FailedPageModule' }, },
{ path: 'preference', loadChildren: './preference/preference.module#PreferencePageModule' } {
path: 'feedback',
loadChildren: './feedback/feedback.module#FeedbackPageModule'
},
{
path: 'address',
loadChildren: './address/address.module#AddressPageModule'
},
{
path: 'success',
loadChildren: './success/success.module#SuccessPageModule'
},
{ path: 'failed', loadChildren: './failed/failed.module#FailedPageModule' },
{
path: 'preference',
loadChildren: './preference/preference.module#PreferencePageModule'
},
{
path: 'contact',
loadChildren: './contact/contact.module#ContactPageModule'
},
{
path: 'changeaddress',
loadChildren: './changeaddress/changeaddress.module#ChangeaddressPageModule'
}
]; ];
@NgModule({ @NgModule({
imports: [ imports: [
......
...@@ -114,7 +114,10 @@ export class AppComponent { ...@@ -114,7 +114,10 @@ export class AppComponent {
'wishlist', 'wishlist',
'preference', 'preference',
'changedetails', 'changedetails',
'trackorder' 'trackorder',
'changeaddress',
'changedetails',
'contact'
]; ];
const currentUrl = this.router.url.split('/'); const currentUrl = this.router.url.split('/');
const index = restrictedUrl.findIndex(x => x === currentUrl[1]); const index = restrictedUrl.findIndex(x => x === currentUrl[1]);
......
...@@ -29,7 +29,7 @@ import { DeliverypopPageModule } from './deliverypop/deliverypop.module'; ...@@ -29,7 +29,7 @@ import { DeliverypopPageModule } from './deliverypop/deliverypop.module';
import { FormsModule } from '@angular/forms'; import { FormsModule } from '@angular/forms';
import { SearchmodalPageModule } from './searchmodal/searchmodal.module'; import { SearchmodalPageModule } from './searchmodal/searchmodal.module';
import { SocialSharing } from '@ionic-native/social-sharing/ngx'; import { SocialSharing } from '@ionic-native/social-sharing/ngx';
import { CallNumber } from '@ionic-native/call-number/ngx';
@NgModule({ @NgModule({
declarations: [AppComponent], declarations: [AppComponent],
entryComponents: [], entryComponents: [],
...@@ -48,6 +48,7 @@ import { SocialSharing } from '@ionic-native/social-sharing/ngx'; ...@@ -48,6 +48,7 @@ import { SocialSharing } from '@ionic-native/social-sharing/ngx';
FormsModule FormsModule
], ],
providers: [ providers: [
CallNumber,
StatusBar, StatusBar,
SplashScreen, SplashScreen,
Geolocation, Geolocation,
......
...@@ -206,27 +206,30 @@ ...@@ -206,27 +206,30 @@
.coupon_code { .coupon_code {
padding-top: 20px; padding-top: 20px;
padding-bottom: 50px; padding-bottom: 50px;
border-bottom: 1px solid rgba(176, 174, 199, 1); border-bottom: 1px solid #b0aec7;
display: flex;
justify-content: space-between;
input { input {
width: calc(100% - 50px); width: 75%;
border: 1px solid rgba(176, 174, 199, 1); border: 1px solid #b0aec7;
border-radius: 20px; border-radius: 20px;
height: 35px; height: 35px;
padding-left: 20px; padding-left: 20px;
font-weight: 900; font-weight: 900;
color: rgba(215, 213, 228, 1); color: #29285b;
outline: none;
transition: all .4s ease-in-out;
&::placeholder { &::placeholder {
color: rgba(215, 213, 228, 1); color: rgba(215, 213, 228, 1);
outline: none;
} }
&:focus { &:focus {
color: rgba(215, 213, 228, 1); border: 1px solid #f3d09f;
outline: none; box-shadow: 3px 3px 6px 0px rgba(202, 154, 83, 0.11);
} }
} }
.add_btn { .add_btn {
color: #29285b; color: #29285b;
width: 50px; width: 25%;
height: 35px; height: 35px;
background: transparent; background: transparent;
font-size: 17px; font-size: 17px;
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
<img src="../assets/Group22_2.png"> <img src="../assets/Group22_2.png">
</button> </button>
<div class="nav_title floatLeft"> <div class="nav_title floatLeft">
<input class="search_bar" placeholder="Search here.. eg:shirts, retailers etc..."> </div> <input class="search_bar" placeholder="Search here.. eg:shirts, retailers etc..." (click)="searchModal()"> </div>
<button class="nav_btn nav_search floatRight"> <button class="nav_btn nav_search floatRight">
</button> </button>
<div class="clear"></div> <div class="clear"></div>
......
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { FormsModule } from '@angular/forms';
import { Routes, RouterModule } from '@angular/router';
import { IonicModule } from '@ionic/angular';
import { ChangeaddressPage } from './changeaddress.page';
import { AgmCoreModule } from '@agm/core';
import { AgmDirectionModule } from 'agm-direction';
const routes: Routes = [
{
path: '',
component: ChangeaddressPage
}
];
@NgModule({
imports: [
CommonModule,
FormsModule,
IonicModule,
AgmDirectionModule,
AgmCoreModule.forRoot({
apiKey: 'AIzaSyBn6hOlr6YHcZAmbptlsmbhvH5iQllWflE'
}),
RouterModule.forChild(routes)
],
declarations: [ChangeaddressPage]
})
export class ChangeaddressPageModule {}
<div class="nav_header">
<button class="nav_btn nav_back floatLeft" (click)="goBack()">
<img src="../assets/Group17_2.png" />
</button>
<div class="nav_title floatLeft">
<h4>Change Address</h4>
</div>
<div class="clear"></div>
</div>
<ion-content>
<div class="nearby_map">
<agm-map [latitude]="latitude" [longitude]="longitude" [zoom]="8" [backgroundColor]="'rgba(29, 27, 130,0.2)'">
<agm-marker [latitude]="latitude" [longitude]="longitude" [markerDraggable]="true" (dragEnd)="markerDragEnd($event)"></agm-marker>
</agm-map>
<form (ngSubmit)="onSubmit(addressForm.value); addressForm.reset()" #addressForm="ngForm" method="post" class="form-horizontal">
<div class="add_address_wrapper">
<h5>DELIVERY</h5>
<p>{{address}}</p>
<input [(ngModel)]="addressForm.building" name="building" #building="ngModel" name="building" required placeholder="House No./ Building No" />
<div class="md-errors-spacer" [hidden]="building.valid || landmark.pristine" class="ion-padding-start">
Building Name is required
</div>
<input [(ngModel)]="addressForm.landmark" name="landmark" #landmark="ngModel" name="landmark" required placeholder="Landmark" />
<div class="md-errors-spacer" [hidden]="landmark.valid || landmark.pristine" class="ion-padding-start">
Landmark is required
</div>
<ion-grid>
<ion-row>
<ion-col>
<h6>
<input class="styled-checkbox" id="styled-check-1" type="radio" value="Home" [(ngModel)]="addressForm.addressType" name="addressType" #addressType="ngModel" required />
<label for="styled-check-1"><span>Home</span></label>
</h6>
</ion-col>
<ion-col>
<h6>
<input class="styled-checkbox" id="styled-check-2" type="radio" value="Work" [(ngModel)]="addressForm.addressType" name="addressType" #addressType="ngModel" required />
<label for="styled-check-2"><span>Office</span></label>
</h6>
</ion-col>
<ion-col>
<h6>
<input class="styled-checkbox" id="styled-check-3" type="radio" value="Other" [(ngModel)]="addressForm.addressType" name="addressType" #addressType="ngModel" required />
<label for="styled-check-3"><span>Others</span></label>
</h6>
</ion-col>
</ion-row>
<div class="md-errors-spacer" [hidden]="addressType.valid || addressType.pristine" class="ion-padding-start">
Address Type is required
</div>
</ion-grid>
<button class="add_btn" type="submit" [disabled]="!addressForm.form.valid">
ADD
</button>
</div>
</form>
</div>
<div class="loader" *ngIf="loader">
<div class="lds-ripple">
<div></div>
<div></div>
</div>
</div>
</ion-content>
\ No newline at end of file
.nearby_map {
width: 100%;
height: 100vh;
.overlay {
position: absolute;
top: 0px;
left: 0px;
right: 0px;
bottom: 0px;
background: rgba(29, 27, 130, 0.2);
}
agm-map {
width: 100%;
height: 100%;
position: relative;
}
.click_marker {
min-width: 200px;
padding: 10px;
h5 {
margin: 0px;
padding: 0px;
}
p {
margin: 0px;
padding: 0px;
}
}
}
.add_address_wrapper {
position: fixed;
bottom: 0px;
left: 0px;
right: 0px;
padding: 20px;
border-top-left-radius: 15px;
border-top-right-radius: 15px;
background: #fff;
-webkit-box-shadow: 0px -2px 5px 0px rgba(0, 0, 0, 0.2);
-moz-box-shadow: 0px -2px 5px 0px rgba(0, 0, 0, 0.2);
box-shadow: 0px -2px 5px 0px rgba(0, 0, 0, 0.2);
h5 {
color: rgba(41, 40, 91, 1);
margin: 0px;
padding: 0px;
font-weight: 800;
}
input {
width: 100%;
height: 45px;
border: 1px solid #e1e0eb;
border-radius: 4px;
padding-left: 10px;
padding-right: 10px;
margin-bottom: 20px;
}
.add_btn {
width: 100%;
height: 45px;
background-color: #29285b;
color: #fff;
border-radius: 4px;
}
}
.styled-checkbox {
position: absolute; // take it out of document flow
opacity: 0; // hide it
&+label {
position: relative;
cursor: pointer;
padding: 0;
}
// Box.
&+label:before {
content: '';
margin-right: 10px;
display: inline-block;
vertical-align: text-top;
width: 20px;
height: 20px;
border-radius: 10px;
background: white;
border: 1px solid rgba(215, 213, 228, 1);
}
// Box hover
// Box checked
&:checked+label:before {
background: #29285b;
}
// Disabled state label.
&:disabled+label {
color: #b8b8b8;
cursor: auto;
}
// Disabled box.
&:disabled+label:before {
box-shadow: none;
background: #ddd;
}
// Checkmark. Could be replaced with an image
&:checked+label:after {
content: '';
position: absolute;
left: 6px;
top: 11px;
background: white;
width: 2px;
height: 2px;
box-shadow: 2px 0 0 white, 4px 0 0 white, 4px -2px 0 white, 4px -4px 0 white, 4px -6px 0 white, 4px -8px 0 white;
transform: rotate(45deg);
}
}
\ No newline at end of file
import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { ChangeaddressPage } from './changeaddress.page';
describe('ChangeaddressPage', () => {
let component: ChangeaddressPage;
let fixture: ComponentFixture<ChangeaddressPage>;
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [ ChangeaddressPage ],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
})
.compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(ChangeaddressPage);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});
import {
Component,
OnInit,
ViewChild,
ElementRef,
NgZone
} from '@angular/core';
import { Location } from '@angular/common';
import { Router, ActivatedRoute } from '@angular/router';
import { MapsAPILoader, MouseEvent } from '@agm/core';
import { Address } from './../../config/services/address';
import { AddressService } from './../../config/address.service';
import { ServiceService } from './../../config/service.service';
import { NgForm } from '@angular/forms';
import * as firebase from 'firebase';
@Component({
selector: 'app-changeaddress',
templateUrl: './changeaddress.page.html',
styleUrls: ['./changeaddress.page.scss']
})
export class ChangeaddressPage implements OnInit {
latitude: number;
longitude: number;
zoom: number;
address: string;
private geoCoder;
addressForm: NgForm;
addressData = new Address('', '', '', '', true, '', 0, '');
successState: boolean;
uid: string;
type: any;
loader: boolean;
public searchElementRef: ElementRef;
constructor(
private router: Router,
private route: ActivatedRoute,
private location: Location,
private mapsAPILoader: MapsAPILoader,
private ngZone: NgZone,
public addressService: AddressService,
public service: ServiceService
) {
this.successState = false;
this.type = 0;
const users = this.service.get('user').then(data => {
if (data) {
data = JSON.parse(data);
this.uid = data.uid;
}
});
this.service.get('type').then(data => {
this.type = data;
});
}
ngOnInit() {
// load Places Autocomplete
this.mapsAPILoader.load().then(() => {
this.setCurrentLocation();
this.geoCoder = new google.maps.Geocoder();
});
}
// google maps zoom level
private setCurrentLocation() {
if ('geolocation' in navigator) {
navigator.geolocation.getCurrentPosition(position => {
this.latitude = position.coords.latitude;
this.longitude = position.coords.longitude;
this.zoom = 8;
this.getAddress(this.latitude, this.longitude);
});
}
}
markerDragEnd($event: MouseEvent) {
console.log($event);
this.latitude = $event.coords.lat;
this.longitude = $event.coords.lng;
this.getAddress(this.latitude, this.longitude);
}
getAddress(latitude, longitude) {
this.geoCoder.geocode(
{ location: { lat: latitude, lng: longitude } },
(results, status) => {
console.log(results);
console.log(status);
if (status === 'OK') {
if (results[0]) {
this.zoom = 12;
this.address = results[0].formatted_address;
console.log(this.address);
} else {
window.alert('No results found');
}
} else {
window.alert('Geocoder failed due to: ' + status);
}
}
);
}
goToPage(path, data = null) {
this.router.navigateByUrl(path, { queryParams: data });
document.body.scrollTop = document.documentElement.scrollTop = 0;
}
goBack() {
window.history.back();
}
onSubmit(data: any) {
this.loader = true;
console.log(data);
const postData: Address = {
address: this.address,
addressType: data.addressType,
building: data.building,
landmark: data.landmark,
defaultVal: 0,
uid: this.uid,
latLng: new firebase.firestore.GeoPoint(this.latitude, this.longitude),
status: true
};
this.addressService.addressCreate(postData);
this.successState = true;
setTimeout(() => {
this.loader = false;
this.successState = false;
if (this.type === 1) {
this.service.set('type', 0);
this.router.navigateByUrl('home', { queryParams: null });
} else {
this.goBack();
}
}, 3000);
}
}
interface Marker {
lat: number;
lng: number;
label?: string;
draggable: boolean;
}
...@@ -22,7 +22,7 @@ ...@@ -22,7 +22,7 @@
input { input {
border: 1px solid rgba(215, 213, 228, 1); border: 1px solid rgba(215, 213, 228, 1);
background: transparent; background: transparent;
color: rgba(215, 213, 228, 1); color: #000;
width: 100%; width: 100%;
height: 45px; height: 45px;
text-align: center; text-align: center;
...@@ -30,6 +30,15 @@ ...@@ -30,6 +30,15 @@
font-size: 16px; font-size: 16px;
padding-left: 15px; padding-left: 15px;
padding-right: 15px; padding-right: 15px;
outline: none;
transition: all .4s ease-in-out;
&::placeholder {
color: rgba(215, 213, 228, 1);
}
&:focus {
border: 1px solid #f3d09f;
box-shadow: 3px 3px 6px 0px rgba(202, 154, 83, 0.11);
}
} }
.login_btn { .login_btn {
width: 100%; width: 100%;
......
...@@ -8,12 +8,21 @@ ...@@ -8,12 +8,21 @@
input { input {
border: 1px solid rgba(215, 213, 228, 1); border: 1px solid rgba(215, 213, 228, 1);
background: transparent; background: transparent;
color: rgba(215, 213, 228, 1); color: #000;
width: 100%; width: 100%;
height: 45px; height: 45px;
text-align: center; text-align: center;
border-radius: 8px; border-radius: 8px;
font-size: 16px; font-size: 16px;
outline: none;
transition: all .4s ease-in-out;
&::placeholder {
color: rgba(215, 213, 228, 1);
}
&:focus {
border: 1px solid #f3d09f;
box-shadow: 3px 3px 6px 0px rgba(202, 154, 83, 0.11);
}
} }
.login_btn { .login_btn {
width: 100%; width: 100%;
......
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { FormsModule } from '@angular/forms';
import { Routes, RouterModule } from '@angular/router';
import { IonicModule } from '@ionic/angular';
import { ContactPage } from './contact.page';
const routes: Routes = [
{
path: '',
component: ContactPage
}
];
@NgModule({
imports: [
CommonModule,
FormsModule,
IonicModule,
RouterModule.forChild(routes)
],
declarations: [ContactPage]
})
export class ContactPageModule {}
<div class="nav_header">
<button class="nav_btn nav_back floatLeft" (click)="goBack()">
<img src="../assets/Group17_2.png" />
</button>
<div class="nav_title floatLeft">
<h4>Send Us</h4>
</div>
<div class="clear"></div>
</div>
<ion-content>
<form novalidate #contactUsForm="ngForm" class="contact_wrapper" *ngIf="userData && contactData">
<div class="form_div">
<div class="row">
<p>Write Us</p>
<textarea required name="writeUs" [(ngModel)]="contactData.message" #writeUs="ngModel" class="form-control"
rows="8" placeholder="Type here.."></textarea>
<div class="md-errors-spacer" [hidden]="writeUs.valid || submitted == false" class="ion-padding-start">
This is required.
</div>
</div>
<div class="row">
<button (click)="onContactSubmit(contactUsForm)" class="login_btn">
SEND
</button>
</div>
<div class="row">
<span>or</span>
</div>
<div class="row">
<button (click)="callUs()" class="login_btn" [disabled]="submitted">
Call Us
</button>
</div>
</div>
</form>
</ion-content>
<div class="loader" *ngIf="contactService.loader">
<div class="lds-ripple">
<div></div>
<div></div>
</div>
</div>
\ No newline at end of file
.contact_wrapper {
width: 80%;
margin: 0 auto;
padding-top: 30px;
.form_div {
.row {
margin: 20px;
.form-control {
border: 1px solid rgba(215, 213, 228, 1);
background: transparent;
color: #333;
width: 100%;
border-radius: 8px;
font-size: 16px;
padding: 11px 15px;
resize: none;
&::placeholder {
color: rgba(215, 213, 228, 1);
}
}
.login_btn {
width: 100%;
background-color: #29285b;
color: #fff;
border-radius: 8px;
height: 45px;
font-size: 16px;
}
p {
text-align: left;
color: rgba(59, 57, 77, 1);
margin: 0px;
font-weight: bolder;
padding-bottom: 10px;
}
span {
opacity: 0.6;
text-align: center !important;
display: block;
}
}
}
}
import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { ContactPage } from './contact.page';
describe('ContactPage', () => {
let component: ContactPage;
let fixture: ComponentFixture<ContactPage>;
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [ ContactPage ],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
})
.compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(ContactPage);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});
import { Component, OnInit } from '@angular/core';
import { Location } from '@angular/common';
import { ContactData } from 'src/config/services/contact';
import { SubjectService } from '../../config/subject.service';
import { NgForm } from '@angular/forms';
import { ContactService } from 'src/config/contact.service';
import { ServiceService } from '../../config/service.service';
import { CallNumber } from '@ionic-native/call-number/ngx';
@Component({
selector: 'app-contact',
templateUrl: './contact.page.html',
styleUrls: ['./contact.page.scss']
})
export class ContactPage implements OnInit {
submitted = false;
userData: any;
contactData: ContactData = {
from: '',
message: '',
contactId: ''
};
constructor(
private location: Location,
public subjectService: SubjectService,
public contactService: ContactService,
public service: ServiceService,
private callNumber: CallNumber
) {
// Gets userdata
this.subjectService.getUserData().subscribe(userData => {
if (userData) {
this.userData = JSON.parse(userData);
this.contactData.from = JSON.parse(userData).emailId;
console.log(userData);
} else {
console.log(userData);
}
});
}
ngOnInit() { }
callUs() {
this.callNumber
.callNumber('+61411622880', true)
.then(res => console.log('Launched dialer!', res))
.catch(err => console.log('Error launching dialer', err));
}
onContactSubmit(form: NgForm) {
this.submitted = true;
console.log(form.value);
if (form.valid && form.value.message !== '') {
const contData = { ...this.contactData, from: this.userData.emailId };
this.contactService.contactCreate(contData);
} else {
console.log('form not valid');
this.submitted = false;
this.service.showToast('Invalid request!', 'top', 'my-error', 1000);
}
}
goBack() {
this.location.back();
}
}
// +61 411 622 880
.feedback_wrapper { .feedback_wrapper {
width: 80%; width: 80%;
margin: 0 auto; margin: 0 auto;
padding-top: 30px; padding-top: 30px;
.form_div { .form_div {
.row { .row {
margin-bottom: 20px; margin-bottom: 20px;
.form-control { .form-control {
border: 1px solid rgba(215, 213, 228, 1); border: 1px solid rgba(215, 213, 228, 1);
background: transparent; background: transparent;
color: #333; color: #000;
width: 100%; width: 100%;
border-radius: 8px; border-radius: 8px;
font-size: 16px; font-size: 16px;
padding: 11px 15px; padding: 11px 15px;
resize: none; resize: none;
&::placeholder { outline: none;
color: rgba(215, 213, 228, 1); transition: all .4s ease-in-out;
&::placeholder {
color: rgba(215, 213, 228, 1);
}
&:focus {
border: 1px solid #f3d09f;
box-shadow: 3px 3px 6px 0px rgba(202, 154, 83, 0.11);
}
}
.login_btn {
width: 100%;
background-color: #29285b;
color: #fff;
border-radius: 8px;
height: 45px;
font-size: 16px;
margin-bottom: 50px;
}
p {
text-align: left;
color: rgba(59, 57, 77, 1);
margin: 0px;
font-weight: bolder;
padding-bottom: 10px;
}
} }
}
.login_btn {
width: 100%;
background-color: #29285b;
color: #fff;
border-radius: 8px;
height: 45px;
font-size: 16px;
margin-bottom: 50px;
}
p {
text-align: left;
color: rgba(59, 57, 77, 1);
margin: 0px;
font-weight: bolder;
padding-bottom: 10px;
}
} }
} }
} \ No newline at end of file
...@@ -8,12 +8,21 @@ ...@@ -8,12 +8,21 @@
input { input {
border: 1px solid rgba(215, 213, 228, 1); border: 1px solid rgba(215, 213, 228, 1);
background: transparent; background: transparent;
color: rgba(215, 213, 228, 1); color: #000;
width: 100%; width: 100%;
height: 45px; height: 45px;
text-align: center; text-align: center;
border-radius: 8px; border-radius: 8px;
font-size: 16px; font-size: 16px;
outline: none;
transition: all .4s ease-in-out;
&::placeholder {
color: rgba(215, 213, 228, 1);
}
&:focus {
border: 1px solid #f3d09f;
box-shadow: 3px 3px 6px 0px rgba(202, 154, 83, 0.11);
}
} }
.login_btn { .login_btn {
width: 100%; width: 100%;
......
...@@ -63,8 +63,8 @@ ...@@ -63,8 +63,8 @@
<div class="home_sub_header"> <div class="home_sub_header">
<span class="floatLeft">Nearby Shopping Centers</span> <span class="floatLeft">Nearby Shopping Centers</span>
<span class="floatRight"> <span class="floatRight">
<div class="nearby_icon" (click)="goToPage('nearby')"></div> <div class="nearby_icon" (click)="goToPage('nearby')"></div>
</span> </span>
<div class="clear"></div> <div class="clear"></div>
</div> </div>
<div class="nearby_shop_list"> <div class="nearby_shop_list">
...@@ -77,8 +77,8 @@ ...@@ -77,8 +77,8 @@
<h5> <h5>
<span class="floatLeft">{{center.centerName}}</span> <span class="floatLeft">{{center.centerName}}</span>
<span class="floatRight">0 <span class="floatRight">0
<img src="../assets/Path61_2.png" /> <img src="../assets/Path61_2.png" />
</span> </span>
<div class="clear"></div> <div class="clear"></div>
</h5> </h5>
<p>{{center.description}}</p> <p>{{center.description}}</p>
...@@ -105,8 +105,8 @@ ...@@ -105,8 +105,8 @@
<div *ngIf="isShow" [@slideInOut]> <div *ngIf="isShow" [@slideInOut]>
<div class="nav_header"> <div class="nav_header">
<button class="nav_btn nav_back floatLeft" (click)="istoggle()"> <button class="nav_btn nav_back floatLeft" (click)="istoggle()">
<img src="../assets/Group17_2.png" /> <img src="../assets/Group17_2.png" />
</button> </button>
<div class="nav_title floatLeft"> <div class="nav_title floatLeft">
<h4>CHANGE LOCATION</h4> <h4>CHANGE LOCATION</h4>
</div> </div>
......
<ion-content> <ion-content>
<div class="start_wizard_wrapper"> <div class="start_wizard_wrapper">
<ion-slides <ion-slides pager="true" [options]="landingOptions" (ionSlideDidChange)="slideChanged()">
pager="true" <ion-slide>
[options]="landingOptions" <div class="wizard_inner_wrapper">
(ionSlideDidChange)="slideChanged()" <img src="../assets/Group 229_2.png" />
> <div class="wizard_textarea">
<ion-slide> <h3>EASY PURCHASE</h3>
<div class="wizard_inner_wrapper"> <p>
<img src="../assets/Group 229_2.png" /> Purchase your products from your<br /> favourite shops
<div class="wizard_textarea"> </p>
<h3>EASY PURCHASE</h3> </div>
<p> </div>
Purchase your products from your<br /> </ion-slide>
favourite shops <ion-slide>
</p> <div class="wizard_inner_wrapper">
</div> <img src="../assets/Group 230_2.png" />
</div> <div class="wizard_textarea">
</ion-slide> <h3>1 HOUR DELIVERY</h3>
<ion-slide> <p>The products will be delivered<br />within 1 hour</p>
<div class="wizard_inner_wrapper"> </div>
<img src="../assets/Group 230_2.png" /> </div>
<div class="wizard_textarea"> </ion-slide>
<h3>1 HOUR DELIVERY</h3> <ion-slide>
<p>The products will be delivered<br />within 1 hour</p> <div class="wizard_inner_wrapper">
</div> <img src="../assets/Group 231_2.png" />
</div> <div class="wizard_textarea">
</ion-slide> <h3>EASY PAYMENT</h3>
<ion-slide> <p>
<div class="wizard_inner_wrapper"> Easy Online payment system
<img src="../assets/Group 231_2.png" /> </p>
<div class="wizard_textarea"> </div>
<h3>EASY PAYMENT</h3> </div>
<p> </ion-slide>
Easy Online payment system </ion-slides>
</p> <div class="btn_row">
</div> <div class="btn_bay" [hidden]="currentIndex == 2">
</div> <div class="btn_next" (click)="next()">
</ion-slide> NEXT
</ion-slides> </div>
<div class="btn_row"> </div>
<div class="btn_bay" [hidden]="currentIndex == 2">
<div class="btn_next" (click)="next()">
NEXT
</div>
</div>
<div class="btn_bay" [hidden]="currentIndex != 2"> <div class="btn_bay" [hidden]="currentIndex != 2">
<div class="btn_getstarted" (click)="goToPage('login')"> <div class="btn_getstarted" (click)="goToPage('login')">
GET STARTED GET STARTED
</div>
</div>
</div> </div>
</div>
</div> </div>
</div> <div class="loader" *ngIf="loader">
<div class="loader" *ngIf="loader"> <div class="lds-ripple">
<div class="lds-ripple"> <div></div>
<div></div> <div></div>
<div></div> </div>
</div> </div>
</div> </ion-content>
</ion-content> \ No newline at end of file
...@@ -46,7 +46,7 @@ export class LandingPage implements OnInit { ...@@ -46,7 +46,7 @@ export class LandingPage implements OnInit {
landingOptions = { landingOptions = {
initialSlide: 1, initialSlide: 1,
speed: 1000, speed: 1000,
allowTouchMove: false allowTouchMove: true
}; };
ngOnInit() {} ngOnInit() {}
......
...@@ -16,12 +16,21 @@ ...@@ -16,12 +16,21 @@
input { input {
border: 1px solid rgba(215, 213, 228, 1); border: 1px solid rgba(215, 213, 228, 1);
background: transparent; background: transparent;
color: rgba(215, 213, 228, 1); color: #000;
width: 100%; width: 100%;
height: 45px; height: 45px;
text-align: center; text-align: center;
border-radius: 8px; border-radius: 8px;
font-size: 16px; font-size: 16px;
outline: none;
transition: all .4s ease-in-out;
&::placeholder {
color: rgba(215, 213, 228, 1);
}
&:focus {
border: 1px solid #f3d09f;
box-shadow: 3px 3px 6px 0px rgba(202, 154, 83, 0.11);
}
} }
.login_btn { .login_btn {
width: 100%; width: 100%;
......
...@@ -46,8 +46,6 @@ ...@@ -46,8 +46,6 @@
padding: 0px; padding: 0px;
font-weight: 800; font-weight: 800;
} }
p {
}
input { input {
width: 100%; width: 100%;
height: 45px; height: 45px;
...@@ -56,6 +54,15 @@ ...@@ -56,6 +54,15 @@
padding-left: 10px; padding-left: 10px;
padding-right: 10px; padding-right: 10px;
margin-bottom: 20px; margin-bottom: 20px;
outline: none;
transition: all 0.4s ease-in-out;
&::placeholder {
color: rgba(215, 213, 228, 1);
}
&:focus {
border: 1px solid #f3d09f;
box-shadow: 3px 3px 6px 0px rgba(202, 154, 83, 0.11);
}
} }
.add_btn { .add_btn {
width: 100%; width: 100%;
......
...@@ -93,7 +93,17 @@ ...@@ -93,7 +93,17 @@
Delivery time : <span>{{deliveryTime}}</span> Delivery time : <span>{{deliveryTime}}</span>
</h5> </h5>
<h5>Order Status : <span>{{getStatus(data.orderStatus)}}</span></h5> <h5>Order Status : <span>{{getStatus(data.orderStatus)}}</span></h5>
<h4>DELIVERY</h4> <div class="delivery-wrap">
<h4 class="floatLeft">DELIVERY</h4>
<span class="floatRight"
><img
class="ng-tns-c3-0"
src="../../assets/edit.png"
(click)="goToPage('changeaddress')"
/></span>
<div class="clear"></div>
</div>
<h5 *ngIf="data.deliveryAddress"> <h5 *ngIf="data.deliveryAddress">
{{data.deliveryAddress.addressType}},<br />{{data.deliveryAddress.address}}, {{data.deliveryAddress.addressType}},<br />{{data.deliveryAddress.address}},
<br /> <br />
...@@ -102,7 +112,7 @@ ...@@ -102,7 +112,7 @@
</h5> </h5>
<button <button
class="cancel_btn" class="cancel_btn"
(click)="cancellOrder(data.orderId)" (click)="goToPage('contact')"
*ngIf="cancelDelivery > 0 && data.orderStatus != 0 && data.orderStatus != 8" *ngIf="cancelDelivery > 0 && data.orderStatus != 0 && data.orderStatus != 8"
> >
CANCEL THIS ORDER CANCEL THIS ORDER
......
...@@ -283,7 +283,11 @@ ...@@ -283,7 +283,11 @@
[ngClass]="checkFavStatus(product.prodId)" [ngClass]="checkFavStatus(product.prodId)"
(click)="changeFav(product.prodId)" (click)="changeFav(product.prodId)"
></button> ></button>
<button class="cart" (click)="buyNow(product,0)"></button> <button
class="cart"
[disabled]="!disCart"
(click)="buyNow(product,0)"
></button>
</div> </div>
<div class="footer_btn" (click)="buyNow(product,1)">BUY NOW</div> <div class="footer_btn" (click)="buyNow(product,1)">BUY NOW</div>
</div> </div>
......
import { Component, OnInit } from '@angular/core'; import { Component, OnInit } from "@angular/core";
import { Location } from '@angular/common'; import { Location } from "@angular/common";
import { Router, ActivatedRoute } from '@angular/router'; import { Router, ActivatedRoute } from "@angular/router";
import { Products } from './../../config/services/product'; import { Products } from "./../../config/services/product";
import { Slides } from './../../config/services/slides'; import { Slides } from "./../../config/services/slides";
import { Order } from './../../config/services/order'; import { Order } from "./../../config/services/order";
import { CartsService } from './../../config/cart.service'; import { CartsService } from "./../../config/cart.service";
import { ProductsService } from './../../config/products.service'; import { ProductsService } from "./../../config/products.service";
import { ServiceService } from './../../config/service.service'; import { ServiceService } from "./../../config/service.service";
import { SocialSharing } from '@ionic-native/social-sharing/ngx'; import { SocialSharing } from "@ionic-native/social-sharing/ngx";
import { map } from 'rxjs/operators'; import { map } from "rxjs/operators";
@Component({ @Component({
selector: 'app-productdetail', selector: "app-productdetail",
templateUrl: './productdetail.page.html', templateUrl: "./productdetail.page.html",
styleUrls: ['./productdetail.page.scss'] styleUrls: ["./productdetail.page.scss"]
}) })
export class ProductdetailPage implements OnInit { export class ProductdetailPage implements OnInit {
disCart: boolean = true;
slide: Slides; slide: Slides;
product: Products; product: Products;
order: Order; order: Order;
...@@ -55,7 +56,7 @@ export class ProductdetailPage implements OnInit { ...@@ -55,7 +56,7 @@ export class ProductdetailPage implements OnInit {
params.subCate, params.subCate,
params.prodId params.prodId
); );
this.service.get('params').then(val => { this.service.get("params").then(val => {
this.data = val; this.data = val;
}); });
this.cartService.cartList(); this.cartService.cartList();
...@@ -132,9 +133,9 @@ export class ProductdetailPage implements OnInit { ...@@ -132,9 +133,9 @@ export class ProductdetailPage implements OnInit {
buyNow(product: any, type: number) { buyNow(product: any, type: number) {
this.cartService.buyNow(product).then(() => { this.cartService.buyNow(product).then(() => {
if (type === 1) { if (type === 1) {
this.router.navigateByUrl('cart'); this.router.navigateByUrl("cart");
} else { } else {
this.service.showToast('Added into cart', 'top', 'my-toast', 2000); this.service.showToast("Added into cart", "top", "my-toast", 2000);
} }
this.cartService.cartList(); this.cartService.cartList();
}); });
...@@ -146,32 +147,32 @@ export class ProductdetailPage implements OnInit { ...@@ -146,32 +147,32 @@ export class ProductdetailPage implements OnInit {
checkFavStatus(index) { checkFavStatus(index) {
const state = this.prodService.fav.findIndex(x => x === index); const state = this.prodService.fav.findIndex(x => x === index);
return state > -1 ? 'fav_active' : 'fav'; return state > -1 ? "fav_active" : "fav";
} }
changeFav(index) { changeFav(index) {
this.prodService.changeFav(index, 'yes'); this.prodService.changeFav(index, "yes");
const state = this.prodService.fav.findIndex(x => x === index); const state = this.prodService.fav.findIndex(x => x === index);
// console.log(state); // console.log(state);
// console.log(this.prodService.fav); // console.log(this.prodService.fav);
if (state > -1) { if (state > -1) {
this.prodService.fav.splice(state, 1); this.prodService.fav.splice(state, 1);
this.prodService.changeFav(index, 'yes'); this.prodService.changeFav(index, "yes");
} else { } else {
this.prodService.fav.push(index); this.prodService.fav.push(index);
this.prodService.changeFav(index, 'no'); this.prodService.changeFav(index, "no");
} }
return; return;
// console.log(this.prodService.fav); // console.log(this.prodService.fav);
} }
socialShare(prodName, category, subCate, price, image) { socialShare(prodName, category, subCate, price, image) {
const desc = category + ', ' + subCate + ', ' + price; const desc = category + ", " + subCate + ", " + price;
const content = { const content = {
message: desc, // not supported on some apps (Facebook, Instagram) message: desc, // not supported on some apps (Facebook, Instagram)
subject: prodName, // fi. for email subject: prodName, // fi. for email
files: image, files: image,
chooserTitle: 'GetMi' chooserTitle: "GetMi"
}; };
this.socialSharing.shareWithOptions(content); this.socialSharing.shareWithOptions(content);
} }
......
...@@ -16,23 +16,43 @@ ...@@ -16,23 +16,43 @@
input { input {
border: 1px solid rgba(215, 213, 228, 1); border: 1px solid rgba(215, 213, 228, 1);
background: transparent; background: transparent;
color: rgba(215, 213, 228, 1); color: #000;
width: 100%; width: 100%;
height: 45px; height: 45px;
text-align: center; text-align: center;
border-radius: 8px; border-radius: 8px;
font-size: 16px; font-size: 16px;
outline: none;
transition: all .4s ease-in-out;
&::placeholder {
color: rgba(215, 213, 228, 1);
}
&:focus {
border: 1px solid #f3d09f;
box-shadow: 3px 3px 6px 0px rgba(202, 154, 83, 0.11);
}
}
.md-errors-spacer {
color: #c76969;
font-size: 14px;
} }
ion-datetime { ion-datetime {
border: 1px solid rgba(215, 213, 228, 1); border: 1px solid rgba(215, 213, 228, 1);
background: transparent; background: transparent;
color: rgba(215, 213, 228, 1); color: #000;
width: 100%; width: 100%;
height: 45px; height: 45px;
text-align: center; text-align: center;
border-radius: 8px; border-radius: 8px;
font-size: 16px; font-size: 16px;
padding-left: 0px; padding-left: 0px;
&::placeholder {
color: rgba(215, 213, 228, 1) !important;
}
&:focus {
border: 1px solid #f3d09f;
box-shadow: 3px 3px 6px 0px rgba(202, 154, 83, 0.11);
}
} }
.login_btn { .login_btn {
width: 100%; width: 100%;
......
...@@ -8,12 +8,21 @@ ...@@ -8,12 +8,21 @@
input { input {
border: 1px solid rgba(215, 213, 228, 1); border: 1px solid rgba(215, 213, 228, 1);
background: transparent; background: transparent;
color: rgba(215, 213, 228, 1); color: #000;
width: 100%; width: 100%;
height: 45px; height: 45px;
text-align: center; text-align: center;
border-radius: 8px; border-radius: 8px;
font-size: 16px; font-size: 16px;
outline: none;
transition: all .4s ease-in-out;
&::placeholder {
color: rgba(215, 213, 228, 1);
}
&:focus {
border: 1px solid #f3d09f;
box-shadow: 3px 3px 6px 0px rgba(202, 154, 83, 0.11);
}
} }
.login_btn { .login_btn {
width: 100%; width: 100%;
......
import { Injectable } from '@angular/core';
import {
AngularFirestore,
AngularFirestoreCollection
} from '@angular/fire/firestore';
import { take } from 'rxjs/operators';
import { ContactData } from './services/contact';
import { ServiceService } from './service.service';
import { Router, ActivatedRoute } from '@angular/router';
@Injectable({
providedIn: 'root'
})
export class ContactService {
loader: boolean;
constructor(
public afs: AngularFirestore,
private router: Router,
private service: ServiceService
) {
this.loader = false;
}
contactCreate(data: ContactData) {
this.loader = true;
this.afs
.collection('contacts')
.add({})
.then(docRef => {
data.contactId = docRef.id;
this.afs
.collection('contacts')
.doc(data.contactId)
.set(data)
.then(() => {
this.service
.showToast('Thank you for your feedback!', 'top', 'my-toast', 500)
.then(() => {
this.loader = false;
console.log('redirected');
setTimeout(() => {
this.router.navigateByUrl('home');
}, 500);
})
.catch(err => {
this.loader = false;
});
});
});
}
}
export interface ContactData {
from: string;
contactId: string;
message: string;
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment