└── src
├── aura
├── VFWrapper
│ ├── VFWrapper.css
│ ├── VFWrapper.cmp-meta.xml
│ ├── VFWrapper.cmp
│ └── VFWrapperController.js
└── GoogleMapWrapper
│ ├── GoogleMapWrapper.css
│ ├── GoogleMapWrapper.cmp-meta.xml
│ ├── GoogleMapWrapperController.js
│ └── GoogleMapWrapper.cmp
├── package.xml
└── pages
├── GoogleMap.page-meta.xml
├── WrappedVF.page-meta.xml
├── GoogleMap.page
└── WrappedVF.page
/src/aura/VFWrapper/VFWrapper.css:
--------------------------------------------------------------------------------
1 | .THIS {
2 | margin-top: 12px;
3 | }
--------------------------------------------------------------------------------
/src/aura/GoogleMapWrapper/GoogleMapWrapper.css:
--------------------------------------------------------------------------------
1 | .THIS {
2 | margin-top: 12px;
3 | }
--------------------------------------------------------------------------------
/src/aura/VFWrapper/VFWrapper.cmp-meta.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | 38.0
4 | A Lightning Component Bundle
5 |
6 |
--------------------------------------------------------------------------------
/src/aura/GoogleMapWrapper/GoogleMapWrapper.cmp-meta.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | 38.0
4 | A Lightning Component Bundle
5 |
6 |
--------------------------------------------------------------------------------
/src/package.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | VFWrapper
5 | GoogleMapWrapper
6 | AuraDefinitionBundle
7 |
8 |
9 | WrappedVF
10 | GoogleMap
11 | ApexPage
12 |
13 | 37.0
14 |
15 |
--------------------------------------------------------------------------------
/src/pages/GoogleMap.page-meta.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | 38.0
4 | false
5 | false
6 |
7 |
8 | 1
9 | 11
10 | sf_chttr_apps
11 |
12 |
13 |
--------------------------------------------------------------------------------
/src/pages/WrappedVF.page-meta.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | 38.0
4 | false
5 | false
6 |
7 |
8 | 1
9 | 11
10 | sf_chttr_apps
11 |
12 |
13 |
--------------------------------------------------------------------------------
/src/aura/GoogleMapWrapper/GoogleMapWrapperController.js:
--------------------------------------------------------------------------------
1 | ({
2 | recordChangeHandler : function(component, event) {
3 | var id = event.getParam("recordId");
4 | component.set("v.recordId", id);
5 | var service = component.find("service");
6 | service.reloadRecord();
7 | },
8 |
9 | propertyChangeHandler : function(component, event) {
10 | var property = component.get("v.property");
11 | var vfOrigin = "https://" + component.get("v.vfHost");
12 | var vfWindow = component.find("vfFrame").getElement().contentWindow;
13 | vfWindow.postMessage(property, vfOrigin);
14 | }
15 | })
--------------------------------------------------------------------------------
/src/aura/VFWrapper/VFWrapper.cmp:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/src/aura/VFWrapper/VFWrapperController.js:
--------------------------------------------------------------------------------
1 | ({
2 | doInit : function(component, event, helper) {
3 | var vfOrigin = "https://" + component.get("v.vfHost");
4 | window.addEventListener("message", function(event) {
5 | if (event.origin !== vfOrigin) {
6 | // Not the expected origin: reject message
7 | return;
8 | }
9 | // Only handle messages we are interested in
10 | if (event.data.name === "com.mycompany.chatmessage") {
11 | var vfMessages = component.get("v.vfMessages");
12 | vfMessages = vfMessages + event.data.payload + "\n";
13 | component.set("v.vfMessages", vfMessages);
14 | }
15 | }, false);
16 | },
17 |
18 | sendToVF : function(component, event, helper) {
19 | var vfOrigin = "https://" + component.get("v.vfHost");
20 | var vfWindow = component.find("vfFrame").getElement().contentWindow;
21 | var message = {
22 | name: "com.mycompany.chatmessage",
23 | payload: component.get("v.message")
24 | };
25 | vfWindow.postMessage(message, vfOrigin);
26 | }
27 | })
--------------------------------------------------------------------------------
/src/aura/GoogleMapWrapper/GoogleMapWrapper.cmp:
--------------------------------------------------------------------------------
1 |
3 |
4 |
5 |
6 |
7 |
9 |
10 |
11 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/src/pages/GoogleMap.page:
--------------------------------------------------------------------------------
1 |
2 |
3 |
8 |
9 |
10 |
11 |
12 |
42 |
43 |
44 |
--------------------------------------------------------------------------------
/src/pages/WrappedVF.page:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | This gray area is Visualforce page embedded in the Lightning Component with an iframe:
8 |
9 |
15 |
16 |
22 |
23 |
52 |
53 |
54 |
55 |
--------------------------------------------------------------------------------