Class: Dommy::HTMLTextAreaElement
Overview
<textarea> — multi-line text input.
Constant Summary
Constants inherited
from Element
Element::ADJACENT_POSITIONS, Element::APPROX_CHAR_PX, Element::APPROX_LINE_PX, Element::ATTRIBUTE_NODE, Element::CDATA_SECTION_NODE, Element::COMMENT_NODE, Element::DOCUMENT_FRAGMENT_NODE, Element::DOCUMENT_NODE, Element::DOCUMENT_POSITION_CONTAINED_BY, Element::DOCUMENT_POSITION_CONTAINS, Element::DOCUMENT_POSITION_DISCONNECTED, Element::DOCUMENT_POSITION_FOLLOWING, Element::DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC, Element::DOCUMENT_POSITION_PRECEDING, Element::DOCUMENT_TYPE_NODE, Element::ELEMENT_NODE, Element::HTML_NAMESPACE, Element::INLINE_TAGS, Element::PROCESSING_INSTRUCTION_NODE, Element::REFLECTED_TOKEN_LIST_HOSTS, Element::SHADOW_HOST_TAGS, Element::SVG_NAMESPACE, Element::TEXT_NODE
Constants included
from Node
Node::ATTRIBUTE_NODE, Node::CDATA_SECTION_NODE, Node::COMMENT_NODE, Node::DOCUMENT_FRAGMENT_NODE, Node::DOCUMENT_NODE, Node::DOCUMENT_POSITION_CONTAINED_BY, Node::DOCUMENT_POSITION_CONTAINS, Node::DOCUMENT_POSITION_DISCONNECTED, Node::DOCUMENT_POSITION_FOLLOWING, Node::DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC, Node::DOCUMENT_POSITION_PRECEDING, Node::DOCUMENT_TYPE_NODE, Node::ELEMENT_NODE, Node::HTML_NAMESPACE, Node::PROCESSING_INSTRUCTION_NODE, Node::TEXT_NODE, Node::XMLNS_NAMESPACE, Node::XML_NAMESPACE
Instance Attribute Summary
Attributes inherited from Element
#document
Instance Method Summary
collapse
Methods inherited from HTMLElement
#case_sensitive_attribute_names?, #disabled_by_ancestor_fieldset?, #labels_node_list, #parse_non_negative_reflected, #set_non_negative_reflected
included
Methods inherited from Element
#[], #[]=, #__dommy_backend_node__, #__internal_approx_box, #__internal_case_sensitive_attribute_names__?, #__internal_created_namespace__, #__internal_normalize_attr_key__, #__internal_set_namespace__, #__internal_shadow_root__, #__js_attribute_snapshot__, #__run_click_activation_behavior__, #__test_scroll_log__, #access_key_label, #accessibility_tree, #activation_behavior, #activation_target, #activation_target?, #after, #anchor_href, #animate, #approximate_layout?, #aria_content_attr, #aria_element_attr, #aria_element_get, #aria_element_set, #aria_elements_attr, #aria_elements_current, #aria_elements_get, #aria_elements_set, #aria_find_in_root, #aria_get, #aria_ref_in_valid_scope?, #aria_set, #aria_snapshot, #assigned_slot, #at_xpath, #attach_shadow, #attributes, #base_uri, #before, #blur, #child_element_count, #child_nodes, #children, #class_list, #class_name, #class_name=, #clear_aria_element_ref_for, #click, #clone_node, #closest, #computed_description, #computed_label, #computed_role, #contains?, #dataset, #element_prefix, #equal_node?, #first_child, #first_element_child, #focus, #get_animations, #get_attribute, #get_attribute_names, #get_attribute_node, #get_attribute_node_ns, #get_attribute_ns, #get_bounding_client_rect, #get_client_rects, #get_elements_by_class_name, #get_elements_by_tag_name, #get_elements_by_tag_name_ns, #get_html, #get_inner_html, #has_attribute?, #has_attribute_ns?, #has_attributes?, #has_child_nodes?, #hide_popover, #id, #id=, #initialize, #inner_html, #inner_html=, #insert_adjacent_element, #insert_adjacent_html, #insert_adjacent_text, #insert_before, #insertion_parent!, #is_connected?, #last_child, #last_element_child, #live_child_nodes, #local_name, #mark_fragment_scripts_started, #matches?, #namespace_uri, #next_element_sibling, #next_sibling, #on, #outer_html, #outer_html=, #owner_document, #parent_element, #parent_node, #path, #pre_click_activation_state, #previous_element_sibling, #previous_sibling, #query_selector, #query_selector_all, #reflected_attr_name, #reflected_token_list, #remove, #remove_attribute, #remove_attribute_node, #remove_attribute_ns, #remove_child, #replace_child, #replace_with_nodes, #request_fullscreen, #restore_pre_click_activation, #role, #role=, #root_node, #run_post_click_activation, #same_node?, #set_attribute, #set_attribute_node, #set_attribute_ns, #shadow_root, #show_popover, #slot, #slot=, #style, #tag_name, #text_content, #text_content=, #to_s, #toggle_attribute, #toggle_popover, #translate_mode?, #validate_adjacent_document_insert!, #with_selector_errors, #xpath
included
#append, #append_child, #normalize, #prepend, #replace_children
#child_node_after, #child_node_before, #child_node_replace_with, #nullable_dom_string, #validate_insert_before_ref!
Methods included from Node
#compare_document_position, #get_root_node, #is_default_namespace, #is_equal_node, #is_same_node, #lookup_namespace_uri, #lookup_prefix
#__dommy_dump_event_failure__, #__internal_deliver_event__, #__internal_event_parent__, #__internal_process_event_handler_return__, #add_event_listener, capture_flag, #deliver_at, #dispatch_event, #event_name_from_on, #invoke_listener_isolated, js_truthy?, #on_handler, #remove_event_listener, #set_on_handler
Constructor Details
This class inherits a constructor from Dommy::Element
Instance Method Details
#__apply_cloning_state__(state) ⇒ Object
2216
2217
2218
2219
2220
2221
|
# File 'lib/dommy/html_elements.rb', line 2216
def __apply_cloning_state__(state)
return unless state[:dirty]
@__value = state[:value]
@__value_dirty = true
end
|
#__cloning_state__ ⇒ Object
HTML cloning steps: copy the dirty value flag + raw value so a clone keeps
the user-entered text rather than reverting to the default (child text).
2212
2213
2214
|
# File 'lib/dommy/html_elements.rb', line 2212
def __cloning_state__
@__value_dirty ? { value: @__value, dirty: true } : nil
end
|
#__js_call__(method, args) ⇒ Object
2379
2380
2381
2382
2383
2384
2385
2386
2387
2388
2389
2390
2391
2392
2393
2394
2395
2396
|
# File 'lib/dommy/html_elements.rb', line 2379
def __js_call__(method, args)
case method
when "select"
select
when "setSelectionRange"
set_selection_range(args[0], args[1], args[2])
when "setRangeText"
set_range_text(args[0])
when "checkValidity"
check_validity
when "reportValidity"
report_validity
when "setCustomValidity"
set_custom_validity(args[0])
else
super
end
end
|
#__js_get__(key) ⇒ Object
2324
2325
2326
2327
2328
2329
2330
2331
2332
2333
2334
2335
2336
2337
2338
2339
2340
2341
2342
2343
2344
2345
2346
2347
2348
2349
2350
2351
2352
2353
2354
2355
|
# File 'lib/dommy/html_elements.rb', line 2324
def __js_get__(key)
case key
when "value"
value
when "defaultValue"
default_value
when "rows"
rows
when "cols"
cols
when "maxLength"
max_length
when "minLength"
min_length
when "textLength"
text_length
when "type"
type
when "form"
form
when "labels"
labels
when "validity"
validity
when "willValidate"
will_validate
when "validationMessage"
validation_message
else
super
end
end
|
#__js_set__(key, v) ⇒ Object
2357
2358
2359
2360
2361
2362
2363
2364
2365
2366
2367
2368
2369
2370
2371
2372
2373
2374
|
# File 'lib/dommy/html_elements.rb', line 2357
def __js_set__(key, v)
case key
when "value"
self.value = v
when "defaultValue"
self.default_value = v
when "rows"
self.rows = v
when "cols"
self.cols = v
when "maxLength"
self.max_length = v
when "minLength"
self.min_length = v
else
super
end
end
|
#check_validity ⇒ Object
2309
2310
2311
2312
2313
|
# File 'lib/dommy/html_elements.rb', line 2309
def check_validity
ok = !will_validate || validity.valid
dispatch_event(Event.new("invalid", "bubbles" => false, "cancelable" => true)) unless ok
ok
end
|
#cols ⇒ Object
2231
2232
2233
|
# File 'lib/dommy/html_elements.rb', line 2231
def cols
(@__node__["cols"] || "20").to_i
end
|
#cols=(v) ⇒ Object
2235
2236
2237
|
# File 'lib/dommy/html_elements.rb', line 2235
def cols=(v)
set_reflected_string("cols", v.to_s)
end
|
#default_value ⇒ Object
defaultValue is the child text content; setting it (or text) leaves the
dirty value flag alone.
2202
2203
2204
|
# File 'lib/dommy/html_elements.rb', line 2202
def default_value
text_content
end
|
#default_value=(v) ⇒ Object
2206
2207
2208
|
# File 'lib/dommy/html_elements.rb', line 2206
def default_value=(v)
self.text_content = v
end
|
2269
2270
2271
|
# File 'lib/dommy/html_elements.rb', line 2269
def form
closest("form")
end
|
#labels ⇒ Object
2273
2274
2275
|
# File 'lib/dommy/html_elements.rb', line 2273
def labels
labels_node_list
end
|
#max_length ⇒ Object
maxLength / minLength reflect a "limited to only non-negative numbers"
long: a missing / negative / non-numeric content attribute is -1.
2241
2242
2243
|
# File 'lib/dommy/html_elements.rb', line 2241
def max_length
parse_non_negative_reflected("maxlength")
end
|
#max_length=(value) ⇒ Object
2249
2250
2251
|
# File 'lib/dommy/html_elements.rb', line 2249
def max_length=(value)
set_non_negative_reflected("maxlength", value)
end
|
#min_length ⇒ Object
2245
2246
2247
|
# File 'lib/dommy/html_elements.rb', line 2245
def min_length
parse_non_negative_reflected("minlength")
end
|
#min_length=(value) ⇒ Object
2253
2254
2255
|
# File 'lib/dommy/html_elements.rb', line 2253
def min_length=(value)
set_non_negative_reflected("minlength", value)
end
|
#report_validity ⇒ Object
2315
2316
2317
|
# File 'lib/dommy/html_elements.rb', line 2315
def report_validity
check_validity
end
|
#rows ⇒ Object
2223
2224
2225
|
# File 'lib/dommy/html_elements.rb', line 2223
def rows
(@__node__["rows"] || "2").to_i
end
|
#rows=(v) ⇒ Object
2227
2228
2229
|
# File 'lib/dommy/html_elements.rb', line 2227
def rows=(v)
set_reflected_string("rows", v.to_s)
end
|
#select ⇒ Object
No real selection — same stub story as input.
2278
2279
2280
|
# File 'lib/dommy/html_elements.rb', line 2278
def select
nil
end
|
#set_custom_validity(msg) ⇒ Object
2319
2320
2321
2322
|
# File 'lib/dommy/html_elements.rb', line 2319
def set_custom_validity(msg)
@custom_validity_message = msg.to_s
nil
end
|
#set_range_text(_replacement, *_) ⇒ Object
2286
2287
2288
|
# File 'lib/dommy/html_elements.rb', line 2286
def set_range_text(_replacement, *_)
nil
end
|
#set_selection_range(_s, _e, _direction = nil) ⇒ Object
2282
2283
2284
|
# File 'lib/dommy/html_elements.rb', line 2282
def set_selection_range(_s, _e, _direction = nil)
nil
end
|
#text_length ⇒ Object
2261
2262
2263
|
# File 'lib/dommy/html_elements.rb', line 2261
def text_length
value.length
end
|
#type ⇒ Object
2265
2266
2267
|
# File 'lib/dommy/html_elements.rb', line 2265
def type
"textarea"
end
|
#validation_message ⇒ Object
2299
2300
2301
2302
2303
2304
2305
2306
2307
|
# File 'lib/dommy/html_elements.rb', line 2299
def validation_message
return "" unless will_validate
msg = (@custom_validity_message || "").to_s
return msg unless msg.empty?
return "Please fill out this field." if validity.value_missing
""
end
|
#validity ⇒ Object
2290
2291
2292
|
# File 'lib/dommy/html_elements.rb', line 2290
def validity
@__validity ||= ValidityState.new(self)
end
|
#value ⇒ Object
The API value is the "raw value" — the dirty value once set (a wrapper-level
flag, NOT a content attribute, so setAttribute("value", …) can't touch it),
otherwise the default value (the element's child text content).
2191
2192
2193
|
# File 'lib/dommy/html_elements.rb', line 2191
def value
@__value_dirty ? @__value.to_s : default_value
end
|
#value=(v) ⇒ Object
2195
2196
2197
2198
|
# File 'lib/dommy/html_elements.rb', line 2195
def value=(v)
@__value = v.to_s
@__value_dirty = true
end
|
#will_validate ⇒ Object
2294
2295
2296
2297
|
# File 'lib/dommy/html_elements.rb', line 2294
def will_validate
!reflected_boolean("disabled") && !disabled_by_ancestor_fieldset? &&
!reflected_boolean("readonly") && closest("datalist").nil?
end
|