Skip to content

Commit 64a03e5

Browse files
committed
Moves angular components into separate files
This improves the testability of angular services such that the configuration, and run phase can be tested independently.
1 parent 8ae6684 commit 64a03e5

File tree

6 files changed

+116
-84
lines changed

6 files changed

+116
-84
lines changed

dist/angular-zendesk-widget.js

Lines changed: 58 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -1,46 +1,52 @@
11
(function(angular) {
22

3-
angular.module('zendeskWidget', [])
4-
.run([
5-
'$window',
6-
'zendeskWidgetSettings',
7-
function($window, zendeskWidgetSettings) {
8-
if (!zendeskWidgetSettings.accountUrl) {
9-
throw new Error('Missing accountUrl. Please set in app config via ZendeskWidgetProvider');
10-
}
3+
angular.module('zendeskWidget', []);
4+
5+
})(angular);
6+
7+
(function(angular) {
8+
9+
angular.module('zendeskWidget')
10+
.run([
11+
'$window',
12+
'zendeskWidgetSettings',
13+
function($window, zendeskWidgetSettings) {
14+
if (!zendeskWidgetSettings.accountUrl) {
15+
throw new Error('Missing accountUrl. Please set in app config via ZendeskWidgetProvider');
16+
}
17+
18+
var window = $window;
19+
20+
// Following is essentially a copy paste of JS portion of the Zendesk embed code
21+
// with our settings subbed in. For more info, see:
22+
// https://support.zendesk.com/hc/en-us/articles/203908456-Using-Web-Widget-to-embed-customer-service-in-your-website
23+
24+
/*eslint-disable */
1125

12-
var window = $window;
13-
14-
// Following is essentially a copy paste of JS portion of the Zendesk embed code
15-
// with our settings subbed in. For more info, see:
16-
// https://support.zendesk.com/hc/en-us/articles/203908456-Using-Web-Widget-to-embed-customer-service-in-your-website
17-
18-
/*eslint-disable */
19-
20-
window.zEmbed || function(e, t) {
21-
var n, o, d, i, s, a = [],
22-
r = document.createElement("iframe");
23-
window.zEmbed = function() {
24-
a.push(arguments)
25-
}, window.zE = window.zE || window.zEmbed, r.src = "javascript:false", r.title = "", r.role = "presentation", (r.frameElement || r).style.cssText = "display: none", d = document.getElementsByTagName("script"), d = d[d.length - 1], d.parentNode.insertBefore(r, d), i = r.contentWindow, s = i.document;
26-
try {
27-
o = s
28-
} catch (c) {
29-
n = document.domain, r.src = 'javascript:var d=document.open();d.domain="' + n + '";void(0);', o = s
30-
}
31-
o.open()._l = function() {
32-
var o = this.createElement("script");
33-
n && (this.domain = n), o.id = "js-iframe-async", o.src = e, this.t = +new Date, this.zendeskHost = t, this.zEQueue = a, this.body.appendChild(o)
34-
}, o.write('<body onload="document._l();">'), o.close()
35-
}("https://assets.zendesk.com/embeddable_framework/main.js", zendeskWidgetSettings.accountUrl);
36-
37-
/*eslint-enable */
38-
39-
$window.zE(function() {
40-
zendeskWidgetSettings.beforePageLoad($window.zE);
41-
});
42-
}
43-
]);
26+
window.zEmbed || function(e, t) {
27+
var n, o, d, i, s, a = [],
28+
r = document.createElement("iframe");
29+
window.zEmbed = function() {
30+
a.push(arguments)
31+
}, window.zE = window.zE || window.zEmbed, r.src = "javascript:false", r.title = "", r.role = "presentation", (r.frameElement || r).style.cssText = "display: none", d = document.getElementsByTagName("script"), d = d[d.length - 1], d.parentNode.insertBefore(r, d), i = r.contentWindow, s = i.document;
32+
try {
33+
o = s
34+
} catch (c) {
35+
n = document.domain, r.src = 'javascript:var d=document.open();d.domain="' + n + '";void(0);', o = s
36+
}
37+
o.open()._l = function() {
38+
var o = this.createElement("script");
39+
n && (this.domain = n), o.id = "js-iframe-async", o.src = e, this.t = +new Date, this.zendeskHost = t, this.zEQueue = a, this.body.appendChild(o)
40+
}, o.write('<body onload="document._l();">'), o.close()
41+
}("https://assets.zendesk.com/embeddable_framework/main.js", zendeskWidgetSettings.accountUrl);
42+
43+
/*eslint-enable */
44+
45+
$window.zE(function() {
46+
zendeskWidgetSettings.beforePageLoad($window.zE);
47+
});
48+
}
49+
]);
4450

4551
})(angular);
4652

@@ -59,7 +65,6 @@
5965
];
6066

6167
angular.module('zendeskWidget')
62-
.value('zendeskWidgetSettings', settings)
6368
.provider('ZendeskWidget', [function() {
6469
/**
6570
* Configure the widget
@@ -98,3 +103,15 @@
98103
}]);
99104

100105
})(angular);
106+
107+
(function(angular) {
108+
109+
var settings = {
110+
accountUrl: '',
111+
beforePageLoad: angular.noop
112+
};
113+
114+
angular.module('zendeskWidget')
115+
.value('zendeskWidgetSettings', settings);
116+
117+
})(angular);

dist/angular-zendesk-widget.min.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/angular-zendesk-widget/services/zendeskWidgetProvider.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@
1313
];
1414

1515
angular.module('zendeskWidget')
16-
.value('zendeskWidgetSettings', settings)
1716
.provider('ZendeskWidget', [function() {
1817
/**
1918
* Configure the widget
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
(function(angular) {
2+
3+
var settings = {
4+
accountUrl: '',
5+
beforePageLoad: angular.noop
6+
};
7+
8+
angular.module('zendeskWidget')
9+
.value('zendeskWidgetSettings', settings);
10+
11+
})(angular);
Lines changed: 1 addition & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -1,45 +1,5 @@
11
(function(angular) {
22

3-
angular.module('zendeskWidget', [])
4-
.run([
5-
'$window',
6-
'zendeskWidgetSettings',
7-
function($window, zendeskWidgetSettings) {
8-
if (!zendeskWidgetSettings.accountUrl) {
9-
throw new Error('Missing accountUrl. Please set in app config via ZendeskWidgetProvider');
10-
}
11-
12-
var window = $window;
13-
14-
// Following is essentially a copy paste of JS portion of the Zendesk embed code
15-
// with our settings subbed in. For more info, see:
16-
// https://support.zendesk.com/hc/en-us/articles/203908456-Using-Web-Widget-to-embed-customer-service-in-your-website
17-
18-
/*eslint-disable */
19-
20-
window.zEmbed || function(e, t) {
21-
var n, o, d, i, s, a = [],
22-
r = document.createElement("iframe");
23-
window.zEmbed = function() {
24-
a.push(arguments)
25-
}, window.zE = window.zE || window.zEmbed, r.src = "javascript:false", r.title = "", r.role = "presentation", (r.frameElement || r).style.cssText = "display: none", d = document.getElementsByTagName("script"), d = d[d.length - 1], d.parentNode.insertBefore(r, d), i = r.contentWindow, s = i.document;
26-
try {
27-
o = s
28-
} catch (c) {
29-
n = document.domain, r.src = 'javascript:var d=document.open();d.domain="' + n + '";void(0);', o = s
30-
}
31-
o.open()._l = function() {
32-
var o = this.createElement("script");
33-
n && (this.domain = n), o.id = "js-iframe-async", o.src = e, this.t = +new Date, this.zendeskHost = t, this.zEQueue = a, this.body.appendChild(o)
34-
}, o.write('<body onload="document._l();">'), o.close()
35-
}("https://assets.zendesk.com/embeddable_framework/main.js", zendeskWidgetSettings.accountUrl);
36-
37-
/*eslint-enable */
38-
39-
$window.zE(function() {
40-
zendeskWidgetSettings.beforePageLoad($window.zE);
41-
});
42-
}
43-
]);
3+
angular.module('zendeskWidget', []);
444

455
})(angular);
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
(function(angular) {
2+
3+
angular.module('zendeskWidget')
4+
.run([
5+
'$window',
6+
'zendeskWidgetSettings',
7+
function($window, zendeskWidgetSettings) {
8+
if (!zendeskWidgetSettings.accountUrl) {
9+
throw new Error('Missing accountUrl. Please set in app config via ZendeskWidgetProvider');
10+
}
11+
12+
var window = $window;
13+
14+
// Following is essentially a copy paste of JS portion of the Zendesk embed code
15+
// with our settings subbed in. For more info, see:
16+
// https://support.zendesk.com/hc/en-us/articles/203908456-Using-Web-Widget-to-embed-customer-service-in-your-website
17+
18+
/*eslint-disable */
19+
20+
window.zEmbed || function(e, t) {
21+
var n, o, d, i, s, a = [],
22+
r = document.createElement("iframe");
23+
window.zEmbed = function() {
24+
a.push(arguments)
25+
}, window.zE = window.zE || window.zEmbed, r.src = "javascript:false", r.title = "", r.role = "presentation", (r.frameElement || r).style.cssText = "display: none", d = document.getElementsByTagName("script"), d = d[d.length - 1], d.parentNode.insertBefore(r, d), i = r.contentWindow, s = i.document;
26+
try {
27+
o = s
28+
} catch (c) {
29+
n = document.domain, r.src = 'javascript:var d=document.open();d.domain="' + n + '";void(0);', o = s
30+
}
31+
o.open()._l = function() {
32+
var o = this.createElement("script");
33+
n && (this.domain = n), o.id = "js-iframe-async", o.src = e, this.t = +new Date, this.zendeskHost = t, this.zEQueue = a, this.body.appendChild(o)
34+
}, o.write('<body onload="document._l();">'), o.close()
35+
}("https://assets.zendesk.com/embeddable_framework/main.js", zendeskWidgetSettings.accountUrl);
36+
37+
/*eslint-enable */
38+
39+
$window.zE(function() {
40+
zendeskWidgetSettings.beforePageLoad($window.zE);
41+
});
42+
}
43+
]);
44+
45+
})(angular);

0 commit comments

Comments
 (0)