diff --git a/admin/class-divi-accessibility-admin.php b/admin/class-divi-accessibility-admin.php index 28a3db6..76b3536 100755 --- a/admin/class-divi-accessibility-admin.php +++ b/admin/class-divi-accessibility-admin.php @@ -163,21 +163,21 @@ public function display_options_page() { public static function get_options_list() { $options = array( - 'aria_support' => 1, - 'dropdown_keyboard_navigation' => 1, - 'fix_labels' => 1, - 'focusable_modules' => 1, - 'keyboard_navigation_outline' => 1, - 'outline_color' => '#2ea3f2', - 'screen_reader_text' => 1, - 'skip_navigation_link' => 1, - 'aria_hidden_icons' => 1, - 'aria_mobile_menu' => 1, - 'fix_duplicate_menu_ids' => 1, - 'underline_urls' => 0, - 'underline_urls_not_title' => 0, - 'tota11y' => 0, - 'developer_mode' => 0, + 'aria_support' => 1, + 'dropdown_keyboard_navigation' => 1, + 'fix_labels' => 1, + 'focusable_modules' => 1, + 'keyboard_navigation_outline' => 1, + 'outline_color' => '#2ea3f2', + 'screen_reader_text' => 1, + 'skip_navigation_link' => 1, + 'aria_hidden_icons' => 1, + 'aria_mobile_menu' => 1, + 'fix_duplicate_menu_ids' => 1, + 'underline_urls' => 0, + 'underline_urls_not_title' => 0, + 'tota11y' => 0, + 'developer_mode' => 0, ); return $options; @@ -210,196 +210,196 @@ public function register_settings() { // ARIA support. add_settings_field( - $this->da11y . '_aria_support', + $this->da11y . '_aria_support', __( 'ARIA support', 'divi-accessibility' ), array( $this, 'divi_accessibility_checkbox_cb' ), $this->da11y, $general_section, array( - 'name' => 'aria_support', - 'label_for' => $this->da11y . '_aria_support', - 'label_text' => __( 'Add appropriate ARIA attributes across Divi elements & modules.', 'divi-accessibility' ), - 'label_subtext' => '', + 'name' => 'aria_support', + 'label_for' => $this->da11y . '_aria_support', + 'label_text' => __( 'Add appropriate ARIA attributes across Divi elements & modules.', 'divi-accessibility' ), + 'label_subtext' => '', ) ); // Dropdown keyboard navigation. add_settings_field( - $this->da11y . '_dropdown_keyboard_navigation', + $this->da11y . '_dropdown_keyboard_navigation', __( 'Dropdown keyboard navigation', 'divi-accessibility' ), array( $this, 'divi_accessibility_checkbox_cb' ), $this->da11y, $general_section, array( - 'name' => 'dropdown_keyboard_navigation', - 'label_for' => $this->da11y . '_dropdown_keyboard_navigation', - 'label_text' => __( 'Allow easier navigation of Divi dropdown menus with the keyboard.', 'divi-accessibility' ), - 'label_subtext' => '', + 'name' => 'dropdown_keyboard_navigation', + 'label_for' => $this->da11y . '_dropdown_keyboard_navigation', + 'label_text' => __( 'Allow easier navigation of Divi dropdown menus with the keyboard.', 'divi-accessibility' ), + 'label_subtext' => '', ) ); // Fix labels. add_settings_field( - $this->da11y . '_fix_labels', + $this->da11y . '_fix_labels', __( 'Fix labels', 'divi-accessibility' ), array( $this, 'divi_accessibility_checkbox_cb' ), $this->da11y, $general_section, array( - 'name' => 'fix_labels', - 'label_for' => $this->da11y . '_fix_labels', - 'label_text' => __( 'Fix missing labels & incorrect or missing assignments to their corresponding inputs.', 'divi-accessibility' ), - 'label_subtext' => '', + 'name' => 'fix_labels', + 'label_for' => $this->da11y . '_fix_labels', + 'label_text' => __( 'Fix missing labels & incorrect or missing assignments to their corresponding inputs.', 'divi-accessibility' ), + 'label_subtext' => '', ) ); // Focusable modules. add_settings_field( - $this->da11y . '_focusable_modules', + $this->da11y . '_focusable_modules', __( 'Focusable modules', 'divi-accessibility' ), array( $this, 'divi_accessibility_checkbox_cb' ), $this->da11y, $general_section, array( - 'name' => 'focusable_modules', - 'label_for' => $this->da11y . '_focusable_modules', - 'label_text' => __( 'Allow Divi modules such as Toggle & Accordion to be focusable with keyboard navigation. Hitting enter will open/close when focused.', 'divi-accessibility' ), - 'label_subtext' => '', + 'name' => 'focusable_modules', + 'label_for' => $this->da11y . '_focusable_modules', + 'label_text' => __( 'Allow Divi modules such as Toggle & Accordion to be focusable with keyboard navigation. Hitting enter will open/close when focused.', 'divi-accessibility' ), + 'label_subtext' => '', ) ); // Keyboard navigation outline. add_settings_field( - $this->da11y . '_keyboard_navigation_outline', + $this->da11y . '_keyboard_navigation_outline', __( 'Keyboard navigation outline', 'divi-accessibility' ), array( $this, 'divi_accessibility_checkbox_cb' ), $this->da11y, $general_section, array( - 'name' => 'keyboard_navigation_outline', - 'label_for' => $this->da11y . '_keyboard_navigation_outline', - 'label_text' => __( 'Add an outline to focused elements when navigation with the keyboard.', 'divi-accessibility' ), - 'label_subtext' => '', + 'name' => 'keyboard_navigation_outline', + 'label_for' => $this->da11y . '_keyboard_navigation_outline', + 'label_text' => __( 'Add an outline to focused elements when navigation with the keyboard.', 'divi-accessibility' ), + 'label_subtext' => '', ) ); // Outline color. add_settings_field( - $this->da11y . '_outline_color', + $this->da11y . '_outline_color', __( 'Outline color', 'divi-accessibility' ), array( $this, 'divi_accessibility_color_picker_cb' ), $this->da11y, $general_section, array( - 'name' => 'outline_color', - 'label_for' => $this->da11y . '_outline_color', - 'label_text' => '', - 'label_subtext' => __( 'Keyboard navigation outline', 'divi-accessibility' ), + 'name' => 'outline_color', + 'label_for' => $this->da11y . '_outline_color', + 'label_text' => '', + 'label_subtext' => __( 'Keyboard navigation outline', 'divi-accessibility' ), ) ); // Screen reader text. add_settings_field( - $this->da11y . '_screen_reader_text', + $this->da11y . '_screen_reader_text', __( 'Screen reader text', 'divi-accessibility' ), array( $this, 'divi_accessibility_checkbox_cb' ), $this->da11y, $general_section, array( - 'name' => 'screen_reader_text', - 'label_for' => $this->da11y . '_screen_reader_text', - 'label_text' => __( 'Add plugin screen reader class used on certain labels & reverses Divi incorrectly applying display: none; on its own screen reader classes.', 'divi-accessibility' ), - 'label_subtext' => '', + 'name' => 'screen_reader_text', + 'label_for' => $this->da11y . '_screen_reader_text', + 'label_text' => __( 'Add plugin screen reader class used on certain labels & reverses Divi incorrectly applying display: none; on its own screen reader classes.', 'divi-accessibility' ), + 'label_subtext' => '', ) ); // Skip navigation link. add_settings_field( - $this->da11y . '_skip_navigation_link', + $this->da11y . '_skip_navigation_link', __( 'Skip navigation link', 'divi-accessibility' ), array( $this, 'divi_accessibility_checkbox_cb' ), $this->da11y, $general_section, array( - 'name' => 'skip_navigation_link', - 'label_for' => $this->da11y . '_skip_navigation_link', - 'label_text' => __( 'Allow user to skip over Divi navigation when using keyboard and go straight to content.', 'divi-accessibility' ), - 'label_subtext' => __( 'Requires screen reader text option to be on', 'divi-accessibility' ), + 'name' => 'skip_navigation_link', + 'label_for' => $this->da11y . '_skip_navigation_link', + 'label_text' => __( 'Allow user to skip over Divi navigation when using keyboard and go straight to content.', 'divi-accessibility' ), + 'label_subtext' => __( 'Requires screen reader text option to be on', 'divi-accessibility' ), ) ); // Aria-hidden on icons. add_settings_field( - $this->da11y . '_aria_hidden_icons', + $this->da11y . '_aria_hidden_icons', __( 'Hide icons', 'divi-accessibility' ), array( $this, 'divi_accessibility_checkbox_cb' ), $this->da11y, $general_section, array( - 'name' => 'aria_hidden_icons', - 'label_for' => $this->da11y . '_aria_hidden_icons', - 'label_text' => __( 'Hide all icons to screen readers so text is read normally.', 'divi-accessibility' ), - 'label_subtext' => __( 'This may not work for all icons', 'divi-accessibility' ), + 'name' => 'aria_hidden_icons', + 'label_for' => $this->da11y . '_aria_hidden_icons', + 'label_text' => __( 'Hide all icons to screen readers so text is read normally.', 'divi-accessibility' ), + 'label_subtext' => __( 'This may not work for all icons', 'divi-accessibility' ), ) ); // Aria support for mobile menu. add_settings_field( - $this->da11y . '_aria_mobile_menu', + $this->da11y . '_aria_mobile_menu', __( 'Aria support for mobile menu', 'divi-accessibility' ), array( $this, 'divi_accessibility_checkbox_cb' ), $this->da11y, $general_section, array( - 'name' => 'aria_mobile_menu', - 'label_for' => $this->da11y . '_aria_mobile_menu', - 'label_text' => __( 'Apply Aria attributes to the mobile (burger) menu to make it accessible.', 'divi-accessibility' ), - 'label_subtext' => '', + 'name' => 'aria_mobile_menu', + 'label_for' => $this->da11y . '_aria_mobile_menu', + 'label_text' => __( 'Apply Aria attributes to the mobile (burger) menu to make it accessible.', 'divi-accessibility' ), + 'label_subtext' => '', ) ); // Fix duplicate menu ids. add_settings_field( - $this->da11y . '_fix_duplicate_menu_ids', + $this->da11y . '_fix_duplicate_menu_ids', __( 'Fix duplicate menu ids', 'divi-accessibility' ), array( $this, 'divi_accessibility_checkbox_cb' ), $this->da11y, $general_section, array( - 'name' => 'fix_duplicate_menu_ids', - 'label_for' => $this->da11y . '_fix_duplicate_menu_ids', - 'label_text' => __( 'Because Divi uses the same menu twice (Once for the primary menu and again for the mobile menu), the unique ID\'s are duplicated causing validation issues. This option prevents WordPress from adding a unique ID to the menu list items.', 'divi-accessibility' ), - 'label_subtext' => '', + 'name' => 'fix_duplicate_menu_ids', + 'label_for' => $this->da11y . '_fix_duplicate_menu_ids', + 'label_text' => __( 'Because Divi uses the same menu twice (Once for the primary menu and again for the mobile menu), the unique ID\'s are duplicated causing validation issues. This option prevents WordPress from adding a unique ID to the menu list items.', 'divi-accessibility' ), + 'label_subtext' => '', ) ); // Add underline to all links in #et-main-area add_settings_field( - $this->da11y . '_underline_urls', + $this->da11y . '_underline_urls', __( 'Underline URLs', 'divi-accessibility' ), array( $this, 'divi_accessibility_checkbox_cb' ), $this->da11y, $general_section, array( - 'name' => 'underline_urls', - 'label_for' => $this->da11y . '_underline_urls', - 'label_text' => __( 'Easily find out URLs when they are underlined' ), - 'label_subtext' => '', + 'name' => 'underline_urls', + 'label_for' => $this->da11y . '_underline_urls', + 'label_text' => __( 'Easily find out URLs when they are underlined' ), + 'label_subtext' => '', ) ); // Remove underline from .entry-title add_settings_field( - $this->da11y . '_underline_urls_not_title', + $this->da11y . '_underline_urls_not_title', __( 'Exclude underlines from titles and buttons', 'divi-accessibility' ), array( $this, 'divi_accessibility_checkbox_cb' ), $this->da11y, $general_section, array( - 'name' => 'underline_urls_not_title', - 'label_for' => $this->da11y . '_underline_urls_not_title', - 'label_text' => __( 'If you don\'t like title, headings or buttons to be underlined you can disable it from here' ), - 'label_subtext' => '', + 'name' => 'underline_urls_not_title', + 'label_for' => $this->da11y . '_underline_urls_not_title', + 'label_text' => __( 'If you don\'t like title, headings or buttons to be underlined you can disable it from here' ), + 'label_subtext' => '', ) ); @@ -413,31 +413,31 @@ public function register_settings() { // Tota11y. add_settings_field( - $this->da11y . '_tota11y', + $this->da11y . '_tota11y', __( 'Tota11y', 'divi-accessibility' ), array( $this, 'divi_accessibility_checkbox_cb' ), $this->da11y, $tools_section, array( - 'name' => 'tota11y', - 'label_for' => $this->da11y . '_tota11y', - 'label_text' => __( 'Add a small button to the bottom corner of site to visualize how your site performs with assistive technology.', 'divi-accessibility' ), - 'label_subtext' => __( 'Admin users only', 'divi-accessibility' ), + 'name' => 'tota11y', + 'label_for' => $this->da11y . '_tota11y', + 'label_text' => __( 'Add a small button to the bottom corner of site to visualize how your site performs with assistive technology.', 'divi-accessibility' ), + 'label_subtext' => __( 'Admin users only', 'divi-accessibility' ), ) ); // Developer mode. add_settings_field( - $this->da11y . '_developer_mode', + $this->da11y . '_developer_mode', __( 'Developer mode', 'divi-accessibility' ), array( $this, 'divi_accessibility_checkbox_cb' ), $this->da11y, $tools_section, array( - 'name' => 'developer_mode', - 'label_for' => $this->da11y . '_developer_mode', - 'label_text' => __( 'Log plugin info to console.', 'divi-accessibility' ), - 'label_subtext' => __( 'Admin users only', 'divi-accessibility' ), + 'name' => 'developer_mode', + 'label_for' => $this->da11y . '_developer_mode', + 'label_text' => __( 'Log plugin info to console.', 'divi-accessibility' ), + 'label_subtext' => __( 'Admin users only', 'divi-accessibility' ), ) ); @@ -531,10 +531,10 @@ public function divi_accessibility_checkbox_cb( $arg ) { @@ -572,11 +572,11 @@ public function divi_accessibility_color_picker_cb( $arg ) {
@@ -589,4 +589,67 @@ class="da11y-color-picker" 'yes_no_button', + 'description' => __( 'Hide From Screen Readers', 'divi-accessibility' ), + 'label' => __( 'Hide From Screen Readers', 'divi-accessibility' ), + 'option_category' => 'configuration', + 'options' => array( + 'off' => et_builder_i18n( 'No' ), + 'on' => et_builder_i18n( 'Yes' ) + ), + 'default' => 'off', + 'toggle_slug' => 'accessibility' + ); + + $fields['hide_aria_element'] = $hide_aria_setting; + + $show_for_screen_readers_only = array( + 'type' => 'yes_no_button', + 'description' => __( 'Make element visible for Screen Readers only', 'divi-accessibility' ), + 'label' => __( 'Show For Screen Readers Only', 'divi-accessibility' ), + 'option_category' => 'configuration', + 'options' => array( + 'off' => et_builder_i18n( 'No' ), + 'on' => et_builder_i18n( 'Yes' ) + ), + 'default' => 'off', + 'toggle_slug' => 'accessibility' + ); + $fields['show_for_screen_readers_only'] = $show_for_screen_readers_only; + + return $fields; + } + + /** + * Add section in DIVI element options modal + * @param string $content + * @param string $post_type + * + * @return string + */ + function divi_builder_add_accessibility_group( $content, $post_type ) { + if( $content ) { + $json = mb_substr( $content, 43, strlen( $content ) - 68 ); + + $params = json_decode( $json, true ); + foreach( $params['optionsToggles'] as $key => $element ) { + $element['general']['toggles']['accessibility'] = array( 'title' => __( 'Accessibility Settings', 'divi-accessibility' ), 'priority' => 50 ); + $params['optionsToggles'][$key] = $element; + } + + return sprintf( + 'window.ETBuilderBackend=jQuery.extend(true,%s,window.ETBuilderBackend)', + et_fb_remove_site_url_protocol( wp_json_encode( $params, ET_BUILDER_JSON_ENCODE_OPTIONS ) ) + ); + } + return ''; + } } diff --git a/includes/class-divi-accessibility.php b/includes/class-divi-accessibility.php index 340e168..8b11c35 100755 --- a/includes/class-divi-accessibility.php +++ b/includes/class-divi-accessibility.php @@ -134,6 +134,11 @@ private function define_admin_hooks() { add_action( 'admin_init', array( $plugin_admin, 'register_settings' ) ); add_filter( 'plugin_action_links_' . DA11Y_FILE, array( $plugin_admin, 'link_settings' ) ); + //DIVI ARIA visibility + add_filter( 'et_builder_module_general_fields', array( $plugin_admin, + 'divi_builder_register_accessibilty_settings' + ), 15, 1 ); + add_filter( 'et_fb_get_asset_definitions', array( $plugin_admin, 'divi_builder_add_accessibility_group' ), 15, 2 ); } /** @@ -156,6 +161,7 @@ private function define_public_hooks() { add_action( 'wp_head', array( $plugin_public, 'accessible_viewport_meta' ) ); add_filter( 'init', array( $plugin_public, 'remove_duplicate_menu_ids' ) ); + add_action( 'et_module_process_display_conditions', array( $plugin_public, 'add_accessibilty_classes' ), PHP_INT_MAX, 3 ); } /** diff --git a/public/class-divi-accessibility-public.php b/public/class-divi-accessibility-public.php index a5720c0..8fb3106 100755 --- a/public/class-divi-accessibility-public.php +++ b/public/class-divi-accessibility-public.php @@ -101,7 +101,7 @@ public function accessible_viewport_meta() { public function setup_scripts_and_styles() { wp_enqueue_script( 'divi-accessibility-da11y', - plugin_dir_url( __FILE__ ) . 'js/da11y.js', + plugin_dir_url( __FILE__ ) . 'js/da11y.js', array( 'jquery' ), $this->version, true @@ -124,7 +124,7 @@ public function setup_scripts_and_styles() { if ( true == $this->can_load_tota11y() ) { wp_enqueue_script( 'divi-accessibility-tota11y', - plugin_dir_url( __FILE__ ) . 'js/tota11y.min.js', + plugin_dir_url( __FILE__ ) . 'js/tota11y.min.js', array( 'jquery' ), $this->version, false @@ -282,9 +282,9 @@ public function get_resource_path( $name, $type ) { ? '' : '.min'; return trailingslashit( $root ) . - sanitize_file_name( $name ) . - $minified . - '.' . $type; + sanitize_file_name( $name ) . + $minified . + '.' . $type; } /** @@ -305,9 +305,9 @@ public function get_resource_url( $name, $type ) { ? '' : '.min'; return trailingslashit( $root ) . - sanitize_file_name( $name ) . - $minified . - '.' . $type; + sanitize_file_name( $name ) . + $minified . + '.' . $type; } /** @@ -333,7 +333,7 @@ public function is_known_type( $type ) { public function is_in_developer_mode() { return apply_filters( 'divi_accessibility_developer_mode', - current_user_can( 'manage_options' ) && $this->can_load( 'developer_mode' ) + current_user_can( 'manage_options' ) && $this->can_load( 'developer_mode' ) ); } @@ -392,4 +392,29 @@ public function remove_duplicate_menu_ids() { } } + + /** + * @param string $output + * @param string $render_method + * @param ET_Builder_Element $element + * + * @return string + */ + function add_accessibilty_classes( $output, $render_method, $element ) { + if( is_string( $output ) ) { + + $class_list = ''; + + if( $element->props['hide_aria_element'] === 'on' ) { + $class_list .= ' aria-hidden'; + } + if( $element->props['show_for_screen_readers_only'] === 'on' ) { + $class_list .= ' screen-reader-text'; + } + if ( $class_list ) { + $output = preg_replace('/class=\"(.*?)\"/', 'class="$1' . $class_list . '"', $output, 1); + } + } + return $output; + } } diff --git a/public/partials/js/aria_support.js b/public/partials/js/aria_support.js index 5bd8046..94c6b7b 100644 --- a/public/partials/js/aria_support.js +++ b/public/partials/js/aria_support.js @@ -255,4 +255,19 @@ jQuery(document).ready(function($) { }); $('#comment-wrap').attr('aria-label', 'Comments'); + /** + * Hide manually disabled ARIA elements + */ + $('.aria-hidden').each(function (index, element) { + hideAriaElement(element); + }); + + function hideAriaElement(element) { + const $element = $(element); + $(element).attr('aria-hidden', 'true'); + + for(const child of $element.children()){ + hideAriaElement(child); + } + } }); diff --git a/public/partials/js/aria_support.min.js b/public/partials/js/aria_support.min.js index 4845876..4d7edd3 100644 --- a/public/partials/js/aria_support.min.js +++ b/public/partials/js/aria_support.min.js @@ -1 +1 @@ -jQuery(document).ready((function(t){t(".et_pb_tabs_controls").each((function(){t(this).attr("role","tablist")})),t(".et_pb_tabs_controls li").each((function(){t(this).attr("role","presentation")})),t(".et_pb_tabs_controls a").each((function(){t(this).attr({role:"tab"})})),t(".et_pb_tab").each((function(){t(this).attr("role","tabpanel")})),t(".et_pb_tabs_controls li:not(.et_pb_tab_active) a").each((function(){t(this).attr({"aria-selected":"false","aria-expanded":"false",tabindex:-1})})),t(".et_pb_tabs_controls li.et_pb_tab_active a").each((function(){t(this).attr({"aria-selected":"true","aria-expanded":"true",tabindex:0})})),t("ul.sub-menu .menu-item a").each((function(){t(this).attr({"aria-haspopup":"true"})})),t("a:not(.et-social-icon a, .wp-block-button__link, figure a, .et_pb_button, .et_pb_video_play a, .et_pb_tabs_controls a)").each((function(){t(this).attr({role:"link"})})),t("#et_search_icon, .et_close_search_field, #et_mobile_nav_menu, #searchsubmit, .icon, .wp-block-button__link, .et_pb_button, .et_pb_video_play a").each((function(){t(this).attr({role:"button"})})),t("#g-recaptcha-response").each((function(){t(this).attr({"aria-hidden":"true","aria-label":"do not use","aria-readonly":"true"})})),t(".et_pb_tabs_controls a").each((function(a){t(this).attr({id:"et_pb_tab_control_"+a,"aria-controls":"et_pb_tab_panel_"+a})})),t(".et_pb_tab").each((function(a){t(this).attr({id:"et_pb_tab_panel_"+a,"aria-labelledby":"et_pb_tab_control_"+a})})),t(".et_pb_tab.et_pb_active_content").each((function(){t(this).attr("aria-hidden","false")})),t(".et_pb_tab:not(.et_pb_active_content)").each((function(){t(this).attr("aria-hidden","true")})),t(".et_pb_tabs").each((function(a){t(this).attr("data-da11y-id","et_pb_tab_module_"+a)})),t(".et_pb_tabs_controls a").on("click",(function(){const a=t(this).attr("id"),e=t(this).closest(".et_pb_tabs").attr("data-da11y-id");t('[data-da11y-id="'+e+'"] .et_pb_tabs_controls a').attr({"aria-selected":"false","aria-expanded":"false",tabindex:-1}),t(this).attr({"aria-selected":"true","aria-expanded":"true",tabindex:0}),t("#"+e+" .et_pb_tab").attr("aria-hidden","true"),t('[aria-labelledby="'+a+'"]').attr("aria-hidden","false")})),t(".et_pb_tabs_controls a").keyup((function(a){const e=t(this).closest(".et_pb_tabs").attr("data-da11y-id"),i=t('[data-da11y-id="'+e+'"]');if(39===a.which){const t=i.find("li.et_pb_tab_active").next();t.length>0?t.find("a").trigger("click"):i.find("li:first a").trigger("click")}else if(37===a.which){const t=i.find("li.et_pb_tab_active").prev();t.length>0?t.find("a").trigger("click"):i.find("li:last a").trigger("click")}t(".et_pb_tabs_controls a").removeClass("keyboard-outline"),i.find("li.et_pb_tab_active a").addClass("keyboard-outline")})),t(".et_pb_search").each((function(a){t(this).attr("data-da11y-id","et_pb_search_module_"+a)})),t('[data-required_mark="required"]').each((function(){t(this).attr("aria-required","true")})),t(".et_pb_contactform_validate_field").attr("type","hidden"),t(".et-pb-contact-message").attr("role","alert"),t("#main-content").attr("role","main"),t(".et_pb_fullwidth_header").each((function(a){t(this).attr("aria-label","Wide Header"+a)})),t("#comment-wrap").attr("aria-label","Comments")})); \ No newline at end of file +jQuery(document).ready((function(t){t(".et_pb_tabs_controls").each((function(){t(this).attr("role","tablist")})),t(".et_pb_tabs_controls li").each((function(){t(this).attr("role","presentation")})),t(".et_pb_tabs_controls a").each((function(){t(this).attr({role:"tab"})})),t(".et_pb_tab").each((function(){t(this).attr("role","tabpanel")})),t(".et_pb_tabs_controls li:not(.et_pb_tab_active) a").each((function(){t(this).attr({"aria-selected":"false","aria-expanded":"false",tabindex:-1})})),t(".et_pb_tabs_controls li.et_pb_tab_active a").each((function(){t(this).attr({"aria-selected":"true","aria-expanded":"true",tabindex:0})})),t("ul.sub-menu .menu-item a").each((function(){t(this).attr({"aria-haspopup":"true"})})),t("a:not(.et-social-icon a, .wp-block-button__link, figure a, .et_pb_button, .et_pb_video_play a, .et_pb_tabs_controls a)").each((function(){t(this).attr({role:"link"})})),t("#et_search_icon, .et_close_search_field, #et_mobile_nav_menu, #searchsubmit, .icon, .wp-block-button__link, .et_pb_button, .et_pb_video_play a").each((function(){t(this).attr({role:"button"})})),t("#g-recaptcha-response").each((function(){t(this).attr({"aria-hidden":"true","aria-label":"do not use","aria-readonly":"true"})})),t(".et_pb_tabs_controls a").each((function(a){t(this).attr({id:"et_pb_tab_control_"+a,"aria-controls":"et_pb_tab_panel_"+a})})),t(".et_pb_tab").each((function(a){t(this).attr({id:"et_pb_tab_panel_"+a,"aria-labelledby":"et_pb_tab_control_"+a})})),t(".et_pb_tab.et_pb_active_content").each((function(){t(this).attr("aria-hidden","false")})),t(".et_pb_tab:not(.et_pb_active_content)").each((function(){t(this).attr("aria-hidden","true")})),t(".et_pb_tabs").each((function(a){t(this).attr("data-da11y-id","et_pb_tab_module_"+a)})),t(".et_pb_tabs_controls a").on("click",(function(){const a=t(this).attr("id"),e=t(this).closest(".et_pb_tabs").attr("data-da11y-id");t('[data-da11y-id="'+e+'"] .et_pb_tabs_controls a').attr({"aria-selected":"false","aria-expanded":"false",tabindex:-1}),t(this).attr({"aria-selected":"true","aria-expanded":"true",tabindex:0}),t("#"+e+" .et_pb_tab").attr("aria-hidden","true"),t('[aria-labelledby="'+a+'"]').attr("aria-hidden","false")})),t(".et_pb_tabs_controls a").keyup((function(a){const e=t(this).closest(".et_pb_tabs").attr("data-da11y-id"),i=t('[data-da11y-id="'+e+'"]');if(39===a.which){const t=i.find("li.et_pb_tab_active").next();t.length>0?t.find("a").trigger("click"):i.find("li:first a").trigger("click")}else if(37===a.which){const t=i.find("li.et_pb_tab_active").prev();t.length>0?t.find("a").trigger("click"):i.find("li:last a").trigger("click")}t(".et_pb_tabs_controls a").removeClass("keyboard-outline"),i.find("li.et_pb_tab_active a").addClass("keyboard-outline")})),t(".et_pb_search").each((function(a){t(this).attr("data-da11y-id","et_pb_search_module_"+a)})),t('[data-required_mark="required"]').each((function(){t(this).attr("aria-required","true")})),t(".et_pb_contactform_validate_field").attr("type","hidden"),t(".et-pb-contact-message").attr("role","alert"),t("#main-content").attr("role","main"),t(".et_pb_fullwidth_header").each((function(a){t(this).attr("aria-label","Wide Header"+a)})),t("#comment-wrap").attr("aria-label","Comments"),t(".aria-hidden").each((function(a,e){!function a(e){const i=t(e);t(e).attr("aria-hidden","true");for(const t of i.children())a(t)}(e)}))})); \ No newline at end of file diff --git a/public/partials/js/focusable_modules.min.js b/public/partials/js/focusable_modules.min.js index 57334ff..ceb546f 100644 --- a/public/partials/js/focusable_modules.min.js +++ b/public/partials/js/focusable_modules.min.js @@ -1 +1 @@ -jQuery(document).ready((function(t){t(".et_pb_toggle").each((function(){t(this).attr("tabindex",0)})),t(".et_pb_toggle").on("keydown",(function(t){32===t.which&&t.preventDefault()})),t(document).on("keyup",(function(e){13!==e.which&&32!==e.which||t(".et_pb_toggle:focus .et_pb_toggle_title").trigger("click")}))})); \ No newline at end of file +jQuery(document).ready((function(t){t(".et_pb_toggle").each((function(e){var a=t(this),o=a.find(".et_pb_toggle_title"),_=a.find(".et_pb_toggle_content"),i=a.hasClass("et_pb_accordion_item");o.attr("role","button"),o.attr("tabindex",0),o.attr("aria-controls","et_pb_toggle_content_"+e),_.attr("id","et_pb_toggle_content_"+e),a.hasClass("et_pb_toggle_open")?(o.attr("aria-expanded",!0),i&&o.attr("aria-disabled",!0)):(o.attr("aria-expanded",!1),i&&o.removeAttr("aria-disabled"))})),t(".et_pb_toggle_title").on("keydown",(function(t){32===t.which&&t.preventDefault()})),t(document).on("keyup",(function(e){13!==e.which&&32!==e.which||t(".et_pb_toggle_title:focus").trigger("click")})),t(".et_pb_toggle_title").on("click",(function(){var e=t(this),a=e.parent();a.hasClass("et_pb_accordion_item")?a.hasClass("et_pb_toggle_open")||(e.closest(".et_pb_accordion").find(".et_pb_toggle").each((function(){if($toggle=t(this),$toggle.hasClass("et_pb_toggle_open")){var e=$toggle.find(".et_pb_toggle_title");e.attr("aria-expanded",!1),e.removeAttr("aria-disabled")}})),setTimeout((function(){e.attr("aria-expanded",!0),e.attr("aria-disabled",!0)}),500)):a.hasClass("et_pb_toggle_open")?e.attr("aria-expanded",!1):e.attr("aria-expanded",!0)}))})); \ No newline at end of file