Module: ActiveForm::Mixins::JavascriptMethods
- Defined in:
- lib/active_form/mixins/javascript_methods.rb
Constant Summary collapse
- EVENTS =
[:onsubmit, :onreset, :onclick, :ondblclick, :onmousedown, :onmouseup, :onmouseover, :onmousemove, :onmouseout, :onkeypress, :onkeydown, :onkeyup, :onblur, :onfocus, :onchange]
Instance Method Summary collapse
- #default_javascript ⇒ Object
- #element_javascript(tag = false) ⇒ Object (also: #js, #script)
- #inline_javascript ⇒ Object
- #internal_javascript(tag = false) ⇒ Object
- #internal_javascript=(string_or_array) ⇒ Object
- #javascript(tag = false) ⇒ Object
- #javascript=(string_or_array) ⇒ Object
- #javascript? ⇒ Boolean
- #javascript_events ⇒ Object
- #javascript_var ⇒ Object
- #script_tag ⇒ Object
Instance Method Details
#default_javascript ⇒ Object
14 15 |
# File 'lib/active_form/mixins/javascript_methods.rb', line 14 def default_javascript end |
#element_javascript(tag = false) ⇒ Object Also known as: js, script
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 |
# File 'lib/active_form/mixins/javascript_methods.rb', line 53 def element_javascript(tag = false) return '' unless javascript? elem_var = javascript_var js = (internal_javascript.empty? ? '' : " #{internal_javascript};\n") unless (jsvalidation = javascript_validation_code).blank? js << " #{jsvalidation}\n" end unless (jsvalidationdef = validation_javascript_definitions).blank? js << "#{jsvalidationdef.gsub(/^/, ' ')}\n" end js << (javascript.blank? ? '' : " #{javascript};\n") js << javascript_events.stringify_keys.keys.sort.inject('') do |ary, key| ary << " Event.observe(#{elem_var},'#{key.from(2)}',function(ev){ #{javascript_events[key]}; });\n" end unless javascript_events.empty? js << elements.inject('') do |ejs, elem| if elem.javascript? && !(s = elem.element_javascript).match(/^(\s+)?$/) ejs << "#{s.gsub(/^/, ' ')}\n" end ejs end if container? js << " new Validation(#{elem_var}, #{()});\n" if client_side? && container? && !contained? return '' if js.match(/^(\s+)?$/) str = "var #{elem_var}=$('#{self.identifier}');if(#{elem_var}){\n#{js}}" tag ? javascript_tag(str) : str end |
#inline_javascript ⇒ Object
81 82 83 |
# File 'lib/active_form/mixins/javascript_methods.rb', line 81 def inline_javascript self.javascript_events.inject([]) { |ary, (event, code)| ary << send("inline_#{event}") unless code.blank?; ary }.compact.sort.join(' ') end |
#internal_javascript(tag = false) ⇒ Object
17 18 19 20 21 |
# File 'lib/active_form/mixins/javascript_methods.rb', line 17 def internal_javascript(tag = false) @internal_js ||= JavascriptAttribute.new return @internal_js unless tag @internal_js.empty? ? nil : javascript_tag(@internal_js.to_s) end |
#internal_javascript=(string_or_array) ⇒ Object
23 24 25 |
# File 'lib/active_form/mixins/javascript_methods.rb', line 23 def internal_javascript=(string_or_array) internal_javascript.replace(string_or_array) end |
#javascript(tag = false) ⇒ Object
31 32 33 34 35 |
# File 'lib/active_form/mixins/javascript_methods.rb', line 31 def javascript(tag = false) @javascript_attribute ||= JavascriptAttribute.new.push(default_javascript).compact return @javascript_attribute unless tag @javascript_attribute.empty? ? nil : javascript_tag(@javascript_attribute.to_s) end |
#javascript=(string_or_array) ⇒ Object
37 38 39 |
# File 'lib/active_form/mixins/javascript_methods.rb', line 37 def javascript=(string_or_array) javascript.replace(string_or_array) end |
#javascript? ⇒ Boolean
41 42 43 |
# File 'lib/active_form/mixins/javascript_methods.rb', line 41 def javascript? !(javascript.blank? && javascript_events.empty? && internal_javascript.empty? && javascript_validation_code.blank?) || container? end |
#javascript_events ⇒ Object
27 28 29 |
# File 'lib/active_form/mixins/javascript_methods.rb', line 27 def javascript_events @javascript_events ||= HashWithIndifferentAccess.new end |
#javascript_var ⇒ Object
45 46 47 |
# File 'lib/active_form/mixins/javascript_methods.rb', line 45 def javascript_var "f#{self.element_type}_#{self.identifier}" end |
#script_tag ⇒ Object
49 50 51 |
# File 'lib/active_form/mixins/javascript_methods.rb', line 49 def script_tag element_javascript(true) end |