capybara 2.18.0 → 3.40.0
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.
- checksums.yaml +4 -4
- data/.yardopts +1 -1
- data/History.md +945 -12
- data/License.txt +1 -1
- data/README.md +264 -90
- data/lib/capybara/config.rb +29 -57
- data/lib/capybara/cucumber.rb +2 -3
- data/lib/capybara/driver/base.rb +35 -18
- data/lib/capybara/driver/node.rb +40 -10
- data/lib/capybara/dsl.rb +10 -7
- data/lib/capybara/helpers.rb +70 -31
- data/lib/capybara/minitest/spec.rb +185 -83
- data/lib/capybara/minitest.rb +232 -112
- data/lib/capybara/node/actions.rb +274 -171
- data/lib/capybara/node/base.rb +42 -34
- data/lib/capybara/node/document.rb +15 -3
- data/lib/capybara/node/document_matchers.rb +19 -21
- data/lib/capybara/node/element.rb +362 -135
- data/lib/capybara/node/finders.rb +151 -137
- data/lib/capybara/node/matchers.rb +394 -209
- data/lib/capybara/node/simple.rb +59 -26
- data/lib/capybara/node/whitespace_normalizer.rb +81 -0
- data/lib/capybara/queries/active_element_query.rb +18 -0
- data/lib/capybara/queries/ancestor_query.rb +12 -9
- data/lib/capybara/queries/base_query.rb +39 -28
- data/lib/capybara/queries/current_path_query.rb +21 -27
- data/lib/capybara/queries/match_query.rb +14 -7
- data/lib/capybara/queries/selector_query.rb +659 -149
- data/lib/capybara/queries/sibling_query.rb +11 -9
- data/lib/capybara/queries/style_query.rb +45 -0
- data/lib/capybara/queries/text_query.rb +56 -38
- data/lib/capybara/queries/title_query.rb +8 -11
- data/lib/capybara/rack_test/browser.rb +114 -42
- data/lib/capybara/rack_test/css_handlers.rb +6 -4
- data/lib/capybara/rack_test/driver.rb +22 -17
- data/lib/capybara/rack_test/errors.rb +6 -0
- data/lib/capybara/rack_test/form.rb +93 -58
- data/lib/capybara/rack_test/node.rb +184 -81
- data/lib/capybara/rails.rb +3 -7
- data/lib/capybara/registration_container.rb +41 -0
- data/lib/capybara/registrations/drivers.rb +42 -0
- data/lib/capybara/registrations/patches/puma_ssl.rb +29 -0
- data/lib/capybara/registrations/servers.rb +66 -0
- data/lib/capybara/result.rb +97 -63
- data/lib/capybara/rspec/features.rb +17 -50
- data/lib/capybara/rspec/matcher_proxies.rb +52 -15
- data/lib/capybara/rspec/matchers/base.rb +113 -0
- data/lib/capybara/rspec/matchers/become_closed.rb +33 -0
- data/lib/capybara/rspec/matchers/compound.rb +88 -0
- data/lib/capybara/rspec/matchers/count_sugar.rb +37 -0
- data/lib/capybara/rspec/matchers/have_ancestor.rb +28 -0
- data/lib/capybara/rspec/matchers/have_current_path.rb +29 -0
- data/lib/capybara/rspec/matchers/have_selector.rb +69 -0
- data/lib/capybara/rspec/matchers/have_sibling.rb +27 -0
- data/lib/capybara/rspec/matchers/have_text.rb +33 -0
- data/lib/capybara/rspec/matchers/have_title.rb +29 -0
- data/lib/capybara/rspec/matchers/match_selector.rb +27 -0
- data/lib/capybara/rspec/matchers/match_style.rb +43 -0
- data/lib/capybara/rspec/matchers/spatial_sugar.rb +39 -0
- data/lib/capybara/rspec/matchers.rb +146 -310
- data/lib/capybara/rspec.rb +7 -11
- data/lib/capybara/selector/builders/css_builder.rb +84 -0
- data/lib/capybara/selector/builders/xpath_builder.rb +71 -0
- data/lib/capybara/selector/css.rb +85 -13
- data/lib/capybara/selector/definition/button.rb +68 -0
- data/lib/capybara/selector/definition/checkbox.rb +26 -0
- data/lib/capybara/selector/definition/css.rb +10 -0
- data/lib/capybara/selector/definition/datalist_input.rb +35 -0
- data/lib/capybara/selector/definition/datalist_option.rb +25 -0
- data/lib/capybara/selector/definition/element.rb +28 -0
- data/lib/capybara/selector/definition/field.rb +40 -0
- data/lib/capybara/selector/definition/fieldset.rb +14 -0
- data/lib/capybara/selector/definition/file_field.rb +13 -0
- data/lib/capybara/selector/definition/fillable_field.rb +33 -0
- data/lib/capybara/selector/definition/frame.rb +17 -0
- data/lib/capybara/selector/definition/id.rb +6 -0
- data/lib/capybara/selector/definition/label.rb +62 -0
- data/lib/capybara/selector/definition/link.rb +55 -0
- data/lib/capybara/selector/definition/link_or_button.rb +16 -0
- data/lib/capybara/selector/definition/option.rb +27 -0
- data/lib/capybara/selector/definition/radio_button.rb +27 -0
- data/lib/capybara/selector/definition/select.rb +81 -0
- data/lib/capybara/selector/definition/table.rb +109 -0
- data/lib/capybara/selector/definition/table_row.rb +21 -0
- data/lib/capybara/selector/definition/xpath.rb +5 -0
- data/lib/capybara/selector/definition.rb +280 -0
- data/lib/capybara/selector/filter.rb +2 -17
- data/lib/capybara/selector/filter_set.rb +80 -33
- data/lib/capybara/selector/filters/base.rb +50 -6
- data/lib/capybara/selector/filters/expression_filter.rb +8 -26
- data/lib/capybara/selector/filters/locator_filter.rb +29 -0
- data/lib/capybara/selector/filters/node_filter.rb +16 -12
- data/lib/capybara/selector/regexp_disassembler.rb +211 -0
- data/lib/capybara/selector/selector.rb +93 -210
- data/lib/capybara/selector/xpath_extensions.rb +17 -0
- data/lib/capybara/selector.rb +475 -523
- data/lib/capybara/selenium/atoms/getAttribute.min.js +1 -0
- data/lib/capybara/selenium/atoms/isDisplayed.min.js +1 -0
- data/lib/capybara/selenium/atoms/src/getAttribute.js +161 -0
- data/lib/capybara/selenium/atoms/src/isDisplayed.js +454 -0
- data/lib/capybara/selenium/driver.rb +298 -267
- data/lib/capybara/selenium/driver_specializations/chrome_driver.rb +117 -0
- data/lib/capybara/selenium/driver_specializations/edge_driver.rb +128 -0
- data/lib/capybara/selenium/driver_specializations/firefox_driver.rb +84 -0
- data/lib/capybara/selenium/driver_specializations/internet_explorer_driver.rb +26 -0
- data/lib/capybara/selenium/driver_specializations/safari_driver.rb +24 -0
- data/lib/capybara/selenium/extensions/file_input_click_emulation.rb +34 -0
- data/lib/capybara/selenium/extensions/find.rb +110 -0
- data/lib/capybara/selenium/extensions/html5_drag.rb +229 -0
- data/lib/capybara/selenium/extensions/modifier_keys_stack.rb +28 -0
- data/lib/capybara/selenium/extensions/scroll.rb +76 -0
- data/lib/capybara/selenium/node.rb +517 -145
- data/lib/capybara/selenium/nodes/chrome_node.rb +125 -0
- data/lib/capybara/selenium/nodes/edge_node.rb +110 -0
- data/lib/capybara/selenium/nodes/firefox_node.rb +136 -0
- data/lib/capybara/selenium/nodes/ie_node.rb +22 -0
- data/lib/capybara/selenium/nodes/safari_node.rb +118 -0
- data/lib/capybara/selenium/patches/atoms.rb +18 -0
- data/lib/capybara/selenium/patches/is_displayed.rb +16 -0
- data/lib/capybara/selenium/patches/logs.rb +45 -0
- data/lib/capybara/selenium/patches/pause_duration_fix.rb +9 -0
- data/lib/capybara/selenium/patches/persistent_client.rb +20 -0
- data/lib/capybara/server/animation_disabler.rb +80 -0
- data/lib/capybara/server/checker.rb +44 -0
- data/lib/capybara/server/middleware.rb +71 -0
- data/lib/capybara/server.rb +59 -67
- data/lib/capybara/session/config.rb +81 -67
- data/lib/capybara/session/matchers.rb +28 -20
- data/lib/capybara/session.rb +337 -365
- data/lib/capybara/spec/public/jquery.js +5 -5
- data/lib/capybara/spec/public/offset.js +6 -0
- data/lib/capybara/spec/public/test.js +151 -12
- data/lib/capybara/spec/session/accept_alert_spec.rb +12 -11
- data/lib/capybara/spec/session/accept_confirm_spec.rb +6 -5
- data/lib/capybara/spec/session/accept_prompt_spec.rb +10 -10
- data/lib/capybara/spec/session/active_element_spec.rb +31 -0
- data/lib/capybara/spec/session/all_spec.rb +161 -57
- data/lib/capybara/spec/session/ancestor_spec.rb +27 -24
- data/lib/capybara/spec/session/assert_all_of_selectors_spec.rb +68 -38
- data/lib/capybara/spec/session/assert_current_path_spec.rb +75 -0
- data/lib/capybara/spec/session/assert_selector_spec.rb +143 -0
- data/lib/capybara/spec/session/assert_style_spec.rb +26 -0
- data/lib/capybara/spec/session/assert_text_spec.rb +258 -0
- data/lib/capybara/spec/session/{assert_title.rb → assert_title_spec.rb} +22 -12
- data/lib/capybara/spec/session/attach_file_spec.rb +144 -69
- data/lib/capybara/spec/session/body_spec.rb +12 -13
- data/lib/capybara/spec/session/check_spec.rb +117 -55
- data/lib/capybara/spec/session/choose_spec.rb +64 -31
- data/lib/capybara/spec/session/click_button_spec.rb +231 -173
- data/lib/capybara/spec/session/click_link_or_button_spec.rb +55 -35
- data/lib/capybara/spec/session/click_link_spec.rb +93 -58
- data/lib/capybara/spec/session/current_scope_spec.rb +12 -11
- data/lib/capybara/spec/session/current_url_spec.rb +57 -39
- data/lib/capybara/spec/session/dismiss_confirm_spec.rb +4 -4
- data/lib/capybara/spec/session/dismiss_prompt_spec.rb +3 -2
- data/lib/capybara/spec/session/element/{assert_match_selector.rb → assert_match_selector_spec.rb} +11 -9
- data/lib/capybara/spec/session/element/match_css_spec.rb +18 -10
- data/lib/capybara/spec/session/element/match_xpath_spec.rb +9 -7
- data/lib/capybara/spec/session/element/matches_selector_spec.rb +71 -57
- data/lib/capybara/spec/session/evaluate_async_script_spec.rb +8 -7
- data/lib/capybara/spec/session/evaluate_script_spec.rb +29 -8
- data/lib/capybara/spec/session/execute_script_spec.rb +10 -8
- data/lib/capybara/spec/session/fill_in_spec.rb +134 -43
- data/lib/capybara/spec/session/find_button_spec.rb +25 -24
- data/lib/capybara/spec/session/find_by_id_spec.rb +10 -9
- data/lib/capybara/spec/session/find_field_spec.rb +37 -41
- data/lib/capybara/spec/session/find_link_spec.rb +46 -17
- data/lib/capybara/spec/session/find_spec.rb +260 -145
- data/lib/capybara/spec/session/first_spec.rb +80 -52
- data/lib/capybara/spec/session/frame/frame_title_spec.rb +23 -0
- data/lib/capybara/spec/session/frame/frame_url_spec.rb +23 -0
- data/lib/capybara/spec/session/frame/switch_to_frame_spec.rb +33 -20
- data/lib/capybara/spec/session/frame/within_frame_spec.rb +52 -32
- data/lib/capybara/spec/session/go_back_spec.rb +2 -1
- data/lib/capybara/spec/session/go_forward_spec.rb +2 -1
- data/lib/capybara/spec/session/has_all_selectors_spec.rb +31 -31
- data/lib/capybara/spec/session/has_ancestor_spec.rb +46 -0
- data/lib/capybara/spec/session/has_any_selectors_spec.rb +29 -0
- data/lib/capybara/spec/session/has_button_spec.rb +100 -13
- data/lib/capybara/spec/session/has_css_spec.rb +272 -137
- data/lib/capybara/spec/session/has_current_path_spec.rb +60 -61
- data/lib/capybara/spec/session/has_element_spec.rb +47 -0
- data/lib/capybara/spec/session/has_field_spec.rb +139 -59
- data/lib/capybara/spec/session/has_link_spec.rb +47 -6
- data/lib/capybara/spec/session/has_none_selectors_spec.rb +42 -40
- data/lib/capybara/spec/session/has_select_spec.rb +107 -72
- data/lib/capybara/spec/session/has_selector_spec.rb +120 -71
- data/lib/capybara/spec/session/has_sibling_spec.rb +50 -0
- data/lib/capybara/spec/session/has_table_spec.rb +183 -5
- data/lib/capybara/spec/session/has_text_spec.rb +106 -62
- data/lib/capybara/spec/session/has_title_spec.rb +20 -14
- data/lib/capybara/spec/session/has_xpath_spec.rb +57 -38
- data/lib/capybara/spec/session/{headers.rb → headers_spec.rb} +3 -2
- data/lib/capybara/spec/session/html_spec.rb +14 -6
- data/lib/capybara/spec/session/matches_style_spec.rb +37 -0
- data/lib/capybara/spec/session/node_spec.rb +1024 -153
- data/lib/capybara/spec/session/node_wrapper_spec.rb +39 -0
- data/lib/capybara/spec/session/refresh_spec.rb +12 -6
- data/lib/capybara/spec/session/reset_session_spec.rb +82 -35
- data/lib/capybara/spec/session/{response_code.rb → response_code_spec.rb} +2 -1
- data/lib/capybara/spec/session/save_and_open_page_spec.rb +3 -2
- data/lib/capybara/spec/session/save_and_open_screenshot_spec.rb +8 -12
- data/lib/capybara/spec/session/save_page_spec.rb +42 -55
- data/lib/capybara/spec/session/save_screenshot_spec.rb +16 -14
- data/lib/capybara/spec/session/screenshot_spec.rb +2 -2
- data/lib/capybara/spec/session/scroll_spec.rb +119 -0
- data/lib/capybara/spec/session/select_spec.rb +107 -81
- data/lib/capybara/spec/session/selectors_spec.rb +52 -19
- data/lib/capybara/spec/session/sibling_spec.rb +10 -10
- data/lib/capybara/spec/session/text_spec.rb +37 -21
- data/lib/capybara/spec/session/title_spec.rb +17 -5
- data/lib/capybara/spec/session/uncheck_spec.rb +43 -23
- data/lib/capybara/spec/session/unselect_spec.rb +39 -38
- data/lib/capybara/spec/session/visit_spec.rb +85 -53
- data/lib/capybara/spec/session/window/become_closed_spec.rb +24 -20
- data/lib/capybara/spec/session/window/current_window_spec.rb +5 -3
- data/lib/capybara/spec/session/window/open_new_window_spec.rb +5 -3
- data/lib/capybara/spec/session/window/switch_to_window_spec.rb +27 -22
- data/lib/capybara/spec/session/window/window_opened_by_spec.rb +12 -6
- data/lib/capybara/spec/session/window/window_spec.rb +97 -63
- data/lib/capybara/spec/session/window/windows_spec.rb +12 -10
- data/lib/capybara/spec/session/window/within_window_spec.rb +31 -86
- data/lib/capybara/spec/session/within_spec.rb +83 -44
- data/lib/capybara/spec/spec_helper.rb +54 -44
- data/lib/capybara/spec/test_app.rb +158 -43
- data/lib/capybara/spec/views/animated.erb +49 -0
- data/lib/capybara/spec/views/form.erb +163 -42
- data/lib/capybara/spec/views/frame_child.erb +4 -3
- data/lib/capybara/spec/views/frame_one.erb +2 -1
- data/lib/capybara/spec/views/frame_parent.erb +1 -1
- data/lib/capybara/spec/views/frame_two.erb +1 -1
- data/lib/capybara/spec/views/initial_alert.erb +2 -1
- data/lib/capybara/spec/views/layout.erb +10 -0
- data/lib/capybara/spec/views/obscured.erb +47 -0
- data/lib/capybara/spec/views/offset.erb +33 -0
- data/lib/capybara/spec/views/path.erb +2 -2
- data/lib/capybara/spec/views/popup_one.erb +1 -1
- data/lib/capybara/spec/views/popup_two.erb +1 -1
- data/lib/capybara/spec/views/react.erb +45 -0
- data/lib/capybara/spec/views/scroll.erb +21 -0
- data/lib/capybara/spec/views/spatial.erb +31 -0
- data/lib/capybara/spec/views/tables.erb +68 -1
- data/lib/capybara/spec/views/with_animation.erb +81 -0
- data/lib/capybara/spec/views/with_base_tag.erb +2 -2
- data/lib/capybara/spec/views/with_dragula.erb +24 -0
- data/lib/capybara/spec/views/with_fixed_header_footer.erb +2 -1
- data/lib/capybara/spec/views/with_hover.erb +3 -2
- data/lib/capybara/spec/views/with_hover1.erb +10 -0
- data/lib/capybara/spec/views/with_html.erb +69 -12
- data/lib/capybara/spec/views/with_html5_svg.erb +20 -0
- data/lib/capybara/spec/views/with_jquery_animation.erb +24 -0
- data/lib/capybara/spec/views/with_js.erb +30 -5
- data/lib/capybara/spec/views/with_jstree.erb +26 -0
- data/lib/capybara/spec/views/with_namespace.erb +21 -0
- data/lib/capybara/spec/views/with_scope.erb +2 -2
- data/lib/capybara/spec/views/with_scope_other.erb +6 -0
- data/lib/capybara/spec/views/with_shadow.erb +31 -0
- data/lib/capybara/spec/views/with_slow_unload.erb +2 -1
- data/lib/capybara/spec/views/with_sortable_js.erb +21 -0
- data/lib/capybara/spec/views/with_unload_alert.erb +1 -0
- data/lib/capybara/spec/views/with_windows.erb +1 -1
- data/lib/capybara/spec/views/within_frames.erb +5 -2
- data/lib/capybara/version.rb +2 -1
- data/lib/capybara/window.rb +36 -34
- data/lib/capybara.rb +134 -107
- data/spec/basic_node_spec.rb +60 -34
- data/spec/capybara_spec.rb +63 -88
- data/spec/counter_spec.rb +35 -0
- data/spec/css_builder_spec.rb +101 -0
- data/spec/css_splitter_spec.rb +38 -0
- data/spec/dsl_spec.rb +85 -64
- data/spec/filter_set_spec.rb +27 -9
- data/spec/fixtures/certificate.pem +25 -0
- data/spec/fixtures/key.pem +27 -0
- data/spec/fixtures/selenium_driver_rspec_failure.rb +6 -5
- data/spec/fixtures/selenium_driver_rspec_success.rb +6 -5
- data/spec/minitest_spec.rb +52 -7
- data/spec/minitest_spec_spec.rb +94 -63
- data/spec/per_session_config_spec.rb +14 -13
- data/spec/rack_test_spec.rb +194 -125
- data/spec/regexp_dissassembler_spec.rb +250 -0
- data/spec/result_spec.rb +111 -50
- data/spec/rspec/features_spec.rb +37 -31
- data/spec/rspec/scenarios_spec.rb +10 -8
- data/spec/rspec/shared_spec_matchers.rb +473 -422
- data/spec/rspec/views_spec.rb +5 -3
- data/spec/rspec_matchers_spec.rb +52 -11
- data/spec/rspec_spec.rb +109 -89
- data/spec/sauce_spec_chrome.rb +43 -0
- data/spec/selector_spec.rb +397 -68
- data/spec/selenium_spec_chrome.rb +187 -40
- data/spec/selenium_spec_chrome_remote.rb +96 -0
- data/spec/selenium_spec_edge.rb +60 -0
- data/spec/selenium_spec_firefox.rb +201 -41
- data/spec/selenium_spec_firefox_remote.rb +94 -0
- data/spec/selenium_spec_ie.rb +149 -0
- data/spec/selenium_spec_safari.rb +162 -0
- data/spec/server_spec.rb +213 -102
- data/spec/session_spec.rb +53 -16
- data/spec/shared_selenium_node.rb +79 -0
- data/spec/shared_selenium_session.rb +473 -122
- data/spec/spec_helper.rb +126 -7
- data/spec/whitespace_normalizer_spec.rb +54 -0
- data/spec/xpath_builder_spec.rb +93 -0
- metadata +355 -73
- data/.yard/templates_custom/default/class/html/selectors.erb +0 -38
- data/.yard/templates_custom/default/class/html/setup.rb +0 -17
- data/.yard/yard_extensions.rb +0 -78
- data/lib/capybara/query.rb +0 -7
- data/lib/capybara/rspec/compound.rb +0 -95
- data/lib/capybara/spec/session/assert_current_path.rb +0 -72
- data/lib/capybara/spec/session/assert_selector.rb +0 -148
- data/lib/capybara/spec/session/assert_text.rb +0 -234
- data/lib/capybara/spec/session/source_spec.rb +0 -0
- data/lib/capybara/spec/views/with_title.erb +0 -5
- data/spec/selenium_spec_marionette.rb +0 -127
|
@@ -1,17 +1,23 @@
|
|
|
1
|
-
|
|
2
1
|
<h1>Form</h1>
|
|
3
2
|
|
|
4
|
-
<
|
|
3
|
+
<button type="button" tabindex="1">A Button</button>
|
|
4
|
+
|
|
5
|
+
<label>
|
|
6
|
+
An Input
|
|
7
|
+
<input type="text" tabindex="2">
|
|
8
|
+
</label>
|
|
9
|
+
|
|
10
|
+
<form action="/form" method="post" novalidate>
|
|
5
11
|
|
|
6
12
|
<p>
|
|
7
13
|
<label for="form_title">Title</label>
|
|
8
|
-
<select name="form[title]" id="form_title" class="title">
|
|
14
|
+
<select name="form[title]" id="form_title" class="title" tabindex="3">
|
|
9
15
|
<option class="title">Mrs</option>
|
|
10
16
|
<option class="title">Mr</option>
|
|
11
17
|
<option>Miss</option>
|
|
12
18
|
<option disabled="disabled">Other</option>
|
|
13
19
|
</select>
|
|
14
|
-
|
|
20
|
+
</p>
|
|
15
21
|
|
|
16
22
|
<p>
|
|
17
23
|
<label for="customer_name">Customer Name
|
|
@@ -25,6 +31,12 @@
|
|
|
25
31
|
</label>
|
|
26
32
|
</p>
|
|
27
33
|
|
|
34
|
+
<p>
|
|
35
|
+
<label for="customer_other_email">Customer Other Email
|
|
36
|
+
<input type="text" name="form[customer_other_email]" value="notben@notben.com" id="customer_other_email"/>
|
|
37
|
+
</label>
|
|
38
|
+
</p>
|
|
39
|
+
|
|
28
40
|
<p>
|
|
29
41
|
<label for="form_other_title">Other title</label>
|
|
30
42
|
<select name="form[other_title]" id="form_other_title">
|
|
@@ -56,6 +68,11 @@
|
|
|
56
68
|
<input type="text" name="form[name]" value="John Smith" id="form_name"/>
|
|
57
69
|
</p>
|
|
58
70
|
|
|
71
|
+
<p>
|
|
72
|
+
<label for="form_age">Age</label>
|
|
73
|
+
<input type="range" name="form[age]" value="18" min="13" max="100" step="0.5" id="form_age"/>
|
|
74
|
+
</p>
|
|
75
|
+
|
|
59
76
|
<p>
|
|
60
77
|
<label for="form_schmooo">Schmooo</label>
|
|
61
78
|
<input type="schmooo" name="form[schmooo]" value="This is Schmooo!" id="form_schmooo"/>
|
|
@@ -88,6 +105,11 @@
|
|
|
88
105
|
<input type="file" name="form[image]" id="form_image"/>
|
|
89
106
|
</p>
|
|
90
107
|
|
|
108
|
+
<p>
|
|
109
|
+
<label for="form_hidden_image">Hidden Image</label>
|
|
110
|
+
<input type="file" name="form[hidden_image]" id="form_hidden_image" style="display: none"/>
|
|
111
|
+
</p>
|
|
112
|
+
|
|
91
113
|
<p>
|
|
92
114
|
<input type="hidden" name="form[token]" value="12345" id="form_token"/>
|
|
93
115
|
</p>
|
|
@@ -97,7 +119,7 @@
|
|
|
97
119
|
<select name="form[locale]" id="form_locale">
|
|
98
120
|
<option value="sv">Swedish</option>
|
|
99
121
|
<option selected="selected" value="en">English</option>
|
|
100
|
-
<option value="fi">
|
|
122
|
+
<option value="fi">Finnish</option>
|
|
101
123
|
<option value="no">Norwegian</option>
|
|
102
124
|
<option value="jo">John's made-up language</option>
|
|
103
125
|
<option value="jbo"> Lojban </option>
|
|
@@ -124,7 +146,11 @@
|
|
|
124
146
|
|
|
125
147
|
<p>
|
|
126
148
|
<label for="form_zipcode">Zipcode</label>
|
|
127
|
-
<input type="text" maxlength="5" name="form[zipcode]" id="form_zipcode" />
|
|
149
|
+
<input type="text" maxlength="5" name="form[zipcode]" id="form_zipcode" pattern="[0-9]{5,9}" />
|
|
150
|
+
</p>
|
|
151
|
+
|
|
152
|
+
<p>
|
|
153
|
+
<input maxlength="35" id="long_length" />
|
|
128
154
|
</p>
|
|
129
155
|
|
|
130
156
|
<p>
|
|
@@ -150,7 +176,7 @@ New line after and before textarea tag
|
|
|
150
176
|
<label for="gender_male">Male</label>
|
|
151
177
|
<input type="radio" name="form[gender]" value="female" id="gender_female" checked="checked"/>
|
|
152
178
|
<label for="gender_female">Female</label>
|
|
153
|
-
<input type="radio" name="form[gender]" value="both" id="gender_both"/>
|
|
179
|
+
<input type="radio" name="form[gender]" value="both" id="gender_both" readonly="readonly"/>
|
|
154
180
|
<label for="gender_both">Both</label>
|
|
155
181
|
</p>
|
|
156
182
|
|
|
@@ -185,7 +211,14 @@ New line after and before textarea tag
|
|
|
185
211
|
<label for="form_cars_ferrari">Ferrari</label>
|
|
186
212
|
<input type="checkbox" value="pagani" name="form[cars][]" id="form_cars_pagani" style="position: absolute; left: -9999px"/>
|
|
187
213
|
<label for="form_cars_pagani">Pagani</label>
|
|
214
|
+
<div style="position: relative;">
|
|
215
|
+
<input type="checkbox" value="bugatti" name="form[cars][]" id="form_cars_bugatti"/>
|
|
216
|
+
<div style="position: absolute; top: 0; right: 0; bottom: 0; left: 0; background-color: #fff;">
|
|
217
|
+
<label for="form_cars_bugatti">Bugatti</label>
|
|
218
|
+
</div>
|
|
219
|
+
</div>
|
|
188
220
|
<input type="checkbox" value="ariel" name="form[cars][]" id="form_cars_ariel" style="display: none"/>
|
|
221
|
+
<input type="checkbox" value="porsche" name="form[cars][]" id="form_cars_porsche" checked="checked" style="display: none"/>
|
|
189
222
|
<label>
|
|
190
223
|
McLaren
|
|
191
224
|
<input type="checkbox" value="mclaren" name="form[cars][]" id="form_cars_mclaren" style="display: none"/>
|
|
@@ -194,6 +227,19 @@ New line after and before textarea tag
|
|
|
194
227
|
Koenigsegg
|
|
195
228
|
<input type="checkbox" value="koenigsegg" name="form[cars][]" id="form_cars_koenigsegg" checked="checked" style="display: none"/>
|
|
196
229
|
</label>
|
|
230
|
+
<input type="checkbox" value="maserati" name="form[cars][]" id="form_cars_maserati" disabled="disabled"/>
|
|
231
|
+
<label for="form_cars_maserati">Maserati</label>
|
|
232
|
+
<input type="checkbox" value="lotus" name="form[cars][]" id="form_cars_lotus" style="display: none"/>
|
|
233
|
+
<label for="form_cars_lotus"><a href="#" onclick="return false;">Link here</a>Lotus</label>
|
|
234
|
+
</p>
|
|
235
|
+
|
|
236
|
+
<p>
|
|
237
|
+
<input type="text" name="form[manufacturer]" list="manufacturers" id="manufacturer"/>
|
|
238
|
+
<datalist id="manufacturers">
|
|
239
|
+
<option value="Jaguar">J</option>
|
|
240
|
+
<option value="Audi">
|
|
241
|
+
<option value="Mercedes" disabled>
|
|
242
|
+
</datalist>
|
|
197
243
|
</p>
|
|
198
244
|
|
|
199
245
|
<p>
|
|
@@ -360,7 +406,6 @@ New line after and before textarea tag
|
|
|
360
406
|
</label>
|
|
361
407
|
</p>
|
|
362
408
|
|
|
363
|
-
|
|
364
409
|
<p>
|
|
365
410
|
<label for="form_disabled_file">
|
|
366
411
|
Disabled File
|
|
@@ -368,41 +413,38 @@ New line after and before textarea tag
|
|
|
368
413
|
</label>
|
|
369
414
|
</p>
|
|
370
415
|
|
|
371
|
-
<
|
|
372
|
-
<
|
|
373
|
-
|
|
374
|
-
</fieldset>
|
|
375
|
-
</p>
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
<p>
|
|
379
|
-
<fieldset disabled="disabled">
|
|
380
|
-
<legend>Disabled Child</legend>
|
|
381
|
-
<input name="form[disabled_fieldset_child]" id="form_disabled_fieldset_child"/>
|
|
382
|
-
<select>
|
|
383
|
-
<option>Disabled Child Option</option>
|
|
384
|
-
</select>
|
|
385
|
-
</fieldset>
|
|
416
|
+
<fieldset>
|
|
417
|
+
<input name="form[enabled_fieldset_child]" id="form_enabled_fieldset_child"/>
|
|
418
|
+
</fieldset>
|
|
386
419
|
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
</
|
|
420
|
+
<fieldset disabled="disabled" id="form_disabled_fieldset">
|
|
421
|
+
<legend>Disabled Child</legend>
|
|
422
|
+
<input name="form[disabled_fieldset_child]" id="form_disabled_fieldset_child"/>
|
|
423
|
+
<select>
|
|
424
|
+
<option>Disabled Child Option</option>
|
|
425
|
+
</select>
|
|
426
|
+
</fieldset>
|
|
427
|
+
|
|
428
|
+
<fieldset disabled="disabled">
|
|
429
|
+
<legend>
|
|
430
|
+
Nested Disabled
|
|
431
|
+
<input type="checkbox" name="form[disabled_fieldeset_legend_child]" id="form_disabled_fieldset_legend_child"/>
|
|
432
|
+
</legend>
|
|
433
|
+
<legend>
|
|
434
|
+
Another WLegend
|
|
435
|
+
<input type="checkbox" name="form[disabled_fieldeset_second_legend_child]" id="form_disabled_fieldset_second_legend_child"/>
|
|
436
|
+
</legend>
|
|
437
|
+
<fieldset>
|
|
392
438
|
<legend>
|
|
393
|
-
|
|
394
|
-
<input
|
|
439
|
+
Disabled?
|
|
440
|
+
<input id="form_disabled_fieldset_descendant_legend_child">
|
|
395
441
|
</legend>
|
|
396
|
-
<
|
|
397
|
-
<fieldset>
|
|
398
|
-
<input name="form[disabled_fieldset_descendant]" id="form_disabled_fieldset_descendant"/>
|
|
399
|
-
</fieldset>
|
|
400
|
-
</p>
|
|
442
|
+
<input name="form[disabled_fieldset_descendant]" id="form_disabled_fieldset_descendant"/>
|
|
401
443
|
</fieldset>
|
|
402
|
-
</
|
|
444
|
+
</fieldset>
|
|
403
445
|
|
|
404
446
|
<p>
|
|
405
|
-
<select>
|
|
447
|
+
<select data-test-id="my_test_id">
|
|
406
448
|
<optgroup label="Level One">
|
|
407
449
|
<option> A.1 </option>
|
|
408
450
|
</optgroup>
|
|
@@ -414,21 +456,43 @@ New line after and before textarea tag
|
|
|
414
456
|
</p>
|
|
415
457
|
|
|
416
458
|
<p>
|
|
417
|
-
<input type="button" name="form[fresh]" id="fresh_btn" value="i am fresh"/>
|
|
418
|
-
<input type="submit" name="form[awesome]" id="awe123" title="What an Awesome Button" value="awesome"/>
|
|
459
|
+
<input type="button" aria-label="Aria button" name="form[fresh]" id="fresh_btn" value="i am fresh"/>
|
|
460
|
+
<input type="submit" name="form[awesome]" id="awe123" data-test-id="test_id_button" title="What an Awesome Button" value="awesome"/>
|
|
419
461
|
<input type="submit" name="form[crappy]" id="crap321" value="crappy"/>
|
|
420
462
|
<input type="image" name="form[okay]" id="okay556" title="Okay 556 Image" value="okay" alt="oh hai thar"/>
|
|
421
463
|
<button type="submit" id="click_me_123" title="Click Title button" value="click_me">Click me!</button>
|
|
422
464
|
<button type="submit" name="form[no_value]">No Value!</button>
|
|
423
465
|
<button id="no_type">No Type!</button>
|
|
424
466
|
<button><img alt="A horse eating hay"/></button>
|
|
467
|
+
<button id="button_with_label"></button>
|
|
468
|
+
<label for="button_with_label">button with label element</label>
|
|
469
|
+
<label>
|
|
470
|
+
button within label element
|
|
471
|
+
<button></button>
|
|
472
|
+
</label>
|
|
473
|
+
<label>
|
|
474
|
+
role=button within label element
|
|
475
|
+
<span role="button">with other text</span>
|
|
476
|
+
</label>
|
|
425
477
|
<input type="button" disabled="disabled" value="Disabled button"/>
|
|
478
|
+
<span role="button">ARIA button</span>
|
|
479
|
+
</p>
|
|
480
|
+
|
|
481
|
+
<p>
|
|
482
|
+
<input type="date" name="form[date]" id="form_date"/>
|
|
483
|
+
<input type="time" name="form[time]" id="form_time"/>
|
|
484
|
+
<input type="datetime-local" name="form[datetime]" id="form_datetime">
|
|
426
485
|
</p>
|
|
427
486
|
|
|
428
487
|
<p>
|
|
429
488
|
<input id="readonly" name="form[readonly_test]" readonly/>
|
|
430
489
|
<input id="not_readonly" name="form[readonly_test]" />
|
|
431
490
|
</p>
|
|
491
|
+
|
|
492
|
+
<p>
|
|
493
|
+
<input id="required" name="form[required]" required />
|
|
494
|
+
<input id="length" name="form[length]" minlength="4" maxlength="4" />
|
|
495
|
+
</p>
|
|
432
496
|
</form>
|
|
433
497
|
|
|
434
498
|
<input type="text" name="form[outside_input]" value="outside_input" form="form1"/>
|
|
@@ -438,14 +502,21 @@ New line after and before textarea tag
|
|
|
438
502
|
<input type="text" name="nested_label" id="nested_label"/>
|
|
439
503
|
</label>
|
|
440
504
|
|
|
505
|
+
<label id="wrapper_label">
|
|
506
|
+
Wrapper Label
|
|
507
|
+
<input type="checkbox"/>
|
|
508
|
+
</label>
|
|
509
|
+
|
|
441
510
|
<form id="form1" action="/form" method="post">
|
|
442
511
|
<input type="text" name="form[which_form]" value="form1" id="form_which_form"/>
|
|
443
512
|
<input type="text" name="form[for_form2]" value="for_form2" form="form2"/>
|
|
444
513
|
<input type="submit" name="form[submit_form1]" value="submit_form1" id="submit_form1"/>
|
|
445
514
|
</form>
|
|
446
515
|
|
|
516
|
+
<button type="submit" name="form[outside_button]" value="outside_button" form="form2">Outside!</button>
|
|
517
|
+
|
|
447
518
|
<form id="form2" action="/form" method="post">
|
|
448
|
-
<input type="text" name="form[which_form]" value="form2" id="
|
|
519
|
+
<input type="text" name="form[which_form]" value="form2" id="form_which_form2"/>
|
|
449
520
|
<input type="submit" name="form[unused]" value="unused"/>
|
|
450
521
|
<button type="submit" name="form[other_form_button]" value="other_form_button" form="form1">Form1</button>
|
|
451
522
|
</form>
|
|
@@ -460,8 +531,6 @@ New line after and before textarea tag
|
|
|
460
531
|
</select>
|
|
461
532
|
|
|
462
533
|
<input type="submit" name="form[outside_submit]" value="outside_submit" form="form1"/>
|
|
463
|
-
<button type="submit" name="form[outside_button]" value="outside_button" form="form2">Outside!</button>
|
|
464
|
-
|
|
465
534
|
|
|
466
535
|
<form id="get-form" action="/form/get?foo=bar" method="get">
|
|
467
536
|
<p>
|
|
@@ -471,6 +540,7 @@ New line after and before textarea tag
|
|
|
471
540
|
|
|
472
541
|
<p>
|
|
473
542
|
<input type="submit" name="form[mediocre]" id="mediocre" value="med" aria-label="Mediocre Button"/>
|
|
543
|
+
<input type="submit" formaction="/form/get?bar=foo" id="mediocre2" value="med2"/>
|
|
474
544
|
<p>
|
|
475
545
|
</form>
|
|
476
546
|
|
|
@@ -516,6 +586,19 @@ New line after and before textarea tag
|
|
|
516
586
|
<p>
|
|
517
587
|
</form>
|
|
518
588
|
|
|
589
|
+
<form action="/form" method="post" enctype="multipart/form-data">
|
|
590
|
+
<input type="hidden" name="form[document2]" value="hidden_field"/>
|
|
591
|
+
|
|
592
|
+
<p>
|
|
593
|
+
<label for="form_document">Document with hidden</label>
|
|
594
|
+
<input type="file" name="form[document2]" id="form_document2"/>
|
|
595
|
+
</p>
|
|
596
|
+
|
|
597
|
+
<p>
|
|
598
|
+
<input type="submit" value="Upload Empty With Hidden"/>
|
|
599
|
+
<p>
|
|
600
|
+
</form>
|
|
601
|
+
|
|
519
602
|
<form action="/upload_multiple" method="post" enctype="multipart/form-data">
|
|
520
603
|
<p>
|
|
521
604
|
<label for="form_multiple_file_name">File Name</label>
|
|
@@ -527,6 +610,11 @@ New line after and before textarea tag
|
|
|
527
610
|
<input type="file" name="form[multiple_documents][]" id="form_multiple_documents" multiple="multiple" />
|
|
528
611
|
</p>
|
|
529
612
|
|
|
613
|
+
<p>
|
|
614
|
+
<label for="form_directory_upload">Directory Upload</label>
|
|
615
|
+
<input type="file" name="form[multiple_documents][]" id="form_directory_upload" multiple="multiple" webkitdirectory="webkitdirectory" mozdirectory="mozdirectory" />
|
|
616
|
+
</p>
|
|
617
|
+
|
|
530
618
|
<p>
|
|
531
619
|
<input type="submit" value="Upload Multiple"/>
|
|
532
620
|
<p>
|
|
@@ -536,6 +624,14 @@ New line after and before textarea tag
|
|
|
536
624
|
<p>
|
|
537
625
|
<input type="submit" value="Go FAR"/>
|
|
538
626
|
</p>
|
|
627
|
+
|
|
628
|
+
<input type="hidden" name="form[data]" value="TWTW"/>
|
|
629
|
+
<p>
|
|
630
|
+
<button formaction='/redirect_307'>Go 307</button>
|
|
631
|
+
</p>
|
|
632
|
+
<p>
|
|
633
|
+
<button formaction='/redirect_308'>Go 308</button>
|
|
634
|
+
</p>
|
|
539
635
|
</form>
|
|
540
636
|
|
|
541
637
|
<form action="/form" method="post">
|
|
@@ -599,6 +695,15 @@ New line after and before textarea tag
|
|
|
599
695
|
</p>
|
|
600
696
|
</form>
|
|
601
697
|
|
|
698
|
+
<form id="single_input_form" action="/form" method="post">
|
|
699
|
+
<input type="text" name="form[single_input]" id="single_input"/>
|
|
700
|
+
</form>
|
|
701
|
+
|
|
702
|
+
<form id="two_input_form" action="/form" method="post">
|
|
703
|
+
<input type="text" name="form[two_input_1]" id="two_input_1"/>
|
|
704
|
+
<input type="text" name="form[two_input_2]" id="two_input_2"/>
|
|
705
|
+
</form>
|
|
706
|
+
|
|
602
707
|
<label>Confusion
|
|
603
708
|
<input type="checkbox" id="confusion_checkbox" class="confusion-checkbox confusion"/>
|
|
604
709
|
</label>
|
|
@@ -615,3 +720,19 @@ New line after and before textarea tag
|
|
|
615
720
|
<label for="asterisk_input">With Asterisk<abbr title="required">*</abbr></label>
|
|
616
721
|
<input id="asterisk_input" type="number"value="2016"/>
|
|
617
722
|
</p>
|
|
723
|
+
|
|
724
|
+
<p>
|
|
725
|
+
<input id="special" {custom}="abcdef" value="custom attribute"/>
|
|
726
|
+
</p>
|
|
727
|
+
|
|
728
|
+
|
|
729
|
+
<label for="multi_label_checkbox">
|
|
730
|
+
Label to click
|
|
731
|
+
</label>
|
|
732
|
+
<div>Something random that justifies the usage of a separate label</div>
|
|
733
|
+
<label>
|
|
734
|
+
<div>
|
|
735
|
+
<input type="checkbox" id="multi_label_checkbox" style="display: none"/>
|
|
736
|
+
<div>Visual representation of the checkbox</div>
|
|
737
|
+
</div>
|
|
738
|
+
</label>
|
|
@@ -1,16 +1,17 @@
|
|
|
1
|
-
|
|
1
|
+
<!DOCTYPE html>
|
|
2
2
|
<html>
|
|
3
3
|
<head>
|
|
4
4
|
<title>This is the child frame title</title>
|
|
5
5
|
<script>
|
|
6
6
|
function closeWin() {
|
|
7
|
-
var iframe = window.parent.document.getElementById('childFrame')
|
|
7
|
+
var iframe = window.parent.document.getElementById('childFrame');
|
|
8
8
|
iframe.parentNode.removeChild(iframe)
|
|
9
9
|
}
|
|
10
10
|
</script>
|
|
11
11
|
</head>
|
|
12
12
|
<body id="childBody">
|
|
13
|
-
<a href="javascript:void(0)" onClick="closeWin()">Close Window</a>
|
|
13
|
+
<a href="javascript:void(0)" onClick="closeWin()">Close Window Now</a>
|
|
14
|
+
<a href="javascript:void(0)" onClick="setTimeout(function(){closeWin()}, 10)">Close Window Soon</a>
|
|
14
15
|
<iframe src="/frame_one" id="grandchildFrame1"></iframe>
|
|
15
16
|
<iframe src="/frame_two" id="grandchildFrame2"></iframe>
|
|
16
17
|
</body>
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html>
|
|
3
|
+
<head>
|
|
4
|
+
<meta http-equiv="Content-type" content="text/html; charset=utf-8"/>
|
|
5
|
+
<title>Obscured</title>
|
|
6
|
+
<style>
|
|
7
|
+
div {
|
|
8
|
+
width: 200px;
|
|
9
|
+
height: 200px;
|
|
10
|
+
}
|
|
11
|
+
#cover, #offscreen, #offscreen_wrapper {
|
|
12
|
+
position: absolute;
|
|
13
|
+
}
|
|
14
|
+
#obscured {
|
|
15
|
+
z-index: 1;
|
|
16
|
+
background-color: red;
|
|
17
|
+
}
|
|
18
|
+
#cover {
|
|
19
|
+
top: 0px;
|
|
20
|
+
z-index: 2;
|
|
21
|
+
background-color: blue;
|
|
22
|
+
}
|
|
23
|
+
#offscreen {
|
|
24
|
+
top: 2000px;
|
|
25
|
+
left: 2000px;
|
|
26
|
+
background-color: green;
|
|
27
|
+
}
|
|
28
|
+
#offscreen_wrapper {
|
|
29
|
+
top: 2000px;
|
|
30
|
+
left: 2000px;
|
|
31
|
+
overflow-x: scroll;
|
|
32
|
+
background-color: yellow;
|
|
33
|
+
}
|
|
34
|
+
</style>
|
|
35
|
+
</head>
|
|
36
|
+
<body>
|
|
37
|
+
<div id="obscured">
|
|
38
|
+
<input id="obscured_input"/>
|
|
39
|
+
</div>
|
|
40
|
+
<div id="cover"></div>
|
|
41
|
+
<iframe id="frameOne" height="10px" src="/frame_one"></iframe>
|
|
42
|
+
<iframe id="nestedFrames" src="/frame_parent"></iframe>
|
|
43
|
+
<div id="offscreen_wrapper">
|
|
44
|
+
<div id="offscreen"></div>
|
|
45
|
+
</div>
|
|
46
|
+
</body>
|
|
47
|
+
</html>
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html>
|
|
3
|
+
<head>
|
|
4
|
+
<meta http-equiv="Content-type" content="text/html; charset=utf-8"/>
|
|
5
|
+
<title>Offset</title>
|
|
6
|
+
<style>
|
|
7
|
+
body {
|
|
8
|
+
margin: 0px;
|
|
9
|
+
}
|
|
10
|
+
#wrapper {
|
|
11
|
+
width: 300px;
|
|
12
|
+
height: 300px;
|
|
13
|
+
margin: 0px;
|
|
14
|
+
}
|
|
15
|
+
#clicker {
|
|
16
|
+
position: relative;
|
|
17
|
+
width: 100px;
|
|
18
|
+
height: 100px;
|
|
19
|
+
top: 100px;
|
|
20
|
+
left: 100px;
|
|
21
|
+
background-color: red;
|
|
22
|
+
margin: 0px;
|
|
23
|
+
}
|
|
24
|
+
</style>
|
|
25
|
+
<script src="/jquery.js" type="text/javascript" charset="utf-8"></script>
|
|
26
|
+
<script src="/offset.js" type="text/javascript" charset="utf-8"></script>
|
|
27
|
+
</head>
|
|
28
|
+
<body>
|
|
29
|
+
<div id="wrapper">
|
|
30
|
+
<div id="clicker"></div>
|
|
31
|
+
</div>
|
|
32
|
+
</body>
|
|
33
|
+
</html>
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html>
|
|
3
|
+
<head>
|
|
4
|
+
<script src="https://unpkg.com/react/umd/react.development.js"></script>
|
|
5
|
+
<script src="https://unpkg.com/react-dom/umd/react-dom.development.js"></script>
|
|
6
|
+
</head>
|
|
7
|
+
<body>
|
|
8
|
+
<div id="root"></div>
|
|
9
|
+
<script>
|
|
10
|
+
// https://codepen.io/gaearon/pen/VmmPgp?editors=0010
|
|
11
|
+
class NameForm extends React.Component {
|
|
12
|
+
constructor(props) {
|
|
13
|
+
super(props);
|
|
14
|
+
this.state = { value: '' };
|
|
15
|
+
|
|
16
|
+
this.handleChange = this.handleChange.bind(this);
|
|
17
|
+
this.handleSubmit = this.handleSubmit.bind(this);
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
handleChange(event) {
|
|
21
|
+
this.setState({ value: event.target.value });
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
handleSubmit(event) {
|
|
25
|
+
alert('A name was submitted: ' + this.state.value);
|
|
26
|
+
event.preventDefault();
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
render() {
|
|
30
|
+
return (
|
|
31
|
+
React.createElement("form", { onSubmit: this.handleSubmit },
|
|
32
|
+
React.createElement("label", null, "Name:",
|
|
33
|
+
|
|
34
|
+
React.createElement("input", { type: "text", value: this.state.value, onChange: this.handleChange })),
|
|
35
|
+
|
|
36
|
+
React.createElement("input", { type: "submit", value: "Submit" })));
|
|
37
|
+
}}
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
ReactDOM.render(
|
|
41
|
+
React.createElement(NameForm, null),
|
|
42
|
+
document.getElementById('root'));
|
|
43
|
+
</script>
|
|
44
|
+
</body>
|
|
45
|
+
</html>
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html style="height: 250%; width: 150%">
|
|
3
|
+
<head>
|
|
4
|
+
<style>
|
|
5
|
+
* { padding: 0; }
|
|
6
|
+
div { position: absolute; }
|
|
7
|
+
#scroll { top: 125%; }
|
|
8
|
+
#scrollable { top: 150%; overflow-y: scroll; overflow-x: scroll; height: 50px; width: 50px; position: relative; border: 1px solid black;}
|
|
9
|
+
#inner { top: 50%; }
|
|
10
|
+
</style>
|
|
11
|
+
</head>
|
|
12
|
+
<body style="height: 100%; width: 100%">
|
|
13
|
+
<div id="scroll" style = "top: 125%">scroll</div>
|
|
14
|
+
<div id="scrollable">
|
|
15
|
+
<div style="height: 200px; width: 200px; poistion: relative">
|
|
16
|
+
<div id="inner">inner</div>
|
|
17
|
+
</div>
|
|
18
|
+
</div>
|
|
19
|
+
</div>
|
|
20
|
+
</body>
|
|
21
|
+
</html>
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html>
|
|
3
|
+
<head>
|
|
4
|
+
<meta http-equiv="Content-type" content="text/html; charset=utf-8"/>
|
|
5
|
+
<title>spatial</title>
|
|
6
|
+
<style>
|
|
7
|
+
#spatial {
|
|
8
|
+
display: grid;
|
|
9
|
+
grid-template-columns: repeat(3, 1fr);
|
|
10
|
+
grid-gap: 10px;
|
|
11
|
+
grid-auto-rows: minmax(100px, auto);
|
|
12
|
+
}
|
|
13
|
+
.footer {
|
|
14
|
+
grid-column: 1 / 4;
|
|
15
|
+
}
|
|
16
|
+
</style>
|
|
17
|
+
</head>
|
|
18
|
+
|
|
19
|
+
<body id="spatial">
|
|
20
|
+
<div class="corner">1</div>
|
|
21
|
+
<div class="distance">2</div>
|
|
22
|
+
<div class="corner">3</div>
|
|
23
|
+
<div>4</div>
|
|
24
|
+
<div class="center">5</div>
|
|
25
|
+
<div>6</div>
|
|
26
|
+
<div class="corner">7</div>
|
|
27
|
+
<div>8</div>
|
|
28
|
+
<div class="corner">9</div>
|
|
29
|
+
<div class="footer distance">10</div>
|
|
30
|
+
</body>
|
|
31
|
+
</html>
|