@chat21/chat21-ionic 3.0.97 → 3.0.98-rc.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +8 -0
- package/README.md +3 -1
- package/package.json +2 -1
- package/src/app/app-routing.module.ts +4 -7
- package/src/app/app.module.ts +7 -3
- package/src/app/chatlib/conversation-detail/ion-conversation-detail/ion-conversation-detail.component.html +2 -4
- package/src/app/chatlib/conversation-detail/message/text/text.component.scss +12 -0
- package/src/app/chatlib/list-conversations-component/ion-list-conversations/ion-list-conversations.component.html +6 -6
- package/src/app/components/authentication/login/login.component.scss +1 -0
- package/src/app/components/conversation-detail/header-conversation-detail/header-conversation-detail.component.html +6 -6
- package/src/app/components/conversation-detail/message-text-area/message-text-area.component.ts +1 -0
- package/src/app/modals/maps/maps-routing.module.ts +17 -0
- package/src/app/modals/maps/maps.module.ts +22 -0
- package/src/app/modals/maps/maps.page.html +83 -0
- package/src/app/modals/maps/maps.page.scss +181 -0
- package/src/app/modals/maps/maps.page.spec.ts +24 -0
- package/src/app/modals/maps/maps.page.ts +189 -0
- package/src/app/modals/send-whatsapp-template/send-whatsapp-template.module.ts +6 -1
- package/src/app/modals/send-whatsapp-template/send-whatsapp-template.page.html +195 -13
- package/src/app/modals/send-whatsapp-template/send-whatsapp-template.page.scss +341 -70
- package/src/app/modals/send-whatsapp-template/send-whatsapp-template.page.spec.ts +5 -5
- package/src/app/modals/send-whatsapp-template/send-whatsapp-template.page.ts +216 -23
- package/src/app/pages/conversation-detail/conversation-detail.page.ts +14 -10
- package/src/assets/i18n/ar.json +1 -1
- package/src/assets/i18n/az.json +1 -1
- package/src/assets/i18n/de.json +1 -1
- package/src/assets/i18n/en.json +1 -1
- package/src/assets/i18n/es.json +1 -1
- package/src/assets/i18n/fr.json +1 -1
- package/src/assets/i18n/it.json +1 -1
- package/src/assets/i18n/kk.json +1 -1
- package/src/assets/i18n/pt.json +1 -1
- package/src/assets/i18n/ru.json +1 -1
- package/src/assets/i18n/sr.json +1 -1
- package/src/assets/i18n/sv.json +1 -1
- package/src/assets/i18n/tr.json +1 -1
- package/src/assets/i18n/uk.json +1 -1
- package/src/assets/i18n/uz.json +1 -1
- package/src/chat-config-template.json +2 -1
- package/src/chat-config.json +2 -1
- package/src/chat21-core/providers/mqtt/mqtt-conversation-handler.ts +1 -0
- package/src/chat21-core/utils/utils.ts +3 -3
- package/src/index.html +2 -1
- package/tsconfig.json +1 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
# chat21-ionic ver 3.0
|
|
2
2
|
|
|
3
|
+
### 3.0.98-rc.2
|
|
4
|
+
- added: maps modal for whatsapp location templates
|
|
5
|
+
- changed: changed: conversation?.attributes?.channel with conversation?.attributes?.request_channel
|
|
6
|
+
|
|
7
|
+
### 3.0.98-rc.1
|
|
8
|
+
- changed: conversation.attributes.channel with conversation.attributes.request_channel to get the current convesation channel
|
|
9
|
+
- bug-fixed: whatsapp template not enabled when agent is added to a whatsapp channel request
|
|
10
|
+
|
|
3
11
|
### 3.0.97 in PROD
|
|
4
12
|
|
|
5
13
|
### 3.0.97-rc.5
|
package/README.md
CHANGED
|
@@ -105,7 +105,8 @@ Use [Docker Compose Tiledesk installation guide](https://github.com/Tiledesk/til
|
|
|
105
105
|
"testsiteBaseUrl": "https:<YOUR-WIDGET-URL>/test_widget_page/index.html"
|
|
106
106
|
"wsUrl": 'ws://' + window.location.hostname + '/ws/',
|
|
107
107
|
"emailSection": true,
|
|
108
|
-
"whatsappTemplatesSection": true
|
|
108
|
+
"whatsappTemplatesSection": true,
|
|
109
|
+
"googleMapsApiKey":"<YOUR-GOOGLE-MAPS-API-KEY>"
|
|
109
110
|
}
|
|
110
111
|
};
|
|
111
112
|
```
|
|
@@ -132,6 +133,7 @@ Use [Docker Compose Tiledesk installation guide](https://github.com/Tiledesk/til
|
|
|
132
133
|
|
|
133
134
|
* `whatsappTemplatesSection`: if set to true, allows agents to set and send a whatsapp already configured template to users in an incoming whatsapp conversation
|
|
134
135
|
|
|
136
|
+
* `googleMapsApiKey`:
|
|
135
137
|
### Push notification
|
|
136
138
|
* open `/src/firebase-messaging-sw.js` and replace messagingSenderId: with < your messagingSenderId >
|
|
137
139
|
More info here : https://angularfirebase.com/lessons/send-push-notifications-in-angular-with-firebase-cloud-messaging/
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@chat21/chat21-ionic",
|
|
3
3
|
"author": "Tiledesk SRL",
|
|
4
|
-
"version": "3.0.
|
|
4
|
+
"version": "3.0.98-rc.2",
|
|
5
5
|
"license": "MIT License",
|
|
6
6
|
"homepage": "https://tiledesk.com/",
|
|
7
7
|
"repository": {
|
|
@@ -23,6 +23,7 @@
|
|
|
23
23
|
"@angular/common": "~8.2.14",
|
|
24
24
|
"@angular/core": "~8.2.14",
|
|
25
25
|
"@angular/forms": "~8.2.14",
|
|
26
|
+
"@angular/google-maps": "^8.2.14",
|
|
26
27
|
"@angular/material": "^8.2.3",
|
|
27
28
|
"@angular/platform-browser": "~8.2.14",
|
|
28
29
|
"@angular/platform-browser-dynamic": "~8.2.14",
|
|
@@ -72,15 +72,12 @@ const routes: Routes = [
|
|
|
72
72
|
{
|
|
73
73
|
path: 'send-whatsapp-template',
|
|
74
74
|
loadChildren: () => import('./modals/send-whatsapp-template/send-whatsapp-template.module').then( m => m.SendWhatsappTemplateModalModule)
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
path: 'maps',
|
|
78
|
+
loadChildren: () => import('./modals/maps/maps.module').then( m => m.MapsPageModule)
|
|
75
79
|
}
|
|
76
80
|
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
81
|
// {
|
|
85
82
|
// path: 'conversation-detail/:IDConv',
|
|
86
83
|
// loadChildren: () => import('./pages/conversation-detail/conversation-detail.module').then( m => m.ConversationDetailPageModule)
|
package/src/app/app.module.ts
CHANGED
|
@@ -2,7 +2,7 @@ import { ScriptService } from './services/scripts/script.service';
|
|
|
2
2
|
import { ConvertRequestToConversation } from './../chat21-core/utils/convertRequestToConversation';
|
|
3
3
|
import { LogLevel, PUSH_ENGINE_FIREBASE, PUSH_ENGINE_MQTT } from './../chat21-core/utils/constants';
|
|
4
4
|
import { CustomLogger } from 'src/chat21-core/providers/logger/customLogger';
|
|
5
|
-
import { NgModule, ErrorHandler, APP_INITIALIZER } from '@angular/core';
|
|
5
|
+
import { NgModule, ErrorHandler, APP_INITIALIZER, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
|
|
6
6
|
import { RouteReuseStrategy } from '@angular/router';
|
|
7
7
|
import { BrowserModule } from '@angular/platform-browser';
|
|
8
8
|
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
|
|
@@ -106,6 +106,8 @@ import { Network } from '@ionic-native/network/ngx';
|
|
|
106
106
|
import { WebSocketJs } from './services/websocket/websocket-js';
|
|
107
107
|
import { UnassignedConversationsPageModule } from './pages/unassigned-conversations/unassigned-conversations.module';
|
|
108
108
|
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
|
|
109
|
+
import { MapsPageModule } from './modals/maps/maps.module';
|
|
110
|
+
import { GoogleMapsModule } from '@angular/google-maps';
|
|
109
111
|
|
|
110
112
|
// FACTORIES
|
|
111
113
|
export function createTranslateLoader(http: HttpClient) {
|
|
@@ -293,13 +295,15 @@ const appInitializerFn = (appConfig: AppConfigProvider, logger: NGXLogger) => {
|
|
|
293
295
|
LoaderPreviewPageModule,
|
|
294
296
|
SendEmailModalModule,
|
|
295
297
|
SendWhatsappTemplateModalModule,
|
|
298
|
+
MapsPageModule,
|
|
296
299
|
CreateTicketPageModule,
|
|
297
300
|
CreateRequesterPageModule,
|
|
298
301
|
CreateCannedResponsePageModule,
|
|
299
|
-
JsonMessagePageModule
|
|
302
|
+
JsonMessagePageModule,
|
|
303
|
+
GoogleMapsModule
|
|
300
304
|
],
|
|
301
305
|
bootstrap: [AppComponent],
|
|
302
|
-
|
|
306
|
+
schemas: [CUSTOM_ELEMENTS_SCHEMA],
|
|
303
307
|
providers: [
|
|
304
308
|
AppConfigProvider, // https://juristr.com/blog/2018/01/ng-app-runtime-config/
|
|
305
309
|
{
|
|
@@ -133,14 +133,12 @@
|
|
|
133
133
|
(onAfterMessageRender)="onAfterMessageRenderFN($event)"
|
|
134
134
|
(onElementRendered)="onElementRenderedFN($event)"
|
|
135
135
|
(onOptionsMessage)="onClickOptionsMessage($event)">
|
|
136
|
-
|
|
136
|
+
</chat-bubble-message>
|
|
137
137
|
</div>
|
|
138
138
|
|
|
139
139
|
<!-- icon status message -->
|
|
140
140
|
<chat-return-receipt
|
|
141
|
-
[status]="message.status"
|
|
142
|
-
[message]="message"
|
|
143
|
-
[senderId]="senderId">
|
|
141
|
+
[status]="message.status">
|
|
144
142
|
</chat-return-receipt>
|
|
145
143
|
|
|
146
144
|
|
|
@@ -36,4 +36,16 @@ p ::ng-deep p{
|
|
|
36
36
|
margin-block-start: 0em
|
|
37
37
|
}
|
|
38
38
|
|
|
39
|
+
p ::ng-deep ol{
|
|
40
|
+
margin-block-end: 0em;
|
|
41
|
+
margin-block-start: 0em;
|
|
42
|
+
padding-inline-start: 15px;
|
|
43
|
+
|
|
44
|
+
li:before {
|
|
45
|
+
content:"";
|
|
46
|
+
font-size: 1.4em;
|
|
47
|
+
vertical-align:middle;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
|
|
39
51
|
|
|
@@ -106,12 +106,12 @@
|
|
|
106
106
|
</div>
|
|
107
107
|
<!-- SUPPORT-GROUP CONV -->
|
|
108
108
|
<div *ngIf="conversation.uid.startsWith(TYPE_SUPPORT_GROUP) && !IS_ON_MOBILE_DEVICE">
|
|
109
|
-
<img class="channel-icon" src="assets/images/channel_icons/chat21.svg" *ngIf="conversation?.attributes && ( (conversation?.attributes?.
|
|
110
|
-
<img class="channel-icon" src="assets/images/channel_icons/email-logo.svg" *ngIf="conversation?.attributes && conversation?.attributes?.
|
|
111
|
-
<img class="channel-icon" src="assets/images/channel_icons/form-logo_v2.svg" *ngIf="conversation?.attributes && conversation?.attributes?.
|
|
112
|
-
<img class="channel-icon" src="assets/images/channel_icons/messenger-logo.svg" *ngIf="conversation?.attributes && conversation?.attributes?.
|
|
113
|
-
<img class="channel-icon" src="assets/images/channel_icons/whatsapp-logo.svg" *ngIf="conversation?.attributes && conversation?.attributes?.
|
|
114
|
-
<img class="channel-icon" src="assets/images/channel_icons/telegram-logo.svg" *ngIf="conversation?.attributes && conversation?.attributes?.
|
|
109
|
+
<img class="channel-icon" src="assets/images/channel_icons/chat21.svg" *ngIf="conversation?.attributes && ( (conversation?.attributes?.request_channel && conversation?.attributes?.request_channel === CHANNEL_TYPE_CHAT21) || !conversation?.attributes?.request_channel) " >
|
|
110
|
+
<img class="channel-icon" src="assets/images/channel_icons/email-logo.svg" *ngIf="conversation?.attributes && conversation?.attributes?.request_channel && conversation?.attributes?.request_channel === CHANNEL_TYPE_EMAIL" >
|
|
111
|
+
<img class="channel-icon" src="assets/images/channel_icons/form-logo_v2.svg" *ngIf="conversation?.attributes && conversation?.attributes?.request_channel && conversation?.attributes?.request_channel === CHANNEL_TYPE_FORM" >
|
|
112
|
+
<img class="channel-icon" src="assets/images/channel_icons/messenger-logo.svg" *ngIf="conversation?.attributes && conversation?.attributes?.request_channel && conversation?.attributes?.request_channel === CHANNEL_TYPE_MESSANGER" >
|
|
113
|
+
<img class="channel-icon" src="assets/images/channel_icons/whatsapp-logo.svg" *ngIf="conversation?.attributes && conversation?.attributes?.request_channel && conversation?.attributes?.request_channel === CHANNEL_TYPE_WHATSAPP" >
|
|
114
|
+
<img class="channel-icon" src="assets/images/channel_icons/telegram-logo.svg" *ngIf="conversation?.attributes && conversation?.attributes?.request_channel && conversation?.attributes?.request_channel === CHANNEL_TYPE_TELEGRAM" >
|
|
115
115
|
<span *ngIf="conversation?.attributes?.project_name" class="truncate">{{conversation?.attributes?.project_name}}</span>
|
|
116
116
|
<span *ngIf="!conversation?.attributes?.project_name" class="truncate">{{conversation?.attributes?.projectId}}</span>
|
|
117
117
|
</div>
|
|
@@ -44,12 +44,12 @@
|
|
|
44
44
|
</div>
|
|
45
45
|
<!-- SUPPORT-GROUP CONV -->
|
|
46
46
|
<div *ngIf="conversationUid?.startsWith(TYPE_SUPPORT_GROUP) && !IS_ON_MOBILE_DEVICE">
|
|
47
|
-
<img class="channel-icon" src="assets/images/channel_icons/chat21.svg" *ngIf="( (conversationAvatar?.
|
|
48
|
-
<img class="channel-icon" src="assets/images/channel_icons/email-logo.svg" *ngIf="conversationAvatar?.
|
|
49
|
-
<img class="channel-icon" src="assets/images/channel_icons/form-logo_v2.svg" *ngIf="conversationAvatar?.
|
|
50
|
-
<img class="channel-icon" src="assets/images/channel_icons/messenger-logo.svg" *ngIf="conversationAvatar?.
|
|
51
|
-
<img class="channel-icon" src="assets/images/channel_icons/whatsapp-logo.svg" *ngIf="conversationAvatar?.
|
|
52
|
-
<img class="channel-icon" src="assets/images/channel_icons/telegram-logo.svg" *ngIf="conversationAvatar?.
|
|
47
|
+
<img class="channel-icon" src="assets/images/channel_icons/chat21.svg" *ngIf="( (conversationAvatar?.request_channel && conversationAvatar?.request_channel === CHANNEL_TYPE_CHAT21) || !conversationAvatar?.request_channel) " >
|
|
48
|
+
<img class="channel-icon" src="assets/images/channel_icons/email-logo.svg" *ngIf="conversationAvatar?.request_channel && conversationAvatar?.request_channel === CHANNEL_TYPE_EMAIL" >
|
|
49
|
+
<img class="channel-icon" src="assets/images/channel_icons/form-logo_v2.svg" *ngIf="conversationAvatar?.request_channel && conversationAvatar?.request_channel === CHANNEL_TYPE_FORM" >
|
|
50
|
+
<img class="channel-icon" src="assets/images/channel_icons/messenger-logo.svg" *ngIf="conversationAvatar?.request_channel && conversationAvatar?.request_channel === CHANNEL_TYPE_MESSANGER" >
|
|
51
|
+
<img class="channel-icon" src="assets/images/channel_icons/whatsapp-logo.svg" *ngIf="conversationAvatar?.request_channel && conversationAvatar?.request_channel === CHANNEL_TYPE_WHATSAPP" >
|
|
52
|
+
<img class="channel-icon" src="assets/images/channel_icons/telegram-logo.svg" *ngIf="conversationAvatar?.request_channel && conversationAvatar?.request_channel === CHANNEL_TYPE_TELEGRAM" >
|
|
53
53
|
<span *ngIf="conversationAvatar?.project_name" class="truncate">{{conversationAvatar?.project_name}}</span>
|
|
54
54
|
<span *ngIf="!conversationAvatar?.project_name" class="truncate">{{conversationAvatar?.projectId}}</span>
|
|
55
55
|
</div>
|
package/src/app/components/conversation-detail/message-text-area/message-text-area.component.ts
CHANGED
|
@@ -426,6 +426,7 @@ export class MessageTextAreaComponent implements OnInit, AfterViewInit, OnChange
|
|
|
426
426
|
private async prensentTemplateModal():Promise<any> {
|
|
427
427
|
this.logger.log('[CONVS-DETAIL][MSG-TEXT-AREA] openTemplateModal');
|
|
428
428
|
const attributes = {
|
|
429
|
+
loggedUser: this.loggedUser,
|
|
429
430
|
enableBackdropDismiss: false,
|
|
430
431
|
conversationWith: this.conversationWith,
|
|
431
432
|
projectId: this.leadInfo.projectId,
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { NgModule } from '@angular/core';
|
|
2
|
+
import { Routes, RouterModule } from '@angular/router';
|
|
3
|
+
|
|
4
|
+
import { MapsPage } from './maps.page';
|
|
5
|
+
|
|
6
|
+
const routes: Routes = [
|
|
7
|
+
{
|
|
8
|
+
path: '',
|
|
9
|
+
component: MapsPage
|
|
10
|
+
}
|
|
11
|
+
];
|
|
12
|
+
|
|
13
|
+
@NgModule({
|
|
14
|
+
imports: [RouterModule.forChild(routes)],
|
|
15
|
+
exports: [RouterModule],
|
|
16
|
+
})
|
|
17
|
+
export class MapsPageRoutingModule {}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { NgModule } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { FormsModule } from '@angular/forms';
|
|
4
|
+
|
|
5
|
+
import { IonicModule } from '@ionic/angular';
|
|
6
|
+
|
|
7
|
+
import { MapsPageRoutingModule } from './maps-routing.module';
|
|
8
|
+
|
|
9
|
+
import { MapsPage } from './maps.page';
|
|
10
|
+
import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
|
|
11
|
+
|
|
12
|
+
@NgModule({
|
|
13
|
+
imports: [
|
|
14
|
+
CommonModule,
|
|
15
|
+
FormsModule,
|
|
16
|
+
IonicModule,
|
|
17
|
+
MapsPageRoutingModule
|
|
18
|
+
],
|
|
19
|
+
declarations: [MapsPage],
|
|
20
|
+
schemas: [CUSTOM_ELEMENTS_SCHEMA]
|
|
21
|
+
})
|
|
22
|
+
export class MapsPageModule {}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
<ion-header>
|
|
2
|
+
<ion-toolbar>
|
|
3
|
+
<ion-title>Select a place</ion-title>
|
|
4
|
+
<ion-buttons slot="end">
|
|
5
|
+
<ion-button ion-button fill="clear" (click)="onClose()">
|
|
6
|
+
<ion-icon slot="icon-only" name="close"></ion-icon>
|
|
7
|
+
</ion-button>
|
|
8
|
+
</ion-buttons>
|
|
9
|
+
</ion-toolbar>
|
|
10
|
+
</ion-header>
|
|
11
|
+
|
|
12
|
+
<ion-content>
|
|
13
|
+
|
|
14
|
+
<div class="gmaps-container" style="height: 100%; padding: 10px 20px;">
|
|
15
|
+
|
|
16
|
+
<div class="pac-card" id="pac-card">
|
|
17
|
+
<div id="pac-container">
|
|
18
|
+
<input id="pac-input" type="text" placeholder="Enter a location" />
|
|
19
|
+
</div>
|
|
20
|
+
</div>
|
|
21
|
+
|
|
22
|
+
<div id="map" class="map"></div>
|
|
23
|
+
|
|
24
|
+
<div *ngIf="selected_place" class="selected-place">
|
|
25
|
+
<div class="share-location-title">
|
|
26
|
+
<ion-icon name="locate"></ion-icon>
|
|
27
|
+
<p>Share location</p>
|
|
28
|
+
</div>
|
|
29
|
+
<div class="place-info">
|
|
30
|
+
<p class="place-name">{{ selected_place.name }}</p>
|
|
31
|
+
<p class="place-address">{{ selected_place.address }}</p>
|
|
32
|
+
<p class="place-coords">{{ selected_place.latitude }} - {{ selected_place.longitude }}</p>
|
|
33
|
+
</div>
|
|
34
|
+
<div class="place-footer">
|
|
35
|
+
<ion-button ion-button fill="clear" type="submit" (click)="shareLocation()"><ion-icon name="share-social-outline"></ion-icon>Share
|
|
36
|
+
</ion-button>
|
|
37
|
+
</div>
|
|
38
|
+
|
|
39
|
+
</div>
|
|
40
|
+
|
|
41
|
+
</div>
|
|
42
|
+
|
|
43
|
+
<!-- <div class="pac-card" id="pac-card">
|
|
44
|
+
<div>
|
|
45
|
+
<div id="type-selector" class="pac-controls">
|
|
46
|
+
<input type="radio" name="type" id="changetype-all" checked="checked" />
|
|
47
|
+
<label for="changetype-all">All</label>
|
|
48
|
+
|
|
49
|
+
<input type="radio" name="type" id="changetype-establishment" />
|
|
50
|
+
<label for="changetype-establishment">establishment</label>
|
|
51
|
+
|
|
52
|
+
<input type="radio" name="type" id="changetype-address" />
|
|
53
|
+
<label for="changetype-address">address</label>
|
|
54
|
+
|
|
55
|
+
<input type="radio" name="type" id="changetype-geocode" />
|
|
56
|
+
<label for="changetype-geocode">geocode</label>
|
|
57
|
+
|
|
58
|
+
<input type="radio" name="type" id="changetype-cities" />
|
|
59
|
+
<label for="changetype-cities">(cities)</label>
|
|
60
|
+
|
|
61
|
+
<input type="radio" name="type" id="changetype-regions" />
|
|
62
|
+
<label for="changetype-regions">(regions)</label>
|
|
63
|
+
</div>
|
|
64
|
+
<br />
|
|
65
|
+
<div id="strict-bounds-selector" class="pac-controls">
|
|
66
|
+
<input type="checkbox" id="use-location-bias" value="" checked />
|
|
67
|
+
<label for="use-location-bias">Bias to map viewport</label>
|
|
68
|
+
|
|
69
|
+
<input type="checkbox" id="use-strict-bounds" value="" />
|
|
70
|
+
<label for="use-strict-bounds">Strict bounds</label>
|
|
71
|
+
</div>
|
|
72
|
+
</div>
|
|
73
|
+
<div id="pac-container">
|
|
74
|
+
<input id="pac-input" type="text" placeholder="Enter a location" />
|
|
75
|
+
</div>
|
|
76
|
+
</div>
|
|
77
|
+
<div id="map"></div>
|
|
78
|
+
<div id="infowindow-content">
|
|
79
|
+
<span id="place-name" class="title"></span><br />
|
|
80
|
+
<span id="place-address"></span>
|
|
81
|
+
</div> -->
|
|
82
|
+
|
|
83
|
+
</ion-content>
|
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
.container {
|
|
2
|
+
width: 100%;
|
|
3
|
+
height: 100%;
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
capacitor-google-map {
|
|
7
|
+
display: inline-block;
|
|
8
|
+
width: 100%;
|
|
9
|
+
height: 100%;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
// google maps
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* @license
|
|
16
|
+
* Copyright 2019 Google LLC. All Rights Reserved.
|
|
17
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
18
|
+
*/
|
|
19
|
+
/*
|
|
20
|
+
* Always set the map height explicitly to define the size of the div element
|
|
21
|
+
* that contains the map.
|
|
22
|
+
*/
|
|
23
|
+
.map {
|
|
24
|
+
height: 50%;
|
|
25
|
+
//box-shadow: 0px 0px 3px #aaa;
|
|
26
|
+
border: solid 2px #e8e8e8;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
#description {
|
|
30
|
+
font-family: Roboto;
|
|
31
|
+
font-size: 15px;
|
|
32
|
+
font-weight: 300;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
#infowindow-content .title {
|
|
36
|
+
font-weight: bold;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
#infowindow-content {
|
|
40
|
+
display: none;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
#map #infowindow-content {
|
|
44
|
+
display: inline;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
.pac-card {
|
|
48
|
+
margin-top: 10px;
|
|
49
|
+
background-color: transparent;
|
|
50
|
+
// border: 0;
|
|
51
|
+
// border-radius: 2px;
|
|
52
|
+
// box-shadow: 0 1px 4px -1px rgba(0, 0, 0, 0.3);
|
|
53
|
+
//margin: 10px;
|
|
54
|
+
width: 100%;
|
|
55
|
+
padding: 0 0.5em;
|
|
56
|
+
//font: 400 18px Roboto, Arial, sans-serif;
|
|
57
|
+
overflow: hidden;
|
|
58
|
+
//font-family: Roboto;
|
|
59
|
+
padding: 0;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
#pac-container {
|
|
63
|
+
padding-bottom: 12px;
|
|
64
|
+
//margin-right: 12px;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
.pac-controls {
|
|
68
|
+
display: inline-block;
|
|
69
|
+
padding: 5px 11px;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
.pac-controls label {
|
|
73
|
+
font-family: Roboto;
|
|
74
|
+
font-size: 13px;
|
|
75
|
+
font-weight: 300;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
#pac-input {
|
|
79
|
+
background-color: #fff;
|
|
80
|
+
//font-family: Roboto;
|
|
81
|
+
font-size: 15px;
|
|
82
|
+
font-weight: 400;
|
|
83
|
+
margin-left: 12px;
|
|
84
|
+
padding: 0 11px 0 13px;
|
|
85
|
+
text-overflow: ellipsis;
|
|
86
|
+
//width: 400px;
|
|
87
|
+
width: 100%;
|
|
88
|
+
margin-left: 0px;
|
|
89
|
+
height: 36px;
|
|
90
|
+
border-radius: 6px;
|
|
91
|
+
border: solid 2px #e8e8e8;
|
|
92
|
+
//box-shadow: 0px 0px 3px #aaa;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
#pac-input:focus {
|
|
96
|
+
border-color: #00a5f4;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
#title {
|
|
100
|
+
color: #fff;
|
|
101
|
+
background-color: #4d90fe;
|
|
102
|
+
font-size: 25px;
|
|
103
|
+
font-weight: 500;
|
|
104
|
+
padding: 6px 12px;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
.selected-place {
|
|
108
|
+
background-color: #f3f3f3;
|
|
109
|
+
padding: 8px 8px;
|
|
110
|
+
border-radius: 6px;
|
|
111
|
+
margin-top: 20px;
|
|
112
|
+
|
|
113
|
+
.share-location-title {
|
|
114
|
+
display: flex;
|
|
115
|
+
flex-direction: row;
|
|
116
|
+
margin-bottom: 10px;
|
|
117
|
+
align-items: center;
|
|
118
|
+
color: #006a9b;
|
|
119
|
+
|
|
120
|
+
ion-icon {
|
|
121
|
+
margin-right: 4px;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
p {
|
|
125
|
+
font-size: 14px;
|
|
126
|
+
font-weight: 600;
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
p {
|
|
131
|
+
margin: 0px;
|
|
132
|
+
font-size: 14px;
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
.place-info {
|
|
136
|
+
padding-left: 20px;
|
|
137
|
+
|
|
138
|
+
.place-name {
|
|
139
|
+
font-weight: 500;
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
.place-address {
|
|
143
|
+
font-style: italic;
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
.place-coords {
|
|
147
|
+
font-size: 12px;
|
|
148
|
+
font-weight: 500;
|
|
149
|
+
color: #aaa;
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
.place-footer {
|
|
154
|
+
width: 100%;
|
|
155
|
+
display: flex;
|
|
156
|
+
flex-direction: row;
|
|
157
|
+
justify-content: flex-end;
|
|
158
|
+
|
|
159
|
+
ion-button {
|
|
160
|
+
background-color: rgb(0, 86, 192);
|
|
161
|
+
color: #f1f4f7;
|
|
162
|
+
border-radius: 6px;
|
|
163
|
+
font-size: 12px;
|
|
164
|
+
height: 30px;
|
|
165
|
+
line-height: 23px;
|
|
166
|
+
min-width: 120px;
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
ion-icon {
|
|
170
|
+
margin-right: 6px;
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
#map > div > div > div > div {
|
|
176
|
+
display: none !important;
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
#map > div > div > div > div > div.gmnoproint {
|
|
180
|
+
display: none !important;
|
|
181
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
|
|
2
|
+
import { IonicModule } from '@ionic/angular';
|
|
3
|
+
|
|
4
|
+
import { MapsPage } from './maps.page';
|
|
5
|
+
|
|
6
|
+
describe('MapsPage', () => {
|
|
7
|
+
let component: MapsPage;
|
|
8
|
+
let fixture: ComponentFixture<MapsPage>;
|
|
9
|
+
|
|
10
|
+
beforeEach(async(() => {
|
|
11
|
+
TestBed.configureTestingModule({
|
|
12
|
+
declarations: [ MapsPage ],
|
|
13
|
+
imports: [IonicModule.forRoot()]
|
|
14
|
+
}).compileComponents();
|
|
15
|
+
|
|
16
|
+
fixture = TestBed.createComponent(MapsPage);
|
|
17
|
+
component = fixture.componentInstance;
|
|
18
|
+
fixture.detectChanges();
|
|
19
|
+
}));
|
|
20
|
+
|
|
21
|
+
it('should create', () => {
|
|
22
|
+
expect(component).toBeTruthy();
|
|
23
|
+
});
|
|
24
|
+
});
|