forked from ClickerMonkey/SemanticUI-Angular
-
Notifications
You must be signed in to change notification settings - Fork 0
/
sm-embed.js
92 lines (73 loc) · 2.17 KB
/
sm-embed.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
(function(app)
{
app
.factory('SemanticEmbedLink', ['SemanticUI', SemanticEmbedLink])
.directive('smEmbedBind', ['SemanticUI', SemanticEmbedBind])
.directive('smEmbed', ['SemanticEmbedLink', SemanticEmbed])
;
var BEHAVIORS = {
smEmbedReset: 'reset',
smEmbedShow: 'show',
smEmbedHide: 'hide',
smEmbedDestroy: 'destroy'
};
angular.forEach( BEHAVIORS, function(method, directive)
{
app.directive( directive, ['SemanticUI', function(SemanticUI)
{
return SemanticUI.createBehavior( directive, 'embed', method );
}]);
});
function SemanticEmbedBind(SemanticUI)
{
return SemanticUI.createBind( 'smEmbedBind', 'embed' );
}
function SemanticEmbed(SemanticEmbedLink)
{
return {
restrict: 'E',
replace: true,
transclude: true,
scope: {
/* Optional */
source: '@',
sourceId: '@',
url: '@',
placeholder: '@',
icon: '@',
settings: '=',
onInit: '=',
/* Events */
onCreate: '=',
onDisplay: '=',
onPlaceholderDisplay: '=',
onEmbed: '='
},
template: '<div class="ui embed"></div>',
link: SemanticEmbedLink
};
}
function SemanticEmbedLink(SemanticUI)
{
return function(scope, element, attributes)
{
var settings = scope.settings || {};
SemanticUI.linkSettings( scope, element, attributes, 'embed' );
if ( scope.source ) settings.source = scope.source;
if ( scope.sourceId ) settings.id = scope.sourceId;
if ( scope.placeholder ) settings.placeholder = scope.placeholder;
if ( scope.icon ) settings.icon = scope.icon;
if ( scope.url ) settings.url = scope.url;
SemanticUI.linkEvents( scope, settings, $.fn.embed.settings, {
onCreate: 'onCreate',
onDisplay: 'onDisplay',
onPlaceholderDisplay: 'onPlaceholderDisplay',
onEmbed: 'onEmbed'
});
element.embed( settings );
if ( angular.isFunction( scope.onInit ) ) {
scope.onInit( element );
}
};
}
})( angular.module('semantic-ui-embed', ['semantic-ui-core']) );