luca 0.9.65 → 0.9.76
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/CHANGELOG +30 -0
- data/Gemfile +1 -0
- data/Gemfile.lock +27 -0
- data/lib/luca/rails/version.rb +1 -1
- data/spec/components/controller_spec.coffee +58 -0
- data/spec/components/form_view_spec.coffee +4 -0
- data/spec/concerns/dom_helpers_spec.coffee +16 -0
- data/spec/{modules → concerns}/filterable_spec.coffee +0 -0
- data/spec/concerns/model_presenter_spec.coffee +31 -0
- data/spec/{modules → concerns}/paginatable_spec.coffee +0 -0
- data/spec/{modules → concerns}/state_model_spec.coffee +0 -0
- data/spec/concerns_spec.coffee +88 -0
- data/spec/core/container_spec.coffee +103 -6
- data/spec/core/field_spec.coffee +4 -0
- data/spec/core/model_spec.coffee +6 -1
- data/spec/define_spec.coffee +104 -7
- data/spec/framework_spec.coffee +30 -1
- data/spec/util_spec.coffee +24 -0
- data/src/components/application.coffee +62 -25
- data/src/components/base_toolbar.coffee +6 -4
- data/src/components/collection_loader_view.coffee +3 -1
- data/src/components/collection_view.coffee +36 -73
- data/src/components/controller.coffee +73 -35
- data/src/components/fields/button_field.coffee +20 -12
- data/src/components/fields/checkbox_array.coffee +8 -2
- data/src/components/fields/checkbox_field.coffee +18 -9
- data/src/components/fields/file_upload_field.coffee +5 -1
- data/src/components/fields/hidden_field.coffee +3 -1
- data/src/components/fields/label_field.coffee +4 -3
- data/src/components/fields/select_field.coffee +7 -8
- data/src/components/fields/text_area_field.coffee +3 -2
- data/src/components/fields/text_field.coffee +5 -4
- data/src/components/fields/type_ahead_field.coffee +4 -2
- data/src/components/form_button_toolbar.coffee +4 -1
- data/src/components/form_view.coffee +26 -24
- data/src/components/grid_view.coffee +3 -3
- data/src/components/multi_collection_view.coffee +6 -35
- data/src/components/pagination_control.coffee +1 -3
- data/src/components/router.coffee +2 -0
- data/src/components/table_view.coffee +7 -0
- data/src/concerns.coffee +70 -0
- data/src/{modules → concerns}/application_event_bindings.coffee +1 -1
- data/src/{modules → concerns}/collection_event_bindings.coffee +1 -1
- data/src/{modules → concerns}/deferrable.coffee +1 -1
- data/src/{modules → concerns}/dom_helpers.coffee +11 -2
- data/src/{modules → concerns}/enhanced_properties.coffee +1 -1
- data/src/{modules → concerns}/filterable.coffee +11 -11
- data/src/{modules → concerns}/grid_layout.coffee +1 -1
- data/src/{modules → concerns}/loadmaskable.coffee +1 -1
- data/src/{modules → concerns}/local_storage.coffee +0 -0
- data/src/{modules → concerns}/modal_view.coffee +1 -1
- data/src/concerns/model_presenter.coffee +23 -0
- data/src/{modules → concerns}/paginatable.coffee +9 -3
- data/src/concerns/query_collection_bindings.coffee +44 -0
- data/src/{modules → concerns}/state_model.coffee +1 -1
- data/src/{modules → concerns}/templating.coffee +1 -1
- data/src/containers/card_view.coffee +16 -9
- data/src/containers/tab_view.coffee +8 -11
- data/src/containers/viewport.coffee +3 -3
- data/src/core/collection.coffee +39 -28
- data/src/core/container.coffee +37 -15
- data/src/core/field.coffee +40 -39
- data/src/core/meta_data.coffee +93 -0
- data/src/core/model.coffee +18 -1
- data/src/core/registry.coffee +4 -3
- data/src/core/view.coffee +24 -30
- data/src/define.coffee +165 -79
- data/src/framework.coffee +97 -21
- data/src/index.coffee +4 -2
- data/src/managers/collection_manager.coffee +7 -3
- data/src/stylesheets/components/checkbox_array.scss +1 -1
- data/src/stylesheets/components/form_view.scss +5 -5
- data/src/stylesheets/components/viewport.scss +2 -1
- data/src/stylesheets/containers/container.scss +0 -5
- data/src/stylesheets/containers/tab_view.scss +5 -5
- data/src/templates/fields/text_area_field.jst.ejs +1 -1
- data/src/templates/fields/text_field.jst.ejs +1 -1
- data/src/util.coffee +47 -0
- data/vendor/assets/javascripts/luca-ui-full.js +1279 -494
- data/vendor/assets/javascripts/luca-ui-full.min.js +5 -5
- data/vendor/assets/javascripts/luca-ui-templates.js +2 -2
- data/vendor/assets/javascripts/luca-ui.js +1279 -494
- data/vendor/assets/javascripts/luca-ui.min.js +5 -4
- data/vendor/assets/stylesheets/luca-ui.css +15 -15
- metadata +27 -20
- data/spec/mixin_spec.coffee +0 -49
@@ -1,28 +1,87 @@
|
|
1
|
-
|
1
|
+
controller = Luca.register "Luca.components.Controller"
|
2
|
+
controller.extends "Luca.containers.CardView"
|
2
3
|
|
3
|
-
|
4
|
+
controller.publicInterface
|
5
|
+
default: (callback)->
|
6
|
+
@navigate_to(@defaultPage || @defaultCard, callback)
|
7
|
+
|
8
|
+
activePage: ()->
|
9
|
+
@activeSection()
|
4
10
|
|
11
|
+
# switch the active card of this controller
|
12
|
+
# optionally passing an onActivation callback
|
13
|
+
# will fire this callback in the context of
|
14
|
+
# the currently active card
|
15
|
+
navigate_to: (section, callback)->
|
16
|
+
section ||= @defaultCard
|
17
|
+
|
18
|
+
# activate is a method on Luca.containers.CardView which
|
19
|
+
# selects a component and makes it visible, hiding any
|
20
|
+
# other component which may be monopolizing the view at that time.
|
21
|
+
|
22
|
+
# after activation it triggers a after:card:switch event
|
23
|
+
# and if it is the first time that view is being activated,
|
24
|
+
# it triggers a first:activation event which gets relayed to all
|
25
|
+
# child components in that view
|
26
|
+
@activate section, false, (activator, previous,current)=>
|
27
|
+
@state.set(active_section: current.name )
|
28
|
+
if _.isFunction( callback )
|
29
|
+
callback.apply(current)
|
30
|
+
|
31
|
+
# return the section we are navigating to
|
32
|
+
@find(section)
|
33
|
+
|
34
|
+
controller.classMethods
|
35
|
+
controllerPath: ()->
|
36
|
+
component = @
|
37
|
+
|
38
|
+
list = [component.name]
|
39
|
+
atBase = false
|
40
|
+
|
41
|
+
while component and not atBase
|
42
|
+
component = component.getParent?()
|
43
|
+
atBase = true if component?.role is "main_controller"
|
44
|
+
list.push( component.name ) if component? and not atBase
|
45
|
+
|
46
|
+
list.reverse()
|
47
|
+
|
48
|
+
controller.defines
|
49
|
+
additionalClassNames: 'luca-ui-controller'
|
5
50
|
activeAttribute: "active-section"
|
51
|
+
stateful: true
|
6
52
|
|
7
53
|
initialize: (@options)->
|
8
|
-
|
54
|
+
# let's phase out the 'card' terminology
|
55
|
+
# and 'section' while we're at it. page is the word.
|
56
|
+
@defaultCard ||= @defaultPage ||= @components[0]?.name || 0
|
57
|
+
@defaultPage ||= @defaultCard
|
9
58
|
|
10
|
-
@
|
59
|
+
@defaultState ||=
|
60
|
+
active_section: @defaultPage
|
11
61
|
|
12
|
-
|
62
|
+
Luca.containers.CardView::initialize.apply @, arguments
|
63
|
+
|
64
|
+
throw "Controllers must specify a defaultCard property and/or the first component must have a name" unless @defaultCard?
|
13
65
|
|
14
|
-
@
|
15
|
-
|
66
|
+
@_().each (component)->
|
67
|
+
component.controllerPath = Luca.components.Controller.controllerPath
|
16
68
|
|
17
69
|
each: (fn)->
|
18
|
-
_( @components ).each (component)=>
|
19
|
-
fn.apply @, [component]
|
70
|
+
_( @components ).each (component)=> fn.call(@,component)
|
20
71
|
|
21
72
|
activeSection: ()->
|
22
|
-
@get("
|
73
|
+
@get("active_section")
|
74
|
+
|
75
|
+
pageControllers: (deep=false)->
|
76
|
+
@controllers.apply(@, arguments)
|
23
77
|
|
24
78
|
controllers:(deep=false)->
|
25
|
-
@select
|
79
|
+
@select (component)->
|
80
|
+
type = (component.type || component.ctype)
|
81
|
+
type is "controller" or type is "page_controller"
|
82
|
+
|
83
|
+
availablePages: ()->
|
84
|
+
@availableSections.apply(@, arguments)
|
26
85
|
|
27
86
|
availableSections: ()->
|
28
87
|
base = {}
|
@@ -33,31 +92,10 @@ _.def('Luca.components.Controller').extends('Luca.containers.CardView').with
|
|
33
92
|
memo
|
34
93
|
, base
|
35
94
|
|
95
|
+
pageNames: ()->
|
96
|
+
@sectionNames()
|
97
|
+
|
36
98
|
sectionNames: (deep=false)->
|
37
99
|
@pluck('name')
|
38
100
|
|
39
|
-
default: (callback)->
|
40
|
-
@navigate_to(@defaultCard, callback)
|
41
|
-
|
42
|
-
# switch the active card of this controller
|
43
|
-
# optionally passing an onActivation callback
|
44
|
-
# will fire this callback in the context of
|
45
|
-
# the currently active card
|
46
|
-
navigate_to: (section, callback)->
|
47
|
-
section ||= @defaultCard
|
48
|
-
|
49
|
-
# activate is a method on Luca.containers.CardView which
|
50
|
-
# selects a component and makes it visible, hiding any
|
51
|
-
# other component which may be monopolizing the view at that time.
|
52
|
-
|
53
|
-
# after activation it triggers a after:card:switch event
|
54
|
-
# and if it is the first time that view is being activated,
|
55
|
-
# it triggers a first:activation event which gets relayed to all
|
56
|
-
# child components in that view
|
57
|
-
@activate section, false, (activator, previous,current)=>
|
58
|
-
@state.set(active_section: current.name )
|
59
|
-
if _.isFunction( callback )
|
60
|
-
callback.apply(current)
|
61
101
|
|
62
|
-
# return the section we are navigating to
|
63
|
-
@find(section)
|
@@ -1,18 +1,24 @@
|
|
1
|
-
|
1
|
+
buttonField = Luca.register "Luca.fields.ButtonField"
|
2
2
|
|
3
|
-
|
3
|
+
buttonField.extends "Luca.core.Field"
|
4
4
|
|
5
|
-
|
6
|
-
"click input" : "click_handler"
|
7
|
-
|
8
|
-
hooks:[
|
9
|
-
"button:click"
|
10
|
-
]
|
5
|
+
buttonField.triggers "button:click"
|
11
6
|
|
12
|
-
|
7
|
+
buttonField.publicConfiguration
|
8
|
+
readOnly: true
|
9
|
+
input_value: undefined
|
10
|
+
input_type: "button"
|
11
|
+
icon_class: undefined
|
12
|
+
input_name: undefined
|
13
|
+
white: undefined
|
13
14
|
|
14
|
-
|
15
|
+
buttonField.privateConfiguration
|
16
|
+
isButton: true
|
17
|
+
template: "fields/button_field"
|
18
|
+
events:
|
19
|
+
"click input" : "click_handler"
|
15
20
|
|
21
|
+
buttonField.privateInterface
|
16
22
|
click_handler: (e)->
|
17
23
|
me = my = $( e.currentTarget )
|
18
24
|
@trigger "button:click"
|
@@ -29,10 +35,12 @@ _.def('Luca.fields.ButtonField').extends('Luca.core.Field').with
|
|
29
35
|
@input_id ||= _.uniqueId('button')
|
30
36
|
@input_name ||= @name ||= @input_id
|
31
37
|
@input_value ||= @label ||= @text
|
32
|
-
@input_type ||= "button"
|
33
38
|
@input_class ||= @class
|
34
39
|
@icon_class ||= ""
|
35
40
|
@icon_class = "icon-#{ @icon_class }" if @icon_class.length and !@icon_class.match(/^icon-/)
|
36
41
|
@icon_class += " icon-white" if @white
|
37
42
|
|
38
|
-
setValue: ()-> true
|
43
|
+
setValue: ()-> true
|
44
|
+
|
45
|
+
buttonField.defines
|
46
|
+
version: 1
|
@@ -1,6 +1,9 @@
|
|
1
1
|
make = Luca.View::make
|
2
2
|
|
3
|
-
|
3
|
+
checkboxArray = Luca.register "Luca.fields.CheckboxArray"
|
4
|
+
checkboxArray.extends "Luca.core.Field"
|
5
|
+
|
6
|
+
checkboxArray.defines
|
4
7
|
version: 2
|
5
8
|
|
6
9
|
template: "fields/checkbox_array"
|
@@ -14,7 +17,7 @@ _.def('Luca.fields.CheckboxArray').extends('Luca.core.Field').with
|
|
14
17
|
|
15
18
|
initialize: (@options={})->
|
16
19
|
_.extend @, @options
|
17
|
-
_.extend @, Luca.
|
20
|
+
_.extend @, Luca.concerns.Deferrable
|
18
21
|
_.bindAll @, "renderCheckboxes", "clickHandler", "checkSelected"
|
19
22
|
|
20
23
|
Luca.core.Field::initialize.apply @, arguments
|
@@ -33,6 +36,9 @@ _.def('Luca.fields.CheckboxArray').extends('Luca.core.Field').with
|
|
33
36
|
|
34
37
|
cbArray = @
|
35
38
|
|
39
|
+
unless Luca.isBackboneCollection(@collection)
|
40
|
+
throw "Checkbox Array Fields must specify a @collection property"
|
41
|
+
|
36
42
|
if @collection.length > 0
|
37
43
|
@renderCheckboxes()
|
38
44
|
else
|
@@ -1,13 +1,20 @@
|
|
1
|
-
|
1
|
+
checkboxField = Luca.register "Luca.fields.CheckboxField"
|
2
2
|
|
3
|
-
|
4
|
-
"change input" : "change_handler"
|
3
|
+
checkboxField.extends "Luca.core.Field"
|
5
4
|
|
6
|
-
|
7
|
-
|
8
|
-
|
5
|
+
checkboxField.triggers "checked",
|
6
|
+
"unchecked"
|
7
|
+
|
8
|
+
checkboxField.publicConfiguration
|
9
9
|
send_blanks: true
|
10
|
+
input_value: 1
|
10
11
|
|
12
|
+
checkboxField.privateConfiguration
|
13
|
+
template: 'fields/checkbox_field'
|
14
|
+
events:
|
15
|
+
"change input" : "change_handler"
|
16
|
+
|
17
|
+
checkboxField.privateInterface
|
11
18
|
change_handler: (e)->
|
12
19
|
me = my = $(e.target)
|
13
20
|
|
@@ -24,14 +31,16 @@ _.def('Luca.fields.CheckboxField').extends('Luca.core.Field').with
|
|
24
31
|
|
25
32
|
Luca.core.Field::initialize.apply @, arguments
|
26
33
|
|
27
|
-
afterInitialize: ()->
|
28
34
|
@input_id ||= _.uniqueId('field')
|
29
35
|
@input_name ||= @name
|
30
|
-
@input_value ||= 1
|
31
36
|
@label ||= @name
|
32
37
|
|
38
|
+
checkboxField.publicInterface
|
33
39
|
setValue: (checked)->
|
34
40
|
@getInputElement().attr('checked', checked)
|
35
41
|
|
36
42
|
getValue:()->
|
37
|
-
@getInputElement().is(":checked")
|
43
|
+
@getInputElement().is(":checked")
|
44
|
+
|
45
|
+
checkboxField.defines
|
46
|
+
version: 1
|
@@ -1,6 +1,7 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
1
|
+
labelField = Luca.register "Luca.components.LabelField"
|
2
|
+
labelField.extends "Luca.core.Field"
|
3
|
+
|
4
|
+
labelField.defines
|
4
5
|
formatter: (value)->
|
5
6
|
value ||= @getValue()
|
6
7
|
_.str.titleize( value )
|
@@ -1,13 +1,12 @@
|
|
1
|
-
|
1
|
+
selectField = Luca.register "Luca.fields.SelectField"
|
2
2
|
|
3
|
-
|
4
|
-
"change select" : "change_handler"
|
3
|
+
selectField.extends "Luca.core.Field"
|
5
4
|
|
6
|
-
|
7
|
-
"after:select"
|
8
|
-
]
|
5
|
+
selectField.triggers "after:select"
|
9
6
|
|
10
|
-
|
7
|
+
selectField.defines
|
8
|
+
events:
|
9
|
+
"change select" : "change_handler"
|
11
10
|
|
12
11
|
template: "fields/select_field"
|
13
12
|
|
@@ -19,7 +18,7 @@ _.def('Luca.fields.SelectField').extends('Luca.core.Field').with
|
|
19
18
|
|
20
19
|
initialize: (@options={})->
|
21
20
|
_.extend @, @options
|
22
|
-
_.extend @, Luca.
|
21
|
+
_.extend @, Luca.concerns.Deferrable
|
23
22
|
_.bindAll @, "change_handler", "populateOptions", "beforeFetch"
|
24
23
|
|
25
24
|
Luca.core.Field::initialize.apply @, arguments
|
@@ -13,14 +13,15 @@ _.def('Luca.fields.TextAreaField').extends('Luca.core.Field').with
|
|
13
13
|
initialize: (@options={})->
|
14
14
|
_.bindAll @, "keydown_handler"
|
15
15
|
|
16
|
-
Luca.core.Field::initialize.apply @, arguments
|
17
|
-
|
18
16
|
@input_id ||= _.uniqueId('field')
|
19
17
|
@input_name ||= @name
|
20
18
|
@label ||= @name
|
21
19
|
@input_class ||= @class
|
22
20
|
@input_value ||= ""
|
23
21
|
@inputStyles ||= "height:#{ @height };width:#{ @width }"
|
22
|
+
@placeHolder ||= ""
|
23
|
+
|
24
|
+
Luca.core.Field::initialize.apply @, arguments
|
24
25
|
|
25
26
|
setValue: (value)->
|
26
27
|
$( @field() ).val(value)
|
@@ -1,5 +1,7 @@
|
|
1
|
+
textField = Luca.register 'Luca.fields.TextField'
|
2
|
+
textField.extends 'Luca.core.Field'
|
1
3
|
|
2
|
-
|
4
|
+
textField.defines
|
3
5
|
events:
|
4
6
|
"blur input" : "blur_handler"
|
5
7
|
"focus input" : "focus_handler"
|
@@ -22,9 +24,6 @@ _.def('Luca.fields.TextField').extends('Luca.core.Field').with
|
|
22
24
|
@label ||= @name
|
23
25
|
@input_class ||= @class
|
24
26
|
@input_value ||= @value || ""
|
25
|
-
|
26
|
-
# TODO
|
27
|
-
# Placeholder?
|
28
27
|
|
29
28
|
if @prepend
|
30
29
|
@$el.addClass('input-prepend')
|
@@ -34,6 +33,8 @@ _.def('Luca.fields.TextField').extends('Luca.core.Field').with
|
|
34
33
|
@$el.addClass('input-append')
|
35
34
|
@addOn = @append
|
36
35
|
|
36
|
+
@placeHolder ||= ""
|
37
|
+
|
37
38
|
Luca.core.Field::initialize.apply @, arguments
|
38
39
|
|
39
40
|
keyup_handler: (e)->
|
@@ -1,6 +1,8 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
typeAheadField = Luca.register "Luca.fields.TypeAheadField"
|
2
|
+
typeAheadField.extends "Luca.fields.TextField"
|
3
3
|
|
4
|
+
|
5
|
+
typeAheadField.defines
|
4
6
|
getSource: ()->
|
5
7
|
Luca.util.read(@source) || []
|
6
8
|
|
@@ -1,5 +1,7 @@
|
|
1
|
-
|
1
|
+
toolbar = Luca.register "Luca.components.FormButtonToolbar"
|
2
|
+
toolbar.extends "Luca.components.Toolbar"
|
2
3
|
|
4
|
+
toolbar.defines
|
3
5
|
className: 'luca-ui-form-toolbar form-actions'
|
4
6
|
|
5
7
|
position: 'bottom'
|
@@ -8,6 +10,7 @@ _.def('Luca.components.FormButtonToolbar').extends('Luca.components.Toolbar').wi
|
|
8
10
|
|
9
11
|
render: ()->
|
10
12
|
$(@container).append(@el)
|
13
|
+
@
|
11
14
|
|
12
15
|
initialize: (@options={})->
|
13
16
|
Luca.components.Toolbar.prototype.initialize.apply @, arguments
|
@@ -1,25 +1,28 @@
|
|
1
|
-
_.def("Luca.components.FormView").extends('Luca.core.Container').with
|
2
|
-
|
1
|
+
#_.def("Luca.components.FormView").extends('Luca.core.Container').with
|
2
|
+
|
3
|
+
formView = Luca.register "Luca.components.FormView"
|
4
|
+
formView.extends "Luca.core.Container"
|
5
|
+
|
6
|
+
formView.triggers "before:submit",
|
7
|
+
"before:reset",
|
8
|
+
"before:load",
|
9
|
+
"before:load:new",
|
10
|
+
"before:load:existing",
|
11
|
+
"after:submit",
|
12
|
+
"after:reset",
|
13
|
+
"after:load",
|
14
|
+
"after:load:new",
|
15
|
+
"after:load:existing",
|
16
|
+
"after:submit:success",
|
17
|
+
"after:submit:fatal_error",
|
18
|
+
"after:submit:error"
|
19
|
+
|
20
|
+
|
21
|
+
formView.defines
|
3
22
|
tagName: 'form'
|
4
23
|
|
5
24
|
className: 'luca-ui-form-view'
|
6
25
|
|
7
|
-
hooks:[
|
8
|
-
"before:submit"
|
9
|
-
"before:reset"
|
10
|
-
"before:load"
|
11
|
-
"before:load:new"
|
12
|
-
"before:load:existing"
|
13
|
-
"after:submit"
|
14
|
-
"after:reset"
|
15
|
-
"after:load"
|
16
|
-
"after:load:new"
|
17
|
-
"after:load:existing"
|
18
|
-
"after:submit:success"
|
19
|
-
"after:submit:fatal_error"
|
20
|
-
"after:submit:error"
|
21
|
-
]
|
22
|
-
|
23
26
|
events:
|
24
27
|
"click .submit-button" : "submitHandler"
|
25
28
|
"click .reset-button" : "resetHandler"
|
@@ -30,17 +33,16 @@ _.def("Luca.components.FormView").extends('Luca.core.Container').with
|
|
30
33
|
|
31
34
|
bodyClassName: "form-view-body"
|
32
35
|
|
33
|
-
version:
|
36
|
+
version: 1
|
34
37
|
|
35
38
|
initialize: (@options={})->
|
36
|
-
@loadMask = Luca.
|
39
|
+
@loadMask = Luca.config.enableBoostrap unless @loadMask?
|
37
40
|
|
38
41
|
Luca.core.Container::initialize.apply @, arguments
|
39
42
|
|
40
43
|
@components ||= @fields
|
41
44
|
|
42
|
-
_.bindAll @, "submitHandler", "resetHandler", "renderToolbars"
|
43
|
-
|
45
|
+
_.bindAll @, "submitHandler", "resetHandler", "renderToolbars"
|
44
46
|
@state ||= new Backbone.Model
|
45
47
|
|
46
48
|
@setupHooks( @hooks )
|
@@ -55,7 +57,7 @@ _.def("Luca.components.FormView").extends('Luca.core.Container').with
|
|
55
57
|
Luca.components.FormView.defaultFormViewToolbar
|
56
58
|
|
57
59
|
applyStyleClasses: ()->
|
58
|
-
if Luca.
|
60
|
+
if Luca.config.enableBoostrap
|
59
61
|
@applyBootstrapStyleClasses()
|
60
62
|
|
61
63
|
@$el.addClass( "label-align-#{ @labelAlign }") if @labelAlign
|
@@ -181,7 +183,7 @@ _.def("Luca.components.FormView").extends('Luca.core.Container').with
|
|
181
183
|
if options.debug
|
182
184
|
console.log "#{ key } Options", options, "Value", value, "Value Is Blank?", valueIsBlank, "Allow Blanks?", allowBlankValues
|
183
185
|
|
184
|
-
if options.skip_buttons and field.
|
186
|
+
if options.skip_buttons and field.isButton
|
185
187
|
skip = true
|
186
188
|
else
|
187
189
|
if valueIsBlank and allowBlankValues is false
|