iugu-ux 0.8.8 → 0.8.9
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.
- data/lib/iugu-ux/version.rb +1 -1
- data/vendor/assets/javascripts/iugu-ux/components/presenters/iugu-ui-alert.jst.eco +7 -3
- data/vendor/assets/javascripts/iugu-ux/components/presenters/iugu-ui-popup-container.jst.eco +6 -0
- data/vendor/assets/javascripts/iugu-ux/components/presenters/iugu-ui-search-filter.jst.eco +9 -6
- data/vendor/assets/javascripts/iugu-ux/components/usecode/iugu-ui-alert.js.coffee +2 -2
- data/vendor/assets/javascripts/iugu-ux/components/usecode/iugu-ui-base.js.coffee +12 -7
- data/vendor/assets/javascripts/iugu-ux/components/usecode/iugu-ui-dataset.js.coffee +5 -2
- data/vendor/assets/javascripts/iugu-ux/components/usecode/iugu-ui-popup-container.js.coffee +42 -0
- data/vendor/assets/javascripts/iugu-ux/components/usecode/iugu-ui-responsive-box.js.coffee +5 -3
- data/vendor/assets/javascripts/iugu-ux/components/usecode/iugu-ui-scrollable-content.js.coffee +2 -2
- data/vendor/assets/javascripts/iugu-ux/components/usecode/iugu-ui-search-filter.js.coffee +6 -6
- data/vendor/assets/javascripts/iugu-ux/components/usecode/iugu-ui-view.js.coffee +47 -6
- data/vendor/assets/javascripts/iugu-ux/web-app.js +2 -0
- data/vendor/assets/javascripts/vendor.js +6 -0
- data/vendor/assets/javascripts/vendor/backbone.advanced-delegate.js +39 -0
- data/vendor/assets/javascripts/vendor/backbone.fetch-event.js +15 -0
- data/vendor/assets/javascripts/vendor/backbone.forms.default.js +91 -0
- data/vendor/assets/javascripts/vendor/backbone.forms.js +2355 -0
- data/vendor/assets/javascripts/vendor/backbone.forms.list.js +579 -0
- data/vendor/assets/javascripts/vendor/jquery.fileupload.js +1114 -0
- data/vendor/assets/javascripts/web-app/comm.coffee +1 -1
- data/vendor/assets/javascripts/web-app/environment.js.coffee +2 -0
- data/vendor/assets/javascripts/web-app/helpers.coffee +3 -1
- data/vendor/assets/javascripts/web-app/managed_request.coffee +54 -0
- data/vendor/assets/stylesheets/iugu-ux.css +1 -0
- data/vendor/assets/stylesheets/iugu-ux/backbone.forms.default.css +140 -0
- data/vendor/assets/stylesheets/iugu-ux/components.sass +6 -1
- metadata +40 -30
data/lib/iugu-ux/version.rb
CHANGED
@@ -1,6 +1,10 @@
|
|
1
|
-
<div class="notice
|
1
|
+
<div class="notice <%= @alertClass %>">
|
2
2
|
<a class="close" data-dismiss="notice" href="#">x</a>
|
3
3
|
<h4 class="notice-heading"><%= @headerText %></h4>
|
4
|
-
|
5
|
-
|
4
|
+
<% if @bodyText: %>
|
5
|
+
<p><%= @bodyText %></p><br/>
|
6
|
+
<% end %>
|
7
|
+
<% if @buttonText: %>
|
8
|
+
<a class="button" data-dismiss="alert" href="#"><%= @buttonText %></a>
|
9
|
+
<% end %>
|
6
10
|
</div>
|
@@ -0,0 +1,6 @@
|
|
1
|
+
<div class="content popup-wrapper" style="position:absolute;top:0px;left:0px;right:0px;bottom:0px">
|
2
|
+
<div class="popup-modal" style="position:absolute;top:0px;left:0px;width:100%;height:100%;background:rgba(0,0,0,0.5);z-index:2"></div>
|
3
|
+
<div class="popup-window" style="z-index:5;position:absolute;width:<%= @width %>px;height:<%= @height %>px;margin-left:-<%= @width/2 %>px;margin-top:-<%= @height/2 %>px;top:50%;left:50%">
|
4
|
+
<div class="container" style="width:<%= @width %>px;height:<%= @height %>px"></div>
|
5
|
+
</div>
|
6
|
+
</div>
|
@@ -1,15 +1,18 @@
|
|
1
1
|
<section style="background:#FFF;padding-top:5px;padding-bottom:5px">
|
2
|
-
<%
|
2
|
+
<% if @collection.facets: %>
|
3
|
+
<% facets = _.pick(@collection.facets, @filterName) %>
|
4
|
+
<% end %>
|
5
|
+
<% facets = [] unless facets %>
|
3
6
|
<% printed = [] %>
|
4
7
|
<% for facet in _.pairs(facets): %>
|
5
8
|
<% for term in facet[1].terms: %>
|
6
9
|
<% printed.push(term.term.toString()) %>
|
7
|
-
<a href="#" data-filter=<%= term.term %>
|
10
|
+
<a href="#" data-filter=<%= term.term %> data-action="search-filter-button" class="button <%= "default" unless _.indexOf(@selected, term.term.toString()) == -1 %>"><%= term.term.toString() %>( <%= term.count %> )</a>
|
8
11
|
<% end %>
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
12
|
+
<% end %>
|
13
|
+
<% for term in @fixedFilters: %>
|
14
|
+
<% if _.indexOf(printed, term) == -1: %>
|
15
|
+
<a href="#" data-filter=<%= term %> class="disabled button <%= "default" unless _.indexOf(@selected, term) == -1 %>"><%= term %>( 0 )</a>
|
13
16
|
<% end %>
|
14
17
|
<% end %>
|
15
18
|
</section>
|
@@ -3,8 +3,7 @@ class IuguUI.Alert extends IuguUI.Base
|
|
3
3
|
|
4
4
|
defaults:
|
5
5
|
headerText: "HEADER TEXT"
|
6
|
-
|
7
|
-
buttonText: "BUTTON TEXT"
|
6
|
+
alertClass: "notice-green"
|
8
7
|
|
9
8
|
events:
|
10
9
|
'click a.alertButton': 'handleDOMEvent'
|
@@ -13,5 +12,6 @@ class IuguUI.Alert extends IuguUI.Base
|
|
13
12
|
headerText: @options.headerText
|
14
13
|
bodyText: @options.bodyText
|
15
14
|
buttonText: @options.buttonText
|
15
|
+
alertClass: @options.alertClass
|
16
16
|
|
17
17
|
@IuguUI.Alert = IuguUI.Alert
|
@@ -4,13 +4,14 @@ class IuguUI.Base extends Backbone.View
|
|
4
4
|
baseURL: ""
|
5
5
|
|
6
6
|
initialize: ->
|
7
|
-
_.bindAll
|
7
|
+
_.bindAll @
|
8
8
|
|
9
9
|
@options = _.extend {}, @defaults, @options
|
10
10
|
|
11
11
|
@layout = @options.layout if @options.layout
|
12
12
|
@parent = @options.parent if @options.parent
|
13
|
-
|
13
|
+
@context = @options.context if @options.context
|
14
|
+
|
14
15
|
@identifier = ( -> @options.identifier + ':' ) if @options.identifier
|
15
16
|
|
16
17
|
@handleEvent 'initialize'
|
@@ -25,10 +26,13 @@ class IuguUI.Base extends Backbone.View
|
|
25
26
|
|
26
27
|
@
|
27
28
|
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
29
|
+
renderPartial: ( layout, target, context=@context ) ->
|
30
|
+
$(target).html @getLayout(target) context
|
31
|
+
|
32
|
+
getLayout: (layout_file=@layout) ->
|
33
|
+
if JST[ "web-app/presenters/" + layout_file ]
|
34
|
+
return JST[ "web-app/presenters/" + layout_file ]
|
35
|
+
JST[ "iugu-ux/components/presenters/" + layout_file ]
|
32
36
|
|
33
37
|
context: ->
|
34
38
|
return { }
|
@@ -69,7 +73,7 @@ class IuguUI.Base extends Backbone.View
|
|
69
73
|
@handleEvent triggerType
|
70
74
|
|
71
75
|
trigger: (events) ->
|
72
|
-
if
|
76
|
+
if enable_debug_events
|
73
77
|
debug 'Triggered Event: ' + arguments[0]
|
74
78
|
super
|
75
79
|
|
@@ -85,4 +89,5 @@ class IuguUI.Base extends Backbone.View
|
|
85
89
|
@unload()
|
86
90
|
@remove()
|
87
91
|
|
92
|
+
|
88
93
|
@IuguUI.Base = IuguUI.Base
|
@@ -1,5 +1,6 @@
|
|
1
|
-
class IuguUI.Dataset extends IuguUI.
|
1
|
+
class IuguUI.Dataset extends IuguUI.View
|
2
2
|
layout: "iugu-ui-dataset"
|
3
|
+
secondaryView: true
|
3
4
|
|
4
5
|
defaults:
|
5
6
|
itemLayout: "iugu-ui-dataset-record"
|
@@ -9,7 +10,9 @@ class IuguUI.Dataset extends IuguUI.Base
|
|
9
10
|
initialize: ->
|
10
11
|
super
|
11
12
|
_.bindAll @, 'renderItems', 'addRecord'
|
12
|
-
|
13
|
+
|
14
|
+
@collection.on 'fetch', @enableLoader, @
|
15
|
+
@collection.on 'reset', @load, @
|
13
16
|
|
14
17
|
@
|
15
18
|
|
@@ -0,0 +1,42 @@
|
|
1
|
+
class IuguUI.PopupContainer extends IuguUI.View
|
2
|
+
layout: "iugu-ui-popup-container"
|
3
|
+
secondaryView: true
|
4
|
+
|
5
|
+
defaults:
|
6
|
+
content: null
|
7
|
+
width: 320
|
8
|
+
height: 480
|
9
|
+
|
10
|
+
context: ->
|
11
|
+
width: @options.width
|
12
|
+
height: @options.height
|
13
|
+
|
14
|
+
initialize: ->
|
15
|
+
_.bindAll @
|
16
|
+
super
|
17
|
+
|
18
|
+
@content = new IuguUI.View
|
19
|
+
layout: @content
|
20
|
+
secondaryView: true
|
21
|
+
|
22
|
+
@content_wrapper = null
|
23
|
+
|
24
|
+
getHandler: ->
|
25
|
+
@$('.content:first')
|
26
|
+
|
27
|
+
getContainer: ->
|
28
|
+
@$('.container:first')
|
29
|
+
|
30
|
+
render: ->
|
31
|
+
super
|
32
|
+
unless @content_wrapper
|
33
|
+
@content_wrapper = $(document.createElement('div'))
|
34
|
+
|
35
|
+
@content.setElement(@content_wrapper).render()
|
36
|
+
|
37
|
+
@getContainer().html @content_wrapper
|
38
|
+
|
39
|
+
|
40
|
+
@
|
41
|
+
|
42
|
+
@IuguUI.PopupContainer = IuguUI.PopupContainer
|
@@ -29,8 +29,7 @@ class IuguUI.ResponsiveBox extends IuguUI.Base
|
|
29
29
|
getTitle: ->
|
30
30
|
@$('.responsive-title').html()
|
31
31
|
|
32
|
-
|
33
|
-
evt.preventDefault()
|
32
|
+
reallyToggleSidebar: ->
|
34
33
|
uibox = @$('.ui-responsive-box')
|
35
34
|
|
36
35
|
uisidebar = uibox.children('.sidebar')
|
@@ -52,7 +51,10 @@ class IuguUI.ResponsiveBox extends IuguUI.Base
|
|
52
51
|
preventContainer.remove()
|
53
52
|
, 500
|
54
53
|
)
|
55
|
-
|
54
|
+
|
55
|
+
toggleSidebar: ( evt ) ->
|
56
|
+
evt.preventDefault()
|
57
|
+
@reallyToggleSidebar()
|
56
58
|
|
57
59
|
render: ->
|
58
60
|
super
|
data/vendor/assets/javascripts/iugu-ux/components/usecode/iugu-ui-scrollable-content.js.coffee
CHANGED
@@ -2,10 +2,10 @@ class IuguUI.ScrollableContainer extends IuguUI.Base
|
|
2
2
|
layout: "iugu-ui-scrollable-container"
|
3
3
|
|
4
4
|
getHandler: ->
|
5
|
-
@$('.content')
|
5
|
+
@$('.content:first')
|
6
6
|
|
7
7
|
getContainer: ->
|
8
|
-
@$('.handle-scrolling')
|
8
|
+
@$('.handle-scrolling:first')
|
9
9
|
|
10
10
|
render: ->
|
11
11
|
super
|
@@ -8,10 +8,11 @@ class IuguUI.SearchFilter extends IuguUI.Base
|
|
8
8
|
multiSelection: false
|
9
9
|
|
10
10
|
events:
|
11
|
-
'click
|
11
|
+
'click [data-action=search-filter-button]': 'searchCollection'
|
12
12
|
|
13
13
|
searchCollection: (e) ->
|
14
14
|
e.preventDefault()
|
15
|
+
@handleEvent "facet:click"
|
15
16
|
button = $(e.target)
|
16
17
|
filter = button.data('filter')
|
17
18
|
|
@@ -27,13 +28,13 @@ class IuguUI.SearchFilter extends IuguUI.Base
|
|
27
28
|
@collection.configureFilter @options.filterName + '_filter', @selected
|
28
29
|
else
|
29
30
|
@collection.removeFilter @options.filterName + '_filter'
|
30
|
-
|
31
|
-
@collection.
|
31
|
+
|
32
|
+
@collection.goTo(1)
|
32
33
|
|
33
34
|
initialize: ->
|
34
35
|
@selected = []
|
35
36
|
_.bindAll @, 'searchCollection', 'render'
|
36
|
-
@collection.on '
|
37
|
+
@collection.on 'reset', @render, @
|
37
38
|
@collection.on "removed-filter:#{@options.filterName}_filter", @removedFilter, @
|
38
39
|
super
|
39
40
|
@
|
@@ -45,8 +46,7 @@ class IuguUI.SearchFilter extends IuguUI.Base
|
|
45
46
|
fixedFilters: @options.fixedFilters
|
46
47
|
|
47
48
|
render: ->
|
48
|
-
|
49
|
-
super
|
49
|
+
super
|
50
50
|
|
51
51
|
removedFilter: ->
|
52
52
|
@selected = []
|
@@ -1,7 +1,15 @@
|
|
1
1
|
class IuguUI.View extends IuguUI.Base
|
2
2
|
layout: "iugu-ui-view"
|
3
|
+
secondaryView: false
|
3
4
|
|
4
5
|
initialize: ->
|
6
|
+
super
|
7
|
+
|
8
|
+
window.Events.on "fillSlots", @fillSlots
|
9
|
+
window.Events.on "resetSlots", @resetSlots
|
10
|
+
|
11
|
+
@secondaryView = @options.secondaryView if @options.secondaryView
|
12
|
+
|
5
13
|
if @model
|
6
14
|
Backbone.Validation.bind @,
|
7
15
|
forceUpdate: true
|
@@ -14,6 +22,38 @@ class IuguUI.View extends IuguUI.Base
|
|
14
22
|
|
15
23
|
@model.on 'error', @addErrors, @
|
16
24
|
|
25
|
+
fillSlots: ( context ) ->
|
26
|
+
_.each( _.keys(context)
|
27
|
+
( key ) ->
|
28
|
+
renderContext = context[key]
|
29
|
+
if renderContext.el
|
30
|
+
context[key].$el.detach()
|
31
|
+
@$(key).empty().append context[key].el
|
32
|
+
else
|
33
|
+
@$(key).empty().append context[key]
|
34
|
+
)
|
35
|
+
|
36
|
+
resetSlots: ( slots ) ->
|
37
|
+
_.each( slots,
|
38
|
+
( slot ) ->
|
39
|
+
@$(slot).empty()
|
40
|
+
)
|
41
|
+
|
42
|
+
enableLoader: ->
|
43
|
+
debug "ENABLED LOADER"
|
44
|
+
@viewLoader = $('<div style="position:absolute;top:0px;left:0px;width:100%;height:100%;"><div style="position:absolute;left:0px;top:0px;width:100%;height:100%;background:rgba(255,255,255,0.5);z-index:2"></div><div style="position:absolute;top:50%;left:50%;width:64px;height:64px;margin-left:-32px;margin-top:-32px;background:#fff;-moz-border-radius(5px);line-height:64px;text-align:center;color:#fff"><img src="http://preloaders.net/preloaders/3/Chasing%20arrows.gif" width="32" height="32" /></div></div>')
|
45
|
+
$(@el).append @viewLoader
|
46
|
+
|
47
|
+
disableLoader: ->
|
48
|
+
debug "DISABLED LOADER"
|
49
|
+
if @viewLoader
|
50
|
+
@viewLoader.remove()
|
51
|
+
|
52
|
+
load: ->
|
53
|
+
debug "ON LOAD"
|
54
|
+
@disableLoader()
|
55
|
+
@render()
|
56
|
+
|
17
57
|
valid: (view, attr, selector) ->
|
18
58
|
control = view.$ '[' + selector + '=\"' + attr + '\"]'
|
19
59
|
group = control.parents ".form-group"
|
@@ -61,25 +101,26 @@ class IuguUI.View extends IuguUI.Base
|
|
61
101
|
)
|
62
102
|
|
63
103
|
render: ->
|
64
|
-
super
|
65
104
|
rivets.bind this.$el, {model: @model} if @model
|
66
105
|
|
67
|
-
if app.activeView != @
|
106
|
+
if app.activeView != @ and @secondaryView == false
|
68
107
|
app.activeView.close() if app.activeView
|
69
108
|
app.activeView = @
|
70
109
|
|
71
|
-
if window.
|
72
|
-
window.
|
110
|
+
if window.app.rootWindow.setTitle
|
111
|
+
window.app.rootWindow.setTitle @title
|
112
|
+
|
113
|
+
super
|
73
114
|
|
74
115
|
@
|
75
116
|
|
76
117
|
unload: () ->
|
77
|
-
|
78
|
-
debug 'Called IuguUI.View:close'
|
118
|
+
debug 'Called IuguUI.View:unload'
|
79
119
|
if @model
|
80
120
|
Backbone.Validation.unbind @
|
81
121
|
@model.off null, null, @
|
82
122
|
if @collection
|
83
123
|
@collection.off null, null, @
|
124
|
+
super
|
84
125
|
|
85
126
|
@IuguUI.View = IuguUI.View
|
@@ -11,6 +11,7 @@
|
|
11
11
|
//= require ./vendor/jquery.ui
|
12
12
|
//= require ./vendor/jquery.ui.touch-punch
|
13
13
|
//= require ./vendor/jquery.base64
|
14
|
+
//= require ./vendor/jquery.fileupload.js
|
14
15
|
//= require ./vendor/mobiscroll.core-2.3.1
|
15
16
|
//= require ./vendor/mobiscroll.datetime-2.3
|
16
17
|
//= require ./vendor/mobiscroll.select-2.3.1
|
@@ -18,6 +19,11 @@
|
|
18
19
|
//= require ./vendor/backbone
|
19
20
|
//= require ./vendor/backbone.validation.js
|
20
21
|
//= require ./vendor/backbone.paginator.js
|
22
|
+
//= require ./vendor/backbone.fetch-event.js
|
23
|
+
//= require ./vendor/backbone.advanced-delegate.js
|
24
|
+
//= require ./vendor/backbone.forms.js
|
25
|
+
//= require ./vendor/backbone.forms.list.js
|
26
|
+
//= require ./vendor/backbone.forms.default.js
|
21
27
|
//= require ./vendor/rivets.js
|
22
28
|
//= require ./vendor/async.js
|
23
29
|
//= require ./vendor/tasks.js
|
@@ -0,0 +1,39 @@
|
|
1
|
+
_.each(["View"], function(name) {
|
2
|
+
// Cache Backbone constructor.
|
3
|
+
var ctor = Backbone[name];
|
4
|
+
// Cache original fetch.
|
5
|
+
var delegateEvents = ctor.prototype.delegateEvents;
|
6
|
+
|
7
|
+
var delegateEventSplitter = /^(\S+)\s*(.*)$/;
|
8
|
+
|
9
|
+
// Override the fetch method to emit a fetch event.
|
10
|
+
ctor.prototype.delegateEvents = function(events) {
|
11
|
+
if (!(events || (events = _.result(this, 'events')))) return;
|
12
|
+
this.undelegateEvents();
|
13
|
+
for (var key in events) {
|
14
|
+
var method = events[key];
|
15
|
+
if (!_.isFunction(method)) method = this[events[key]];
|
16
|
+
if (!method) throw new Error('Method "' + events[key] + '" does not exist');
|
17
|
+
var match = key.match(delegateEventSplitter);
|
18
|
+
var eventName = match[1], selector = match[2];
|
19
|
+
method = _.bind(method, this);
|
20
|
+
originalEvent = eventName;
|
21
|
+
eventName = '.delegateEvents' + this.cid;
|
22
|
+
if ((originalEvent == "click") && (selector !== '')) {
|
23
|
+
if (window.TOUCH_SUPPORT) {
|
24
|
+
this.$el.on( "touchstart" + eventName, selector, function(event) { $(this).addClass('active'); } );
|
25
|
+
this.$el.on( "touchend" + eventName, selector, function(event) { $(this).removeClass('active'); } );
|
26
|
+
}
|
27
|
+
else {
|
28
|
+
this.$el.on( "mousedown" + eventName, selector, function(event) { $(this).addClass('active'); } );
|
29
|
+
this.$el.on( "mouseup" + eventName, selector, function(event) { $(this).removeClass('active'); } );
|
30
|
+
}
|
31
|
+
}
|
32
|
+
if (selector === '') {
|
33
|
+
this.$el.on(originalEvent + eventName, method);
|
34
|
+
} else {
|
35
|
+
this.$el.on(originalEvent + eventName, selector, method);
|
36
|
+
}
|
37
|
+
}
|
38
|
+
};
|
39
|
+
});
|
@@ -0,0 +1,15 @@
|
|
1
|
+
_.each(["Model", "Collection"], function(name) {
|
2
|
+
// Cache Backbone constructor.
|
3
|
+
var ctor = Backbone[name];
|
4
|
+
// Cache original fetch.
|
5
|
+
var fetch = ctor.prototype.fetch;
|
6
|
+
|
7
|
+
// Override the fetch method to emit a fetch event.
|
8
|
+
ctor.prototype.fetch = function() {
|
9
|
+
// Trigger the fetch event on the instance.
|
10
|
+
this.trigger("fetch", this);
|
11
|
+
|
12
|
+
// Pass through to original fetch.
|
13
|
+
return fetch.apply(this, arguments);
|
14
|
+
};
|
15
|
+
});
|
@@ -0,0 +1,91 @@
|
|
1
|
+
/**
|
2
|
+
* Include this file _after_ the main backbone-forms file to override the default templates.
|
3
|
+
* You only need to include templates you want to override.
|
4
|
+
*
|
5
|
+
* Requirements when customising templates:
|
6
|
+
* - Each template must have one 'parent' element tag.
|
7
|
+
* - "data-type" attributes are required.
|
8
|
+
* - The main placeholder tags such as the following are required: fieldsets, fields
|
9
|
+
*/
|
10
|
+
;(function() {
|
11
|
+
var Form = Backbone.Form;
|
12
|
+
|
13
|
+
|
14
|
+
//DEFAULT TEMPLATES
|
15
|
+
Form.setTemplates({
|
16
|
+
|
17
|
+
//HTML
|
18
|
+
form: '\
|
19
|
+
<form class="bbf-form">{{fieldsets}}</form>\
|
20
|
+
',
|
21
|
+
|
22
|
+
fieldset: '\
|
23
|
+
<fieldset>\
|
24
|
+
<legend>{{legend}}</legend>\
|
25
|
+
<ul>{{fields}}</ul>\
|
26
|
+
</fieldset>\
|
27
|
+
',
|
28
|
+
|
29
|
+
field: '\
|
30
|
+
<li class="bbf-field field-{{key}}">\
|
31
|
+
<label for="{{id}}">{{title}}</label>\
|
32
|
+
<div class="bbf-editor">{{editor}}</div>\
|
33
|
+
<div class="bbf-help">{{help}}</div>\
|
34
|
+
<div class="bbf-error">{{error}}</div>\
|
35
|
+
</li>\
|
36
|
+
',
|
37
|
+
|
38
|
+
nestedField: '\
|
39
|
+
<li class="bbf-field bbf-nested-field field-{{key}}" title="{{title}}">\
|
40
|
+
<label for="{{id}}">{{title}}</label>\
|
41
|
+
<div class="bbf-editor">{{editor}}</div>\
|
42
|
+
<div class="bbf-help">{{help}}</div>\
|
43
|
+
<div class="bbf-error">{{error}}</div>\
|
44
|
+
</li>\
|
45
|
+
',
|
46
|
+
|
47
|
+
list: '\
|
48
|
+
<div class="bbf-list">\
|
49
|
+
<ul>{{items}}</ul>\
|
50
|
+
<div class="bbf-actions"><button type="button" data-action="add">Add</div>\
|
51
|
+
</div>\
|
52
|
+
',
|
53
|
+
|
54
|
+
listItem: '\
|
55
|
+
<li>\
|
56
|
+
<button type="button" data-action="remove" class="bbf-remove">×</button>\
|
57
|
+
<div class="bbf-editor-container">{{editor}}</div>\
|
58
|
+
</li>\
|
59
|
+
',
|
60
|
+
|
61
|
+
date: '\
|
62
|
+
<div class="bbf-date">\
|
63
|
+
<select data-type="date" class="bbf-date">{{dates}}</select>\
|
64
|
+
<select data-type="month" class="bbf-month">{{months}}</select>\
|
65
|
+
<select data-type="year" class="bbf-year">{{years}}</select>\
|
66
|
+
</div>\
|
67
|
+
',
|
68
|
+
|
69
|
+
dateTime: '\
|
70
|
+
<div class="bbf-datetime">\
|
71
|
+
<div class="bbf-date-container">{{date}}</div>\
|
72
|
+
<select data-type="hour">{{hours}}</select>\
|
73
|
+
:\
|
74
|
+
<select data-type="min">{{mins}}</select>\
|
75
|
+
</div>\
|
76
|
+
',
|
77
|
+
|
78
|
+
'list.Modal': '\
|
79
|
+
<div class="bbf-list-modal">\
|
80
|
+
{{summary}}\
|
81
|
+
</div>\
|
82
|
+
'
|
83
|
+
}, {
|
84
|
+
|
85
|
+
//CLASSNAMES
|
86
|
+
error: 'bbf-error'
|
87
|
+
|
88
|
+
});
|
89
|
+
|
90
|
+
|
91
|
+
})();
|