From 10559982f463f6f69fd86740516151f95e64dbc8 Mon Sep 17 00:00:00 2001
From: Omar ElHawary
Date: Wed, 8 Apr 2026 13:34:15 +0200
Subject: [PATCH 01/73] feat(addons): add members-admin-menus addon
- Add addon bootstrap, activator, and app layer for admin menu editing
- Load per-role menu rules and integrate with Members addon system
Made-with: Cursor
---
addons/members-admin-menus/addon.php | 14 +
addons/members-admin-menus/app/class-app.php | 46 +
.../app/functions-admin.php | 711 +++++++++++++
addons/members-admin-menus/app/functions.php | 942 ++++++++++++++++++
addons/members-admin-menus/bootstrap/app.php | 35 +
addons/members-admin-menus/config/app.php | 16 +
addons/members-admin-menus/src/Activator.php | 55 +
7 files changed, 1819 insertions(+)
create mode 100644 addons/members-admin-menus/addon.php
create mode 100644 addons/members-admin-menus/app/class-app.php
create mode 100644 addons/members-admin-menus/app/functions-admin.php
create mode 100644 addons/members-admin-menus/app/functions.php
create mode 100644 addons/members-admin-menus/bootstrap/app.php
create mode 100644 addons/members-admin-menus/config/app.php
create mode 100644 addons/members-admin-menus/src/Activator.php
diff --git a/addons/members-admin-menus/addon.php b/addons/members-admin-menus/addon.php
new file mode 100644
index 0000000..4377bea
--- /dev/null
+++ b/addons/members-admin-menus/addon.php
@@ -0,0 +1,14 @@
+$key = $args[ $key ];
+ }
+ }
+ }
+}
diff --git a/addons/members-admin-menus/app/functions-admin.php b/addons/members-admin-menus/app/functions-admin.php
new file mode 100644
index 0000000..572b2e5
--- /dev/null
+++ b/addons/members-admin-menus/app/functions-admin.php
@@ -0,0 +1,711 @@
+ $cfg ) {
+ if ( ! is_array( $cfg ) ) {
+ continue;
+ }
+ foreach ( array( 'submenu_order', 'overrides' ) as $sub ) {
+ if ( isset( $cfg[ $sub ] ) && is_array( $cfg[ $sub ] ) && empty( $cfg[ $sub ] ) ) {
+ $settings[ $key ][ $id ][ $sub ] = new \stdClass();
+ } elseif ( isset( $cfg[ $sub ] ) && is_array( $cfg[ $sub ] ) ) {
+ $settings[ $key ][ $id ][ $sub ] = (object) $cfg[ $sub ];
+ }
+ }
+ if ( isset( $cfg['capabilities'] ) && is_array( $cfg['capabilities'] ) ) {
+ $settings[ $key ][ $id ]['capabilities'] = empty( $cfg['capabilities'] ) ? new \stdClass() : (object) $cfg['capabilities'];
+ }
+ }
+ $settings[ $key ] = (object) $settings[ $key ];
+ }
+ }
+ if ( isset( $settings['_meta'] ) && is_array( $settings['_meta'] ) ) {
+ $settings['_meta'] = (object) $settings['_meta'];
+ }
+ return $settings;
+}
+
+/**
+ * Enqueue scripts and styles for the Admin Menus page.
+ *
+ * @return void
+ */
+function enqueue_admin_menus_assets() {
+ wp_enqueue_media();
+ wp_enqueue_style( 'members-admin' );
+ wp_enqueue_style( 'wp-color-picker' );
+ wp_enqueue_style(
+ 'members-admin-menus-fa',
+ 'https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.2/css/all.min.css',
+ array(),
+ '6.5.2'
+ );
+ wp_enqueue_script( 'members-admin-menus' );
+
+ $settings = get_settings();
+ $tree = build_menu_tree_for_js();
+
+ if ( empty( $settings['_defaults']['captured'] ) && ! empty( $tree ) ) {
+ $settings['_defaults'] = array(
+ 'captured' => true,
+ 'tree' => $tree,
+ );
+ update_option( OPTION_KEY, $settings );
+ }
+
+ $roles = array();
+ foreach ( \members_get_roles() as $role_obj ) {
+ $roles[] = array(
+ 'slug' => $role_obj->name,
+ 'label' => $role_obj->label,
+ );
+ }
+
+ $role_caps = array();
+ foreach ( \members_get_roles() as $role_obj ) {
+ $wp_role = \get_role( $role_obj->name );
+ if ( $wp_role && ! empty( $wp_role->capabilities ) ) {
+ $role_caps[ $role_obj->name ] = array_keys( array_filter( $wp_role->capabilities ) );
+ } else {
+ $role_caps[ $role_obj->name ] = array();
+ }
+ }
+
+ wp_localize_script(
+ 'members-admin-menus',
+ 'membersAdminMenus',
+ array(
+ 'menuTree' => $tree,
+ 'settings' => ensure_objects_for_js( $settings ),
+ 'roles' => $roles,
+ 'roleCaps' => $role_caps,
+ 'adminEditable' => ! empty( $settings['_meta']['admin_editable'] ),
+ 'nonce' => wp_create_nonce( 'members_admin_menus' ),
+ 'ajaxUrl' => admin_url( 'admin-ajax.php' ),
+ 'exportUrl' => add_query_arg(
+ array(
+ 'action' => 'members_admin_menus_export',
+ 'nonce' => wp_create_nonce( 'members_admin_menus' ),
+ ),
+ admin_url( 'admin-ajax.php' )
+ ),
+ 'i18n' => array(
+ 'save' => __( 'Save changes', 'members' ),
+ 'reset' => __( 'Reset', 'members' ),
+ 'resetAll' => __( 'Reset all roles', 'members' ),
+ 'resetRole' => __( 'Reset this role', 'members' ),
+ 'addItem' => __( 'Add custom item', 'members' ),
+ 'copyRole' => __( 'Copy from role', 'members' ),
+ 'import' => __( 'Import', 'members' ),
+ 'export' => __( 'Export', 'members' ),
+ 'adminEditable' => __( 'Allow editing administrator menus', 'members' ),
+ 'adminEditableWarn' => __( 'This can lock administrators out of menus. Continue?', 'members' ),
+ 'saved' => __( 'Settings saved.', 'members' ),
+ 'visibility' => __( 'Visibility per role', 'members' ),
+ 'title' => __( 'Title', 'members' ),
+ 'url' => __( 'URL', 'members' ),
+ 'selectRole' => __( 'Select source role', 'members' ),
+ 'of' => __( 'of', 'members' ),
+ ),
+ )
+ );
+}
+
+/**
+ * Render the standalone Admin Menus page.
+ *
+ * @return void
+ */
+function render_admin_menus_page() {
+ ?>
+
+ $menu,
+ 'submenu' => $submenu,
+ );
+}
+
+/**
+ * Convert a menu slug to a full admin URL.
+ *
+ * @param string $slug Menu slug.
+ * @return string
+ */
+function slug_to_admin_url( $slug ) {
+ if ( 0 === strpos( $slug, 'http' ) || 0 === strpos( $slug, '//' ) ) {
+ return $slug;
+ }
+ if ( false !== strpos( $slug, '.php' ) ) {
+ return admin_url( $slug );
+ }
+ return admin_url( 'admin.php?page=' . $slug );
+}
+
+/**
+ * Build hierarchical menu tree for JS (run once snapshot captured).
+ *
+ * @return array
+ */
+function build_menu_tree_for_js() {
+ global $members_admin_menus_snapshot;
+ if ( empty( $members_admin_menus_snapshot['menu'] ) || ! is_array( $members_admin_menus_snapshot['menu'] ) ) {
+ return array();
+ }
+ // Sort by numeric key to match WordPress's rendering order (ksort).
+ $sorted_menu = $members_admin_menus_snapshot['menu'];
+ ksort( $sorted_menu );
+ $tree = array();
+ foreach ( $sorted_menu as $key => $item ) {
+ if ( ! isset( $item[2] ) ) {
+ continue;
+ }
+ $slug = $item[2];
+ if ( false !== strpos( $slug, 'separator' ) || false !== strpos( $slug, 'wp-menu-separator' ) ) {
+ continue;
+ }
+ $raw = isset( $item[0] ) ? $item[0] : $slug;
+ $title = trim( wp_strip_all_tags( preg_replace( '/ ?]*class="[^"]*(?:update-plugins|awaiting-mod|pending-count|count-\d|menu-counter)[^"]*"[^>]*>.*<\/span>/si', '', $raw ) ) );
+ // Skip top-level items with empty titles (hidden/internal pages).
+ if ( '' === $title ) {
+ continue;
+ }
+ $icon = isset( $item[6] ) ? $item[6] : '';
+ $icon_type = 'dashicon';
+ if ( '' === $icon || 'none' === $icon || 'div' === $icon ) {
+ $icon_type = 'none';
+ $icon = '';
+ } elseif ( 0 === strpos( $icon, 'data:image/' ) ) {
+ $icon_type = 'svg';
+ } elseif ( 0 === strpos( $icon, 'http' ) || 0 === strpos( $icon, '//' ) ) {
+ $icon_type = 'image';
+ }
+ $node = array(
+ 'id' => $slug,
+ 'title' => $title,
+ 'url' => slug_to_admin_url( $slug ),
+ 'icon' => $icon,
+ 'icon_type' => $icon_type,
+ 'type' => 'top',
+ 'cap' => isset( $item[1] ) ? $item[1] : 'read',
+ 'children' => array(),
+ );
+ if ( ! empty( $members_admin_menus_snapshot['submenu'][ $slug ] ) ) {
+ $sorted_subs = $members_admin_menus_snapshot['submenu'][ $slug ];
+ ksort( $sorted_subs );
+ $seen_subslugs = array();
+ foreach ( $sorted_subs as $subitem ) {
+ if ( empty( $subitem[2] ) ) {
+ continue;
+ }
+ $subslug = $subitem[2];
+ // Skip the redundant first child that matches the parent slug (WP convention).
+ if ( $subslug === $slug ) {
+ continue;
+ }
+ // Skip duplicate submenu slugs (some plugins register multiple entries for the same slug).
+ if ( isset( $seen_subslugs[ $subslug ] ) ) {
+ continue;
+ }
+ $seen_subslugs[ $subslug ] = true;
+ // Compute the clean title.
+ $sub_raw = isset( $subitem[0] ) ? $subitem[0] : '';
+ $sub_title = trim( wp_strip_all_tags( preg_replace( '/ ?]*class="[^"]*(?:update-plugins|awaiting-mod|pending-count|count-\d|menu-counter)[^"]*"[^>]*>.*<\/span>/si', '', $sub_raw ) ) );
+ // Skip items with empty titles — these are hidden/internal pages registered by plugins.
+ if ( '' === $sub_title ) {
+ continue;
+ }
+ $cid = $slug . '::' . $subslug;
+ $node['children'][] = array(
+ 'id' => $cid,
+ 'title' => $sub_title,
+ 'url' => slug_to_admin_url( $subslug ),
+ 'type' => 'sub',
+ 'cap' => isset( $subitem[1] ) ? $subitem[1] : 'read',
+ );
+ }
+ }
+ $tree[] = $node;
+ }
+ return $tree;
+}
+
+/**
+ * AJAX: save full settings JSON.
+ *
+ * @return void
+ */
+function ajax_save_settings() {
+ if ( ! isset( $_POST['nonce'] ) || ! wp_verify_nonce( sanitize_text_field( wp_unslash( $_POST['nonce'] ) ), 'members_admin_menus' ) ) {
+ wp_send_json_error( array( 'message' => __( 'Invalid security token.', 'members' ) ), 403 );
+ }
+ if ( ! current_user_can( 'manage_options' ) ) {
+ wp_send_json_error( array( 'message' => __( 'Permission denied.', 'members' ) ), 403 );
+ }
+ $raw = isset( $_POST['settings'] ) ? wp_unslash( $_POST['settings'] ) : '';
+ if ( is_string( $raw ) ) {
+ $data = json_decode( $raw, true );
+ } else {
+ $data = $raw;
+ }
+ if ( ! is_array( $data ) ) {
+ wp_send_json_error( array( 'message' => __( 'Invalid data.', 'members' ) ), 400 );
+ }
+ $sanitized = sanitize_settings_payload( $data );
+ update_option( OPTION_KEY, $sanitized );
+ wp_send_json_success( array( 'message' => __( 'Settings saved.', 'members' ) ) );
+}
+
+/**
+ * Sanitize settings array from client.
+ *
+ * @param array $data Raw data.
+ * @return array
+ */
+function sanitize_settings_payload( $data ) {
+ if ( ! is_array( $data ) ) {
+ return get_default_settings();
+ }
+
+ $defaults = get_default_settings();
+ $allowed = array( '_meta', 'roles', 'users', 'custom_items', 'capabilities', '_defaults' );
+ $filtered = array();
+ foreach ( $allowed as $key ) {
+ if ( array_key_exists( $key, $data ) ) {
+ $filtered[ $key ] = $data[ $key ];
+ }
+ }
+
+ $out = wp_parse_args( $filtered, $defaults );
+
+ $out['_meta'] = array(
+ 'version' => isset( $out['_meta']['version'] ) ? absint( $out['_meta']['version'] ) : 3,
+ 'admin_editable' => ! empty( $out['_meta']['admin_editable'] ),
+ );
+
+ if ( isset( $out['_defaults'] ) && is_array( $out['_defaults'] ) ) {
+ $d = $out['_defaults'];
+ $out['_defaults'] = array(
+ 'captured' => ! empty( $d['captured'] ),
+ );
+ if ( isset( $d['tree'] ) && is_array( $d['tree'] ) ) {
+ $out['_defaults']['tree'] = $d['tree'];
+ }
+ }
+
+ if ( isset( $out['roles'] ) && is_array( $out['roles'] ) ) {
+ $roles = array();
+ foreach ( $out['roles'] as $role_key => $cfg ) {
+ $sanitized = sanitize_key( $role_key );
+ if ( ! $sanitized ) {
+ continue;
+ }
+ $roles[ $sanitized ] = sanitize_role_config( $cfg );
+ }
+ $out['roles'] = $roles;
+ }
+
+ if ( isset( $out['users'] ) && is_array( $out['users'] ) ) {
+ $users = array();
+ foreach ( $out['users'] as $uid => $cfg ) {
+ $uid = absint( $uid );
+ if ( $uid < 1 ) {
+ continue;
+ }
+ $users[ $uid ] = sanitize_role_config( $cfg );
+ }
+ $out['users'] = $users;
+ }
+
+ if ( isset( $out['custom_items'] ) && is_array( $out['custom_items'] ) ) {
+ $out['custom_items'] = array_map( __NAMESPACE__ . '\sanitize_custom_item', $out['custom_items'] );
+ }
+
+ if ( isset( $out['capabilities'] ) && is_array( $out['capabilities'] ) ) {
+ $caps = array();
+ foreach ( $out['capabilities'] as $slug => $cap ) {
+ $caps[ sanitize_text_field( $slug ) ] = sanitize_key( $cap );
+ }
+ $out['capabilities'] = $caps;
+ }
+
+ return $out;
+}
+
+/**
+ * Sanitize role or user config block.
+ *
+ * @param mixed $cfg Config.
+ * @return array
+ */
+function sanitize_role_config( $cfg ) {
+ if ( ! is_array( $cfg ) ) {
+ return array();
+ }
+ $out = array();
+ if ( isset( $cfg['hidden'] ) && is_array( $cfg['hidden'] ) ) {
+ $out['hidden'] = array_map( 'sanitize_text_field', $cfg['hidden'] );
+ }
+ if ( isset( $cfg['order'] ) && is_array( $cfg['order'] ) ) {
+ $out['order'] = array_map( 'sanitize_text_field', $cfg['order'] );
+ }
+ if ( isset( $cfg['submenu_order'] ) && is_array( $cfg['submenu_order'] ) ) {
+ $so = array();
+ foreach ( $cfg['submenu_order'] as $parent => $children ) {
+ $p = sanitize_text_field( $parent );
+ if ( ! $p || ! is_array( $children ) ) {
+ continue;
+ }
+ $so[ $p ] = array_map( 'sanitize_text_field', $children );
+ }
+ $out['submenu_order'] = $so;
+ }
+ if ( isset( $cfg['capabilities'] ) && is_array( $cfg['capabilities'] ) ) {
+ $out['capabilities'] = array();
+ foreach ( $cfg['capabilities'] as $slug => $cap ) {
+ $s = sanitize_text_field( $slug );
+ if ( ! $s ) {
+ continue;
+ }
+ $out['capabilities'][ $s ] = sanitize_key( $cap );
+ }
+ }
+ if ( isset( $cfg['overrides'] ) && is_array( $cfg['overrides'] ) ) {
+ $out['overrides'] = array();
+ foreach ( $cfg['overrides'] as $slug => $ov ) {
+ $s = sanitize_text_field( $slug );
+ if ( ! $s || ! is_array( $ov ) ) {
+ continue;
+ }
+ $out['overrides'][ $s ] = array(
+ 'label' => isset( $ov['label'] ) ? sanitize_text_field( $ov['label'] ) : '',
+ 'icon_type' => isset( $ov['icon_type'] ) ? sanitize_key( $ov['icon_type'] ) : '',
+ 'icon' => isset( $ov['icon'] ) ? sanitize_text_field( $ov['icon'] ) : '',
+ 'url' => isset( $ov['url'] ) ? esc_url_raw( $ov['url'] ) : '',
+ 'color_bg' => isset( $ov['color_bg'] ) ? sanitize_hex_color( $ov['color_bg'] ) : '',
+ 'color_text' => isset( $ov['color_text'] ) ? sanitize_hex_color( $ov['color_text'] ) : '',
+ 'color_icon' => isset( $ov['color_icon'] ) ? sanitize_hex_color( $ov['color_icon'] ) : '',
+ 'parent' => isset( $ov['parent'] ) ? sanitize_text_field( $ov['parent'] ) : '',
+ );
+ }
+ }
+ return $out;
+}
+
+/**
+ * Sanitize one custom menu item.
+ *
+ * @param mixed $item Item.
+ * @return array
+ */
+function sanitize_custom_item( $item ) {
+ if ( ! is_array( $item ) ) {
+ return array();
+ }
+ return array(
+ 'id' => isset( $item['id'] ) ? sanitize_key( $item['id'] ) : wp_unique_id( 'c' ),
+ 'label' => isset( $item['label'] ) ? sanitize_text_field( $item['label'] ) : '',
+ 'url' => isset( $item['url'] ) ? esc_url_raw( $item['url'] ) : '',
+ 'icon_type' => isset( $item['icon_type'] ) ? sanitize_key( $item['icon_type'] ) : 'dashicon',
+ 'icon' => isset( $item['icon'] ) ? sanitize_text_field( $item['icon'] ) : 'dashicons-admin-generic',
+ 'parent' => isset( $item['parent'] ) ? sanitize_text_field( $item['parent'] ) : '',
+ 'position' => isset( $item['position'] ) ? absint( $item['position'] ) : 99,
+ 'cap' => isset( $item['cap'] ) ? sanitize_key( $item['cap'] ) : 'read',
+ );
+}
+
+/**
+ * AJAX reset.
+ *
+ * @return void
+ */
+function ajax_reset_settings() {
+ if ( ! isset( $_POST['nonce'] ) || ! wp_verify_nonce( sanitize_text_field( wp_unslash( $_POST['nonce'] ) ), 'members_admin_menus' ) ) {
+ wp_send_json_error( array( 'message' => __( 'Invalid security token.', 'members' ) ), 403 );
+ }
+ if ( ! current_user_can( 'manage_options' ) ) {
+ wp_send_json_error( array( 'message' => __( 'Permission denied.', 'members' ) ), 403 );
+ }
+ $scope = isset( $_POST['scope'] ) ? sanitize_key( wp_unslash( $_POST['scope'] ) ) : 'all';
+ $role = isset( $_POST['role'] ) ? sanitize_key( wp_unslash( $_POST['role'] ) ) : '';
+ $settings = get_settings();
+ if ( 'role' === $scope && $role ) {
+ unset( $settings['roles'][ $role ] );
+ } else {
+ $settings['roles'] = array();
+ $settings['users'] = array();
+ $settings['custom_items'] = array();
+ $settings['capabilities'] = array();
+ }
+ update_option( OPTION_KEY, $settings );
+ wp_send_json_success( array( 'message' => __( 'Reset complete.', 'members' ) ) );
+}
+
+/**
+ * Export JSON download via AJAX redirect or direct.
+ *
+ * @return void
+ */
+function ajax_export_settings() {
+ if ( ! isset( $_GET['nonce'] ) || ! wp_verify_nonce( sanitize_text_field( wp_unslash( $_GET['nonce'] ) ), 'members_admin_menus' ) ) {
+ wp_die( esc_html__( 'Invalid security token.', 'members' ) );
+ }
+ if ( ! current_user_can( 'manage_options' ) ) {
+ wp_die( esc_html__( 'Permission denied.', 'members' ) );
+ }
+ $data = get_settings();
+ nocache_headers();
+ header( 'Content-Type: application/json; charset=utf-8' );
+ header( 'Content-Disposition: attachment; filename="members-admin-menus-export.json"' );
+ echo wp_json_encode( $data, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE );
+ exit;
+}
+
+/**
+ * Import settings from uploaded JSON.
+ *
+ * @return void
+ */
+function ajax_import_settings() {
+ if ( ! isset( $_POST['nonce'] ) || ! wp_verify_nonce( sanitize_text_field( wp_unslash( $_POST['nonce'] ) ), 'members_admin_menus' ) ) {
+ wp_send_json_error( array( 'message' => __( 'Invalid security token.', 'members' ) ), 403 );
+ }
+ if ( ! current_user_can( 'manage_options' ) ) {
+ wp_send_json_error( array( 'message' => __( 'Permission denied.', 'members' ) ), 403 );
+ }
+ $raw = isset( $_POST['settings'] ) ? wp_unslash( $_POST['settings'] ) : '';
+ $data = json_decode( $raw, true );
+ if ( ! is_array( $data ) ) {
+ wp_send_json_error( array( 'message' => __( 'Invalid JSON.', 'members' ) ), 400 );
+ }
+ update_option( OPTION_KEY, sanitize_settings_payload( $data ) );
+ wp_send_json_success( array( 'message' => __( 'Settings imported.', 'members' ) ) );
+}
+
+/**
+ * User search for per-user column (Phase 3 UI).
+ *
+ * @return void
+ */
+function ajax_user_search() {
+ if ( ! isset( $_GET['nonce'] ) || ! wp_verify_nonce( sanitize_text_field( wp_unslash( $_GET['nonce'] ) ), 'members_admin_menus' ) ) {
+ wp_send_json_error( array( 'message' => __( 'Invalid security token.', 'members' ) ), 403 );
+ }
+ if ( ! current_user_can( 'manage_options' ) ) {
+ wp_send_json_error( array( 'message' => __( 'Permission denied.', 'members' ) ), 403 );
+ }
+ $term = isset( $_GET['term'] ) ? sanitize_text_field( wp_unslash( $_GET['term'] ) ) : '';
+ if ( strlen( $term ) < 2 ) {
+ wp_send_json_success( array() );
+ }
+ $query = new \WP_User_Query(
+ array(
+ 'number' => 20,
+ 'search' => '*' . $term . '*',
+ 'search_columns' => array( 'user_login', 'user_nicename', 'user_email', 'display_name' ),
+ 'fields' => array( 'ID', 'user_login', 'display_name' ),
+ )
+ );
+ $out = array();
+ foreach ( $query->get_results() as $u ) {
+ $user_obj = get_userdata( $u->ID );
+ $out[] = array(
+ 'id' => (int) $u->ID,
+ 'label' => $u->display_name . ' (' . $u->user_login . ')',
+ 'roles' => $user_obj ? $user_obj->roles : array(),
+ );
+ }
+ wp_send_json_success( $out );
+}
diff --git a/addons/members-admin-menus/app/functions.php b/addons/members-admin-menus/app/functions.php
new file mode 100644
index 0000000..52b8590
--- /dev/null
+++ b/addons/members-admin-menus/app/functions.php
@@ -0,0 +1,942 @@
+ $child_order ) {
+ if ( ! isset( $submenu[ $parent ] ) || ! is_array( $child_order ) ) {
+ continue;
+ }
+ $submenu[ $parent ] = reorder_submenu_items( $submenu[ $parent ], $child_order );
+ }
+ }
+
+ // Phase 2: label, icon, URL, colors.
+ if ( ! empty( $cfg['overrides'] ) && is_array( $cfg['overrides'] ) ) {
+ apply_menu_overrides( $cfg['overrides'] );
+ apply_color_overrides( $cfg['overrides'] );
+ apply_level_moves( $cfg['overrides'] );
+ }
+
+ // Phase 3: capability-based hiding (independent of role hidden lists).
+ $cap_map = isset( $cfg['capabilities'] ) ? $cfg['capabilities'] : array();
+ if ( ! empty( $cap_map ) && is_array( $cap_map ) ) {
+ foreach ( $cap_map as $slug => $cap ) {
+ $slug = sanitize_text_field( $slug );
+ $cap = sanitize_key( $cap );
+ if ( ! $slug || ! $cap || current_user_can( $cap ) || members_admin_menus_is_protected_slug( $slug ) ) {
+ continue;
+ }
+ if ( false !== strpos( $slug, '::' ) ) {
+ $parts = explode( '::', $slug, 2 );
+ if ( count( $parts ) === 2 ) {
+ remove_submenu_page( $parts[0], $parts[1] );
+ }
+ } else {
+ remove_menu_page( $slug );
+ }
+ }
+ }
+
+ // Hide items (last).
+ $hidden = isset( $cfg['hidden'] ) ? $cfg['hidden'] : array();
+ if ( empty( $hidden ) || ! is_array( $hidden ) ) {
+ return;
+ }
+
+ foreach ( $hidden as $slug ) {
+ $slug = sanitize_text_field( $slug );
+ if ( ! $slug || members_admin_menus_is_protected_slug( $slug ) ) {
+ continue;
+ }
+ if ( false !== strpos( $slug, '::' ) ) {
+ $parts = explode( '::', $slug, 2 );
+ if ( count( $parts ) === 2 ) {
+ remove_submenu_page( $parts[0], $parts[1] );
+ }
+ } else {
+ remove_menu_page( $slug );
+ }
+ }
+}
+
+/**
+ * Late registration for custom menu entries (after core menus).
+ *
+ * @return void
+ */
+function inject_custom_menu_items_late() {
+ if ( ! is_admin() || ! get_current_user_id() || is_user_exempt( get_current_user_id() ) ) {
+ return;
+ }
+ $cfg = get_resolved_config_for_user( get_current_user_id() );
+ if ( empty( $cfg['custom_items'] ) ) {
+ return;
+ }
+ inject_custom_menu_items( $cfg['custom_items'] );
+}
+
+/**
+ * Reorder $menu array by slug list.
+ *
+ * @param array $menu Admin menu global.
+ * @param array $order Ordered slugs.
+ * @return array
+ */
+function reorder_menu_by_slug_list( $menu, $order ) {
+ $by_slug = array();
+ foreach ( $menu as $key => $item ) {
+ if ( isset( $item[2] ) ) {
+ $by_slug[ $item[2] ] = $item;
+ }
+ }
+ $new = array();
+ $used = array();
+ $pos = 1;
+ $order = array_map( 'strval', $order );
+ foreach ( $order as $slug ) {
+ if ( ! isset( $by_slug[ $slug ] ) || isset( $used[ $slug ] ) ) {
+ continue;
+ }
+ $new[ $pos ] = $by_slug[ $slug ];
+ $used[ $slug ] = true;
+ $pos++;
+ }
+ // Append items not in our order list.
+ foreach ( $menu as $k => $item ) {
+ if ( isset( $item[2] ) && ! isset( $used[ $item[2] ] ) ) {
+ $new[ $pos ] = $item;
+ $pos++;
+ } elseif ( ! isset( $item[2] ) ) {
+ // Separators and other items without a slug.
+ $new[ $pos ] = $item;
+ $pos++;
+ }
+ }
+ return $new;
+}
+
+/**
+ * Reorder submenu items array.
+ *
+ * @param array $items Submenu items.
+ * @param array $child_order Slugs in order.
+ * @return array
+ */
+function reorder_submenu_items( $items, $child_order ) {
+ $by_slug = array();
+ foreach ( $items as $idx => $item ) {
+ if ( isset( $item[2] ) ) {
+ $by_slug[ $item[2] ] = array( 'idx' => $idx, 'item' => $item );
+ }
+ }
+ $new = array();
+ $seen = array();
+ foreach ( $child_order as $slug ) {
+ if ( isset( $by_slug[ $slug ] ) ) {
+ $i = $by_slug[ $slug ]['idx'];
+ if ( ! isset( $seen[ $i ] ) ) {
+ $new[] = $by_slug[ $slug ]['item'];
+ $seen[ $i ] = true;
+ }
+ }
+ }
+ foreach ( $items as $idx => $item ) {
+ if ( empty( $seen[ $idx ] ) ) {
+ $new[] = $item;
+ }
+ }
+ return $new;
+}
+
+/**
+ * Inject real WordPress separator entries into $menu based on sep-* tokens
+ * in the order array.
+ *
+ * Walks through the order array and, whenever a sep-* token is encountered,
+ * inserts a proper WP separator entry at the corresponding position in $menu.
+ *
+ * @param array $menu The admin menu array (already reordered by slug list).
+ * @param array $order The full order array including sep-* tokens.
+ * @return array Modified menu array with separators injected.
+ */
+function inject_separators( $menu, $order ) {
+ $sep_positions = array();
+ $real_idx = 0;
+
+ foreach ( $order as $token ) {
+ $token = (string) $token;
+ if ( 0 === strpos( $token, 'sep-' ) ) {
+ $sep_positions[] = $real_idx;
+ } else {
+ $real_idx++;
+ }
+ }
+
+ if ( empty( $sep_positions ) ) {
+ return $menu;
+ }
+
+ $items = array_values( $menu );
+ $result = array();
+ $pos = 1;
+ $item_i = 0;
+ $sep_i = 0;
+ $total = count( $items );
+ $placed = 0;
+
+ for ( $slot = 0; $placed < $total || $sep_i < count( $sep_positions ); $slot++ ) {
+ if ( $sep_i < count( $sep_positions ) && $sep_positions[ $sep_i ] === $item_i ) {
+ $result[ $pos ] = array(
+ '',
+ 'read',
+ 'separator-members-am-' . $sep_i,
+ '',
+ 'wp-menu-separator',
+ );
+ $pos++;
+ $sep_i++;
+ } elseif ( $item_i < $total ) {
+ $result[ $pos ] = $items[ $item_i ];
+ $pos++;
+ $item_i++;
+ $placed++;
+ } else {
+ break;
+ }
+ }
+
+ while ( $item_i < $total ) {
+ $result[ $pos ] = $items[ $item_i ];
+ $pos++;
+ $item_i++;
+ }
+
+ return $result;
+}
+
+/**
+ * Apply label, icon, URL, colors to menu globals.
+ *
+ * @param array $overrides Overrides keyed by canonical slug.
+ * @return void
+ */
+function apply_menu_overrides( $overrides ) {
+ global $menu, $submenu;
+ $fa_icons = array();
+
+ foreach ( $menu as $k => $item ) {
+ if ( empty( $item[2] ) ) {
+ continue;
+ }
+ $slug = $item[2];
+ if ( empty( $overrides[ $slug ] ) || ! is_array( $overrides[ $slug ] ) ) {
+ continue;
+ }
+ $o = $overrides[ $slug ];
+ if ( ! empty( $o['label'] ) ) {
+ $menu[ $k ][0] = wp_strip_all_tags( $o['label'] );
+ }
+ if ( ! empty( $o['url'] ) ) {
+ $menu[ $k ][2] = esc_url_raw( $o['url'] );
+ }
+ if ( ! empty( $o['icon_type'] ) && ! empty( $o['icon'] ) ) {
+ $icon_type = $o['icon_type'];
+ $icon = $o['icon'];
+
+ if ( 'dashicon' === $icon_type ) {
+ $menu[ $k ][6] = sanitize_text_field( $icon );
+ } elseif ( 'fontawesome' === $icon_type ) {
+ $menu[ $k ][6] = 'none';
+ $id = isset( $item[5] ) ? sanitize_html_class( $item[5] ) : '';
+ if ( $id ) {
+ $fa_icons[ $id ] = esc_attr( $icon );
+ }
+ } elseif ( 'custom' === $icon_type || 'image' === $icon_type ) {
+ $menu[ $k ][6] = esc_url( $icon );
+ }
+ }
+ }
+
+ foreach ( $submenu as $parent => $items ) {
+ foreach ( $items as $idx => $item ) {
+ if ( empty( $item[2] ) ) {
+ continue;
+ }
+ $canon = $parent . '::' . $item[2];
+ if ( empty( $overrides[ $canon ] ) || ! is_array( $overrides[ $canon ] ) ) {
+ continue;
+ }
+ $o = $overrides[ $canon ];
+ if ( ! empty( $o['label'] ) ) {
+ $submenu[ $parent ][ $idx ][0] = wp_strip_all_tags( $o['label'] );
+ }
+ if ( ! empty( $o['url'] ) ) {
+ $submenu[ $parent ][ $idx ][2] = esc_url_raw( $o['url'] );
+ }
+ }
+ }
+
+ if ( ! empty( $fa_icons ) ) {
+ $GLOBALS['members_am_fa_icons'] = $fa_icons;
+ add_action( 'admin_head', __NAMESPACE__ . '\output_fa_icon_styles', 998 );
+ }
+}
+
+/**
+ * Output CSS + HTML to render Font Awesome icons in the admin sidebar.
+ *
+ * Hides the default dashicon/image and places the FA icon via ::before pseudo-element.
+ *
+ * @return void
+ */
+function output_fa_icon_styles() {
+ if ( empty( $GLOBALS['members_am_fa_icons'] ) ) {
+ return;
+ }
+ $css = '';
+ $js = '';
+ foreach ( $GLOBALS['members_am_fa_icons'] as $menu_id => $fa_class ) {
+ $sel = '#adminmenu #' . $menu_id . ' .wp-menu-image';
+ $css .= $sel . ':before { content: "" !important; }' . "\n";
+ $css .= $sel . ' img { display: none !important; }' . "\n";
+ $css .= $sel . ' .members-am-fa { font-size: 20px; line-height: 1; }' . "\n";
+ $js .= 'jQuery("#' . esc_js( $menu_id ) . ' .wp-menu-image").html(\' \');' . "\n";
+ }
+ echo '\n";
+ echo '' . "\n";
+}
+
+/**
+ * Move items between menu levels based on 'parent' override field.
+ *
+ * - If a submenu item has parent = '' (empty string), promote it to top-level.
+ * - If a top-level item has a parent slug set, demote it to a submenu of that parent.
+ *
+ * @param array $overrides Overrides keyed by canonical slug.
+ * @return void
+ */
+function apply_level_moves( $overrides ) {
+ global $menu, $submenu;
+
+ foreach ( $overrides as $slug => $o ) {
+ if ( ! is_array( $o ) || ! array_key_exists( 'parent', $o ) ) {
+ continue;
+ }
+ $target_parent = $o['parent'];
+ $is_submenu = ( false !== strpos( $slug, '::' ) );
+
+ if ( $is_submenu && '' === $target_parent ) {
+ $parts = explode( '::', $slug, 2 );
+ if ( count( $parts ) !== 2 ) {
+ continue;
+ }
+ $old_parent = $parts[0];
+ $child_slug = $parts[1];
+
+ $label = $child_slug;
+ $cap = 'read';
+ if ( isset( $submenu[ $old_parent ] ) && is_array( $submenu[ $old_parent ] ) ) {
+ foreach ( $submenu[ $old_parent ] as $idx => $sub ) {
+ if ( isset( $sub[2] ) && $sub[2] === $child_slug ) {
+ $label = $sub[0];
+ $cap = isset( $sub[1] ) ? $sub[1] : 'read';
+ unset( $submenu[ $old_parent ][ $idx ] );
+ break;
+ }
+ }
+ }
+ if ( ! empty( $o['label'] ) ) {
+ $label = $o['label'];
+ }
+ $icon = 'dashicons-admin-generic';
+ if ( ! empty( $o['icon'] ) ) {
+ $icon = $o['icon'];
+ }
+ add_menu_page( wp_strip_all_tags( $label ), wp_strip_all_tags( $label ), $cap, $child_slug, '', $icon );
+
+ } elseif ( ! $is_submenu && is_string( $target_parent ) && '' !== $target_parent ) {
+ $found_key = false;
+ $found_item = null;
+ foreach ( $menu as $k => $item ) {
+ if ( isset( $item[2] ) && $item[2] === $slug ) {
+ $found_key = $k;
+ $found_item = $item;
+ break;
+ }
+ }
+ if ( false === $found_key ) {
+ continue;
+ }
+ $label = isset( $found_item[0] ) ? $found_item[0] : $slug;
+ $cap = isset( $found_item[1] ) ? $found_item[1] : 'read';
+ if ( ! empty( $o['label'] ) ) {
+ $label = $o['label'];
+ }
+ remove_menu_page( $slug );
+ add_submenu_page( $target_parent, wp_strip_all_tags( $label ), wp_strip_all_tags( $label ), $cap, $slug );
+ }
+ }
+}
+
+/**
+ * Apply color overrides via admin_head CSS rules.
+ *
+ * Instead of wrapping titles in styled spans (which only affects text),
+ * this injects a \n";
+ }
+}
+
+/**
+ * Register custom top/sub menu items from stored config.
+ *
+ * @param array $items Custom items.
+ * @return void
+ */
+function inject_custom_menu_items( $items ) {
+ if ( ! is_array( $items ) ) {
+ return;
+ }
+ global $members_am_custom_redirects;
+ if ( ! is_array( $members_am_custom_redirects ) ) {
+ $members_am_custom_redirects = array();
+ }
+ foreach ( $items as $item ) {
+ if ( empty( $item['id'] ) || empty( $item['label'] ) ) {
+ continue;
+ }
+ $cap = ! empty( $item['cap'] ) ? $item['cap'] : 'read';
+ $url = ! empty( $item['url'] ) ? esc_url_raw( $item['url'] ) : admin_url();
+ $hook = 'members-am-' . sanitize_key( $item['id'] );
+ $members_am_custom_redirects[ $hook ] = $url;
+ if ( empty( $item['parent'] ) ) {
+ add_menu_page(
+ $item['label'],
+ $item['label'],
+ $cap,
+ $hook,
+ __NAMESPACE__ . '\members_am_custom_menu_callback',
+ ! empty( $item['icon'] ) ? $item['icon'] : 'dashicons-admin-generic',
+ isset( $item['position'] ) ? (int) $item['position'] : null
+ );
+ } else {
+ add_submenu_page(
+ $item['parent'],
+ $item['label'],
+ $item['label'],
+ $cap,
+ $hook,
+ __NAMESPACE__ . '\members_am_custom_menu_callback'
+ );
+ }
+ }
+}
+
+/**
+ * Redirects custom menu items to their target URL.
+ *
+ * @return void
+ */
+function members_am_custom_menu_callback() {
+ global $members_am_custom_redirects;
+ if ( empty( $_GET['page'] ) || ! is_array( $members_am_custom_redirects ) ) {
+ return;
+ }
+ $page = sanitize_key( wp_unslash( $_GET['page'] ) );
+ if ( isset( $members_am_custom_redirects[ $page ] ) ) {
+ wp_safe_redirect( $members_am_custom_redirects[ $page ] );
+ exit;
+ }
+}
+
+/**
+ * Block direct access to hidden admin pages.
+ *
+ * @return void
+ */
+function block_restricted_pages() {
+ if ( ! is_admin() || wp_doing_ajax() || wp_doing_cron() ) {
+ return;
+ }
+ if ( isset( $_GET['page'] ) && 'members-settings' === sanitize_key( wp_unslash( $_GET['page'] ) ) ) {
+ return;
+ }
+ $user_id = get_current_user_id();
+ if ( ! $user_id || is_user_exempt( $user_id ) ) {
+ return;
+ }
+
+ $cfg = get_resolved_config_for_user( $user_id );
+
+ $cap_map = isset( $cfg['capabilities'] ) ? $cfg['capabilities'] : array();
+ if ( ! empty( $cap_map ) && is_array( $cap_map ) ) {
+ $current = get_current_screen_slugs();
+ foreach ( $current as $cslug ) {
+ if ( members_admin_menus_is_protected_slug( $cslug ) ) {
+ continue;
+ }
+ foreach ( $cap_map as $slug => $cap ) {
+ if ( ! $slug || ! $cap || current_user_can( $cap ) ) {
+ continue;
+ }
+ if ( $slug === $cslug || members_admin_menus_slug_matches( $cslug, $slug ) ) {
+ $url = apply_filters( app()->namespace . '/redirect_url', admin_url(), $user_id );
+ wp_safe_redirect( $url );
+ exit;
+ }
+ }
+ }
+ }
+
+ $hidden = isset( $cfg['hidden'] ) ? $cfg['hidden'] : array();
+ if ( empty( $hidden ) || ! is_array( $hidden ) ) {
+ return;
+ }
+
+ $current = get_current_screen_slugs();
+ foreach ( $current as $cslug ) {
+ if ( members_admin_menus_is_protected_slug( $cslug ) ) {
+ continue;
+ }
+ foreach ( $hidden as $h ) {
+ if ( $h === $cslug || members_admin_menus_slug_matches( $cslug, $h ) ) {
+ $url = apply_filters( app()->namespace . '/redirect_url', admin_url(), $user_id );
+ wp_safe_redirect( $url );
+ exit;
+ }
+ }
+ }
+}
+
+/**
+ * Loose match for submenu vs top-level.
+ *
+ * @param string $current Current screen id.
+ * @param string $stored Stored hidden id.
+ * @return bool
+ */
+function members_admin_menus_slug_matches( $current, $stored ) {
+ if ( $stored === $current ) {
+ return true;
+ }
+ if ( false !== strpos( $stored, '::' ) ) {
+ $parts = explode( '::', $stored, 2 );
+ if ( isset( $parts[1] ) && ( $parts[1] === $current || false !== strpos( $current, $parts[1] ) ) ) {
+ return true;
+ }
+ }
+ return false;
+}
+
+/**
+ * Build list of slug identifiers for the current admin screen.
+ *
+ * @return array
+ */
+function get_current_screen_slugs() {
+ global $pagenow;
+ $slugs = array();
+
+ if ( ! empty( $_GET['page'] ) && is_string( $_GET['page'] ) ) {
+ $page = sanitize_text_field( wp_unslash( $_GET['page'] ) );
+ $slugs[] = $page;
+ if ( ! empty( $pagenow ) ) {
+ $slugs[] = $pagenow . '?page=' . $page;
+ }
+ }
+
+ if ( ! empty( $_GET['post_type'] ) && in_array( $pagenow, array( 'edit.php', 'post-new.php', 'post.php' ), true ) ) {
+ $pt = sanitize_key( wp_unslash( $_GET['post_type'] ) );
+ $slugs[] = 'edit.php?post_type=' . $pt;
+ } elseif ( ! empty( $pagenow ) && empty( $_GET['page'] ) ) {
+ $slugs[] = $pagenow;
+ }
+
+ if ( ! empty( $_GET['taxonomy'] ) && in_array( $pagenow, array( 'edit-tags.php', 'term.php' ), true ) ) {
+ $tax = sanitize_key( wp_unslash( $_GET['taxonomy'] ) );
+ $slugs[] = 'edit-tags.php?taxonomy=' . $tax;
+ }
+
+ // Also block related pages when a top-level menu is hidden.
+ // e.g. if edit.php is hidden, also block post-new.php and post.php (for default post type).
+ if ( in_array( $pagenow, array( 'post-new.php', 'post.php' ), true ) && empty( $_GET['post_type'] ) ) {
+ $slugs[] = 'edit.php';
+ }
+
+ /**
+ * Filter current screen slug list for URL blocking.
+ *
+ * @param array $slugs Slugs.
+ */
+ return array_unique( array_filter( apply_filters( app()->namespace . '/current_screen_slugs', $slugs ) ) );
+}
+
+/**
+ * Slugs that cannot be hidden (Members settings / safety).
+ *
+ * @param string $slug Slug.
+ * @return bool
+ */
+function members_admin_menus_is_protected_slug( $slug ) {
+ $s = (string) $slug;
+ return ( false !== stripos( $s, 'members-settings' ) || false !== stripos( $s, 'page=members' ) );
+}
+
+/**
+ * Default option structure.
+ *
+ * @return array
+ */
+function get_default_settings() {
+ return array(
+ '_meta' => array(
+ 'version' => 3,
+ 'admin_editable' => false,
+ ),
+ 'roles' => array(),
+ 'users' => array(),
+ 'custom_items' => array(),
+ 'capabilities' => array(),
+ '_defaults' => array(
+ 'captured' => false,
+ ),
+ );
+}
+
+/**
+ * Get plugin settings.
+ *
+ * @return array
+ */
+function get_settings() {
+ static $cache = null;
+ if ( null !== $cache ) {
+ return $cache;
+ }
+ $settings = get_option( OPTION_KEY, array() );
+ if ( ! is_array( $settings ) ) {
+ $settings = array();
+ }
+ $cache = wp_parse_args( $settings, get_default_settings() );
+ return $cache;
+}
+
+/**
+ * Whether user is exempt from all restrictions.
+ *
+ * @param int $user_id User ID.
+ * @return bool
+ */
+function is_user_exempt( $user_id ) {
+ $user = get_userdata( $user_id );
+ if ( ! $user ) {
+ return true;
+ }
+ if ( is_multisite() && is_super_admin( $user_id ) ) {
+ return true;
+ }
+
+ $meta = get_settings();
+ $admin_editable = ! empty( $meta['_meta']['admin_editable'] );
+
+ if ( in_array( 'administrator', (array) $user->roles, true ) && ! $admin_editable ) {
+ return true;
+ }
+
+ return (bool) apply_filters( app()->namespace . '/is_user_exempt', false, $user_id );
+}
+
+/**
+ * Resolved config for a user: roles merged + user overrides + hidden intersect + merged order.
+ *
+ * @param int $user_id User ID.
+ * @return array
+ */
+function get_resolved_config_for_user( $user_id ) {
+ $settings = get_settings();
+ $user = get_userdata( $user_id );
+ if ( ! $user ) {
+ return array();
+ }
+
+ $roles = (array) $user->roles;
+ sort( $roles );
+
+ $base = get_resolved_config_for_user_from_roles_only( $settings, $roles );
+
+ // Phase 3: user-specific overrides replace role-merged blocks.
+ if ( ! empty( $settings['users'][ $user_id ] ) && is_array( $settings['users'][ $user_id ] ) ) {
+ $u = $settings['users'][ $user_id ];
+ foreach ( array( 'hidden', 'order', 'submenu_order', 'overrides', 'custom_items', 'capabilities' ) as $k ) {
+ if ( isset( $u[ $k ] ) ) {
+ $base[ $k ] = $u[ $k ];
+ }
+ }
+ }
+
+ return $base;
+}
+
+/**
+ * Resolve hidden from roles only (for merge helper).
+ *
+ * @param array $settings Settings.
+ * @param array $roles Role slugs.
+ * @return array
+ */
+function get_resolved_config_for_user_from_roles_only( $settings, $roles ) {
+ sort( $roles );
+ $merged_hidden = array();
+ $first = true;
+ foreach ( $roles as $role ) {
+ $rh = isset( $settings['roles'][ $role ]['hidden'] ) ? (array) $settings['roles'][ $role ]['hidden'] : array();
+ if ( $first ) {
+ $merged_hidden = $rh;
+ $first = false;
+ } else {
+ $merged_hidden = array_values( array_intersect( $merged_hidden, $rh ) );
+ }
+ }
+ $order = array();
+ $submenu_order = array();
+ $overrides = array();
+ foreach ( $roles as $role ) {
+ if ( empty( $settings['roles'][ $role ] ) ) {
+ continue;
+ }
+ $r = $settings['roles'][ $role ];
+ if ( ! empty( $r['order'] ) && empty( $order ) ) {
+ $order = (array) $r['order'];
+ }
+ if ( ! empty( $r['submenu_order'] ) && empty( $submenu_order ) ) {
+ $submenu_order = (array) $r['submenu_order'];
+ }
+ }
+ foreach ( $roles as $role ) {
+ if ( ! empty( $settings['roles'][ $role ]['overrides'] ) ) {
+ $overrides = array_merge( $overrides, (array) $settings['roles'][ $role ]['overrides'] );
+ }
+ }
+ return array(
+ 'hidden' => $merged_hidden,
+ 'order' => $order,
+ 'submenu_order' => $submenu_order,
+ 'overrides' => $overrides,
+ 'custom_items' => isset( $settings['custom_items'] ) ? (array) $settings['custom_items'] : array(),
+ 'capabilities' => isset( $settings['capabilities'] ) ? (array) $settings['capabilities'] : array(),
+ );
+}
diff --git a/addons/members-admin-menus/bootstrap/app.php b/addons/members-admin-menus/bootstrap/app.php
new file mode 100644
index 0000000..3fe8030
--- /dev/null
+++ b/addons/members-admin-menus/bootstrap/app.php
@@ -0,0 +1,35 @@
+dir . 'app/functions.php';
+
+if ( is_admin() ) {
+ require_once app()->dir . 'app/functions-admin.php';
+}
diff --git a/addons/members-admin-menus/config/app.php b/addons/members-admin-menus/config/app.php
new file mode 100644
index 0000000..e3acfbc
--- /dev/null
+++ b/addons/members-admin-menus/config/app.php
@@ -0,0 +1,16 @@
+ trailingslashit( realpath( trailingslashit( __DIR__ ) . '../' ) ),
+ 'namespace' => 'members/addons/admin_menus',
+);
diff --git a/addons/members-admin-menus/src/Activator.php b/addons/members-admin-menus/src/Activator.php
new file mode 100644
index 0000000..5624de5
--- /dev/null
+++ b/addons/members-admin-menus/src/Activator.php
@@ -0,0 +1,55 @@
+ Add-Ons.
+ *
+ * @package Members
+ * @subpackage AddOns
+ */
+
+namespace Members\AddOns\AdminMenus;
+
+defined( 'ABSPATH' ) || exit;
+
+/**
+ * Activator.
+ */
+class Activator {
+
+ /**
+ * Default option version.
+ */
+ const OPTION_VERSION = 3;
+
+ /**
+ * On activation, seed empty settings if missing.
+ *
+ * @return void
+ */
+ public static function activate() {
+ $existing = get_option( 'members_admin_menus_settings', null );
+ if ( null === $existing || ! is_array( $existing ) ) {
+ update_option( 'members_admin_menus_settings', self::get_default_option() );
+ }
+ }
+
+ /**
+ * Default empty structure.
+ *
+ * @return array
+ */
+ public static function get_default_option() {
+ return array(
+ '_meta' => array(
+ 'version' => self::OPTION_VERSION,
+ 'admin_editable' => false,
+ ),
+ 'roles' => array(),
+ 'users' => array(),
+ 'custom_items' => array(),
+ 'capabilities' => array(),
+ '_defaults' => array(
+ 'captured' => false,
+ ),
+ );
+ }
+}
From 0ba5b5774b248fcbe459aeeaae081b3ac1f81512 Mon Sep 17 00:00:00 2001
From: Omar ElHawary
Date: Wed, 8 Apr 2026 13:34:20 +0200
Subject: [PATCH 02/73] feat(admin): register admin menus addon and settings
view fallback
- Register members-admin-menus in addon catalog with title and excerpt
- Register members-admin-menus script handle with dependencies and filemtime
- Fall back to General settings view when the requested view slug is missing
Made-with: Cursor
---
admin/class-settings.php | 13 ++++++++++++-
admin/config/addons.php | 6 ++++++
admin/functions-admin.php | 10 ++++++++++
3 files changed, 28 insertions(+), 1 deletion(-)
diff --git a/admin/class-settings.php b/admin/class-settings.php
index 4ff107e..24da95e 100644
--- a/admin/class-settings.php
+++ b/admin/class-settings.php
@@ -371,7 +371,18 @@ public function settings_page() { ?>
filter_links(); ?>
- get_view( members_get_current_settings_view() )->template(); ?>
+ get_view( members_get_current_settings_view() );
+ if ( $_current_view ) {
+ $_current_view->template();
+ } else {
+ // Fallback to General view if requested view doesn't exist.
+ $_fallback_view = $this->get_view( 'general' );
+ if ( $_fallback_view ) {
+ $_fallback_view->template();
+ }
+ }
+ ?>
'Allows site administrators to control which users have access to the WordPress admin via role.',
),
+ 'members-admin-menus' => array(
+ 'url' => '',
+ 'title' => 'Members - Admin Menus',
+ 'excerpt' => 'Full admin menu editor: hide, reorder, rename, and customize menu items per role with a visual sidebar editor.',
+ ),
+
'members-core-create-caps' => array(
'url' => '',
'title' => 'Members - Core Create Caps',
diff --git a/admin/functions-admin.php b/admin/functions-admin.php
index 6641c3c..c419940 100644
--- a/admin/functions-admin.php
+++ b/admin/functions-admin.php
@@ -52,6 +52,16 @@ function members_admin_register_scripts() {
$edit_role_ver = file_exists( $edit_role_file ) ? filemtime( $edit_role_file ) : false;
wp_register_script( 'members-edit-role', members_plugin()->uri . "js/edit-role{$min}.js", array( 'postbox', 'wp-util' ), $edit_role_ver, true );
+ $admin_menus_file = members_plugin()->dir . "js/admin-menus{$min}.js";
+ $admin_menus_ver = file_exists( $admin_menus_file ) ? filemtime( $admin_menus_file ) : false;
+ wp_register_script(
+ 'members-admin-menus',
+ members_plugin()->uri . "js/admin-menus{$min}.js",
+ array( 'jquery', 'wp-color-picker', 'wp-util' ),
+ $admin_menus_ver,
+ true
+ );
+
// Localize our script with some text we want to pass in.
$i18n = array(
'button_role_edit' => esc_html__( 'Edit', 'members' ),
From 332b5855bb998207c56a5b62964ac2f171a59593 Mon Sep 17 00:00:00 2001
From: Omar ElHawary
Date: Wed, 8 Apr 2026 13:34:22 +0200
Subject: [PATCH 03/73] feat(admin): add admin menus editor styles and scripts
- Add sidebar editor layout, drag handles, and form styling in admin.css
- Add admin-menus.js for the visual menu editor UI and interactions
Made-with: Cursor
---
css/admin.css | 456 +++++++++++++
css/admin.min.css | 2 +-
js/admin-menus.js | 1448 +++++++++++++++++++++++++++++++++++++++++
js/admin-menus.min.js | 1 +
4 files changed, 1906 insertions(+), 1 deletion(-)
create mode 100644 js/admin-menus.js
create mode 100644 js/admin-menus.min.js
diff --git a/css/admin.css b/css/admin.css
index ccee2c0..5f507cd 100644
--- a/css/admin.css
+++ b/css/admin.css
@@ -1053,4 +1053,460 @@
float: none;
margin-top: 0;
vertical-align: middle;
+}
+
+/* Members — Admin Menus add-on */
+.members-admin-menus-wrap {
+ max-width: 1400px;
+}
+
+.members-admin-menus-toolbar {
+ display: flex;
+ flex-wrap: wrap;
+ align-items: center;
+ gap: 8px;
+ margin-bottom: 16px;
+}
+
+.members-am-copy-wrap label {
+ margin-right: 8px;
+}
+
+.members-am-chips {
+ display: flex;
+ flex-wrap: wrap;
+ gap: 8px;
+ margin-bottom: 12px;
+}
+
+.members-am-chip {
+ border-radius: 999px;
+ padding: 4px 12px;
+ border: 1px solid #c3c4c7;
+ background: #f6f7f7;
+ cursor: pointer;
+}
+
+.members-am-chip.is-active {
+ background: #2271b1;
+ border-color: #2271b1;
+ color: #fff;
+}
+
+.members-am-carousel-wrap {
+ display: flex;
+ align-items: stretch;
+ gap: 8px;
+ margin-bottom: 8px;
+}
+
+.members-am-carousel-prev,
+.members-am-carousel-next {
+ align-self: center;
+ width: 36px;
+ height: 36px;
+ border-radius: 50%;
+ border: 1px solid #c3c4c7;
+ background: #fff;
+ cursor: pointer;
+}
+
+.members-am-columns {
+ display: flex;
+ flex: 1;
+ gap: 12px;
+ min-height: 320px;
+ overflow: hidden;
+}
+
+.members-am-column {
+ flex: 1;
+ min-width: 0;
+ background: #1d2327;
+ border-radius: 4px;
+ color: #f0f0f1;
+ display: flex;
+ flex-direction: column;
+}
+
+.members-am-user-column {
+ border: 2px dashed #8c8f94;
+}
+
+.members-am-sidebar-head {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ padding: 8px 10px;
+ background: #2c3338;
+ border-radius: 4px 4px 0 0;
+ font-weight: 600;
+ font-size: 12px;
+ text-transform: uppercase;
+ letter-spacing: 0.04em;
+}
+
+.members-am-col-move button {
+ margin-left: 4px;
+ padding: 0 6px;
+ min-height: 24px;
+ line-height: 22px;
+ font-size: 11px;
+}
+
+.members-am-sidebar-list {
+ padding: 6px 0 12px;
+ overflow-y: auto;
+ max-height: 480px;
+}
+
+.members-am-item {
+ position: relative;
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ padding: 6px 10px 6px 8px;
+ cursor: pointer;
+ border-left: 3px solid transparent;
+ font-size: 13px;
+}
+
+.members-am-item.is-sub {
+ padding-left: 22px;
+ font-size: 12px;
+ opacity: 0.95;
+}
+
+.members-am-item.is-hidden {
+ opacity: 0.18;
+}
+
+.members-am-item.is-no-cap {
+ opacity: 0.35;
+}
+
+.members-am-item.is-no-cap.is-hidden {
+ opacity: 0.15;
+}
+
+.members-am-item.is-selected {
+ border-left-color: #2271b1;
+ background: rgba(34, 113, 177, 0.15);
+}
+
+.members-am-item-main {
+ display: flex;
+ align-items: center;
+ gap: 8px;
+ min-width: 0;
+}
+
+.members-am-item-main .dashicons {
+ font-size: 18px;
+ width: 18px;
+ height: 18px;
+}
+
+.members-am-item-label {
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+}
+
+.members-am-item-actions {
+ display: none;
+ gap: 2px;
+}
+
+.members-am-item:hover .members-am-item-actions {
+ display: flex;
+}
+
+.members-am-item-actions button {
+ min-height: 22px;
+ padding: 0 4px;
+ line-height: 20px;
+ font-size: 11px;
+}
+
+.members-am-sep {
+ text-align: center;
+ opacity: 0.35;
+ font-size: 11px;
+ padding: 4px 0;
+}
+
+.members-am-carousel-dots {
+ text-align: center;
+ margin-bottom: 4px;
+}
+
+.members-am-dot {
+ width: 8px;
+ height: 8px;
+ border-radius: 50%;
+ border: none;
+ margin: 0 4px;
+ padding: 0;
+ background: #c3c4c7;
+ cursor: pointer;
+}
+
+.members-am-dot.is-active {
+ background: #2271b1;
+}
+
+.members-am-carousel-status {
+ text-align: center;
+ color: #646970;
+ font-size: 12px;
+ margin-top: 0;
+}
+
+.members-am-badge {
+ font-size: 9px;
+ text-transform: uppercase;
+ padding: 1px 4px;
+ border-radius: 2px;
+ margin-right: 4px;
+ vertical-align: middle;
+}
+
+.members-am-badge-new {
+ background: #2271b1;
+ color: #fff;
+}
+
+.members-am-badge-edit {
+ background: #dba617;
+ color: #1d2327;
+}
+
+.members-am-badge-nocap {
+ background: #8c8f94;
+ color: #fff;
+}
+
+.members-am-legend {
+ display: flex;
+ flex-wrap: wrap;
+ gap: 16px;
+ margin: 0 0 8px;
+ padding: 0;
+ font-size: 12px;
+ color: #646970;
+}
+
+.members-am-legend-item {
+ display: inline-flex;
+ align-items: center;
+ gap: 4px;
+}
+
+.members-am-edit-panel {
+ margin-top: 20px;
+ padding: 16px;
+ border: 1px solid #c3c4c7;
+ background: #fff;
+ border-radius: 4px;
+}
+
+.members-am-edit-panel-header {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ margin-bottom: 12px;
+}
+
+.members-am-edit-panel-header h2 {
+ margin: 0;
+ font-size: 16px;
+}
+
+.members-am-edit-toolbar {
+ display: flex;
+ flex-wrap: wrap;
+ align-items: center;
+ gap: 12px;
+ margin-bottom: 12px;
+}
+
+.members-am-edit-target-wrap select {
+ margin-left: 8px;
+}
+
+.members-am-level-actions .button {
+ margin-right: 6px;
+}
+
+.members-am-edit-grid {
+ display: grid;
+ grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
+ gap: 16px;
+}
+
+.members-am-edit-col label {
+ display: block;
+ font-weight: 600;
+ margin-bottom: 4px;
+}
+
+.members-am-icon-tabs {
+ margin-bottom: 8px;
+}
+
+.members-am-icon-tabs .button {
+ margin-right: 4px;
+ margin-bottom: 4px;
+}
+
+.members-am-icon-tabs .button.is-active {
+ background: #2271b1;
+ border-color: #2271b1;
+ color: #fff;
+}
+
+.members-am-icon-grid {
+ display: flex;
+ flex-wrap: wrap;
+ gap: 4px;
+ max-height: 160px;
+ overflow-y: auto;
+ border: 1px solid #dcdcde;
+ padding: 8px;
+ background: #f6f7f7;
+ margin-bottom: 8px;
+}
+
+.members-am-icon-pick {
+ width: 36px;
+ height: 36px;
+ padding: 0;
+ display: inline-flex;
+ align-items: center;
+ justify-content: center;
+ border: 1px solid #c3c4c7;
+ background: #fff;
+ cursor: pointer;
+}
+
+.members-am-vis-row {
+ display: block;
+ margin-bottom: 6px;
+ font-weight: normal;
+}
+
+.members-am-reset-dropdown {
+ position: absolute;
+ z-index: 100;
+ background: #fff;
+ border: 1px solid #c3c4c7;
+ border-radius: 6px;
+ padding: 0;
+ display: flex;
+ flex-direction: column;
+ box-shadow: 0 4px 12px rgba(0,0,0,0.15);
+ min-width: 280px;
+ top: 100%;
+ left: 0;
+ margin-top: 4px;
+ overflow: hidden;
+}
+
+.members-am-reset-title {
+ padding: 10px 14px;
+ font-weight: 600;
+ font-size: 13px;
+ border-bottom: 1px solid #f0f0f0;
+ color: #1d2327;
+}
+
+.members-am-reset-option {
+ display: flex;
+ align-items: flex-start;
+ gap: 10px;
+ padding: 12px 14px;
+ border: none;
+ background: none;
+ cursor: pointer;
+ text-align: left;
+ width: 100%;
+ border-bottom: 1px solid #f0f0f0;
+ transition: background 0.15s;
+}
+
+.members-am-reset-option:last-child {
+ border-bottom: none;
+}
+
+.members-am-reset-option:hover {
+ background: #f6f7f7;
+}
+
+.members-am-reset-option .dashicons {
+ margin-top: 2px;
+ color: #646970;
+}
+
+.members-am-reset-option-text {
+ display: flex;
+ flex-direction: column;
+ gap: 2px;
+}
+
+.members-am-reset-option-text strong {
+ font-size: 13px;
+ color: #1d2327;
+}
+
+.members-am-reset-option-text small {
+ font-size: 12px;
+ color: #646970;
+}
+
+.members-am-reset-danger:hover {
+ background: #fcf0f1;
+}
+
+.members-am-reset-danger .dashicons {
+ color: #d63638;
+}
+
+.members-am-reset-danger:hover strong {
+ color: #d63638;
+}
+
+@media screen and (max-width: 782px) {
+ .members-am-columns {
+ flex-direction: column;
+ }
+}
+
+.members-am-user-suggestions {
+ position: absolute;
+ z-index: 100;
+ background: #fff;
+ border: 1px solid #c3c4c7;
+ border-radius: 4px;
+ max-height: 200px;
+ overflow-y: auto;
+ width: 100%;
+ box-shadow: 0 2px 6px rgba(0,0,0,0.15);
+ top: 100%;
+ left: 0;
+}
+
+.members-am-user-suggestion {
+ padding: 8px 12px;
+ cursor: pointer;
+ font-size: 13px;
+ border-bottom: 1px solid #f0f0f0;
+}
+
+.members-am-user-suggestion:hover {
+ background: #f0f6fc;
+}
+
+.members-am-user-suggestion:last-child {
+ border-bottom: none;
}
\ No newline at end of file
diff --git a/css/admin.min.css b/css/admin.min.css
index 8c6c729..a12880e 100644
--- a/css/admin.min.css
+++ b/css/admin.min.css
@@ -1 +1 @@
-#members-cp h2.hndle,#members-cp-side h2.hndle{border-bottom:none !important;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}#members-cp h2.hndle:before,#members-cp-side h2.hndle:before{content:url("data:image/svg+xml,%3Csvg width='15px' aria-hidden='true' focusable='false' data-prefix='fas' data-icon='users-cog' class='svg-inline--fa fa-users-cog fa-w-20' role='img' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 640 512'%3E%3Cpath fill='currentColor' d='M610.5 341.3c2.6-14.1 2.6-28.5 0-42.6l25.8-14.9c3-1.7 4.3-5.2 3.3-8.5-6.7-21.6-18.2-41.2-33.2-57.4-2.3-2.5-6-3.1-9-1.4l-25.8 14.9c-10.9-9.3-23.4-16.5-36.9-21.3v-29.8c0-3.4-2.4-6.4-5.7-7.1-22.3-5-45-4.8-66.2 0-3.3.7-5.7 3.7-5.7 7.1v29.8c-13.5 4.8-26 12-36.9 21.3l-25.8-14.9c-2.9-1.7-6.7-1.1-9 1.4-15 16.2-26.5 35.8-33.2 57.4-1 3.3.4 6.8 3.3 8.5l25.8 14.9c-2.6 14.1-2.6 28.5 0 42.6l-25.8 14.9c-3 1.7-4.3 5.2-3.3 8.5 6.7 21.6 18.2 41.1 33.2 57.4 2.3 2.5 6 3.1 9 1.4l25.8-14.9c10.9 9.3 23.4 16.5 36.9 21.3v29.8c0 3.4 2.4 6.4 5.7 7.1 22.3 5 45 4.8 66.2 0 3.3-.7 5.7-3.7 5.7-7.1v-29.8c13.5-4.8 26-12 36.9-21.3l25.8 14.9c2.9 1.7 6.7 1.1 9-1.4 15-16.2 26.5-35.8 33.2-57.4 1-3.3-.4-6.8-3.3-8.5l-25.8-14.9zM496 368.5c-26.8 0-48.5-21.8-48.5-48.5s21.8-48.5 48.5-48.5 48.5 21.8 48.5 48.5-21.7 48.5-48.5 48.5zM96 224c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm224 32c1.9 0 3.7-.5 5.6-.6 8.3-21.7 20.5-42.1 36.3-59.2 7.4-8 17.9-12.6 28.9-12.6 6.9 0 13.7 1.8 19.6 5.3l7.9 4.6c.8-.5 1.6-.9 2.4-1.4 7-14.6 11.2-30.8 11.2-48 0-61.9-50.1-112-112-112S208 82.1 208 144c0 61.9 50.1 112 112 112zm105.2 194.5c-2.3-1.2-4.6-2.6-6.8-3.9-8.2 4.8-15.3 9.8-27.5 9.8-10.9 0-21.4-4.6-28.9-12.6-18.3-19.8-32.3-43.9-40.2-69.6-10.7-34.5 24.9-49.7 25.8-50.3-.1-2.6-.1-5.2 0-7.8l-7.9-4.6c-3.8-2.2-7-5-9.8-8.1-3.3.2-6.5.6-9.8.6-24.6 0-47.6-6-68.5-16h-8.3C179.6 288 128 339.6 128 403.2V432c0 26.5 21.5 48 48 48h255.4c-3.7-6-6.2-12.8-6.2-20.3v-9.2zM173.1 274.6C161.5 263.1 145.6 256 128 256H64c-35.3 0-64 28.7-64 64v32c0 17.7 14.3 32 32 32h65.9c6.3-47.4 34.9-87.3 75.2-109.4z'%3E%3C/path%3E%3C/svg%3E");margin-right:5px}#members-cp-side .postbox-header{border-bottom:none !important}#members-cp-side .handle-actions .handle-order-higher,#members-cp-side .handle-actions .handle-order-lower{display:none}#members-cp-side .handle-actions .handlediv{position:absolute;right:5px}.members-upgrade-header{text-align:center;padding:5px}.members-upgrade-header a{color:#f59431}.memberpress-paid-memberships{background-color:#f5f5f5;padding:50px 10px;text-align:center}.memberpress-paid-memberships a{background-color:#0e4598;display:inline-block;padding:10px 20px;border-radius:300px;color:#fff;text-decoration:none;margin-top:20px}#members-cp-side .members-tabs{position:relative}#members-cp-side .members-tab-nav{background-color:transparent;margin-bottom:20px;border-right:none !important}#members-cp-side .members-tab-nav .members-tab-title{width:33.333%;height:50px;border-right:none !important}#members-cp-side .members-tab-nav .members-tab-title a{border:0}#members-cp-side .members-tab-content h3{font-weight:bold;font-size:15px;margin-top:0;color:#000;margin-bottom:10px}#members-cp-side .members-tab-content .memberpress-paid-memberships{text-align:left;padding:20px}#members-cp-side .members-tab-content .memberpress-paid-memberships a{display:block;text-align:center}#members-cp-side .members-tabs .members-tab-nav li a,#members-cp-side .members-tabs .members-tab-nav li[aria-selected="false"] a i{color:#555}#members-cp-side .members-tabs .members-tab-nav li a svg,#members-cp-side .members-tabs .members-tab-nav li[aria-selected="false"] a svg{fill:#555}#members-cp-side .members-tabs .members-tab-nav li[aria-selected="true"] a{background-color:transparent;border-bottom:2px solid #3582ae}#members-cp-side .members-tabs .members-tab-nav li[aria-selected="true"] a i{color:#3582ae}#members-cp-side .members-tabs .members-tab-nav li[aria-selected="true"] a svg{fill:#3582ae}.members-tab-title svg,.members-tab-title[aria-selected="false"] svg{fill:#0073aa}.members-tab-title[aria-selected="true"] svg{fill:#555}#wpcontent #members-admin-header{margin-left:-20px;padding:0;padding-left:22px;background-color:#f9f9f9;background-repeat:repeat;background-size:1200px 75px;min-height:36px;position:relative}#wpcontent #members-admin-header img.members-logo{height:90px}.members-upgrade-header #close-members-upgrade-header{position:absolute;right:20px;top:3px}.members-upgrade-header #close-members-upgrade-header:hover{cursor:pointer}.memberpress-welcome-panel.welcome-panel{margin-top:0;padding:40px 20px;background:#fff}.memberpress-welcome-panel.welcome-panel:before{background:0}.memberpress-welcome-panel.welcome-panel .about-description{margin:20px 0}.memberpress-welcome-panel.welcome-panel-content{margin:0}.memberpress-welcome-panel.welcome-panel-content .mp-logo-wrap>a{display:block}@media screen and (min-width:870px){.members_page_members-settings .members-short-p{max-width:612px;margin-left:auto;margin-right:auto}.members_page_members-settings .welcome-panel-content{text-align:center}}.members_page_members-settings .welcome-panel .button.button-hero{margin-left:auto;margin-right:auto}.members_page_members-settings .members-svg-wrap{display:inline-block;margin:0 auto 20px}@media screen and (max-width:870px){.members_page_members-settings .welcome-panel{padding:20px}.members_page_members-settings .members-svg-wrap{float:left;margin-right:28px}.admin_page_members-settings.rtl .members-svg-wrap{float:right;margin-right:0;margin-left:28px}}.members_page_members-settings .members-svg-link{display:table-cell;text-align:center;width:128px;height:128px;background:#363b3f;color:#fff;padding:24px 16px 16px;border-radius:50%;-webkit-box-sizing:border-box;box-sizing:border-box;border:4px solid #fff;-webkit-box-shadow:0 0 0 4px #363b3f;box-shadow:0 0 0 4px #363b3f}.members_page_members-settings .members-svg-link svg{max-width:84px;max-height:64px;width:auto;height:auto}.members-addons{display:grid;grid-template-columns:1fr 1fr;grid-row-gap:20px;grid-column-gap:20px}.members-addons .plugin-card{margin:0}.members-addons .plugin-card-top{width:100%}.members-addon{width:100%;position:relative;float:none;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.members-addon .desc{margin-bottom:80px}.addon-activate{text-align:center;border:1px solid #ddd;border-radius:3px;padding:5px 10px 10px;display:inline-block;width:100px;position:absolute;right:20px;bottom:20px}.activate-toggle:hover{cursor:pointer}.activate-toggle svg{max-width:20px;position:relative;top:5px}.activate-toggle svg{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.activate-toggle svg.active{-webkit-transform:rotate(0);transform:rotate(0)}.activate-toggle svg path{fill:#ccc}.activate-toggle svg.active path{fill:#8cbd5a}.activate-toggle.processing{cursor:not-allowed;pointer-events:none;opacity:.5}.activate-toggle .action-label{display:inline-block;width:50px;text-align:left}.mepr_dummy_txns{-webkit-filter:blur(3px);filter:blur(3px);position:absolute;top:0;left:0;width:100%;z-index:5;pointer-events:none}.mepr_dummy_txns::after{background-color:rgba(0,0,0,.2);position:absolute;top:0;left:0;width:100%;height:100%;z-index:6}.mepr-upgrade-table{position:relative}.mepr-upgrade-table .mepr-upgrade{position:relative;top:100px;z-index:10;background:rgba(0,0,0,.2);width:100%;height:100%;max-width:600px;margin:0 auto;-webkit-box-shadow:0 0 30px #ccc;box-shadow:0 0 30px #ccc}.mepr-upgrade-content{background-color:#fff;padding:20px;text-align:center}.mepr-upgrade-content h2{font-size:24px}.mepr-upgrade-content h4{font-size:18px}.mepr-upgrade-content .features{display:grid;grid-template-columns:1fr 1fr;grid-column-gap:30px;grid-row-gap:10px;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;text-align:left;padding:10px}.features li:before{content:"\f147";font-family:dashicons;color:green;font-size:20px;position:relative;top:4px;margin-right:10px}.mepr-upgrade-cta{text-align:center;background-color:#f2f2f2;padding:20px}.mepr-upgrade-cta .mepr-cta-button{display:block;max-width:300px;margin:0 auto 20px;background-color:#fd9c27;color:#fff;padding:15px;font-size:18px;font-weight:bold;text-decoration:none;border-radius:300px}.members-plugin-card.plugin-card:nth-child(even){margin-right:inherit}.members-plugin-card.plugin-card:nth-child(odd){clear:none;margin-left:inherit}.members-plugin-card.plugin-card .plugin-card-top{min-height:0;padding:30px 20px}.members-plugin-card.plugin-card .plugin-icon{top:30px}.members-plugin-card.plugin-card .plugin-card-bottom .column-status{font-weight:bold}.members-plugin-card.plugin-card .plugin-card-bottom .column-status .active{color:#8cbd5a}.members-plugin-card.plugin-card .plugin-card-bottom .column-status .inactive{color:red}.members-plugin-card.plugin-card .plugin-icon{width:64px;height:auto}.plugin-icon-small{width:32px;height:auto}.members-plugin-card.plugin-card .name,.members-plugin-card.plugin-card .desc{margin-right:0;margin-left:84px}.members-addons .plugin-card .name,.members-addons .plugin-card .desc p{margin-right:0}@media screen and (max-width:1100px){.members-addons{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}}@media screen and (max-width:600px){.members_page_members-settings .members-svg-link{width:64px;height:64px}.members_page_members-settings .members-svg-link svg{position:absolute;top:14px;left:15px;max-width:30px;max-height:30px}.members_page_members-settings .plugin-card-members-edd-integration .members-svg-link svg,.members_page_members-settings .plugin-card-members-acf-integration .members-svg-link svg,.members_page_members-settings .plugin-card-members-givewp-integration .members-svg-link svg,.members_page_members-settings .plugin-card-members-meta-box-integration .members-svg-link svg,.members_page_members-settings .plugin-card-members-woocommerce-integration .members-svg-link svg{top:10px;left:8px;max-width:40px;max-height:40px}.members_page_members-settings .plugin-card-members-block-permissions .members-svg-link svg,.members_page_members-settings .plugin-card-members-role-hierarchy .members-svg-link svg{left:14px}.members-addons .plugin-card .desc>p,.members-addons .plugin-card .name{margin-left:84px}}.memberpress-about .welcome-panel-column-container{display:-webkit-box;display:-ms-flexbox;display:flex}.memberpress-about .mp-logo{max-width:256px;margin:50px}.members-about-addons{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-column-gap:20px}.members-about-addons .members-plugin-card{margin:0;width:100%}.members-about-addons .members-plugin-card .name h3 a{text-decoration:none}.members-about-addons .members-plugin-card .plugin-card-bottom{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}@media only screen and (max-width:1099px){.members-about-addons{grid-template-columns:1fr;grid-row-gap:20px}}@media screen and (min-width:1100px) and (max-width:1600px){.members-about-addons .members-plugin-card{float:none;width:auto;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.members-plugin-card.plugin-card .desc{margin-left:0;margin-top:50px}.members-plugin-card.plugin-card .desc p{margin-left:0;margin-right:0}.members-plugin-card.plugin-card .plugin-card-bottom .column-status{float:none}.members-plugin-card.plugin-card .plugin-card-bottom .column-updated{float:none;width:auto}}@media screen and (max-width:1200px){.welcome-panel .welcome-panel-column-container{-webkit-box-orient:vertical;-webkit-box-direction:reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse;gap:0;padding:0}.memberpress-about .mp-logo{margin:0 0 20px}}.members-plugin-card.plugin-card .desc p{margin-left:0;margin-right:0}@media only screen and (min-width:783px){.members_page_roles .column-users,.members_page_roles .column-granted_caps,.members_page_roles .column-denied_caps{width:100px;text-align:center}}.members-title-div #titlewrap input{padding:0 8px;font-size:1.7em;line-height:normal;height:1.7em;width:100%;outline:0;margin:0 0 3px;background-color:#fff}.members-title-div input[name="role"]{font-size:13px;height:22px;margin:0;width:16em}#tabcapsdiv{margin-top:1em}#tabcapsdiv>.hndle{padding:10px;border-bottom:1px solid #eee}#tabcapsdiv .inside,#members-cp .inside{margin:0;padding:0}.members-cap-tabs,.members-tabs{overflow:hidden;background:#fff;background:-webkit-gradient(linear,left top,right top,from(#fafafa),color-stop(20%,#fafafa),color-stop(20%,#fff),to(#fff));background:linear-gradient(90deg,#fafafa 0,#fafafa 20%,#fff 20%,#fff 100%)}@media only screen and (max-width:782px){.members-cap-tabs,.members-tabs{background:linear-gradient(90deg,#fafafa 0,#fafafa 48px,#fff 48px,#fff 100%)}}.members-cap-tabs .members-tab-nav,.members-tabs .members-tab-nav{position:relative;float:left;list-style:none;width:20%;line-height:1em;margin:0 0 -1px 0;padding:0;background-color:#fafafa;border-right:1px solid #eee;-webkit-box-sizing:border-box;box-sizing:border-box}.members-cap-tabs .members-tab-nav li,.members-tabs .members-tab-nav li{display:block;position:relative;margin:0;padding:0;line-height:20px}.members-cap-tabs .members-tab-nav li a,.members-tabs .members-tab-nav li a{display:block;margin:0;padding:10px;line-height:20px !important;text-decoration:none;border-bottom:1px solid #eee;-webkit-box-shadow:none;box-shadow:none}.members-cap-tabs .members-tab-nav li a .dashicons,.members-tabs .members-tab-nav li a .dashicons{line-height:20px;margin-right:3px}.members-cap-tabs .members-tab-nav li[aria-selected="true"] a,.members-tabs .members-tab-nav li[aria-selected="true"] a{position:relative;font-weight:bold;color:#555;background-color:#e0e0e0}@media only screen and (max-width:782px){.members-cap-tabs .members-tab-nav,.members-tabs .members-tab-nav{width:48px}.members-cap-tabs .members-tab-nav li a .dashicons,.members-tabs .members-tab-nav li a .dashicons{width:24px;height:24px;font-size:24px;line-height:24px}.members-tab-nav li .dashicons::before,.members-tab-nav li .dashicons::before{width:24px;height:24px}.members-tab-nav li .label{overflow:hidden;position:absolute;top:-1000em;left:-1000em;width:1px;height:1px}}.members-cap-tabs .members-tab-wrap,.members-tabs .members-tab-wrap{float:left;width:80%;margin-left:-1px}@media only screen and (max-width:782px){.members-cap-tabs .members-tab-wrap,.members-tabs .members-tab-wrap{width:calc(100% - 48px)}}#members-cp .members-tab-content{padding:10px;border-left:1px solid #e5e5e5}.members-roles-select th,.members-roles-select td{width:190px;overflow:hidden}.members-roles-select .check-all-th{text-align:center}.members-roles-select .check-all-th label{padding-left:5px}@media only screen and (min-width:850px){#side-sortables .members-tabs{background:#fff}#side-sortables .members-tabs .members-tab-wrap{width:100%}#side-sortables .members-tabs .members-tab-nav{display:table;width:100%}#side-sortables .members-tabs .members-tab-nav li{display:table-cell;text-align:center;border-right:1px solid #eee}#side-sortables .members-tabs .members-tab-nav li:last-of-type{border-right:0}#side-sortables .members-tabs .members-tab-nav li a{padding:10px 0}#side-sortables .members-tabs .members-tab-nav .dashicons{width:24px;height:24px;font-size:24px;line-height:24px}#side-sortables .members-tabs .members-tab-nav .dashicons::before{width:24px;height:24px}#side-sortables .members-tabs .members-tab-nav .label{overflow:hidden;position:absolute;top:-1000em;left:-1000em;width:1px;height:1px}}.members-tabs .members-tabs-label{display:block !important;font-weight:bold;display:inline-block;margin-bottom:4px}.members-tabs .butterbean-control-checkbox .members-tabs-label{display:inline !important}.members-tabs .members-tabs-description{display:block;font-style:italic;margin-top:4px}.members-tabs .members-tabs-label+.members-tabs-description{margin-top:0;margin-bottom:4px}#tabcapsdiv table{border-right:0;border-top:0;border-bottom:0}#tabcapsdiv table td,#tabcapsdiv table th{padding:10px;padding-bottom:10px;border-bottom:1px solid #eee;font-size:13px;line-height:20px}#tabcapsdiv table td{padding:9px}#tabcapsdiv tbody tr:last-of-type td{border-bottom:0}#tabcapsdiv tfoot th{border-color:#eee}@media only screen and (max-width:782px){#tabcapsdiv table td,#tabcapsdiv table th{line-height:24px}}.members-roles-select .column-grant,.members-roles-select .column-deny{width:70px !important;text-align:left;display:table-cell !important;clear:none !important}.members-roles-select thead th,.members-roles-select tfoot th{padding:9px !important}.members-roles-select .column-grant input,.members-roles-select .column-deny input{margin:0 5px 0 0;vertical-align:middle}.members-roles-select tbody tr:nth-child(even){background:#f2f2f2}.members-cap-tabs button{display:inline;margin:-4px;line-height:inherit;padding:4px 8px;border:1px solid transparent;background:transparent;border-radius:0;outline:0;-webkit-transition:all .25s ease-out;transition:all .25s ease-out}.members-cap-tabs button:hover,.members-cap-tabs button:focus{border-color:#eee;background:#fafafa;cursor:pointer}.members-cap-tabs button:active{color:#0073aa;border-color:#0073aa}.members-cap-tabs button+.dashicons{display:none;margin-top:1px;margin-bottom:-1px;line-height:inherit}.members-cap-tabs button:hover+.dashicons,.members-cap-tabs button:focus+.dashicons{display:inline-block}.members-tab-content .members-highlight{background-color:rgba(0,115,170,0.05)}.members-tab-content tbody{-webkit-transition:all 2s ease-in-out;transition:all 2s ease-in-out}.members-cp-role-list-wrap{overflow:auto;min-height:42px;max-height:200px;padding:0 .9em;border:solid 1px #dfdfdf;background-color:#fdfdfd}#wpbody-content{padding-bottom:200px}.members-footer-promotion{text-align:center;font-weight:400;font-size:13px;line-height:16px;color:#787c82;padding:20px 0 30px 0;margin-bottom:20px}.members-footer-promotion p{font-weight:600}.members-footer-promotion-links,.members-footer-promotion-social{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.members-footer-promotion-links{margin:9px 0 0}.members-footer-promotion-links span{color:#c3c4c7;padding:0 7px}.members-footer-promotion-social{margin:10px 0 0 0;gap:10px}.members-footer-promotion-social li{margin-bottom:0}.members-footer-promotion-social a{display:block;height:16px}.members_page_members-settings.rtl{.addon-activate{left:20px;right:unset}.members-addons .plugin-card{.name,.desc p{margin-left:0;margin-right:148px}}}.button.button-warning{background:#dc3232;border-color:#dc3232;color:#fff}.button.button-warning:hover,.button.button-warning:focus{background:#c92424;border-color:#c92424;color:#fff}.members-reset-spinner{float:none;margin-top:0;vertical-align:middle}
\ No newline at end of file
+#members-cp h2.hndle,#members-cp-side h2.hndle{border-bottom:none !important;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}#members-cp h2.hndle:before,#members-cp-side h2.hndle:before{content:url("data:image/svg+xml,%3Csvg width='15px' aria-hidden='true' focusable='false' data-prefix='fas' data-icon='users-cog' class='svg-inline--fa fa-users-cog fa-w-20' role='img' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 640 512'%3E%3Cpath fill='currentColor' d='M610.5 341.3c2.6-14.1 2.6-28.5 0-42.6l25.8-14.9c3-1.7 4.3-5.2 3.3-8.5-6.7-21.6-18.2-41.2-33.2-57.4-2.3-2.5-6-3.1-9-1.4l-25.8 14.9c-10.9-9.3-23.4-16.5-36.9-21.3v-29.8c0-3.4-2.4-6.4-5.7-7.1-22.3-5-45-4.8-66.2 0-3.3.7-5.7 3.7-5.7 7.1v29.8c-13.5 4.8-26 12-36.9 21.3l-25.8-14.9c-2.9-1.7-6.7-1.1-9 1.4-15 16.2-26.5 35.8-33.2 57.4-1 3.3.4 6.8 3.3 8.5l25.8 14.9c-2.6 14.1-2.6 28.5 0 42.6l-25.8 14.9c-3 1.7-4.3 5.2-3.3 8.5 6.7 21.6 18.2 41.1 33.2 57.4 2.3 2.5 6 3.1 9 1.4l25.8-14.9c10.9 9.3 23.4 16.5 36.9 21.3v29.8c0 3.4 2.4 6.4 5.7 7.1 22.3 5 45 4.8 66.2 0 3.3-.7 5.7-3.7 5.7-7.1v-29.8c13.5-4.8 26-12 36.9-21.3l25.8 14.9c2.9 1.7 6.7 1.1 9-1.4 15-16.2 26.5-35.8 33.2-57.4 1-3.3-.4-6.8-3.3-8.5l-25.8-14.9zM496 368.5c-26.8 0-48.5-21.8-48.5-48.5s21.8-48.5 48.5-48.5 48.5 21.8 48.5 48.5-21.7 48.5-48.5 48.5zM96 224c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm224 32c1.9 0 3.7-.5 5.6-.6 8.3-21.7 20.5-42.1 36.3-59.2 7.4-8 17.9-12.6 28.9-12.6 6.9 0 13.7 1.8 19.6 5.3l7.9 4.6c.8-.5 1.6-.9 2.4-1.4 7-14.6 11.2-30.8 11.2-48 0-61.9-50.1-112-112-112S208 82.1 208 144c0 61.9 50.1 112 112 112zm105.2 194.5c-2.3-1.2-4.6-2.6-6.8-3.9-8.2 4.8-15.3 9.8-27.5 9.8-10.9 0-21.4-4.6-28.9-12.6-18.3-19.8-32.3-43.9-40.2-69.6-10.7-34.5 24.9-49.7 25.8-50.3-.1-2.6-.1-5.2 0-7.8l-7.9-4.6c-3.8-2.2-7-5-9.8-8.1-3.3.2-6.5.6-9.8.6-24.6 0-47.6-6-68.5-16h-8.3C179.6 288 128 339.6 128 403.2V432c0 26.5 21.5 48 48 48h255.4c-3.7-6-6.2-12.8-6.2-20.3v-9.2zM173.1 274.6C161.5 263.1 145.6 256 128 256H64c-35.3 0-64 28.7-64 64v32c0 17.7 14.3 32 32 32h65.9c6.3-47.4 34.9-87.3 75.2-109.4z'%3E%3C/path%3E%3C/svg%3E");margin-right:5px}#members-cp-side .postbox-header{border-bottom:none !important}#members-cp-side .handle-actions .handle-order-higher,#members-cp-side .handle-actions .handle-order-lower{display:none}#members-cp-side .handle-actions .handlediv{position:absolute;right:5px}.members-upgrade-header{text-align:center;padding:5px}.members-upgrade-header a{color:#f59431}.memberpress-paid-memberships{background-color:#f5f5f5;padding:50px 10px;text-align:center}.memberpress-paid-memberships a{background-color:#0e4598;display:inline-block;padding:10px 20px;border-radius:300px;color:#fff;text-decoration:none;margin-top:20px}#members-cp-side .members-tabs{position:relative}#members-cp-side .members-tab-nav{background-color:transparent;margin-bottom:20px;border-right:none !important}#members-cp-side .members-tab-nav .members-tab-title{width:33.333%;height:50px;border-right:none !important}#members-cp-side .members-tab-nav .members-tab-title a{border:0}#members-cp-side .members-tab-content h3{font-weight:bold;font-size:15px;margin-top:0;color:#000;margin-bottom:10px}#members-cp-side .members-tab-content .memberpress-paid-memberships{text-align:left;padding:20px}#members-cp-side .members-tab-content .memberpress-paid-memberships a{display:block;text-align:center}#members-cp-side .members-tabs .members-tab-nav li a,#members-cp-side .members-tabs .members-tab-nav li[aria-selected="false"] a i{color:#555}#members-cp-side .members-tabs .members-tab-nav li a svg,#members-cp-side .members-tabs .members-tab-nav li[aria-selected="false"] a svg{fill:#555}#members-cp-side .members-tabs .members-tab-nav li[aria-selected="true"] a{background-color:transparent;border-bottom:2px solid #3582ae}#members-cp-side .members-tabs .members-tab-nav li[aria-selected="true"] a i{color:#3582ae}#members-cp-side .members-tabs .members-tab-nav li[aria-selected="true"] a svg{fill:#3582ae}.members-tab-title svg,.members-tab-title[aria-selected="false"] svg{fill:#0073aa}.members-tab-title[aria-selected="true"] svg{fill:#555}#wpcontent #members-admin-header{margin-left:-20px;padding:0;padding-left:22px;background-color:#f9f9f9;background-repeat:repeat;background-size:1200px 75px;min-height:36px;position:relative}#wpcontent #members-admin-header img.members-logo{height:90px}.members-upgrade-header #close-members-upgrade-header{position:absolute;right:20px;top:3px}.members-upgrade-header #close-members-upgrade-header:hover{cursor:pointer}.memberpress-welcome-panel.welcome-panel{margin-top:0;padding:40px 20px;background:#fff}.memberpress-welcome-panel.welcome-panel:before{background:0}.memberpress-welcome-panel.welcome-panel .about-description{margin:20px 0}.memberpress-welcome-panel.welcome-panel-content{margin:0}.memberpress-welcome-panel.welcome-panel-content .mp-logo-wrap>a{display:block}@media screen and (min-width:870px){.members_page_members-settings .members-short-p{max-width:612px;margin-left:auto;margin-right:auto}.members_page_members-settings .welcome-panel-content{text-align:center}}.members_page_members-settings .welcome-panel .button.button-hero{margin-left:auto;margin-right:auto}.members_page_members-settings .members-svg-wrap{display:inline-block;margin:0 auto 20px}@media screen and (max-width:870px){.members_page_members-settings .welcome-panel{padding:20px}.members_page_members-settings .members-svg-wrap{float:left;margin-right:28px}.admin_page_members-settings.rtl .members-svg-wrap{float:right;margin-right:0;margin-left:28px}}.members_page_members-settings .members-svg-link{display:table-cell;text-align:center;width:128px;height:128px;background:#363b3f;color:#fff;padding:24px 16px 16px;border-radius:50%;-webkit-box-sizing:border-box;box-sizing:border-box;border:4px solid #fff;-webkit-box-shadow:0 0 0 4px #363b3f;box-shadow:0 0 0 4px #363b3f}.members_page_members-settings .members-svg-link svg{max-width:84px;max-height:64px;width:auto;height:auto}.members-addons{display:grid;grid-template-columns:1fr 1fr;grid-row-gap:20px;grid-column-gap:20px}.members-addons .plugin-card{margin:0}.members-addons .plugin-card-top{width:100%}.members-addon{width:100%;position:relative;float:none;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.members-addon .desc{margin-bottom:80px}.addon-activate{text-align:center;border:1px solid #ddd;border-radius:3px;padding:5px 10px 10px;display:inline-block;width:100px;position:absolute;right:20px;bottom:20px}.activate-toggle:hover{cursor:pointer}.activate-toggle svg{max-width:20px;position:relative;top:5px}.activate-toggle svg{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.activate-toggle svg.active{-webkit-transform:rotate(0);transform:rotate(0)}.activate-toggle svg path{fill:#ccc}.activate-toggle svg.active path{fill:#8cbd5a}.activate-toggle.processing{cursor:not-allowed;pointer-events:none;opacity:.5}.activate-toggle .action-label{display:inline-block;width:50px;text-align:left}.mepr_dummy_txns{-webkit-filter:blur(3px);filter:blur(3px);position:absolute;top:0;left:0;width:100%;z-index:5;pointer-events:none}.mepr_dummy_txns::after{background-color:rgba(0,0,0,.2);position:absolute;top:0;left:0;width:100%;height:100%;z-index:6}.mepr-upgrade-table{position:relative}.mepr-upgrade-table .mepr-upgrade{position:relative;top:100px;z-index:10;background:rgba(0,0,0,.2);width:100%;height:100%;max-width:600px;margin:0 auto;-webkit-box-shadow:0 0 30px #ccc;box-shadow:0 0 30px #ccc}.mepr-upgrade-content{background-color:#fff;padding:20px;text-align:center}.mepr-upgrade-content h2{font-size:24px}.mepr-upgrade-content h4{font-size:18px}.mepr-upgrade-content .features{display:grid;grid-template-columns:1fr 1fr;grid-column-gap:30px;grid-row-gap:10px;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;text-align:left;padding:10px}.features li:before{content:"\f147";font-family:dashicons;color:green;font-size:20px;position:relative;top:4px;margin-right:10px}.mepr-upgrade-cta{text-align:center;background-color:#f2f2f2;padding:20px}.mepr-upgrade-cta .mepr-cta-button{display:block;max-width:300px;margin:0 auto 20px;background-color:#fd9c27;color:#fff;padding:15px;font-size:18px;font-weight:bold;text-decoration:none;border-radius:300px}.members-plugin-card.plugin-card:nth-child(even){margin-right:inherit}.members-plugin-card.plugin-card:nth-child(odd){clear:none;margin-left:inherit}.members-plugin-card.plugin-card .plugin-card-top{min-height:0;padding:30px 20px}.members-plugin-card.plugin-card .plugin-icon{top:30px}.members-plugin-card.plugin-card .plugin-card-bottom .column-status{font-weight:bold}.members-plugin-card.plugin-card .plugin-card-bottom .column-status .active{color:#8cbd5a}.members-plugin-card.plugin-card .plugin-card-bottom .column-status .inactive{color:red}.members-plugin-card.plugin-card .plugin-icon{width:64px;height:auto}.plugin-icon-small{width:32px;height:auto}.members-plugin-card.plugin-card .name,.members-plugin-card.plugin-card .desc{margin-right:0;margin-left:84px}.members-addons .plugin-card .name,.members-addons .plugin-card .desc p{margin-right:0}@media screen and (max-width:1100px){.members-addons{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}}@media screen and (max-width:600px){.members_page_members-settings .members-svg-link{width:64px;height:64px}.members_page_members-settings .members-svg-link svg{position:absolute;top:14px;left:15px;max-width:30px;max-height:30px}.members_page_members-settings .plugin-card-members-edd-integration .members-svg-link svg,.members_page_members-settings .plugin-card-members-acf-integration .members-svg-link svg,.members_page_members-settings .plugin-card-members-givewp-integration .members-svg-link svg,.members_page_members-settings .plugin-card-members-meta-box-integration .members-svg-link svg,.members_page_members-settings .plugin-card-members-woocommerce-integration .members-svg-link svg{top:10px;left:8px;max-width:40px;max-height:40px}.members_page_members-settings .plugin-card-members-block-permissions .members-svg-link svg,.members_page_members-settings .plugin-card-members-role-hierarchy .members-svg-link svg{left:14px}.members-addons .plugin-card .desc>p,.members-addons .plugin-card .name{margin-left:84px}}.memberpress-about .welcome-panel-column-container{display:-webkit-box;display:-ms-flexbox;display:flex}.memberpress-about .mp-logo{max-width:256px;margin:50px}.members-about-addons{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-column-gap:20px}.members-about-addons .members-plugin-card{margin:0;width:100%}.members-about-addons .members-plugin-card .name h3 a{text-decoration:none}.members-about-addons .members-plugin-card .plugin-card-bottom{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}@media only screen and (max-width:1099px){.members-about-addons{grid-template-columns:1fr;grid-row-gap:20px}}@media screen and (min-width:1100px) and (max-width:1600px){.members-about-addons .members-plugin-card{float:none;width:auto;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.members-plugin-card.plugin-card .desc{margin-left:0;margin-top:50px}.members-plugin-card.plugin-card .desc p{margin-left:0;margin-right:0}.members-plugin-card.plugin-card .plugin-card-bottom .column-status{float:none}.members-plugin-card.plugin-card .plugin-card-bottom .column-updated{float:none;width:auto}}@media screen and (max-width:1200px){.welcome-panel .welcome-panel-column-container{-webkit-box-orient:vertical;-webkit-box-direction:reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse;gap:0;padding:0}.memberpress-about .mp-logo{margin:0 0 20px}}.members-plugin-card.plugin-card .desc p{margin-left:0;margin-right:0}@media only screen and (min-width:783px){.members_page_roles .column-users,.members_page_roles .column-granted_caps,.members_page_roles .column-denied_caps{width:100px;text-align:center}}.members-title-div #titlewrap input{padding:0 8px;font-size:1.7em;line-height:normal;height:1.7em;width:100%;outline:0;margin:0 0 3px;background-color:#fff}.members-title-div input[name="role"]{font-size:13px;height:22px;margin:0;width:16em}#tabcapsdiv{margin-top:1em}#tabcapsdiv>.hndle{padding:10px;border-bottom:1px solid #eee}#tabcapsdiv .inside,#members-cp .inside{margin:0;padding:0}.members-cap-tabs,.members-tabs{overflow:hidden;background:#fff;background:-webkit-gradient(linear,left top,right top,from(#fafafa),color-stop(20%,#fafafa),color-stop(20%,#fff),to(#fff));background:linear-gradient(90deg,#fafafa 0,#fafafa 20%,#fff 20%,#fff 100%)}@media only screen and (max-width:782px){.members-cap-tabs,.members-tabs{background:linear-gradient(90deg,#fafafa 0,#fafafa 48px,#fff 48px,#fff 100%)}}.members-cap-tabs .members-tab-nav,.members-tabs .members-tab-nav{position:relative;float:left;list-style:none;width:20%;line-height:1em;margin:0 0 -1px 0;padding:0;background-color:#fafafa;border-right:1px solid #eee;-webkit-box-sizing:border-box;box-sizing:border-box}.members-cap-tabs .members-tab-nav li,.members-tabs .members-tab-nav li{display:block;position:relative;margin:0;padding:0;line-height:20px}.members-cap-tabs .members-tab-nav li a,.members-tabs .members-tab-nav li a{display:block;margin:0;padding:10px;line-height:20px !important;text-decoration:none;border-bottom:1px solid #eee;-webkit-box-shadow:none;box-shadow:none}.members-cap-tabs .members-tab-nav li a .dashicons,.members-tabs .members-tab-nav li a .dashicons{line-height:20px;margin-right:3px}.members-cap-tabs .members-tab-nav li[aria-selected="true"] a,.members-tabs .members-tab-nav li[aria-selected="true"] a{position:relative;font-weight:bold;color:#555;background-color:#e0e0e0}@media only screen and (max-width:782px){.members-cap-tabs .members-tab-nav,.members-tabs .members-tab-nav{width:48px}.members-cap-tabs .members-tab-nav li a .dashicons,.members-tabs .members-tab-nav li a .dashicons{width:24px;height:24px;font-size:24px;line-height:24px}.members-tab-nav li .dashicons::before,.members-tab-nav li .dashicons::before{width:24px;height:24px}.members-tab-nav li .label{overflow:hidden;position:absolute;top:-1000em;left:-1000em;width:1px;height:1px}}.members-cap-tabs .members-tab-wrap,.members-tabs .members-tab-wrap{float:left;width:80%;margin-left:-1px}@media only screen and (max-width:782px){.members-cap-tabs .members-tab-wrap,.members-tabs .members-tab-wrap{width:calc(100% - 48px)}}#members-cp .members-tab-content{padding:10px;border-left:1px solid #e5e5e5}.members-roles-select th,.members-roles-select td{width:190px;overflow:hidden}.members-roles-select .check-all-th{text-align:center}.members-roles-select .check-all-th label{padding-left:5px}@media only screen and (min-width:850px){#side-sortables .members-tabs{background:#fff}#side-sortables .members-tabs .members-tab-wrap{width:100%}#side-sortables .members-tabs .members-tab-nav{display:table;width:100%}#side-sortables .members-tabs .members-tab-nav li{display:table-cell;text-align:center;border-right:1px solid #eee}#side-sortables .members-tabs .members-tab-nav li:last-of-type{border-right:0}#side-sortables .members-tabs .members-tab-nav li a{padding:10px 0}#side-sortables .members-tabs .members-tab-nav .dashicons{width:24px;height:24px;font-size:24px;line-height:24px}#side-sortables .members-tabs .members-tab-nav .dashicons::before{width:24px;height:24px}#side-sortables .members-tabs .members-tab-nav .label{overflow:hidden;position:absolute;top:-1000em;left:-1000em;width:1px;height:1px}}.members-tabs .members-tabs-label{display:block !important;font-weight:bold;display:inline-block;margin-bottom:4px}.members-tabs .butterbean-control-checkbox .members-tabs-label{display:inline !important}.members-tabs .members-tabs-description{display:block;font-style:italic;margin-top:4px}.members-tabs .members-tabs-label+.members-tabs-description{margin-top:0;margin-bottom:4px}#tabcapsdiv table{border-right:0;border-top:0;border-bottom:0}#tabcapsdiv table td,#tabcapsdiv table th{padding:10px;padding-bottom:10px;border-bottom:1px solid #eee;font-size:13px;line-height:20px}#tabcapsdiv table td{padding:9px}#tabcapsdiv tbody tr:last-of-type td{border-bottom:0}#tabcapsdiv tfoot th{border-color:#eee}@media only screen and (max-width:782px){#tabcapsdiv table td,#tabcapsdiv table th{line-height:24px}}.members-roles-select .column-grant,.members-roles-select .column-deny{width:70px !important;text-align:left;display:table-cell !important;clear:none !important}.members-roles-select thead th,.members-roles-select tfoot th{padding:9px !important}.members-roles-select .column-grant input,.members-roles-select .column-deny input{margin:0 5px 0 0;vertical-align:middle}.members-roles-select tbody tr:nth-child(even){background:#f2f2f2}.members-cap-tabs button{display:inline;margin:-4px;line-height:inherit;padding:4px 8px;border:1px solid transparent;background:transparent;border-radius:0;outline:0;-webkit-transition:all .25s ease-out;transition:all .25s ease-out}.members-cap-tabs button:hover,.members-cap-tabs button:focus{border-color:#eee;background:#fafafa;cursor:pointer}.members-cap-tabs button:active{color:#0073aa;border-color:#0073aa}.members-cap-tabs button+.dashicons{display:none;margin-top:1px;margin-bottom:-1px;line-height:inherit}.members-cap-tabs button:hover+.dashicons,.members-cap-tabs button:focus+.dashicons{display:inline-block}.members-tab-content .members-highlight{background-color:rgba(0,115,170,0.05)}.members-tab-content tbody{-webkit-transition:all 2s ease-in-out;transition:all 2s ease-in-out}.members-cp-role-list-wrap{overflow:auto;min-height:42px;max-height:200px;padding:0 .9em;border:solid 1px #dfdfdf;background-color:#fdfdfd}#wpbody-content{padding-bottom:200px}.members-footer-promotion{text-align:center;font-weight:400;font-size:13px;line-height:16px;color:#787c82;padding:20px 0 30px 0;margin-bottom:20px}.members-footer-promotion p{font-weight:600}.members-footer-promotion-links,.members-footer-promotion-social{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.members-footer-promotion-links{margin:9px 0 0}.members-footer-promotion-links span{color:#c3c4c7;padding:0 7px}.members-footer-promotion-social{margin:10px 0 0 0;gap:10px}.members-footer-promotion-social li{margin-bottom:0}.members-footer-promotion-social a{display:block;height:16px}.members_page_members-settings.rtl{.addon-activate{left:20px;right:unset}.members-addons .plugin-card{.name,.desc p{margin-left:0;margin-right:148px}}}.button.button-warning{background:#dc3232;border-color:#dc3232;color:#fff}.button.button-warning:hover,.button.button-warning:focus{background:#c92424;border-color:#c92424;color:#fff}.members-reset-spinner{float:none;margin-top:0;vertical-align:middle}.members-admin-menus-wrap{max-width:1400px}.members-admin-menus-toolbar{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;margin-bottom:16px}.members-am-copy-wrap label{margin-right:8px}.members-am-chips{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:8px;margin-bottom:12px}.members-am-chip{border-radius:999px;padding:4px 12px;border:1px solid #c3c4c7;background:#f6f7f7;cursor:pointer}.members-am-chip.is-active{background:#2271b1;border-color:#2271b1;color:#fff}.members-am-carousel-wrap{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;gap:8px;margin-bottom:8px}.members-am-carousel-prev,.members-am-carousel-next{-ms-flex-item-align:center;align-self:center;width:36px;height:36px;border-radius:50%;border:1px solid #c3c4c7;background:#fff;cursor:pointer}.members-am-columns{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-ms-flex:1;flex:1;gap:12px;min-height:320px;overflow:hidden}.members-am-column{-webkit-box-flex:1;-ms-flex:1;flex:1;min-width:0;background:#1d2327;border-radius:4px;color:#f0f0f1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.members-am-user-column{border:2px dashed #8c8f94}.members-am-sidebar-head{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:8px 10px;background:#2c3338;border-radius:4px 4px 0 0;font-weight:600;font-size:12px;text-transform:uppercase;letter-spacing:.04em}.members-am-col-move button{margin-left:4px;padding:0 6px;min-height:24px;line-height:22px;font-size:11px}.members-am-sidebar-list{padding:6px 0 12px;overflow-y:auto;max-height:480px}.members-am-item{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:6px 10px 6px 8px;cursor:pointer;border-left:3px solid transparent;font-size:13px}.members-am-item.is-sub{padding-left:22px;font-size:12px;opacity:.95}.members-am-item.is-hidden{opacity:.18}.members-am-item.is-no-cap{opacity:.35}.members-am-item.is-no-cap.is-hidden{opacity:.15}.members-am-item.is-selected{border-left-color:#2271b1;background:rgba(34,113,177,0.15)}.members-am-item-main{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;min-width:0}.members-am-item-main .dashicons{font-size:18px;width:18px;height:18px}.members-am-item-label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.members-am-item-actions{display:none;gap:2px}.members-am-item:hover .members-am-item-actions{display:-webkit-box;display:-ms-flexbox;display:flex}.members-am-item-actions button{min-height:22px;padding:0 4px;line-height:20px;font-size:11px}.members-am-sep{text-align:center;opacity:.35;font-size:11px;padding:4px 0}.members-am-carousel-dots{text-align:center;margin-bottom:4px}.members-am-dot{width:8px;height:8px;border-radius:50%;border:0;margin:0 4px;padding:0;background:#c3c4c7;cursor:pointer}.members-am-dot.is-active{background:#2271b1}.members-am-carousel-status{text-align:center;color:#646970;font-size:12px;margin-top:0}.members-am-badge{font-size:9px;text-transform:uppercase;padding:1px 4px;border-radius:2px;margin-right:4px;vertical-align:middle}.members-am-badge-new{background:#2271b1;color:#fff}.members-am-badge-edit{background:#dba617;color:#1d2327}.members-am-badge-nocap{background:#8c8f94;color:#fff}.members-am-legend{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:16px;margin:0 0 8px;padding:0;font-size:12px;color:#646970}.members-am-legend-item{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:4px}.members-am-edit-panel{margin-top:20px;padding:16px;border:1px solid #c3c4c7;background:#fff;border-radius:4px}.members-am-edit-panel-header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:12px}.members-am-edit-panel-header h2{margin:0;font-size:16px}.members-am-edit-toolbar{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:12px;margin-bottom:12px}.members-am-edit-target-wrap select{margin-left:8px}.members-am-level-actions .button{margin-right:6px}.members-am-edit-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:16px}.members-am-edit-col label{display:block;font-weight:600;margin-bottom:4px}.members-am-icon-tabs{margin-bottom:8px}.members-am-icon-tabs .button{margin-right:4px;margin-bottom:4px}.members-am-icon-tabs .button.is-active{background:#2271b1;border-color:#2271b1;color:#fff}.members-am-icon-grid{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:4px;max-height:160px;overflow-y:auto;border:1px solid #dcdcde;padding:8px;background:#f6f7f7;margin-bottom:8px}.members-am-icon-pick{width:36px;height:36px;padding:0;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;border:1px solid #c3c4c7;background:#fff;cursor:pointer}.members-am-vis-row{display:block;margin-bottom:6px;font-weight:normal}.members-am-reset-dropdown{position:absolute;z-index:100;background:#fff;border:1px solid #c3c4c7;border-radius:6px;padding:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-shadow:0 4px 12px rgba(0,0,0,0.15);box-shadow:0 4px 12px rgba(0,0,0,0.15);min-width:280px;top:100%;left:0;margin-top:4px;overflow:hidden}.members-am-reset-title{padding:10px 14px;font-weight:600;font-size:13px;border-bottom:1px solid #f0f0f0;color:#1d2327}.members-am-reset-option{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;gap:10px;padding:12px 14px;border:0;background:0;cursor:pointer;text-align:left;width:100%;border-bottom:1px solid #f0f0f0;-webkit-transition:background .15s;transition:background .15s}.members-am-reset-option:last-child{border-bottom:0}.members-am-reset-option:hover{background:#f6f7f7}.members-am-reset-option .dashicons{margin-top:2px;color:#646970}.members-am-reset-option-text{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:2px}.members-am-reset-option-text strong{font-size:13px;color:#1d2327}.members-am-reset-option-text small{font-size:12px;color:#646970}.members-am-reset-danger:hover{background:#fcf0f1}.members-am-reset-danger .dashicons{color:#d63638}.members-am-reset-danger:hover strong{color:#d63638}@media screen and (max-width:782px){.members-am-columns{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}}.members-am-user-suggestions{position:absolute;z-index:100;background:#fff;border:1px solid #c3c4c7;border-radius:4px;max-height:200px;overflow-y:auto;width:100%;-webkit-box-shadow:0 2px 6px rgba(0,0,0,0.15);box-shadow:0 2px 6px rgba(0,0,0,0.15);top:100%;left:0}.members-am-user-suggestion{padding:8px 12px;cursor:pointer;font-size:13px;border-bottom:1px solid #f0f0f0}.members-am-user-suggestion:hover{background:#f0f6fc}.members-am-user-suggestion:last-child{border-bottom:0}
\ No newline at end of file
diff --git a/js/admin-menus.js b/js/admin-menus.js
new file mode 100644
index 0000000..bc0504b
--- /dev/null
+++ b/js/admin-menus.js
@@ -0,0 +1,1448 @@
+/**
+ * Members — Admin Menus add-on settings UI.
+ */
+(function ($) {
+ 'use strict';
+
+ var state = {
+ settings: $.extend(true, {}, membersAdminMenus.settings),
+ tree: [],
+ activeRoleSlugs: [],
+ carouselPage: 0,
+ columnsPerPage: 3,
+ selectedId: null,
+ iconTab: 'dashicons',
+ previewUserId: null,
+ previewUserRoles: [],
+ userSuggestions: [],
+ mediaFrame: null,
+ syncScroll: (function () {
+ try { return localStorage.getItem('members_am_sync_scroll') !== '0'; } catch (e) { return true; }
+ })(),
+ };
+
+ var DASHICONS = [
+ 'dashicons-menu', 'dashicons-admin-dashboard', 'dashicons-admin-post', 'dashicons-admin-page',
+ 'dashicons-admin-media', 'dashicons-admin-comments', 'dashicons-admin-appearance', 'dashicons-admin-plugins',
+ 'dashicons-admin-users', 'dashicons-admin-tools', 'dashicons-admin-settings', 'dashicons-admin-generic',
+ 'dashicons-edit', 'dashicons-plus', 'dashicons-chart-bar', 'dashicons-cart', 'dashicons-products',
+ 'dashicons-email', 'dashicons-groups', 'dashicons-heart', 'dashicons-star-filled', 'dashicons-smiley',
+ 'dashicons-info', 'dashicons-lock', 'dashicons-unlock', 'dashicons-visibility', 'dashicons-hidden',
+ 'dashicons-arrow-up', 'dashicons-arrow-down', 'dashicons-admin-network', 'dashicons-performance',
+ ];
+
+ var FA_ICONS = [
+ 'fa-solid fa-house', 'fa-solid fa-user', 'fa-solid fa-gear', 'fa-solid fa-file', 'fa-solid fa-image',
+ 'fa-solid fa-cart-shopping', 'fa-solid fa-chart-line', 'fa-solid fa-envelope', 'fa-solid fa-book',
+ 'fa-solid fa-link', 'fa-solid fa-bell', 'fa-solid fa-star', 'fa-solid fa-heart', 'fa-solid fa-lock',
+ 'fa-solid fa-unlock', 'fa-solid fa-pen', 'fa-solid fa-trash', 'fa-solid fa-plus', 'fa-solid fa-minus',
+ ];
+
+ var VIEW_STORAGE_KEY = 'members_am_view_state';
+
+ function saveViewState() {
+ try {
+ localStorage.setItem(VIEW_STORAGE_KEY, JSON.stringify({
+ activeRoleSlugs: state.activeRoleSlugs,
+ carouselPage: state.carouselPage,
+ }));
+ } catch (e) {}
+ }
+
+ function loadViewState() {
+ try {
+ var raw = localStorage.getItem(VIEW_STORAGE_KEY);
+ if (raw) {
+ return JSON.parse(raw);
+ }
+ } catch (e) {}
+ return null;
+ }
+
+ function deepClone(o) {
+ return JSON.parse(JSON.stringify(o));
+ }
+
+ function getRolesList() {
+ return membersAdminMenus.roles || [];
+ }
+
+ function ensureSettings() {
+ if (!state.settings._meta || Array.isArray(state.settings._meta)) {
+ state.settings._meta = { version: 3, admin_editable: false };
+ }
+ if (!state.settings.roles || Array.isArray(state.settings.roles)) {
+ state.settings.roles = {};
+ }
+ if (!state.settings.users || Array.isArray(state.settings.users)) {
+ state.settings.users = {};
+ }
+ if (!Array.isArray(state.settings.custom_items)) {
+ state.settings.custom_items = [];
+ }
+ if (!state.settings.capabilities || Array.isArray(state.settings.capabilities)) {
+ state.settings.capabilities = {};
+ }
+ }
+
+ function getRoleConfig(role) {
+ ensureSettings();
+ if (!state.settings.roles[role]) {
+ state.settings.roles[role] = { hidden: [], order: [], submenu_order: {}, overrides: {} };
+ }
+ var r = state.settings.roles[role];
+ if (!r.hidden || !Array.isArray(r.hidden)) {
+ r.hidden = [];
+ }
+ if (!r.order || !Array.isArray(r.order)) {
+ r.order = [];
+ }
+ if (!r.submenu_order || Array.isArray(r.submenu_order)) {
+ r.submenu_order = {};
+ }
+ if (!r.overrides || Array.isArray(r.overrides)) {
+ r.overrides = {};
+ }
+ return r;
+ }
+
+ function getUserConfig(uid) {
+ ensureSettings();
+ if (!state.settings.users[uid]) {
+ state.settings.users[uid] = {};
+ }
+ var u = state.settings.users[uid];
+ if (!u.hidden || !Array.isArray(u.hidden)) u.hidden = [];
+ if (!u.order || !Array.isArray(u.order)) u.order = [];
+ if (!u.overrides || Array.isArray(u.overrides)) u.overrides = {};
+ if (!u.submenu_order || Array.isArray(u.submenu_order)) u.submenu_order = {};
+ return u;
+ }
+
+ function getTopOrderForUser(uid) {
+ var ucfg = getUserConfig(uid);
+ if (ucfg.order && ucfg.order.length) return ucfg.order;
+ return defaultTopOrder();
+ }
+
+ function getSubOrderForUser(uid, parentId, children) {
+ var ucfg = getUserConfig(uid);
+ if (ucfg.submenu_order && ucfg.submenu_order[parentId]) {
+ return ucfg.submenu_order[parentId];
+ }
+ return children.map(function (c) { return c.id; });
+ }
+
+ function isUserHidden(uid, itemId) {
+ var ucfg = getUserConfig(uid);
+ if (ucfg.hidden.indexOf(itemId) !== -1) return true;
+ var parentId = findParentId(itemId);
+ if (parentId && ucfg.hidden.indexOf(parentId) !== -1) return true;
+ return false;
+ }
+
+ function toggleUserHidden(uid, itemId) {
+ var ucfg = getUserConfig(uid);
+ var idx = ucfg.hidden.indexOf(itemId);
+ var node = findNode(itemId);
+ if (idx === -1) {
+ ucfg.hidden.push(itemId);
+ if (node && node.children) {
+ node.children.forEach(function (c) {
+ if (ucfg.hidden.indexOf(c.id) === -1) ucfg.hidden.push(c.id);
+ });
+ }
+ } else {
+ ucfg.hidden.splice(idx, 1);
+ if (node && node.children) {
+ node.children.forEach(function (c) {
+ var ci = ucfg.hidden.indexOf(c.id);
+ if (ci !== -1) ucfg.hidden.splice(ci, 1);
+ });
+ }
+ }
+ }
+
+ function moveUserItem(uid, itemId, parentId, direction) {
+ var ucfg = getUserConfig(uid);
+ var arr;
+ if (parentId) {
+ if (!ucfg.submenu_order[parentId]) {
+ var node = findNode(parentId);
+ ucfg.submenu_order[parentId] = (node && node.children) ? node.children.map(function (c) { return c.id; }) : [];
+ }
+ arr = ucfg.submenu_order[parentId];
+ } else {
+ if (!ucfg.order.length) {
+ ucfg.order = defaultTopOrder();
+ }
+ arr = ucfg.order;
+ }
+ var idx = arr.indexOf(itemId);
+ if (idx === -1) return;
+ var newIdx = idx + direction;
+ if (newIdx < 0 || newIdx >= arr.length) return;
+ arr.splice(idx, 1);
+ arr.splice(newIdx, 0, itemId);
+ }
+
+ function customHookId(item) {
+ var id = item.id || 'c';
+ return 'members-am-' + String(id).replace(/[^a-z0-9_-]/gi, '-').toLowerCase();
+ }
+
+ function buildTreeWithCustoms() {
+ var base = $.extend(true, [], membersAdminMenus.menuTree || []);
+ // Build a set of existing IDs so we don't add duplicates.
+ var existingIds = {};
+ base.forEach(function (n) { existingIds[n.id] = true; });
+ (state.settings.custom_items || []).forEach(function (item) {
+ if (!item || !item.id) {
+ return;
+ }
+ var hookId = customHookId(item);
+ if (existingIds[hookId]) {
+ // Already present in the base tree (injected by PHP).
+ // Just flag it as custom so badges and remove work.
+ for (var i = 0; i < base.length; i++) {
+ if (base[i].id === hookId) {
+ base[i].custom = true;
+ base[i].customId = item.id;
+ break;
+ }
+ }
+ return;
+ }
+ base.push({
+ id: hookId,
+ title: item.label || 'Custom',
+ icon: item.icon || 'dashicons-admin-generic',
+ type: 'top',
+ custom: true,
+ customId: item.id,
+ children: [],
+ });
+ });
+ return base;
+ }
+
+ function findNode(id, nodes) {
+ nodes = nodes || state.tree;
+ for (var i = 0; i < nodes.length; i++) {
+ if (nodes[i].id === id) {
+ return nodes[i];
+ }
+ if (nodes[i].children && nodes[i].children.length) {
+ var f = findNode(id, nodes[i].children);
+ if (f) {
+ return f;
+ }
+ }
+ }
+ return null;
+ }
+
+ function findParentId(childId) {
+ for (var i = 0; i < state.tree.length; i++) {
+ var n = state.tree[i];
+ if (!n.children) {
+ continue;
+ }
+ for (var j = 0; j < n.children.length; j++) {
+ if (n.children[j].id === childId) {
+ return n.id;
+ }
+ }
+ }
+ return null;
+ }
+
+ function findChildNode(parent, childId) {
+ if (!parent || !parent.children) return null;
+ for (var i = 0; i < parent.children.length; i++) {
+ if (parent.children[i].id === childId) return parent.children[i];
+ }
+ return null;
+ }
+
+ function defaultTopOrder() {
+ return state.tree.map(function (n) {
+ return n.id;
+ });
+ }
+
+ function defaultChildSlugs(parentId) {
+ var node = findNode(parentId);
+ if (!node || !node.children) {
+ return [];
+ }
+ return node.children.map(function (c) {
+ var parts = String(c.id).split('::');
+ return parts.length > 1 ? parts[1] : c.id;
+ });
+ }
+
+ function getTopOrder(role) {
+ var def = defaultTopOrder();
+ var o = getRoleConfig(role).order;
+ if (!o || !o.length) {
+ return def.slice();
+ }
+ var merged = o.filter(function (id) {
+ return id.indexOf('sep-') === 0 || findNode(id);
+ });
+ def.forEach(function (id) {
+ if (merged.indexOf(id) === -1) {
+ merged.push(id);
+ }
+ });
+ return merged;
+ }
+
+ function getChildOrder(role, parentId) {
+ var def = defaultChildSlugs(parentId);
+ var so = getRoleConfig(role).submenu_order[parentId];
+ if (!so || !so.length) {
+ return def.slice();
+ }
+ var merged = so.filter(function (slug) {
+ return def.indexOf(slug) !== -1;
+ });
+ def.forEach(function (slug) {
+ if (merged.indexOf(slug) === -1) {
+ merged.push(slug);
+ }
+ });
+ return merged;
+ }
+
+ function childFullId(parentId, childSlug) {
+ return parentId + '::' + childSlug;
+ }
+
+ function isHidden(role, itemId) {
+ var h = getRoleConfig(role).hidden;
+ if (h.indexOf(itemId) !== -1) {
+ return true;
+ }
+ // If this is a sub-item, also check if its parent is hidden.
+ var parentId = findParentId(itemId);
+ if (parentId && h.indexOf(parentId) !== -1) {
+ return true;
+ }
+ return false;
+ }
+
+ function roleHasCap(role, cap) {
+ if (!cap || cap === 'read') return true;
+ if (role === 'administrator') return true;
+ var caps = membersAdminMenus.roleCaps && membersAdminMenus.roleCaps[role];
+ if (!caps) return false;
+ return caps.indexOf(cap) !== -1;
+ }
+
+ function userHasCap(cap) {
+ if (!cap || cap === 'read') return true;
+ var roles = state.previewUserRoles || [];
+ for (var i = 0; i < roles.length; i++) {
+ if (roleHasCap(roles[i], cap)) return true;
+ }
+ return false;
+ }
+
+ function toggleHidden(role, itemId) {
+ var h = getRoleConfig(role).hidden;
+ var i = h.indexOf(itemId);
+ if (i === -1) {
+ // Hiding: add this item.
+ h.push(itemId);
+ // If it's a top-level item, also hide all its children.
+ var node = findNode(itemId);
+ if (node && node.children && node.children.length) {
+ node.children.forEach(function (child) {
+ if (h.indexOf(child.id) === -1) {
+ h.push(child.id);
+ }
+ });
+ }
+ } else {
+ // Showing: remove this item.
+ h.splice(i, 1);
+ // If it's a top-level item, also show all its children.
+ var node = findNode(itemId);
+ if (node && node.children && node.children.length) {
+ node.children.forEach(function (child) {
+ var ci = h.indexOf(child.id);
+ if (ci !== -1) {
+ h.splice(ci, 1);
+ }
+ });
+ }
+ }
+ }
+
+ function getTargetRole() {
+ var v = $('#members-am-edit-target-role').val();
+ return v || (state.activeRoleSlugs[0] || '');
+ }
+
+ function getTargetRoles() {
+ var v = $('#members-am-edit-target-role').val();
+ if (v && v.indexOf('__user__') === 0) {
+ return [];
+ }
+ if (v === '__all__') {
+ return getRolesList().map(function (r) { return r.slug; });
+ }
+ return [v || (state.activeRoleSlugs[0] || '')];
+ }
+
+ function getTargetUserId() {
+ var v = $('#members-am-edit-target-role').val();
+ if (v && v.indexOf('__user__') === 0) {
+ return parseInt(v.replace('__user__', ''), 10);
+ }
+ return null;
+ }
+
+ function getOverrideForEdit() {
+ if (!state.selectedId) {
+ return null;
+ }
+ var targetUser = getTargetUserId();
+ if (targetUser) {
+ var ucfg = getUserConfig(targetUser);
+ return (ucfg.overrides && ucfg.overrides[state.selectedId]) || {};
+ }
+ var roles = getTargetRoles();
+ var role = roles[0];
+ if (!role) {
+ return null;
+ }
+ var o = getRoleConfig(role).overrides[state.selectedId];
+ return o || {};
+ }
+
+ function setOverrideField(field, value) {
+ if (!state.selectedId) {
+ return;
+ }
+ var targetUser = getTargetUserId();
+ if (targetUser) {
+ var ucfg = getUserConfig(targetUser);
+ if (!ucfg.overrides[state.selectedId]) {
+ ucfg.overrides[state.selectedId] = {};
+ }
+ if (value === '' || value === null) {
+ delete ucfg.overrides[state.selectedId][field];
+ } else {
+ ucfg.overrides[state.selectedId][field] = value;
+ }
+ renderColumns();
+ return;
+ }
+ var roles = getTargetRoles();
+ if (!roles.length) {
+ return;
+ }
+ roles.forEach(function (role) {
+ var rc = getRoleConfig(role);
+ if (!rc.overrides[state.selectedId]) {
+ rc.overrides[state.selectedId] = {};
+ }
+ if (value === '' || value === null) {
+ delete rc.overrides[state.selectedId][field];
+ } else {
+ rc.overrides[state.selectedId][field] = value;
+ }
+ });
+ }
+
+ function initActiveRoles() {
+ var saved = loadViewState();
+ var allSlugs = getRolesList().map(function (r) { return r.slug; });
+ var adminOk = !!state.settings._meta.admin_editable;
+
+ if (saved && Array.isArray(saved.activeRoleSlugs) && saved.activeRoleSlugs.length) {
+ // Restore saved selection, but filter out roles that no longer exist
+ // or administrator if editing is now disabled.
+ var restored = saved.activeRoleSlugs.filter(function (slug) {
+ if (allSlugs.indexOf(slug) === -1) {
+ return false;
+ }
+ if (slug === 'administrator' && !adminOk) {
+ return false;
+ }
+ return true;
+ });
+ if (restored.length) {
+ state.activeRoleSlugs = restored;
+ state.carouselPage = (typeof saved.carouselPage === 'number') ? saved.carouselPage : 0;
+ // Clamp carousel page to valid range.
+ var maxPage = Math.max(0, Math.ceil(state.activeRoleSlugs.length / state.columnsPerPage) - 1);
+ if (state.carouselPage > maxPage) {
+ state.carouselPage = maxPage;
+ }
+ return;
+ }
+ }
+
+ // Default: all eligible roles active.
+ state.activeRoleSlugs = allSlugs.filter(function (slug) {
+ if (slug === 'administrator') {
+ return adminOk;
+ }
+ return true;
+ });
+ if (!state.activeRoleSlugs.length) {
+ state.activeRoleSlugs = ['subscriber'];
+ }
+ }
+
+ function renderChips() {
+ var $c = $('#members-am-role-chips').empty();
+ getRolesList().forEach(function (r) {
+ if (r.slug === 'administrator' && !state.settings._meta.admin_editable) {
+ return;
+ }
+ var on = state.activeRoleSlugs.indexOf(r.slug) !== -1;
+ var $chip = $(' ')
+ .text(r.label)
+ .attr('data-role', r.slug)
+ .toggleClass('is-active', on);
+ $c.append($chip);
+ });
+ }
+
+ function renderCarouselStatus() {
+ var total = Math.max(1, Math.ceil(state.activeRoleSlugs.length / state.columnsPerPage));
+ var cur = Math.min(state.carouselPage + 1, total);
+ var start = state.carouselPage * state.columnsPerPage + 1;
+ var end = Math.min((state.carouselPage + 1) * state.columnsPerPage, state.activeRoleSlugs.length);
+ $('#members-am-carousel-status').text(start + '–' + end + ' ' + membersAdminMenus.i18n.of + ' ' + state.activeRoleSlugs.length);
+ var $dots = $('#members-am-carousel-dots').empty();
+ for (var p = 0; p < total; p++) {
+ $dots.append($(' ').toggleClass('is-active', p === state.carouselPage));
+ }
+ }
+
+ function renderSidebar(role, $wrap) {
+ $wrap.empty();
+ var $head = $('');
+ var label = (getRolesList().filter(function (r) {
+ return r.slug === role;
+ })[0] || {}).label || role;
+ $head.append($('').text(label));
+ $head.append(
+ $(' ').append(
+ $(' ').text('◀'),
+ $(' ').text('▶')
+ )
+ );
+ $wrap.append($head);
+ var $ul = $('');
+ var order = getTopOrder(role);
+ order.forEach(function (tid) {
+ if (tid.indexOf('sep-') === 0) {
+ $ul.append($('
').text('—'));
+ return;
+ }
+ var node = findNode(tid);
+ if (!node) {
+ return;
+ }
+ renderItemRow(role, node, null, $ul);
+ if (node.children && node.children.length) {
+ var corder = getChildOrder(role, node.id);
+ corder.forEach(function (cslug) {
+ var cid = childFullId(node.id, cslug);
+ var child = findNode(cid);
+ if (child) {
+ renderItemRow(role, child, node.id, $ul);
+ }
+ });
+ }
+ });
+ $wrap.append($ul);
+ }
+
+ function renderItemRow(role, node, parentId, $container) {
+ var itemId = node.id;
+ var hidden = isHidden(role, itemId);
+ var noCap = !roleHasCap(role, node.cap);
+ var ov = getRoleConfig(role).overrides[itemId] || {};
+ var label = ov.label || node.title || itemId;
+ var $row = $('
')
+ .attr('data-id', itemId)
+ .toggleClass('is-hidden', hidden)
+ .toggleClass('is-no-cap', noCap)
+ .toggleClass('is-selected', state.selectedId === itemId)
+ .toggleClass('is-sub', !!parentId);
+ var $main = $('
');
+ if (!parentId) {
+ var icon = ov.icon || node.icon;
+ var itype = ov.icon_type || node.icon_type || 'dashicon';
+ if (itype === 'fontawesome' && icon) {
+ $main.append($(' '));
+ } else if ((itype === 'svg' || itype === 'image') && icon) {
+ $main.append($(' ').attr('src', icon).css({ width: '18px', height: '18px', display: 'inline-block', verticalAlign: 'middle', filter: 'brightness(0) invert(1)' }));
+ } else if (itype === 'custom' && icon) {
+ $main.append($(' ').attr('src', icon).css({ width: '18px', height: '18px', display: 'inline-block', verticalAlign: 'middle', filter: 'brightness(0) invert(1)' }));
+ } else {
+ var cls = (icon && icon.indexOf('dashicons-') === 0) ? icon : 'dashicons-admin-generic';
+ $main.append($(' '));
+ }
+ }
+ if (node.custom) {
+ $main.append($('custom '));
+ }
+ if (ov.label) {
+ $main.append($('edit '));
+ }
+ $main.append($(' ').text(label));
+ if (noCap) {
+ $main.append($('🔒 no access '));
+ }
+ $row.append($main);
+ var $hover = $('
');
+ $hover.append(
+ $(' ').text('◉'),
+ $(' ').text('↑'),
+ $(' ').text('↓')
+ );
+ $row.append($hover);
+ $container.append($row);
+ }
+
+ function renderUserItemRow(node, parentId, uid, ucfg) {
+ var ov = (ucfg.overrides && ucfg.overrides[node.id]) || {};
+ var label = ov.label || node.title;
+ var hidden = isUserHidden(uid, node.id);
+ var noCap = !userHasCap(node.cap);
+ var selected = (state.selectedId === node.id);
+
+ var cls = 'members-am-item';
+ if (parentId) cls += ' is-sub';
+ if (hidden) cls += ' is-hidden';
+ if (selected) cls += ' is-selected';
+ if (noCap) cls += ' is-no-cap';
+
+ var $row = $('
').addClass(cls).attr('data-id', node.id);
+ var $main = $('
');
+
+ if (!parentId) {
+ var icon = ov.icon || node.icon;
+ var itype = ov.icon_type || node.icon_type || 'dashicon';
+ if (itype === 'fontawesome' && icon) {
+ $main.append($(' '));
+ } else if ((itype === 'svg' || itype === 'image' || itype === 'custom') && icon) {
+ $main.append($(' ').attr('src', icon).css({ width: '18px', height: '18px', display: 'inline-block', verticalAlign: 'middle', filter: 'brightness(0) invert(1)' }));
+ } else if (icon && icon.indexOf('dashicons-') === 0) {
+ $main.append($(' '));
+ } else {
+ $main.append($(' '));
+ }
+ }
+
+ if (node.custom) {
+ $main.append($('custom '));
+ }
+ if (ov.label) {
+ $main.append($('edit '));
+ }
+ $main.append($(' ').text(label));
+ if (noCap) {
+ $main.append($('🔒 no access '));
+ }
+ $row.append($main);
+
+ var $actions = $('
');
+ $actions.append(
+ $(' ').text(hidden ? '◯' : '◉'),
+ $(' ').text('↑'),
+ $(' ').text('↓')
+ );
+ $row.append($actions);
+
+ $row.on('click', function (e) {
+ if ($(e.target).closest('button').length) return;
+ state.selectedId = node.id;
+ renderAll();
+ });
+
+ return $row;
+ }
+
+ function renderColumns() {
+ var $cols = $('#members-am-columns');
+ // Save scroll positions before re-render.
+ var scrollMap = {};
+ $cols.find('.members-am-column').each(function () {
+ var role = $(this).data('role');
+ if (role) {
+ var $list = $(this).find('.members-am-sidebar-list');
+ if ($list.length) {
+ scrollMap[role] = $list.scrollTop();
+ }
+ }
+ });
+ $cols.empty();
+ var start = state.carouselPage * state.columnsPerPage;
+ var slice = state.activeRoleSlugs.slice(start, start + state.columnsPerPage);
+ slice.forEach(function (role) {
+ var $c = $('
');
+ renderSidebar(role, $c);
+ $cols.append($c);
+ // Restore scroll position.
+ if (scrollMap[role]) {
+ $c.find('.members-am-sidebar-list').scrollTop(scrollMap[role]);
+ }
+ });
+ if (state.previewUserId) {
+ var uid = state.previewUserId;
+ var $uc = $('
');
+ var $head = $('');
+ $head.append($(' ').text(state.previewUserLabel || ('User #' + uid)));
+ $head.append(
+ $('× ')
+ .on('click', function () {
+ state.previewUserId = null;
+ state.previewUserLabel = null;
+ state.previewUserRoles = [];
+ renderAll();
+ })
+ );
+ $uc.append($head);
+
+ var $list = $('');
+ var ucfg = getUserConfig(uid);
+ var topOrder = getTopOrderForUser(uid);
+
+ topOrder.forEach(function (nodeId) {
+ if (nodeId.indexOf('sep-') === 0) {
+ $list.append($('
').text('——'));
+ return;
+ }
+ var node = findNode(nodeId);
+ if (!node) return;
+ $list.append(renderUserItemRow(node, null, uid, ucfg));
+ var children = node.children || [];
+ var subOrder = getSubOrderForUser(uid, nodeId, children);
+ subOrder.forEach(function (cid) {
+ var child = findChildNode(node, cid);
+ if (!child) return;
+ $list.append(renderUserItemRow(child, nodeId, uid, ucfg));
+ });
+ });
+
+ $uc.append($list);
+ $cols.append($uc);
+ }
+ if (state.syncScroll) {
+ var $lists = $cols.find('.members-am-sidebar-list');
+ var syncing = false;
+ $lists.on('scroll', function () {
+ if (syncing) return;
+ syncing = true;
+ var scrollTop = $(this).scrollTop();
+ $lists.not(this).scrollTop(scrollTop);
+ syncing = false;
+ });
+ }
+
+ renderCarouselStatus();
+ }
+
+ function renderCopySelect() {
+ var $from = $('#members-am-copy-from').empty();
+ var $to = $('#members-am-copy-to').empty();
+ var roles = getRolesList();
+ roles.forEach(function (r) {
+ $from.append($(' ').val(r.slug).text(r.label));
+ $to.append($(' ').val(r.slug).text(r.label));
+ });
+ if (roles.length > 1) {
+ $to.val(roles[1].slug);
+ }
+ }
+
+ function renderEditTargetRoles() {
+ var $s = $('#members-am-edit-target-role').empty();
+ $s.append($(' ').val('__all__').text('All roles'));
+ state.activeRoleSlugs.forEach(function (slug) {
+ var lab = (getRolesList().filter(function (r) {
+ return r.slug === slug;
+ })[0] || {}).label || slug;
+ $s.append($(' ').val(slug).text(lab));
+ });
+ if (state.previewUserId) {
+ $s.append($(' ').val('__user__' + state.previewUserId).text(state.previewUserLabel || 'User #' + state.previewUserId));
+ }
+ }
+
+ function openEditPanel() {
+ if (!state.selectedId) {
+ $('#members-am-edit-panel').attr('hidden', true);
+ return;
+ }
+ $('#members-am-edit-panel').removeAttr('hidden');
+ var node = findNode(state.selectedId);
+ var ov = getOverrideForEdit() || {};
+ $('#members-am-edit-title').text(node ? node.title : state.selectedId);
+ $('#members-am-edit-label').val(ov.label || (node && node.title) || '');
+ $('#members-am-edit-url').attr('placeholder', (node && node.url) || '').val(ov.url || '');
+ $('#members-am-icon-type').val(ov.icon_type || 'dashicon');
+ $('#members-am-icon-value').val(ov.icon || (node && node.icon) || '');
+ $('#members-am-color-bg').val(ov.color_bg || '');
+ $('#members-am-color-text').val(ov.color_text || '');
+ $('#members-am-color-icon').val(ov.color_icon || '');
+ $('#members-am-item-cap').val(state.settings.capabilities[state.selectedId] || '');
+
+ var custom = node && node.custom;
+ $('#members-am-remove-custom').toggle(!!custom);
+
+ $('#members-am-visibility-toggles').empty();
+ getRolesList().forEach(function (r) {
+ if (r.slug === 'administrator' && !state.settings._meta.admin_editable) {
+ return;
+ }
+ var hid = isHidden(r.slug, state.selectedId);
+ var $l = $(' ').append(
+ $(' ')
+ .attr('data-role', r.slug)
+ .prop('checked', !hid),
+ $(' ').text(r.label)
+ );
+ $('#members-am-visibility-toggles').append($l);
+ });
+
+ initColorPickers();
+ renderIconGrid();
+ }
+
+ function destroyColorPickers() {
+ $('.members-am-color').each(function () {
+ if ($(this).data('wpWpColorPicker')) {
+ $(this).wpColorPicker('destroy');
+ }
+ });
+ }
+
+ function initColorPickers() {
+ destroyColorPickers();
+ $('.members-am-color').wpColorPicker({
+ change: function () {
+ pushOverridesFromForm();
+ },
+ });
+ }
+
+ function pushOverridesFromForm() {
+ if (!state.selectedId) {
+ return;
+ }
+ setOverrideField('label', $('#members-am-edit-label').val());
+ setOverrideField('url', $('#members-am-edit-url').val());
+ setOverrideField('icon_type', $('#members-am-icon-type').val());
+ setOverrideField('icon', $('#members-am-icon-value').val());
+ setOverrideField('color_bg', $('#members-am-color-bg').val());
+ setOverrideField('color_text', $('#members-am-color-text').val());
+ setOverrideField('color_icon', $('#members-am-color-icon').val());
+ state.settings.capabilities[state.selectedId] = $('#members-am-item-cap').val() || '';
+ renderColumns();
+ }
+
+ function renderIconGrid() {
+ var tab = state.iconTab;
+ var q = ($('#members-am-icon-search').val() || '').toLowerCase();
+ var $g = $('#members-am-icon-grid').empty();
+ var list = tab === 'dashicons' ? DASHICONS : FA_ICONS;
+ list.forEach(function (ic) {
+ if (q && ic.indexOf(q) === -1) {
+ return;
+ }
+ var $b = $(' ');
+ if (tab === 'dashicons') {
+ $b.append($(' '));
+ } else {
+ $b.append($(' '));
+ }
+ $b.on('click', function () {
+ $('#members-am-icon-value').val(ic);
+ $('#members-am-icon-type').val(tab === 'dashicons' ? 'dashicon' : 'fontawesome');
+ pushOverridesFromForm();
+ });
+ $g.append($b);
+ });
+ }
+
+ function swapColumn(role, dir) {
+ var idx = state.activeRoleSlugs.indexOf(role);
+ if (idx === -1) {
+ return;
+ }
+ var ni = idx + dir;
+ if (ni < 0 || ni >= state.activeRoleSlugs.length) {
+ return;
+ }
+ var tmp = state.activeRoleSlugs[idx];
+ state.activeRoleSlugs[idx] = state.activeRoleSlugs[ni];
+ state.activeRoleSlugs[ni] = tmp;
+ saveViewState();
+ renderAll();
+ }
+
+ function moveItemVertical(role, itemId, dir) {
+ var parentId = findParentId(itemId);
+ if (!parentId) {
+ if (!getRoleConfig(role).order || !getRoleConfig(role).order.length) {
+ getRoleConfig(role).order = defaultTopOrder();
+ }
+ var o = getRoleConfig(role).order;
+ var ix = o.indexOf(itemId);
+ if (ix === -1) {
+ return;
+ }
+ var nx = ix + dir;
+ if (nx < 0 || nx >= o.length) {
+ return;
+ }
+ var t = o[ix];
+ o[ix] = o[nx];
+ o[nx] = t;
+ } else {
+ var so = getRoleConfig(role).submenu_order;
+ if (!so[parentId]) {
+ so[parentId] = defaultChildSlugs(parentId);
+ }
+ var arr = so[parentId];
+ var parts = itemId.split('::');
+ var cslug = parts[1] || parts[0];
+ var ix = arr.indexOf(cslug);
+ if (ix === -1) {
+ return;
+ }
+ var nx = ix + dir;
+ if (nx < 0 || nx >= arr.length) {
+ return;
+ }
+ var tmp = arr[ix];
+ arr[ix] = arr[nx];
+ arr[nx] = tmp;
+ }
+ renderAll();
+ }
+
+ function addSeparator() {
+ var roles = getTargetRoles();
+ if (!roles.length) {
+ return;
+ }
+ var sid = 'sep-' + Date.now();
+ roles.forEach(function (role) {
+ if (!getRoleConfig(role).order || !getRoleConfig(role).order.length) {
+ getRoleConfig(role).order = defaultTopOrder();
+ }
+ var o = getRoleConfig(role).order;
+ var ix = state.selectedId ? o.indexOf(state.selectedId) : o.length - 1;
+ if (ix < 0) {
+ ix = o.length;
+ }
+ o.splice(ix + 1, 0, sid);
+ });
+ renderAll();
+ }
+
+ function saveSettings() {
+ var $b = $('#members-am-save').prop('disabled', true);
+ $.post(
+ membersAdminMenus.ajaxUrl,
+ {
+ action: 'members_admin_menus_save',
+ nonce: membersAdminMenus.nonce,
+ settings: JSON.stringify(state.settings),
+ }
+ ).done(function (res) {
+ if (res.success) {
+ alert(membersAdminMenus.i18n.saved);
+ location.reload();
+ } else {
+ alert(res.data && res.data.message ? res.data.message : 'Error');
+ }
+ }).always(function () {
+ $b.prop('disabled', false);
+ });
+ }
+
+ function resetSettings(scope, role) {
+ var msg =
+ scope === 'role' && role
+ ? 'Reset all settings for this role? This cannot be undone.'
+ : 'Reset ALL menu settings for every role? This cannot be undone.';
+ if (!confirm(msg)) {
+ return;
+ }
+ $.post(
+ membersAdminMenus.ajaxUrl,
+ {
+ action: 'members_admin_menus_reset',
+ nonce: membersAdminMenus.nonce,
+ scope: scope || 'all',
+ role: role || '',
+ },
+ function (res) {
+ if (res.success) {
+ location.reload();
+ } else {
+ alert(res.data && res.data.message ? res.data.message : 'Reset failed.');
+ }
+ }
+ );
+ }
+
+ function importFile(file) {
+ var reader = new FileReader();
+ reader.onload = function () {
+ try {
+ var data = JSON.parse(reader.result);
+ $.post(membersAdminMenus.ajaxUrl, {
+ action: 'members_admin_menus_import',
+ nonce: membersAdminMenus.nonce,
+ settings: JSON.stringify(data),
+ }).done(function (res) {
+ if (res.success) {
+ location.reload();
+ } else {
+ alert(res.data && res.data.message ? res.data.message : 'Error');
+ }
+ });
+ } catch (e) {
+ alert('Invalid JSON');
+ }
+ };
+ reader.readAsText(file);
+ }
+
+ function searchUsers(term) {
+ $.getJSON(membersAdminMenus.ajaxUrl, {
+ action: 'members_admin_menus_user_search',
+ nonce: membersAdminMenus.nonce,
+ term: term,
+ }, function (res) {
+ if (!res.success || !res.data || !res.data.length) {
+ $('.members-am-user-suggestions').remove();
+ return;
+ }
+ showUserSuggestions(res.data);
+ });
+ }
+
+ function showUserSuggestions(list) {
+ $('.members-am-user-suggestions').remove();
+ var $wrap = $('#members-am-user-search').parent();
+ $wrap.css('position', 'relative');
+ var $dd = $('
');
+ list.forEach(function (u) {
+ $dd.append(
+ $('
')
+ .text(u.label)
+ .data('userId', u.id)
+ .on('click', function () {
+ selectPreviewUser(u.id, u.label, u.roles);
+ $('.members-am-user-suggestions').remove();
+ $('#members-am-user-search').val('');
+ })
+ );
+ });
+ $wrap.append($dd);
+ setTimeout(function () {
+ $(document).one('click', function () {
+ $('.members-am-user-suggestions').remove();
+ });
+ }, 0);
+ }
+
+ function selectPreviewUser(userId, label, roles) {
+ state.previewUserId = userId;
+ state.previewUserLabel = label || ('User #' + userId);
+ state.previewUserRoles = roles || [];
+ ensureSettings();
+ if (!state.settings.users[userId]) {
+ state.settings.users[userId] = {};
+ }
+ renderAll();
+ }
+
+ function bind() {
+ $(document).on('click', '#members-am-role-chips .members-am-chip', function () {
+ var role = $(this).data('role');
+ var ix = state.activeRoleSlugs.indexOf(role);
+ if (ix === -1) {
+ state.activeRoleSlugs.push(role);
+ } else if (state.activeRoleSlugs.length > 1) {
+ state.activeRoleSlugs.splice(ix, 1);
+ }
+ saveViewState();
+ renderChips();
+ renderAll();
+ });
+
+ $('#members-am-carousel-prev').on('click', function () {
+ state.carouselPage = Math.max(0, state.carouselPage - 1);
+ saveViewState();
+ renderAll();
+ });
+ $('#members-am-carousel-next').on('click', function () {
+ var maxp = Math.max(0, Math.ceil(state.activeRoleSlugs.length / state.columnsPerPage) - 1);
+ state.carouselPage = Math.min(maxp, state.carouselPage + 1);
+ saveViewState();
+ renderAll();
+ });
+
+ $('#members-am-columns')
+ .on('click', '.members-am-item', function (e) {
+ if ($(e.target).closest('button').length) {
+ return;
+ }
+ state.selectedId = $(this).data('id');
+ renderColumns();
+ openEditPanel();
+ })
+ .on('click', '.members-am-eye', function (e) {
+ e.stopPropagation();
+ var role = $(this).closest('.members-am-column').data('role');
+ var id = $(this).closest('.members-am-item').data('id');
+ toggleHidden(role, id);
+ renderAll();
+ })
+ .on('click', '.members-am-up', function (e) {
+ e.stopPropagation();
+ var role = $(this).closest('.members-am-column').data('role');
+ var id = $(this).closest('.members-am-item').data('id');
+ moveItemVertical(role, id, -1);
+ })
+ .on('click', '.members-am-down', function (e) {
+ e.stopPropagation();
+ var role = $(this).closest('.members-am-column').data('role');
+ var id = $(this).closest('.members-am-item').data('id');
+ moveItemVertical(role, id, 1);
+ })
+ .on('click', '.members-am-col-left', function (e) {
+ e.stopPropagation();
+ swapColumn($(this).closest('.members-am-column').data('role'), -1);
+ })
+ .on('click', '.members-am-col-right', function (e) {
+ e.stopPropagation();
+ swapColumn($(this).closest('.members-am-column').data('role'), 1);
+ })
+ .on('click', '.members-am-user-eye', function (e) {
+ e.stopPropagation();
+ var uid = $(this).closest('.members-am-column').data('user');
+ var itemId = $(this).closest('.members-am-item').data('id');
+ if (!uid || !itemId) return;
+ toggleUserHidden(uid, itemId);
+ renderColumns();
+ })
+ .on('click', '.members-am-user-up, .members-am-user-down', function (e) {
+ e.stopPropagation();
+ var uid = $(this).closest('.members-am-column').data('user');
+ var itemId = $(this).closest('.members-am-item').data('id');
+ if (!uid || !itemId) return;
+ var isUp = $(this).hasClass('members-am-user-up');
+ var parentId = $(this).closest('.members-am-item').hasClass('is-sub') ? findParentId(itemId) : null;
+ moveUserItem(uid, itemId, parentId, isUp ? -1 : 1);
+ renderColumns();
+ });
+
+ $('#members-am-save').on('click', saveSettings);
+ $('#members-am-reset').on('click', function (e) {
+ e.stopPropagation();
+ $('.members-am-reset-dropdown').remove();
+
+ var $btn = $(this);
+ var activeRoles = state.activeRoleSlugs || [];
+ var firstRole = activeRoles.length ? activeRoles[0] : '';
+ var firstRoleLabel = '';
+ if (firstRole) {
+ (membersAdminMenus.roles || []).forEach(function (r) {
+ if (r.slug === firstRole) firstRoleLabel = r.label;
+ });
+ }
+
+ var $drop = $('
');
+ $drop.append($('
').text('Reset Settings'));
+
+ if (firstRole && firstRoleLabel) {
+ var $roleBtn = $(' ');
+ $roleBtn.append($(' '));
+ $roleBtn.append(
+ $(' ').append(
+ $(' ').text('Reset ' + firstRoleLabel),
+ $(' ').text('Clear all menu settings for this role only')
+ )
+ );
+ $roleBtn.on('click', function () {
+ $('.members-am-reset-dropdown').remove();
+ resetSettings('role', firstRole);
+ });
+ $drop.append($roleBtn);
+ }
+
+ var $allBtn = $(' ');
+ $allBtn.append($(' '));
+ $allBtn.append(
+ $(' ').append(
+ $(' ').text('Reset all roles'),
+ $(' ').text('Clear all menu settings for every role')
+ )
+ );
+ $allBtn.on('click', function () {
+ $('.members-am-reset-dropdown').remove();
+ resetSettings('all');
+ });
+ $drop.append($allBtn);
+
+ $btn.parent().css('position', 'relative');
+ $drop.insertAfter($btn);
+
+ $(document).one('click', function () {
+ $('.members-am-reset-dropdown').remove();
+ });
+ });
+ $('#members-am-export').on('click', function (e) {
+ e.preventDefault();
+ window.location.href = membersAdminMenus.exportUrl;
+ });
+ $('#members-am-import').on('click', function () {
+ $('#members-am-import-file').trigger('click');
+ });
+ $('#members-am-import-file').on('change', function () {
+ var f = this.files && this.files[0];
+ if (f) {
+ importFile(f);
+ }
+ });
+
+ $('#members-am-copy-apply').on('click', function () {
+ var from = $('#members-am-copy-from').val();
+ var to = $('#members-am-copy-to').val();
+ if (!from || !to) {
+ return;
+ }
+ if (from === to) {
+ alert('Source and target roles must be different.');
+ return;
+ }
+ var fromLabel = '';
+ var toLabel = '';
+ getRolesList().forEach(function (r) {
+ if (r.slug === from) fromLabel = r.label;
+ if (r.slug === to) toLabel = r.label;
+ });
+ if (!confirm('Copy menu settings from "' + fromLabel + '" to "' + toLabel + '"?\nThis will overwrite "' + toLabel + '" menu configuration.\n\nNote: This copies menu order, hidden items, labels, icons, and colors.\nIt does NOT change the role\'s capabilities (items marked with a lock icon).')) {
+ return;
+ }
+
+ var srcCfg = getRoleConfig(from);
+
+ var newCfg = {
+ hidden: srcCfg.hidden ? srcCfg.hidden.slice() : [],
+ order: [],
+ submenu_order: {},
+ overrides: {}
+ };
+
+ var resolvedOrder = getTopOrder(from);
+ newCfg.order = resolvedOrder.slice();
+
+ state.tree.forEach(function (node) {
+ if (node.children && node.children.length) {
+ var childOrder = getChildOrder(from, node.id);
+ if (childOrder && childOrder.length) {
+ newCfg.submenu_order[node.id] = childOrder.slice();
+ }
+ }
+ });
+
+ if (srcCfg.overrides && typeof srcCfg.overrides === 'object') {
+ newCfg.overrides = JSON.parse(JSON.stringify(srcCfg.overrides));
+ }
+
+ state.settings.roles[to] = newCfg;
+
+ if (state.activeRoleSlugs.indexOf(to) === -1) {
+ state.activeRoleSlugs.push(to);
+ saveViewState();
+ renderChips();
+ }
+
+ renderAll();
+ saveSettings();
+ });
+
+ $('#members-am-admin-editable').on('change', function () {
+ var ok = true;
+ if ($(this).is(':checked')) {
+ ok = window.confirm(membersAdminMenus.i18n.adminEditableWarn);
+ }
+ if (!ok) {
+ $(this).prop('checked', false);
+ return;
+ }
+ state.settings._meta.admin_editable = $(this).is(':checked');
+ initActiveRoles();
+ renderChips();
+ saveViewState();
+ renderAll();
+ });
+
+ $('#members-am-sync-scroll').prop('checked', state.syncScroll !== false);
+ $('#members-am-sync-scroll').on('change', function () {
+ state.syncScroll = $(this).is(':checked');
+ try { localStorage.setItem('members_am_sync_scroll', state.syncScroll ? '1' : '0'); } catch (e) {}
+ renderColumns();
+ });
+
+ $('#members-am-add-item').on('click', function () {
+ var id = 'c' + Date.now();
+ state.settings.custom_items.push({
+ id: id,
+ label: 'Custom link',
+ url: window.location.origin + '/wp-admin/',
+ icon_type: 'dashicon',
+ icon: 'dashicons-admin-generic',
+ parent: '',
+ position: 99,
+ cap: 'read',
+ });
+ state.tree = buildTreeWithCustoms();
+ state.selectedId = customHookId({ id: id });
+ renderAll();
+ openEditPanel();
+ });
+
+ $('#members-am-remove-custom').on('click', function () {
+ var node = findNode(state.selectedId);
+ if (!node || !node.customId) {
+ return;
+ }
+ state.settings.custom_items = (state.settings.custom_items || []).filter(function (c) {
+ return c.id !== node.customId;
+ });
+ state.selectedId = null;
+ state.tree = buildTreeWithCustoms();
+ renderAll();
+ $('#members-am-edit-panel').attr('hidden', true);
+ });
+
+ $('#members-am-edit-close').on('click', function () {
+ state.selectedId = null;
+ $('#members-am-edit-panel').attr('hidden', true);
+ renderAll();
+ });
+
+ $('#members-am-edit-target-role').on('change', openEditPanel);
+
+ $('#members-am-edit-label, #members-am-edit-url, #members-am-icon-value').on('input', function () {
+ pushOverridesFromForm();
+ });
+
+ $('#members-am-item-cap').on('input', function () {
+ pushOverridesFromForm();
+ });
+
+ $('.members-am-icon-tabs .button').on('click', function () {
+ $('.members-am-icon-tabs .button').removeClass('is-active');
+ $(this).addClass('is-active');
+ state.iconTab = $(this).data('tab') === 'fontawesome' ? 'fontawesome' : ($(this).data('tab') === 'upload' ? 'upload' : 'dashicons');
+ renderIconGrid();
+ });
+
+ $('#members-am-icon-search').on('input', renderIconGrid);
+
+ $('#members-am-media-upload').on('click', function (e) {
+ e.preventDefault();
+ if (state.mediaFrame) {
+ state.mediaFrame.open();
+ return;
+ }
+ state.mediaFrame = wp.media({
+ title: 'Choose icon',
+ button: { text: 'Use image' },
+ multiple: false,
+ });
+ state.mediaFrame.on('select', function () {
+ var att = state.mediaFrame.state().get('selection').first().toJSON();
+ $('#members-am-icon-type').val('custom');
+ $('#members-am-icon-value').val(att.url || '');
+ pushOverridesFromForm();
+ });
+ state.mediaFrame.open();
+ });
+
+ $(document).on('change', '.members-am-vis-cb', function () {
+ var role = $(this).data('role');
+ var vis = $(this).is(':checked');
+ if (vis) {
+ var h = getRoleConfig(role).hidden;
+ var ix = h.indexOf(state.selectedId);
+ if (ix !== -1) {
+ h.splice(ix, 1);
+ }
+ } else {
+ if (getRoleConfig(role).hidden.indexOf(state.selectedId) === -1) {
+ getRoleConfig(role).hidden.push(state.selectedId);
+ }
+ }
+ renderAll();
+ });
+
+ $('#members-am-add-sep').on('click', addSeparator);
+
+ $('#members-am-promote').on('click', function () {
+ setOverrideField('parent', '');
+ pushOverridesFromForm();
+ });
+
+ $('#members-am-demote').on('click', function () {
+ var p = window.prompt('Parent slug (e.g. edit.php)', 'edit.php');
+ if (p) {
+ setOverrideField('parent', p);
+ pushOverridesFromForm();
+ }
+ });
+
+ var searchTimer;
+ $('#members-am-user-search').on('input', function () {
+ var t = $(this).val();
+ clearTimeout(searchTimer);
+ searchTimer = setTimeout(function () {
+ if (t.length > 1) {
+ searchUsers(t);
+ }
+ }, 300);
+ });
+ }
+
+ function renderAll() {
+ renderColumns();
+ renderEditTargetRoles();
+ if (state.selectedId) {
+ openEditPanel();
+ }
+ }
+
+ function init() {
+ ensureSettings();
+ state.tree = buildTreeWithCustoms();
+ initActiveRoles();
+ $('#members-am-admin-editable').prop('checked', !!state.settings._meta.admin_editable);
+ renderCopySelect();
+ renderChips();
+ bind();
+ renderAll();
+ }
+
+ $(init);
+
+}(jQuery));
diff --git a/js/admin-menus.min.js b/js/admin-menus.min.js
new file mode 100644
index 0000000..8b9ee61
--- /dev/null
+++ b/js/admin-menus.min.js
@@ -0,0 +1 @@
+!function(f){"use strict";var h={settings:f.extend(!0,{},membersAdminMenus.settings),tree:[],activeRoleSlugs:[],carouselPage:0,columnsPerPage:3,selectedId:null,iconTab:"dashicons",previewUserId:null,previewUserRoles:[],userSuggestions:[],mediaFrame:null,syncScroll:function(){try{return"0"!==localStorage.getItem("members_am_sync_scroll")}catch(e){return!0}}()},e=["dashicons-menu","dashicons-admin-dashboard","dashicons-admin-post","dashicons-admin-page","dashicons-admin-media","dashicons-admin-comments","dashicons-admin-appearance","dashicons-admin-plugins","dashicons-admin-users","dashicons-admin-tools","dashicons-admin-settings","dashicons-admin-generic","dashicons-edit","dashicons-plus","dashicons-chart-bar","dashicons-cart","dashicons-products","dashicons-email","dashicons-groups","dashicons-heart","dashicons-star-filled","dashicons-smiley","dashicons-info","dashicons-lock","dashicons-unlock","dashicons-visibility","dashicons-hidden","dashicons-arrow-up","dashicons-arrow-down","dashicons-admin-network","dashicons-performance"],s=["fa-solid fa-house","fa-solid fa-user","fa-solid fa-gear","fa-solid fa-file","fa-solid fa-image","fa-solid fa-cart-shopping","fa-solid fa-chart-line","fa-solid fa-envelope","fa-solid fa-book","fa-solid fa-link","fa-solid fa-bell","fa-solid fa-star","fa-solid fa-heart","fa-solid fa-lock","fa-solid fa-unlock","fa-solid fa-pen","fa-solid fa-trash","fa-solid fa-plus","fa-solid fa-minus"],t="members_am_view_state";function o(){try{localStorage.setItem(t,JSON.stringify({activeRoleSlugs:h.activeRoleSlugs,carouselPage:h.carouselPage}))}catch(e){}}function d(){return membersAdminMenus.roles||[]}function n(){h.settings._meta&&!Array.isArray(h.settings._meta)||(h.settings._meta={version:3,admin_editable:!1}),h.settings.roles&&!Array.isArray(h.settings.roles)||(h.settings.roles={}),h.settings.users&&!Array.isArray(h.settings.users)||(h.settings.users={}),Array.isArray(h.settings.custom_items)||(h.settings.custom_items=[]),h.settings.capabilities&&!Array.isArray(h.settings.capabilities)||(h.settings.capabilities={})}function v(e){n(),h.settings.roles[e]||(h.settings.roles[e]={hidden:[],order:[],submenu_order:{},overrides:{}});var s=h.settings.roles[e];return s.hidden&&Array.isArray(s.hidden)||(s.hidden=[]),s.order&&Array.isArray(s.order)||(s.order=[]),s.submenu_order&&!Array.isArray(s.submenu_order)||(s.submenu_order={}),s.overrides&&!Array.isArray(s.overrides)||(s.overrides={}),s}function b(e){n(),h.settings.users[e]||(h.settings.users[e]={});var s=h.settings.users[e];return s.hidden&&Array.isArray(s.hidden)||(s.hidden=[]),s.order&&Array.isArray(s.order)||(s.order=[]),s.overrides&&!Array.isArray(s.overrides)||(s.overrides={}),s.submenu_order&&!Array.isArray(s.submenu_order)||(s.submenu_order={}),s}function i(e){var s=e.id||"c";return"members-am-"+String(s).replace(/[^a-z0-9_-]/gi,"-").toLowerCase()}function r(){var n=f.extend(!0,[],membersAdminMenus.menuTree||[]),r={};return n.forEach(function(e){r[e.id]=!0}),(h.settings.custom_items||[]).forEach(function(e){if(e&&e.id){var s=i(e);if(r[s]){for(var a=0;ar&&(h.carouselPage=r))}}h.activeRoleSlugs=s.filter(function(e){return"administrator"!==e||a}),h.activeRoleSlugs.length||(h.activeRoleSlugs=["subscriber"])}function S(){var n=f("#members-am-role-chips").empty();d().forEach(function(e){if("administrator"!==e.slug||h.settings._meta.admin_editable){var s=-1!==h.activeRoleSlugs.indexOf(e.slug),a=f(' ').text(e.label).attr("data-role",e.slug).toggleClass("is-active",s);n.append(a)}})}function A(e,s,a,n){var r=s.id,t=w(e,r),i=!k(e,s.cap),o=v(e).overrides[r]||{},m=o.label||s.title||r,l=f('
').attr("data-id",r).toggleClass("is-hidden",t).toggleClass("is-no-cap",i).toggleClass("is-selected",h.selectedId===r).toggleClass("is-sub",!!a),c=f('
');if(!a){var d=o.icon||s.icon,u=o.icon_type||s.icon_type||"dashicon";if("fontawesome"===u&&d)c.append(f(' '));else if("svg"!==u&&"image"!==u||!d)if("custom"===u&&d)c.append(f(" ").attr("src",d).css({width:"18px",height:"18px",display:"inline-block",verticalAlign:"middle",filter:"brightness(0) invert(1)"}));else{var p=d&&0===d.indexOf("dashicons-")?d:"dashicons-admin-generic";c.append(f(' '))}else c.append(f(" ").attr("src",d).css({width:"18px",height:"18px",display:"inline-block",verticalAlign:"middle",filter:"brightness(0) invert(1)"}))}s.custom&&c.append(f('custom ')),o.label&&c.append(f('edit ')),c.append(f(' ').text(m)),i&&c.append(f(' Roles.\">🔒 no access ")),l.append(c);var b=f('
');b.append(f(' ').text("◉"),f(' ').text("↑"),f(' ').text("↓")),l.append(b),n.append(l)}function I(s,e,a,n){var r=n.overrides&&n.overrides[s.id]||{},t=r.label||s.title,i=function(e,s){var a=b(e);if(-1!==a.hidden.indexOf(s))return!0;var n=g(s);return!(!n||-1===a.hidden.indexOf(n))}(a,s.id),o=!function(e){if(!e||"read"===e)return 1;for(var s=h.previewUserRoles||[],a=0;a").addClass(m).attr("data-id",s.id),c=f('
');if(!e){var d=r.icon||s.icon,u=r.icon_type||s.icon_type||"dashicon";"fontawesome"===u&&d?c.append(f(' ')):"svg"!==u&&"image"!==u&&"custom"!==u||!d?d&&0===d.indexOf("dashicons-")?c.append(f(' ')):c.append(f(' ')):c.append(f(" ").attr("src",d).css({width:"18px",height:"18px",display:"inline-block",verticalAlign:"middle",filter:"brightness(0) invert(1)"}))}s.custom&&c.append(f('custom ')),r.label&&c.append(f('edit ')),c.append(f(' ').text(t)),o&&c.append(f('🔒 no access ")),l.append(c);var p=f('
');return p.append(f(' ').text(i?"◯":"◉"),f(' ').text("↑"),f(' ').text("↓")),l.append(p),l.on("click",function(e){f(e.target).closest("button").length||(h.selectedId=s.id,F())}),l}function P(){var a=f("#members-am-columns"),n={};a.find(".members-am-column").each(function(){var e=f(this).data("role");if(e){var s=f(this).find(".members-am-sidebar-list");s.length&&(n[e]=s.scrollTop())}}),a.empty();var e,s=h.carouselPage*h.columnsPerPage;if(h.activeRoleSlugs.slice(s,s+h.columnsPerPage).forEach(function(e){var s=f('
');!function(n,e){e.empty();var s=f(''),a=(d().filter(function(e){return e.slug===n})[0]||{}).label||n;s.append(f('').text(a)),s.append(f(' ').append(f(' ').text("◀"),f(' ').text("▶"))),e.append(s);var r=f('');_(n).forEach(function(e){if(0!==e.indexOf("sep-")){var a=u(e);if(a)if(A(n,a,null,r),a.children&&a.children.length)x(n,a.id).forEach(function(e){var s=u(a.id+"::"+e);s&&A(n,s,a.id,r)})}else r.append(f('
').text("—"))}),e.append(r)}(e,s),a.append(s),n[e]&&s.find(".members-am-sidebar-list").scrollTop(n[e])}),h.previewUserId){var i=h.previewUserId,r=f('
'),t=f('');t.append(f(" ").text(h.previewUserLabel||"User #"+i)),t.append(f('× ').on("click",function(){h.previewUserId=null,h.previewUserLabel=null,h.previewUserRoles=[],F()})),r.append(t);var o=f(''),m=b(i);((e=b(i)).order&&e.order.length?e.order:p()).forEach(function(a){if(0!==a.indexOf("sep-")){var n=u(a);if(n){o.append(I(n,null,i,m));var e,s,r,t=n.children||[];(e=a,s=t,(r=b(i)).submenu_order&&r.submenu_order[e]?r.submenu_order[e]:s.map(function(e){return e.id})).forEach(function(e){var s=function(e,s){if(!e||!e.children)return null;for(var a=0;a ').text("——"))}),r.append(o),a.append(r)}if(h.syncScroll){var l=a.find(".members-am-sidebar-list"),c=!1;l.on("scroll",function(){if(!c){c=!0;var e=f(this).scrollTop();l.not(this).scrollTop(e),c=!1}})}!function(){var e=Math.max(1,Math.ceil(h.activeRoleSlugs.length/h.columnsPerPage)),s=(Math.min(h.carouselPage+1,e),h.carouselPage*h.columnsPerPage+1),a=Math.min((h.carouselPage+1)*h.columnsPerPage,h.activeRoleSlugs.length);f("#members-am-carousel-status").text(s+"–"+a+" "+membersAdminMenus.i18n.of+" "+h.activeRoleSlugs.length);for(var n=f("#members-am-carousel-dots").empty(),r=0;r ').toggleClass("is-active",r===h.carouselPage))}()}function O(){if(h.selectedId){f("#members-am-edit-panel").removeAttr("hidden");var e=u(h.selectedId),s=function(){if(!h.selectedId)return null;var e=l();if(e){var s=b(e);return s.overrides&&s.overrides[h.selectedId]||{}}var a=m()[0];return a?v(a).overrides[h.selectedId]||{}:null}()||{};f("#members-am-edit-title").text(e?e.title:h.selectedId),f("#members-am-edit-label").val(s.label||e&&e.title||""),f("#members-am-edit-url").attr("placeholder",e&&e.url||"").val(s.url||""),f("#members-am-icon-type").val(s.icon_type||"dashicon"),f("#members-am-icon-value").val(s.icon||e&&e.icon||""),f("#members-am-color-bg").val(s.color_bg||""),f("#members-am-color-text").val(s.color_text||""),f("#members-am-color-icon").val(s.color_icon||""),f("#members-am-item-cap").val(h.settings.capabilities[h.selectedId]||"");var a=e&&e.custom;f("#members-am-remove-custom").toggle(!!a),f("#members-am-visibility-toggles").empty(),d().forEach(function(e){if("administrator"!==e.slug||h.settings._meta.admin_editable){var s=w(e.slug,h.selectedId),a=f(' ').append(f(' ').attr("data-role",e.slug).prop("checked",!s),f(" ").text(e.label));f("#members-am-visibility-toggles").append(a)}}),f(".members-am-color").each(function(){f(this).data("wpWpColorPicker")&&f(this).wpColorPicker("destroy")}),f(".members-am-color").wpColorPicker({change:function(){R()}}),M()}else f("#members-am-edit-panel").attr("hidden",!0)}function R(){h.selectedId&&(a("label",f("#members-am-edit-label").val()),a("url",f("#members-am-edit-url").val()),a("icon_type",f("#members-am-icon-type").val()),a("icon",f("#members-am-icon-value").val()),a("color_bg",f("#members-am-color-bg").val()),a("color_text",f("#members-am-color-text").val()),a("color_icon",f("#members-am-color-icon").val()),h.settings.capabilities[h.selectedId]=f("#members-am-item-cap").val()||"",P())}function M(){var a=h.iconTab,n=(f("#members-am-icon-search").val()||"").toLowerCase(),r=f("#members-am-icon-grid").empty();("dashicons"===a?e:s).forEach(function(e){if(!n||-1!==e.indexOf(n)){var s=f(' ');"dashicons"===a?s.append(f(' ')):s.append(f(' ')),s.on("click",function(){f("#members-am-icon-value").val(e),f("#members-am-icon-type").val("dashicons"===a?"dashicon":"fontawesome"),R()}),r.append(s)}})}function E(e,s){var a=h.activeRoleSlugs.indexOf(e);if(-1!==a){var n=a+s;if(!(n<0||n>=h.activeRoleSlugs.length)){var r=h.activeRoleSlugs[a];h.activeRoleSlugs[a]=h.activeRoleSlugs[n],h.activeRoleSlugs[n]=r,o(),F()}}}function U(e,s,a){var n=g(s);if(n){var r=v(e).submenu_order;r[n]||(r[n]=y(n));var t=r[n],i=s.split("::"),o=i[1]||i[0];if(-1===(l=t.indexOf(o)))return;if((c=l+a)<0||c>=t.length)return;var m=t[l];t[l]=t[c],t[c]=m}else{v(e).order&&v(e).order.length||(v(e).order=p());var l,c,d=v(e).order;if(-1===(l=d.indexOf(s)))return;if((c=l+a)<0||c>=d.length)return;var u=d[l];d[l]=d[c],d[c]=u}F()}function C(){var e=m();if(e.length){var n="sep-"+Date.now();e.forEach(function(e){v(e).order&&v(e).order.length||(v(e).order=p());var s=v(e).order,a=h.selectedId?s.indexOf(h.selectedId):s.length-1;a<0&&(a=s.length),s.splice(a+1,0,n)}),F()}}function T(){var e=f("#members-am-save").prop("disabled",!0);f.post(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_save",nonce:membersAdminMenus.nonce,settings:JSON.stringify(h.settings)}).done(function(e){e.success?(alert(membersAdminMenus.i18n.saved),location.reload()):alert(e.data&&e.data.message?e.data.message:"Error")}).always(function(){e.prop("disabled",!1)})}function N(e,s){confirm("role"===e&&s?"Reset all settings for this role? This cannot be undone.":"Reset ALL menu settings for every role? This cannot be undone.")&&f.post(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_reset",nonce:membersAdminMenus.nonce,scope:e||"all",role:s||""},function(e){e.success?location.reload():alert(e.data&&e.data.message?e.data.message:"Reset failed.")})}function J(e){f.getJSON(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_user_search",nonce:membersAdminMenus.nonce,term:e},function(e){e.success&&e.data&&e.data.length?function(e){f(".members-am-user-suggestions").remove();var s=f("#members-am-user-search").parent();s.css("position","relative");var a=f('
');e.forEach(function(e){a.append(f('
').text(e.label).data("userId",e.id).on("click",function(){!function(e,s,a){h.previewUserId=e,h.previewUserLabel=s||"User #"+e,h.previewUserRoles=a||[],n(),h.settings.users[e]||(h.settings.users[e]={});F()}(e.id,e.label,e.roles),f(".members-am-user-suggestions").remove(),f("#members-am-user-search").val("")}))}),s.append(a),setTimeout(function(){f(document).one("click",function(){f(".members-am-user-suggestions").remove()})},0)}(e.data):f(".members-am-user-suggestions").remove()})}function L(){var s;f(document).on("click","#members-am-role-chips .members-am-chip",function(){var e=f(this).data("role"),s=h.activeRoleSlugs.indexOf(e);-1===s?h.activeRoleSlugs.push(e):1=r.length||(r.splice(o,1),r.splice(m,0,s))}}(s,a,f(this).closest(".members-am-item").hasClass("is-sub")?g(a):null,n?-1:1),P()}}),f("#members-am-save").on("click",T),f("#members-am-reset").on("click",function(e){e.stopPropagation(),f(".members-am-reset-dropdown").remove();var s=f(this),a=h.activeRoleSlugs||[],n=a.length?a[0]:"",r="";n&&(membersAdminMenus.roles||[]).forEach(function(e){e.slug===n&&(r=e.label)});var t=f('
');if(t.append(f('
').text("Reset Settings")),n&&r){var i=f(' ');i.append(f(' ')),i.append(f(' ').append(f(" ").text("Reset "+r),f(" ").text("Clear all menu settings for this role only"))),i.on("click",function(){f(".members-am-reset-dropdown").remove(),N("role",n)}),t.append(i)}var o=f(' ');o.append(f(' ')),o.append(f(' ').append(f(" ").text("Reset all roles"),f(" ").text("Clear all menu settings for every role"))),o.on("click",function(){f(".members-am-reset-dropdown").remove(),N("all")}),t.append(o),s.parent().css("position","relative"),t.insertAfter(s),f(document).one("click",function(){f(".members-am-reset-dropdown").remove()})}),f("#members-am-export").on("click",function(e){e.preventDefault(),window.location.href=membersAdminMenus.exportUrl}),f("#members-am-import").on("click",function(){f("#members-am-import-file").trigger("click")}),f("#members-am-import-file").on("change",function(){var e,s,a=this.files&&this.files[0];a&&(e=a,(s=new FileReader).onload=function(){try{var e=JSON.parse(s.result);f.post(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_import",nonce:membersAdminMenus.nonce,settings:JSON.stringify(e)}).done(function(e){e.success?location.reload():alert(e.data&&e.data.message?e.data.message:"Error")})}catch(e){alert("Invalid JSON")}},s.readAsText(e))}),f("#members-am-copy-apply").on("click",function(){var a=f("#members-am-copy-from").val(),s=f("#members-am-copy-to").val();if(a&&s)if(a!==s){var n="",r="";if(d().forEach(function(e){e.slug===a&&(n=e.label),e.slug===s&&(r=e.label)}),confirm('Copy menu settings from "'+n+'" to "'+r+'"?\nThis will overwrite "'+r+"\" menu configuration.\n\nNote: This copies menu order, hidden items, labels, icons, and colors.\nIt does NOT change the role's capabilities (items marked with a lock icon).")){var e=v(a),t={hidden:e.hidden?e.hidden.slice():[],order:[],submenu_order:{},overrides:{}},i=_(a);t.order=i.slice(),h.tree.forEach(function(e){if(e.children&&e.children.length){var s=x(a,e.id);s&&s.length&&(t.submenu_order[e.id]=s.slice())}}),e.overrides&&"object"==typeof e.overrides&&(t.overrides=JSON.parse(JSON.stringify(e.overrides))),h.settings.roles[s]=t,-1===h.activeRoleSlugs.indexOf(s)&&(h.activeRoleSlugs.push(s),o(),S()),F(),T()}}else alert("Source and target roles must be different.")}),f("#members-am-admin-editable").on("change",function(){var e=!0;f(this).is(":checked")&&(e=window.confirm(membersAdminMenus.i18n.adminEditableWarn)),e?(h.settings._meta.admin_editable=f(this).is(":checked"),c(),S(),o(),F()):f(this).prop("checked",!1)}),f("#members-am-sync-scroll").prop("checked",!1!==h.syncScroll),f("#members-am-sync-scroll").on("change",function(){h.syncScroll=f(this).is(":checked");try{localStorage.setItem("members_am_sync_scroll",h.syncScroll?"1":"0")}catch(e){}P()}),f("#members-am-add-item").on("click",function(){var e="c"+Date.now();h.settings.custom_items.push({id:e,label:"Custom link",url:window.location.origin+"/wp-admin/",icon_type:"dashicon",icon:"dashicons-admin-generic",parent:"",position:99,cap:"read"}),h.tree=r(),h.selectedId=i({id:e}),F(),O()}),f("#members-am-remove-custom").on("click",function(){var s=u(h.selectedId);s&&s.customId&&(h.settings.custom_items=(h.settings.custom_items||[]).filter(function(e){return e.id!==s.customId}),h.selectedId=null,h.tree=r(),F(),f("#members-am-edit-panel").attr("hidden",!0))}),f("#members-am-edit-close").on("click",function(){h.selectedId=null,f("#members-am-edit-panel").attr("hidden",!0),F()}),f("#members-am-edit-target-role").on("change",O),f("#members-am-edit-label, #members-am-edit-url, #members-am-icon-value").on("input",function(){R()}),f("#members-am-item-cap").on("input",function(){R()}),f(".members-am-icon-tabs .button").on("click",function(){f(".members-am-icon-tabs .button").removeClass("is-active"),f(this).addClass("is-active"),h.iconTab="fontawesome"===f(this).data("tab")?"fontawesome":"upload"===f(this).data("tab")?"upload":"dashicons",M()}),f("#members-am-icon-search").on("input",M),f("#members-am-media-upload").on("click",function(e){e.preventDefault(),h.mediaFrame||(h.mediaFrame=wp.media({title:"Choose icon",button:{text:"Use image"},multiple:!1}),h.mediaFrame.on("select",function(){var e=h.mediaFrame.state().get("selection").first().toJSON();f("#members-am-icon-type").val("custom"),f("#members-am-icon-value").val(e.url||""),R()})),h.mediaFrame.open()}),f(document).on("change",".members-am-vis-cb",function(){var e=f(this).data("role");if(f(this).is(":checked")){var s=v(e).hidden,a=s.indexOf(h.selectedId);-1!==a&&s.splice(a,1)}else-1===v(e).hidden.indexOf(h.selectedId)&&v(e).hidden.push(h.selectedId);F()}),f("#members-am-add-sep").on("click",C),f("#members-am-promote").on("click",function(){a("parent",""),R()}),f("#members-am-demote").on("click",function(){var e=window.prompt("Parent slug (e.g. edit.php)","edit.php");e&&(a("parent",e),R())}),f("#members-am-user-search").on("input",function(){var e=f(this).val();clearTimeout(s),s=setTimeout(function(){1 ").val("__all__").text("All roles")),h.activeRoleSlugs.forEach(function(s){var e=(d().filter(function(e){return e.slug===s})[0]||{}).label||s;a.append(f(" ").val(s).text(e))}),h.previewUserId&&a.append(f(" ").val("__user__"+h.previewUserId).text(h.previewUserLabel||"User #"+h.previewUserId)),h.selectedId&&O()}f(function(){var s,a,e;n(),h.tree=r(),c(),f("#members-am-admin-editable").prop("checked",!!h.settings._meta.admin_editable),s=f("#members-am-copy-from").empty(),a=f("#members-am-copy-to").empty(),(e=d()).forEach(function(e){s.append(f(" ").val(e.slug).text(e.label)),a.append(f(" ").val(e.slug).text(e.label))}),1
Date: Wed, 8 Apr 2026 13:34:26 +0200
Subject: [PATCH 04/73] chore(js): rebuild settings.min.js
- Refresh minified output for settings page script (no source change)
Made-with: Cursor
---
js/settings.min.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/js/settings.min.js b/js/settings.min.js
index 348dcf6..1e684dc 100644
--- a/js/settings.min.js
+++ b/js/settings.min.js
@@ -1 +1 @@
-jQuery(document).ready(function(n){!1===jQuery('[name="members_settings[content_permissions]"]').prop("checked")&&(jQuery('[name="members_settings[content_permissions]"]').parents("tr").next("tr").hide(),jQuery('[name="members_settings[private_feed]"]').parents("tr").next("tr").hide()),!1===jQuery('[name="members_settings[content_permissions]"]').prop("checked")&&jQuery('[name="members_settings[hide_posts_rest_api]"]').parents("tr").hide(),jQuery('[name="members_settings[content_permissions]"], [name="members_settings[private_feed]"], [name="members_settings[private_blog]"]').on("change",function(){jQuery(this).prop("checked")?jQuery(this).parents("tr").next("tr").show("slow"):jQuery(this).parents("tr").next("tr").hide("slow")}),n(".activate-addon").on("click",function(e){var t=n(this),s=t.data("addon");t.addClass("processing"),n.ajax({url:ajaxurl,type:"POST",data:{action:"mbrs_toggle_addon",nonce:membersAddons.nonce,addon:s}}).done(function(e){if(1==e.success){t.find(".action-label").html(e.data.action_label);var s=t.find("svg");s.removeClass(),s.addClass(e.data.status)}else alert(e.data.msg)}).fail(function(e){alert(e.data.msg)}).always(function(e){t.removeClass("processing")})}),n("#members-reset-roles").on("click",function(e){e.preventDefault();if(!confirm(membersResetRoles.confirmMessage))return;var t=n(this),r=t.next(".members-reset-spinner"),o=n("#members-reset-roles-message");t.prop("disabled",!0),r.addClass("is-active"),o.removeClass("notice notice-success notice-error").empty(),n.ajax({url:membersResetRoles.ajaxurl,type:"POST",data:{action:"members_reset_roles",nonce:membersResetRoles.nonce},success:function(e){e.success?(o.addClass("notice notice-success").html(""+membersResetRoles.successMessage+"
"),setTimeout(function(){window.location.reload()},1000)):o.addClass("notice notice-error").html(""+membersResetRoles.errorMessage+"
")},error:function(){o.addClass("notice notice-error").html(""+membersResetRoles.errorMessage+"
")},complete:function(){t.prop("disabled",!1),r.removeClass("is-active")}})});});
\ No newline at end of file
+jQuery(document).ready(function(r){!1===jQuery('[name="members_settings[content_permissions]"]').prop("checked")&&(jQuery('[name="members_settings[content_permissions]"]').parents("tr").next("tr").hide(),jQuery('[name="members_settings[private_feed]"]').parents("tr").next("tr").hide()),!1===jQuery('[name="members_settings[content_permissions]"]').prop("checked")&&jQuery('[name="members_settings[hide_posts_rest_api]"]').parents("tr").hide(),jQuery('[name="members_settings[content_permissions]"], [name="members_settings[private_feed]"], [name="members_settings[private_blog]"]').on("change",function(){jQuery(this).prop("checked")?jQuery(this).parents("tr").next("tr").show("slow"):jQuery(this).parents("tr").next("tr").hide("slow")}),r(".activate-addon").on("click",function(e){var t=r(this),s=t.data("addon");t.addClass("processing"),r.ajax({url:ajaxurl,type:"POST",data:{action:"mbrs_toggle_addon",nonce:membersAddons.nonce,addon:s}}).done(function(e){if(1==e.success){t.find(".action-label").html(e.data.action_label);var s=t.find("svg");s.removeClass(),s.addClass(e.data.status)}else alert(e.data.msg)}).fail(function(e){alert(e.data.msg)}).always(function(e){t.removeClass("processing")})}),jQuery("#members-reset-roles").on("click",function(e){if(e.preventDefault(),confirm(membersResetRoles.confirmMessage)){var s=jQuery(this),t=s.next(".members-reset-spinner"),r=jQuery("#members-reset-roles-message");s.prop("disabled",!0),t.addClass("is-active"),r.removeClass("notice notice-success notice-error").empty(),jQuery.ajax({url:membersResetRoles.ajaxurl,type:"POST",data:{action:"members_reset_roles",nonce:membersResetRoles.nonce},success:function(e){e.success?(r.addClass("notice notice-success").html(""+membersResetRoles.successMessage+"
"),setTimeout(function(){window.location.reload()},1e3)):r.addClass("notice notice-error").html(""+membersResetRoles.errorMessage+"
")},error:function(){r.addClass("notice notice-error").html(""+membersResetRoles.errorMessage+"
")},complete:function(){s.prop("disabled",!1),t.removeClass("is-active")}})}})});
\ No newline at end of file
From 5b80cbfe6db8b2b49ca3a9726d5a9c3ae89280ad Mon Sep 17 00:00:00 2001
From: Omar ElHawary
Date: Wed, 8 Apr 2026 14:16:41 +0200
Subject: [PATCH 05/73] feat(admin): enhance icon handling in admin menus
- Add support for custom image icons in the admin menu editor, including auto-detection of icon types (image, SVG, FontAwesome).
- Implement image preview functionality for selected icons.
- Update styles for custom icons to ensure proper display in the admin sidebar.
- Improve color override functionality for menu items.
---
.../app/functions-admin.php | 2 +
addons/members-admin-menus/app/functions.php | 39 ++++++-
js/admin-menus.js | 101 +++++++++++++++---
js/admin-menus.min.js | 2 +-
4 files changed, 126 insertions(+), 18 deletions(-)
diff --git a/addons/members-admin-menus/app/functions-admin.php b/addons/members-admin-menus/app/functions-admin.php
index 572b2e5..87be329 100644
--- a/addons/members-admin-menus/app/functions-admin.php
+++ b/addons/members-admin-menus/app/functions-admin.php
@@ -282,7 +282,9 @@ function render_admin_menus_page() {
+
+
diff --git a/addons/members-admin-menus/app/functions.php b/addons/members-admin-menus/app/functions.php
index 52b8590..16afaa2 100644
--- a/addons/members-admin-menus/app/functions.php
+++ b/addons/members-admin-menus/app/functions.php
@@ -340,7 +340,8 @@ function inject_separators( $menu, $order ) {
*/
function apply_menu_overrides( $overrides ) {
global $menu, $submenu;
- $fa_icons = array();
+ $fa_icons = array();
+ $img_icon_ids = array();
foreach ( $menu as $k => $item ) {
if ( empty( $item[2] ) ) {
@@ -357,9 +358,15 @@ function apply_menu_overrides( $overrides ) {
if ( ! empty( $o['url'] ) ) {
$menu[ $k ][2] = esc_url_raw( $o['url'] );
}
- if ( ! empty( $o['icon_type'] ) && ! empty( $o['icon'] ) ) {
- $icon_type = $o['icon_type'];
+ if ( ! empty( $o['icon'] ) ) {
$icon = $o['icon'];
+ $icon_type = ! empty( $o['icon_type'] ) ? $o['icon_type'] : 'dashicon';
+ // Auto-detect: if icon is a URL, treat as image regardless of declared type.
+ if ( 0 === strpos( $icon, 'http://' ) || 0 === strpos( $icon, 'https://' ) || 0 === strpos( $icon, '//' ) ) {
+ $icon_type = 'image';
+ } elseif ( 0 === strpos( $icon, 'data:image/' ) ) {
+ $icon_type = 'svg';
+ }
if ( 'dashicon' === $icon_type ) {
$menu[ $k ][6] = sanitize_text_field( $icon );
@@ -371,6 +378,10 @@ function apply_menu_overrides( $overrides ) {
}
} elseif ( 'custom' === $icon_type || 'image' === $icon_type ) {
$menu[ $k ][6] = esc_url( $icon );
+ $id = isset( $item[5] ) ? sanitize_html_class( $item[5] ) : '';
+ if ( $id ) {
+ $img_icon_ids[] = $id;
+ }
}
}
}
@@ -398,6 +409,10 @@ function apply_menu_overrides( $overrides ) {
$GLOBALS['members_am_fa_icons'] = $fa_icons;
add_action( 'admin_head', __NAMESPACE__ . '\output_fa_icon_styles', 998 );
}
+ if ( ! empty( $img_icon_ids ) ) {
+ $GLOBALS['members_am_img_icon_ids'] = $img_icon_ids;
+ add_action( 'admin_head', __NAMESPACE__ . '\output_img_icon_styles', 998 );
+ }
}
/**
@@ -424,6 +439,24 @@ function output_fa_icon_styles() {
echo '' . "\n";
}
+/**
+ * Output CSS to properly style custom image icons in the admin sidebar.
+ *
+ * @return void
+ */
+function output_img_icon_styles() {
+ if ( empty( $GLOBALS['members_am_img_icon_ids'] ) ) {
+ return;
+ }
+ $css = '';
+ foreach ( $GLOBALS['members_am_img_icon_ids'] as $menu_id ) {
+ $sel = '#adminmenu #' . $menu_id . ' .wp-menu-image img';
+ $css .= $sel . ' { width: 20px !important; height: 20px !important; display: inline-block !important; vertical-align: middle !important; object-fit: contain !important; filter: none !important; padding: 0 !important; }' . "\n";
+ $css .= '#adminmenu #' . $menu_id . ' .wp-menu-image { padding: 0 !important; display: flex !important; align-items: center !important; justify-content: center !important; }' . "\n";
+ }
+ echo '\n";
+}
+
/**
* Move items between menu levels based on 'parent' override field.
*
diff --git a/js/admin-menus.js b/js/admin-menus.js
index bc0504b..8886c06 100644
--- a/js/admin-menus.js
+++ b/js/admin-menus.js
@@ -350,6 +350,24 @@
return false;
}
+ /**
+ * Detect effective icon type from value + declared type.
+ * URLs and data URIs always render as images regardless of declared type.
+ */
+ function effectiveIconType(icon, declaredType) {
+ if (!icon) return declaredType || 'dashicon';
+ if (icon.indexOf('http://') === 0 || icon.indexOf('https://') === 0 || icon.indexOf('//') === 0 || icon.indexOf('data:image/') === 0) {
+ return 'image';
+ }
+ if (icon.indexOf('fa-') !== -1 || icon.indexOf('fa ') === 0 || icon.indexOf('fas ') === 0 || icon.indexOf('far ') === 0 || icon.indexOf('fab ') === 0 || icon.indexOf('fal ') === 0) {
+ return 'fontawesome';
+ }
+ if (icon.indexOf('dashicons-') === 0) {
+ return 'dashicon';
+ }
+ return declaredType || 'dashicon';
+ }
+
function toggleHidden(role, itemId) {
var h = getRoleConfig(role).hidden;
var i = h.indexOf(itemId);
@@ -581,13 +599,11 @@
var $main = $('
');
if (!parentId) {
var icon = ov.icon || node.icon;
- var itype = ov.icon_type || node.icon_type || 'dashicon';
+ var itype = effectiveIconType(icon, ov.icon_type || node.icon_type);
if (itype === 'fontawesome' && icon) {
$main.append($('
'));
- } else if ((itype === 'svg' || itype === 'image') && icon) {
- $main.append($('
').attr('src', icon).css({ width: '18px', height: '18px', display: 'inline-block', verticalAlign: 'middle', filter: 'brightness(0) invert(1)' }));
- } else if (itype === 'custom' && icon) {
- $main.append($('
').attr('src', icon).css({ width: '18px', height: '18px', display: 'inline-block', verticalAlign: 'middle', filter: 'brightness(0) invert(1)' }));
+ } else if ((itype === 'svg' || itype === 'image' || itype === 'custom') && icon) {
+ $main.append($('
').attr('src', icon).css({ width: '20px', height: '20px', display: 'inline-block', verticalAlign: 'middle', objectFit: 'contain', filter: 'none' }));
} else {
var cls = (icon && icon.indexOf('dashicons-') === 0) ? icon : 'dashicons-admin-generic';
$main.append($('
'));
@@ -604,6 +620,20 @@
$main.append($('
🔒 no access '));
}
$row.append($main);
+
+ // Apply color overrides preview.
+ if (ov.color_bg) {
+ $row.css('background-color', ov.color_bg);
+ }
+ if (ov.color_text) {
+ $row.find('.members-am-item-label').css('color', ov.color_text);
+ }
+ if (ov.color_icon) {
+ $row.find('.dashicons').css('color', ov.color_icon);
+ $row.find('.members-am-fa-icon i').css('color', ov.color_icon);
+ $row.find('img').css('filter', 'none'); // Don't tint uploaded images with icon color
+ }
+
var $hover = $('
');
$hover.append(
$('
').text('◉'),
@@ -632,11 +662,11 @@
if (!parentId) {
var icon = ov.icon || node.icon;
- var itype = ov.icon_type || node.icon_type || 'dashicon';
+ var itype = effectiveIconType(icon, ov.icon_type || node.icon_type);
if (itype === 'fontawesome' && icon) {
$main.append($('
'));
} else if ((itype === 'svg' || itype === 'image' || itype === 'custom') && icon) {
- $main.append($('
').attr('src', icon).css({ width: '18px', height: '18px', display: 'inline-block', verticalAlign: 'middle', filter: 'brightness(0) invert(1)' }));
+ $main.append($('
').attr('src', icon).css({ width: '20px', height: '20px', display: 'inline-block', verticalAlign: 'middle', objectFit: 'contain', filter: 'none' }));
} else if (icon && icon.indexOf('dashicons-') === 0) {
$main.append($('
'));
} else {
@@ -656,6 +686,18 @@
}
$row.append($main);
+ // Apply color overrides preview.
+ if (ov.color_bg) {
+ $row.css('background-color', ov.color_bg);
+ }
+ if (ov.color_text) {
+ $row.find('.members-am-item-label').css('color', ov.color_text);
+ }
+ if (ov.color_icon) {
+ $row.find('.dashicons').css('color', ov.color_icon);
+ $row.find('.members-am-fa-icon i').css('color', ov.color_icon);
+ }
+
var $actions = $('
');
$actions.append(
$('
').text(hidden ? '◯' : '◉'),
@@ -793,6 +835,14 @@
$('#members-am-edit-url').attr('placeholder', (node && node.url) || '').val(ov.url || '');
$('#members-am-icon-type').val(ov.icon_type || 'dashicon');
$('#members-am-icon-value').val(ov.icon || (node && node.icon) || '');
+ // Show image preview if the icon is a URL.
+ var iconPreviewUrl = ov.icon || (node && node.icon) || '';
+ var iconPreviewType = effectiveIconType(iconPreviewUrl, ov.icon_type || (node && node.icon_type) || '');
+ if ((iconPreviewType === 'image' || iconPreviewType === 'custom' || iconPreviewType === 'svg') && iconPreviewUrl) {
+ $('#members-am-icon-preview').show().attr('src', iconPreviewUrl);
+ } else {
+ $('#members-am-icon-preview').hide();
+ }
$('#members-am-color-bg').val(ov.color_bg || '');
$('#members-am-color-text').val(ov.color_text || '');
$('#members-am-color-icon').val(ov.color_icon || '');
@@ -831,8 +881,18 @@
function initColorPickers() {
destroyColorPickers();
$('.members-am-color').wpColorPicker({
- change: function () {
- pushOverridesFromForm();
+ change: function (event, ui) {
+ // wpColorPicker fires change BEFORE writing to the input,
+ // so we defer reading until the value is committed.
+ setTimeout(function () {
+ pushOverridesFromForm();
+ }, 20);
+ },
+ clear: function () {
+ // "Clear" button doesn't fire change — handle it separately.
+ setTimeout(function () {
+ pushOverridesFromForm();
+ }, 20);
},
});
}
@@ -843,8 +903,11 @@
}
setOverrideField('label', $('#members-am-edit-label').val());
setOverrideField('url', $('#members-am-edit-url').val());
- setOverrideField('icon_type', $('#members-am-icon-type').val());
- setOverrideField('icon', $('#members-am-icon-value').val());
+ // Auto-detect icon type from icon value to stay consistent.
+ var iconVal = $('#members-am-icon-value').val();
+ var iconType = effectiveIconType(iconVal, $('#members-am-icon-type').val());
+ setOverrideField('icon_type', iconType);
+ setOverrideField('icon', iconVal);
setOverrideField('color_bg', $('#members-am-color-bg').val());
setOverrideField('color_text', $('#members-am-color-text').val());
setOverrideField('color_icon', $('#members-am-color-icon').val());
@@ -1367,14 +1430,24 @@
return;
}
state.mediaFrame = wp.media({
- title: 'Choose icon',
- button: { text: 'Use image' },
+ title: 'Choose menu icon',
+ button: { text: 'Use as icon' },
multiple: false,
+ library: { type: 'image' },
});
state.mediaFrame.on('select', function () {
var att = state.mediaFrame.state().get('selection').first().toJSON();
+ // Prefer smaller sizes for menu icons (WP menu icons are 20x20px).
+ var iconUrl = att.url || '';
+ if (att.sizes) {
+ if (att.sizes.thumbnail) {
+ iconUrl = att.sizes.thumbnail.url;
+ } else if (att.sizes.medium) {
+ iconUrl = att.sizes.medium.url;
+ }
+ }
$('#members-am-icon-type').val('custom');
- $('#members-am-icon-value').val(att.url || '');
+ $('#members-am-icon-value').val(iconUrl);
pushOverridesFromForm();
});
state.mediaFrame.open();
diff --git a/js/admin-menus.min.js b/js/admin-menus.min.js
index 8b9ee61..8d5a6c4 100644
--- a/js/admin-menus.min.js
+++ b/js/admin-menus.min.js
@@ -1 +1 @@
-!function(f){"use strict";var h={settings:f.extend(!0,{},membersAdminMenus.settings),tree:[],activeRoleSlugs:[],carouselPage:0,columnsPerPage:3,selectedId:null,iconTab:"dashicons",previewUserId:null,previewUserRoles:[],userSuggestions:[],mediaFrame:null,syncScroll:function(){try{return"0"!==localStorage.getItem("members_am_sync_scroll")}catch(e){return!0}}()},e=["dashicons-menu","dashicons-admin-dashboard","dashicons-admin-post","dashicons-admin-page","dashicons-admin-media","dashicons-admin-comments","dashicons-admin-appearance","dashicons-admin-plugins","dashicons-admin-users","dashicons-admin-tools","dashicons-admin-settings","dashicons-admin-generic","dashicons-edit","dashicons-plus","dashicons-chart-bar","dashicons-cart","dashicons-products","dashicons-email","dashicons-groups","dashicons-heart","dashicons-star-filled","dashicons-smiley","dashicons-info","dashicons-lock","dashicons-unlock","dashicons-visibility","dashicons-hidden","dashicons-arrow-up","dashicons-arrow-down","dashicons-admin-network","dashicons-performance"],s=["fa-solid fa-house","fa-solid fa-user","fa-solid fa-gear","fa-solid fa-file","fa-solid fa-image","fa-solid fa-cart-shopping","fa-solid fa-chart-line","fa-solid fa-envelope","fa-solid fa-book","fa-solid fa-link","fa-solid fa-bell","fa-solid fa-star","fa-solid fa-heart","fa-solid fa-lock","fa-solid fa-unlock","fa-solid fa-pen","fa-solid fa-trash","fa-solid fa-plus","fa-solid fa-minus"],t="members_am_view_state";function o(){try{localStorage.setItem(t,JSON.stringify({activeRoleSlugs:h.activeRoleSlugs,carouselPage:h.carouselPage}))}catch(e){}}function d(){return membersAdminMenus.roles||[]}function n(){h.settings._meta&&!Array.isArray(h.settings._meta)||(h.settings._meta={version:3,admin_editable:!1}),h.settings.roles&&!Array.isArray(h.settings.roles)||(h.settings.roles={}),h.settings.users&&!Array.isArray(h.settings.users)||(h.settings.users={}),Array.isArray(h.settings.custom_items)||(h.settings.custom_items=[]),h.settings.capabilities&&!Array.isArray(h.settings.capabilities)||(h.settings.capabilities={})}function v(e){n(),h.settings.roles[e]||(h.settings.roles[e]={hidden:[],order:[],submenu_order:{},overrides:{}});var s=h.settings.roles[e];return s.hidden&&Array.isArray(s.hidden)||(s.hidden=[]),s.order&&Array.isArray(s.order)||(s.order=[]),s.submenu_order&&!Array.isArray(s.submenu_order)||(s.submenu_order={}),s.overrides&&!Array.isArray(s.overrides)||(s.overrides={}),s}function b(e){n(),h.settings.users[e]||(h.settings.users[e]={});var s=h.settings.users[e];return s.hidden&&Array.isArray(s.hidden)||(s.hidden=[]),s.order&&Array.isArray(s.order)||(s.order=[]),s.overrides&&!Array.isArray(s.overrides)||(s.overrides={}),s.submenu_order&&!Array.isArray(s.submenu_order)||(s.submenu_order={}),s}function i(e){var s=e.id||"c";return"members-am-"+String(s).replace(/[^a-z0-9_-]/gi,"-").toLowerCase()}function r(){var n=f.extend(!0,[],membersAdminMenus.menuTree||[]),r={};return n.forEach(function(e){r[e.id]=!0}),(h.settings.custom_items||[]).forEach(function(e){if(e&&e.id){var s=i(e);if(r[s]){for(var a=0;a
r&&(h.carouselPage=r))}}h.activeRoleSlugs=s.filter(function(e){return"administrator"!==e||a}),h.activeRoleSlugs.length||(h.activeRoleSlugs=["subscriber"])}function S(){var n=f("#members-am-role-chips").empty();d().forEach(function(e){if("administrator"!==e.slug||h.settings._meta.admin_editable){var s=-1!==h.activeRoleSlugs.indexOf(e.slug),a=f(' ').text(e.label).attr("data-role",e.slug).toggleClass("is-active",s);n.append(a)}})}function A(e,s,a,n){var r=s.id,t=w(e,r),i=!k(e,s.cap),o=v(e).overrides[r]||{},m=o.label||s.title||r,l=f('
').attr("data-id",r).toggleClass("is-hidden",t).toggleClass("is-no-cap",i).toggleClass("is-selected",h.selectedId===r).toggleClass("is-sub",!!a),c=f('
');if(!a){var d=o.icon||s.icon,u=o.icon_type||s.icon_type||"dashicon";if("fontawesome"===u&&d)c.append(f(' '));else if("svg"!==u&&"image"!==u||!d)if("custom"===u&&d)c.append(f(" ").attr("src",d).css({width:"18px",height:"18px",display:"inline-block",verticalAlign:"middle",filter:"brightness(0) invert(1)"}));else{var p=d&&0===d.indexOf("dashicons-")?d:"dashicons-admin-generic";c.append(f(' '))}else c.append(f(" ").attr("src",d).css({width:"18px",height:"18px",display:"inline-block",verticalAlign:"middle",filter:"brightness(0) invert(1)"}))}s.custom&&c.append(f('custom ')),o.label&&c.append(f('edit ')),c.append(f(' ').text(m)),i&&c.append(f(' Roles.\">🔒 no access ")),l.append(c);var b=f('
');b.append(f(' ').text("◉"),f(' ').text("↑"),f(' ').text("↓")),l.append(b),n.append(l)}function I(s,e,a,n){var r=n.overrides&&n.overrides[s.id]||{},t=r.label||s.title,i=function(e,s){var a=b(e);if(-1!==a.hidden.indexOf(s))return!0;var n=g(s);return!(!n||-1===a.hidden.indexOf(n))}(a,s.id),o=!function(e){if(!e||"read"===e)return 1;for(var s=h.previewUserRoles||[],a=0;a").addClass(m).attr("data-id",s.id),c=f('
');if(!e){var d=r.icon||s.icon,u=r.icon_type||s.icon_type||"dashicon";"fontawesome"===u&&d?c.append(f(' ')):"svg"!==u&&"image"!==u&&"custom"!==u||!d?d&&0===d.indexOf("dashicons-")?c.append(f(' ')):c.append(f(' ')):c.append(f(" ").attr("src",d).css({width:"18px",height:"18px",display:"inline-block",verticalAlign:"middle",filter:"brightness(0) invert(1)"}))}s.custom&&c.append(f('custom ')),r.label&&c.append(f('edit ')),c.append(f(' ').text(t)),o&&c.append(f('🔒 no access ")),l.append(c);var p=f('
');return p.append(f(' ').text(i?"◯":"◉"),f(' ').text("↑"),f(' ').text("↓")),l.append(p),l.on("click",function(e){f(e.target).closest("button").length||(h.selectedId=s.id,F())}),l}function P(){var a=f("#members-am-columns"),n={};a.find(".members-am-column").each(function(){var e=f(this).data("role");if(e){var s=f(this).find(".members-am-sidebar-list");s.length&&(n[e]=s.scrollTop())}}),a.empty();var e,s=h.carouselPage*h.columnsPerPage;if(h.activeRoleSlugs.slice(s,s+h.columnsPerPage).forEach(function(e){var s=f('
');!function(n,e){e.empty();var s=f(''),a=(d().filter(function(e){return e.slug===n})[0]||{}).label||n;s.append(f('').text(a)),s.append(f(' ').append(f(' ').text("◀"),f(' ').text("▶"))),e.append(s);var r=f('');_(n).forEach(function(e){if(0!==e.indexOf("sep-")){var a=u(e);if(a)if(A(n,a,null,r),a.children&&a.children.length)x(n,a.id).forEach(function(e){var s=u(a.id+"::"+e);s&&A(n,s,a.id,r)})}else r.append(f('
').text("—"))}),e.append(r)}(e,s),a.append(s),n[e]&&s.find(".members-am-sidebar-list").scrollTop(n[e])}),h.previewUserId){var i=h.previewUserId,r=f('
'),t=f('');t.append(f(" ").text(h.previewUserLabel||"User #"+i)),t.append(f('× ').on("click",function(){h.previewUserId=null,h.previewUserLabel=null,h.previewUserRoles=[],F()})),r.append(t);var o=f(''),m=b(i);((e=b(i)).order&&e.order.length?e.order:p()).forEach(function(a){if(0!==a.indexOf("sep-")){var n=u(a);if(n){o.append(I(n,null,i,m));var e,s,r,t=n.children||[];(e=a,s=t,(r=b(i)).submenu_order&&r.submenu_order[e]?r.submenu_order[e]:s.map(function(e){return e.id})).forEach(function(e){var s=function(e,s){if(!e||!e.children)return null;for(var a=0;a ').text("——"))}),r.append(o),a.append(r)}if(h.syncScroll){var l=a.find(".members-am-sidebar-list"),c=!1;l.on("scroll",function(){if(!c){c=!0;var e=f(this).scrollTop();l.not(this).scrollTop(e),c=!1}})}!function(){var e=Math.max(1,Math.ceil(h.activeRoleSlugs.length/h.columnsPerPage)),s=(Math.min(h.carouselPage+1,e),h.carouselPage*h.columnsPerPage+1),a=Math.min((h.carouselPage+1)*h.columnsPerPage,h.activeRoleSlugs.length);f("#members-am-carousel-status").text(s+"–"+a+" "+membersAdminMenus.i18n.of+" "+h.activeRoleSlugs.length);for(var n=f("#members-am-carousel-dots").empty(),r=0;r ').toggleClass("is-active",r===h.carouselPage))}()}function O(){if(h.selectedId){f("#members-am-edit-panel").removeAttr("hidden");var e=u(h.selectedId),s=function(){if(!h.selectedId)return null;var e=l();if(e){var s=b(e);return s.overrides&&s.overrides[h.selectedId]||{}}var a=m()[0];return a?v(a).overrides[h.selectedId]||{}:null}()||{};f("#members-am-edit-title").text(e?e.title:h.selectedId),f("#members-am-edit-label").val(s.label||e&&e.title||""),f("#members-am-edit-url").attr("placeholder",e&&e.url||"").val(s.url||""),f("#members-am-icon-type").val(s.icon_type||"dashicon"),f("#members-am-icon-value").val(s.icon||e&&e.icon||""),f("#members-am-color-bg").val(s.color_bg||""),f("#members-am-color-text").val(s.color_text||""),f("#members-am-color-icon").val(s.color_icon||""),f("#members-am-item-cap").val(h.settings.capabilities[h.selectedId]||"");var a=e&&e.custom;f("#members-am-remove-custom").toggle(!!a),f("#members-am-visibility-toggles").empty(),d().forEach(function(e){if("administrator"!==e.slug||h.settings._meta.admin_editable){var s=w(e.slug,h.selectedId),a=f(' ').append(f(' ').attr("data-role",e.slug).prop("checked",!s),f(" ").text(e.label));f("#members-am-visibility-toggles").append(a)}}),f(".members-am-color").each(function(){f(this).data("wpWpColorPicker")&&f(this).wpColorPicker("destroy")}),f(".members-am-color").wpColorPicker({change:function(){R()}}),M()}else f("#members-am-edit-panel").attr("hidden",!0)}function R(){h.selectedId&&(a("label",f("#members-am-edit-label").val()),a("url",f("#members-am-edit-url").val()),a("icon_type",f("#members-am-icon-type").val()),a("icon",f("#members-am-icon-value").val()),a("color_bg",f("#members-am-color-bg").val()),a("color_text",f("#members-am-color-text").val()),a("color_icon",f("#members-am-color-icon").val()),h.settings.capabilities[h.selectedId]=f("#members-am-item-cap").val()||"",P())}function M(){var a=h.iconTab,n=(f("#members-am-icon-search").val()||"").toLowerCase(),r=f("#members-am-icon-grid").empty();("dashicons"===a?e:s).forEach(function(e){if(!n||-1!==e.indexOf(n)){var s=f(' ');"dashicons"===a?s.append(f(' ')):s.append(f(' ')),s.on("click",function(){f("#members-am-icon-value").val(e),f("#members-am-icon-type").val("dashicons"===a?"dashicon":"fontawesome"),R()}),r.append(s)}})}function E(e,s){var a=h.activeRoleSlugs.indexOf(e);if(-1!==a){var n=a+s;if(!(n<0||n>=h.activeRoleSlugs.length)){var r=h.activeRoleSlugs[a];h.activeRoleSlugs[a]=h.activeRoleSlugs[n],h.activeRoleSlugs[n]=r,o(),F()}}}function U(e,s,a){var n=g(s);if(n){var r=v(e).submenu_order;r[n]||(r[n]=y(n));var t=r[n],i=s.split("::"),o=i[1]||i[0];if(-1===(l=t.indexOf(o)))return;if((c=l+a)<0||c>=t.length)return;var m=t[l];t[l]=t[c],t[c]=m}else{v(e).order&&v(e).order.length||(v(e).order=p());var l,c,d=v(e).order;if(-1===(l=d.indexOf(s)))return;if((c=l+a)<0||c>=d.length)return;var u=d[l];d[l]=d[c],d[c]=u}F()}function C(){var e=m();if(e.length){var n="sep-"+Date.now();e.forEach(function(e){v(e).order&&v(e).order.length||(v(e).order=p());var s=v(e).order,a=h.selectedId?s.indexOf(h.selectedId):s.length-1;a<0&&(a=s.length),s.splice(a+1,0,n)}),F()}}function T(){var e=f("#members-am-save").prop("disabled",!0);f.post(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_save",nonce:membersAdminMenus.nonce,settings:JSON.stringify(h.settings)}).done(function(e){e.success?(alert(membersAdminMenus.i18n.saved),location.reload()):alert(e.data&&e.data.message?e.data.message:"Error")}).always(function(){e.prop("disabled",!1)})}function N(e,s){confirm("role"===e&&s?"Reset all settings for this role? This cannot be undone.":"Reset ALL menu settings for every role? This cannot be undone.")&&f.post(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_reset",nonce:membersAdminMenus.nonce,scope:e||"all",role:s||""},function(e){e.success?location.reload():alert(e.data&&e.data.message?e.data.message:"Reset failed.")})}function J(e){f.getJSON(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_user_search",nonce:membersAdminMenus.nonce,term:e},function(e){e.success&&e.data&&e.data.length?function(e){f(".members-am-user-suggestions").remove();var s=f("#members-am-user-search").parent();s.css("position","relative");var a=f('
');e.forEach(function(e){a.append(f('
').text(e.label).data("userId",e.id).on("click",function(){!function(e,s,a){h.previewUserId=e,h.previewUserLabel=s||"User #"+e,h.previewUserRoles=a||[],n(),h.settings.users[e]||(h.settings.users[e]={});F()}(e.id,e.label,e.roles),f(".members-am-user-suggestions").remove(),f("#members-am-user-search").val("")}))}),s.append(a),setTimeout(function(){f(document).one("click",function(){f(".members-am-user-suggestions").remove()})},0)}(e.data):f(".members-am-user-suggestions").remove()})}function L(){var s;f(document).on("click","#members-am-role-chips .members-am-chip",function(){var e=f(this).data("role"),s=h.activeRoleSlugs.indexOf(e);-1===s?h.activeRoleSlugs.push(e):1=r.length||(r.splice(o,1),r.splice(m,0,s))}}(s,a,f(this).closest(".members-am-item").hasClass("is-sub")?g(a):null,n?-1:1),P()}}),f("#members-am-save").on("click",T),f("#members-am-reset").on("click",function(e){e.stopPropagation(),f(".members-am-reset-dropdown").remove();var s=f(this),a=h.activeRoleSlugs||[],n=a.length?a[0]:"",r="";n&&(membersAdminMenus.roles||[]).forEach(function(e){e.slug===n&&(r=e.label)});var t=f('
');if(t.append(f('
').text("Reset Settings")),n&&r){var i=f(' ');i.append(f(' ')),i.append(f(' ').append(f(" ").text("Reset "+r),f(" ").text("Clear all menu settings for this role only"))),i.on("click",function(){f(".members-am-reset-dropdown").remove(),N("role",n)}),t.append(i)}var o=f(' ');o.append(f(' ')),o.append(f(' ').append(f(" ").text("Reset all roles"),f(" ").text("Clear all menu settings for every role"))),o.on("click",function(){f(".members-am-reset-dropdown").remove(),N("all")}),t.append(o),s.parent().css("position","relative"),t.insertAfter(s),f(document).one("click",function(){f(".members-am-reset-dropdown").remove()})}),f("#members-am-export").on("click",function(e){e.preventDefault(),window.location.href=membersAdminMenus.exportUrl}),f("#members-am-import").on("click",function(){f("#members-am-import-file").trigger("click")}),f("#members-am-import-file").on("change",function(){var e,s,a=this.files&&this.files[0];a&&(e=a,(s=new FileReader).onload=function(){try{var e=JSON.parse(s.result);f.post(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_import",nonce:membersAdminMenus.nonce,settings:JSON.stringify(e)}).done(function(e){e.success?location.reload():alert(e.data&&e.data.message?e.data.message:"Error")})}catch(e){alert("Invalid JSON")}},s.readAsText(e))}),f("#members-am-copy-apply").on("click",function(){var a=f("#members-am-copy-from").val(),s=f("#members-am-copy-to").val();if(a&&s)if(a!==s){var n="",r="";if(d().forEach(function(e){e.slug===a&&(n=e.label),e.slug===s&&(r=e.label)}),confirm('Copy menu settings from "'+n+'" to "'+r+'"?\nThis will overwrite "'+r+"\" menu configuration.\n\nNote: This copies menu order, hidden items, labels, icons, and colors.\nIt does NOT change the role's capabilities (items marked with a lock icon).")){var e=v(a),t={hidden:e.hidden?e.hidden.slice():[],order:[],submenu_order:{},overrides:{}},i=_(a);t.order=i.slice(),h.tree.forEach(function(e){if(e.children&&e.children.length){var s=x(a,e.id);s&&s.length&&(t.submenu_order[e.id]=s.slice())}}),e.overrides&&"object"==typeof e.overrides&&(t.overrides=JSON.parse(JSON.stringify(e.overrides))),h.settings.roles[s]=t,-1===h.activeRoleSlugs.indexOf(s)&&(h.activeRoleSlugs.push(s),o(),S()),F(),T()}}else alert("Source and target roles must be different.")}),f("#members-am-admin-editable").on("change",function(){var e=!0;f(this).is(":checked")&&(e=window.confirm(membersAdminMenus.i18n.adminEditableWarn)),e?(h.settings._meta.admin_editable=f(this).is(":checked"),c(),S(),o(),F()):f(this).prop("checked",!1)}),f("#members-am-sync-scroll").prop("checked",!1!==h.syncScroll),f("#members-am-sync-scroll").on("change",function(){h.syncScroll=f(this).is(":checked");try{localStorage.setItem("members_am_sync_scroll",h.syncScroll?"1":"0")}catch(e){}P()}),f("#members-am-add-item").on("click",function(){var e="c"+Date.now();h.settings.custom_items.push({id:e,label:"Custom link",url:window.location.origin+"/wp-admin/",icon_type:"dashicon",icon:"dashicons-admin-generic",parent:"",position:99,cap:"read"}),h.tree=r(),h.selectedId=i({id:e}),F(),O()}),f("#members-am-remove-custom").on("click",function(){var s=u(h.selectedId);s&&s.customId&&(h.settings.custom_items=(h.settings.custom_items||[]).filter(function(e){return e.id!==s.customId}),h.selectedId=null,h.tree=r(),F(),f("#members-am-edit-panel").attr("hidden",!0))}),f("#members-am-edit-close").on("click",function(){h.selectedId=null,f("#members-am-edit-panel").attr("hidden",!0),F()}),f("#members-am-edit-target-role").on("change",O),f("#members-am-edit-label, #members-am-edit-url, #members-am-icon-value").on("input",function(){R()}),f("#members-am-item-cap").on("input",function(){R()}),f(".members-am-icon-tabs .button").on("click",function(){f(".members-am-icon-tabs .button").removeClass("is-active"),f(this).addClass("is-active"),h.iconTab="fontawesome"===f(this).data("tab")?"fontawesome":"upload"===f(this).data("tab")?"upload":"dashicons",M()}),f("#members-am-icon-search").on("input",M),f("#members-am-media-upload").on("click",function(e){e.preventDefault(),h.mediaFrame||(h.mediaFrame=wp.media({title:"Choose icon",button:{text:"Use image"},multiple:!1}),h.mediaFrame.on("select",function(){var e=h.mediaFrame.state().get("selection").first().toJSON();f("#members-am-icon-type").val("custom"),f("#members-am-icon-value").val(e.url||""),R()})),h.mediaFrame.open()}),f(document).on("change",".members-am-vis-cb",function(){var e=f(this).data("role");if(f(this).is(":checked")){var s=v(e).hidden,a=s.indexOf(h.selectedId);-1!==a&&s.splice(a,1)}else-1===v(e).hidden.indexOf(h.selectedId)&&v(e).hidden.push(h.selectedId);F()}),f("#members-am-add-sep").on("click",C),f("#members-am-promote").on("click",function(){a("parent",""),R()}),f("#members-am-demote").on("click",function(){var e=window.prompt("Parent slug (e.g. edit.php)","edit.php");e&&(a("parent",e),R())}),f("#members-am-user-search").on("input",function(){var e=f(this).val();clearTimeout(s),s=setTimeout(function(){1 ").val("__all__").text("All roles")),h.activeRoleSlugs.forEach(function(s){var e=(d().filter(function(e){return e.slug===s})[0]||{}).label||s;a.append(f(" ").val(s).text(e))}),h.previewUserId&&a.append(f(" ").val("__user__"+h.previewUserId).text(h.previewUserLabel||"User #"+h.previewUserId)),h.selectedId&&O()}f(function(){var s,a,e;n(),h.tree=r(),c(),f("#members-am-admin-editable").prop("checked",!!h.settings._meta.admin_editable),s=f("#members-am-copy-from").empty(),a=f("#members-am-copy-to").empty(),(e=d()).forEach(function(e){s.append(f(" ").val(e.slug).text(e.label)),a.append(f(" ").val(e.slug).text(e.label))}),1r&&(h.carouselPage=r))}}h.activeRoleSlugs=s.filter(function(e){return"administrator"!==e||a}),h.activeRoleSlugs.length||(h.activeRoleSlugs=["subscriber"])}function O(){var n=b("#members-am-role-chips").empty();d().forEach(function(e){if("administrator"!==e.slug||h.settings._meta.admin_editable){var s=-1!==h.activeRoleSlugs.indexOf(e.slug),a=b(' ').text(e.label).attr("data-role",e.slug).toggleClass("is-active",s);n.append(a)}})}function I(e,s,a,n){var r=s.id,i=w(e,r),t=!k(e,s.cap),o=g(e).overrides[r]||{},m=o.label||s.title||r,l=b('
').attr("data-id",r).toggleClass("is-hidden",i).toggleClass("is-no-cap",t).toggleClass("is-selected",h.selectedId===r).toggleClass("is-sub",!!a),c=b('
');if(!a){var d=o.icon||s.icon,u=S(d,o.icon_type||s.icon_type);if("fontawesome"===u&&d)c.append(b(' '));else if("svg"!==u&&"image"!==u&&"custom"!==u||!d){var p=d&&0===d.indexOf("dashicons-")?d:"dashicons-admin-generic";c.append(b(' '))}else c.append(b(" ").attr("src",d).css({width:"20px",height:"20px",display:"inline-block",verticalAlign:"middle",objectFit:"contain",filter:"none"}))}s.custom&&c.append(b('custom ')),o.label&&c.append(b('edit ')),c.append(b(' ').text(m)),t&&c.append(b(' Roles.\">🔒 no access ")),l.append(c),o.color_bg&&l.css("background-color",o.color_bg),o.color_text&&l.find(".members-am-item-label").css("color",o.color_text),o.color_icon&&(l.find(".dashicons").css("color",o.color_icon),l.find(".members-am-fa-icon i").css("color",o.color_icon),l.find("img").css("filter","none"));var f=b('
');f.append(b(' ').text("◉"),b(' ').text("↑"),b(' ').text("↓")),l.append(f),n.append(l)}function A(s,e,a,n){var r=n.overrides&&n.overrides[s.id]||{},i=r.label||s.title,t=function(e,s){var a=f(e);if(-1!==a.hidden.indexOf(s))return!0;var n=v(s);return!(!n||-1===a.hidden.indexOf(n))}(a,s.id),o=!function(e){if(!e||"read"===e)return 1;for(var s=h.previewUserRoles||[],a=0;a").addClass(m).attr("data-id",s.id),c=b('
');if(!e){var d=r.icon||s.icon,u=S(d,r.icon_type||s.icon_type);"fontawesome"===u&&d?c.append(b(' ')):"svg"!==u&&"image"!==u&&"custom"!==u||!d?d&&0===d.indexOf("dashicons-")?c.append(b(' ')):c.append(b(' ')):c.append(b(" ").attr("src",d).css({width:"20px",height:"20px",display:"inline-block",verticalAlign:"middle",objectFit:"contain",filter:"none"}))}s.custom&&c.append(b('custom ')),r.label&&c.append(b('edit ')),c.append(b(' ').text(i)),o&&c.append(b('🔒 no access ")),l.append(c),r.color_bg&&l.css("background-color",r.color_bg),r.color_text&&l.find(".members-am-item-label").css("color",r.color_text),r.color_icon&&(l.find(".dashicons").css("color",r.color_icon),l.find(".members-am-fa-icon i").css("color",r.color_icon));var p=b('
');return p.append(b(' ').text(t?"◯":"◉"),b(' ').text("↑"),b(' ').text("↓")),l.append(p),l.on("click",function(e){b(e.target).closest("button").length||(h.selectedId=s.id,L())}),l}function P(){var a=b("#members-am-columns"),n={};a.find(".members-am-column").each(function(){var e=b(this).data("role");if(e){var s=b(this).find(".members-am-sidebar-list");s.length&&(n[e]=s.scrollTop())}}),a.empty();var e,s=h.carouselPage*h.columnsPerPage;if(h.activeRoleSlugs.slice(s,s+h.columnsPerPage).forEach(function(e){var s=b('
');!function(n,e){e.empty();var s=b(''),a=(d().filter(function(e){return e.slug===n})[0]||{}).label||n;s.append(b('').text(a)),s.append(b(' ').append(b(' ').text("◀"),b(' ').text("▶"))),e.append(s);var r=b('');_(n).forEach(function(e){if(0!==e.indexOf("sep-")){var a=u(e);if(a)if(I(n,a,null,r),a.children&&a.children.length)x(n,a.id).forEach(function(e){var s=u(a.id+"::"+e);s&&I(n,s,a.id,r)})}else r.append(b('
').text("—"))}),e.append(r)}(e,s),a.append(s),n[e]&&s.find(".members-am-sidebar-list").scrollTop(n[e])}),h.previewUserId){var t=h.previewUserId,r=b('
'),i=b('');i.append(b(" ").text(h.previewUserLabel||"User #"+t)),i.append(b('× ').on("click",function(){h.previewUserId=null,h.previewUserLabel=null,h.previewUserRoles=[],L()})),r.append(i);var o=b(''),m=f(t);((e=f(t)).order&&e.order.length?e.order:p()).forEach(function(a){if(0!==a.indexOf("sep-")){var n=u(a);if(n){o.append(A(n,null,t,m));var e,s,r,i=n.children||[];(e=a,s=i,(r=f(t)).submenu_order&&r.submenu_order[e]?r.submenu_order[e]:s.map(function(e){return e.id})).forEach(function(e){var s=function(e,s){if(!e||!e.children)return null;for(var a=0;a ').text("——"))}),r.append(o),a.append(r)}if(h.syncScroll){var l=a.find(".members-am-sidebar-list"),c=!1;l.on("scroll",function(){if(!c){c=!0;var e=b(this).scrollTop();l.not(this).scrollTop(e),c=!1}})}!function(){var e=Math.max(1,Math.ceil(h.activeRoleSlugs.length/h.columnsPerPage)),s=(Math.min(h.carouselPage+1,e),h.carouselPage*h.columnsPerPage+1),a=Math.min((h.carouselPage+1)*h.columnsPerPage,h.activeRoleSlugs.length);b("#members-am-carousel-status").text(s+"–"+a+" "+membersAdminMenus.i18n.of+" "+h.activeRoleSlugs.length);for(var n=b("#members-am-carousel-dots").empty(),r=0;r ').toggleClass("is-active",r===h.carouselPage))}()}function R(){if(h.selectedId){b("#members-am-edit-panel").removeAttr("hidden");var e=u(h.selectedId),s=function(){if(!h.selectedId)return null;var e=l();if(e){var s=f(e);return s.overrides&&s.overrides[h.selectedId]||{}}var a=m()[0];return a?g(a).overrides[h.selectedId]||{}:null}()||{};b("#members-am-edit-title").text(e?e.title:h.selectedId),b("#members-am-edit-label").val(s.label||e&&e.title||""),b("#members-am-edit-url").attr("placeholder",e&&e.url||"").val(s.url||""),b("#members-am-icon-type").val(s.icon_type||"dashicon"),b("#members-am-icon-value").val(s.icon||e&&e.icon||"");var a=s.icon||e&&e.icon||"",n=S(a,s.icon_type||e&&e.icon_type||"");"image"!==n&&"custom"!==n&&"svg"!==n||!a?b("#members-am-icon-preview").hide():b("#members-am-icon-preview").show().attr("src",a),b("#members-am-color-bg").val(s.color_bg||""),b("#members-am-color-text").val(s.color_text||""),b("#members-am-color-icon").val(s.color_icon||""),b("#members-am-item-cap").val(h.settings.capabilities[h.selectedId]||"");var r=e&&e.custom;b("#members-am-remove-custom").toggle(!!r),b("#members-am-visibility-toggles").empty(),d().forEach(function(e){if("administrator"!==e.slug||h.settings._meta.admin_editable){var s=w(e.slug,h.selectedId),a=b(' ').append(b(' ').attr("data-role",e.slug).prop("checked",!s),b(" ").text(e.label));b("#members-am-visibility-toggles").append(a)}}),b(".members-am-color").each(function(){b(this).data("wpWpColorPicker")&&b(this).wpColorPicker("destroy")}),b(".members-am-color").wpColorPicker({change:function(e,s){setTimeout(function(){M()},20)},clear:function(){setTimeout(function(){M()},20)}}),E()}else b("#members-am-edit-panel").attr("hidden",!0)}function M(){if(h.selectedId){a("label",b("#members-am-edit-label").val()),a("url",b("#members-am-edit-url").val());var e=b("#members-am-icon-value").val();a("icon_type",S(e,b("#members-am-icon-type").val())),a("icon",e),a("color_bg",b("#members-am-color-bg").val()),a("color_text",b("#members-am-color-text").val()),a("color_icon",b("#members-am-color-icon").val()),h.settings.capabilities[h.selectedId]=b("#members-am-item-cap").val()||"",P()}}function E(){var a=h.iconTab,n=(b("#members-am-icon-search").val()||"").toLowerCase(),r=b("#members-am-icon-grid").empty();("dashicons"===a?e:s).forEach(function(e){if(!n||-1!==e.indexOf(n)){var s=b(' ');"dashicons"===a?s.append(b(' ')):s.append(b(' ')),s.on("click",function(){b("#members-am-icon-value").val(e),b("#members-am-icon-type").val("dashicons"===a?"dashicon":"fontawesome"),M()}),r.append(s)}})}function U(e,s){var a=h.activeRoleSlugs.indexOf(e);if(-1!==a){var n=a+s;if(!(n<0||n>=h.activeRoleSlugs.length)){var r=h.activeRoleSlugs[a];h.activeRoleSlugs[a]=h.activeRoleSlugs[n],h.activeRoleSlugs[n]=r,o(),L()}}}function C(e,s,a){var n=v(s);if(n){var r=g(e).submenu_order;r[n]||(r[n]=y(n));var i=r[n],t=s.split("::"),o=t[1]||t[0];if(-1===(l=i.indexOf(o)))return;if((c=l+a)<0||c>=i.length)return;var m=i[l];i[l]=i[c],i[c]=m}else{g(e).order&&g(e).order.length||(g(e).order=p());var l,c,d=g(e).order;if(-1===(l=d.indexOf(s)))return;if((c=l+a)<0||c>=d.length)return;var u=d[l];d[l]=d[c],d[c]=u}L()}function T(){var e=m();if(e.length){var n="sep-"+Date.now();e.forEach(function(e){g(e).order&&g(e).order.length||(g(e).order=p());var s=g(e).order,a=h.selectedId?s.indexOf(h.selectedId):s.length-1;a<0&&(a=s.length),s.splice(a+1,0,n)}),L()}}function N(){var e=b("#members-am-save").prop("disabled",!0);b.post(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_save",nonce:membersAdminMenus.nonce,settings:JSON.stringify(h.settings)}).done(function(e){e.success?(alert(membersAdminMenus.i18n.saved),location.reload()):alert(e.data&&e.data.message?e.data.message:"Error")}).always(function(){e.prop("disabled",!1)})}function J(e,s){confirm("role"===e&&s?"Reset all settings for this role? This cannot be undone.":"Reset ALL menu settings for every role? This cannot be undone.")&&b.post(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_reset",nonce:membersAdminMenus.nonce,scope:e||"all",role:s||""},function(e){e.success?location.reload():alert(e.data&&e.data.message?e.data.message:"Reset failed.")})}function F(e){b.getJSON(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_user_search",nonce:membersAdminMenus.nonce,term:e},function(e){e.success&&e.data&&e.data.length?function(e){b(".members-am-user-suggestions").remove();var s=b("#members-am-user-search").parent();s.css("position","relative");var a=b('
');e.forEach(function(e){a.append(b('
').text(e.label).data("userId",e.id).on("click",function(){!function(e,s,a){h.previewUserId=e,h.previewUserLabel=s||"User #"+e,h.previewUserRoles=a||[],n(),h.settings.users[e]||(h.settings.users[e]={});L()}(e.id,e.label,e.roles),b(".members-am-user-suggestions").remove(),b("#members-am-user-search").val("")}))}),s.append(a),setTimeout(function(){b(document).one("click",function(){b(".members-am-user-suggestions").remove()})},0)}(e.data):b(".members-am-user-suggestions").remove()})}function j(){var s;b(document).on("click","#members-am-role-chips .members-am-chip",function(){var e=b(this).data("role"),s=h.activeRoleSlugs.indexOf(e);-1===s?h.activeRoleSlugs.push(e):1=r.length||(r.splice(o,1),r.splice(m,0,s))}}(s,a,b(this).closest(".members-am-item").hasClass("is-sub")?v(a):null,n?-1:1),P()}}),b("#members-am-save").on("click",N),b("#members-am-reset").on("click",function(e){e.stopPropagation(),b(".members-am-reset-dropdown").remove();var s=b(this),a=h.activeRoleSlugs||[],n=a.length?a[0]:"",r="";n&&(membersAdminMenus.roles||[]).forEach(function(e){e.slug===n&&(r=e.label)});var i=b('
');if(i.append(b('
').text("Reset Settings")),n&&r){var t=b(' ');t.append(b(' ')),t.append(b(' ').append(b(" ").text("Reset "+r),b(" ").text("Clear all menu settings for this role only"))),t.on("click",function(){b(".members-am-reset-dropdown").remove(),J("role",n)}),i.append(t)}var o=b(' ');o.append(b(' ')),o.append(b(' ').append(b(" ").text("Reset all roles"),b(" ").text("Clear all menu settings for every role"))),o.on("click",function(){b(".members-am-reset-dropdown").remove(),J("all")}),i.append(o),s.parent().css("position","relative"),i.insertAfter(s),b(document).one("click",function(){b(".members-am-reset-dropdown").remove()})}),b("#members-am-export").on("click",function(e){e.preventDefault(),window.location.href=membersAdminMenus.exportUrl}),b("#members-am-import").on("click",function(){b("#members-am-import-file").trigger("click")}),b("#members-am-import-file").on("change",function(){var e,s,a=this.files&&this.files[0];a&&(e=a,(s=new FileReader).onload=function(){try{var e=JSON.parse(s.result);b.post(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_import",nonce:membersAdminMenus.nonce,settings:JSON.stringify(e)}).done(function(e){e.success?location.reload():alert(e.data&&e.data.message?e.data.message:"Error")})}catch(e){alert("Invalid JSON")}},s.readAsText(e))}),b("#members-am-copy-apply").on("click",function(){var a=b("#members-am-copy-from").val(),s=b("#members-am-copy-to").val();if(a&&s)if(a!==s){var n="",r="";if(d().forEach(function(e){e.slug===a&&(n=e.label),e.slug===s&&(r=e.label)}),confirm('Copy menu settings from "'+n+'" to "'+r+'"?\nThis will overwrite "'+r+"\" menu configuration.\n\nNote: This copies menu order, hidden items, labels, icons, and colors.\nIt does NOT change the role's capabilities (items marked with a lock icon).")){var e=g(a),i={hidden:e.hidden?e.hidden.slice():[],order:[],submenu_order:{},overrides:{}},t=_(a);i.order=t.slice(),h.tree.forEach(function(e){if(e.children&&e.children.length){var s=x(a,e.id);s&&s.length&&(i.submenu_order[e.id]=s.slice())}}),e.overrides&&"object"==typeof e.overrides&&(i.overrides=JSON.parse(JSON.stringify(e.overrides))),h.settings.roles[s]=i,-1===h.activeRoleSlugs.indexOf(s)&&(h.activeRoleSlugs.push(s),o(),O()),L(),N()}}else alert("Source and target roles must be different.")}),b("#members-am-admin-editable").on("change",function(){var e=!0;b(this).is(":checked")&&(e=window.confirm(membersAdminMenus.i18n.adminEditableWarn)),e?(h.settings._meta.admin_editable=b(this).is(":checked"),c(),O(),o(),L()):b(this).prop("checked",!1)}),b("#members-am-sync-scroll").prop("checked",!1!==h.syncScroll),b("#members-am-sync-scroll").on("change",function(){h.syncScroll=b(this).is(":checked");try{localStorage.setItem("members_am_sync_scroll",h.syncScroll?"1":"0")}catch(e){}P()}),b("#members-am-add-item").on("click",function(){var e="c"+Date.now();h.settings.custom_items.push({id:e,label:"Custom link",url:window.location.origin+"/wp-admin/",icon_type:"dashicon",icon:"dashicons-admin-generic",parent:"",position:99,cap:"read"}),h.tree=r(),h.selectedId=t({id:e}),L(),R()}),b("#members-am-remove-custom").on("click",function(){var s=u(h.selectedId);s&&s.customId&&(h.settings.custom_items=(h.settings.custom_items||[]).filter(function(e){return e.id!==s.customId}),h.selectedId=null,h.tree=r(),L(),b("#members-am-edit-panel").attr("hidden",!0))}),b("#members-am-edit-close").on("click",function(){h.selectedId=null,b("#members-am-edit-panel").attr("hidden",!0),L()}),b("#members-am-edit-target-role").on("change",R),b("#members-am-edit-label, #members-am-edit-url, #members-am-icon-value").on("input",function(){M()}),b("#members-am-item-cap").on("input",function(){M()}),b(".members-am-icon-tabs .button").on("click",function(){b(".members-am-icon-tabs .button").removeClass("is-active"),b(this).addClass("is-active"),h.iconTab="fontawesome"===b(this).data("tab")?"fontawesome":"upload"===b(this).data("tab")?"upload":"dashicons",E()}),b("#members-am-icon-search").on("input",E),b("#members-am-media-upload").on("click",function(e){e.preventDefault(),h.mediaFrame||(h.mediaFrame=wp.media({title:"Choose menu icon",button:{text:"Use as icon"},multiple:!1,library:{type:"image"}}),h.mediaFrame.on("select",function(){var e=h.mediaFrame.state().get("selection").first().toJSON(),s=e.url||"";e.sizes&&(e.sizes.thumbnail?s=e.sizes.thumbnail.url:e.sizes.medium&&(s=e.sizes.medium.url)),b("#members-am-icon-type").val("custom"),b("#members-am-icon-value").val(s),M()})),h.mediaFrame.open()}),b(document).on("change",".members-am-vis-cb",function(){var e=b(this).data("role");if(b(this).is(":checked")){var s=g(e).hidden,a=s.indexOf(h.selectedId);-1!==a&&s.splice(a,1)}else-1===g(e).hidden.indexOf(h.selectedId)&&g(e).hidden.push(h.selectedId);L()}),b("#members-am-add-sep").on("click",T),b("#members-am-promote").on("click",function(){a("parent",""),M()}),b("#members-am-demote").on("click",function(){var e=window.prompt("Parent slug (e.g. edit.php)","edit.php");e&&(a("parent",e),M())}),b("#members-am-user-search").on("input",function(){var e=b(this).val();clearTimeout(s),s=setTimeout(function(){1 ").val("__all__").text("All roles")),h.activeRoleSlugs.forEach(function(s){var e=(d().filter(function(e){return e.slug===s})[0]||{}).label||s;a.append(b(" ").val(s).text(e))}),h.previewUserId&&a.append(b(" ").val("__user__"+h.previewUserId).text(h.previewUserLabel||"User #"+h.previewUserId)),h.selectedId&&R()}b(function(){var s,a,e;n(),h.tree=r(),c(),b("#members-am-admin-editable").prop("checked",!!h.settings._meta.admin_editable),s=b("#members-am-copy-from").empty(),a=b("#members-am-copy-to").empty(),(e=d()).forEach(function(e){s.append(b(" ").val(e.slug).text(e.label)),a.append(b(" ").val(e.slug).text(e.label))}),1
Date: Wed, 8 Apr 2026 14:27:10 +0200
Subject: [PATCH 06/73] feat(admin): enhance admin menu editor functionality
---
js/admin-menus.js | 30 +++++++++++++++++++++---------
js/admin-menus.min.js | 2 +-
2 files changed, 22 insertions(+), 10 deletions(-)
diff --git a/js/admin-menus.js b/js/admin-menus.js
index 8886c06..78f4373 100644
--- a/js/admin-menus.js
+++ b/js/admin-menus.js
@@ -832,7 +832,8 @@
var ov = getOverrideForEdit() || {};
$('#members-am-edit-title').text(node ? node.title : state.selectedId);
$('#members-am-edit-label').val(ov.label || (node && node.title) || '');
- $('#members-am-edit-url').attr('placeholder', (node && node.url) || '').val(ov.url || '');
+ $('#members-am-edit-url').attr('placeholder', 'Override URL (leave empty for default)').val(ov.url || (node && node.url) || '');
+ $('#members-am-edit-url').data('default-url', (node && node.url) || '');
$('#members-am-icon-type').val(ov.icon_type || 'dashicon');
$('#members-am-icon-value').val(ov.icon || (node && node.icon) || '');
// Show image preview if the icon is a URL.
@@ -846,23 +847,32 @@
$('#members-am-color-bg').val(ov.color_bg || '');
$('#members-am-color-text').val(ov.color_text || '');
$('#members-am-color-icon').val(ov.color_icon || '');
- $('#members-am-item-cap').val(state.settings.capabilities[state.selectedId] || '');
+ $('#members-am-item-cap')
+ .attr('placeholder', (node && node.cap) ? node.cap + ' (default)' : '')
+ .val(state.settings.capabilities[state.selectedId] || '');
var custom = node && node.custom;
$('#members-am-remove-custom').toggle(!!custom);
$('#members-am-visibility-toggles').empty();
+ var itemCap = (node && node.cap) || 'read';
getRolesList().forEach(function (r) {
if (r.slug === 'administrator' && !state.settings._meta.admin_editable) {
return;
}
var hid = isHidden(r.slug, state.selectedId);
- var $l = $(' ').append(
- $(' ')
- .attr('data-role', r.slug)
- .prop('checked', !hid),
- $(' ').text(r.label)
- );
+ var hasCap = roleHasCap(r.slug, itemCap);
+ var $cb = $(' ')
+ .attr('data-role', r.slug)
+ .prop('checked', !hid && hasCap);
+ if (!hasCap) {
+ $cb.prop('disabled', true);
+ }
+ var $l = $(' ').append($cb, $(' ').text(r.label));
+ if (!hasCap) {
+ $l.append($(' ').text(' — no capability').css({ color: '#999', fontStyle: 'italic', marginLeft: '4px' }));
+ $l.css('opacity', '0.5');
+ }
$('#members-am-visibility-toggles').append($l);
});
@@ -902,7 +912,9 @@
return;
}
setOverrideField('label', $('#members-am-edit-label').val());
- setOverrideField('url', $('#members-am-edit-url').val());
+ var urlVal = $('#members-am-edit-url').val();
+ var defaultUrl = $('#members-am-edit-url').data('default-url') || '';
+ setOverrideField('url', (urlVal === defaultUrl) ? '' : urlVal);
// Auto-detect icon type from icon value to stay consistent.
var iconVal = $('#members-am-icon-value').val();
var iconType = effectiveIconType(iconVal, $('#members-am-icon-type').val());
diff --git a/js/admin-menus.min.js b/js/admin-menus.min.js
index 8d5a6c4..a90da08 100644
--- a/js/admin-menus.min.js
+++ b/js/admin-menus.min.js
@@ -1 +1 @@
-!function(b){"use strict";var h={settings:b.extend(!0,{},membersAdminMenus.settings),tree:[],activeRoleSlugs:[],carouselPage:0,columnsPerPage:3,selectedId:null,iconTab:"dashicons",previewUserId:null,previewUserRoles:[],userSuggestions:[],mediaFrame:null,syncScroll:function(){try{return"0"!==localStorage.getItem("members_am_sync_scroll")}catch(e){return!0}}()},e=["dashicons-menu","dashicons-admin-dashboard","dashicons-admin-post","dashicons-admin-page","dashicons-admin-media","dashicons-admin-comments","dashicons-admin-appearance","dashicons-admin-plugins","dashicons-admin-users","dashicons-admin-tools","dashicons-admin-settings","dashicons-admin-generic","dashicons-edit","dashicons-plus","dashicons-chart-bar","dashicons-cart","dashicons-products","dashicons-email","dashicons-groups","dashicons-heart","dashicons-star-filled","dashicons-smiley","dashicons-info","dashicons-lock","dashicons-unlock","dashicons-visibility","dashicons-hidden","dashicons-arrow-up","dashicons-arrow-down","dashicons-admin-network","dashicons-performance"],s=["fa-solid fa-house","fa-solid fa-user","fa-solid fa-gear","fa-solid fa-file","fa-solid fa-image","fa-solid fa-cart-shopping","fa-solid fa-chart-line","fa-solid fa-envelope","fa-solid fa-book","fa-solid fa-link","fa-solid fa-bell","fa-solid fa-star","fa-solid fa-heart","fa-solid fa-lock","fa-solid fa-unlock","fa-solid fa-pen","fa-solid fa-trash","fa-solid fa-plus","fa-solid fa-minus"],i="members_am_view_state";function o(){try{localStorage.setItem(i,JSON.stringify({activeRoleSlugs:h.activeRoleSlugs,carouselPage:h.carouselPage}))}catch(e){}}function d(){return membersAdminMenus.roles||[]}function n(){h.settings._meta&&!Array.isArray(h.settings._meta)||(h.settings._meta={version:3,admin_editable:!1}),h.settings.roles&&!Array.isArray(h.settings.roles)||(h.settings.roles={}),h.settings.users&&!Array.isArray(h.settings.users)||(h.settings.users={}),Array.isArray(h.settings.custom_items)||(h.settings.custom_items=[]),h.settings.capabilities&&!Array.isArray(h.settings.capabilities)||(h.settings.capabilities={})}function g(e){n(),h.settings.roles[e]||(h.settings.roles[e]={hidden:[],order:[],submenu_order:{},overrides:{}});var s=h.settings.roles[e];return s.hidden&&Array.isArray(s.hidden)||(s.hidden=[]),s.order&&Array.isArray(s.order)||(s.order=[]),s.submenu_order&&!Array.isArray(s.submenu_order)||(s.submenu_order={}),s.overrides&&!Array.isArray(s.overrides)||(s.overrides={}),s}function f(e){n(),h.settings.users[e]||(h.settings.users[e]={});var s=h.settings.users[e];return s.hidden&&Array.isArray(s.hidden)||(s.hidden=[]),s.order&&Array.isArray(s.order)||(s.order=[]),s.overrides&&!Array.isArray(s.overrides)||(s.overrides={}),s.submenu_order&&!Array.isArray(s.submenu_order)||(s.submenu_order={}),s}function t(e){var s=e.id||"c";return"members-am-"+String(s).replace(/[^a-z0-9_-]/gi,"-").toLowerCase()}function r(){var n=b.extend(!0,[],membersAdminMenus.menuTree||[]),r={};return n.forEach(function(e){r[e.id]=!0}),(h.settings.custom_items||[]).forEach(function(e){if(e&&e.id){var s=t(e);if(r[s]){for(var a=0;ar&&(h.carouselPage=r))}}h.activeRoleSlugs=s.filter(function(e){return"administrator"!==e||a}),h.activeRoleSlugs.length||(h.activeRoleSlugs=["subscriber"])}function O(){var n=b("#members-am-role-chips").empty();d().forEach(function(e){if("administrator"!==e.slug||h.settings._meta.admin_editable){var s=-1!==h.activeRoleSlugs.indexOf(e.slug),a=b(' ').text(e.label).attr("data-role",e.slug).toggleClass("is-active",s);n.append(a)}})}function I(e,s,a,n){var r=s.id,i=w(e,r),t=!k(e,s.cap),o=g(e).overrides[r]||{},m=o.label||s.title||r,l=b('
').attr("data-id",r).toggleClass("is-hidden",i).toggleClass("is-no-cap",t).toggleClass("is-selected",h.selectedId===r).toggleClass("is-sub",!!a),c=b('
');if(!a){var d=o.icon||s.icon,u=S(d,o.icon_type||s.icon_type);if("fontawesome"===u&&d)c.append(b(' '));else if("svg"!==u&&"image"!==u&&"custom"!==u||!d){var p=d&&0===d.indexOf("dashicons-")?d:"dashicons-admin-generic";c.append(b(' '))}else c.append(b(" ").attr("src",d).css({width:"20px",height:"20px",display:"inline-block",verticalAlign:"middle",objectFit:"contain",filter:"none"}))}s.custom&&c.append(b('custom ')),o.label&&c.append(b('edit ')),c.append(b(' ').text(m)),t&&c.append(b(' Roles.\">🔒 no access ")),l.append(c),o.color_bg&&l.css("background-color",o.color_bg),o.color_text&&l.find(".members-am-item-label").css("color",o.color_text),o.color_icon&&(l.find(".dashicons").css("color",o.color_icon),l.find(".members-am-fa-icon i").css("color",o.color_icon),l.find("img").css("filter","none"));var f=b('
');f.append(b(' ').text("◉"),b(' ').text("↑"),b(' ').text("↓")),l.append(f),n.append(l)}function A(s,e,a,n){var r=n.overrides&&n.overrides[s.id]||{},i=r.label||s.title,t=function(e,s){var a=f(e);if(-1!==a.hidden.indexOf(s))return!0;var n=v(s);return!(!n||-1===a.hidden.indexOf(n))}(a,s.id),o=!function(e){if(!e||"read"===e)return 1;for(var s=h.previewUserRoles||[],a=0;a").addClass(m).attr("data-id",s.id),c=b('
');if(!e){var d=r.icon||s.icon,u=S(d,r.icon_type||s.icon_type);"fontawesome"===u&&d?c.append(b(' ')):"svg"!==u&&"image"!==u&&"custom"!==u||!d?d&&0===d.indexOf("dashicons-")?c.append(b(' ')):c.append(b(' ')):c.append(b(" ").attr("src",d).css({width:"20px",height:"20px",display:"inline-block",verticalAlign:"middle",objectFit:"contain",filter:"none"}))}s.custom&&c.append(b('custom ')),r.label&&c.append(b('edit ')),c.append(b(' ').text(i)),o&&c.append(b('🔒 no access ")),l.append(c),r.color_bg&&l.css("background-color",r.color_bg),r.color_text&&l.find(".members-am-item-label").css("color",r.color_text),r.color_icon&&(l.find(".dashicons").css("color",r.color_icon),l.find(".members-am-fa-icon i").css("color",r.color_icon));var p=b('
');return p.append(b(' ').text(t?"◯":"◉"),b(' ').text("↑"),b(' ').text("↓")),l.append(p),l.on("click",function(e){b(e.target).closest("button").length||(h.selectedId=s.id,L())}),l}function P(){var a=b("#members-am-columns"),n={};a.find(".members-am-column").each(function(){var e=b(this).data("role");if(e){var s=b(this).find(".members-am-sidebar-list");s.length&&(n[e]=s.scrollTop())}}),a.empty();var e,s=h.carouselPage*h.columnsPerPage;if(h.activeRoleSlugs.slice(s,s+h.columnsPerPage).forEach(function(e){var s=b('
');!function(n,e){e.empty();var s=b(''),a=(d().filter(function(e){return e.slug===n})[0]||{}).label||n;s.append(b('').text(a)),s.append(b(' ').append(b(' ').text("◀"),b(' ').text("▶"))),e.append(s);var r=b('');_(n).forEach(function(e){if(0!==e.indexOf("sep-")){var a=u(e);if(a)if(I(n,a,null,r),a.children&&a.children.length)x(n,a.id).forEach(function(e){var s=u(a.id+"::"+e);s&&I(n,s,a.id,r)})}else r.append(b('
').text("—"))}),e.append(r)}(e,s),a.append(s),n[e]&&s.find(".members-am-sidebar-list").scrollTop(n[e])}),h.previewUserId){var t=h.previewUserId,r=b('
'),i=b('');i.append(b(" ").text(h.previewUserLabel||"User #"+t)),i.append(b('× ').on("click",function(){h.previewUserId=null,h.previewUserLabel=null,h.previewUserRoles=[],L()})),r.append(i);var o=b(''),m=f(t);((e=f(t)).order&&e.order.length?e.order:p()).forEach(function(a){if(0!==a.indexOf("sep-")){var n=u(a);if(n){o.append(A(n,null,t,m));var e,s,r,i=n.children||[];(e=a,s=i,(r=f(t)).submenu_order&&r.submenu_order[e]?r.submenu_order[e]:s.map(function(e){return e.id})).forEach(function(e){var s=function(e,s){if(!e||!e.children)return null;for(var a=0;a ').text("——"))}),r.append(o),a.append(r)}if(h.syncScroll){var l=a.find(".members-am-sidebar-list"),c=!1;l.on("scroll",function(){if(!c){c=!0;var e=b(this).scrollTop();l.not(this).scrollTop(e),c=!1}})}!function(){var e=Math.max(1,Math.ceil(h.activeRoleSlugs.length/h.columnsPerPage)),s=(Math.min(h.carouselPage+1,e),h.carouselPage*h.columnsPerPage+1),a=Math.min((h.carouselPage+1)*h.columnsPerPage,h.activeRoleSlugs.length);b("#members-am-carousel-status").text(s+"–"+a+" "+membersAdminMenus.i18n.of+" "+h.activeRoleSlugs.length);for(var n=b("#members-am-carousel-dots").empty(),r=0;r ').toggleClass("is-active",r===h.carouselPage))}()}function R(){if(h.selectedId){b("#members-am-edit-panel").removeAttr("hidden");var e=u(h.selectedId),s=function(){if(!h.selectedId)return null;var e=l();if(e){var s=f(e);return s.overrides&&s.overrides[h.selectedId]||{}}var a=m()[0];return a?g(a).overrides[h.selectedId]||{}:null}()||{};b("#members-am-edit-title").text(e?e.title:h.selectedId),b("#members-am-edit-label").val(s.label||e&&e.title||""),b("#members-am-edit-url").attr("placeholder",e&&e.url||"").val(s.url||""),b("#members-am-icon-type").val(s.icon_type||"dashicon"),b("#members-am-icon-value").val(s.icon||e&&e.icon||"");var a=s.icon||e&&e.icon||"",n=S(a,s.icon_type||e&&e.icon_type||"");"image"!==n&&"custom"!==n&&"svg"!==n||!a?b("#members-am-icon-preview").hide():b("#members-am-icon-preview").show().attr("src",a),b("#members-am-color-bg").val(s.color_bg||""),b("#members-am-color-text").val(s.color_text||""),b("#members-am-color-icon").val(s.color_icon||""),b("#members-am-item-cap").val(h.settings.capabilities[h.selectedId]||"");var r=e&&e.custom;b("#members-am-remove-custom").toggle(!!r),b("#members-am-visibility-toggles").empty(),d().forEach(function(e){if("administrator"!==e.slug||h.settings._meta.admin_editable){var s=w(e.slug,h.selectedId),a=b(' ').append(b(' ').attr("data-role",e.slug).prop("checked",!s),b(" ").text(e.label));b("#members-am-visibility-toggles").append(a)}}),b(".members-am-color").each(function(){b(this).data("wpWpColorPicker")&&b(this).wpColorPicker("destroy")}),b(".members-am-color").wpColorPicker({change:function(e,s){setTimeout(function(){M()},20)},clear:function(){setTimeout(function(){M()},20)}}),E()}else b("#members-am-edit-panel").attr("hidden",!0)}function M(){if(h.selectedId){a("label",b("#members-am-edit-label").val()),a("url",b("#members-am-edit-url").val());var e=b("#members-am-icon-value").val();a("icon_type",S(e,b("#members-am-icon-type").val())),a("icon",e),a("color_bg",b("#members-am-color-bg").val()),a("color_text",b("#members-am-color-text").val()),a("color_icon",b("#members-am-color-icon").val()),h.settings.capabilities[h.selectedId]=b("#members-am-item-cap").val()||"",P()}}function E(){var a=h.iconTab,n=(b("#members-am-icon-search").val()||"").toLowerCase(),r=b("#members-am-icon-grid").empty();("dashicons"===a?e:s).forEach(function(e){if(!n||-1!==e.indexOf(n)){var s=b(' ');"dashicons"===a?s.append(b(' ')):s.append(b(' ')),s.on("click",function(){b("#members-am-icon-value").val(e),b("#members-am-icon-type").val("dashicons"===a?"dashicon":"fontawesome"),M()}),r.append(s)}})}function U(e,s){var a=h.activeRoleSlugs.indexOf(e);if(-1!==a){var n=a+s;if(!(n<0||n>=h.activeRoleSlugs.length)){var r=h.activeRoleSlugs[a];h.activeRoleSlugs[a]=h.activeRoleSlugs[n],h.activeRoleSlugs[n]=r,o(),L()}}}function C(e,s,a){var n=v(s);if(n){var r=g(e).submenu_order;r[n]||(r[n]=y(n));var i=r[n],t=s.split("::"),o=t[1]||t[0];if(-1===(l=i.indexOf(o)))return;if((c=l+a)<0||c>=i.length)return;var m=i[l];i[l]=i[c],i[c]=m}else{g(e).order&&g(e).order.length||(g(e).order=p());var l,c,d=g(e).order;if(-1===(l=d.indexOf(s)))return;if((c=l+a)<0||c>=d.length)return;var u=d[l];d[l]=d[c],d[c]=u}L()}function T(){var e=m();if(e.length){var n="sep-"+Date.now();e.forEach(function(e){g(e).order&&g(e).order.length||(g(e).order=p());var s=g(e).order,a=h.selectedId?s.indexOf(h.selectedId):s.length-1;a<0&&(a=s.length),s.splice(a+1,0,n)}),L()}}function N(){var e=b("#members-am-save").prop("disabled",!0);b.post(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_save",nonce:membersAdminMenus.nonce,settings:JSON.stringify(h.settings)}).done(function(e){e.success?(alert(membersAdminMenus.i18n.saved),location.reload()):alert(e.data&&e.data.message?e.data.message:"Error")}).always(function(){e.prop("disabled",!1)})}function J(e,s){confirm("role"===e&&s?"Reset all settings for this role? This cannot be undone.":"Reset ALL menu settings for every role? This cannot be undone.")&&b.post(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_reset",nonce:membersAdminMenus.nonce,scope:e||"all",role:s||""},function(e){e.success?location.reload():alert(e.data&&e.data.message?e.data.message:"Reset failed.")})}function F(e){b.getJSON(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_user_search",nonce:membersAdminMenus.nonce,term:e},function(e){e.success&&e.data&&e.data.length?function(e){b(".members-am-user-suggestions").remove();var s=b("#members-am-user-search").parent();s.css("position","relative");var a=b('
');e.forEach(function(e){a.append(b('
').text(e.label).data("userId",e.id).on("click",function(){!function(e,s,a){h.previewUserId=e,h.previewUserLabel=s||"User #"+e,h.previewUserRoles=a||[],n(),h.settings.users[e]||(h.settings.users[e]={});L()}(e.id,e.label,e.roles),b(".members-am-user-suggestions").remove(),b("#members-am-user-search").val("")}))}),s.append(a),setTimeout(function(){b(document).one("click",function(){b(".members-am-user-suggestions").remove()})},0)}(e.data):b(".members-am-user-suggestions").remove()})}function j(){var s;b(document).on("click","#members-am-role-chips .members-am-chip",function(){var e=b(this).data("role"),s=h.activeRoleSlugs.indexOf(e);-1===s?h.activeRoleSlugs.push(e):1=r.length||(r.splice(o,1),r.splice(m,0,s))}}(s,a,b(this).closest(".members-am-item").hasClass("is-sub")?v(a):null,n?-1:1),P()}}),b("#members-am-save").on("click",N),b("#members-am-reset").on("click",function(e){e.stopPropagation(),b(".members-am-reset-dropdown").remove();var s=b(this),a=h.activeRoleSlugs||[],n=a.length?a[0]:"",r="";n&&(membersAdminMenus.roles||[]).forEach(function(e){e.slug===n&&(r=e.label)});var i=b('
');if(i.append(b('
').text("Reset Settings")),n&&r){var t=b(' ');t.append(b(' ')),t.append(b(' ').append(b(" ").text("Reset "+r),b(" ").text("Clear all menu settings for this role only"))),t.on("click",function(){b(".members-am-reset-dropdown").remove(),J("role",n)}),i.append(t)}var o=b(' ');o.append(b(' ')),o.append(b(' ').append(b(" ").text("Reset all roles"),b(" ").text("Clear all menu settings for every role"))),o.on("click",function(){b(".members-am-reset-dropdown").remove(),J("all")}),i.append(o),s.parent().css("position","relative"),i.insertAfter(s),b(document).one("click",function(){b(".members-am-reset-dropdown").remove()})}),b("#members-am-export").on("click",function(e){e.preventDefault(),window.location.href=membersAdminMenus.exportUrl}),b("#members-am-import").on("click",function(){b("#members-am-import-file").trigger("click")}),b("#members-am-import-file").on("change",function(){var e,s,a=this.files&&this.files[0];a&&(e=a,(s=new FileReader).onload=function(){try{var e=JSON.parse(s.result);b.post(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_import",nonce:membersAdminMenus.nonce,settings:JSON.stringify(e)}).done(function(e){e.success?location.reload():alert(e.data&&e.data.message?e.data.message:"Error")})}catch(e){alert("Invalid JSON")}},s.readAsText(e))}),b("#members-am-copy-apply").on("click",function(){var a=b("#members-am-copy-from").val(),s=b("#members-am-copy-to").val();if(a&&s)if(a!==s){var n="",r="";if(d().forEach(function(e){e.slug===a&&(n=e.label),e.slug===s&&(r=e.label)}),confirm('Copy menu settings from "'+n+'" to "'+r+'"?\nThis will overwrite "'+r+"\" menu configuration.\n\nNote: This copies menu order, hidden items, labels, icons, and colors.\nIt does NOT change the role's capabilities (items marked with a lock icon).")){var e=g(a),i={hidden:e.hidden?e.hidden.slice():[],order:[],submenu_order:{},overrides:{}},t=_(a);i.order=t.slice(),h.tree.forEach(function(e){if(e.children&&e.children.length){var s=x(a,e.id);s&&s.length&&(i.submenu_order[e.id]=s.slice())}}),e.overrides&&"object"==typeof e.overrides&&(i.overrides=JSON.parse(JSON.stringify(e.overrides))),h.settings.roles[s]=i,-1===h.activeRoleSlugs.indexOf(s)&&(h.activeRoleSlugs.push(s),o(),O()),L(),N()}}else alert("Source and target roles must be different.")}),b("#members-am-admin-editable").on("change",function(){var e=!0;b(this).is(":checked")&&(e=window.confirm(membersAdminMenus.i18n.adminEditableWarn)),e?(h.settings._meta.admin_editable=b(this).is(":checked"),c(),O(),o(),L()):b(this).prop("checked",!1)}),b("#members-am-sync-scroll").prop("checked",!1!==h.syncScroll),b("#members-am-sync-scroll").on("change",function(){h.syncScroll=b(this).is(":checked");try{localStorage.setItem("members_am_sync_scroll",h.syncScroll?"1":"0")}catch(e){}P()}),b("#members-am-add-item").on("click",function(){var e="c"+Date.now();h.settings.custom_items.push({id:e,label:"Custom link",url:window.location.origin+"/wp-admin/",icon_type:"dashicon",icon:"dashicons-admin-generic",parent:"",position:99,cap:"read"}),h.tree=r(),h.selectedId=t({id:e}),L(),R()}),b("#members-am-remove-custom").on("click",function(){var s=u(h.selectedId);s&&s.customId&&(h.settings.custom_items=(h.settings.custom_items||[]).filter(function(e){return e.id!==s.customId}),h.selectedId=null,h.tree=r(),L(),b("#members-am-edit-panel").attr("hidden",!0))}),b("#members-am-edit-close").on("click",function(){h.selectedId=null,b("#members-am-edit-panel").attr("hidden",!0),L()}),b("#members-am-edit-target-role").on("change",R),b("#members-am-edit-label, #members-am-edit-url, #members-am-icon-value").on("input",function(){M()}),b("#members-am-item-cap").on("input",function(){M()}),b(".members-am-icon-tabs .button").on("click",function(){b(".members-am-icon-tabs .button").removeClass("is-active"),b(this).addClass("is-active"),h.iconTab="fontawesome"===b(this).data("tab")?"fontawesome":"upload"===b(this).data("tab")?"upload":"dashicons",E()}),b("#members-am-icon-search").on("input",E),b("#members-am-media-upload").on("click",function(e){e.preventDefault(),h.mediaFrame||(h.mediaFrame=wp.media({title:"Choose menu icon",button:{text:"Use as icon"},multiple:!1,library:{type:"image"}}),h.mediaFrame.on("select",function(){var e=h.mediaFrame.state().get("selection").first().toJSON(),s=e.url||"";e.sizes&&(e.sizes.thumbnail?s=e.sizes.thumbnail.url:e.sizes.medium&&(s=e.sizes.medium.url)),b("#members-am-icon-type").val("custom"),b("#members-am-icon-value").val(s),M()})),h.mediaFrame.open()}),b(document).on("change",".members-am-vis-cb",function(){var e=b(this).data("role");if(b(this).is(":checked")){var s=g(e).hidden,a=s.indexOf(h.selectedId);-1!==a&&s.splice(a,1)}else-1===g(e).hidden.indexOf(h.selectedId)&&g(e).hidden.push(h.selectedId);L()}),b("#members-am-add-sep").on("click",T),b("#members-am-promote").on("click",function(){a("parent",""),M()}),b("#members-am-demote").on("click",function(){var e=window.prompt("Parent slug (e.g. edit.php)","edit.php");e&&(a("parent",e),M())}),b("#members-am-user-search").on("input",function(){var e=b(this).val();clearTimeout(s),s=setTimeout(function(){1 ").val("__all__").text("All roles")),h.activeRoleSlugs.forEach(function(s){var e=(d().filter(function(e){return e.slug===s})[0]||{}).label||s;a.append(b(" ").val(s).text(e))}),h.previewUserId&&a.append(b(" ").val("__user__"+h.previewUserId).text(h.previewUserLabel||"User #"+h.previewUserId)),h.selectedId&&R()}b(function(){var s,a,e;n(),h.tree=r(),c(),b("#members-am-admin-editable").prop("checked",!!h.settings._meta.admin_editable),s=b("#members-am-copy-from").empty(),a=b("#members-am-copy-to").empty(),(e=d()).forEach(function(e){s.append(b(" ").val(e.slug).text(e.label)),a.append(b(" ").val(e.slug).text(e.label))}),1r&&(h.carouselPage=r))}}h.activeRoleSlugs=s.filter(function(e){return"administrator"!==e||a}),h.activeRoleSlugs.length||(h.activeRoleSlugs=["subscriber"])}function O(){var n=b("#members-am-role-chips").empty();d().forEach(function(e){if("administrator"!==e.slug||h.settings._meta.admin_editable){var s=-1!==h.activeRoleSlugs.indexOf(e.slug),a=b(' ').text(e.label).attr("data-role",e.slug).toggleClass("is-active",s);n.append(a)}})}function I(e,s,a,n){var r=s.id,t=w(e,r),i=!k(e,s.cap),o=v(e).overrides[r]||{},l=o.label||s.title||r,m=b('
').attr("data-id",r).toggleClass("is-hidden",t).toggleClass("is-no-cap",i).toggleClass("is-selected",h.selectedId===r).toggleClass("is-sub",!!a),c=b('
');if(!a){var d=o.icon||s.icon,u=S(d,o.icon_type||s.icon_type);if("fontawesome"===u&&d)c.append(b(' '));else if("svg"!==u&&"image"!==u&&"custom"!==u||!d){var p=d&&0===d.indexOf("dashicons-")?d:"dashicons-admin-generic";c.append(b(' '))}else c.append(b(" ").attr("src",d).css({width:"20px",height:"20px",display:"inline-block",verticalAlign:"middle",objectFit:"contain",filter:"none"}))}s.custom&&c.append(b('custom ')),o.label&&c.append(b('edit ')),c.append(b(' ').text(l)),i&&c.append(b(' Roles.\">🔒 no access ")),m.append(c),o.color_bg&&m.css("background-color",o.color_bg),o.color_text&&m.find(".members-am-item-label").css("color",o.color_text),o.color_icon&&(m.find(".dashicons").css("color",o.color_icon),m.find(".members-am-fa-icon i").css("color",o.color_icon),m.find("img").css("filter","none"));var f=b('
');f.append(b(' ').text("◉"),b(' ').text("↑"),b(' ').text("↓")),m.append(f),n.append(m)}function A(s,e,a,n){var r=n.overrides&&n.overrides[s.id]||{},t=r.label||s.title,i=function(e,s){var a=f(e);if(-1!==a.hidden.indexOf(s))return!0;var n=g(s);return!(!n||-1===a.hidden.indexOf(n))}(a,s.id),o=!function(e){if(!e||"read"===e)return 1;for(var s=h.previewUserRoles||[],a=0;a").addClass(l).attr("data-id",s.id),c=b('
');if(!e){var d=r.icon||s.icon,u=S(d,r.icon_type||s.icon_type);"fontawesome"===u&&d?c.append(b(' ')):"svg"!==u&&"image"!==u&&"custom"!==u||!d?d&&0===d.indexOf("dashicons-")?c.append(b(' ')):c.append(b(' ')):c.append(b(" ").attr("src",d).css({width:"20px",height:"20px",display:"inline-block",verticalAlign:"middle",objectFit:"contain",filter:"none"}))}s.custom&&c.append(b('custom ')),r.label&&c.append(b('edit ')),c.append(b(' ').text(t)),o&&c.append(b('🔒 no access ")),m.append(c),r.color_bg&&m.css("background-color",r.color_bg),r.color_text&&m.find(".members-am-item-label").css("color",r.color_text),r.color_icon&&(m.find(".dashicons").css("color",r.color_icon),m.find(".members-am-fa-icon i").css("color",r.color_icon));var p=b('
');return p.append(b(' ').text(i?"◯":"◉"),b(' ').text("↑"),b(' ').text("↓")),m.append(p),m.on("click",function(e){b(e.target).closest("button").length||(h.selectedId=s.id,j())}),m}function P(){var a=b("#members-am-columns"),n={};a.find(".members-am-column").each(function(){var e=b(this).data("role");if(e){var s=b(this).find(".members-am-sidebar-list");s.length&&(n[e]=s.scrollTop())}}),a.empty();var e,s=h.carouselPage*h.columnsPerPage;if(h.activeRoleSlugs.slice(s,s+h.columnsPerPage).forEach(function(e){var s=b('
');!function(n,e){e.empty();var s=b(''),a=(d().filter(function(e){return e.slug===n})[0]||{}).label||n;s.append(b('').text(a)),s.append(b(' ').append(b(' ').text("◀"),b(' ').text("▶"))),e.append(s);var r=b('');_(n).forEach(function(e){if(0!==e.indexOf("sep-")){var a=u(e);if(a)if(I(n,a,null,r),a.children&&a.children.length)x(n,a.id).forEach(function(e){var s=u(a.id+"::"+e);s&&I(n,s,a.id,r)})}else r.append(b('
').text("—"))}),e.append(r)}(e,s),a.append(s),n[e]&&s.find(".members-am-sidebar-list").scrollTop(n[e])}),h.previewUserId){var i=h.previewUserId,r=b('
'),t=b('');t.append(b(" ").text(h.previewUserLabel||"User #"+i)),t.append(b('× ').on("click",function(){h.previewUserId=null,h.previewUserLabel=null,h.previewUserRoles=[],j()})),r.append(t);var o=b(''),l=f(i);((e=f(i)).order&&e.order.length?e.order:p()).forEach(function(a){if(0!==a.indexOf("sep-")){var n=u(a);if(n){o.append(A(n,null,i,l));var e,s,r,t=n.children||[];(e=a,s=t,(r=f(i)).submenu_order&&r.submenu_order[e]?r.submenu_order[e]:s.map(function(e){return e.id})).forEach(function(e){var s=function(e,s){if(!e||!e.children)return null;for(var a=0;a ').text("——"))}),r.append(o),a.append(r)}if(h.syncScroll){var m=a.find(".members-am-sidebar-list"),c=!1;m.on("scroll",function(){if(!c){c=!0;var e=b(this).scrollTop();m.not(this).scrollTop(e),c=!1}})}!function(){var e=Math.max(1,Math.ceil(h.activeRoleSlugs.length/h.columnsPerPage)),s=(Math.min(h.carouselPage+1,e),h.carouselPage*h.columnsPerPage+1),a=Math.min((h.carouselPage+1)*h.columnsPerPage,h.activeRoleSlugs.length);b("#members-am-carousel-status").text(s+"–"+a+" "+membersAdminMenus.i18n.of+" "+h.activeRoleSlugs.length);for(var n=b("#members-am-carousel-dots").empty(),r=0;r ').toggleClass("is-active",r===h.carouselPage))}()}function R(){if(h.selectedId){b("#members-am-edit-panel").removeAttr("hidden");var e=u(h.selectedId),s=function(){if(!h.selectedId)return null;var e=m();if(e){var s=f(e);return s.overrides&&s.overrides[h.selectedId]||{}}var a=l()[0];return a?v(a).overrides[h.selectedId]||{}:null}()||{};b("#members-am-edit-title").text(e?e.title:h.selectedId),b("#members-am-edit-label").val(s.label||e&&e.title||""),b("#members-am-edit-url").attr("placeholder","Override URL (leave empty for default)").val(s.url||e&&e.url||""),b("#members-am-edit-url").data("default-url",e&&e.url||""),b("#members-am-icon-type").val(s.icon_type||"dashicon"),b("#members-am-icon-value").val(s.icon||e&&e.icon||"");var a=s.icon||e&&e.icon||"",n=S(a,s.icon_type||e&&e.icon_type||"");"image"!==n&&"custom"!==n&&"svg"!==n||!a?b("#members-am-icon-preview").hide():b("#members-am-icon-preview").show().attr("src",a),b("#members-am-color-bg").val(s.color_bg||""),b("#members-am-color-text").val(s.color_text||""),b("#members-am-color-icon").val(s.color_icon||""),b("#members-am-item-cap").attr("placeholder",e&&e.cap?e.cap+" (default)":"").val(h.settings.capabilities[h.selectedId]||"");var r=e&&e.custom;b("#members-am-remove-custom").toggle(!!r),b("#members-am-visibility-toggles").empty();var t=e&&e.cap||"read";d().forEach(function(e){if("administrator"!==e.slug||h.settings._meta.admin_editable){var s=w(e.slug,h.selectedId),a=k(e.slug,t),n=b(' ').attr("data-role",e.slug).prop("checked",!s&&a);a||n.prop("disabled",!0);var r=b(' ').append(n,b(" ").text(e.label));a||(r.append(b(" ").text(" — no capability").css({color:"#999",fontStyle:"italic",marginLeft:"4px"})),r.css("opacity","0.5")),b("#members-am-visibility-toggles").append(r)}}),b(".members-am-color").each(function(){b(this).data("wpWpColorPicker")&&b(this).wpColorPicker("destroy")}),b(".members-am-color").wpColorPicker({change:function(e,s){setTimeout(function(){M()},20)},clear:function(){setTimeout(function(){M()},20)}}),U()}else b("#members-am-edit-panel").attr("hidden",!0)}function M(){if(h.selectedId){a("label",b("#members-am-edit-label").val());var e=b("#members-am-edit-url").val();a("url",e===(b("#members-am-edit-url").data("default-url")||"")?"":e);var s=b("#members-am-icon-value").val();a("icon_type",S(s,b("#members-am-icon-type").val())),a("icon",s),a("color_bg",b("#members-am-color-bg").val()),a("color_text",b("#members-am-color-text").val()),a("color_icon",b("#members-am-color-icon").val()),h.settings.capabilities[h.selectedId]=b("#members-am-item-cap").val()||"",P()}}function U(){var a=h.iconTab,n=(b("#members-am-icon-search").val()||"").toLowerCase(),r=b("#members-am-icon-grid").empty();("dashicons"===a?e:s).forEach(function(e){if(!n||-1!==e.indexOf(n)){var s=b(' ');"dashicons"===a?s.append(b(' ')):s.append(b(' ')),s.on("click",function(){b("#members-am-icon-value").val(e),b("#members-am-icon-type").val("dashicons"===a?"dashicon":"fontawesome"),M()}),r.append(s)}})}function E(e,s){var a=h.activeRoleSlugs.indexOf(e);if(-1!==a){var n=a+s;if(!(n<0||n>=h.activeRoleSlugs.length)){var r=h.activeRoleSlugs[a];h.activeRoleSlugs[a]=h.activeRoleSlugs[n],h.activeRoleSlugs[n]=r,o(),j()}}}function C(e,s,a){var n=g(s);if(n){var r=v(e).submenu_order;r[n]||(r[n]=y(n));var t=r[n],i=s.split("::"),o=i[1]||i[0];if(-1===(m=t.indexOf(o)))return;if((c=m+a)<0||c>=t.length)return;var l=t[m];t[m]=t[c],t[c]=l}else{v(e).order&&v(e).order.length||(v(e).order=p());var m,c,d=v(e).order;if(-1===(m=d.indexOf(s)))return;if((c=m+a)<0||c>=d.length)return;var u=d[m];d[m]=d[c],d[c]=u}j()}function T(){var e=l();if(e.length){var n="sep-"+Date.now();e.forEach(function(e){v(e).order&&v(e).order.length||(v(e).order=p());var s=v(e).order,a=h.selectedId?s.indexOf(h.selectedId):s.length-1;a<0&&(a=s.length),s.splice(a+1,0,n)}),j()}}function N(){var e=b("#members-am-save").prop("disabled",!0);b.post(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_save",nonce:membersAdminMenus.nonce,settings:JSON.stringify(h.settings)}).done(function(e){e.success?(alert(membersAdminMenus.i18n.saved),location.reload()):alert(e.data&&e.data.message?e.data.message:"Error")}).always(function(){e.prop("disabled",!1)})}function J(e,s){confirm("role"===e&&s?"Reset all settings for this role? This cannot be undone.":"Reset ALL menu settings for every role? This cannot be undone.")&&b.post(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_reset",nonce:membersAdminMenus.nonce,scope:e||"all",role:s||""},function(e){e.success?location.reload():alert(e.data&&e.data.message?e.data.message:"Reset failed.")})}function L(e){b.getJSON(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_user_search",nonce:membersAdminMenus.nonce,term:e},function(e){e.success&&e.data&&e.data.length?function(e){b(".members-am-user-suggestions").remove();var s=b("#members-am-user-search").parent();s.css("position","relative");var a=b('
');e.forEach(function(e){a.append(b('
').text(e.label).data("userId",e.id).on("click",function(){!function(e,s,a){h.previewUserId=e,h.previewUserLabel=s||"User #"+e,h.previewUserRoles=a||[],n(),h.settings.users[e]||(h.settings.users[e]={});j()}(e.id,e.label,e.roles),b(".members-am-user-suggestions").remove(),b("#members-am-user-search").val("")}))}),s.append(a),setTimeout(function(){b(document).one("click",function(){b(".members-am-user-suggestions").remove()})},0)}(e.data):b(".members-am-user-suggestions").remove()})}function F(){var s;b(document).on("click","#members-am-role-chips .members-am-chip",function(){var e=b(this).data("role"),s=h.activeRoleSlugs.indexOf(e);-1===s?h.activeRoleSlugs.push(e):1=r.length||(r.splice(o,1),r.splice(l,0,s))}}(s,a,b(this).closest(".members-am-item").hasClass("is-sub")?g(a):null,n?-1:1),P()}}),b("#members-am-save").on("click",N),b("#members-am-reset").on("click",function(e){e.stopPropagation(),b(".members-am-reset-dropdown").remove();var s=b(this),a=h.activeRoleSlugs||[],n=a.length?a[0]:"",r="";n&&(membersAdminMenus.roles||[]).forEach(function(e){e.slug===n&&(r=e.label)});var t=b('
');if(t.append(b('
').text("Reset Settings")),n&&r){var i=b(' ');i.append(b(' ')),i.append(b(' ').append(b(" ").text("Reset "+r),b(" ").text("Clear all menu settings for this role only"))),i.on("click",function(){b(".members-am-reset-dropdown").remove(),J("role",n)}),t.append(i)}var o=b(' ');o.append(b(' ')),o.append(b(' ').append(b(" ").text("Reset all roles"),b(" ").text("Clear all menu settings for every role"))),o.on("click",function(){b(".members-am-reset-dropdown").remove(),J("all")}),t.append(o),s.parent().css("position","relative"),t.insertAfter(s),b(document).one("click",function(){b(".members-am-reset-dropdown").remove()})}),b("#members-am-export").on("click",function(e){e.preventDefault(),window.location.href=membersAdminMenus.exportUrl}),b("#members-am-import").on("click",function(){b("#members-am-import-file").trigger("click")}),b("#members-am-import-file").on("change",function(){var e,s,a=this.files&&this.files[0];a&&(e=a,(s=new FileReader).onload=function(){try{var e=JSON.parse(s.result);b.post(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_import",nonce:membersAdminMenus.nonce,settings:JSON.stringify(e)}).done(function(e){e.success?location.reload():alert(e.data&&e.data.message?e.data.message:"Error")})}catch(e){alert("Invalid JSON")}},s.readAsText(e))}),b("#members-am-copy-apply").on("click",function(){var a=b("#members-am-copy-from").val(),s=b("#members-am-copy-to").val();if(a&&s)if(a!==s){var n="",r="";if(d().forEach(function(e){e.slug===a&&(n=e.label),e.slug===s&&(r=e.label)}),confirm('Copy menu settings from "'+n+'" to "'+r+'"?\nThis will overwrite "'+r+"\" menu configuration.\n\nNote: This copies menu order, hidden items, labels, icons, and colors.\nIt does NOT change the role's capabilities (items marked with a lock icon).")){var e=v(a),t={hidden:e.hidden?e.hidden.slice():[],order:[],submenu_order:{},overrides:{}},i=_(a);t.order=i.slice(),h.tree.forEach(function(e){if(e.children&&e.children.length){var s=x(a,e.id);s&&s.length&&(t.submenu_order[e.id]=s.slice())}}),e.overrides&&"object"==typeof e.overrides&&(t.overrides=JSON.parse(JSON.stringify(e.overrides))),h.settings.roles[s]=t,-1===h.activeRoleSlugs.indexOf(s)&&(h.activeRoleSlugs.push(s),o(),O()),j(),N()}}else alert("Source and target roles must be different.")}),b("#members-am-admin-editable").on("change",function(){var e=!0;b(this).is(":checked")&&(e=window.confirm(membersAdminMenus.i18n.adminEditableWarn)),e?(h.settings._meta.admin_editable=b(this).is(":checked"),c(),O(),o(),j()):b(this).prop("checked",!1)}),b("#members-am-sync-scroll").prop("checked",!1!==h.syncScroll),b("#members-am-sync-scroll").on("change",function(){h.syncScroll=b(this).is(":checked");try{localStorage.setItem("members_am_sync_scroll",h.syncScroll?"1":"0")}catch(e){}P()}),b("#members-am-add-item").on("click",function(){var e="c"+Date.now();h.settings.custom_items.push({id:e,label:"Custom link",url:window.location.origin+"/wp-admin/",icon_type:"dashicon",icon:"dashicons-admin-generic",parent:"",position:99,cap:"read"}),h.tree=r(),h.selectedId=i({id:e}),j(),R()}),b("#members-am-remove-custom").on("click",function(){var s=u(h.selectedId);s&&s.customId&&(h.settings.custom_items=(h.settings.custom_items||[]).filter(function(e){return e.id!==s.customId}),h.selectedId=null,h.tree=r(),j(),b("#members-am-edit-panel").attr("hidden",!0))}),b("#members-am-edit-close").on("click",function(){h.selectedId=null,b("#members-am-edit-panel").attr("hidden",!0),j()}),b("#members-am-edit-target-role").on("change",R),b("#members-am-edit-label, #members-am-edit-url, #members-am-icon-value").on("input",function(){M()}),b("#members-am-item-cap").on("input",function(){M()}),b(".members-am-icon-tabs .button").on("click",function(){b(".members-am-icon-tabs .button").removeClass("is-active"),b(this).addClass("is-active"),h.iconTab="fontawesome"===b(this).data("tab")?"fontawesome":"upload"===b(this).data("tab")?"upload":"dashicons",U()}),b("#members-am-icon-search").on("input",U),b("#members-am-media-upload").on("click",function(e){e.preventDefault(),h.mediaFrame||(h.mediaFrame=wp.media({title:"Choose menu icon",button:{text:"Use as icon"},multiple:!1,library:{type:"image"}}),h.mediaFrame.on("select",function(){var e=h.mediaFrame.state().get("selection").first().toJSON(),s=e.url||"";e.sizes&&(e.sizes.thumbnail?s=e.sizes.thumbnail.url:e.sizes.medium&&(s=e.sizes.medium.url)),b("#members-am-icon-type").val("custom"),b("#members-am-icon-value").val(s),M()})),h.mediaFrame.open()}),b(document).on("change",".members-am-vis-cb",function(){var e=b(this).data("role");if(b(this).is(":checked")){var s=v(e).hidden,a=s.indexOf(h.selectedId);-1!==a&&s.splice(a,1)}else-1===v(e).hidden.indexOf(h.selectedId)&&v(e).hidden.push(h.selectedId);j()}),b("#members-am-add-sep").on("click",T),b("#members-am-promote").on("click",function(){a("parent",""),M()}),b("#members-am-demote").on("click",function(){var e=window.prompt("Parent slug (e.g. edit.php)","edit.php");e&&(a("parent",e),M())}),b("#members-am-user-search").on("input",function(){var e=b(this).val();clearTimeout(s),s=setTimeout(function(){1 ").val("__all__").text("All roles")),h.activeRoleSlugs.forEach(function(s){var e=(d().filter(function(e){return e.slug===s})[0]||{}).label||s;a.append(b(" ").val(s).text(e))}),h.previewUserId&&a.append(b(" ").val("__user__"+h.previewUserId).text(h.previewUserLabel||"User #"+h.previewUserId)),h.selectedId&&R()}b(function(){var s,a,e;n(),h.tree=r(),c(),b("#members-am-admin-editable").prop("checked",!!h.settings._meta.admin_editable),s=b("#members-am-copy-from").empty(),a=b("#members-am-copy-to").empty(),(e=d()).forEach(function(e){s.append(b(" ").val(e.slug).text(e.label)),a.append(b(" ").val(e.slug).text(e.label))}),1
Date: Wed, 8 Apr 2026 14:33:26 +0200
Subject: [PATCH 07/73] fix(admin): update parent override handling in menu
configuration
---
addons/members-admin-menus/app/functions-admin.php | 8 ++++++--
addons/members-admin-menus/app/functions.php | 4 ++--
js/admin-menus.js | 2 +-
js/admin-menus.min.js | 2 +-
4 files changed, 10 insertions(+), 6 deletions(-)
diff --git a/addons/members-admin-menus/app/functions-admin.php b/addons/members-admin-menus/app/functions-admin.php
index 87be329..42cc1e1 100644
--- a/addons/members-admin-menus/app/functions-admin.php
+++ b/addons/members-admin-menus/app/functions-admin.php
@@ -571,7 +571,7 @@ function sanitize_role_config( $cfg ) {
if ( ! $s || ! is_array( $ov ) ) {
continue;
}
- $out['overrides'][ $s ] = array(
+ $entry = array(
'label' => isset( $ov['label'] ) ? sanitize_text_field( $ov['label'] ) : '',
'icon_type' => isset( $ov['icon_type'] ) ? sanitize_key( $ov['icon_type'] ) : '',
'icon' => isset( $ov['icon'] ) ? sanitize_text_field( $ov['icon'] ) : '',
@@ -579,8 +579,12 @@ function sanitize_role_config( $cfg ) {
'color_bg' => isset( $ov['color_bg'] ) ? sanitize_hex_color( $ov['color_bg'] ) : '',
'color_text' => isset( $ov['color_text'] ) ? sanitize_hex_color( $ov['color_text'] ) : '',
'color_icon' => isset( $ov['color_icon'] ) ? sanitize_hex_color( $ov['color_icon'] ) : '',
- 'parent' => isset( $ov['parent'] ) ? sanitize_text_field( $ov['parent'] ) : '',
);
+ // Only include 'parent' when explicitly set — prevents accidental promotion.
+ if ( isset( $ov['parent'] ) && '' !== $ov['parent'] ) {
+ $entry['parent'] = sanitize_text_field( $ov['parent'] );
+ }
+ $out['overrides'][ $s ] = $entry;
}
}
return $out;
diff --git a/addons/members-admin-menus/app/functions.php b/addons/members-admin-menus/app/functions.php
index 16afaa2..738d61f 100644
--- a/addons/members-admin-menus/app/functions.php
+++ b/addons/members-admin-menus/app/functions.php
@@ -460,7 +460,7 @@ function output_img_icon_styles() {
/**
* Move items between menu levels based on 'parent' override field.
*
- * - If a submenu item has parent = '' (empty string), promote it to top-level.
+ * - If a submenu item has parent = '__promote__', promote it to top-level.
* - If a top-level item has a parent slug set, demote it to a submenu of that parent.
*
* @param array $overrides Overrides keyed by canonical slug.
@@ -476,7 +476,7 @@ function apply_level_moves( $overrides ) {
$target_parent = $o['parent'];
$is_submenu = ( false !== strpos( $slug, '::' ) );
- if ( $is_submenu && '' === $target_parent ) {
+ if ( $is_submenu && '__promote__' === $target_parent ) {
$parts = explode( '::', $slug, 2 );
if ( count( $parts ) !== 2 ) {
continue;
diff --git a/js/admin-menus.js b/js/admin-menus.js
index 78f4373..e52512d 100644
--- a/js/admin-menus.js
+++ b/js/admin-menus.js
@@ -1485,7 +1485,7 @@
$('#members-am-add-sep').on('click', addSeparator);
$('#members-am-promote').on('click', function () {
- setOverrideField('parent', '');
+ setOverrideField('parent', '__promote__');
pushOverridesFromForm();
});
diff --git a/js/admin-menus.min.js b/js/admin-menus.min.js
index a90da08..26beb4a 100644
--- a/js/admin-menus.min.js
+++ b/js/admin-menus.min.js
@@ -1 +1 @@
-!function(b){"use strict";var h={settings:b.extend(!0,{},membersAdminMenus.settings),tree:[],activeRoleSlugs:[],carouselPage:0,columnsPerPage:3,selectedId:null,iconTab:"dashicons",previewUserId:null,previewUserRoles:[],userSuggestions:[],mediaFrame:null,syncScroll:function(){try{return"0"!==localStorage.getItem("members_am_sync_scroll")}catch(e){return!0}}()},e=["dashicons-menu","dashicons-admin-dashboard","dashicons-admin-post","dashicons-admin-page","dashicons-admin-media","dashicons-admin-comments","dashicons-admin-appearance","dashicons-admin-plugins","dashicons-admin-users","dashicons-admin-tools","dashicons-admin-settings","dashicons-admin-generic","dashicons-edit","dashicons-plus","dashicons-chart-bar","dashicons-cart","dashicons-products","dashicons-email","dashicons-groups","dashicons-heart","dashicons-star-filled","dashicons-smiley","dashicons-info","dashicons-lock","dashicons-unlock","dashicons-visibility","dashicons-hidden","dashicons-arrow-up","dashicons-arrow-down","dashicons-admin-network","dashicons-performance"],s=["fa-solid fa-house","fa-solid fa-user","fa-solid fa-gear","fa-solid fa-file","fa-solid fa-image","fa-solid fa-cart-shopping","fa-solid fa-chart-line","fa-solid fa-envelope","fa-solid fa-book","fa-solid fa-link","fa-solid fa-bell","fa-solid fa-star","fa-solid fa-heart","fa-solid fa-lock","fa-solid fa-unlock","fa-solid fa-pen","fa-solid fa-trash","fa-solid fa-plus","fa-solid fa-minus"],t="members_am_view_state";function o(){try{localStorage.setItem(t,JSON.stringify({activeRoleSlugs:h.activeRoleSlugs,carouselPage:h.carouselPage}))}catch(e){}}function d(){return membersAdminMenus.roles||[]}function n(){h.settings._meta&&!Array.isArray(h.settings._meta)||(h.settings._meta={version:3,admin_editable:!1}),h.settings.roles&&!Array.isArray(h.settings.roles)||(h.settings.roles={}),h.settings.users&&!Array.isArray(h.settings.users)||(h.settings.users={}),Array.isArray(h.settings.custom_items)||(h.settings.custom_items=[]),h.settings.capabilities&&!Array.isArray(h.settings.capabilities)||(h.settings.capabilities={})}function v(e){n(),h.settings.roles[e]||(h.settings.roles[e]={hidden:[],order:[],submenu_order:{},overrides:{}});var s=h.settings.roles[e];return s.hidden&&Array.isArray(s.hidden)||(s.hidden=[]),s.order&&Array.isArray(s.order)||(s.order=[]),s.submenu_order&&!Array.isArray(s.submenu_order)||(s.submenu_order={}),s.overrides&&!Array.isArray(s.overrides)||(s.overrides={}),s}function f(e){n(),h.settings.users[e]||(h.settings.users[e]={});var s=h.settings.users[e];return s.hidden&&Array.isArray(s.hidden)||(s.hidden=[]),s.order&&Array.isArray(s.order)||(s.order=[]),s.overrides&&!Array.isArray(s.overrides)||(s.overrides={}),s.submenu_order&&!Array.isArray(s.submenu_order)||(s.submenu_order={}),s}function i(e){var s=e.id||"c";return"members-am-"+String(s).replace(/[^a-z0-9_-]/gi,"-").toLowerCase()}function r(){var n=b.extend(!0,[],membersAdminMenus.menuTree||[]),r={};return n.forEach(function(e){r[e.id]=!0}),(h.settings.custom_items||[]).forEach(function(e){if(e&&e.id){var s=i(e);if(r[s]){for(var a=0;ar&&(h.carouselPage=r))}}h.activeRoleSlugs=s.filter(function(e){return"administrator"!==e||a}),h.activeRoleSlugs.length||(h.activeRoleSlugs=["subscriber"])}function O(){var n=b("#members-am-role-chips").empty();d().forEach(function(e){if("administrator"!==e.slug||h.settings._meta.admin_editable){var s=-1!==h.activeRoleSlugs.indexOf(e.slug),a=b(' ').text(e.label).attr("data-role",e.slug).toggleClass("is-active",s);n.append(a)}})}function I(e,s,a,n){var r=s.id,t=w(e,r),i=!k(e,s.cap),o=v(e).overrides[r]||{},l=o.label||s.title||r,m=b('
').attr("data-id",r).toggleClass("is-hidden",t).toggleClass("is-no-cap",i).toggleClass("is-selected",h.selectedId===r).toggleClass("is-sub",!!a),c=b('
');if(!a){var d=o.icon||s.icon,u=S(d,o.icon_type||s.icon_type);if("fontawesome"===u&&d)c.append(b(' '));else if("svg"!==u&&"image"!==u&&"custom"!==u||!d){var p=d&&0===d.indexOf("dashicons-")?d:"dashicons-admin-generic";c.append(b(' '))}else c.append(b(" ").attr("src",d).css({width:"20px",height:"20px",display:"inline-block",verticalAlign:"middle",objectFit:"contain",filter:"none"}))}s.custom&&c.append(b('custom ')),o.label&&c.append(b('edit ')),c.append(b(' ').text(l)),i&&c.append(b(' Roles.\">🔒 no access ")),m.append(c),o.color_bg&&m.css("background-color",o.color_bg),o.color_text&&m.find(".members-am-item-label").css("color",o.color_text),o.color_icon&&(m.find(".dashicons").css("color",o.color_icon),m.find(".members-am-fa-icon i").css("color",o.color_icon),m.find("img").css("filter","none"));var f=b('
');f.append(b(' ').text("◉"),b(' ').text("↑"),b(' ').text("↓")),m.append(f),n.append(m)}function A(s,e,a,n){var r=n.overrides&&n.overrides[s.id]||{},t=r.label||s.title,i=function(e,s){var a=f(e);if(-1!==a.hidden.indexOf(s))return!0;var n=g(s);return!(!n||-1===a.hidden.indexOf(n))}(a,s.id),o=!function(e){if(!e||"read"===e)return 1;for(var s=h.previewUserRoles||[],a=0;a").addClass(l).attr("data-id",s.id),c=b('
');if(!e){var d=r.icon||s.icon,u=S(d,r.icon_type||s.icon_type);"fontawesome"===u&&d?c.append(b(' ')):"svg"!==u&&"image"!==u&&"custom"!==u||!d?d&&0===d.indexOf("dashicons-")?c.append(b(' ')):c.append(b(' ')):c.append(b(" ").attr("src",d).css({width:"20px",height:"20px",display:"inline-block",verticalAlign:"middle",objectFit:"contain",filter:"none"}))}s.custom&&c.append(b('custom ')),r.label&&c.append(b('edit ')),c.append(b(' ').text(t)),o&&c.append(b('🔒 no access ")),m.append(c),r.color_bg&&m.css("background-color",r.color_bg),r.color_text&&m.find(".members-am-item-label").css("color",r.color_text),r.color_icon&&(m.find(".dashicons").css("color",r.color_icon),m.find(".members-am-fa-icon i").css("color",r.color_icon));var p=b('
');return p.append(b(' ').text(i?"◯":"◉"),b(' ').text("↑"),b(' ').text("↓")),m.append(p),m.on("click",function(e){b(e.target).closest("button").length||(h.selectedId=s.id,j())}),m}function P(){var a=b("#members-am-columns"),n={};a.find(".members-am-column").each(function(){var e=b(this).data("role");if(e){var s=b(this).find(".members-am-sidebar-list");s.length&&(n[e]=s.scrollTop())}}),a.empty();var e,s=h.carouselPage*h.columnsPerPage;if(h.activeRoleSlugs.slice(s,s+h.columnsPerPage).forEach(function(e){var s=b('
');!function(n,e){e.empty();var s=b(''),a=(d().filter(function(e){return e.slug===n})[0]||{}).label||n;s.append(b('').text(a)),s.append(b(' ').append(b(' ').text("◀"),b(' ').text("▶"))),e.append(s);var r=b('');_(n).forEach(function(e){if(0!==e.indexOf("sep-")){var a=u(e);if(a)if(I(n,a,null,r),a.children&&a.children.length)x(n,a.id).forEach(function(e){var s=u(a.id+"::"+e);s&&I(n,s,a.id,r)})}else r.append(b('
').text("—"))}),e.append(r)}(e,s),a.append(s),n[e]&&s.find(".members-am-sidebar-list").scrollTop(n[e])}),h.previewUserId){var i=h.previewUserId,r=b('
'),t=b('');t.append(b(" ").text(h.previewUserLabel||"User #"+i)),t.append(b('× ').on("click",function(){h.previewUserId=null,h.previewUserLabel=null,h.previewUserRoles=[],j()})),r.append(t);var o=b(''),l=f(i);((e=f(i)).order&&e.order.length?e.order:p()).forEach(function(a){if(0!==a.indexOf("sep-")){var n=u(a);if(n){o.append(A(n,null,i,l));var e,s,r,t=n.children||[];(e=a,s=t,(r=f(i)).submenu_order&&r.submenu_order[e]?r.submenu_order[e]:s.map(function(e){return e.id})).forEach(function(e){var s=function(e,s){if(!e||!e.children)return null;for(var a=0;a ').text("——"))}),r.append(o),a.append(r)}if(h.syncScroll){var m=a.find(".members-am-sidebar-list"),c=!1;m.on("scroll",function(){if(!c){c=!0;var e=b(this).scrollTop();m.not(this).scrollTop(e),c=!1}})}!function(){var e=Math.max(1,Math.ceil(h.activeRoleSlugs.length/h.columnsPerPage)),s=(Math.min(h.carouselPage+1,e),h.carouselPage*h.columnsPerPage+1),a=Math.min((h.carouselPage+1)*h.columnsPerPage,h.activeRoleSlugs.length);b("#members-am-carousel-status").text(s+"–"+a+" "+membersAdminMenus.i18n.of+" "+h.activeRoleSlugs.length);for(var n=b("#members-am-carousel-dots").empty(),r=0;r ').toggleClass("is-active",r===h.carouselPage))}()}function R(){if(h.selectedId){b("#members-am-edit-panel").removeAttr("hidden");var e=u(h.selectedId),s=function(){if(!h.selectedId)return null;var e=m();if(e){var s=f(e);return s.overrides&&s.overrides[h.selectedId]||{}}var a=l()[0];return a?v(a).overrides[h.selectedId]||{}:null}()||{};b("#members-am-edit-title").text(e?e.title:h.selectedId),b("#members-am-edit-label").val(s.label||e&&e.title||""),b("#members-am-edit-url").attr("placeholder","Override URL (leave empty for default)").val(s.url||e&&e.url||""),b("#members-am-edit-url").data("default-url",e&&e.url||""),b("#members-am-icon-type").val(s.icon_type||"dashicon"),b("#members-am-icon-value").val(s.icon||e&&e.icon||"");var a=s.icon||e&&e.icon||"",n=S(a,s.icon_type||e&&e.icon_type||"");"image"!==n&&"custom"!==n&&"svg"!==n||!a?b("#members-am-icon-preview").hide():b("#members-am-icon-preview").show().attr("src",a),b("#members-am-color-bg").val(s.color_bg||""),b("#members-am-color-text").val(s.color_text||""),b("#members-am-color-icon").val(s.color_icon||""),b("#members-am-item-cap").attr("placeholder",e&&e.cap?e.cap+" (default)":"").val(h.settings.capabilities[h.selectedId]||"");var r=e&&e.custom;b("#members-am-remove-custom").toggle(!!r),b("#members-am-visibility-toggles").empty();var t=e&&e.cap||"read";d().forEach(function(e){if("administrator"!==e.slug||h.settings._meta.admin_editable){var s=w(e.slug,h.selectedId),a=k(e.slug,t),n=b(' ').attr("data-role",e.slug).prop("checked",!s&&a);a||n.prop("disabled",!0);var r=b(' ').append(n,b(" ").text(e.label));a||(r.append(b(" ").text(" — no capability").css({color:"#999",fontStyle:"italic",marginLeft:"4px"})),r.css("opacity","0.5")),b("#members-am-visibility-toggles").append(r)}}),b(".members-am-color").each(function(){b(this).data("wpWpColorPicker")&&b(this).wpColorPicker("destroy")}),b(".members-am-color").wpColorPicker({change:function(e,s){setTimeout(function(){M()},20)},clear:function(){setTimeout(function(){M()},20)}}),U()}else b("#members-am-edit-panel").attr("hidden",!0)}function M(){if(h.selectedId){a("label",b("#members-am-edit-label").val());var e=b("#members-am-edit-url").val();a("url",e===(b("#members-am-edit-url").data("default-url")||"")?"":e);var s=b("#members-am-icon-value").val();a("icon_type",S(s,b("#members-am-icon-type").val())),a("icon",s),a("color_bg",b("#members-am-color-bg").val()),a("color_text",b("#members-am-color-text").val()),a("color_icon",b("#members-am-color-icon").val()),h.settings.capabilities[h.selectedId]=b("#members-am-item-cap").val()||"",P()}}function U(){var a=h.iconTab,n=(b("#members-am-icon-search").val()||"").toLowerCase(),r=b("#members-am-icon-grid").empty();("dashicons"===a?e:s).forEach(function(e){if(!n||-1!==e.indexOf(n)){var s=b(' ');"dashicons"===a?s.append(b(' ')):s.append(b(' ')),s.on("click",function(){b("#members-am-icon-value").val(e),b("#members-am-icon-type").val("dashicons"===a?"dashicon":"fontawesome"),M()}),r.append(s)}})}function E(e,s){var a=h.activeRoleSlugs.indexOf(e);if(-1!==a){var n=a+s;if(!(n<0||n>=h.activeRoleSlugs.length)){var r=h.activeRoleSlugs[a];h.activeRoleSlugs[a]=h.activeRoleSlugs[n],h.activeRoleSlugs[n]=r,o(),j()}}}function C(e,s,a){var n=g(s);if(n){var r=v(e).submenu_order;r[n]||(r[n]=y(n));var t=r[n],i=s.split("::"),o=i[1]||i[0];if(-1===(m=t.indexOf(o)))return;if((c=m+a)<0||c>=t.length)return;var l=t[m];t[m]=t[c],t[c]=l}else{v(e).order&&v(e).order.length||(v(e).order=p());var m,c,d=v(e).order;if(-1===(m=d.indexOf(s)))return;if((c=m+a)<0||c>=d.length)return;var u=d[m];d[m]=d[c],d[c]=u}j()}function T(){var e=l();if(e.length){var n="sep-"+Date.now();e.forEach(function(e){v(e).order&&v(e).order.length||(v(e).order=p());var s=v(e).order,a=h.selectedId?s.indexOf(h.selectedId):s.length-1;a<0&&(a=s.length),s.splice(a+1,0,n)}),j()}}function N(){var e=b("#members-am-save").prop("disabled",!0);b.post(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_save",nonce:membersAdminMenus.nonce,settings:JSON.stringify(h.settings)}).done(function(e){e.success?(alert(membersAdminMenus.i18n.saved),location.reload()):alert(e.data&&e.data.message?e.data.message:"Error")}).always(function(){e.prop("disabled",!1)})}function J(e,s){confirm("role"===e&&s?"Reset all settings for this role? This cannot be undone.":"Reset ALL menu settings for every role? This cannot be undone.")&&b.post(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_reset",nonce:membersAdminMenus.nonce,scope:e||"all",role:s||""},function(e){e.success?location.reload():alert(e.data&&e.data.message?e.data.message:"Reset failed.")})}function L(e){b.getJSON(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_user_search",nonce:membersAdminMenus.nonce,term:e},function(e){e.success&&e.data&&e.data.length?function(e){b(".members-am-user-suggestions").remove();var s=b("#members-am-user-search").parent();s.css("position","relative");var a=b('
');e.forEach(function(e){a.append(b('
').text(e.label).data("userId",e.id).on("click",function(){!function(e,s,a){h.previewUserId=e,h.previewUserLabel=s||"User #"+e,h.previewUserRoles=a||[],n(),h.settings.users[e]||(h.settings.users[e]={});j()}(e.id,e.label,e.roles),b(".members-am-user-suggestions").remove(),b("#members-am-user-search").val("")}))}),s.append(a),setTimeout(function(){b(document).one("click",function(){b(".members-am-user-suggestions").remove()})},0)}(e.data):b(".members-am-user-suggestions").remove()})}function F(){var s;b(document).on("click","#members-am-role-chips .members-am-chip",function(){var e=b(this).data("role"),s=h.activeRoleSlugs.indexOf(e);-1===s?h.activeRoleSlugs.push(e):1=r.length||(r.splice(o,1),r.splice(l,0,s))}}(s,a,b(this).closest(".members-am-item").hasClass("is-sub")?g(a):null,n?-1:1),P()}}),b("#members-am-save").on("click",N),b("#members-am-reset").on("click",function(e){e.stopPropagation(),b(".members-am-reset-dropdown").remove();var s=b(this),a=h.activeRoleSlugs||[],n=a.length?a[0]:"",r="";n&&(membersAdminMenus.roles||[]).forEach(function(e){e.slug===n&&(r=e.label)});var t=b('
');if(t.append(b('
').text("Reset Settings")),n&&r){var i=b(' ');i.append(b(' ')),i.append(b(' ').append(b(" ").text("Reset "+r),b(" ").text("Clear all menu settings for this role only"))),i.on("click",function(){b(".members-am-reset-dropdown").remove(),J("role",n)}),t.append(i)}var o=b(' ');o.append(b(' ')),o.append(b(' ').append(b(" ").text("Reset all roles"),b(" ").text("Clear all menu settings for every role"))),o.on("click",function(){b(".members-am-reset-dropdown").remove(),J("all")}),t.append(o),s.parent().css("position","relative"),t.insertAfter(s),b(document).one("click",function(){b(".members-am-reset-dropdown").remove()})}),b("#members-am-export").on("click",function(e){e.preventDefault(),window.location.href=membersAdminMenus.exportUrl}),b("#members-am-import").on("click",function(){b("#members-am-import-file").trigger("click")}),b("#members-am-import-file").on("change",function(){var e,s,a=this.files&&this.files[0];a&&(e=a,(s=new FileReader).onload=function(){try{var e=JSON.parse(s.result);b.post(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_import",nonce:membersAdminMenus.nonce,settings:JSON.stringify(e)}).done(function(e){e.success?location.reload():alert(e.data&&e.data.message?e.data.message:"Error")})}catch(e){alert("Invalid JSON")}},s.readAsText(e))}),b("#members-am-copy-apply").on("click",function(){var a=b("#members-am-copy-from").val(),s=b("#members-am-copy-to").val();if(a&&s)if(a!==s){var n="",r="";if(d().forEach(function(e){e.slug===a&&(n=e.label),e.slug===s&&(r=e.label)}),confirm('Copy menu settings from "'+n+'" to "'+r+'"?\nThis will overwrite "'+r+"\" menu configuration.\n\nNote: This copies menu order, hidden items, labels, icons, and colors.\nIt does NOT change the role's capabilities (items marked with a lock icon).")){var e=v(a),t={hidden:e.hidden?e.hidden.slice():[],order:[],submenu_order:{},overrides:{}},i=_(a);t.order=i.slice(),h.tree.forEach(function(e){if(e.children&&e.children.length){var s=x(a,e.id);s&&s.length&&(t.submenu_order[e.id]=s.slice())}}),e.overrides&&"object"==typeof e.overrides&&(t.overrides=JSON.parse(JSON.stringify(e.overrides))),h.settings.roles[s]=t,-1===h.activeRoleSlugs.indexOf(s)&&(h.activeRoleSlugs.push(s),o(),O()),j(),N()}}else alert("Source and target roles must be different.")}),b("#members-am-admin-editable").on("change",function(){var e=!0;b(this).is(":checked")&&(e=window.confirm(membersAdminMenus.i18n.adminEditableWarn)),e?(h.settings._meta.admin_editable=b(this).is(":checked"),c(),O(),o(),j()):b(this).prop("checked",!1)}),b("#members-am-sync-scroll").prop("checked",!1!==h.syncScroll),b("#members-am-sync-scroll").on("change",function(){h.syncScroll=b(this).is(":checked");try{localStorage.setItem("members_am_sync_scroll",h.syncScroll?"1":"0")}catch(e){}P()}),b("#members-am-add-item").on("click",function(){var e="c"+Date.now();h.settings.custom_items.push({id:e,label:"Custom link",url:window.location.origin+"/wp-admin/",icon_type:"dashicon",icon:"dashicons-admin-generic",parent:"",position:99,cap:"read"}),h.tree=r(),h.selectedId=i({id:e}),j(),R()}),b("#members-am-remove-custom").on("click",function(){var s=u(h.selectedId);s&&s.customId&&(h.settings.custom_items=(h.settings.custom_items||[]).filter(function(e){return e.id!==s.customId}),h.selectedId=null,h.tree=r(),j(),b("#members-am-edit-panel").attr("hidden",!0))}),b("#members-am-edit-close").on("click",function(){h.selectedId=null,b("#members-am-edit-panel").attr("hidden",!0),j()}),b("#members-am-edit-target-role").on("change",R),b("#members-am-edit-label, #members-am-edit-url, #members-am-icon-value").on("input",function(){M()}),b("#members-am-item-cap").on("input",function(){M()}),b(".members-am-icon-tabs .button").on("click",function(){b(".members-am-icon-tabs .button").removeClass("is-active"),b(this).addClass("is-active"),h.iconTab="fontawesome"===b(this).data("tab")?"fontawesome":"upload"===b(this).data("tab")?"upload":"dashicons",U()}),b("#members-am-icon-search").on("input",U),b("#members-am-media-upload").on("click",function(e){e.preventDefault(),h.mediaFrame||(h.mediaFrame=wp.media({title:"Choose menu icon",button:{text:"Use as icon"},multiple:!1,library:{type:"image"}}),h.mediaFrame.on("select",function(){var e=h.mediaFrame.state().get("selection").first().toJSON(),s=e.url||"";e.sizes&&(e.sizes.thumbnail?s=e.sizes.thumbnail.url:e.sizes.medium&&(s=e.sizes.medium.url)),b("#members-am-icon-type").val("custom"),b("#members-am-icon-value").val(s),M()})),h.mediaFrame.open()}),b(document).on("change",".members-am-vis-cb",function(){var e=b(this).data("role");if(b(this).is(":checked")){var s=v(e).hidden,a=s.indexOf(h.selectedId);-1!==a&&s.splice(a,1)}else-1===v(e).hidden.indexOf(h.selectedId)&&v(e).hidden.push(h.selectedId);j()}),b("#members-am-add-sep").on("click",T),b("#members-am-promote").on("click",function(){a("parent",""),M()}),b("#members-am-demote").on("click",function(){var e=window.prompt("Parent slug (e.g. edit.php)","edit.php");e&&(a("parent",e),M())}),b("#members-am-user-search").on("input",function(){var e=b(this).val();clearTimeout(s),s=setTimeout(function(){1 ").val("__all__").text("All roles")),h.activeRoleSlugs.forEach(function(s){var e=(d().filter(function(e){return e.slug===s})[0]||{}).label||s;a.append(b(" ").val(s).text(e))}),h.previewUserId&&a.append(b(" ").val("__user__"+h.previewUserId).text(h.previewUserLabel||"User #"+h.previewUserId)),h.selectedId&&R()}b(function(){var s,a,e;n(),h.tree=r(),c(),b("#members-am-admin-editable").prop("checked",!!h.settings._meta.admin_editable),s=b("#members-am-copy-from").empty(),a=b("#members-am-copy-to").empty(),(e=d()).forEach(function(e){s.append(b(" ").val(e.slug).text(e.label)),a.append(b(" ").val(e.slug).text(e.label))}),1r&&(h.carouselPage=r))}}h.activeRoleSlugs=s.filter(function(e){return"administrator"!==e||a}),h.activeRoleSlugs.length||(h.activeRoleSlugs=["subscriber"])}function O(){var n=b("#members-am-role-chips").empty();d().forEach(function(e){if("administrator"!==e.slug||h.settings._meta.admin_editable){var s=-1!==h.activeRoleSlugs.indexOf(e.slug),a=b(' ').text(e.label).attr("data-role",e.slug).toggleClass("is-active",s);n.append(a)}})}function I(e,s,a,n){var r=s.id,t=w(e,r),i=!k(e,s.cap),o=v(e).overrides[r]||{},l=o.label||s.title||r,m=b('
').attr("data-id",r).toggleClass("is-hidden",t).toggleClass("is-no-cap",i).toggleClass("is-selected",h.selectedId===r).toggleClass("is-sub",!!a),c=b('
');if(!a){var d=o.icon||s.icon,u=S(d,o.icon_type||s.icon_type);if("fontawesome"===u&&d)c.append(b(' '));else if("svg"!==u&&"image"!==u&&"custom"!==u||!d){var p=d&&0===d.indexOf("dashicons-")?d:"dashicons-admin-generic";c.append(b(' '))}else c.append(b(" ").attr("src",d).css({width:"20px",height:"20px",display:"inline-block",verticalAlign:"middle",objectFit:"contain",filter:"none"}))}s.custom&&c.append(b('custom ')),o.label&&c.append(b('edit ')),c.append(b(' ').text(l)),i&&c.append(b(' Roles.\">🔒 no access ")),m.append(c),o.color_bg&&m.css("background-color",o.color_bg),o.color_text&&m.find(".members-am-item-label").css("color",o.color_text),o.color_icon&&(m.find(".dashicons").css("color",o.color_icon),m.find(".members-am-fa-icon i").css("color",o.color_icon),m.find("img").css("filter","none"));var f=b('
');f.append(b(' ').text("◉"),b(' ').text("↑"),b(' ').text("↓")),m.append(f),n.append(m)}function A(s,e,a,n){var r=n.overrides&&n.overrides[s.id]||{},t=r.label||s.title,i=function(e,s){var a=f(e);if(-1!==a.hidden.indexOf(s))return!0;var n=g(s);return!(!n||-1===a.hidden.indexOf(n))}(a,s.id),o=!function(e){if(!e||"read"===e)return 1;for(var s=h.previewUserRoles||[],a=0;a").addClass(l).attr("data-id",s.id),c=b('
');if(!e){var d=r.icon||s.icon,u=S(d,r.icon_type||s.icon_type);"fontawesome"===u&&d?c.append(b(' ')):"svg"!==u&&"image"!==u&&"custom"!==u||!d?d&&0===d.indexOf("dashicons-")?c.append(b(' ')):c.append(b(' ')):c.append(b(" ").attr("src",d).css({width:"20px",height:"20px",display:"inline-block",verticalAlign:"middle",objectFit:"contain",filter:"none"}))}s.custom&&c.append(b('custom ')),r.label&&c.append(b('edit ')),c.append(b(' ').text(t)),o&&c.append(b('🔒 no access ")),m.append(c),r.color_bg&&m.css("background-color",r.color_bg),r.color_text&&m.find(".members-am-item-label").css("color",r.color_text),r.color_icon&&(m.find(".dashicons").css("color",r.color_icon),m.find(".members-am-fa-icon i").css("color",r.color_icon));var p=b('
');return p.append(b(' ').text(i?"◯":"◉"),b(' ').text("↑"),b(' ').text("↓")),m.append(p),m.on("click",function(e){b(e.target).closest("button").length||(h.selectedId=s.id,j())}),m}function P(){var a=b("#members-am-columns"),n={};a.find(".members-am-column").each(function(){var e=b(this).data("role");if(e){var s=b(this).find(".members-am-sidebar-list");s.length&&(n[e]=s.scrollTop())}}),a.empty();var e,s=h.carouselPage*h.columnsPerPage;if(h.activeRoleSlugs.slice(s,s+h.columnsPerPage).forEach(function(e){var s=b('
');!function(n,e){e.empty();var s=b(''),a=(d().filter(function(e){return e.slug===n})[0]||{}).label||n;s.append(b('').text(a)),s.append(b(' ').append(b(' ').text("◀"),b(' ').text("▶"))),e.append(s);var r=b('');_(n).forEach(function(e){if(0!==e.indexOf("sep-")){var a=u(e);if(a)if(I(n,a,null,r),a.children&&a.children.length)x(n,a.id).forEach(function(e){var s=u(a.id+"::"+e);s&&I(n,s,a.id,r)})}else r.append(b('
').text("—"))}),e.append(r)}(e,s),a.append(s),n[e]&&s.find(".members-am-sidebar-list").scrollTop(n[e])}),h.previewUserId){var i=h.previewUserId,r=b('
'),t=b('');t.append(b(" ").text(h.previewUserLabel||"User #"+i)),t.append(b('× ').on("click",function(){h.previewUserId=null,h.previewUserLabel=null,h.previewUserRoles=[],j()})),r.append(t);var o=b(''),l=f(i);((e=f(i)).order&&e.order.length?e.order:p()).forEach(function(a){if(0!==a.indexOf("sep-")){var n=u(a);if(n){o.append(A(n,null,i,l));var e,s,r,t=n.children||[];(e=a,s=t,(r=f(i)).submenu_order&&r.submenu_order[e]?r.submenu_order[e]:s.map(function(e){return e.id})).forEach(function(e){var s=function(e,s){if(!e||!e.children)return null;for(var a=0;a ').text("——"))}),r.append(o),a.append(r)}if(h.syncScroll){var m=a.find(".members-am-sidebar-list"),c=!1;m.on("scroll",function(){if(!c){c=!0;var e=b(this).scrollTop();m.not(this).scrollTop(e),c=!1}})}!function(){var e=Math.max(1,Math.ceil(h.activeRoleSlugs.length/h.columnsPerPage)),s=(Math.min(h.carouselPage+1,e),h.carouselPage*h.columnsPerPage+1),a=Math.min((h.carouselPage+1)*h.columnsPerPage,h.activeRoleSlugs.length);b("#members-am-carousel-status").text(s+"–"+a+" "+membersAdminMenus.i18n.of+" "+h.activeRoleSlugs.length);for(var n=b("#members-am-carousel-dots").empty(),r=0;r ').toggleClass("is-active",r===h.carouselPage))}()}function R(){if(h.selectedId){b("#members-am-edit-panel").removeAttr("hidden");var e=u(h.selectedId),s=function(){if(!h.selectedId)return null;var e=m();if(e){var s=f(e);return s.overrides&&s.overrides[h.selectedId]||{}}var a=l()[0];return a?v(a).overrides[h.selectedId]||{}:null}()||{};b("#members-am-edit-title").text(e?e.title:h.selectedId),b("#members-am-edit-label").val(s.label||e&&e.title||""),b("#members-am-edit-url").attr("placeholder","Override URL (leave empty for default)").val(s.url||e&&e.url||""),b("#members-am-edit-url").data("default-url",e&&e.url||""),b("#members-am-icon-type").val(s.icon_type||"dashicon"),b("#members-am-icon-value").val(s.icon||e&&e.icon||"");var a=s.icon||e&&e.icon||"",n=S(a,s.icon_type||e&&e.icon_type||"");"image"!==n&&"custom"!==n&&"svg"!==n||!a?b("#members-am-icon-preview").hide():b("#members-am-icon-preview").show().attr("src",a),b("#members-am-color-bg").val(s.color_bg||""),b("#members-am-color-text").val(s.color_text||""),b("#members-am-color-icon").val(s.color_icon||""),b("#members-am-item-cap").attr("placeholder",e&&e.cap?e.cap+" (default)":"").val(h.settings.capabilities[h.selectedId]||"");var r=e&&e.custom;b("#members-am-remove-custom").toggle(!!r),b("#members-am-visibility-toggles").empty();var t=e&&e.cap||"read";d().forEach(function(e){if("administrator"!==e.slug||h.settings._meta.admin_editable){var s=w(e.slug,h.selectedId),a=k(e.slug,t),n=b(' ').attr("data-role",e.slug).prop("checked",!s&&a);a||n.prop("disabled",!0);var r=b(' ').append(n,b(" ").text(e.label));a||(r.append(b(" ").text(" — no capability").css({color:"#999",fontStyle:"italic",marginLeft:"4px"})),r.css("opacity","0.5")),b("#members-am-visibility-toggles").append(r)}}),b(".members-am-color").each(function(){b(this).data("wpWpColorPicker")&&b(this).wpColorPicker("destroy")}),b(".members-am-color").wpColorPicker({change:function(e,s){setTimeout(function(){M()},20)},clear:function(){setTimeout(function(){M()},20)}}),U()}else b("#members-am-edit-panel").attr("hidden",!0)}function M(){if(h.selectedId){a("label",b("#members-am-edit-label").val());var e=b("#members-am-edit-url").val();a("url",e===(b("#members-am-edit-url").data("default-url")||"")?"":e);var s=b("#members-am-icon-value").val();a("icon_type",S(s,b("#members-am-icon-type").val())),a("icon",s),a("color_bg",b("#members-am-color-bg").val()),a("color_text",b("#members-am-color-text").val()),a("color_icon",b("#members-am-color-icon").val()),h.settings.capabilities[h.selectedId]=b("#members-am-item-cap").val()||"",P()}}function U(){var a=h.iconTab,n=(b("#members-am-icon-search").val()||"").toLowerCase(),r=b("#members-am-icon-grid").empty();("dashicons"===a?e:s).forEach(function(e){if(!n||-1!==e.indexOf(n)){var s=b(' ');"dashicons"===a?s.append(b(' ')):s.append(b(' ')),s.on("click",function(){b("#members-am-icon-value").val(e),b("#members-am-icon-type").val("dashicons"===a?"dashicon":"fontawesome"),M()}),r.append(s)}})}function E(e,s){var a=h.activeRoleSlugs.indexOf(e);if(-1!==a){var n=a+s;if(!(n<0||n>=h.activeRoleSlugs.length)){var r=h.activeRoleSlugs[a];h.activeRoleSlugs[a]=h.activeRoleSlugs[n],h.activeRoleSlugs[n]=r,o(),j()}}}function C(e,s,a){var n=g(s);if(n){var r=v(e).submenu_order;r[n]||(r[n]=y(n));var t=r[n],i=s.split("::"),o=i[1]||i[0];if(-1===(m=t.indexOf(o)))return;if((c=m+a)<0||c>=t.length)return;var l=t[m];t[m]=t[c],t[c]=l}else{v(e).order&&v(e).order.length||(v(e).order=p());var m,c,d=v(e).order;if(-1===(m=d.indexOf(s)))return;if((c=m+a)<0||c>=d.length)return;var u=d[m];d[m]=d[c],d[c]=u}j()}function T(){var e=l();if(e.length){var n="sep-"+Date.now();e.forEach(function(e){v(e).order&&v(e).order.length||(v(e).order=p());var s=v(e).order,a=h.selectedId?s.indexOf(h.selectedId):s.length-1;a<0&&(a=s.length),s.splice(a+1,0,n)}),j()}}function N(){var e=b("#members-am-save").prop("disabled",!0);b.post(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_save",nonce:membersAdminMenus.nonce,settings:JSON.stringify(h.settings)}).done(function(e){e.success?(alert(membersAdminMenus.i18n.saved),location.reload()):alert(e.data&&e.data.message?e.data.message:"Error")}).always(function(){e.prop("disabled",!1)})}function J(e,s){confirm("role"===e&&s?"Reset all settings for this role? This cannot be undone.":"Reset ALL menu settings for every role? This cannot be undone.")&&b.post(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_reset",nonce:membersAdminMenus.nonce,scope:e||"all",role:s||""},function(e){e.success?location.reload():alert(e.data&&e.data.message?e.data.message:"Reset failed.")})}function L(e){b.getJSON(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_user_search",nonce:membersAdminMenus.nonce,term:e},function(e){e.success&&e.data&&e.data.length?function(e){b(".members-am-user-suggestions").remove();var s=b("#members-am-user-search").parent();s.css("position","relative");var a=b('
');e.forEach(function(e){a.append(b('
').text(e.label).data("userId",e.id).on("click",function(){!function(e,s,a){h.previewUserId=e,h.previewUserLabel=s||"User #"+e,h.previewUserRoles=a||[],n(),h.settings.users[e]||(h.settings.users[e]={});j()}(e.id,e.label,e.roles),b(".members-am-user-suggestions").remove(),b("#members-am-user-search").val("")}))}),s.append(a),setTimeout(function(){b(document).one("click",function(){b(".members-am-user-suggestions").remove()})},0)}(e.data):b(".members-am-user-suggestions").remove()})}function F(){var s;b(document).on("click","#members-am-role-chips .members-am-chip",function(){var e=b(this).data("role"),s=h.activeRoleSlugs.indexOf(e);-1===s?h.activeRoleSlugs.push(e):1=r.length||(r.splice(o,1),r.splice(l,0,s))}}(s,a,b(this).closest(".members-am-item").hasClass("is-sub")?g(a):null,n?-1:1),P()}}),b("#members-am-save").on("click",N),b("#members-am-reset").on("click",function(e){e.stopPropagation(),b(".members-am-reset-dropdown").remove();var s=b(this),a=h.activeRoleSlugs||[],n=a.length?a[0]:"",r="";n&&(membersAdminMenus.roles||[]).forEach(function(e){e.slug===n&&(r=e.label)});var t=b('
');if(t.append(b('
').text("Reset Settings")),n&&r){var i=b(' ');i.append(b(' ')),i.append(b(' ').append(b(" ").text("Reset "+r),b(" ").text("Clear all menu settings for this role only"))),i.on("click",function(){b(".members-am-reset-dropdown").remove(),J("role",n)}),t.append(i)}var o=b(' ');o.append(b(' ')),o.append(b(' ').append(b(" ").text("Reset all roles"),b(" ").text("Clear all menu settings for every role"))),o.on("click",function(){b(".members-am-reset-dropdown").remove(),J("all")}),t.append(o),s.parent().css("position","relative"),t.insertAfter(s),b(document).one("click",function(){b(".members-am-reset-dropdown").remove()})}),b("#members-am-export").on("click",function(e){e.preventDefault(),window.location.href=membersAdminMenus.exportUrl}),b("#members-am-import").on("click",function(){b("#members-am-import-file").trigger("click")}),b("#members-am-import-file").on("change",function(){var e,s,a=this.files&&this.files[0];a&&(e=a,(s=new FileReader).onload=function(){try{var e=JSON.parse(s.result);b.post(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_import",nonce:membersAdminMenus.nonce,settings:JSON.stringify(e)}).done(function(e){e.success?location.reload():alert(e.data&&e.data.message?e.data.message:"Error")})}catch(e){alert("Invalid JSON")}},s.readAsText(e))}),b("#members-am-copy-apply").on("click",function(){var a=b("#members-am-copy-from").val(),s=b("#members-am-copy-to").val();if(a&&s)if(a!==s){var n="",r="";if(d().forEach(function(e){e.slug===a&&(n=e.label),e.slug===s&&(r=e.label)}),confirm('Copy menu settings from "'+n+'" to "'+r+'"?\nThis will overwrite "'+r+"\" menu configuration.\n\nNote: This copies menu order, hidden items, labels, icons, and colors.\nIt does NOT change the role's capabilities (items marked with a lock icon).")){var e=v(a),t={hidden:e.hidden?e.hidden.slice():[],order:[],submenu_order:{},overrides:{}},i=_(a);t.order=i.slice(),h.tree.forEach(function(e){if(e.children&&e.children.length){var s=x(a,e.id);s&&s.length&&(t.submenu_order[e.id]=s.slice())}}),e.overrides&&"object"==typeof e.overrides&&(t.overrides=JSON.parse(JSON.stringify(e.overrides))),h.settings.roles[s]=t,-1===h.activeRoleSlugs.indexOf(s)&&(h.activeRoleSlugs.push(s),o(),O()),j(),N()}}else alert("Source and target roles must be different.")}),b("#members-am-admin-editable").on("change",function(){var e=!0;b(this).is(":checked")&&(e=window.confirm(membersAdminMenus.i18n.adminEditableWarn)),e?(h.settings._meta.admin_editable=b(this).is(":checked"),c(),O(),o(),j()):b(this).prop("checked",!1)}),b("#members-am-sync-scroll").prop("checked",!1!==h.syncScroll),b("#members-am-sync-scroll").on("change",function(){h.syncScroll=b(this).is(":checked");try{localStorage.setItem("members_am_sync_scroll",h.syncScroll?"1":"0")}catch(e){}P()}),b("#members-am-add-item").on("click",function(){var e="c"+Date.now();h.settings.custom_items.push({id:e,label:"Custom link",url:window.location.origin+"/wp-admin/",icon_type:"dashicon",icon:"dashicons-admin-generic",parent:"",position:99,cap:"read"}),h.tree=r(),h.selectedId=i({id:e}),j(),R()}),b("#members-am-remove-custom").on("click",function(){var s=u(h.selectedId);s&&s.customId&&(h.settings.custom_items=(h.settings.custom_items||[]).filter(function(e){return e.id!==s.customId}),h.selectedId=null,h.tree=r(),j(),b("#members-am-edit-panel").attr("hidden",!0))}),b("#members-am-edit-close").on("click",function(){h.selectedId=null,b("#members-am-edit-panel").attr("hidden",!0),j()}),b("#members-am-edit-target-role").on("change",R),b("#members-am-edit-label, #members-am-edit-url, #members-am-icon-value").on("input",function(){M()}),b("#members-am-item-cap").on("input",function(){M()}),b(".members-am-icon-tabs .button").on("click",function(){b(".members-am-icon-tabs .button").removeClass("is-active"),b(this).addClass("is-active"),h.iconTab="fontawesome"===b(this).data("tab")?"fontawesome":"upload"===b(this).data("tab")?"upload":"dashicons",U()}),b("#members-am-icon-search").on("input",U),b("#members-am-media-upload").on("click",function(e){e.preventDefault(),h.mediaFrame||(h.mediaFrame=wp.media({title:"Choose menu icon",button:{text:"Use as icon"},multiple:!1,library:{type:"image"}}),h.mediaFrame.on("select",function(){var e=h.mediaFrame.state().get("selection").first().toJSON(),s=e.url||"";e.sizes&&(e.sizes.thumbnail?s=e.sizes.thumbnail.url:e.sizes.medium&&(s=e.sizes.medium.url)),b("#members-am-icon-type").val("custom"),b("#members-am-icon-value").val(s),M()})),h.mediaFrame.open()}),b(document).on("change",".members-am-vis-cb",function(){var e=b(this).data("role");if(b(this).is(":checked")){var s=v(e).hidden,a=s.indexOf(h.selectedId);-1!==a&&s.splice(a,1)}else-1===v(e).hidden.indexOf(h.selectedId)&&v(e).hidden.push(h.selectedId);j()}),b("#members-am-add-sep").on("click",T),b("#members-am-promote").on("click",function(){a("parent","__promote__"),M()}),b("#members-am-demote").on("click",function(){var e=window.prompt("Parent slug (e.g. edit.php)","edit.php");e&&(a("parent",e),M())}),b("#members-am-user-search").on("input",function(){var e=b(this).val();clearTimeout(s),s=setTimeout(function(){1 ").val("__all__").text("All roles")),h.activeRoleSlugs.forEach(function(s){var e=(d().filter(function(e){return e.slug===s})[0]||{}).label||s;a.append(b(" ").val(s).text(e))}),h.previewUserId&&a.append(b(" ").val("__user__"+h.previewUserId).text(h.previewUserLabel||"User #"+h.previewUserId)),h.selectedId&&R()}b(function(){var s,a,e;n(),h.tree=r(),c(),b("#members-am-admin-editable").prop("checked",!!h.settings._meta.admin_editable),s=b("#members-am-copy-from").empty(),a=b("#members-am-copy-to").empty(),(e=d()).forEach(function(e){s.append(b(" ").val(e.slug).text(e.label)),a.append(b(" ").val(e.slug).text(e.label))}),1
Date: Wed, 8 Apr 2026 14:42:51 +0200
Subject: [PATCH 08/73] fix(admin): improve menu order handling and child item
rendering
---
addons/members-admin-menus/app/functions.php | 28 +++++++++--
js/admin-menus.js | 49 ++++++++++++++++----
js/admin-menus.min.js | 2 +-
3 files changed, 63 insertions(+), 16 deletions(-)
diff --git a/addons/members-admin-menus/app/functions.php b/addons/members-admin-menus/app/functions.php
index 738d61f..b3a2a3b 100644
--- a/addons/members-admin-menus/app/functions.php
+++ b/addons/members-admin-menus/app/functions.php
@@ -51,13 +51,31 @@ function filter_menu_order( $menu_order ) {
if ( empty( $cfg['order'] ) || ! is_array( $cfg['order'] ) ) {
return $menu_order;
}
- $non_sep = array_values( array_filter( $cfg['order'], function( $s ) {
- return is_string( $s ) && strpos( $s, 'sep-' ) !== 0;
- } ) );
- if ( empty( $non_sep ) ) {
+
+ // Build the ordered slug list, converting sep-* tokens to actual separator slugs.
+ $result = array();
+ $sep_i = 0;
+ $has_real = false;
+ foreach ( $cfg['order'] as $token ) {
+ $token = (string) $token;
+ if ( 0 === strpos( $token, 'sep-' ) ) {
+ $result[] = 'separator-members-am-' . $sep_i;
+ $sep_i++;
+ } elseif ( false !== strpos( $token, '::' ) ) {
+ $parts = explode( '::', $token, 2 );
+ $result[] = $parts[1];
+ $has_real = true;
+ } else {
+ $result[] = $token;
+ $has_real = true;
+ }
+ }
+ if ( ! $has_real ) {
return $menu_order;
}
- $merged = array_merge( $non_sep, array_diff( $menu_order, $non_sep ) );
+
+ // Append any WP menu items not in our order.
+ $merged = array_merge( $result, array_diff( $menu_order, $result ) );
return $merged;
}
diff --git a/js/admin-menus.js b/js/admin-menus.js
index e52512d..ca3079c 100644
--- a/js/admin-menus.js
+++ b/js/admin-menus.js
@@ -570,16 +570,20 @@
return;
}
renderItemRow(role, node, null, $ul);
- if (node.children && node.children.length) {
- var corder = getChildOrder(role, node.id);
- corder.forEach(function (cslug) {
- var cid = childFullId(node.id, cslug);
- var child = findNode(cid);
- if (child) {
- renderItemRow(role, child, node.id, $ul);
+ if (node.children && node.children.length) {
+ var corder = getChildOrder(role, node.id);
+ corder.forEach(function (cslug) {
+ var cid = childFullId(node.id, cslug);
+ var child = findNode(cid);
+ if (child) {
+ var childOv = getRoleConfig(role).overrides[cid] || {};
+ if (childOv.parent === '__promote__') {
+ return;
}
- });
- }
+ renderItemRow(role, child, node.id, $ul);
+ }
+ });
+ }
});
$wrap.append($ul);
}
@@ -968,7 +972,8 @@
}
function moveItemVertical(role, itemId, dir) {
- var parentId = findParentId(itemId);
+ var ov = getRoleConfig(role).overrides[itemId] || {};
+ var parentId = (ov.parent === '__promote__') ? null : findParentId(itemId);
if (!parentId) {
if (!getRoleConfig(role).order || !getRoleConfig(role).order.length) {
getRoleConfig(role).order = defaultTopOrder();
@@ -1485,7 +1490,31 @@
$('#members-am-add-sep').on('click', addSeparator);
$('#members-am-promote').on('click', function () {
+ if (!state.selectedId) return;
setOverrideField('parent', '__promote__');
+
+ // Add the promoted item to the top-level order right after its original parent.
+ var parentId = findParentId(state.selectedId);
+ var roles = getTargetRoles();
+ roles.forEach(function (role) {
+ var rc = getRoleConfig(role);
+ if (!rc.order || !rc.order.length) {
+ rc.order = defaultTopOrder();
+ }
+ if (rc.order.indexOf(state.selectedId) === -1) {
+ if (parentId) {
+ var pIdx = rc.order.indexOf(parentId);
+ if (pIdx !== -1) {
+ rc.order.splice(pIdx + 1, 0, state.selectedId);
+ } else {
+ rc.order.push(state.selectedId);
+ }
+ } else {
+ rc.order.push(state.selectedId);
+ }
+ }
+ });
+
pushOverridesFromForm();
});
diff --git a/js/admin-menus.min.js b/js/admin-menus.min.js
index 26beb4a..fc48e9c 100644
--- a/js/admin-menus.min.js
+++ b/js/admin-menus.min.js
@@ -1 +1 @@
-!function(b){"use strict";var h={settings:b.extend(!0,{},membersAdminMenus.settings),tree:[],activeRoleSlugs:[],carouselPage:0,columnsPerPage:3,selectedId:null,iconTab:"dashicons",previewUserId:null,previewUserRoles:[],userSuggestions:[],mediaFrame:null,syncScroll:function(){try{return"0"!==localStorage.getItem("members_am_sync_scroll")}catch(e){return!0}}()},e=["dashicons-menu","dashicons-admin-dashboard","dashicons-admin-post","dashicons-admin-page","dashicons-admin-media","dashicons-admin-comments","dashicons-admin-appearance","dashicons-admin-plugins","dashicons-admin-users","dashicons-admin-tools","dashicons-admin-settings","dashicons-admin-generic","dashicons-edit","dashicons-plus","dashicons-chart-bar","dashicons-cart","dashicons-products","dashicons-email","dashicons-groups","dashicons-heart","dashicons-star-filled","dashicons-smiley","dashicons-info","dashicons-lock","dashicons-unlock","dashicons-visibility","dashicons-hidden","dashicons-arrow-up","dashicons-arrow-down","dashicons-admin-network","dashicons-performance"],s=["fa-solid fa-house","fa-solid fa-user","fa-solid fa-gear","fa-solid fa-file","fa-solid fa-image","fa-solid fa-cart-shopping","fa-solid fa-chart-line","fa-solid fa-envelope","fa-solid fa-book","fa-solid fa-link","fa-solid fa-bell","fa-solid fa-star","fa-solid fa-heart","fa-solid fa-lock","fa-solid fa-unlock","fa-solid fa-pen","fa-solid fa-trash","fa-solid fa-plus","fa-solid fa-minus"],t="members_am_view_state";function o(){try{localStorage.setItem(t,JSON.stringify({activeRoleSlugs:h.activeRoleSlugs,carouselPage:h.carouselPage}))}catch(e){}}function d(){return membersAdminMenus.roles||[]}function n(){h.settings._meta&&!Array.isArray(h.settings._meta)||(h.settings._meta={version:3,admin_editable:!1}),h.settings.roles&&!Array.isArray(h.settings.roles)||(h.settings.roles={}),h.settings.users&&!Array.isArray(h.settings.users)||(h.settings.users={}),Array.isArray(h.settings.custom_items)||(h.settings.custom_items=[]),h.settings.capabilities&&!Array.isArray(h.settings.capabilities)||(h.settings.capabilities={})}function v(e){n(),h.settings.roles[e]||(h.settings.roles[e]={hidden:[],order:[],submenu_order:{},overrides:{}});var s=h.settings.roles[e];return s.hidden&&Array.isArray(s.hidden)||(s.hidden=[]),s.order&&Array.isArray(s.order)||(s.order=[]),s.submenu_order&&!Array.isArray(s.submenu_order)||(s.submenu_order={}),s.overrides&&!Array.isArray(s.overrides)||(s.overrides={}),s}function f(e){n(),h.settings.users[e]||(h.settings.users[e]={});var s=h.settings.users[e];return s.hidden&&Array.isArray(s.hidden)||(s.hidden=[]),s.order&&Array.isArray(s.order)||(s.order=[]),s.overrides&&!Array.isArray(s.overrides)||(s.overrides={}),s.submenu_order&&!Array.isArray(s.submenu_order)||(s.submenu_order={}),s}function i(e){var s=e.id||"c";return"members-am-"+String(s).replace(/[^a-z0-9_-]/gi,"-").toLowerCase()}function r(){var n=b.extend(!0,[],membersAdminMenus.menuTree||[]),r={};return n.forEach(function(e){r[e.id]=!0}),(h.settings.custom_items||[]).forEach(function(e){if(e&&e.id){var s=i(e);if(r[s]){for(var a=0;ar&&(h.carouselPage=r))}}h.activeRoleSlugs=s.filter(function(e){return"administrator"!==e||a}),h.activeRoleSlugs.length||(h.activeRoleSlugs=["subscriber"])}function O(){var n=b("#members-am-role-chips").empty();d().forEach(function(e){if("administrator"!==e.slug||h.settings._meta.admin_editable){var s=-1!==h.activeRoleSlugs.indexOf(e.slug),a=b(' ').text(e.label).attr("data-role",e.slug).toggleClass("is-active",s);n.append(a)}})}function I(e,s,a,n){var r=s.id,t=w(e,r),i=!k(e,s.cap),o=v(e).overrides[r]||{},l=o.label||s.title||r,m=b('
').attr("data-id",r).toggleClass("is-hidden",t).toggleClass("is-no-cap",i).toggleClass("is-selected",h.selectedId===r).toggleClass("is-sub",!!a),c=b('
');if(!a){var d=o.icon||s.icon,u=S(d,o.icon_type||s.icon_type);if("fontawesome"===u&&d)c.append(b(' '));else if("svg"!==u&&"image"!==u&&"custom"!==u||!d){var p=d&&0===d.indexOf("dashicons-")?d:"dashicons-admin-generic";c.append(b(' '))}else c.append(b(" ").attr("src",d).css({width:"20px",height:"20px",display:"inline-block",verticalAlign:"middle",objectFit:"contain",filter:"none"}))}s.custom&&c.append(b('custom ')),o.label&&c.append(b('edit ')),c.append(b(' ').text(l)),i&&c.append(b(' Roles.\">🔒 no access ")),m.append(c),o.color_bg&&m.css("background-color",o.color_bg),o.color_text&&m.find(".members-am-item-label").css("color",o.color_text),o.color_icon&&(m.find(".dashicons").css("color",o.color_icon),m.find(".members-am-fa-icon i").css("color",o.color_icon),m.find("img").css("filter","none"));var f=b('
');f.append(b(' ').text("◉"),b(' ').text("↑"),b(' ').text("↓")),m.append(f),n.append(m)}function A(s,e,a,n){var r=n.overrides&&n.overrides[s.id]||{},t=r.label||s.title,i=function(e,s){var a=f(e);if(-1!==a.hidden.indexOf(s))return!0;var n=g(s);return!(!n||-1===a.hidden.indexOf(n))}(a,s.id),o=!function(e){if(!e||"read"===e)return 1;for(var s=h.previewUserRoles||[],a=0;a").addClass(l).attr("data-id",s.id),c=b('
');if(!e){var d=r.icon||s.icon,u=S(d,r.icon_type||s.icon_type);"fontawesome"===u&&d?c.append(b(' ')):"svg"!==u&&"image"!==u&&"custom"!==u||!d?d&&0===d.indexOf("dashicons-")?c.append(b(' ')):c.append(b(' ')):c.append(b(" ").attr("src",d).css({width:"20px",height:"20px",display:"inline-block",verticalAlign:"middle",objectFit:"contain",filter:"none"}))}s.custom&&c.append(b('custom ')),r.label&&c.append(b('edit ')),c.append(b(' ').text(t)),o&&c.append(b('🔒 no access ")),m.append(c),r.color_bg&&m.css("background-color",r.color_bg),r.color_text&&m.find(".members-am-item-label").css("color",r.color_text),r.color_icon&&(m.find(".dashicons").css("color",r.color_icon),m.find(".members-am-fa-icon i").css("color",r.color_icon));var p=b('
');return p.append(b(' ').text(i?"◯":"◉"),b(' ').text("↑"),b(' ').text("↓")),m.append(p),m.on("click",function(e){b(e.target).closest("button").length||(h.selectedId=s.id,j())}),m}function P(){var a=b("#members-am-columns"),n={};a.find(".members-am-column").each(function(){var e=b(this).data("role");if(e){var s=b(this).find(".members-am-sidebar-list");s.length&&(n[e]=s.scrollTop())}}),a.empty();var e,s=h.carouselPage*h.columnsPerPage;if(h.activeRoleSlugs.slice(s,s+h.columnsPerPage).forEach(function(e){var s=b('
');!function(n,e){e.empty();var s=b(''),a=(d().filter(function(e){return e.slug===n})[0]||{}).label||n;s.append(b('').text(a)),s.append(b(' ').append(b(' ').text("◀"),b(' ').text("▶"))),e.append(s);var r=b('');_(n).forEach(function(e){if(0!==e.indexOf("sep-")){var a=u(e);if(a)if(I(n,a,null,r),a.children&&a.children.length)x(n,a.id).forEach(function(e){var s=u(a.id+"::"+e);s&&I(n,s,a.id,r)})}else r.append(b('
').text("—"))}),e.append(r)}(e,s),a.append(s),n[e]&&s.find(".members-am-sidebar-list").scrollTop(n[e])}),h.previewUserId){var i=h.previewUserId,r=b('
'),t=b('');t.append(b(" ").text(h.previewUserLabel||"User #"+i)),t.append(b('× ').on("click",function(){h.previewUserId=null,h.previewUserLabel=null,h.previewUserRoles=[],j()})),r.append(t);var o=b(''),l=f(i);((e=f(i)).order&&e.order.length?e.order:p()).forEach(function(a){if(0!==a.indexOf("sep-")){var n=u(a);if(n){o.append(A(n,null,i,l));var e,s,r,t=n.children||[];(e=a,s=t,(r=f(i)).submenu_order&&r.submenu_order[e]?r.submenu_order[e]:s.map(function(e){return e.id})).forEach(function(e){var s=function(e,s){if(!e||!e.children)return null;for(var a=0;a ').text("——"))}),r.append(o),a.append(r)}if(h.syncScroll){var m=a.find(".members-am-sidebar-list"),c=!1;m.on("scroll",function(){if(!c){c=!0;var e=b(this).scrollTop();m.not(this).scrollTop(e),c=!1}})}!function(){var e=Math.max(1,Math.ceil(h.activeRoleSlugs.length/h.columnsPerPage)),s=(Math.min(h.carouselPage+1,e),h.carouselPage*h.columnsPerPage+1),a=Math.min((h.carouselPage+1)*h.columnsPerPage,h.activeRoleSlugs.length);b("#members-am-carousel-status").text(s+"–"+a+" "+membersAdminMenus.i18n.of+" "+h.activeRoleSlugs.length);for(var n=b("#members-am-carousel-dots").empty(),r=0;r ').toggleClass("is-active",r===h.carouselPage))}()}function R(){if(h.selectedId){b("#members-am-edit-panel").removeAttr("hidden");var e=u(h.selectedId),s=function(){if(!h.selectedId)return null;var e=m();if(e){var s=f(e);return s.overrides&&s.overrides[h.selectedId]||{}}var a=l()[0];return a?v(a).overrides[h.selectedId]||{}:null}()||{};b("#members-am-edit-title").text(e?e.title:h.selectedId),b("#members-am-edit-label").val(s.label||e&&e.title||""),b("#members-am-edit-url").attr("placeholder","Override URL (leave empty for default)").val(s.url||e&&e.url||""),b("#members-am-edit-url").data("default-url",e&&e.url||""),b("#members-am-icon-type").val(s.icon_type||"dashicon"),b("#members-am-icon-value").val(s.icon||e&&e.icon||"");var a=s.icon||e&&e.icon||"",n=S(a,s.icon_type||e&&e.icon_type||"");"image"!==n&&"custom"!==n&&"svg"!==n||!a?b("#members-am-icon-preview").hide():b("#members-am-icon-preview").show().attr("src",a),b("#members-am-color-bg").val(s.color_bg||""),b("#members-am-color-text").val(s.color_text||""),b("#members-am-color-icon").val(s.color_icon||""),b("#members-am-item-cap").attr("placeholder",e&&e.cap?e.cap+" (default)":"").val(h.settings.capabilities[h.selectedId]||"");var r=e&&e.custom;b("#members-am-remove-custom").toggle(!!r),b("#members-am-visibility-toggles").empty();var t=e&&e.cap||"read";d().forEach(function(e){if("administrator"!==e.slug||h.settings._meta.admin_editable){var s=w(e.slug,h.selectedId),a=k(e.slug,t),n=b(' ').attr("data-role",e.slug).prop("checked",!s&&a);a||n.prop("disabled",!0);var r=b(' ').append(n,b(" ").text(e.label));a||(r.append(b(" ").text(" — no capability").css({color:"#999",fontStyle:"italic",marginLeft:"4px"})),r.css("opacity","0.5")),b("#members-am-visibility-toggles").append(r)}}),b(".members-am-color").each(function(){b(this).data("wpWpColorPicker")&&b(this).wpColorPicker("destroy")}),b(".members-am-color").wpColorPicker({change:function(e,s){setTimeout(function(){M()},20)},clear:function(){setTimeout(function(){M()},20)}}),U()}else b("#members-am-edit-panel").attr("hidden",!0)}function M(){if(h.selectedId){a("label",b("#members-am-edit-label").val());var e=b("#members-am-edit-url").val();a("url",e===(b("#members-am-edit-url").data("default-url")||"")?"":e);var s=b("#members-am-icon-value").val();a("icon_type",S(s,b("#members-am-icon-type").val())),a("icon",s),a("color_bg",b("#members-am-color-bg").val()),a("color_text",b("#members-am-color-text").val()),a("color_icon",b("#members-am-color-icon").val()),h.settings.capabilities[h.selectedId]=b("#members-am-item-cap").val()||"",P()}}function U(){var a=h.iconTab,n=(b("#members-am-icon-search").val()||"").toLowerCase(),r=b("#members-am-icon-grid").empty();("dashicons"===a?e:s).forEach(function(e){if(!n||-1!==e.indexOf(n)){var s=b(' ');"dashicons"===a?s.append(b(' ')):s.append(b(' ')),s.on("click",function(){b("#members-am-icon-value").val(e),b("#members-am-icon-type").val("dashicons"===a?"dashicon":"fontawesome"),M()}),r.append(s)}})}function E(e,s){var a=h.activeRoleSlugs.indexOf(e);if(-1!==a){var n=a+s;if(!(n<0||n>=h.activeRoleSlugs.length)){var r=h.activeRoleSlugs[a];h.activeRoleSlugs[a]=h.activeRoleSlugs[n],h.activeRoleSlugs[n]=r,o(),j()}}}function C(e,s,a){var n=g(s);if(n){var r=v(e).submenu_order;r[n]||(r[n]=y(n));var t=r[n],i=s.split("::"),o=i[1]||i[0];if(-1===(m=t.indexOf(o)))return;if((c=m+a)<0||c>=t.length)return;var l=t[m];t[m]=t[c],t[c]=l}else{v(e).order&&v(e).order.length||(v(e).order=p());var m,c,d=v(e).order;if(-1===(m=d.indexOf(s)))return;if((c=m+a)<0||c>=d.length)return;var u=d[m];d[m]=d[c],d[c]=u}j()}function T(){var e=l();if(e.length){var n="sep-"+Date.now();e.forEach(function(e){v(e).order&&v(e).order.length||(v(e).order=p());var s=v(e).order,a=h.selectedId?s.indexOf(h.selectedId):s.length-1;a<0&&(a=s.length),s.splice(a+1,0,n)}),j()}}function N(){var e=b("#members-am-save").prop("disabled",!0);b.post(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_save",nonce:membersAdminMenus.nonce,settings:JSON.stringify(h.settings)}).done(function(e){e.success?(alert(membersAdminMenus.i18n.saved),location.reload()):alert(e.data&&e.data.message?e.data.message:"Error")}).always(function(){e.prop("disabled",!1)})}function J(e,s){confirm("role"===e&&s?"Reset all settings for this role? This cannot be undone.":"Reset ALL menu settings for every role? This cannot be undone.")&&b.post(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_reset",nonce:membersAdminMenus.nonce,scope:e||"all",role:s||""},function(e){e.success?location.reload():alert(e.data&&e.data.message?e.data.message:"Reset failed.")})}function L(e){b.getJSON(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_user_search",nonce:membersAdminMenus.nonce,term:e},function(e){e.success&&e.data&&e.data.length?function(e){b(".members-am-user-suggestions").remove();var s=b("#members-am-user-search").parent();s.css("position","relative");var a=b('
');e.forEach(function(e){a.append(b('
').text(e.label).data("userId",e.id).on("click",function(){!function(e,s,a){h.previewUserId=e,h.previewUserLabel=s||"User #"+e,h.previewUserRoles=a||[],n(),h.settings.users[e]||(h.settings.users[e]={});j()}(e.id,e.label,e.roles),b(".members-am-user-suggestions").remove(),b("#members-am-user-search").val("")}))}),s.append(a),setTimeout(function(){b(document).one("click",function(){b(".members-am-user-suggestions").remove()})},0)}(e.data):b(".members-am-user-suggestions").remove()})}function F(){var s;b(document).on("click","#members-am-role-chips .members-am-chip",function(){var e=b(this).data("role"),s=h.activeRoleSlugs.indexOf(e);-1===s?h.activeRoleSlugs.push(e):1=r.length||(r.splice(o,1),r.splice(l,0,s))}}(s,a,b(this).closest(".members-am-item").hasClass("is-sub")?g(a):null,n?-1:1),P()}}),b("#members-am-save").on("click",N),b("#members-am-reset").on("click",function(e){e.stopPropagation(),b(".members-am-reset-dropdown").remove();var s=b(this),a=h.activeRoleSlugs||[],n=a.length?a[0]:"",r="";n&&(membersAdminMenus.roles||[]).forEach(function(e){e.slug===n&&(r=e.label)});var t=b('
');if(t.append(b('
').text("Reset Settings")),n&&r){var i=b(' ');i.append(b(' ')),i.append(b(' ').append(b(" ").text("Reset "+r),b(" ").text("Clear all menu settings for this role only"))),i.on("click",function(){b(".members-am-reset-dropdown").remove(),J("role",n)}),t.append(i)}var o=b(' ');o.append(b(' ')),o.append(b(' ').append(b(" ").text("Reset all roles"),b(" ").text("Clear all menu settings for every role"))),o.on("click",function(){b(".members-am-reset-dropdown").remove(),J("all")}),t.append(o),s.parent().css("position","relative"),t.insertAfter(s),b(document).one("click",function(){b(".members-am-reset-dropdown").remove()})}),b("#members-am-export").on("click",function(e){e.preventDefault(),window.location.href=membersAdminMenus.exportUrl}),b("#members-am-import").on("click",function(){b("#members-am-import-file").trigger("click")}),b("#members-am-import-file").on("change",function(){var e,s,a=this.files&&this.files[0];a&&(e=a,(s=new FileReader).onload=function(){try{var e=JSON.parse(s.result);b.post(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_import",nonce:membersAdminMenus.nonce,settings:JSON.stringify(e)}).done(function(e){e.success?location.reload():alert(e.data&&e.data.message?e.data.message:"Error")})}catch(e){alert("Invalid JSON")}},s.readAsText(e))}),b("#members-am-copy-apply").on("click",function(){var a=b("#members-am-copy-from").val(),s=b("#members-am-copy-to").val();if(a&&s)if(a!==s){var n="",r="";if(d().forEach(function(e){e.slug===a&&(n=e.label),e.slug===s&&(r=e.label)}),confirm('Copy menu settings from "'+n+'" to "'+r+'"?\nThis will overwrite "'+r+"\" menu configuration.\n\nNote: This copies menu order, hidden items, labels, icons, and colors.\nIt does NOT change the role's capabilities (items marked with a lock icon).")){var e=v(a),t={hidden:e.hidden?e.hidden.slice():[],order:[],submenu_order:{},overrides:{}},i=_(a);t.order=i.slice(),h.tree.forEach(function(e){if(e.children&&e.children.length){var s=x(a,e.id);s&&s.length&&(t.submenu_order[e.id]=s.slice())}}),e.overrides&&"object"==typeof e.overrides&&(t.overrides=JSON.parse(JSON.stringify(e.overrides))),h.settings.roles[s]=t,-1===h.activeRoleSlugs.indexOf(s)&&(h.activeRoleSlugs.push(s),o(),O()),j(),N()}}else alert("Source and target roles must be different.")}),b("#members-am-admin-editable").on("change",function(){var e=!0;b(this).is(":checked")&&(e=window.confirm(membersAdminMenus.i18n.adminEditableWarn)),e?(h.settings._meta.admin_editable=b(this).is(":checked"),c(),O(),o(),j()):b(this).prop("checked",!1)}),b("#members-am-sync-scroll").prop("checked",!1!==h.syncScroll),b("#members-am-sync-scroll").on("change",function(){h.syncScroll=b(this).is(":checked");try{localStorage.setItem("members_am_sync_scroll",h.syncScroll?"1":"0")}catch(e){}P()}),b("#members-am-add-item").on("click",function(){var e="c"+Date.now();h.settings.custom_items.push({id:e,label:"Custom link",url:window.location.origin+"/wp-admin/",icon_type:"dashicon",icon:"dashicons-admin-generic",parent:"",position:99,cap:"read"}),h.tree=r(),h.selectedId=i({id:e}),j(),R()}),b("#members-am-remove-custom").on("click",function(){var s=u(h.selectedId);s&&s.customId&&(h.settings.custom_items=(h.settings.custom_items||[]).filter(function(e){return e.id!==s.customId}),h.selectedId=null,h.tree=r(),j(),b("#members-am-edit-panel").attr("hidden",!0))}),b("#members-am-edit-close").on("click",function(){h.selectedId=null,b("#members-am-edit-panel").attr("hidden",!0),j()}),b("#members-am-edit-target-role").on("change",R),b("#members-am-edit-label, #members-am-edit-url, #members-am-icon-value").on("input",function(){M()}),b("#members-am-item-cap").on("input",function(){M()}),b(".members-am-icon-tabs .button").on("click",function(){b(".members-am-icon-tabs .button").removeClass("is-active"),b(this).addClass("is-active"),h.iconTab="fontawesome"===b(this).data("tab")?"fontawesome":"upload"===b(this).data("tab")?"upload":"dashicons",U()}),b("#members-am-icon-search").on("input",U),b("#members-am-media-upload").on("click",function(e){e.preventDefault(),h.mediaFrame||(h.mediaFrame=wp.media({title:"Choose menu icon",button:{text:"Use as icon"},multiple:!1,library:{type:"image"}}),h.mediaFrame.on("select",function(){var e=h.mediaFrame.state().get("selection").first().toJSON(),s=e.url||"";e.sizes&&(e.sizes.thumbnail?s=e.sizes.thumbnail.url:e.sizes.medium&&(s=e.sizes.medium.url)),b("#members-am-icon-type").val("custom"),b("#members-am-icon-value").val(s),M()})),h.mediaFrame.open()}),b(document).on("change",".members-am-vis-cb",function(){var e=b(this).data("role");if(b(this).is(":checked")){var s=v(e).hidden,a=s.indexOf(h.selectedId);-1!==a&&s.splice(a,1)}else-1===v(e).hidden.indexOf(h.selectedId)&&v(e).hidden.push(h.selectedId);j()}),b("#members-am-add-sep").on("click",T),b("#members-am-promote").on("click",function(){a("parent","__promote__"),M()}),b("#members-am-demote").on("click",function(){var e=window.prompt("Parent slug (e.g. edit.php)","edit.php");e&&(a("parent",e),M())}),b("#members-am-user-search").on("input",function(){var e=b(this).val();clearTimeout(s),s=setTimeout(function(){1 ").val("__all__").text("All roles")),h.activeRoleSlugs.forEach(function(s){var e=(d().filter(function(e){return e.slug===s})[0]||{}).label||s;a.append(b(" ").val(s).text(e))}),h.previewUserId&&a.append(b(" ").val("__user__"+h.previewUserId).text(h.previewUserLabel||"User #"+h.previewUserId)),h.selectedId&&R()}b(function(){var s,a,e;n(),h.tree=r(),c(),b("#members-am-admin-editable").prop("checked",!!h.settings._meta.admin_editable),s=b("#members-am-copy-from").empty(),a=b("#members-am-copy-to").empty(),(e=d()).forEach(function(e){s.append(b(" ").val(e.slug).text(e.label)),a.append(b(" ").val(e.slug).text(e.label))}),1n&&(h.carouselPage=n))}}h.activeRoleSlugs=s.filter(function(e){return"administrator"!==e||a}),h.activeRoleSlugs.length||(h.activeRoleSlugs=["subscriber"])}function O(){var r=b("#members-am-role-chips").empty();d().forEach(function(e){if("administrator"!==e.slug||h.settings._meta.admin_editable){var s=-1!==h.activeRoleSlugs.indexOf(e.slug),a=b(' ').text(e.label).attr("data-role",e.slug).toggleClass("is-active",s);r.append(a)}})}function S(e,s,a,r){var n=s.id,t=w(e,n),i=!k(e,s.cap),o=v(e).overrides[n]||{},l=o.label||s.title||n,m=b('
').attr("data-id",n).toggleClass("is-hidden",t).toggleClass("is-no-cap",i).toggleClass("is-selected",h.selectedId===n).toggleClass("is-sub",!!a),c=b('
');if(!a){var d=o.icon||s.icon,u=I(d,o.icon_type||s.icon_type);if("fontawesome"===u&&d)c.append(b(' '));else if("svg"!==u&&"image"!==u&&"custom"!==u||!d){var p=d&&0===d.indexOf("dashicons-")?d:"dashicons-admin-generic";c.append(b(' '))}else c.append(b(" ").attr("src",d).css({width:"20px",height:"20px",display:"inline-block",verticalAlign:"middle",objectFit:"contain",filter:"none"}))}s.custom&&c.append(b('custom ')),o.label&&c.append(b('edit ')),c.append(b(' ').text(l)),i&&c.append(b(' Roles.\">🔒 no access ")),m.append(c),o.color_bg&&m.css("background-color",o.color_bg),o.color_text&&m.find(".members-am-item-label").css("color",o.color_text),o.color_icon&&(m.find(".dashicons").css("color",o.color_icon),m.find(".members-am-fa-icon i").css("color",o.color_icon),m.find("img").css("filter","none"));var f=b('
');f.append(b(' ').text("◉"),b(' ').text("↑"),b(' ').text("↓")),m.append(f),r.append(m)}function A(s,e,a,r){var n=r.overrides&&r.overrides[s.id]||{},t=n.label||s.title,i=function(e,s){var a=f(e);if(-1!==a.hidden.indexOf(s))return!0;var r=g(s);return!(!r||-1===a.hidden.indexOf(r))}(a,s.id),o=!function(e){if(!e||"read"===e)return 1;for(var s=h.previewUserRoles||[],a=0;a").addClass(l).attr("data-id",s.id),c=b('
');if(!e){var d=n.icon||s.icon,u=I(d,n.icon_type||s.icon_type);"fontawesome"===u&&d?c.append(b(' ')):"svg"!==u&&"image"!==u&&"custom"!==u||!d?d&&0===d.indexOf("dashicons-")?c.append(b(' ')):c.append(b(' ')):c.append(b(" ").attr("src",d).css({width:"20px",height:"20px",display:"inline-block",verticalAlign:"middle",objectFit:"contain",filter:"none"}))}s.custom&&c.append(b('custom ')),n.label&&c.append(b('edit ')),c.append(b(' ').text(t)),o&&c.append(b('🔒 no access ")),m.append(c),n.color_bg&&m.css("background-color",n.color_bg),n.color_text&&m.find(".members-am-item-label").css("color",n.color_text),n.color_icon&&(m.find(".dashicons").css("color",n.color_icon),m.find(".members-am-fa-icon i").css("color",n.color_icon));var p=b('
');return p.append(b(' ').text(i?"◯":"◉"),b(' ').text("↑"),b(' ').text("↓")),m.append(p),m.on("click",function(e){b(e.target).closest("button").length||(h.selectedId=s.id,j())}),m}function P(){var a=b("#members-am-columns"),r={};a.find(".members-am-column").each(function(){var e=b(this).data("role");if(e){var s=b(this).find(".members-am-sidebar-list");s.length&&(r[e]=s.scrollTop())}}),a.empty();var e,s=h.carouselPage*h.columnsPerPage;if(h.activeRoleSlugs.slice(s,s+h.columnsPerPage).forEach(function(e){var s=b('
');!function(n,e){e.empty();var s=b(''),a=(d().filter(function(e){return e.slug===n})[0]||{}).label||n;s.append(b('').text(a)),s.append(b(' ').append(b(' ').text("◀"),b(' ').text("▶"))),e.append(s);var t=b('');y(n).forEach(function(e){if(0!==e.indexOf("sep-")){var r=u(e);if(r)if(S(n,r,null,t),r.children&&r.children.length)x(n,r.id).forEach(function(e){var s=r.id+"::"+e,a=u(s);if(a){if("__promote__"===(v(n).overrides[s]||{}).parent)return;S(n,a,r.id,t)}})}else t.append(b('
').text("—"))}),e.append(t)}(e,s),a.append(s),r[e]&&s.find(".members-am-sidebar-list").scrollTop(r[e])}),h.previewUserId){var i=h.previewUserId,n=b('
'),t=b('');t.append(b(" ").text(h.previewUserLabel||"User #"+i)),t.append(b('× ').on("click",function(){h.previewUserId=null,h.previewUserLabel=null,h.previewUserRoles=[],j()})),n.append(t);var o=b(''),l=f(i);((e=f(i)).order&&e.order.length?e.order:p()).forEach(function(a){if(0!==a.indexOf("sep-")){var r=u(a);if(r){o.append(A(r,null,i,l));var e,s,n,t=r.children||[];(e=a,s=t,(n=f(i)).submenu_order&&n.submenu_order[e]?n.submenu_order[e]:s.map(function(e){return e.id})).forEach(function(e){var s=function(e,s){if(!e||!e.children)return null;for(var a=0;a ').text("——"))}),n.append(o),a.append(n)}if(h.syncScroll){var m=a.find(".members-am-sidebar-list"),c=!1;m.on("scroll",function(){if(!c){c=!0;var e=b(this).scrollTop();m.not(this).scrollTop(e),c=!1}})}!function(){var e=Math.max(1,Math.ceil(h.activeRoleSlugs.length/h.columnsPerPage)),s=(Math.min(h.carouselPage+1,e),h.carouselPage*h.columnsPerPage+1),a=Math.min((h.carouselPage+1)*h.columnsPerPage,h.activeRoleSlugs.length);b("#members-am-carousel-status").text(s+"–"+a+" "+membersAdminMenus.i18n.of+" "+h.activeRoleSlugs.length);for(var r=b("#members-am-carousel-dots").empty(),n=0;n ').toggleClass("is-active",n===h.carouselPage))}()}function R(){if(h.selectedId){b("#members-am-edit-panel").removeAttr("hidden");var e=u(h.selectedId),s=function(){if(!h.selectedId)return null;var e=m();if(e){var s=f(e);return s.overrides&&s.overrides[h.selectedId]||{}}var a=l()[0];return a?v(a).overrides[h.selectedId]||{}:null}()||{};b("#members-am-edit-title").text(e?e.title:h.selectedId),b("#members-am-edit-label").val(s.label||e&&e.title||""),b("#members-am-edit-url").attr("placeholder","Override URL (leave empty for default)").val(s.url||e&&e.url||""),b("#members-am-edit-url").data("default-url",e&&e.url||""),b("#members-am-icon-type").val(s.icon_type||"dashicon"),b("#members-am-icon-value").val(s.icon||e&&e.icon||"");var a=s.icon||e&&e.icon||"",r=I(a,s.icon_type||e&&e.icon_type||"");"image"!==r&&"custom"!==r&&"svg"!==r||!a?b("#members-am-icon-preview").hide():b("#members-am-icon-preview").show().attr("src",a),b("#members-am-color-bg").val(s.color_bg||""),b("#members-am-color-text").val(s.color_text||""),b("#members-am-color-icon").val(s.color_icon||""),b("#members-am-item-cap").attr("placeholder",e&&e.cap?e.cap+" (default)":"").val(h.settings.capabilities[h.selectedId]||"");var n=e&&e.custom;b("#members-am-remove-custom").toggle(!!n),b("#members-am-visibility-toggles").empty();var t=e&&e.cap||"read";d().forEach(function(e){if("administrator"!==e.slug||h.settings._meta.admin_editable){var s=w(e.slug,h.selectedId),a=k(e.slug,t),r=b(' ').attr("data-role",e.slug).prop("checked",!s&&a);a||r.prop("disabled",!0);var n=b(' ').append(r,b(" ").text(e.label));a||(n.append(b(" ").text(" — no capability").css({color:"#999",fontStyle:"italic",marginLeft:"4px"})),n.css("opacity","0.5")),b("#members-am-visibility-toggles").append(n)}}),b(".members-am-color").each(function(){b(this).data("wpWpColorPicker")&&b(this).wpColorPicker("destroy")}),b(".members-am-color").wpColorPicker({change:function(e,s){setTimeout(function(){M()},20)},clear:function(){setTimeout(function(){M()},20)}}),E()}else b("#members-am-edit-panel").attr("hidden",!0)}function M(){if(h.selectedId){a("label",b("#members-am-edit-label").val());var e=b("#members-am-edit-url").val();a("url",e===(b("#members-am-edit-url").data("default-url")||"")?"":e);var s=b("#members-am-icon-value").val();a("icon_type",I(s,b("#members-am-icon-type").val())),a("icon",s),a("color_bg",b("#members-am-color-bg").val()),a("color_text",b("#members-am-color-text").val()),a("color_icon",b("#members-am-color-icon").val()),h.settings.capabilities[h.selectedId]=b("#members-am-item-cap").val()||"",P()}}function E(){var a=h.iconTab,r=(b("#members-am-icon-search").val()||"").toLowerCase(),n=b("#members-am-icon-grid").empty();("dashicons"===a?e:s).forEach(function(e){if(!r||-1!==e.indexOf(r)){var s=b(' ');"dashicons"===a?s.append(b(' ')):s.append(b(' ')),s.on("click",function(){b("#members-am-icon-value").val(e),b("#members-am-icon-type").val("dashicons"===a?"dashicon":"fontawesome"),M()}),n.append(s)}})}function U(e,s){var a=h.activeRoleSlugs.indexOf(e);if(-1!==a){var r=a+s;if(!(r<0||r>=h.activeRoleSlugs.length)){var n=h.activeRoleSlugs[a];h.activeRoleSlugs[a]=h.activeRoleSlugs[r],h.activeRoleSlugs[r]=n,o(),j()}}}function C(e,s,a){var r="__promote__"===(v(e).overrides[s]||{}).parent?null:g(s);if(r){var n=v(e).submenu_order;n[r]||(n[r]=_(r));var t=n[r],i=s.split("::"),o=i[1]||i[0];if(-1===(m=t.indexOf(o)))return;if((c=m+a)<0||c>=t.length)return;var l=t[m];t[m]=t[c],t[c]=l}else{v(e).order&&v(e).order.length||(v(e).order=p());var m,c,d=v(e).order;if(-1===(m=d.indexOf(s)))return;if((c=m+a)<0||c>=d.length)return;var u=d[m];d[m]=d[c],d[c]=u}j()}function T(){var e=l();if(e.length){var r="sep-"+Date.now();e.forEach(function(e){v(e).order&&v(e).order.length||(v(e).order=p());var s=v(e).order,a=h.selectedId?s.indexOf(h.selectedId):s.length-1;a<0&&(a=s.length),s.splice(a+1,0,r)}),j()}}function N(){var e=b("#members-am-save").prop("disabled",!0);b.post(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_save",nonce:membersAdminMenus.nonce,settings:JSON.stringify(h.settings)}).done(function(e){e.success?(alert(membersAdminMenus.i18n.saved),location.reload()):alert(e.data&&e.data.message?e.data.message:"Error")}).always(function(){e.prop("disabled",!1)})}function J(e,s){confirm("role"===e&&s?"Reset all settings for this role? This cannot be undone.":"Reset ALL menu settings for every role? This cannot be undone.")&&b.post(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_reset",nonce:membersAdminMenus.nonce,scope:e||"all",role:s||""},function(e){e.success?location.reload():alert(e.data&&e.data.message?e.data.message:"Reset failed.")})}function L(e){b.getJSON(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_user_search",nonce:membersAdminMenus.nonce,term:e},function(e){e.success&&e.data&&e.data.length?function(e){b(".members-am-user-suggestions").remove();var s=b("#members-am-user-search").parent();s.css("position","relative");var a=b('
');e.forEach(function(e){a.append(b('
').text(e.label).data("userId",e.id).on("click",function(){!function(e,s,a){h.previewUserId=e,h.previewUserLabel=s||"User #"+e,h.previewUserRoles=a||[],r(),h.settings.users[e]||(h.settings.users[e]={});j()}(e.id,e.label,e.roles),b(".members-am-user-suggestions").remove(),b("#members-am-user-search").val("")}))}),s.append(a),setTimeout(function(){b(document).one("click",function(){b(".members-am-user-suggestions").remove()})},0)}(e.data):b(".members-am-user-suggestions").remove()})}function F(){var s;b(document).on("click","#members-am-role-chips .members-am-chip",function(){var e=b(this).data("role"),s=h.activeRoleSlugs.indexOf(e);-1===s?h.activeRoleSlugs.push(e):1=n.length||(n.splice(o,1),n.splice(l,0,s))}}(s,a,b(this).closest(".members-am-item").hasClass("is-sub")?g(a):null,r?-1:1),P()}}),b("#members-am-save").on("click",N),b("#members-am-reset").on("click",function(e){e.stopPropagation(),b(".members-am-reset-dropdown").remove();var s=b(this),a=h.activeRoleSlugs||[],r=a.length?a[0]:"",n="";r&&(membersAdminMenus.roles||[]).forEach(function(e){e.slug===r&&(n=e.label)});var t=b('
');if(t.append(b('
').text("Reset Settings")),r&&n){var i=b(' ');i.append(b(' ')),i.append(b(' ').append(b(" ").text("Reset "+n),b(" ").text("Clear all menu settings for this role only"))),i.on("click",function(){b(".members-am-reset-dropdown").remove(),J("role",r)}),t.append(i)}var o=b(' ');o.append(b(' ')),o.append(b(' ').append(b(" ").text("Reset all roles"),b(" ").text("Clear all menu settings for every role"))),o.on("click",function(){b(".members-am-reset-dropdown").remove(),J("all")}),t.append(o),s.parent().css("position","relative"),t.insertAfter(s),b(document).one("click",function(){b(".members-am-reset-dropdown").remove()})}),b("#members-am-export").on("click",function(e){e.preventDefault(),window.location.href=membersAdminMenus.exportUrl}),b("#members-am-import").on("click",function(){b("#members-am-import-file").trigger("click")}),b("#members-am-import-file").on("change",function(){var e,s,a=this.files&&this.files[0];a&&(e=a,(s=new FileReader).onload=function(){try{var e=JSON.parse(s.result);b.post(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_import",nonce:membersAdminMenus.nonce,settings:JSON.stringify(e)}).done(function(e){e.success?location.reload():alert(e.data&&e.data.message?e.data.message:"Error")})}catch(e){alert("Invalid JSON")}},s.readAsText(e))}),b("#members-am-copy-apply").on("click",function(){var a=b("#members-am-copy-from").val(),s=b("#members-am-copy-to").val();if(a&&s)if(a!==s){var r="",n="";if(d().forEach(function(e){e.slug===a&&(r=e.label),e.slug===s&&(n=e.label)}),confirm('Copy menu settings from "'+r+'" to "'+n+'"?\nThis will overwrite "'+n+"\" menu configuration.\n\nNote: This copies menu order, hidden items, labels, icons, and colors.\nIt does NOT change the role's capabilities (items marked with a lock icon).")){var e=v(a),t={hidden:e.hidden?e.hidden.slice():[],order:[],submenu_order:{},overrides:{}},i=y(a);t.order=i.slice(),h.tree.forEach(function(e){if(e.children&&e.children.length){var s=x(a,e.id);s&&s.length&&(t.submenu_order[e.id]=s.slice())}}),e.overrides&&"object"==typeof e.overrides&&(t.overrides=JSON.parse(JSON.stringify(e.overrides))),h.settings.roles[s]=t,-1===h.activeRoleSlugs.indexOf(s)&&(h.activeRoleSlugs.push(s),o(),O()),j(),N()}}else alert("Source and target roles must be different.")}),b("#members-am-admin-editable").on("change",function(){var e=!0;b(this).is(":checked")&&(e=window.confirm(membersAdminMenus.i18n.adminEditableWarn)),e?(h.settings._meta.admin_editable=b(this).is(":checked"),c(),O(),o(),j()):b(this).prop("checked",!1)}),b("#members-am-sync-scroll").prop("checked",!1!==h.syncScroll),b("#members-am-sync-scroll").on("change",function(){h.syncScroll=b(this).is(":checked");try{localStorage.setItem("members_am_sync_scroll",h.syncScroll?"1":"0")}catch(e){}P()}),b("#members-am-add-item").on("click",function(){var e="c"+Date.now();h.settings.custom_items.push({id:e,label:"Custom link",url:window.location.origin+"/wp-admin/",icon_type:"dashicon",icon:"dashicons-admin-generic",parent:"",position:99,cap:"read"}),h.tree=n(),h.selectedId=i({id:e}),j(),R()}),b("#members-am-remove-custom").on("click",function(){var s=u(h.selectedId);s&&s.customId&&(h.settings.custom_items=(h.settings.custom_items||[]).filter(function(e){return e.id!==s.customId}),h.selectedId=null,h.tree=n(),j(),b("#members-am-edit-panel").attr("hidden",!0))}),b("#members-am-edit-close").on("click",function(){h.selectedId=null,b("#members-am-edit-panel").attr("hidden",!0),j()}),b("#members-am-edit-target-role").on("change",R),b("#members-am-edit-label, #members-am-edit-url, #members-am-icon-value").on("input",function(){M()}),b("#members-am-item-cap").on("input",function(){M()}),b(".members-am-icon-tabs .button").on("click",function(){b(".members-am-icon-tabs .button").removeClass("is-active"),b(this).addClass("is-active"),h.iconTab="fontawesome"===b(this).data("tab")?"fontawesome":"upload"===b(this).data("tab")?"upload":"dashicons",E()}),b("#members-am-icon-search").on("input",E),b("#members-am-media-upload").on("click",function(e){e.preventDefault(),h.mediaFrame||(h.mediaFrame=wp.media({title:"Choose menu icon",button:{text:"Use as icon"},multiple:!1,library:{type:"image"}}),h.mediaFrame.on("select",function(){var e=h.mediaFrame.state().get("selection").first().toJSON(),s=e.url||"";e.sizes&&(e.sizes.thumbnail?s=e.sizes.thumbnail.url:e.sizes.medium&&(s=e.sizes.medium.url)),b("#members-am-icon-type").val("custom"),b("#members-am-icon-value").val(s),M()})),h.mediaFrame.open()}),b(document).on("change",".members-am-vis-cb",function(){var e=b(this).data("role");if(b(this).is(":checked")){var s=v(e).hidden,a=s.indexOf(h.selectedId);-1!==a&&s.splice(a,1)}else-1===v(e).hidden.indexOf(h.selectedId)&&v(e).hidden.push(h.selectedId);j()}),b("#members-am-add-sep").on("click",T),b("#members-am-promote").on("click",function(){if(h.selectedId){a("parent","__promote__");var r=g(h.selectedId);l().forEach(function(e){var s=v(e);if(s.order&&s.order.length||(s.order=p()),-1===s.order.indexOf(h.selectedId))if(r){var a=s.order.indexOf(r);-1!==a?s.order.splice(a+1,0,h.selectedId):s.order.push(h.selectedId)}else s.order.push(h.selectedId)}),M()}}),b("#members-am-demote").on("click",function(){var e=window.prompt("Parent slug (e.g. edit.php)","edit.php");e&&(a("parent",e),M())}),b("#members-am-user-search").on("input",function(){var e=b(this).val();clearTimeout(s),s=setTimeout(function(){1 ").val("__all__").text("All roles")),h.activeRoleSlugs.forEach(function(s){var e=(d().filter(function(e){return e.slug===s})[0]||{}).label||s;a.append(b(" ").val(s).text(e))}),h.previewUserId&&a.append(b(" ").val("__user__"+h.previewUserId).text(h.previewUserLabel||"User #"+h.previewUserId)),h.selectedId&&R()}b(function(){var s,a,e;r(),h.tree=n(),c(),b("#members-am-admin-editable").prop("checked",!!h.settings._meta.admin_editable),s=b("#members-am-copy-from").empty(),a=b("#members-am-copy-to").empty(),(e=d()).forEach(function(e){s.append(b(" ").val(e.slug).text(e.label)),a.append(b(" ").val(e.slug).text(e.label))}),1
Date: Wed, 8 Apr 2026 15:12:24 +0200
Subject: [PATCH 09/73] feat(admin): add badge functionality to admin menus
---
.../members-admin-menus/app/functions-admin.php | 7 +++++++
addons/members-admin-menus/app/functions.php | 12 ++++++++++++
js/admin-menus.js | 16 ++++++++++++++--
js/admin-menus.min.js | 2 +-
4 files changed, 34 insertions(+), 3 deletions(-)
diff --git a/addons/members-admin-menus/app/functions-admin.php b/addons/members-admin-menus/app/functions-admin.php
index 42cc1e1..dd94147 100644
--- a/addons/members-admin-menus/app/functions-admin.php
+++ b/addons/members-admin-menus/app/functions-admin.php
@@ -292,6 +292,11 @@ function render_admin_menus_page() {
+
@@ -579,6 +584,8 @@ function sanitize_role_config( $cfg ) {
'color_bg' => isset( $ov['color_bg'] ) ? sanitize_hex_color( $ov['color_bg'] ) : '',
'color_text' => isset( $ov['color_text'] ) ? sanitize_hex_color( $ov['color_text'] ) : '',
'color_icon' => isset( $ov['color_icon'] ) ? sanitize_hex_color( $ov['color_icon'] ) : '',
+ 'badge' => isset( $ov['badge'] ) ? sanitize_text_field( $ov['badge'] ) : '',
+ 'badge_bg' => isset( $ov['badge_bg'] ) ? sanitize_hex_color( $ov['badge_bg'] ) : '',
);
// Only include 'parent' when explicitly set — prevents accidental promotion.
if ( isset( $ov['parent'] ) && '' !== $ov['parent'] ) {
diff --git a/addons/members-admin-menus/app/functions.php b/addons/members-admin-menus/app/functions.php
index b3a2a3b..05c5f41 100644
--- a/addons/members-admin-menus/app/functions.php
+++ b/addons/members-admin-menus/app/functions.php
@@ -373,6 +373,12 @@ function apply_menu_overrides( $overrides ) {
if ( ! empty( $o['label'] ) ) {
$menu[ $k ][0] = wp_strip_all_tags( $o['label'] );
}
+ if ( ! empty( $o['badge'] ) ) {
+ $badge_text = esc_html( $o['badge'] );
+ $badge_bg = ! empty( $o['badge_bg'] ) ? sanitize_hex_color( $o['badge_bg'] ) : '#d63638';
+ $badge_html = ' ';
+ $menu[ $k ][0] .= $badge_html;
+ }
if ( ! empty( $o['url'] ) ) {
$menu[ $k ][2] = esc_url_raw( $o['url'] );
}
@@ -417,6 +423,12 @@ function apply_menu_overrides( $overrides ) {
if ( ! empty( $o['label'] ) ) {
$submenu[ $parent ][ $idx ][0] = wp_strip_all_tags( $o['label'] );
}
+ if ( ! empty( $o['badge'] ) ) {
+ $badge_text = esc_html( $o['badge'] );
+ $badge_bg = ! empty( $o['badge_bg'] ) ? sanitize_hex_color( $o['badge_bg'] ) : '#d63638';
+ $badge_html = ' ';
+ $submenu[ $parent ][ $idx ][0] .= $badge_html;
+ }
if ( ! empty( $o['url'] ) ) {
$submenu[ $parent ][ $idx ][2] = esc_url_raw( $o['url'] );
}
diff --git a/js/admin-menus.js b/js/admin-menus.js
index ca3079c..2ddb57d 100644
--- a/js/admin-menus.js
+++ b/js/admin-menus.js
@@ -620,6 +620,10 @@
$main.append($('
edit '));
}
$main.append($('
').text(label));
+ if (ov.badge) {
+ var badgeBg = ov.badge_bg || '#d63638';
+ $main.append($('
').text(ov.badge).css({ backgroundColor: badgeBg, color: '#fff', fontSize: '9px', padding: '1px 5px', borderRadius: '2px', marginLeft: '4px', whiteSpace: 'nowrap' }));
+ }
if (noCap) {
$main.append($('
🔒 no access '));
}
@@ -635,7 +639,7 @@
if (ov.color_icon) {
$row.find('.dashicons').css('color', ov.color_icon);
$row.find('.members-am-fa-icon i').css('color', ov.color_icon);
- $row.find('img').css('filter', 'none'); // Don't tint uploaded images with icon color
+ $row.find('img').css('filter', 'none');
}
var $hover = $('
');
@@ -685,6 +689,10 @@
$main.append($('
edit '));
}
$main.append($('
').text(label));
+ if (ov.badge) {
+ var badgeBg = ov.badge_bg || '#d63638';
+ $main.append($('
').text(ov.badge).css({ backgroundColor: badgeBg, color: '#fff', fontSize: '9px', padding: '1px 5px', borderRadius: '2px', marginLeft: '4px', whiteSpace: 'nowrap' }));
+ }
if (noCap) {
$main.append($('
🔒 no access '));
}
@@ -851,6 +859,8 @@
$('#members-am-color-bg').val(ov.color_bg || '');
$('#members-am-color-text').val(ov.color_text || '');
$('#members-am-color-icon').val(ov.color_icon || '');
+ $('#members-am-badge-text').val(ov.badge || '');
+ $('#members-am-badge-bg').val(ov.badge_bg || '');
$('#members-am-item-cap')
.attr('placeholder', (node && node.cap) ? node.cap + ' (default)' : '')
.val(state.settings.capabilities[state.selectedId] || '');
@@ -927,6 +937,8 @@
setOverrideField('color_bg', $('#members-am-color-bg').val());
setOverrideField('color_text', $('#members-am-color-text').val());
setOverrideField('color_icon', $('#members-am-color-icon').val());
+ setOverrideField('badge', $('#members-am-badge-text').val());
+ setOverrideField('badge_bg', $('#members-am-badge-bg').val());
state.settings.capabilities[state.selectedId] = $('#members-am-item-cap').val() || '';
renderColumns();
}
@@ -1423,7 +1435,7 @@
$('#members-am-edit-target-role').on('change', openEditPanel);
- $('#members-am-edit-label, #members-am-edit-url, #members-am-icon-value').on('input', function () {
+ $('#members-am-edit-label, #members-am-edit-url, #members-am-icon-value, #members-am-badge-text').on('input', function () {
pushOverridesFromForm();
});
diff --git a/js/admin-menus.min.js b/js/admin-menus.min.js
index fc48e9c..1bbc009 100644
--- a/js/admin-menus.min.js
+++ b/js/admin-menus.min.js
@@ -1 +1 @@
-!function(b){"use strict";var h={settings:b.extend(!0,{},membersAdminMenus.settings),tree:[],activeRoleSlugs:[],carouselPage:0,columnsPerPage:3,selectedId:null,iconTab:"dashicons",previewUserId:null,previewUserRoles:[],userSuggestions:[],mediaFrame:null,syncScroll:function(){try{return"0"!==localStorage.getItem("members_am_sync_scroll")}catch(e){return!0}}()},e=["dashicons-menu","dashicons-admin-dashboard","dashicons-admin-post","dashicons-admin-page","dashicons-admin-media","dashicons-admin-comments","dashicons-admin-appearance","dashicons-admin-plugins","dashicons-admin-users","dashicons-admin-tools","dashicons-admin-settings","dashicons-admin-generic","dashicons-edit","dashicons-plus","dashicons-chart-bar","dashicons-cart","dashicons-products","dashicons-email","dashicons-groups","dashicons-heart","dashicons-star-filled","dashicons-smiley","dashicons-info","dashicons-lock","dashicons-unlock","dashicons-visibility","dashicons-hidden","dashicons-arrow-up","dashicons-arrow-down","dashicons-admin-network","dashicons-performance"],s=["fa-solid fa-house","fa-solid fa-user","fa-solid fa-gear","fa-solid fa-file","fa-solid fa-image","fa-solid fa-cart-shopping","fa-solid fa-chart-line","fa-solid fa-envelope","fa-solid fa-book","fa-solid fa-link","fa-solid fa-bell","fa-solid fa-star","fa-solid fa-heart","fa-solid fa-lock","fa-solid fa-unlock","fa-solid fa-pen","fa-solid fa-trash","fa-solid fa-plus","fa-solid fa-minus"],t="members_am_view_state";function o(){try{localStorage.setItem(t,JSON.stringify({activeRoleSlugs:h.activeRoleSlugs,carouselPage:h.carouselPage}))}catch(e){}}function d(){return membersAdminMenus.roles||[]}function r(){h.settings._meta&&!Array.isArray(h.settings._meta)||(h.settings._meta={version:3,admin_editable:!1}),h.settings.roles&&!Array.isArray(h.settings.roles)||(h.settings.roles={}),h.settings.users&&!Array.isArray(h.settings.users)||(h.settings.users={}),Array.isArray(h.settings.custom_items)||(h.settings.custom_items=[]),h.settings.capabilities&&!Array.isArray(h.settings.capabilities)||(h.settings.capabilities={})}function v(e){r(),h.settings.roles[e]||(h.settings.roles[e]={hidden:[],order:[],submenu_order:{},overrides:{}});var s=h.settings.roles[e];return s.hidden&&Array.isArray(s.hidden)||(s.hidden=[]),s.order&&Array.isArray(s.order)||(s.order=[]),s.submenu_order&&!Array.isArray(s.submenu_order)||(s.submenu_order={}),s.overrides&&!Array.isArray(s.overrides)||(s.overrides={}),s}function f(e){r(),h.settings.users[e]||(h.settings.users[e]={});var s=h.settings.users[e];return s.hidden&&Array.isArray(s.hidden)||(s.hidden=[]),s.order&&Array.isArray(s.order)||(s.order=[]),s.overrides&&!Array.isArray(s.overrides)||(s.overrides={}),s.submenu_order&&!Array.isArray(s.submenu_order)||(s.submenu_order={}),s}function i(e){var s=e.id||"c";return"members-am-"+String(s).replace(/[^a-z0-9_-]/gi,"-").toLowerCase()}function n(){var r=b.extend(!0,[],membersAdminMenus.menuTree||[]),n={};return r.forEach(function(e){n[e.id]=!0}),(h.settings.custom_items||[]).forEach(function(e){if(e&&e.id){var s=i(e);if(n[s]){for(var a=0;a
n&&(h.carouselPage=n))}}h.activeRoleSlugs=s.filter(function(e){return"administrator"!==e||a}),h.activeRoleSlugs.length||(h.activeRoleSlugs=["subscriber"])}function O(){var r=b("#members-am-role-chips").empty();d().forEach(function(e){if("administrator"!==e.slug||h.settings._meta.admin_editable){var s=-1!==h.activeRoleSlugs.indexOf(e.slug),a=b(' ').text(e.label).attr("data-role",e.slug).toggleClass("is-active",s);r.append(a)}})}function S(e,s,a,r){var n=s.id,t=w(e,n),i=!k(e,s.cap),o=v(e).overrides[n]||{},l=o.label||s.title||n,m=b('
').attr("data-id",n).toggleClass("is-hidden",t).toggleClass("is-no-cap",i).toggleClass("is-selected",h.selectedId===n).toggleClass("is-sub",!!a),c=b('
');if(!a){var d=o.icon||s.icon,u=I(d,o.icon_type||s.icon_type);if("fontawesome"===u&&d)c.append(b(' '));else if("svg"!==u&&"image"!==u&&"custom"!==u||!d){var p=d&&0===d.indexOf("dashicons-")?d:"dashicons-admin-generic";c.append(b(' '))}else c.append(b(" ").attr("src",d).css({width:"20px",height:"20px",display:"inline-block",verticalAlign:"middle",objectFit:"contain",filter:"none"}))}s.custom&&c.append(b('custom ')),o.label&&c.append(b('edit ')),c.append(b(' ').text(l)),i&&c.append(b(' Roles.\">🔒 no access ")),m.append(c),o.color_bg&&m.css("background-color",o.color_bg),o.color_text&&m.find(".members-am-item-label").css("color",o.color_text),o.color_icon&&(m.find(".dashicons").css("color",o.color_icon),m.find(".members-am-fa-icon i").css("color",o.color_icon),m.find("img").css("filter","none"));var f=b('
');f.append(b(' ').text("◉"),b(' ').text("↑"),b(' ').text("↓")),m.append(f),r.append(m)}function A(s,e,a,r){var n=r.overrides&&r.overrides[s.id]||{},t=n.label||s.title,i=function(e,s){var a=f(e);if(-1!==a.hidden.indexOf(s))return!0;var r=g(s);return!(!r||-1===a.hidden.indexOf(r))}(a,s.id),o=!function(e){if(!e||"read"===e)return 1;for(var s=h.previewUserRoles||[],a=0;a").addClass(l).attr("data-id",s.id),c=b('
');if(!e){var d=n.icon||s.icon,u=I(d,n.icon_type||s.icon_type);"fontawesome"===u&&d?c.append(b(' ')):"svg"!==u&&"image"!==u&&"custom"!==u||!d?d&&0===d.indexOf("dashicons-")?c.append(b(' ')):c.append(b(' ')):c.append(b(" ").attr("src",d).css({width:"20px",height:"20px",display:"inline-block",verticalAlign:"middle",objectFit:"contain",filter:"none"}))}s.custom&&c.append(b('custom ')),n.label&&c.append(b('edit ')),c.append(b(' ').text(t)),o&&c.append(b('🔒 no access ")),m.append(c),n.color_bg&&m.css("background-color",n.color_bg),n.color_text&&m.find(".members-am-item-label").css("color",n.color_text),n.color_icon&&(m.find(".dashicons").css("color",n.color_icon),m.find(".members-am-fa-icon i").css("color",n.color_icon));var p=b('
');return p.append(b(' ').text(i?"◯":"◉"),b(' ').text("↑"),b(' ').text("↓")),m.append(p),m.on("click",function(e){b(e.target).closest("button").length||(h.selectedId=s.id,j())}),m}function P(){var a=b("#members-am-columns"),r={};a.find(".members-am-column").each(function(){var e=b(this).data("role");if(e){var s=b(this).find(".members-am-sidebar-list");s.length&&(r[e]=s.scrollTop())}}),a.empty();var e,s=h.carouselPage*h.columnsPerPage;if(h.activeRoleSlugs.slice(s,s+h.columnsPerPage).forEach(function(e){var s=b('
');!function(n,e){e.empty();var s=b(''),a=(d().filter(function(e){return e.slug===n})[0]||{}).label||n;s.append(b('').text(a)),s.append(b(' ').append(b(' ').text("◀"),b(' ').text("▶"))),e.append(s);var t=b('');y(n).forEach(function(e){if(0!==e.indexOf("sep-")){var r=u(e);if(r)if(S(n,r,null,t),r.children&&r.children.length)x(n,r.id).forEach(function(e){var s=r.id+"::"+e,a=u(s);if(a){if("__promote__"===(v(n).overrides[s]||{}).parent)return;S(n,a,r.id,t)}})}else t.append(b('
').text("—"))}),e.append(t)}(e,s),a.append(s),r[e]&&s.find(".members-am-sidebar-list").scrollTop(r[e])}),h.previewUserId){var i=h.previewUserId,n=b('
'),t=b('');t.append(b(" ").text(h.previewUserLabel||"User #"+i)),t.append(b('× ').on("click",function(){h.previewUserId=null,h.previewUserLabel=null,h.previewUserRoles=[],j()})),n.append(t);var o=b(''),l=f(i);((e=f(i)).order&&e.order.length?e.order:p()).forEach(function(a){if(0!==a.indexOf("sep-")){var r=u(a);if(r){o.append(A(r,null,i,l));var e,s,n,t=r.children||[];(e=a,s=t,(n=f(i)).submenu_order&&n.submenu_order[e]?n.submenu_order[e]:s.map(function(e){return e.id})).forEach(function(e){var s=function(e,s){if(!e||!e.children)return null;for(var a=0;a ').text("——"))}),n.append(o),a.append(n)}if(h.syncScroll){var m=a.find(".members-am-sidebar-list"),c=!1;m.on("scroll",function(){if(!c){c=!0;var e=b(this).scrollTop();m.not(this).scrollTop(e),c=!1}})}!function(){var e=Math.max(1,Math.ceil(h.activeRoleSlugs.length/h.columnsPerPage)),s=(Math.min(h.carouselPage+1,e),h.carouselPage*h.columnsPerPage+1),a=Math.min((h.carouselPage+1)*h.columnsPerPage,h.activeRoleSlugs.length);b("#members-am-carousel-status").text(s+"–"+a+" "+membersAdminMenus.i18n.of+" "+h.activeRoleSlugs.length);for(var r=b("#members-am-carousel-dots").empty(),n=0;n ').toggleClass("is-active",n===h.carouselPage))}()}function R(){if(h.selectedId){b("#members-am-edit-panel").removeAttr("hidden");var e=u(h.selectedId),s=function(){if(!h.selectedId)return null;var e=m();if(e){var s=f(e);return s.overrides&&s.overrides[h.selectedId]||{}}var a=l()[0];return a?v(a).overrides[h.selectedId]||{}:null}()||{};b("#members-am-edit-title").text(e?e.title:h.selectedId),b("#members-am-edit-label").val(s.label||e&&e.title||""),b("#members-am-edit-url").attr("placeholder","Override URL (leave empty for default)").val(s.url||e&&e.url||""),b("#members-am-edit-url").data("default-url",e&&e.url||""),b("#members-am-icon-type").val(s.icon_type||"dashicon"),b("#members-am-icon-value").val(s.icon||e&&e.icon||"");var a=s.icon||e&&e.icon||"",r=I(a,s.icon_type||e&&e.icon_type||"");"image"!==r&&"custom"!==r&&"svg"!==r||!a?b("#members-am-icon-preview").hide():b("#members-am-icon-preview").show().attr("src",a),b("#members-am-color-bg").val(s.color_bg||""),b("#members-am-color-text").val(s.color_text||""),b("#members-am-color-icon").val(s.color_icon||""),b("#members-am-item-cap").attr("placeholder",e&&e.cap?e.cap+" (default)":"").val(h.settings.capabilities[h.selectedId]||"");var n=e&&e.custom;b("#members-am-remove-custom").toggle(!!n),b("#members-am-visibility-toggles").empty();var t=e&&e.cap||"read";d().forEach(function(e){if("administrator"!==e.slug||h.settings._meta.admin_editable){var s=w(e.slug,h.selectedId),a=k(e.slug,t),r=b(' ').attr("data-role",e.slug).prop("checked",!s&&a);a||r.prop("disabled",!0);var n=b(' ').append(r,b(" ").text(e.label));a||(n.append(b(" ").text(" — no capability").css({color:"#999",fontStyle:"italic",marginLeft:"4px"})),n.css("opacity","0.5")),b("#members-am-visibility-toggles").append(n)}}),b(".members-am-color").each(function(){b(this).data("wpWpColorPicker")&&b(this).wpColorPicker("destroy")}),b(".members-am-color").wpColorPicker({change:function(e,s){setTimeout(function(){M()},20)},clear:function(){setTimeout(function(){M()},20)}}),E()}else b("#members-am-edit-panel").attr("hidden",!0)}function M(){if(h.selectedId){a("label",b("#members-am-edit-label").val());var e=b("#members-am-edit-url").val();a("url",e===(b("#members-am-edit-url").data("default-url")||"")?"":e);var s=b("#members-am-icon-value").val();a("icon_type",I(s,b("#members-am-icon-type").val())),a("icon",s),a("color_bg",b("#members-am-color-bg").val()),a("color_text",b("#members-am-color-text").val()),a("color_icon",b("#members-am-color-icon").val()),h.settings.capabilities[h.selectedId]=b("#members-am-item-cap").val()||"",P()}}function E(){var a=h.iconTab,r=(b("#members-am-icon-search").val()||"").toLowerCase(),n=b("#members-am-icon-grid").empty();("dashicons"===a?e:s).forEach(function(e){if(!r||-1!==e.indexOf(r)){var s=b(' ');"dashicons"===a?s.append(b(' ')):s.append(b(' ')),s.on("click",function(){b("#members-am-icon-value").val(e),b("#members-am-icon-type").val("dashicons"===a?"dashicon":"fontawesome"),M()}),n.append(s)}})}function U(e,s){var a=h.activeRoleSlugs.indexOf(e);if(-1!==a){var r=a+s;if(!(r<0||r>=h.activeRoleSlugs.length)){var n=h.activeRoleSlugs[a];h.activeRoleSlugs[a]=h.activeRoleSlugs[r],h.activeRoleSlugs[r]=n,o(),j()}}}function C(e,s,a){var r="__promote__"===(v(e).overrides[s]||{}).parent?null:g(s);if(r){var n=v(e).submenu_order;n[r]||(n[r]=_(r));var t=n[r],i=s.split("::"),o=i[1]||i[0];if(-1===(m=t.indexOf(o)))return;if((c=m+a)<0||c>=t.length)return;var l=t[m];t[m]=t[c],t[c]=l}else{v(e).order&&v(e).order.length||(v(e).order=p());var m,c,d=v(e).order;if(-1===(m=d.indexOf(s)))return;if((c=m+a)<0||c>=d.length)return;var u=d[m];d[m]=d[c],d[c]=u}j()}function T(){var e=l();if(e.length){var r="sep-"+Date.now();e.forEach(function(e){v(e).order&&v(e).order.length||(v(e).order=p());var s=v(e).order,a=h.selectedId?s.indexOf(h.selectedId):s.length-1;a<0&&(a=s.length),s.splice(a+1,0,r)}),j()}}function N(){var e=b("#members-am-save").prop("disabled",!0);b.post(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_save",nonce:membersAdminMenus.nonce,settings:JSON.stringify(h.settings)}).done(function(e){e.success?(alert(membersAdminMenus.i18n.saved),location.reload()):alert(e.data&&e.data.message?e.data.message:"Error")}).always(function(){e.prop("disabled",!1)})}function J(e,s){confirm("role"===e&&s?"Reset all settings for this role? This cannot be undone.":"Reset ALL menu settings for every role? This cannot be undone.")&&b.post(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_reset",nonce:membersAdminMenus.nonce,scope:e||"all",role:s||""},function(e){e.success?location.reload():alert(e.data&&e.data.message?e.data.message:"Reset failed.")})}function L(e){b.getJSON(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_user_search",nonce:membersAdminMenus.nonce,term:e},function(e){e.success&&e.data&&e.data.length?function(e){b(".members-am-user-suggestions").remove();var s=b("#members-am-user-search").parent();s.css("position","relative");var a=b('
');e.forEach(function(e){a.append(b('
').text(e.label).data("userId",e.id).on("click",function(){!function(e,s,a){h.previewUserId=e,h.previewUserLabel=s||"User #"+e,h.previewUserRoles=a||[],r(),h.settings.users[e]||(h.settings.users[e]={});j()}(e.id,e.label,e.roles),b(".members-am-user-suggestions").remove(),b("#members-am-user-search").val("")}))}),s.append(a),setTimeout(function(){b(document).one("click",function(){b(".members-am-user-suggestions").remove()})},0)}(e.data):b(".members-am-user-suggestions").remove()})}function F(){var s;b(document).on("click","#members-am-role-chips .members-am-chip",function(){var e=b(this).data("role"),s=h.activeRoleSlugs.indexOf(e);-1===s?h.activeRoleSlugs.push(e):1=n.length||(n.splice(o,1),n.splice(l,0,s))}}(s,a,b(this).closest(".members-am-item").hasClass("is-sub")?g(a):null,r?-1:1),P()}}),b("#members-am-save").on("click",N),b("#members-am-reset").on("click",function(e){e.stopPropagation(),b(".members-am-reset-dropdown").remove();var s=b(this),a=h.activeRoleSlugs||[],r=a.length?a[0]:"",n="";r&&(membersAdminMenus.roles||[]).forEach(function(e){e.slug===r&&(n=e.label)});var t=b('
');if(t.append(b('
').text("Reset Settings")),r&&n){var i=b(' ');i.append(b(' ')),i.append(b(' ').append(b(" ").text("Reset "+n),b(" ").text("Clear all menu settings for this role only"))),i.on("click",function(){b(".members-am-reset-dropdown").remove(),J("role",r)}),t.append(i)}var o=b(' ');o.append(b(' ')),o.append(b(' ').append(b(" ").text("Reset all roles"),b(" ").text("Clear all menu settings for every role"))),o.on("click",function(){b(".members-am-reset-dropdown").remove(),J("all")}),t.append(o),s.parent().css("position","relative"),t.insertAfter(s),b(document).one("click",function(){b(".members-am-reset-dropdown").remove()})}),b("#members-am-export").on("click",function(e){e.preventDefault(),window.location.href=membersAdminMenus.exportUrl}),b("#members-am-import").on("click",function(){b("#members-am-import-file").trigger("click")}),b("#members-am-import-file").on("change",function(){var e,s,a=this.files&&this.files[0];a&&(e=a,(s=new FileReader).onload=function(){try{var e=JSON.parse(s.result);b.post(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_import",nonce:membersAdminMenus.nonce,settings:JSON.stringify(e)}).done(function(e){e.success?location.reload():alert(e.data&&e.data.message?e.data.message:"Error")})}catch(e){alert("Invalid JSON")}},s.readAsText(e))}),b("#members-am-copy-apply").on("click",function(){var a=b("#members-am-copy-from").val(),s=b("#members-am-copy-to").val();if(a&&s)if(a!==s){var r="",n="";if(d().forEach(function(e){e.slug===a&&(r=e.label),e.slug===s&&(n=e.label)}),confirm('Copy menu settings from "'+r+'" to "'+n+'"?\nThis will overwrite "'+n+"\" menu configuration.\n\nNote: This copies menu order, hidden items, labels, icons, and colors.\nIt does NOT change the role's capabilities (items marked with a lock icon).")){var e=v(a),t={hidden:e.hidden?e.hidden.slice():[],order:[],submenu_order:{},overrides:{}},i=y(a);t.order=i.slice(),h.tree.forEach(function(e){if(e.children&&e.children.length){var s=x(a,e.id);s&&s.length&&(t.submenu_order[e.id]=s.slice())}}),e.overrides&&"object"==typeof e.overrides&&(t.overrides=JSON.parse(JSON.stringify(e.overrides))),h.settings.roles[s]=t,-1===h.activeRoleSlugs.indexOf(s)&&(h.activeRoleSlugs.push(s),o(),O()),j(),N()}}else alert("Source and target roles must be different.")}),b("#members-am-admin-editable").on("change",function(){var e=!0;b(this).is(":checked")&&(e=window.confirm(membersAdminMenus.i18n.adminEditableWarn)),e?(h.settings._meta.admin_editable=b(this).is(":checked"),c(),O(),o(),j()):b(this).prop("checked",!1)}),b("#members-am-sync-scroll").prop("checked",!1!==h.syncScroll),b("#members-am-sync-scroll").on("change",function(){h.syncScroll=b(this).is(":checked");try{localStorage.setItem("members_am_sync_scroll",h.syncScroll?"1":"0")}catch(e){}P()}),b("#members-am-add-item").on("click",function(){var e="c"+Date.now();h.settings.custom_items.push({id:e,label:"Custom link",url:window.location.origin+"/wp-admin/",icon_type:"dashicon",icon:"dashicons-admin-generic",parent:"",position:99,cap:"read"}),h.tree=n(),h.selectedId=i({id:e}),j(),R()}),b("#members-am-remove-custom").on("click",function(){var s=u(h.selectedId);s&&s.customId&&(h.settings.custom_items=(h.settings.custom_items||[]).filter(function(e){return e.id!==s.customId}),h.selectedId=null,h.tree=n(),j(),b("#members-am-edit-panel").attr("hidden",!0))}),b("#members-am-edit-close").on("click",function(){h.selectedId=null,b("#members-am-edit-panel").attr("hidden",!0),j()}),b("#members-am-edit-target-role").on("change",R),b("#members-am-edit-label, #members-am-edit-url, #members-am-icon-value").on("input",function(){M()}),b("#members-am-item-cap").on("input",function(){M()}),b(".members-am-icon-tabs .button").on("click",function(){b(".members-am-icon-tabs .button").removeClass("is-active"),b(this).addClass("is-active"),h.iconTab="fontawesome"===b(this).data("tab")?"fontawesome":"upload"===b(this).data("tab")?"upload":"dashicons",E()}),b("#members-am-icon-search").on("input",E),b("#members-am-media-upload").on("click",function(e){e.preventDefault(),h.mediaFrame||(h.mediaFrame=wp.media({title:"Choose menu icon",button:{text:"Use as icon"},multiple:!1,library:{type:"image"}}),h.mediaFrame.on("select",function(){var e=h.mediaFrame.state().get("selection").first().toJSON(),s=e.url||"";e.sizes&&(e.sizes.thumbnail?s=e.sizes.thumbnail.url:e.sizes.medium&&(s=e.sizes.medium.url)),b("#members-am-icon-type").val("custom"),b("#members-am-icon-value").val(s),M()})),h.mediaFrame.open()}),b(document).on("change",".members-am-vis-cb",function(){var e=b(this).data("role");if(b(this).is(":checked")){var s=v(e).hidden,a=s.indexOf(h.selectedId);-1!==a&&s.splice(a,1)}else-1===v(e).hidden.indexOf(h.selectedId)&&v(e).hidden.push(h.selectedId);j()}),b("#members-am-add-sep").on("click",T),b("#members-am-promote").on("click",function(){if(h.selectedId){a("parent","__promote__");var r=g(h.selectedId);l().forEach(function(e){var s=v(e);if(s.order&&s.order.length||(s.order=p()),-1===s.order.indexOf(h.selectedId))if(r){var a=s.order.indexOf(r);-1!==a?s.order.splice(a+1,0,h.selectedId):s.order.push(h.selectedId)}else s.order.push(h.selectedId)}),M()}}),b("#members-am-demote").on("click",function(){var e=window.prompt("Parent slug (e.g. edit.php)","edit.php");e&&(a("parent",e),M())}),b("#members-am-user-search").on("input",function(){var e=b(this).val();clearTimeout(s),s=setTimeout(function(){1 ").val("__all__").text("All roles")),h.activeRoleSlugs.forEach(function(s){var e=(d().filter(function(e){return e.slug===s})[0]||{}).label||s;a.append(b(" ").val(s).text(e))}),h.previewUserId&&a.append(b(" ").val("__user__"+h.previewUserId).text(h.previewUserLabel||"User #"+h.previewUserId)),h.selectedId&&R()}b(function(){var s,a,e;r(),h.tree=n(),c(),b("#members-am-admin-editable").prop("checked",!!h.settings._meta.admin_editable),s=b("#members-am-copy-from").empty(),a=b("#members-am-copy-to").empty(),(e=d()).forEach(function(e){s.append(b(" ").val(e.slug).text(e.label)),a.append(b(" ").val(e.slug).text(e.label))}),1n&&(h.carouselPage=n))}}h.activeRoleSlugs=s.filter(function(e){return"administrator"!==e||a}),h.activeRoleSlugs.length||(h.activeRoleSlugs=["subscriber"])}function I(){var r=g("#members-am-role-chips").empty();d().forEach(function(e){if("administrator"!==e.slug||h.settings._meta.admin_editable){var s=-1!==h.activeRoleSlugs.indexOf(e.slug),a=g(' ').text(e.label).attr("data-role",e.slug).toggleClass("is-active",s);r.append(a)}})}function O(e,s,a,r){var n=s.id,t=w(e,n),i=!k(e,s.cap),o=v(e).overrides[n]||{},m=o.label||s.title||n,l=g('
').attr("data-id",n).toggleClass("is-hidden",t).toggleClass("is-no-cap",i).toggleClass("is-selected",h.selectedId===n).toggleClass("is-sub",!!a),c=g('
');if(!a){var d=o.icon||s.icon,u=S(d,o.icon_type||s.icon_type);if("fontawesome"===u&&d)c.append(g(' '));else if("svg"!==u&&"image"!==u&&"custom"!==u||!d){var p=d&&0===d.indexOf("dashicons-")?d:"dashicons-admin-generic";c.append(g(' '))}else c.append(g(" ").attr("src",d).css({width:"20px",height:"20px",display:"inline-block",verticalAlign:"middle",objectFit:"contain",filter:"none"}))}if(s.custom&&c.append(g('custom ')),o.label&&c.append(g('edit ')),c.append(g(' ').text(m)),o.badge){var b=o.badge_bg||"#d63638";c.append(g(' ').text(o.badge).css({backgroundColor:b,color:"#fff",fontSize:"9px",padding:"1px 5px",borderRadius:"2px",marginLeft:"4px",whiteSpace:"nowrap"}))}i&&c.append(g(' Roles.\">🔒 no access ")),l.append(c),o.color_bg&&l.css("background-color",o.color_bg),o.color_text&&l.find(".members-am-item-label").css("color",o.color_text),o.color_icon&&(l.find(".dashicons").css("color",o.color_icon),l.find(".members-am-fa-icon i").css("color",o.color_icon),l.find("img").css("filter","none"));var f=g('
');f.append(g(' ').text("◉"),g(' ').text("↑"),g(' ').text("↓")),l.append(f),r.append(l)}function A(s,e,a,r){var n=r.overrides&&r.overrides[s.id]||{},t=n.label||s.title,i=function(e,s){var a=f(e);if(-1!==a.hidden.indexOf(s))return!0;var r=_(s);return!(!r||-1===a.hidden.indexOf(r))}(a,s.id),o=!function(e){if(!e||"read"===e)return 1;for(var s=h.previewUserRoles||[],a=0;a").addClass(m).attr("data-id",s.id),c=g('
');if(!e){var d=n.icon||s.icon,u=S(d,n.icon_type||s.icon_type);"fontawesome"===u&&d?c.append(g(' ')):"svg"!==u&&"image"!==u&&"custom"!==u||!d?d&&0===d.indexOf("dashicons-")?c.append(g(' ')):c.append(g(' ')):c.append(g(" ").attr("src",d).css({width:"20px",height:"20px",display:"inline-block",verticalAlign:"middle",objectFit:"contain",filter:"none"}))}if(s.custom&&c.append(g('custom ')),n.label&&c.append(g('edit ')),c.append(g(' ').text(t)),n.badge){var p=n.badge_bg||"#d63638";c.append(g(' ').text(n.badge).css({backgroundColor:p,color:"#fff",fontSize:"9px",padding:"1px 5px",borderRadius:"2px",marginLeft:"4px",whiteSpace:"nowrap"}))}o&&c.append(g('🔒 no access ")),l.append(c),n.color_bg&&l.css("background-color",n.color_bg),n.color_text&&l.find(".members-am-item-label").css("color",n.color_text),n.color_icon&&(l.find(".dashicons").css("color",n.color_icon),l.find(".members-am-fa-icon i").css("color",n.color_icon));var b=g('
');return b.append(g(' ').text(i?"◯":"◉"),g(' ').text("↑"),g(' ').text("↓")),l.append(b),l.on("click",function(e){g(e.target).closest("button").length||(h.selectedId=s.id,j())}),l}function R(){var a=g("#members-am-columns"),r={};a.find(".members-am-column").each(function(){var e=g(this).data("role");if(e){var s=g(this).find(".members-am-sidebar-list");s.length&&(r[e]=s.scrollTop())}}),a.empty();var e,s=h.carouselPage*h.columnsPerPage;if(h.activeRoleSlugs.slice(s,s+h.columnsPerPage).forEach(function(e){var s=g('
');!function(n,e){e.empty();var s=g(''),a=(d().filter(function(e){return e.slug===n})[0]||{}).label||n;s.append(g('').text(a)),s.append(g(' ').append(g(' ').text("◀"),g(' ').text("▶"))),e.append(s);var t=g('');x(n).forEach(function(e){if(0!==e.indexOf("sep-")){var r=u(e);if(r)if(O(n,r,null,t),r.children&&r.children.length)y(n,r.id).forEach(function(e){var s=r.id+"::"+e,a=u(s);if(a){if("__promote__"===(v(n).overrides[s]||{}).parent)return;O(n,a,r.id,t)}})}else t.append(g('
').text("—"))}),e.append(t)}(e,s),a.append(s),r[e]&&s.find(".members-am-sidebar-list").scrollTop(r[e])}),h.previewUserId){var i=h.previewUserId,n=g('
'),t=g('');t.append(g(" ").text(h.previewUserLabel||"User #"+i)),t.append(g('× ').on("click",function(){h.previewUserId=null,h.previewUserLabel=null,h.previewUserRoles=[],j()})),n.append(t);var o=g(''),m=f(i);((e=f(i)).order&&e.order.length?e.order:p()).forEach(function(a){if(0!==a.indexOf("sep-")){var r=u(a);if(r){o.append(A(r,null,i,m));var e,s,n,t=r.children||[];(e=a,s=t,(n=f(i)).submenu_order&&n.submenu_order[e]?n.submenu_order[e]:s.map(function(e){return e.id})).forEach(function(e){var s=function(e,s){if(!e||!e.children)return null;for(var a=0;a ').text("——"))}),n.append(o),a.append(n)}if(h.syncScroll){var l=a.find(".members-am-sidebar-list"),c=!1;l.on("scroll",function(){if(!c){c=!0;var e=g(this).scrollTop();l.not(this).scrollTop(e),c=!1}})}!function(){var e=Math.max(1,Math.ceil(h.activeRoleSlugs.length/h.columnsPerPage)),s=(Math.min(h.carouselPage+1,e),h.carouselPage*h.columnsPerPage+1),a=Math.min((h.carouselPage+1)*h.columnsPerPage,h.activeRoleSlugs.length);g("#members-am-carousel-status").text(s+"–"+a+" "+membersAdminMenus.i18n.of+" "+h.activeRoleSlugs.length);for(var r=g("#members-am-carousel-dots").empty(),n=0;n ').toggleClass("is-active",n===h.carouselPage))}()}function P(){if(h.selectedId){g("#members-am-edit-panel").removeAttr("hidden");var e=u(h.selectedId),s=function(){if(!h.selectedId)return null;var e=l();if(e){var s=f(e);return s.overrides&&s.overrides[h.selectedId]||{}}var a=m()[0];return a?v(a).overrides[h.selectedId]||{}:null}()||{};g("#members-am-edit-title").text(e?e.title:h.selectedId),g("#members-am-edit-label").val(s.label||e&&e.title||""),g("#members-am-edit-url").attr("placeholder","Override URL (leave empty for default)").val(s.url||e&&e.url||""),g("#members-am-edit-url").data("default-url",e&&e.url||""),g("#members-am-icon-type").val(s.icon_type||"dashicon"),g("#members-am-icon-value").val(s.icon||e&&e.icon||"");var a=s.icon||e&&e.icon||"",r=S(a,s.icon_type||e&&e.icon_type||"");"image"!==r&&"custom"!==r&&"svg"!==r||!a?g("#members-am-icon-preview").hide():g("#members-am-icon-preview").show().attr("src",a),g("#members-am-color-bg").val(s.color_bg||""),g("#members-am-color-text").val(s.color_text||""),g("#members-am-color-icon").val(s.color_icon||""),g("#members-am-badge-text").val(s.badge||""),g("#members-am-badge-bg").val(s.badge_bg||""),g("#members-am-item-cap").attr("placeholder",e&&e.cap?e.cap+" (default)":"").val(h.settings.capabilities[h.selectedId]||"");var n=e&&e.custom;g("#members-am-remove-custom").toggle(!!n),g("#members-am-visibility-toggles").empty();var t=e&&e.cap||"read";d().forEach(function(e){if("administrator"!==e.slug||h.settings._meta.admin_editable){var s=w(e.slug,h.selectedId),a=k(e.slug,t),r=g(' ').attr("data-role",e.slug).prop("checked",!s&&a);a||r.prop("disabled",!0);var n=g(' ').append(r,g(" ").text(e.label));a||(n.append(g(" ").text(" — no capability").css({color:"#999",fontStyle:"italic",marginLeft:"4px"})),n.css("opacity","0.5")),g("#members-am-visibility-toggles").append(n)}}),g(".members-am-color").each(function(){g(this).data("wpWpColorPicker")&&g(this).wpColorPicker("destroy")}),g(".members-am-color").wpColorPicker({change:function(e,s){setTimeout(function(){M()},20)},clear:function(){setTimeout(function(){M()},20)}}),E()}else g("#members-am-edit-panel").attr("hidden",!0)}function M(){if(h.selectedId){a("label",g("#members-am-edit-label").val());var e=g("#members-am-edit-url").val();a("url",e===(g("#members-am-edit-url").data("default-url")||"")?"":e);var s=g("#members-am-icon-value").val();a("icon_type",S(s,g("#members-am-icon-type").val())),a("icon",s),a("color_bg",g("#members-am-color-bg").val()),a("color_text",g("#members-am-color-text").val()),a("color_icon",g("#members-am-color-icon").val()),a("badge",g("#members-am-badge-text").val()),a("badge_bg",g("#members-am-badge-bg").val()),h.settings.capabilities[h.selectedId]=g("#members-am-item-cap").val()||"",R()}}function E(){var a=h.iconTab,r=(g("#members-am-icon-search").val()||"").toLowerCase(),n=g("#members-am-icon-grid").empty();("dashicons"===a?e:s).forEach(function(e){if(!r||-1!==e.indexOf(r)){var s=g(' ');"dashicons"===a?s.append(g(' ')):s.append(g(' ')),s.on("click",function(){g("#members-am-icon-value").val(e),g("#members-am-icon-type").val("dashicons"===a?"dashicon":"fontawesome"),M()}),n.append(s)}})}function U(e,s){var a=h.activeRoleSlugs.indexOf(e);if(-1!==a){var r=a+s;if(!(r<0||r>=h.activeRoleSlugs.length)){var n=h.activeRoleSlugs[a];h.activeRoleSlugs[a]=h.activeRoleSlugs[r],h.activeRoleSlugs[r]=n,o(),j()}}}function C(e,s,a){var r="__promote__"===(v(e).overrides[s]||{}).parent?null:_(s);if(r){var n=v(e).submenu_order;n[r]||(n[r]=b(r));var t=n[r],i=s.split("::"),o=i[1]||i[0];if(-1===(l=t.indexOf(o)))return;if((c=l+a)<0||c>=t.length)return;var m=t[l];t[l]=t[c],t[c]=m}else{v(e).order&&v(e).order.length||(v(e).order=p());var l,c,d=v(e).order;if(-1===(l=d.indexOf(s)))return;if((c=l+a)<0||c>=d.length)return;var u=d[l];d[l]=d[c],d[c]=u}j()}function T(){var e=m();if(e.length){var r="sep-"+Date.now();e.forEach(function(e){v(e).order&&v(e).order.length||(v(e).order=p());var s=v(e).order,a=h.selectedId?s.indexOf(h.selectedId):s.length-1;a<0&&(a=s.length),s.splice(a+1,0,r)}),j()}}function L(){var e=g("#members-am-save").prop("disabled",!0);g.post(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_save",nonce:membersAdminMenus.nonce,settings:JSON.stringify(h.settings)}).done(function(e){e.success?(alert(membersAdminMenus.i18n.saved),location.reload()):alert(e.data&&e.data.message?e.data.message:"Error")}).always(function(){e.prop("disabled",!1)})}function N(e,s){confirm("role"===e&&s?"Reset all settings for this role? This cannot be undone.":"Reset ALL menu settings for every role? This cannot be undone.")&&g.post(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_reset",nonce:membersAdminMenus.nonce,scope:e||"all",role:s||""},function(e){e.success?location.reload():alert(e.data&&e.data.message?e.data.message:"Reset failed.")})}function J(e){g.getJSON(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_user_search",nonce:membersAdminMenus.nonce,term:e},function(e){e.success&&e.data&&e.data.length?function(e){g(".members-am-user-suggestions").remove();var s=g("#members-am-user-search").parent();s.css("position","relative");var a=g('
');e.forEach(function(e){a.append(g('
').text(e.label).data("userId",e.id).on("click",function(){!function(e,s,a){h.previewUserId=e,h.previewUserLabel=s||"User #"+e,h.previewUserRoles=a||[],r(),h.settings.users[e]||(h.settings.users[e]={});j()}(e.id,e.label,e.roles),g(".members-am-user-suggestions").remove(),g("#members-am-user-search").val("")}))}),s.append(a),setTimeout(function(){g(document).one("click",function(){g(".members-am-user-suggestions").remove()})},0)}(e.data):g(".members-am-user-suggestions").remove()})}function F(){var s;g(document).on("click","#members-am-role-chips .members-am-chip",function(){var e=g(this).data("role"),s=h.activeRoleSlugs.indexOf(e);-1===s?h.activeRoleSlugs.push(e):1=n.length||(n.splice(o,1),n.splice(m,0,s))}}(s,a,g(this).closest(".members-am-item").hasClass("is-sub")?_(a):null,r?-1:1),R()}}),g("#members-am-save").on("click",L),g("#members-am-reset").on("click",function(e){e.stopPropagation(),g(".members-am-reset-dropdown").remove();var s=g(this),a=h.activeRoleSlugs||[],r=a.length?a[0]:"",n="";r&&(membersAdminMenus.roles||[]).forEach(function(e){e.slug===r&&(n=e.label)});var t=g('
');if(t.append(g('
').text("Reset Settings")),r&&n){var i=g(' ');i.append(g(' ')),i.append(g(' ').append(g(" ").text("Reset "+n),g(" ").text("Clear all menu settings for this role only"))),i.on("click",function(){g(".members-am-reset-dropdown").remove(),N("role",r)}),t.append(i)}var o=g(' ');o.append(g(' ')),o.append(g(' ').append(g(" ").text("Reset all roles"),g(" ").text("Clear all menu settings for every role"))),o.on("click",function(){g(".members-am-reset-dropdown").remove(),N("all")}),t.append(o),s.parent().css("position","relative"),t.insertAfter(s),g(document).one("click",function(){g(".members-am-reset-dropdown").remove()})}),g("#members-am-export").on("click",function(e){e.preventDefault(),window.location.href=membersAdminMenus.exportUrl}),g("#members-am-import").on("click",function(){g("#members-am-import-file").trigger("click")}),g("#members-am-import-file").on("change",function(){var e,s,a=this.files&&this.files[0];a&&(e=a,(s=new FileReader).onload=function(){try{var e=JSON.parse(s.result);g.post(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_import",nonce:membersAdminMenus.nonce,settings:JSON.stringify(e)}).done(function(e){e.success?location.reload():alert(e.data&&e.data.message?e.data.message:"Error")})}catch(e){alert("Invalid JSON")}},s.readAsText(e))}),g("#members-am-copy-apply").on("click",function(){var a=g("#members-am-copy-from").val(),s=g("#members-am-copy-to").val();if(a&&s)if(a!==s){var r="",n="";if(d().forEach(function(e){e.slug===a&&(r=e.label),e.slug===s&&(n=e.label)}),confirm('Copy menu settings from "'+r+'" to "'+n+'"?\nThis will overwrite "'+n+"\" menu configuration.\n\nNote: This copies menu order, hidden items, labels, icons, and colors.\nIt does NOT change the role's capabilities (items marked with a lock icon).")){var e=v(a),t={hidden:e.hidden?e.hidden.slice():[],order:[],submenu_order:{},overrides:{}},i=x(a);t.order=i.slice(),h.tree.forEach(function(e){if(e.children&&e.children.length){var s=y(a,e.id);s&&s.length&&(t.submenu_order[e.id]=s.slice())}}),e.overrides&&"object"==typeof e.overrides&&(t.overrides=JSON.parse(JSON.stringify(e.overrides))),h.settings.roles[s]=t,-1===h.activeRoleSlugs.indexOf(s)&&(h.activeRoleSlugs.push(s),o(),I()),j(),L()}}else alert("Source and target roles must be different.")}),g("#members-am-admin-editable").on("change",function(){var e=!0;g(this).is(":checked")&&(e=window.confirm(membersAdminMenus.i18n.adminEditableWarn)),e?(h.settings._meta.admin_editable=g(this).is(":checked"),c(),I(),o(),j()):g(this).prop("checked",!1)}),g("#members-am-sync-scroll").prop("checked",!1!==h.syncScroll),g("#members-am-sync-scroll").on("change",function(){h.syncScroll=g(this).is(":checked");try{localStorage.setItem("members_am_sync_scroll",h.syncScroll?"1":"0")}catch(e){}R()}),g("#members-am-add-item").on("click",function(){var e="c"+Date.now();h.settings.custom_items.push({id:e,label:"Custom link",url:window.location.origin+"/wp-admin/",icon_type:"dashicon",icon:"dashicons-admin-generic",parent:"",position:99,cap:"read"}),h.tree=n(),h.selectedId=i({id:e}),j(),P()}),g("#members-am-remove-custom").on("click",function(){var s=u(h.selectedId);s&&s.customId&&(h.settings.custom_items=(h.settings.custom_items||[]).filter(function(e){return e.id!==s.customId}),h.selectedId=null,h.tree=n(),j(),g("#members-am-edit-panel").attr("hidden",!0))}),g("#members-am-edit-close").on("click",function(){h.selectedId=null,g("#members-am-edit-panel").attr("hidden",!0),j()}),g("#members-am-edit-target-role").on("change",P),g("#members-am-edit-label, #members-am-edit-url, #members-am-icon-value, #members-am-badge-text").on("input",function(){M()}),g("#members-am-item-cap").on("input",function(){M()}),g(".members-am-icon-tabs .button").on("click",function(){g(".members-am-icon-tabs .button").removeClass("is-active"),g(this).addClass("is-active"),h.iconTab="fontawesome"===g(this).data("tab")?"fontawesome":"upload"===g(this).data("tab")?"upload":"dashicons",E()}),g("#members-am-icon-search").on("input",E),g("#members-am-media-upload").on("click",function(e){e.preventDefault(),h.mediaFrame||(h.mediaFrame=wp.media({title:"Choose menu icon",button:{text:"Use as icon"},multiple:!1,library:{type:"image"}}),h.mediaFrame.on("select",function(){var e=h.mediaFrame.state().get("selection").first().toJSON(),s=e.url||"";e.sizes&&(e.sizes.thumbnail?s=e.sizes.thumbnail.url:e.sizes.medium&&(s=e.sizes.medium.url)),g("#members-am-icon-type").val("custom"),g("#members-am-icon-value").val(s),M()})),h.mediaFrame.open()}),g(document).on("change",".members-am-vis-cb",function(){var e=g(this).data("role");if(g(this).is(":checked")){var s=v(e).hidden,a=s.indexOf(h.selectedId);-1!==a&&s.splice(a,1)}else-1===v(e).hidden.indexOf(h.selectedId)&&v(e).hidden.push(h.selectedId);j()}),g("#members-am-add-sep").on("click",T),g("#members-am-promote").on("click",function(){if(h.selectedId){a("parent","__promote__");var r=_(h.selectedId);m().forEach(function(e){var s=v(e);if(s.order&&s.order.length||(s.order=p()),-1===s.order.indexOf(h.selectedId))if(r){var a=s.order.indexOf(r);-1!==a?s.order.splice(a+1,0,h.selectedId):s.order.push(h.selectedId)}else s.order.push(h.selectedId)}),M()}}),g("#members-am-demote").on("click",function(){var e=window.prompt("Parent slug (e.g. edit.php)","edit.php");e&&(a("parent",e),M())}),g("#members-am-user-search").on("input",function(){var e=g(this).val();clearTimeout(s),s=setTimeout(function(){1 ").val("__all__").text("All roles")),h.activeRoleSlugs.forEach(function(s){var e=(d().filter(function(e){return e.slug===s})[0]||{}).label||s;a.append(g(" ").val(s).text(e))}),h.previewUserId&&a.append(g(" ").val("__user__"+h.previewUserId).text(h.previewUserLabel||"User #"+h.previewUserId)),h.selectedId&&P()}g(function(){var s,a,e;r(),h.tree=n(),c(),g("#members-am-admin-editable").prop("checked",!!h.settings._meta.admin_editable),s=g("#members-am-copy-from").empty(),a=g("#members-am-copy-to").empty(),(e=d()).forEach(function(e){s.append(g(" ").val(e.slug).text(e.label)),a.append(g(" ").val(e.slug).text(e.label))}),1
Date: Wed, 8 Apr 2026 17:31:21 +0200
Subject: [PATCH 10/73] feat(admin): enhance custom menu item handling in admin
menus
---
.../app/functions-admin.php | 6 +++--
addons/members-admin-menus/app/functions.php | 25 ++++++++++++++---
js/admin-menus.js | 27 +++++++++++++++----
js/admin-menus.min.js | 2 +-
4 files changed, 49 insertions(+), 11 deletions(-)
diff --git a/addons/members-admin-menus/app/functions-admin.php b/addons/members-admin-menus/app/functions-admin.php
index dd94147..6a940e1 100644
--- a/addons/members-admin-menus/app/functions-admin.php
+++ b/addons/members-admin-menus/app/functions-admin.php
@@ -268,8 +268,10 @@ function render_admin_menus_page() {
diff --git a/addons/members-admin-menus/app/functions.php b/addons/members-admin-menus/app/functions.php
index 05c5f41..349dab6 100644
--- a/addons/members-admin-menus/app/functions.php
+++ b/addons/members-admin-menus/app/functions.php
@@ -379,8 +379,14 @@ function apply_menu_overrides( $overrides ) {
$badge_html = ' ';
$menu[ $k ][0] .= $badge_html;
}
- if ( ! empty( $o['url'] ) ) {
- $menu[ $k ][2] = esc_url_raw( $o['url'] );
+ if ( ! empty( $o['url'] ) && members_am_is_custom_menu_item_slug( $slug ) ) {
+ $new_slug = esc_url_raw( $o['url'] );
+ $menu[ $k ][2] = $new_slug;
+ // Submenus are keyed by the parent slug; keep them attached when the slug changes.
+ if ( $new_slug && $new_slug !== $slug && isset( $submenu[ $slug ] ) ) {
+ $submenu[ $new_slug ] = $submenu[ $slug ];
+ unset( $submenu[ $slug ] );
+ }
}
if ( ! empty( $o['icon'] ) ) {
$icon = $o['icon'];
@@ -429,7 +435,7 @@ function apply_menu_overrides( $overrides ) {
$badge_html = ' ';
$submenu[ $parent ][ $idx ][0] .= $badge_html;
}
- if ( ! empty( $o['url'] ) ) {
+ if ( ! empty( $o['url'] ) && members_am_is_custom_menu_item_slug( $item[2] ) ) {
$submenu[ $parent ][ $idx ][2] = esc_url_raw( $o['url'] );
}
}
@@ -859,6 +865,19 @@ function members_admin_menus_is_protected_slug( $slug ) {
return ( false !== stripos( $s, 'members-settings' ) || false !== stripos( $s, 'page=members' ) );
}
+/**
+ * Whether a menu slug is a Members-added custom item (see inject_custom_menu_items).
+ *
+ * Only these items support overriding the admin menu link via URL in $menu / $submenu.
+ *
+ * @param string $slug Top-level slug or submenu file/slug segment.
+ * @return bool
+ */
+function members_am_is_custom_menu_item_slug( $slug ) {
+ $slug = (string) $slug;
+ return ( '' !== $slug && 0 === strpos( $slug, 'members-am-' ) );
+}
+
/**
* Default option structure.
*
diff --git a/js/admin-menus.js b/js/admin-menus.js
index 2ddb57d..c56bcd2 100644
--- a/js/admin-menus.js
+++ b/js/admin-menus.js
@@ -191,6 +191,15 @@
return 'members-am-' + String(id).replace(/[^a-z0-9_-]/gi, '-').toLowerCase();
}
+ /** Custom items registered by this add-on use slugs starting with members-am- (see inject_custom_menu_items). */
+ function isCustomMenuUrlTarget(itemId) {
+ if (!itemId) {
+ return false;
+ }
+ var part = itemId.indexOf('::') !== -1 ? itemId.split('::').pop() : itemId;
+ return part.indexOf('members-am-') === 0;
+ }
+
function buildTreeWithCustoms() {
var base = $.extend(true, [], membersAdminMenus.menuTree || []);
// Build a set of existing IDs so we don't add duplicates.
@@ -844,8 +853,12 @@
var ov = getOverrideForEdit() || {};
$('#members-am-edit-title').text(node ? node.title : state.selectedId);
$('#members-am-edit-label').val(ov.label || (node && node.title) || '');
- $('#members-am-edit-url').attr('placeholder', 'Override URL (leave empty for default)').val(ov.url || (node && node.url) || '');
- $('#members-am-edit-url').data('default-url', (node && node.url) || '');
+ var allowUrl = isCustomMenuUrlTarget(state.selectedId);
+ $('#members-am-edit-url-wrap').toggle(allowUrl);
+ $('#members-am-edit-url')
+ .attr('placeholder', 'Override URL (leave empty for default)')
+ .val(allowUrl ? ov.url || (node && node.url) || '' : '')
+ .data('default-url', (node && node.url) || '');
$('#members-am-icon-type').val(ov.icon_type || 'dashicon');
$('#members-am-icon-value').val(ov.icon || (node && node.icon) || '');
// Show image preview if the icon is a URL.
@@ -926,9 +939,13 @@
return;
}
setOverrideField('label', $('#members-am-edit-label').val());
- var urlVal = $('#members-am-edit-url').val();
- var defaultUrl = $('#members-am-edit-url').data('default-url') || '';
- setOverrideField('url', (urlVal === defaultUrl) ? '' : urlVal);
+ if (isCustomMenuUrlTarget(state.selectedId)) {
+ var urlVal = $('#members-am-edit-url').val();
+ var defaultUrl = $('#members-am-edit-url').data('default-url') || '';
+ setOverrideField('url', urlVal === defaultUrl ? '' : urlVal);
+ } else {
+ setOverrideField('url', '');
+ }
// Auto-detect icon type from icon value to stay consistent.
var iconVal = $('#members-am-icon-value').val();
var iconType = effectiveIconType(iconVal, $('#members-am-icon-type').val());
diff --git a/js/admin-menus.min.js b/js/admin-menus.min.js
index 1bbc009..bdffdaf 100644
--- a/js/admin-menus.min.js
+++ b/js/admin-menus.min.js
@@ -1 +1 @@
-!function(g){"use strict";var h={settings:g.extend(!0,{},membersAdminMenus.settings),tree:[],activeRoleSlugs:[],carouselPage:0,columnsPerPage:3,selectedId:null,iconTab:"dashicons",previewUserId:null,previewUserRoles:[],userSuggestions:[],mediaFrame:null,syncScroll:function(){try{return"0"!==localStorage.getItem("members_am_sync_scroll")}catch(e){return!0}}()},e=["dashicons-menu","dashicons-admin-dashboard","dashicons-admin-post","dashicons-admin-page","dashicons-admin-media","dashicons-admin-comments","dashicons-admin-appearance","dashicons-admin-plugins","dashicons-admin-users","dashicons-admin-tools","dashicons-admin-settings","dashicons-admin-generic","dashicons-edit","dashicons-plus","dashicons-chart-bar","dashicons-cart","dashicons-products","dashicons-email","dashicons-groups","dashicons-heart","dashicons-star-filled","dashicons-smiley","dashicons-info","dashicons-lock","dashicons-unlock","dashicons-visibility","dashicons-hidden","dashicons-arrow-up","dashicons-arrow-down","dashicons-admin-network","dashicons-performance"],s=["fa-solid fa-house","fa-solid fa-user","fa-solid fa-gear","fa-solid fa-file","fa-solid fa-image","fa-solid fa-cart-shopping","fa-solid fa-chart-line","fa-solid fa-envelope","fa-solid fa-book","fa-solid fa-link","fa-solid fa-bell","fa-solid fa-star","fa-solid fa-heart","fa-solid fa-lock","fa-solid fa-unlock","fa-solid fa-pen","fa-solid fa-trash","fa-solid fa-plus","fa-solid fa-minus"],t="members_am_view_state";function o(){try{localStorage.setItem(t,JSON.stringify({activeRoleSlugs:h.activeRoleSlugs,carouselPage:h.carouselPage}))}catch(e){}}function d(){return membersAdminMenus.roles||[]}function r(){h.settings._meta&&!Array.isArray(h.settings._meta)||(h.settings._meta={version:3,admin_editable:!1}),h.settings.roles&&!Array.isArray(h.settings.roles)||(h.settings.roles={}),h.settings.users&&!Array.isArray(h.settings.users)||(h.settings.users={}),Array.isArray(h.settings.custom_items)||(h.settings.custom_items=[]),h.settings.capabilities&&!Array.isArray(h.settings.capabilities)||(h.settings.capabilities={})}function v(e){r(),h.settings.roles[e]||(h.settings.roles[e]={hidden:[],order:[],submenu_order:{},overrides:{}});var s=h.settings.roles[e];return s.hidden&&Array.isArray(s.hidden)||(s.hidden=[]),s.order&&Array.isArray(s.order)||(s.order=[]),s.submenu_order&&!Array.isArray(s.submenu_order)||(s.submenu_order={}),s.overrides&&!Array.isArray(s.overrides)||(s.overrides={}),s}function f(e){r(),h.settings.users[e]||(h.settings.users[e]={});var s=h.settings.users[e];return s.hidden&&Array.isArray(s.hidden)||(s.hidden=[]),s.order&&Array.isArray(s.order)||(s.order=[]),s.overrides&&!Array.isArray(s.overrides)||(s.overrides={}),s.submenu_order&&!Array.isArray(s.submenu_order)||(s.submenu_order={}),s}function i(e){var s=e.id||"c";return"members-am-"+String(s).replace(/[^a-z0-9_-]/gi,"-").toLowerCase()}function n(){var r=g.extend(!0,[],membersAdminMenus.menuTree||[]),n={};return r.forEach(function(e){n[e.id]=!0}),(h.settings.custom_items||[]).forEach(function(e){if(e&&e.id){var s=i(e);if(n[s]){for(var a=0;a
n&&(h.carouselPage=n))}}h.activeRoleSlugs=s.filter(function(e){return"administrator"!==e||a}),h.activeRoleSlugs.length||(h.activeRoleSlugs=["subscriber"])}function I(){var r=g("#members-am-role-chips").empty();d().forEach(function(e){if("administrator"!==e.slug||h.settings._meta.admin_editable){var s=-1!==h.activeRoleSlugs.indexOf(e.slug),a=g(' ').text(e.label).attr("data-role",e.slug).toggleClass("is-active",s);r.append(a)}})}function O(e,s,a,r){var n=s.id,t=w(e,n),i=!k(e,s.cap),o=v(e).overrides[n]||{},m=o.label||s.title||n,l=g('
').attr("data-id",n).toggleClass("is-hidden",t).toggleClass("is-no-cap",i).toggleClass("is-selected",h.selectedId===n).toggleClass("is-sub",!!a),c=g('
');if(!a){var d=o.icon||s.icon,u=S(d,o.icon_type||s.icon_type);if("fontawesome"===u&&d)c.append(g(' '));else if("svg"!==u&&"image"!==u&&"custom"!==u||!d){var p=d&&0===d.indexOf("dashicons-")?d:"dashicons-admin-generic";c.append(g(' '))}else c.append(g(" ").attr("src",d).css({width:"20px",height:"20px",display:"inline-block",verticalAlign:"middle",objectFit:"contain",filter:"none"}))}if(s.custom&&c.append(g('custom ')),o.label&&c.append(g('edit ')),c.append(g(' ').text(m)),o.badge){var b=o.badge_bg||"#d63638";c.append(g(' ').text(o.badge).css({backgroundColor:b,color:"#fff",fontSize:"9px",padding:"1px 5px",borderRadius:"2px",marginLeft:"4px",whiteSpace:"nowrap"}))}i&&c.append(g(' Roles.\">🔒 no access ")),l.append(c),o.color_bg&&l.css("background-color",o.color_bg),o.color_text&&l.find(".members-am-item-label").css("color",o.color_text),o.color_icon&&(l.find(".dashicons").css("color",o.color_icon),l.find(".members-am-fa-icon i").css("color",o.color_icon),l.find("img").css("filter","none"));var f=g('
');f.append(g(' ').text("◉"),g(' ').text("↑"),g(' ').text("↓")),l.append(f),r.append(l)}function A(s,e,a,r){var n=r.overrides&&r.overrides[s.id]||{},t=n.label||s.title,i=function(e,s){var a=f(e);if(-1!==a.hidden.indexOf(s))return!0;var r=_(s);return!(!r||-1===a.hidden.indexOf(r))}(a,s.id),o=!function(e){if(!e||"read"===e)return 1;for(var s=h.previewUserRoles||[],a=0;a").addClass(m).attr("data-id",s.id),c=g('
');if(!e){var d=n.icon||s.icon,u=S(d,n.icon_type||s.icon_type);"fontawesome"===u&&d?c.append(g(' ')):"svg"!==u&&"image"!==u&&"custom"!==u||!d?d&&0===d.indexOf("dashicons-")?c.append(g(' ')):c.append(g(' ')):c.append(g(" ").attr("src",d).css({width:"20px",height:"20px",display:"inline-block",verticalAlign:"middle",objectFit:"contain",filter:"none"}))}if(s.custom&&c.append(g('custom ')),n.label&&c.append(g('edit ')),c.append(g(' ').text(t)),n.badge){var p=n.badge_bg||"#d63638";c.append(g(' ').text(n.badge).css({backgroundColor:p,color:"#fff",fontSize:"9px",padding:"1px 5px",borderRadius:"2px",marginLeft:"4px",whiteSpace:"nowrap"}))}o&&c.append(g('🔒 no access ")),l.append(c),n.color_bg&&l.css("background-color",n.color_bg),n.color_text&&l.find(".members-am-item-label").css("color",n.color_text),n.color_icon&&(l.find(".dashicons").css("color",n.color_icon),l.find(".members-am-fa-icon i").css("color",n.color_icon));var b=g('
');return b.append(g(' ').text(i?"◯":"◉"),g(' ').text("↑"),g(' ').text("↓")),l.append(b),l.on("click",function(e){g(e.target).closest("button").length||(h.selectedId=s.id,j())}),l}function R(){var a=g("#members-am-columns"),r={};a.find(".members-am-column").each(function(){var e=g(this).data("role");if(e){var s=g(this).find(".members-am-sidebar-list");s.length&&(r[e]=s.scrollTop())}}),a.empty();var e,s=h.carouselPage*h.columnsPerPage;if(h.activeRoleSlugs.slice(s,s+h.columnsPerPage).forEach(function(e){var s=g('
');!function(n,e){e.empty();var s=g(''),a=(d().filter(function(e){return e.slug===n})[0]||{}).label||n;s.append(g('').text(a)),s.append(g(' ').append(g(' ').text("◀"),g(' ').text("▶"))),e.append(s);var t=g('');x(n).forEach(function(e){if(0!==e.indexOf("sep-")){var r=u(e);if(r)if(O(n,r,null,t),r.children&&r.children.length)y(n,r.id).forEach(function(e){var s=r.id+"::"+e,a=u(s);if(a){if("__promote__"===(v(n).overrides[s]||{}).parent)return;O(n,a,r.id,t)}})}else t.append(g('
').text("—"))}),e.append(t)}(e,s),a.append(s),r[e]&&s.find(".members-am-sidebar-list").scrollTop(r[e])}),h.previewUserId){var i=h.previewUserId,n=g('
'),t=g('');t.append(g(" ").text(h.previewUserLabel||"User #"+i)),t.append(g('× ').on("click",function(){h.previewUserId=null,h.previewUserLabel=null,h.previewUserRoles=[],j()})),n.append(t);var o=g(''),m=f(i);((e=f(i)).order&&e.order.length?e.order:p()).forEach(function(a){if(0!==a.indexOf("sep-")){var r=u(a);if(r){o.append(A(r,null,i,m));var e,s,n,t=r.children||[];(e=a,s=t,(n=f(i)).submenu_order&&n.submenu_order[e]?n.submenu_order[e]:s.map(function(e){return e.id})).forEach(function(e){var s=function(e,s){if(!e||!e.children)return null;for(var a=0;a ').text("——"))}),n.append(o),a.append(n)}if(h.syncScroll){var l=a.find(".members-am-sidebar-list"),c=!1;l.on("scroll",function(){if(!c){c=!0;var e=g(this).scrollTop();l.not(this).scrollTop(e),c=!1}})}!function(){var e=Math.max(1,Math.ceil(h.activeRoleSlugs.length/h.columnsPerPage)),s=(Math.min(h.carouselPage+1,e),h.carouselPage*h.columnsPerPage+1),a=Math.min((h.carouselPage+1)*h.columnsPerPage,h.activeRoleSlugs.length);g("#members-am-carousel-status").text(s+"–"+a+" "+membersAdminMenus.i18n.of+" "+h.activeRoleSlugs.length);for(var r=g("#members-am-carousel-dots").empty(),n=0;n ').toggleClass("is-active",n===h.carouselPage))}()}function P(){if(h.selectedId){g("#members-am-edit-panel").removeAttr("hidden");var e=u(h.selectedId),s=function(){if(!h.selectedId)return null;var e=l();if(e){var s=f(e);return s.overrides&&s.overrides[h.selectedId]||{}}var a=m()[0];return a?v(a).overrides[h.selectedId]||{}:null}()||{};g("#members-am-edit-title").text(e?e.title:h.selectedId),g("#members-am-edit-label").val(s.label||e&&e.title||""),g("#members-am-edit-url").attr("placeholder","Override URL (leave empty for default)").val(s.url||e&&e.url||""),g("#members-am-edit-url").data("default-url",e&&e.url||""),g("#members-am-icon-type").val(s.icon_type||"dashicon"),g("#members-am-icon-value").val(s.icon||e&&e.icon||"");var a=s.icon||e&&e.icon||"",r=S(a,s.icon_type||e&&e.icon_type||"");"image"!==r&&"custom"!==r&&"svg"!==r||!a?g("#members-am-icon-preview").hide():g("#members-am-icon-preview").show().attr("src",a),g("#members-am-color-bg").val(s.color_bg||""),g("#members-am-color-text").val(s.color_text||""),g("#members-am-color-icon").val(s.color_icon||""),g("#members-am-badge-text").val(s.badge||""),g("#members-am-badge-bg").val(s.badge_bg||""),g("#members-am-item-cap").attr("placeholder",e&&e.cap?e.cap+" (default)":"").val(h.settings.capabilities[h.selectedId]||"");var n=e&&e.custom;g("#members-am-remove-custom").toggle(!!n),g("#members-am-visibility-toggles").empty();var t=e&&e.cap||"read";d().forEach(function(e){if("administrator"!==e.slug||h.settings._meta.admin_editable){var s=w(e.slug,h.selectedId),a=k(e.slug,t),r=g(' ').attr("data-role",e.slug).prop("checked",!s&&a);a||r.prop("disabled",!0);var n=g(' ').append(r,g(" ").text(e.label));a||(n.append(g(" ").text(" — no capability").css({color:"#999",fontStyle:"italic",marginLeft:"4px"})),n.css("opacity","0.5")),g("#members-am-visibility-toggles").append(n)}}),g(".members-am-color").each(function(){g(this).data("wpWpColorPicker")&&g(this).wpColorPicker("destroy")}),g(".members-am-color").wpColorPicker({change:function(e,s){setTimeout(function(){M()},20)},clear:function(){setTimeout(function(){M()},20)}}),E()}else g("#members-am-edit-panel").attr("hidden",!0)}function M(){if(h.selectedId){a("label",g("#members-am-edit-label").val());var e=g("#members-am-edit-url").val();a("url",e===(g("#members-am-edit-url").data("default-url")||"")?"":e);var s=g("#members-am-icon-value").val();a("icon_type",S(s,g("#members-am-icon-type").val())),a("icon",s),a("color_bg",g("#members-am-color-bg").val()),a("color_text",g("#members-am-color-text").val()),a("color_icon",g("#members-am-color-icon").val()),a("badge",g("#members-am-badge-text").val()),a("badge_bg",g("#members-am-badge-bg").val()),h.settings.capabilities[h.selectedId]=g("#members-am-item-cap").val()||"",R()}}function E(){var a=h.iconTab,r=(g("#members-am-icon-search").val()||"").toLowerCase(),n=g("#members-am-icon-grid").empty();("dashicons"===a?e:s).forEach(function(e){if(!r||-1!==e.indexOf(r)){var s=g(' ');"dashicons"===a?s.append(g(' ')):s.append(g(' ')),s.on("click",function(){g("#members-am-icon-value").val(e),g("#members-am-icon-type").val("dashicons"===a?"dashicon":"fontawesome"),M()}),n.append(s)}})}function U(e,s){var a=h.activeRoleSlugs.indexOf(e);if(-1!==a){var r=a+s;if(!(r<0||r>=h.activeRoleSlugs.length)){var n=h.activeRoleSlugs[a];h.activeRoleSlugs[a]=h.activeRoleSlugs[r],h.activeRoleSlugs[r]=n,o(),j()}}}function C(e,s,a){var r="__promote__"===(v(e).overrides[s]||{}).parent?null:_(s);if(r){var n=v(e).submenu_order;n[r]||(n[r]=b(r));var t=n[r],i=s.split("::"),o=i[1]||i[0];if(-1===(l=t.indexOf(o)))return;if((c=l+a)<0||c>=t.length)return;var m=t[l];t[l]=t[c],t[c]=m}else{v(e).order&&v(e).order.length||(v(e).order=p());var l,c,d=v(e).order;if(-1===(l=d.indexOf(s)))return;if((c=l+a)<0||c>=d.length)return;var u=d[l];d[l]=d[c],d[c]=u}j()}function T(){var e=m();if(e.length){var r="sep-"+Date.now();e.forEach(function(e){v(e).order&&v(e).order.length||(v(e).order=p());var s=v(e).order,a=h.selectedId?s.indexOf(h.selectedId):s.length-1;a<0&&(a=s.length),s.splice(a+1,0,r)}),j()}}function L(){var e=g("#members-am-save").prop("disabled",!0);g.post(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_save",nonce:membersAdminMenus.nonce,settings:JSON.stringify(h.settings)}).done(function(e){e.success?(alert(membersAdminMenus.i18n.saved),location.reload()):alert(e.data&&e.data.message?e.data.message:"Error")}).always(function(){e.prop("disabled",!1)})}function N(e,s){confirm("role"===e&&s?"Reset all settings for this role? This cannot be undone.":"Reset ALL menu settings for every role? This cannot be undone.")&&g.post(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_reset",nonce:membersAdminMenus.nonce,scope:e||"all",role:s||""},function(e){e.success?location.reload():alert(e.data&&e.data.message?e.data.message:"Reset failed.")})}function J(e){g.getJSON(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_user_search",nonce:membersAdminMenus.nonce,term:e},function(e){e.success&&e.data&&e.data.length?function(e){g(".members-am-user-suggestions").remove();var s=g("#members-am-user-search").parent();s.css("position","relative");var a=g('
');e.forEach(function(e){a.append(g('
').text(e.label).data("userId",e.id).on("click",function(){!function(e,s,a){h.previewUserId=e,h.previewUserLabel=s||"User #"+e,h.previewUserRoles=a||[],r(),h.settings.users[e]||(h.settings.users[e]={});j()}(e.id,e.label,e.roles),g(".members-am-user-suggestions").remove(),g("#members-am-user-search").val("")}))}),s.append(a),setTimeout(function(){g(document).one("click",function(){g(".members-am-user-suggestions").remove()})},0)}(e.data):g(".members-am-user-suggestions").remove()})}function F(){var s;g(document).on("click","#members-am-role-chips .members-am-chip",function(){var e=g(this).data("role"),s=h.activeRoleSlugs.indexOf(e);-1===s?h.activeRoleSlugs.push(e):1=n.length||(n.splice(o,1),n.splice(m,0,s))}}(s,a,g(this).closest(".members-am-item").hasClass("is-sub")?_(a):null,r?-1:1),R()}}),g("#members-am-save").on("click",L),g("#members-am-reset").on("click",function(e){e.stopPropagation(),g(".members-am-reset-dropdown").remove();var s=g(this),a=h.activeRoleSlugs||[],r=a.length?a[0]:"",n="";r&&(membersAdminMenus.roles||[]).forEach(function(e){e.slug===r&&(n=e.label)});var t=g('
');if(t.append(g('
').text("Reset Settings")),r&&n){var i=g(' ');i.append(g(' ')),i.append(g(' ').append(g(" ").text("Reset "+n),g(" ").text("Clear all menu settings for this role only"))),i.on("click",function(){g(".members-am-reset-dropdown").remove(),N("role",r)}),t.append(i)}var o=g(' ');o.append(g(' ')),o.append(g(' ').append(g(" ").text("Reset all roles"),g(" ").text("Clear all menu settings for every role"))),o.on("click",function(){g(".members-am-reset-dropdown").remove(),N("all")}),t.append(o),s.parent().css("position","relative"),t.insertAfter(s),g(document).one("click",function(){g(".members-am-reset-dropdown").remove()})}),g("#members-am-export").on("click",function(e){e.preventDefault(),window.location.href=membersAdminMenus.exportUrl}),g("#members-am-import").on("click",function(){g("#members-am-import-file").trigger("click")}),g("#members-am-import-file").on("change",function(){var e,s,a=this.files&&this.files[0];a&&(e=a,(s=new FileReader).onload=function(){try{var e=JSON.parse(s.result);g.post(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_import",nonce:membersAdminMenus.nonce,settings:JSON.stringify(e)}).done(function(e){e.success?location.reload():alert(e.data&&e.data.message?e.data.message:"Error")})}catch(e){alert("Invalid JSON")}},s.readAsText(e))}),g("#members-am-copy-apply").on("click",function(){var a=g("#members-am-copy-from").val(),s=g("#members-am-copy-to").val();if(a&&s)if(a!==s){var r="",n="";if(d().forEach(function(e){e.slug===a&&(r=e.label),e.slug===s&&(n=e.label)}),confirm('Copy menu settings from "'+r+'" to "'+n+'"?\nThis will overwrite "'+n+"\" menu configuration.\n\nNote: This copies menu order, hidden items, labels, icons, and colors.\nIt does NOT change the role's capabilities (items marked with a lock icon).")){var e=v(a),t={hidden:e.hidden?e.hidden.slice():[],order:[],submenu_order:{},overrides:{}},i=x(a);t.order=i.slice(),h.tree.forEach(function(e){if(e.children&&e.children.length){var s=y(a,e.id);s&&s.length&&(t.submenu_order[e.id]=s.slice())}}),e.overrides&&"object"==typeof e.overrides&&(t.overrides=JSON.parse(JSON.stringify(e.overrides))),h.settings.roles[s]=t,-1===h.activeRoleSlugs.indexOf(s)&&(h.activeRoleSlugs.push(s),o(),I()),j(),L()}}else alert("Source and target roles must be different.")}),g("#members-am-admin-editable").on("change",function(){var e=!0;g(this).is(":checked")&&(e=window.confirm(membersAdminMenus.i18n.adminEditableWarn)),e?(h.settings._meta.admin_editable=g(this).is(":checked"),c(),I(),o(),j()):g(this).prop("checked",!1)}),g("#members-am-sync-scroll").prop("checked",!1!==h.syncScroll),g("#members-am-sync-scroll").on("change",function(){h.syncScroll=g(this).is(":checked");try{localStorage.setItem("members_am_sync_scroll",h.syncScroll?"1":"0")}catch(e){}R()}),g("#members-am-add-item").on("click",function(){var e="c"+Date.now();h.settings.custom_items.push({id:e,label:"Custom link",url:window.location.origin+"/wp-admin/",icon_type:"dashicon",icon:"dashicons-admin-generic",parent:"",position:99,cap:"read"}),h.tree=n(),h.selectedId=i({id:e}),j(),P()}),g("#members-am-remove-custom").on("click",function(){var s=u(h.selectedId);s&&s.customId&&(h.settings.custom_items=(h.settings.custom_items||[]).filter(function(e){return e.id!==s.customId}),h.selectedId=null,h.tree=n(),j(),g("#members-am-edit-panel").attr("hidden",!0))}),g("#members-am-edit-close").on("click",function(){h.selectedId=null,g("#members-am-edit-panel").attr("hidden",!0),j()}),g("#members-am-edit-target-role").on("change",P),g("#members-am-edit-label, #members-am-edit-url, #members-am-icon-value, #members-am-badge-text").on("input",function(){M()}),g("#members-am-item-cap").on("input",function(){M()}),g(".members-am-icon-tabs .button").on("click",function(){g(".members-am-icon-tabs .button").removeClass("is-active"),g(this).addClass("is-active"),h.iconTab="fontawesome"===g(this).data("tab")?"fontawesome":"upload"===g(this).data("tab")?"upload":"dashicons",E()}),g("#members-am-icon-search").on("input",E),g("#members-am-media-upload").on("click",function(e){e.preventDefault(),h.mediaFrame||(h.mediaFrame=wp.media({title:"Choose menu icon",button:{text:"Use as icon"},multiple:!1,library:{type:"image"}}),h.mediaFrame.on("select",function(){var e=h.mediaFrame.state().get("selection").first().toJSON(),s=e.url||"";e.sizes&&(e.sizes.thumbnail?s=e.sizes.thumbnail.url:e.sizes.medium&&(s=e.sizes.medium.url)),g("#members-am-icon-type").val("custom"),g("#members-am-icon-value").val(s),M()})),h.mediaFrame.open()}),g(document).on("change",".members-am-vis-cb",function(){var e=g(this).data("role");if(g(this).is(":checked")){var s=v(e).hidden,a=s.indexOf(h.selectedId);-1!==a&&s.splice(a,1)}else-1===v(e).hidden.indexOf(h.selectedId)&&v(e).hidden.push(h.selectedId);j()}),g("#members-am-add-sep").on("click",T),g("#members-am-promote").on("click",function(){if(h.selectedId){a("parent","__promote__");var r=_(h.selectedId);m().forEach(function(e){var s=v(e);if(s.order&&s.order.length||(s.order=p()),-1===s.order.indexOf(h.selectedId))if(r){var a=s.order.indexOf(r);-1!==a?s.order.splice(a+1,0,h.selectedId):s.order.push(h.selectedId)}else s.order.push(h.selectedId)}),M()}}),g("#members-am-demote").on("click",function(){var e=window.prompt("Parent slug (e.g. edit.php)","edit.php");e&&(a("parent",e),M())}),g("#members-am-user-search").on("input",function(){var e=g(this).val();clearTimeout(s),s=setTimeout(function(){1 ").val("__all__").text("All roles")),h.activeRoleSlugs.forEach(function(s){var e=(d().filter(function(e){return e.slug===s})[0]||{}).label||s;a.append(g(" ").val(s).text(e))}),h.previewUserId&&a.append(g(" ").val("__user__"+h.previewUserId).text(h.previewUserLabel||"User #"+h.previewUserId)),h.selectedId&&P()}g(function(){var s,a,e;r(),h.tree=n(),c(),g("#members-am-admin-editable").prop("checked",!!h.settings._meta.admin_editable),s=g("#members-am-copy-from").empty(),a=g("#members-am-copy-to").empty(),(e=d()).forEach(function(e){s.append(g(" ").val(e.slug).text(e.label)),a.append(g(" ").val(e.slug).text(e.label))}),1n&&(h.carouselPage=n))}}h.activeRoleSlugs=s.filter(function(e){return"administrator"!==e||a}),h.activeRoleSlugs.length||(h.activeRoleSlugs=["subscriber"])}function O(){var r=g("#members-am-role-chips").empty();d().forEach(function(e){if("administrator"!==e.slug||h.settings._meta.admin_editable){var s=-1!==h.activeRoleSlugs.indexOf(e.slug),a=g(' ').text(e.label).attr("data-role",e.slug).toggleClass("is-active",s);r.append(a)}})}function A(e,s,a,r){var n=s.id,t=w(e,n),i=!k(e,s.cap),o=v(e).overrides[n]||{},m=o.label||s.title||n,l=g('
').attr("data-id",n).toggleClass("is-hidden",t).toggleClass("is-no-cap",i).toggleClass("is-selected",h.selectedId===n).toggleClass("is-sub",!!a),c=g('
');if(!a){var d=o.icon||s.icon,u=I(d,o.icon_type||s.icon_type);if("fontawesome"===u&&d)c.append(g(' '));else if("svg"!==u&&"image"!==u&&"custom"!==u||!d){var p=d&&0===d.indexOf("dashicons-")?d:"dashicons-admin-generic";c.append(g(' '))}else c.append(g(" ").attr("src",d).css({width:"20px",height:"20px",display:"inline-block",verticalAlign:"middle",objectFit:"contain",filter:"none"}))}if(s.custom&&c.append(g('custom ')),o.label&&c.append(g('edit ')),c.append(g(' ').text(m)),o.badge){var b=o.badge_bg||"#d63638";c.append(g(' ').text(o.badge).css({backgroundColor:b,color:"#fff",fontSize:"9px",padding:"1px 5px",borderRadius:"2px",marginLeft:"4px",whiteSpace:"nowrap"}))}i&&c.append(g(' Roles.\">🔒 no access ")),l.append(c),o.color_bg&&l.css("background-color",o.color_bg),o.color_text&&l.find(".members-am-item-label").css("color",o.color_text),o.color_icon&&(l.find(".dashicons").css("color",o.color_icon),l.find(".members-am-fa-icon i").css("color",o.color_icon),l.find("img").css("filter","none"));var f=g('
');f.append(g(' ').text("◉"),g(' ').text("↑"),g(' ').text("↓")),l.append(f),r.append(l)}function R(s,e,a,r){var n=r.overrides&&r.overrides[s.id]||{},t=n.label||s.title,i=function(e,s){var a=f(e);if(-1!==a.hidden.indexOf(s))return!0;var r=_(s);return!(!r||-1===a.hidden.indexOf(r))}(a,s.id),o=!function(e){if(!e||"read"===e)return 1;for(var s=h.previewUserRoles||[],a=0;a").addClass(m).attr("data-id",s.id),c=g('
');if(!e){var d=n.icon||s.icon,u=I(d,n.icon_type||s.icon_type);"fontawesome"===u&&d?c.append(g(' ')):"svg"!==u&&"image"!==u&&"custom"!==u||!d?d&&0===d.indexOf("dashicons-")?c.append(g(' ')):c.append(g(' ')):c.append(g(" ").attr("src",d).css({width:"20px",height:"20px",display:"inline-block",verticalAlign:"middle",objectFit:"contain",filter:"none"}))}if(s.custom&&c.append(g('custom ')),n.label&&c.append(g('edit ')),c.append(g(' ').text(t)),n.badge){var p=n.badge_bg||"#d63638";c.append(g(' ').text(n.badge).css({backgroundColor:p,color:"#fff",fontSize:"9px",padding:"1px 5px",borderRadius:"2px",marginLeft:"4px",whiteSpace:"nowrap"}))}o&&c.append(g('🔒 no access ")),l.append(c),n.color_bg&&l.css("background-color",n.color_bg),n.color_text&&l.find(".members-am-item-label").css("color",n.color_text),n.color_icon&&(l.find(".dashicons").css("color",n.color_icon),l.find(".members-am-fa-icon i").css("color",n.color_icon));var b=g('
');return b.append(g(' ').text(i?"◯":"◉"),g(' ').text("↑"),g(' ').text("↓")),l.append(b),l.on("click",function(e){g(e.target).closest("button").length||(h.selectedId=s.id,z())}),l}function P(){var a=g("#members-am-columns"),r={};a.find(".members-am-column").each(function(){var e=g(this).data("role");if(e){var s=g(this).find(".members-am-sidebar-list");s.length&&(r[e]=s.scrollTop())}}),a.empty();var e,s=h.carouselPage*h.columnsPerPage;if(h.activeRoleSlugs.slice(s,s+h.columnsPerPage).forEach(function(e){var s=g('
');!function(n,e){e.empty();var s=g(''),a=(d().filter(function(e){return e.slug===n})[0]||{}).label||n;s.append(g('').text(a)),s.append(g(' ').append(g(' ').text("◀"),g(' ').text("▶"))),e.append(s);var t=g('');x(n).forEach(function(e){if(0!==e.indexOf("sep-")){var r=u(e);if(r)if(A(n,r,null,t),r.children&&r.children.length)y(n,r.id).forEach(function(e){var s=r.id+"::"+e,a=u(s);if(a){if("__promote__"===(v(n).overrides[s]||{}).parent)return;A(n,a,r.id,t)}})}else t.append(g('
').text("—"))}),e.append(t)}(e,s),a.append(s),r[e]&&s.find(".members-am-sidebar-list").scrollTop(r[e])}),h.previewUserId){var i=h.previewUserId,n=g('
'),t=g('');t.append(g(" ").text(h.previewUserLabel||"User #"+i)),t.append(g('× ').on("click",function(){h.previewUserId=null,h.previewUserLabel=null,h.previewUserRoles=[],z()})),n.append(t);var o=g(''),m=f(i);((e=f(i)).order&&e.order.length?e.order:p()).forEach(function(a){if(0!==a.indexOf("sep-")){var r=u(a);if(r){o.append(R(r,null,i,m));var e,s,n,t=r.children||[];(e=a,s=t,(n=f(i)).submenu_order&&n.submenu_order[e]?n.submenu_order[e]:s.map(function(e){return e.id})).forEach(function(e){var s=function(e,s){if(!e||!e.children)return null;for(var a=0;a ').text("——"))}),n.append(o),a.append(n)}if(h.syncScroll){var l=a.find(".members-am-sidebar-list"),c=!1;l.on("scroll",function(){if(!c){c=!0;var e=g(this).scrollTop();l.not(this).scrollTop(e),c=!1}})}!function(){var e=Math.max(1,Math.ceil(h.activeRoleSlugs.length/h.columnsPerPage)),s=(Math.min(h.carouselPage+1,e),h.carouselPage*h.columnsPerPage+1),a=Math.min((h.carouselPage+1)*h.columnsPerPage,h.activeRoleSlugs.length);g("#members-am-carousel-status").text(s+"–"+a+" "+membersAdminMenus.i18n.of+" "+h.activeRoleSlugs.length);for(var r=g("#members-am-carousel-dots").empty(),n=0;n ').toggleClass("is-active",n===h.carouselPage))}()}function M(){if(h.selectedId){g("#members-am-edit-panel").removeAttr("hidden");var e=u(h.selectedId),s=function(){if(!h.selectedId)return null;var e=c();if(e){var s=f(e);return s.overrides&&s.overrides[h.selectedId]||{}}var a=l()[0];return a?v(a).overrides[h.selectedId]||{}:null}()||{};g("#members-am-edit-title").text(e?e.title:h.selectedId),g("#members-am-edit-label").val(s.label||e&&e.title||"");var a=m(h.selectedId);g("#members-am-edit-url-wrap").toggle(a),g("#members-am-edit-url").attr("placeholder","Override URL (leave empty for default)").val(a&&(s.url||e&&e.url)||"").data("default-url",e&&e.url||""),g("#members-am-icon-type").val(s.icon_type||"dashicon"),g("#members-am-icon-value").val(s.icon||e&&e.icon||"");var r=s.icon||e&&e.icon||"",n=I(r,s.icon_type||e&&e.icon_type||"");"image"!==n&&"custom"!==n&&"svg"!==n||!r?g("#members-am-icon-preview").hide():g("#members-am-icon-preview").show().attr("src",r),g("#members-am-color-bg").val(s.color_bg||""),g("#members-am-color-text").val(s.color_text||""),g("#members-am-color-icon").val(s.color_icon||""),g("#members-am-badge-text").val(s.badge||""),g("#members-am-badge-bg").val(s.badge_bg||""),g("#members-am-item-cap").attr("placeholder",e&&e.cap?e.cap+" (default)":"").val(h.settings.capabilities[h.selectedId]||"");var t=e&&e.custom;g("#members-am-remove-custom").toggle(!!t),g("#members-am-visibility-toggles").empty();var i=e&&e.cap||"read";d().forEach(function(e){if("administrator"!==e.slug||h.settings._meta.admin_editable){var s=w(e.slug,h.selectedId),a=k(e.slug,i),r=g(' ').attr("data-role",e.slug).prop("checked",!s&&a);a||r.prop("disabled",!0);var n=g(' ').append(r,g(" ").text(e.label));a||(n.append(g(" ").text(" — no capability").css({color:"#999",fontStyle:"italic",marginLeft:"4px"})),n.css("opacity","0.5")),g("#members-am-visibility-toggles").append(n)}}),g(".members-am-color").each(function(){g(this).data("wpWpColorPicker")&&g(this).wpColorPicker("destroy")}),g(".members-am-color").wpColorPicker({change:function(e,s){setTimeout(function(){E()},20)},clear:function(){setTimeout(function(){E()},20)}}),U()}else g("#members-am-edit-panel").attr("hidden",!0)}function E(){if(h.selectedId){if(a("label",g("#members-am-edit-label").val()),m(h.selectedId)){var e=g("#members-am-edit-url").val();a("url",e===(g("#members-am-edit-url").data("default-url")||"")?"":e)}else a("url","");var s=g("#members-am-icon-value").val();a("icon_type",I(s,g("#members-am-icon-type").val())),a("icon",s),a("color_bg",g("#members-am-color-bg").val()),a("color_text",g("#members-am-color-text").val()),a("color_icon",g("#members-am-color-icon").val()),a("badge",g("#members-am-badge-text").val()),a("badge_bg",g("#members-am-badge-bg").val()),h.settings.capabilities[h.selectedId]=g("#members-am-item-cap").val()||"",P()}}function U(){var a=h.iconTab,r=(g("#members-am-icon-search").val()||"").toLowerCase(),n=g("#members-am-icon-grid").empty();("dashicons"===a?e:s).forEach(function(e){if(!r||-1!==e.indexOf(r)){var s=g(' ');"dashicons"===a?s.append(g(' ')):s.append(g(' ')),s.on("click",function(){g("#members-am-icon-value").val(e),g("#members-am-icon-type").val("dashicons"===a?"dashicon":"fontawesome"),E()}),n.append(s)}})}function C(e,s){var a=h.activeRoleSlugs.indexOf(e);if(-1!==a){var r=a+s;if(!(r<0||r>=h.activeRoleSlugs.length)){var n=h.activeRoleSlugs[a];h.activeRoleSlugs[a]=h.activeRoleSlugs[r],h.activeRoleSlugs[r]=n,o(),z()}}}function T(e,s,a){var r="__promote__"===(v(e).overrides[s]||{}).parent?null:_(s);if(r){var n=v(e).submenu_order;n[r]||(n[r]=b(r));var t=n[r],i=s.split("::"),o=i[1]||i[0];if(-1===(l=t.indexOf(o)))return;if((c=l+a)<0||c>=t.length)return;var m=t[l];t[l]=t[c],t[c]=m}else{v(e).order&&v(e).order.length||(v(e).order=p());var l,c,d=v(e).order;if(-1===(l=d.indexOf(s)))return;if((c=l+a)<0||c>=d.length)return;var u=d[l];d[l]=d[c],d[c]=u}z()}function L(){var e=l();if(e.length){var r="sep-"+Date.now();e.forEach(function(e){v(e).order&&v(e).order.length||(v(e).order=p());var s=v(e).order,a=h.selectedId?s.indexOf(h.selectedId):s.length-1;a<0&&(a=s.length),s.splice(a+1,0,r)}),z()}}function N(){var e=g("#members-am-save").prop("disabled",!0);g.post(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_save",nonce:membersAdminMenus.nonce,settings:JSON.stringify(h.settings)}).done(function(e){e.success?(alert(membersAdminMenus.i18n.saved),location.reload()):alert(e.data&&e.data.message?e.data.message:"Error")}).always(function(){e.prop("disabled",!1)})}function J(e,s){confirm("role"===e&&s?"Reset all settings for this role? This cannot be undone.":"Reset ALL menu settings for every role? This cannot be undone.")&&g.post(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_reset",nonce:membersAdminMenus.nonce,scope:e||"all",role:s||""},function(e){e.success?location.reload():alert(e.data&&e.data.message?e.data.message:"Reset failed.")})}function F(e){g.getJSON(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_user_search",nonce:membersAdminMenus.nonce,term:e},function(e){e.success&&e.data&&e.data.length?function(e){g(".members-am-user-suggestions").remove();var s=g("#members-am-user-search").parent();s.css("position","relative");var a=g('
');e.forEach(function(e){a.append(g('
').text(e.label).data("userId",e.id).on("click",function(){!function(e,s,a){h.previewUserId=e,h.previewUserLabel=s||"User #"+e,h.previewUserRoles=a||[],r(),h.settings.users[e]||(h.settings.users[e]={});z()}(e.id,e.label,e.roles),g(".members-am-user-suggestions").remove(),g("#members-am-user-search").val("")}))}),s.append(a),setTimeout(function(){g(document).one("click",function(){g(".members-am-user-suggestions").remove()})},0)}(e.data):g(".members-am-user-suggestions").remove()})}function j(){var s;g(document).on("click","#members-am-role-chips .members-am-chip",function(){var e=g(this).data("role"),s=h.activeRoleSlugs.indexOf(e);-1===s?h.activeRoleSlugs.push(e):1=n.length||(n.splice(o,1),n.splice(m,0,s))}}(s,a,g(this).closest(".members-am-item").hasClass("is-sub")?_(a):null,r?-1:1),P()}}),g("#members-am-save").on("click",N),g("#members-am-reset").on("click",function(e){e.stopPropagation(),g(".members-am-reset-dropdown").remove();var s=g(this),a=h.activeRoleSlugs||[],r=a.length?a[0]:"",n="";r&&(membersAdminMenus.roles||[]).forEach(function(e){e.slug===r&&(n=e.label)});var t=g('
');if(t.append(g('
').text("Reset Settings")),r&&n){var i=g(' ');i.append(g(' ')),i.append(g(' ').append(g(" ").text("Reset "+n),g(" ").text("Clear all menu settings for this role only"))),i.on("click",function(){g(".members-am-reset-dropdown").remove(),J("role",r)}),t.append(i)}var o=g(' ');o.append(g(' ')),o.append(g(' ').append(g(" ").text("Reset all roles"),g(" ").text("Clear all menu settings for every role"))),o.on("click",function(){g(".members-am-reset-dropdown").remove(),J("all")}),t.append(o),s.parent().css("position","relative"),t.insertAfter(s),g(document).one("click",function(){g(".members-am-reset-dropdown").remove()})}),g("#members-am-export").on("click",function(e){e.preventDefault(),window.location.href=membersAdminMenus.exportUrl}),g("#members-am-import").on("click",function(){g("#members-am-import-file").trigger("click")}),g("#members-am-import-file").on("change",function(){var e,s,a=this.files&&this.files[0];a&&(e=a,(s=new FileReader).onload=function(){try{var e=JSON.parse(s.result);g.post(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_import",nonce:membersAdminMenus.nonce,settings:JSON.stringify(e)}).done(function(e){e.success?location.reload():alert(e.data&&e.data.message?e.data.message:"Error")})}catch(e){alert("Invalid JSON")}},s.readAsText(e))}),g("#members-am-copy-apply").on("click",function(){var a=g("#members-am-copy-from").val(),s=g("#members-am-copy-to").val();if(a&&s)if(a!==s){var r="",n="";if(d().forEach(function(e){e.slug===a&&(r=e.label),e.slug===s&&(n=e.label)}),confirm('Copy menu settings from "'+r+'" to "'+n+'"?\nThis will overwrite "'+n+"\" menu configuration.\n\nNote: This copies menu order, hidden items, labels, icons, and colors.\nIt does NOT change the role's capabilities (items marked with a lock icon).")){var e=v(a),t={hidden:e.hidden?e.hidden.slice():[],order:[],submenu_order:{},overrides:{}},i=x(a);t.order=i.slice(),h.tree.forEach(function(e){if(e.children&&e.children.length){var s=y(a,e.id);s&&s.length&&(t.submenu_order[e.id]=s.slice())}}),e.overrides&&"object"==typeof e.overrides&&(t.overrides=JSON.parse(JSON.stringify(e.overrides))),h.settings.roles[s]=t,-1===h.activeRoleSlugs.indexOf(s)&&(h.activeRoleSlugs.push(s),o(),O()),z(),N()}}else alert("Source and target roles must be different.")}),g("#members-am-admin-editable").on("change",function(){var e=!0;g(this).is(":checked")&&(e=window.confirm(membersAdminMenus.i18n.adminEditableWarn)),e?(h.settings._meta.admin_editable=g(this).is(":checked"),S(),O(),o(),z()):g(this).prop("checked",!1)}),g("#members-am-sync-scroll").prop("checked",!1!==h.syncScroll),g("#members-am-sync-scroll").on("change",function(){h.syncScroll=g(this).is(":checked");try{localStorage.setItem("members_am_sync_scroll",h.syncScroll?"1":"0")}catch(e){}P()}),g("#members-am-add-item").on("click",function(){var e="c"+Date.now();h.settings.custom_items.push({id:e,label:"Custom link",url:window.location.origin+"/wp-admin/",icon_type:"dashicon",icon:"dashicons-admin-generic",parent:"",position:99,cap:"read"}),h.tree=n(),h.selectedId=i({id:e}),z(),M()}),g("#members-am-remove-custom").on("click",function(){var s=u(h.selectedId);s&&s.customId&&(h.settings.custom_items=(h.settings.custom_items||[]).filter(function(e){return e.id!==s.customId}),h.selectedId=null,h.tree=n(),z(),g("#members-am-edit-panel").attr("hidden",!0))}),g("#members-am-edit-close").on("click",function(){h.selectedId=null,g("#members-am-edit-panel").attr("hidden",!0),z()}),g("#members-am-edit-target-role").on("change",M),g("#members-am-edit-label, #members-am-edit-url, #members-am-icon-value, #members-am-badge-text").on("input",function(){E()}),g("#members-am-item-cap").on("input",function(){E()}),g(".members-am-icon-tabs .button").on("click",function(){g(".members-am-icon-tabs .button").removeClass("is-active"),g(this).addClass("is-active"),h.iconTab="fontawesome"===g(this).data("tab")?"fontawesome":"upload"===g(this).data("tab")?"upload":"dashicons",U()}),g("#members-am-icon-search").on("input",U),g("#members-am-media-upload").on("click",function(e){e.preventDefault(),h.mediaFrame||(h.mediaFrame=wp.media({title:"Choose menu icon",button:{text:"Use as icon"},multiple:!1,library:{type:"image"}}),h.mediaFrame.on("select",function(){var e=h.mediaFrame.state().get("selection").first().toJSON(),s=e.url||"";e.sizes&&(e.sizes.thumbnail?s=e.sizes.thumbnail.url:e.sizes.medium&&(s=e.sizes.medium.url)),g("#members-am-icon-type").val("custom"),g("#members-am-icon-value").val(s),E()})),h.mediaFrame.open()}),g(document).on("change",".members-am-vis-cb",function(){var e=g(this).data("role");if(g(this).is(":checked")){var s=v(e).hidden,a=s.indexOf(h.selectedId);-1!==a&&s.splice(a,1)}else-1===v(e).hidden.indexOf(h.selectedId)&&v(e).hidden.push(h.selectedId);z()}),g("#members-am-add-sep").on("click",L),g("#members-am-promote").on("click",function(){if(h.selectedId){a("parent","__promote__");var r=_(h.selectedId);l().forEach(function(e){var s=v(e);if(s.order&&s.order.length||(s.order=p()),-1===s.order.indexOf(h.selectedId))if(r){var a=s.order.indexOf(r);-1!==a?s.order.splice(a+1,0,h.selectedId):s.order.push(h.selectedId)}else s.order.push(h.selectedId)}),E()}}),g("#members-am-demote").on("click",function(){var e=window.prompt("Parent slug (e.g. edit.php)","edit.php");e&&(a("parent",e),E())}),g("#members-am-user-search").on("input",function(){var e=g(this).val();clearTimeout(s),s=setTimeout(function(){1 ").val("__all__").text("All roles")),h.activeRoleSlugs.forEach(function(s){var e=(d().filter(function(e){return e.slug===s})[0]||{}).label||s;a.append(g(" ").val(s).text(e))}),h.previewUserId&&a.append(g(" ").val("__user__"+h.previewUserId).text(h.previewUserLabel||"User #"+h.previewUserId)),h.selectedId&&M()}g(function(){var s,a,e;r(),h.tree=n(),S(),g("#members-am-admin-editable").prop("checked",!!h.settings._meta.admin_editable),s=g("#members-am-copy-from").empty(),a=g("#members-am-copy-to").empty(),(e=d()).forEach(function(e){s.append(g(" ").val(e.slug).text(e.label)),a.append(g(" ").val(e.slug).text(e.label))}),1
Date: Wed, 8 Apr 2026 17:39:29 +0200
Subject: [PATCH 11/73] feat(admin): implement promoted submenu redirection and
enhance menu item handling
---
addons/members-admin-menus/app/functions.php | 50 ++++++++++++++++++--
1 file changed, 47 insertions(+), 3 deletions(-)
diff --git a/addons/members-admin-menus/app/functions.php b/addons/members-admin-menus/app/functions.php
index 349dab6..66b222d 100644
--- a/addons/members-admin-menus/app/functions.php
+++ b/addons/members-admin-menus/app/functions.php
@@ -505,6 +505,10 @@ function output_img_icon_styles() {
function apply_level_moves( $overrides ) {
global $menu, $submenu;
+ if ( ! isset( $GLOBALS['members_am_promoted_redirects'] ) || ! is_array( $GLOBALS['members_am_promoted_redirects'] ) ) {
+ $GLOBALS['members_am_promoted_redirects'] = array();
+ }
+
foreach ( $overrides as $slug => $o ) {
if ( ! is_array( $o ) || ! array_key_exists( 'parent', $o ) ) {
continue;
@@ -520,18 +524,24 @@ function apply_level_moves( $overrides ) {
$old_parent = $parts[0];
$child_slug = $parts[1];
- $label = $child_slug;
- $cap = 'read';
+ $label = $child_slug;
+ $cap = 'read';
+ $promoted_redirect = '';
if ( isset( $submenu[ $old_parent ] ) && is_array( $submenu[ $old_parent ] ) ) {
foreach ( $submenu[ $old_parent ] as $idx => $sub ) {
if ( isset( $sub[2] ) && $sub[2] === $child_slug ) {
$label = $sub[0];
$cap = isset( $sub[1] ) ? $sub[1] : 'read';
+ // Resolve the real admin URL while this item is still registered as a submenu.
+ $promoted_redirect = menu_page_url( $child_slug, false );
unset( $submenu[ $old_parent ][ $idx ] );
break;
}
}
}
+ if ( ! $promoted_redirect && is_string( $child_slug ) && preg_match( '/^[a-zA-Z0-9_.-]+\.php$/', $child_slug ) ) {
+ $promoted_redirect = admin_url( $child_slug );
+ }
if ( ! empty( $o['label'] ) ) {
$label = $o['label'];
}
@@ -539,7 +549,17 @@ function apply_level_moves( $overrides ) {
if ( ! empty( $o['icon'] ) ) {
$icon = $o['icon'];
}
- add_menu_page( wp_strip_all_tags( $label ), wp_strip_all_tags( $label ), $cap, $child_slug, '', $icon );
+ if ( $promoted_redirect ) {
+ $GLOBALS['members_am_promoted_redirects'][ $child_slug ] = $promoted_redirect;
+ }
+ add_menu_page(
+ wp_strip_all_tags( $label ),
+ wp_strip_all_tags( $label ),
+ $cap,
+ $child_slug,
+ $promoted_redirect ? __NAMESPACE__ . '\members_am_promoted_menu_callback' : '',
+ $icon
+ );
} elseif ( ! $is_submenu && is_string( $target_parent ) && '' !== $target_parent ) {
$found_key = false;
@@ -565,6 +585,30 @@ function apply_level_moves( $overrides ) {
}
}
+/**
+ * Render callback for a submenu item promoted to top-level via apply_level_moves().
+ *
+ * Redirects to the canonical URL WordPress would use for that submenu, so the original screen loads.
+ *
+ * @return void
+ */
+function members_am_promoted_menu_callback() {
+ $map = isset( $GLOBALS['members_am_promoted_redirects'] ) && is_array( $GLOBALS['members_am_promoted_redirects'] ) ? $GLOBALS['members_am_promoted_redirects'] : array();
+ global $plugin_page, $pagenow;
+ $slug = '';
+ if ( is_string( $plugin_page ) && '' !== $plugin_page ) {
+ $slug = $plugin_page;
+ } elseif ( isset( $_GET['page'] ) ) {
+ $slug = sanitize_text_field( wp_unslash( $_GET['page'] ) );
+ } elseif ( ! empty( $pagenow ) ) {
+ $slug = $pagenow;
+ }
+ if ( $slug && isset( $map[ $slug ] ) && $map[ $slug ] ) {
+ wp_safe_redirect( $map[ $slug ] );
+ exit;
+ }
+}
+
/**
* Apply color overrides via admin_head CSS rules.
*
From 54694515fd0a738a6e141438fc8e3dbad34d3e1b Mon Sep 17 00:00:00 2001
From: Omar ElHawary
Date: Wed, 8 Apr 2026 17:43:57 +0200
Subject: [PATCH 12/73] feat(admin): implement admin URL redirection handling
and fallback logic
---
addons/members-admin-menus/app/functions.php | 99 +++++++++++++++++++-
1 file changed, 97 insertions(+), 2 deletions(-)
diff --git a/addons/members-admin-menus/app/functions.php b/addons/members-admin-menus/app/functions.php
index 66b222d..eb2e5c3 100644
--- a/addons/members-admin-menus/app/functions.php
+++ b/addons/members-admin-menus/app/functions.php
@@ -776,6 +776,101 @@ function members_am_custom_menu_callback() {
}
}
+/**
+ * Slug-like identifiers derived from an admin URL for matching hidden / capability maps.
+ *
+ * @param string $url Admin URL.
+ * @return array
+ */
+function members_am_slugs_for_admin_redirect_url( $url ) {
+ $path = (string) wp_parse_url( $url, PHP_URL_PATH );
+ $query = (string) wp_parse_url( $url, PHP_URL_QUERY );
+ $slugs = array();
+ if ( '' !== $query ) {
+ wp_parse_str( $query, $args );
+ if ( ! empty( $args['page'] ) ) {
+ $slugs[] = sanitize_text_field( $args['page'] );
+ }
+ }
+ if ( '' !== $path ) {
+ $base = basename( $path );
+ if ( $base && 'admin.php' !== $base ) {
+ $slugs[] = $base;
+ }
+ }
+ return array_unique( array_filter( $slugs ) );
+}
+
+/**
+ * Whether the user's Admin Menus config would block this URL if it were the current screen.
+ *
+ * @param int $user_id User ID.
+ * @param string $url Full admin URL.
+ * @return bool
+ */
+function members_am_redirect_target_is_blocked_for_user( $user_id, $url ) {
+ $slugs = members_am_slugs_for_admin_redirect_url( $url );
+ $cfg = get_resolved_config_for_user( $user_id );
+ $hidden = isset( $cfg['hidden'] ) ? (array) $cfg['hidden'] : array();
+ $cap_map = isset( $cfg['capabilities'] ) ? (array) $cfg['capabilities'] : array();
+
+ foreach ( $slugs as $cslug ) {
+ if ( ! $cslug ) {
+ continue;
+ }
+ if ( members_admin_menus_is_protected_slug( $cslug ) ) {
+ return false;
+ }
+ foreach ( $hidden as $h ) {
+ if ( $h === $cslug || members_admin_menus_slug_matches( $cslug, $h ) ) {
+ return true;
+ }
+ }
+ foreach ( $cap_map as $slug => $cap ) {
+ if ( ! $slug || ! $cap || user_can( $user_id, $cap ) ) {
+ continue;
+ }
+ if ( $slug === $cslug || members_admin_menus_slug_matches( $cslug, $slug ) ) {
+ return true;
+ }
+ }
+ }
+ return false;
+}
+
+/**
+ * Default redirect when access to a restricted admin screen is denied.
+ *
+ * Avoids using the dashboard home URL, which may also be hidden and cause a redirect loop.
+ *
+ * @param int $user_id User ID.
+ * @return string
+ */
+function members_am_blocked_redirect_fallback_url( $user_id ) {
+ $candidates = array();
+
+ $settings_cap = apply_filters( 'members_settings_capability', 'manage_options' );
+ if ( user_can( $user_id, $settings_cap ) ) {
+ $candidates[] = admin_url( 'admin.php?page=members-settings' );
+ }
+
+ $candidates[] = admin_url( 'profile.php' );
+
+ foreach ( $candidates as $candidate ) {
+ if ( ! members_am_redirect_target_is_blocked_for_user( $user_id, $candidate ) ) {
+ return $candidate;
+ }
+ }
+
+ /**
+ * Filter last-resort redirect when every admin fallback would still be blocked.
+ *
+ * @param string $url Default front-end home URL.
+ * @param int $user_id User ID.
+ */
+ return apply_filters( app()->namespace . '/blocked_redirect_last_resort_url', home_url( '/' ), $user_id );
+}
+
/**
* Block direct access to hidden admin pages.
*
@@ -807,7 +902,7 @@ function block_restricted_pages() {
continue;
}
if ( $slug === $cslug || members_admin_menus_slug_matches( $cslug, $slug ) ) {
- $url = apply_filters( app()->namespace . '/redirect_url', admin_url(), $user_id );
+ $url = apply_filters( app()->namespace . '/redirect_url', members_am_blocked_redirect_fallback_url( $user_id ), $user_id );
wp_safe_redirect( $url );
exit;
}
@@ -827,7 +922,7 @@ function block_restricted_pages() {
}
foreach ( $hidden as $h ) {
if ( $h === $cslug || members_admin_menus_slug_matches( $cslug, $h ) ) {
- $url = apply_filters( app()->namespace . '/redirect_url', admin_url(), $user_id );
+ $url = apply_filters( app()->namespace . '/redirect_url', members_am_blocked_redirect_fallback_url( $user_id ), $user_id );
wp_safe_redirect( $url );
exit;
}
From 03eeae0b13bb96aaf84b435b40b51cd8e6856ff1 Mon Sep 17 00:00:00 2001
From: Omar ElHawary
Date: Wed, 8 Apr 2026 17:46:15 +0200
Subject: [PATCH 13/73] feat(admin): refactor capability checks for admin menus
---
.../app/functions-admin.php | 21 +++++++++++++------
1 file changed, 15 insertions(+), 6 deletions(-)
diff --git a/addons/members-admin-menus/app/functions-admin.php b/addons/members-admin-menus/app/functions-admin.php
index 6a940e1..5f0e741 100644
--- a/addons/members-admin-menus/app/functions-admin.php
+++ b/addons/members-admin-menus/app/functions-admin.php
@@ -19,6 +19,15 @@
add_action( 'admin_menu', __NAMESPACE__ . '\register_admin_menus_submenu', 21 );
add_action( 'admin_init', __NAMESPACE__ . '\redirect_old_admin_menus_url' );
+/**
+ * Capability required for Admin Menus and Members settings screens.
+ *
+ * @return string
+ */
+function get_members_settings_capability() {
+ return apply_filters( 'members_settings_capability', 'manage_options' );
+}
+
/**
* Register "Admin Menus" as a standalone submenu page under Members.
*
@@ -29,7 +38,7 @@ function register_admin_menus_submenu() {
'members',
esc_html__( 'Admin Menus', 'members' ),
esc_html__( 'Admin Menus', 'members' ),
- apply_filters( 'members_settings_capability', 'manage_options' ),
+ get_members_settings_capability(),
'members-admin-menus',
__NAMESPACE__ . '\render_admin_menus_page'
);
@@ -440,7 +449,7 @@ function ajax_save_settings() {
if ( ! isset( $_POST['nonce'] ) || ! wp_verify_nonce( sanitize_text_field( wp_unslash( $_POST['nonce'] ) ), 'members_admin_menus' ) ) {
wp_send_json_error( array( 'message' => __( 'Invalid security token.', 'members' ) ), 403 );
}
- if ( ! current_user_can( 'manage_options' ) ) {
+ if ( ! current_user_can( get_members_settings_capability() ) ) {
wp_send_json_error( array( 'message' => __( 'Permission denied.', 'members' ) ), 403 );
}
$raw = isset( $_POST['settings'] ) ? wp_unslash( $_POST['settings'] ) : '';
@@ -630,7 +639,7 @@ function ajax_reset_settings() {
if ( ! isset( $_POST['nonce'] ) || ! wp_verify_nonce( sanitize_text_field( wp_unslash( $_POST['nonce'] ) ), 'members_admin_menus' ) ) {
wp_send_json_error( array( 'message' => __( 'Invalid security token.', 'members' ) ), 403 );
}
- if ( ! current_user_can( 'manage_options' ) ) {
+ if ( ! current_user_can( get_members_settings_capability() ) ) {
wp_send_json_error( array( 'message' => __( 'Permission denied.', 'members' ) ), 403 );
}
$scope = isset( $_POST['scope'] ) ? sanitize_key( wp_unslash( $_POST['scope'] ) ) : 'all';
@@ -657,7 +666,7 @@ function ajax_export_settings() {
if ( ! isset( $_GET['nonce'] ) || ! wp_verify_nonce( sanitize_text_field( wp_unslash( $_GET['nonce'] ) ), 'members_admin_menus' ) ) {
wp_die( esc_html__( 'Invalid security token.', 'members' ) );
}
- if ( ! current_user_can( 'manage_options' ) ) {
+ if ( ! current_user_can( get_members_settings_capability() ) ) {
wp_die( esc_html__( 'Permission denied.', 'members' ) );
}
$data = get_settings();
@@ -677,7 +686,7 @@ function ajax_import_settings() {
if ( ! isset( $_POST['nonce'] ) || ! wp_verify_nonce( sanitize_text_field( wp_unslash( $_POST['nonce'] ) ), 'members_admin_menus' ) ) {
wp_send_json_error( array( 'message' => __( 'Invalid security token.', 'members' ) ), 403 );
}
- if ( ! current_user_can( 'manage_options' ) ) {
+ if ( ! current_user_can( get_members_settings_capability() ) ) {
wp_send_json_error( array( 'message' => __( 'Permission denied.', 'members' ) ), 403 );
}
$raw = isset( $_POST['settings'] ) ? wp_unslash( $_POST['settings'] ) : '';
@@ -698,7 +707,7 @@ function ajax_user_search() {
if ( ! isset( $_GET['nonce'] ) || ! wp_verify_nonce( sanitize_text_field( wp_unslash( $_GET['nonce'] ) ), 'members_admin_menus' ) ) {
wp_send_json_error( array( 'message' => __( 'Invalid security token.', 'members' ) ), 403 );
}
- if ( ! current_user_can( 'manage_options' ) ) {
+ if ( ! current_user_can( get_members_settings_capability() ) ) {
wp_send_json_error( array( 'message' => __( 'Permission denied.', 'members' ) ), 403 );
}
$term = isset( $_GET['term'] ) ? sanitize_text_field( wp_unslash( $_GET['term'] ) ) : '';
From db5fe2e6f0b499c20c11d31ae634dfe7f7853556 Mon Sep 17 00:00:00 2001
From: Omar ElHawary
Date: Wed, 8 Apr 2026 18:02:35 +0200
Subject: [PATCH 14/73] feat(admin): update Font Awesome integration and
improve menu item handling
---
.../app/functions-admin.php | 4 +-
addons/members-admin-menus/app/functions.php | 63 ++++++++++++++-----
2 files changed, 48 insertions(+), 19 deletions(-)
diff --git a/addons/members-admin-menus/app/functions-admin.php b/addons/members-admin-menus/app/functions-admin.php
index 5f0e741..b8ad2f4 100644
--- a/addons/members-admin-menus/app/functions-admin.php
+++ b/addons/members-admin-menus/app/functions-admin.php
@@ -125,9 +125,9 @@ function enqueue_admin_menus_assets() {
wp_enqueue_style( 'wp-color-picker' );
wp_enqueue_style(
'members-admin-menus-fa',
- 'https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.2/css/all.min.css',
+ 'https://cdnjs.cloudflare.com/ajax/libs/font-awesome/' . FONT_AWESOME_CDN_VERSION . '/css/all.min.css',
array(),
- '6.5.2'
+ FONT_AWESOME_CDN_VERSION
);
wp_enqueue_script( 'members-admin-menus' );
diff --git a/addons/members-admin-menus/app/functions.php b/addons/members-admin-menus/app/functions.php
index eb2e5c3..181dd98 100644
--- a/addons/members-admin-menus/app/functions.php
+++ b/addons/members-admin-menus/app/functions.php
@@ -13,6 +13,9 @@
/** Option name. */
const OPTION_KEY = 'members_admin_menus_settings';
+/** Font Awesome CDN release (cdnjs) — used by maybe_enqueue_fontawesome() and enqueue_admin_menus_assets(). */
+const FONT_AWESOME_CDN_VERSION = '6.5.2';
+
add_action( 'admin_menu', __NAMESPACE__ . '\apply_menu_modifications', 999 );
add_action( 'admin_menu', __NAMESPACE__ . '\inject_custom_menu_items_late', 100 );
add_action( 'admin_init', __NAMESPACE__ . '\block_restricted_pages', 1 );
@@ -79,6 +82,23 @@ function filter_menu_order( $menu_order ) {
return $merged;
}
+/**
+ * HTML id for a top-level $menu row (matches #adminmenu #… in the DOM).
+ *
+ * @param array $item Menu row from global $menu.
+ * @return string
+ */
+function members_am_menu_item_dom_id( $item ) {
+ if ( ! empty( $item[5] ) ) {
+ return sanitize_html_class( $item[5] );
+ }
+ if ( empty( $item[2] ) || ! function_exists( 'get_plugin_page_hookname' ) ) {
+ return '';
+ }
+ $hook = get_plugin_page_hookname( $item[2], '' );
+ return $hook ? sanitize_html_class( $hook ) : '';
+}
+
/**
* Enqueue Font Awesome 6 on admin pages when any override uses FA icons.
*
@@ -100,9 +120,9 @@ function maybe_enqueue_fontawesome() {
if ( is_array( $ov ) && isset( $ov['icon_type'] ) && 'fontawesome' === $ov['icon_type'] ) {
wp_enqueue_style(
'members-fontawesome',
- 'https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css',
+ 'https://cdnjs.cloudflare.com/ajax/libs/font-awesome/' . FONT_AWESOME_CDN_VERSION . '/css/all.min.css',
array(),
- '6.5.1'
+ FONT_AWESOME_CDN_VERSION
);
return;
}
@@ -402,13 +422,13 @@ function apply_menu_overrides( $overrides ) {
$menu[ $k ][6] = sanitize_text_field( $icon );
} elseif ( 'fontawesome' === $icon_type ) {
$menu[ $k ][6] = 'none';
- $id = isset( $item[5] ) ? sanitize_html_class( $item[5] ) : '';
+ $id = members_am_menu_item_dom_id( $item );
if ( $id ) {
$fa_icons[ $id ] = esc_attr( $icon );
}
} elseif ( 'custom' === $icon_type || 'image' === $icon_type ) {
$menu[ $k ][6] = esc_url( $icon );
- $id = isset( $item[5] ) ? sanitize_html_class( $item[5] ) : '';
+ $id = members_am_menu_item_dom_id( $item );
if ( $id ) {
$img_icon_ids[] = $id;
}
@@ -454,7 +474,7 @@ function apply_menu_overrides( $overrides ) {
/**
* Output CSS + HTML to render Font Awesome icons in the admin sidebar.
*
- * Hides the default dashicon/image and places the FA icon via ::before pseudo-element.
+ * Hides the default Dashicon (and img/svg) and injects a Font Awesome . FA glyphs render on that element, not on .wp-menu-image::before.
*
* @return void
*/
@@ -466,10 +486,12 @@ function output_fa_icon_styles() {
$js = '';
foreach ( $GLOBALS['members_am_fa_icons'] as $menu_id => $fa_class ) {
$sel = '#adminmenu #' . $menu_id . ' .wp-menu-image';
- $css .= $sel . ':before { content: "" !important; }' . "\n";
- $css .= $sel . ' img { display: none !important; }' . "\n";
- $css .= $sel . ' .members-am-fa { font-size: 20px; line-height: 1; }' . "\n";
- $js .= 'jQuery("#' . esc_js( $menu_id ) . ' .wp-menu-image").html(\' \');' . "\n";
+ // Hide the core Dashicon pseudo-element without setting content: "" (clearer for devtools and avoids edge cases with icon fonts).
+ $css .= $sel . ':before { display: none !important; }' . "\n";
+ $css .= $sel . ' img, ' . $sel . ' svg { display: none !important; }' . "\n";
+ $css .= $sel . ' { display: flex !important; align-items: center !important; justify-content: center !important; min-width: 20px !important; }' . "\n";
+ $css .= $sel . ' .members-am-fa { font-size: 20px; line-height: 1; display: inline-block; width: 20px; text-align: center; font-style: normal; font-weight: 900; vertical-align: middle; }' . "\n";
+ $js .= 'jQuery("#' . esc_js( $menu_id ) . ' .wp-menu-image").html(\' \');' . "\n";
}
echo '\n";
echo '' . "\n";
@@ -624,7 +646,7 @@ function apply_color_overrides( $overrides ) {
$rules = array();
foreach ( $menu as $k => $item ) {
- if ( empty( $item[2] ) || empty( $item[5] ) ) {
+ if ( empty( $item[2] ) ) {
continue;
}
$slug = $item[2];
@@ -632,7 +654,7 @@ function apply_color_overrides( $overrides ) {
continue;
}
$o = $overrides[ $slug ];
- $id = sanitize_html_class( $item[5] );
+ $id = members_am_menu_item_dom_id( $item );
if ( ! $id ) {
continue;
}
@@ -652,21 +674,28 @@ function apply_color_overrides( $overrides ) {
if ( ! empty( $o['color_icon'] ) ) {
$ic = sanitize_hex_color( $o['color_icon'] );
if ( $ic ) {
- $rules[] = $sel . ' .wp-menu-image:before { color: ' . $ic . ' !important; }';
- $rules[] = $sel . ' .wp-menu-image svg { fill: ' . $ic . ' !important; }';
- $rules[] = $sel . ' .wp-menu-image svg * { fill: ' . $ic . ' !important; }';
- $rules[] = $sel . ' .wp-menu-image img { filter: none !important; }';
+ // Font Awesome glyphs live on , not .wp-menu-image:before (we clear that for Dashicons).
+ $is_fa = ( ! empty( $o['icon_type'] ) && 'fontawesome' === $o['icon_type'] )
+ || ( ! empty( $o['icon'] ) && is_string( $o['icon'] ) && false !== strpos( $o['icon'], 'fa-' ) );
+ if ( $is_fa ) {
+ $rules[] = $sel . ' .wp-menu-image .members-am-fa { color: ' . $ic . ' !important; }';
+ } else {
+ $rules[] = $sel . ' .wp-menu-image:before { color: ' . $ic . ' !important; }';
+ $rules[] = $sel . ' .wp-menu-image svg { fill: ' . $ic . ' !important; }';
+ $rules[] = $sel . ' .wp-menu-image svg * { fill: ' . $ic . ' !important; }';
+ $rules[] = $sel . ' .wp-menu-image img { filter: none !important; }';
+ }
}
}
}
// Submenu items: target by parent ID + child href.
foreach ( $menu as $k => $item ) {
- if ( empty( $item[2] ) || empty( $item[5] ) ) {
+ if ( empty( $item[2] ) ) {
continue;
}
$parent_slug = $item[2];
- $parent_id = sanitize_html_class( $item[5] );
+ $parent_id = members_am_menu_item_dom_id( $item );
if ( ! $parent_id || empty( $submenu[ $parent_slug ] ) ) {
continue;
}
From 429b18550d14a6ddc217ae539544bd956669d501 Mon Sep 17 00:00:00 2001
From: Omar ElHawary
Date: Wed, 8 Apr 2026 18:07:09 +0200
Subject: [PATCH 15/73] feat(admin): improve error handling and optimize user
search functionality
---
.../app/functions-admin.php | 13 +++++++++----
addons/members-admin-menus/app/functions.php | 18 +++++++++++++++---
js/admin-menus.js | 13 ++++++++++---
js/admin-menus.min.js | 2 +-
4 files changed, 35 insertions(+), 11 deletions(-)
diff --git a/addons/members-admin-menus/app/functions-admin.php b/addons/members-admin-menus/app/functions-admin.php
index b8ad2f4..7877dba 100644
--- a/addons/members-admin-menus/app/functions-admin.php
+++ b/addons/members-admin-menus/app/functions-admin.php
@@ -190,6 +190,7 @@ function enqueue_admin_menus_assets() {
'adminEditable' => __( 'Allow editing administrator menus', 'members' ),
'adminEditableWarn' => __( 'This can lock administrators out of menus. Continue?', 'members' ),
'saved' => __( 'Settings saved.', 'members' ),
+ 'networkError' => __( 'Could not save settings. Check your connection and try again.', 'members' ),
'visibility' => __( 'Visibility per role', 'members' ),
'title' => __( 'Title', 'members' ),
'url' => __( 'URL', 'members' ),
@@ -670,9 +671,11 @@ function ajax_export_settings() {
wp_die( esc_html__( 'Permission denied.', 'members' ) );
}
$data = get_settings();
- nocache_headers();
- header( 'Content-Type: application/json; charset=utf-8' );
- header( 'Content-Disposition: attachment; filename="members-admin-menus-export.json"' );
+ if ( ! headers_sent() ) {
+ nocache_headers();
+ header( 'Content-Type: application/json; charset=utf-8' );
+ header( 'Content-Disposition: attachment; filename="members-admin-menus-export.json"' );
+ }
echo wp_json_encode( $data, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE );
exit;
}
@@ -714,10 +717,12 @@ function ajax_user_search() {
if ( strlen( $term ) < 2 ) {
wp_send_json_success( array() );
}
+ // Prefix search (e.g. jo*) is cheaper on large user tables than *jo*. Override via members/addons/admin_menus/user_search_pattern.
+ $search = apply_filters( app()->namespace . '/user_search_pattern', $term . '*', $term );
$query = new \WP_User_Query(
array(
'number' => 20,
- 'search' => '*' . $term . '*',
+ 'search' => $search,
'search_columns' => array( 'user_login', 'user_nicename', 'user_email', 'display_name' ),
'fields' => array( 'ID', 'user_login', 'display_name' ),
)
diff --git a/addons/members-admin-menus/app/functions.php b/addons/members-admin-menus/app/functions.php
index 181dd98..ed31529 100644
--- a/addons/members-admin-menus/app/functions.php
+++ b/addons/members-admin-menus/app/functions.php
@@ -1117,9 +1117,20 @@ function is_user_exempt( $user_id ) {
* @return array
*/
function get_resolved_config_for_user( $user_id ) {
+ static $cache = array();
+
+ $uid = absint( $user_id );
+ if ( $uid < 1 ) {
+ return array();
+ }
+ if ( isset( $cache[ $uid ] ) ) {
+ return $cache[ $uid ];
+ }
+
$settings = get_settings();
- $user = get_userdata( $user_id );
+ $user = get_userdata( $uid );
if ( ! $user ) {
+ $cache[ $uid ] = array();
return array();
}
@@ -1129,8 +1140,8 @@ function get_resolved_config_for_user( $user_id ) {
$base = get_resolved_config_for_user_from_roles_only( $settings, $roles );
// Phase 3: user-specific overrides replace role-merged blocks.
- if ( ! empty( $settings['users'][ $user_id ] ) && is_array( $settings['users'][ $user_id ] ) ) {
- $u = $settings['users'][ $user_id ];
+ if ( ! empty( $settings['users'][ $uid ] ) && is_array( $settings['users'][ $uid ] ) ) {
+ $u = $settings['users'][ $uid ];
foreach ( array( 'hidden', 'order', 'submenu_order', 'overrides', 'custom_items', 'capabilities' ) as $k ) {
if ( isset( $u[ $k ] ) ) {
$base[ $k ] = $u[ $k ];
@@ -1138,6 +1149,7 @@ function get_resolved_config_for_user( $user_id ) {
}
}
+ $cache[ $uid ] = $base;
return $base;
}
diff --git a/js/admin-menus.js b/js/admin-menus.js
index c56bcd2..022512e 100644
--- a/js/admin-menus.js
+++ b/js/admin-menus.js
@@ -1078,9 +1078,16 @@
} else {
alert(res.data && res.data.message ? res.data.message : 'Error');
}
- }).always(function () {
- $b.prop('disabled', false);
- });
+ })
+ .fail(function () {
+ alert(
+ membersAdminMenus.i18n.networkError ||
+ 'Could not save settings. Check your connection and try again.'
+ );
+ })
+ .always(function () {
+ $b.prop('disabled', false);
+ });
}
function resetSettings(scope, role) {
diff --git a/js/admin-menus.min.js b/js/admin-menus.min.js
index bdffdaf..8ece99d 100644
--- a/js/admin-menus.min.js
+++ b/js/admin-menus.min.js
@@ -1 +1 @@
-!function(g){"use strict";var h={settings:g.extend(!0,{},membersAdminMenus.settings),tree:[],activeRoleSlugs:[],carouselPage:0,columnsPerPage:3,selectedId:null,iconTab:"dashicons",previewUserId:null,previewUserRoles:[],userSuggestions:[],mediaFrame:null,syncScroll:function(){try{return"0"!==localStorage.getItem("members_am_sync_scroll")}catch(e){return!0}}()},e=["dashicons-menu","dashicons-admin-dashboard","dashicons-admin-post","dashicons-admin-page","dashicons-admin-media","dashicons-admin-comments","dashicons-admin-appearance","dashicons-admin-plugins","dashicons-admin-users","dashicons-admin-tools","dashicons-admin-settings","dashicons-admin-generic","dashicons-edit","dashicons-plus","dashicons-chart-bar","dashicons-cart","dashicons-products","dashicons-email","dashicons-groups","dashicons-heart","dashicons-star-filled","dashicons-smiley","dashicons-info","dashicons-lock","dashicons-unlock","dashicons-visibility","dashicons-hidden","dashicons-arrow-up","dashicons-arrow-down","dashicons-admin-network","dashicons-performance"],s=["fa-solid fa-house","fa-solid fa-user","fa-solid fa-gear","fa-solid fa-file","fa-solid fa-image","fa-solid fa-cart-shopping","fa-solid fa-chart-line","fa-solid fa-envelope","fa-solid fa-book","fa-solid fa-link","fa-solid fa-bell","fa-solid fa-star","fa-solid fa-heart","fa-solid fa-lock","fa-solid fa-unlock","fa-solid fa-pen","fa-solid fa-trash","fa-solid fa-plus","fa-solid fa-minus"],t="members_am_view_state";function o(){try{localStorage.setItem(t,JSON.stringify({activeRoleSlugs:h.activeRoleSlugs,carouselPage:h.carouselPage}))}catch(e){}}function d(){return membersAdminMenus.roles||[]}function r(){h.settings._meta&&!Array.isArray(h.settings._meta)||(h.settings._meta={version:3,admin_editable:!1}),h.settings.roles&&!Array.isArray(h.settings.roles)||(h.settings.roles={}),h.settings.users&&!Array.isArray(h.settings.users)||(h.settings.users={}),Array.isArray(h.settings.custom_items)||(h.settings.custom_items=[]),h.settings.capabilities&&!Array.isArray(h.settings.capabilities)||(h.settings.capabilities={})}function v(e){r(),h.settings.roles[e]||(h.settings.roles[e]={hidden:[],order:[],submenu_order:{},overrides:{}});var s=h.settings.roles[e];return s.hidden&&Array.isArray(s.hidden)||(s.hidden=[]),s.order&&Array.isArray(s.order)||(s.order=[]),s.submenu_order&&!Array.isArray(s.submenu_order)||(s.submenu_order={}),s.overrides&&!Array.isArray(s.overrides)||(s.overrides={}),s}function f(e){r(),h.settings.users[e]||(h.settings.users[e]={});var s=h.settings.users[e];return s.hidden&&Array.isArray(s.hidden)||(s.hidden=[]),s.order&&Array.isArray(s.order)||(s.order=[]),s.overrides&&!Array.isArray(s.overrides)||(s.overrides={}),s.submenu_order&&!Array.isArray(s.submenu_order)||(s.submenu_order={}),s}function i(e){var s=e.id||"c";return"members-am-"+String(s).replace(/[^a-z0-9_-]/gi,"-").toLowerCase()}function m(e){return!!e&&0===(-1!==e.indexOf("::")?e.split("::").pop():e).indexOf("members-am-")}function n(){var r=g.extend(!0,[],membersAdminMenus.menuTree||[]),n={};return r.forEach(function(e){n[e.id]=!0}),(h.settings.custom_items||[]).forEach(function(e){if(e&&e.id){var s=i(e);if(n[s]){for(var a=0;an&&(h.carouselPage=n))}}h.activeRoleSlugs=s.filter(function(e){return"administrator"!==e||a}),h.activeRoleSlugs.length||(h.activeRoleSlugs=["subscriber"])}function O(){var r=g("#members-am-role-chips").empty();d().forEach(function(e){if("administrator"!==e.slug||h.settings._meta.admin_editable){var s=-1!==h.activeRoleSlugs.indexOf(e.slug),a=g(' ').text(e.label).attr("data-role",e.slug).toggleClass("is-active",s);r.append(a)}})}function A(e,s,a,r){var n=s.id,t=w(e,n),i=!k(e,s.cap),o=v(e).overrides[n]||{},m=o.label||s.title||n,l=g('
').attr("data-id",n).toggleClass("is-hidden",t).toggleClass("is-no-cap",i).toggleClass("is-selected",h.selectedId===n).toggleClass("is-sub",!!a),c=g('
');if(!a){var d=o.icon||s.icon,u=I(d,o.icon_type||s.icon_type);if("fontawesome"===u&&d)c.append(g(' '));else if("svg"!==u&&"image"!==u&&"custom"!==u||!d){var p=d&&0===d.indexOf("dashicons-")?d:"dashicons-admin-generic";c.append(g(' '))}else c.append(g(" ").attr("src",d).css({width:"20px",height:"20px",display:"inline-block",verticalAlign:"middle",objectFit:"contain",filter:"none"}))}if(s.custom&&c.append(g('custom ')),o.label&&c.append(g('edit ')),c.append(g(' ').text(m)),o.badge){var b=o.badge_bg||"#d63638";c.append(g(' ').text(o.badge).css({backgroundColor:b,color:"#fff",fontSize:"9px",padding:"1px 5px",borderRadius:"2px",marginLeft:"4px",whiteSpace:"nowrap"}))}i&&c.append(g(' Roles.\">🔒 no access ")),l.append(c),o.color_bg&&l.css("background-color",o.color_bg),o.color_text&&l.find(".members-am-item-label").css("color",o.color_text),o.color_icon&&(l.find(".dashicons").css("color",o.color_icon),l.find(".members-am-fa-icon i").css("color",o.color_icon),l.find("img").css("filter","none"));var f=g('
');f.append(g(' ').text("◉"),g(' ').text("↑"),g(' ').text("↓")),l.append(f),r.append(l)}function R(s,e,a,r){var n=r.overrides&&r.overrides[s.id]||{},t=n.label||s.title,i=function(e,s){var a=f(e);if(-1!==a.hidden.indexOf(s))return!0;var r=_(s);return!(!r||-1===a.hidden.indexOf(r))}(a,s.id),o=!function(e){if(!e||"read"===e)return 1;for(var s=h.previewUserRoles||[],a=0;a").addClass(m).attr("data-id",s.id),c=g('
');if(!e){var d=n.icon||s.icon,u=I(d,n.icon_type||s.icon_type);"fontawesome"===u&&d?c.append(g(' ')):"svg"!==u&&"image"!==u&&"custom"!==u||!d?d&&0===d.indexOf("dashicons-")?c.append(g(' ')):c.append(g(' ')):c.append(g(" ").attr("src",d).css({width:"20px",height:"20px",display:"inline-block",verticalAlign:"middle",objectFit:"contain",filter:"none"}))}if(s.custom&&c.append(g('custom ')),n.label&&c.append(g('edit ')),c.append(g(' ').text(t)),n.badge){var p=n.badge_bg||"#d63638";c.append(g(' ').text(n.badge).css({backgroundColor:p,color:"#fff",fontSize:"9px",padding:"1px 5px",borderRadius:"2px",marginLeft:"4px",whiteSpace:"nowrap"}))}o&&c.append(g('🔒 no access ")),l.append(c),n.color_bg&&l.css("background-color",n.color_bg),n.color_text&&l.find(".members-am-item-label").css("color",n.color_text),n.color_icon&&(l.find(".dashicons").css("color",n.color_icon),l.find(".members-am-fa-icon i").css("color",n.color_icon));var b=g('
');return b.append(g(' ').text(i?"◯":"◉"),g(' ').text("↑"),g(' ').text("↓")),l.append(b),l.on("click",function(e){g(e.target).closest("button").length||(h.selectedId=s.id,z())}),l}function P(){var a=g("#members-am-columns"),r={};a.find(".members-am-column").each(function(){var e=g(this).data("role");if(e){var s=g(this).find(".members-am-sidebar-list");s.length&&(r[e]=s.scrollTop())}}),a.empty();var e,s=h.carouselPage*h.columnsPerPage;if(h.activeRoleSlugs.slice(s,s+h.columnsPerPage).forEach(function(e){var s=g('
');!function(n,e){e.empty();var s=g(''),a=(d().filter(function(e){return e.slug===n})[0]||{}).label||n;s.append(g('').text(a)),s.append(g(' ').append(g(' ').text("◀"),g(' ').text("▶"))),e.append(s);var t=g('');x(n).forEach(function(e){if(0!==e.indexOf("sep-")){var r=u(e);if(r)if(A(n,r,null,t),r.children&&r.children.length)y(n,r.id).forEach(function(e){var s=r.id+"::"+e,a=u(s);if(a){if("__promote__"===(v(n).overrides[s]||{}).parent)return;A(n,a,r.id,t)}})}else t.append(g('
').text("—"))}),e.append(t)}(e,s),a.append(s),r[e]&&s.find(".members-am-sidebar-list").scrollTop(r[e])}),h.previewUserId){var i=h.previewUserId,n=g('
'),t=g('');t.append(g(" ").text(h.previewUserLabel||"User #"+i)),t.append(g('× ').on("click",function(){h.previewUserId=null,h.previewUserLabel=null,h.previewUserRoles=[],z()})),n.append(t);var o=g(''),m=f(i);((e=f(i)).order&&e.order.length?e.order:p()).forEach(function(a){if(0!==a.indexOf("sep-")){var r=u(a);if(r){o.append(R(r,null,i,m));var e,s,n,t=r.children||[];(e=a,s=t,(n=f(i)).submenu_order&&n.submenu_order[e]?n.submenu_order[e]:s.map(function(e){return e.id})).forEach(function(e){var s=function(e,s){if(!e||!e.children)return null;for(var a=0;a ').text("——"))}),n.append(o),a.append(n)}if(h.syncScroll){var l=a.find(".members-am-sidebar-list"),c=!1;l.on("scroll",function(){if(!c){c=!0;var e=g(this).scrollTop();l.not(this).scrollTop(e),c=!1}})}!function(){var e=Math.max(1,Math.ceil(h.activeRoleSlugs.length/h.columnsPerPage)),s=(Math.min(h.carouselPage+1,e),h.carouselPage*h.columnsPerPage+1),a=Math.min((h.carouselPage+1)*h.columnsPerPage,h.activeRoleSlugs.length);g("#members-am-carousel-status").text(s+"–"+a+" "+membersAdminMenus.i18n.of+" "+h.activeRoleSlugs.length);for(var r=g("#members-am-carousel-dots").empty(),n=0;n ').toggleClass("is-active",n===h.carouselPage))}()}function M(){if(h.selectedId){g("#members-am-edit-panel").removeAttr("hidden");var e=u(h.selectedId),s=function(){if(!h.selectedId)return null;var e=c();if(e){var s=f(e);return s.overrides&&s.overrides[h.selectedId]||{}}var a=l()[0];return a?v(a).overrides[h.selectedId]||{}:null}()||{};g("#members-am-edit-title").text(e?e.title:h.selectedId),g("#members-am-edit-label").val(s.label||e&&e.title||"");var a=m(h.selectedId);g("#members-am-edit-url-wrap").toggle(a),g("#members-am-edit-url").attr("placeholder","Override URL (leave empty for default)").val(a&&(s.url||e&&e.url)||"").data("default-url",e&&e.url||""),g("#members-am-icon-type").val(s.icon_type||"dashicon"),g("#members-am-icon-value").val(s.icon||e&&e.icon||"");var r=s.icon||e&&e.icon||"",n=I(r,s.icon_type||e&&e.icon_type||"");"image"!==n&&"custom"!==n&&"svg"!==n||!r?g("#members-am-icon-preview").hide():g("#members-am-icon-preview").show().attr("src",r),g("#members-am-color-bg").val(s.color_bg||""),g("#members-am-color-text").val(s.color_text||""),g("#members-am-color-icon").val(s.color_icon||""),g("#members-am-badge-text").val(s.badge||""),g("#members-am-badge-bg").val(s.badge_bg||""),g("#members-am-item-cap").attr("placeholder",e&&e.cap?e.cap+" (default)":"").val(h.settings.capabilities[h.selectedId]||"");var t=e&&e.custom;g("#members-am-remove-custom").toggle(!!t),g("#members-am-visibility-toggles").empty();var i=e&&e.cap||"read";d().forEach(function(e){if("administrator"!==e.slug||h.settings._meta.admin_editable){var s=w(e.slug,h.selectedId),a=k(e.slug,i),r=g(' ').attr("data-role",e.slug).prop("checked",!s&&a);a||r.prop("disabled",!0);var n=g(' ').append(r,g(" ").text(e.label));a||(n.append(g(" ").text(" — no capability").css({color:"#999",fontStyle:"italic",marginLeft:"4px"})),n.css("opacity","0.5")),g("#members-am-visibility-toggles").append(n)}}),g(".members-am-color").each(function(){g(this).data("wpWpColorPicker")&&g(this).wpColorPicker("destroy")}),g(".members-am-color").wpColorPicker({change:function(e,s){setTimeout(function(){E()},20)},clear:function(){setTimeout(function(){E()},20)}}),U()}else g("#members-am-edit-panel").attr("hidden",!0)}function E(){if(h.selectedId){if(a("label",g("#members-am-edit-label").val()),m(h.selectedId)){var e=g("#members-am-edit-url").val();a("url",e===(g("#members-am-edit-url").data("default-url")||"")?"":e)}else a("url","");var s=g("#members-am-icon-value").val();a("icon_type",I(s,g("#members-am-icon-type").val())),a("icon",s),a("color_bg",g("#members-am-color-bg").val()),a("color_text",g("#members-am-color-text").val()),a("color_icon",g("#members-am-color-icon").val()),a("badge",g("#members-am-badge-text").val()),a("badge_bg",g("#members-am-badge-bg").val()),h.settings.capabilities[h.selectedId]=g("#members-am-item-cap").val()||"",P()}}function U(){var a=h.iconTab,r=(g("#members-am-icon-search").val()||"").toLowerCase(),n=g("#members-am-icon-grid").empty();("dashicons"===a?e:s).forEach(function(e){if(!r||-1!==e.indexOf(r)){var s=g(' ');"dashicons"===a?s.append(g(' ')):s.append(g(' ')),s.on("click",function(){g("#members-am-icon-value").val(e),g("#members-am-icon-type").val("dashicons"===a?"dashicon":"fontawesome"),E()}),n.append(s)}})}function C(e,s){var a=h.activeRoleSlugs.indexOf(e);if(-1!==a){var r=a+s;if(!(r<0||r>=h.activeRoleSlugs.length)){var n=h.activeRoleSlugs[a];h.activeRoleSlugs[a]=h.activeRoleSlugs[r],h.activeRoleSlugs[r]=n,o(),z()}}}function T(e,s,a){var r="__promote__"===(v(e).overrides[s]||{}).parent?null:_(s);if(r){var n=v(e).submenu_order;n[r]||(n[r]=b(r));var t=n[r],i=s.split("::"),o=i[1]||i[0];if(-1===(l=t.indexOf(o)))return;if((c=l+a)<0||c>=t.length)return;var m=t[l];t[l]=t[c],t[c]=m}else{v(e).order&&v(e).order.length||(v(e).order=p());var l,c,d=v(e).order;if(-1===(l=d.indexOf(s)))return;if((c=l+a)<0||c>=d.length)return;var u=d[l];d[l]=d[c],d[c]=u}z()}function L(){var e=l();if(e.length){var r="sep-"+Date.now();e.forEach(function(e){v(e).order&&v(e).order.length||(v(e).order=p());var s=v(e).order,a=h.selectedId?s.indexOf(h.selectedId):s.length-1;a<0&&(a=s.length),s.splice(a+1,0,r)}),z()}}function N(){var e=g("#members-am-save").prop("disabled",!0);g.post(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_save",nonce:membersAdminMenus.nonce,settings:JSON.stringify(h.settings)}).done(function(e){e.success?(alert(membersAdminMenus.i18n.saved),location.reload()):alert(e.data&&e.data.message?e.data.message:"Error")}).always(function(){e.prop("disabled",!1)})}function J(e,s){confirm("role"===e&&s?"Reset all settings for this role? This cannot be undone.":"Reset ALL menu settings for every role? This cannot be undone.")&&g.post(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_reset",nonce:membersAdminMenus.nonce,scope:e||"all",role:s||""},function(e){e.success?location.reload():alert(e.data&&e.data.message?e.data.message:"Reset failed.")})}function F(e){g.getJSON(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_user_search",nonce:membersAdminMenus.nonce,term:e},function(e){e.success&&e.data&&e.data.length?function(e){g(".members-am-user-suggestions").remove();var s=g("#members-am-user-search").parent();s.css("position","relative");var a=g('
');e.forEach(function(e){a.append(g('
').text(e.label).data("userId",e.id).on("click",function(){!function(e,s,a){h.previewUserId=e,h.previewUserLabel=s||"User #"+e,h.previewUserRoles=a||[],r(),h.settings.users[e]||(h.settings.users[e]={});z()}(e.id,e.label,e.roles),g(".members-am-user-suggestions").remove(),g("#members-am-user-search").val("")}))}),s.append(a),setTimeout(function(){g(document).one("click",function(){g(".members-am-user-suggestions").remove()})},0)}(e.data):g(".members-am-user-suggestions").remove()})}function j(){var s;g(document).on("click","#members-am-role-chips .members-am-chip",function(){var e=g(this).data("role"),s=h.activeRoleSlugs.indexOf(e);-1===s?h.activeRoleSlugs.push(e):1=n.length||(n.splice(o,1),n.splice(m,0,s))}}(s,a,g(this).closest(".members-am-item").hasClass("is-sub")?_(a):null,r?-1:1),P()}}),g("#members-am-save").on("click",N),g("#members-am-reset").on("click",function(e){e.stopPropagation(),g(".members-am-reset-dropdown").remove();var s=g(this),a=h.activeRoleSlugs||[],r=a.length?a[0]:"",n="";r&&(membersAdminMenus.roles||[]).forEach(function(e){e.slug===r&&(n=e.label)});var t=g('
');if(t.append(g('
').text("Reset Settings")),r&&n){var i=g(' ');i.append(g(' ')),i.append(g(' ').append(g(" ").text("Reset "+n),g(" ").text("Clear all menu settings for this role only"))),i.on("click",function(){g(".members-am-reset-dropdown").remove(),J("role",r)}),t.append(i)}var o=g(' ');o.append(g(' ')),o.append(g(' ').append(g(" ").text("Reset all roles"),g(" ").text("Clear all menu settings for every role"))),o.on("click",function(){g(".members-am-reset-dropdown").remove(),J("all")}),t.append(o),s.parent().css("position","relative"),t.insertAfter(s),g(document).one("click",function(){g(".members-am-reset-dropdown").remove()})}),g("#members-am-export").on("click",function(e){e.preventDefault(),window.location.href=membersAdminMenus.exportUrl}),g("#members-am-import").on("click",function(){g("#members-am-import-file").trigger("click")}),g("#members-am-import-file").on("change",function(){var e,s,a=this.files&&this.files[0];a&&(e=a,(s=new FileReader).onload=function(){try{var e=JSON.parse(s.result);g.post(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_import",nonce:membersAdminMenus.nonce,settings:JSON.stringify(e)}).done(function(e){e.success?location.reload():alert(e.data&&e.data.message?e.data.message:"Error")})}catch(e){alert("Invalid JSON")}},s.readAsText(e))}),g("#members-am-copy-apply").on("click",function(){var a=g("#members-am-copy-from").val(),s=g("#members-am-copy-to").val();if(a&&s)if(a!==s){var r="",n="";if(d().forEach(function(e){e.slug===a&&(r=e.label),e.slug===s&&(n=e.label)}),confirm('Copy menu settings from "'+r+'" to "'+n+'"?\nThis will overwrite "'+n+"\" menu configuration.\n\nNote: This copies menu order, hidden items, labels, icons, and colors.\nIt does NOT change the role's capabilities (items marked with a lock icon).")){var e=v(a),t={hidden:e.hidden?e.hidden.slice():[],order:[],submenu_order:{},overrides:{}},i=x(a);t.order=i.slice(),h.tree.forEach(function(e){if(e.children&&e.children.length){var s=y(a,e.id);s&&s.length&&(t.submenu_order[e.id]=s.slice())}}),e.overrides&&"object"==typeof e.overrides&&(t.overrides=JSON.parse(JSON.stringify(e.overrides))),h.settings.roles[s]=t,-1===h.activeRoleSlugs.indexOf(s)&&(h.activeRoleSlugs.push(s),o(),O()),z(),N()}}else alert("Source and target roles must be different.")}),g("#members-am-admin-editable").on("change",function(){var e=!0;g(this).is(":checked")&&(e=window.confirm(membersAdminMenus.i18n.adminEditableWarn)),e?(h.settings._meta.admin_editable=g(this).is(":checked"),S(),O(),o(),z()):g(this).prop("checked",!1)}),g("#members-am-sync-scroll").prop("checked",!1!==h.syncScroll),g("#members-am-sync-scroll").on("change",function(){h.syncScroll=g(this).is(":checked");try{localStorage.setItem("members_am_sync_scroll",h.syncScroll?"1":"0")}catch(e){}P()}),g("#members-am-add-item").on("click",function(){var e="c"+Date.now();h.settings.custom_items.push({id:e,label:"Custom link",url:window.location.origin+"/wp-admin/",icon_type:"dashicon",icon:"dashicons-admin-generic",parent:"",position:99,cap:"read"}),h.tree=n(),h.selectedId=i({id:e}),z(),M()}),g("#members-am-remove-custom").on("click",function(){var s=u(h.selectedId);s&&s.customId&&(h.settings.custom_items=(h.settings.custom_items||[]).filter(function(e){return e.id!==s.customId}),h.selectedId=null,h.tree=n(),z(),g("#members-am-edit-panel").attr("hidden",!0))}),g("#members-am-edit-close").on("click",function(){h.selectedId=null,g("#members-am-edit-panel").attr("hidden",!0),z()}),g("#members-am-edit-target-role").on("change",M),g("#members-am-edit-label, #members-am-edit-url, #members-am-icon-value, #members-am-badge-text").on("input",function(){E()}),g("#members-am-item-cap").on("input",function(){E()}),g(".members-am-icon-tabs .button").on("click",function(){g(".members-am-icon-tabs .button").removeClass("is-active"),g(this).addClass("is-active"),h.iconTab="fontawesome"===g(this).data("tab")?"fontawesome":"upload"===g(this).data("tab")?"upload":"dashicons",U()}),g("#members-am-icon-search").on("input",U),g("#members-am-media-upload").on("click",function(e){e.preventDefault(),h.mediaFrame||(h.mediaFrame=wp.media({title:"Choose menu icon",button:{text:"Use as icon"},multiple:!1,library:{type:"image"}}),h.mediaFrame.on("select",function(){var e=h.mediaFrame.state().get("selection").first().toJSON(),s=e.url||"";e.sizes&&(e.sizes.thumbnail?s=e.sizes.thumbnail.url:e.sizes.medium&&(s=e.sizes.medium.url)),g("#members-am-icon-type").val("custom"),g("#members-am-icon-value").val(s),E()})),h.mediaFrame.open()}),g(document).on("change",".members-am-vis-cb",function(){var e=g(this).data("role");if(g(this).is(":checked")){var s=v(e).hidden,a=s.indexOf(h.selectedId);-1!==a&&s.splice(a,1)}else-1===v(e).hidden.indexOf(h.selectedId)&&v(e).hidden.push(h.selectedId);z()}),g("#members-am-add-sep").on("click",L),g("#members-am-promote").on("click",function(){if(h.selectedId){a("parent","__promote__");var r=_(h.selectedId);l().forEach(function(e){var s=v(e);if(s.order&&s.order.length||(s.order=p()),-1===s.order.indexOf(h.selectedId))if(r){var a=s.order.indexOf(r);-1!==a?s.order.splice(a+1,0,h.selectedId):s.order.push(h.selectedId)}else s.order.push(h.selectedId)}),E()}}),g("#members-am-demote").on("click",function(){var e=window.prompt("Parent slug (e.g. edit.php)","edit.php");e&&(a("parent",e),E())}),g("#members-am-user-search").on("input",function(){var e=g(this).val();clearTimeout(s),s=setTimeout(function(){1 ").val("__all__").text("All roles")),h.activeRoleSlugs.forEach(function(s){var e=(d().filter(function(e){return e.slug===s})[0]||{}).label||s;a.append(g(" ").val(s).text(e))}),h.previewUserId&&a.append(g(" ").val("__user__"+h.previewUserId).text(h.previewUserLabel||"User #"+h.previewUserId)),h.selectedId&&M()}g(function(){var s,a,e;r(),h.tree=n(),S(),g("#members-am-admin-editable").prop("checked",!!h.settings._meta.admin_editable),s=g("#members-am-copy-from").empty(),a=g("#members-am-copy-to").empty(),(e=d()).forEach(function(e){s.append(g(" ").val(e.slug).text(e.label)),a.append(g(" ").val(e.slug).text(e.label))}),1n&&(h.carouselPage=n))}}h.activeRoleSlugs=s.filter(function(e){return"administrator"!==e||a}),h.activeRoleSlugs.length||(h.activeRoleSlugs=["subscriber"])}function O(){var r=g("#members-am-role-chips").empty();d().forEach(function(e){if("administrator"!==e.slug||h.settings._meta.admin_editable){var s=-1!==h.activeRoleSlugs.indexOf(e.slug),a=g(' ').text(e.label).attr("data-role",e.slug).toggleClass("is-active",s);r.append(a)}})}function A(e,s,a,r){var n=s.id,t=w(e,n),i=!k(e,s.cap),o=v(e).overrides[n]||{},m=o.label||s.title||n,l=g('
').attr("data-id",n).toggleClass("is-hidden",t).toggleClass("is-no-cap",i).toggleClass("is-selected",h.selectedId===n).toggleClass("is-sub",!!a),c=g('
');if(!a){var d=o.icon||s.icon,u=I(d,o.icon_type||s.icon_type);if("fontawesome"===u&&d)c.append(g(' '));else if("svg"!==u&&"image"!==u&&"custom"!==u||!d){var p=d&&0===d.indexOf("dashicons-")?d:"dashicons-admin-generic";c.append(g(' '))}else c.append(g(" ").attr("src",d).css({width:"20px",height:"20px",display:"inline-block",verticalAlign:"middle",objectFit:"contain",filter:"none"}))}if(s.custom&&c.append(g('custom ')),o.label&&c.append(g('edit ')),c.append(g(' ').text(m)),o.badge){var b=o.badge_bg||"#d63638";c.append(g(' ').text(o.badge).css({backgroundColor:b,color:"#fff",fontSize:"9px",padding:"1px 5px",borderRadius:"2px",marginLeft:"4px",whiteSpace:"nowrap"}))}i&&c.append(g(' Roles.\">🔒 no access ")),l.append(c),o.color_bg&&l.css("background-color",o.color_bg),o.color_text&&l.find(".members-am-item-label").css("color",o.color_text),o.color_icon&&(l.find(".dashicons").css("color",o.color_icon),l.find(".members-am-fa-icon i").css("color",o.color_icon),l.find("img").css("filter","none"));var f=g('
');f.append(g(' ').text("◉"),g(' ').text("↑"),g(' ').text("↓")),l.append(f),r.append(l)}function R(s,e,a,r){var n=r.overrides&&r.overrides[s.id]||{},t=n.label||s.title,i=function(e,s){var a=f(e);if(-1!==a.hidden.indexOf(s))return!0;var r=_(s);return!(!r||-1===a.hidden.indexOf(r))}(a,s.id),o=!function(e){if(!e||"read"===e)return 1;for(var s=h.previewUserRoles||[],a=0;a").addClass(m).attr("data-id",s.id),c=g('
');if(!e){var d=n.icon||s.icon,u=I(d,n.icon_type||s.icon_type);"fontawesome"===u&&d?c.append(g(' ')):"svg"!==u&&"image"!==u&&"custom"!==u||!d?d&&0===d.indexOf("dashicons-")?c.append(g(' ')):c.append(g(' ')):c.append(g(" ").attr("src",d).css({width:"20px",height:"20px",display:"inline-block",verticalAlign:"middle",objectFit:"contain",filter:"none"}))}if(s.custom&&c.append(g('custom ')),n.label&&c.append(g('edit ')),c.append(g(' ').text(t)),n.badge){var p=n.badge_bg||"#d63638";c.append(g(' ').text(n.badge).css({backgroundColor:p,color:"#fff",fontSize:"9px",padding:"1px 5px",borderRadius:"2px",marginLeft:"4px",whiteSpace:"nowrap"}))}o&&c.append(g('🔒 no access ")),l.append(c),n.color_bg&&l.css("background-color",n.color_bg),n.color_text&&l.find(".members-am-item-label").css("color",n.color_text),n.color_icon&&(l.find(".dashicons").css("color",n.color_icon),l.find(".members-am-fa-icon i").css("color",n.color_icon));var b=g('
');return b.append(g(' ').text(i?"◯":"◉"),g(' ').text("↑"),g(' ').text("↓")),l.append(b),l.on("click",function(e){g(e.target).closest("button").length||(h.selectedId=s.id,z())}),l}function P(){var a=g("#members-am-columns"),r={};a.find(".members-am-column").each(function(){var e=g(this).data("role");if(e){var s=g(this).find(".members-am-sidebar-list");s.length&&(r[e]=s.scrollTop())}}),a.empty();var e,s=h.carouselPage*h.columnsPerPage;if(h.activeRoleSlugs.slice(s,s+h.columnsPerPage).forEach(function(e){var s=g('
');!function(n,e){e.empty();var s=g(''),a=(d().filter(function(e){return e.slug===n})[0]||{}).label||n;s.append(g('').text(a)),s.append(g(' ').append(g(' ').text("◀"),g(' ').text("▶"))),e.append(s);var t=g('');x(n).forEach(function(e){if(0!==e.indexOf("sep-")){var r=u(e);if(r)if(A(n,r,null,t),r.children&&r.children.length)y(n,r.id).forEach(function(e){var s=r.id+"::"+e,a=u(s);if(a){if("__promote__"===(v(n).overrides[s]||{}).parent)return;A(n,a,r.id,t)}})}else t.append(g('
').text("—"))}),e.append(t)}(e,s),a.append(s),r[e]&&s.find(".members-am-sidebar-list").scrollTop(r[e])}),h.previewUserId){var i=h.previewUserId,n=g('
'),t=g('');t.append(g(" ").text(h.previewUserLabel||"User #"+i)),t.append(g('× ').on("click",function(){h.previewUserId=null,h.previewUserLabel=null,h.previewUserRoles=[],z()})),n.append(t);var o=g(''),m=f(i);((e=f(i)).order&&e.order.length?e.order:p()).forEach(function(a){if(0!==a.indexOf("sep-")){var r=u(a);if(r){o.append(R(r,null,i,m));var e,s,n,t=r.children||[];(e=a,s=t,(n=f(i)).submenu_order&&n.submenu_order[e]?n.submenu_order[e]:s.map(function(e){return e.id})).forEach(function(e){var s=function(e,s){if(!e||!e.children)return null;for(var a=0;a ').text("——"))}),n.append(o),a.append(n)}if(h.syncScroll){var l=a.find(".members-am-sidebar-list"),c=!1;l.on("scroll",function(){if(!c){c=!0;var e=g(this).scrollTop();l.not(this).scrollTop(e),c=!1}})}!function(){var e=Math.max(1,Math.ceil(h.activeRoleSlugs.length/h.columnsPerPage)),s=(Math.min(h.carouselPage+1,e),h.carouselPage*h.columnsPerPage+1),a=Math.min((h.carouselPage+1)*h.columnsPerPage,h.activeRoleSlugs.length);g("#members-am-carousel-status").text(s+"–"+a+" "+membersAdminMenus.i18n.of+" "+h.activeRoleSlugs.length);for(var r=g("#members-am-carousel-dots").empty(),n=0;n ').toggleClass("is-active",n===h.carouselPage))}()}function M(){if(h.selectedId){g("#members-am-edit-panel").removeAttr("hidden");var e=u(h.selectedId),s=function(){if(!h.selectedId)return null;var e=c();if(e){var s=f(e);return s.overrides&&s.overrides[h.selectedId]||{}}var a=l()[0];return a?v(a).overrides[h.selectedId]||{}:null}()||{};g("#members-am-edit-title").text(e?e.title:h.selectedId),g("#members-am-edit-label").val(s.label||e&&e.title||"");var a=m(h.selectedId);g("#members-am-edit-url-wrap").toggle(a),g("#members-am-edit-url").attr("placeholder","Override URL (leave empty for default)").val(a&&(s.url||e&&e.url)||"").data("default-url",e&&e.url||""),g("#members-am-icon-type").val(s.icon_type||"dashicon"),g("#members-am-icon-value").val(s.icon||e&&e.icon||"");var r=s.icon||e&&e.icon||"",n=I(r,s.icon_type||e&&e.icon_type||"");"image"!==n&&"custom"!==n&&"svg"!==n||!r?g("#members-am-icon-preview").hide():g("#members-am-icon-preview").show().attr("src",r),g("#members-am-color-bg").val(s.color_bg||""),g("#members-am-color-text").val(s.color_text||""),g("#members-am-color-icon").val(s.color_icon||""),g("#members-am-badge-text").val(s.badge||""),g("#members-am-badge-bg").val(s.badge_bg||""),g("#members-am-item-cap").attr("placeholder",e&&e.cap?e.cap+" (default)":"").val(h.settings.capabilities[h.selectedId]||"");var t=e&&e.custom;g("#members-am-remove-custom").toggle(!!t),g("#members-am-visibility-toggles").empty();var i=e&&e.cap||"read";d().forEach(function(e){if("administrator"!==e.slug||h.settings._meta.admin_editable){var s=w(e.slug,h.selectedId),a=k(e.slug,i),r=g(' ').attr("data-role",e.slug).prop("checked",!s&&a);a||r.prop("disabled",!0);var n=g(' ').append(r,g(" ").text(e.label));a||(n.append(g(" ").text(" — no capability").css({color:"#999",fontStyle:"italic",marginLeft:"4px"})),n.css("opacity","0.5")),g("#members-am-visibility-toggles").append(n)}}),g(".members-am-color").each(function(){g(this).data("wpWpColorPicker")&&g(this).wpColorPicker("destroy")}),g(".members-am-color").wpColorPicker({change:function(e,s){setTimeout(function(){E()},20)},clear:function(){setTimeout(function(){E()},20)}}),C()}else g("#members-am-edit-panel").attr("hidden",!0)}function E(){if(h.selectedId){if(a("label",g("#members-am-edit-label").val()),m(h.selectedId)){var e=g("#members-am-edit-url").val();a("url",e===(g("#members-am-edit-url").data("default-url")||"")?"":e)}else a("url","");var s=g("#members-am-icon-value").val();a("icon_type",I(s,g("#members-am-icon-type").val())),a("icon",s),a("color_bg",g("#members-am-color-bg").val()),a("color_text",g("#members-am-color-text").val()),a("color_icon",g("#members-am-color-icon").val()),a("badge",g("#members-am-badge-text").val()),a("badge_bg",g("#members-am-badge-bg").val()),h.settings.capabilities[h.selectedId]=g("#members-am-item-cap").val()||"",P()}}function C(){var a=h.iconTab,r=(g("#members-am-icon-search").val()||"").toLowerCase(),n=g("#members-am-icon-grid").empty();("dashicons"===a?e:s).forEach(function(e){if(!r||-1!==e.indexOf(r)){var s=g(' ');"dashicons"===a?s.append(g(' ')):s.append(g(' ')),s.on("click",function(){g("#members-am-icon-value").val(e),g("#members-am-icon-type").val("dashicons"===a?"dashicon":"fontawesome"),E()}),n.append(s)}})}function U(e,s){var a=h.activeRoleSlugs.indexOf(e);if(-1!==a){var r=a+s;if(!(r<0||r>=h.activeRoleSlugs.length)){var n=h.activeRoleSlugs[a];h.activeRoleSlugs[a]=h.activeRoleSlugs[r],h.activeRoleSlugs[r]=n,o(),z()}}}function T(e,s,a){var r="__promote__"===(v(e).overrides[s]||{}).parent?null:_(s);if(r){var n=v(e).submenu_order;n[r]||(n[r]=b(r));var t=n[r],i=s.split("::"),o=i[1]||i[0];if(-1===(l=t.indexOf(o)))return;if((c=l+a)<0||c>=t.length)return;var m=t[l];t[l]=t[c],t[c]=m}else{v(e).order&&v(e).order.length||(v(e).order=p());var l,c,d=v(e).order;if(-1===(l=d.indexOf(s)))return;if((c=l+a)<0||c>=d.length)return;var u=d[l];d[l]=d[c],d[c]=u}z()}function L(){var e=l();if(e.length){var r="sep-"+Date.now();e.forEach(function(e){v(e).order&&v(e).order.length||(v(e).order=p());var s=v(e).order,a=h.selectedId?s.indexOf(h.selectedId):s.length-1;a<0&&(a=s.length),s.splice(a+1,0,r)}),z()}}function N(){var e=g("#members-am-save").prop("disabled",!0);g.post(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_save",nonce:membersAdminMenus.nonce,settings:JSON.stringify(h.settings)}).done(function(e){e.success?(alert(membersAdminMenus.i18n.saved),location.reload()):alert(e.data&&e.data.message?e.data.message:"Error")}).fail(function(){alert(membersAdminMenus.i18n.networkError||"Could not save settings. Check your connection and try again.")}).always(function(){e.prop("disabled",!1)})}function J(e,s){confirm("role"===e&&s?"Reset all settings for this role? This cannot be undone.":"Reset ALL menu settings for every role? This cannot be undone.")&&g.post(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_reset",nonce:membersAdminMenus.nonce,scope:e||"all",role:s||""},function(e){e.success?location.reload():alert(e.data&&e.data.message?e.data.message:"Reset failed.")})}function F(e){g.getJSON(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_user_search",nonce:membersAdminMenus.nonce,term:e},function(e){e.success&&e.data&&e.data.length?function(e){g(".members-am-user-suggestions").remove();var s=g("#members-am-user-search").parent();s.css("position","relative");var a=g('
');e.forEach(function(e){a.append(g('
').text(e.label).data("userId",e.id).on("click",function(){!function(e,s,a){h.previewUserId=e,h.previewUserLabel=s||"User #"+e,h.previewUserRoles=a||[],r(),h.settings.users[e]||(h.settings.users[e]={});z()}(e.id,e.label,e.roles),g(".members-am-user-suggestions").remove(),g("#members-am-user-search").val("")}))}),s.append(a),setTimeout(function(){g(document).one("click",function(){g(".members-am-user-suggestions").remove()})},0)}(e.data):g(".members-am-user-suggestions").remove()})}function j(){var s;g(document).on("click","#members-am-role-chips .members-am-chip",function(){var e=g(this).data("role"),s=h.activeRoleSlugs.indexOf(e);-1===s?h.activeRoleSlugs.push(e):1=n.length||(n.splice(o,1),n.splice(m,0,s))}}(s,a,g(this).closest(".members-am-item").hasClass("is-sub")?_(a):null,r?-1:1),P()}}),g("#members-am-save").on("click",N),g("#members-am-reset").on("click",function(e){e.stopPropagation(),g(".members-am-reset-dropdown").remove();var s=g(this),a=h.activeRoleSlugs||[],r=a.length?a[0]:"",n="";r&&(membersAdminMenus.roles||[]).forEach(function(e){e.slug===r&&(n=e.label)});var t=g('
');if(t.append(g('
').text("Reset Settings")),r&&n){var i=g(' ');i.append(g(' ')),i.append(g(' ').append(g(" ").text("Reset "+n),g(" ").text("Clear all menu settings for this role only"))),i.on("click",function(){g(".members-am-reset-dropdown").remove(),J("role",r)}),t.append(i)}var o=g(' ');o.append(g(' ')),o.append(g(' ').append(g(" ").text("Reset all roles"),g(" ").text("Clear all menu settings for every role"))),o.on("click",function(){g(".members-am-reset-dropdown").remove(),J("all")}),t.append(o),s.parent().css("position","relative"),t.insertAfter(s),g(document).one("click",function(){g(".members-am-reset-dropdown").remove()})}),g("#members-am-export").on("click",function(e){e.preventDefault(),window.location.href=membersAdminMenus.exportUrl}),g("#members-am-import").on("click",function(){g("#members-am-import-file").trigger("click")}),g("#members-am-import-file").on("change",function(){var e,s,a=this.files&&this.files[0];a&&(e=a,(s=new FileReader).onload=function(){try{var e=JSON.parse(s.result);g.post(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_import",nonce:membersAdminMenus.nonce,settings:JSON.stringify(e)}).done(function(e){e.success?location.reload():alert(e.data&&e.data.message?e.data.message:"Error")})}catch(e){alert("Invalid JSON")}},s.readAsText(e))}),g("#members-am-copy-apply").on("click",function(){var a=g("#members-am-copy-from").val(),s=g("#members-am-copy-to").val();if(a&&s)if(a!==s){var r="",n="";if(d().forEach(function(e){e.slug===a&&(r=e.label),e.slug===s&&(n=e.label)}),confirm('Copy menu settings from "'+r+'" to "'+n+'"?\nThis will overwrite "'+n+"\" menu configuration.\n\nNote: This copies menu order, hidden items, labels, icons, and colors.\nIt does NOT change the role's capabilities (items marked with a lock icon).")){var e=v(a),t={hidden:e.hidden?e.hidden.slice():[],order:[],submenu_order:{},overrides:{}},i=x(a);t.order=i.slice(),h.tree.forEach(function(e){if(e.children&&e.children.length){var s=y(a,e.id);s&&s.length&&(t.submenu_order[e.id]=s.slice())}}),e.overrides&&"object"==typeof e.overrides&&(t.overrides=JSON.parse(JSON.stringify(e.overrides))),h.settings.roles[s]=t,-1===h.activeRoleSlugs.indexOf(s)&&(h.activeRoleSlugs.push(s),o(),O()),z(),N()}}else alert("Source and target roles must be different.")}),g("#members-am-admin-editable").on("change",function(){var e=!0;g(this).is(":checked")&&(e=window.confirm(membersAdminMenus.i18n.adminEditableWarn)),e?(h.settings._meta.admin_editable=g(this).is(":checked"),S(),O(),o(),z()):g(this).prop("checked",!1)}),g("#members-am-sync-scroll").prop("checked",!1!==h.syncScroll),g("#members-am-sync-scroll").on("change",function(){h.syncScroll=g(this).is(":checked");try{localStorage.setItem("members_am_sync_scroll",h.syncScroll?"1":"0")}catch(e){}P()}),g("#members-am-add-item").on("click",function(){var e="c"+Date.now();h.settings.custom_items.push({id:e,label:"Custom link",url:window.location.origin+"/wp-admin/",icon_type:"dashicon",icon:"dashicons-admin-generic",parent:"",position:99,cap:"read"}),h.tree=n(),h.selectedId=i({id:e}),z(),M()}),g("#members-am-remove-custom").on("click",function(){var s=u(h.selectedId);s&&s.customId&&(h.settings.custom_items=(h.settings.custom_items||[]).filter(function(e){return e.id!==s.customId}),h.selectedId=null,h.tree=n(),z(),g("#members-am-edit-panel").attr("hidden",!0))}),g("#members-am-edit-close").on("click",function(){h.selectedId=null,g("#members-am-edit-panel").attr("hidden",!0),z()}),g("#members-am-edit-target-role").on("change",M),g("#members-am-edit-label, #members-am-edit-url, #members-am-icon-value, #members-am-badge-text").on("input",function(){E()}),g("#members-am-item-cap").on("input",function(){E()}),g(".members-am-icon-tabs .button").on("click",function(){g(".members-am-icon-tabs .button").removeClass("is-active"),g(this).addClass("is-active"),h.iconTab="fontawesome"===g(this).data("tab")?"fontawesome":"upload"===g(this).data("tab")?"upload":"dashicons",C()}),g("#members-am-icon-search").on("input",C),g("#members-am-media-upload").on("click",function(e){e.preventDefault(),h.mediaFrame||(h.mediaFrame=wp.media({title:"Choose menu icon",button:{text:"Use as icon"},multiple:!1,library:{type:"image"}}),h.mediaFrame.on("select",function(){var e=h.mediaFrame.state().get("selection").first().toJSON(),s=e.url||"";e.sizes&&(e.sizes.thumbnail?s=e.sizes.thumbnail.url:e.sizes.medium&&(s=e.sizes.medium.url)),g("#members-am-icon-type").val("custom"),g("#members-am-icon-value").val(s),E()})),h.mediaFrame.open()}),g(document).on("change",".members-am-vis-cb",function(){var e=g(this).data("role");if(g(this).is(":checked")){var s=v(e).hidden,a=s.indexOf(h.selectedId);-1!==a&&s.splice(a,1)}else-1===v(e).hidden.indexOf(h.selectedId)&&v(e).hidden.push(h.selectedId);z()}),g("#members-am-add-sep").on("click",L),g("#members-am-promote").on("click",function(){if(h.selectedId){a("parent","__promote__");var r=_(h.selectedId);l().forEach(function(e){var s=v(e);if(s.order&&s.order.length||(s.order=p()),-1===s.order.indexOf(h.selectedId))if(r){var a=s.order.indexOf(r);-1!==a?s.order.splice(a+1,0,h.selectedId):s.order.push(h.selectedId)}else s.order.push(h.selectedId)}),E()}}),g("#members-am-demote").on("click",function(){var e=window.prompt("Parent slug (e.g. edit.php)","edit.php");e&&(a("parent",e),E())}),g("#members-am-user-search").on("input",function(){var e=g(this).val();clearTimeout(s),s=setTimeout(function(){1 ").val("__all__").text("All roles")),h.activeRoleSlugs.forEach(function(s){var e=(d().filter(function(e){return e.slug===s})[0]||{}).label||s;a.append(g(" ").val(s).text(e))}),h.previewUserId&&a.append(g(" ").val("__user__"+h.previewUserId).text(h.previewUserLabel||"User #"+h.previewUserId)),h.selectedId&&M()}g(function(){var s,a,e;r(),h.tree=n(),S(),g("#members-am-admin-editable").prop("checked",!!h.settings._meta.admin_editable),s=g("#members-am-copy-from").empty(),a=g("#members-am-copy-to").empty(),(e=d()).forEach(function(e){s.append(g(" ").val(e.slug).text(e.label)),a.append(g(" ").val(e.slug).text(e.label))}),1
Date: Thu, 9 Apr 2026 13:53:15 +0200
Subject: [PATCH 16/73] feat(admin): add unsaved changes warning and improve
settings change detection
---
.../app/functions-admin.php | 1 +
js/admin-menus.js | 58 +++++++++++++++++++
js/admin-menus.min.js | 2 +-
3 files changed, 60 insertions(+), 1 deletion(-)
diff --git a/addons/members-admin-menus/app/functions-admin.php b/addons/members-admin-menus/app/functions-admin.php
index 7877dba..691c369 100644
--- a/addons/members-admin-menus/app/functions-admin.php
+++ b/addons/members-admin-menus/app/functions-admin.php
@@ -191,6 +191,7 @@ function enqueue_admin_menus_assets() {
'adminEditableWarn' => __( 'This can lock administrators out of menus. Continue?', 'members' ),
'saved' => __( 'Settings saved.', 'members' ),
'networkError' => __( 'Could not save settings. Check your connection and try again.', 'members' ),
+ 'unsavedChanges' => __( 'You have unsaved changes. If you leave this page, those changes will be lost.', 'members' ),
'visibility' => __( 'Visibility per role', 'members' ),
'title' => __( 'Title', 'members' ),
'url' => __( 'URL', 'members' ),
diff --git a/js/admin-menus.js b/js/admin-menus.js
index 022512e..d60b803 100644
--- a/js/admin-menus.js
+++ b/js/admin-menus.js
@@ -16,11 +16,62 @@
previewUserRoles: [],
userSuggestions: [],
mediaFrame: null,
+ allowUnload: false,
syncScroll: (function () {
try { return localStorage.getItem('members_am_sync_scroll') !== '0'; } catch (e) { return true; }
})(),
};
+ /** Snapshot of persisted settings for unsaved-change detection (object key order–independent). */
+ var initialSettingsSerialized = '';
+
+ /**
+ * Stable JSON string for comparing settings payloads (sorts object keys recursively).
+ *
+ * @param {*} value Value from state.settings tree.
+ * @return {string}
+ */
+ function stableStringify(value) {
+ if (value === null) {
+ return 'null';
+ }
+ var t = typeof value;
+ if (t === 'string' || t === 'number' || t === 'boolean') {
+ return JSON.stringify(value);
+ }
+ if (t === 'undefined') {
+ return 'null';
+ }
+ if (Array.isArray(value)) {
+ return '[' + value.map(function (v) { return stableStringify(v); }).join(',') + ']';
+ }
+ if (t === 'object') {
+ var keys = Object.keys(value).sort();
+ return '{' + keys.map(function (k) {
+ return JSON.stringify(k) + ':' + stableStringify(value[k]);
+ }).join(',') + '}';
+ }
+ return JSON.stringify(value);
+ }
+
+ function getSettingsSnapshot() {
+ return stableStringify(state.settings);
+ }
+
+ function isSettingsDirty() {
+ if (state.allowUnload) {
+ return false;
+ }
+ return getSettingsSnapshot() !== initialSettingsSerialized;
+ }
+
+ function getBeforeUnloadPrompt() {
+ if (!isSettingsDirty()) {
+ return;
+ }
+ return (membersAdminMenus.i18n && membersAdminMenus.i18n.unsavedChanges) || '';
+ }
+
var DASHICONS = [
'dashicons-menu', 'dashicons-admin-dashboard', 'dashicons-admin-post', 'dashicons-admin-page',
'dashicons-admin-media', 'dashicons-admin-comments', 'dashicons-admin-appearance', 'dashicons-admin-plugins',
@@ -1073,6 +1124,7 @@
}
).done(function (res) {
if (res.success) {
+ state.allowUnload = true;
alert(membersAdminMenus.i18n.saved);
location.reload();
} else {
@@ -1108,6 +1160,7 @@
},
function (res) {
if (res.success) {
+ state.allowUnload = true;
location.reload();
} else {
alert(res.data && res.data.message ? res.data.message : 'Reset failed.');
@@ -1127,6 +1180,7 @@
settings: JSON.stringify(data),
}).done(function (res) {
if (res.success) {
+ state.allowUnload = true;
location.reload();
} else {
alert(res.data && res.data.message ? res.data.message : 'Error');
@@ -1591,6 +1645,10 @@
renderChips();
bind();
renderAll();
+ initialSettingsSerialized = getSettingsSnapshot();
+ $(window).on('beforeunload', function () {
+ return getBeforeUnloadPrompt();
+ });
}
$(init);
diff --git a/js/admin-menus.min.js b/js/admin-menus.min.js
index 8ece99d..c1f29c9 100644
--- a/js/admin-menus.min.js
+++ b/js/admin-menus.min.js
@@ -1 +1 @@
-!function(g){"use strict";var h={settings:g.extend(!0,{},membersAdminMenus.settings),tree:[],activeRoleSlugs:[],carouselPage:0,columnsPerPage:3,selectedId:null,iconTab:"dashicons",previewUserId:null,previewUserRoles:[],userSuggestions:[],mediaFrame:null,syncScroll:function(){try{return"0"!==localStorage.getItem("members_am_sync_scroll")}catch(e){return!0}}()},e=["dashicons-menu","dashicons-admin-dashboard","dashicons-admin-post","dashicons-admin-page","dashicons-admin-media","dashicons-admin-comments","dashicons-admin-appearance","dashicons-admin-plugins","dashicons-admin-users","dashicons-admin-tools","dashicons-admin-settings","dashicons-admin-generic","dashicons-edit","dashicons-plus","dashicons-chart-bar","dashicons-cart","dashicons-products","dashicons-email","dashicons-groups","dashicons-heart","dashicons-star-filled","dashicons-smiley","dashicons-info","dashicons-lock","dashicons-unlock","dashicons-visibility","dashicons-hidden","dashicons-arrow-up","dashicons-arrow-down","dashicons-admin-network","dashicons-performance"],s=["fa-solid fa-house","fa-solid fa-user","fa-solid fa-gear","fa-solid fa-file","fa-solid fa-image","fa-solid fa-cart-shopping","fa-solid fa-chart-line","fa-solid fa-envelope","fa-solid fa-book","fa-solid fa-link","fa-solid fa-bell","fa-solid fa-star","fa-solid fa-heart","fa-solid fa-lock","fa-solid fa-unlock","fa-solid fa-pen","fa-solid fa-trash","fa-solid fa-plus","fa-solid fa-minus"],t="members_am_view_state";function o(){try{localStorage.setItem(t,JSON.stringify({activeRoleSlugs:h.activeRoleSlugs,carouselPage:h.carouselPage}))}catch(e){}}function d(){return membersAdminMenus.roles||[]}function r(){h.settings._meta&&!Array.isArray(h.settings._meta)||(h.settings._meta={version:3,admin_editable:!1}),h.settings.roles&&!Array.isArray(h.settings.roles)||(h.settings.roles={}),h.settings.users&&!Array.isArray(h.settings.users)||(h.settings.users={}),Array.isArray(h.settings.custom_items)||(h.settings.custom_items=[]),h.settings.capabilities&&!Array.isArray(h.settings.capabilities)||(h.settings.capabilities={})}function v(e){r(),h.settings.roles[e]||(h.settings.roles[e]={hidden:[],order:[],submenu_order:{},overrides:{}});var s=h.settings.roles[e];return s.hidden&&Array.isArray(s.hidden)||(s.hidden=[]),s.order&&Array.isArray(s.order)||(s.order=[]),s.submenu_order&&!Array.isArray(s.submenu_order)||(s.submenu_order={}),s.overrides&&!Array.isArray(s.overrides)||(s.overrides={}),s}function f(e){r(),h.settings.users[e]||(h.settings.users[e]={});var s=h.settings.users[e];return s.hidden&&Array.isArray(s.hidden)||(s.hidden=[]),s.order&&Array.isArray(s.order)||(s.order=[]),s.overrides&&!Array.isArray(s.overrides)||(s.overrides={}),s.submenu_order&&!Array.isArray(s.submenu_order)||(s.submenu_order={}),s}function i(e){var s=e.id||"c";return"members-am-"+String(s).replace(/[^a-z0-9_-]/gi,"-").toLowerCase()}function m(e){return!!e&&0===(-1!==e.indexOf("::")?e.split("::").pop():e).indexOf("members-am-")}function n(){var r=g.extend(!0,[],membersAdminMenus.menuTree||[]),n={};return r.forEach(function(e){n[e.id]=!0}),(h.settings.custom_items||[]).forEach(function(e){if(e&&e.id){var s=i(e);if(n[s]){for(var a=0;an&&(h.carouselPage=n))}}h.activeRoleSlugs=s.filter(function(e){return"administrator"!==e||a}),h.activeRoleSlugs.length||(h.activeRoleSlugs=["subscriber"])}function O(){var r=g("#members-am-role-chips").empty();d().forEach(function(e){if("administrator"!==e.slug||h.settings._meta.admin_editable){var s=-1!==h.activeRoleSlugs.indexOf(e.slug),a=g(' ').text(e.label).attr("data-role",e.slug).toggleClass("is-active",s);r.append(a)}})}function A(e,s,a,r){var n=s.id,t=w(e,n),i=!k(e,s.cap),o=v(e).overrides[n]||{},m=o.label||s.title||n,l=g('
').attr("data-id",n).toggleClass("is-hidden",t).toggleClass("is-no-cap",i).toggleClass("is-selected",h.selectedId===n).toggleClass("is-sub",!!a),c=g('
');if(!a){var d=o.icon||s.icon,u=I(d,o.icon_type||s.icon_type);if("fontawesome"===u&&d)c.append(g(' '));else if("svg"!==u&&"image"!==u&&"custom"!==u||!d){var p=d&&0===d.indexOf("dashicons-")?d:"dashicons-admin-generic";c.append(g(' '))}else c.append(g(" ").attr("src",d).css({width:"20px",height:"20px",display:"inline-block",verticalAlign:"middle",objectFit:"contain",filter:"none"}))}if(s.custom&&c.append(g('custom ')),o.label&&c.append(g('edit ')),c.append(g(' ').text(m)),o.badge){var b=o.badge_bg||"#d63638";c.append(g(' ').text(o.badge).css({backgroundColor:b,color:"#fff",fontSize:"9px",padding:"1px 5px",borderRadius:"2px",marginLeft:"4px",whiteSpace:"nowrap"}))}i&&c.append(g(' Roles.\">🔒 no access ")),l.append(c),o.color_bg&&l.css("background-color",o.color_bg),o.color_text&&l.find(".members-am-item-label").css("color",o.color_text),o.color_icon&&(l.find(".dashicons").css("color",o.color_icon),l.find(".members-am-fa-icon i").css("color",o.color_icon),l.find("img").css("filter","none"));var f=g('
');f.append(g(' ').text("◉"),g(' ').text("↑"),g(' ').text("↓")),l.append(f),r.append(l)}function R(s,e,a,r){var n=r.overrides&&r.overrides[s.id]||{},t=n.label||s.title,i=function(e,s){var a=f(e);if(-1!==a.hidden.indexOf(s))return!0;var r=_(s);return!(!r||-1===a.hidden.indexOf(r))}(a,s.id),o=!function(e){if(!e||"read"===e)return 1;for(var s=h.previewUserRoles||[],a=0;a").addClass(m).attr("data-id",s.id),c=g('
');if(!e){var d=n.icon||s.icon,u=I(d,n.icon_type||s.icon_type);"fontawesome"===u&&d?c.append(g(' ')):"svg"!==u&&"image"!==u&&"custom"!==u||!d?d&&0===d.indexOf("dashicons-")?c.append(g(' ')):c.append(g(' ')):c.append(g(" ").attr("src",d).css({width:"20px",height:"20px",display:"inline-block",verticalAlign:"middle",objectFit:"contain",filter:"none"}))}if(s.custom&&c.append(g('custom ')),n.label&&c.append(g('edit ')),c.append(g(' ').text(t)),n.badge){var p=n.badge_bg||"#d63638";c.append(g(' ').text(n.badge).css({backgroundColor:p,color:"#fff",fontSize:"9px",padding:"1px 5px",borderRadius:"2px",marginLeft:"4px",whiteSpace:"nowrap"}))}o&&c.append(g('🔒 no access ")),l.append(c),n.color_bg&&l.css("background-color",n.color_bg),n.color_text&&l.find(".members-am-item-label").css("color",n.color_text),n.color_icon&&(l.find(".dashicons").css("color",n.color_icon),l.find(".members-am-fa-icon i").css("color",n.color_icon));var b=g('
');return b.append(g(' ').text(i?"◯":"◉"),g(' ').text("↑"),g(' ').text("↓")),l.append(b),l.on("click",function(e){g(e.target).closest("button").length||(h.selectedId=s.id,z())}),l}function P(){var a=g("#members-am-columns"),r={};a.find(".members-am-column").each(function(){var e=g(this).data("role");if(e){var s=g(this).find(".members-am-sidebar-list");s.length&&(r[e]=s.scrollTop())}}),a.empty();var e,s=h.carouselPage*h.columnsPerPage;if(h.activeRoleSlugs.slice(s,s+h.columnsPerPage).forEach(function(e){var s=g('
');!function(n,e){e.empty();var s=g(''),a=(d().filter(function(e){return e.slug===n})[0]||{}).label||n;s.append(g('').text(a)),s.append(g(' ').append(g(' ').text("◀"),g(' ').text("▶"))),e.append(s);var t=g('');x(n).forEach(function(e){if(0!==e.indexOf("sep-")){var r=u(e);if(r)if(A(n,r,null,t),r.children&&r.children.length)y(n,r.id).forEach(function(e){var s=r.id+"::"+e,a=u(s);if(a){if("__promote__"===(v(n).overrides[s]||{}).parent)return;A(n,a,r.id,t)}})}else t.append(g('
').text("—"))}),e.append(t)}(e,s),a.append(s),r[e]&&s.find(".members-am-sidebar-list").scrollTop(r[e])}),h.previewUserId){var i=h.previewUserId,n=g('
'),t=g('');t.append(g(" ").text(h.previewUserLabel||"User #"+i)),t.append(g('× ').on("click",function(){h.previewUserId=null,h.previewUserLabel=null,h.previewUserRoles=[],z()})),n.append(t);var o=g(''),m=f(i);((e=f(i)).order&&e.order.length?e.order:p()).forEach(function(a){if(0!==a.indexOf("sep-")){var r=u(a);if(r){o.append(R(r,null,i,m));var e,s,n,t=r.children||[];(e=a,s=t,(n=f(i)).submenu_order&&n.submenu_order[e]?n.submenu_order[e]:s.map(function(e){return e.id})).forEach(function(e){var s=function(e,s){if(!e||!e.children)return null;for(var a=0;a ').text("——"))}),n.append(o),a.append(n)}if(h.syncScroll){var l=a.find(".members-am-sidebar-list"),c=!1;l.on("scroll",function(){if(!c){c=!0;var e=g(this).scrollTop();l.not(this).scrollTop(e),c=!1}})}!function(){var e=Math.max(1,Math.ceil(h.activeRoleSlugs.length/h.columnsPerPage)),s=(Math.min(h.carouselPage+1,e),h.carouselPage*h.columnsPerPage+1),a=Math.min((h.carouselPage+1)*h.columnsPerPage,h.activeRoleSlugs.length);g("#members-am-carousel-status").text(s+"–"+a+" "+membersAdminMenus.i18n.of+" "+h.activeRoleSlugs.length);for(var r=g("#members-am-carousel-dots").empty(),n=0;n ').toggleClass("is-active",n===h.carouselPage))}()}function M(){if(h.selectedId){g("#members-am-edit-panel").removeAttr("hidden");var e=u(h.selectedId),s=function(){if(!h.selectedId)return null;var e=c();if(e){var s=f(e);return s.overrides&&s.overrides[h.selectedId]||{}}var a=l()[0];return a?v(a).overrides[h.selectedId]||{}:null}()||{};g("#members-am-edit-title").text(e?e.title:h.selectedId),g("#members-am-edit-label").val(s.label||e&&e.title||"");var a=m(h.selectedId);g("#members-am-edit-url-wrap").toggle(a),g("#members-am-edit-url").attr("placeholder","Override URL (leave empty for default)").val(a&&(s.url||e&&e.url)||"").data("default-url",e&&e.url||""),g("#members-am-icon-type").val(s.icon_type||"dashicon"),g("#members-am-icon-value").val(s.icon||e&&e.icon||"");var r=s.icon||e&&e.icon||"",n=I(r,s.icon_type||e&&e.icon_type||"");"image"!==n&&"custom"!==n&&"svg"!==n||!r?g("#members-am-icon-preview").hide():g("#members-am-icon-preview").show().attr("src",r),g("#members-am-color-bg").val(s.color_bg||""),g("#members-am-color-text").val(s.color_text||""),g("#members-am-color-icon").val(s.color_icon||""),g("#members-am-badge-text").val(s.badge||""),g("#members-am-badge-bg").val(s.badge_bg||""),g("#members-am-item-cap").attr("placeholder",e&&e.cap?e.cap+" (default)":"").val(h.settings.capabilities[h.selectedId]||"");var t=e&&e.custom;g("#members-am-remove-custom").toggle(!!t),g("#members-am-visibility-toggles").empty();var i=e&&e.cap||"read";d().forEach(function(e){if("administrator"!==e.slug||h.settings._meta.admin_editable){var s=w(e.slug,h.selectedId),a=k(e.slug,i),r=g(' ').attr("data-role",e.slug).prop("checked",!s&&a);a||r.prop("disabled",!0);var n=g(' ').append(r,g(" ").text(e.label));a||(n.append(g(" ").text(" — no capability").css({color:"#999",fontStyle:"italic",marginLeft:"4px"})),n.css("opacity","0.5")),g("#members-am-visibility-toggles").append(n)}}),g(".members-am-color").each(function(){g(this).data("wpWpColorPicker")&&g(this).wpColorPicker("destroy")}),g(".members-am-color").wpColorPicker({change:function(e,s){setTimeout(function(){E()},20)},clear:function(){setTimeout(function(){E()},20)}}),C()}else g("#members-am-edit-panel").attr("hidden",!0)}function E(){if(h.selectedId){if(a("label",g("#members-am-edit-label").val()),m(h.selectedId)){var e=g("#members-am-edit-url").val();a("url",e===(g("#members-am-edit-url").data("default-url")||"")?"":e)}else a("url","");var s=g("#members-am-icon-value").val();a("icon_type",I(s,g("#members-am-icon-type").val())),a("icon",s),a("color_bg",g("#members-am-color-bg").val()),a("color_text",g("#members-am-color-text").val()),a("color_icon",g("#members-am-color-icon").val()),a("badge",g("#members-am-badge-text").val()),a("badge_bg",g("#members-am-badge-bg").val()),h.settings.capabilities[h.selectedId]=g("#members-am-item-cap").val()||"",P()}}function C(){var a=h.iconTab,r=(g("#members-am-icon-search").val()||"").toLowerCase(),n=g("#members-am-icon-grid").empty();("dashicons"===a?e:s).forEach(function(e){if(!r||-1!==e.indexOf(r)){var s=g(' ');"dashicons"===a?s.append(g(' ')):s.append(g(' ')),s.on("click",function(){g("#members-am-icon-value").val(e),g("#members-am-icon-type").val("dashicons"===a?"dashicon":"fontawesome"),E()}),n.append(s)}})}function U(e,s){var a=h.activeRoleSlugs.indexOf(e);if(-1!==a){var r=a+s;if(!(r<0||r>=h.activeRoleSlugs.length)){var n=h.activeRoleSlugs[a];h.activeRoleSlugs[a]=h.activeRoleSlugs[r],h.activeRoleSlugs[r]=n,o(),z()}}}function T(e,s,a){var r="__promote__"===(v(e).overrides[s]||{}).parent?null:_(s);if(r){var n=v(e).submenu_order;n[r]||(n[r]=b(r));var t=n[r],i=s.split("::"),o=i[1]||i[0];if(-1===(l=t.indexOf(o)))return;if((c=l+a)<0||c>=t.length)return;var m=t[l];t[l]=t[c],t[c]=m}else{v(e).order&&v(e).order.length||(v(e).order=p());var l,c,d=v(e).order;if(-1===(l=d.indexOf(s)))return;if((c=l+a)<0||c>=d.length)return;var u=d[l];d[l]=d[c],d[c]=u}z()}function L(){var e=l();if(e.length){var r="sep-"+Date.now();e.forEach(function(e){v(e).order&&v(e).order.length||(v(e).order=p());var s=v(e).order,a=h.selectedId?s.indexOf(h.selectedId):s.length-1;a<0&&(a=s.length),s.splice(a+1,0,r)}),z()}}function N(){var e=g("#members-am-save").prop("disabled",!0);g.post(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_save",nonce:membersAdminMenus.nonce,settings:JSON.stringify(h.settings)}).done(function(e){e.success?(alert(membersAdminMenus.i18n.saved),location.reload()):alert(e.data&&e.data.message?e.data.message:"Error")}).fail(function(){alert(membersAdminMenus.i18n.networkError||"Could not save settings. Check your connection and try again.")}).always(function(){e.prop("disabled",!1)})}function J(e,s){confirm("role"===e&&s?"Reset all settings for this role? This cannot be undone.":"Reset ALL menu settings for every role? This cannot be undone.")&&g.post(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_reset",nonce:membersAdminMenus.nonce,scope:e||"all",role:s||""},function(e){e.success?location.reload():alert(e.data&&e.data.message?e.data.message:"Reset failed.")})}function F(e){g.getJSON(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_user_search",nonce:membersAdminMenus.nonce,term:e},function(e){e.success&&e.data&&e.data.length?function(e){g(".members-am-user-suggestions").remove();var s=g("#members-am-user-search").parent();s.css("position","relative");var a=g('
');e.forEach(function(e){a.append(g('
').text(e.label).data("userId",e.id).on("click",function(){!function(e,s,a){h.previewUserId=e,h.previewUserLabel=s||"User #"+e,h.previewUserRoles=a||[],r(),h.settings.users[e]||(h.settings.users[e]={});z()}(e.id,e.label,e.roles),g(".members-am-user-suggestions").remove(),g("#members-am-user-search").val("")}))}),s.append(a),setTimeout(function(){g(document).one("click",function(){g(".members-am-user-suggestions").remove()})},0)}(e.data):g(".members-am-user-suggestions").remove()})}function j(){var s;g(document).on("click","#members-am-role-chips .members-am-chip",function(){var e=g(this).data("role"),s=h.activeRoleSlugs.indexOf(e);-1===s?h.activeRoleSlugs.push(e):1=n.length||(n.splice(o,1),n.splice(m,0,s))}}(s,a,g(this).closest(".members-am-item").hasClass("is-sub")?_(a):null,r?-1:1),P()}}),g("#members-am-save").on("click",N),g("#members-am-reset").on("click",function(e){e.stopPropagation(),g(".members-am-reset-dropdown").remove();var s=g(this),a=h.activeRoleSlugs||[],r=a.length?a[0]:"",n="";r&&(membersAdminMenus.roles||[]).forEach(function(e){e.slug===r&&(n=e.label)});var t=g('
');if(t.append(g('
').text("Reset Settings")),r&&n){var i=g(' ');i.append(g(' ')),i.append(g(' ').append(g(" ").text("Reset "+n),g(" ").text("Clear all menu settings for this role only"))),i.on("click",function(){g(".members-am-reset-dropdown").remove(),J("role",r)}),t.append(i)}var o=g(' ');o.append(g(' ')),o.append(g(' ').append(g(" ").text("Reset all roles"),g(" ").text("Clear all menu settings for every role"))),o.on("click",function(){g(".members-am-reset-dropdown").remove(),J("all")}),t.append(o),s.parent().css("position","relative"),t.insertAfter(s),g(document).one("click",function(){g(".members-am-reset-dropdown").remove()})}),g("#members-am-export").on("click",function(e){e.preventDefault(),window.location.href=membersAdminMenus.exportUrl}),g("#members-am-import").on("click",function(){g("#members-am-import-file").trigger("click")}),g("#members-am-import-file").on("change",function(){var e,s,a=this.files&&this.files[0];a&&(e=a,(s=new FileReader).onload=function(){try{var e=JSON.parse(s.result);g.post(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_import",nonce:membersAdminMenus.nonce,settings:JSON.stringify(e)}).done(function(e){e.success?location.reload():alert(e.data&&e.data.message?e.data.message:"Error")})}catch(e){alert("Invalid JSON")}},s.readAsText(e))}),g("#members-am-copy-apply").on("click",function(){var a=g("#members-am-copy-from").val(),s=g("#members-am-copy-to").val();if(a&&s)if(a!==s){var r="",n="";if(d().forEach(function(e){e.slug===a&&(r=e.label),e.slug===s&&(n=e.label)}),confirm('Copy menu settings from "'+r+'" to "'+n+'"?\nThis will overwrite "'+n+"\" menu configuration.\n\nNote: This copies menu order, hidden items, labels, icons, and colors.\nIt does NOT change the role's capabilities (items marked with a lock icon).")){var e=v(a),t={hidden:e.hidden?e.hidden.slice():[],order:[],submenu_order:{},overrides:{}},i=x(a);t.order=i.slice(),h.tree.forEach(function(e){if(e.children&&e.children.length){var s=y(a,e.id);s&&s.length&&(t.submenu_order[e.id]=s.slice())}}),e.overrides&&"object"==typeof e.overrides&&(t.overrides=JSON.parse(JSON.stringify(e.overrides))),h.settings.roles[s]=t,-1===h.activeRoleSlugs.indexOf(s)&&(h.activeRoleSlugs.push(s),o(),O()),z(),N()}}else alert("Source and target roles must be different.")}),g("#members-am-admin-editable").on("change",function(){var e=!0;g(this).is(":checked")&&(e=window.confirm(membersAdminMenus.i18n.adminEditableWarn)),e?(h.settings._meta.admin_editable=g(this).is(":checked"),S(),O(),o(),z()):g(this).prop("checked",!1)}),g("#members-am-sync-scroll").prop("checked",!1!==h.syncScroll),g("#members-am-sync-scroll").on("change",function(){h.syncScroll=g(this).is(":checked");try{localStorage.setItem("members_am_sync_scroll",h.syncScroll?"1":"0")}catch(e){}P()}),g("#members-am-add-item").on("click",function(){var e="c"+Date.now();h.settings.custom_items.push({id:e,label:"Custom link",url:window.location.origin+"/wp-admin/",icon_type:"dashicon",icon:"dashicons-admin-generic",parent:"",position:99,cap:"read"}),h.tree=n(),h.selectedId=i({id:e}),z(),M()}),g("#members-am-remove-custom").on("click",function(){var s=u(h.selectedId);s&&s.customId&&(h.settings.custom_items=(h.settings.custom_items||[]).filter(function(e){return e.id!==s.customId}),h.selectedId=null,h.tree=n(),z(),g("#members-am-edit-panel").attr("hidden",!0))}),g("#members-am-edit-close").on("click",function(){h.selectedId=null,g("#members-am-edit-panel").attr("hidden",!0),z()}),g("#members-am-edit-target-role").on("change",M),g("#members-am-edit-label, #members-am-edit-url, #members-am-icon-value, #members-am-badge-text").on("input",function(){E()}),g("#members-am-item-cap").on("input",function(){E()}),g(".members-am-icon-tabs .button").on("click",function(){g(".members-am-icon-tabs .button").removeClass("is-active"),g(this).addClass("is-active"),h.iconTab="fontawesome"===g(this).data("tab")?"fontawesome":"upload"===g(this).data("tab")?"upload":"dashicons",C()}),g("#members-am-icon-search").on("input",C),g("#members-am-media-upload").on("click",function(e){e.preventDefault(),h.mediaFrame||(h.mediaFrame=wp.media({title:"Choose menu icon",button:{text:"Use as icon"},multiple:!1,library:{type:"image"}}),h.mediaFrame.on("select",function(){var e=h.mediaFrame.state().get("selection").first().toJSON(),s=e.url||"";e.sizes&&(e.sizes.thumbnail?s=e.sizes.thumbnail.url:e.sizes.medium&&(s=e.sizes.medium.url)),g("#members-am-icon-type").val("custom"),g("#members-am-icon-value").val(s),E()})),h.mediaFrame.open()}),g(document).on("change",".members-am-vis-cb",function(){var e=g(this).data("role");if(g(this).is(":checked")){var s=v(e).hidden,a=s.indexOf(h.selectedId);-1!==a&&s.splice(a,1)}else-1===v(e).hidden.indexOf(h.selectedId)&&v(e).hidden.push(h.selectedId);z()}),g("#members-am-add-sep").on("click",L),g("#members-am-promote").on("click",function(){if(h.selectedId){a("parent","__promote__");var r=_(h.selectedId);l().forEach(function(e){var s=v(e);if(s.order&&s.order.length||(s.order=p()),-1===s.order.indexOf(h.selectedId))if(r){var a=s.order.indexOf(r);-1!==a?s.order.splice(a+1,0,h.selectedId):s.order.push(h.selectedId)}else s.order.push(h.selectedId)}),E()}}),g("#members-am-demote").on("click",function(){var e=window.prompt("Parent slug (e.g. edit.php)","edit.php");e&&(a("parent",e),E())}),g("#members-am-user-search").on("input",function(){var e=g(this).val();clearTimeout(s),s=setTimeout(function(){1 ").val("__all__").text("All roles")),h.activeRoleSlugs.forEach(function(s){var e=(d().filter(function(e){return e.slug===s})[0]||{}).label||s;a.append(g(" ").val(s).text(e))}),h.previewUserId&&a.append(g(" ").val("__user__"+h.previewUserId).text(h.previewUserLabel||"User #"+h.previewUserId)),h.selectedId&&M()}g(function(){var s,a,e;r(),h.tree=n(),S(),g("#members-am-admin-editable").prop("checked",!!h.settings._meta.admin_editable),s=g("#members-am-copy-from").empty(),a=g("#members-am-copy-to").empty(),(e=d()).forEach(function(e){s.append(g(" ").val(e.slug).text(e.label)),a.append(g(" ").val(e.slug).text(e.label))}),1n&&(h.carouselPage=n))}}h.activeRoleSlugs=s.filter(function(e){return"administrator"!==e||a}),h.activeRoleSlugs.length||(h.activeRoleSlugs=["subscriber"])}function P(){var r=g("#members-am-role-chips").empty();d().forEach(function(e){if("administrator"!==e.slug||h.settings._meta.admin_editable){var s=-1!==h.activeRoleSlugs.indexOf(e.slug),a=g(' ').text(e.label).attr("data-role",e.slug).toggleClass("is-active",s);r.append(a)}})}function M(e,s,a,r){var n=s.id,t=k(e,n),i=!O(e,s.cap),o=v(e).overrides[n]||{},l=o.label||s.title||n,m=g('
').attr("data-id",n).toggleClass("is-hidden",t).toggleClass("is-no-cap",i).toggleClass("is-selected",h.selectedId===n).toggleClass("is-sub",!!a),c=g('
');if(!a){var d=o.icon||s.icon,u=S(d,o.icon_type||s.icon_type);if("fontawesome"===u&&d)c.append(g(' '));else if("svg"!==u&&"image"!==u&&"custom"!==u||!d){var p=d&&0===d.indexOf("dashicons-")?d:"dashicons-admin-generic";c.append(g(' '))}else c.append(g(" ").attr("src",d).css({width:"20px",height:"20px",display:"inline-block",verticalAlign:"middle",objectFit:"contain",filter:"none"}))}if(s.custom&&c.append(g('custom ')),o.label&&c.append(g('edit ')),c.append(g(' ').text(l)),o.badge){var f=o.badge_bg||"#d63638";c.append(g(' ').text(o.badge).css({backgroundColor:f,color:"#fff",fontSize:"9px",padding:"1px 5px",borderRadius:"2px",marginLeft:"4px",whiteSpace:"nowrap"}))}i&&c.append(g(' Roles.\">🔒 no access ")),m.append(c),o.color_bg&&m.css("background-color",o.color_bg),o.color_text&&m.find(".members-am-item-label").css("color",o.color_text),o.color_icon&&(m.find(".dashicons").css("color",o.color_icon),m.find(".members-am-fa-icon i").css("color",o.color_icon),m.find("img").css("filter","none"));var b=g('
');b.append(g(' ').text("◉"),g(' ').text("↑"),g(' ').text("↓")),m.append(b),r.append(m)}function U(s,e,a,r){var n=r.overrides&&r.overrides[s.id]||{},t=n.label||s.title,i=function(e,s){var a=b(e);if(-1!==a.hidden.indexOf(s))return!0;var r=_(s);return!(!r||-1===a.hidden.indexOf(r))}(a,s.id),o=!function(e){if(!e||"read"===e)return 1;for(var s=h.previewUserRoles||[],a=0;a").addClass(l).attr("data-id",s.id),c=g('
');if(!e){var d=n.icon||s.icon,u=S(d,n.icon_type||s.icon_type);"fontawesome"===u&&d?c.append(g(' ')):"svg"!==u&&"image"!==u&&"custom"!==u||!d?d&&0===d.indexOf("dashicons-")?c.append(g(' ')):c.append(g(' ')):c.append(g(" ").attr("src",d).css({width:"20px",height:"20px",display:"inline-block",verticalAlign:"middle",objectFit:"contain",filter:"none"}))}if(s.custom&&c.append(g('custom ')),n.label&&c.append(g('edit ')),c.append(g(' ').text(t)),n.badge){var p=n.badge_bg||"#d63638";c.append(g(' ').text(n.badge).css({backgroundColor:p,color:"#fff",fontSize:"9px",padding:"1px 5px",borderRadius:"2px",marginLeft:"4px",whiteSpace:"nowrap"}))}o&&c.append(g('🔒 no access ")),m.append(c),n.color_bg&&m.css("background-color",n.color_bg),n.color_text&&m.find(".members-am-item-label").css("color",n.color_text),n.color_icon&&(m.find(".dashicons").css("color",n.color_icon),m.find(".members-am-fa-icon i").css("color",n.color_icon));var f=g('
');return f.append(g(' ').text(i?"◯":"◉"),g(' ').text("↑"),g(' ').text("↓")),m.append(f),m.on("click",function(e){g(e.target).closest("button").length||(h.selectedId=s.id,Q())}),m}function C(){var a=g("#members-am-columns"),r={};a.find(".members-am-column").each(function(){var e=g(this).data("role");if(e){var s=g(this).find(".members-am-sidebar-list");s.length&&(r[e]=s.scrollTop())}}),a.empty();var e,s=h.carouselPage*h.columnsPerPage;if(h.activeRoleSlugs.slice(s,s+h.columnsPerPage).forEach(function(e){var s=g('
');!function(n,e){e.empty();var s=g(''),a=(d().filter(function(e){return e.slug===n})[0]||{}).label||n;s.append(g('').text(a)),s.append(g(' ').append(g(' ').text("◀"),g(' ').text("▶"))),e.append(s);var t=g('');x(n).forEach(function(e){if(0!==e.indexOf("sep-")){var r=p(e);if(r)if(M(n,r,null,t),r.children&&r.children.length)w(n,r.id).forEach(function(e){var s=r.id+"::"+e,a=p(s);if(a){if("__promote__"===(v(n).overrides[s]||{}).parent)return;M(n,a,r.id,t)}})}else t.append(g('
').text("—"))}),e.append(t)}(e,s),a.append(s),r[e]&&s.find(".members-am-sidebar-list").scrollTop(r[e])}),h.previewUserId){var i=h.previewUserId,n=g('
'),t=g('');t.append(g(" ").text(h.previewUserLabel||"User #"+i)),t.append(g('× ').on("click",function(){h.previewUserId=null,h.previewUserLabel=null,h.previewUserRoles=[],Q()})),n.append(t);var o=g(''),l=b(i);((e=b(i)).order&&e.order.length?e.order:f()).forEach(function(a){if(0!==a.indexOf("sep-")){var r=p(a);if(r){o.append(U(r,null,i,l));var e,s,n,t=r.children||[];(e=a,s=t,(n=b(i)).submenu_order&&n.submenu_order[e]?n.submenu_order[e]:s.map(function(e){return e.id})).forEach(function(e){var s=function(e,s){if(!e||!e.children)return null;for(var a=0;a ').text("——"))}),n.append(o),a.append(n)}if(h.syncScroll){var m=a.find(".members-am-sidebar-list"),c=!1;m.on("scroll",function(){if(!c){c=!0;var e=g(this).scrollTop();m.not(this).scrollTop(e),c=!1}})}!function(){var e=Math.max(1,Math.ceil(h.activeRoleSlugs.length/h.columnsPerPage)),s=(Math.min(h.carouselPage+1,e),h.carouselPage*h.columnsPerPage+1),a=Math.min((h.carouselPage+1)*h.columnsPerPage,h.activeRoleSlugs.length);g("#members-am-carousel-status").text(s+"–"+a+" "+membersAdminMenus.i18n.of+" "+h.activeRoleSlugs.length);for(var r=g("#members-am-carousel-dots").empty(),n=0;n ').toggleClass("is-active",n===h.carouselPage))}()}function E(){if(h.selectedId){g("#members-am-edit-panel").removeAttr("hidden");var e=p(h.selectedId),s=function(){if(!h.selectedId)return null;var e=A();if(e){var s=b(e);return s.overrides&&s.overrides[h.selectedId]||{}}var a=I()[0];return a?v(a).overrides[h.selectedId]||{}:null}()||{};g("#members-am-edit-title").text(e?e.title:h.selectedId),g("#members-am-edit-label").val(s.label||e&&e.title||"");var a=c(h.selectedId);g("#members-am-edit-url-wrap").toggle(a),g("#members-am-edit-url").attr("placeholder","Override URL (leave empty for default)").val(a&&(s.url||e&&e.url)||"").data("default-url",e&&e.url||""),g("#members-am-icon-type").val(s.icon_type||"dashicon"),g("#members-am-icon-value").val(s.icon||e&&e.icon||"");var r=s.icon||e&&e.icon||"",n=S(r,s.icon_type||e&&e.icon_type||"");"image"!==n&&"custom"!==n&&"svg"!==n||!r?g("#members-am-icon-preview").hide():g("#members-am-icon-preview").show().attr("src",r),g("#members-am-color-bg").val(s.color_bg||""),g("#members-am-color-text").val(s.color_text||""),g("#members-am-color-icon").val(s.color_icon||""),g("#members-am-badge-text").val(s.badge||""),g("#members-am-badge-bg").val(s.badge_bg||""),g("#members-am-item-cap").attr("placeholder",e&&e.cap?e.cap+" (default)":"").val(h.settings.capabilities[h.selectedId]||"");var t=e&&e.custom;g("#members-am-remove-custom").toggle(!!t),g("#members-am-visibility-toggles").empty();var i=e&&e.cap||"read";d().forEach(function(e){if("administrator"!==e.slug||h.settings._meta.admin_editable){var s=k(e.slug,h.selectedId),a=O(e.slug,i),r=g(' ').attr("data-role",e.slug).prop("checked",!s&&a);a||r.prop("disabled",!0);var n=g(' ').append(r,g(" ").text(e.label));a||(n.append(g(" ").text(" — no capability").css({color:"#999",fontStyle:"italic",marginLeft:"4px"})),n.css("opacity","0.5")),g("#members-am-visibility-toggles").append(n)}}),g(".members-am-color").each(function(){g(this).data("wpWpColorPicker")&&g(this).wpColorPicker("destroy")}),g(".members-am-color").wpColorPicker({change:function(e,s){setTimeout(function(){T()},20)},clear:function(){setTimeout(function(){T()},20)}}),N()}else g("#members-am-edit-panel").attr("hidden",!0)}function T(){if(h.selectedId){if(a("label",g("#members-am-edit-label").val()),c(h.selectedId)){var e=g("#members-am-edit-url").val();a("url",e===(g("#members-am-edit-url").data("default-url")||"")?"":e)}else a("url","");var s=g("#members-am-icon-value").val();a("icon_type",S(s,g("#members-am-icon-type").val())),a("icon",s),a("color_bg",g("#members-am-color-bg").val()),a("color_text",g("#members-am-color-text").val()),a("color_icon",g("#members-am-color-icon").val()),a("badge",g("#members-am-badge-text").val()),a("badge_bg",g("#members-am-badge-bg").val()),h.settings.capabilities[h.selectedId]=g("#members-am-item-cap").val()||"",C()}}function N(){var a=h.iconTab,r=(g("#members-am-icon-search").val()||"").toLowerCase(),n=g("#members-am-icon-grid").empty();("dashicons"===a?e:s).forEach(function(e){if(!r||-1!==e.indexOf(r)){var s=g(' ');"dashicons"===a?s.append(g(' ')):s.append(g(' ')),s.on("click",function(){g("#members-am-icon-value").val(e),g("#members-am-icon-type").val("dashicons"===a?"dashicon":"fontawesome"),T()}),n.append(s)}})}function J(e,s){var a=h.activeRoleSlugs.indexOf(e);if(-1!==a){var r=a+s;if(!(r<0||r>=h.activeRoleSlugs.length)){var n=h.activeRoleSlugs[a];h.activeRoleSlugs[a]=h.activeRoleSlugs[r],h.activeRoleSlugs[r]=n,o(),Q()}}}function j(e,s,a){var r="__promote__"===(v(e).overrides[s]||{}).parent?null:_(s);if(r){var n=v(e).submenu_order;n[r]||(n[r]=y(r));var t=n[r],i=s.split("::"),o=i[1]||i[0];if(-1===(m=t.indexOf(o)))return;if((c=m+a)<0||c>=t.length)return;var l=t[m];t[m]=t[c],t[c]=l}else{v(e).order&&v(e).order.length||(v(e).order=f());var m,c,d=v(e).order;if(-1===(m=d.indexOf(s)))return;if((c=m+a)<0||c>=d.length)return;var u=d[m];d[m]=d[c],d[c]=u}Q()}function L(){var e=I();if(e.length){var r="sep-"+Date.now();e.forEach(function(e){v(e).order&&v(e).order.length||(v(e).order=f());var s=v(e).order,a=h.selectedId?s.indexOf(h.selectedId):s.length-1;a<0&&(a=s.length),s.splice(a+1,0,r)}),Q()}}function F(){var e=g("#members-am-save").prop("disabled",!0);g.post(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_save",nonce:membersAdminMenus.nonce,settings:JSON.stringify(h.settings)}).done(function(e){e.success?(h.allowUnload=!0,alert(membersAdminMenus.i18n.saved),location.reload()):alert(e.data&&e.data.message?e.data.message:"Error")}).fail(function(){alert(membersAdminMenus.i18n.networkError||"Could not save settings. Check your connection and try again.")}).always(function(){e.prop("disabled",!1)})}function z(e,s){confirm("role"===e&&s?"Reset all settings for this role? This cannot be undone.":"Reset ALL menu settings for every role? This cannot be undone.")&&g.post(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_reset",nonce:membersAdminMenus.nonce,scope:e||"all",role:s||""},function(e){e.success?(h.allowUnload=!0,location.reload()):alert(e.data&&e.data.message?e.data.message:"Reset failed.")})}function D(e){g.getJSON(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_user_search",nonce:membersAdminMenus.nonce,term:e},function(e){e.success&&e.data&&e.data.length?function(e){g(".members-am-user-suggestions").remove();var s=g("#members-am-user-search").parent();s.css("position","relative");var a=g('
');e.forEach(function(e){a.append(g('
').text(e.label).data("userId",e.id).on("click",function(){!function(e,s,a){h.previewUserId=e,h.previewUserLabel=s||"User #"+e,h.previewUserRoles=a||[],l(),h.settings.users[e]||(h.settings.users[e]={});Q()}(e.id,e.label,e.roles),g(".members-am-user-suggestions").remove(),g("#members-am-user-search").val("")}))}),s.append(a),setTimeout(function(){g(document).one("click",function(){g(".members-am-user-suggestions").remove()})},0)}(e.data):g(".members-am-user-suggestions").remove()})}function W(){var s;g(document).on("click","#members-am-role-chips .members-am-chip",function(){var e=g(this).data("role"),s=h.activeRoleSlugs.indexOf(e);-1===s?h.activeRoleSlugs.push(e):1=n.length||(n.splice(o,1),n.splice(l,0,s))}}(s,a,g(this).closest(".members-am-item").hasClass("is-sub")?_(a):null,r?-1:1),C()}}),g("#members-am-save").on("click",F),g("#members-am-reset").on("click",function(e){e.stopPropagation(),g(".members-am-reset-dropdown").remove();var s=g(this),a=h.activeRoleSlugs||[],r=a.length?a[0]:"",n="";r&&(membersAdminMenus.roles||[]).forEach(function(e){e.slug===r&&(n=e.label)});var t=g('
');if(t.append(g('
').text("Reset Settings")),r&&n){var i=g(' ');i.append(g(' ')),i.append(g(' ').append(g(" ").text("Reset "+n),g(" ").text("Clear all menu settings for this role only"))),i.on("click",function(){g(".members-am-reset-dropdown").remove(),z("role",r)}),t.append(i)}var o=g(' ');o.append(g(' ')),o.append(g(' ').append(g(" ").text("Reset all roles"),g(" ").text("Clear all menu settings for every role"))),o.on("click",function(){g(".members-am-reset-dropdown").remove(),z("all")}),t.append(o),s.parent().css("position","relative"),t.insertAfter(s),g(document).one("click",function(){g(".members-am-reset-dropdown").remove()})}),g("#members-am-export").on("click",function(e){e.preventDefault(),window.location.href=membersAdminMenus.exportUrl}),g("#members-am-import").on("click",function(){g("#members-am-import-file").trigger("click")}),g("#members-am-import-file").on("change",function(){var e,s,a=this.files&&this.files[0];a&&(e=a,(s=new FileReader).onload=function(){try{var e=JSON.parse(s.result);g.post(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_import",nonce:membersAdminMenus.nonce,settings:JSON.stringify(e)}).done(function(e){e.success?(h.allowUnload=!0,location.reload()):alert(e.data&&e.data.message?e.data.message:"Error")})}catch(e){alert("Invalid JSON")}},s.readAsText(e))}),g("#members-am-copy-apply").on("click",function(){var a=g("#members-am-copy-from").val(),s=g("#members-am-copy-to").val();if(a&&s)if(a!==s){var r="",n="";if(d().forEach(function(e){e.slug===a&&(r=e.label),e.slug===s&&(n=e.label)}),confirm('Copy menu settings from "'+r+'" to "'+n+'"?\nThis will overwrite "'+n+"\" menu configuration.\n\nNote: This copies menu order, hidden items, labels, icons, and colors.\nIt does NOT change the role's capabilities (items marked with a lock icon).")){var e=v(a),t={hidden:e.hidden?e.hidden.slice():[],order:[],submenu_order:{},overrides:{}},i=x(a);t.order=i.slice(),h.tree.forEach(function(e){if(e.children&&e.children.length){var s=w(a,e.id);s&&s.length&&(t.submenu_order[e.id]=s.slice())}}),e.overrides&&"object"==typeof e.overrides&&(t.overrides=JSON.parse(JSON.stringify(e.overrides))),h.settings.roles[s]=t,-1===h.activeRoleSlugs.indexOf(s)&&(h.activeRoleSlugs.push(s),o(),P()),Q(),F()}}else alert("Source and target roles must be different.")}),g("#members-am-admin-editable").on("change",function(){var e=!0;g(this).is(":checked")&&(e=window.confirm(membersAdminMenus.i18n.adminEditableWarn)),e?(h.settings._meta.admin_editable=g(this).is(":checked"),R(),P(),o(),Q()):g(this).prop("checked",!1)}),g("#members-am-sync-scroll").prop("checked",!1!==h.syncScroll),g("#members-am-sync-scroll").on("change",function(){h.syncScroll=g(this).is(":checked");try{localStorage.setItem("members_am_sync_scroll",h.syncScroll?"1":"0")}catch(e){}C()}),g("#members-am-add-item").on("click",function(){var e="c"+Date.now();h.settings.custom_items.push({id:e,label:"Custom link",url:window.location.origin+"/wp-admin/",icon_type:"dashicon",icon:"dashicons-admin-generic",parent:"",position:99,cap:"read"}),h.tree=u(),h.selectedId=m({id:e}),Q(),E()}),g("#members-am-remove-custom").on("click",function(){var s=p(h.selectedId);s&&s.customId&&(h.settings.custom_items=(h.settings.custom_items||[]).filter(function(e){return e.id!==s.customId}),h.selectedId=null,h.tree=u(),Q(),g("#members-am-edit-panel").attr("hidden",!0))}),g("#members-am-edit-close").on("click",function(){h.selectedId=null,g("#members-am-edit-panel").attr("hidden",!0),Q()}),g("#members-am-edit-target-role").on("change",E),g("#members-am-edit-label, #members-am-edit-url, #members-am-icon-value, #members-am-badge-text").on("input",function(){T()}),g("#members-am-item-cap").on("input",function(){T()}),g(".members-am-icon-tabs .button").on("click",function(){g(".members-am-icon-tabs .button").removeClass("is-active"),g(this).addClass("is-active"),h.iconTab="fontawesome"===g(this).data("tab")?"fontawesome":"upload"===g(this).data("tab")?"upload":"dashicons",N()}),g("#members-am-icon-search").on("input",N),g("#members-am-media-upload").on("click",function(e){e.preventDefault(),h.mediaFrame||(h.mediaFrame=wp.media({title:"Choose menu icon",button:{text:"Use as icon"},multiple:!1,library:{type:"image"}}),h.mediaFrame.on("select",function(){var e=h.mediaFrame.state().get("selection").first().toJSON(),s=e.url||"";e.sizes&&(e.sizes.thumbnail?s=e.sizes.thumbnail.url:e.sizes.medium&&(s=e.sizes.medium.url)),g("#members-am-icon-type").val("custom"),g("#members-am-icon-value").val(s),T()})),h.mediaFrame.open()}),g(document).on("change",".members-am-vis-cb",function(){var e=g(this).data("role");if(g(this).is(":checked")){var s=v(e).hidden,a=s.indexOf(h.selectedId);-1!==a&&s.splice(a,1)}else-1===v(e).hidden.indexOf(h.selectedId)&&v(e).hidden.push(h.selectedId);Q()}),g("#members-am-add-sep").on("click",L),g("#members-am-promote").on("click",function(){if(h.selectedId){a("parent","__promote__");var r=_(h.selectedId);I().forEach(function(e){var s=v(e);if(s.order&&s.order.length||(s.order=f()),-1===s.order.indexOf(h.selectedId))if(r){var a=s.order.indexOf(r);-1!==a?s.order.splice(a+1,0,h.selectedId):s.order.push(h.selectedId)}else s.order.push(h.selectedId)}),T()}}),g("#members-am-demote").on("click",function(){var e=window.prompt("Parent slug (e.g. edit.php)","edit.php");e&&(a("parent",e),T())}),g("#members-am-user-search").on("input",function(){var e=g(this).val();clearTimeout(s),s=setTimeout(function(){1 ").val("__all__").text("All roles")),h.activeRoleSlugs.forEach(function(s){var e=(d().filter(function(e){return e.slug===s})[0]||{}).label||s;a.append(g(" ").val(s).text(e))}),h.previewUserId&&a.append(g(" ").val("__user__"+h.previewUserId).text(h.previewUserLabel||"User #"+h.previewUserId)),h.selectedId&&E()}g(function(){var s,a,e;l(),h.tree=u(),R(),g("#members-am-admin-editable").prop("checked",!!h.settings._meta.admin_editable),s=g("#members-am-copy-from").empty(),a=g("#members-am-copy-to").empty(),(e=d()).forEach(function(e){s.append(g(" ").val(e.slug).text(e.label)),a.append(g(" ").val(e.slug).text(e.label))}),1
Date: Thu, 9 Apr 2026 14:22:26 +0200
Subject: [PATCH 17/73] feat(admin): enhance submenu management and improve
user role handling in admin menus
---
.../app/functions-admin.php | 8 +-
addons/members-admin-menus/app/functions.php | 86 +++-
css/admin.css | 17 +
css/admin.min.css | 2 +-
js/admin-menus.js | 475 +++++++++++++++---
js/admin-menus.min.js | 2 +-
6 files changed, 510 insertions(+), 80 deletions(-)
diff --git a/addons/members-admin-menus/app/functions-admin.php b/addons/members-admin-menus/app/functions-admin.php
index 691c369..d6c5dba 100644
--- a/addons/members-admin-menus/app/functions-admin.php
+++ b/addons/members-admin-menus/app/functions-admin.php
@@ -197,6 +197,8 @@ function enqueue_admin_menus_assets() {
'url' => __( 'URL', 'members' ),
'selectRole' => __( 'Select source role', 'members' ),
'of' => __( 'of', 'members' ),
+ 'selectParentMenu' => __( 'Select parent menu…', 'members' ),
+ 'selectParentFirst' => __( 'Please choose a parent menu from the list.', 'members' ),
),
)
);
@@ -272,7 +274,11 @@ function render_admin_menus_page() {
-
+
+
+
+
+
diff --git a/addons/members-admin-menus/app/functions.php b/addons/members-admin-menus/app/functions.php
index ed31529..b055576 100644
--- a/addons/members-admin-menus/app/functions.php
+++ b/addons/members-admin-menus/app/functions.php
@@ -139,12 +139,18 @@ function apply_menu_modifications() {
return;
}
$user_id = get_current_user_id();
- if ( is_user_exempt( $user_id ) ) {
+ $cfg = get_resolved_config_for_user( $user_id );
+ if ( empty( $cfg ) ) {
return;
}
- $cfg = get_resolved_config_for_user( $user_id );
- if ( empty( $cfg ) ) {
+ // Exempt users (e.g. administrators when "Allow editing administrator menus" is unchecked)
+ // skip most customization so they are not locked out of menus — but "Move to submenu" /
+ // "Make top-level" must still run or the dashboard sidebar never matches saved settings.
+ if ( is_user_exempt( $user_id ) ) {
+ if ( ! empty( $cfg['overrides'] ) && is_array( $cfg['overrides'] ) ) {
+ apply_level_moves( $cfg['overrides'] );
+ }
return;
}
@@ -515,6 +521,73 @@ function output_img_icon_styles() {
echo '\n";
}
+/**
+ * After demoting a top-level menu under another parent, merge its former submenu (e.g. Updates under Dashboard)
+ * into the parent's submenu. WordPress only renders one submenu list per flyout ($submenu[ parent ]), so children
+ * that stayed in $submenu[ index.php ] would not appear until merged into $submenu[ edit.php ].
+ *
+ * @param string $target_parent Parent file slug (e.g. edit.php).
+ * @param string $demoted_slug Former top-level slug (e.g. index.php).
+ * @param array $nested_items Copy of $submenu[ $demoted_slug ] before it is cleared.
+ * @return void
+ */
+function merge_demoted_submenu_into_parent( $target_parent, $demoted_slug, $nested_items ) {
+ global $submenu, $_parent_pages;
+
+ $target_parent = plugin_basename( $target_parent );
+ $demoted_slug = plugin_basename( $demoted_slug );
+
+ unset( $submenu[ $demoted_slug ] );
+
+ if ( empty( $nested_items ) || ! is_array( $nested_items ) ) {
+ return;
+ }
+
+ $to_insert = array();
+ foreach ( $nested_items as $sub ) {
+ if ( ! isset( $sub[2] ) ) {
+ continue;
+ }
+ $child_slug = plugin_basename( $sub[2] );
+ // Skip the duplicate row that matches the parent file (WP adds "same as parent" for top-level screens).
+ if ( $child_slug === $demoted_slug ) {
+ continue;
+ }
+ $to_insert[] = $sub;
+ }
+
+ if ( empty( $to_insert ) || ! isset( $submenu[ $target_parent ] ) || ! is_array( $submenu[ $target_parent ] ) ) {
+ return;
+ }
+
+ $flat = array_values( $submenu[ $target_parent ] );
+ $pos = false;
+ foreach ( $flat as $i => $sub ) {
+ if ( isset( $sub[2] ) && plugin_basename( $sub[2] ) === $demoted_slug ) {
+ $pos = $i;
+ break;
+ }
+ }
+ if ( false === $pos ) {
+ return;
+ }
+
+ $before = array_slice( $flat, 0, $pos + 1 );
+ $after = array_slice( $flat, $pos + 1 );
+ $merged = array_merge( $before, $to_insert, $after );
+
+ $submenu[ $target_parent ] = array();
+ foreach ( array_values( $merged ) as $i => $row ) {
+ $submenu[ $target_parent ][ $i ] = $row;
+ }
+
+ foreach ( $to_insert as $row ) {
+ if ( ! empty( $row[2] ) ) {
+ $_parent_pages[ plugin_basename( $row[2] ) ] = $target_parent;
+ }
+ }
+}
+
/**
* Move items between menu levels based on 'parent' override field.
*
@@ -601,8 +674,15 @@ function apply_level_moves( $overrides ) {
if ( ! empty( $o['label'] ) ) {
$label = $o['label'];
}
+
+ $nested_submenu = isset( $submenu[ $slug ] ) && is_array( $submenu[ $slug ] ) ? $submenu[ $slug ] : array();
+
remove_menu_page( $slug );
add_submenu_page( $target_parent, wp_strip_all_tags( $label ), wp_strip_all_tags( $label ), $cap, $slug );
+
+ if ( ! empty( $nested_submenu ) ) {
+ merge_demoted_submenu_into_parent( $target_parent, $slug, $nested_submenu );
+ }
}
}
}
diff --git a/css/admin.css b/css/admin.css
index 5f507cd..23b0b9c 100644
--- a/css/admin.css
+++ b/css/admin.css
@@ -1177,6 +1177,10 @@
opacity: 0.95;
}
+.members-am-item.is-sub-deep {
+ padding-left: 36px;
+}
+
.members-am-item.is-hidden {
opacity: 0.18;
}
@@ -1339,6 +1343,19 @@
margin-right: 6px;
}
+.members-am-demote-wrap {
+ display: inline-flex;
+ align-items: center;
+ gap: 8px;
+ flex-wrap: wrap;
+ margin-right: 6px;
+}
+
+.members-am-demote-wrap .members-am-demote-select {
+ min-width: 200px;
+ max-width: min(320px, 100%);
+}
+
.members-am-edit-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
diff --git a/css/admin.min.css b/css/admin.min.css
index a12880e..c170ebf 100644
--- a/css/admin.min.css
+++ b/css/admin.min.css
@@ -1 +1 @@
-#members-cp h2.hndle,#members-cp-side h2.hndle{border-bottom:none !important;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}#members-cp h2.hndle:before,#members-cp-side h2.hndle:before{content:url("data:image/svg+xml,%3Csvg width='15px' aria-hidden='true' focusable='false' data-prefix='fas' data-icon='users-cog' class='svg-inline--fa fa-users-cog fa-w-20' role='img' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 640 512'%3E%3Cpath fill='currentColor' d='M610.5 341.3c2.6-14.1 2.6-28.5 0-42.6l25.8-14.9c3-1.7 4.3-5.2 3.3-8.5-6.7-21.6-18.2-41.2-33.2-57.4-2.3-2.5-6-3.1-9-1.4l-25.8 14.9c-10.9-9.3-23.4-16.5-36.9-21.3v-29.8c0-3.4-2.4-6.4-5.7-7.1-22.3-5-45-4.8-66.2 0-3.3.7-5.7 3.7-5.7 7.1v29.8c-13.5 4.8-26 12-36.9 21.3l-25.8-14.9c-2.9-1.7-6.7-1.1-9 1.4-15 16.2-26.5 35.8-33.2 57.4-1 3.3.4 6.8 3.3 8.5l25.8 14.9c-2.6 14.1-2.6 28.5 0 42.6l-25.8 14.9c-3 1.7-4.3 5.2-3.3 8.5 6.7 21.6 18.2 41.1 33.2 57.4 2.3 2.5 6 3.1 9 1.4l25.8-14.9c10.9 9.3 23.4 16.5 36.9 21.3v29.8c0 3.4 2.4 6.4 5.7 7.1 22.3 5 45 4.8 66.2 0 3.3-.7 5.7-3.7 5.7-7.1v-29.8c13.5-4.8 26-12 36.9-21.3l25.8 14.9c2.9 1.7 6.7 1.1 9-1.4 15-16.2 26.5-35.8 33.2-57.4 1-3.3-.4-6.8-3.3-8.5l-25.8-14.9zM496 368.5c-26.8 0-48.5-21.8-48.5-48.5s21.8-48.5 48.5-48.5 48.5 21.8 48.5 48.5-21.7 48.5-48.5 48.5zM96 224c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm224 32c1.9 0 3.7-.5 5.6-.6 8.3-21.7 20.5-42.1 36.3-59.2 7.4-8 17.9-12.6 28.9-12.6 6.9 0 13.7 1.8 19.6 5.3l7.9 4.6c.8-.5 1.6-.9 2.4-1.4 7-14.6 11.2-30.8 11.2-48 0-61.9-50.1-112-112-112S208 82.1 208 144c0 61.9 50.1 112 112 112zm105.2 194.5c-2.3-1.2-4.6-2.6-6.8-3.9-8.2 4.8-15.3 9.8-27.5 9.8-10.9 0-21.4-4.6-28.9-12.6-18.3-19.8-32.3-43.9-40.2-69.6-10.7-34.5 24.9-49.7 25.8-50.3-.1-2.6-.1-5.2 0-7.8l-7.9-4.6c-3.8-2.2-7-5-9.8-8.1-3.3.2-6.5.6-9.8.6-24.6 0-47.6-6-68.5-16h-8.3C179.6 288 128 339.6 128 403.2V432c0 26.5 21.5 48 48 48h255.4c-3.7-6-6.2-12.8-6.2-20.3v-9.2zM173.1 274.6C161.5 263.1 145.6 256 128 256H64c-35.3 0-64 28.7-64 64v32c0 17.7 14.3 32 32 32h65.9c6.3-47.4 34.9-87.3 75.2-109.4z'%3E%3C/path%3E%3C/svg%3E");margin-right:5px}#members-cp-side .postbox-header{border-bottom:none !important}#members-cp-side .handle-actions .handle-order-higher,#members-cp-side .handle-actions .handle-order-lower{display:none}#members-cp-side .handle-actions .handlediv{position:absolute;right:5px}.members-upgrade-header{text-align:center;padding:5px}.members-upgrade-header a{color:#f59431}.memberpress-paid-memberships{background-color:#f5f5f5;padding:50px 10px;text-align:center}.memberpress-paid-memberships a{background-color:#0e4598;display:inline-block;padding:10px 20px;border-radius:300px;color:#fff;text-decoration:none;margin-top:20px}#members-cp-side .members-tabs{position:relative}#members-cp-side .members-tab-nav{background-color:transparent;margin-bottom:20px;border-right:none !important}#members-cp-side .members-tab-nav .members-tab-title{width:33.333%;height:50px;border-right:none !important}#members-cp-side .members-tab-nav .members-tab-title a{border:0}#members-cp-side .members-tab-content h3{font-weight:bold;font-size:15px;margin-top:0;color:#000;margin-bottom:10px}#members-cp-side .members-tab-content .memberpress-paid-memberships{text-align:left;padding:20px}#members-cp-side .members-tab-content .memberpress-paid-memberships a{display:block;text-align:center}#members-cp-side .members-tabs .members-tab-nav li a,#members-cp-side .members-tabs .members-tab-nav li[aria-selected="false"] a i{color:#555}#members-cp-side .members-tabs .members-tab-nav li a svg,#members-cp-side .members-tabs .members-tab-nav li[aria-selected="false"] a svg{fill:#555}#members-cp-side .members-tabs .members-tab-nav li[aria-selected="true"] a{background-color:transparent;border-bottom:2px solid #3582ae}#members-cp-side .members-tabs .members-tab-nav li[aria-selected="true"] a i{color:#3582ae}#members-cp-side .members-tabs .members-tab-nav li[aria-selected="true"] a svg{fill:#3582ae}.members-tab-title svg,.members-tab-title[aria-selected="false"] svg{fill:#0073aa}.members-tab-title[aria-selected="true"] svg{fill:#555}#wpcontent #members-admin-header{margin-left:-20px;padding:0;padding-left:22px;background-color:#f9f9f9;background-repeat:repeat;background-size:1200px 75px;min-height:36px;position:relative}#wpcontent #members-admin-header img.members-logo{height:90px}.members-upgrade-header #close-members-upgrade-header{position:absolute;right:20px;top:3px}.members-upgrade-header #close-members-upgrade-header:hover{cursor:pointer}.memberpress-welcome-panel.welcome-panel{margin-top:0;padding:40px 20px;background:#fff}.memberpress-welcome-panel.welcome-panel:before{background:0}.memberpress-welcome-panel.welcome-panel .about-description{margin:20px 0}.memberpress-welcome-panel.welcome-panel-content{margin:0}.memberpress-welcome-panel.welcome-panel-content .mp-logo-wrap>a{display:block}@media screen and (min-width:870px){.members_page_members-settings .members-short-p{max-width:612px;margin-left:auto;margin-right:auto}.members_page_members-settings .welcome-panel-content{text-align:center}}.members_page_members-settings .welcome-panel .button.button-hero{margin-left:auto;margin-right:auto}.members_page_members-settings .members-svg-wrap{display:inline-block;margin:0 auto 20px}@media screen and (max-width:870px){.members_page_members-settings .welcome-panel{padding:20px}.members_page_members-settings .members-svg-wrap{float:left;margin-right:28px}.admin_page_members-settings.rtl .members-svg-wrap{float:right;margin-right:0;margin-left:28px}}.members_page_members-settings .members-svg-link{display:table-cell;text-align:center;width:128px;height:128px;background:#363b3f;color:#fff;padding:24px 16px 16px;border-radius:50%;-webkit-box-sizing:border-box;box-sizing:border-box;border:4px solid #fff;-webkit-box-shadow:0 0 0 4px #363b3f;box-shadow:0 0 0 4px #363b3f}.members_page_members-settings .members-svg-link svg{max-width:84px;max-height:64px;width:auto;height:auto}.members-addons{display:grid;grid-template-columns:1fr 1fr;grid-row-gap:20px;grid-column-gap:20px}.members-addons .plugin-card{margin:0}.members-addons .plugin-card-top{width:100%}.members-addon{width:100%;position:relative;float:none;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.members-addon .desc{margin-bottom:80px}.addon-activate{text-align:center;border:1px solid #ddd;border-radius:3px;padding:5px 10px 10px;display:inline-block;width:100px;position:absolute;right:20px;bottom:20px}.activate-toggle:hover{cursor:pointer}.activate-toggle svg{max-width:20px;position:relative;top:5px}.activate-toggle svg{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.activate-toggle svg.active{-webkit-transform:rotate(0);transform:rotate(0)}.activate-toggle svg path{fill:#ccc}.activate-toggle svg.active path{fill:#8cbd5a}.activate-toggle.processing{cursor:not-allowed;pointer-events:none;opacity:.5}.activate-toggle .action-label{display:inline-block;width:50px;text-align:left}.mepr_dummy_txns{-webkit-filter:blur(3px);filter:blur(3px);position:absolute;top:0;left:0;width:100%;z-index:5;pointer-events:none}.mepr_dummy_txns::after{background-color:rgba(0,0,0,.2);position:absolute;top:0;left:0;width:100%;height:100%;z-index:6}.mepr-upgrade-table{position:relative}.mepr-upgrade-table .mepr-upgrade{position:relative;top:100px;z-index:10;background:rgba(0,0,0,.2);width:100%;height:100%;max-width:600px;margin:0 auto;-webkit-box-shadow:0 0 30px #ccc;box-shadow:0 0 30px #ccc}.mepr-upgrade-content{background-color:#fff;padding:20px;text-align:center}.mepr-upgrade-content h2{font-size:24px}.mepr-upgrade-content h4{font-size:18px}.mepr-upgrade-content .features{display:grid;grid-template-columns:1fr 1fr;grid-column-gap:30px;grid-row-gap:10px;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;text-align:left;padding:10px}.features li:before{content:"\f147";font-family:dashicons;color:green;font-size:20px;position:relative;top:4px;margin-right:10px}.mepr-upgrade-cta{text-align:center;background-color:#f2f2f2;padding:20px}.mepr-upgrade-cta .mepr-cta-button{display:block;max-width:300px;margin:0 auto 20px;background-color:#fd9c27;color:#fff;padding:15px;font-size:18px;font-weight:bold;text-decoration:none;border-radius:300px}.members-plugin-card.plugin-card:nth-child(even){margin-right:inherit}.members-plugin-card.plugin-card:nth-child(odd){clear:none;margin-left:inherit}.members-plugin-card.plugin-card .plugin-card-top{min-height:0;padding:30px 20px}.members-plugin-card.plugin-card .plugin-icon{top:30px}.members-plugin-card.plugin-card .plugin-card-bottom .column-status{font-weight:bold}.members-plugin-card.plugin-card .plugin-card-bottom .column-status .active{color:#8cbd5a}.members-plugin-card.plugin-card .plugin-card-bottom .column-status .inactive{color:red}.members-plugin-card.plugin-card .plugin-icon{width:64px;height:auto}.plugin-icon-small{width:32px;height:auto}.members-plugin-card.plugin-card .name,.members-plugin-card.plugin-card .desc{margin-right:0;margin-left:84px}.members-addons .plugin-card .name,.members-addons .plugin-card .desc p{margin-right:0}@media screen and (max-width:1100px){.members-addons{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}}@media screen and (max-width:600px){.members_page_members-settings .members-svg-link{width:64px;height:64px}.members_page_members-settings .members-svg-link svg{position:absolute;top:14px;left:15px;max-width:30px;max-height:30px}.members_page_members-settings .plugin-card-members-edd-integration .members-svg-link svg,.members_page_members-settings .plugin-card-members-acf-integration .members-svg-link svg,.members_page_members-settings .plugin-card-members-givewp-integration .members-svg-link svg,.members_page_members-settings .plugin-card-members-meta-box-integration .members-svg-link svg,.members_page_members-settings .plugin-card-members-woocommerce-integration .members-svg-link svg{top:10px;left:8px;max-width:40px;max-height:40px}.members_page_members-settings .plugin-card-members-block-permissions .members-svg-link svg,.members_page_members-settings .plugin-card-members-role-hierarchy .members-svg-link svg{left:14px}.members-addons .plugin-card .desc>p,.members-addons .plugin-card .name{margin-left:84px}}.memberpress-about .welcome-panel-column-container{display:-webkit-box;display:-ms-flexbox;display:flex}.memberpress-about .mp-logo{max-width:256px;margin:50px}.members-about-addons{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-column-gap:20px}.members-about-addons .members-plugin-card{margin:0;width:100%}.members-about-addons .members-plugin-card .name h3 a{text-decoration:none}.members-about-addons .members-plugin-card .plugin-card-bottom{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}@media only screen and (max-width:1099px){.members-about-addons{grid-template-columns:1fr;grid-row-gap:20px}}@media screen and (min-width:1100px) and (max-width:1600px){.members-about-addons .members-plugin-card{float:none;width:auto;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.members-plugin-card.plugin-card .desc{margin-left:0;margin-top:50px}.members-plugin-card.plugin-card .desc p{margin-left:0;margin-right:0}.members-plugin-card.plugin-card .plugin-card-bottom .column-status{float:none}.members-plugin-card.plugin-card .plugin-card-bottom .column-updated{float:none;width:auto}}@media screen and (max-width:1200px){.welcome-panel .welcome-panel-column-container{-webkit-box-orient:vertical;-webkit-box-direction:reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse;gap:0;padding:0}.memberpress-about .mp-logo{margin:0 0 20px}}.members-plugin-card.plugin-card .desc p{margin-left:0;margin-right:0}@media only screen and (min-width:783px){.members_page_roles .column-users,.members_page_roles .column-granted_caps,.members_page_roles .column-denied_caps{width:100px;text-align:center}}.members-title-div #titlewrap input{padding:0 8px;font-size:1.7em;line-height:normal;height:1.7em;width:100%;outline:0;margin:0 0 3px;background-color:#fff}.members-title-div input[name="role"]{font-size:13px;height:22px;margin:0;width:16em}#tabcapsdiv{margin-top:1em}#tabcapsdiv>.hndle{padding:10px;border-bottom:1px solid #eee}#tabcapsdiv .inside,#members-cp .inside{margin:0;padding:0}.members-cap-tabs,.members-tabs{overflow:hidden;background:#fff;background:-webkit-gradient(linear,left top,right top,from(#fafafa),color-stop(20%,#fafafa),color-stop(20%,#fff),to(#fff));background:linear-gradient(90deg,#fafafa 0,#fafafa 20%,#fff 20%,#fff 100%)}@media only screen and (max-width:782px){.members-cap-tabs,.members-tabs{background:linear-gradient(90deg,#fafafa 0,#fafafa 48px,#fff 48px,#fff 100%)}}.members-cap-tabs .members-tab-nav,.members-tabs .members-tab-nav{position:relative;float:left;list-style:none;width:20%;line-height:1em;margin:0 0 -1px 0;padding:0;background-color:#fafafa;border-right:1px solid #eee;-webkit-box-sizing:border-box;box-sizing:border-box}.members-cap-tabs .members-tab-nav li,.members-tabs .members-tab-nav li{display:block;position:relative;margin:0;padding:0;line-height:20px}.members-cap-tabs .members-tab-nav li a,.members-tabs .members-tab-nav li a{display:block;margin:0;padding:10px;line-height:20px !important;text-decoration:none;border-bottom:1px solid #eee;-webkit-box-shadow:none;box-shadow:none}.members-cap-tabs .members-tab-nav li a .dashicons,.members-tabs .members-tab-nav li a .dashicons{line-height:20px;margin-right:3px}.members-cap-tabs .members-tab-nav li[aria-selected="true"] a,.members-tabs .members-tab-nav li[aria-selected="true"] a{position:relative;font-weight:bold;color:#555;background-color:#e0e0e0}@media only screen and (max-width:782px){.members-cap-tabs .members-tab-nav,.members-tabs .members-tab-nav{width:48px}.members-cap-tabs .members-tab-nav li a .dashicons,.members-tabs .members-tab-nav li a .dashicons{width:24px;height:24px;font-size:24px;line-height:24px}.members-tab-nav li .dashicons::before,.members-tab-nav li .dashicons::before{width:24px;height:24px}.members-tab-nav li .label{overflow:hidden;position:absolute;top:-1000em;left:-1000em;width:1px;height:1px}}.members-cap-tabs .members-tab-wrap,.members-tabs .members-tab-wrap{float:left;width:80%;margin-left:-1px}@media only screen and (max-width:782px){.members-cap-tabs .members-tab-wrap,.members-tabs .members-tab-wrap{width:calc(100% - 48px)}}#members-cp .members-tab-content{padding:10px;border-left:1px solid #e5e5e5}.members-roles-select th,.members-roles-select td{width:190px;overflow:hidden}.members-roles-select .check-all-th{text-align:center}.members-roles-select .check-all-th label{padding-left:5px}@media only screen and (min-width:850px){#side-sortables .members-tabs{background:#fff}#side-sortables .members-tabs .members-tab-wrap{width:100%}#side-sortables .members-tabs .members-tab-nav{display:table;width:100%}#side-sortables .members-tabs .members-tab-nav li{display:table-cell;text-align:center;border-right:1px solid #eee}#side-sortables .members-tabs .members-tab-nav li:last-of-type{border-right:0}#side-sortables .members-tabs .members-tab-nav li a{padding:10px 0}#side-sortables .members-tabs .members-tab-nav .dashicons{width:24px;height:24px;font-size:24px;line-height:24px}#side-sortables .members-tabs .members-tab-nav .dashicons::before{width:24px;height:24px}#side-sortables .members-tabs .members-tab-nav .label{overflow:hidden;position:absolute;top:-1000em;left:-1000em;width:1px;height:1px}}.members-tabs .members-tabs-label{display:block !important;font-weight:bold;display:inline-block;margin-bottom:4px}.members-tabs .butterbean-control-checkbox .members-tabs-label{display:inline !important}.members-tabs .members-tabs-description{display:block;font-style:italic;margin-top:4px}.members-tabs .members-tabs-label+.members-tabs-description{margin-top:0;margin-bottom:4px}#tabcapsdiv table{border-right:0;border-top:0;border-bottom:0}#tabcapsdiv table td,#tabcapsdiv table th{padding:10px;padding-bottom:10px;border-bottom:1px solid #eee;font-size:13px;line-height:20px}#tabcapsdiv table td{padding:9px}#tabcapsdiv tbody tr:last-of-type td{border-bottom:0}#tabcapsdiv tfoot th{border-color:#eee}@media only screen and (max-width:782px){#tabcapsdiv table td,#tabcapsdiv table th{line-height:24px}}.members-roles-select .column-grant,.members-roles-select .column-deny{width:70px !important;text-align:left;display:table-cell !important;clear:none !important}.members-roles-select thead th,.members-roles-select tfoot th{padding:9px !important}.members-roles-select .column-grant input,.members-roles-select .column-deny input{margin:0 5px 0 0;vertical-align:middle}.members-roles-select tbody tr:nth-child(even){background:#f2f2f2}.members-cap-tabs button{display:inline;margin:-4px;line-height:inherit;padding:4px 8px;border:1px solid transparent;background:transparent;border-radius:0;outline:0;-webkit-transition:all .25s ease-out;transition:all .25s ease-out}.members-cap-tabs button:hover,.members-cap-tabs button:focus{border-color:#eee;background:#fafafa;cursor:pointer}.members-cap-tabs button:active{color:#0073aa;border-color:#0073aa}.members-cap-tabs button+.dashicons{display:none;margin-top:1px;margin-bottom:-1px;line-height:inherit}.members-cap-tabs button:hover+.dashicons,.members-cap-tabs button:focus+.dashicons{display:inline-block}.members-tab-content .members-highlight{background-color:rgba(0,115,170,0.05)}.members-tab-content tbody{-webkit-transition:all 2s ease-in-out;transition:all 2s ease-in-out}.members-cp-role-list-wrap{overflow:auto;min-height:42px;max-height:200px;padding:0 .9em;border:solid 1px #dfdfdf;background-color:#fdfdfd}#wpbody-content{padding-bottom:200px}.members-footer-promotion{text-align:center;font-weight:400;font-size:13px;line-height:16px;color:#787c82;padding:20px 0 30px 0;margin-bottom:20px}.members-footer-promotion p{font-weight:600}.members-footer-promotion-links,.members-footer-promotion-social{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.members-footer-promotion-links{margin:9px 0 0}.members-footer-promotion-links span{color:#c3c4c7;padding:0 7px}.members-footer-promotion-social{margin:10px 0 0 0;gap:10px}.members-footer-promotion-social li{margin-bottom:0}.members-footer-promotion-social a{display:block;height:16px}.members_page_members-settings.rtl{.addon-activate{left:20px;right:unset}.members-addons .plugin-card{.name,.desc p{margin-left:0;margin-right:148px}}}.button.button-warning{background:#dc3232;border-color:#dc3232;color:#fff}.button.button-warning:hover,.button.button-warning:focus{background:#c92424;border-color:#c92424;color:#fff}.members-reset-spinner{float:none;margin-top:0;vertical-align:middle}.members-admin-menus-wrap{max-width:1400px}.members-admin-menus-toolbar{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;margin-bottom:16px}.members-am-copy-wrap label{margin-right:8px}.members-am-chips{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:8px;margin-bottom:12px}.members-am-chip{border-radius:999px;padding:4px 12px;border:1px solid #c3c4c7;background:#f6f7f7;cursor:pointer}.members-am-chip.is-active{background:#2271b1;border-color:#2271b1;color:#fff}.members-am-carousel-wrap{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;gap:8px;margin-bottom:8px}.members-am-carousel-prev,.members-am-carousel-next{-ms-flex-item-align:center;align-self:center;width:36px;height:36px;border-radius:50%;border:1px solid #c3c4c7;background:#fff;cursor:pointer}.members-am-columns{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-ms-flex:1;flex:1;gap:12px;min-height:320px;overflow:hidden}.members-am-column{-webkit-box-flex:1;-ms-flex:1;flex:1;min-width:0;background:#1d2327;border-radius:4px;color:#f0f0f1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.members-am-user-column{border:2px dashed #8c8f94}.members-am-sidebar-head{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:8px 10px;background:#2c3338;border-radius:4px 4px 0 0;font-weight:600;font-size:12px;text-transform:uppercase;letter-spacing:.04em}.members-am-col-move button{margin-left:4px;padding:0 6px;min-height:24px;line-height:22px;font-size:11px}.members-am-sidebar-list{padding:6px 0 12px;overflow-y:auto;max-height:480px}.members-am-item{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:6px 10px 6px 8px;cursor:pointer;border-left:3px solid transparent;font-size:13px}.members-am-item.is-sub{padding-left:22px;font-size:12px;opacity:.95}.members-am-item.is-hidden{opacity:.18}.members-am-item.is-no-cap{opacity:.35}.members-am-item.is-no-cap.is-hidden{opacity:.15}.members-am-item.is-selected{border-left-color:#2271b1;background:rgba(34,113,177,0.15)}.members-am-item-main{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;min-width:0}.members-am-item-main .dashicons{font-size:18px;width:18px;height:18px}.members-am-item-label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.members-am-item-actions{display:none;gap:2px}.members-am-item:hover .members-am-item-actions{display:-webkit-box;display:-ms-flexbox;display:flex}.members-am-item-actions button{min-height:22px;padding:0 4px;line-height:20px;font-size:11px}.members-am-sep{text-align:center;opacity:.35;font-size:11px;padding:4px 0}.members-am-carousel-dots{text-align:center;margin-bottom:4px}.members-am-dot{width:8px;height:8px;border-radius:50%;border:0;margin:0 4px;padding:0;background:#c3c4c7;cursor:pointer}.members-am-dot.is-active{background:#2271b1}.members-am-carousel-status{text-align:center;color:#646970;font-size:12px;margin-top:0}.members-am-badge{font-size:9px;text-transform:uppercase;padding:1px 4px;border-radius:2px;margin-right:4px;vertical-align:middle}.members-am-badge-new{background:#2271b1;color:#fff}.members-am-badge-edit{background:#dba617;color:#1d2327}.members-am-badge-nocap{background:#8c8f94;color:#fff}.members-am-legend{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:16px;margin:0 0 8px;padding:0;font-size:12px;color:#646970}.members-am-legend-item{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:4px}.members-am-edit-panel{margin-top:20px;padding:16px;border:1px solid #c3c4c7;background:#fff;border-radius:4px}.members-am-edit-panel-header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:12px}.members-am-edit-panel-header h2{margin:0;font-size:16px}.members-am-edit-toolbar{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:12px;margin-bottom:12px}.members-am-edit-target-wrap select{margin-left:8px}.members-am-level-actions .button{margin-right:6px}.members-am-edit-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:16px}.members-am-edit-col label{display:block;font-weight:600;margin-bottom:4px}.members-am-icon-tabs{margin-bottom:8px}.members-am-icon-tabs .button{margin-right:4px;margin-bottom:4px}.members-am-icon-tabs .button.is-active{background:#2271b1;border-color:#2271b1;color:#fff}.members-am-icon-grid{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:4px;max-height:160px;overflow-y:auto;border:1px solid #dcdcde;padding:8px;background:#f6f7f7;margin-bottom:8px}.members-am-icon-pick{width:36px;height:36px;padding:0;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;border:1px solid #c3c4c7;background:#fff;cursor:pointer}.members-am-vis-row{display:block;margin-bottom:6px;font-weight:normal}.members-am-reset-dropdown{position:absolute;z-index:100;background:#fff;border:1px solid #c3c4c7;border-radius:6px;padding:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-shadow:0 4px 12px rgba(0,0,0,0.15);box-shadow:0 4px 12px rgba(0,0,0,0.15);min-width:280px;top:100%;left:0;margin-top:4px;overflow:hidden}.members-am-reset-title{padding:10px 14px;font-weight:600;font-size:13px;border-bottom:1px solid #f0f0f0;color:#1d2327}.members-am-reset-option{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;gap:10px;padding:12px 14px;border:0;background:0;cursor:pointer;text-align:left;width:100%;border-bottom:1px solid #f0f0f0;-webkit-transition:background .15s;transition:background .15s}.members-am-reset-option:last-child{border-bottom:0}.members-am-reset-option:hover{background:#f6f7f7}.members-am-reset-option .dashicons{margin-top:2px;color:#646970}.members-am-reset-option-text{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:2px}.members-am-reset-option-text strong{font-size:13px;color:#1d2327}.members-am-reset-option-text small{font-size:12px;color:#646970}.members-am-reset-danger:hover{background:#fcf0f1}.members-am-reset-danger .dashicons{color:#d63638}.members-am-reset-danger:hover strong{color:#d63638}@media screen and (max-width:782px){.members-am-columns{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}}.members-am-user-suggestions{position:absolute;z-index:100;background:#fff;border:1px solid #c3c4c7;border-radius:4px;max-height:200px;overflow-y:auto;width:100%;-webkit-box-shadow:0 2px 6px rgba(0,0,0,0.15);box-shadow:0 2px 6px rgba(0,0,0,0.15);top:100%;left:0}.members-am-user-suggestion{padding:8px 12px;cursor:pointer;font-size:13px;border-bottom:1px solid #f0f0f0}.members-am-user-suggestion:hover{background:#f0f6fc}.members-am-user-suggestion:last-child{border-bottom:0}
\ No newline at end of file
+#members-cp h2.hndle,#members-cp-side h2.hndle{border-bottom:none !important;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}#members-cp h2.hndle:before,#members-cp-side h2.hndle:before{content:url("data:image/svg+xml,%3Csvg width='15px' aria-hidden='true' focusable='false' data-prefix='fas' data-icon='users-cog' class='svg-inline--fa fa-users-cog fa-w-20' role='img' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 640 512'%3E%3Cpath fill='currentColor' d='M610.5 341.3c2.6-14.1 2.6-28.5 0-42.6l25.8-14.9c3-1.7 4.3-5.2 3.3-8.5-6.7-21.6-18.2-41.2-33.2-57.4-2.3-2.5-6-3.1-9-1.4l-25.8 14.9c-10.9-9.3-23.4-16.5-36.9-21.3v-29.8c0-3.4-2.4-6.4-5.7-7.1-22.3-5-45-4.8-66.2 0-3.3.7-5.7 3.7-5.7 7.1v29.8c-13.5 4.8-26 12-36.9 21.3l-25.8-14.9c-2.9-1.7-6.7-1.1-9 1.4-15 16.2-26.5 35.8-33.2 57.4-1 3.3.4 6.8 3.3 8.5l25.8 14.9c-2.6 14.1-2.6 28.5 0 42.6l-25.8 14.9c-3 1.7-4.3 5.2-3.3 8.5 6.7 21.6 18.2 41.1 33.2 57.4 2.3 2.5 6 3.1 9 1.4l25.8-14.9c10.9 9.3 23.4 16.5 36.9 21.3v29.8c0 3.4 2.4 6.4 5.7 7.1 22.3 5 45 4.8 66.2 0 3.3-.7 5.7-3.7 5.7-7.1v-29.8c13.5-4.8 26-12 36.9-21.3l25.8 14.9c2.9 1.7 6.7 1.1 9-1.4 15-16.2 26.5-35.8 33.2-57.4 1-3.3-.4-6.8-3.3-8.5l-25.8-14.9zM496 368.5c-26.8 0-48.5-21.8-48.5-48.5s21.8-48.5 48.5-48.5 48.5 21.8 48.5 48.5-21.7 48.5-48.5 48.5zM96 224c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm224 32c1.9 0 3.7-.5 5.6-.6 8.3-21.7 20.5-42.1 36.3-59.2 7.4-8 17.9-12.6 28.9-12.6 6.9 0 13.7 1.8 19.6 5.3l7.9 4.6c.8-.5 1.6-.9 2.4-1.4 7-14.6 11.2-30.8 11.2-48 0-61.9-50.1-112-112-112S208 82.1 208 144c0 61.9 50.1 112 112 112zm105.2 194.5c-2.3-1.2-4.6-2.6-6.8-3.9-8.2 4.8-15.3 9.8-27.5 9.8-10.9 0-21.4-4.6-28.9-12.6-18.3-19.8-32.3-43.9-40.2-69.6-10.7-34.5 24.9-49.7 25.8-50.3-.1-2.6-.1-5.2 0-7.8l-7.9-4.6c-3.8-2.2-7-5-9.8-8.1-3.3.2-6.5.6-9.8.6-24.6 0-47.6-6-68.5-16h-8.3C179.6 288 128 339.6 128 403.2V432c0 26.5 21.5 48 48 48h255.4c-3.7-6-6.2-12.8-6.2-20.3v-9.2zM173.1 274.6C161.5 263.1 145.6 256 128 256H64c-35.3 0-64 28.7-64 64v32c0 17.7 14.3 32 32 32h65.9c6.3-47.4 34.9-87.3 75.2-109.4z'%3E%3C/path%3E%3C/svg%3E");margin-right:5px}#members-cp-side .postbox-header{border-bottom:none !important}#members-cp-side .handle-actions .handle-order-higher,#members-cp-side .handle-actions .handle-order-lower{display:none}#members-cp-side .handle-actions .handlediv{position:absolute;right:5px}.members-upgrade-header{text-align:center;padding:5px}.members-upgrade-header a{color:#f59431}.memberpress-paid-memberships{background-color:#f5f5f5;padding:50px 10px;text-align:center}.memberpress-paid-memberships a{background-color:#0e4598;display:inline-block;padding:10px 20px;border-radius:300px;color:#fff;text-decoration:none;margin-top:20px}#members-cp-side .members-tabs{position:relative}#members-cp-side .members-tab-nav{background-color:transparent;margin-bottom:20px;border-right:none !important}#members-cp-side .members-tab-nav .members-tab-title{width:33.333%;height:50px;border-right:none !important}#members-cp-side .members-tab-nav .members-tab-title a{border:0}#members-cp-side .members-tab-content h3{font-weight:bold;font-size:15px;margin-top:0;color:#000;margin-bottom:10px}#members-cp-side .members-tab-content .memberpress-paid-memberships{text-align:left;padding:20px}#members-cp-side .members-tab-content .memberpress-paid-memberships a{display:block;text-align:center}#members-cp-side .members-tabs .members-tab-nav li a,#members-cp-side .members-tabs .members-tab-nav li[aria-selected="false"] a i{color:#555}#members-cp-side .members-tabs .members-tab-nav li a svg,#members-cp-side .members-tabs .members-tab-nav li[aria-selected="false"] a svg{fill:#555}#members-cp-side .members-tabs .members-tab-nav li[aria-selected="true"] a{background-color:transparent;border-bottom:2px solid #3582ae}#members-cp-side .members-tabs .members-tab-nav li[aria-selected="true"] a i{color:#3582ae}#members-cp-side .members-tabs .members-tab-nav li[aria-selected="true"] a svg{fill:#3582ae}.members-tab-title svg,.members-tab-title[aria-selected="false"] svg{fill:#0073aa}.members-tab-title[aria-selected="true"] svg{fill:#555}#wpcontent #members-admin-header{margin-left:-20px;padding:0;padding-left:22px;background-color:#f9f9f9;background-repeat:repeat;background-size:1200px 75px;min-height:36px;position:relative}#wpcontent #members-admin-header img.members-logo{height:90px}.members-upgrade-header #close-members-upgrade-header{position:absolute;right:20px;top:3px}.members-upgrade-header #close-members-upgrade-header:hover{cursor:pointer}.memberpress-welcome-panel.welcome-panel{margin-top:0;padding:40px 20px;background:#fff}.memberpress-welcome-panel.welcome-panel:before{background:0}.memberpress-welcome-panel.welcome-panel .about-description{margin:20px 0}.memberpress-welcome-panel.welcome-panel-content{margin:0}.memberpress-welcome-panel.welcome-panel-content .mp-logo-wrap>a{display:block}@media screen and (min-width:870px){.members_page_members-settings .members-short-p{max-width:612px;margin-left:auto;margin-right:auto}.members_page_members-settings .welcome-panel-content{text-align:center}}.members_page_members-settings .welcome-panel .button.button-hero{margin-left:auto;margin-right:auto}.members_page_members-settings .members-svg-wrap{display:inline-block;margin:0 auto 20px}@media screen and (max-width:870px){.members_page_members-settings .welcome-panel{padding:20px}.members_page_members-settings .members-svg-wrap{float:left;margin-right:28px}.admin_page_members-settings.rtl .members-svg-wrap{float:right;margin-right:0;margin-left:28px}}.members_page_members-settings .members-svg-link{display:table-cell;text-align:center;width:128px;height:128px;background:#363b3f;color:#fff;padding:24px 16px 16px;border-radius:50%;-webkit-box-sizing:border-box;box-sizing:border-box;border:4px solid #fff;-webkit-box-shadow:0 0 0 4px #363b3f;box-shadow:0 0 0 4px #363b3f}.members_page_members-settings .members-svg-link svg{max-width:84px;max-height:64px;width:auto;height:auto}.members-addons{display:grid;grid-template-columns:1fr 1fr;grid-row-gap:20px;grid-column-gap:20px}.members-addons .plugin-card{margin:0}.members-addons .plugin-card-top{width:100%}.members-addon{width:100%;position:relative;float:none;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.members-addon .desc{margin-bottom:80px}.addon-activate{text-align:center;border:1px solid #ddd;border-radius:3px;padding:5px 10px 10px;display:inline-block;width:100px;position:absolute;right:20px;bottom:20px}.activate-toggle:hover{cursor:pointer}.activate-toggle svg{max-width:20px;position:relative;top:5px}.activate-toggle svg{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.activate-toggle svg.active{-webkit-transform:rotate(0);transform:rotate(0)}.activate-toggle svg path{fill:#ccc}.activate-toggle svg.active path{fill:#8cbd5a}.activate-toggle.processing{cursor:not-allowed;pointer-events:none;opacity:.5}.activate-toggle .action-label{display:inline-block;width:50px;text-align:left}.mepr_dummy_txns{-webkit-filter:blur(3px);filter:blur(3px);position:absolute;top:0;left:0;width:100%;z-index:5;pointer-events:none}.mepr_dummy_txns::after{background-color:rgba(0,0,0,.2);position:absolute;top:0;left:0;width:100%;height:100%;z-index:6}.mepr-upgrade-table{position:relative}.mepr-upgrade-table .mepr-upgrade{position:relative;top:100px;z-index:10;background:rgba(0,0,0,.2);width:100%;height:100%;max-width:600px;margin:0 auto;-webkit-box-shadow:0 0 30px #ccc;box-shadow:0 0 30px #ccc}.mepr-upgrade-content{background-color:#fff;padding:20px;text-align:center}.mepr-upgrade-content h2{font-size:24px}.mepr-upgrade-content h4{font-size:18px}.mepr-upgrade-content .features{display:grid;grid-template-columns:1fr 1fr;grid-column-gap:30px;grid-row-gap:10px;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;text-align:left;padding:10px}.features li:before{content:"\f147";font-family:dashicons;color:green;font-size:20px;position:relative;top:4px;margin-right:10px}.mepr-upgrade-cta{text-align:center;background-color:#f2f2f2;padding:20px}.mepr-upgrade-cta .mepr-cta-button{display:block;max-width:300px;margin:0 auto 20px;background-color:#fd9c27;color:#fff;padding:15px;font-size:18px;font-weight:bold;text-decoration:none;border-radius:300px}.members-plugin-card.plugin-card:nth-child(even){margin-right:inherit}.members-plugin-card.plugin-card:nth-child(odd){clear:none;margin-left:inherit}.members-plugin-card.plugin-card .plugin-card-top{min-height:0;padding:30px 20px}.members-plugin-card.plugin-card .plugin-icon{top:30px}.members-plugin-card.plugin-card .plugin-card-bottom .column-status{font-weight:bold}.members-plugin-card.plugin-card .plugin-card-bottom .column-status .active{color:#8cbd5a}.members-plugin-card.plugin-card .plugin-card-bottom .column-status .inactive{color:red}.members-plugin-card.plugin-card .plugin-icon{width:64px;height:auto}.plugin-icon-small{width:32px;height:auto}.members-plugin-card.plugin-card .name,.members-plugin-card.plugin-card .desc{margin-right:0;margin-left:84px}.members-addons .plugin-card .name,.members-addons .plugin-card .desc p{margin-right:0}@media screen and (max-width:1100px){.members-addons{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}}@media screen and (max-width:600px){.members_page_members-settings .members-svg-link{width:64px;height:64px}.members_page_members-settings .members-svg-link svg{position:absolute;top:14px;left:15px;max-width:30px;max-height:30px}.members_page_members-settings .plugin-card-members-edd-integration .members-svg-link svg,.members_page_members-settings .plugin-card-members-acf-integration .members-svg-link svg,.members_page_members-settings .plugin-card-members-givewp-integration .members-svg-link svg,.members_page_members-settings .plugin-card-members-meta-box-integration .members-svg-link svg,.members_page_members-settings .plugin-card-members-woocommerce-integration .members-svg-link svg{top:10px;left:8px;max-width:40px;max-height:40px}.members_page_members-settings .plugin-card-members-block-permissions .members-svg-link svg,.members_page_members-settings .plugin-card-members-role-hierarchy .members-svg-link svg{left:14px}.members-addons .plugin-card .desc>p,.members-addons .plugin-card .name{margin-left:84px}}.memberpress-about .welcome-panel-column-container{display:-webkit-box;display:-ms-flexbox;display:flex}.memberpress-about .mp-logo{max-width:256px;margin:50px}.members-about-addons{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-column-gap:20px}.members-about-addons .members-plugin-card{margin:0;width:100%}.members-about-addons .members-plugin-card .name h3 a{text-decoration:none}.members-about-addons .members-plugin-card .plugin-card-bottom{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}@media only screen and (max-width:1099px){.members-about-addons{grid-template-columns:1fr;grid-row-gap:20px}}@media screen and (min-width:1100px) and (max-width:1600px){.members-about-addons .members-plugin-card{float:none;width:auto;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.members-plugin-card.plugin-card .desc{margin-left:0;margin-top:50px}.members-plugin-card.plugin-card .desc p{margin-left:0;margin-right:0}.members-plugin-card.plugin-card .plugin-card-bottom .column-status{float:none}.members-plugin-card.plugin-card .plugin-card-bottom .column-updated{float:none;width:auto}}@media screen and (max-width:1200px){.welcome-panel .welcome-panel-column-container{-webkit-box-orient:vertical;-webkit-box-direction:reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse;gap:0;padding:0}.memberpress-about .mp-logo{margin:0 0 20px}}.members-plugin-card.plugin-card .desc p{margin-left:0;margin-right:0}@media only screen and (min-width:783px){.members_page_roles .column-users,.members_page_roles .column-granted_caps,.members_page_roles .column-denied_caps{width:100px;text-align:center}}.members-title-div #titlewrap input{padding:0 8px;font-size:1.7em;line-height:normal;height:1.7em;width:100%;outline:0;margin:0 0 3px;background-color:#fff}.members-title-div input[name="role"]{font-size:13px;height:22px;margin:0;width:16em}#tabcapsdiv{margin-top:1em}#tabcapsdiv>.hndle{padding:10px;border-bottom:1px solid #eee}#tabcapsdiv .inside,#members-cp .inside{margin:0;padding:0}.members-cap-tabs,.members-tabs{overflow:hidden;background:#fff;background:-webkit-gradient(linear,left top,right top,from(#fafafa),color-stop(20%,#fafafa),color-stop(20%,#fff),to(#fff));background:linear-gradient(90deg,#fafafa 0,#fafafa 20%,#fff 20%,#fff 100%)}@media only screen and (max-width:782px){.members-cap-tabs,.members-tabs{background:linear-gradient(90deg,#fafafa 0,#fafafa 48px,#fff 48px,#fff 100%)}}.members-cap-tabs .members-tab-nav,.members-tabs .members-tab-nav{position:relative;float:left;list-style:none;width:20%;line-height:1em;margin:0 0 -1px 0;padding:0;background-color:#fafafa;border-right:1px solid #eee;-webkit-box-sizing:border-box;box-sizing:border-box}.members-cap-tabs .members-tab-nav li,.members-tabs .members-tab-nav li{display:block;position:relative;margin:0;padding:0;line-height:20px}.members-cap-tabs .members-tab-nav li a,.members-tabs .members-tab-nav li a{display:block;margin:0;padding:10px;line-height:20px !important;text-decoration:none;border-bottom:1px solid #eee;-webkit-box-shadow:none;box-shadow:none}.members-cap-tabs .members-tab-nav li a .dashicons,.members-tabs .members-tab-nav li a .dashicons{line-height:20px;margin-right:3px}.members-cap-tabs .members-tab-nav li[aria-selected="true"] a,.members-tabs .members-tab-nav li[aria-selected="true"] a{position:relative;font-weight:bold;color:#555;background-color:#e0e0e0}@media only screen and (max-width:782px){.members-cap-tabs .members-tab-nav,.members-tabs .members-tab-nav{width:48px}.members-cap-tabs .members-tab-nav li a .dashicons,.members-tabs .members-tab-nav li a .dashicons{width:24px;height:24px;font-size:24px;line-height:24px}.members-tab-nav li .dashicons::before,.members-tab-nav li .dashicons::before{width:24px;height:24px}.members-tab-nav li .label{overflow:hidden;position:absolute;top:-1000em;left:-1000em;width:1px;height:1px}}.members-cap-tabs .members-tab-wrap,.members-tabs .members-tab-wrap{float:left;width:80%;margin-left:-1px}@media only screen and (max-width:782px){.members-cap-tabs .members-tab-wrap,.members-tabs .members-tab-wrap{width:calc(100% - 48px)}}#members-cp .members-tab-content{padding:10px;border-left:1px solid #e5e5e5}.members-roles-select th,.members-roles-select td{width:190px;overflow:hidden}.members-roles-select .check-all-th{text-align:center}.members-roles-select .check-all-th label{padding-left:5px}@media only screen and (min-width:850px){#side-sortables .members-tabs{background:#fff}#side-sortables .members-tabs .members-tab-wrap{width:100%}#side-sortables .members-tabs .members-tab-nav{display:table;width:100%}#side-sortables .members-tabs .members-tab-nav li{display:table-cell;text-align:center;border-right:1px solid #eee}#side-sortables .members-tabs .members-tab-nav li:last-of-type{border-right:0}#side-sortables .members-tabs .members-tab-nav li a{padding:10px 0}#side-sortables .members-tabs .members-tab-nav .dashicons{width:24px;height:24px;font-size:24px;line-height:24px}#side-sortables .members-tabs .members-tab-nav .dashicons::before{width:24px;height:24px}#side-sortables .members-tabs .members-tab-nav .label{overflow:hidden;position:absolute;top:-1000em;left:-1000em;width:1px;height:1px}}.members-tabs .members-tabs-label{display:block !important;font-weight:bold;display:inline-block;margin-bottom:4px}.members-tabs .butterbean-control-checkbox .members-tabs-label{display:inline !important}.members-tabs .members-tabs-description{display:block;font-style:italic;margin-top:4px}.members-tabs .members-tabs-label+.members-tabs-description{margin-top:0;margin-bottom:4px}#tabcapsdiv table{border-right:0;border-top:0;border-bottom:0}#tabcapsdiv table td,#tabcapsdiv table th{padding:10px;padding-bottom:10px;border-bottom:1px solid #eee;font-size:13px;line-height:20px}#tabcapsdiv table td{padding:9px}#tabcapsdiv tbody tr:last-of-type td{border-bottom:0}#tabcapsdiv tfoot th{border-color:#eee}@media only screen and (max-width:782px){#tabcapsdiv table td,#tabcapsdiv table th{line-height:24px}}.members-roles-select .column-grant,.members-roles-select .column-deny{width:70px !important;text-align:left;display:table-cell !important;clear:none !important}.members-roles-select thead th,.members-roles-select tfoot th{padding:9px !important}.members-roles-select .column-grant input,.members-roles-select .column-deny input{margin:0 5px 0 0;vertical-align:middle}.members-roles-select tbody tr:nth-child(even){background:#f2f2f2}.members-cap-tabs button{display:inline;margin:-4px;line-height:inherit;padding:4px 8px;border:1px solid transparent;background:transparent;border-radius:0;outline:0;-webkit-transition:all .25s ease-out;transition:all .25s ease-out}.members-cap-tabs button:hover,.members-cap-tabs button:focus{border-color:#eee;background:#fafafa;cursor:pointer}.members-cap-tabs button:active{color:#0073aa;border-color:#0073aa}.members-cap-tabs button+.dashicons{display:none;margin-top:1px;margin-bottom:-1px;line-height:inherit}.members-cap-tabs button:hover+.dashicons,.members-cap-tabs button:focus+.dashicons{display:inline-block}.members-tab-content .members-highlight{background-color:rgba(0,115,170,0.05)}.members-tab-content tbody{-webkit-transition:all 2s ease-in-out;transition:all 2s ease-in-out}.members-cp-role-list-wrap{overflow:auto;min-height:42px;max-height:200px;padding:0 .9em;border:solid 1px #dfdfdf;background-color:#fdfdfd}#wpbody-content{padding-bottom:200px}.members-footer-promotion{text-align:center;font-weight:400;font-size:13px;line-height:16px;color:#787c82;padding:20px 0 30px 0;margin-bottom:20px}.members-footer-promotion p{font-weight:600}.members-footer-promotion-links,.members-footer-promotion-social{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.members-footer-promotion-links{margin:9px 0 0}.members-footer-promotion-links span{color:#c3c4c7;padding:0 7px}.members-footer-promotion-social{margin:10px 0 0 0;gap:10px}.members-footer-promotion-social li{margin-bottom:0}.members-footer-promotion-social a{display:block;height:16px}.members_page_members-settings.rtl{.addon-activate{left:20px;right:unset}.members-addons .plugin-card{.name,.desc p{margin-left:0;margin-right:148px}}}.button.button-warning{background:#dc3232;border-color:#dc3232;color:#fff}.button.button-warning:hover,.button.button-warning:focus{background:#c92424;border-color:#c92424;color:#fff}.members-reset-spinner{float:none;margin-top:0;vertical-align:middle}.members-admin-menus-wrap{max-width:1400px}.members-admin-menus-toolbar{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;margin-bottom:16px}.members-am-copy-wrap label{margin-right:8px}.members-am-chips{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:8px;margin-bottom:12px}.members-am-chip{border-radius:999px;padding:4px 12px;border:1px solid #c3c4c7;background:#f6f7f7;cursor:pointer}.members-am-chip.is-active{background:#2271b1;border-color:#2271b1;color:#fff}.members-am-carousel-wrap{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;gap:8px;margin-bottom:8px}.members-am-carousel-prev,.members-am-carousel-next{-ms-flex-item-align:center;align-self:center;width:36px;height:36px;border-radius:50%;border:1px solid #c3c4c7;background:#fff;cursor:pointer}.members-am-columns{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-ms-flex:1;flex:1;gap:12px;min-height:320px;overflow:hidden}.members-am-column{-webkit-box-flex:1;-ms-flex:1;flex:1;min-width:0;background:#1d2327;border-radius:4px;color:#f0f0f1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.members-am-user-column{border:2px dashed #8c8f94}.members-am-sidebar-head{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:8px 10px;background:#2c3338;border-radius:4px 4px 0 0;font-weight:600;font-size:12px;text-transform:uppercase;letter-spacing:.04em}.members-am-col-move button{margin-left:4px;padding:0 6px;min-height:24px;line-height:22px;font-size:11px}.members-am-sidebar-list{padding:6px 0 12px;overflow-y:auto;max-height:480px}.members-am-item{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:6px 10px 6px 8px;cursor:pointer;border-left:3px solid transparent;font-size:13px}.members-am-item.is-sub{padding-left:22px;font-size:12px;opacity:.95}.members-am-item.is-sub-deep{padding-left:36px}.members-am-item.is-hidden{opacity:.18}.members-am-item.is-no-cap{opacity:.35}.members-am-item.is-no-cap.is-hidden{opacity:.15}.members-am-item.is-selected{border-left-color:#2271b1;background:rgba(34,113,177,0.15)}.members-am-item-main{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;min-width:0}.members-am-item-main .dashicons{font-size:18px;width:18px;height:18px}.members-am-item-label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.members-am-item-actions{display:none;gap:2px}.members-am-item:hover .members-am-item-actions{display:-webkit-box;display:-ms-flexbox;display:flex}.members-am-item-actions button{min-height:22px;padding:0 4px;line-height:20px;font-size:11px}.members-am-sep{text-align:center;opacity:.35;font-size:11px;padding:4px 0}.members-am-carousel-dots{text-align:center;margin-bottom:4px}.members-am-dot{width:8px;height:8px;border-radius:50%;border:0;margin:0 4px;padding:0;background:#c3c4c7;cursor:pointer}.members-am-dot.is-active{background:#2271b1}.members-am-carousel-status{text-align:center;color:#646970;font-size:12px;margin-top:0}.members-am-badge{font-size:9px;text-transform:uppercase;padding:1px 4px;border-radius:2px;margin-right:4px;vertical-align:middle}.members-am-badge-new{background:#2271b1;color:#fff}.members-am-badge-edit{background:#dba617;color:#1d2327}.members-am-badge-nocap{background:#8c8f94;color:#fff}.members-am-legend{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:16px;margin:0 0 8px;padding:0;font-size:12px;color:#646970}.members-am-legend-item{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:4px}.members-am-edit-panel{margin-top:20px;padding:16px;border:1px solid #c3c4c7;background:#fff;border-radius:4px}.members-am-edit-panel-header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:12px}.members-am-edit-panel-header h2{margin:0;font-size:16px}.members-am-edit-toolbar{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:12px;margin-bottom:12px}.members-am-edit-target-wrap select{margin-left:8px}.members-am-level-actions .button{margin-right:6px}.members-am-demote-wrap{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:6px}.members-am-demote-wrap .members-am-demote-select{min-width:200px;max-width:min(320px,100%)}.members-am-edit-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:16px}.members-am-edit-col label{display:block;font-weight:600;margin-bottom:4px}.members-am-icon-tabs{margin-bottom:8px}.members-am-icon-tabs .button{margin-right:4px;margin-bottom:4px}.members-am-icon-tabs .button.is-active{background:#2271b1;border-color:#2271b1;color:#fff}.members-am-icon-grid{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:4px;max-height:160px;overflow-y:auto;border:1px solid #dcdcde;padding:8px;background:#f6f7f7;margin-bottom:8px}.members-am-icon-pick{width:36px;height:36px;padding:0;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;border:1px solid #c3c4c7;background:#fff;cursor:pointer}.members-am-vis-row{display:block;margin-bottom:6px;font-weight:normal}.members-am-reset-dropdown{position:absolute;z-index:100;background:#fff;border:1px solid #c3c4c7;border-radius:6px;padding:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-shadow:0 4px 12px rgba(0,0,0,0.15);box-shadow:0 4px 12px rgba(0,0,0,0.15);min-width:280px;top:100%;left:0;margin-top:4px;overflow:hidden}.members-am-reset-title{padding:10px 14px;font-weight:600;font-size:13px;border-bottom:1px solid #f0f0f0;color:#1d2327}.members-am-reset-option{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;gap:10px;padding:12px 14px;border:0;background:0;cursor:pointer;text-align:left;width:100%;border-bottom:1px solid #f0f0f0;-webkit-transition:background .15s;transition:background .15s}.members-am-reset-option:last-child{border-bottom:0}.members-am-reset-option:hover{background:#f6f7f7}.members-am-reset-option .dashicons{margin-top:2px;color:#646970}.members-am-reset-option-text{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:2px}.members-am-reset-option-text strong{font-size:13px;color:#1d2327}.members-am-reset-option-text small{font-size:12px;color:#646970}.members-am-reset-danger:hover{background:#fcf0f1}.members-am-reset-danger .dashicons{color:#d63638}.members-am-reset-danger:hover strong{color:#d63638}@media screen and (max-width:782px){.members-am-columns{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}}.members-am-user-suggestions{position:absolute;z-index:100;background:#fff;border:1px solid #c3c4c7;border-radius:4px;max-height:200px;overflow-y:auto;width:100%;-webkit-box-shadow:0 2px 6px rgba(0,0,0,0.15);box-shadow:0 2px 6px rgba(0,0,0,0.15);top:100%;left:0}.members-am-user-suggestion{padding:8px 12px;cursor:pointer;font-size:13px;border-bottom:1px solid #f0f0f0}.members-am-user-suggestion:hover{background:#f0f6fc}.members-am-user-suggestion:last-child{border-bottom:0}
\ No newline at end of file
diff --git a/js/admin-menus.js b/js/admin-menus.js
index d60b803..5b00b6c 100644
--- a/js/admin-menus.js
+++ b/js/admin-menus.js
@@ -172,22 +172,58 @@
function getTopOrderForUser(uid) {
var ucfg = getUserConfig(uid);
- if (ucfg.order && ucfg.order.length) return ucfg.order;
- return defaultTopOrder();
+ var base = ucfg.order && ucfg.order.length ? ucfg.order.slice() : defaultTopOrder();
+ return base.filter(function (id) {
+ if (id.indexOf('sep-') === 0) {
+ return true;
+ }
+ if (!findNode(id)) {
+ return false;
+ }
+ return !isDemotedToSubmenuUser(uid, id);
+ });
}
- function getSubOrderForUser(uid, parentId, children) {
+ function isDemotedToSubmenuUser(uid, itemId) {
+ if (!itemId || itemId.indexOf('::') !== -1) {
+ return false;
+ }
var ucfg = getUserConfig(uid);
- if (ucfg.submenu_order && ucfg.submenu_order[parentId]) {
- return ucfg.submenu_order[parentId];
+ var ov = (ucfg.overrides && ucfg.overrides[itemId]) || {};
+ return !!(ov.parent && ov.parent !== '__promote__');
+ }
+
+ function getChildOrderForUser(uid, parentId) {
+ var def = defaultChildSlugs(parentId);
+ var ucfg = getUserConfig(uid);
+ state.tree.forEach(function (n) {
+ if (!n || !n.id || n.id.indexOf('::') !== -1) {
+ return;
+ }
+ var ovv = (ucfg.overrides && ucfg.overrides[n.id]) || {};
+ if (ovv.parent === parentId && def.indexOf(n.id) === -1) {
+ def.push(n.id);
+ }
+ });
+ var so = ucfg.submenu_order && ucfg.submenu_order[parentId];
+ if (!so || !so.length) {
+ return def.slice();
}
- return children.map(function (c) { return c.id; });
+ var merged = so.filter(function (slug) {
+ return def.indexOf(slug) !== -1;
+ });
+ def.forEach(function (slug) {
+ if (merged.indexOf(slug) === -1) {
+ merged.push(slug);
+ }
+ });
+ return merged;
}
function isUserHidden(uid, itemId) {
var ucfg = getUserConfig(uid);
if (ucfg.hidden.indexOf(itemId) !== -1) return true;
- var parentId = findParentId(itemId);
+ var parentId = getEffectiveParentIdForUser(itemId, uid);
if (parentId && ucfg.hidden.indexOf(parentId) !== -1) return true;
return false;
}
@@ -214,27 +250,47 @@
}
}
+ function getChildSlugsDefaultForUser(uid, parentId) {
+ var def = defaultChildSlugs(parentId);
+ var ucfg = getUserConfig(uid);
+ state.tree.forEach(function (n) {
+ if (!n || !n.id || n.id.indexOf('::') !== -1) {
+ return;
+ }
+ var ovv = (ucfg.overrides && ucfg.overrides[n.id]) || {};
+ if (ovv.parent === parentId && def.indexOf(n.id) === -1) {
+ def.push(n.id);
+ }
+ });
+ return def;
+ }
+
function moveUserItem(uid, itemId, parentId, direction) {
var ucfg = getUserConfig(uid);
+ var ov = (ucfg.overrides && ucfg.overrides[itemId]) || {};
+ var effectiveParent = parentId;
+ if (!effectiveParent && ov.parent && ov.parent !== '__promote__') {
+ effectiveParent = ov.parent;
+ }
var arr;
- if (parentId) {
- if (!ucfg.submenu_order[parentId]) {
- var node = findNode(parentId);
- ucfg.submenu_order[parentId] = (node && node.children) ? node.children.map(function (c) { return c.id; }) : [];
+ var slugForOrder = itemId.indexOf('::') !== -1 ? itemId.split('::').pop() : itemId;
+ if (effectiveParent) {
+ if (!ucfg.submenu_order[effectiveParent]) {
+ ucfg.submenu_order[effectiveParent] = getChildSlugsDefaultForUser(uid, effectiveParent);
}
- arr = ucfg.submenu_order[parentId];
+ arr = ucfg.submenu_order[effectiveParent];
} else {
if (!ucfg.order.length) {
ucfg.order = defaultTopOrder();
}
arr = ucfg.order;
}
- var idx = arr.indexOf(itemId);
+ var idx = arr.indexOf(slugForOrder);
if (idx === -1) return;
var newIdx = idx + direction;
if (newIdx < 0 || newIdx >= arr.length) return;
arr.splice(idx, 1);
- arr.splice(newIdx, 0, itemId);
+ arr.splice(newIdx, 0, effectiveParent ? slugForOrder : itemId);
}
function customHookId(item) {
@@ -302,21 +358,69 @@
return null;
}
- function findParentId(childId) {
- for (var i = 0; i < state.tree.length; i++) {
- var n = state.tree[i];
- if (!n.children) {
- continue;
- }
- for (var j = 0; j < n.children.length; j++) {
- if (n.children[j].id === childId) {
- return n.id;
- }
- }
+ /**
+ * Parent slug from the snapshot tree only (submenu ids use parent::child).
+ * Admin menu snapshot is captured before PHP applies "move to submenu", so demoted
+ * items are not in the tree as children — use getEffectiveParentId() with a role.
+ */
+ function findParentIdInTree(childId) {
+ if (!childId || childId.indexOf('::') === -1) {
+ return null;
+ }
+ return childId.split('::')[0];
+ }
+
+ /**
+ * Effective parent file slug for role overrides (tree + demoted top-level → submenu).
+ *
+ * @param {string} itemId Menu slug or parent::child id.
+ * @param {string} role Role slug.
+ * @return {string|null}
+ */
+ function getEffectiveParentId(itemId, role) {
+ if (!itemId) {
+ return null;
+ }
+ if (itemId.indexOf('::') !== -1) {
+ return findParentIdInTree(itemId);
+ }
+ var ov = getRoleConfig(role).overrides[itemId] || {};
+ if (ov.parent && ov.parent !== '__promote__') {
+ return ov.parent;
+ }
+ return null;
+ }
+
+ /**
+ * Same as getEffectiveParentId for per-user overrides.
+ *
+ * @param {string} itemId Menu slug or composite id.
+ * @param {number} uid User ID.
+ * @return {string|null}
+ */
+ function getEffectiveParentIdForUser(itemId, uid) {
+ if (!itemId) {
+ return null;
+ }
+ if (itemId.indexOf('::') !== -1) {
+ return findParentIdInTree(itemId);
+ }
+ var ucfg = getUserConfig(uid);
+ var ov = (ucfg.overrides && ucfg.overrides[itemId]) || {};
+ if (ov.parent && ov.parent !== '__promote__') {
+ return ov.parent;
}
return null;
}
+ function isDemotedToSubmenu(role, itemId) {
+ if (!itemId || itemId.indexOf('::') !== -1) {
+ return false;
+ }
+ var ov = getRoleConfig(role).overrides[itemId] || {};
+ return !!(ov.parent && ov.parent !== '__promote__');
+ }
+
function findChildNode(parent, childId) {
if (!parent || !parent.children) return null;
for (var i = 0; i < parent.children.length; i++) {
@@ -346,7 +450,15 @@
var def = defaultTopOrder();
var o = getRoleConfig(role).order;
if (!o || !o.length) {
- return def.slice();
+ return def.slice().filter(function (id) {
+ if (id.indexOf('sep-') === 0) {
+ return true;
+ }
+ if (!findNode(id)) {
+ return false;
+ }
+ return !isDemotedToSubmenu(role, id);
+ });
}
var merged = o.filter(function (id) {
return id.indexOf('sep-') === 0 || findNode(id);
@@ -356,11 +468,28 @@
merged.push(id);
}
});
- return merged;
+ return merged.filter(function (id) {
+ if (id.indexOf('sep-') === 0) {
+ return true;
+ }
+ if (!findNode(id)) {
+ return false;
+ }
+ return !isDemotedToSubmenu(role, id);
+ });
}
function getChildOrder(role, parentId) {
var def = defaultChildSlugs(parentId);
+ state.tree.forEach(function (n) {
+ if (!n || !n.id || n.id.indexOf('::') !== -1) {
+ return;
+ }
+ var ov = getRoleConfig(role).overrides[n.id] || {};
+ if (ov.parent === parentId && def.indexOf(n.id) === -1) {
+ def.push(n.id);
+ }
+ });
var so = getRoleConfig(role).submenu_order[parentId];
if (!so || !so.length) {
return def.slice();
@@ -376,6 +505,52 @@
return merged;
}
+ /** Default submenu slug list for a parent, including items moved under that parent via "Move to submenu". */
+ function getChildSlugsDefaultForRole(role, parentId) {
+ var def = defaultChildSlugs(parentId);
+ state.tree.forEach(function (n) {
+ if (!n || !n.id || n.id.indexOf('::') !== -1) {
+ return;
+ }
+ var ov = getRoleConfig(role).overrides[n.id] || {};
+ if (ov.parent === parentId && def.indexOf(n.id) === -1) {
+ def.push(n.id);
+ }
+ });
+ return def;
+ }
+
+ function resolveChildNodeForRole(role, parentId, cslug) {
+ var cid = childFullId(parentId, cslug);
+ var child = findNode(cid);
+ if (child) {
+ return child;
+ }
+ if (cslug.indexOf('::') === -1) {
+ var ov = getRoleConfig(role).overrides[cslug] || {};
+ if (ov.parent === parentId) {
+ return findNode(cslug);
+ }
+ }
+ return null;
+ }
+
+ function resolveChildNodeForUser(uid, parentId, cslug) {
+ var cid = childFullId(parentId, cslug);
+ var child = findNode(cid);
+ if (child) {
+ return child;
+ }
+ if (cslug.indexOf('::') === -1) {
+ var ucfg = getUserConfig(uid);
+ var ov = (ucfg.overrides && ucfg.overrides[cslug]) || {};
+ if (ov.parent === parentId) {
+ return findNode(cslug);
+ }
+ }
+ return null;
+ }
+
function childFullId(parentId, childSlug) {
return parentId + '::' + childSlug;
}
@@ -385,8 +560,8 @@
if (h.indexOf(itemId) !== -1) {
return true;
}
- // If this is a sub-item, also check if its parent is hidden.
- var parentId = findParentId(itemId);
+ // If this is a sub-item or a demoted top-level item, also check if its parent is hidden.
+ var parentId = getEffectiveParentId(itemId, role);
if (parentId && h.indexOf(parentId) !== -1) {
return true;
}
@@ -604,6 +779,53 @@
}
}
+ /**
+ * Render a menu node and, if it has children in the tree, all nested submenu levels
+ * (e.g. Updates under Dashboard when Dashboard sits under Posts).
+ *
+ * @param {string} parentMenuId Immediate parent file slug (null for top-level column items).
+ * @param {number} depth Nesting depth for styling (0 = top-level).
+ */
+ function renderRoleBranch(role, node, parentMenuId, $container, depth) {
+ depth = depth || 0;
+ renderItemRow(role, node, parentMenuId, $container, depth);
+ if (!node.children || !node.children.length) {
+ return;
+ }
+ var corder = getChildOrder(role, node.id);
+ corder.forEach(function (cslug) {
+ var child = resolveChildNodeForRole(role, node.id, cslug);
+ if (!child) {
+ return;
+ }
+ var childOv = getRoleConfig(role).overrides[child.id] || {};
+ if (childOv.parent === '__promote__') {
+ return;
+ }
+ renderRoleBranch(role, child, node.id, $container, depth + 1);
+ });
+ }
+
+ function renderUserBranch(uid, node, parentMenuId, ucfg, $list, depth) {
+ depth = depth || 0;
+ $list.append(renderUserItemRow(node, parentMenuId, uid, ucfg, depth));
+ if (!node.children || !node.children.length) {
+ return;
+ }
+ var corder = getChildOrderForUser(uid, node.id);
+ corder.forEach(function (cslug) {
+ var child = resolveChildNodeForUser(uid, node.id, cslug);
+ if (!child) {
+ return;
+ }
+ var childOv = (ucfg.overrides && ucfg.overrides[child.id]) || {};
+ if (childOv.parent === '__promote__') {
+ return;
+ }
+ renderUserBranch(uid, child, node.id, ucfg, $list, depth + 1);
+ });
+ }
+
function renderSidebar(role, $wrap) {
$wrap.empty();
var $head = $('');
@@ -629,26 +851,13 @@
if (!node) {
return;
}
- renderItemRow(role, node, null, $ul);
- if (node.children && node.children.length) {
- var corder = getChildOrder(role, node.id);
- corder.forEach(function (cslug) {
- var cid = childFullId(node.id, cslug);
- var child = findNode(cid);
- if (child) {
- var childOv = getRoleConfig(role).overrides[cid] || {};
- if (childOv.parent === '__promote__') {
- return;
- }
- renderItemRow(role, child, node.id, $ul);
- }
- });
- }
+ renderRoleBranch(role, node, null, $ul, 0);
});
$wrap.append($ul);
}
- function renderItemRow(role, node, parentId, $container) {
+ function renderItemRow(role, node, parentMenuId, $container, depth) {
+ depth = depth || 0;
var itemId = node.id;
var hidden = isHidden(role, itemId);
var noCap = !roleHasCap(role, node.cap);
@@ -659,9 +868,10 @@
.toggleClass('is-hidden', hidden)
.toggleClass('is-no-cap', noCap)
.toggleClass('is-selected', state.selectedId === itemId)
- .toggleClass('is-sub', !!parentId);
+ .toggleClass('is-sub', depth > 0)
+ .toggleClass('is-sub-deep', depth > 1);
var $main = $('
');
- if (!parentId) {
+ if (depth === 0) {
var icon = ov.icon || node.icon;
var itype = effectiveIconType(icon, ov.icon_type || node.icon_type);
if (itype === 'fontawesome' && icon) {
@@ -712,7 +922,8 @@
$container.append($row);
}
- function renderUserItemRow(node, parentId, uid, ucfg) {
+ function renderUserItemRow(node, parentMenuId, uid, ucfg, depth) {
+ depth = depth || 0;
var ov = (ucfg.overrides && ucfg.overrides[node.id]) || {};
var label = ov.label || node.title;
var hidden = isUserHidden(uid, node.id);
@@ -720,7 +931,8 @@
var selected = (state.selectedId === node.id);
var cls = 'members-am-item';
- if (parentId) cls += ' is-sub';
+ if (depth > 0) cls += ' is-sub';
+ if (depth > 1) cls += ' is-sub-deep';
if (hidden) cls += ' is-hidden';
if (selected) cls += ' is-selected';
if (noCap) cls += ' is-no-cap';
@@ -728,7 +940,7 @@
var $row = $('
').addClass(cls).attr('data-id', node.id);
var $main = $('
');
- if (!parentId) {
+ if (depth === 0) {
var icon = ov.icon || node.icon;
var itype = effectiveIconType(icon, ov.icon_type || node.icon_type);
if (itype === 'fontawesome' && icon) {
@@ -839,14 +1051,7 @@
}
var node = findNode(nodeId);
if (!node) return;
- $list.append(renderUserItemRow(node, null, uid, ucfg));
- var children = node.children || [];
- var subOrder = getSubOrderForUser(uid, nodeId, children);
- subOrder.forEach(function (cid) {
- var child = findChildNode(node, cid);
- if (!child) return;
- $list.append(renderUserItemRow(child, nodeId, uid, ucfg));
- });
+ renderUserBranch(uid, node, null, ucfg, $list, 0);
});
$uc.append($list);
@@ -956,6 +1161,56 @@
initColorPickers();
renderIconGrid();
+ updateDemoteParentSelect();
+ }
+
+ /**
+ * Populate "Move to submenu" parent dropdown from top-level menu items (titles, not raw file slugs).
+ */
+ function updateDemoteParentSelect() {
+ var $wrap = $('.members-am-demote-wrap');
+ var $sel = $('#members-am-demote-parent');
+ var $btn = $('#members-am-demote');
+ if (!state.selectedId) {
+ $wrap.attr('hidden', true);
+ return;
+ }
+ // PHP apply_level_moves() only demotes true top-level items (slug has no ::).
+ if (findParentIdInTree(state.selectedId)) {
+ $wrap.attr('hidden', true);
+ return;
+ }
+ var roleForUi = getTargetRoles()[0] || state.activeRoleSlugs[0];
+ if (roleForUi && isDemotedToSubmenu(roleForUi, state.selectedId)) {
+ $wrap.attr('hidden', true);
+ return;
+ }
+ $wrap.removeAttr('hidden');
+ var sid = state.selectedId;
+ var placeholder = (membersAdminMenus.i18n && membersAdminMenus.i18n.selectParentMenu) || '';
+ $sel.empty().append($('
').val('').text(placeholder));
+ var count = 0;
+ state.tree.forEach(function (node) {
+ if (!node || !node.id) {
+ return;
+ }
+ if (node.id === sid) {
+ return;
+ }
+ var label = (node.title && String(node.title).trim()) ? node.title : node.id;
+ $sel.append($('
').val(node.id).text(label));
+ count++;
+ });
+ var canDemote = count > 0;
+ $sel.prop('disabled', !canDemote);
+ $btn.prop('disabled', !canDemote);
+ var curParent = (getOverrideForEdit() || {}).parent;
+ if (curParent && curParent !== '__promote__') {
+ $sel.val(curParent);
+ if ($sel.val() !== curParent) {
+ $sel.val('');
+ }
+ }
}
function destroyColorPickers() {
@@ -1053,7 +1308,14 @@
function moveItemVertical(role, itemId, dir) {
var ov = getRoleConfig(role).overrides[itemId] || {};
- var parentId = (ov.parent === '__promote__') ? null : findParentId(itemId);
+ var parentId = null;
+ if (ov.parent === '__promote__') {
+ parentId = null;
+ } else if (itemId.indexOf('::') !== -1) {
+ parentId = findParentIdInTree(itemId);
+ } else if (ov.parent && ov.parent !== '__promote__') {
+ parentId = ov.parent;
+ }
if (!parentId) {
if (!getRoleConfig(role).order || !getRoleConfig(role).order.length) {
getRoleConfig(role).order = defaultTopOrder();
@@ -1073,11 +1335,10 @@
} else {
var so = getRoleConfig(role).submenu_order;
if (!so[parentId]) {
- so[parentId] = defaultChildSlugs(parentId);
+ so[parentId] = getChildSlugsDefaultForRole(role, parentId);
}
var arr = so[parentId];
- var parts = itemId.split('::');
- var cslug = parts[1] || parts[0];
+ var cslug = itemId.indexOf('::') !== -1 ? itemId.split('::').pop() : itemId;
var ix = arr.indexOf(cslug);
if (ix === -1) {
return;
@@ -1319,7 +1580,8 @@
var itemId = $(this).closest('.members-am-item').data('id');
if (!uid || !itemId) return;
var isUp = $(this).hasClass('members-am-user-up');
- var parentId = $(this).closest('.members-am-item').hasClass('is-sub') ? findParentId(itemId) : null;
+ var $item = $(this).closest('.members-am-item');
+ var parentId = $item.hasClass('is-sub') ? getEffectiveParentIdForUser(itemId, uid) : null;
moveUserItem(uid, itemId, parentId, isUp ? -1 : 1);
renderColumns();
});
@@ -1581,39 +1843,104 @@
$('#members-am-promote').on('click', function () {
if (!state.selectedId) return;
+ var sid = state.selectedId;
+ var ov0 = getOverrideForEdit() || {};
+ // Undo "Move to submenu" for a former top-level slug (matches PHP demote of top-level pages).
+ if (sid.indexOf('::') === -1 && ov0.parent && ov0.parent !== '__promote__') {
+ var prevParent = ov0.parent;
+ var targetUser = getTargetUserId();
+ if (targetUser) {
+ var ucfg = getUserConfig(targetUser);
+ if (ucfg.overrides[sid]) {
+ delete ucfg.overrides[sid].parent;
+ }
+ if (ucfg.submenu_order && ucfg.submenu_order[prevParent]) {
+ var six = ucfg.submenu_order[prevParent].indexOf(sid);
+ if (six !== -1) {
+ ucfg.submenu_order[prevParent].splice(six, 1);
+ }
+ }
+ if (!ucfg.order.length) {
+ ucfg.order = defaultTopOrder();
+ }
+ if (ucfg.order.indexOf(sid) === -1) {
+ var upIdx = ucfg.order.indexOf(prevParent);
+ if (upIdx !== -1) {
+ ucfg.order.splice(upIdx + 1, 0, sid);
+ } else {
+ ucfg.order.push(sid);
+ }
+ }
+ } else {
+ getTargetRoles().forEach(function (role) {
+ var rc = getRoleConfig(role);
+ if (rc.overrides[sid]) {
+ delete rc.overrides[sid].parent;
+ }
+ if (rc.submenu_order && rc.submenu_order[prevParent]) {
+ var ix = rc.submenu_order[prevParent].indexOf(sid);
+ if (ix !== -1) {
+ rc.submenu_order[prevParent].splice(ix, 1);
+ }
+ }
+ if (!rc.order || !rc.order.length) {
+ rc.order = defaultTopOrder();
+ }
+ if (rc.order.indexOf(sid) === -1) {
+ var pIdx = rc.order.indexOf(prevParent);
+ if (pIdx !== -1) {
+ rc.order.splice(pIdx + 1, 0, sid);
+ } else {
+ rc.order.push(sid);
+ }
+ }
+ });
+ }
+ pushOverridesFromForm();
+ openEditPanel();
+ return;
+ }
+
setOverrideField('parent', '__promote__');
// Add the promoted item to the top-level order right after its original parent.
- var parentId = findParentId(state.selectedId);
+ var parentId = findParentIdInTree(sid);
var roles = getTargetRoles();
roles.forEach(function (role) {
var rc = getRoleConfig(role);
if (!rc.order || !rc.order.length) {
rc.order = defaultTopOrder();
}
- if (rc.order.indexOf(state.selectedId) === -1) {
+ if (rc.order.indexOf(sid) === -1) {
if (parentId) {
- var pIdx = rc.order.indexOf(parentId);
- if (pIdx !== -1) {
- rc.order.splice(pIdx + 1, 0, state.selectedId);
+ var pIdx2 = rc.order.indexOf(parentId);
+ if (pIdx2 !== -1) {
+ rc.order.splice(pIdx2 + 1, 0, sid);
} else {
- rc.order.push(state.selectedId);
+ rc.order.push(sid);
}
} else {
- rc.order.push(state.selectedId);
+ rc.order.push(sid);
}
}
});
pushOverridesFromForm();
+ openEditPanel();
});
$('#members-am-demote').on('click', function () {
- var p = window.prompt('Parent slug (e.g. edit.php)', 'edit.php');
- if (p) {
- setOverrideField('parent', p);
- pushOverridesFromForm();
+ var p = $('#members-am-demote-parent').val();
+ if (!p) {
+ window.alert(
+ (membersAdminMenus.i18n && membersAdminMenus.i18n.selectParentFirst) ||
+ 'Please choose a parent menu from the list.'
+ );
+ return;
}
+ setOverrideField('parent', p);
+ pushOverridesFromForm();
+ openEditPanel();
});
var searchTimer;
diff --git a/js/admin-menus.min.js b/js/admin-menus.min.js
index c1f29c9..ff825cb 100644
--- a/js/admin-menus.min.js
+++ b/js/admin-menus.min.js
@@ -1 +1 @@
-!function(g){"use strict";var h={settings:g.extend(!0,{},membersAdminMenus.settings),tree:[],activeRoleSlugs:[],carouselPage:0,columnsPerPage:3,selectedId:null,iconTab:"dashicons",previewUserId:null,previewUserRoles:[],userSuggestions:[],mediaFrame:null,allowUnload:!1,syncScroll:function(){try{return"0"!==localStorage.getItem("members_am_sync_scroll")}catch(e){return!0}}()},r="";function n(){return function s(a){if(null===a)return"null";var e=typeof a;return"string"==e||"number"==e||"boolean"==e?JSON.stringify(a):"undefined"==e?"null":Array.isArray(a)?"["+a.map(function(e){return s(e)}).join(",")+"]":"object"!=e?JSON.stringify(a):"{"+Object.keys(a).sort().map(function(e){return JSON.stringify(e)+":"+s(a[e])}).join(",")+"}"}(h.settings)}function t(){if(!h.allowUnload&&n()!==r)return membersAdminMenus.i18n&&membersAdminMenus.i18n.unsavedChanges||""}var e=["dashicons-menu","dashicons-admin-dashboard","dashicons-admin-post","dashicons-admin-page","dashicons-admin-media","dashicons-admin-comments","dashicons-admin-appearance","dashicons-admin-plugins","dashicons-admin-users","dashicons-admin-tools","dashicons-admin-settings","dashicons-admin-generic","dashicons-edit","dashicons-plus","dashicons-chart-bar","dashicons-cart","dashicons-products","dashicons-email","dashicons-groups","dashicons-heart","dashicons-star-filled","dashicons-smiley","dashicons-info","dashicons-lock","dashicons-unlock","dashicons-visibility","dashicons-hidden","dashicons-arrow-up","dashicons-arrow-down","dashicons-admin-network","dashicons-performance"],s=["fa-solid fa-house","fa-solid fa-user","fa-solid fa-gear","fa-solid fa-file","fa-solid fa-image","fa-solid fa-cart-shopping","fa-solid fa-chart-line","fa-solid fa-envelope","fa-solid fa-book","fa-solid fa-link","fa-solid fa-bell","fa-solid fa-star","fa-solid fa-heart","fa-solid fa-lock","fa-solid fa-unlock","fa-solid fa-pen","fa-solid fa-trash","fa-solid fa-plus","fa-solid fa-minus"],i="members_am_view_state";function o(){try{localStorage.setItem(i,JSON.stringify({activeRoleSlugs:h.activeRoleSlugs,carouselPage:h.carouselPage}))}catch(e){}}function d(){return membersAdminMenus.roles||[]}function l(){h.settings._meta&&!Array.isArray(h.settings._meta)||(h.settings._meta={version:3,admin_editable:!1}),h.settings.roles&&!Array.isArray(h.settings.roles)||(h.settings.roles={}),h.settings.users&&!Array.isArray(h.settings.users)||(h.settings.users={}),Array.isArray(h.settings.custom_items)||(h.settings.custom_items=[]),h.settings.capabilities&&!Array.isArray(h.settings.capabilities)||(h.settings.capabilities={})}function v(e){l(),h.settings.roles[e]||(h.settings.roles[e]={hidden:[],order:[],submenu_order:{},overrides:{}});var s=h.settings.roles[e];return s.hidden&&Array.isArray(s.hidden)||(s.hidden=[]),s.order&&Array.isArray(s.order)||(s.order=[]),s.submenu_order&&!Array.isArray(s.submenu_order)||(s.submenu_order={}),s.overrides&&!Array.isArray(s.overrides)||(s.overrides={}),s}function b(e){l(),h.settings.users[e]||(h.settings.users[e]={});var s=h.settings.users[e];return s.hidden&&Array.isArray(s.hidden)||(s.hidden=[]),s.order&&Array.isArray(s.order)||(s.order=[]),s.overrides&&!Array.isArray(s.overrides)||(s.overrides={}),s.submenu_order&&!Array.isArray(s.submenu_order)||(s.submenu_order={}),s}function m(e){var s=e.id||"c";return"members-am-"+String(s).replace(/[^a-z0-9_-]/gi,"-").toLowerCase()}function c(e){return!!e&&0===(-1!==e.indexOf("::")?e.split("::").pop():e).indexOf("members-am-")}function u(){var r=g.extend(!0,[],membersAdminMenus.menuTree||[]),n={};return r.forEach(function(e){n[e.id]=!0}),(h.settings.custom_items||[]).forEach(function(e){if(e&&e.id){var s=m(e);if(n[s]){for(var a=0;a
n&&(h.carouselPage=n))}}h.activeRoleSlugs=s.filter(function(e){return"administrator"!==e||a}),h.activeRoleSlugs.length||(h.activeRoleSlugs=["subscriber"])}function P(){var r=g("#members-am-role-chips").empty();d().forEach(function(e){if("administrator"!==e.slug||h.settings._meta.admin_editable){var s=-1!==h.activeRoleSlugs.indexOf(e.slug),a=g(' ').text(e.label).attr("data-role",e.slug).toggleClass("is-active",s);r.append(a)}})}function M(e,s,a,r){var n=s.id,t=k(e,n),i=!O(e,s.cap),o=v(e).overrides[n]||{},l=o.label||s.title||n,m=g('
').attr("data-id",n).toggleClass("is-hidden",t).toggleClass("is-no-cap",i).toggleClass("is-selected",h.selectedId===n).toggleClass("is-sub",!!a),c=g('
');if(!a){var d=o.icon||s.icon,u=S(d,o.icon_type||s.icon_type);if("fontawesome"===u&&d)c.append(g(' '));else if("svg"!==u&&"image"!==u&&"custom"!==u||!d){var p=d&&0===d.indexOf("dashicons-")?d:"dashicons-admin-generic";c.append(g(' '))}else c.append(g(" ").attr("src",d).css({width:"20px",height:"20px",display:"inline-block",verticalAlign:"middle",objectFit:"contain",filter:"none"}))}if(s.custom&&c.append(g('custom ')),o.label&&c.append(g('edit ')),c.append(g(' ').text(l)),o.badge){var f=o.badge_bg||"#d63638";c.append(g(' ').text(o.badge).css({backgroundColor:f,color:"#fff",fontSize:"9px",padding:"1px 5px",borderRadius:"2px",marginLeft:"4px",whiteSpace:"nowrap"}))}i&&c.append(g(' Roles.\">🔒 no access ")),m.append(c),o.color_bg&&m.css("background-color",o.color_bg),o.color_text&&m.find(".members-am-item-label").css("color",o.color_text),o.color_icon&&(m.find(".dashicons").css("color",o.color_icon),m.find(".members-am-fa-icon i").css("color",o.color_icon),m.find("img").css("filter","none"));var b=g('
');b.append(g(' ').text("◉"),g(' ').text("↑"),g(' ').text("↓")),m.append(b),r.append(m)}function U(s,e,a,r){var n=r.overrides&&r.overrides[s.id]||{},t=n.label||s.title,i=function(e,s){var a=b(e);if(-1!==a.hidden.indexOf(s))return!0;var r=_(s);return!(!r||-1===a.hidden.indexOf(r))}(a,s.id),o=!function(e){if(!e||"read"===e)return 1;for(var s=h.previewUserRoles||[],a=0;a").addClass(l).attr("data-id",s.id),c=g('
');if(!e){var d=n.icon||s.icon,u=S(d,n.icon_type||s.icon_type);"fontawesome"===u&&d?c.append(g(' ')):"svg"!==u&&"image"!==u&&"custom"!==u||!d?d&&0===d.indexOf("dashicons-")?c.append(g(' ')):c.append(g(' ')):c.append(g(" ").attr("src",d).css({width:"20px",height:"20px",display:"inline-block",verticalAlign:"middle",objectFit:"contain",filter:"none"}))}if(s.custom&&c.append(g('custom ')),n.label&&c.append(g('edit ')),c.append(g(' ').text(t)),n.badge){var p=n.badge_bg||"#d63638";c.append(g(' ').text(n.badge).css({backgroundColor:p,color:"#fff",fontSize:"9px",padding:"1px 5px",borderRadius:"2px",marginLeft:"4px",whiteSpace:"nowrap"}))}o&&c.append(g('🔒 no access ")),m.append(c),n.color_bg&&m.css("background-color",n.color_bg),n.color_text&&m.find(".members-am-item-label").css("color",n.color_text),n.color_icon&&(m.find(".dashicons").css("color",n.color_icon),m.find(".members-am-fa-icon i").css("color",n.color_icon));var f=g('
');return f.append(g(' ').text(i?"◯":"◉"),g(' ').text("↑"),g(' ').text("↓")),m.append(f),m.on("click",function(e){g(e.target).closest("button").length||(h.selectedId=s.id,Q())}),m}function C(){var a=g("#members-am-columns"),r={};a.find(".members-am-column").each(function(){var e=g(this).data("role");if(e){var s=g(this).find(".members-am-sidebar-list");s.length&&(r[e]=s.scrollTop())}}),a.empty();var e,s=h.carouselPage*h.columnsPerPage;if(h.activeRoleSlugs.slice(s,s+h.columnsPerPage).forEach(function(e){var s=g('
');!function(n,e){e.empty();var s=g(''),a=(d().filter(function(e){return e.slug===n})[0]||{}).label||n;s.append(g('').text(a)),s.append(g(' ').append(g(' ').text("◀"),g(' ').text("▶"))),e.append(s);var t=g('');x(n).forEach(function(e){if(0!==e.indexOf("sep-")){var r=p(e);if(r)if(M(n,r,null,t),r.children&&r.children.length)w(n,r.id).forEach(function(e){var s=r.id+"::"+e,a=p(s);if(a){if("__promote__"===(v(n).overrides[s]||{}).parent)return;M(n,a,r.id,t)}})}else t.append(g('
').text("—"))}),e.append(t)}(e,s),a.append(s),r[e]&&s.find(".members-am-sidebar-list").scrollTop(r[e])}),h.previewUserId){var i=h.previewUserId,n=g('
'),t=g('');t.append(g(" ").text(h.previewUserLabel||"User #"+i)),t.append(g('× ').on("click",function(){h.previewUserId=null,h.previewUserLabel=null,h.previewUserRoles=[],Q()})),n.append(t);var o=g(''),l=b(i);((e=b(i)).order&&e.order.length?e.order:f()).forEach(function(a){if(0!==a.indexOf("sep-")){var r=p(a);if(r){o.append(U(r,null,i,l));var e,s,n,t=r.children||[];(e=a,s=t,(n=b(i)).submenu_order&&n.submenu_order[e]?n.submenu_order[e]:s.map(function(e){return e.id})).forEach(function(e){var s=function(e,s){if(!e||!e.children)return null;for(var a=0;a ').text("——"))}),n.append(o),a.append(n)}if(h.syncScroll){var m=a.find(".members-am-sidebar-list"),c=!1;m.on("scroll",function(){if(!c){c=!0;var e=g(this).scrollTop();m.not(this).scrollTop(e),c=!1}})}!function(){var e=Math.max(1,Math.ceil(h.activeRoleSlugs.length/h.columnsPerPage)),s=(Math.min(h.carouselPage+1,e),h.carouselPage*h.columnsPerPage+1),a=Math.min((h.carouselPage+1)*h.columnsPerPage,h.activeRoleSlugs.length);g("#members-am-carousel-status").text(s+"–"+a+" "+membersAdminMenus.i18n.of+" "+h.activeRoleSlugs.length);for(var r=g("#members-am-carousel-dots").empty(),n=0;n ').toggleClass("is-active",n===h.carouselPage))}()}function E(){if(h.selectedId){g("#members-am-edit-panel").removeAttr("hidden");var e=p(h.selectedId),s=function(){if(!h.selectedId)return null;var e=A();if(e){var s=b(e);return s.overrides&&s.overrides[h.selectedId]||{}}var a=I()[0];return a?v(a).overrides[h.selectedId]||{}:null}()||{};g("#members-am-edit-title").text(e?e.title:h.selectedId),g("#members-am-edit-label").val(s.label||e&&e.title||"");var a=c(h.selectedId);g("#members-am-edit-url-wrap").toggle(a),g("#members-am-edit-url").attr("placeholder","Override URL (leave empty for default)").val(a&&(s.url||e&&e.url)||"").data("default-url",e&&e.url||""),g("#members-am-icon-type").val(s.icon_type||"dashicon"),g("#members-am-icon-value").val(s.icon||e&&e.icon||"");var r=s.icon||e&&e.icon||"",n=S(r,s.icon_type||e&&e.icon_type||"");"image"!==n&&"custom"!==n&&"svg"!==n||!r?g("#members-am-icon-preview").hide():g("#members-am-icon-preview").show().attr("src",r),g("#members-am-color-bg").val(s.color_bg||""),g("#members-am-color-text").val(s.color_text||""),g("#members-am-color-icon").val(s.color_icon||""),g("#members-am-badge-text").val(s.badge||""),g("#members-am-badge-bg").val(s.badge_bg||""),g("#members-am-item-cap").attr("placeholder",e&&e.cap?e.cap+" (default)":"").val(h.settings.capabilities[h.selectedId]||"");var t=e&&e.custom;g("#members-am-remove-custom").toggle(!!t),g("#members-am-visibility-toggles").empty();var i=e&&e.cap||"read";d().forEach(function(e){if("administrator"!==e.slug||h.settings._meta.admin_editable){var s=k(e.slug,h.selectedId),a=O(e.slug,i),r=g(' ').attr("data-role",e.slug).prop("checked",!s&&a);a||r.prop("disabled",!0);var n=g(' ').append(r,g(" ").text(e.label));a||(n.append(g(" ").text(" — no capability").css({color:"#999",fontStyle:"italic",marginLeft:"4px"})),n.css("opacity","0.5")),g("#members-am-visibility-toggles").append(n)}}),g(".members-am-color").each(function(){g(this).data("wpWpColorPicker")&&g(this).wpColorPicker("destroy")}),g(".members-am-color").wpColorPicker({change:function(e,s){setTimeout(function(){T()},20)},clear:function(){setTimeout(function(){T()},20)}}),N()}else g("#members-am-edit-panel").attr("hidden",!0)}function T(){if(h.selectedId){if(a("label",g("#members-am-edit-label").val()),c(h.selectedId)){var e=g("#members-am-edit-url").val();a("url",e===(g("#members-am-edit-url").data("default-url")||"")?"":e)}else a("url","");var s=g("#members-am-icon-value").val();a("icon_type",S(s,g("#members-am-icon-type").val())),a("icon",s),a("color_bg",g("#members-am-color-bg").val()),a("color_text",g("#members-am-color-text").val()),a("color_icon",g("#members-am-color-icon").val()),a("badge",g("#members-am-badge-text").val()),a("badge_bg",g("#members-am-badge-bg").val()),h.settings.capabilities[h.selectedId]=g("#members-am-item-cap").val()||"",C()}}function N(){var a=h.iconTab,r=(g("#members-am-icon-search").val()||"").toLowerCase(),n=g("#members-am-icon-grid").empty();("dashicons"===a?e:s).forEach(function(e){if(!r||-1!==e.indexOf(r)){var s=g(' ');"dashicons"===a?s.append(g(' ')):s.append(g(' ')),s.on("click",function(){g("#members-am-icon-value").val(e),g("#members-am-icon-type").val("dashicons"===a?"dashicon":"fontawesome"),T()}),n.append(s)}})}function J(e,s){var a=h.activeRoleSlugs.indexOf(e);if(-1!==a){var r=a+s;if(!(r<0||r>=h.activeRoleSlugs.length)){var n=h.activeRoleSlugs[a];h.activeRoleSlugs[a]=h.activeRoleSlugs[r],h.activeRoleSlugs[r]=n,o(),Q()}}}function j(e,s,a){var r="__promote__"===(v(e).overrides[s]||{}).parent?null:_(s);if(r){var n=v(e).submenu_order;n[r]||(n[r]=y(r));var t=n[r],i=s.split("::"),o=i[1]||i[0];if(-1===(m=t.indexOf(o)))return;if((c=m+a)<0||c>=t.length)return;var l=t[m];t[m]=t[c],t[c]=l}else{v(e).order&&v(e).order.length||(v(e).order=f());var m,c,d=v(e).order;if(-1===(m=d.indexOf(s)))return;if((c=m+a)<0||c>=d.length)return;var u=d[m];d[m]=d[c],d[c]=u}Q()}function L(){var e=I();if(e.length){var r="sep-"+Date.now();e.forEach(function(e){v(e).order&&v(e).order.length||(v(e).order=f());var s=v(e).order,a=h.selectedId?s.indexOf(h.selectedId):s.length-1;a<0&&(a=s.length),s.splice(a+1,0,r)}),Q()}}function F(){var e=g("#members-am-save").prop("disabled",!0);g.post(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_save",nonce:membersAdminMenus.nonce,settings:JSON.stringify(h.settings)}).done(function(e){e.success?(h.allowUnload=!0,alert(membersAdminMenus.i18n.saved),location.reload()):alert(e.data&&e.data.message?e.data.message:"Error")}).fail(function(){alert(membersAdminMenus.i18n.networkError||"Could not save settings. Check your connection and try again.")}).always(function(){e.prop("disabled",!1)})}function z(e,s){confirm("role"===e&&s?"Reset all settings for this role? This cannot be undone.":"Reset ALL menu settings for every role? This cannot be undone.")&&g.post(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_reset",nonce:membersAdminMenus.nonce,scope:e||"all",role:s||""},function(e){e.success?(h.allowUnload=!0,location.reload()):alert(e.data&&e.data.message?e.data.message:"Reset failed.")})}function D(e){g.getJSON(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_user_search",nonce:membersAdminMenus.nonce,term:e},function(e){e.success&&e.data&&e.data.length?function(e){g(".members-am-user-suggestions").remove();var s=g("#members-am-user-search").parent();s.css("position","relative");var a=g('
');e.forEach(function(e){a.append(g('
').text(e.label).data("userId",e.id).on("click",function(){!function(e,s,a){h.previewUserId=e,h.previewUserLabel=s||"User #"+e,h.previewUserRoles=a||[],l(),h.settings.users[e]||(h.settings.users[e]={});Q()}(e.id,e.label,e.roles),g(".members-am-user-suggestions").remove(),g("#members-am-user-search").val("")}))}),s.append(a),setTimeout(function(){g(document).one("click",function(){g(".members-am-user-suggestions").remove()})},0)}(e.data):g(".members-am-user-suggestions").remove()})}function W(){var s;g(document).on("click","#members-am-role-chips .members-am-chip",function(){var e=g(this).data("role"),s=h.activeRoleSlugs.indexOf(e);-1===s?h.activeRoleSlugs.push(e):1=n.length||(n.splice(o,1),n.splice(l,0,s))}}(s,a,g(this).closest(".members-am-item").hasClass("is-sub")?_(a):null,r?-1:1),C()}}),g("#members-am-save").on("click",F),g("#members-am-reset").on("click",function(e){e.stopPropagation(),g(".members-am-reset-dropdown").remove();var s=g(this),a=h.activeRoleSlugs||[],r=a.length?a[0]:"",n="";r&&(membersAdminMenus.roles||[]).forEach(function(e){e.slug===r&&(n=e.label)});var t=g('
');if(t.append(g('
').text("Reset Settings")),r&&n){var i=g(' ');i.append(g(' ')),i.append(g(' ').append(g(" ").text("Reset "+n),g(" ").text("Clear all menu settings for this role only"))),i.on("click",function(){g(".members-am-reset-dropdown").remove(),z("role",r)}),t.append(i)}var o=g(' ');o.append(g(' ')),o.append(g(' ').append(g(" ").text("Reset all roles"),g(" ").text("Clear all menu settings for every role"))),o.on("click",function(){g(".members-am-reset-dropdown").remove(),z("all")}),t.append(o),s.parent().css("position","relative"),t.insertAfter(s),g(document).one("click",function(){g(".members-am-reset-dropdown").remove()})}),g("#members-am-export").on("click",function(e){e.preventDefault(),window.location.href=membersAdminMenus.exportUrl}),g("#members-am-import").on("click",function(){g("#members-am-import-file").trigger("click")}),g("#members-am-import-file").on("change",function(){var e,s,a=this.files&&this.files[0];a&&(e=a,(s=new FileReader).onload=function(){try{var e=JSON.parse(s.result);g.post(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_import",nonce:membersAdminMenus.nonce,settings:JSON.stringify(e)}).done(function(e){e.success?(h.allowUnload=!0,location.reload()):alert(e.data&&e.data.message?e.data.message:"Error")})}catch(e){alert("Invalid JSON")}},s.readAsText(e))}),g("#members-am-copy-apply").on("click",function(){var a=g("#members-am-copy-from").val(),s=g("#members-am-copy-to").val();if(a&&s)if(a!==s){var r="",n="";if(d().forEach(function(e){e.slug===a&&(r=e.label),e.slug===s&&(n=e.label)}),confirm('Copy menu settings from "'+r+'" to "'+n+'"?\nThis will overwrite "'+n+"\" menu configuration.\n\nNote: This copies menu order, hidden items, labels, icons, and colors.\nIt does NOT change the role's capabilities (items marked with a lock icon).")){var e=v(a),t={hidden:e.hidden?e.hidden.slice():[],order:[],submenu_order:{},overrides:{}},i=x(a);t.order=i.slice(),h.tree.forEach(function(e){if(e.children&&e.children.length){var s=w(a,e.id);s&&s.length&&(t.submenu_order[e.id]=s.slice())}}),e.overrides&&"object"==typeof e.overrides&&(t.overrides=JSON.parse(JSON.stringify(e.overrides))),h.settings.roles[s]=t,-1===h.activeRoleSlugs.indexOf(s)&&(h.activeRoleSlugs.push(s),o(),P()),Q(),F()}}else alert("Source and target roles must be different.")}),g("#members-am-admin-editable").on("change",function(){var e=!0;g(this).is(":checked")&&(e=window.confirm(membersAdminMenus.i18n.adminEditableWarn)),e?(h.settings._meta.admin_editable=g(this).is(":checked"),R(),P(),o(),Q()):g(this).prop("checked",!1)}),g("#members-am-sync-scroll").prop("checked",!1!==h.syncScroll),g("#members-am-sync-scroll").on("change",function(){h.syncScroll=g(this).is(":checked");try{localStorage.setItem("members_am_sync_scroll",h.syncScroll?"1":"0")}catch(e){}C()}),g("#members-am-add-item").on("click",function(){var e="c"+Date.now();h.settings.custom_items.push({id:e,label:"Custom link",url:window.location.origin+"/wp-admin/",icon_type:"dashicon",icon:"dashicons-admin-generic",parent:"",position:99,cap:"read"}),h.tree=u(),h.selectedId=m({id:e}),Q(),E()}),g("#members-am-remove-custom").on("click",function(){var s=p(h.selectedId);s&&s.customId&&(h.settings.custom_items=(h.settings.custom_items||[]).filter(function(e){return e.id!==s.customId}),h.selectedId=null,h.tree=u(),Q(),g("#members-am-edit-panel").attr("hidden",!0))}),g("#members-am-edit-close").on("click",function(){h.selectedId=null,g("#members-am-edit-panel").attr("hidden",!0),Q()}),g("#members-am-edit-target-role").on("change",E),g("#members-am-edit-label, #members-am-edit-url, #members-am-icon-value, #members-am-badge-text").on("input",function(){T()}),g("#members-am-item-cap").on("input",function(){T()}),g(".members-am-icon-tabs .button").on("click",function(){g(".members-am-icon-tabs .button").removeClass("is-active"),g(this).addClass("is-active"),h.iconTab="fontawesome"===g(this).data("tab")?"fontawesome":"upload"===g(this).data("tab")?"upload":"dashicons",N()}),g("#members-am-icon-search").on("input",N),g("#members-am-media-upload").on("click",function(e){e.preventDefault(),h.mediaFrame||(h.mediaFrame=wp.media({title:"Choose menu icon",button:{text:"Use as icon"},multiple:!1,library:{type:"image"}}),h.mediaFrame.on("select",function(){var e=h.mediaFrame.state().get("selection").first().toJSON(),s=e.url||"";e.sizes&&(e.sizes.thumbnail?s=e.sizes.thumbnail.url:e.sizes.medium&&(s=e.sizes.medium.url)),g("#members-am-icon-type").val("custom"),g("#members-am-icon-value").val(s),T()})),h.mediaFrame.open()}),g(document).on("change",".members-am-vis-cb",function(){var e=g(this).data("role");if(g(this).is(":checked")){var s=v(e).hidden,a=s.indexOf(h.selectedId);-1!==a&&s.splice(a,1)}else-1===v(e).hidden.indexOf(h.selectedId)&&v(e).hidden.push(h.selectedId);Q()}),g("#members-am-add-sep").on("click",L),g("#members-am-promote").on("click",function(){if(h.selectedId){a("parent","__promote__");var r=_(h.selectedId);I().forEach(function(e){var s=v(e);if(s.order&&s.order.length||(s.order=f()),-1===s.order.indexOf(h.selectedId))if(r){var a=s.order.indexOf(r);-1!==a?s.order.splice(a+1,0,h.selectedId):s.order.push(h.selectedId)}else s.order.push(h.selectedId)}),T()}}),g("#members-am-demote").on("click",function(){var e=window.prompt("Parent slug (e.g. edit.php)","edit.php");e&&(a("parent",e),T())}),g("#members-am-user-search").on("input",function(){var e=g(this).val();clearTimeout(s),s=setTimeout(function(){1 ").val("__all__").text("All roles")),h.activeRoleSlugs.forEach(function(s){var e=(d().filter(function(e){return e.slug===s})[0]||{}).label||s;a.append(g(" ").val(s).text(e))}),h.previewUserId&&a.append(g(" ").val("__user__"+h.previewUserId).text(h.previewUserLabel||"User #"+h.previewUserId)),h.selectedId&&E()}g(function(){var s,a,e;l(),h.tree=u(),R(),g("#members-am-admin-editable").prop("checked",!!h.settings._meta.admin_editable),s=g("#members-am-copy-from").empty(),a=g("#members-am-copy-to").empty(),(e=d()).forEach(function(e){s.append(g(" ").val(e.slug).text(e.label)),a.append(g(" ").val(e.slug).text(e.label))}),1=n.length||(n.splice(p,1),n.splice(f,0,o?u:r))}}function u(e){var r=e.id||"c";return"members-am-"+String(r).replace(/[^a-z0-9_-]/gi,"-").toLowerCase()}function p(e){return!!e&&0===(-1!==e.indexOf("::")?e.split("::").pop():e).indexOf("members-am-")}function f(){var a=v.extend(!0,[],membersAdminMenus.menuTree||[]),n={};return a.forEach(function(e){n[e.id]=!0}),(g.settings.custom_items||[]).forEach(function(e){if(e&&e.id){var r=u(e);if(n[r]){for(var s=0;sn&&(g.carouselPage=n))}}g.activeRoleSlugs=r.filter(function(e){return"administrator"!==e||s}),g.activeRoleSlugs.length||(g.activeRoleSlugs=["subscriber"])}function J(){var a=v("#members-am-role-chips").empty();d().forEach(function(e){if("administrator"!==e.slug||g.settings._meta.admin_editable){var r=-1!==g.activeRoleSlugs.indexOf(e.slug),s=v(' ').text(e.label).attr("data-role",e.slug).toggleClass("is-active",r);a.append(s)}})}function j(i,t,e,o,m){(function(e,r,s,a){a=a||0;var n=r.id,i=R(e,n),t=!P(e,r.cap),o=h(e).overrides[n]||{},m=o.label||r.title||n,l=v('
').attr("data-id",n).toggleClass("is-hidden",i).toggleClass("is-no-cap",t).toggleClass("is-selected",g.selectedId===n).toggleClass("is-sub",0 ');if(0===a){var c=o.icon||r.icon,u=M(c,o.icon_type||r.icon_type);if("fontawesome"===u&&c)d.append(v(' '));else if("svg"!==u&&"image"!==u&&"custom"!==u||!c){var p=c&&0===c.indexOf("dashicons-")?c:"dashicons-admin-generic";d.append(v(' '))}else d.append(v(" ").attr("src",c).css({width:"20px",height:"20px",display:"inline-block",verticalAlign:"middle",objectFit:"contain",filter:"none"}))}r.custom&&d.append(v('custom '));o.label&&d.append(v('edit '));if(d.append(v(' ').text(m)),o.badge){var f=o.badge_bg||"#d63638";d.append(v(' ').text(o.badge).css({backgroundColor:f,color:"#fff",fontSize:"9px",padding:"1px 5px",borderRadius:"2px",marginLeft:"4px",whiteSpace:"nowrap"}))}t&&d.append(v(' Roles.\">🔒 no access "));l.append(d),o.color_bg&&l.css("background-color",o.color_bg);o.color_text&&l.find(".members-am-item-label").css("color",o.color_text);o.color_icon&&(l.find(".dashicons").css("color",o.color_icon),l.find(".members-am-fa-icon i").css("color",o.color_icon),l.find("img").css("filter","none"));var b=v('
');b.append(v(' ').text("◉"),v(' ').text("↑"),v(' ').text("↓")),l.append(b),s.append(l)})(i,t,o,m=m||0),t.children&&t.children.length&&A(i,t.id).forEach(function(e){var r,s,a,n=(r=i,s=t.id,b(I(s,a=e))||(-1===a.indexOf("::")&&(h(r).overrides[a]||{}).parent===s?b(a):null));n&&"__promote__"!==(h(i).overrides[n.id]||{}).parent&&j(i,n,t.id,o,m+1)})}function L(s,a,e,n,i,t){t=t||0,i.append(function(r,e,s,a){a=a||0;var n=s.overrides&&s.overrides[r.id]||{},i=n.label||r.title,t=function(e,r){var s=_(e);if(-1!==s.hidden.indexOf(r))return!0;var a=y(r,e);return!(!a||-1===s.hidden.indexOf(a))}(e,r.id),o=!function(e){if(!e||"read"===e)return 1;for(var r=g.previewUserRoles||[],s=0;s").addClass(l).attr("data-id",r.id),c=v('
');if(0===a){var u=n.icon||r.icon,p=M(u,n.icon_type||r.icon_type);"fontawesome"===p&&u?c.append(v(' ')):"svg"!==p&&"image"!==p&&"custom"!==p||!u?u&&0===u.indexOf("dashicons-")?c.append(v(' ')):c.append(v(' ')):c.append(v(" ").attr("src",u).css({width:"20px",height:"20px",display:"inline-block",verticalAlign:"middle",objectFit:"contain",filter:"none"}))}r.custom&&c.append(v('custom '));n.label&&c.append(v('edit '));if(c.append(v(' ').text(i)),n.badge){var f=n.badge_bg||"#d63638";c.append(v(' ').text(n.badge).css({backgroundColor:f,color:"#fff",fontSize:"9px",padding:"1px 5px",borderRadius:"2px",marginLeft:"4px",whiteSpace:"nowrap"}))}o&&c.append(v('🔒 no access "));d.append(c),n.color_bg&&d.css("background-color",n.color_bg);n.color_text&&d.find(".members-am-item-label").css("color",n.color_text);n.color_icon&&(d.find(".dashicons").css("color",n.color_icon),d.find(".members-am-fa-icon i").css("color",n.color_icon));var b=v('
');return b.append(v(' ').text(t?"◯":"◉"),v(' ').text("↑"),v(' ').text("↓")),d.append(b),d.on("click",function(e){v(e.target).closest("button").length||(g.selectedId=r.id,V())}),d}(a,s,n,t)),a.children&&a.children.length&&function(e,r){var s=k(r),a=_(e);g.tree.forEach(function(e){e&&e.id&&-1===e.id.indexOf("::")&&(a.overrides&&a.overrides[e.id]||{}).parent===r&&-1===s.indexOf(e.id)&&s.push(e.id)});var n=a.submenu_order&&a.submenu_order[r];if(!n||!n.length)return s.slice();var i=n.filter(function(e){return-1!==s.indexOf(e)});return s.forEach(function(e){-1===i.indexOf(e)&&i.push(e)}),i}(s,a.id).forEach(function(e){var r=function(e,r,s){var a=b(I(r,s));if(a)return a;if(-1===s.indexOf("::")){var n=_(e);if((n.overrides&&n.overrides[s]||{}).parent===r)return b(s)}return null}(s,a.id,e);r&&"__promote__"!==(n.overrides&&n.overrides[r.id]||{}).parent&&L(s,r,a.id,n,i,t+1)})}function F(){var s=v("#members-am-columns"),a={};s.find(".members-am-column").each(function(){var e=v(this).data("role");if(e){var r=v(this).find(".members-am-sidebar-list");r.length&&(a[e]=r.scrollTop())}}),s.empty();var e=g.carouselPage*g.columnsPerPage;if(g.activeRoleSlugs.slice(e,e+g.columnsPerPage).forEach(function(e){var r=v('
');!function(s,e){e.empty();var r=v(''),a=(d().filter(function(e){return e.slug===s})[0]||{}).label||s;r.append(v('').text(a)),r.append(v(' ').append(v(' ').text("◀"),v(' ').text("▶"))),e.append(r);var n=v('');S(s).forEach(function(e){if(0!==e.indexOf("sep-")){var r=b(e);r&&j(s,r,0,n,0)}else n.append(v('
').text("—"))}),e.append(n)}(e,r),s.append(r),a[e]&&r.find(".members-am-sidebar-list").scrollTop(a[e])}),g.previewUserId){var n=g.previewUserId,r=v('
'),i=v('');i.append(v(" ").text(g.previewUserLabel||"User #"+n)),i.append(v('× ').on("click",function(){g.previewUserId=null,g.previewUserLabel=null,g.previewUserRoles=[],V()})),r.append(i);var t=v(''),o=_(n);c(n).forEach(function(e){if(0!==e.indexOf("sep-")){var r=b(e);r&&L(n,r,0,o,t,0)}else t.append(v('
').text("——"))}),r.append(t),s.append(r)}if(g.syncScroll){var m=s.find(".members-am-sidebar-list"),l=!1;m.on("scroll",function(){if(!l){l=!0;var e=v(this).scrollTop();m.not(this).scrollTop(e),l=!1}})}!function(){var e=Math.max(1,Math.ceil(g.activeRoleSlugs.length/g.columnsPerPage)),r=(Math.min(g.carouselPage+1,e),g.carouselPage*g.columnsPerPage+1),s=Math.min((g.carouselPage+1)*g.columnsPerPage,g.activeRoleSlugs.length);v("#members-am-carousel-status").text(r+"–"+s+" "+membersAdminMenus.i18n.of+" "+g.activeRoleSlugs.length);for(var a=v("#members-am-carousel-dots").empty(),n=0;n ').toggleClass("is-active",n===g.carouselPage))}()}function z(){if(g.selectedId){v("#members-am-edit-panel").removeAttr("hidden");var e=b(g.selectedId),r=C()||{};v("#members-am-edit-title").text(e?e.title:g.selectedId),v("#members-am-edit-label").val(r.label||e&&e.title||"");var s=p(g.selectedId);v("#members-am-edit-url-wrap").toggle(s),v("#members-am-edit-url").attr("placeholder","Override URL (leave empty for default)").val(s&&(r.url||e&&e.url)||"").data("default-url",e&&e.url||""),v("#members-am-icon-type").val(r.icon_type||"dashicon"),v("#members-am-icon-value").val(r.icon||e&&e.icon||"");var a=r.icon||e&&e.icon||"",n=M(a,r.icon_type||e&&e.icon_type||"");"image"!==n&&"custom"!==n&&"svg"!==n||!a?v("#members-am-icon-preview").hide():v("#members-am-icon-preview").show().attr("src",a),v("#members-am-color-bg").val(r.color_bg||""),v("#members-am-color-text").val(r.color_text||""),v("#members-am-color-icon").val(r.color_icon||""),v("#members-am-badge-text").val(r.badge||""),v("#members-am-badge-bg").val(r.badge_bg||""),v("#members-am-item-cap").attr("placeholder",e&&e.cap?e.cap+" (default)":"").val(g.settings.capabilities[g.selectedId]||"");var i=e&&e.custom;v("#members-am-remove-custom").toggle(!!i),v("#members-am-visibility-toggles").empty();var t=e&&e.cap||"read";d().forEach(function(e){if("administrator"!==e.slug||g.settings._meta.admin_editable){var r=R(e.slug,g.selectedId),s=P(e.slug,t),a=v(' ').attr("data-role",e.slug).prop("checked",!r&&s);s||a.prop("disabled",!0);var n=v(' ').append(a,v(" ").text(e.label));s||(n.append(v(" ").text(" — no capability").css({color:"#999",fontStyle:"italic",marginLeft:"4px"})),n.css("opacity","0.5")),v("#members-am-visibility-toggles").append(n)}}),v(".members-am-color").each(function(){v(this).data("wpWpColorPicker")&&v(this).wpColorPicker("destroy")}),v(".members-am-color").wpColorPicker({change:function(e,r){setTimeout(function(){D()},20)},clear:function(){setTimeout(function(){D()},20)}}),W(),function(){var e=v(".members-am-demote-wrap"),s=v("#members-am-demote-parent"),r=v("#members-am-demote");if(!g.selectedId)return e.attr("hidden",!0);if(x(g.selectedId))return e.attr("hidden",!0);var a=E()[0]||g.activeRoleSlugs[0];if(a&&O(a,g.selectedId))return e.attr("hidden",!0);e.removeAttr("hidden");var n=g.selectedId,i=membersAdminMenus.i18n&&membersAdminMenus.i18n.selectParentMenu||"";s.empty().append(v(" ").val("").text(i));var t=0;g.tree.forEach(function(e){if(e&&e.id&&e.id!==n){var r=e.title&&String(e.title).trim()?e.title:e.id;s.append(v(" ").val(e.id).text(r)),t++}});var o=0 ');"dashicons"===s?r.append(v(' ')):r.append(v(' ')),r.on("click",function(){v("#members-am-icon-value").val(e),v("#members-am-icon-type").val("dashicons"===s?"dashicon":"fontawesome"),D()}),n.append(r)}})}function s(e,r){var s=g.activeRoleSlugs.indexOf(e);if(-1!==s){var a=s+r;if(!(a<0||a>=g.activeRoleSlugs.length)){var n=g.activeRoleSlugs[s];g.activeRoleSlugs[s]=g.activeRoleSlugs[a],g.activeRoleSlugs[a]=n,o(),V()}}}function Q(e,r,s){var a,n,i,t=h(e).overrides[r]||{},o=null;if("__promote__"===t.parent?o=null:-1!==r.indexOf("::")?o=x(r):t.parent&&"__promote__"!==t.parent&&(o=t.parent),o){var m=h(e).submenu_order;m[o]||(m[o]=(a=e,i=k(n=o),g.tree.forEach(function(e){e&&e.id&&-1===e.id.indexOf("::")&&(h(a).overrides[e.id]||{}).parent===n&&-1===i.indexOf(e.id)&&i.push(e.id)}),i));var l=m[o],d=-1!==r.indexOf("::")?r.split("::").pop():r;if(-1===(u=l.indexOf(d)))return;if((p=u+s)<0||p>=l.length)return;var c=l[u];l[u]=l[p],l[p]=c}else{h(e).order&&h(e).order.length||(h(e).order=w());var u,p,f=h(e).order;if(-1===(u=f.indexOf(r)))return;if((p=u+s)<0||p>=f.length)return;var b=f[u];f[u]=f[p],f[p]=b}V()}function q(){var e=E();if(e.length){var a="sep-"+Date.now();e.forEach(function(e){h(e).order&&h(e).order.length||(h(e).order=w());var r=h(e).order,s=g.selectedId?r.indexOf(g.selectedId):r.length-1;s<0&&(s=r.length),r.splice(s+1,0,a)}),V()}}function B(){var e=v("#members-am-save").prop("disabled",!0);v.post(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_save",nonce:membersAdminMenus.nonce,settings:JSON.stringify(g.settings)}).done(function(e){e.success?(g.allowUnload=!0,alert(membersAdminMenus.i18n.saved),location.reload()):alert(e.data&&e.data.message?e.data.message:"Error")}).fail(function(){alert(membersAdminMenus.i18n.networkError||"Could not save settings. Check your connection and try again.")}).always(function(){e.prop("disabled",!1)})}function G(e,r){confirm("role"===e&&r?"Reset all settings for this role? This cannot be undone.":"Reset ALL menu settings for every role? This cannot be undone.")&&v.post(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_reset",nonce:membersAdminMenus.nonce,scope:e||"all",role:r||""},function(e){e.success?(g.allowUnload=!0,location.reload()):alert(e.data&&e.data.message?e.data.message:"Reset failed.")})}function H(e){v.getJSON(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_user_search",nonce:membersAdminMenus.nonce,term:e},function(e){e.success&&e.data&&e.data.length?function(e){v(".members-am-user-suggestions").remove();var r=v("#members-am-user-search").parent();r.css("position","relative");var s=v('
');e.forEach(function(e){s.append(v('
').text(e.label).data("userId",e.id).on("click",function(){!function(e,r,s){g.previewUserId=e,g.previewUserLabel=r||"User #"+e,g.previewUserRoles=s||[],m(),g.settings.users[e]||(g.settings.users[e]={});V()}(e.id,e.label,e.roles),v(".members-am-user-suggestions").remove(),v("#members-am-user-search").val("")}))}),r.append(s),setTimeout(function(){v(document).one("click",function(){v(".members-am-user-suggestions").remove()})},0)}(e.data):v(".members-am-user-suggestions").remove()})}function K(){var r;v(document).on("click","#members-am-role-chips .members-am-chip",function(){var e=v(this).data("role"),r=g.activeRoleSlugs.indexOf(e);-1===r?g.activeRoleSlugs.push(e):1 ');if(i.append(v('
').text("Reset Settings")),a&&n){var t=v(' ');t.append(v(' ')),t.append(v(' ').append(v(" ").text("Reset "+n),v(" ").text("Clear all menu settings for this role only"))),t.on("click",function(){v(".members-am-reset-dropdown").remove(),G("role",a)}),i.append(t)}var o=v(' ');o.append(v(' ')),o.append(v(' ').append(v(" ").text("Reset all roles"),v(" ").text("Clear all menu settings for every role"))),o.on("click",function(){v(".members-am-reset-dropdown").remove(),G("all")}),i.append(o),r.parent().css("position","relative"),i.insertAfter(r),v(document).one("click",function(){v(".members-am-reset-dropdown").remove()})}),v("#members-am-export").on("click",function(e){e.preventDefault(),window.location.href=membersAdminMenus.exportUrl}),v("#members-am-import").on("click",function(){v("#members-am-import-file").trigger("click")}),v("#members-am-import-file").on("change",function(){var e,r,s=this.files&&this.files[0];s&&(e=s,(r=new FileReader).onload=function(){try{var e=JSON.parse(r.result);v.post(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_import",nonce:membersAdminMenus.nonce,settings:JSON.stringify(e)}).done(function(e){e.success?(g.allowUnload=!0,location.reload()):alert(e.data&&e.data.message?e.data.message:"Error")})}catch(e){alert("Invalid JSON")}},r.readAsText(e))}),v("#members-am-copy-apply").on("click",function(){var s=v("#members-am-copy-from").val(),r=v("#members-am-copy-to").val();if(s&&r)if(s!==r){var a="",n="";if(d().forEach(function(e){e.slug===s&&(a=e.label),e.slug===r&&(n=e.label)}),confirm('Copy menu settings from "'+a+'" to "'+n+'"?\nThis will overwrite "'+n+"\" menu configuration.\n\nNote: This copies menu order, hidden items, labels, icons, and colors.\nIt does NOT change the role's capabilities (items marked with a lock icon).")){var e=h(s),i={hidden:e.hidden?e.hidden.slice():[],order:[],submenu_order:{},overrides:{}},t=S(s);i.order=t.slice(),g.tree.forEach(function(e){if(e.children&&e.children.length){var r=A(s,e.id);r&&r.length&&(i.submenu_order[e.id]=r.slice())}}),e.overrides&&"object"==typeof e.overrides&&(i.overrides=JSON.parse(JSON.stringify(e.overrides))),g.settings.roles[r]=i,-1===g.activeRoleSlugs.indexOf(r)&&(g.activeRoleSlugs.push(r),o(),J()),V(),B()}}else alert("Source and target roles must be different.")}),v("#members-am-admin-editable").on("change",function(){var e=!0;v(this).is(":checked")&&(e=window.confirm(membersAdminMenus.i18n.adminEditableWarn)),e?(g.settings._meta.admin_editable=v(this).is(":checked"),N(),J(),o(),V()):v(this).prop("checked",!1)}),v("#members-am-sync-scroll").prop("checked",!1!==g.syncScroll),v("#members-am-sync-scroll").on("change",function(){g.syncScroll=v(this).is(":checked");try{localStorage.setItem("members_am_sync_scroll",g.syncScroll?"1":"0")}catch(e){}F()}),v("#members-am-add-item").on("click",function(){var e="c"+Date.now();g.settings.custom_items.push({id:e,label:"Custom link",url:window.location.origin+"/wp-admin/",icon_type:"dashicon",icon:"dashicons-admin-generic",parent:"",position:99,cap:"read"}),g.tree=f(),g.selectedId=u({id:e}),V(),z()}),v("#members-am-remove-custom").on("click",function(){var r=b(g.selectedId);r&&r.customId&&(g.settings.custom_items=(g.settings.custom_items||[]).filter(function(e){return e.id!==r.customId}),g.selectedId=null,g.tree=f(),V(),v("#members-am-edit-panel").attr("hidden",!0))}),v("#members-am-edit-close").on("click",function(){g.selectedId=null,v("#members-am-edit-panel").attr("hidden",!0),V()}),v("#members-am-edit-target-role").on("change",z),v("#members-am-edit-label, #members-am-edit-url, #members-am-icon-value, #members-am-badge-text").on("input",function(){D()}),v("#members-am-item-cap").on("input",function(){D()}),v(".members-am-icon-tabs .button").on("click",function(){v(".members-am-icon-tabs .button").removeClass("is-active"),v(this).addClass("is-active"),g.iconTab="fontawesome"===v(this).data("tab")?"fontawesome":"upload"===v(this).data("tab")?"upload":"dashicons",W()}),v("#members-am-icon-search").on("input",W),v("#members-am-media-upload").on("click",function(e){e.preventDefault(),g.mediaFrame||(g.mediaFrame=wp.media({title:"Choose menu icon",button:{text:"Use as icon"},multiple:!1,library:{type:"image"}}),g.mediaFrame.on("select",function(){var e=g.mediaFrame.state().get("selection").first().toJSON(),r=e.url||"";e.sizes&&(e.sizes.thumbnail?r=e.sizes.thumbnail.url:e.sizes.medium&&(r=e.sizes.medium.url)),v("#members-am-icon-type").val("custom"),v("#members-am-icon-value").val(r),D()})),g.mediaFrame.open()}),v(document).on("change",".members-am-vis-cb",function(){var e=v(this).data("role");if(v(this).is(":checked")){var r=h(e).hidden,s=r.indexOf(g.selectedId);-1!==s&&r.splice(s,1)}else-1===h(e).hidden.indexOf(g.selectedId)&&h(e).hidden.push(g.selectedId);V()}),v("#members-am-add-sep").on("click",q),v("#members-am-promote").on("click",function(){if(g.selectedId){var n=g.selectedId,e=C()||{};if(-1===n.indexOf("::")&&e.parent&&"__promote__"!==e.parent){var i=e.parent,r=U();if(r){var s=_(r);if(s.overrides[n]&&delete s.overrides[n].parent,s.submenu_order&&s.submenu_order[i]){var a=s.submenu_order[i].indexOf(n);-1!==a&&s.submenu_order[i].splice(a,1)}if(s.order.length||(s.order=w()),-1===s.order.indexOf(n)){var t=s.order.indexOf(i);-1!==t?s.order.splice(t+1,0,n):s.order.push(n)}}else E().forEach(function(e){var r=h(e);if(r.overrides[n]&&delete r.overrides[n].parent,r.submenu_order&&r.submenu_order[i]){var s=r.submenu_order[i].indexOf(n);-1!==s&&r.submenu_order[i].splice(s,1)}if(r.order&&r.order.length||(r.order=w()),-1===r.order.indexOf(n)){var a=r.order.indexOf(i);-1!==a?r.order.splice(a+1,0,n):r.order.push(n)}});return D(),void z()}T("parent","__promote__");var o=x(n);E().forEach(function(e){var r=h(e);if(r.order&&r.order.length||(r.order=w()),-1===r.order.indexOf(n))if(o){var s=r.order.indexOf(o);-1!==s?r.order.splice(s+1,0,n):r.order.push(n)}else r.order.push(n)}),D(),z()}}),v("#members-am-demote").on("click",function(){var e=v("#members-am-demote-parent").val();e?(T("parent",e),D(),z()):window.alert(membersAdminMenus.i18n&&membersAdminMenus.i18n.selectParentFirst||"Please choose a parent menu from the list.")}),v("#members-am-user-search").on("input",function(){var e=v(this).val();clearTimeout(r),r=setTimeout(function(){1 ").val("__all__").text("All roles")),g.activeRoleSlugs.forEach(function(r){var e=(d().filter(function(e){return e.slug===r})[0]||{}).label||r;s.append(v(" ").val(r).text(e))}),g.previewUserId&&s.append(v(" ").val("__user__"+g.previewUserId).text(g.previewUserLabel||"User #"+g.previewUserId)),g.selectedId&&z()}v(function(){var r,s,e;m(),g.tree=f(),N(),v("#members-am-admin-editable").prop("checked",!!g.settings._meta.admin_editable),r=v("#members-am-copy-from").empty(),s=v("#members-am-copy-to").empty(),(e=d()).forEach(function(e){r.append(v(" ").val(e.slug).text(e.label)),s.append(v(" ").val(e.slug).text(e.label))}),1
Date: Thu, 9 Apr 2026 15:06:54 +0200
Subject: [PATCH 18/73] feat(admin): enhance admin menu item handling with
sortable functionality and improved submenu management
---
admin/functions-admin.php | 2 +-
css/admin.css | 17 ++++++
css/admin.min.css | 2 +-
js/admin-menus.js | 112 +++++++++++++++++++++++++++++++++++++-
js/admin-menus.min.js | 2 +-
5 files changed, 129 insertions(+), 6 deletions(-)
diff --git a/admin/functions-admin.php b/admin/functions-admin.php
index c419940..8a126df 100644
--- a/admin/functions-admin.php
+++ b/admin/functions-admin.php
@@ -57,7 +57,7 @@ function members_admin_register_scripts() {
wp_register_script(
'members-admin-menus',
members_plugin()->uri . "js/admin-menus{$min}.js",
- array( 'jquery', 'wp-color-picker', 'wp-util' ),
+ array( 'jquery', 'jquery-ui-sortable', 'wp-color-picker', 'wp-util' ),
$admin_menus_ver,
true
);
diff --git a/css/admin.css b/css/admin.css
index 23b0b9c..c27e604 100644
--- a/css/admin.css
+++ b/css/admin.css
@@ -1181,6 +1181,23 @@
padding-left: 36px;
}
+.members-am-sidebar-list .members-am-item {
+ cursor: grab;
+}
+
+.members-am-sidebar-list .members-am-item:active {
+ cursor: grabbing;
+}
+
+.members-am-sort-placeholder {
+ box-sizing: border-box;
+ min-height: 36px;
+ margin: 2px 0;
+ background: rgba(34, 113, 177, 0.08);
+ border: 1px dashed #2271b1;
+ border-radius: 2px;
+}
+
.members-am-item.is-hidden {
opacity: 0.18;
}
diff --git a/css/admin.min.css b/css/admin.min.css
index c170ebf..bd41cbb 100644
--- a/css/admin.min.css
+++ b/css/admin.min.css
@@ -1 +1 @@
-#members-cp h2.hndle,#members-cp-side h2.hndle{border-bottom:none !important;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}#members-cp h2.hndle:before,#members-cp-side h2.hndle:before{content:url("data:image/svg+xml,%3Csvg width='15px' aria-hidden='true' focusable='false' data-prefix='fas' data-icon='users-cog' class='svg-inline--fa fa-users-cog fa-w-20' role='img' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 640 512'%3E%3Cpath fill='currentColor' d='M610.5 341.3c2.6-14.1 2.6-28.5 0-42.6l25.8-14.9c3-1.7 4.3-5.2 3.3-8.5-6.7-21.6-18.2-41.2-33.2-57.4-2.3-2.5-6-3.1-9-1.4l-25.8 14.9c-10.9-9.3-23.4-16.5-36.9-21.3v-29.8c0-3.4-2.4-6.4-5.7-7.1-22.3-5-45-4.8-66.2 0-3.3.7-5.7 3.7-5.7 7.1v29.8c-13.5 4.8-26 12-36.9 21.3l-25.8-14.9c-2.9-1.7-6.7-1.1-9 1.4-15 16.2-26.5 35.8-33.2 57.4-1 3.3.4 6.8 3.3 8.5l25.8 14.9c-2.6 14.1-2.6 28.5 0 42.6l-25.8 14.9c-3 1.7-4.3 5.2-3.3 8.5 6.7 21.6 18.2 41.1 33.2 57.4 2.3 2.5 6 3.1 9 1.4l25.8-14.9c10.9 9.3 23.4 16.5 36.9 21.3v29.8c0 3.4 2.4 6.4 5.7 7.1 22.3 5 45 4.8 66.2 0 3.3-.7 5.7-3.7 5.7-7.1v-29.8c13.5-4.8 26-12 36.9-21.3l25.8 14.9c2.9 1.7 6.7 1.1 9-1.4 15-16.2 26.5-35.8 33.2-57.4 1-3.3-.4-6.8-3.3-8.5l-25.8-14.9zM496 368.5c-26.8 0-48.5-21.8-48.5-48.5s21.8-48.5 48.5-48.5 48.5 21.8 48.5 48.5-21.7 48.5-48.5 48.5zM96 224c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm224 32c1.9 0 3.7-.5 5.6-.6 8.3-21.7 20.5-42.1 36.3-59.2 7.4-8 17.9-12.6 28.9-12.6 6.9 0 13.7 1.8 19.6 5.3l7.9 4.6c.8-.5 1.6-.9 2.4-1.4 7-14.6 11.2-30.8 11.2-48 0-61.9-50.1-112-112-112S208 82.1 208 144c0 61.9 50.1 112 112 112zm105.2 194.5c-2.3-1.2-4.6-2.6-6.8-3.9-8.2 4.8-15.3 9.8-27.5 9.8-10.9 0-21.4-4.6-28.9-12.6-18.3-19.8-32.3-43.9-40.2-69.6-10.7-34.5 24.9-49.7 25.8-50.3-.1-2.6-.1-5.2 0-7.8l-7.9-4.6c-3.8-2.2-7-5-9.8-8.1-3.3.2-6.5.6-9.8.6-24.6 0-47.6-6-68.5-16h-8.3C179.6 288 128 339.6 128 403.2V432c0 26.5 21.5 48 48 48h255.4c-3.7-6-6.2-12.8-6.2-20.3v-9.2zM173.1 274.6C161.5 263.1 145.6 256 128 256H64c-35.3 0-64 28.7-64 64v32c0 17.7 14.3 32 32 32h65.9c6.3-47.4 34.9-87.3 75.2-109.4z'%3E%3C/path%3E%3C/svg%3E");margin-right:5px}#members-cp-side .postbox-header{border-bottom:none !important}#members-cp-side .handle-actions .handle-order-higher,#members-cp-side .handle-actions .handle-order-lower{display:none}#members-cp-side .handle-actions .handlediv{position:absolute;right:5px}.members-upgrade-header{text-align:center;padding:5px}.members-upgrade-header a{color:#f59431}.memberpress-paid-memberships{background-color:#f5f5f5;padding:50px 10px;text-align:center}.memberpress-paid-memberships a{background-color:#0e4598;display:inline-block;padding:10px 20px;border-radius:300px;color:#fff;text-decoration:none;margin-top:20px}#members-cp-side .members-tabs{position:relative}#members-cp-side .members-tab-nav{background-color:transparent;margin-bottom:20px;border-right:none !important}#members-cp-side .members-tab-nav .members-tab-title{width:33.333%;height:50px;border-right:none !important}#members-cp-side .members-tab-nav .members-tab-title a{border:0}#members-cp-side .members-tab-content h3{font-weight:bold;font-size:15px;margin-top:0;color:#000;margin-bottom:10px}#members-cp-side .members-tab-content .memberpress-paid-memberships{text-align:left;padding:20px}#members-cp-side .members-tab-content .memberpress-paid-memberships a{display:block;text-align:center}#members-cp-side .members-tabs .members-tab-nav li a,#members-cp-side .members-tabs .members-tab-nav li[aria-selected="false"] a i{color:#555}#members-cp-side .members-tabs .members-tab-nav li a svg,#members-cp-side .members-tabs .members-tab-nav li[aria-selected="false"] a svg{fill:#555}#members-cp-side .members-tabs .members-tab-nav li[aria-selected="true"] a{background-color:transparent;border-bottom:2px solid #3582ae}#members-cp-side .members-tabs .members-tab-nav li[aria-selected="true"] a i{color:#3582ae}#members-cp-side .members-tabs .members-tab-nav li[aria-selected="true"] a svg{fill:#3582ae}.members-tab-title svg,.members-tab-title[aria-selected="false"] svg{fill:#0073aa}.members-tab-title[aria-selected="true"] svg{fill:#555}#wpcontent #members-admin-header{margin-left:-20px;padding:0;padding-left:22px;background-color:#f9f9f9;background-repeat:repeat;background-size:1200px 75px;min-height:36px;position:relative}#wpcontent #members-admin-header img.members-logo{height:90px}.members-upgrade-header #close-members-upgrade-header{position:absolute;right:20px;top:3px}.members-upgrade-header #close-members-upgrade-header:hover{cursor:pointer}.memberpress-welcome-panel.welcome-panel{margin-top:0;padding:40px 20px;background:#fff}.memberpress-welcome-panel.welcome-panel:before{background:0}.memberpress-welcome-panel.welcome-panel .about-description{margin:20px 0}.memberpress-welcome-panel.welcome-panel-content{margin:0}.memberpress-welcome-panel.welcome-panel-content .mp-logo-wrap>a{display:block}@media screen and (min-width:870px){.members_page_members-settings .members-short-p{max-width:612px;margin-left:auto;margin-right:auto}.members_page_members-settings .welcome-panel-content{text-align:center}}.members_page_members-settings .welcome-panel .button.button-hero{margin-left:auto;margin-right:auto}.members_page_members-settings .members-svg-wrap{display:inline-block;margin:0 auto 20px}@media screen and (max-width:870px){.members_page_members-settings .welcome-panel{padding:20px}.members_page_members-settings .members-svg-wrap{float:left;margin-right:28px}.admin_page_members-settings.rtl .members-svg-wrap{float:right;margin-right:0;margin-left:28px}}.members_page_members-settings .members-svg-link{display:table-cell;text-align:center;width:128px;height:128px;background:#363b3f;color:#fff;padding:24px 16px 16px;border-radius:50%;-webkit-box-sizing:border-box;box-sizing:border-box;border:4px solid #fff;-webkit-box-shadow:0 0 0 4px #363b3f;box-shadow:0 0 0 4px #363b3f}.members_page_members-settings .members-svg-link svg{max-width:84px;max-height:64px;width:auto;height:auto}.members-addons{display:grid;grid-template-columns:1fr 1fr;grid-row-gap:20px;grid-column-gap:20px}.members-addons .plugin-card{margin:0}.members-addons .plugin-card-top{width:100%}.members-addon{width:100%;position:relative;float:none;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.members-addon .desc{margin-bottom:80px}.addon-activate{text-align:center;border:1px solid #ddd;border-radius:3px;padding:5px 10px 10px;display:inline-block;width:100px;position:absolute;right:20px;bottom:20px}.activate-toggle:hover{cursor:pointer}.activate-toggle svg{max-width:20px;position:relative;top:5px}.activate-toggle svg{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.activate-toggle svg.active{-webkit-transform:rotate(0);transform:rotate(0)}.activate-toggle svg path{fill:#ccc}.activate-toggle svg.active path{fill:#8cbd5a}.activate-toggle.processing{cursor:not-allowed;pointer-events:none;opacity:.5}.activate-toggle .action-label{display:inline-block;width:50px;text-align:left}.mepr_dummy_txns{-webkit-filter:blur(3px);filter:blur(3px);position:absolute;top:0;left:0;width:100%;z-index:5;pointer-events:none}.mepr_dummy_txns::after{background-color:rgba(0,0,0,.2);position:absolute;top:0;left:0;width:100%;height:100%;z-index:6}.mepr-upgrade-table{position:relative}.mepr-upgrade-table .mepr-upgrade{position:relative;top:100px;z-index:10;background:rgba(0,0,0,.2);width:100%;height:100%;max-width:600px;margin:0 auto;-webkit-box-shadow:0 0 30px #ccc;box-shadow:0 0 30px #ccc}.mepr-upgrade-content{background-color:#fff;padding:20px;text-align:center}.mepr-upgrade-content h2{font-size:24px}.mepr-upgrade-content h4{font-size:18px}.mepr-upgrade-content .features{display:grid;grid-template-columns:1fr 1fr;grid-column-gap:30px;grid-row-gap:10px;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;text-align:left;padding:10px}.features li:before{content:"\f147";font-family:dashicons;color:green;font-size:20px;position:relative;top:4px;margin-right:10px}.mepr-upgrade-cta{text-align:center;background-color:#f2f2f2;padding:20px}.mepr-upgrade-cta .mepr-cta-button{display:block;max-width:300px;margin:0 auto 20px;background-color:#fd9c27;color:#fff;padding:15px;font-size:18px;font-weight:bold;text-decoration:none;border-radius:300px}.members-plugin-card.plugin-card:nth-child(even){margin-right:inherit}.members-plugin-card.plugin-card:nth-child(odd){clear:none;margin-left:inherit}.members-plugin-card.plugin-card .plugin-card-top{min-height:0;padding:30px 20px}.members-plugin-card.plugin-card .plugin-icon{top:30px}.members-plugin-card.plugin-card .plugin-card-bottom .column-status{font-weight:bold}.members-plugin-card.plugin-card .plugin-card-bottom .column-status .active{color:#8cbd5a}.members-plugin-card.plugin-card .plugin-card-bottom .column-status .inactive{color:red}.members-plugin-card.plugin-card .plugin-icon{width:64px;height:auto}.plugin-icon-small{width:32px;height:auto}.members-plugin-card.plugin-card .name,.members-plugin-card.plugin-card .desc{margin-right:0;margin-left:84px}.members-addons .plugin-card .name,.members-addons .plugin-card .desc p{margin-right:0}@media screen and (max-width:1100px){.members-addons{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}}@media screen and (max-width:600px){.members_page_members-settings .members-svg-link{width:64px;height:64px}.members_page_members-settings .members-svg-link svg{position:absolute;top:14px;left:15px;max-width:30px;max-height:30px}.members_page_members-settings .plugin-card-members-edd-integration .members-svg-link svg,.members_page_members-settings .plugin-card-members-acf-integration .members-svg-link svg,.members_page_members-settings .plugin-card-members-givewp-integration .members-svg-link svg,.members_page_members-settings .plugin-card-members-meta-box-integration .members-svg-link svg,.members_page_members-settings .plugin-card-members-woocommerce-integration .members-svg-link svg{top:10px;left:8px;max-width:40px;max-height:40px}.members_page_members-settings .plugin-card-members-block-permissions .members-svg-link svg,.members_page_members-settings .plugin-card-members-role-hierarchy .members-svg-link svg{left:14px}.members-addons .plugin-card .desc>p,.members-addons .plugin-card .name{margin-left:84px}}.memberpress-about .welcome-panel-column-container{display:-webkit-box;display:-ms-flexbox;display:flex}.memberpress-about .mp-logo{max-width:256px;margin:50px}.members-about-addons{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-column-gap:20px}.members-about-addons .members-plugin-card{margin:0;width:100%}.members-about-addons .members-plugin-card .name h3 a{text-decoration:none}.members-about-addons .members-plugin-card .plugin-card-bottom{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}@media only screen and (max-width:1099px){.members-about-addons{grid-template-columns:1fr;grid-row-gap:20px}}@media screen and (min-width:1100px) and (max-width:1600px){.members-about-addons .members-plugin-card{float:none;width:auto;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.members-plugin-card.plugin-card .desc{margin-left:0;margin-top:50px}.members-plugin-card.plugin-card .desc p{margin-left:0;margin-right:0}.members-plugin-card.plugin-card .plugin-card-bottom .column-status{float:none}.members-plugin-card.plugin-card .plugin-card-bottom .column-updated{float:none;width:auto}}@media screen and (max-width:1200px){.welcome-panel .welcome-panel-column-container{-webkit-box-orient:vertical;-webkit-box-direction:reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse;gap:0;padding:0}.memberpress-about .mp-logo{margin:0 0 20px}}.members-plugin-card.plugin-card .desc p{margin-left:0;margin-right:0}@media only screen and (min-width:783px){.members_page_roles .column-users,.members_page_roles .column-granted_caps,.members_page_roles .column-denied_caps{width:100px;text-align:center}}.members-title-div #titlewrap input{padding:0 8px;font-size:1.7em;line-height:normal;height:1.7em;width:100%;outline:0;margin:0 0 3px;background-color:#fff}.members-title-div input[name="role"]{font-size:13px;height:22px;margin:0;width:16em}#tabcapsdiv{margin-top:1em}#tabcapsdiv>.hndle{padding:10px;border-bottom:1px solid #eee}#tabcapsdiv .inside,#members-cp .inside{margin:0;padding:0}.members-cap-tabs,.members-tabs{overflow:hidden;background:#fff;background:-webkit-gradient(linear,left top,right top,from(#fafafa),color-stop(20%,#fafafa),color-stop(20%,#fff),to(#fff));background:linear-gradient(90deg,#fafafa 0,#fafafa 20%,#fff 20%,#fff 100%)}@media only screen and (max-width:782px){.members-cap-tabs,.members-tabs{background:linear-gradient(90deg,#fafafa 0,#fafafa 48px,#fff 48px,#fff 100%)}}.members-cap-tabs .members-tab-nav,.members-tabs .members-tab-nav{position:relative;float:left;list-style:none;width:20%;line-height:1em;margin:0 0 -1px 0;padding:0;background-color:#fafafa;border-right:1px solid #eee;-webkit-box-sizing:border-box;box-sizing:border-box}.members-cap-tabs .members-tab-nav li,.members-tabs .members-tab-nav li{display:block;position:relative;margin:0;padding:0;line-height:20px}.members-cap-tabs .members-tab-nav li a,.members-tabs .members-tab-nav li a{display:block;margin:0;padding:10px;line-height:20px !important;text-decoration:none;border-bottom:1px solid #eee;-webkit-box-shadow:none;box-shadow:none}.members-cap-tabs .members-tab-nav li a .dashicons,.members-tabs .members-tab-nav li a .dashicons{line-height:20px;margin-right:3px}.members-cap-tabs .members-tab-nav li[aria-selected="true"] a,.members-tabs .members-tab-nav li[aria-selected="true"] a{position:relative;font-weight:bold;color:#555;background-color:#e0e0e0}@media only screen and (max-width:782px){.members-cap-tabs .members-tab-nav,.members-tabs .members-tab-nav{width:48px}.members-cap-tabs .members-tab-nav li a .dashicons,.members-tabs .members-tab-nav li a .dashicons{width:24px;height:24px;font-size:24px;line-height:24px}.members-tab-nav li .dashicons::before,.members-tab-nav li .dashicons::before{width:24px;height:24px}.members-tab-nav li .label{overflow:hidden;position:absolute;top:-1000em;left:-1000em;width:1px;height:1px}}.members-cap-tabs .members-tab-wrap,.members-tabs .members-tab-wrap{float:left;width:80%;margin-left:-1px}@media only screen and (max-width:782px){.members-cap-tabs .members-tab-wrap,.members-tabs .members-tab-wrap{width:calc(100% - 48px)}}#members-cp .members-tab-content{padding:10px;border-left:1px solid #e5e5e5}.members-roles-select th,.members-roles-select td{width:190px;overflow:hidden}.members-roles-select .check-all-th{text-align:center}.members-roles-select .check-all-th label{padding-left:5px}@media only screen and (min-width:850px){#side-sortables .members-tabs{background:#fff}#side-sortables .members-tabs .members-tab-wrap{width:100%}#side-sortables .members-tabs .members-tab-nav{display:table;width:100%}#side-sortables .members-tabs .members-tab-nav li{display:table-cell;text-align:center;border-right:1px solid #eee}#side-sortables .members-tabs .members-tab-nav li:last-of-type{border-right:0}#side-sortables .members-tabs .members-tab-nav li a{padding:10px 0}#side-sortables .members-tabs .members-tab-nav .dashicons{width:24px;height:24px;font-size:24px;line-height:24px}#side-sortables .members-tabs .members-tab-nav .dashicons::before{width:24px;height:24px}#side-sortables .members-tabs .members-tab-nav .label{overflow:hidden;position:absolute;top:-1000em;left:-1000em;width:1px;height:1px}}.members-tabs .members-tabs-label{display:block !important;font-weight:bold;display:inline-block;margin-bottom:4px}.members-tabs .butterbean-control-checkbox .members-tabs-label{display:inline !important}.members-tabs .members-tabs-description{display:block;font-style:italic;margin-top:4px}.members-tabs .members-tabs-label+.members-tabs-description{margin-top:0;margin-bottom:4px}#tabcapsdiv table{border-right:0;border-top:0;border-bottom:0}#tabcapsdiv table td,#tabcapsdiv table th{padding:10px;padding-bottom:10px;border-bottom:1px solid #eee;font-size:13px;line-height:20px}#tabcapsdiv table td{padding:9px}#tabcapsdiv tbody tr:last-of-type td{border-bottom:0}#tabcapsdiv tfoot th{border-color:#eee}@media only screen and (max-width:782px){#tabcapsdiv table td,#tabcapsdiv table th{line-height:24px}}.members-roles-select .column-grant,.members-roles-select .column-deny{width:70px !important;text-align:left;display:table-cell !important;clear:none !important}.members-roles-select thead th,.members-roles-select tfoot th{padding:9px !important}.members-roles-select .column-grant input,.members-roles-select .column-deny input{margin:0 5px 0 0;vertical-align:middle}.members-roles-select tbody tr:nth-child(even){background:#f2f2f2}.members-cap-tabs button{display:inline;margin:-4px;line-height:inherit;padding:4px 8px;border:1px solid transparent;background:transparent;border-radius:0;outline:0;-webkit-transition:all .25s ease-out;transition:all .25s ease-out}.members-cap-tabs button:hover,.members-cap-tabs button:focus{border-color:#eee;background:#fafafa;cursor:pointer}.members-cap-tabs button:active{color:#0073aa;border-color:#0073aa}.members-cap-tabs button+.dashicons{display:none;margin-top:1px;margin-bottom:-1px;line-height:inherit}.members-cap-tabs button:hover+.dashicons,.members-cap-tabs button:focus+.dashicons{display:inline-block}.members-tab-content .members-highlight{background-color:rgba(0,115,170,0.05)}.members-tab-content tbody{-webkit-transition:all 2s ease-in-out;transition:all 2s ease-in-out}.members-cp-role-list-wrap{overflow:auto;min-height:42px;max-height:200px;padding:0 .9em;border:solid 1px #dfdfdf;background-color:#fdfdfd}#wpbody-content{padding-bottom:200px}.members-footer-promotion{text-align:center;font-weight:400;font-size:13px;line-height:16px;color:#787c82;padding:20px 0 30px 0;margin-bottom:20px}.members-footer-promotion p{font-weight:600}.members-footer-promotion-links,.members-footer-promotion-social{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.members-footer-promotion-links{margin:9px 0 0}.members-footer-promotion-links span{color:#c3c4c7;padding:0 7px}.members-footer-promotion-social{margin:10px 0 0 0;gap:10px}.members-footer-promotion-social li{margin-bottom:0}.members-footer-promotion-social a{display:block;height:16px}.members_page_members-settings.rtl{.addon-activate{left:20px;right:unset}.members-addons .plugin-card{.name,.desc p{margin-left:0;margin-right:148px}}}.button.button-warning{background:#dc3232;border-color:#dc3232;color:#fff}.button.button-warning:hover,.button.button-warning:focus{background:#c92424;border-color:#c92424;color:#fff}.members-reset-spinner{float:none;margin-top:0;vertical-align:middle}.members-admin-menus-wrap{max-width:1400px}.members-admin-menus-toolbar{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;margin-bottom:16px}.members-am-copy-wrap label{margin-right:8px}.members-am-chips{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:8px;margin-bottom:12px}.members-am-chip{border-radius:999px;padding:4px 12px;border:1px solid #c3c4c7;background:#f6f7f7;cursor:pointer}.members-am-chip.is-active{background:#2271b1;border-color:#2271b1;color:#fff}.members-am-carousel-wrap{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;gap:8px;margin-bottom:8px}.members-am-carousel-prev,.members-am-carousel-next{-ms-flex-item-align:center;align-self:center;width:36px;height:36px;border-radius:50%;border:1px solid #c3c4c7;background:#fff;cursor:pointer}.members-am-columns{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-ms-flex:1;flex:1;gap:12px;min-height:320px;overflow:hidden}.members-am-column{-webkit-box-flex:1;-ms-flex:1;flex:1;min-width:0;background:#1d2327;border-radius:4px;color:#f0f0f1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.members-am-user-column{border:2px dashed #8c8f94}.members-am-sidebar-head{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:8px 10px;background:#2c3338;border-radius:4px 4px 0 0;font-weight:600;font-size:12px;text-transform:uppercase;letter-spacing:.04em}.members-am-col-move button{margin-left:4px;padding:0 6px;min-height:24px;line-height:22px;font-size:11px}.members-am-sidebar-list{padding:6px 0 12px;overflow-y:auto;max-height:480px}.members-am-item{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:6px 10px 6px 8px;cursor:pointer;border-left:3px solid transparent;font-size:13px}.members-am-item.is-sub{padding-left:22px;font-size:12px;opacity:.95}.members-am-item.is-sub-deep{padding-left:36px}.members-am-item.is-hidden{opacity:.18}.members-am-item.is-no-cap{opacity:.35}.members-am-item.is-no-cap.is-hidden{opacity:.15}.members-am-item.is-selected{border-left-color:#2271b1;background:rgba(34,113,177,0.15)}.members-am-item-main{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;min-width:0}.members-am-item-main .dashicons{font-size:18px;width:18px;height:18px}.members-am-item-label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.members-am-item-actions{display:none;gap:2px}.members-am-item:hover .members-am-item-actions{display:-webkit-box;display:-ms-flexbox;display:flex}.members-am-item-actions button{min-height:22px;padding:0 4px;line-height:20px;font-size:11px}.members-am-sep{text-align:center;opacity:.35;font-size:11px;padding:4px 0}.members-am-carousel-dots{text-align:center;margin-bottom:4px}.members-am-dot{width:8px;height:8px;border-radius:50%;border:0;margin:0 4px;padding:0;background:#c3c4c7;cursor:pointer}.members-am-dot.is-active{background:#2271b1}.members-am-carousel-status{text-align:center;color:#646970;font-size:12px;margin-top:0}.members-am-badge{font-size:9px;text-transform:uppercase;padding:1px 4px;border-radius:2px;margin-right:4px;vertical-align:middle}.members-am-badge-new{background:#2271b1;color:#fff}.members-am-badge-edit{background:#dba617;color:#1d2327}.members-am-badge-nocap{background:#8c8f94;color:#fff}.members-am-legend{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:16px;margin:0 0 8px;padding:0;font-size:12px;color:#646970}.members-am-legend-item{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:4px}.members-am-edit-panel{margin-top:20px;padding:16px;border:1px solid #c3c4c7;background:#fff;border-radius:4px}.members-am-edit-panel-header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:12px}.members-am-edit-panel-header h2{margin:0;font-size:16px}.members-am-edit-toolbar{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:12px;margin-bottom:12px}.members-am-edit-target-wrap select{margin-left:8px}.members-am-level-actions .button{margin-right:6px}.members-am-demote-wrap{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:6px}.members-am-demote-wrap .members-am-demote-select{min-width:200px;max-width:min(320px,100%)}.members-am-edit-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:16px}.members-am-edit-col label{display:block;font-weight:600;margin-bottom:4px}.members-am-icon-tabs{margin-bottom:8px}.members-am-icon-tabs .button{margin-right:4px;margin-bottom:4px}.members-am-icon-tabs .button.is-active{background:#2271b1;border-color:#2271b1;color:#fff}.members-am-icon-grid{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:4px;max-height:160px;overflow-y:auto;border:1px solid #dcdcde;padding:8px;background:#f6f7f7;margin-bottom:8px}.members-am-icon-pick{width:36px;height:36px;padding:0;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;border:1px solid #c3c4c7;background:#fff;cursor:pointer}.members-am-vis-row{display:block;margin-bottom:6px;font-weight:normal}.members-am-reset-dropdown{position:absolute;z-index:100;background:#fff;border:1px solid #c3c4c7;border-radius:6px;padding:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-shadow:0 4px 12px rgba(0,0,0,0.15);box-shadow:0 4px 12px rgba(0,0,0,0.15);min-width:280px;top:100%;left:0;margin-top:4px;overflow:hidden}.members-am-reset-title{padding:10px 14px;font-weight:600;font-size:13px;border-bottom:1px solid #f0f0f0;color:#1d2327}.members-am-reset-option{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;gap:10px;padding:12px 14px;border:0;background:0;cursor:pointer;text-align:left;width:100%;border-bottom:1px solid #f0f0f0;-webkit-transition:background .15s;transition:background .15s}.members-am-reset-option:last-child{border-bottom:0}.members-am-reset-option:hover{background:#f6f7f7}.members-am-reset-option .dashicons{margin-top:2px;color:#646970}.members-am-reset-option-text{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:2px}.members-am-reset-option-text strong{font-size:13px;color:#1d2327}.members-am-reset-option-text small{font-size:12px;color:#646970}.members-am-reset-danger:hover{background:#fcf0f1}.members-am-reset-danger .dashicons{color:#d63638}.members-am-reset-danger:hover strong{color:#d63638}@media screen and (max-width:782px){.members-am-columns{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}}.members-am-user-suggestions{position:absolute;z-index:100;background:#fff;border:1px solid #c3c4c7;border-radius:4px;max-height:200px;overflow-y:auto;width:100%;-webkit-box-shadow:0 2px 6px rgba(0,0,0,0.15);box-shadow:0 2px 6px rgba(0,0,0,0.15);top:100%;left:0}.members-am-user-suggestion{padding:8px 12px;cursor:pointer;font-size:13px;border-bottom:1px solid #f0f0f0}.members-am-user-suggestion:hover{background:#f0f6fc}.members-am-user-suggestion:last-child{border-bottom:0}
\ No newline at end of file
+#members-cp h2.hndle,#members-cp-side h2.hndle{border-bottom:none !important;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}#members-cp h2.hndle:before,#members-cp-side h2.hndle:before{content:url("data:image/svg+xml,%3Csvg width='15px' aria-hidden='true' focusable='false' data-prefix='fas' data-icon='users-cog' class='svg-inline--fa fa-users-cog fa-w-20' role='img' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 640 512'%3E%3Cpath fill='currentColor' d='M610.5 341.3c2.6-14.1 2.6-28.5 0-42.6l25.8-14.9c3-1.7 4.3-5.2 3.3-8.5-6.7-21.6-18.2-41.2-33.2-57.4-2.3-2.5-6-3.1-9-1.4l-25.8 14.9c-10.9-9.3-23.4-16.5-36.9-21.3v-29.8c0-3.4-2.4-6.4-5.7-7.1-22.3-5-45-4.8-66.2 0-3.3.7-5.7 3.7-5.7 7.1v29.8c-13.5 4.8-26 12-36.9 21.3l-25.8-14.9c-2.9-1.7-6.7-1.1-9 1.4-15 16.2-26.5 35.8-33.2 57.4-1 3.3.4 6.8 3.3 8.5l25.8 14.9c-2.6 14.1-2.6 28.5 0 42.6l-25.8 14.9c-3 1.7-4.3 5.2-3.3 8.5 6.7 21.6 18.2 41.1 33.2 57.4 2.3 2.5 6 3.1 9 1.4l25.8-14.9c10.9 9.3 23.4 16.5 36.9 21.3v29.8c0 3.4 2.4 6.4 5.7 7.1 22.3 5 45 4.8 66.2 0 3.3-.7 5.7-3.7 5.7-7.1v-29.8c13.5-4.8 26-12 36.9-21.3l25.8 14.9c2.9 1.7 6.7 1.1 9-1.4 15-16.2 26.5-35.8 33.2-57.4 1-3.3-.4-6.8-3.3-8.5l-25.8-14.9zM496 368.5c-26.8 0-48.5-21.8-48.5-48.5s21.8-48.5 48.5-48.5 48.5 21.8 48.5 48.5-21.7 48.5-48.5 48.5zM96 224c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm224 32c1.9 0 3.7-.5 5.6-.6 8.3-21.7 20.5-42.1 36.3-59.2 7.4-8 17.9-12.6 28.9-12.6 6.9 0 13.7 1.8 19.6 5.3l7.9 4.6c.8-.5 1.6-.9 2.4-1.4 7-14.6 11.2-30.8 11.2-48 0-61.9-50.1-112-112-112S208 82.1 208 144c0 61.9 50.1 112 112 112zm105.2 194.5c-2.3-1.2-4.6-2.6-6.8-3.9-8.2 4.8-15.3 9.8-27.5 9.8-10.9 0-21.4-4.6-28.9-12.6-18.3-19.8-32.3-43.9-40.2-69.6-10.7-34.5 24.9-49.7 25.8-50.3-.1-2.6-.1-5.2 0-7.8l-7.9-4.6c-3.8-2.2-7-5-9.8-8.1-3.3.2-6.5.6-9.8.6-24.6 0-47.6-6-68.5-16h-8.3C179.6 288 128 339.6 128 403.2V432c0 26.5 21.5 48 48 48h255.4c-3.7-6-6.2-12.8-6.2-20.3v-9.2zM173.1 274.6C161.5 263.1 145.6 256 128 256H64c-35.3 0-64 28.7-64 64v32c0 17.7 14.3 32 32 32h65.9c6.3-47.4 34.9-87.3 75.2-109.4z'%3E%3C/path%3E%3C/svg%3E");margin-right:5px}#members-cp-side .postbox-header{border-bottom:none !important}#members-cp-side .handle-actions .handle-order-higher,#members-cp-side .handle-actions .handle-order-lower{display:none}#members-cp-side .handle-actions .handlediv{position:absolute;right:5px}.members-upgrade-header{text-align:center;padding:5px}.members-upgrade-header a{color:#f59431}.memberpress-paid-memberships{background-color:#f5f5f5;padding:50px 10px;text-align:center}.memberpress-paid-memberships a{background-color:#0e4598;display:inline-block;padding:10px 20px;border-radius:300px;color:#fff;text-decoration:none;margin-top:20px}#members-cp-side .members-tabs{position:relative}#members-cp-side .members-tab-nav{background-color:transparent;margin-bottom:20px;border-right:none !important}#members-cp-side .members-tab-nav .members-tab-title{width:33.333%;height:50px;border-right:none !important}#members-cp-side .members-tab-nav .members-tab-title a{border:0}#members-cp-side .members-tab-content h3{font-weight:bold;font-size:15px;margin-top:0;color:#000;margin-bottom:10px}#members-cp-side .members-tab-content .memberpress-paid-memberships{text-align:left;padding:20px}#members-cp-side .members-tab-content .memberpress-paid-memberships a{display:block;text-align:center}#members-cp-side .members-tabs .members-tab-nav li a,#members-cp-side .members-tabs .members-tab-nav li[aria-selected="false"] a i{color:#555}#members-cp-side .members-tabs .members-tab-nav li a svg,#members-cp-side .members-tabs .members-tab-nav li[aria-selected="false"] a svg{fill:#555}#members-cp-side .members-tabs .members-tab-nav li[aria-selected="true"] a{background-color:transparent;border-bottom:2px solid #3582ae}#members-cp-side .members-tabs .members-tab-nav li[aria-selected="true"] a i{color:#3582ae}#members-cp-side .members-tabs .members-tab-nav li[aria-selected="true"] a svg{fill:#3582ae}.members-tab-title svg,.members-tab-title[aria-selected="false"] svg{fill:#0073aa}.members-tab-title[aria-selected="true"] svg{fill:#555}#wpcontent #members-admin-header{margin-left:-20px;padding:0;padding-left:22px;background-color:#f9f9f9;background-repeat:repeat;background-size:1200px 75px;min-height:36px;position:relative}#wpcontent #members-admin-header img.members-logo{height:90px}.members-upgrade-header #close-members-upgrade-header{position:absolute;right:20px;top:3px}.members-upgrade-header #close-members-upgrade-header:hover{cursor:pointer}.memberpress-welcome-panel.welcome-panel{margin-top:0;padding:40px 20px;background:#fff}.memberpress-welcome-panel.welcome-panel:before{background:0}.memberpress-welcome-panel.welcome-panel .about-description{margin:20px 0}.memberpress-welcome-panel.welcome-panel-content{margin:0}.memberpress-welcome-panel.welcome-panel-content .mp-logo-wrap>a{display:block}@media screen and (min-width:870px){.members_page_members-settings .members-short-p{max-width:612px;margin-left:auto;margin-right:auto}.members_page_members-settings .welcome-panel-content{text-align:center}}.members_page_members-settings .welcome-panel .button.button-hero{margin-left:auto;margin-right:auto}.members_page_members-settings .members-svg-wrap{display:inline-block;margin:0 auto 20px}@media screen and (max-width:870px){.members_page_members-settings .welcome-panel{padding:20px}.members_page_members-settings .members-svg-wrap{float:left;margin-right:28px}.admin_page_members-settings.rtl .members-svg-wrap{float:right;margin-right:0;margin-left:28px}}.members_page_members-settings .members-svg-link{display:table-cell;text-align:center;width:128px;height:128px;background:#363b3f;color:#fff;padding:24px 16px 16px;border-radius:50%;-webkit-box-sizing:border-box;box-sizing:border-box;border:4px solid #fff;-webkit-box-shadow:0 0 0 4px #363b3f;box-shadow:0 0 0 4px #363b3f}.members_page_members-settings .members-svg-link svg{max-width:84px;max-height:64px;width:auto;height:auto}.members-addons{display:grid;grid-template-columns:1fr 1fr;grid-row-gap:20px;grid-column-gap:20px}.members-addons .plugin-card{margin:0}.members-addons .plugin-card-top{width:100%}.members-addon{width:100%;position:relative;float:none;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.members-addon .desc{margin-bottom:80px}.addon-activate{text-align:center;border:1px solid #ddd;border-radius:3px;padding:5px 10px 10px;display:inline-block;width:100px;position:absolute;right:20px;bottom:20px}.activate-toggle:hover{cursor:pointer}.activate-toggle svg{max-width:20px;position:relative;top:5px}.activate-toggle svg{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.activate-toggle svg.active{-webkit-transform:rotate(0);transform:rotate(0)}.activate-toggle svg path{fill:#ccc}.activate-toggle svg.active path{fill:#8cbd5a}.activate-toggle.processing{cursor:not-allowed;pointer-events:none;opacity:.5}.activate-toggle .action-label{display:inline-block;width:50px;text-align:left}.mepr_dummy_txns{-webkit-filter:blur(3px);filter:blur(3px);position:absolute;top:0;left:0;width:100%;z-index:5;pointer-events:none}.mepr_dummy_txns::after{background-color:rgba(0,0,0,.2);position:absolute;top:0;left:0;width:100%;height:100%;z-index:6}.mepr-upgrade-table{position:relative}.mepr-upgrade-table .mepr-upgrade{position:relative;top:100px;z-index:10;background:rgba(0,0,0,.2);width:100%;height:100%;max-width:600px;margin:0 auto;-webkit-box-shadow:0 0 30px #ccc;box-shadow:0 0 30px #ccc}.mepr-upgrade-content{background-color:#fff;padding:20px;text-align:center}.mepr-upgrade-content h2{font-size:24px}.mepr-upgrade-content h4{font-size:18px}.mepr-upgrade-content .features{display:grid;grid-template-columns:1fr 1fr;grid-column-gap:30px;grid-row-gap:10px;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;text-align:left;padding:10px}.features li:before{content:"\f147";font-family:dashicons;color:green;font-size:20px;position:relative;top:4px;margin-right:10px}.mepr-upgrade-cta{text-align:center;background-color:#f2f2f2;padding:20px}.mepr-upgrade-cta .mepr-cta-button{display:block;max-width:300px;margin:0 auto 20px;background-color:#fd9c27;color:#fff;padding:15px;font-size:18px;font-weight:bold;text-decoration:none;border-radius:300px}.members-plugin-card.plugin-card:nth-child(even){margin-right:inherit}.members-plugin-card.plugin-card:nth-child(odd){clear:none;margin-left:inherit}.members-plugin-card.plugin-card .plugin-card-top{min-height:0;padding:30px 20px}.members-plugin-card.plugin-card .plugin-icon{top:30px}.members-plugin-card.plugin-card .plugin-card-bottom .column-status{font-weight:bold}.members-plugin-card.plugin-card .plugin-card-bottom .column-status .active{color:#8cbd5a}.members-plugin-card.plugin-card .plugin-card-bottom .column-status .inactive{color:red}.members-plugin-card.plugin-card .plugin-icon{width:64px;height:auto}.plugin-icon-small{width:32px;height:auto}.members-plugin-card.plugin-card .name,.members-plugin-card.plugin-card .desc{margin-right:0;margin-left:84px}.members-addons .plugin-card .name,.members-addons .plugin-card .desc p{margin-right:0}@media screen and (max-width:1100px){.members-addons{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}}@media screen and (max-width:600px){.members_page_members-settings .members-svg-link{width:64px;height:64px}.members_page_members-settings .members-svg-link svg{position:absolute;top:14px;left:15px;max-width:30px;max-height:30px}.members_page_members-settings .plugin-card-members-edd-integration .members-svg-link svg,.members_page_members-settings .plugin-card-members-acf-integration .members-svg-link svg,.members_page_members-settings .plugin-card-members-givewp-integration .members-svg-link svg,.members_page_members-settings .plugin-card-members-meta-box-integration .members-svg-link svg,.members_page_members-settings .plugin-card-members-woocommerce-integration .members-svg-link svg{top:10px;left:8px;max-width:40px;max-height:40px}.members_page_members-settings .plugin-card-members-block-permissions .members-svg-link svg,.members_page_members-settings .plugin-card-members-role-hierarchy .members-svg-link svg{left:14px}.members-addons .plugin-card .desc>p,.members-addons .plugin-card .name{margin-left:84px}}.memberpress-about .welcome-panel-column-container{display:-webkit-box;display:-ms-flexbox;display:flex}.memberpress-about .mp-logo{max-width:256px;margin:50px}.members-about-addons{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-column-gap:20px}.members-about-addons .members-plugin-card{margin:0;width:100%}.members-about-addons .members-plugin-card .name h3 a{text-decoration:none}.members-about-addons .members-plugin-card .plugin-card-bottom{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}@media only screen and (max-width:1099px){.members-about-addons{grid-template-columns:1fr;grid-row-gap:20px}}@media screen and (min-width:1100px) and (max-width:1600px){.members-about-addons .members-plugin-card{float:none;width:auto;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.members-plugin-card.plugin-card .desc{margin-left:0;margin-top:50px}.members-plugin-card.plugin-card .desc p{margin-left:0;margin-right:0}.members-plugin-card.plugin-card .plugin-card-bottom .column-status{float:none}.members-plugin-card.plugin-card .plugin-card-bottom .column-updated{float:none;width:auto}}@media screen and (max-width:1200px){.welcome-panel .welcome-panel-column-container{-webkit-box-orient:vertical;-webkit-box-direction:reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse;gap:0;padding:0}.memberpress-about .mp-logo{margin:0 0 20px}}.members-plugin-card.plugin-card .desc p{margin-left:0;margin-right:0}@media only screen and (min-width:783px){.members_page_roles .column-users,.members_page_roles .column-granted_caps,.members_page_roles .column-denied_caps{width:100px;text-align:center}}.members-title-div #titlewrap input{padding:0 8px;font-size:1.7em;line-height:normal;height:1.7em;width:100%;outline:0;margin:0 0 3px;background-color:#fff}.members-title-div input[name="role"]{font-size:13px;height:22px;margin:0;width:16em}#tabcapsdiv{margin-top:1em}#tabcapsdiv>.hndle{padding:10px;border-bottom:1px solid #eee}#tabcapsdiv .inside,#members-cp .inside{margin:0;padding:0}.members-cap-tabs,.members-tabs{overflow:hidden;background:#fff;background:-webkit-gradient(linear,left top,right top,from(#fafafa),color-stop(20%,#fafafa),color-stop(20%,#fff),to(#fff));background:linear-gradient(90deg,#fafafa 0,#fafafa 20%,#fff 20%,#fff 100%)}@media only screen and (max-width:782px){.members-cap-tabs,.members-tabs{background:linear-gradient(90deg,#fafafa 0,#fafafa 48px,#fff 48px,#fff 100%)}}.members-cap-tabs .members-tab-nav,.members-tabs .members-tab-nav{position:relative;float:left;list-style:none;width:20%;line-height:1em;margin:0 0 -1px 0;padding:0;background-color:#fafafa;border-right:1px solid #eee;-webkit-box-sizing:border-box;box-sizing:border-box}.members-cap-tabs .members-tab-nav li,.members-tabs .members-tab-nav li{display:block;position:relative;margin:0;padding:0;line-height:20px}.members-cap-tabs .members-tab-nav li a,.members-tabs .members-tab-nav li a{display:block;margin:0;padding:10px;line-height:20px !important;text-decoration:none;border-bottom:1px solid #eee;-webkit-box-shadow:none;box-shadow:none}.members-cap-tabs .members-tab-nav li a .dashicons,.members-tabs .members-tab-nav li a .dashicons{line-height:20px;margin-right:3px}.members-cap-tabs .members-tab-nav li[aria-selected="true"] a,.members-tabs .members-tab-nav li[aria-selected="true"] a{position:relative;font-weight:bold;color:#555;background-color:#e0e0e0}@media only screen and (max-width:782px){.members-cap-tabs .members-tab-nav,.members-tabs .members-tab-nav{width:48px}.members-cap-tabs .members-tab-nav li a .dashicons,.members-tabs .members-tab-nav li a .dashicons{width:24px;height:24px;font-size:24px;line-height:24px}.members-tab-nav li .dashicons::before,.members-tab-nav li .dashicons::before{width:24px;height:24px}.members-tab-nav li .label{overflow:hidden;position:absolute;top:-1000em;left:-1000em;width:1px;height:1px}}.members-cap-tabs .members-tab-wrap,.members-tabs .members-tab-wrap{float:left;width:80%;margin-left:-1px}@media only screen and (max-width:782px){.members-cap-tabs .members-tab-wrap,.members-tabs .members-tab-wrap{width:calc(100% - 48px)}}#members-cp .members-tab-content{padding:10px;border-left:1px solid #e5e5e5}.members-roles-select th,.members-roles-select td{width:190px;overflow:hidden}.members-roles-select .check-all-th{text-align:center}.members-roles-select .check-all-th label{padding-left:5px}@media only screen and (min-width:850px){#side-sortables .members-tabs{background:#fff}#side-sortables .members-tabs .members-tab-wrap{width:100%}#side-sortables .members-tabs .members-tab-nav{display:table;width:100%}#side-sortables .members-tabs .members-tab-nav li{display:table-cell;text-align:center;border-right:1px solid #eee}#side-sortables .members-tabs .members-tab-nav li:last-of-type{border-right:0}#side-sortables .members-tabs .members-tab-nav li a{padding:10px 0}#side-sortables .members-tabs .members-tab-nav .dashicons{width:24px;height:24px;font-size:24px;line-height:24px}#side-sortables .members-tabs .members-tab-nav .dashicons::before{width:24px;height:24px}#side-sortables .members-tabs .members-tab-nav .label{overflow:hidden;position:absolute;top:-1000em;left:-1000em;width:1px;height:1px}}.members-tabs .members-tabs-label{display:block !important;font-weight:bold;display:inline-block;margin-bottom:4px}.members-tabs .butterbean-control-checkbox .members-tabs-label{display:inline !important}.members-tabs .members-tabs-description{display:block;font-style:italic;margin-top:4px}.members-tabs .members-tabs-label+.members-tabs-description{margin-top:0;margin-bottom:4px}#tabcapsdiv table{border-right:0;border-top:0;border-bottom:0}#tabcapsdiv table td,#tabcapsdiv table th{padding:10px;padding-bottom:10px;border-bottom:1px solid #eee;font-size:13px;line-height:20px}#tabcapsdiv table td{padding:9px}#tabcapsdiv tbody tr:last-of-type td{border-bottom:0}#tabcapsdiv tfoot th{border-color:#eee}@media only screen and (max-width:782px){#tabcapsdiv table td,#tabcapsdiv table th{line-height:24px}}.members-roles-select .column-grant,.members-roles-select .column-deny{width:70px !important;text-align:left;display:table-cell !important;clear:none !important}.members-roles-select thead th,.members-roles-select tfoot th{padding:9px !important}.members-roles-select .column-grant input,.members-roles-select .column-deny input{margin:0 5px 0 0;vertical-align:middle}.members-roles-select tbody tr:nth-child(even){background:#f2f2f2}.members-cap-tabs button{display:inline;margin:-4px;line-height:inherit;padding:4px 8px;border:1px solid transparent;background:transparent;border-radius:0;outline:0;-webkit-transition:all .25s ease-out;transition:all .25s ease-out}.members-cap-tabs button:hover,.members-cap-tabs button:focus{border-color:#eee;background:#fafafa;cursor:pointer}.members-cap-tabs button:active{color:#0073aa;border-color:#0073aa}.members-cap-tabs button+.dashicons{display:none;margin-top:1px;margin-bottom:-1px;line-height:inherit}.members-cap-tabs button:hover+.dashicons,.members-cap-tabs button:focus+.dashicons{display:inline-block}.members-tab-content .members-highlight{background-color:rgba(0,115,170,0.05)}.members-tab-content tbody{-webkit-transition:all 2s ease-in-out;transition:all 2s ease-in-out}.members-cp-role-list-wrap{overflow:auto;min-height:42px;max-height:200px;padding:0 .9em;border:solid 1px #dfdfdf;background-color:#fdfdfd}#wpbody-content{padding-bottom:200px}.members-footer-promotion{text-align:center;font-weight:400;font-size:13px;line-height:16px;color:#787c82;padding:20px 0 30px 0;margin-bottom:20px}.members-footer-promotion p{font-weight:600}.members-footer-promotion-links,.members-footer-promotion-social{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.members-footer-promotion-links{margin:9px 0 0}.members-footer-promotion-links span{color:#c3c4c7;padding:0 7px}.members-footer-promotion-social{margin:10px 0 0 0;gap:10px}.members-footer-promotion-social li{margin-bottom:0}.members-footer-promotion-social a{display:block;height:16px}.members_page_members-settings.rtl{.addon-activate{left:20px;right:unset}.members-addons .plugin-card{.name,.desc p{margin-left:0;margin-right:148px}}}.button.button-warning{background:#dc3232;border-color:#dc3232;color:#fff}.button.button-warning:hover,.button.button-warning:focus{background:#c92424;border-color:#c92424;color:#fff}.members-reset-spinner{float:none;margin-top:0;vertical-align:middle}.members-admin-menus-wrap{max-width:1400px}.members-admin-menus-toolbar{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;margin-bottom:16px}.members-am-copy-wrap label{margin-right:8px}.members-am-chips{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:8px;margin-bottom:12px}.members-am-chip{border-radius:999px;padding:4px 12px;border:1px solid #c3c4c7;background:#f6f7f7;cursor:pointer}.members-am-chip.is-active{background:#2271b1;border-color:#2271b1;color:#fff}.members-am-carousel-wrap{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;gap:8px;margin-bottom:8px}.members-am-carousel-prev,.members-am-carousel-next{-ms-flex-item-align:center;align-self:center;width:36px;height:36px;border-radius:50%;border:1px solid #c3c4c7;background:#fff;cursor:pointer}.members-am-columns{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-ms-flex:1;flex:1;gap:12px;min-height:320px;overflow:hidden}.members-am-column{-webkit-box-flex:1;-ms-flex:1;flex:1;min-width:0;background:#1d2327;border-radius:4px;color:#f0f0f1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.members-am-user-column{border:2px dashed #8c8f94}.members-am-sidebar-head{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:8px 10px;background:#2c3338;border-radius:4px 4px 0 0;font-weight:600;font-size:12px;text-transform:uppercase;letter-spacing:.04em}.members-am-col-move button{margin-left:4px;padding:0 6px;min-height:24px;line-height:22px;font-size:11px}.members-am-sidebar-list{padding:6px 0 12px;overflow-y:auto;max-height:480px}.members-am-item{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:6px 10px 6px 8px;cursor:pointer;border-left:3px solid transparent;font-size:13px}.members-am-item.is-sub{padding-left:22px;font-size:12px;opacity:.95}.members-am-item.is-sub-deep{padding-left:36px}.members-am-sidebar-list .members-am-item{cursor:-webkit-grab;cursor:grab}.members-am-sidebar-list .members-am-item:active{cursor:-webkit-grabbing;cursor:grabbing}.members-am-sort-placeholder{-webkit-box-sizing:border-box;box-sizing:border-box;min-height:36px;margin:2px 0;background:rgba(34,113,177,0.08);border:1px dashed #2271b1;border-radius:2px}.members-am-item.is-hidden{opacity:.18}.members-am-item.is-no-cap{opacity:.35}.members-am-item.is-no-cap.is-hidden{opacity:.15}.members-am-item.is-selected{border-left-color:#2271b1;background:rgba(34,113,177,0.15)}.members-am-item-main{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;min-width:0}.members-am-item-main .dashicons{font-size:18px;width:18px;height:18px}.members-am-item-label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.members-am-item-actions{display:none;gap:2px}.members-am-item:hover .members-am-item-actions{display:-webkit-box;display:-ms-flexbox;display:flex}.members-am-item-actions button{min-height:22px;padding:0 4px;line-height:20px;font-size:11px}.members-am-sep{text-align:center;opacity:.35;font-size:11px;padding:4px 0}.members-am-carousel-dots{text-align:center;margin-bottom:4px}.members-am-dot{width:8px;height:8px;border-radius:50%;border:0;margin:0 4px;padding:0;background:#c3c4c7;cursor:pointer}.members-am-dot.is-active{background:#2271b1}.members-am-carousel-status{text-align:center;color:#646970;font-size:12px;margin-top:0}.members-am-badge{font-size:9px;text-transform:uppercase;padding:1px 4px;border-radius:2px;margin-right:4px;vertical-align:middle}.members-am-badge-new{background:#2271b1;color:#fff}.members-am-badge-edit{background:#dba617;color:#1d2327}.members-am-badge-nocap{background:#8c8f94;color:#fff}.members-am-legend{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:16px;margin:0 0 8px;padding:0;font-size:12px;color:#646970}.members-am-legend-item{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:4px}.members-am-edit-panel{margin-top:20px;padding:16px;border:1px solid #c3c4c7;background:#fff;border-radius:4px}.members-am-edit-panel-header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:12px}.members-am-edit-panel-header h2{margin:0;font-size:16px}.members-am-edit-toolbar{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:12px;margin-bottom:12px}.members-am-edit-target-wrap select{margin-left:8px}.members-am-level-actions .button{margin-right:6px}.members-am-demote-wrap{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:6px}.members-am-demote-wrap .members-am-demote-select{min-width:200px;max-width:min(320px,100%)}.members-am-edit-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:16px}.members-am-edit-col label{display:block;font-weight:600;margin-bottom:4px}.members-am-icon-tabs{margin-bottom:8px}.members-am-icon-tabs .button{margin-right:4px;margin-bottom:4px}.members-am-icon-tabs .button.is-active{background:#2271b1;border-color:#2271b1;color:#fff}.members-am-icon-grid{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:4px;max-height:160px;overflow-y:auto;border:1px solid #dcdcde;padding:8px;background:#f6f7f7;margin-bottom:8px}.members-am-icon-pick{width:36px;height:36px;padding:0;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;border:1px solid #c3c4c7;background:#fff;cursor:pointer}.members-am-vis-row{display:block;margin-bottom:6px;font-weight:normal}.members-am-reset-dropdown{position:absolute;z-index:100;background:#fff;border:1px solid #c3c4c7;border-radius:6px;padding:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-shadow:0 4px 12px rgba(0,0,0,0.15);box-shadow:0 4px 12px rgba(0,0,0,0.15);min-width:280px;top:100%;left:0;margin-top:4px;overflow:hidden}.members-am-reset-title{padding:10px 14px;font-weight:600;font-size:13px;border-bottom:1px solid #f0f0f0;color:#1d2327}.members-am-reset-option{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;gap:10px;padding:12px 14px;border:0;background:0;cursor:pointer;text-align:left;width:100%;border-bottom:1px solid #f0f0f0;-webkit-transition:background .15s;transition:background .15s}.members-am-reset-option:last-child{border-bottom:0}.members-am-reset-option:hover{background:#f6f7f7}.members-am-reset-option .dashicons{margin-top:2px;color:#646970}.members-am-reset-option-text{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:2px}.members-am-reset-option-text strong{font-size:13px;color:#1d2327}.members-am-reset-option-text small{font-size:12px;color:#646970}.members-am-reset-danger:hover{background:#fcf0f1}.members-am-reset-danger .dashicons{color:#d63638}.members-am-reset-danger:hover strong{color:#d63638}@media screen and (max-width:782px){.members-am-columns{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}}.members-am-user-suggestions{position:absolute;z-index:100;background:#fff;border:1px solid #c3c4c7;border-radius:4px;max-height:200px;overflow-y:auto;width:100%;-webkit-box-shadow:0 2px 6px rgba(0,0,0,0.15);box-shadow:0 2px 6px rgba(0,0,0,0.15);top:100%;left:0}.members-am-user-suggestion{padding:8px 12px;cursor:pointer;font-size:13px;border-bottom:1px solid #f0f0f0}.members-am-user-suggestion:hover{background:#f0f6fc}.members-am-user-suggestion:last-child{border-bottom:0}
\ No newline at end of file
diff --git a/js/admin-menus.js b/js/admin-menus.js
index 5b00b6c..ac507ae 100644
--- a/js/admin-menus.js
+++ b/js/admin-menus.js
@@ -844,7 +844,7 @@
var order = getTopOrder(role);
order.forEach(function (tid) {
if (tid.indexOf('sep-') === 0) {
- $ul.append($('
').text('—'));
+ $ul.append($('
').attr('data-sep-id', tid).text('—'));
return;
}
var node = findNode(tid);
@@ -865,6 +865,7 @@
var label = ov.label || node.title || itemId;
var $row = $('
')
.attr('data-id', itemId)
+ .attr('data-menu-parent', parentMenuId || '')
.toggleClass('is-hidden', hidden)
.toggleClass('is-no-cap', noCap)
.toggleClass('is-selected', state.selectedId === itemId)
@@ -937,7 +938,7 @@
if (selected) cls += ' is-selected';
if (noCap) cls += ' is-no-cap';
- var $row = $('
').addClass(cls).attr('data-id', node.id);
+ var $row = $('
').addClass(cls).attr('data-id', node.id).attr('data-menu-parent', parentMenuId || '');
var $main = $('
');
if (depth === 0) {
@@ -999,6 +1000,110 @@
return $row;
}
+ function submenuSlugFromItemId(itemId) {
+ return itemId.indexOf('::') !== -1 ? itemId.split('::').pop() : itemId;
+ }
+
+ function serializeRoleColumnFromDom($list, role) {
+ var topOrder = [];
+ var submenuOrder = {};
+ $list.children().each(function () {
+ var $el = $(this);
+ if ($el.hasClass('members-am-sep')) {
+ var sid = $el.attr('data-sep-id');
+ if (sid) {
+ topOrder.push(sid);
+ }
+ return;
+ }
+ if (!$el.hasClass('members-am-item')) {
+ return;
+ }
+ var id = $el.attr('data-id');
+ if (!id) {
+ return;
+ }
+ var parent = $el.attr('data-menu-parent');
+ if (parent === undefined || parent === '') {
+ topOrder.push(id);
+ } else {
+ if (!submenuOrder[parent]) {
+ submenuOrder[parent] = [];
+ }
+ submenuOrder[parent].push(submenuSlugFromItemId(id));
+ }
+ });
+ var rc = getRoleConfig(role);
+ rc.order = topOrder;
+ rc.submenu_order = submenuOrder;
+ }
+
+ function serializeUserColumnFromDom($list, uid) {
+ var topOrder = [];
+ var submenuOrder = {};
+ $list.children().each(function () {
+ var $el = $(this);
+ if ($el.hasClass('members-am-sep')) {
+ var sid = $el.attr('data-sep-id');
+ if (sid) {
+ topOrder.push(sid);
+ }
+ return;
+ }
+ if (!$el.hasClass('members-am-item')) {
+ return;
+ }
+ var id = $el.attr('data-id');
+ if (!id) {
+ return;
+ }
+ var parent = $el.attr('data-menu-parent');
+ if (parent === undefined || parent === '') {
+ topOrder.push(id);
+ } else {
+ if (!submenuOrder[parent]) {
+ submenuOrder[parent] = [];
+ }
+ submenuOrder[parent].push(submenuSlugFromItemId(id));
+ }
+ });
+ var ucfg = getUserConfig(uid);
+ ucfg.order = topOrder;
+ ucfg.submenu_order = submenuOrder;
+ }
+
+ function initMembersAmSortables() {
+ if (!$.fn.sortable) {
+ return;
+ }
+ $('#members-am-columns .members-am-sidebar-list').each(function () {
+ var $list = $(this);
+ if ($list.data('ui-sortable')) {
+ $list.sortable('destroy');
+ }
+ var $col = $list.closest('.members-am-column');
+ var role = $col.data('role');
+ var uid = $col.data('user');
+ $list.sortable({
+ axis: 'y',
+ distance: 6,
+ items: '> .members-am-item, > .members-am-sep',
+ cancel: '.members-am-item-actions button',
+ placeholder: 'members-am-sort-placeholder',
+ forcePlaceholderSize: true,
+ tolerance: 'pointer',
+ update: function () {
+ if (uid) {
+ serializeUserColumnFromDom($list, uid);
+ } else if (role) {
+ serializeRoleColumnFromDom($list, role);
+ }
+ openEditPanel();
+ }
+ });
+ });
+ }
+
function renderColumns() {
var $cols = $('#members-am-columns');
// Save scroll positions before re-render.
@@ -1046,7 +1151,7 @@
topOrder.forEach(function (nodeId) {
if (nodeId.indexOf('sep-') === 0) {
- $list.append($('
').text('——'));
+ $list.append($('
').attr('data-sep-id', nodeId).text('——'));
return;
}
var node = findNode(nodeId);
@@ -1070,6 +1175,7 @@
}
renderCarouselStatus();
+ initMembersAmSortables();
}
function renderCopySelect() {
diff --git a/js/admin-menus.min.js b/js/admin-menus.min.js
index ff825cb..ed2f7ca 100644
--- a/js/admin-menus.min.js
+++ b/js/admin-menus.min.js
@@ -1 +1 @@
-!function(v){"use strict";var g={settings:v.extend(!0,{},membersAdminMenus.settings),tree:[],activeRoleSlugs:[],carouselPage:0,columnsPerPage:3,selectedId:null,iconTab:"dashicons",previewUserId:null,previewUserRoles:[],userSuggestions:[],mediaFrame:null,allowUnload:!1,syncScroll:function(){try{return"0"!==localStorage.getItem("members_am_sync_scroll")}catch(e){return!0}}()},a="";function n(){return function r(s){if(null===s)return"null";var e=typeof s;return"string"==e||"number"==e||"boolean"==e?JSON.stringify(s):"undefined"==e?"null":Array.isArray(s)?"["+s.map(function(e){return r(e)}).join(",")+"]":"object"!=e?JSON.stringify(s):"{"+Object.keys(s).sort().map(function(e){return JSON.stringify(e)+":"+r(s[e])}).join(",")+"}"}(g.settings)}function i(){if(!g.allowUnload&&n()!==a)return membersAdminMenus.i18n&&membersAdminMenus.i18n.unsavedChanges||""}var e=["dashicons-menu","dashicons-admin-dashboard","dashicons-admin-post","dashicons-admin-page","dashicons-admin-media","dashicons-admin-comments","dashicons-admin-appearance","dashicons-admin-plugins","dashicons-admin-users","dashicons-admin-tools","dashicons-admin-settings","dashicons-admin-generic","dashicons-edit","dashicons-plus","dashicons-chart-bar","dashicons-cart","dashicons-products","dashicons-email","dashicons-groups","dashicons-heart","dashicons-star-filled","dashicons-smiley","dashicons-info","dashicons-lock","dashicons-unlock","dashicons-visibility","dashicons-hidden","dashicons-arrow-up","dashicons-arrow-down","dashicons-admin-network","dashicons-performance"],r=["fa-solid fa-house","fa-solid fa-user","fa-solid fa-gear","fa-solid fa-file","fa-solid fa-image","fa-solid fa-cart-shopping","fa-solid fa-chart-line","fa-solid fa-envelope","fa-solid fa-book","fa-solid fa-link","fa-solid fa-bell","fa-solid fa-star","fa-solid fa-heart","fa-solid fa-lock","fa-solid fa-unlock","fa-solid fa-pen","fa-solid fa-trash","fa-solid fa-plus","fa-solid fa-minus"],t="members_am_view_state";function o(){try{localStorage.setItem(t,JSON.stringify({activeRoleSlugs:g.activeRoleSlugs,carouselPage:g.carouselPage}))}catch(e){}}function d(){return membersAdminMenus.roles||[]}function m(){g.settings._meta&&!Array.isArray(g.settings._meta)||(g.settings._meta={version:3,admin_editable:!1}),g.settings.roles&&!Array.isArray(g.settings.roles)||(g.settings.roles={}),g.settings.users&&!Array.isArray(g.settings.users)||(g.settings.users={}),Array.isArray(g.settings.custom_items)||(g.settings.custom_items=[]),g.settings.capabilities&&!Array.isArray(g.settings.capabilities)||(g.settings.capabilities={})}function h(e){m(),g.settings.roles[e]||(g.settings.roles[e]={hidden:[],order:[],submenu_order:{},overrides:{}});var r=g.settings.roles[e];return r.hidden&&Array.isArray(r.hidden)||(r.hidden=[]),r.order&&Array.isArray(r.order)||(r.order=[]),r.submenu_order&&!Array.isArray(r.submenu_order)||(r.submenu_order={}),r.overrides&&!Array.isArray(r.overrides)||(r.overrides={}),r}function _(e){m(),g.settings.users[e]||(g.settings.users[e]={});var r=g.settings.users[e];return r.hidden&&Array.isArray(r.hidden)||(r.hidden=[]),r.order&&Array.isArray(r.order)||(r.order=[]),r.overrides&&!Array.isArray(r.overrides)||(r.overrides={}),r.submenu_order&&!Array.isArray(r.submenu_order)||(r.submenu_order={}),r}function c(r){var e=_(r);return(e.order&&e.order.length?e.order.slice():w()).filter(function(e){return 0===e.indexOf("sep-")||!!b(e)&&!function(e,r){if(!r||-1!==r.indexOf("::"))return;var s=_(e),a=s.overrides&&s.overrides[r]||{};return a.parent&&"__promote__"!==a.parent}(r,e)})}function l(e,r,s,a){var n,i=_(e),t=i.overrides&&i.overrides[r]||{},o=s;!o&&t.parent&&"__promote__"!==t.parent&&(o=t.parent);var m,l,d,c,u=-1!==r.indexOf("::")?r.split("::").pop():r,p=(n=o?(i.submenu_order[o]||(i.submenu_order[o]=(m=e,d=k(l=o),c=_(m),g.tree.forEach(function(e){e&&e.id&&-1===e.id.indexOf("::")&&(c.overrides&&c.overrides[e.id]||{}).parent===l&&-1===d.indexOf(e.id)&&d.push(e.id)}),d)),i.submenu_order[o]):(i.order.length||(i.order=w()),i.order)).indexOf(u);if(-1!==p){var f=p+a;f<0||f>=n.length||(n.splice(p,1),n.splice(f,0,o?u:r))}}function u(e){var r=e.id||"c";return"members-am-"+String(r).replace(/[^a-z0-9_-]/gi,"-").toLowerCase()}function p(e){return!!e&&0===(-1!==e.indexOf("::")?e.split("::").pop():e).indexOf("members-am-")}function f(){var a=v.extend(!0,[],membersAdminMenus.menuTree||[]),n={};return a.forEach(function(e){n[e.id]=!0}),(g.settings.custom_items||[]).forEach(function(e){if(e&&e.id){var r=u(e);if(n[r]){for(var s=0;sn&&(g.carouselPage=n))}}g.activeRoleSlugs=r.filter(function(e){return"administrator"!==e||s}),g.activeRoleSlugs.length||(g.activeRoleSlugs=["subscriber"])}function J(){var a=v("#members-am-role-chips").empty();d().forEach(function(e){if("administrator"!==e.slug||g.settings._meta.admin_editable){var r=-1!==g.activeRoleSlugs.indexOf(e.slug),s=v(' ').text(e.label).attr("data-role",e.slug).toggleClass("is-active",r);a.append(s)}})}function j(i,t,e,o,m){(function(e,r,s,a){a=a||0;var n=r.id,i=R(e,n),t=!P(e,r.cap),o=h(e).overrides[n]||{},m=o.label||r.title||n,l=v('
').attr("data-id",n).toggleClass("is-hidden",i).toggleClass("is-no-cap",t).toggleClass("is-selected",g.selectedId===n).toggleClass("is-sub",0 ');if(0===a){var c=o.icon||r.icon,u=M(c,o.icon_type||r.icon_type);if("fontawesome"===u&&c)d.append(v(' '));else if("svg"!==u&&"image"!==u&&"custom"!==u||!c){var p=c&&0===c.indexOf("dashicons-")?c:"dashicons-admin-generic";d.append(v(' '))}else d.append(v(" ").attr("src",c).css({width:"20px",height:"20px",display:"inline-block",verticalAlign:"middle",objectFit:"contain",filter:"none"}))}r.custom&&d.append(v('custom '));o.label&&d.append(v('edit '));if(d.append(v(' ').text(m)),o.badge){var f=o.badge_bg||"#d63638";d.append(v(' ').text(o.badge).css({backgroundColor:f,color:"#fff",fontSize:"9px",padding:"1px 5px",borderRadius:"2px",marginLeft:"4px",whiteSpace:"nowrap"}))}t&&d.append(v(' Roles.\">🔒 no access "));l.append(d),o.color_bg&&l.css("background-color",o.color_bg);o.color_text&&l.find(".members-am-item-label").css("color",o.color_text);o.color_icon&&(l.find(".dashicons").css("color",o.color_icon),l.find(".members-am-fa-icon i").css("color",o.color_icon),l.find("img").css("filter","none"));var b=v('
');b.append(v(' ').text("◉"),v(' ').text("↑"),v(' ').text("↓")),l.append(b),s.append(l)})(i,t,o,m=m||0),t.children&&t.children.length&&A(i,t.id).forEach(function(e){var r,s,a,n=(r=i,s=t.id,b(I(s,a=e))||(-1===a.indexOf("::")&&(h(r).overrides[a]||{}).parent===s?b(a):null));n&&"__promote__"!==(h(i).overrides[n.id]||{}).parent&&j(i,n,t.id,o,m+1)})}function L(s,a,e,n,i,t){t=t||0,i.append(function(r,e,s,a){a=a||0;var n=s.overrides&&s.overrides[r.id]||{},i=n.label||r.title,t=function(e,r){var s=_(e);if(-1!==s.hidden.indexOf(r))return!0;var a=y(r,e);return!(!a||-1===s.hidden.indexOf(a))}(e,r.id),o=!function(e){if(!e||"read"===e)return 1;for(var r=g.previewUserRoles||[],s=0;s").addClass(l).attr("data-id",r.id),c=v('
');if(0===a){var u=n.icon||r.icon,p=M(u,n.icon_type||r.icon_type);"fontawesome"===p&&u?c.append(v(' ')):"svg"!==p&&"image"!==p&&"custom"!==p||!u?u&&0===u.indexOf("dashicons-")?c.append(v(' ')):c.append(v(' ')):c.append(v(" ").attr("src",u).css({width:"20px",height:"20px",display:"inline-block",verticalAlign:"middle",objectFit:"contain",filter:"none"}))}r.custom&&c.append(v('custom '));n.label&&c.append(v('edit '));if(c.append(v(' ').text(i)),n.badge){var f=n.badge_bg||"#d63638";c.append(v(' ').text(n.badge).css({backgroundColor:f,color:"#fff",fontSize:"9px",padding:"1px 5px",borderRadius:"2px",marginLeft:"4px",whiteSpace:"nowrap"}))}o&&c.append(v('🔒 no access "));d.append(c),n.color_bg&&d.css("background-color",n.color_bg);n.color_text&&d.find(".members-am-item-label").css("color",n.color_text);n.color_icon&&(d.find(".dashicons").css("color",n.color_icon),d.find(".members-am-fa-icon i").css("color",n.color_icon));var b=v('
');return b.append(v(' ').text(t?"◯":"◉"),v(' ').text("↑"),v(' ').text("↓")),d.append(b),d.on("click",function(e){v(e.target).closest("button").length||(g.selectedId=r.id,V())}),d}(a,s,n,t)),a.children&&a.children.length&&function(e,r){var s=k(r),a=_(e);g.tree.forEach(function(e){e&&e.id&&-1===e.id.indexOf("::")&&(a.overrides&&a.overrides[e.id]||{}).parent===r&&-1===s.indexOf(e.id)&&s.push(e.id)});var n=a.submenu_order&&a.submenu_order[r];if(!n||!n.length)return s.slice();var i=n.filter(function(e){return-1!==s.indexOf(e)});return s.forEach(function(e){-1===i.indexOf(e)&&i.push(e)}),i}(s,a.id).forEach(function(e){var r=function(e,r,s){var a=b(I(r,s));if(a)return a;if(-1===s.indexOf("::")){var n=_(e);if((n.overrides&&n.overrides[s]||{}).parent===r)return b(s)}return null}(s,a.id,e);r&&"__promote__"!==(n.overrides&&n.overrides[r.id]||{}).parent&&L(s,r,a.id,n,i,t+1)})}function F(){var s=v("#members-am-columns"),a={};s.find(".members-am-column").each(function(){var e=v(this).data("role");if(e){var r=v(this).find(".members-am-sidebar-list");r.length&&(a[e]=r.scrollTop())}}),s.empty();var e=g.carouselPage*g.columnsPerPage;if(g.activeRoleSlugs.slice(e,e+g.columnsPerPage).forEach(function(e){var r=v('
');!function(s,e){e.empty();var r=v(''),a=(d().filter(function(e){return e.slug===s})[0]||{}).label||s;r.append(v('').text(a)),r.append(v(' ').append(v(' ').text("◀"),v(' ').text("▶"))),e.append(r);var n=v('');S(s).forEach(function(e){if(0!==e.indexOf("sep-")){var r=b(e);r&&j(s,r,0,n,0)}else n.append(v('
').text("—"))}),e.append(n)}(e,r),s.append(r),a[e]&&r.find(".members-am-sidebar-list").scrollTop(a[e])}),g.previewUserId){var n=g.previewUserId,r=v('
'),i=v('');i.append(v(" ").text(g.previewUserLabel||"User #"+n)),i.append(v('× ').on("click",function(){g.previewUserId=null,g.previewUserLabel=null,g.previewUserRoles=[],V()})),r.append(i);var t=v(''),o=_(n);c(n).forEach(function(e){if(0!==e.indexOf("sep-")){var r=b(e);r&&L(n,r,0,o,t,0)}else t.append(v('
').text("——"))}),r.append(t),s.append(r)}if(g.syncScroll){var m=s.find(".members-am-sidebar-list"),l=!1;m.on("scroll",function(){if(!l){l=!0;var e=v(this).scrollTop();m.not(this).scrollTop(e),l=!1}})}!function(){var e=Math.max(1,Math.ceil(g.activeRoleSlugs.length/g.columnsPerPage)),r=(Math.min(g.carouselPage+1,e),g.carouselPage*g.columnsPerPage+1),s=Math.min((g.carouselPage+1)*g.columnsPerPage,g.activeRoleSlugs.length);v("#members-am-carousel-status").text(r+"–"+s+" "+membersAdminMenus.i18n.of+" "+g.activeRoleSlugs.length);for(var a=v("#members-am-carousel-dots").empty(),n=0;n ').toggleClass("is-active",n===g.carouselPage))}()}function z(){if(g.selectedId){v("#members-am-edit-panel").removeAttr("hidden");var e=b(g.selectedId),r=C()||{};v("#members-am-edit-title").text(e?e.title:g.selectedId),v("#members-am-edit-label").val(r.label||e&&e.title||"");var s=p(g.selectedId);v("#members-am-edit-url-wrap").toggle(s),v("#members-am-edit-url").attr("placeholder","Override URL (leave empty for default)").val(s&&(r.url||e&&e.url)||"").data("default-url",e&&e.url||""),v("#members-am-icon-type").val(r.icon_type||"dashicon"),v("#members-am-icon-value").val(r.icon||e&&e.icon||"");var a=r.icon||e&&e.icon||"",n=M(a,r.icon_type||e&&e.icon_type||"");"image"!==n&&"custom"!==n&&"svg"!==n||!a?v("#members-am-icon-preview").hide():v("#members-am-icon-preview").show().attr("src",a),v("#members-am-color-bg").val(r.color_bg||""),v("#members-am-color-text").val(r.color_text||""),v("#members-am-color-icon").val(r.color_icon||""),v("#members-am-badge-text").val(r.badge||""),v("#members-am-badge-bg").val(r.badge_bg||""),v("#members-am-item-cap").attr("placeholder",e&&e.cap?e.cap+" (default)":"").val(g.settings.capabilities[g.selectedId]||"");var i=e&&e.custom;v("#members-am-remove-custom").toggle(!!i),v("#members-am-visibility-toggles").empty();var t=e&&e.cap||"read";d().forEach(function(e){if("administrator"!==e.slug||g.settings._meta.admin_editable){var r=R(e.slug,g.selectedId),s=P(e.slug,t),a=v(' ').attr("data-role",e.slug).prop("checked",!r&&s);s||a.prop("disabled",!0);var n=v(' ').append(a,v(" ").text(e.label));s||(n.append(v(" ").text(" — no capability").css({color:"#999",fontStyle:"italic",marginLeft:"4px"})),n.css("opacity","0.5")),v("#members-am-visibility-toggles").append(n)}}),v(".members-am-color").each(function(){v(this).data("wpWpColorPicker")&&v(this).wpColorPicker("destroy")}),v(".members-am-color").wpColorPicker({change:function(e,r){setTimeout(function(){D()},20)},clear:function(){setTimeout(function(){D()},20)}}),W(),function(){var e=v(".members-am-demote-wrap"),s=v("#members-am-demote-parent"),r=v("#members-am-demote");if(!g.selectedId)return e.attr("hidden",!0);if(x(g.selectedId))return e.attr("hidden",!0);var a=E()[0]||g.activeRoleSlugs[0];if(a&&O(a,g.selectedId))return e.attr("hidden",!0);e.removeAttr("hidden");var n=g.selectedId,i=membersAdminMenus.i18n&&membersAdminMenus.i18n.selectParentMenu||"";s.empty().append(v(" ").val("").text(i));var t=0;g.tree.forEach(function(e){if(e&&e.id&&e.id!==n){var r=e.title&&String(e.title).trim()?e.title:e.id;s.append(v(" ").val(e.id).text(r)),t++}});var o=0 ');"dashicons"===s?r.append(v(' ')):r.append(v(' ')),r.on("click",function(){v("#members-am-icon-value").val(e),v("#members-am-icon-type").val("dashicons"===s?"dashicon":"fontawesome"),D()}),n.append(r)}})}function s(e,r){var s=g.activeRoleSlugs.indexOf(e);if(-1!==s){var a=s+r;if(!(a<0||a>=g.activeRoleSlugs.length)){var n=g.activeRoleSlugs[s];g.activeRoleSlugs[s]=g.activeRoleSlugs[a],g.activeRoleSlugs[a]=n,o(),V()}}}function Q(e,r,s){var a,n,i,t=h(e).overrides[r]||{},o=null;if("__promote__"===t.parent?o=null:-1!==r.indexOf("::")?o=x(r):t.parent&&"__promote__"!==t.parent&&(o=t.parent),o){var m=h(e).submenu_order;m[o]||(m[o]=(a=e,i=k(n=o),g.tree.forEach(function(e){e&&e.id&&-1===e.id.indexOf("::")&&(h(a).overrides[e.id]||{}).parent===n&&-1===i.indexOf(e.id)&&i.push(e.id)}),i));var l=m[o],d=-1!==r.indexOf("::")?r.split("::").pop():r;if(-1===(u=l.indexOf(d)))return;if((p=u+s)<0||p>=l.length)return;var c=l[u];l[u]=l[p],l[p]=c}else{h(e).order&&h(e).order.length||(h(e).order=w());var u,p,f=h(e).order;if(-1===(u=f.indexOf(r)))return;if((p=u+s)<0||p>=f.length)return;var b=f[u];f[u]=f[p],f[p]=b}V()}function q(){var e=E();if(e.length){var a="sep-"+Date.now();e.forEach(function(e){h(e).order&&h(e).order.length||(h(e).order=w());var r=h(e).order,s=g.selectedId?r.indexOf(g.selectedId):r.length-1;s<0&&(s=r.length),r.splice(s+1,0,a)}),V()}}function B(){var e=v("#members-am-save").prop("disabled",!0);v.post(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_save",nonce:membersAdminMenus.nonce,settings:JSON.stringify(g.settings)}).done(function(e){e.success?(g.allowUnload=!0,alert(membersAdminMenus.i18n.saved),location.reload()):alert(e.data&&e.data.message?e.data.message:"Error")}).fail(function(){alert(membersAdminMenus.i18n.networkError||"Could not save settings. Check your connection and try again.")}).always(function(){e.prop("disabled",!1)})}function G(e,r){confirm("role"===e&&r?"Reset all settings for this role? This cannot be undone.":"Reset ALL menu settings for every role? This cannot be undone.")&&v.post(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_reset",nonce:membersAdminMenus.nonce,scope:e||"all",role:r||""},function(e){e.success?(g.allowUnload=!0,location.reload()):alert(e.data&&e.data.message?e.data.message:"Reset failed.")})}function H(e){v.getJSON(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_user_search",nonce:membersAdminMenus.nonce,term:e},function(e){e.success&&e.data&&e.data.length?function(e){v(".members-am-user-suggestions").remove();var r=v("#members-am-user-search").parent();r.css("position","relative");var s=v('
');e.forEach(function(e){s.append(v('
').text(e.label).data("userId",e.id).on("click",function(){!function(e,r,s){g.previewUserId=e,g.previewUserLabel=r||"User #"+e,g.previewUserRoles=s||[],m(),g.settings.users[e]||(g.settings.users[e]={});V()}(e.id,e.label,e.roles),v(".members-am-user-suggestions").remove(),v("#members-am-user-search").val("")}))}),r.append(s),setTimeout(function(){v(document).one("click",function(){v(".members-am-user-suggestions").remove()})},0)}(e.data):v(".members-am-user-suggestions").remove()})}function K(){var r;v(document).on("click","#members-am-role-chips .members-am-chip",function(){var e=v(this).data("role"),r=g.activeRoleSlugs.indexOf(e);-1===r?g.activeRoleSlugs.push(e):1 ');if(i.append(v('
').text("Reset Settings")),a&&n){var t=v(' ');t.append(v(' ')),t.append(v(' ').append(v(" ").text("Reset "+n),v(" ").text("Clear all menu settings for this role only"))),t.on("click",function(){v(".members-am-reset-dropdown").remove(),G("role",a)}),i.append(t)}var o=v(' ');o.append(v(' ')),o.append(v(' ').append(v(" ").text("Reset all roles"),v(" ").text("Clear all menu settings for every role"))),o.on("click",function(){v(".members-am-reset-dropdown").remove(),G("all")}),i.append(o),r.parent().css("position","relative"),i.insertAfter(r),v(document).one("click",function(){v(".members-am-reset-dropdown").remove()})}),v("#members-am-export").on("click",function(e){e.preventDefault(),window.location.href=membersAdminMenus.exportUrl}),v("#members-am-import").on("click",function(){v("#members-am-import-file").trigger("click")}),v("#members-am-import-file").on("change",function(){var e,r,s=this.files&&this.files[0];s&&(e=s,(r=new FileReader).onload=function(){try{var e=JSON.parse(r.result);v.post(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_import",nonce:membersAdminMenus.nonce,settings:JSON.stringify(e)}).done(function(e){e.success?(g.allowUnload=!0,location.reload()):alert(e.data&&e.data.message?e.data.message:"Error")})}catch(e){alert("Invalid JSON")}},r.readAsText(e))}),v("#members-am-copy-apply").on("click",function(){var s=v("#members-am-copy-from").val(),r=v("#members-am-copy-to").val();if(s&&r)if(s!==r){var a="",n="";if(d().forEach(function(e){e.slug===s&&(a=e.label),e.slug===r&&(n=e.label)}),confirm('Copy menu settings from "'+a+'" to "'+n+'"?\nThis will overwrite "'+n+"\" menu configuration.\n\nNote: This copies menu order, hidden items, labels, icons, and colors.\nIt does NOT change the role's capabilities (items marked with a lock icon).")){var e=h(s),i={hidden:e.hidden?e.hidden.slice():[],order:[],submenu_order:{},overrides:{}},t=S(s);i.order=t.slice(),g.tree.forEach(function(e){if(e.children&&e.children.length){var r=A(s,e.id);r&&r.length&&(i.submenu_order[e.id]=r.slice())}}),e.overrides&&"object"==typeof e.overrides&&(i.overrides=JSON.parse(JSON.stringify(e.overrides))),g.settings.roles[r]=i,-1===g.activeRoleSlugs.indexOf(r)&&(g.activeRoleSlugs.push(r),o(),J()),V(),B()}}else alert("Source and target roles must be different.")}),v("#members-am-admin-editable").on("change",function(){var e=!0;v(this).is(":checked")&&(e=window.confirm(membersAdminMenus.i18n.adminEditableWarn)),e?(g.settings._meta.admin_editable=v(this).is(":checked"),N(),J(),o(),V()):v(this).prop("checked",!1)}),v("#members-am-sync-scroll").prop("checked",!1!==g.syncScroll),v("#members-am-sync-scroll").on("change",function(){g.syncScroll=v(this).is(":checked");try{localStorage.setItem("members_am_sync_scroll",g.syncScroll?"1":"0")}catch(e){}F()}),v("#members-am-add-item").on("click",function(){var e="c"+Date.now();g.settings.custom_items.push({id:e,label:"Custom link",url:window.location.origin+"/wp-admin/",icon_type:"dashicon",icon:"dashicons-admin-generic",parent:"",position:99,cap:"read"}),g.tree=f(),g.selectedId=u({id:e}),V(),z()}),v("#members-am-remove-custom").on("click",function(){var r=b(g.selectedId);r&&r.customId&&(g.settings.custom_items=(g.settings.custom_items||[]).filter(function(e){return e.id!==r.customId}),g.selectedId=null,g.tree=f(),V(),v("#members-am-edit-panel").attr("hidden",!0))}),v("#members-am-edit-close").on("click",function(){g.selectedId=null,v("#members-am-edit-panel").attr("hidden",!0),V()}),v("#members-am-edit-target-role").on("change",z),v("#members-am-edit-label, #members-am-edit-url, #members-am-icon-value, #members-am-badge-text").on("input",function(){D()}),v("#members-am-item-cap").on("input",function(){D()}),v(".members-am-icon-tabs .button").on("click",function(){v(".members-am-icon-tabs .button").removeClass("is-active"),v(this).addClass("is-active"),g.iconTab="fontawesome"===v(this).data("tab")?"fontawesome":"upload"===v(this).data("tab")?"upload":"dashicons",W()}),v("#members-am-icon-search").on("input",W),v("#members-am-media-upload").on("click",function(e){e.preventDefault(),g.mediaFrame||(g.mediaFrame=wp.media({title:"Choose menu icon",button:{text:"Use as icon"},multiple:!1,library:{type:"image"}}),g.mediaFrame.on("select",function(){var e=g.mediaFrame.state().get("selection").first().toJSON(),r=e.url||"";e.sizes&&(e.sizes.thumbnail?r=e.sizes.thumbnail.url:e.sizes.medium&&(r=e.sizes.medium.url)),v("#members-am-icon-type").val("custom"),v("#members-am-icon-value").val(r),D()})),g.mediaFrame.open()}),v(document).on("change",".members-am-vis-cb",function(){var e=v(this).data("role");if(v(this).is(":checked")){var r=h(e).hidden,s=r.indexOf(g.selectedId);-1!==s&&r.splice(s,1)}else-1===h(e).hidden.indexOf(g.selectedId)&&h(e).hidden.push(g.selectedId);V()}),v("#members-am-add-sep").on("click",q),v("#members-am-promote").on("click",function(){if(g.selectedId){var n=g.selectedId,e=C()||{};if(-1===n.indexOf("::")&&e.parent&&"__promote__"!==e.parent){var i=e.parent,r=U();if(r){var s=_(r);if(s.overrides[n]&&delete s.overrides[n].parent,s.submenu_order&&s.submenu_order[i]){var a=s.submenu_order[i].indexOf(n);-1!==a&&s.submenu_order[i].splice(a,1)}if(s.order.length||(s.order=w()),-1===s.order.indexOf(n)){var t=s.order.indexOf(i);-1!==t?s.order.splice(t+1,0,n):s.order.push(n)}}else E().forEach(function(e){var r=h(e);if(r.overrides[n]&&delete r.overrides[n].parent,r.submenu_order&&r.submenu_order[i]){var s=r.submenu_order[i].indexOf(n);-1!==s&&r.submenu_order[i].splice(s,1)}if(r.order&&r.order.length||(r.order=w()),-1===r.order.indexOf(n)){var a=r.order.indexOf(i);-1!==a?r.order.splice(a+1,0,n):r.order.push(n)}});return D(),void z()}T("parent","__promote__");var o=x(n);E().forEach(function(e){var r=h(e);if(r.order&&r.order.length||(r.order=w()),-1===r.order.indexOf(n))if(o){var s=r.order.indexOf(o);-1!==s?r.order.splice(s+1,0,n):r.order.push(n)}else r.order.push(n)}),D(),z()}}),v("#members-am-demote").on("click",function(){var e=v("#members-am-demote-parent").val();e?(T("parent",e),D(),z()):window.alert(membersAdminMenus.i18n&&membersAdminMenus.i18n.selectParentFirst||"Please choose a parent menu from the list.")}),v("#members-am-user-search").on("input",function(){var e=v(this).val();clearTimeout(r),r=setTimeout(function(){1 ").val("__all__").text("All roles")),g.activeRoleSlugs.forEach(function(r){var e=(d().filter(function(e){return e.slug===r})[0]||{}).label||r;s.append(v(" ").val(r).text(e))}),g.previewUserId&&s.append(v(" ").val("__user__"+g.previewUserId).text(g.previewUserLabel||"User #"+g.previewUserId)),g.selectedId&&z()}v(function(){var r,s,e;m(),g.tree=f(),N(),v("#members-am-admin-editable").prop("checked",!!g.settings._meta.admin_editable),r=v("#members-am-copy-from").empty(),s=v("#members-am-copy-to").empty(),(e=d()).forEach(function(e){r.append(v(" ").val(e.slug).text(e.label)),s.append(v(" ").val(e.slug).text(e.label))}),1=n.length||(n.splice(p,1),n.splice(f,0,o?u:r))}}function u(e){var r=e.id||"c";return"members-am-"+String(r).replace(/[^a-z0-9_-]/gi,"-").toLowerCase()}function p(e){return!!e&&0===(-1!==e.indexOf("::")?e.split("::").pop():e).indexOf("members-am-")}function f(){var s=h.extend(!0,[],membersAdminMenus.menuTree||[]),n={};return s.forEach(function(e){n[e.id]=!0}),(g.settings.custom_items||[]).forEach(function(e){if(e&&e.id){var r=u(e);if(n[r]){for(var a=0;an&&(g.carouselPage=n))}}g.activeRoleSlugs=r.filter(function(e){return"administrator"!==e||a}),g.activeRoleSlugs.length||(g.activeRoleSlugs=["subscriber"])}function J(){var s=h("#members-am-role-chips").empty();d().forEach(function(e){if("administrator"!==e.slug||g.settings._meta.admin_editable){var r=-1!==g.activeRoleSlugs.indexOf(e.slug),a=h(' ').text(e.label).attr("data-role",e.slug).toggleClass("is-active",r);s.append(a)}})}function j(t,i,e,o,m){(function(e,r,a,s,n){n=n||0;var t=r.id,i=P(e,t),o=!R(e,r.cap),m=_(e).overrides[t]||{},l=m.label||r.title||t,d=h('
').attr("data-id",t).attr("data-menu-parent",a||"").toggleClass("is-hidden",i).toggleClass("is-no-cap",o).toggleClass("is-selected",g.selectedId===t).toggleClass("is-sub",0 ');if(0===n){var u=m.icon||r.icon,p=M(u,m.icon_type||r.icon_type);if("fontawesome"===p&&u)c.append(h(' '));else if("svg"!==p&&"image"!==p&&"custom"!==p||!u){var f=u&&0===u.indexOf("dashicons-")?u:"dashicons-admin-generic";c.append(h(' '))}else c.append(h(" ").attr("src",u).css({width:"20px",height:"20px",display:"inline-block",verticalAlign:"middle",objectFit:"contain",filter:"none"}))}r.custom&&c.append(h('custom '));m.label&&c.append(h('edit '));if(c.append(h(' ').text(l)),m.badge){var b=m.badge_bg||"#d63638";c.append(h(' ').text(m.badge).css({backgroundColor:b,color:"#fff",fontSize:"9px",padding:"1px 5px",borderRadius:"2px",marginLeft:"4px",whiteSpace:"nowrap"}))}o&&c.append(h(' Roles.\">🔒 no access "));d.append(c),m.color_bg&&d.css("background-color",m.color_bg);m.color_text&&d.find(".members-am-item-label").css("color",m.color_text);m.color_icon&&(d.find(".dashicons").css("color",m.color_icon),d.find(".members-am-fa-icon i").css("color",m.color_icon),d.find("img").css("filter","none"));var v=h('
');v.append(h(' ').text("◉"),h(' ').text("↑"),h(' ').text("↓")),d.append(v),s.append(d)})(t,i,e,o,m=m||0),i.children&&i.children.length&&A(t,i.id).forEach(function(e){var r,a,s,n=(r=t,a=i.id,b(I(a,s=e))||(-1===s.indexOf("::")&&(_(r).overrides[s]||{}).parent===a?b(s):null));n&&"__promote__"!==(_(t).overrides[n.id]||{}).parent&&j(t,n,i.id,o,m+1)})}function L(a,s,e,n,t,i){i=i||0,t.append(function(r,e,a,s,n){n=n||0;var t=s.overrides&&s.overrides[r.id]||{},i=t.label||r.title,o=function(e,r){var a=x(e);if(-1!==a.hidden.indexOf(r))return!0;var s=y(r,e);return!(!s||-1===a.hidden.indexOf(s))}(a,r.id),m=!function(e){if(!e||"read"===e)return 1;for(var r=g.previewUserRoles||[],a=0;a").addClass(d).attr("data-id",r.id).attr("data-menu-parent",e||""),u=h('
');if(0===n){var p=t.icon||r.icon,f=M(p,t.icon_type||r.icon_type);"fontawesome"===f&&p?u.append(h(' ')):"svg"!==f&&"image"!==f&&"custom"!==f||!p?p&&0===p.indexOf("dashicons-")?u.append(h(' ')):u.append(h(' ')):u.append(h(" ").attr("src",p).css({width:"20px",height:"20px",display:"inline-block",verticalAlign:"middle",objectFit:"contain",filter:"none"}))}r.custom&&u.append(h('custom '));t.label&&u.append(h('edit '));if(u.append(h(' ').text(i)),t.badge){var b=t.badge_bg||"#d63638";u.append(h(' ').text(t.badge).css({backgroundColor:b,color:"#fff",fontSize:"9px",padding:"1px 5px",borderRadius:"2px",marginLeft:"4px",whiteSpace:"nowrap"}))}m&&u.append(h('🔒 no access "));c.append(u),t.color_bg&&c.css("background-color",t.color_bg);t.color_text&&c.find(".members-am-item-label").css("color",t.color_text);t.color_icon&&(c.find(".dashicons").css("color",t.color_icon),c.find(".members-am-fa-icon i").css("color",t.color_icon));var v=h('
');return v.append(h(' ').text(o?"◯":"◉"),h(' ').text("↑"),h(' ').text("↓")),c.append(v),c.on("click",function(e){h(e.target).closest("button").length||(g.selectedId=r.id,Y())}),c}(s,e,a,n,i)),s.children&&s.children.length&&function(e,r){var a=S(r),s=x(e);g.tree.forEach(function(e){e&&e.id&&-1===e.id.indexOf("::")&&(s.overrides&&s.overrides[e.id]||{}).parent===r&&-1===a.indexOf(e.id)&&a.push(e.id)});var n=s.submenu_order&&s.submenu_order[r];if(!n||!n.length)return a.slice();var t=n.filter(function(e){return-1!==a.indexOf(e)});return a.forEach(function(e){-1===t.indexOf(e)&&t.push(e)}),t}(a,s.id).forEach(function(e){var r=function(e,r,a){var s=b(I(r,a));if(s)return s;if(-1===a.indexOf("::")){var n=x(e);if((n.overrides&&n.overrides[a]||{}).parent===r)return b(a)}return null}(a,s.id,e);r&&"__promote__"!==(n.overrides&&n.overrides[r.id]||{}).parent&&L(a,r,s.id,n,t,i+1)})}function F(e){return-1!==e.indexOf("::")?e.split("::").pop():e}function z(){h.fn.sortable&&h("#members-am-columns .members-am-sidebar-list").each(function(){var e=h(this);e.data("ui-sortable")&&e.sortable("destroy");var r=e.closest(".members-am-column"),a=r.data("role"),s=r.data("user");e.sortable({axis:"y",distance:6,items:"> .members-am-item, > .members-am-sep",cancel:".members-am-item-actions button",placeholder:"members-am-sort-placeholder",forcePlaceholderSize:!0,tolerance:"pointer",update:function(){s?function(e,r){var n=[],t={};e.children().each(function(){var e=h(this);if(e.hasClass("members-am-sep")){var r=e.attr("data-sep-id");r&&n.push(r)}else if(e.hasClass("members-am-item")){var a=e.attr("data-id");if(a){var s=e.attr("data-menu-parent");void 0===s||""===s?n.push(a):(t[s]||(t[s]=[]),t[s].push(F(a)))}}});var a=x(r);a.order=n,a.submenu_order=t}(e,s):a&&function(e,r){var n=[],t={};e.children().each(function(){var e=h(this);if(e.hasClass("members-am-sep")){var r=e.attr("data-sep-id");r&&n.push(r)}else if(e.hasClass("members-am-item")){var a=e.attr("data-id");if(a){var s=e.attr("data-menu-parent");void 0===s||""===s?n.push(a):(t[s]||(t[s]=[]),t[s].push(F(a)))}}});var a=_(r);a.order=n,a.submenu_order=t}(e,a),W()}})})}function D(){var a=h("#members-am-columns"),s={};a.find(".members-am-column").each(function(){var e=h(this).data("role");if(e){var r=h(this).find(".members-am-sidebar-list");r.length&&(s[e]=r.scrollTop())}}),a.empty();var e=g.carouselPage*g.columnsPerPage;if(g.activeRoleSlugs.slice(e,e+g.columnsPerPage).forEach(function(e){var r=h('
');!function(a,e){e.empty();var r=h(''),s=(d().filter(function(e){return e.slug===a})[0]||{}).label||a;r.append(h('').text(s)),r.append(h(' ').append(h(' ').text("◀"),h(' ').text("▶"))),e.append(r);var n=h('');k(a).forEach(function(e){if(0!==e.indexOf("sep-")){var r=b(e);r&&j(a,r,null,n,0)}else n.append(h('
').attr("data-sep-id",e).text("—"))}),e.append(n)}(e,r),a.append(r),s[e]&&r.find(".members-am-sidebar-list").scrollTop(s[e])}),g.previewUserId){var n=g.previewUserId,r=h('
'),t=h('');t.append(h(" ").text(g.previewUserLabel||"User #"+n)),t.append(h('× ').on("click",function(){g.previewUserId=null,g.previewUserLabel=null,g.previewUserRoles=[],Y()})),r.append(t);var i=h(''),o=x(n);c(n).forEach(function(e){if(0!==e.indexOf("sep-")){var r=b(e);r&&L(n,r,null,o,i,0)}else i.append(h('
').attr("data-sep-id",e).text("——"))}),r.append(i),a.append(r)}if(g.syncScroll){var m=a.find(".members-am-sidebar-list"),l=!1;m.on("scroll",function(){if(!l){l=!0;var e=h(this).scrollTop();m.not(this).scrollTop(e),l=!1}})}!function(){var e=Math.max(1,Math.ceil(g.activeRoleSlugs.length/g.columnsPerPage)),r=(Math.min(g.carouselPage+1,e),g.carouselPage*g.columnsPerPage+1),a=Math.min((g.carouselPage+1)*g.columnsPerPage,g.activeRoleSlugs.length);h("#members-am-carousel-status").text(r+"–"+a+" "+membersAdminMenus.i18n.of+" "+g.activeRoleSlugs.length);for(var s=h("#members-am-carousel-dots").empty(),n=0;n ').toggleClass("is-active",n===g.carouselPage))}(),z()}function W(){if(g.selectedId){h("#members-am-edit-panel").removeAttr("hidden");var e=b(g.selectedId),r=U()||{};h("#members-am-edit-title").text(e?e.title:g.selectedId),h("#members-am-edit-label").val(r.label||e&&e.title||"");var a=p(g.selectedId);h("#members-am-edit-url-wrap").toggle(a),h("#members-am-edit-url").attr("placeholder","Override URL (leave empty for default)").val(a&&(r.url||e&&e.url)||"").data("default-url",e&&e.url||""),h("#members-am-icon-type").val(r.icon_type||"dashicon"),h("#members-am-icon-value").val(r.icon||e&&e.icon||"");var s=r.icon||e&&e.icon||"",n=M(s,r.icon_type||e&&e.icon_type||"");"image"!==n&&"custom"!==n&&"svg"!==n||!s?h("#members-am-icon-preview").hide():h("#members-am-icon-preview").show().attr("src",s),h("#members-am-color-bg").val(r.color_bg||""),h("#members-am-color-text").val(r.color_text||""),h("#members-am-color-icon").val(r.color_icon||""),h("#members-am-badge-text").val(r.badge||""),h("#members-am-badge-bg").val(r.badge_bg||""),h("#members-am-item-cap").attr("placeholder",e&&e.cap?e.cap+" (default)":"").val(g.settings.capabilities[g.selectedId]||"");var t=e&&e.custom;h("#members-am-remove-custom").toggle(!!t),h("#members-am-visibility-toggles").empty();var i=e&&e.cap||"read";d().forEach(function(e){if("administrator"!==e.slug||g.settings._meta.admin_editable){var r=P(e.slug,g.selectedId),a=R(e.slug,i),s=h(' ').attr("data-role",e.slug).prop("checked",!r&&a);a||s.prop("disabled",!0);var n=h(' ').append(s,h(" ").text(e.label));a||(n.append(h(" ").text(" — no capability").css({color:"#999",fontStyle:"italic",marginLeft:"4px"})),n.css("opacity","0.5")),h("#members-am-visibility-toggles").append(n)}}),h(".members-am-color").each(function(){h(this).data("wpWpColorPicker")&&h(this).wpColorPicker("destroy")}),h(".members-am-color").wpColorPicker({change:function(e,r){setTimeout(function(){Q()},20)},clear:function(){setTimeout(function(){Q()},20)}}),q(),function(){var e=h(".members-am-demote-wrap"),a=h("#members-am-demote-parent"),r=h("#members-am-demote");if(!g.selectedId)return e.attr("hidden",!0);if(v(g.selectedId))return e.attr("hidden",!0);var s=E()[0]||g.activeRoleSlugs[0];if(s&&O(s,g.selectedId))return e.attr("hidden",!0);e.removeAttr("hidden");var n=g.selectedId,t=membersAdminMenus.i18n&&membersAdminMenus.i18n.selectParentMenu||"";a.empty().append(h(" ").val("").text(t));var i=0;g.tree.forEach(function(e){if(e&&e.id&&e.id!==n){var r=e.title&&String(e.title).trim()?e.title:e.id;a.append(h(" ").val(e.id).text(r)),i++}});var o=0 ');"dashicons"===a?r.append(h(' ')):r.append(h(' ')),r.on("click",function(){h("#members-am-icon-value").val(e),h("#members-am-icon-type").val("dashicons"===a?"dashicon":"fontawesome"),Q()}),n.append(r)}})}function a(e,r){var a=g.activeRoleSlugs.indexOf(e);if(-1!==a){var s=a+r;if(!(s<0||s>=g.activeRoleSlugs.length)){var n=g.activeRoleSlugs[a];g.activeRoleSlugs[a]=g.activeRoleSlugs[s],g.activeRoleSlugs[s]=n,o(),Y()}}}function B(e,r,a){var s,n,t,i=_(e).overrides[r]||{},o=null;if("__promote__"===i.parent?o=null:-1!==r.indexOf("::")?o=v(r):i.parent&&"__promote__"!==i.parent&&(o=i.parent),o){var m=_(e).submenu_order;m[o]||(m[o]=(s=e,t=S(n=o),g.tree.forEach(function(e){e&&e.id&&-1===e.id.indexOf("::")&&(_(s).overrides[e.id]||{}).parent===n&&-1===t.indexOf(e.id)&&t.push(e.id)}),t));var l=m[o],d=-1!==r.indexOf("::")?r.split("::").pop():r;if(-1===(u=l.indexOf(d)))return;if((p=u+a)<0||p>=l.length)return;var c=l[u];l[u]=l[p],l[p]=c}else{_(e).order&&_(e).order.length||(_(e).order=w());var u,p,f=_(e).order;if(-1===(u=f.indexOf(r)))return;if((p=u+a)<0||p>=f.length)return;var b=f[u];f[u]=f[p],f[p]=b}Y()}function G(){var e=E();if(e.length){var s="sep-"+Date.now();e.forEach(function(e){_(e).order&&_(e).order.length||(_(e).order=w());var r=_(e).order,a=g.selectedId?r.indexOf(g.selectedId):r.length-1;a<0&&(a=r.length),r.splice(a+1,0,s)}),Y()}}function H(){var e=h("#members-am-save").prop("disabled",!0);h.post(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_save",nonce:membersAdminMenus.nonce,settings:JSON.stringify(g.settings)}).done(function(e){e.success?(g.allowUnload=!0,alert(membersAdminMenus.i18n.saved),location.reload()):alert(e.data&&e.data.message?e.data.message:"Error")}).fail(function(){alert(membersAdminMenus.i18n.networkError||"Could not save settings. Check your connection and try again.")}).always(function(){e.prop("disabled",!1)})}function K(e,r){confirm("role"===e&&r?"Reset all settings for this role? This cannot be undone.":"Reset ALL menu settings for every role? This cannot be undone.")&&h.post(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_reset",nonce:membersAdminMenus.nonce,scope:e||"all",role:r||""},function(e){e.success?(g.allowUnload=!0,location.reload()):alert(e.data&&e.data.message?e.data.message:"Reset failed.")})}function V(e){h.getJSON(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_user_search",nonce:membersAdminMenus.nonce,term:e},function(e){e.success&&e.data&&e.data.length?function(e){h(".members-am-user-suggestions").remove();var r=h("#members-am-user-search").parent();r.css("position","relative");var a=h('
');e.forEach(function(e){a.append(h('
').text(e.label).data("userId",e.id).on("click",function(){!function(e,r,a){g.previewUserId=e,g.previewUserLabel=r||"User #"+e,g.previewUserRoles=a||[],m(),g.settings.users[e]||(g.settings.users[e]={});Y()}(e.id,e.label,e.roles),h(".members-am-user-suggestions").remove(),h("#members-am-user-search").val("")}))}),r.append(a),setTimeout(function(){h(document).one("click",function(){h(".members-am-user-suggestions").remove()})},0)}(e.data):h(".members-am-user-suggestions").remove()})}function X(){var r;h(document).on("click","#members-am-role-chips .members-am-chip",function(){var e=h(this).data("role"),r=g.activeRoleSlugs.indexOf(e);-1===r?g.activeRoleSlugs.push(e):1 ');if(t.append(h('
').text("Reset Settings")),s&&n){var i=h(' ');i.append(h(' ')),i.append(h(' ').append(h(" ").text("Reset "+n),h(" ").text("Clear all menu settings for this role only"))),i.on("click",function(){h(".members-am-reset-dropdown").remove(),K("role",s)}),t.append(i)}var o=h(' ');o.append(h(' ')),o.append(h(' ').append(h(" ").text("Reset all roles"),h(" ").text("Clear all menu settings for every role"))),o.on("click",function(){h(".members-am-reset-dropdown").remove(),K("all")}),t.append(o),r.parent().css("position","relative"),t.insertAfter(r),h(document).one("click",function(){h(".members-am-reset-dropdown").remove()})}),h("#members-am-export").on("click",function(e){e.preventDefault(),window.location.href=membersAdminMenus.exportUrl}),h("#members-am-import").on("click",function(){h("#members-am-import-file").trigger("click")}),h("#members-am-import-file").on("change",function(){var e,r,a=this.files&&this.files[0];a&&(e=a,(r=new FileReader).onload=function(){try{var e=JSON.parse(r.result);h.post(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_import",nonce:membersAdminMenus.nonce,settings:JSON.stringify(e)}).done(function(e){e.success?(g.allowUnload=!0,location.reload()):alert(e.data&&e.data.message?e.data.message:"Error")})}catch(e){alert("Invalid JSON")}},r.readAsText(e))}),h("#members-am-copy-apply").on("click",function(){var a=h("#members-am-copy-from").val(),r=h("#members-am-copy-to").val();if(a&&r)if(a!==r){var s="",n="";if(d().forEach(function(e){e.slug===a&&(s=e.label),e.slug===r&&(n=e.label)}),confirm('Copy menu settings from "'+s+'" to "'+n+'"?\nThis will overwrite "'+n+"\" menu configuration.\n\nNote: This copies menu order, hidden items, labels, icons, and colors.\nIt does NOT change the role's capabilities (items marked with a lock icon).")){var e=_(a),t={hidden:e.hidden?e.hidden.slice():[],order:[],submenu_order:{},overrides:{}},i=k(a);t.order=i.slice(),g.tree.forEach(function(e){if(e.children&&e.children.length){var r=A(a,e.id);r&&r.length&&(t.submenu_order[e.id]=r.slice())}}),e.overrides&&"object"==typeof e.overrides&&(t.overrides=JSON.parse(JSON.stringify(e.overrides))),g.settings.roles[r]=t,-1===g.activeRoleSlugs.indexOf(r)&&(g.activeRoleSlugs.push(r),o(),J()),Y(),H()}}else alert("Source and target roles must be different.")}),h("#members-am-admin-editable").on("change",function(){var e=!0;h(this).is(":checked")&&(e=window.confirm(membersAdminMenus.i18n.adminEditableWarn)),e?(g.settings._meta.admin_editable=h(this).is(":checked"),N(),J(),o(),Y()):h(this).prop("checked",!1)}),h("#members-am-sync-scroll").prop("checked",!1!==g.syncScroll),h("#members-am-sync-scroll").on("change",function(){g.syncScroll=h(this).is(":checked");try{localStorage.setItem("members_am_sync_scroll",g.syncScroll?"1":"0")}catch(e){}D()}),h("#members-am-add-item").on("click",function(){var e="c"+Date.now();g.settings.custom_items.push({id:e,label:"Custom link",url:window.location.origin+"/wp-admin/",icon_type:"dashicon",icon:"dashicons-admin-generic",parent:"",position:99,cap:"read"}),g.tree=f(),g.selectedId=u({id:e}),Y(),W()}),h("#members-am-remove-custom").on("click",function(){var r=b(g.selectedId);r&&r.customId&&(g.settings.custom_items=(g.settings.custom_items||[]).filter(function(e){return e.id!==r.customId}),g.selectedId=null,g.tree=f(),Y(),h("#members-am-edit-panel").attr("hidden",!0))}),h("#members-am-edit-close").on("click",function(){g.selectedId=null,h("#members-am-edit-panel").attr("hidden",!0),Y()}),h("#members-am-edit-target-role").on("change",W),h("#members-am-edit-label, #members-am-edit-url, #members-am-icon-value, #members-am-badge-text").on("input",function(){Q()}),h("#members-am-item-cap").on("input",function(){Q()}),h(".members-am-icon-tabs .button").on("click",function(){h(".members-am-icon-tabs .button").removeClass("is-active"),h(this).addClass("is-active"),g.iconTab="fontawesome"===h(this).data("tab")?"fontawesome":"upload"===h(this).data("tab")?"upload":"dashicons",q()}),h("#members-am-icon-search").on("input",q),h("#members-am-media-upload").on("click",function(e){e.preventDefault(),g.mediaFrame||(g.mediaFrame=wp.media({title:"Choose menu icon",button:{text:"Use as icon"},multiple:!1,library:{type:"image"}}),g.mediaFrame.on("select",function(){var e=g.mediaFrame.state().get("selection").first().toJSON(),r=e.url||"";e.sizes&&(e.sizes.thumbnail?r=e.sizes.thumbnail.url:e.sizes.medium&&(r=e.sizes.medium.url)),h("#members-am-icon-type").val("custom"),h("#members-am-icon-value").val(r),Q()})),g.mediaFrame.open()}),h(document).on("change",".members-am-vis-cb",function(){var e=h(this).data("role");if(h(this).is(":checked")){var r=_(e).hidden,a=r.indexOf(g.selectedId);-1!==a&&r.splice(a,1)}else-1===_(e).hidden.indexOf(g.selectedId)&&_(e).hidden.push(g.selectedId);Y()}),h("#members-am-add-sep").on("click",G),h("#members-am-promote").on("click",function(){if(g.selectedId){var n=g.selectedId,e=U()||{};if(-1===n.indexOf("::")&&e.parent&&"__promote__"!==e.parent){var t=e.parent,r=C();if(r){var a=x(r);if(a.overrides[n]&&delete a.overrides[n].parent,a.submenu_order&&a.submenu_order[t]){var s=a.submenu_order[t].indexOf(n);-1!==s&&a.submenu_order[t].splice(s,1)}if(a.order.length||(a.order=w()),-1===a.order.indexOf(n)){var i=a.order.indexOf(t);-1!==i?a.order.splice(i+1,0,n):a.order.push(n)}}else E().forEach(function(e){var r=_(e);if(r.overrides[n]&&delete r.overrides[n].parent,r.submenu_order&&r.submenu_order[t]){var a=r.submenu_order[t].indexOf(n);-1!==a&&r.submenu_order[t].splice(a,1)}if(r.order&&r.order.length||(r.order=w()),-1===r.order.indexOf(n)){var s=r.order.indexOf(t);-1!==s?r.order.splice(s+1,0,n):r.order.push(n)}});return Q(),void W()}T("parent","__promote__");var o=v(n);E().forEach(function(e){var r=_(e);if(r.order&&r.order.length||(r.order=w()),-1===r.order.indexOf(n))if(o){var a=r.order.indexOf(o);-1!==a?r.order.splice(a+1,0,n):r.order.push(n)}else r.order.push(n)}),Q(),W()}}),h("#members-am-demote").on("click",function(){var e=h("#members-am-demote-parent").val();e?(T("parent",e),Q(),W()):window.alert(membersAdminMenus.i18n&&membersAdminMenus.i18n.selectParentFirst||"Please choose a parent menu from the list.")}),h("#members-am-user-search").on("input",function(){var e=h(this).val();clearTimeout(r),r=setTimeout(function(){1 ").val("__all__").text("All roles")),g.activeRoleSlugs.forEach(function(r){var e=(d().filter(function(e){return e.slug===r})[0]||{}).label||r;a.append(h(" ").val(r).text(e))}),g.previewUserId&&a.append(h(" ").val("__user__"+g.previewUserId).text(g.previewUserLabel||"User #"+g.previewUserId)),g.selectedId&&W()}h(function(){var r,a,e;m(),g.tree=f(),N(),h("#members-am-admin-editable").prop("checked",!!g.settings._meta.admin_editable),r=h("#members-am-copy-from").empty(),a=h("#members-am-copy-to").empty(),(e=d()).forEach(function(e){r.append(h(" ").val(e.slug).text(e.label)),a.append(h(" ").val(e.slug).text(e.label))}),1
Date: Thu, 9 Apr 2026 15:10:54 +0200
Subject: [PATCH 19/73] refactor(admin): remove redundant check for first child
slug in submenu handling
---
addons/members-admin-menus/app/functions-admin.php | 4 ----
1 file changed, 4 deletions(-)
diff --git a/addons/members-admin-menus/app/functions-admin.php b/addons/members-admin-menus/app/functions-admin.php
index d6c5dba..93db973 100644
--- a/addons/members-admin-menus/app/functions-admin.php
+++ b/addons/members-admin-menus/app/functions-admin.php
@@ -417,10 +417,6 @@ function build_menu_tree_for_js() {
continue;
}
$subslug = $subitem[2];
- // Skip the redundant first child that matches the parent slug (WP convention).
- if ( $subslug === $slug ) {
- continue;
- }
// Skip duplicate submenu slugs (some plugins register multiple entries for the same slug).
if ( isset( $seen_subslugs[ $subslug ] ) ) {
continue;
From 1b3027937f62ef18ceeef6b8e4d63a37f01eb5e9 Mon Sep 17 00:00:00 2001
From: Omar ElHawary
Date: Fri, 10 Apr 2026 15:18:56 +0200
Subject: [PATCH 20/73] feat(admin): add loading indicators for saving,
resetting, and importing settings in admin menus
---
.../app/functions-admin.php | 7 ++
css/admin.css | 19 +++
css/admin.min.css | 2 +-
js/admin-menus.js | 110 ++++++++++++++----
js/admin-menus.min.js | 2 +-
5 files changed, 115 insertions(+), 25 deletions(-)
diff --git a/addons/members-admin-menus/app/functions-admin.php b/addons/members-admin-menus/app/functions-admin.php
index 93db973..4c63e29 100644
--- a/addons/members-admin-menus/app/functions-admin.php
+++ b/addons/members-admin-menus/app/functions-admin.php
@@ -199,6 +199,9 @@ function enqueue_admin_menus_assets() {
'of' => __( 'of', 'members' ),
'selectParentMenu' => __( 'Select parent menu…', 'members' ),
'selectParentFirst' => __( 'Please choose a parent menu from the list.', 'members' ),
+ 'saving' => __( 'Saving…', 'members' ),
+ 'resetting' => __( 'Resetting…', 'members' ),
+ 'importing' => __( 'Importing…', 'members' ),
),
)
);
@@ -243,6 +246,10 @@ function render_admin_menus_page() {
+
+
+
+
diff --git a/css/admin.css b/css/admin.css
index c27e604..dd71947 100644
--- a/css/admin.css
+++ b/css/admin.css
@@ -1068,6 +1068,25 @@
margin-bottom: 16px;
}
+.members-am-toolbar-loading {
+ display: inline-flex;
+ align-items: center;
+ gap: 8px;
+ margin-left: 4px;
+ color: #50575e;
+ font-size: 13px;
+ line-height: 1;
+}
+
+.members-am-toolbar-loading .spinner {
+ float: none;
+ margin: 0;
+}
+
+.members-am-toolbar-loading[hidden] {
+ display: none !important;
+}
+
.members-am-copy-wrap label {
margin-right: 8px;
}
diff --git a/css/admin.min.css b/css/admin.min.css
index bd41cbb..bd816fa 100644
--- a/css/admin.min.css
+++ b/css/admin.min.css
@@ -1 +1 @@
-#members-cp h2.hndle,#members-cp-side h2.hndle{border-bottom:none !important;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}#members-cp h2.hndle:before,#members-cp-side h2.hndle:before{content:url("data:image/svg+xml,%3Csvg width='15px' aria-hidden='true' focusable='false' data-prefix='fas' data-icon='users-cog' class='svg-inline--fa fa-users-cog fa-w-20' role='img' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 640 512'%3E%3Cpath fill='currentColor' d='M610.5 341.3c2.6-14.1 2.6-28.5 0-42.6l25.8-14.9c3-1.7 4.3-5.2 3.3-8.5-6.7-21.6-18.2-41.2-33.2-57.4-2.3-2.5-6-3.1-9-1.4l-25.8 14.9c-10.9-9.3-23.4-16.5-36.9-21.3v-29.8c0-3.4-2.4-6.4-5.7-7.1-22.3-5-45-4.8-66.2 0-3.3.7-5.7 3.7-5.7 7.1v29.8c-13.5 4.8-26 12-36.9 21.3l-25.8-14.9c-2.9-1.7-6.7-1.1-9 1.4-15 16.2-26.5 35.8-33.2 57.4-1 3.3.4 6.8 3.3 8.5l25.8 14.9c-2.6 14.1-2.6 28.5 0 42.6l-25.8 14.9c-3 1.7-4.3 5.2-3.3 8.5 6.7 21.6 18.2 41.1 33.2 57.4 2.3 2.5 6 3.1 9 1.4l25.8-14.9c10.9 9.3 23.4 16.5 36.9 21.3v29.8c0 3.4 2.4 6.4 5.7 7.1 22.3 5 45 4.8 66.2 0 3.3-.7 5.7-3.7 5.7-7.1v-29.8c13.5-4.8 26-12 36.9-21.3l25.8 14.9c2.9 1.7 6.7 1.1 9-1.4 15-16.2 26.5-35.8 33.2-57.4 1-3.3-.4-6.8-3.3-8.5l-25.8-14.9zM496 368.5c-26.8 0-48.5-21.8-48.5-48.5s21.8-48.5 48.5-48.5 48.5 21.8 48.5 48.5-21.7 48.5-48.5 48.5zM96 224c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm224 32c1.9 0 3.7-.5 5.6-.6 8.3-21.7 20.5-42.1 36.3-59.2 7.4-8 17.9-12.6 28.9-12.6 6.9 0 13.7 1.8 19.6 5.3l7.9 4.6c.8-.5 1.6-.9 2.4-1.4 7-14.6 11.2-30.8 11.2-48 0-61.9-50.1-112-112-112S208 82.1 208 144c0 61.9 50.1 112 112 112zm105.2 194.5c-2.3-1.2-4.6-2.6-6.8-3.9-8.2 4.8-15.3 9.8-27.5 9.8-10.9 0-21.4-4.6-28.9-12.6-18.3-19.8-32.3-43.9-40.2-69.6-10.7-34.5 24.9-49.7 25.8-50.3-.1-2.6-.1-5.2 0-7.8l-7.9-4.6c-3.8-2.2-7-5-9.8-8.1-3.3.2-6.5.6-9.8.6-24.6 0-47.6-6-68.5-16h-8.3C179.6 288 128 339.6 128 403.2V432c0 26.5 21.5 48 48 48h255.4c-3.7-6-6.2-12.8-6.2-20.3v-9.2zM173.1 274.6C161.5 263.1 145.6 256 128 256H64c-35.3 0-64 28.7-64 64v32c0 17.7 14.3 32 32 32h65.9c6.3-47.4 34.9-87.3 75.2-109.4z'%3E%3C/path%3E%3C/svg%3E");margin-right:5px}#members-cp-side .postbox-header{border-bottom:none !important}#members-cp-side .handle-actions .handle-order-higher,#members-cp-side .handle-actions .handle-order-lower{display:none}#members-cp-side .handle-actions .handlediv{position:absolute;right:5px}.members-upgrade-header{text-align:center;padding:5px}.members-upgrade-header a{color:#f59431}.memberpress-paid-memberships{background-color:#f5f5f5;padding:50px 10px;text-align:center}.memberpress-paid-memberships a{background-color:#0e4598;display:inline-block;padding:10px 20px;border-radius:300px;color:#fff;text-decoration:none;margin-top:20px}#members-cp-side .members-tabs{position:relative}#members-cp-side .members-tab-nav{background-color:transparent;margin-bottom:20px;border-right:none !important}#members-cp-side .members-tab-nav .members-tab-title{width:33.333%;height:50px;border-right:none !important}#members-cp-side .members-tab-nav .members-tab-title a{border:0}#members-cp-side .members-tab-content h3{font-weight:bold;font-size:15px;margin-top:0;color:#000;margin-bottom:10px}#members-cp-side .members-tab-content .memberpress-paid-memberships{text-align:left;padding:20px}#members-cp-side .members-tab-content .memberpress-paid-memberships a{display:block;text-align:center}#members-cp-side .members-tabs .members-tab-nav li a,#members-cp-side .members-tabs .members-tab-nav li[aria-selected="false"] a i{color:#555}#members-cp-side .members-tabs .members-tab-nav li a svg,#members-cp-side .members-tabs .members-tab-nav li[aria-selected="false"] a svg{fill:#555}#members-cp-side .members-tabs .members-tab-nav li[aria-selected="true"] a{background-color:transparent;border-bottom:2px solid #3582ae}#members-cp-side .members-tabs .members-tab-nav li[aria-selected="true"] a i{color:#3582ae}#members-cp-side .members-tabs .members-tab-nav li[aria-selected="true"] a svg{fill:#3582ae}.members-tab-title svg,.members-tab-title[aria-selected="false"] svg{fill:#0073aa}.members-tab-title[aria-selected="true"] svg{fill:#555}#wpcontent #members-admin-header{margin-left:-20px;padding:0;padding-left:22px;background-color:#f9f9f9;background-repeat:repeat;background-size:1200px 75px;min-height:36px;position:relative}#wpcontent #members-admin-header img.members-logo{height:90px}.members-upgrade-header #close-members-upgrade-header{position:absolute;right:20px;top:3px}.members-upgrade-header #close-members-upgrade-header:hover{cursor:pointer}.memberpress-welcome-panel.welcome-panel{margin-top:0;padding:40px 20px;background:#fff}.memberpress-welcome-panel.welcome-panel:before{background:0}.memberpress-welcome-panel.welcome-panel .about-description{margin:20px 0}.memberpress-welcome-panel.welcome-panel-content{margin:0}.memberpress-welcome-panel.welcome-panel-content .mp-logo-wrap>a{display:block}@media screen and (min-width:870px){.members_page_members-settings .members-short-p{max-width:612px;margin-left:auto;margin-right:auto}.members_page_members-settings .welcome-panel-content{text-align:center}}.members_page_members-settings .welcome-panel .button.button-hero{margin-left:auto;margin-right:auto}.members_page_members-settings .members-svg-wrap{display:inline-block;margin:0 auto 20px}@media screen and (max-width:870px){.members_page_members-settings .welcome-panel{padding:20px}.members_page_members-settings .members-svg-wrap{float:left;margin-right:28px}.admin_page_members-settings.rtl .members-svg-wrap{float:right;margin-right:0;margin-left:28px}}.members_page_members-settings .members-svg-link{display:table-cell;text-align:center;width:128px;height:128px;background:#363b3f;color:#fff;padding:24px 16px 16px;border-radius:50%;-webkit-box-sizing:border-box;box-sizing:border-box;border:4px solid #fff;-webkit-box-shadow:0 0 0 4px #363b3f;box-shadow:0 0 0 4px #363b3f}.members_page_members-settings .members-svg-link svg{max-width:84px;max-height:64px;width:auto;height:auto}.members-addons{display:grid;grid-template-columns:1fr 1fr;grid-row-gap:20px;grid-column-gap:20px}.members-addons .plugin-card{margin:0}.members-addons .plugin-card-top{width:100%}.members-addon{width:100%;position:relative;float:none;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.members-addon .desc{margin-bottom:80px}.addon-activate{text-align:center;border:1px solid #ddd;border-radius:3px;padding:5px 10px 10px;display:inline-block;width:100px;position:absolute;right:20px;bottom:20px}.activate-toggle:hover{cursor:pointer}.activate-toggle svg{max-width:20px;position:relative;top:5px}.activate-toggle svg{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.activate-toggle svg.active{-webkit-transform:rotate(0);transform:rotate(0)}.activate-toggle svg path{fill:#ccc}.activate-toggle svg.active path{fill:#8cbd5a}.activate-toggle.processing{cursor:not-allowed;pointer-events:none;opacity:.5}.activate-toggle .action-label{display:inline-block;width:50px;text-align:left}.mepr_dummy_txns{-webkit-filter:blur(3px);filter:blur(3px);position:absolute;top:0;left:0;width:100%;z-index:5;pointer-events:none}.mepr_dummy_txns::after{background-color:rgba(0,0,0,.2);position:absolute;top:0;left:0;width:100%;height:100%;z-index:6}.mepr-upgrade-table{position:relative}.mepr-upgrade-table .mepr-upgrade{position:relative;top:100px;z-index:10;background:rgba(0,0,0,.2);width:100%;height:100%;max-width:600px;margin:0 auto;-webkit-box-shadow:0 0 30px #ccc;box-shadow:0 0 30px #ccc}.mepr-upgrade-content{background-color:#fff;padding:20px;text-align:center}.mepr-upgrade-content h2{font-size:24px}.mepr-upgrade-content h4{font-size:18px}.mepr-upgrade-content .features{display:grid;grid-template-columns:1fr 1fr;grid-column-gap:30px;grid-row-gap:10px;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;text-align:left;padding:10px}.features li:before{content:"\f147";font-family:dashicons;color:green;font-size:20px;position:relative;top:4px;margin-right:10px}.mepr-upgrade-cta{text-align:center;background-color:#f2f2f2;padding:20px}.mepr-upgrade-cta .mepr-cta-button{display:block;max-width:300px;margin:0 auto 20px;background-color:#fd9c27;color:#fff;padding:15px;font-size:18px;font-weight:bold;text-decoration:none;border-radius:300px}.members-plugin-card.plugin-card:nth-child(even){margin-right:inherit}.members-plugin-card.plugin-card:nth-child(odd){clear:none;margin-left:inherit}.members-plugin-card.plugin-card .plugin-card-top{min-height:0;padding:30px 20px}.members-plugin-card.plugin-card .plugin-icon{top:30px}.members-plugin-card.plugin-card .plugin-card-bottom .column-status{font-weight:bold}.members-plugin-card.plugin-card .plugin-card-bottom .column-status .active{color:#8cbd5a}.members-plugin-card.plugin-card .plugin-card-bottom .column-status .inactive{color:red}.members-plugin-card.plugin-card .plugin-icon{width:64px;height:auto}.plugin-icon-small{width:32px;height:auto}.members-plugin-card.plugin-card .name,.members-plugin-card.plugin-card .desc{margin-right:0;margin-left:84px}.members-addons .plugin-card .name,.members-addons .plugin-card .desc p{margin-right:0}@media screen and (max-width:1100px){.members-addons{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}}@media screen and (max-width:600px){.members_page_members-settings .members-svg-link{width:64px;height:64px}.members_page_members-settings .members-svg-link svg{position:absolute;top:14px;left:15px;max-width:30px;max-height:30px}.members_page_members-settings .plugin-card-members-edd-integration .members-svg-link svg,.members_page_members-settings .plugin-card-members-acf-integration .members-svg-link svg,.members_page_members-settings .plugin-card-members-givewp-integration .members-svg-link svg,.members_page_members-settings .plugin-card-members-meta-box-integration .members-svg-link svg,.members_page_members-settings .plugin-card-members-woocommerce-integration .members-svg-link svg{top:10px;left:8px;max-width:40px;max-height:40px}.members_page_members-settings .plugin-card-members-block-permissions .members-svg-link svg,.members_page_members-settings .plugin-card-members-role-hierarchy .members-svg-link svg{left:14px}.members-addons .plugin-card .desc>p,.members-addons .plugin-card .name{margin-left:84px}}.memberpress-about .welcome-panel-column-container{display:-webkit-box;display:-ms-flexbox;display:flex}.memberpress-about .mp-logo{max-width:256px;margin:50px}.members-about-addons{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-column-gap:20px}.members-about-addons .members-plugin-card{margin:0;width:100%}.members-about-addons .members-plugin-card .name h3 a{text-decoration:none}.members-about-addons .members-plugin-card .plugin-card-bottom{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}@media only screen and (max-width:1099px){.members-about-addons{grid-template-columns:1fr;grid-row-gap:20px}}@media screen and (min-width:1100px) and (max-width:1600px){.members-about-addons .members-plugin-card{float:none;width:auto;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.members-plugin-card.plugin-card .desc{margin-left:0;margin-top:50px}.members-plugin-card.plugin-card .desc p{margin-left:0;margin-right:0}.members-plugin-card.plugin-card .plugin-card-bottom .column-status{float:none}.members-plugin-card.plugin-card .plugin-card-bottom .column-updated{float:none;width:auto}}@media screen and (max-width:1200px){.welcome-panel .welcome-panel-column-container{-webkit-box-orient:vertical;-webkit-box-direction:reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse;gap:0;padding:0}.memberpress-about .mp-logo{margin:0 0 20px}}.members-plugin-card.plugin-card .desc p{margin-left:0;margin-right:0}@media only screen and (min-width:783px){.members_page_roles .column-users,.members_page_roles .column-granted_caps,.members_page_roles .column-denied_caps{width:100px;text-align:center}}.members-title-div #titlewrap input{padding:0 8px;font-size:1.7em;line-height:normal;height:1.7em;width:100%;outline:0;margin:0 0 3px;background-color:#fff}.members-title-div input[name="role"]{font-size:13px;height:22px;margin:0;width:16em}#tabcapsdiv{margin-top:1em}#tabcapsdiv>.hndle{padding:10px;border-bottom:1px solid #eee}#tabcapsdiv .inside,#members-cp .inside{margin:0;padding:0}.members-cap-tabs,.members-tabs{overflow:hidden;background:#fff;background:-webkit-gradient(linear,left top,right top,from(#fafafa),color-stop(20%,#fafafa),color-stop(20%,#fff),to(#fff));background:linear-gradient(90deg,#fafafa 0,#fafafa 20%,#fff 20%,#fff 100%)}@media only screen and (max-width:782px){.members-cap-tabs,.members-tabs{background:linear-gradient(90deg,#fafafa 0,#fafafa 48px,#fff 48px,#fff 100%)}}.members-cap-tabs .members-tab-nav,.members-tabs .members-tab-nav{position:relative;float:left;list-style:none;width:20%;line-height:1em;margin:0 0 -1px 0;padding:0;background-color:#fafafa;border-right:1px solid #eee;-webkit-box-sizing:border-box;box-sizing:border-box}.members-cap-tabs .members-tab-nav li,.members-tabs .members-tab-nav li{display:block;position:relative;margin:0;padding:0;line-height:20px}.members-cap-tabs .members-tab-nav li a,.members-tabs .members-tab-nav li a{display:block;margin:0;padding:10px;line-height:20px !important;text-decoration:none;border-bottom:1px solid #eee;-webkit-box-shadow:none;box-shadow:none}.members-cap-tabs .members-tab-nav li a .dashicons,.members-tabs .members-tab-nav li a .dashicons{line-height:20px;margin-right:3px}.members-cap-tabs .members-tab-nav li[aria-selected="true"] a,.members-tabs .members-tab-nav li[aria-selected="true"] a{position:relative;font-weight:bold;color:#555;background-color:#e0e0e0}@media only screen and (max-width:782px){.members-cap-tabs .members-tab-nav,.members-tabs .members-tab-nav{width:48px}.members-cap-tabs .members-tab-nav li a .dashicons,.members-tabs .members-tab-nav li a .dashicons{width:24px;height:24px;font-size:24px;line-height:24px}.members-tab-nav li .dashicons::before,.members-tab-nav li .dashicons::before{width:24px;height:24px}.members-tab-nav li .label{overflow:hidden;position:absolute;top:-1000em;left:-1000em;width:1px;height:1px}}.members-cap-tabs .members-tab-wrap,.members-tabs .members-tab-wrap{float:left;width:80%;margin-left:-1px}@media only screen and (max-width:782px){.members-cap-tabs .members-tab-wrap,.members-tabs .members-tab-wrap{width:calc(100% - 48px)}}#members-cp .members-tab-content{padding:10px;border-left:1px solid #e5e5e5}.members-roles-select th,.members-roles-select td{width:190px;overflow:hidden}.members-roles-select .check-all-th{text-align:center}.members-roles-select .check-all-th label{padding-left:5px}@media only screen and (min-width:850px){#side-sortables .members-tabs{background:#fff}#side-sortables .members-tabs .members-tab-wrap{width:100%}#side-sortables .members-tabs .members-tab-nav{display:table;width:100%}#side-sortables .members-tabs .members-tab-nav li{display:table-cell;text-align:center;border-right:1px solid #eee}#side-sortables .members-tabs .members-tab-nav li:last-of-type{border-right:0}#side-sortables .members-tabs .members-tab-nav li a{padding:10px 0}#side-sortables .members-tabs .members-tab-nav .dashicons{width:24px;height:24px;font-size:24px;line-height:24px}#side-sortables .members-tabs .members-tab-nav .dashicons::before{width:24px;height:24px}#side-sortables .members-tabs .members-tab-nav .label{overflow:hidden;position:absolute;top:-1000em;left:-1000em;width:1px;height:1px}}.members-tabs .members-tabs-label{display:block !important;font-weight:bold;display:inline-block;margin-bottom:4px}.members-tabs .butterbean-control-checkbox .members-tabs-label{display:inline !important}.members-tabs .members-tabs-description{display:block;font-style:italic;margin-top:4px}.members-tabs .members-tabs-label+.members-tabs-description{margin-top:0;margin-bottom:4px}#tabcapsdiv table{border-right:0;border-top:0;border-bottom:0}#tabcapsdiv table td,#tabcapsdiv table th{padding:10px;padding-bottom:10px;border-bottom:1px solid #eee;font-size:13px;line-height:20px}#tabcapsdiv table td{padding:9px}#tabcapsdiv tbody tr:last-of-type td{border-bottom:0}#tabcapsdiv tfoot th{border-color:#eee}@media only screen and (max-width:782px){#tabcapsdiv table td,#tabcapsdiv table th{line-height:24px}}.members-roles-select .column-grant,.members-roles-select .column-deny{width:70px !important;text-align:left;display:table-cell !important;clear:none !important}.members-roles-select thead th,.members-roles-select tfoot th{padding:9px !important}.members-roles-select .column-grant input,.members-roles-select .column-deny input{margin:0 5px 0 0;vertical-align:middle}.members-roles-select tbody tr:nth-child(even){background:#f2f2f2}.members-cap-tabs button{display:inline;margin:-4px;line-height:inherit;padding:4px 8px;border:1px solid transparent;background:transparent;border-radius:0;outline:0;-webkit-transition:all .25s ease-out;transition:all .25s ease-out}.members-cap-tabs button:hover,.members-cap-tabs button:focus{border-color:#eee;background:#fafafa;cursor:pointer}.members-cap-tabs button:active{color:#0073aa;border-color:#0073aa}.members-cap-tabs button+.dashicons{display:none;margin-top:1px;margin-bottom:-1px;line-height:inherit}.members-cap-tabs button:hover+.dashicons,.members-cap-tabs button:focus+.dashicons{display:inline-block}.members-tab-content .members-highlight{background-color:rgba(0,115,170,0.05)}.members-tab-content tbody{-webkit-transition:all 2s ease-in-out;transition:all 2s ease-in-out}.members-cp-role-list-wrap{overflow:auto;min-height:42px;max-height:200px;padding:0 .9em;border:solid 1px #dfdfdf;background-color:#fdfdfd}#wpbody-content{padding-bottom:200px}.members-footer-promotion{text-align:center;font-weight:400;font-size:13px;line-height:16px;color:#787c82;padding:20px 0 30px 0;margin-bottom:20px}.members-footer-promotion p{font-weight:600}.members-footer-promotion-links,.members-footer-promotion-social{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.members-footer-promotion-links{margin:9px 0 0}.members-footer-promotion-links span{color:#c3c4c7;padding:0 7px}.members-footer-promotion-social{margin:10px 0 0 0;gap:10px}.members-footer-promotion-social li{margin-bottom:0}.members-footer-promotion-social a{display:block;height:16px}.members_page_members-settings.rtl{.addon-activate{left:20px;right:unset}.members-addons .plugin-card{.name,.desc p{margin-left:0;margin-right:148px}}}.button.button-warning{background:#dc3232;border-color:#dc3232;color:#fff}.button.button-warning:hover,.button.button-warning:focus{background:#c92424;border-color:#c92424;color:#fff}.members-reset-spinner{float:none;margin-top:0;vertical-align:middle}.members-admin-menus-wrap{max-width:1400px}.members-admin-menus-toolbar{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;margin-bottom:16px}.members-am-copy-wrap label{margin-right:8px}.members-am-chips{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:8px;margin-bottom:12px}.members-am-chip{border-radius:999px;padding:4px 12px;border:1px solid #c3c4c7;background:#f6f7f7;cursor:pointer}.members-am-chip.is-active{background:#2271b1;border-color:#2271b1;color:#fff}.members-am-carousel-wrap{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;gap:8px;margin-bottom:8px}.members-am-carousel-prev,.members-am-carousel-next{-ms-flex-item-align:center;align-self:center;width:36px;height:36px;border-radius:50%;border:1px solid #c3c4c7;background:#fff;cursor:pointer}.members-am-columns{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-ms-flex:1;flex:1;gap:12px;min-height:320px;overflow:hidden}.members-am-column{-webkit-box-flex:1;-ms-flex:1;flex:1;min-width:0;background:#1d2327;border-radius:4px;color:#f0f0f1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.members-am-user-column{border:2px dashed #8c8f94}.members-am-sidebar-head{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:8px 10px;background:#2c3338;border-radius:4px 4px 0 0;font-weight:600;font-size:12px;text-transform:uppercase;letter-spacing:.04em}.members-am-col-move button{margin-left:4px;padding:0 6px;min-height:24px;line-height:22px;font-size:11px}.members-am-sidebar-list{padding:6px 0 12px;overflow-y:auto;max-height:480px}.members-am-item{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:6px 10px 6px 8px;cursor:pointer;border-left:3px solid transparent;font-size:13px}.members-am-item.is-sub{padding-left:22px;font-size:12px;opacity:.95}.members-am-item.is-sub-deep{padding-left:36px}.members-am-sidebar-list .members-am-item{cursor:-webkit-grab;cursor:grab}.members-am-sidebar-list .members-am-item:active{cursor:-webkit-grabbing;cursor:grabbing}.members-am-sort-placeholder{-webkit-box-sizing:border-box;box-sizing:border-box;min-height:36px;margin:2px 0;background:rgba(34,113,177,0.08);border:1px dashed #2271b1;border-radius:2px}.members-am-item.is-hidden{opacity:.18}.members-am-item.is-no-cap{opacity:.35}.members-am-item.is-no-cap.is-hidden{opacity:.15}.members-am-item.is-selected{border-left-color:#2271b1;background:rgba(34,113,177,0.15)}.members-am-item-main{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;min-width:0}.members-am-item-main .dashicons{font-size:18px;width:18px;height:18px}.members-am-item-label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.members-am-item-actions{display:none;gap:2px}.members-am-item:hover .members-am-item-actions{display:-webkit-box;display:-ms-flexbox;display:flex}.members-am-item-actions button{min-height:22px;padding:0 4px;line-height:20px;font-size:11px}.members-am-sep{text-align:center;opacity:.35;font-size:11px;padding:4px 0}.members-am-carousel-dots{text-align:center;margin-bottom:4px}.members-am-dot{width:8px;height:8px;border-radius:50%;border:0;margin:0 4px;padding:0;background:#c3c4c7;cursor:pointer}.members-am-dot.is-active{background:#2271b1}.members-am-carousel-status{text-align:center;color:#646970;font-size:12px;margin-top:0}.members-am-badge{font-size:9px;text-transform:uppercase;padding:1px 4px;border-radius:2px;margin-right:4px;vertical-align:middle}.members-am-badge-new{background:#2271b1;color:#fff}.members-am-badge-edit{background:#dba617;color:#1d2327}.members-am-badge-nocap{background:#8c8f94;color:#fff}.members-am-legend{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:16px;margin:0 0 8px;padding:0;font-size:12px;color:#646970}.members-am-legend-item{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:4px}.members-am-edit-panel{margin-top:20px;padding:16px;border:1px solid #c3c4c7;background:#fff;border-radius:4px}.members-am-edit-panel-header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:12px}.members-am-edit-panel-header h2{margin:0;font-size:16px}.members-am-edit-toolbar{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:12px;margin-bottom:12px}.members-am-edit-target-wrap select{margin-left:8px}.members-am-level-actions .button{margin-right:6px}.members-am-demote-wrap{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:6px}.members-am-demote-wrap .members-am-demote-select{min-width:200px;max-width:min(320px,100%)}.members-am-edit-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:16px}.members-am-edit-col label{display:block;font-weight:600;margin-bottom:4px}.members-am-icon-tabs{margin-bottom:8px}.members-am-icon-tabs .button{margin-right:4px;margin-bottom:4px}.members-am-icon-tabs .button.is-active{background:#2271b1;border-color:#2271b1;color:#fff}.members-am-icon-grid{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:4px;max-height:160px;overflow-y:auto;border:1px solid #dcdcde;padding:8px;background:#f6f7f7;margin-bottom:8px}.members-am-icon-pick{width:36px;height:36px;padding:0;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;border:1px solid #c3c4c7;background:#fff;cursor:pointer}.members-am-vis-row{display:block;margin-bottom:6px;font-weight:normal}.members-am-reset-dropdown{position:absolute;z-index:100;background:#fff;border:1px solid #c3c4c7;border-radius:6px;padding:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-shadow:0 4px 12px rgba(0,0,0,0.15);box-shadow:0 4px 12px rgba(0,0,0,0.15);min-width:280px;top:100%;left:0;margin-top:4px;overflow:hidden}.members-am-reset-title{padding:10px 14px;font-weight:600;font-size:13px;border-bottom:1px solid #f0f0f0;color:#1d2327}.members-am-reset-option{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;gap:10px;padding:12px 14px;border:0;background:0;cursor:pointer;text-align:left;width:100%;border-bottom:1px solid #f0f0f0;-webkit-transition:background .15s;transition:background .15s}.members-am-reset-option:last-child{border-bottom:0}.members-am-reset-option:hover{background:#f6f7f7}.members-am-reset-option .dashicons{margin-top:2px;color:#646970}.members-am-reset-option-text{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:2px}.members-am-reset-option-text strong{font-size:13px;color:#1d2327}.members-am-reset-option-text small{font-size:12px;color:#646970}.members-am-reset-danger:hover{background:#fcf0f1}.members-am-reset-danger .dashicons{color:#d63638}.members-am-reset-danger:hover strong{color:#d63638}@media screen and (max-width:782px){.members-am-columns{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}}.members-am-user-suggestions{position:absolute;z-index:100;background:#fff;border:1px solid #c3c4c7;border-radius:4px;max-height:200px;overflow-y:auto;width:100%;-webkit-box-shadow:0 2px 6px rgba(0,0,0,0.15);box-shadow:0 2px 6px rgba(0,0,0,0.15);top:100%;left:0}.members-am-user-suggestion{padding:8px 12px;cursor:pointer;font-size:13px;border-bottom:1px solid #f0f0f0}.members-am-user-suggestion:hover{background:#f0f6fc}.members-am-user-suggestion:last-child{border-bottom:0}
\ No newline at end of file
+#members-cp h2.hndle,#members-cp-side h2.hndle{border-bottom:none !important;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}#members-cp h2.hndle:before,#members-cp-side h2.hndle:before{content:url("data:image/svg+xml,%3Csvg width='15px' aria-hidden='true' focusable='false' data-prefix='fas' data-icon='users-cog' class='svg-inline--fa fa-users-cog fa-w-20' role='img' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 640 512'%3E%3Cpath fill='currentColor' d='M610.5 341.3c2.6-14.1 2.6-28.5 0-42.6l25.8-14.9c3-1.7 4.3-5.2 3.3-8.5-6.7-21.6-18.2-41.2-33.2-57.4-2.3-2.5-6-3.1-9-1.4l-25.8 14.9c-10.9-9.3-23.4-16.5-36.9-21.3v-29.8c0-3.4-2.4-6.4-5.7-7.1-22.3-5-45-4.8-66.2 0-3.3.7-5.7 3.7-5.7 7.1v29.8c-13.5 4.8-26 12-36.9 21.3l-25.8-14.9c-2.9-1.7-6.7-1.1-9 1.4-15 16.2-26.5 35.8-33.2 57.4-1 3.3.4 6.8 3.3 8.5l25.8 14.9c-2.6 14.1-2.6 28.5 0 42.6l-25.8 14.9c-3 1.7-4.3 5.2-3.3 8.5 6.7 21.6 18.2 41.1 33.2 57.4 2.3 2.5 6 3.1 9 1.4l25.8-14.9c10.9 9.3 23.4 16.5 36.9 21.3v29.8c0 3.4 2.4 6.4 5.7 7.1 22.3 5 45 4.8 66.2 0 3.3-.7 5.7-3.7 5.7-7.1v-29.8c13.5-4.8 26-12 36.9-21.3l25.8 14.9c2.9 1.7 6.7 1.1 9-1.4 15-16.2 26.5-35.8 33.2-57.4 1-3.3-.4-6.8-3.3-8.5l-25.8-14.9zM496 368.5c-26.8 0-48.5-21.8-48.5-48.5s21.8-48.5 48.5-48.5 48.5 21.8 48.5 48.5-21.7 48.5-48.5 48.5zM96 224c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm224 32c1.9 0 3.7-.5 5.6-.6 8.3-21.7 20.5-42.1 36.3-59.2 7.4-8 17.9-12.6 28.9-12.6 6.9 0 13.7 1.8 19.6 5.3l7.9 4.6c.8-.5 1.6-.9 2.4-1.4 7-14.6 11.2-30.8 11.2-48 0-61.9-50.1-112-112-112S208 82.1 208 144c0 61.9 50.1 112 112 112zm105.2 194.5c-2.3-1.2-4.6-2.6-6.8-3.9-8.2 4.8-15.3 9.8-27.5 9.8-10.9 0-21.4-4.6-28.9-12.6-18.3-19.8-32.3-43.9-40.2-69.6-10.7-34.5 24.9-49.7 25.8-50.3-.1-2.6-.1-5.2 0-7.8l-7.9-4.6c-3.8-2.2-7-5-9.8-8.1-3.3.2-6.5.6-9.8.6-24.6 0-47.6-6-68.5-16h-8.3C179.6 288 128 339.6 128 403.2V432c0 26.5 21.5 48 48 48h255.4c-3.7-6-6.2-12.8-6.2-20.3v-9.2zM173.1 274.6C161.5 263.1 145.6 256 128 256H64c-35.3 0-64 28.7-64 64v32c0 17.7 14.3 32 32 32h65.9c6.3-47.4 34.9-87.3 75.2-109.4z'%3E%3C/path%3E%3C/svg%3E");margin-right:5px}#members-cp-side .postbox-header{border-bottom:none !important}#members-cp-side .handle-actions .handle-order-higher,#members-cp-side .handle-actions .handle-order-lower{display:none}#members-cp-side .handle-actions .handlediv{position:absolute;right:5px}.members-upgrade-header{text-align:center;padding:5px}.members-upgrade-header a{color:#f59431}.memberpress-paid-memberships{background-color:#f5f5f5;padding:50px 10px;text-align:center}.memberpress-paid-memberships a{background-color:#0e4598;display:inline-block;padding:10px 20px;border-radius:300px;color:#fff;text-decoration:none;margin-top:20px}#members-cp-side .members-tabs{position:relative}#members-cp-side .members-tab-nav{background-color:transparent;margin-bottom:20px;border-right:none !important}#members-cp-side .members-tab-nav .members-tab-title{width:33.333%;height:50px;border-right:none !important}#members-cp-side .members-tab-nav .members-tab-title a{border:0}#members-cp-side .members-tab-content h3{font-weight:bold;font-size:15px;margin-top:0;color:#000;margin-bottom:10px}#members-cp-side .members-tab-content .memberpress-paid-memberships{text-align:left;padding:20px}#members-cp-side .members-tab-content .memberpress-paid-memberships a{display:block;text-align:center}#members-cp-side .members-tabs .members-tab-nav li a,#members-cp-side .members-tabs .members-tab-nav li[aria-selected="false"] a i{color:#555}#members-cp-side .members-tabs .members-tab-nav li a svg,#members-cp-side .members-tabs .members-tab-nav li[aria-selected="false"] a svg{fill:#555}#members-cp-side .members-tabs .members-tab-nav li[aria-selected="true"] a{background-color:transparent;border-bottom:2px solid #3582ae}#members-cp-side .members-tabs .members-tab-nav li[aria-selected="true"] a i{color:#3582ae}#members-cp-side .members-tabs .members-tab-nav li[aria-selected="true"] a svg{fill:#3582ae}.members-tab-title svg,.members-tab-title[aria-selected="false"] svg{fill:#0073aa}.members-tab-title[aria-selected="true"] svg{fill:#555}#wpcontent #members-admin-header{margin-left:-20px;padding:0;padding-left:22px;background-color:#f9f9f9;background-repeat:repeat;background-size:1200px 75px;min-height:36px;position:relative}#wpcontent #members-admin-header img.members-logo{height:90px}.members-upgrade-header #close-members-upgrade-header{position:absolute;right:20px;top:3px}.members-upgrade-header #close-members-upgrade-header:hover{cursor:pointer}.memberpress-welcome-panel.welcome-panel{margin-top:0;padding:40px 20px;background:#fff}.memberpress-welcome-panel.welcome-panel:before{background:0}.memberpress-welcome-panel.welcome-panel .about-description{margin:20px 0}.memberpress-welcome-panel.welcome-panel-content{margin:0}.memberpress-welcome-panel.welcome-panel-content .mp-logo-wrap>a{display:block}@media screen and (min-width:870px){.members_page_members-settings .members-short-p{max-width:612px;margin-left:auto;margin-right:auto}.members_page_members-settings .welcome-panel-content{text-align:center}}.members_page_members-settings .welcome-panel .button.button-hero{margin-left:auto;margin-right:auto}.members_page_members-settings .members-svg-wrap{display:inline-block;margin:0 auto 20px}@media screen and (max-width:870px){.members_page_members-settings .welcome-panel{padding:20px}.members_page_members-settings .members-svg-wrap{float:left;margin-right:28px}.admin_page_members-settings.rtl .members-svg-wrap{float:right;margin-right:0;margin-left:28px}}.members_page_members-settings .members-svg-link{display:table-cell;text-align:center;width:128px;height:128px;background:#363b3f;color:#fff;padding:24px 16px 16px;border-radius:50%;-webkit-box-sizing:border-box;box-sizing:border-box;border:4px solid #fff;-webkit-box-shadow:0 0 0 4px #363b3f;box-shadow:0 0 0 4px #363b3f}.members_page_members-settings .members-svg-link svg{max-width:84px;max-height:64px;width:auto;height:auto}.members-addons{display:grid;grid-template-columns:1fr 1fr;grid-row-gap:20px;grid-column-gap:20px}.members-addons .plugin-card{margin:0}.members-addons .plugin-card-top{width:100%}.members-addon{width:100%;position:relative;float:none;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.members-addon .desc{margin-bottom:80px}.addon-activate{text-align:center;border:1px solid #ddd;border-radius:3px;padding:5px 10px 10px;display:inline-block;width:100px;position:absolute;right:20px;bottom:20px}.activate-toggle:hover{cursor:pointer}.activate-toggle svg{max-width:20px;position:relative;top:5px}.activate-toggle svg{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.activate-toggle svg.active{-webkit-transform:rotate(0);transform:rotate(0)}.activate-toggle svg path{fill:#ccc}.activate-toggle svg.active path{fill:#8cbd5a}.activate-toggle.processing{cursor:not-allowed;pointer-events:none;opacity:.5}.activate-toggle .action-label{display:inline-block;width:50px;text-align:left}.mepr_dummy_txns{-webkit-filter:blur(3px);filter:blur(3px);position:absolute;top:0;left:0;width:100%;z-index:5;pointer-events:none}.mepr_dummy_txns::after{background-color:rgba(0,0,0,.2);position:absolute;top:0;left:0;width:100%;height:100%;z-index:6}.mepr-upgrade-table{position:relative}.mepr-upgrade-table .mepr-upgrade{position:relative;top:100px;z-index:10;background:rgba(0,0,0,.2);width:100%;height:100%;max-width:600px;margin:0 auto;-webkit-box-shadow:0 0 30px #ccc;box-shadow:0 0 30px #ccc}.mepr-upgrade-content{background-color:#fff;padding:20px;text-align:center}.mepr-upgrade-content h2{font-size:24px}.mepr-upgrade-content h4{font-size:18px}.mepr-upgrade-content .features{display:grid;grid-template-columns:1fr 1fr;grid-column-gap:30px;grid-row-gap:10px;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;text-align:left;padding:10px}.features li:before{content:"\f147";font-family:dashicons;color:green;font-size:20px;position:relative;top:4px;margin-right:10px}.mepr-upgrade-cta{text-align:center;background-color:#f2f2f2;padding:20px}.mepr-upgrade-cta .mepr-cta-button{display:block;max-width:300px;margin:0 auto 20px;background-color:#fd9c27;color:#fff;padding:15px;font-size:18px;font-weight:bold;text-decoration:none;border-radius:300px}.members-plugin-card.plugin-card:nth-child(even){margin-right:inherit}.members-plugin-card.plugin-card:nth-child(odd){clear:none;margin-left:inherit}.members-plugin-card.plugin-card .plugin-card-top{min-height:0;padding:30px 20px}.members-plugin-card.plugin-card .plugin-icon{top:30px}.members-plugin-card.plugin-card .plugin-card-bottom .column-status{font-weight:bold}.members-plugin-card.plugin-card .plugin-card-bottom .column-status .active{color:#8cbd5a}.members-plugin-card.plugin-card .plugin-card-bottom .column-status .inactive{color:red}.members-plugin-card.plugin-card .plugin-icon{width:64px;height:auto}.plugin-icon-small{width:32px;height:auto}.members-plugin-card.plugin-card .name,.members-plugin-card.plugin-card .desc{margin-right:0;margin-left:84px}.members-addons .plugin-card .name,.members-addons .plugin-card .desc p{margin-right:0}@media screen and (max-width:1100px){.members-addons{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}}@media screen and (max-width:600px){.members_page_members-settings .members-svg-link{width:64px;height:64px}.members_page_members-settings .members-svg-link svg{position:absolute;top:14px;left:15px;max-width:30px;max-height:30px}.members_page_members-settings .plugin-card-members-edd-integration .members-svg-link svg,.members_page_members-settings .plugin-card-members-acf-integration .members-svg-link svg,.members_page_members-settings .plugin-card-members-givewp-integration .members-svg-link svg,.members_page_members-settings .plugin-card-members-meta-box-integration .members-svg-link svg,.members_page_members-settings .plugin-card-members-woocommerce-integration .members-svg-link svg{top:10px;left:8px;max-width:40px;max-height:40px}.members_page_members-settings .plugin-card-members-block-permissions .members-svg-link svg,.members_page_members-settings .plugin-card-members-role-hierarchy .members-svg-link svg{left:14px}.members-addons .plugin-card .desc>p,.members-addons .plugin-card .name{margin-left:84px}}.memberpress-about .welcome-panel-column-container{display:-webkit-box;display:-ms-flexbox;display:flex}.memberpress-about .mp-logo{max-width:256px;margin:50px}.members-about-addons{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-column-gap:20px}.members-about-addons .members-plugin-card{margin:0;width:100%}.members-about-addons .members-plugin-card .name h3 a{text-decoration:none}.members-about-addons .members-plugin-card .plugin-card-bottom{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}@media only screen and (max-width:1099px){.members-about-addons{grid-template-columns:1fr;grid-row-gap:20px}}@media screen and (min-width:1100px) and (max-width:1600px){.members-about-addons .members-plugin-card{float:none;width:auto;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.members-plugin-card.plugin-card .desc{margin-left:0;margin-top:50px}.members-plugin-card.plugin-card .desc p{margin-left:0;margin-right:0}.members-plugin-card.plugin-card .plugin-card-bottom .column-status{float:none}.members-plugin-card.plugin-card .plugin-card-bottom .column-updated{float:none;width:auto}}@media screen and (max-width:1200px){.welcome-panel .welcome-panel-column-container{-webkit-box-orient:vertical;-webkit-box-direction:reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse;gap:0;padding:0}.memberpress-about .mp-logo{margin:0 0 20px}}.members-plugin-card.plugin-card .desc p{margin-left:0;margin-right:0}@media only screen and (min-width:783px){.members_page_roles .column-users,.members_page_roles .column-granted_caps,.members_page_roles .column-denied_caps{width:100px;text-align:center}}.members-title-div #titlewrap input{padding:0 8px;font-size:1.7em;line-height:normal;height:1.7em;width:100%;outline:0;margin:0 0 3px;background-color:#fff}.members-title-div input[name="role"]{font-size:13px;height:22px;margin:0;width:16em}#tabcapsdiv{margin-top:1em}#tabcapsdiv>.hndle{padding:10px;border-bottom:1px solid #eee}#tabcapsdiv .inside,#members-cp .inside{margin:0;padding:0}.members-cap-tabs,.members-tabs{overflow:hidden;background:#fff;background:-webkit-gradient(linear,left top,right top,from(#fafafa),color-stop(20%,#fafafa),color-stop(20%,#fff),to(#fff));background:linear-gradient(90deg,#fafafa 0,#fafafa 20%,#fff 20%,#fff 100%)}@media only screen and (max-width:782px){.members-cap-tabs,.members-tabs{background:linear-gradient(90deg,#fafafa 0,#fafafa 48px,#fff 48px,#fff 100%)}}.members-cap-tabs .members-tab-nav,.members-tabs .members-tab-nav{position:relative;float:left;list-style:none;width:20%;line-height:1em;margin:0 0 -1px 0;padding:0;background-color:#fafafa;border-right:1px solid #eee;-webkit-box-sizing:border-box;box-sizing:border-box}.members-cap-tabs .members-tab-nav li,.members-tabs .members-tab-nav li{display:block;position:relative;margin:0;padding:0;line-height:20px}.members-cap-tabs .members-tab-nav li a,.members-tabs .members-tab-nav li a{display:block;margin:0;padding:10px;line-height:20px !important;text-decoration:none;border-bottom:1px solid #eee;-webkit-box-shadow:none;box-shadow:none}.members-cap-tabs .members-tab-nav li a .dashicons,.members-tabs .members-tab-nav li a .dashicons{line-height:20px;margin-right:3px}.members-cap-tabs .members-tab-nav li[aria-selected="true"] a,.members-tabs .members-tab-nav li[aria-selected="true"] a{position:relative;font-weight:bold;color:#555;background-color:#e0e0e0}@media only screen and (max-width:782px){.members-cap-tabs .members-tab-nav,.members-tabs .members-tab-nav{width:48px}.members-cap-tabs .members-tab-nav li a .dashicons,.members-tabs .members-tab-nav li a .dashicons{width:24px;height:24px;font-size:24px;line-height:24px}.members-tab-nav li .dashicons::before,.members-tab-nav li .dashicons::before{width:24px;height:24px}.members-tab-nav li .label{overflow:hidden;position:absolute;top:-1000em;left:-1000em;width:1px;height:1px}}.members-cap-tabs .members-tab-wrap,.members-tabs .members-tab-wrap{float:left;width:80%;margin-left:-1px}@media only screen and (max-width:782px){.members-cap-tabs .members-tab-wrap,.members-tabs .members-tab-wrap{width:calc(100% - 48px)}}#members-cp .members-tab-content{padding:10px;border-left:1px solid #e5e5e5}.members-roles-select th,.members-roles-select td{width:190px;overflow:hidden}.members-roles-select .check-all-th{text-align:center}.members-roles-select .check-all-th label{padding-left:5px}@media only screen and (min-width:850px){#side-sortables .members-tabs{background:#fff}#side-sortables .members-tabs .members-tab-wrap{width:100%}#side-sortables .members-tabs .members-tab-nav{display:table;width:100%}#side-sortables .members-tabs .members-tab-nav li{display:table-cell;text-align:center;border-right:1px solid #eee}#side-sortables .members-tabs .members-tab-nav li:last-of-type{border-right:0}#side-sortables .members-tabs .members-tab-nav li a{padding:10px 0}#side-sortables .members-tabs .members-tab-nav .dashicons{width:24px;height:24px;font-size:24px;line-height:24px}#side-sortables .members-tabs .members-tab-nav .dashicons::before{width:24px;height:24px}#side-sortables .members-tabs .members-tab-nav .label{overflow:hidden;position:absolute;top:-1000em;left:-1000em;width:1px;height:1px}}.members-tabs .members-tabs-label{display:block !important;font-weight:bold;display:inline-block;margin-bottom:4px}.members-tabs .butterbean-control-checkbox .members-tabs-label{display:inline !important}.members-tabs .members-tabs-description{display:block;font-style:italic;margin-top:4px}.members-tabs .members-tabs-label+.members-tabs-description{margin-top:0;margin-bottom:4px}#tabcapsdiv table{border-right:0;border-top:0;border-bottom:0}#tabcapsdiv table td,#tabcapsdiv table th{padding:10px;padding-bottom:10px;border-bottom:1px solid #eee;font-size:13px;line-height:20px}#tabcapsdiv table td{padding:9px}#tabcapsdiv tbody tr:last-of-type td{border-bottom:0}#tabcapsdiv tfoot th{border-color:#eee}@media only screen and (max-width:782px){#tabcapsdiv table td,#tabcapsdiv table th{line-height:24px}}.members-roles-select .column-grant,.members-roles-select .column-deny{width:70px !important;text-align:left;display:table-cell !important;clear:none !important}.members-roles-select thead th,.members-roles-select tfoot th{padding:9px !important}.members-roles-select .column-grant input,.members-roles-select .column-deny input{margin:0 5px 0 0;vertical-align:middle}.members-roles-select tbody tr:nth-child(even){background:#f2f2f2}.members-cap-tabs button{display:inline;margin:-4px;line-height:inherit;padding:4px 8px;border:1px solid transparent;background:transparent;border-radius:0;outline:0;-webkit-transition:all .25s ease-out;transition:all .25s ease-out}.members-cap-tabs button:hover,.members-cap-tabs button:focus{border-color:#eee;background:#fafafa;cursor:pointer}.members-cap-tabs button:active{color:#0073aa;border-color:#0073aa}.members-cap-tabs button+.dashicons{display:none;margin-top:1px;margin-bottom:-1px;line-height:inherit}.members-cap-tabs button:hover+.dashicons,.members-cap-tabs button:focus+.dashicons{display:inline-block}.members-tab-content .members-highlight{background-color:rgba(0,115,170,0.05)}.members-tab-content tbody{-webkit-transition:all 2s ease-in-out;transition:all 2s ease-in-out}.members-cp-role-list-wrap{overflow:auto;min-height:42px;max-height:200px;padding:0 .9em;border:solid 1px #dfdfdf;background-color:#fdfdfd}#wpbody-content{padding-bottom:200px}.members-footer-promotion{text-align:center;font-weight:400;font-size:13px;line-height:16px;color:#787c82;padding:20px 0 30px 0;margin-bottom:20px}.members-footer-promotion p{font-weight:600}.members-footer-promotion-links,.members-footer-promotion-social{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.members-footer-promotion-links{margin:9px 0 0}.members-footer-promotion-links span{color:#c3c4c7;padding:0 7px}.members-footer-promotion-social{margin:10px 0 0 0;gap:10px}.members-footer-promotion-social li{margin-bottom:0}.members-footer-promotion-social a{display:block;height:16px}.members_page_members-settings.rtl{.addon-activate{left:20px;right:unset}.members-addons .plugin-card{.name,.desc p{margin-left:0;margin-right:148px}}}.button.button-warning{background:#dc3232;border-color:#dc3232;color:#fff}.button.button-warning:hover,.button.button-warning:focus{background:#c92424;border-color:#c92424;color:#fff}.members-reset-spinner{float:none;margin-top:0;vertical-align:middle}.members-admin-menus-wrap{max-width:1400px}.members-admin-menus-toolbar{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;margin-bottom:16px}.members-am-toolbar-loading{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;margin-left:4px;color:#50575e;font-size:13px;line-height:1}.members-am-toolbar-loading .spinner{float:none;margin:0}.members-am-toolbar-loading[hidden]{display:none !important}.members-am-copy-wrap label{margin-right:8px}.members-am-chips{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:8px;margin-bottom:12px}.members-am-chip{border-radius:999px;padding:4px 12px;border:1px solid #c3c4c7;background:#f6f7f7;cursor:pointer}.members-am-chip.is-active{background:#2271b1;border-color:#2271b1;color:#fff}.members-am-carousel-wrap{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;gap:8px;margin-bottom:8px}.members-am-carousel-prev,.members-am-carousel-next{-ms-flex-item-align:center;align-self:center;width:36px;height:36px;border-radius:50%;border:1px solid #c3c4c7;background:#fff;cursor:pointer}.members-am-columns{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-ms-flex:1;flex:1;gap:12px;min-height:320px;overflow:hidden}.members-am-column{-webkit-box-flex:1;-ms-flex:1;flex:1;min-width:0;background:#1d2327;border-radius:4px;color:#f0f0f1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.members-am-user-column{border:2px dashed #8c8f94}.members-am-sidebar-head{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:8px 10px;background:#2c3338;border-radius:4px 4px 0 0;font-weight:600;font-size:12px;text-transform:uppercase;letter-spacing:.04em}.members-am-col-move button{margin-left:4px;padding:0 6px;min-height:24px;line-height:22px;font-size:11px}.members-am-sidebar-list{padding:6px 0 12px;overflow-y:auto;max-height:480px}.members-am-item{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:6px 10px 6px 8px;cursor:pointer;border-left:3px solid transparent;font-size:13px}.members-am-item.is-sub{padding-left:22px;font-size:12px;opacity:.95}.members-am-item.is-sub-deep{padding-left:36px}.members-am-sidebar-list .members-am-item{cursor:-webkit-grab;cursor:grab}.members-am-sidebar-list .members-am-item:active{cursor:-webkit-grabbing;cursor:grabbing}.members-am-sort-placeholder{-webkit-box-sizing:border-box;box-sizing:border-box;min-height:36px;margin:2px 0;background:rgba(34,113,177,0.08);border:1px dashed #2271b1;border-radius:2px}.members-am-item.is-hidden{opacity:.18}.members-am-item.is-no-cap{opacity:.35}.members-am-item.is-no-cap.is-hidden{opacity:.15}.members-am-item.is-selected{border-left-color:#2271b1;background:rgba(34,113,177,0.15)}.members-am-item-main{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;min-width:0}.members-am-item-main .dashicons{font-size:18px;width:18px;height:18px}.members-am-item-label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.members-am-item-actions{display:none;gap:2px}.members-am-item:hover .members-am-item-actions{display:-webkit-box;display:-ms-flexbox;display:flex}.members-am-item-actions button{min-height:22px;padding:0 4px;line-height:20px;font-size:11px}.members-am-sep{text-align:center;opacity:.35;font-size:11px;padding:4px 0}.members-am-carousel-dots{text-align:center;margin-bottom:4px}.members-am-dot{width:8px;height:8px;border-radius:50%;border:0;margin:0 4px;padding:0;background:#c3c4c7;cursor:pointer}.members-am-dot.is-active{background:#2271b1}.members-am-carousel-status{text-align:center;color:#646970;font-size:12px;margin-top:0}.members-am-badge{font-size:9px;text-transform:uppercase;padding:1px 4px;border-radius:2px;margin-right:4px;vertical-align:middle}.members-am-badge-new{background:#2271b1;color:#fff}.members-am-badge-edit{background:#dba617;color:#1d2327}.members-am-badge-nocap{background:#8c8f94;color:#fff}.members-am-legend{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:16px;margin:0 0 8px;padding:0;font-size:12px;color:#646970}.members-am-legend-item{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:4px}.members-am-edit-panel{margin-top:20px;padding:16px;border:1px solid #c3c4c7;background:#fff;border-radius:4px}.members-am-edit-panel-header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:12px}.members-am-edit-panel-header h2{margin:0;font-size:16px}.members-am-edit-toolbar{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:12px;margin-bottom:12px}.members-am-edit-target-wrap select{margin-left:8px}.members-am-level-actions .button{margin-right:6px}.members-am-demote-wrap{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:6px}.members-am-demote-wrap .members-am-demote-select{min-width:200px;max-width:min(320px,100%)}.members-am-edit-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:16px}.members-am-edit-col label{display:block;font-weight:600;margin-bottom:4px}.members-am-icon-tabs{margin-bottom:8px}.members-am-icon-tabs .button{margin-right:4px;margin-bottom:4px}.members-am-icon-tabs .button.is-active{background:#2271b1;border-color:#2271b1;color:#fff}.members-am-icon-grid{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:4px;max-height:160px;overflow-y:auto;border:1px solid #dcdcde;padding:8px;background:#f6f7f7;margin-bottom:8px}.members-am-icon-pick{width:36px;height:36px;padding:0;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;border:1px solid #c3c4c7;background:#fff;cursor:pointer}.members-am-vis-row{display:block;margin-bottom:6px;font-weight:normal}.members-am-reset-dropdown{position:absolute;z-index:100;background:#fff;border:1px solid #c3c4c7;border-radius:6px;padding:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-shadow:0 4px 12px rgba(0,0,0,0.15);box-shadow:0 4px 12px rgba(0,0,0,0.15);min-width:280px;top:100%;left:0;margin-top:4px;overflow:hidden}.members-am-reset-title{padding:10px 14px;font-weight:600;font-size:13px;border-bottom:1px solid #f0f0f0;color:#1d2327}.members-am-reset-option{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;gap:10px;padding:12px 14px;border:0;background:0;cursor:pointer;text-align:left;width:100%;border-bottom:1px solid #f0f0f0;-webkit-transition:background .15s;transition:background .15s}.members-am-reset-option:last-child{border-bottom:0}.members-am-reset-option:hover{background:#f6f7f7}.members-am-reset-option .dashicons{margin-top:2px;color:#646970}.members-am-reset-option-text{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:2px}.members-am-reset-option-text strong{font-size:13px;color:#1d2327}.members-am-reset-option-text small{font-size:12px;color:#646970}.members-am-reset-danger:hover{background:#fcf0f1}.members-am-reset-danger .dashicons{color:#d63638}.members-am-reset-danger:hover strong{color:#d63638}@media screen and (max-width:782px){.members-am-columns{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}}.members-am-user-suggestions{position:absolute;z-index:100;background:#fff;border:1px solid #c3c4c7;border-radius:4px;max-height:200px;overflow-y:auto;width:100%;-webkit-box-shadow:0 2px 6px rgba(0,0,0,0.15);box-shadow:0 2px 6px rgba(0,0,0,0.15);top:100%;left:0}.members-am-user-suggestion{padding:8px 12px;cursor:pointer;font-size:13px;border-bottom:1px solid #f0f0f0}.members-am-user-suggestion:hover{background:#f0f6fc}.members-am-user-suggestion:last-child{border-bottom:0}
\ No newline at end of file
diff --git a/js/admin-menus.js b/js/admin-menus.js
index ac507ae..0f41a91 100644
--- a/js/admin-menus.js
+++ b/js/admin-menus.js
@@ -1480,8 +1480,27 @@
renderAll();
}
+ function beginAjaxToolbarLoading(message) {
+ var $w = $('#members-am-toolbar-loading');
+ $w.removeAttr('hidden');
+ $w.find('.spinner').addClass('is-active');
+ $w.find('.members-am-loading-text').text(message || '');
+ $('#members-am-save, #members-am-reset, #members-am-import, #members-am-copy-apply').prop('disabled', true);
+ }
+
+ function endAjaxToolbarLoading() {
+ var $w = $('#members-am-toolbar-loading');
+ $w.attr('hidden', true);
+ $w.find('.spinner').removeClass('is-active');
+ $w.find('.members-am-loading-text').text('');
+ $('#members-am-save, #members-am-reset, #members-am-import, #members-am-copy-apply').prop('disabled', false);
+ }
+
function saveSettings() {
- var $b = $('#members-am-save').prop('disabled', true);
+ var saving =
+ (membersAdminMenus.i18n && membersAdminMenus.i18n.saving) || 'Saving…';
+ beginAjaxToolbarLoading(saving);
+ var willReload = false;
$.post(
membersAdminMenus.ajaxUrl,
{
@@ -1489,15 +1508,17 @@
nonce: membersAdminMenus.nonce,
settings: JSON.stringify(state.settings),
}
- ).done(function (res) {
- if (res.success) {
- state.allowUnload = true;
- alert(membersAdminMenus.i18n.saved);
- location.reload();
- } else {
+ )
+ .done(function (res) {
+ if (res.success) {
+ state.allowUnload = true;
+ alert(membersAdminMenus.i18n.saved);
+ willReload = true;
+ location.reload();
+ return;
+ }
alert(res.data && res.data.message ? res.data.message : 'Error');
- }
- })
+ })
.fail(function () {
alert(
membersAdminMenus.i18n.networkError ||
@@ -1505,7 +1526,9 @@
);
})
.always(function () {
- $b.prop('disabled', false);
+ if (!willReload) {
+ endAjaxToolbarLoading();
+ }
});
}
@@ -1517,6 +1540,10 @@
if (!confirm(msg)) {
return;
}
+ var resetting =
+ (membersAdminMenus.i18n && membersAdminMenus.i18n.resetting) || 'Resetting…';
+ beginAjaxToolbarLoading(resetting);
+ var willReload = false;
$.post(
membersAdminMenus.ajaxUrl,
{
@@ -1524,36 +1551,73 @@
nonce: membersAdminMenus.nonce,
scope: scope || 'all',
role: role || '',
- },
- function (res) {
+ }
+ )
+ .done(function (res) {
if (res.success) {
state.allowUnload = true;
+ willReload = true;
location.reload();
- } else {
- alert(res.data && res.data.message ? res.data.message : 'Reset failed.');
+ return;
}
- }
- );
+ alert(res.data && res.data.message ? res.data.message : 'Reset failed.');
+ })
+ .fail(function () {
+ alert(
+ membersAdminMenus.i18n.networkError ||
+ 'Could not reset settings. Check your connection and try again.'
+ );
+ })
+ .always(function () {
+ if (!willReload) {
+ endAjaxToolbarLoading();
+ }
+ });
}
function importFile(file) {
+ var importing =
+ (membersAdminMenus.i18n && membersAdminMenus.i18n.importing) || 'Importing…';
+ beginAjaxToolbarLoading(importing);
var reader = new FileReader();
+ reader.onerror = function () {
+ endAjaxToolbarLoading();
+ alert(
+ (membersAdminMenus.i18n && membersAdminMenus.i18n.networkError) ||
+ 'Could not read the file.'
+ );
+ };
reader.onload = function () {
try {
var data = JSON.parse(reader.result);
+ var willReload = false;
$.post(membersAdminMenus.ajaxUrl, {
action: 'members_admin_menus_import',
nonce: membersAdminMenus.nonce,
settings: JSON.stringify(data),
- }).done(function (res) {
- if (res.success) {
- state.allowUnload = true;
- location.reload();
- } else {
+ })
+ .done(function (res) {
+ if (res.success) {
+ state.allowUnload = true;
+ willReload = true;
+ location.reload();
+ return;
+ }
alert(res.data && res.data.message ? res.data.message : 'Error');
- }
- });
+ })
+ .fail(function () {
+ alert(
+ membersAdminMenus.i18n.networkError ||
+ 'Could not import settings. Check your connection and try again.'
+ );
+ })
+ .always(function () {
+ if (!willReload) {
+ endAjaxToolbarLoading();
+ }
+ });
} catch (e) {
+ endAjaxToolbarLoading();
alert('Invalid JSON');
}
};
diff --git a/js/admin-menus.min.js b/js/admin-menus.min.js
index ed2f7ca..754e233 100644
--- a/js/admin-menus.min.js
+++ b/js/admin-menus.min.js
@@ -1 +1 @@
-!function(h){"use strict";var g={settings:h.extend(!0,{},membersAdminMenus.settings),tree:[],activeRoleSlugs:[],carouselPage:0,columnsPerPage:3,selectedId:null,iconTab:"dashicons",previewUserId:null,previewUserRoles:[],userSuggestions:[],mediaFrame:null,allowUnload:!1,syncScroll:function(){try{return"0"!==localStorage.getItem("members_am_sync_scroll")}catch(e){return!0}}()},s="";function n(){return function r(a){if(null===a)return"null";var e=typeof a;return"string"==e||"number"==e||"boolean"==e?JSON.stringify(a):"undefined"==e?"null":Array.isArray(a)?"["+a.map(function(e){return r(e)}).join(",")+"]":"object"!=e?JSON.stringify(a):"{"+Object.keys(a).sort().map(function(e){return JSON.stringify(e)+":"+r(a[e])}).join(",")+"}"}(g.settings)}function t(){if(!g.allowUnload&&n()!==s)return membersAdminMenus.i18n&&membersAdminMenus.i18n.unsavedChanges||""}var e=["dashicons-menu","dashicons-admin-dashboard","dashicons-admin-post","dashicons-admin-page","dashicons-admin-media","dashicons-admin-comments","dashicons-admin-appearance","dashicons-admin-plugins","dashicons-admin-users","dashicons-admin-tools","dashicons-admin-settings","dashicons-admin-generic","dashicons-edit","dashicons-plus","dashicons-chart-bar","dashicons-cart","dashicons-products","dashicons-email","dashicons-groups","dashicons-heart","dashicons-star-filled","dashicons-smiley","dashicons-info","dashicons-lock","dashicons-unlock","dashicons-visibility","dashicons-hidden","dashicons-arrow-up","dashicons-arrow-down","dashicons-admin-network","dashicons-performance"],r=["fa-solid fa-house","fa-solid fa-user","fa-solid fa-gear","fa-solid fa-file","fa-solid fa-image","fa-solid fa-cart-shopping","fa-solid fa-chart-line","fa-solid fa-envelope","fa-solid fa-book","fa-solid fa-link","fa-solid fa-bell","fa-solid fa-star","fa-solid fa-heart","fa-solid fa-lock","fa-solid fa-unlock","fa-solid fa-pen","fa-solid fa-trash","fa-solid fa-plus","fa-solid fa-minus"],i="members_am_view_state";function o(){try{localStorage.setItem(i,JSON.stringify({activeRoleSlugs:g.activeRoleSlugs,carouselPage:g.carouselPage}))}catch(e){}}function d(){return membersAdminMenus.roles||[]}function m(){g.settings._meta&&!Array.isArray(g.settings._meta)||(g.settings._meta={version:3,admin_editable:!1}),g.settings.roles&&!Array.isArray(g.settings.roles)||(g.settings.roles={}),g.settings.users&&!Array.isArray(g.settings.users)||(g.settings.users={}),Array.isArray(g.settings.custom_items)||(g.settings.custom_items=[]),g.settings.capabilities&&!Array.isArray(g.settings.capabilities)||(g.settings.capabilities={})}function _(e){m(),g.settings.roles[e]||(g.settings.roles[e]={hidden:[],order:[],submenu_order:{},overrides:{}});var r=g.settings.roles[e];return r.hidden&&Array.isArray(r.hidden)||(r.hidden=[]),r.order&&Array.isArray(r.order)||(r.order=[]),r.submenu_order&&!Array.isArray(r.submenu_order)||(r.submenu_order={}),r.overrides&&!Array.isArray(r.overrides)||(r.overrides={}),r}function x(e){m(),g.settings.users[e]||(g.settings.users[e]={});var r=g.settings.users[e];return r.hidden&&Array.isArray(r.hidden)||(r.hidden=[]),r.order&&Array.isArray(r.order)||(r.order=[]),r.overrides&&!Array.isArray(r.overrides)||(r.overrides={}),r.submenu_order&&!Array.isArray(r.submenu_order)||(r.submenu_order={}),r}function c(r){var e=x(r);return(e.order&&e.order.length?e.order.slice():w()).filter(function(e){return 0===e.indexOf("sep-")||!!b(e)&&!function(e,r){if(!r||-1!==r.indexOf("::"))return;var a=x(e),s=a.overrides&&a.overrides[r]||{};return s.parent&&"__promote__"!==s.parent}(r,e)})}function l(e,r,a,s){var n,t=x(e),i=t.overrides&&t.overrides[r]||{},o=a;!o&&i.parent&&"__promote__"!==i.parent&&(o=i.parent);var m,l,d,c,u=-1!==r.indexOf("::")?r.split("::").pop():r,p=(n=o?(t.submenu_order[o]||(t.submenu_order[o]=(m=e,d=S(l=o),c=x(m),g.tree.forEach(function(e){e&&e.id&&-1===e.id.indexOf("::")&&(c.overrides&&c.overrides[e.id]||{}).parent===l&&-1===d.indexOf(e.id)&&d.push(e.id)}),d)),t.submenu_order[o]):(t.order.length||(t.order=w()),t.order)).indexOf(u);if(-1!==p){var f=p+s;f<0||f>=n.length||(n.splice(p,1),n.splice(f,0,o?u:r))}}function u(e){var r=e.id||"c";return"members-am-"+String(r).replace(/[^a-z0-9_-]/gi,"-").toLowerCase()}function p(e){return!!e&&0===(-1!==e.indexOf("::")?e.split("::").pop():e).indexOf("members-am-")}function f(){var s=h.extend(!0,[],membersAdminMenus.menuTree||[]),n={};return s.forEach(function(e){n[e.id]=!0}),(g.settings.custom_items||[]).forEach(function(e){if(e&&e.id){var r=u(e);if(n[r]){for(var a=0;an&&(g.carouselPage=n))}}g.activeRoleSlugs=r.filter(function(e){return"administrator"!==e||a}),g.activeRoleSlugs.length||(g.activeRoleSlugs=["subscriber"])}function J(){var s=h("#members-am-role-chips").empty();d().forEach(function(e){if("administrator"!==e.slug||g.settings._meta.admin_editable){var r=-1!==g.activeRoleSlugs.indexOf(e.slug),a=h(' ').text(e.label).attr("data-role",e.slug).toggleClass("is-active",r);s.append(a)}})}function j(t,i,e,o,m){(function(e,r,a,s,n){n=n||0;var t=r.id,i=P(e,t),o=!R(e,r.cap),m=_(e).overrides[t]||{},l=m.label||r.title||t,d=h('
').attr("data-id",t).attr("data-menu-parent",a||"").toggleClass("is-hidden",i).toggleClass("is-no-cap",o).toggleClass("is-selected",g.selectedId===t).toggleClass("is-sub",0 ');if(0===n){var u=m.icon||r.icon,p=M(u,m.icon_type||r.icon_type);if("fontawesome"===p&&u)c.append(h(' '));else if("svg"!==p&&"image"!==p&&"custom"!==p||!u){var f=u&&0===u.indexOf("dashicons-")?u:"dashicons-admin-generic";c.append(h(' '))}else c.append(h(" ").attr("src",u).css({width:"20px",height:"20px",display:"inline-block",verticalAlign:"middle",objectFit:"contain",filter:"none"}))}r.custom&&c.append(h('custom '));m.label&&c.append(h('edit '));if(c.append(h(' ').text(l)),m.badge){var b=m.badge_bg||"#d63638";c.append(h(' ').text(m.badge).css({backgroundColor:b,color:"#fff",fontSize:"9px",padding:"1px 5px",borderRadius:"2px",marginLeft:"4px",whiteSpace:"nowrap"}))}o&&c.append(h(' Roles.\">🔒 no access "));d.append(c),m.color_bg&&d.css("background-color",m.color_bg);m.color_text&&d.find(".members-am-item-label").css("color",m.color_text);m.color_icon&&(d.find(".dashicons").css("color",m.color_icon),d.find(".members-am-fa-icon i").css("color",m.color_icon),d.find("img").css("filter","none"));var v=h('
');v.append(h(' ').text("◉"),h(' ').text("↑"),h(' ').text("↓")),d.append(v),s.append(d)})(t,i,e,o,m=m||0),i.children&&i.children.length&&A(t,i.id).forEach(function(e){var r,a,s,n=(r=t,a=i.id,b(I(a,s=e))||(-1===s.indexOf("::")&&(_(r).overrides[s]||{}).parent===a?b(s):null));n&&"__promote__"!==(_(t).overrides[n.id]||{}).parent&&j(t,n,i.id,o,m+1)})}function L(a,s,e,n,t,i){i=i||0,t.append(function(r,e,a,s,n){n=n||0;var t=s.overrides&&s.overrides[r.id]||{},i=t.label||r.title,o=function(e,r){var a=x(e);if(-1!==a.hidden.indexOf(r))return!0;var s=y(r,e);return!(!s||-1===a.hidden.indexOf(s))}(a,r.id),m=!function(e){if(!e||"read"===e)return 1;for(var r=g.previewUserRoles||[],a=0;a").addClass(d).attr("data-id",r.id).attr("data-menu-parent",e||""),u=h('
');if(0===n){var p=t.icon||r.icon,f=M(p,t.icon_type||r.icon_type);"fontawesome"===f&&p?u.append(h(' ')):"svg"!==f&&"image"!==f&&"custom"!==f||!p?p&&0===p.indexOf("dashicons-")?u.append(h(' ')):u.append(h(' ')):u.append(h(" ").attr("src",p).css({width:"20px",height:"20px",display:"inline-block",verticalAlign:"middle",objectFit:"contain",filter:"none"}))}r.custom&&u.append(h('custom '));t.label&&u.append(h('edit '));if(u.append(h(' ').text(i)),t.badge){var b=t.badge_bg||"#d63638";u.append(h(' ').text(t.badge).css({backgroundColor:b,color:"#fff",fontSize:"9px",padding:"1px 5px",borderRadius:"2px",marginLeft:"4px",whiteSpace:"nowrap"}))}m&&u.append(h('🔒 no access "));c.append(u),t.color_bg&&c.css("background-color",t.color_bg);t.color_text&&c.find(".members-am-item-label").css("color",t.color_text);t.color_icon&&(c.find(".dashicons").css("color",t.color_icon),c.find(".members-am-fa-icon i").css("color",t.color_icon));var v=h('
');return v.append(h(' ').text(o?"◯":"◉"),h(' ').text("↑"),h(' ').text("↓")),c.append(v),c.on("click",function(e){h(e.target).closest("button").length||(g.selectedId=r.id,Y())}),c}(s,e,a,n,i)),s.children&&s.children.length&&function(e,r){var a=S(r),s=x(e);g.tree.forEach(function(e){e&&e.id&&-1===e.id.indexOf("::")&&(s.overrides&&s.overrides[e.id]||{}).parent===r&&-1===a.indexOf(e.id)&&a.push(e.id)});var n=s.submenu_order&&s.submenu_order[r];if(!n||!n.length)return a.slice();var t=n.filter(function(e){return-1!==a.indexOf(e)});return a.forEach(function(e){-1===t.indexOf(e)&&t.push(e)}),t}(a,s.id).forEach(function(e){var r=function(e,r,a){var s=b(I(r,a));if(s)return s;if(-1===a.indexOf("::")){var n=x(e);if((n.overrides&&n.overrides[a]||{}).parent===r)return b(a)}return null}(a,s.id,e);r&&"__promote__"!==(n.overrides&&n.overrides[r.id]||{}).parent&&L(a,r,s.id,n,t,i+1)})}function F(e){return-1!==e.indexOf("::")?e.split("::").pop():e}function z(){h.fn.sortable&&h("#members-am-columns .members-am-sidebar-list").each(function(){var e=h(this);e.data("ui-sortable")&&e.sortable("destroy");var r=e.closest(".members-am-column"),a=r.data("role"),s=r.data("user");e.sortable({axis:"y",distance:6,items:"> .members-am-item, > .members-am-sep",cancel:".members-am-item-actions button",placeholder:"members-am-sort-placeholder",forcePlaceholderSize:!0,tolerance:"pointer",update:function(){s?function(e,r){var n=[],t={};e.children().each(function(){var e=h(this);if(e.hasClass("members-am-sep")){var r=e.attr("data-sep-id");r&&n.push(r)}else if(e.hasClass("members-am-item")){var a=e.attr("data-id");if(a){var s=e.attr("data-menu-parent");void 0===s||""===s?n.push(a):(t[s]||(t[s]=[]),t[s].push(F(a)))}}});var a=x(r);a.order=n,a.submenu_order=t}(e,s):a&&function(e,r){var n=[],t={};e.children().each(function(){var e=h(this);if(e.hasClass("members-am-sep")){var r=e.attr("data-sep-id");r&&n.push(r)}else if(e.hasClass("members-am-item")){var a=e.attr("data-id");if(a){var s=e.attr("data-menu-parent");void 0===s||""===s?n.push(a):(t[s]||(t[s]=[]),t[s].push(F(a)))}}});var a=_(r);a.order=n,a.submenu_order=t}(e,a),W()}})})}function D(){var a=h("#members-am-columns"),s={};a.find(".members-am-column").each(function(){var e=h(this).data("role");if(e){var r=h(this).find(".members-am-sidebar-list");r.length&&(s[e]=r.scrollTop())}}),a.empty();var e=g.carouselPage*g.columnsPerPage;if(g.activeRoleSlugs.slice(e,e+g.columnsPerPage).forEach(function(e){var r=h('
');!function(a,e){e.empty();var r=h(''),s=(d().filter(function(e){return e.slug===a})[0]||{}).label||a;r.append(h('').text(s)),r.append(h(' ').append(h(' ').text("◀"),h(' ').text("▶"))),e.append(r);var n=h('');k(a).forEach(function(e){if(0!==e.indexOf("sep-")){var r=b(e);r&&j(a,r,null,n,0)}else n.append(h('
').attr("data-sep-id",e).text("—"))}),e.append(n)}(e,r),a.append(r),s[e]&&r.find(".members-am-sidebar-list").scrollTop(s[e])}),g.previewUserId){var n=g.previewUserId,r=h('
'),t=h('');t.append(h(" ").text(g.previewUserLabel||"User #"+n)),t.append(h('× ').on("click",function(){g.previewUserId=null,g.previewUserLabel=null,g.previewUserRoles=[],Y()})),r.append(t);var i=h(''),o=x(n);c(n).forEach(function(e){if(0!==e.indexOf("sep-")){var r=b(e);r&&L(n,r,null,o,i,0)}else i.append(h('
').attr("data-sep-id",e).text("——"))}),r.append(i),a.append(r)}if(g.syncScroll){var m=a.find(".members-am-sidebar-list"),l=!1;m.on("scroll",function(){if(!l){l=!0;var e=h(this).scrollTop();m.not(this).scrollTop(e),l=!1}})}!function(){var e=Math.max(1,Math.ceil(g.activeRoleSlugs.length/g.columnsPerPage)),r=(Math.min(g.carouselPage+1,e),g.carouselPage*g.columnsPerPage+1),a=Math.min((g.carouselPage+1)*g.columnsPerPage,g.activeRoleSlugs.length);h("#members-am-carousel-status").text(r+"–"+a+" "+membersAdminMenus.i18n.of+" "+g.activeRoleSlugs.length);for(var s=h("#members-am-carousel-dots").empty(),n=0;n ').toggleClass("is-active",n===g.carouselPage))}(),z()}function W(){if(g.selectedId){h("#members-am-edit-panel").removeAttr("hidden");var e=b(g.selectedId),r=U()||{};h("#members-am-edit-title").text(e?e.title:g.selectedId),h("#members-am-edit-label").val(r.label||e&&e.title||"");var a=p(g.selectedId);h("#members-am-edit-url-wrap").toggle(a),h("#members-am-edit-url").attr("placeholder","Override URL (leave empty for default)").val(a&&(r.url||e&&e.url)||"").data("default-url",e&&e.url||""),h("#members-am-icon-type").val(r.icon_type||"dashicon"),h("#members-am-icon-value").val(r.icon||e&&e.icon||"");var s=r.icon||e&&e.icon||"",n=M(s,r.icon_type||e&&e.icon_type||"");"image"!==n&&"custom"!==n&&"svg"!==n||!s?h("#members-am-icon-preview").hide():h("#members-am-icon-preview").show().attr("src",s),h("#members-am-color-bg").val(r.color_bg||""),h("#members-am-color-text").val(r.color_text||""),h("#members-am-color-icon").val(r.color_icon||""),h("#members-am-badge-text").val(r.badge||""),h("#members-am-badge-bg").val(r.badge_bg||""),h("#members-am-item-cap").attr("placeholder",e&&e.cap?e.cap+" (default)":"").val(g.settings.capabilities[g.selectedId]||"");var t=e&&e.custom;h("#members-am-remove-custom").toggle(!!t),h("#members-am-visibility-toggles").empty();var i=e&&e.cap||"read";d().forEach(function(e){if("administrator"!==e.slug||g.settings._meta.admin_editable){var r=P(e.slug,g.selectedId),a=R(e.slug,i),s=h(' ').attr("data-role",e.slug).prop("checked",!r&&a);a||s.prop("disabled",!0);var n=h(' ').append(s,h(" ").text(e.label));a||(n.append(h(" ").text(" — no capability").css({color:"#999",fontStyle:"italic",marginLeft:"4px"})),n.css("opacity","0.5")),h("#members-am-visibility-toggles").append(n)}}),h(".members-am-color").each(function(){h(this).data("wpWpColorPicker")&&h(this).wpColorPicker("destroy")}),h(".members-am-color").wpColorPicker({change:function(e,r){setTimeout(function(){Q()},20)},clear:function(){setTimeout(function(){Q()},20)}}),q(),function(){var e=h(".members-am-demote-wrap"),a=h("#members-am-demote-parent"),r=h("#members-am-demote");if(!g.selectedId)return e.attr("hidden",!0);if(v(g.selectedId))return e.attr("hidden",!0);var s=E()[0]||g.activeRoleSlugs[0];if(s&&O(s,g.selectedId))return e.attr("hidden",!0);e.removeAttr("hidden");var n=g.selectedId,t=membersAdminMenus.i18n&&membersAdminMenus.i18n.selectParentMenu||"";a.empty().append(h(" ").val("").text(t));var i=0;g.tree.forEach(function(e){if(e&&e.id&&e.id!==n){var r=e.title&&String(e.title).trim()?e.title:e.id;a.append(h(" ").val(e.id).text(r)),i++}});var o=0 ');"dashicons"===a?r.append(h(' ')):r.append(h(' ')),r.on("click",function(){h("#members-am-icon-value").val(e),h("#members-am-icon-type").val("dashicons"===a?"dashicon":"fontawesome"),Q()}),n.append(r)}})}function a(e,r){var a=g.activeRoleSlugs.indexOf(e);if(-1!==a){var s=a+r;if(!(s<0||s>=g.activeRoleSlugs.length)){var n=g.activeRoleSlugs[a];g.activeRoleSlugs[a]=g.activeRoleSlugs[s],g.activeRoleSlugs[s]=n,o(),Y()}}}function B(e,r,a){var s,n,t,i=_(e).overrides[r]||{},o=null;if("__promote__"===i.parent?o=null:-1!==r.indexOf("::")?o=v(r):i.parent&&"__promote__"!==i.parent&&(o=i.parent),o){var m=_(e).submenu_order;m[o]||(m[o]=(s=e,t=S(n=o),g.tree.forEach(function(e){e&&e.id&&-1===e.id.indexOf("::")&&(_(s).overrides[e.id]||{}).parent===n&&-1===t.indexOf(e.id)&&t.push(e.id)}),t));var l=m[o],d=-1!==r.indexOf("::")?r.split("::").pop():r;if(-1===(u=l.indexOf(d)))return;if((p=u+a)<0||p>=l.length)return;var c=l[u];l[u]=l[p],l[p]=c}else{_(e).order&&_(e).order.length||(_(e).order=w());var u,p,f=_(e).order;if(-1===(u=f.indexOf(r)))return;if((p=u+a)<0||p>=f.length)return;var b=f[u];f[u]=f[p],f[p]=b}Y()}function G(){var e=E();if(e.length){var s="sep-"+Date.now();e.forEach(function(e){_(e).order&&_(e).order.length||(_(e).order=w());var r=_(e).order,a=g.selectedId?r.indexOf(g.selectedId):r.length-1;a<0&&(a=r.length),r.splice(a+1,0,s)}),Y()}}function H(){var e=h("#members-am-save").prop("disabled",!0);h.post(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_save",nonce:membersAdminMenus.nonce,settings:JSON.stringify(g.settings)}).done(function(e){e.success?(g.allowUnload=!0,alert(membersAdminMenus.i18n.saved),location.reload()):alert(e.data&&e.data.message?e.data.message:"Error")}).fail(function(){alert(membersAdminMenus.i18n.networkError||"Could not save settings. Check your connection and try again.")}).always(function(){e.prop("disabled",!1)})}function K(e,r){confirm("role"===e&&r?"Reset all settings for this role? This cannot be undone.":"Reset ALL menu settings for every role? This cannot be undone.")&&h.post(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_reset",nonce:membersAdminMenus.nonce,scope:e||"all",role:r||""},function(e){e.success?(g.allowUnload=!0,location.reload()):alert(e.data&&e.data.message?e.data.message:"Reset failed.")})}function V(e){h.getJSON(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_user_search",nonce:membersAdminMenus.nonce,term:e},function(e){e.success&&e.data&&e.data.length?function(e){h(".members-am-user-suggestions").remove();var r=h("#members-am-user-search").parent();r.css("position","relative");var a=h('
');e.forEach(function(e){a.append(h('
').text(e.label).data("userId",e.id).on("click",function(){!function(e,r,a){g.previewUserId=e,g.previewUserLabel=r||"User #"+e,g.previewUserRoles=a||[],m(),g.settings.users[e]||(g.settings.users[e]={});Y()}(e.id,e.label,e.roles),h(".members-am-user-suggestions").remove(),h("#members-am-user-search").val("")}))}),r.append(a),setTimeout(function(){h(document).one("click",function(){h(".members-am-user-suggestions").remove()})},0)}(e.data):h(".members-am-user-suggestions").remove()})}function X(){var r;h(document).on("click","#members-am-role-chips .members-am-chip",function(){var e=h(this).data("role"),r=g.activeRoleSlugs.indexOf(e);-1===r?g.activeRoleSlugs.push(e):1 ');if(t.append(h('
').text("Reset Settings")),s&&n){var i=h(' ');i.append(h(' ')),i.append(h(' ').append(h(" ").text("Reset "+n),h(" ").text("Clear all menu settings for this role only"))),i.on("click",function(){h(".members-am-reset-dropdown").remove(),K("role",s)}),t.append(i)}var o=h(' ');o.append(h(' ')),o.append(h(' ').append(h(" ").text("Reset all roles"),h(" ").text("Clear all menu settings for every role"))),o.on("click",function(){h(".members-am-reset-dropdown").remove(),K("all")}),t.append(o),r.parent().css("position","relative"),t.insertAfter(r),h(document).one("click",function(){h(".members-am-reset-dropdown").remove()})}),h("#members-am-export").on("click",function(e){e.preventDefault(),window.location.href=membersAdminMenus.exportUrl}),h("#members-am-import").on("click",function(){h("#members-am-import-file").trigger("click")}),h("#members-am-import-file").on("change",function(){var e,r,a=this.files&&this.files[0];a&&(e=a,(r=new FileReader).onload=function(){try{var e=JSON.parse(r.result);h.post(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_import",nonce:membersAdminMenus.nonce,settings:JSON.stringify(e)}).done(function(e){e.success?(g.allowUnload=!0,location.reload()):alert(e.data&&e.data.message?e.data.message:"Error")})}catch(e){alert("Invalid JSON")}},r.readAsText(e))}),h("#members-am-copy-apply").on("click",function(){var a=h("#members-am-copy-from").val(),r=h("#members-am-copy-to").val();if(a&&r)if(a!==r){var s="",n="";if(d().forEach(function(e){e.slug===a&&(s=e.label),e.slug===r&&(n=e.label)}),confirm('Copy menu settings from "'+s+'" to "'+n+'"?\nThis will overwrite "'+n+"\" menu configuration.\n\nNote: This copies menu order, hidden items, labels, icons, and colors.\nIt does NOT change the role's capabilities (items marked with a lock icon).")){var e=_(a),t={hidden:e.hidden?e.hidden.slice():[],order:[],submenu_order:{},overrides:{}},i=k(a);t.order=i.slice(),g.tree.forEach(function(e){if(e.children&&e.children.length){var r=A(a,e.id);r&&r.length&&(t.submenu_order[e.id]=r.slice())}}),e.overrides&&"object"==typeof e.overrides&&(t.overrides=JSON.parse(JSON.stringify(e.overrides))),g.settings.roles[r]=t,-1===g.activeRoleSlugs.indexOf(r)&&(g.activeRoleSlugs.push(r),o(),J()),Y(),H()}}else alert("Source and target roles must be different.")}),h("#members-am-admin-editable").on("change",function(){var e=!0;h(this).is(":checked")&&(e=window.confirm(membersAdminMenus.i18n.adminEditableWarn)),e?(g.settings._meta.admin_editable=h(this).is(":checked"),N(),J(),o(),Y()):h(this).prop("checked",!1)}),h("#members-am-sync-scroll").prop("checked",!1!==g.syncScroll),h("#members-am-sync-scroll").on("change",function(){g.syncScroll=h(this).is(":checked");try{localStorage.setItem("members_am_sync_scroll",g.syncScroll?"1":"0")}catch(e){}D()}),h("#members-am-add-item").on("click",function(){var e="c"+Date.now();g.settings.custom_items.push({id:e,label:"Custom link",url:window.location.origin+"/wp-admin/",icon_type:"dashicon",icon:"dashicons-admin-generic",parent:"",position:99,cap:"read"}),g.tree=f(),g.selectedId=u({id:e}),Y(),W()}),h("#members-am-remove-custom").on("click",function(){var r=b(g.selectedId);r&&r.customId&&(g.settings.custom_items=(g.settings.custom_items||[]).filter(function(e){return e.id!==r.customId}),g.selectedId=null,g.tree=f(),Y(),h("#members-am-edit-panel").attr("hidden",!0))}),h("#members-am-edit-close").on("click",function(){g.selectedId=null,h("#members-am-edit-panel").attr("hidden",!0),Y()}),h("#members-am-edit-target-role").on("change",W),h("#members-am-edit-label, #members-am-edit-url, #members-am-icon-value, #members-am-badge-text").on("input",function(){Q()}),h("#members-am-item-cap").on("input",function(){Q()}),h(".members-am-icon-tabs .button").on("click",function(){h(".members-am-icon-tabs .button").removeClass("is-active"),h(this).addClass("is-active"),g.iconTab="fontawesome"===h(this).data("tab")?"fontawesome":"upload"===h(this).data("tab")?"upload":"dashicons",q()}),h("#members-am-icon-search").on("input",q),h("#members-am-media-upload").on("click",function(e){e.preventDefault(),g.mediaFrame||(g.mediaFrame=wp.media({title:"Choose menu icon",button:{text:"Use as icon"},multiple:!1,library:{type:"image"}}),g.mediaFrame.on("select",function(){var e=g.mediaFrame.state().get("selection").first().toJSON(),r=e.url||"";e.sizes&&(e.sizes.thumbnail?r=e.sizes.thumbnail.url:e.sizes.medium&&(r=e.sizes.medium.url)),h("#members-am-icon-type").val("custom"),h("#members-am-icon-value").val(r),Q()})),g.mediaFrame.open()}),h(document).on("change",".members-am-vis-cb",function(){var e=h(this).data("role");if(h(this).is(":checked")){var r=_(e).hidden,a=r.indexOf(g.selectedId);-1!==a&&r.splice(a,1)}else-1===_(e).hidden.indexOf(g.selectedId)&&_(e).hidden.push(g.selectedId);Y()}),h("#members-am-add-sep").on("click",G),h("#members-am-promote").on("click",function(){if(g.selectedId){var n=g.selectedId,e=U()||{};if(-1===n.indexOf("::")&&e.parent&&"__promote__"!==e.parent){var t=e.parent,r=C();if(r){var a=x(r);if(a.overrides[n]&&delete a.overrides[n].parent,a.submenu_order&&a.submenu_order[t]){var s=a.submenu_order[t].indexOf(n);-1!==s&&a.submenu_order[t].splice(s,1)}if(a.order.length||(a.order=w()),-1===a.order.indexOf(n)){var i=a.order.indexOf(t);-1!==i?a.order.splice(i+1,0,n):a.order.push(n)}}else E().forEach(function(e){var r=_(e);if(r.overrides[n]&&delete r.overrides[n].parent,r.submenu_order&&r.submenu_order[t]){var a=r.submenu_order[t].indexOf(n);-1!==a&&r.submenu_order[t].splice(a,1)}if(r.order&&r.order.length||(r.order=w()),-1===r.order.indexOf(n)){var s=r.order.indexOf(t);-1!==s?r.order.splice(s+1,0,n):r.order.push(n)}});return Q(),void W()}T("parent","__promote__");var o=v(n);E().forEach(function(e){var r=_(e);if(r.order&&r.order.length||(r.order=w()),-1===r.order.indexOf(n))if(o){var a=r.order.indexOf(o);-1!==a?r.order.splice(a+1,0,n):r.order.push(n)}else r.order.push(n)}),Q(),W()}}),h("#members-am-demote").on("click",function(){var e=h("#members-am-demote-parent").val();e?(T("parent",e),Q(),W()):window.alert(membersAdminMenus.i18n&&membersAdminMenus.i18n.selectParentFirst||"Please choose a parent menu from the list.")}),h("#members-am-user-search").on("input",function(){var e=h(this).val();clearTimeout(r),r=setTimeout(function(){1 ").val("__all__").text("All roles")),g.activeRoleSlugs.forEach(function(r){var e=(d().filter(function(e){return e.slug===r})[0]||{}).label||r;a.append(h(" ").val(r).text(e))}),g.previewUserId&&a.append(h(" ").val("__user__"+g.previewUserId).text(g.previewUserLabel||"User #"+g.previewUserId)),g.selectedId&&W()}h(function(){var r,a,e;m(),g.tree=f(),N(),h("#members-am-admin-editable").prop("checked",!!g.settings._meta.admin_editable),r=h("#members-am-copy-from").empty(),a=h("#members-am-copy-to").empty(),(e=d()).forEach(function(e){r.append(h(" ").val(e.slug).text(e.label)),a.append(h(" ").val(e.slug).text(e.label))}),1=n.length||(n.splice(p,1),n.splice(f,0,o?u:r))}}function u(e){var r=e.id||"c";return"members-am-"+String(r).replace(/[^a-z0-9_-]/gi,"-").toLowerCase()}function p(e){return!!e&&0===(-1!==e.indexOf("::")?e.split("::").pop():e).indexOf("members-am-")}function f(){var a=h.extend(!0,[],membersAdminMenus.menuTree||[]),n={};return a.forEach(function(e){n[e.id]=!0}),(g.settings.custom_items||[]).forEach(function(e){if(e&&e.id){var r=u(e);if(n[r]){for(var s=0;sn&&(g.carouselPage=n))}}g.activeRoleSlugs=r.filter(function(e){return"administrator"!==e||s}),g.activeRoleSlugs.length||(g.activeRoleSlugs=["subscriber"])}function J(){var a=h("#members-am-role-chips").empty();l().forEach(function(e){if("administrator"!==e.slug||g.settings._meta.admin_editable){var r=-1!==g.activeRoleSlugs.indexOf(e.slug),s=h(' ').text(e.label).attr("data-role",e.slug).toggleClass("is-active",r);a.append(s)}})}function j(t,i,e,o,m){(function(e,r,s,a,n){n=n||0;var t=r.id,i=M(e,t),o=!R(e,r.cap),m=_(e).overrides[t]||{},d=m.label||r.title||t,l=h('
').attr("data-id",t).attr("data-menu-parent",s||"").toggleClass("is-hidden",i).toggleClass("is-no-cap",o).toggleClass("is-selected",g.selectedId===t).toggleClass("is-sub",0 ');if(0===n){var u=m.icon||r.icon,p=P(u,m.icon_type||r.icon_type);if("fontawesome"===p&&u)c.append(h(' '));else if("svg"!==p&&"image"!==p&&"custom"!==p||!u){var f=u&&0===u.indexOf("dashicons-")?u:"dashicons-admin-generic";c.append(h(' '))}else c.append(h(" ").attr("src",u).css({width:"20px",height:"20px",display:"inline-block",verticalAlign:"middle",objectFit:"contain",filter:"none"}))}r.custom&&c.append(h('custom '));m.label&&c.append(h('edit '));if(c.append(h(' ').text(d)),m.badge){var b=m.badge_bg||"#d63638";c.append(h(' ').text(m.badge).css({backgroundColor:b,color:"#fff",fontSize:"9px",padding:"1px 5px",borderRadius:"2px",marginLeft:"4px",whiteSpace:"nowrap"}))}o&&c.append(h(' Roles.\">🔒 no access "));l.append(c),m.color_bg&&l.css("background-color",m.color_bg);m.color_text&&l.find(".members-am-item-label").css("color",m.color_text);m.color_icon&&(l.find(".dashicons").css("color",m.color_icon),l.find(".members-am-fa-icon i").css("color",m.color_icon),l.find("img").css("filter","none"));var v=h('
');v.append(h(' ').text("◉"),h(' ').text("↑"),h(' ').text("↓")),l.append(v),a.append(l)})(t,i,e,o,m=m||0),i.children&&i.children.length&&S(t,i.id).forEach(function(e){var r,s,a,n=(r=t,s=i.id,b(I(s,a=e))||(-1===a.indexOf("::")&&(_(r).overrides[a]||{}).parent===s?b(a):null));n&&"__promote__"!==(_(t).overrides[n.id]||{}).parent&&j(t,n,i.id,o,m+1)})}function L(s,a,e,n,t,i){i=i||0,t.append(function(r,e,s,a,n){n=n||0;var t=a.overrides&&a.overrides[r.id]||{},i=t.label||r.title,o=function(e,r){var s=x(e);if(-1!==s.hidden.indexOf(r))return!0;var a=y(r,e);return!(!a||-1===s.hidden.indexOf(a))}(s,r.id),m=!function(e){if(!e||"read"===e)return 1;for(var r=g.previewUserRoles||[],s=0;s").addClass(l).attr("data-id",r.id).attr("data-menu-parent",e||""),u=h('
');if(0===n){var p=t.icon||r.icon,f=P(p,t.icon_type||r.icon_type);"fontawesome"===f&&p?u.append(h(' ')):"svg"!==f&&"image"!==f&&"custom"!==f||!p?p&&0===p.indexOf("dashicons-")?u.append(h(' ')):u.append(h(' ')):u.append(h(" ").attr("src",p).css({width:"20px",height:"20px",display:"inline-block",verticalAlign:"middle",objectFit:"contain",filter:"none"}))}r.custom&&u.append(h('custom '));t.label&&u.append(h('edit '));if(u.append(h(' ').text(i)),t.badge){var b=t.badge_bg||"#d63638";u.append(h(' ').text(t.badge).css({backgroundColor:b,color:"#fff",fontSize:"9px",padding:"1px 5px",borderRadius:"2px",marginLeft:"4px",whiteSpace:"nowrap"}))}m&&u.append(h('🔒 no access "));c.append(u),t.color_bg&&c.css("background-color",t.color_bg);t.color_text&&c.find(".members-am-item-label").css("color",t.color_text);t.color_icon&&(c.find(".dashicons").css("color",t.color_icon),c.find(".members-am-fa-icon i").css("color",t.color_icon));var v=h('
');return v.append(h(' ').text(o?"◯":"◉"),h(' ').text("↑"),h(' ').text("↓")),c.append(v),c.on("click",function(e){h(e.target).closest("button").length||(g.selectedId=r.id,$())}),c}(a,e,s,n,i)),a.children&&a.children.length&&function(e,r){var s=A(r),a=x(e);g.tree.forEach(function(e){e&&e.id&&-1===e.id.indexOf("::")&&(a.overrides&&a.overrides[e.id]||{}).parent===r&&-1===s.indexOf(e.id)&&s.push(e.id)});var n=a.submenu_order&&a.submenu_order[r];if(!n||!n.length)return s.slice();var t=n.filter(function(e){return-1!==s.indexOf(e)});return s.forEach(function(e){-1===t.indexOf(e)&&t.push(e)}),t}(s,a.id).forEach(function(e){var r=function(e,r,s){var a=b(I(r,s));if(a)return a;if(-1===s.indexOf("::")){var n=x(e);if((n.overrides&&n.overrides[s]||{}).parent===r)return b(s)}return null}(s,a.id,e);r&&"__promote__"!==(n.overrides&&n.overrides[r.id]||{}).parent&&L(s,r,a.id,n,t,i+1)})}function F(e){return-1!==e.indexOf("::")?e.split("::").pop():e}function z(){h.fn.sortable&&h("#members-am-columns .members-am-sidebar-list").each(function(){var e=h(this);e.data("ui-sortable")&&e.sortable("destroy");var r=e.closest(".members-am-column"),s=r.data("role"),a=r.data("user");e.sortable({axis:"y",distance:6,items:"> .members-am-item, > .members-am-sep",cancel:".members-am-item-actions button",placeholder:"members-am-sort-placeholder",forcePlaceholderSize:!0,tolerance:"pointer",update:function(){a?function(e,r){var n=[],t={};e.children().each(function(){var e=h(this);if(e.hasClass("members-am-sep")){var r=e.attr("data-sep-id");r&&n.push(r)}else if(e.hasClass("members-am-item")){var s=e.attr("data-id");if(s){var a=e.attr("data-menu-parent");void 0===a||""===a?n.push(s):(t[a]||(t[a]=[]),t[a].push(F(s)))}}});var s=x(r);s.order=n,s.submenu_order=t}(e,a):s&&function(e,r){var n=[],t={};e.children().each(function(){var e=h(this);if(e.hasClass("members-am-sep")){var r=e.attr("data-sep-id");r&&n.push(r)}else if(e.hasClass("members-am-item")){var s=e.attr("data-id");if(s){var a=e.attr("data-menu-parent");void 0===a||""===a?n.push(s):(t[a]||(t[a]=[]),t[a].push(F(s)))}}});var s=_(r);s.order=n,s.submenu_order=t}(e,s),W()}})})}function D(){var s=h("#members-am-columns"),a={};s.find(".members-am-column").each(function(){var e=h(this).data("role");if(e){var r=h(this).find(".members-am-sidebar-list");r.length&&(a[e]=r.scrollTop())}}),s.empty();var e=g.carouselPage*g.columnsPerPage;if(g.activeRoleSlugs.slice(e,e+g.columnsPerPage).forEach(function(e){var r=h('
');!function(s,e){e.empty();var r=h(''),a=(l().filter(function(e){return e.slug===s})[0]||{}).label||s;r.append(h('').text(a)),r.append(h(' ').append(h(' ').text("◀"),h(' ').text("▶"))),e.append(r);var n=h('');k(s).forEach(function(e){if(0!==e.indexOf("sep-")){var r=b(e);r&&j(s,r,null,n,0)}else n.append(h('
').attr("data-sep-id",e).text("—"))}),e.append(n)}(e,r),s.append(r),a[e]&&r.find(".members-am-sidebar-list").scrollTop(a[e])}),g.previewUserId){var n=g.previewUserId,r=h('
'),t=h('');t.append(h(" ").text(g.previewUserLabel||"User #"+n)),t.append(h('× ').on("click",function(){g.previewUserId=null,g.previewUserLabel=null,g.previewUserRoles=[],$()})),r.append(t);var i=h(''),o=x(n);c(n).forEach(function(e){if(0!==e.indexOf("sep-")){var r=b(e);r&&L(n,r,null,o,i,0)}else i.append(h('
').attr("data-sep-id",e).text("——"))}),r.append(i),s.append(r)}if(g.syncScroll){var m=s.find(".members-am-sidebar-list"),d=!1;m.on("scroll",function(){if(!d){d=!0;var e=h(this).scrollTop();m.not(this).scrollTop(e),d=!1}})}!function(){var e=Math.max(1,Math.ceil(g.activeRoleSlugs.length/g.columnsPerPage)),r=(Math.min(g.carouselPage+1,e),g.carouselPage*g.columnsPerPage+1),s=Math.min((g.carouselPage+1)*g.columnsPerPage,g.activeRoleSlugs.length);h("#members-am-carousel-status").text(r+"–"+s+" "+membersAdminMenus.i18n.of+" "+g.activeRoleSlugs.length);for(var a=h("#members-am-carousel-dots").empty(),n=0;n ').toggleClass("is-active",n===g.carouselPage))}(),z()}function W(){if(g.selectedId){h("#members-am-edit-panel").removeAttr("hidden");var e=b(g.selectedId),r=U()||{};h("#members-am-edit-title").text(e?e.title:g.selectedId),h("#members-am-edit-label").val(r.label||e&&e.title||"");var s=p(g.selectedId);h("#members-am-edit-url-wrap").toggle(s),h("#members-am-edit-url").attr("placeholder","Override URL (leave empty for default)").val(s&&(r.url||e&&e.url)||"").data("default-url",e&&e.url||""),h("#members-am-icon-type").val(r.icon_type||"dashicon"),h("#members-am-icon-value").val(r.icon||e&&e.icon||"");var a=r.icon||e&&e.icon||"",n=P(a,r.icon_type||e&&e.icon_type||"");"image"!==n&&"custom"!==n&&"svg"!==n||!a?h("#members-am-icon-preview").hide():h("#members-am-icon-preview").show().attr("src",a),h("#members-am-color-bg").val(r.color_bg||""),h("#members-am-color-text").val(r.color_text||""),h("#members-am-color-icon").val(r.color_icon||""),h("#members-am-badge-text").val(r.badge||""),h("#members-am-badge-bg").val(r.badge_bg||""),h("#members-am-item-cap").attr("placeholder",e&&e.cap?e.cap+" (default)":"").val(g.settings.capabilities[g.selectedId]||"");var t=e&&e.custom;h("#members-am-remove-custom").toggle(!!t),h("#members-am-visibility-toggles").empty();var i=e&&e.cap||"read";l().forEach(function(e){if("administrator"!==e.slug||g.settings._meta.admin_editable){var r=M(e.slug,g.selectedId),s=R(e.slug,i),a=h(' ').attr("data-role",e.slug).prop("checked",!r&&s);s||a.prop("disabled",!0);var n=h(' ').append(a,h(" ").text(e.label));s||(n.append(h(" ").text(" — no capability").css({color:"#999",fontStyle:"italic",marginLeft:"4px"})),n.css("opacity","0.5")),h("#members-am-visibility-toggles").append(n)}}),h(".members-am-color").each(function(){h(this).data("wpWpColorPicker")&&h(this).wpColorPicker("destroy")}),h(".members-am-color").wpColorPicker({change:function(e,r){setTimeout(function(){Q()},20)},clear:function(){setTimeout(function(){Q()},20)}}),q(),function(){var e=h(".members-am-demote-wrap"),s=h("#members-am-demote-parent"),r=h("#members-am-demote");if(!g.selectedId)return e.attr("hidden",!0);if(v(g.selectedId))return e.attr("hidden",!0);var a=C()[0]||g.activeRoleSlugs[0];if(a&&O(a,g.selectedId))return e.attr("hidden",!0);e.removeAttr("hidden");var n=g.selectedId,t=membersAdminMenus.i18n&&membersAdminMenus.i18n.selectParentMenu||"";s.empty().append(h(" ").val("").text(t));var i=0;g.tree.forEach(function(e){if(e&&e.id&&e.id!==n){var r=e.title&&String(e.title).trim()?e.title:e.id;s.append(h(" ").val(e.id).text(r)),i++}});var o=0 ');"dashicons"===s?r.append(h(' ')):r.append(h(' ')),r.on("click",function(){h("#members-am-icon-value").val(e),h("#members-am-icon-type").val("dashicons"===s?"dashicon":"fontawesome"),Q()}),n.append(r)}})}function s(e,r){var s=g.activeRoleSlugs.indexOf(e);if(-1!==s){var a=s+r;if(!(a<0||a>=g.activeRoleSlugs.length)){var n=g.activeRoleSlugs[s];g.activeRoleSlugs[s]=g.activeRoleSlugs[a],g.activeRoleSlugs[a]=n,o(),$()}}}function B(e,r,s){var a,n,t,i=_(e).overrides[r]||{},o=null;if("__promote__"===i.parent?o=null:-1!==r.indexOf("::")?o=v(r):i.parent&&"__promote__"!==i.parent&&(o=i.parent),o){var m=_(e).submenu_order;m[o]||(m[o]=(a=e,t=A(n=o),g.tree.forEach(function(e){e&&e.id&&-1===e.id.indexOf("::")&&(_(a).overrides[e.id]||{}).parent===n&&-1===t.indexOf(e.id)&&t.push(e.id)}),t));var d=m[o],l=-1!==r.indexOf("::")?r.split("::").pop():r;if(-1===(u=d.indexOf(l)))return;if((p=u+s)<0||p>=d.length)return;var c=d[u];d[u]=d[p],d[p]=c}else{_(e).order&&_(e).order.length||(_(e).order=w());var u,p,f=_(e).order;if(-1===(u=f.indexOf(r)))return;if((p=u+s)<0||p>=f.length)return;var b=f[u];f[u]=f[p],f[p]=b}$()}function G(){var e=C();if(e.length){var a="sep-"+Date.now();e.forEach(function(e){_(e).order&&_(e).order.length||(_(e).order=w());var r=_(e).order,s=g.selectedId?r.indexOf(g.selectedId):r.length-1;s<0&&(s=r.length),r.splice(s+1,0,a)}),$()}}function H(e){var r=h("#members-am-toolbar-loading");r.removeAttr("hidden"),r.find(".spinner").addClass("is-active"),r.find(".members-am-loading-text").text(e||""),h("#members-am-save, #members-am-reset, #members-am-import, #members-am-copy-apply").prop("disabled",!0)}function K(){var e=h("#members-am-toolbar-loading");e.attr("hidden",!0),e.find(".spinner").removeClass("is-active"),e.find(".members-am-loading-text").text(""),h("#members-am-save, #members-am-reset, #members-am-import, #members-am-copy-apply").prop("disabled",!1)}function V(){H(membersAdminMenus.i18n&&membersAdminMenus.i18n.saving||"Saving…");var r=!1;h.post(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_save",nonce:membersAdminMenus.nonce,settings:JSON.stringify(g.settings)}).done(function(e){if(e.success)return g.allowUnload=!0,alert(membersAdminMenus.i18n.saved),r=!0,void location.reload();alert(e.data&&e.data.message?e.data.message:"Error")}).fail(function(){alert(membersAdminMenus.i18n.networkError||"Could not save settings. Check your connection and try again.")}).always(function(){r||K()})}function X(e,r){if(confirm("role"===e&&r?"Reset all settings for this role? This cannot be undone.":"Reset ALL menu settings for every role? This cannot be undone.")){H(membersAdminMenus.i18n&&membersAdminMenus.i18n.resetting||"Resetting…");var s=!1;h.post(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_reset",nonce:membersAdminMenus.nonce,scope:e||"all",role:r||""}).done(function(e){if(e.success)return g.allowUnload=!0,s=!0,void location.reload();alert(e.data&&e.data.message?e.data.message:"Reset failed.")}).fail(function(){alert(membersAdminMenus.i18n.networkError||"Could not reset settings. Check your connection and try again.")}).always(function(){s||K()})}}function Y(e){h.getJSON(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_user_search",nonce:membersAdminMenus.nonce,term:e},function(e){e.success&&e.data&&e.data.length?function(e){h(".members-am-user-suggestions").remove();var r=h("#members-am-user-search").parent();r.css("position","relative");var s=h('
');e.forEach(function(e){s.append(h('
').text(e.label).data("userId",e.id).on("click",function(){!function(e,r,s){g.previewUserId=e,g.previewUserLabel=r||"User #"+e,g.previewUserRoles=s||[],m(),g.settings.users[e]||(g.settings.users[e]={});$()}(e.id,e.label,e.roles),h(".members-am-user-suggestions").remove(),h("#members-am-user-search").val("")}))}),r.append(s),setTimeout(function(){h(document).one("click",function(){h(".members-am-user-suggestions").remove()})},0)}(e.data):h(".members-am-user-suggestions").remove()})}function Z(){var r;h(document).on("click","#members-am-role-chips .members-am-chip",function(){var e=h(this).data("role"),r=g.activeRoleSlugs.indexOf(e);-1===r?g.activeRoleSlugs.push(e):1 ');if(t.append(h('
').text("Reset Settings")),a&&n){var i=h(' ');i.append(h(' ')),i.append(h(' ').append(h(" ").text("Reset "+n),h(" ").text("Clear all menu settings for this role only"))),i.on("click",function(){h(".members-am-reset-dropdown").remove(),X("role",a)}),t.append(i)}var o=h(' ');o.append(h(' ')),o.append(h(' ').append(h(" ").text("Reset all roles"),h(" ").text("Clear all menu settings for every role"))),o.on("click",function(){h(".members-am-reset-dropdown").remove(),X("all")}),t.append(o),r.parent().css("position","relative"),t.insertAfter(r),h(document).one("click",function(){h(".members-am-reset-dropdown").remove()})}),h("#members-am-export").on("click",function(e){e.preventDefault(),window.location.href=membersAdminMenus.exportUrl}),h("#members-am-import").on("click",function(){h("#members-am-import-file").trigger("click")}),h("#members-am-import-file").on("change",function(){var e=this.files&&this.files[0];e&&function(e){H(membersAdminMenus.i18n&&membersAdminMenus.i18n.importing||"Importing…");var s=new FileReader;s.onerror=function(){K(),alert(membersAdminMenus.i18n&&membersAdminMenus.i18n.networkError||"Could not read the file.")},s.onload=function(){try{var e=JSON.parse(s.result),r=!1;h.post(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_import",nonce:membersAdminMenus.nonce,settings:JSON.stringify(e)}).done(function(e){if(e.success)return g.allowUnload=!0,r=!0,void location.reload();alert(e.data&&e.data.message?e.data.message:"Error")}).fail(function(){alert(membersAdminMenus.i18n.networkError||"Could not import settings. Check your connection and try again.")}).always(function(){r||K()})}catch(e){K(),alert("Invalid JSON")}},s.readAsText(e)}(e)}),h("#members-am-copy-apply").on("click",function(){var s=h("#members-am-copy-from").val(),r=h("#members-am-copy-to").val();if(s&&r)if(s!==r){var a="",n="";if(l().forEach(function(e){e.slug===s&&(a=e.label),e.slug===r&&(n=e.label)}),confirm('Copy menu settings from "'+a+'" to "'+n+'"?\nThis will overwrite "'+n+"\" menu configuration.\n\nNote: This copies menu order, hidden items, labels, icons, and colors.\nIt does NOT change the role's capabilities (items marked with a lock icon).")){var e=_(s),t={hidden:e.hidden?e.hidden.slice():[],order:[],submenu_order:{},overrides:{}},i=k(s);t.order=i.slice(),g.tree.forEach(function(e){if(e.children&&e.children.length){var r=S(s,e.id);r&&r.length&&(t.submenu_order[e.id]=r.slice())}}),e.overrides&&"object"==typeof e.overrides&&(t.overrides=JSON.parse(JSON.stringify(e.overrides))),g.settings.roles[r]=t,-1===g.activeRoleSlugs.indexOf(r)&&(g.activeRoleSlugs.push(r),o(),J()),$(),V()}}else alert("Source and target roles must be different.")}),h("#members-am-admin-editable").on("change",function(){var e=!0;h(this).is(":checked")&&(e=window.confirm(membersAdminMenus.i18n.adminEditableWarn)),e?(g.settings._meta.admin_editable=h(this).is(":checked"),N(),J(),o(),$()):h(this).prop("checked",!1)}),h("#members-am-sync-scroll").prop("checked",!1!==g.syncScroll),h("#members-am-sync-scroll").on("change",function(){g.syncScroll=h(this).is(":checked");try{localStorage.setItem("members_am_sync_scroll",g.syncScroll?"1":"0")}catch(e){}D()}),h("#members-am-add-item").on("click",function(){var e="c"+Date.now();g.settings.custom_items.push({id:e,label:"Custom link",url:window.location.origin+"/wp-admin/",icon_type:"dashicon",icon:"dashicons-admin-generic",parent:"",position:99,cap:"read"}),g.tree=f(),g.selectedId=u({id:e}),$(),W()}),h("#members-am-remove-custom").on("click",function(){var r=b(g.selectedId);r&&r.customId&&(g.settings.custom_items=(g.settings.custom_items||[]).filter(function(e){return e.id!==r.customId}),g.selectedId=null,g.tree=f(),$(),h("#members-am-edit-panel").attr("hidden",!0))}),h("#members-am-edit-close").on("click",function(){g.selectedId=null,h("#members-am-edit-panel").attr("hidden",!0),$()}),h("#members-am-edit-target-role").on("change",W),h("#members-am-edit-label, #members-am-edit-url, #members-am-icon-value, #members-am-badge-text").on("input",function(){Q()}),h("#members-am-item-cap").on("input",function(){Q()}),h(".members-am-icon-tabs .button").on("click",function(){h(".members-am-icon-tabs .button").removeClass("is-active"),h(this).addClass("is-active"),g.iconTab="fontawesome"===h(this).data("tab")?"fontawesome":"upload"===h(this).data("tab")?"upload":"dashicons",q()}),h("#members-am-icon-search").on("input",q),h("#members-am-media-upload").on("click",function(e){e.preventDefault(),g.mediaFrame||(g.mediaFrame=wp.media({title:"Choose menu icon",button:{text:"Use as icon"},multiple:!1,library:{type:"image"}}),g.mediaFrame.on("select",function(){var e=g.mediaFrame.state().get("selection").first().toJSON(),r=e.url||"";e.sizes&&(e.sizes.thumbnail?r=e.sizes.thumbnail.url:e.sizes.medium&&(r=e.sizes.medium.url)),h("#members-am-icon-type").val("custom"),h("#members-am-icon-value").val(r),Q()})),g.mediaFrame.open()}),h(document).on("change",".members-am-vis-cb",function(){var e=h(this).data("role");if(h(this).is(":checked")){var r=_(e).hidden,s=r.indexOf(g.selectedId);-1!==s&&r.splice(s,1)}else-1===_(e).hidden.indexOf(g.selectedId)&&_(e).hidden.push(g.selectedId);$()}),h("#members-am-add-sep").on("click",G),h("#members-am-promote").on("click",function(){if(g.selectedId){var n=g.selectedId,e=U()||{};if(-1===n.indexOf("::")&&e.parent&&"__promote__"!==e.parent){var t=e.parent,r=E();if(r){var s=x(r);if(s.overrides[n]&&delete s.overrides[n].parent,s.submenu_order&&s.submenu_order[t]){var a=s.submenu_order[t].indexOf(n);-1!==a&&s.submenu_order[t].splice(a,1)}if(s.order.length||(s.order=w()),-1===s.order.indexOf(n)){var i=s.order.indexOf(t);-1!==i?s.order.splice(i+1,0,n):s.order.push(n)}}else C().forEach(function(e){var r=_(e);if(r.overrides[n]&&delete r.overrides[n].parent,r.submenu_order&&r.submenu_order[t]){var s=r.submenu_order[t].indexOf(n);-1!==s&&r.submenu_order[t].splice(s,1)}if(r.order&&r.order.length||(r.order=w()),-1===r.order.indexOf(n)){var a=r.order.indexOf(t);-1!==a?r.order.splice(a+1,0,n):r.order.push(n)}});return Q(),void W()}T("parent","__promote__");var o=v(n);C().forEach(function(e){var r=_(e);if(r.order&&r.order.length||(r.order=w()),-1===r.order.indexOf(n))if(o){var s=r.order.indexOf(o);-1!==s?r.order.splice(s+1,0,n):r.order.push(n)}else r.order.push(n)}),Q(),W()}}),h("#members-am-demote").on("click",function(){var e=h("#members-am-demote-parent").val();e?(T("parent",e),Q(),W()):window.alert(membersAdminMenus.i18n&&membersAdminMenus.i18n.selectParentFirst||"Please choose a parent menu from the list.")}),h("#members-am-user-search").on("input",function(){var e=h(this).val();clearTimeout(r),r=setTimeout(function(){1 ").val("__all__").text("All roles")),g.activeRoleSlugs.forEach(function(r){var e=(l().filter(function(e){return e.slug===r})[0]||{}).label||r;s.append(h(" ").val(r).text(e))}),g.previewUserId&&s.append(h(" ").val("__user__"+g.previewUserId).text(g.previewUserLabel||"User #"+g.previewUserId)),g.selectedId&&W()}h(function(){var r,s,e;m(),g.tree=f(),N(),h("#members-am-admin-editable").prop("checked",!!g.settings._meta.admin_editable),r=h("#members-am-copy-from").empty(),s=h("#members-am-copy-to").empty(),(e=l()).forEach(function(e){r.append(h(" ").val(e.slug).text(e.label)),s.append(h(" ").val(e.slug).text(e.label))}),1
Date: Fri, 10 Apr 2026 15:22:58 +0200
Subject: [PATCH 21/73] feat(admin): add loading message for copying action in
admin menus
---
addons/members-admin-menus/app/functions-admin.php | 1 +
js/admin-menus.js | 11 ++++++++---
js/admin-menus.min.js | 2 +-
3 files changed, 10 insertions(+), 4 deletions(-)
diff --git a/addons/members-admin-menus/app/functions-admin.php b/addons/members-admin-menus/app/functions-admin.php
index 4c63e29..8d62949 100644
--- a/addons/members-admin-menus/app/functions-admin.php
+++ b/addons/members-admin-menus/app/functions-admin.php
@@ -200,6 +200,7 @@ function enqueue_admin_menus_assets() {
'selectParentMenu' => __( 'Select parent menu…', 'members' ),
'selectParentFirst' => __( 'Please choose a parent menu from the list.', 'members' ),
'saving' => __( 'Saving…', 'members' ),
+ 'copying' => __( 'Copying…', 'members' ),
'resetting' => __( 'Resetting…', 'members' ),
'importing' => __( 'Importing…', 'members' ),
),
diff --git a/js/admin-menus.js b/js/admin-menus.js
index 0f41a91..a43b8e9 100644
--- a/js/admin-menus.js
+++ b/js/admin-menus.js
@@ -1496,9 +1496,11 @@
$('#members-am-save, #members-am-reset, #members-am-import, #members-am-copy-apply').prop('disabled', false);
}
- function saveSettings() {
+ function saveSettings(loadingMessage) {
var saving =
- (membersAdminMenus.i18n && membersAdminMenus.i18n.saving) || 'Saving…';
+ loadingMessage ||
+ (membersAdminMenus.i18n && membersAdminMenus.i18n.saving) ||
+ 'Saving…';
beginAjaxToolbarLoading(saving);
var willReload = false;
$.post(
@@ -1879,7 +1881,10 @@
}
renderAll();
- saveSettings();
+ var copying =
+ (membersAdminMenus.i18n && membersAdminMenus.i18n.copying) ||
+ 'Copying…';
+ saveSettings(copying);
});
$('#members-am-admin-editable').on('change', function () {
diff --git a/js/admin-menus.min.js b/js/admin-menus.min.js
index 754e233..d8596b7 100644
--- a/js/admin-menus.min.js
+++ b/js/admin-menus.min.js
@@ -1 +1 @@
-!function(h){"use strict";var g={settings:h.extend(!0,{},membersAdminMenus.settings),tree:[],activeRoleSlugs:[],carouselPage:0,columnsPerPage:3,selectedId:null,iconTab:"dashicons",previewUserId:null,previewUserRoles:[],userSuggestions:[],mediaFrame:null,allowUnload:!1,syncScroll:function(){try{return"0"!==localStorage.getItem("members_am_sync_scroll")}catch(e){return!0}}()},a="";function n(){return function r(s){if(null===s)return"null";var e=typeof s;return"string"==e||"number"==e||"boolean"==e?JSON.stringify(s):"undefined"==e?"null":Array.isArray(s)?"["+s.map(function(e){return r(e)}).join(",")+"]":"object"!=e?JSON.stringify(s):"{"+Object.keys(s).sort().map(function(e){return JSON.stringify(e)+":"+r(s[e])}).join(",")+"}"}(g.settings)}function t(){if(!g.allowUnload&&n()!==a)return membersAdminMenus.i18n&&membersAdminMenus.i18n.unsavedChanges||""}var e=["dashicons-menu","dashicons-admin-dashboard","dashicons-admin-post","dashicons-admin-page","dashicons-admin-media","dashicons-admin-comments","dashicons-admin-appearance","dashicons-admin-plugins","dashicons-admin-users","dashicons-admin-tools","dashicons-admin-settings","dashicons-admin-generic","dashicons-edit","dashicons-plus","dashicons-chart-bar","dashicons-cart","dashicons-products","dashicons-email","dashicons-groups","dashicons-heart","dashicons-star-filled","dashicons-smiley","dashicons-info","dashicons-lock","dashicons-unlock","dashicons-visibility","dashicons-hidden","dashicons-arrow-up","dashicons-arrow-down","dashicons-admin-network","dashicons-performance"],r=["fa-solid fa-house","fa-solid fa-user","fa-solid fa-gear","fa-solid fa-file","fa-solid fa-image","fa-solid fa-cart-shopping","fa-solid fa-chart-line","fa-solid fa-envelope","fa-solid fa-book","fa-solid fa-link","fa-solid fa-bell","fa-solid fa-star","fa-solid fa-heart","fa-solid fa-lock","fa-solid fa-unlock","fa-solid fa-pen","fa-solid fa-trash","fa-solid fa-plus","fa-solid fa-minus"],i="members_am_view_state";function o(){try{localStorage.setItem(i,JSON.stringify({activeRoleSlugs:g.activeRoleSlugs,carouselPage:g.carouselPage}))}catch(e){}}function l(){return membersAdminMenus.roles||[]}function m(){g.settings._meta&&!Array.isArray(g.settings._meta)||(g.settings._meta={version:3,admin_editable:!1}),g.settings.roles&&!Array.isArray(g.settings.roles)||(g.settings.roles={}),g.settings.users&&!Array.isArray(g.settings.users)||(g.settings.users={}),Array.isArray(g.settings.custom_items)||(g.settings.custom_items=[]),g.settings.capabilities&&!Array.isArray(g.settings.capabilities)||(g.settings.capabilities={})}function _(e){m(),g.settings.roles[e]||(g.settings.roles[e]={hidden:[],order:[],submenu_order:{},overrides:{}});var r=g.settings.roles[e];return r.hidden&&Array.isArray(r.hidden)||(r.hidden=[]),r.order&&Array.isArray(r.order)||(r.order=[]),r.submenu_order&&!Array.isArray(r.submenu_order)||(r.submenu_order={}),r.overrides&&!Array.isArray(r.overrides)||(r.overrides={}),r}function x(e){m(),g.settings.users[e]||(g.settings.users[e]={});var r=g.settings.users[e];return r.hidden&&Array.isArray(r.hidden)||(r.hidden=[]),r.order&&Array.isArray(r.order)||(r.order=[]),r.overrides&&!Array.isArray(r.overrides)||(r.overrides={}),r.submenu_order&&!Array.isArray(r.submenu_order)||(r.submenu_order={}),r}function c(r){var e=x(r);return(e.order&&e.order.length?e.order.slice():w()).filter(function(e){return 0===e.indexOf("sep-")||!!b(e)&&!function(e,r){if(!r||-1!==r.indexOf("::"))return;var s=x(e),a=s.overrides&&s.overrides[r]||{};return a.parent&&"__promote__"!==a.parent}(r,e)})}function d(e,r,s,a){var n,t=x(e),i=t.overrides&&t.overrides[r]||{},o=s;!o&&i.parent&&"__promote__"!==i.parent&&(o=i.parent);var m,d,l,c,u=-1!==r.indexOf("::")?r.split("::").pop():r,p=(n=o?(t.submenu_order[o]||(t.submenu_order[o]=(m=e,l=A(d=o),c=x(m),g.tree.forEach(function(e){e&&e.id&&-1===e.id.indexOf("::")&&(c.overrides&&c.overrides[e.id]||{}).parent===d&&-1===l.indexOf(e.id)&&l.push(e.id)}),l)),t.submenu_order[o]):(t.order.length||(t.order=w()),t.order)).indexOf(u);if(-1!==p){var f=p+a;f<0||f>=n.length||(n.splice(p,1),n.splice(f,0,o?u:r))}}function u(e){var r=e.id||"c";return"members-am-"+String(r).replace(/[^a-z0-9_-]/gi,"-").toLowerCase()}function p(e){return!!e&&0===(-1!==e.indexOf("::")?e.split("::").pop():e).indexOf("members-am-")}function f(){var a=h.extend(!0,[],membersAdminMenus.menuTree||[]),n={};return a.forEach(function(e){n[e.id]=!0}),(g.settings.custom_items||[]).forEach(function(e){if(e&&e.id){var r=u(e);if(n[r]){for(var s=0;sn&&(g.carouselPage=n))}}g.activeRoleSlugs=r.filter(function(e){return"administrator"!==e||s}),g.activeRoleSlugs.length||(g.activeRoleSlugs=["subscriber"])}function J(){var a=h("#members-am-role-chips").empty();l().forEach(function(e){if("administrator"!==e.slug||g.settings._meta.admin_editable){var r=-1!==g.activeRoleSlugs.indexOf(e.slug),s=h(' ').text(e.label).attr("data-role",e.slug).toggleClass("is-active",r);a.append(s)}})}function j(t,i,e,o,m){(function(e,r,s,a,n){n=n||0;var t=r.id,i=M(e,t),o=!R(e,r.cap),m=_(e).overrides[t]||{},d=m.label||r.title||t,l=h('
').attr("data-id",t).attr("data-menu-parent",s||"").toggleClass("is-hidden",i).toggleClass("is-no-cap",o).toggleClass("is-selected",g.selectedId===t).toggleClass("is-sub",0 ');if(0===n){var u=m.icon||r.icon,p=P(u,m.icon_type||r.icon_type);if("fontawesome"===p&&u)c.append(h(' '));else if("svg"!==p&&"image"!==p&&"custom"!==p||!u){var f=u&&0===u.indexOf("dashicons-")?u:"dashicons-admin-generic";c.append(h(' '))}else c.append(h(" ").attr("src",u).css({width:"20px",height:"20px",display:"inline-block",verticalAlign:"middle",objectFit:"contain",filter:"none"}))}r.custom&&c.append(h('custom '));m.label&&c.append(h('edit '));if(c.append(h(' ').text(d)),m.badge){var b=m.badge_bg||"#d63638";c.append(h(' ').text(m.badge).css({backgroundColor:b,color:"#fff",fontSize:"9px",padding:"1px 5px",borderRadius:"2px",marginLeft:"4px",whiteSpace:"nowrap"}))}o&&c.append(h(' Roles.\">🔒 no access "));l.append(c),m.color_bg&&l.css("background-color",m.color_bg);m.color_text&&l.find(".members-am-item-label").css("color",m.color_text);m.color_icon&&(l.find(".dashicons").css("color",m.color_icon),l.find(".members-am-fa-icon i").css("color",m.color_icon),l.find("img").css("filter","none"));var v=h('
');v.append(h(' ').text("◉"),h(' ').text("↑"),h(' ').text("↓")),l.append(v),a.append(l)})(t,i,e,o,m=m||0),i.children&&i.children.length&&S(t,i.id).forEach(function(e){var r,s,a,n=(r=t,s=i.id,b(I(s,a=e))||(-1===a.indexOf("::")&&(_(r).overrides[a]||{}).parent===s?b(a):null));n&&"__promote__"!==(_(t).overrides[n.id]||{}).parent&&j(t,n,i.id,o,m+1)})}function L(s,a,e,n,t,i){i=i||0,t.append(function(r,e,s,a,n){n=n||0;var t=a.overrides&&a.overrides[r.id]||{},i=t.label||r.title,o=function(e,r){var s=x(e);if(-1!==s.hidden.indexOf(r))return!0;var a=y(r,e);return!(!a||-1===s.hidden.indexOf(a))}(s,r.id),m=!function(e){if(!e||"read"===e)return 1;for(var r=g.previewUserRoles||[],s=0;s").addClass(l).attr("data-id",r.id).attr("data-menu-parent",e||""),u=h('
');if(0===n){var p=t.icon||r.icon,f=P(p,t.icon_type||r.icon_type);"fontawesome"===f&&p?u.append(h(' ')):"svg"!==f&&"image"!==f&&"custom"!==f||!p?p&&0===p.indexOf("dashicons-")?u.append(h(' ')):u.append(h(' ')):u.append(h(" ").attr("src",p).css({width:"20px",height:"20px",display:"inline-block",verticalAlign:"middle",objectFit:"contain",filter:"none"}))}r.custom&&u.append(h('custom '));t.label&&u.append(h('edit '));if(u.append(h(' ').text(i)),t.badge){var b=t.badge_bg||"#d63638";u.append(h(' ').text(t.badge).css({backgroundColor:b,color:"#fff",fontSize:"9px",padding:"1px 5px",borderRadius:"2px",marginLeft:"4px",whiteSpace:"nowrap"}))}m&&u.append(h('🔒 no access "));c.append(u),t.color_bg&&c.css("background-color",t.color_bg);t.color_text&&c.find(".members-am-item-label").css("color",t.color_text);t.color_icon&&(c.find(".dashicons").css("color",t.color_icon),c.find(".members-am-fa-icon i").css("color",t.color_icon));var v=h('
');return v.append(h(' ').text(o?"◯":"◉"),h(' ').text("↑"),h(' ').text("↓")),c.append(v),c.on("click",function(e){h(e.target).closest("button").length||(g.selectedId=r.id,$())}),c}(a,e,s,n,i)),a.children&&a.children.length&&function(e,r){var s=A(r),a=x(e);g.tree.forEach(function(e){e&&e.id&&-1===e.id.indexOf("::")&&(a.overrides&&a.overrides[e.id]||{}).parent===r&&-1===s.indexOf(e.id)&&s.push(e.id)});var n=a.submenu_order&&a.submenu_order[r];if(!n||!n.length)return s.slice();var t=n.filter(function(e){return-1!==s.indexOf(e)});return s.forEach(function(e){-1===t.indexOf(e)&&t.push(e)}),t}(s,a.id).forEach(function(e){var r=function(e,r,s){var a=b(I(r,s));if(a)return a;if(-1===s.indexOf("::")){var n=x(e);if((n.overrides&&n.overrides[s]||{}).parent===r)return b(s)}return null}(s,a.id,e);r&&"__promote__"!==(n.overrides&&n.overrides[r.id]||{}).parent&&L(s,r,a.id,n,t,i+1)})}function F(e){return-1!==e.indexOf("::")?e.split("::").pop():e}function z(){h.fn.sortable&&h("#members-am-columns .members-am-sidebar-list").each(function(){var e=h(this);e.data("ui-sortable")&&e.sortable("destroy");var r=e.closest(".members-am-column"),s=r.data("role"),a=r.data("user");e.sortable({axis:"y",distance:6,items:"> .members-am-item, > .members-am-sep",cancel:".members-am-item-actions button",placeholder:"members-am-sort-placeholder",forcePlaceholderSize:!0,tolerance:"pointer",update:function(){a?function(e,r){var n=[],t={};e.children().each(function(){var e=h(this);if(e.hasClass("members-am-sep")){var r=e.attr("data-sep-id");r&&n.push(r)}else if(e.hasClass("members-am-item")){var s=e.attr("data-id");if(s){var a=e.attr("data-menu-parent");void 0===a||""===a?n.push(s):(t[a]||(t[a]=[]),t[a].push(F(s)))}}});var s=x(r);s.order=n,s.submenu_order=t}(e,a):s&&function(e,r){var n=[],t={};e.children().each(function(){var e=h(this);if(e.hasClass("members-am-sep")){var r=e.attr("data-sep-id");r&&n.push(r)}else if(e.hasClass("members-am-item")){var s=e.attr("data-id");if(s){var a=e.attr("data-menu-parent");void 0===a||""===a?n.push(s):(t[a]||(t[a]=[]),t[a].push(F(s)))}}});var s=_(r);s.order=n,s.submenu_order=t}(e,s),W()}})})}function D(){var s=h("#members-am-columns"),a={};s.find(".members-am-column").each(function(){var e=h(this).data("role");if(e){var r=h(this).find(".members-am-sidebar-list");r.length&&(a[e]=r.scrollTop())}}),s.empty();var e=g.carouselPage*g.columnsPerPage;if(g.activeRoleSlugs.slice(e,e+g.columnsPerPage).forEach(function(e){var r=h('
');!function(s,e){e.empty();var r=h(''),a=(l().filter(function(e){return e.slug===s})[0]||{}).label||s;r.append(h('').text(a)),r.append(h(' ').append(h(' ').text("◀"),h(' ').text("▶"))),e.append(r);var n=h('');k(s).forEach(function(e){if(0!==e.indexOf("sep-")){var r=b(e);r&&j(s,r,null,n,0)}else n.append(h('
').attr("data-sep-id",e).text("—"))}),e.append(n)}(e,r),s.append(r),a[e]&&r.find(".members-am-sidebar-list").scrollTop(a[e])}),g.previewUserId){var n=g.previewUserId,r=h('
'),t=h('');t.append(h(" ").text(g.previewUserLabel||"User #"+n)),t.append(h('× ').on("click",function(){g.previewUserId=null,g.previewUserLabel=null,g.previewUserRoles=[],$()})),r.append(t);var i=h(''),o=x(n);c(n).forEach(function(e){if(0!==e.indexOf("sep-")){var r=b(e);r&&L(n,r,null,o,i,0)}else i.append(h('
').attr("data-sep-id",e).text("——"))}),r.append(i),s.append(r)}if(g.syncScroll){var m=s.find(".members-am-sidebar-list"),d=!1;m.on("scroll",function(){if(!d){d=!0;var e=h(this).scrollTop();m.not(this).scrollTop(e),d=!1}})}!function(){var e=Math.max(1,Math.ceil(g.activeRoleSlugs.length/g.columnsPerPage)),r=(Math.min(g.carouselPage+1,e),g.carouselPage*g.columnsPerPage+1),s=Math.min((g.carouselPage+1)*g.columnsPerPage,g.activeRoleSlugs.length);h("#members-am-carousel-status").text(r+"–"+s+" "+membersAdminMenus.i18n.of+" "+g.activeRoleSlugs.length);for(var a=h("#members-am-carousel-dots").empty(),n=0;n ').toggleClass("is-active",n===g.carouselPage))}(),z()}function W(){if(g.selectedId){h("#members-am-edit-panel").removeAttr("hidden");var e=b(g.selectedId),r=U()||{};h("#members-am-edit-title").text(e?e.title:g.selectedId),h("#members-am-edit-label").val(r.label||e&&e.title||"");var s=p(g.selectedId);h("#members-am-edit-url-wrap").toggle(s),h("#members-am-edit-url").attr("placeholder","Override URL (leave empty for default)").val(s&&(r.url||e&&e.url)||"").data("default-url",e&&e.url||""),h("#members-am-icon-type").val(r.icon_type||"dashicon"),h("#members-am-icon-value").val(r.icon||e&&e.icon||"");var a=r.icon||e&&e.icon||"",n=P(a,r.icon_type||e&&e.icon_type||"");"image"!==n&&"custom"!==n&&"svg"!==n||!a?h("#members-am-icon-preview").hide():h("#members-am-icon-preview").show().attr("src",a),h("#members-am-color-bg").val(r.color_bg||""),h("#members-am-color-text").val(r.color_text||""),h("#members-am-color-icon").val(r.color_icon||""),h("#members-am-badge-text").val(r.badge||""),h("#members-am-badge-bg").val(r.badge_bg||""),h("#members-am-item-cap").attr("placeholder",e&&e.cap?e.cap+" (default)":"").val(g.settings.capabilities[g.selectedId]||"");var t=e&&e.custom;h("#members-am-remove-custom").toggle(!!t),h("#members-am-visibility-toggles").empty();var i=e&&e.cap||"read";l().forEach(function(e){if("administrator"!==e.slug||g.settings._meta.admin_editable){var r=M(e.slug,g.selectedId),s=R(e.slug,i),a=h(' ').attr("data-role",e.slug).prop("checked",!r&&s);s||a.prop("disabled",!0);var n=h(' ').append(a,h(" ").text(e.label));s||(n.append(h(" ").text(" — no capability").css({color:"#999",fontStyle:"italic",marginLeft:"4px"})),n.css("opacity","0.5")),h("#members-am-visibility-toggles").append(n)}}),h(".members-am-color").each(function(){h(this).data("wpWpColorPicker")&&h(this).wpColorPicker("destroy")}),h(".members-am-color").wpColorPicker({change:function(e,r){setTimeout(function(){Q()},20)},clear:function(){setTimeout(function(){Q()},20)}}),q(),function(){var e=h(".members-am-demote-wrap"),s=h("#members-am-demote-parent"),r=h("#members-am-demote");if(!g.selectedId)return e.attr("hidden",!0);if(v(g.selectedId))return e.attr("hidden",!0);var a=C()[0]||g.activeRoleSlugs[0];if(a&&O(a,g.selectedId))return e.attr("hidden",!0);e.removeAttr("hidden");var n=g.selectedId,t=membersAdminMenus.i18n&&membersAdminMenus.i18n.selectParentMenu||"";s.empty().append(h(" ").val("").text(t));var i=0;g.tree.forEach(function(e){if(e&&e.id&&e.id!==n){var r=e.title&&String(e.title).trim()?e.title:e.id;s.append(h(" ").val(e.id).text(r)),i++}});var o=0 ');"dashicons"===s?r.append(h(' ')):r.append(h(' ')),r.on("click",function(){h("#members-am-icon-value").val(e),h("#members-am-icon-type").val("dashicons"===s?"dashicon":"fontawesome"),Q()}),n.append(r)}})}function s(e,r){var s=g.activeRoleSlugs.indexOf(e);if(-1!==s){var a=s+r;if(!(a<0||a>=g.activeRoleSlugs.length)){var n=g.activeRoleSlugs[s];g.activeRoleSlugs[s]=g.activeRoleSlugs[a],g.activeRoleSlugs[a]=n,o(),$()}}}function B(e,r,s){var a,n,t,i=_(e).overrides[r]||{},o=null;if("__promote__"===i.parent?o=null:-1!==r.indexOf("::")?o=v(r):i.parent&&"__promote__"!==i.parent&&(o=i.parent),o){var m=_(e).submenu_order;m[o]||(m[o]=(a=e,t=A(n=o),g.tree.forEach(function(e){e&&e.id&&-1===e.id.indexOf("::")&&(_(a).overrides[e.id]||{}).parent===n&&-1===t.indexOf(e.id)&&t.push(e.id)}),t));var d=m[o],l=-1!==r.indexOf("::")?r.split("::").pop():r;if(-1===(u=d.indexOf(l)))return;if((p=u+s)<0||p>=d.length)return;var c=d[u];d[u]=d[p],d[p]=c}else{_(e).order&&_(e).order.length||(_(e).order=w());var u,p,f=_(e).order;if(-1===(u=f.indexOf(r)))return;if((p=u+s)<0||p>=f.length)return;var b=f[u];f[u]=f[p],f[p]=b}$()}function G(){var e=C();if(e.length){var a="sep-"+Date.now();e.forEach(function(e){_(e).order&&_(e).order.length||(_(e).order=w());var r=_(e).order,s=g.selectedId?r.indexOf(g.selectedId):r.length-1;s<0&&(s=r.length),r.splice(s+1,0,a)}),$()}}function H(e){var r=h("#members-am-toolbar-loading");r.removeAttr("hidden"),r.find(".spinner").addClass("is-active"),r.find(".members-am-loading-text").text(e||""),h("#members-am-save, #members-am-reset, #members-am-import, #members-am-copy-apply").prop("disabled",!0)}function K(){var e=h("#members-am-toolbar-loading");e.attr("hidden",!0),e.find(".spinner").removeClass("is-active"),e.find(".members-am-loading-text").text(""),h("#members-am-save, #members-am-reset, #members-am-import, #members-am-copy-apply").prop("disabled",!1)}function V(){H(membersAdminMenus.i18n&&membersAdminMenus.i18n.saving||"Saving…");var r=!1;h.post(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_save",nonce:membersAdminMenus.nonce,settings:JSON.stringify(g.settings)}).done(function(e){if(e.success)return g.allowUnload=!0,alert(membersAdminMenus.i18n.saved),r=!0,void location.reload();alert(e.data&&e.data.message?e.data.message:"Error")}).fail(function(){alert(membersAdminMenus.i18n.networkError||"Could not save settings. Check your connection and try again.")}).always(function(){r||K()})}function X(e,r){if(confirm("role"===e&&r?"Reset all settings for this role? This cannot be undone.":"Reset ALL menu settings for every role? This cannot be undone.")){H(membersAdminMenus.i18n&&membersAdminMenus.i18n.resetting||"Resetting…");var s=!1;h.post(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_reset",nonce:membersAdminMenus.nonce,scope:e||"all",role:r||""}).done(function(e){if(e.success)return g.allowUnload=!0,s=!0,void location.reload();alert(e.data&&e.data.message?e.data.message:"Reset failed.")}).fail(function(){alert(membersAdminMenus.i18n.networkError||"Could not reset settings. Check your connection and try again.")}).always(function(){s||K()})}}function Y(e){h.getJSON(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_user_search",nonce:membersAdminMenus.nonce,term:e},function(e){e.success&&e.data&&e.data.length?function(e){h(".members-am-user-suggestions").remove();var r=h("#members-am-user-search").parent();r.css("position","relative");var s=h('
');e.forEach(function(e){s.append(h('
').text(e.label).data("userId",e.id).on("click",function(){!function(e,r,s){g.previewUserId=e,g.previewUserLabel=r||"User #"+e,g.previewUserRoles=s||[],m(),g.settings.users[e]||(g.settings.users[e]={});$()}(e.id,e.label,e.roles),h(".members-am-user-suggestions").remove(),h("#members-am-user-search").val("")}))}),r.append(s),setTimeout(function(){h(document).one("click",function(){h(".members-am-user-suggestions").remove()})},0)}(e.data):h(".members-am-user-suggestions").remove()})}function Z(){var r;h(document).on("click","#members-am-role-chips .members-am-chip",function(){var e=h(this).data("role"),r=g.activeRoleSlugs.indexOf(e);-1===r?g.activeRoleSlugs.push(e):1 ');if(t.append(h('
').text("Reset Settings")),a&&n){var i=h(' ');i.append(h(' ')),i.append(h(' ').append(h(" ").text("Reset "+n),h(" ").text("Clear all menu settings for this role only"))),i.on("click",function(){h(".members-am-reset-dropdown").remove(),X("role",a)}),t.append(i)}var o=h(' ');o.append(h(' ')),o.append(h(' ').append(h(" ").text("Reset all roles"),h(" ").text("Clear all menu settings for every role"))),o.on("click",function(){h(".members-am-reset-dropdown").remove(),X("all")}),t.append(o),r.parent().css("position","relative"),t.insertAfter(r),h(document).one("click",function(){h(".members-am-reset-dropdown").remove()})}),h("#members-am-export").on("click",function(e){e.preventDefault(),window.location.href=membersAdminMenus.exportUrl}),h("#members-am-import").on("click",function(){h("#members-am-import-file").trigger("click")}),h("#members-am-import-file").on("change",function(){var e=this.files&&this.files[0];e&&function(e){H(membersAdminMenus.i18n&&membersAdminMenus.i18n.importing||"Importing…");var s=new FileReader;s.onerror=function(){K(),alert(membersAdminMenus.i18n&&membersAdminMenus.i18n.networkError||"Could not read the file.")},s.onload=function(){try{var e=JSON.parse(s.result),r=!1;h.post(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_import",nonce:membersAdminMenus.nonce,settings:JSON.stringify(e)}).done(function(e){if(e.success)return g.allowUnload=!0,r=!0,void location.reload();alert(e.data&&e.data.message?e.data.message:"Error")}).fail(function(){alert(membersAdminMenus.i18n.networkError||"Could not import settings. Check your connection and try again.")}).always(function(){r||K()})}catch(e){K(),alert("Invalid JSON")}},s.readAsText(e)}(e)}),h("#members-am-copy-apply").on("click",function(){var s=h("#members-am-copy-from").val(),r=h("#members-am-copy-to").val();if(s&&r)if(s!==r){var a="",n="";if(l().forEach(function(e){e.slug===s&&(a=e.label),e.slug===r&&(n=e.label)}),confirm('Copy menu settings from "'+a+'" to "'+n+'"?\nThis will overwrite "'+n+"\" menu configuration.\n\nNote: This copies menu order, hidden items, labels, icons, and colors.\nIt does NOT change the role's capabilities (items marked with a lock icon).")){var e=_(s),t={hidden:e.hidden?e.hidden.slice():[],order:[],submenu_order:{},overrides:{}},i=k(s);t.order=i.slice(),g.tree.forEach(function(e){if(e.children&&e.children.length){var r=S(s,e.id);r&&r.length&&(t.submenu_order[e.id]=r.slice())}}),e.overrides&&"object"==typeof e.overrides&&(t.overrides=JSON.parse(JSON.stringify(e.overrides))),g.settings.roles[r]=t,-1===g.activeRoleSlugs.indexOf(r)&&(g.activeRoleSlugs.push(r),o(),J()),$(),V()}}else alert("Source and target roles must be different.")}),h("#members-am-admin-editable").on("change",function(){var e=!0;h(this).is(":checked")&&(e=window.confirm(membersAdminMenus.i18n.adminEditableWarn)),e?(g.settings._meta.admin_editable=h(this).is(":checked"),N(),J(),o(),$()):h(this).prop("checked",!1)}),h("#members-am-sync-scroll").prop("checked",!1!==g.syncScroll),h("#members-am-sync-scroll").on("change",function(){g.syncScroll=h(this).is(":checked");try{localStorage.setItem("members_am_sync_scroll",g.syncScroll?"1":"0")}catch(e){}D()}),h("#members-am-add-item").on("click",function(){var e="c"+Date.now();g.settings.custom_items.push({id:e,label:"Custom link",url:window.location.origin+"/wp-admin/",icon_type:"dashicon",icon:"dashicons-admin-generic",parent:"",position:99,cap:"read"}),g.tree=f(),g.selectedId=u({id:e}),$(),W()}),h("#members-am-remove-custom").on("click",function(){var r=b(g.selectedId);r&&r.customId&&(g.settings.custom_items=(g.settings.custom_items||[]).filter(function(e){return e.id!==r.customId}),g.selectedId=null,g.tree=f(),$(),h("#members-am-edit-panel").attr("hidden",!0))}),h("#members-am-edit-close").on("click",function(){g.selectedId=null,h("#members-am-edit-panel").attr("hidden",!0),$()}),h("#members-am-edit-target-role").on("change",W),h("#members-am-edit-label, #members-am-edit-url, #members-am-icon-value, #members-am-badge-text").on("input",function(){Q()}),h("#members-am-item-cap").on("input",function(){Q()}),h(".members-am-icon-tabs .button").on("click",function(){h(".members-am-icon-tabs .button").removeClass("is-active"),h(this).addClass("is-active"),g.iconTab="fontawesome"===h(this).data("tab")?"fontawesome":"upload"===h(this).data("tab")?"upload":"dashicons",q()}),h("#members-am-icon-search").on("input",q),h("#members-am-media-upload").on("click",function(e){e.preventDefault(),g.mediaFrame||(g.mediaFrame=wp.media({title:"Choose menu icon",button:{text:"Use as icon"},multiple:!1,library:{type:"image"}}),g.mediaFrame.on("select",function(){var e=g.mediaFrame.state().get("selection").first().toJSON(),r=e.url||"";e.sizes&&(e.sizes.thumbnail?r=e.sizes.thumbnail.url:e.sizes.medium&&(r=e.sizes.medium.url)),h("#members-am-icon-type").val("custom"),h("#members-am-icon-value").val(r),Q()})),g.mediaFrame.open()}),h(document).on("change",".members-am-vis-cb",function(){var e=h(this).data("role");if(h(this).is(":checked")){var r=_(e).hidden,s=r.indexOf(g.selectedId);-1!==s&&r.splice(s,1)}else-1===_(e).hidden.indexOf(g.selectedId)&&_(e).hidden.push(g.selectedId);$()}),h("#members-am-add-sep").on("click",G),h("#members-am-promote").on("click",function(){if(g.selectedId){var n=g.selectedId,e=U()||{};if(-1===n.indexOf("::")&&e.parent&&"__promote__"!==e.parent){var t=e.parent,r=E();if(r){var s=x(r);if(s.overrides[n]&&delete s.overrides[n].parent,s.submenu_order&&s.submenu_order[t]){var a=s.submenu_order[t].indexOf(n);-1!==a&&s.submenu_order[t].splice(a,1)}if(s.order.length||(s.order=w()),-1===s.order.indexOf(n)){var i=s.order.indexOf(t);-1!==i?s.order.splice(i+1,0,n):s.order.push(n)}}else C().forEach(function(e){var r=_(e);if(r.overrides[n]&&delete r.overrides[n].parent,r.submenu_order&&r.submenu_order[t]){var s=r.submenu_order[t].indexOf(n);-1!==s&&r.submenu_order[t].splice(s,1)}if(r.order&&r.order.length||(r.order=w()),-1===r.order.indexOf(n)){var a=r.order.indexOf(t);-1!==a?r.order.splice(a+1,0,n):r.order.push(n)}});return Q(),void W()}T("parent","__promote__");var o=v(n);C().forEach(function(e){var r=_(e);if(r.order&&r.order.length||(r.order=w()),-1===r.order.indexOf(n))if(o){var s=r.order.indexOf(o);-1!==s?r.order.splice(s+1,0,n):r.order.push(n)}else r.order.push(n)}),Q(),W()}}),h("#members-am-demote").on("click",function(){var e=h("#members-am-demote-parent").val();e?(T("parent",e),Q(),W()):window.alert(membersAdminMenus.i18n&&membersAdminMenus.i18n.selectParentFirst||"Please choose a parent menu from the list.")}),h("#members-am-user-search").on("input",function(){var e=h(this).val();clearTimeout(r),r=setTimeout(function(){1 ").val("__all__").text("All roles")),g.activeRoleSlugs.forEach(function(r){var e=(l().filter(function(e){return e.slug===r})[0]||{}).label||r;s.append(h(" ").val(r).text(e))}),g.previewUserId&&s.append(h(" ").val("__user__"+g.previewUserId).text(g.previewUserLabel||"User #"+g.previewUserId)),g.selectedId&&W()}h(function(){var r,s,e;m(),g.tree=f(),N(),h("#members-am-admin-editable").prop("checked",!!g.settings._meta.admin_editable),r=h("#members-am-copy-from").empty(),s=h("#members-am-copy-to").empty(),(e=l()).forEach(function(e){r.append(h(" ").val(e.slug).text(e.label)),s.append(h(" ").val(e.slug).text(e.label))}),1=n.length||(n.splice(p,1),n.splice(f,0,o?u:r))}}function u(e){var r=e.id||"c";return"members-am-"+String(r).replace(/[^a-z0-9_-]/gi,"-").toLowerCase()}function p(e){return!!e&&0===(-1!==e.indexOf("::")?e.split("::").pop():e).indexOf("members-am-")}function f(){var a=g.extend(!0,[],membersAdminMenus.menuTree||[]),n={};return a.forEach(function(e){n[e.id]=!0}),(h.settings.custom_items||[]).forEach(function(e){if(e&&e.id){var r=u(e);if(n[r]){for(var s=0;sn&&(h.carouselPage=n))}}h.activeRoleSlugs=r.filter(function(e){return"administrator"!==e||s}),h.activeRoleSlugs.length||(h.activeRoleSlugs=["subscriber"])}function J(){var a=g("#members-am-role-chips").empty();l().forEach(function(e){if("administrator"!==e.slug||h.settings._meta.admin_editable){var r=-1!==h.activeRoleSlugs.indexOf(e.slug),s=g(' ').text(e.label).attr("data-role",e.slug).toggleClass("is-active",r);a.append(s)}})}function j(t,i,e,o,m){(function(e,r,s,a,n){n=n||0;var t=r.id,i=M(e,t),o=!R(e,r.cap),m=_(e).overrides[t]||{},d=m.label||r.title||t,l=g('
').attr("data-id",t).attr("data-menu-parent",s||"").toggleClass("is-hidden",i).toggleClass("is-no-cap",o).toggleClass("is-selected",h.selectedId===t).toggleClass("is-sub",0 ');if(0===n){var u=m.icon||r.icon,p=P(u,m.icon_type||r.icon_type);if("fontawesome"===p&&u)c.append(g(' '));else if("svg"!==p&&"image"!==p&&"custom"!==p||!u){var f=u&&0===u.indexOf("dashicons-")?u:"dashicons-admin-generic";c.append(g(' '))}else c.append(g(" ").attr("src",u).css({width:"20px",height:"20px",display:"inline-block",verticalAlign:"middle",objectFit:"contain",filter:"none"}))}r.custom&&c.append(g('custom '));m.label&&c.append(g('edit '));if(c.append(g(' ').text(d)),m.badge){var b=m.badge_bg||"#d63638";c.append(g(' ').text(m.badge).css({backgroundColor:b,color:"#fff",fontSize:"9px",padding:"1px 5px",borderRadius:"2px",marginLeft:"4px",whiteSpace:"nowrap"}))}o&&c.append(g(' Roles.\">🔒 no access "));l.append(c),m.color_bg&&l.css("background-color",m.color_bg);m.color_text&&l.find(".members-am-item-label").css("color",m.color_text);m.color_icon&&(l.find(".dashicons").css("color",m.color_icon),l.find(".members-am-fa-icon i").css("color",m.color_icon),l.find("img").css("filter","none"));var v=g('
');v.append(g(' ').text("◉"),g(' ').text("↑"),g(' ').text("↓")),l.append(v),a.append(l)})(t,i,e,o,m=m||0),i.children&&i.children.length&&S(t,i.id).forEach(function(e){var r,s,a,n=(r=t,s=i.id,b(I(s,a=e))||(-1===a.indexOf("::")&&(_(r).overrides[a]||{}).parent===s?b(a):null));n&&"__promote__"!==(_(t).overrides[n.id]||{}).parent&&j(t,n,i.id,o,m+1)})}function L(s,a,e,n,t,i){i=i||0,t.append(function(r,e,s,a,n){n=n||0;var t=a.overrides&&a.overrides[r.id]||{},i=t.label||r.title,o=function(e,r){var s=x(e);if(-1!==s.hidden.indexOf(r))return!0;var a=y(r,e);return!(!a||-1===s.hidden.indexOf(a))}(s,r.id),m=!function(e){if(!e||"read"===e)return 1;for(var r=h.previewUserRoles||[],s=0;s").addClass(l).attr("data-id",r.id).attr("data-menu-parent",e||""),u=g('
');if(0===n){var p=t.icon||r.icon,f=P(p,t.icon_type||r.icon_type);"fontawesome"===f&&p?u.append(g(' ')):"svg"!==f&&"image"!==f&&"custom"!==f||!p?p&&0===p.indexOf("dashicons-")?u.append(g(' ')):u.append(g(' ')):u.append(g(" ").attr("src",p).css({width:"20px",height:"20px",display:"inline-block",verticalAlign:"middle",objectFit:"contain",filter:"none"}))}r.custom&&u.append(g('custom '));t.label&&u.append(g('edit '));if(u.append(g(' ').text(i)),t.badge){var b=t.badge_bg||"#d63638";u.append(g(' ').text(t.badge).css({backgroundColor:b,color:"#fff",fontSize:"9px",padding:"1px 5px",borderRadius:"2px",marginLeft:"4px",whiteSpace:"nowrap"}))}m&&u.append(g('🔒 no access "));c.append(u),t.color_bg&&c.css("background-color",t.color_bg);t.color_text&&c.find(".members-am-item-label").css("color",t.color_text);t.color_icon&&(c.find(".dashicons").css("color",t.color_icon),c.find(".members-am-fa-icon i").css("color",t.color_icon));var v=g('
');return v.append(g(' ').text(o?"◯":"◉"),g(' ').text("↑"),g(' ').text("↓")),c.append(v),c.on("click",function(e){g(e.target).closest("button").length||(h.selectedId=r.id,$())}),c}(a,e,s,n,i)),a.children&&a.children.length&&function(e,r){var s=A(r),a=x(e);h.tree.forEach(function(e){e&&e.id&&-1===e.id.indexOf("::")&&(a.overrides&&a.overrides[e.id]||{}).parent===r&&-1===s.indexOf(e.id)&&s.push(e.id)});var n=a.submenu_order&&a.submenu_order[r];if(!n||!n.length)return s.slice();var t=n.filter(function(e){return-1!==s.indexOf(e)});return s.forEach(function(e){-1===t.indexOf(e)&&t.push(e)}),t}(s,a.id).forEach(function(e){var r=function(e,r,s){var a=b(I(r,s));if(a)return a;if(-1===s.indexOf("::")){var n=x(e);if((n.overrides&&n.overrides[s]||{}).parent===r)return b(s)}return null}(s,a.id,e);r&&"__promote__"!==(n.overrides&&n.overrides[r.id]||{}).parent&&L(s,r,a.id,n,t,i+1)})}function F(e){return-1!==e.indexOf("::")?e.split("::").pop():e}function z(){g.fn.sortable&&g("#members-am-columns .members-am-sidebar-list").each(function(){var e=g(this);e.data("ui-sortable")&&e.sortable("destroy");var r=e.closest(".members-am-column"),s=r.data("role"),a=r.data("user");e.sortable({axis:"y",distance:6,items:"> .members-am-item, > .members-am-sep",cancel:".members-am-item-actions button",placeholder:"members-am-sort-placeholder",forcePlaceholderSize:!0,tolerance:"pointer",update:function(){a?function(e,r){var n=[],t={};e.children().each(function(){var e=g(this);if(e.hasClass("members-am-sep")){var r=e.attr("data-sep-id");r&&n.push(r)}else if(e.hasClass("members-am-item")){var s=e.attr("data-id");if(s){var a=e.attr("data-menu-parent");void 0===a||""===a?n.push(s):(t[a]||(t[a]=[]),t[a].push(F(s)))}}});var s=x(r);s.order=n,s.submenu_order=t}(e,a):s&&function(e,r){var n=[],t={};e.children().each(function(){var e=g(this);if(e.hasClass("members-am-sep")){var r=e.attr("data-sep-id");r&&n.push(r)}else if(e.hasClass("members-am-item")){var s=e.attr("data-id");if(s){var a=e.attr("data-menu-parent");void 0===a||""===a?n.push(s):(t[a]||(t[a]=[]),t[a].push(F(s)))}}});var s=_(r);s.order=n,s.submenu_order=t}(e,s),W()}})})}function D(){var s=g("#members-am-columns"),a={};s.find(".members-am-column").each(function(){var e=g(this).data("role");if(e){var r=g(this).find(".members-am-sidebar-list");r.length&&(a[e]=r.scrollTop())}}),s.empty();var e=h.carouselPage*h.columnsPerPage;if(h.activeRoleSlugs.slice(e,e+h.columnsPerPage).forEach(function(e){var r=g('
');!function(s,e){e.empty();var r=g(''),a=(l().filter(function(e){return e.slug===s})[0]||{}).label||s;r.append(g('').text(a)),r.append(g(' ').append(g(' ').text("◀"),g(' ').text("▶"))),e.append(r);var n=g('');k(s).forEach(function(e){if(0!==e.indexOf("sep-")){var r=b(e);r&&j(s,r,null,n,0)}else n.append(g('
').attr("data-sep-id",e).text("—"))}),e.append(n)}(e,r),s.append(r),a[e]&&r.find(".members-am-sidebar-list").scrollTop(a[e])}),h.previewUserId){var n=h.previewUserId,r=g('
'),t=g('');t.append(g(" ").text(h.previewUserLabel||"User #"+n)),t.append(g('× ').on("click",function(){h.previewUserId=null,h.previewUserLabel=null,h.previewUserRoles=[],$()})),r.append(t);var i=g(''),o=x(n);c(n).forEach(function(e){if(0!==e.indexOf("sep-")){var r=b(e);r&&L(n,r,null,o,i,0)}else i.append(g('
').attr("data-sep-id",e).text("——"))}),r.append(i),s.append(r)}if(h.syncScroll){var m=s.find(".members-am-sidebar-list"),d=!1;m.on("scroll",function(){if(!d){d=!0;var e=g(this).scrollTop();m.not(this).scrollTop(e),d=!1}})}!function(){var e=Math.max(1,Math.ceil(h.activeRoleSlugs.length/h.columnsPerPage)),r=(Math.min(h.carouselPage+1,e),h.carouselPage*h.columnsPerPage+1),s=Math.min((h.carouselPage+1)*h.columnsPerPage,h.activeRoleSlugs.length);g("#members-am-carousel-status").text(r+"–"+s+" "+membersAdminMenus.i18n.of+" "+h.activeRoleSlugs.length);for(var a=g("#members-am-carousel-dots").empty(),n=0;n ').toggleClass("is-active",n===h.carouselPage))}(),z()}function W(){if(h.selectedId){g("#members-am-edit-panel").removeAttr("hidden");var e=b(h.selectedId),r=U()||{};g("#members-am-edit-title").text(e?e.title:h.selectedId),g("#members-am-edit-label").val(r.label||e&&e.title||"");var s=p(h.selectedId);g("#members-am-edit-url-wrap").toggle(s),g("#members-am-edit-url").attr("placeholder","Override URL (leave empty for default)").val(s&&(r.url||e&&e.url)||"").data("default-url",e&&e.url||""),g("#members-am-icon-type").val(r.icon_type||"dashicon"),g("#members-am-icon-value").val(r.icon||e&&e.icon||"");var a=r.icon||e&&e.icon||"",n=P(a,r.icon_type||e&&e.icon_type||"");"image"!==n&&"custom"!==n&&"svg"!==n||!a?g("#members-am-icon-preview").hide():g("#members-am-icon-preview").show().attr("src",a),g("#members-am-color-bg").val(r.color_bg||""),g("#members-am-color-text").val(r.color_text||""),g("#members-am-color-icon").val(r.color_icon||""),g("#members-am-badge-text").val(r.badge||""),g("#members-am-badge-bg").val(r.badge_bg||""),g("#members-am-item-cap").attr("placeholder",e&&e.cap?e.cap+" (default)":"").val(h.settings.capabilities[h.selectedId]||"");var t=e&&e.custom;g("#members-am-remove-custom").toggle(!!t),g("#members-am-visibility-toggles").empty();var i=e&&e.cap||"read";l().forEach(function(e){if("administrator"!==e.slug||h.settings._meta.admin_editable){var r=M(e.slug,h.selectedId),s=R(e.slug,i),a=g(' ').attr("data-role",e.slug).prop("checked",!r&&s);s||a.prop("disabled",!0);var n=g(' ').append(a,g(" ").text(e.label));s||(n.append(g(" ").text(" — no capability").css({color:"#999",fontStyle:"italic",marginLeft:"4px"})),n.css("opacity","0.5")),g("#members-am-visibility-toggles").append(n)}}),g(".members-am-color").each(function(){g(this).data("wpWpColorPicker")&&g(this).wpColorPicker("destroy")}),g(".members-am-color").wpColorPicker({change:function(e,r){setTimeout(function(){Q()},20)},clear:function(){setTimeout(function(){Q()},20)}}),q(),function(){var e=g(".members-am-demote-wrap"),s=g("#members-am-demote-parent"),r=g("#members-am-demote");if(!h.selectedId)return e.attr("hidden",!0);if(v(h.selectedId))return e.attr("hidden",!0);var a=C()[0]||h.activeRoleSlugs[0];if(a&&O(a,h.selectedId))return e.attr("hidden",!0);e.removeAttr("hidden");var n=h.selectedId,t=membersAdminMenus.i18n&&membersAdminMenus.i18n.selectParentMenu||"";s.empty().append(g(" ").val("").text(t));var i=0;h.tree.forEach(function(e){if(e&&e.id&&e.id!==n){var r=e.title&&String(e.title).trim()?e.title:e.id;s.append(g(" ").val(e.id).text(r)),i++}});var o=0 ');"dashicons"===s?r.append(g(' ')):r.append(g(' ')),r.on("click",function(){g("#members-am-icon-value").val(e),g("#members-am-icon-type").val("dashicons"===s?"dashicon":"fontawesome"),Q()}),n.append(r)}})}function s(e,r){var s=h.activeRoleSlugs.indexOf(e);if(-1!==s){var a=s+r;if(!(a<0||a>=h.activeRoleSlugs.length)){var n=h.activeRoleSlugs[s];h.activeRoleSlugs[s]=h.activeRoleSlugs[a],h.activeRoleSlugs[a]=n,o(),$()}}}function B(e,r,s){var a,n,t,i=_(e).overrides[r]||{},o=null;if("__promote__"===i.parent?o=null:-1!==r.indexOf("::")?o=v(r):i.parent&&"__promote__"!==i.parent&&(o=i.parent),o){var m=_(e).submenu_order;m[o]||(m[o]=(a=e,t=A(n=o),h.tree.forEach(function(e){e&&e.id&&-1===e.id.indexOf("::")&&(_(a).overrides[e.id]||{}).parent===n&&-1===t.indexOf(e.id)&&t.push(e.id)}),t));var d=m[o],l=-1!==r.indexOf("::")?r.split("::").pop():r;if(-1===(u=d.indexOf(l)))return;if((p=u+s)<0||p>=d.length)return;var c=d[u];d[u]=d[p],d[p]=c}else{_(e).order&&_(e).order.length||(_(e).order=w());var u,p,f=_(e).order;if(-1===(u=f.indexOf(r)))return;if((p=u+s)<0||p>=f.length)return;var b=f[u];f[u]=f[p],f[p]=b}$()}function G(){var e=C();if(e.length){var a="sep-"+Date.now();e.forEach(function(e){_(e).order&&_(e).order.length||(_(e).order=w());var r=_(e).order,s=h.selectedId?r.indexOf(h.selectedId):r.length-1;s<0&&(s=r.length),r.splice(s+1,0,a)}),$()}}function H(e){var r=g("#members-am-toolbar-loading");r.removeAttr("hidden"),r.find(".spinner").addClass("is-active"),r.find(".members-am-loading-text").text(e||""),g("#members-am-save, #members-am-reset, #members-am-import, #members-am-copy-apply").prop("disabled",!0)}function K(){var e=g("#members-am-toolbar-loading");e.attr("hidden",!0),e.find(".spinner").removeClass("is-active"),e.find(".members-am-loading-text").text(""),g("#members-am-save, #members-am-reset, #members-am-import, #members-am-copy-apply").prop("disabled",!1)}function V(e){H(e||membersAdminMenus.i18n&&membersAdminMenus.i18n.saving||"Saving…");var r=!1;g.post(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_save",nonce:membersAdminMenus.nonce,settings:JSON.stringify(h.settings)}).done(function(e){if(e.success)return h.allowUnload=!0,alert(membersAdminMenus.i18n.saved),r=!0,void location.reload();alert(e.data&&e.data.message?e.data.message:"Error")}).fail(function(){alert(membersAdminMenus.i18n.networkError||"Could not save settings. Check your connection and try again.")}).always(function(){r||K()})}function X(e,r){if(confirm("role"===e&&r?"Reset all settings for this role? This cannot be undone.":"Reset ALL menu settings for every role? This cannot be undone.")){H(membersAdminMenus.i18n&&membersAdminMenus.i18n.resetting||"Resetting…");var s=!1;g.post(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_reset",nonce:membersAdminMenus.nonce,scope:e||"all",role:r||""}).done(function(e){if(e.success)return h.allowUnload=!0,s=!0,void location.reload();alert(e.data&&e.data.message?e.data.message:"Reset failed.")}).fail(function(){alert(membersAdminMenus.i18n.networkError||"Could not reset settings. Check your connection and try again.")}).always(function(){s||K()})}}function Y(e){g.getJSON(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_user_search",nonce:membersAdminMenus.nonce,term:e},function(e){e.success&&e.data&&e.data.length?function(e){g(".members-am-user-suggestions").remove();var r=g("#members-am-user-search").parent();r.css("position","relative");var s=g('
');e.forEach(function(e){s.append(g('
').text(e.label).data("userId",e.id).on("click",function(){!function(e,r,s){h.previewUserId=e,h.previewUserLabel=r||"User #"+e,h.previewUserRoles=s||[],m(),h.settings.users[e]||(h.settings.users[e]={});$()}(e.id,e.label,e.roles),g(".members-am-user-suggestions").remove(),g("#members-am-user-search").val("")}))}),r.append(s),setTimeout(function(){g(document).one("click",function(){g(".members-am-user-suggestions").remove()})},0)}(e.data):g(".members-am-user-suggestions").remove()})}function Z(){var r;g(document).on("click","#members-am-role-chips .members-am-chip",function(){var e=g(this).data("role"),r=h.activeRoleSlugs.indexOf(e);-1===r?h.activeRoleSlugs.push(e):1 ');if(t.append(g('
').text("Reset Settings")),a&&n){var i=g(' ');i.append(g(' ')),i.append(g(' ').append(g(" ").text("Reset "+n),g(" ").text("Clear all menu settings for this role only"))),i.on("click",function(){g(".members-am-reset-dropdown").remove(),X("role",a)}),t.append(i)}var o=g(' ');o.append(g(' ')),o.append(g(' ').append(g(" ").text("Reset all roles"),g(" ").text("Clear all menu settings for every role"))),o.on("click",function(){g(".members-am-reset-dropdown").remove(),X("all")}),t.append(o),r.parent().css("position","relative"),t.insertAfter(r),g(document).one("click",function(){g(".members-am-reset-dropdown").remove()})}),g("#members-am-export").on("click",function(e){e.preventDefault(),window.location.href=membersAdminMenus.exportUrl}),g("#members-am-import").on("click",function(){g("#members-am-import-file").trigger("click")}),g("#members-am-import-file").on("change",function(){var e=this.files&&this.files[0];e&&function(e){H(membersAdminMenus.i18n&&membersAdminMenus.i18n.importing||"Importing…");var s=new FileReader;s.onerror=function(){K(),alert(membersAdminMenus.i18n&&membersAdminMenus.i18n.networkError||"Could not read the file.")},s.onload=function(){try{var e=JSON.parse(s.result),r=!1;g.post(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_import",nonce:membersAdminMenus.nonce,settings:JSON.stringify(e)}).done(function(e){if(e.success)return h.allowUnload=!0,r=!0,void location.reload();alert(e.data&&e.data.message?e.data.message:"Error")}).fail(function(){alert(membersAdminMenus.i18n.networkError||"Could not import settings. Check your connection and try again.")}).always(function(){r||K()})}catch(e){K(),alert("Invalid JSON")}},s.readAsText(e)}(e)}),g("#members-am-copy-apply").on("click",function(){var s=g("#members-am-copy-from").val(),r=g("#members-am-copy-to").val();if(s&&r)if(s!==r){var a="",n="";if(l().forEach(function(e){e.slug===s&&(a=e.label),e.slug===r&&(n=e.label)}),confirm('Copy menu settings from "'+a+'" to "'+n+'"?\nThis will overwrite "'+n+"\" menu configuration.\n\nNote: This copies menu order, hidden items, labels, icons, and colors.\nIt does NOT change the role's capabilities (items marked with a lock icon).")){var e=_(s),t={hidden:e.hidden?e.hidden.slice():[],order:[],submenu_order:{},overrides:{}},i=k(s);t.order=i.slice(),h.tree.forEach(function(e){if(e.children&&e.children.length){var r=S(s,e.id);r&&r.length&&(t.submenu_order[e.id]=r.slice())}}),e.overrides&&"object"==typeof e.overrides&&(t.overrides=JSON.parse(JSON.stringify(e.overrides))),h.settings.roles[r]=t,-1===h.activeRoleSlugs.indexOf(r)&&(h.activeRoleSlugs.push(r),o(),J()),$(),V(membersAdminMenus.i18n&&membersAdminMenus.i18n.copying||"Copying…")}}else alert("Source and target roles must be different.")}),g("#members-am-admin-editable").on("change",function(){var e=!0;g(this).is(":checked")&&(e=window.confirm(membersAdminMenus.i18n.adminEditableWarn)),e?(h.settings._meta.admin_editable=g(this).is(":checked"),N(),J(),o(),$()):g(this).prop("checked",!1)}),g("#members-am-sync-scroll").prop("checked",!1!==h.syncScroll),g("#members-am-sync-scroll").on("change",function(){h.syncScroll=g(this).is(":checked");try{localStorage.setItem("members_am_sync_scroll",h.syncScroll?"1":"0")}catch(e){}D()}),g("#members-am-add-item").on("click",function(){var e="c"+Date.now();h.settings.custom_items.push({id:e,label:"Custom link",url:window.location.origin+"/wp-admin/",icon_type:"dashicon",icon:"dashicons-admin-generic",parent:"",position:99,cap:"read"}),h.tree=f(),h.selectedId=u({id:e}),$(),W()}),g("#members-am-remove-custom").on("click",function(){var r=b(h.selectedId);r&&r.customId&&(h.settings.custom_items=(h.settings.custom_items||[]).filter(function(e){return e.id!==r.customId}),h.selectedId=null,h.tree=f(),$(),g("#members-am-edit-panel").attr("hidden",!0))}),g("#members-am-edit-close").on("click",function(){h.selectedId=null,g("#members-am-edit-panel").attr("hidden",!0),$()}),g("#members-am-edit-target-role").on("change",W),g("#members-am-edit-label, #members-am-edit-url, #members-am-icon-value, #members-am-badge-text").on("input",function(){Q()}),g("#members-am-item-cap").on("input",function(){Q()}),g(".members-am-icon-tabs .button").on("click",function(){g(".members-am-icon-tabs .button").removeClass("is-active"),g(this).addClass("is-active"),h.iconTab="fontawesome"===g(this).data("tab")?"fontawesome":"upload"===g(this).data("tab")?"upload":"dashicons",q()}),g("#members-am-icon-search").on("input",q),g("#members-am-media-upload").on("click",function(e){e.preventDefault(),h.mediaFrame||(h.mediaFrame=wp.media({title:"Choose menu icon",button:{text:"Use as icon"},multiple:!1,library:{type:"image"}}),h.mediaFrame.on("select",function(){var e=h.mediaFrame.state().get("selection").first().toJSON(),r=e.url||"";e.sizes&&(e.sizes.thumbnail?r=e.sizes.thumbnail.url:e.sizes.medium&&(r=e.sizes.medium.url)),g("#members-am-icon-type").val("custom"),g("#members-am-icon-value").val(r),Q()})),h.mediaFrame.open()}),g(document).on("change",".members-am-vis-cb",function(){var e=g(this).data("role");if(g(this).is(":checked")){var r=_(e).hidden,s=r.indexOf(h.selectedId);-1!==s&&r.splice(s,1)}else-1===_(e).hidden.indexOf(h.selectedId)&&_(e).hidden.push(h.selectedId);$()}),g("#members-am-add-sep").on("click",G),g("#members-am-promote").on("click",function(){if(h.selectedId){var n=h.selectedId,e=U()||{};if(-1===n.indexOf("::")&&e.parent&&"__promote__"!==e.parent){var t=e.parent,r=E();if(r){var s=x(r);if(s.overrides[n]&&delete s.overrides[n].parent,s.submenu_order&&s.submenu_order[t]){var a=s.submenu_order[t].indexOf(n);-1!==a&&s.submenu_order[t].splice(a,1)}if(s.order.length||(s.order=w()),-1===s.order.indexOf(n)){var i=s.order.indexOf(t);-1!==i?s.order.splice(i+1,0,n):s.order.push(n)}}else C().forEach(function(e){var r=_(e);if(r.overrides[n]&&delete r.overrides[n].parent,r.submenu_order&&r.submenu_order[t]){var s=r.submenu_order[t].indexOf(n);-1!==s&&r.submenu_order[t].splice(s,1)}if(r.order&&r.order.length||(r.order=w()),-1===r.order.indexOf(n)){var a=r.order.indexOf(t);-1!==a?r.order.splice(a+1,0,n):r.order.push(n)}});return Q(),void W()}T("parent","__promote__");var o=v(n);C().forEach(function(e){var r=_(e);if(r.order&&r.order.length||(r.order=w()),-1===r.order.indexOf(n))if(o){var s=r.order.indexOf(o);-1!==s?r.order.splice(s+1,0,n):r.order.push(n)}else r.order.push(n)}),Q(),W()}}),g("#members-am-demote").on("click",function(){var e=g("#members-am-demote-parent").val();e?(T("parent",e),Q(),W()):window.alert(membersAdminMenus.i18n&&membersAdminMenus.i18n.selectParentFirst||"Please choose a parent menu from the list.")}),g("#members-am-user-search").on("input",function(){var e=g(this).val();clearTimeout(r),r=setTimeout(function(){1 ").val("__all__").text("All roles")),h.activeRoleSlugs.forEach(function(r){var e=(l().filter(function(e){return e.slug===r})[0]||{}).label||r;s.append(g(" ").val(r).text(e))}),h.previewUserId&&s.append(g(" ").val("__user__"+h.previewUserId).text(h.previewUserLabel||"User #"+h.previewUserId)),h.selectedId&&W()}g(function(){var r,s,e;m(),h.tree=f(),N(),g("#members-am-admin-editable").prop("checked",!!h.settings._meta.admin_editable),r=g("#members-am-copy-from").empty(),s=g("#members-am-copy-to").empty(),(e=l()).forEach(function(e){r.append(g(" ").val(e.slug).text(e.label)),s.append(g(" ").val(e.slug).text(e.label))}),1
Date: Fri, 10 Apr 2026 15:35:11 +0200
Subject: [PATCH 22/73] feat(admin): improve AJAX error handling and add
fallback messages for saving settings
---
js/admin-menus.js | 39 +++++++++++++++++++++++++++++----------
js/admin-menus.min.js | 2 +-
2 files changed, 30 insertions(+), 11 deletions(-)
diff --git a/js/admin-menus.js b/js/admin-menus.js
index a43b8e9..b65ba87 100644
--- a/js/admin-menus.js
+++ b/js/admin-menus.js
@@ -1503,15 +1503,25 @@
'Saving…';
beginAjaxToolbarLoading(saving);
var willReload = false;
- $.post(
- membersAdminMenus.ajaxUrl,
- {
+ var fallbackNetwork =
+ (membersAdminMenus.i18n && membersAdminMenus.i18n.networkError) ||
+ 'Could not save settings. Check your connection and try again.';
+ $.ajax({
+ url: membersAdminMenus.ajaxUrl,
+ type: 'POST',
+ dataType: 'json',
+ timeout: 60000,
+ data: {
action: 'members_admin_menus_save',
nonce: membersAdminMenus.nonce,
settings: JSON.stringify(state.settings),
- }
- )
+ },
+ })
.done(function (res) {
+ if (!res || typeof res.success === 'undefined') {
+ alert(fallbackNetwork);
+ return;
+ }
if (res.success) {
state.allowUnload = true;
alert(membersAdminMenus.i18n.saved);
@@ -1521,11 +1531,20 @@
}
alert(res.data && res.data.message ? res.data.message : 'Error');
})
- .fail(function () {
- alert(
- membersAdminMenus.i18n.networkError ||
- 'Could not save settings. Check your connection and try again.'
- );
+ .fail(function (jqXHR, textStatus /* , errorThrown */) {
+ if (textStatus === 'abort') {
+ return;
+ }
+ var msg = fallbackNetwork;
+ if (jqXHR && jqXHR.responseJSON && jqXHR.responseJSON.data !== undefined) {
+ var d = jqXHR.responseJSON.data;
+ if (typeof d === 'string' && d) {
+ msg = d;
+ } else if (d && typeof d.message === 'string' && d.message) {
+ msg = d.message;
+ }
+ }
+ alert(msg);
})
.always(function () {
if (!willReload) {
diff --git a/js/admin-menus.min.js b/js/admin-menus.min.js
index d8596b7..dc0d4b6 100644
--- a/js/admin-menus.min.js
+++ b/js/admin-menus.min.js
@@ -1 +1 @@
-!function(g){"use strict";var h={settings:g.extend(!0,{},membersAdminMenus.settings),tree:[],activeRoleSlugs:[],carouselPage:0,columnsPerPage:3,selectedId:null,iconTab:"dashicons",previewUserId:null,previewUserRoles:[],userSuggestions:[],mediaFrame:null,allowUnload:!1,syncScroll:function(){try{return"0"!==localStorage.getItem("members_am_sync_scroll")}catch(e){return!0}}()},a="";function n(){return function r(s){if(null===s)return"null";var e=typeof s;return"string"==e||"number"==e||"boolean"==e?JSON.stringify(s):"undefined"==e?"null":Array.isArray(s)?"["+s.map(function(e){return r(e)}).join(",")+"]":"object"!=e?JSON.stringify(s):"{"+Object.keys(s).sort().map(function(e){return JSON.stringify(e)+":"+r(s[e])}).join(",")+"}"}(h.settings)}function t(){if(!h.allowUnload&&n()!==a)return membersAdminMenus.i18n&&membersAdminMenus.i18n.unsavedChanges||""}var e=["dashicons-menu","dashicons-admin-dashboard","dashicons-admin-post","dashicons-admin-page","dashicons-admin-media","dashicons-admin-comments","dashicons-admin-appearance","dashicons-admin-plugins","dashicons-admin-users","dashicons-admin-tools","dashicons-admin-settings","dashicons-admin-generic","dashicons-edit","dashicons-plus","dashicons-chart-bar","dashicons-cart","dashicons-products","dashicons-email","dashicons-groups","dashicons-heart","dashicons-star-filled","dashicons-smiley","dashicons-info","dashicons-lock","dashicons-unlock","dashicons-visibility","dashicons-hidden","dashicons-arrow-up","dashicons-arrow-down","dashicons-admin-network","dashicons-performance"],r=["fa-solid fa-house","fa-solid fa-user","fa-solid fa-gear","fa-solid fa-file","fa-solid fa-image","fa-solid fa-cart-shopping","fa-solid fa-chart-line","fa-solid fa-envelope","fa-solid fa-book","fa-solid fa-link","fa-solid fa-bell","fa-solid fa-star","fa-solid fa-heart","fa-solid fa-lock","fa-solid fa-unlock","fa-solid fa-pen","fa-solid fa-trash","fa-solid fa-plus","fa-solid fa-minus"],i="members_am_view_state";function o(){try{localStorage.setItem(i,JSON.stringify({activeRoleSlugs:h.activeRoleSlugs,carouselPage:h.carouselPage}))}catch(e){}}function l(){return membersAdminMenus.roles||[]}function m(){h.settings._meta&&!Array.isArray(h.settings._meta)||(h.settings._meta={version:3,admin_editable:!1}),h.settings.roles&&!Array.isArray(h.settings.roles)||(h.settings.roles={}),h.settings.users&&!Array.isArray(h.settings.users)||(h.settings.users={}),Array.isArray(h.settings.custom_items)||(h.settings.custom_items=[]),h.settings.capabilities&&!Array.isArray(h.settings.capabilities)||(h.settings.capabilities={})}function _(e){m(),h.settings.roles[e]||(h.settings.roles[e]={hidden:[],order:[],submenu_order:{},overrides:{}});var r=h.settings.roles[e];return r.hidden&&Array.isArray(r.hidden)||(r.hidden=[]),r.order&&Array.isArray(r.order)||(r.order=[]),r.submenu_order&&!Array.isArray(r.submenu_order)||(r.submenu_order={}),r.overrides&&!Array.isArray(r.overrides)||(r.overrides={}),r}function x(e){m(),h.settings.users[e]||(h.settings.users[e]={});var r=h.settings.users[e];return r.hidden&&Array.isArray(r.hidden)||(r.hidden=[]),r.order&&Array.isArray(r.order)||(r.order=[]),r.overrides&&!Array.isArray(r.overrides)||(r.overrides={}),r.submenu_order&&!Array.isArray(r.submenu_order)||(r.submenu_order={}),r}function c(r){var e=x(r);return(e.order&&e.order.length?e.order.slice():w()).filter(function(e){return 0===e.indexOf("sep-")||!!b(e)&&!function(e,r){if(!r||-1!==r.indexOf("::"))return;var s=x(e),a=s.overrides&&s.overrides[r]||{};return a.parent&&"__promote__"!==a.parent}(r,e)})}function d(e,r,s,a){var n,t=x(e),i=t.overrides&&t.overrides[r]||{},o=s;!o&&i.parent&&"__promote__"!==i.parent&&(o=i.parent);var m,d,l,c,u=-1!==r.indexOf("::")?r.split("::").pop():r,p=(n=o?(t.submenu_order[o]||(t.submenu_order[o]=(m=e,l=A(d=o),c=x(m),h.tree.forEach(function(e){e&&e.id&&-1===e.id.indexOf("::")&&(c.overrides&&c.overrides[e.id]||{}).parent===d&&-1===l.indexOf(e.id)&&l.push(e.id)}),l)),t.submenu_order[o]):(t.order.length||(t.order=w()),t.order)).indexOf(u);if(-1!==p){var f=p+a;f<0||f>=n.length||(n.splice(p,1),n.splice(f,0,o?u:r))}}function u(e){var r=e.id||"c";return"members-am-"+String(r).replace(/[^a-z0-9_-]/gi,"-").toLowerCase()}function p(e){return!!e&&0===(-1!==e.indexOf("::")?e.split("::").pop():e).indexOf("members-am-")}function f(){var a=g.extend(!0,[],membersAdminMenus.menuTree||[]),n={};return a.forEach(function(e){n[e.id]=!0}),(h.settings.custom_items||[]).forEach(function(e){if(e&&e.id){var r=u(e);if(n[r]){for(var s=0;sn&&(h.carouselPage=n))}}h.activeRoleSlugs=r.filter(function(e){return"administrator"!==e||s}),h.activeRoleSlugs.length||(h.activeRoleSlugs=["subscriber"])}function J(){var a=g("#members-am-role-chips").empty();l().forEach(function(e){if("administrator"!==e.slug||h.settings._meta.admin_editable){var r=-1!==h.activeRoleSlugs.indexOf(e.slug),s=g(' ').text(e.label).attr("data-role",e.slug).toggleClass("is-active",r);a.append(s)}})}function j(t,i,e,o,m){(function(e,r,s,a,n){n=n||0;var t=r.id,i=M(e,t),o=!R(e,r.cap),m=_(e).overrides[t]||{},d=m.label||r.title||t,l=g('
').attr("data-id",t).attr("data-menu-parent",s||"").toggleClass("is-hidden",i).toggleClass("is-no-cap",o).toggleClass("is-selected",h.selectedId===t).toggleClass("is-sub",0 ');if(0===n){var u=m.icon||r.icon,p=P(u,m.icon_type||r.icon_type);if("fontawesome"===p&&u)c.append(g(' '));else if("svg"!==p&&"image"!==p&&"custom"!==p||!u){var f=u&&0===u.indexOf("dashicons-")?u:"dashicons-admin-generic";c.append(g(' '))}else c.append(g(" ").attr("src",u).css({width:"20px",height:"20px",display:"inline-block",verticalAlign:"middle",objectFit:"contain",filter:"none"}))}r.custom&&c.append(g('custom '));m.label&&c.append(g('edit '));if(c.append(g(' ').text(d)),m.badge){var b=m.badge_bg||"#d63638";c.append(g(' ').text(m.badge).css({backgroundColor:b,color:"#fff",fontSize:"9px",padding:"1px 5px",borderRadius:"2px",marginLeft:"4px",whiteSpace:"nowrap"}))}o&&c.append(g(' Roles.\">🔒 no access "));l.append(c),m.color_bg&&l.css("background-color",m.color_bg);m.color_text&&l.find(".members-am-item-label").css("color",m.color_text);m.color_icon&&(l.find(".dashicons").css("color",m.color_icon),l.find(".members-am-fa-icon i").css("color",m.color_icon),l.find("img").css("filter","none"));var v=g('
');v.append(g(' ').text("◉"),g(' ').text("↑"),g(' ').text("↓")),l.append(v),a.append(l)})(t,i,e,o,m=m||0),i.children&&i.children.length&&S(t,i.id).forEach(function(e){var r,s,a,n=(r=t,s=i.id,b(I(s,a=e))||(-1===a.indexOf("::")&&(_(r).overrides[a]||{}).parent===s?b(a):null));n&&"__promote__"!==(_(t).overrides[n.id]||{}).parent&&j(t,n,i.id,o,m+1)})}function L(s,a,e,n,t,i){i=i||0,t.append(function(r,e,s,a,n){n=n||0;var t=a.overrides&&a.overrides[r.id]||{},i=t.label||r.title,o=function(e,r){var s=x(e);if(-1!==s.hidden.indexOf(r))return!0;var a=y(r,e);return!(!a||-1===s.hidden.indexOf(a))}(s,r.id),m=!function(e){if(!e||"read"===e)return 1;for(var r=h.previewUserRoles||[],s=0;s").addClass(l).attr("data-id",r.id).attr("data-menu-parent",e||""),u=g('
');if(0===n){var p=t.icon||r.icon,f=P(p,t.icon_type||r.icon_type);"fontawesome"===f&&p?u.append(g(' ')):"svg"!==f&&"image"!==f&&"custom"!==f||!p?p&&0===p.indexOf("dashicons-")?u.append(g(' ')):u.append(g(' ')):u.append(g(" ").attr("src",p).css({width:"20px",height:"20px",display:"inline-block",verticalAlign:"middle",objectFit:"contain",filter:"none"}))}r.custom&&u.append(g('custom '));t.label&&u.append(g('edit '));if(u.append(g(' ').text(i)),t.badge){var b=t.badge_bg||"#d63638";u.append(g(' ').text(t.badge).css({backgroundColor:b,color:"#fff",fontSize:"9px",padding:"1px 5px",borderRadius:"2px",marginLeft:"4px",whiteSpace:"nowrap"}))}m&&u.append(g('🔒 no access "));c.append(u),t.color_bg&&c.css("background-color",t.color_bg);t.color_text&&c.find(".members-am-item-label").css("color",t.color_text);t.color_icon&&(c.find(".dashicons").css("color",t.color_icon),c.find(".members-am-fa-icon i").css("color",t.color_icon));var v=g('
');return v.append(g(' ').text(o?"◯":"◉"),g(' ').text("↑"),g(' ').text("↓")),c.append(v),c.on("click",function(e){g(e.target).closest("button").length||(h.selectedId=r.id,$())}),c}(a,e,s,n,i)),a.children&&a.children.length&&function(e,r){var s=A(r),a=x(e);h.tree.forEach(function(e){e&&e.id&&-1===e.id.indexOf("::")&&(a.overrides&&a.overrides[e.id]||{}).parent===r&&-1===s.indexOf(e.id)&&s.push(e.id)});var n=a.submenu_order&&a.submenu_order[r];if(!n||!n.length)return s.slice();var t=n.filter(function(e){return-1!==s.indexOf(e)});return s.forEach(function(e){-1===t.indexOf(e)&&t.push(e)}),t}(s,a.id).forEach(function(e){var r=function(e,r,s){var a=b(I(r,s));if(a)return a;if(-1===s.indexOf("::")){var n=x(e);if((n.overrides&&n.overrides[s]||{}).parent===r)return b(s)}return null}(s,a.id,e);r&&"__promote__"!==(n.overrides&&n.overrides[r.id]||{}).parent&&L(s,r,a.id,n,t,i+1)})}function F(e){return-1!==e.indexOf("::")?e.split("::").pop():e}function z(){g.fn.sortable&&g("#members-am-columns .members-am-sidebar-list").each(function(){var e=g(this);e.data("ui-sortable")&&e.sortable("destroy");var r=e.closest(".members-am-column"),s=r.data("role"),a=r.data("user");e.sortable({axis:"y",distance:6,items:"> .members-am-item, > .members-am-sep",cancel:".members-am-item-actions button",placeholder:"members-am-sort-placeholder",forcePlaceholderSize:!0,tolerance:"pointer",update:function(){a?function(e,r){var n=[],t={};e.children().each(function(){var e=g(this);if(e.hasClass("members-am-sep")){var r=e.attr("data-sep-id");r&&n.push(r)}else if(e.hasClass("members-am-item")){var s=e.attr("data-id");if(s){var a=e.attr("data-menu-parent");void 0===a||""===a?n.push(s):(t[a]||(t[a]=[]),t[a].push(F(s)))}}});var s=x(r);s.order=n,s.submenu_order=t}(e,a):s&&function(e,r){var n=[],t={};e.children().each(function(){var e=g(this);if(e.hasClass("members-am-sep")){var r=e.attr("data-sep-id");r&&n.push(r)}else if(e.hasClass("members-am-item")){var s=e.attr("data-id");if(s){var a=e.attr("data-menu-parent");void 0===a||""===a?n.push(s):(t[a]||(t[a]=[]),t[a].push(F(s)))}}});var s=_(r);s.order=n,s.submenu_order=t}(e,s),W()}})})}function D(){var s=g("#members-am-columns"),a={};s.find(".members-am-column").each(function(){var e=g(this).data("role");if(e){var r=g(this).find(".members-am-sidebar-list");r.length&&(a[e]=r.scrollTop())}}),s.empty();var e=h.carouselPage*h.columnsPerPage;if(h.activeRoleSlugs.slice(e,e+h.columnsPerPage).forEach(function(e){var r=g('
');!function(s,e){e.empty();var r=g(''),a=(l().filter(function(e){return e.slug===s})[0]||{}).label||s;r.append(g('').text(a)),r.append(g(' ').append(g(' ').text("◀"),g(' ').text("▶"))),e.append(r);var n=g('');k(s).forEach(function(e){if(0!==e.indexOf("sep-")){var r=b(e);r&&j(s,r,null,n,0)}else n.append(g('
').attr("data-sep-id",e).text("—"))}),e.append(n)}(e,r),s.append(r),a[e]&&r.find(".members-am-sidebar-list").scrollTop(a[e])}),h.previewUserId){var n=h.previewUserId,r=g('
'),t=g('');t.append(g(" ").text(h.previewUserLabel||"User #"+n)),t.append(g('× ').on("click",function(){h.previewUserId=null,h.previewUserLabel=null,h.previewUserRoles=[],$()})),r.append(t);var i=g(''),o=x(n);c(n).forEach(function(e){if(0!==e.indexOf("sep-")){var r=b(e);r&&L(n,r,null,o,i,0)}else i.append(g('
').attr("data-sep-id",e).text("——"))}),r.append(i),s.append(r)}if(h.syncScroll){var m=s.find(".members-am-sidebar-list"),d=!1;m.on("scroll",function(){if(!d){d=!0;var e=g(this).scrollTop();m.not(this).scrollTop(e),d=!1}})}!function(){var e=Math.max(1,Math.ceil(h.activeRoleSlugs.length/h.columnsPerPage)),r=(Math.min(h.carouselPage+1,e),h.carouselPage*h.columnsPerPage+1),s=Math.min((h.carouselPage+1)*h.columnsPerPage,h.activeRoleSlugs.length);g("#members-am-carousel-status").text(r+"–"+s+" "+membersAdminMenus.i18n.of+" "+h.activeRoleSlugs.length);for(var a=g("#members-am-carousel-dots").empty(),n=0;n ').toggleClass("is-active",n===h.carouselPage))}(),z()}function W(){if(h.selectedId){g("#members-am-edit-panel").removeAttr("hidden");var e=b(h.selectedId),r=U()||{};g("#members-am-edit-title").text(e?e.title:h.selectedId),g("#members-am-edit-label").val(r.label||e&&e.title||"");var s=p(h.selectedId);g("#members-am-edit-url-wrap").toggle(s),g("#members-am-edit-url").attr("placeholder","Override URL (leave empty for default)").val(s&&(r.url||e&&e.url)||"").data("default-url",e&&e.url||""),g("#members-am-icon-type").val(r.icon_type||"dashicon"),g("#members-am-icon-value").val(r.icon||e&&e.icon||"");var a=r.icon||e&&e.icon||"",n=P(a,r.icon_type||e&&e.icon_type||"");"image"!==n&&"custom"!==n&&"svg"!==n||!a?g("#members-am-icon-preview").hide():g("#members-am-icon-preview").show().attr("src",a),g("#members-am-color-bg").val(r.color_bg||""),g("#members-am-color-text").val(r.color_text||""),g("#members-am-color-icon").val(r.color_icon||""),g("#members-am-badge-text").val(r.badge||""),g("#members-am-badge-bg").val(r.badge_bg||""),g("#members-am-item-cap").attr("placeholder",e&&e.cap?e.cap+" (default)":"").val(h.settings.capabilities[h.selectedId]||"");var t=e&&e.custom;g("#members-am-remove-custom").toggle(!!t),g("#members-am-visibility-toggles").empty();var i=e&&e.cap||"read";l().forEach(function(e){if("administrator"!==e.slug||h.settings._meta.admin_editable){var r=M(e.slug,h.selectedId),s=R(e.slug,i),a=g(' ').attr("data-role",e.slug).prop("checked",!r&&s);s||a.prop("disabled",!0);var n=g(' ').append(a,g(" ").text(e.label));s||(n.append(g(" ").text(" — no capability").css({color:"#999",fontStyle:"italic",marginLeft:"4px"})),n.css("opacity","0.5")),g("#members-am-visibility-toggles").append(n)}}),g(".members-am-color").each(function(){g(this).data("wpWpColorPicker")&&g(this).wpColorPicker("destroy")}),g(".members-am-color").wpColorPicker({change:function(e,r){setTimeout(function(){Q()},20)},clear:function(){setTimeout(function(){Q()},20)}}),q(),function(){var e=g(".members-am-demote-wrap"),s=g("#members-am-demote-parent"),r=g("#members-am-demote");if(!h.selectedId)return e.attr("hidden",!0);if(v(h.selectedId))return e.attr("hidden",!0);var a=C()[0]||h.activeRoleSlugs[0];if(a&&O(a,h.selectedId))return e.attr("hidden",!0);e.removeAttr("hidden");var n=h.selectedId,t=membersAdminMenus.i18n&&membersAdminMenus.i18n.selectParentMenu||"";s.empty().append(g(" ").val("").text(t));var i=0;h.tree.forEach(function(e){if(e&&e.id&&e.id!==n){var r=e.title&&String(e.title).trim()?e.title:e.id;s.append(g(" ").val(e.id).text(r)),i++}});var o=0 ');"dashicons"===s?r.append(g(' ')):r.append(g(' ')),r.on("click",function(){g("#members-am-icon-value").val(e),g("#members-am-icon-type").val("dashicons"===s?"dashicon":"fontawesome"),Q()}),n.append(r)}})}function s(e,r){var s=h.activeRoleSlugs.indexOf(e);if(-1!==s){var a=s+r;if(!(a<0||a>=h.activeRoleSlugs.length)){var n=h.activeRoleSlugs[s];h.activeRoleSlugs[s]=h.activeRoleSlugs[a],h.activeRoleSlugs[a]=n,o(),$()}}}function B(e,r,s){var a,n,t,i=_(e).overrides[r]||{},o=null;if("__promote__"===i.parent?o=null:-1!==r.indexOf("::")?o=v(r):i.parent&&"__promote__"!==i.parent&&(o=i.parent),o){var m=_(e).submenu_order;m[o]||(m[o]=(a=e,t=A(n=o),h.tree.forEach(function(e){e&&e.id&&-1===e.id.indexOf("::")&&(_(a).overrides[e.id]||{}).parent===n&&-1===t.indexOf(e.id)&&t.push(e.id)}),t));var d=m[o],l=-1!==r.indexOf("::")?r.split("::").pop():r;if(-1===(u=d.indexOf(l)))return;if((p=u+s)<0||p>=d.length)return;var c=d[u];d[u]=d[p],d[p]=c}else{_(e).order&&_(e).order.length||(_(e).order=w());var u,p,f=_(e).order;if(-1===(u=f.indexOf(r)))return;if((p=u+s)<0||p>=f.length)return;var b=f[u];f[u]=f[p],f[p]=b}$()}function G(){var e=C();if(e.length){var a="sep-"+Date.now();e.forEach(function(e){_(e).order&&_(e).order.length||(_(e).order=w());var r=_(e).order,s=h.selectedId?r.indexOf(h.selectedId):r.length-1;s<0&&(s=r.length),r.splice(s+1,0,a)}),$()}}function H(e){var r=g("#members-am-toolbar-loading");r.removeAttr("hidden"),r.find(".spinner").addClass("is-active"),r.find(".members-am-loading-text").text(e||""),g("#members-am-save, #members-am-reset, #members-am-import, #members-am-copy-apply").prop("disabled",!0)}function K(){var e=g("#members-am-toolbar-loading");e.attr("hidden",!0),e.find(".spinner").removeClass("is-active"),e.find(".members-am-loading-text").text(""),g("#members-am-save, #members-am-reset, #members-am-import, #members-am-copy-apply").prop("disabled",!1)}function V(e){H(e||membersAdminMenus.i18n&&membersAdminMenus.i18n.saving||"Saving…");var r=!1;g.post(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_save",nonce:membersAdminMenus.nonce,settings:JSON.stringify(h.settings)}).done(function(e){if(e.success)return h.allowUnload=!0,alert(membersAdminMenus.i18n.saved),r=!0,void location.reload();alert(e.data&&e.data.message?e.data.message:"Error")}).fail(function(){alert(membersAdminMenus.i18n.networkError||"Could not save settings. Check your connection and try again.")}).always(function(){r||K()})}function X(e,r){if(confirm("role"===e&&r?"Reset all settings for this role? This cannot be undone.":"Reset ALL menu settings for every role? This cannot be undone.")){H(membersAdminMenus.i18n&&membersAdminMenus.i18n.resetting||"Resetting…");var s=!1;g.post(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_reset",nonce:membersAdminMenus.nonce,scope:e||"all",role:r||""}).done(function(e){if(e.success)return h.allowUnload=!0,s=!0,void location.reload();alert(e.data&&e.data.message?e.data.message:"Reset failed.")}).fail(function(){alert(membersAdminMenus.i18n.networkError||"Could not reset settings. Check your connection and try again.")}).always(function(){s||K()})}}function Y(e){g.getJSON(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_user_search",nonce:membersAdminMenus.nonce,term:e},function(e){e.success&&e.data&&e.data.length?function(e){g(".members-am-user-suggestions").remove();var r=g("#members-am-user-search").parent();r.css("position","relative");var s=g('
');e.forEach(function(e){s.append(g('
').text(e.label).data("userId",e.id).on("click",function(){!function(e,r,s){h.previewUserId=e,h.previewUserLabel=r||"User #"+e,h.previewUserRoles=s||[],m(),h.settings.users[e]||(h.settings.users[e]={});$()}(e.id,e.label,e.roles),g(".members-am-user-suggestions").remove(),g("#members-am-user-search").val("")}))}),r.append(s),setTimeout(function(){g(document).one("click",function(){g(".members-am-user-suggestions").remove()})},0)}(e.data):g(".members-am-user-suggestions").remove()})}function Z(){var r;g(document).on("click","#members-am-role-chips .members-am-chip",function(){var e=g(this).data("role"),r=h.activeRoleSlugs.indexOf(e);-1===r?h.activeRoleSlugs.push(e):1 ');if(t.append(g('
').text("Reset Settings")),a&&n){var i=g(' ');i.append(g(' ')),i.append(g(' ').append(g(" ").text("Reset "+n),g(" ").text("Clear all menu settings for this role only"))),i.on("click",function(){g(".members-am-reset-dropdown").remove(),X("role",a)}),t.append(i)}var o=g(' ');o.append(g(' ')),o.append(g(' ').append(g(" ").text("Reset all roles"),g(" ").text("Clear all menu settings for every role"))),o.on("click",function(){g(".members-am-reset-dropdown").remove(),X("all")}),t.append(o),r.parent().css("position","relative"),t.insertAfter(r),g(document).one("click",function(){g(".members-am-reset-dropdown").remove()})}),g("#members-am-export").on("click",function(e){e.preventDefault(),window.location.href=membersAdminMenus.exportUrl}),g("#members-am-import").on("click",function(){g("#members-am-import-file").trigger("click")}),g("#members-am-import-file").on("change",function(){var e=this.files&&this.files[0];e&&function(e){H(membersAdminMenus.i18n&&membersAdminMenus.i18n.importing||"Importing…");var s=new FileReader;s.onerror=function(){K(),alert(membersAdminMenus.i18n&&membersAdminMenus.i18n.networkError||"Could not read the file.")},s.onload=function(){try{var e=JSON.parse(s.result),r=!1;g.post(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_import",nonce:membersAdminMenus.nonce,settings:JSON.stringify(e)}).done(function(e){if(e.success)return h.allowUnload=!0,r=!0,void location.reload();alert(e.data&&e.data.message?e.data.message:"Error")}).fail(function(){alert(membersAdminMenus.i18n.networkError||"Could not import settings. Check your connection and try again.")}).always(function(){r||K()})}catch(e){K(),alert("Invalid JSON")}},s.readAsText(e)}(e)}),g("#members-am-copy-apply").on("click",function(){var s=g("#members-am-copy-from").val(),r=g("#members-am-copy-to").val();if(s&&r)if(s!==r){var a="",n="";if(l().forEach(function(e){e.slug===s&&(a=e.label),e.slug===r&&(n=e.label)}),confirm('Copy menu settings from "'+a+'" to "'+n+'"?\nThis will overwrite "'+n+"\" menu configuration.\n\nNote: This copies menu order, hidden items, labels, icons, and colors.\nIt does NOT change the role's capabilities (items marked with a lock icon).")){var e=_(s),t={hidden:e.hidden?e.hidden.slice():[],order:[],submenu_order:{},overrides:{}},i=k(s);t.order=i.slice(),h.tree.forEach(function(e){if(e.children&&e.children.length){var r=S(s,e.id);r&&r.length&&(t.submenu_order[e.id]=r.slice())}}),e.overrides&&"object"==typeof e.overrides&&(t.overrides=JSON.parse(JSON.stringify(e.overrides))),h.settings.roles[r]=t,-1===h.activeRoleSlugs.indexOf(r)&&(h.activeRoleSlugs.push(r),o(),J()),$(),V(membersAdminMenus.i18n&&membersAdminMenus.i18n.copying||"Copying…")}}else alert("Source and target roles must be different.")}),g("#members-am-admin-editable").on("change",function(){var e=!0;g(this).is(":checked")&&(e=window.confirm(membersAdminMenus.i18n.adminEditableWarn)),e?(h.settings._meta.admin_editable=g(this).is(":checked"),N(),J(),o(),$()):g(this).prop("checked",!1)}),g("#members-am-sync-scroll").prop("checked",!1!==h.syncScroll),g("#members-am-sync-scroll").on("change",function(){h.syncScroll=g(this).is(":checked");try{localStorage.setItem("members_am_sync_scroll",h.syncScroll?"1":"0")}catch(e){}D()}),g("#members-am-add-item").on("click",function(){var e="c"+Date.now();h.settings.custom_items.push({id:e,label:"Custom link",url:window.location.origin+"/wp-admin/",icon_type:"dashicon",icon:"dashicons-admin-generic",parent:"",position:99,cap:"read"}),h.tree=f(),h.selectedId=u({id:e}),$(),W()}),g("#members-am-remove-custom").on("click",function(){var r=b(h.selectedId);r&&r.customId&&(h.settings.custom_items=(h.settings.custom_items||[]).filter(function(e){return e.id!==r.customId}),h.selectedId=null,h.tree=f(),$(),g("#members-am-edit-panel").attr("hidden",!0))}),g("#members-am-edit-close").on("click",function(){h.selectedId=null,g("#members-am-edit-panel").attr("hidden",!0),$()}),g("#members-am-edit-target-role").on("change",W),g("#members-am-edit-label, #members-am-edit-url, #members-am-icon-value, #members-am-badge-text").on("input",function(){Q()}),g("#members-am-item-cap").on("input",function(){Q()}),g(".members-am-icon-tabs .button").on("click",function(){g(".members-am-icon-tabs .button").removeClass("is-active"),g(this).addClass("is-active"),h.iconTab="fontawesome"===g(this).data("tab")?"fontawesome":"upload"===g(this).data("tab")?"upload":"dashicons",q()}),g("#members-am-icon-search").on("input",q),g("#members-am-media-upload").on("click",function(e){e.preventDefault(),h.mediaFrame||(h.mediaFrame=wp.media({title:"Choose menu icon",button:{text:"Use as icon"},multiple:!1,library:{type:"image"}}),h.mediaFrame.on("select",function(){var e=h.mediaFrame.state().get("selection").first().toJSON(),r=e.url||"";e.sizes&&(e.sizes.thumbnail?r=e.sizes.thumbnail.url:e.sizes.medium&&(r=e.sizes.medium.url)),g("#members-am-icon-type").val("custom"),g("#members-am-icon-value").val(r),Q()})),h.mediaFrame.open()}),g(document).on("change",".members-am-vis-cb",function(){var e=g(this).data("role");if(g(this).is(":checked")){var r=_(e).hidden,s=r.indexOf(h.selectedId);-1!==s&&r.splice(s,1)}else-1===_(e).hidden.indexOf(h.selectedId)&&_(e).hidden.push(h.selectedId);$()}),g("#members-am-add-sep").on("click",G),g("#members-am-promote").on("click",function(){if(h.selectedId){var n=h.selectedId,e=U()||{};if(-1===n.indexOf("::")&&e.parent&&"__promote__"!==e.parent){var t=e.parent,r=E();if(r){var s=x(r);if(s.overrides[n]&&delete s.overrides[n].parent,s.submenu_order&&s.submenu_order[t]){var a=s.submenu_order[t].indexOf(n);-1!==a&&s.submenu_order[t].splice(a,1)}if(s.order.length||(s.order=w()),-1===s.order.indexOf(n)){var i=s.order.indexOf(t);-1!==i?s.order.splice(i+1,0,n):s.order.push(n)}}else C().forEach(function(e){var r=_(e);if(r.overrides[n]&&delete r.overrides[n].parent,r.submenu_order&&r.submenu_order[t]){var s=r.submenu_order[t].indexOf(n);-1!==s&&r.submenu_order[t].splice(s,1)}if(r.order&&r.order.length||(r.order=w()),-1===r.order.indexOf(n)){var a=r.order.indexOf(t);-1!==a?r.order.splice(a+1,0,n):r.order.push(n)}});return Q(),void W()}T("parent","__promote__");var o=v(n);C().forEach(function(e){var r=_(e);if(r.order&&r.order.length||(r.order=w()),-1===r.order.indexOf(n))if(o){var s=r.order.indexOf(o);-1!==s?r.order.splice(s+1,0,n):r.order.push(n)}else r.order.push(n)}),Q(),W()}}),g("#members-am-demote").on("click",function(){var e=g("#members-am-demote-parent").val();e?(T("parent",e),Q(),W()):window.alert(membersAdminMenus.i18n&&membersAdminMenus.i18n.selectParentFirst||"Please choose a parent menu from the list.")}),g("#members-am-user-search").on("input",function(){var e=g(this).val();clearTimeout(r),r=setTimeout(function(){1 ").val("__all__").text("All roles")),h.activeRoleSlugs.forEach(function(r){var e=(l().filter(function(e){return e.slug===r})[0]||{}).label||r;s.append(g(" ").val(r).text(e))}),h.previewUserId&&s.append(g(" ").val("__user__"+h.previewUserId).text(h.previewUserLabel||"User #"+h.previewUserId)),h.selectedId&&W()}g(function(){var r,s,e;m(),h.tree=f(),N(),g("#members-am-admin-editable").prop("checked",!!h.settings._meta.admin_editable),r=g("#members-am-copy-from").empty(),s=g("#members-am-copy-to").empty(),(e=l()).forEach(function(e){r.append(g(" ").val(e.slug).text(e.label)),s.append(g(" ").val(e.slug).text(e.label))}),1=n.length||(n.splice(p,1),n.splice(f,0,o?u:r))}}function u(e){var r=e.id||"c";return"members-am-"+String(r).replace(/[^a-z0-9_-]/gi,"-").toLowerCase()}function p(e){return!!e&&0===(-1!==e.indexOf("::")?e.split("::").pop():e).indexOf("members-am-")}function f(){var a=g.extend(!0,[],membersAdminMenus.menuTree||[]),n={};return a.forEach(function(e){n[e.id]=!0}),(h.settings.custom_items||[]).forEach(function(e){if(e&&e.id){var r=u(e);if(n[r]){for(var s=0;sn&&(h.carouselPage=n))}}h.activeRoleSlugs=r.filter(function(e){return"administrator"!==e||s}),h.activeRoleSlugs.length||(h.activeRoleSlugs=["subscriber"])}function J(){var a=g("#members-am-role-chips").empty();l().forEach(function(e){if("administrator"!==e.slug||h.settings._meta.admin_editable){var r=-1!==h.activeRoleSlugs.indexOf(e.slug),s=g(' ').text(e.label).attr("data-role",e.slug).toggleClass("is-active",r);a.append(s)}})}function j(t,i,e,o,m){(function(e,r,s,a,n){n=n||0;var t=r.id,i=M(e,t),o=!P(e,r.cap),m=_(e).overrides[t]||{},d=m.label||r.title||t,l=g('
').attr("data-id",t).attr("data-menu-parent",s||"").toggleClass("is-hidden",i).toggleClass("is-no-cap",o).toggleClass("is-selected",h.selectedId===t).toggleClass("is-sub",0 ');if(0===n){var u=m.icon||r.icon,p=R(u,m.icon_type||r.icon_type);if("fontawesome"===p&&u)c.append(g(' '));else if("svg"!==p&&"image"!==p&&"custom"!==p||!u){var f=u&&0===u.indexOf("dashicons-")?u:"dashicons-admin-generic";c.append(g(' '))}else c.append(g(" ").attr("src",u).css({width:"20px",height:"20px",display:"inline-block",verticalAlign:"middle",objectFit:"contain",filter:"none"}))}r.custom&&c.append(g('custom '));m.label&&c.append(g('edit '));if(c.append(g(' ').text(d)),m.badge){var b=m.badge_bg||"#d63638";c.append(g(' ').text(m.badge).css({backgroundColor:b,color:"#fff",fontSize:"9px",padding:"1px 5px",borderRadius:"2px",marginLeft:"4px",whiteSpace:"nowrap"}))}o&&c.append(g(' Roles.\">🔒 no access "));l.append(c),m.color_bg&&l.css("background-color",m.color_bg);m.color_text&&l.find(".members-am-item-label").css("color",m.color_text);m.color_icon&&(l.find(".dashicons").css("color",m.color_icon),l.find(".members-am-fa-icon i").css("color",m.color_icon),l.find("img").css("filter","none"));var v=g('
');v.append(g(' ').text("◉"),g(' ').text("↑"),g(' ').text("↓")),l.append(v),a.append(l)})(t,i,e,o,m=m||0),i.children&&i.children.length&&k(t,i.id).forEach(function(e){var r,s,a,n=(r=t,s=i.id,b(I(s,a=e))||(-1===a.indexOf("::")&&(_(r).overrides[a]||{}).parent===s?b(a):null));n&&"__promote__"!==(_(t).overrides[n.id]||{}).parent&&j(t,n,i.id,o,m+1)})}function L(s,a,e,n,t,i){i=i||0,t.append(function(r,e,s,a,n){n=n||0;var t=a.overrides&&a.overrides[r.id]||{},i=t.label||r.title,o=function(e,r){var s=x(e);if(-1!==s.hidden.indexOf(r))return!0;var a=y(r,e);return!(!a||-1===s.hidden.indexOf(a))}(s,r.id),m=!function(e){if(!e||"read"===e)return 1;for(var r=h.previewUserRoles||[],s=0;s").addClass(l).attr("data-id",r.id).attr("data-menu-parent",e||""),u=g('
');if(0===n){var p=t.icon||r.icon,f=R(p,t.icon_type||r.icon_type);"fontawesome"===f&&p?u.append(g(' ')):"svg"!==f&&"image"!==f&&"custom"!==f||!p?p&&0===p.indexOf("dashicons-")?u.append(g(' ')):u.append(g(' ')):u.append(g(" ").attr("src",p).css({width:"20px",height:"20px",display:"inline-block",verticalAlign:"middle",objectFit:"contain",filter:"none"}))}r.custom&&u.append(g('custom '));t.label&&u.append(g('edit '));if(u.append(g(' ').text(i)),t.badge){var b=t.badge_bg||"#d63638";u.append(g(' ').text(t.badge).css({backgroundColor:b,color:"#fff",fontSize:"9px",padding:"1px 5px",borderRadius:"2px",marginLeft:"4px",whiteSpace:"nowrap"}))}m&&u.append(g('🔒 no access "));c.append(u),t.color_bg&&c.css("background-color",t.color_bg);t.color_text&&c.find(".members-am-item-label").css("color",t.color_text);t.color_icon&&(c.find(".dashicons").css("color",t.color_icon),c.find(".members-am-fa-icon i").css("color",t.color_icon));var v=g('
');return v.append(g(' ').text(o?"◯":"◉"),g(' ').text("↑"),g(' ').text("↓")),c.append(v),c.on("click",function(e){g(e.target).closest("button").length||(h.selectedId=r.id,$())}),c}(a,e,s,n,i)),a.children&&a.children.length&&function(e,r){var s=A(r),a=x(e);h.tree.forEach(function(e){e&&e.id&&-1===e.id.indexOf("::")&&(a.overrides&&a.overrides[e.id]||{}).parent===r&&-1===s.indexOf(e.id)&&s.push(e.id)});var n=a.submenu_order&&a.submenu_order[r];if(!n||!n.length)return s.slice();var t=n.filter(function(e){return-1!==s.indexOf(e)});return s.forEach(function(e){-1===t.indexOf(e)&&t.push(e)}),t}(s,a.id).forEach(function(e){var r=function(e,r,s){var a=b(I(r,s));if(a)return a;if(-1===s.indexOf("::")){var n=x(e);if((n.overrides&&n.overrides[s]||{}).parent===r)return b(s)}return null}(s,a.id,e);r&&"__promote__"!==(n.overrides&&n.overrides[r.id]||{}).parent&&L(s,r,a.id,n,t,i+1)})}function F(e){return-1!==e.indexOf("::")?e.split("::").pop():e}function z(){g.fn.sortable&&g("#members-am-columns .members-am-sidebar-list").each(function(){var e=g(this);e.data("ui-sortable")&&e.sortable("destroy");var r=e.closest(".members-am-column"),s=r.data("role"),a=r.data("user");e.sortable({axis:"y",distance:6,items:"> .members-am-item, > .members-am-sep",cancel:".members-am-item-actions button",placeholder:"members-am-sort-placeholder",forcePlaceholderSize:!0,tolerance:"pointer",update:function(){a?function(e,r){var n=[],t={};e.children().each(function(){var e=g(this);if(e.hasClass("members-am-sep")){var r=e.attr("data-sep-id");r&&n.push(r)}else if(e.hasClass("members-am-item")){var s=e.attr("data-id");if(s){var a=e.attr("data-menu-parent");void 0===a||""===a?n.push(s):(t[a]||(t[a]=[]),t[a].push(F(s)))}}});var s=x(r);s.order=n,s.submenu_order=t}(e,a):s&&function(e,r){var n=[],t={};e.children().each(function(){var e=g(this);if(e.hasClass("members-am-sep")){var r=e.attr("data-sep-id");r&&n.push(r)}else if(e.hasClass("members-am-item")){var s=e.attr("data-id");if(s){var a=e.attr("data-menu-parent");void 0===a||""===a?n.push(s):(t[a]||(t[a]=[]),t[a].push(F(s)))}}});var s=_(r);s.order=n,s.submenu_order=t}(e,s),W()}})})}function D(){var s=g("#members-am-columns"),a={};s.find(".members-am-column").each(function(){var e=g(this).data("role");if(e){var r=g(this).find(".members-am-sidebar-list");r.length&&(a[e]=r.scrollTop())}}),s.empty();var e=h.carouselPage*h.columnsPerPage;if(h.activeRoleSlugs.slice(e,e+h.columnsPerPage).forEach(function(e){var r=g('
');!function(s,e){e.empty();var r=g(''),a=(l().filter(function(e){return e.slug===s})[0]||{}).label||s;r.append(g('').text(a)),r.append(g(' ').append(g(' ').text("◀"),g(' ').text("▶"))),e.append(r);var n=g('');S(s).forEach(function(e){if(0!==e.indexOf("sep-")){var r=b(e);r&&j(s,r,null,n,0)}else n.append(g('
').attr("data-sep-id",e).text("—"))}),e.append(n)}(e,r),s.append(r),a[e]&&r.find(".members-am-sidebar-list").scrollTop(a[e])}),h.previewUserId){var n=h.previewUserId,r=g('
'),t=g('');t.append(g(" ").text(h.previewUserLabel||"User #"+n)),t.append(g('× ').on("click",function(){h.previewUserId=null,h.previewUserLabel=null,h.previewUserRoles=[],$()})),r.append(t);var i=g(''),o=x(n);c(n).forEach(function(e){if(0!==e.indexOf("sep-")){var r=b(e);r&&L(n,r,null,o,i,0)}else i.append(g('
').attr("data-sep-id",e).text("——"))}),r.append(i),s.append(r)}if(h.syncScroll){var m=s.find(".members-am-sidebar-list"),d=!1;m.on("scroll",function(){if(!d){d=!0;var e=g(this).scrollTop();m.not(this).scrollTop(e),d=!1}})}!function(){var e=Math.max(1,Math.ceil(h.activeRoleSlugs.length/h.columnsPerPage)),r=(Math.min(h.carouselPage+1,e),h.carouselPage*h.columnsPerPage+1),s=Math.min((h.carouselPage+1)*h.columnsPerPage,h.activeRoleSlugs.length);g("#members-am-carousel-status").text(r+"–"+s+" "+membersAdminMenus.i18n.of+" "+h.activeRoleSlugs.length);for(var a=g("#members-am-carousel-dots").empty(),n=0;n ').toggleClass("is-active",n===h.carouselPage))}(),z()}function W(){if(h.selectedId){g("#members-am-edit-panel").removeAttr("hidden");var e=b(h.selectedId),r=U()||{};g("#members-am-edit-title").text(e?e.title:h.selectedId),g("#members-am-edit-label").val(r.label||e&&e.title||"");var s=p(h.selectedId);g("#members-am-edit-url-wrap").toggle(s),g("#members-am-edit-url").attr("placeholder","Override URL (leave empty for default)").val(s&&(r.url||e&&e.url)||"").data("default-url",e&&e.url||""),g("#members-am-icon-type").val(r.icon_type||"dashicon"),g("#members-am-icon-value").val(r.icon||e&&e.icon||"");var a=r.icon||e&&e.icon||"",n=R(a,r.icon_type||e&&e.icon_type||"");"image"!==n&&"custom"!==n&&"svg"!==n||!a?g("#members-am-icon-preview").hide():g("#members-am-icon-preview").show().attr("src",a),g("#members-am-color-bg").val(r.color_bg||""),g("#members-am-color-text").val(r.color_text||""),g("#members-am-color-icon").val(r.color_icon||""),g("#members-am-badge-text").val(r.badge||""),g("#members-am-badge-bg").val(r.badge_bg||""),g("#members-am-item-cap").attr("placeholder",e&&e.cap?e.cap+" (default)":"").val(h.settings.capabilities[h.selectedId]||"");var t=e&&e.custom;g("#members-am-remove-custom").toggle(!!t),g("#members-am-visibility-toggles").empty();var i=e&&e.cap||"read";l().forEach(function(e){if("administrator"!==e.slug||h.settings._meta.admin_editable){var r=M(e.slug,h.selectedId),s=P(e.slug,i),a=g(' ').attr("data-role",e.slug).prop("checked",!r&&s);s||a.prop("disabled",!0);var n=g(' ').append(a,g(" ").text(e.label));s||(n.append(g(" ").text(" — no capability").css({color:"#999",fontStyle:"italic",marginLeft:"4px"})),n.css("opacity","0.5")),g("#members-am-visibility-toggles").append(n)}}),g(".members-am-color").each(function(){g(this).data("wpWpColorPicker")&&g(this).wpColorPicker("destroy")}),g(".members-am-color").wpColorPicker({change:function(e,r){setTimeout(function(){Q()},20)},clear:function(){setTimeout(function(){Q()},20)}}),q(),function(){var e=g(".members-am-demote-wrap"),s=g("#members-am-demote-parent"),r=g("#members-am-demote");if(!h.selectedId)return e.attr("hidden",!0);if(v(h.selectedId))return e.attr("hidden",!0);var a=C()[0]||h.activeRoleSlugs[0];if(a&&O(a,h.selectedId))return e.attr("hidden",!0);e.removeAttr("hidden");var n=h.selectedId,t=membersAdminMenus.i18n&&membersAdminMenus.i18n.selectParentMenu||"";s.empty().append(g(" ").val("").text(t));var i=0;h.tree.forEach(function(e){if(e&&e.id&&e.id!==n){var r=e.title&&String(e.title).trim()?e.title:e.id;s.append(g(" ").val(e.id).text(r)),i++}});var o=0 ');"dashicons"===s?r.append(g(' ')):r.append(g(' ')),r.on("click",function(){g("#members-am-icon-value").val(e),g("#members-am-icon-type").val("dashicons"===s?"dashicon":"fontawesome"),Q()}),n.append(r)}})}function s(e,r){var s=h.activeRoleSlugs.indexOf(e);if(-1!==s){var a=s+r;if(!(a<0||a>=h.activeRoleSlugs.length)){var n=h.activeRoleSlugs[s];h.activeRoleSlugs[s]=h.activeRoleSlugs[a],h.activeRoleSlugs[a]=n,o(),$()}}}function B(e,r,s){var a,n,t,i=_(e).overrides[r]||{},o=null;if("__promote__"===i.parent?o=null:-1!==r.indexOf("::")?o=v(r):i.parent&&"__promote__"!==i.parent&&(o=i.parent),o){var m=_(e).submenu_order;m[o]||(m[o]=(a=e,t=A(n=o),h.tree.forEach(function(e){e&&e.id&&-1===e.id.indexOf("::")&&(_(a).overrides[e.id]||{}).parent===n&&-1===t.indexOf(e.id)&&t.push(e.id)}),t));var d=m[o],l=-1!==r.indexOf("::")?r.split("::").pop():r;if(-1===(u=d.indexOf(l)))return;if((p=u+s)<0||p>=d.length)return;var c=d[u];d[u]=d[p],d[p]=c}else{_(e).order&&_(e).order.length||(_(e).order=w());var u,p,f=_(e).order;if(-1===(u=f.indexOf(r)))return;if((p=u+s)<0||p>=f.length)return;var b=f[u];f[u]=f[p],f[p]=b}$()}function G(){var e=C();if(e.length){var a="sep-"+Date.now();e.forEach(function(e){_(e).order&&_(e).order.length||(_(e).order=w());var r=_(e).order,s=h.selectedId?r.indexOf(h.selectedId):r.length-1;s<0&&(s=r.length),r.splice(s+1,0,a)}),$()}}function H(e){var r=g("#members-am-toolbar-loading");r.removeAttr("hidden"),r.find(".spinner").addClass("is-active"),r.find(".members-am-loading-text").text(e||""),g("#members-am-save, #members-am-reset, #members-am-import, #members-am-copy-apply").prop("disabled",!0)}function K(){var e=g("#members-am-toolbar-loading");e.attr("hidden",!0),e.find(".spinner").removeClass("is-active"),e.find(".members-am-loading-text").text(""),g("#members-am-save, #members-am-reset, #members-am-import, #members-am-copy-apply").prop("disabled",!1)}function V(e){H(e||membersAdminMenus.i18n&&membersAdminMenus.i18n.saving||"Saving…");var r=!1,n=membersAdminMenus.i18n&&membersAdminMenus.i18n.networkError||"Could not save settings. Check your connection and try again.";g.ajax({url:membersAdminMenus.ajaxUrl,type:"POST",dataType:"json",timeout:6e4,data:{action:"members_admin_menus_save",nonce:membersAdminMenus.nonce,settings:JSON.stringify(h.settings)}}).done(function(e){if(e&&void 0!==e.success)return e.success?(h.allowUnload=!0,alert(membersAdminMenus.i18n.saved),r=!0,void location.reload()):void alert(e.data&&e.data.message?e.data.message:"Error");alert(n)}).fail(function(e,r){if("abort"!==r){var s=n;if(e&&e.responseJSON&&void 0!==e.responseJSON.data){var a=e.responseJSON.data;"string"==typeof a&&a?s=a:a&&"string"==typeof a.message&&a.message&&(s=a.message)}alert(s)}}).always(function(){r||K()})}function X(e,r){if(confirm("role"===e&&r?"Reset all settings for this role? This cannot be undone.":"Reset ALL menu settings for every role? This cannot be undone.")){H(membersAdminMenus.i18n&&membersAdminMenus.i18n.resetting||"Resetting…");var s=!1;g.post(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_reset",nonce:membersAdminMenus.nonce,scope:e||"all",role:r||""}).done(function(e){if(e.success)return h.allowUnload=!0,s=!0,void location.reload();alert(e.data&&e.data.message?e.data.message:"Reset failed.")}).fail(function(){alert(membersAdminMenus.i18n.networkError||"Could not reset settings. Check your connection and try again.")}).always(function(){s||K()})}}function Y(e){g.getJSON(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_user_search",nonce:membersAdminMenus.nonce,term:e},function(e){e.success&&e.data&&e.data.length?function(e){g(".members-am-user-suggestions").remove();var r=g("#members-am-user-search").parent();r.css("position","relative");var s=g('
');e.forEach(function(e){s.append(g('
').text(e.label).data("userId",e.id).on("click",function(){!function(e,r,s){h.previewUserId=e,h.previewUserLabel=r||"User #"+e,h.previewUserRoles=s||[],m(),h.settings.users[e]||(h.settings.users[e]={});$()}(e.id,e.label,e.roles),g(".members-am-user-suggestions").remove(),g("#members-am-user-search").val("")}))}),r.append(s),setTimeout(function(){g(document).one("click",function(){g(".members-am-user-suggestions").remove()})},0)}(e.data):g(".members-am-user-suggestions").remove()})}function Z(){var r;g(document).on("click","#members-am-role-chips .members-am-chip",function(){var e=g(this).data("role"),r=h.activeRoleSlugs.indexOf(e);-1===r?h.activeRoleSlugs.push(e):1 ');if(t.append(g('
').text("Reset Settings")),a&&n){var i=g(' ');i.append(g(' ')),i.append(g(' ').append(g(" ").text("Reset "+n),g(" ").text("Clear all menu settings for this role only"))),i.on("click",function(){g(".members-am-reset-dropdown").remove(),X("role",a)}),t.append(i)}var o=g(' ');o.append(g(' ')),o.append(g(' ').append(g(" ").text("Reset all roles"),g(" ").text("Clear all menu settings for every role"))),o.on("click",function(){g(".members-am-reset-dropdown").remove(),X("all")}),t.append(o),r.parent().css("position","relative"),t.insertAfter(r),g(document).one("click",function(){g(".members-am-reset-dropdown").remove()})}),g("#members-am-export").on("click",function(e){e.preventDefault(),window.location.href=membersAdminMenus.exportUrl}),g("#members-am-import").on("click",function(){g("#members-am-import-file").trigger("click")}),g("#members-am-import-file").on("change",function(){var e=this.files&&this.files[0];e&&function(e){H(membersAdminMenus.i18n&&membersAdminMenus.i18n.importing||"Importing…");var s=new FileReader;s.onerror=function(){K(),alert(membersAdminMenus.i18n&&membersAdminMenus.i18n.networkError||"Could not read the file.")},s.onload=function(){try{var e=JSON.parse(s.result),r=!1;g.post(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_import",nonce:membersAdminMenus.nonce,settings:JSON.stringify(e)}).done(function(e){if(e.success)return h.allowUnload=!0,r=!0,void location.reload();alert(e.data&&e.data.message?e.data.message:"Error")}).fail(function(){alert(membersAdminMenus.i18n.networkError||"Could not import settings. Check your connection and try again.")}).always(function(){r||K()})}catch(e){K(),alert("Invalid JSON")}},s.readAsText(e)}(e)}),g("#members-am-copy-apply").on("click",function(){var s=g("#members-am-copy-from").val(),r=g("#members-am-copy-to").val();if(s&&r)if(s!==r){var a="",n="";if(l().forEach(function(e){e.slug===s&&(a=e.label),e.slug===r&&(n=e.label)}),confirm('Copy menu settings from "'+a+'" to "'+n+'"?\nThis will overwrite "'+n+"\" menu configuration.\n\nNote: This copies menu order, hidden items, labels, icons, and colors.\nIt does NOT change the role's capabilities (items marked with a lock icon).")){var e=_(s),t={hidden:e.hidden?e.hidden.slice():[],order:[],submenu_order:{},overrides:{}},i=S(s);t.order=i.slice(),h.tree.forEach(function(e){if(e.children&&e.children.length){var r=k(s,e.id);r&&r.length&&(t.submenu_order[e.id]=r.slice())}}),e.overrides&&"object"==typeof e.overrides&&(t.overrides=JSON.parse(JSON.stringify(e.overrides))),h.settings.roles[r]=t,-1===h.activeRoleSlugs.indexOf(r)&&(h.activeRoleSlugs.push(r),o(),J()),$(),V(membersAdminMenus.i18n&&membersAdminMenus.i18n.copying||"Copying…")}}else alert("Source and target roles must be different.")}),g("#members-am-admin-editable").on("change",function(){var e=!0;g(this).is(":checked")&&(e=window.confirm(membersAdminMenus.i18n.adminEditableWarn)),e?(h.settings._meta.admin_editable=g(this).is(":checked"),N(),J(),o(),$()):g(this).prop("checked",!1)}),g("#members-am-sync-scroll").prop("checked",!1!==h.syncScroll),g("#members-am-sync-scroll").on("change",function(){h.syncScroll=g(this).is(":checked");try{localStorage.setItem("members_am_sync_scroll",h.syncScroll?"1":"0")}catch(e){}D()}),g("#members-am-add-item").on("click",function(){var e="c"+Date.now();h.settings.custom_items.push({id:e,label:"Custom link",url:window.location.origin+"/wp-admin/",icon_type:"dashicon",icon:"dashicons-admin-generic",parent:"",position:99,cap:"read"}),h.tree=f(),h.selectedId=u({id:e}),$(),W()}),g("#members-am-remove-custom").on("click",function(){var r=b(h.selectedId);r&&r.customId&&(h.settings.custom_items=(h.settings.custom_items||[]).filter(function(e){return e.id!==r.customId}),h.selectedId=null,h.tree=f(),$(),g("#members-am-edit-panel").attr("hidden",!0))}),g("#members-am-edit-close").on("click",function(){h.selectedId=null,g("#members-am-edit-panel").attr("hidden",!0),$()}),g("#members-am-edit-target-role").on("change",W),g("#members-am-edit-label, #members-am-edit-url, #members-am-icon-value, #members-am-badge-text").on("input",function(){Q()}),g("#members-am-item-cap").on("input",function(){Q()}),g(".members-am-icon-tabs .button").on("click",function(){g(".members-am-icon-tabs .button").removeClass("is-active"),g(this).addClass("is-active"),h.iconTab="fontawesome"===g(this).data("tab")?"fontawesome":"upload"===g(this).data("tab")?"upload":"dashicons",q()}),g("#members-am-icon-search").on("input",q),g("#members-am-media-upload").on("click",function(e){e.preventDefault(),h.mediaFrame||(h.mediaFrame=wp.media({title:"Choose menu icon",button:{text:"Use as icon"},multiple:!1,library:{type:"image"}}),h.mediaFrame.on("select",function(){var e=h.mediaFrame.state().get("selection").first().toJSON(),r=e.url||"";e.sizes&&(e.sizes.thumbnail?r=e.sizes.thumbnail.url:e.sizes.medium&&(r=e.sizes.medium.url)),g("#members-am-icon-type").val("custom"),g("#members-am-icon-value").val(r),Q()})),h.mediaFrame.open()}),g(document).on("change",".members-am-vis-cb",function(){var e=g(this).data("role");if(g(this).is(":checked")){var r=_(e).hidden,s=r.indexOf(h.selectedId);-1!==s&&r.splice(s,1)}else-1===_(e).hidden.indexOf(h.selectedId)&&_(e).hidden.push(h.selectedId);$()}),g("#members-am-add-sep").on("click",G),g("#members-am-promote").on("click",function(){if(h.selectedId){var n=h.selectedId,e=U()||{};if(-1===n.indexOf("::")&&e.parent&&"__promote__"!==e.parent){var t=e.parent,r=E();if(r){var s=x(r);if(s.overrides[n]&&delete s.overrides[n].parent,s.submenu_order&&s.submenu_order[t]){var a=s.submenu_order[t].indexOf(n);-1!==a&&s.submenu_order[t].splice(a,1)}if(s.order.length||(s.order=w()),-1===s.order.indexOf(n)){var i=s.order.indexOf(t);-1!==i?s.order.splice(i+1,0,n):s.order.push(n)}}else C().forEach(function(e){var r=_(e);if(r.overrides[n]&&delete r.overrides[n].parent,r.submenu_order&&r.submenu_order[t]){var s=r.submenu_order[t].indexOf(n);-1!==s&&r.submenu_order[t].splice(s,1)}if(r.order&&r.order.length||(r.order=w()),-1===r.order.indexOf(n)){var a=r.order.indexOf(t);-1!==a?r.order.splice(a+1,0,n):r.order.push(n)}});return Q(),void W()}T("parent","__promote__");var o=v(n);C().forEach(function(e){var r=_(e);if(r.order&&r.order.length||(r.order=w()),-1===r.order.indexOf(n))if(o){var s=r.order.indexOf(o);-1!==s?r.order.splice(s+1,0,n):r.order.push(n)}else r.order.push(n)}),Q(),W()}}),g("#members-am-demote").on("click",function(){var e=g("#members-am-demote-parent").val();e?(T("parent",e),Q(),W()):window.alert(membersAdminMenus.i18n&&membersAdminMenus.i18n.selectParentFirst||"Please choose a parent menu from the list.")}),g("#members-am-user-search").on("input",function(){var e=g(this).val();clearTimeout(r),r=setTimeout(function(){1 ").val("__all__").text("All roles")),h.activeRoleSlugs.forEach(function(r){var e=(l().filter(function(e){return e.slug===r})[0]||{}).label||r;s.append(g(" ").val(r).text(e))}),h.previewUserId&&s.append(g(" ").val("__user__"+h.previewUserId).text(h.previewUserLabel||"User #"+h.previewUserId)),h.selectedId&&W()}g(function(){var r,s,e;m(),h.tree=f(),N(),g("#members-am-admin-editable").prop("checked",!!h.settings._meta.admin_editable),r=g("#members-am-copy-from").empty(),s=g("#members-am-copy-to").empty(),(e=l()).forEach(function(e){r.append(g(" ").val(e.slug).text(e.label)),s.append(g(" ").val(e.slug).text(e.label))}),1
Date: Sat, 11 Apr 2026 18:48:46 +0200
Subject: [PATCH 23/73] feat(admin): add column filtering functionality to
admin menus for improved item visibility
---
.../app/functions-admin.php | 2 +
css/admin.css | 35 ++++++++
css/admin.min.css | 2 +-
js/admin-menus.js | 83 +++++++++++++++++++
js/admin-menus.min.js | 2 +-
5 files changed, 122 insertions(+), 2 deletions(-)
diff --git a/addons/members-admin-menus/app/functions-admin.php b/addons/members-admin-menus/app/functions-admin.php
index 8d62949..f0f9be7 100644
--- a/addons/members-admin-menus/app/functions-admin.php
+++ b/addons/members-admin-menus/app/functions-admin.php
@@ -203,6 +203,8 @@ function enqueue_admin_menus_assets() {
'copying' => __( 'Copying…', 'members' ),
'resetting' => __( 'Resetting…', 'members' ),
'importing' => __( 'Importing…', 'members' ),
+ 'filterItems' => __( 'Filter items…', 'members' ),
+ 'filterItemsLabel' => __( 'Filter menu items in this column', 'members' ),
),
)
);
diff --git a/css/admin.css b/css/admin.css
index dd71947..fe7d6a6 100644
--- a/css/admin.css
+++ b/css/admin.css
@@ -1165,6 +1165,41 @@
letter-spacing: 0.04em;
}
+.members-am-col-filter {
+ padding: 6px 8px 8px;
+ border-bottom: 1px solid #3c434a;
+ flex-shrink: 0;
+}
+
+.members-am-col-filter-input {
+ width: 100%;
+ max-width: 100%;
+ box-sizing: border-box;
+ font-size: 12px;
+ line-height: 1.4;
+ padding: 4px 8px;
+ border-radius: 2px;
+ border: 1px solid #50575e;
+ background: #1d2327;
+ color: #f0f0f1;
+}
+
+.members-am-col-filter-input::placeholder {
+ color: #8c8f94;
+ opacity: 1;
+}
+
+.members-am-col-filter-input:focus {
+ border-color: #2271b1;
+ outline: 1px solid transparent;
+ box-shadow: 0 0 0 1px #2271b1;
+}
+
+.members-am-item.members-am-filter-hidden,
+.members-am-sep.members-am-filter-hidden {
+ display: none !important;
+}
+
.members-am-col-move button {
margin-left: 4px;
padding: 0 6px;
diff --git a/css/admin.min.css b/css/admin.min.css
index bd816fa..e944ae3 100644
--- a/css/admin.min.css
+++ b/css/admin.min.css
@@ -1 +1 @@
-#members-cp h2.hndle,#members-cp-side h2.hndle{border-bottom:none !important;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}#members-cp h2.hndle:before,#members-cp-side h2.hndle:before{content:url("data:image/svg+xml,%3Csvg width='15px' aria-hidden='true' focusable='false' data-prefix='fas' data-icon='users-cog' class='svg-inline--fa fa-users-cog fa-w-20' role='img' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 640 512'%3E%3Cpath fill='currentColor' d='M610.5 341.3c2.6-14.1 2.6-28.5 0-42.6l25.8-14.9c3-1.7 4.3-5.2 3.3-8.5-6.7-21.6-18.2-41.2-33.2-57.4-2.3-2.5-6-3.1-9-1.4l-25.8 14.9c-10.9-9.3-23.4-16.5-36.9-21.3v-29.8c0-3.4-2.4-6.4-5.7-7.1-22.3-5-45-4.8-66.2 0-3.3.7-5.7 3.7-5.7 7.1v29.8c-13.5 4.8-26 12-36.9 21.3l-25.8-14.9c-2.9-1.7-6.7-1.1-9 1.4-15 16.2-26.5 35.8-33.2 57.4-1 3.3.4 6.8 3.3 8.5l25.8 14.9c-2.6 14.1-2.6 28.5 0 42.6l-25.8 14.9c-3 1.7-4.3 5.2-3.3 8.5 6.7 21.6 18.2 41.1 33.2 57.4 2.3 2.5 6 3.1 9 1.4l25.8-14.9c10.9 9.3 23.4 16.5 36.9 21.3v29.8c0 3.4 2.4 6.4 5.7 7.1 22.3 5 45 4.8 66.2 0 3.3-.7 5.7-3.7 5.7-7.1v-29.8c13.5-4.8 26-12 36.9-21.3l25.8 14.9c2.9 1.7 6.7 1.1 9-1.4 15-16.2 26.5-35.8 33.2-57.4 1-3.3-.4-6.8-3.3-8.5l-25.8-14.9zM496 368.5c-26.8 0-48.5-21.8-48.5-48.5s21.8-48.5 48.5-48.5 48.5 21.8 48.5 48.5-21.7 48.5-48.5 48.5zM96 224c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm224 32c1.9 0 3.7-.5 5.6-.6 8.3-21.7 20.5-42.1 36.3-59.2 7.4-8 17.9-12.6 28.9-12.6 6.9 0 13.7 1.8 19.6 5.3l7.9 4.6c.8-.5 1.6-.9 2.4-1.4 7-14.6 11.2-30.8 11.2-48 0-61.9-50.1-112-112-112S208 82.1 208 144c0 61.9 50.1 112 112 112zm105.2 194.5c-2.3-1.2-4.6-2.6-6.8-3.9-8.2 4.8-15.3 9.8-27.5 9.8-10.9 0-21.4-4.6-28.9-12.6-18.3-19.8-32.3-43.9-40.2-69.6-10.7-34.5 24.9-49.7 25.8-50.3-.1-2.6-.1-5.2 0-7.8l-7.9-4.6c-3.8-2.2-7-5-9.8-8.1-3.3.2-6.5.6-9.8.6-24.6 0-47.6-6-68.5-16h-8.3C179.6 288 128 339.6 128 403.2V432c0 26.5 21.5 48 48 48h255.4c-3.7-6-6.2-12.8-6.2-20.3v-9.2zM173.1 274.6C161.5 263.1 145.6 256 128 256H64c-35.3 0-64 28.7-64 64v32c0 17.7 14.3 32 32 32h65.9c6.3-47.4 34.9-87.3 75.2-109.4z'%3E%3C/path%3E%3C/svg%3E");margin-right:5px}#members-cp-side .postbox-header{border-bottom:none !important}#members-cp-side .handle-actions .handle-order-higher,#members-cp-side .handle-actions .handle-order-lower{display:none}#members-cp-side .handle-actions .handlediv{position:absolute;right:5px}.members-upgrade-header{text-align:center;padding:5px}.members-upgrade-header a{color:#f59431}.memberpress-paid-memberships{background-color:#f5f5f5;padding:50px 10px;text-align:center}.memberpress-paid-memberships a{background-color:#0e4598;display:inline-block;padding:10px 20px;border-radius:300px;color:#fff;text-decoration:none;margin-top:20px}#members-cp-side .members-tabs{position:relative}#members-cp-side .members-tab-nav{background-color:transparent;margin-bottom:20px;border-right:none !important}#members-cp-side .members-tab-nav .members-tab-title{width:33.333%;height:50px;border-right:none !important}#members-cp-side .members-tab-nav .members-tab-title a{border:0}#members-cp-side .members-tab-content h3{font-weight:bold;font-size:15px;margin-top:0;color:#000;margin-bottom:10px}#members-cp-side .members-tab-content .memberpress-paid-memberships{text-align:left;padding:20px}#members-cp-side .members-tab-content .memberpress-paid-memberships a{display:block;text-align:center}#members-cp-side .members-tabs .members-tab-nav li a,#members-cp-side .members-tabs .members-tab-nav li[aria-selected="false"] a i{color:#555}#members-cp-side .members-tabs .members-tab-nav li a svg,#members-cp-side .members-tabs .members-tab-nav li[aria-selected="false"] a svg{fill:#555}#members-cp-side .members-tabs .members-tab-nav li[aria-selected="true"] a{background-color:transparent;border-bottom:2px solid #3582ae}#members-cp-side .members-tabs .members-tab-nav li[aria-selected="true"] a i{color:#3582ae}#members-cp-side .members-tabs .members-tab-nav li[aria-selected="true"] a svg{fill:#3582ae}.members-tab-title svg,.members-tab-title[aria-selected="false"] svg{fill:#0073aa}.members-tab-title[aria-selected="true"] svg{fill:#555}#wpcontent #members-admin-header{margin-left:-20px;padding:0;padding-left:22px;background-color:#f9f9f9;background-repeat:repeat;background-size:1200px 75px;min-height:36px;position:relative}#wpcontent #members-admin-header img.members-logo{height:90px}.members-upgrade-header #close-members-upgrade-header{position:absolute;right:20px;top:3px}.members-upgrade-header #close-members-upgrade-header:hover{cursor:pointer}.memberpress-welcome-panel.welcome-panel{margin-top:0;padding:40px 20px;background:#fff}.memberpress-welcome-panel.welcome-panel:before{background:0}.memberpress-welcome-panel.welcome-panel .about-description{margin:20px 0}.memberpress-welcome-panel.welcome-panel-content{margin:0}.memberpress-welcome-panel.welcome-panel-content .mp-logo-wrap>a{display:block}@media screen and (min-width:870px){.members_page_members-settings .members-short-p{max-width:612px;margin-left:auto;margin-right:auto}.members_page_members-settings .welcome-panel-content{text-align:center}}.members_page_members-settings .welcome-panel .button.button-hero{margin-left:auto;margin-right:auto}.members_page_members-settings .members-svg-wrap{display:inline-block;margin:0 auto 20px}@media screen and (max-width:870px){.members_page_members-settings .welcome-panel{padding:20px}.members_page_members-settings .members-svg-wrap{float:left;margin-right:28px}.admin_page_members-settings.rtl .members-svg-wrap{float:right;margin-right:0;margin-left:28px}}.members_page_members-settings .members-svg-link{display:table-cell;text-align:center;width:128px;height:128px;background:#363b3f;color:#fff;padding:24px 16px 16px;border-radius:50%;-webkit-box-sizing:border-box;box-sizing:border-box;border:4px solid #fff;-webkit-box-shadow:0 0 0 4px #363b3f;box-shadow:0 0 0 4px #363b3f}.members_page_members-settings .members-svg-link svg{max-width:84px;max-height:64px;width:auto;height:auto}.members-addons{display:grid;grid-template-columns:1fr 1fr;grid-row-gap:20px;grid-column-gap:20px}.members-addons .plugin-card{margin:0}.members-addons .plugin-card-top{width:100%}.members-addon{width:100%;position:relative;float:none;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.members-addon .desc{margin-bottom:80px}.addon-activate{text-align:center;border:1px solid #ddd;border-radius:3px;padding:5px 10px 10px;display:inline-block;width:100px;position:absolute;right:20px;bottom:20px}.activate-toggle:hover{cursor:pointer}.activate-toggle svg{max-width:20px;position:relative;top:5px}.activate-toggle svg{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.activate-toggle svg.active{-webkit-transform:rotate(0);transform:rotate(0)}.activate-toggle svg path{fill:#ccc}.activate-toggle svg.active path{fill:#8cbd5a}.activate-toggle.processing{cursor:not-allowed;pointer-events:none;opacity:.5}.activate-toggle .action-label{display:inline-block;width:50px;text-align:left}.mepr_dummy_txns{-webkit-filter:blur(3px);filter:blur(3px);position:absolute;top:0;left:0;width:100%;z-index:5;pointer-events:none}.mepr_dummy_txns::after{background-color:rgba(0,0,0,.2);position:absolute;top:0;left:0;width:100%;height:100%;z-index:6}.mepr-upgrade-table{position:relative}.mepr-upgrade-table .mepr-upgrade{position:relative;top:100px;z-index:10;background:rgba(0,0,0,.2);width:100%;height:100%;max-width:600px;margin:0 auto;-webkit-box-shadow:0 0 30px #ccc;box-shadow:0 0 30px #ccc}.mepr-upgrade-content{background-color:#fff;padding:20px;text-align:center}.mepr-upgrade-content h2{font-size:24px}.mepr-upgrade-content h4{font-size:18px}.mepr-upgrade-content .features{display:grid;grid-template-columns:1fr 1fr;grid-column-gap:30px;grid-row-gap:10px;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;text-align:left;padding:10px}.features li:before{content:"\f147";font-family:dashicons;color:green;font-size:20px;position:relative;top:4px;margin-right:10px}.mepr-upgrade-cta{text-align:center;background-color:#f2f2f2;padding:20px}.mepr-upgrade-cta .mepr-cta-button{display:block;max-width:300px;margin:0 auto 20px;background-color:#fd9c27;color:#fff;padding:15px;font-size:18px;font-weight:bold;text-decoration:none;border-radius:300px}.members-plugin-card.plugin-card:nth-child(even){margin-right:inherit}.members-plugin-card.plugin-card:nth-child(odd){clear:none;margin-left:inherit}.members-plugin-card.plugin-card .plugin-card-top{min-height:0;padding:30px 20px}.members-plugin-card.plugin-card .plugin-icon{top:30px}.members-plugin-card.plugin-card .plugin-card-bottom .column-status{font-weight:bold}.members-plugin-card.plugin-card .plugin-card-bottom .column-status .active{color:#8cbd5a}.members-plugin-card.plugin-card .plugin-card-bottom .column-status .inactive{color:red}.members-plugin-card.plugin-card .plugin-icon{width:64px;height:auto}.plugin-icon-small{width:32px;height:auto}.members-plugin-card.plugin-card .name,.members-plugin-card.plugin-card .desc{margin-right:0;margin-left:84px}.members-addons .plugin-card .name,.members-addons .plugin-card .desc p{margin-right:0}@media screen and (max-width:1100px){.members-addons{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}}@media screen and (max-width:600px){.members_page_members-settings .members-svg-link{width:64px;height:64px}.members_page_members-settings .members-svg-link svg{position:absolute;top:14px;left:15px;max-width:30px;max-height:30px}.members_page_members-settings .plugin-card-members-edd-integration .members-svg-link svg,.members_page_members-settings .plugin-card-members-acf-integration .members-svg-link svg,.members_page_members-settings .plugin-card-members-givewp-integration .members-svg-link svg,.members_page_members-settings .plugin-card-members-meta-box-integration .members-svg-link svg,.members_page_members-settings .plugin-card-members-woocommerce-integration .members-svg-link svg{top:10px;left:8px;max-width:40px;max-height:40px}.members_page_members-settings .plugin-card-members-block-permissions .members-svg-link svg,.members_page_members-settings .plugin-card-members-role-hierarchy .members-svg-link svg{left:14px}.members-addons .plugin-card .desc>p,.members-addons .plugin-card .name{margin-left:84px}}.memberpress-about .welcome-panel-column-container{display:-webkit-box;display:-ms-flexbox;display:flex}.memberpress-about .mp-logo{max-width:256px;margin:50px}.members-about-addons{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-column-gap:20px}.members-about-addons .members-plugin-card{margin:0;width:100%}.members-about-addons .members-plugin-card .name h3 a{text-decoration:none}.members-about-addons .members-plugin-card .plugin-card-bottom{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}@media only screen and (max-width:1099px){.members-about-addons{grid-template-columns:1fr;grid-row-gap:20px}}@media screen and (min-width:1100px) and (max-width:1600px){.members-about-addons .members-plugin-card{float:none;width:auto;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.members-plugin-card.plugin-card .desc{margin-left:0;margin-top:50px}.members-plugin-card.plugin-card .desc p{margin-left:0;margin-right:0}.members-plugin-card.plugin-card .plugin-card-bottom .column-status{float:none}.members-plugin-card.plugin-card .plugin-card-bottom .column-updated{float:none;width:auto}}@media screen and (max-width:1200px){.welcome-panel .welcome-panel-column-container{-webkit-box-orient:vertical;-webkit-box-direction:reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse;gap:0;padding:0}.memberpress-about .mp-logo{margin:0 0 20px}}.members-plugin-card.plugin-card .desc p{margin-left:0;margin-right:0}@media only screen and (min-width:783px){.members_page_roles .column-users,.members_page_roles .column-granted_caps,.members_page_roles .column-denied_caps{width:100px;text-align:center}}.members-title-div #titlewrap input{padding:0 8px;font-size:1.7em;line-height:normal;height:1.7em;width:100%;outline:0;margin:0 0 3px;background-color:#fff}.members-title-div input[name="role"]{font-size:13px;height:22px;margin:0;width:16em}#tabcapsdiv{margin-top:1em}#tabcapsdiv>.hndle{padding:10px;border-bottom:1px solid #eee}#tabcapsdiv .inside,#members-cp .inside{margin:0;padding:0}.members-cap-tabs,.members-tabs{overflow:hidden;background:#fff;background:-webkit-gradient(linear,left top,right top,from(#fafafa),color-stop(20%,#fafafa),color-stop(20%,#fff),to(#fff));background:linear-gradient(90deg,#fafafa 0,#fafafa 20%,#fff 20%,#fff 100%)}@media only screen and (max-width:782px){.members-cap-tabs,.members-tabs{background:linear-gradient(90deg,#fafafa 0,#fafafa 48px,#fff 48px,#fff 100%)}}.members-cap-tabs .members-tab-nav,.members-tabs .members-tab-nav{position:relative;float:left;list-style:none;width:20%;line-height:1em;margin:0 0 -1px 0;padding:0;background-color:#fafafa;border-right:1px solid #eee;-webkit-box-sizing:border-box;box-sizing:border-box}.members-cap-tabs .members-tab-nav li,.members-tabs .members-tab-nav li{display:block;position:relative;margin:0;padding:0;line-height:20px}.members-cap-tabs .members-tab-nav li a,.members-tabs .members-tab-nav li a{display:block;margin:0;padding:10px;line-height:20px !important;text-decoration:none;border-bottom:1px solid #eee;-webkit-box-shadow:none;box-shadow:none}.members-cap-tabs .members-tab-nav li a .dashicons,.members-tabs .members-tab-nav li a .dashicons{line-height:20px;margin-right:3px}.members-cap-tabs .members-tab-nav li[aria-selected="true"] a,.members-tabs .members-tab-nav li[aria-selected="true"] a{position:relative;font-weight:bold;color:#555;background-color:#e0e0e0}@media only screen and (max-width:782px){.members-cap-tabs .members-tab-nav,.members-tabs .members-tab-nav{width:48px}.members-cap-tabs .members-tab-nav li a .dashicons,.members-tabs .members-tab-nav li a .dashicons{width:24px;height:24px;font-size:24px;line-height:24px}.members-tab-nav li .dashicons::before,.members-tab-nav li .dashicons::before{width:24px;height:24px}.members-tab-nav li .label{overflow:hidden;position:absolute;top:-1000em;left:-1000em;width:1px;height:1px}}.members-cap-tabs .members-tab-wrap,.members-tabs .members-tab-wrap{float:left;width:80%;margin-left:-1px}@media only screen and (max-width:782px){.members-cap-tabs .members-tab-wrap,.members-tabs .members-tab-wrap{width:calc(100% - 48px)}}#members-cp .members-tab-content{padding:10px;border-left:1px solid #e5e5e5}.members-roles-select th,.members-roles-select td{width:190px;overflow:hidden}.members-roles-select .check-all-th{text-align:center}.members-roles-select .check-all-th label{padding-left:5px}@media only screen and (min-width:850px){#side-sortables .members-tabs{background:#fff}#side-sortables .members-tabs .members-tab-wrap{width:100%}#side-sortables .members-tabs .members-tab-nav{display:table;width:100%}#side-sortables .members-tabs .members-tab-nav li{display:table-cell;text-align:center;border-right:1px solid #eee}#side-sortables .members-tabs .members-tab-nav li:last-of-type{border-right:0}#side-sortables .members-tabs .members-tab-nav li a{padding:10px 0}#side-sortables .members-tabs .members-tab-nav .dashicons{width:24px;height:24px;font-size:24px;line-height:24px}#side-sortables .members-tabs .members-tab-nav .dashicons::before{width:24px;height:24px}#side-sortables .members-tabs .members-tab-nav .label{overflow:hidden;position:absolute;top:-1000em;left:-1000em;width:1px;height:1px}}.members-tabs .members-tabs-label{display:block !important;font-weight:bold;display:inline-block;margin-bottom:4px}.members-tabs .butterbean-control-checkbox .members-tabs-label{display:inline !important}.members-tabs .members-tabs-description{display:block;font-style:italic;margin-top:4px}.members-tabs .members-tabs-label+.members-tabs-description{margin-top:0;margin-bottom:4px}#tabcapsdiv table{border-right:0;border-top:0;border-bottom:0}#tabcapsdiv table td,#tabcapsdiv table th{padding:10px;padding-bottom:10px;border-bottom:1px solid #eee;font-size:13px;line-height:20px}#tabcapsdiv table td{padding:9px}#tabcapsdiv tbody tr:last-of-type td{border-bottom:0}#tabcapsdiv tfoot th{border-color:#eee}@media only screen and (max-width:782px){#tabcapsdiv table td,#tabcapsdiv table th{line-height:24px}}.members-roles-select .column-grant,.members-roles-select .column-deny{width:70px !important;text-align:left;display:table-cell !important;clear:none !important}.members-roles-select thead th,.members-roles-select tfoot th{padding:9px !important}.members-roles-select .column-grant input,.members-roles-select .column-deny input{margin:0 5px 0 0;vertical-align:middle}.members-roles-select tbody tr:nth-child(even){background:#f2f2f2}.members-cap-tabs button{display:inline;margin:-4px;line-height:inherit;padding:4px 8px;border:1px solid transparent;background:transparent;border-radius:0;outline:0;-webkit-transition:all .25s ease-out;transition:all .25s ease-out}.members-cap-tabs button:hover,.members-cap-tabs button:focus{border-color:#eee;background:#fafafa;cursor:pointer}.members-cap-tabs button:active{color:#0073aa;border-color:#0073aa}.members-cap-tabs button+.dashicons{display:none;margin-top:1px;margin-bottom:-1px;line-height:inherit}.members-cap-tabs button:hover+.dashicons,.members-cap-tabs button:focus+.dashicons{display:inline-block}.members-tab-content .members-highlight{background-color:rgba(0,115,170,0.05)}.members-tab-content tbody{-webkit-transition:all 2s ease-in-out;transition:all 2s ease-in-out}.members-cp-role-list-wrap{overflow:auto;min-height:42px;max-height:200px;padding:0 .9em;border:solid 1px #dfdfdf;background-color:#fdfdfd}#wpbody-content{padding-bottom:200px}.members-footer-promotion{text-align:center;font-weight:400;font-size:13px;line-height:16px;color:#787c82;padding:20px 0 30px 0;margin-bottom:20px}.members-footer-promotion p{font-weight:600}.members-footer-promotion-links,.members-footer-promotion-social{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.members-footer-promotion-links{margin:9px 0 0}.members-footer-promotion-links span{color:#c3c4c7;padding:0 7px}.members-footer-promotion-social{margin:10px 0 0 0;gap:10px}.members-footer-promotion-social li{margin-bottom:0}.members-footer-promotion-social a{display:block;height:16px}.members_page_members-settings.rtl{.addon-activate{left:20px;right:unset}.members-addons .plugin-card{.name,.desc p{margin-left:0;margin-right:148px}}}.button.button-warning{background:#dc3232;border-color:#dc3232;color:#fff}.button.button-warning:hover,.button.button-warning:focus{background:#c92424;border-color:#c92424;color:#fff}.members-reset-spinner{float:none;margin-top:0;vertical-align:middle}.members-admin-menus-wrap{max-width:1400px}.members-admin-menus-toolbar{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;margin-bottom:16px}.members-am-toolbar-loading{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;margin-left:4px;color:#50575e;font-size:13px;line-height:1}.members-am-toolbar-loading .spinner{float:none;margin:0}.members-am-toolbar-loading[hidden]{display:none !important}.members-am-copy-wrap label{margin-right:8px}.members-am-chips{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:8px;margin-bottom:12px}.members-am-chip{border-radius:999px;padding:4px 12px;border:1px solid #c3c4c7;background:#f6f7f7;cursor:pointer}.members-am-chip.is-active{background:#2271b1;border-color:#2271b1;color:#fff}.members-am-carousel-wrap{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;gap:8px;margin-bottom:8px}.members-am-carousel-prev,.members-am-carousel-next{-ms-flex-item-align:center;align-self:center;width:36px;height:36px;border-radius:50%;border:1px solid #c3c4c7;background:#fff;cursor:pointer}.members-am-columns{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-ms-flex:1;flex:1;gap:12px;min-height:320px;overflow:hidden}.members-am-column{-webkit-box-flex:1;-ms-flex:1;flex:1;min-width:0;background:#1d2327;border-radius:4px;color:#f0f0f1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.members-am-user-column{border:2px dashed #8c8f94}.members-am-sidebar-head{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:8px 10px;background:#2c3338;border-radius:4px 4px 0 0;font-weight:600;font-size:12px;text-transform:uppercase;letter-spacing:.04em}.members-am-col-move button{margin-left:4px;padding:0 6px;min-height:24px;line-height:22px;font-size:11px}.members-am-sidebar-list{padding:6px 0 12px;overflow-y:auto;max-height:480px}.members-am-item{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:6px 10px 6px 8px;cursor:pointer;border-left:3px solid transparent;font-size:13px}.members-am-item.is-sub{padding-left:22px;font-size:12px;opacity:.95}.members-am-item.is-sub-deep{padding-left:36px}.members-am-sidebar-list .members-am-item{cursor:-webkit-grab;cursor:grab}.members-am-sidebar-list .members-am-item:active{cursor:-webkit-grabbing;cursor:grabbing}.members-am-sort-placeholder{-webkit-box-sizing:border-box;box-sizing:border-box;min-height:36px;margin:2px 0;background:rgba(34,113,177,0.08);border:1px dashed #2271b1;border-radius:2px}.members-am-item.is-hidden{opacity:.18}.members-am-item.is-no-cap{opacity:.35}.members-am-item.is-no-cap.is-hidden{opacity:.15}.members-am-item.is-selected{border-left-color:#2271b1;background:rgba(34,113,177,0.15)}.members-am-item-main{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;min-width:0}.members-am-item-main .dashicons{font-size:18px;width:18px;height:18px}.members-am-item-label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.members-am-item-actions{display:none;gap:2px}.members-am-item:hover .members-am-item-actions{display:-webkit-box;display:-ms-flexbox;display:flex}.members-am-item-actions button{min-height:22px;padding:0 4px;line-height:20px;font-size:11px}.members-am-sep{text-align:center;opacity:.35;font-size:11px;padding:4px 0}.members-am-carousel-dots{text-align:center;margin-bottom:4px}.members-am-dot{width:8px;height:8px;border-radius:50%;border:0;margin:0 4px;padding:0;background:#c3c4c7;cursor:pointer}.members-am-dot.is-active{background:#2271b1}.members-am-carousel-status{text-align:center;color:#646970;font-size:12px;margin-top:0}.members-am-badge{font-size:9px;text-transform:uppercase;padding:1px 4px;border-radius:2px;margin-right:4px;vertical-align:middle}.members-am-badge-new{background:#2271b1;color:#fff}.members-am-badge-edit{background:#dba617;color:#1d2327}.members-am-badge-nocap{background:#8c8f94;color:#fff}.members-am-legend{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:16px;margin:0 0 8px;padding:0;font-size:12px;color:#646970}.members-am-legend-item{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:4px}.members-am-edit-panel{margin-top:20px;padding:16px;border:1px solid #c3c4c7;background:#fff;border-radius:4px}.members-am-edit-panel-header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:12px}.members-am-edit-panel-header h2{margin:0;font-size:16px}.members-am-edit-toolbar{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:12px;margin-bottom:12px}.members-am-edit-target-wrap select{margin-left:8px}.members-am-level-actions .button{margin-right:6px}.members-am-demote-wrap{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:6px}.members-am-demote-wrap .members-am-demote-select{min-width:200px;max-width:min(320px,100%)}.members-am-edit-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:16px}.members-am-edit-col label{display:block;font-weight:600;margin-bottom:4px}.members-am-icon-tabs{margin-bottom:8px}.members-am-icon-tabs .button{margin-right:4px;margin-bottom:4px}.members-am-icon-tabs .button.is-active{background:#2271b1;border-color:#2271b1;color:#fff}.members-am-icon-grid{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:4px;max-height:160px;overflow-y:auto;border:1px solid #dcdcde;padding:8px;background:#f6f7f7;margin-bottom:8px}.members-am-icon-pick{width:36px;height:36px;padding:0;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;border:1px solid #c3c4c7;background:#fff;cursor:pointer}.members-am-vis-row{display:block;margin-bottom:6px;font-weight:normal}.members-am-reset-dropdown{position:absolute;z-index:100;background:#fff;border:1px solid #c3c4c7;border-radius:6px;padding:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-shadow:0 4px 12px rgba(0,0,0,0.15);box-shadow:0 4px 12px rgba(0,0,0,0.15);min-width:280px;top:100%;left:0;margin-top:4px;overflow:hidden}.members-am-reset-title{padding:10px 14px;font-weight:600;font-size:13px;border-bottom:1px solid #f0f0f0;color:#1d2327}.members-am-reset-option{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;gap:10px;padding:12px 14px;border:0;background:0;cursor:pointer;text-align:left;width:100%;border-bottom:1px solid #f0f0f0;-webkit-transition:background .15s;transition:background .15s}.members-am-reset-option:last-child{border-bottom:0}.members-am-reset-option:hover{background:#f6f7f7}.members-am-reset-option .dashicons{margin-top:2px;color:#646970}.members-am-reset-option-text{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:2px}.members-am-reset-option-text strong{font-size:13px;color:#1d2327}.members-am-reset-option-text small{font-size:12px;color:#646970}.members-am-reset-danger:hover{background:#fcf0f1}.members-am-reset-danger .dashicons{color:#d63638}.members-am-reset-danger:hover strong{color:#d63638}@media screen and (max-width:782px){.members-am-columns{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}}.members-am-user-suggestions{position:absolute;z-index:100;background:#fff;border:1px solid #c3c4c7;border-radius:4px;max-height:200px;overflow-y:auto;width:100%;-webkit-box-shadow:0 2px 6px rgba(0,0,0,0.15);box-shadow:0 2px 6px rgba(0,0,0,0.15);top:100%;left:0}.members-am-user-suggestion{padding:8px 12px;cursor:pointer;font-size:13px;border-bottom:1px solid #f0f0f0}.members-am-user-suggestion:hover{background:#f0f6fc}.members-am-user-suggestion:last-child{border-bottom:0}
\ No newline at end of file
+#members-cp h2.hndle,#members-cp-side h2.hndle{border-bottom:none !important;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}#members-cp h2.hndle:before,#members-cp-side h2.hndle:before{content:url("data:image/svg+xml,%3Csvg width='15px' aria-hidden='true' focusable='false' data-prefix='fas' data-icon='users-cog' class='svg-inline--fa fa-users-cog fa-w-20' role='img' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 640 512'%3E%3Cpath fill='currentColor' d='M610.5 341.3c2.6-14.1 2.6-28.5 0-42.6l25.8-14.9c3-1.7 4.3-5.2 3.3-8.5-6.7-21.6-18.2-41.2-33.2-57.4-2.3-2.5-6-3.1-9-1.4l-25.8 14.9c-10.9-9.3-23.4-16.5-36.9-21.3v-29.8c0-3.4-2.4-6.4-5.7-7.1-22.3-5-45-4.8-66.2 0-3.3.7-5.7 3.7-5.7 7.1v29.8c-13.5 4.8-26 12-36.9 21.3l-25.8-14.9c-2.9-1.7-6.7-1.1-9 1.4-15 16.2-26.5 35.8-33.2 57.4-1 3.3.4 6.8 3.3 8.5l25.8 14.9c-2.6 14.1-2.6 28.5 0 42.6l-25.8 14.9c-3 1.7-4.3 5.2-3.3 8.5 6.7 21.6 18.2 41.1 33.2 57.4 2.3 2.5 6 3.1 9 1.4l25.8-14.9c10.9 9.3 23.4 16.5 36.9 21.3v29.8c0 3.4 2.4 6.4 5.7 7.1 22.3 5 45 4.8 66.2 0 3.3-.7 5.7-3.7 5.7-7.1v-29.8c13.5-4.8 26-12 36.9-21.3l25.8 14.9c2.9 1.7 6.7 1.1 9-1.4 15-16.2 26.5-35.8 33.2-57.4 1-3.3-.4-6.8-3.3-8.5l-25.8-14.9zM496 368.5c-26.8 0-48.5-21.8-48.5-48.5s21.8-48.5 48.5-48.5 48.5 21.8 48.5 48.5-21.7 48.5-48.5 48.5zM96 224c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm224 32c1.9 0 3.7-.5 5.6-.6 8.3-21.7 20.5-42.1 36.3-59.2 7.4-8 17.9-12.6 28.9-12.6 6.9 0 13.7 1.8 19.6 5.3l7.9 4.6c.8-.5 1.6-.9 2.4-1.4 7-14.6 11.2-30.8 11.2-48 0-61.9-50.1-112-112-112S208 82.1 208 144c0 61.9 50.1 112 112 112zm105.2 194.5c-2.3-1.2-4.6-2.6-6.8-3.9-8.2 4.8-15.3 9.8-27.5 9.8-10.9 0-21.4-4.6-28.9-12.6-18.3-19.8-32.3-43.9-40.2-69.6-10.7-34.5 24.9-49.7 25.8-50.3-.1-2.6-.1-5.2 0-7.8l-7.9-4.6c-3.8-2.2-7-5-9.8-8.1-3.3.2-6.5.6-9.8.6-24.6 0-47.6-6-68.5-16h-8.3C179.6 288 128 339.6 128 403.2V432c0 26.5 21.5 48 48 48h255.4c-3.7-6-6.2-12.8-6.2-20.3v-9.2zM173.1 274.6C161.5 263.1 145.6 256 128 256H64c-35.3 0-64 28.7-64 64v32c0 17.7 14.3 32 32 32h65.9c6.3-47.4 34.9-87.3 75.2-109.4z'%3E%3C/path%3E%3C/svg%3E");margin-right:5px}#members-cp-side .postbox-header{border-bottom:none !important}#members-cp-side .handle-actions .handle-order-higher,#members-cp-side .handle-actions .handle-order-lower{display:none}#members-cp-side .handle-actions .handlediv{position:absolute;right:5px}.members-upgrade-header{text-align:center;padding:5px}.members-upgrade-header a{color:#f59431}.memberpress-paid-memberships{background-color:#f5f5f5;padding:50px 10px;text-align:center}.memberpress-paid-memberships a{background-color:#0e4598;display:inline-block;padding:10px 20px;border-radius:300px;color:#fff;text-decoration:none;margin-top:20px}#members-cp-side .members-tabs{position:relative}#members-cp-side .members-tab-nav{background-color:transparent;margin-bottom:20px;border-right:none !important}#members-cp-side .members-tab-nav .members-tab-title{width:33.333%;height:50px;border-right:none !important}#members-cp-side .members-tab-nav .members-tab-title a{border:0}#members-cp-side .members-tab-content h3{font-weight:bold;font-size:15px;margin-top:0;color:#000;margin-bottom:10px}#members-cp-side .members-tab-content .memberpress-paid-memberships{text-align:left;padding:20px}#members-cp-side .members-tab-content .memberpress-paid-memberships a{display:block;text-align:center}#members-cp-side .members-tabs .members-tab-nav li a,#members-cp-side .members-tabs .members-tab-nav li[aria-selected="false"] a i{color:#555}#members-cp-side .members-tabs .members-tab-nav li a svg,#members-cp-side .members-tabs .members-tab-nav li[aria-selected="false"] a svg{fill:#555}#members-cp-side .members-tabs .members-tab-nav li[aria-selected="true"] a{background-color:transparent;border-bottom:2px solid #3582ae}#members-cp-side .members-tabs .members-tab-nav li[aria-selected="true"] a i{color:#3582ae}#members-cp-side .members-tabs .members-tab-nav li[aria-selected="true"] a svg{fill:#3582ae}.members-tab-title svg,.members-tab-title[aria-selected="false"] svg{fill:#0073aa}.members-tab-title[aria-selected="true"] svg{fill:#555}#wpcontent #members-admin-header{margin-left:-20px;padding:0;padding-left:22px;background-color:#f9f9f9;background-repeat:repeat;background-size:1200px 75px;min-height:36px;position:relative}#wpcontent #members-admin-header img.members-logo{height:90px}.members-upgrade-header #close-members-upgrade-header{position:absolute;right:20px;top:3px}.members-upgrade-header #close-members-upgrade-header:hover{cursor:pointer}.memberpress-welcome-panel.welcome-panel{margin-top:0;padding:40px 20px;background:#fff}.memberpress-welcome-panel.welcome-panel:before{background:0}.memberpress-welcome-panel.welcome-panel .about-description{margin:20px 0}.memberpress-welcome-panel.welcome-panel-content{margin:0}.memberpress-welcome-panel.welcome-panel-content .mp-logo-wrap>a{display:block}@media screen and (min-width:870px){.members_page_members-settings .members-short-p{max-width:612px;margin-left:auto;margin-right:auto}.members_page_members-settings .welcome-panel-content{text-align:center}}.members_page_members-settings .welcome-panel .button.button-hero{margin-left:auto;margin-right:auto}.members_page_members-settings .members-svg-wrap{display:inline-block;margin:0 auto 20px}@media screen and (max-width:870px){.members_page_members-settings .welcome-panel{padding:20px}.members_page_members-settings .members-svg-wrap{float:left;margin-right:28px}.admin_page_members-settings.rtl .members-svg-wrap{float:right;margin-right:0;margin-left:28px}}.members_page_members-settings .members-svg-link{display:table-cell;text-align:center;width:128px;height:128px;background:#363b3f;color:#fff;padding:24px 16px 16px;border-radius:50%;-webkit-box-sizing:border-box;box-sizing:border-box;border:4px solid #fff;-webkit-box-shadow:0 0 0 4px #363b3f;box-shadow:0 0 0 4px #363b3f}.members_page_members-settings .members-svg-link svg{max-width:84px;max-height:64px;width:auto;height:auto}.members-addons{display:grid;grid-template-columns:1fr 1fr;grid-row-gap:20px;grid-column-gap:20px}.members-addons .plugin-card{margin:0}.members-addons .plugin-card-top{width:100%}.members-addon{width:100%;position:relative;float:none;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.members-addon .desc{margin-bottom:80px}.addon-activate{text-align:center;border:1px solid #ddd;border-radius:3px;padding:5px 10px 10px;display:inline-block;width:100px;position:absolute;right:20px;bottom:20px}.activate-toggle:hover{cursor:pointer}.activate-toggle svg{max-width:20px;position:relative;top:5px}.activate-toggle svg{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.activate-toggle svg.active{-webkit-transform:rotate(0);transform:rotate(0)}.activate-toggle svg path{fill:#ccc}.activate-toggle svg.active path{fill:#8cbd5a}.activate-toggle.processing{cursor:not-allowed;pointer-events:none;opacity:.5}.activate-toggle .action-label{display:inline-block;width:50px;text-align:left}.mepr_dummy_txns{-webkit-filter:blur(3px);filter:blur(3px);position:absolute;top:0;left:0;width:100%;z-index:5;pointer-events:none}.mepr_dummy_txns::after{background-color:rgba(0,0,0,.2);position:absolute;top:0;left:0;width:100%;height:100%;z-index:6}.mepr-upgrade-table{position:relative}.mepr-upgrade-table .mepr-upgrade{position:relative;top:100px;z-index:10;background:rgba(0,0,0,.2);width:100%;height:100%;max-width:600px;margin:0 auto;-webkit-box-shadow:0 0 30px #ccc;box-shadow:0 0 30px #ccc}.mepr-upgrade-content{background-color:#fff;padding:20px;text-align:center}.mepr-upgrade-content h2{font-size:24px}.mepr-upgrade-content h4{font-size:18px}.mepr-upgrade-content .features{display:grid;grid-template-columns:1fr 1fr;grid-column-gap:30px;grid-row-gap:10px;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;text-align:left;padding:10px}.features li:before{content:"\f147";font-family:dashicons;color:green;font-size:20px;position:relative;top:4px;margin-right:10px}.mepr-upgrade-cta{text-align:center;background-color:#f2f2f2;padding:20px}.mepr-upgrade-cta .mepr-cta-button{display:block;max-width:300px;margin:0 auto 20px;background-color:#fd9c27;color:#fff;padding:15px;font-size:18px;font-weight:bold;text-decoration:none;border-radius:300px}.members-plugin-card.plugin-card:nth-child(even){margin-right:inherit}.members-plugin-card.plugin-card:nth-child(odd){clear:none;margin-left:inherit}.members-plugin-card.plugin-card .plugin-card-top{min-height:0;padding:30px 20px}.members-plugin-card.plugin-card .plugin-icon{top:30px}.members-plugin-card.plugin-card .plugin-card-bottom .column-status{font-weight:bold}.members-plugin-card.plugin-card .plugin-card-bottom .column-status .active{color:#8cbd5a}.members-plugin-card.plugin-card .plugin-card-bottom .column-status .inactive{color:red}.members-plugin-card.plugin-card .plugin-icon{width:64px;height:auto}.plugin-icon-small{width:32px;height:auto}.members-plugin-card.plugin-card .name,.members-plugin-card.plugin-card .desc{margin-right:0;margin-left:84px}.members-addons .plugin-card .name,.members-addons .plugin-card .desc p{margin-right:0}@media screen and (max-width:1100px){.members-addons{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}}@media screen and (max-width:600px){.members_page_members-settings .members-svg-link{width:64px;height:64px}.members_page_members-settings .members-svg-link svg{position:absolute;top:14px;left:15px;max-width:30px;max-height:30px}.members_page_members-settings .plugin-card-members-edd-integration .members-svg-link svg,.members_page_members-settings .plugin-card-members-acf-integration .members-svg-link svg,.members_page_members-settings .plugin-card-members-givewp-integration .members-svg-link svg,.members_page_members-settings .plugin-card-members-meta-box-integration .members-svg-link svg,.members_page_members-settings .plugin-card-members-woocommerce-integration .members-svg-link svg{top:10px;left:8px;max-width:40px;max-height:40px}.members_page_members-settings .plugin-card-members-block-permissions .members-svg-link svg,.members_page_members-settings .plugin-card-members-role-hierarchy .members-svg-link svg{left:14px}.members-addons .plugin-card .desc>p,.members-addons .plugin-card .name{margin-left:84px}}.memberpress-about .welcome-panel-column-container{display:-webkit-box;display:-ms-flexbox;display:flex}.memberpress-about .mp-logo{max-width:256px;margin:50px}.members-about-addons{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-column-gap:20px}.members-about-addons .members-plugin-card{margin:0;width:100%}.members-about-addons .members-plugin-card .name h3 a{text-decoration:none}.members-about-addons .members-plugin-card .plugin-card-bottom{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}@media only screen and (max-width:1099px){.members-about-addons{grid-template-columns:1fr;grid-row-gap:20px}}@media screen and (min-width:1100px) and (max-width:1600px){.members-about-addons .members-plugin-card{float:none;width:auto;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.members-plugin-card.plugin-card .desc{margin-left:0;margin-top:50px}.members-plugin-card.plugin-card .desc p{margin-left:0;margin-right:0}.members-plugin-card.plugin-card .plugin-card-bottom .column-status{float:none}.members-plugin-card.plugin-card .plugin-card-bottom .column-updated{float:none;width:auto}}@media screen and (max-width:1200px){.welcome-panel .welcome-panel-column-container{-webkit-box-orient:vertical;-webkit-box-direction:reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse;gap:0;padding:0}.memberpress-about .mp-logo{margin:0 0 20px}}.members-plugin-card.plugin-card .desc p{margin-left:0;margin-right:0}@media only screen and (min-width:783px){.members_page_roles .column-users,.members_page_roles .column-granted_caps,.members_page_roles .column-denied_caps{width:100px;text-align:center}}.members-title-div #titlewrap input{padding:0 8px;font-size:1.7em;line-height:normal;height:1.7em;width:100%;outline:0;margin:0 0 3px;background-color:#fff}.members-title-div input[name="role"]{font-size:13px;height:22px;margin:0;width:16em}#tabcapsdiv{margin-top:1em}#tabcapsdiv>.hndle{padding:10px;border-bottom:1px solid #eee}#tabcapsdiv .inside,#members-cp .inside{margin:0;padding:0}.members-cap-tabs,.members-tabs{overflow:hidden;background:#fff;background:-webkit-gradient(linear,left top,right top,from(#fafafa),color-stop(20%,#fafafa),color-stop(20%,#fff),to(#fff));background:linear-gradient(90deg,#fafafa 0,#fafafa 20%,#fff 20%,#fff 100%)}@media only screen and (max-width:782px){.members-cap-tabs,.members-tabs{background:linear-gradient(90deg,#fafafa 0,#fafafa 48px,#fff 48px,#fff 100%)}}.members-cap-tabs .members-tab-nav,.members-tabs .members-tab-nav{position:relative;float:left;list-style:none;width:20%;line-height:1em;margin:0 0 -1px 0;padding:0;background-color:#fafafa;border-right:1px solid #eee;-webkit-box-sizing:border-box;box-sizing:border-box}.members-cap-tabs .members-tab-nav li,.members-tabs .members-tab-nav li{display:block;position:relative;margin:0;padding:0;line-height:20px}.members-cap-tabs .members-tab-nav li a,.members-tabs .members-tab-nav li a{display:block;margin:0;padding:10px;line-height:20px !important;text-decoration:none;border-bottom:1px solid #eee;-webkit-box-shadow:none;box-shadow:none}.members-cap-tabs .members-tab-nav li a .dashicons,.members-tabs .members-tab-nav li a .dashicons{line-height:20px;margin-right:3px}.members-cap-tabs .members-tab-nav li[aria-selected="true"] a,.members-tabs .members-tab-nav li[aria-selected="true"] a{position:relative;font-weight:bold;color:#555;background-color:#e0e0e0}@media only screen and (max-width:782px){.members-cap-tabs .members-tab-nav,.members-tabs .members-tab-nav{width:48px}.members-cap-tabs .members-tab-nav li a .dashicons,.members-tabs .members-tab-nav li a .dashicons{width:24px;height:24px;font-size:24px;line-height:24px}.members-tab-nav li .dashicons::before,.members-tab-nav li .dashicons::before{width:24px;height:24px}.members-tab-nav li .label{overflow:hidden;position:absolute;top:-1000em;left:-1000em;width:1px;height:1px}}.members-cap-tabs .members-tab-wrap,.members-tabs .members-tab-wrap{float:left;width:80%;margin-left:-1px}@media only screen and (max-width:782px){.members-cap-tabs .members-tab-wrap,.members-tabs .members-tab-wrap{width:calc(100% - 48px)}}#members-cp .members-tab-content{padding:10px;border-left:1px solid #e5e5e5}.members-roles-select th,.members-roles-select td{width:190px;overflow:hidden}.members-roles-select .check-all-th{text-align:center}.members-roles-select .check-all-th label{padding-left:5px}@media only screen and (min-width:850px){#side-sortables .members-tabs{background:#fff}#side-sortables .members-tabs .members-tab-wrap{width:100%}#side-sortables .members-tabs .members-tab-nav{display:table;width:100%}#side-sortables .members-tabs .members-tab-nav li{display:table-cell;text-align:center;border-right:1px solid #eee}#side-sortables .members-tabs .members-tab-nav li:last-of-type{border-right:0}#side-sortables .members-tabs .members-tab-nav li a{padding:10px 0}#side-sortables .members-tabs .members-tab-nav .dashicons{width:24px;height:24px;font-size:24px;line-height:24px}#side-sortables .members-tabs .members-tab-nav .dashicons::before{width:24px;height:24px}#side-sortables .members-tabs .members-tab-nav .label{overflow:hidden;position:absolute;top:-1000em;left:-1000em;width:1px;height:1px}}.members-tabs .members-tabs-label{display:block !important;font-weight:bold;display:inline-block;margin-bottom:4px}.members-tabs .butterbean-control-checkbox .members-tabs-label{display:inline !important}.members-tabs .members-tabs-description{display:block;font-style:italic;margin-top:4px}.members-tabs .members-tabs-label+.members-tabs-description{margin-top:0;margin-bottom:4px}#tabcapsdiv table{border-right:0;border-top:0;border-bottom:0}#tabcapsdiv table td,#tabcapsdiv table th{padding:10px;padding-bottom:10px;border-bottom:1px solid #eee;font-size:13px;line-height:20px}#tabcapsdiv table td{padding:9px}#tabcapsdiv tbody tr:last-of-type td{border-bottom:0}#tabcapsdiv tfoot th{border-color:#eee}@media only screen and (max-width:782px){#tabcapsdiv table td,#tabcapsdiv table th{line-height:24px}}.members-roles-select .column-grant,.members-roles-select .column-deny{width:70px !important;text-align:left;display:table-cell !important;clear:none !important}.members-roles-select thead th,.members-roles-select tfoot th{padding:9px !important}.members-roles-select .column-grant input,.members-roles-select .column-deny input{margin:0 5px 0 0;vertical-align:middle}.members-roles-select tbody tr:nth-child(even){background:#f2f2f2}.members-cap-tabs button{display:inline;margin:-4px;line-height:inherit;padding:4px 8px;border:1px solid transparent;background:transparent;border-radius:0;outline:0;-webkit-transition:all .25s ease-out;transition:all .25s ease-out}.members-cap-tabs button:hover,.members-cap-tabs button:focus{border-color:#eee;background:#fafafa;cursor:pointer}.members-cap-tabs button:active{color:#0073aa;border-color:#0073aa}.members-cap-tabs button+.dashicons{display:none;margin-top:1px;margin-bottom:-1px;line-height:inherit}.members-cap-tabs button:hover+.dashicons,.members-cap-tabs button:focus+.dashicons{display:inline-block}.members-tab-content .members-highlight{background-color:rgba(0,115,170,0.05)}.members-tab-content tbody{-webkit-transition:all 2s ease-in-out;transition:all 2s ease-in-out}.members-cp-role-list-wrap{overflow:auto;min-height:42px;max-height:200px;padding:0 .9em;border:solid 1px #dfdfdf;background-color:#fdfdfd}#wpbody-content{padding-bottom:200px}.members-footer-promotion{text-align:center;font-weight:400;font-size:13px;line-height:16px;color:#787c82;padding:20px 0 30px 0;margin-bottom:20px}.members-footer-promotion p{font-weight:600}.members-footer-promotion-links,.members-footer-promotion-social{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.members-footer-promotion-links{margin:9px 0 0}.members-footer-promotion-links span{color:#c3c4c7;padding:0 7px}.members-footer-promotion-social{margin:10px 0 0 0;gap:10px}.members-footer-promotion-social li{margin-bottom:0}.members-footer-promotion-social a{display:block;height:16px}.members_page_members-settings.rtl{.addon-activate{left:20px;right:unset}.members-addons .plugin-card{.name,.desc p{margin-left:0;margin-right:148px}}}.button.button-warning{background:#dc3232;border-color:#dc3232;color:#fff}.button.button-warning:hover,.button.button-warning:focus{background:#c92424;border-color:#c92424;color:#fff}.members-reset-spinner{float:none;margin-top:0;vertical-align:middle}.members-admin-menus-wrap{max-width:1400px}.members-admin-menus-toolbar{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;margin-bottom:16px}.members-am-toolbar-loading{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;margin-left:4px;color:#50575e;font-size:13px;line-height:1}.members-am-toolbar-loading .spinner{float:none;margin:0}.members-am-toolbar-loading[hidden]{display:none !important}.members-am-copy-wrap label{margin-right:8px}.members-am-chips{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:8px;margin-bottom:12px}.members-am-chip{border-radius:999px;padding:4px 12px;border:1px solid #c3c4c7;background:#f6f7f7;cursor:pointer}.members-am-chip.is-active{background:#2271b1;border-color:#2271b1;color:#fff}.members-am-carousel-wrap{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;gap:8px;margin-bottom:8px}.members-am-carousel-prev,.members-am-carousel-next{-ms-flex-item-align:center;align-self:center;width:36px;height:36px;border-radius:50%;border:1px solid #c3c4c7;background:#fff;cursor:pointer}.members-am-columns{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-ms-flex:1;flex:1;gap:12px;min-height:320px;overflow:hidden}.members-am-column{-webkit-box-flex:1;-ms-flex:1;flex:1;min-width:0;background:#1d2327;border-radius:4px;color:#f0f0f1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.members-am-user-column{border:2px dashed #8c8f94}.members-am-sidebar-head{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:8px 10px;background:#2c3338;border-radius:4px 4px 0 0;font-weight:600;font-size:12px;text-transform:uppercase;letter-spacing:.04em}.members-am-col-filter{padding:6px 8px 8px;border-bottom:1px solid #3c434a;-ms-flex-negative:0;flex-shrink:0}.members-am-col-filter-input{width:100%;max-width:100%;-webkit-box-sizing:border-box;box-sizing:border-box;font-size:12px;line-height:1.4;padding:4px 8px;border-radius:2px;border:1px solid #50575e;background:#1d2327;color:#f0f0f1}.members-am-col-filter-input::-webkit-input-placeholder{color:#8c8f94;opacity:1}.members-am-col-filter-input::-moz-placeholder{color:#8c8f94;opacity:1}.members-am-col-filter-input:-ms-input-placeholder{color:#8c8f94;opacity:1}.members-am-col-filter-input::-ms-input-placeholder{color:#8c8f94;opacity:1}.members-am-col-filter-input::placeholder{color:#8c8f94;opacity:1}.members-am-col-filter-input:focus{border-color:#2271b1;outline:1px solid transparent;-webkit-box-shadow:0 0 0 1px #2271b1;box-shadow:0 0 0 1px #2271b1}.members-am-item.members-am-filter-hidden,.members-am-sep.members-am-filter-hidden{display:none !important}.members-am-col-move button{margin-left:4px;padding:0 6px;min-height:24px;line-height:22px;font-size:11px}.members-am-sidebar-list{padding:6px 0 12px;overflow-y:auto;max-height:480px}.members-am-item{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:6px 10px 6px 8px;cursor:pointer;border-left:3px solid transparent;font-size:13px}.members-am-item.is-sub{padding-left:22px;font-size:12px;opacity:.95}.members-am-item.is-sub-deep{padding-left:36px}.members-am-sidebar-list .members-am-item{cursor:-webkit-grab;cursor:grab}.members-am-sidebar-list .members-am-item:active{cursor:-webkit-grabbing;cursor:grabbing}.members-am-sort-placeholder{-webkit-box-sizing:border-box;box-sizing:border-box;min-height:36px;margin:2px 0;background:rgba(34,113,177,0.08);border:1px dashed #2271b1;border-radius:2px}.members-am-item.is-hidden{opacity:.18}.members-am-item.is-no-cap{opacity:.35}.members-am-item.is-no-cap.is-hidden{opacity:.15}.members-am-item.is-selected{border-left-color:#2271b1;background:rgba(34,113,177,0.15)}.members-am-item-main{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;min-width:0}.members-am-item-main .dashicons{font-size:18px;width:18px;height:18px}.members-am-item-label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.members-am-item-actions{display:none;gap:2px}.members-am-item:hover .members-am-item-actions{display:-webkit-box;display:-ms-flexbox;display:flex}.members-am-item-actions button{min-height:22px;padding:0 4px;line-height:20px;font-size:11px}.members-am-sep{text-align:center;opacity:.35;font-size:11px;padding:4px 0}.members-am-carousel-dots{text-align:center;margin-bottom:4px}.members-am-dot{width:8px;height:8px;border-radius:50%;border:0;margin:0 4px;padding:0;background:#c3c4c7;cursor:pointer}.members-am-dot.is-active{background:#2271b1}.members-am-carousel-status{text-align:center;color:#646970;font-size:12px;margin-top:0}.members-am-badge{font-size:9px;text-transform:uppercase;padding:1px 4px;border-radius:2px;margin-right:4px;vertical-align:middle}.members-am-badge-new{background:#2271b1;color:#fff}.members-am-badge-edit{background:#dba617;color:#1d2327}.members-am-badge-nocap{background:#8c8f94;color:#fff}.members-am-legend{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:16px;margin:0 0 8px;padding:0;font-size:12px;color:#646970}.members-am-legend-item{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:4px}.members-am-edit-panel{margin-top:20px;padding:16px;border:1px solid #c3c4c7;background:#fff;border-radius:4px}.members-am-edit-panel-header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:12px}.members-am-edit-panel-header h2{margin:0;font-size:16px}.members-am-edit-toolbar{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:12px;margin-bottom:12px}.members-am-edit-target-wrap select{margin-left:8px}.members-am-level-actions .button{margin-right:6px}.members-am-demote-wrap{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:6px}.members-am-demote-wrap .members-am-demote-select{min-width:200px;max-width:min(320px,100%)}.members-am-edit-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:16px}.members-am-edit-col label{display:block;font-weight:600;margin-bottom:4px}.members-am-icon-tabs{margin-bottom:8px}.members-am-icon-tabs .button{margin-right:4px;margin-bottom:4px}.members-am-icon-tabs .button.is-active{background:#2271b1;border-color:#2271b1;color:#fff}.members-am-icon-grid{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:4px;max-height:160px;overflow-y:auto;border:1px solid #dcdcde;padding:8px;background:#f6f7f7;margin-bottom:8px}.members-am-icon-pick{width:36px;height:36px;padding:0;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;border:1px solid #c3c4c7;background:#fff;cursor:pointer}.members-am-vis-row{display:block;margin-bottom:6px;font-weight:normal}.members-am-reset-dropdown{position:absolute;z-index:100;background:#fff;border:1px solid #c3c4c7;border-radius:6px;padding:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-shadow:0 4px 12px rgba(0,0,0,0.15);box-shadow:0 4px 12px rgba(0,0,0,0.15);min-width:280px;top:100%;left:0;margin-top:4px;overflow:hidden}.members-am-reset-title{padding:10px 14px;font-weight:600;font-size:13px;border-bottom:1px solid #f0f0f0;color:#1d2327}.members-am-reset-option{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;gap:10px;padding:12px 14px;border:0;background:0;cursor:pointer;text-align:left;width:100%;border-bottom:1px solid #f0f0f0;-webkit-transition:background .15s;transition:background .15s}.members-am-reset-option:last-child{border-bottom:0}.members-am-reset-option:hover{background:#f6f7f7}.members-am-reset-option .dashicons{margin-top:2px;color:#646970}.members-am-reset-option-text{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:2px}.members-am-reset-option-text strong{font-size:13px;color:#1d2327}.members-am-reset-option-text small{font-size:12px;color:#646970}.members-am-reset-danger:hover{background:#fcf0f1}.members-am-reset-danger .dashicons{color:#d63638}.members-am-reset-danger:hover strong{color:#d63638}@media screen and (max-width:782px){.members-am-columns{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}}.members-am-user-suggestions{position:absolute;z-index:100;background:#fff;border:1px solid #c3c4c7;border-radius:4px;max-height:200px;overflow-y:auto;width:100%;-webkit-box-shadow:0 2px 6px rgba(0,0,0,0.15);box-shadow:0 2px 6px rgba(0,0,0,0.15);top:100%;left:0}.members-am-user-suggestion{padding:8px 12px;cursor:pointer;font-size:13px;border-bottom:1px solid #f0f0f0}.members-am-user-suggestion:hover{background:#f0f6fc}.members-am-user-suggestion:last-child{border-bottom:0}
\ No newline at end of file
diff --git a/js/admin-menus.js b/js/admin-menus.js
index b65ba87..7500485 100644
--- a/js/admin-menus.js
+++ b/js/admin-menus.js
@@ -20,6 +20,8 @@
syncScroll: (function () {
try { return localStorage.getItem('members_am_sync_scroll') !== '0'; } catch (e) { return true; }
})(),
+ /** Per-column list filter query (role slug, or `u:` + user id for preview column). */
+ columnFilters: {},
};
/** Snapshot of persisted settings for unsaved-change detection (object key order–independent). */
@@ -826,6 +828,85 @@
});
}
+ /**
+ * Show/hide menu rows in a column by label or id; keep ancestors visible when a child matches.
+ *
+ * @param {jQuery} $list Column .members-am-sidebar-list.
+ * @param {string} query Filter text.
+ */
+ function applyColumnListFilter($list, query) {
+ var q = (query || '').trim().toLowerCase();
+ var $items = $list.children('.members-am-item');
+ if (!q) {
+ $items.removeClass('members-am-filter-hidden');
+ $list.children('.members-am-sep').removeClass('members-am-filter-hidden');
+ return;
+ }
+ var matchSelf = {};
+ $items.each(function () {
+ var $row = $(this);
+ var id = $row.attr('data-id');
+ var label = ($row.find('.members-am-item-label').first().text() || '').toLowerCase();
+ var idLower = (id || '').toLowerCase();
+ matchSelf[id] = label.indexOf(q) !== -1 || idLower.indexOf(q) !== -1;
+ });
+ var children = {};
+ $items.each(function () {
+ var id = $(this).attr('data-id');
+ var p = $(this).attr('data-menu-parent') || '';
+ if (!children[p]) {
+ children[p] = [];
+ }
+ children[p].push(id);
+ });
+ var show = {};
+ function dfs(id) {
+ var self = matchSelf[id];
+ var subs = children[id] || [];
+ var childVisible = false;
+ var i;
+ for (i = 0; i < subs.length; i++) {
+ if (dfs(subs[i])) {
+ childVisible = true;
+ }
+ }
+ var v = self || childVisible;
+ show[id] = v;
+ return v;
+ }
+ var roots = children[''] || [];
+ for (var r = 0; r < roots.length; r++) {
+ dfs(roots[r]);
+ }
+ $items.each(function () {
+ var id = $(this).attr('data-id');
+ $(this).toggleClass('members-am-filter-hidden', !show[id]);
+ });
+ $list.children('.members-am-sep').addClass('members-am-filter-hidden');
+ }
+
+ function bindColumnFilter($wrap, $list, filterKey) {
+ var saved = state.columnFilters[filterKey] || '';
+ var ph =
+ (membersAdminMenus.i18n && membersAdminMenus.i18n.filterItems) ||
+ 'Filter items…';
+ var aria =
+ (membersAdminMenus.i18n && membersAdminMenus.i18n.filterItemsLabel) ||
+ 'Filter menu items in this column';
+ var $row = $('
');
+ var $input = $(' ')
+ .attr('placeholder', ph)
+ .attr('aria-label', aria)
+ .val(saved);
+ $row.append($input);
+ $wrap.find('.members-am-sidebar-head').first().after($row);
+ $input.on('input', function () {
+ state.columnFilters[filterKey] = $(this).val();
+ applyColumnListFilter($list, $(this).val());
+ });
+ applyColumnListFilter($list, saved);
+ }
+
function renderSidebar(role, $wrap) {
$wrap.empty();
var $head = $('');
@@ -854,6 +935,7 @@
renderRoleBranch(role, node, null, $ul, 0);
});
$wrap.append($ul);
+ bindColumnFilter($wrap, $ul, role);
}
function renderItemRow(role, node, parentMenuId, $container, depth) {
@@ -1160,6 +1242,7 @@
});
$uc.append($list);
+ bindColumnFilter($uc, $list, 'u:' + uid);
$cols.append($uc);
}
if (state.syncScroll) {
diff --git a/js/admin-menus.min.js b/js/admin-menus.min.js
index dc0d4b6..1b719bb 100644
--- a/js/admin-menus.min.js
+++ b/js/admin-menus.min.js
@@ -1 +1 @@
-!function(g){"use strict";var h={settings:g.extend(!0,{},membersAdminMenus.settings),tree:[],activeRoleSlugs:[],carouselPage:0,columnsPerPage:3,selectedId:null,iconTab:"dashicons",previewUserId:null,previewUserRoles:[],userSuggestions:[],mediaFrame:null,allowUnload:!1,syncScroll:function(){try{return"0"!==localStorage.getItem("members_am_sync_scroll")}catch(e){return!0}}()},a="";function n(){return function r(s){if(null===s)return"null";var e=typeof s;return"string"==e||"number"==e||"boolean"==e?JSON.stringify(s):"undefined"==e?"null":Array.isArray(s)?"["+s.map(function(e){return r(e)}).join(",")+"]":"object"!=e?JSON.stringify(s):"{"+Object.keys(s).sort().map(function(e){return JSON.stringify(e)+":"+r(s[e])}).join(",")+"}"}(h.settings)}function t(){if(!h.allowUnload&&n()!==a)return membersAdminMenus.i18n&&membersAdminMenus.i18n.unsavedChanges||""}var e=["dashicons-menu","dashicons-admin-dashboard","dashicons-admin-post","dashicons-admin-page","dashicons-admin-media","dashicons-admin-comments","dashicons-admin-appearance","dashicons-admin-plugins","dashicons-admin-users","dashicons-admin-tools","dashicons-admin-settings","dashicons-admin-generic","dashicons-edit","dashicons-plus","dashicons-chart-bar","dashicons-cart","dashicons-products","dashicons-email","dashicons-groups","dashicons-heart","dashicons-star-filled","dashicons-smiley","dashicons-info","dashicons-lock","dashicons-unlock","dashicons-visibility","dashicons-hidden","dashicons-arrow-up","dashicons-arrow-down","dashicons-admin-network","dashicons-performance"],r=["fa-solid fa-house","fa-solid fa-user","fa-solid fa-gear","fa-solid fa-file","fa-solid fa-image","fa-solid fa-cart-shopping","fa-solid fa-chart-line","fa-solid fa-envelope","fa-solid fa-book","fa-solid fa-link","fa-solid fa-bell","fa-solid fa-star","fa-solid fa-heart","fa-solid fa-lock","fa-solid fa-unlock","fa-solid fa-pen","fa-solid fa-trash","fa-solid fa-plus","fa-solid fa-minus"],i="members_am_view_state";function o(){try{localStorage.setItem(i,JSON.stringify({activeRoleSlugs:h.activeRoleSlugs,carouselPage:h.carouselPage}))}catch(e){}}function l(){return membersAdminMenus.roles||[]}function m(){h.settings._meta&&!Array.isArray(h.settings._meta)||(h.settings._meta={version:3,admin_editable:!1}),h.settings.roles&&!Array.isArray(h.settings.roles)||(h.settings.roles={}),h.settings.users&&!Array.isArray(h.settings.users)||(h.settings.users={}),Array.isArray(h.settings.custom_items)||(h.settings.custom_items=[]),h.settings.capabilities&&!Array.isArray(h.settings.capabilities)||(h.settings.capabilities={})}function _(e){m(),h.settings.roles[e]||(h.settings.roles[e]={hidden:[],order:[],submenu_order:{},overrides:{}});var r=h.settings.roles[e];return r.hidden&&Array.isArray(r.hidden)||(r.hidden=[]),r.order&&Array.isArray(r.order)||(r.order=[]),r.submenu_order&&!Array.isArray(r.submenu_order)||(r.submenu_order={}),r.overrides&&!Array.isArray(r.overrides)||(r.overrides={}),r}function x(e){m(),h.settings.users[e]||(h.settings.users[e]={});var r=h.settings.users[e];return r.hidden&&Array.isArray(r.hidden)||(r.hidden=[]),r.order&&Array.isArray(r.order)||(r.order=[]),r.overrides&&!Array.isArray(r.overrides)||(r.overrides={}),r.submenu_order&&!Array.isArray(r.submenu_order)||(r.submenu_order={}),r}function c(r){var e=x(r);return(e.order&&e.order.length?e.order.slice():w()).filter(function(e){return 0===e.indexOf("sep-")||!!b(e)&&!function(e,r){if(!r||-1!==r.indexOf("::"))return;var s=x(e),a=s.overrides&&s.overrides[r]||{};return a.parent&&"__promote__"!==a.parent}(r,e)})}function d(e,r,s,a){var n,t=x(e),i=t.overrides&&t.overrides[r]||{},o=s;!o&&i.parent&&"__promote__"!==i.parent&&(o=i.parent);var m,d,l,c,u=-1!==r.indexOf("::")?r.split("::").pop():r,p=(n=o?(t.submenu_order[o]||(t.submenu_order[o]=(m=e,l=A(d=o),c=x(m),h.tree.forEach(function(e){e&&e.id&&-1===e.id.indexOf("::")&&(c.overrides&&c.overrides[e.id]||{}).parent===d&&-1===l.indexOf(e.id)&&l.push(e.id)}),l)),t.submenu_order[o]):(t.order.length||(t.order=w()),t.order)).indexOf(u);if(-1!==p){var f=p+a;f<0||f>=n.length||(n.splice(p,1),n.splice(f,0,o?u:r))}}function u(e){var r=e.id||"c";return"members-am-"+String(r).replace(/[^a-z0-9_-]/gi,"-").toLowerCase()}function p(e){return!!e&&0===(-1!==e.indexOf("::")?e.split("::").pop():e).indexOf("members-am-")}function f(){var a=g.extend(!0,[],membersAdminMenus.menuTree||[]),n={};return a.forEach(function(e){n[e.id]=!0}),(h.settings.custom_items||[]).forEach(function(e){if(e&&e.id){var r=u(e);if(n[r]){for(var s=0;sn&&(h.carouselPage=n))}}h.activeRoleSlugs=r.filter(function(e){return"administrator"!==e||s}),h.activeRoleSlugs.length||(h.activeRoleSlugs=["subscriber"])}function J(){var a=g("#members-am-role-chips").empty();l().forEach(function(e){if("administrator"!==e.slug||h.settings._meta.admin_editable){var r=-1!==h.activeRoleSlugs.indexOf(e.slug),s=g(' ').text(e.label).attr("data-role",e.slug).toggleClass("is-active",r);a.append(s)}})}function j(t,i,e,o,m){(function(e,r,s,a,n){n=n||0;var t=r.id,i=M(e,t),o=!P(e,r.cap),m=_(e).overrides[t]||{},d=m.label||r.title||t,l=g('
').attr("data-id",t).attr("data-menu-parent",s||"").toggleClass("is-hidden",i).toggleClass("is-no-cap",o).toggleClass("is-selected",h.selectedId===t).toggleClass("is-sub",0 ');if(0===n){var u=m.icon||r.icon,p=R(u,m.icon_type||r.icon_type);if("fontawesome"===p&&u)c.append(g(' '));else if("svg"!==p&&"image"!==p&&"custom"!==p||!u){var f=u&&0===u.indexOf("dashicons-")?u:"dashicons-admin-generic";c.append(g(' '))}else c.append(g(" ").attr("src",u).css({width:"20px",height:"20px",display:"inline-block",verticalAlign:"middle",objectFit:"contain",filter:"none"}))}r.custom&&c.append(g('custom '));m.label&&c.append(g('edit '));if(c.append(g(' ').text(d)),m.badge){var b=m.badge_bg||"#d63638";c.append(g(' ').text(m.badge).css({backgroundColor:b,color:"#fff",fontSize:"9px",padding:"1px 5px",borderRadius:"2px",marginLeft:"4px",whiteSpace:"nowrap"}))}o&&c.append(g(' Roles.\">🔒 no access "));l.append(c),m.color_bg&&l.css("background-color",m.color_bg);m.color_text&&l.find(".members-am-item-label").css("color",m.color_text);m.color_icon&&(l.find(".dashicons").css("color",m.color_icon),l.find(".members-am-fa-icon i").css("color",m.color_icon),l.find("img").css("filter","none"));var v=g('
');v.append(g(' ').text("◉"),g(' ').text("↑"),g(' ').text("↓")),l.append(v),a.append(l)})(t,i,e,o,m=m||0),i.children&&i.children.length&&k(t,i.id).forEach(function(e){var r,s,a,n=(r=t,s=i.id,b(I(s,a=e))||(-1===a.indexOf("::")&&(_(r).overrides[a]||{}).parent===s?b(a):null));n&&"__promote__"!==(_(t).overrides[n.id]||{}).parent&&j(t,n,i.id,o,m+1)})}function L(s,a,e,n,t,i){i=i||0,t.append(function(r,e,s,a,n){n=n||0;var t=a.overrides&&a.overrides[r.id]||{},i=t.label||r.title,o=function(e,r){var s=x(e);if(-1!==s.hidden.indexOf(r))return!0;var a=y(r,e);return!(!a||-1===s.hidden.indexOf(a))}(s,r.id),m=!function(e){if(!e||"read"===e)return 1;for(var r=h.previewUserRoles||[],s=0;s").addClass(l).attr("data-id",r.id).attr("data-menu-parent",e||""),u=g('
');if(0===n){var p=t.icon||r.icon,f=R(p,t.icon_type||r.icon_type);"fontawesome"===f&&p?u.append(g(' ')):"svg"!==f&&"image"!==f&&"custom"!==f||!p?p&&0===p.indexOf("dashicons-")?u.append(g(' ')):u.append(g(' ')):u.append(g(" ").attr("src",p).css({width:"20px",height:"20px",display:"inline-block",verticalAlign:"middle",objectFit:"contain",filter:"none"}))}r.custom&&u.append(g('custom '));t.label&&u.append(g('edit '));if(u.append(g(' ').text(i)),t.badge){var b=t.badge_bg||"#d63638";u.append(g(' ').text(t.badge).css({backgroundColor:b,color:"#fff",fontSize:"9px",padding:"1px 5px",borderRadius:"2px",marginLeft:"4px",whiteSpace:"nowrap"}))}m&&u.append(g('🔒 no access "));c.append(u),t.color_bg&&c.css("background-color",t.color_bg);t.color_text&&c.find(".members-am-item-label").css("color",t.color_text);t.color_icon&&(c.find(".dashicons").css("color",t.color_icon),c.find(".members-am-fa-icon i").css("color",t.color_icon));var v=g('
');return v.append(g(' ').text(o?"◯":"◉"),g(' ').text("↑"),g(' ').text("↓")),c.append(v),c.on("click",function(e){g(e.target).closest("button").length||(h.selectedId=r.id,$())}),c}(a,e,s,n,i)),a.children&&a.children.length&&function(e,r){var s=A(r),a=x(e);h.tree.forEach(function(e){e&&e.id&&-1===e.id.indexOf("::")&&(a.overrides&&a.overrides[e.id]||{}).parent===r&&-1===s.indexOf(e.id)&&s.push(e.id)});var n=a.submenu_order&&a.submenu_order[r];if(!n||!n.length)return s.slice();var t=n.filter(function(e){return-1!==s.indexOf(e)});return s.forEach(function(e){-1===t.indexOf(e)&&t.push(e)}),t}(s,a.id).forEach(function(e){var r=function(e,r,s){var a=b(I(r,s));if(a)return a;if(-1===s.indexOf("::")){var n=x(e);if((n.overrides&&n.overrides[s]||{}).parent===r)return b(s)}return null}(s,a.id,e);r&&"__promote__"!==(n.overrides&&n.overrides[r.id]||{}).parent&&L(s,r,a.id,n,t,i+1)})}function F(e){return-1!==e.indexOf("::")?e.split("::").pop():e}function z(){g.fn.sortable&&g("#members-am-columns .members-am-sidebar-list").each(function(){var e=g(this);e.data("ui-sortable")&&e.sortable("destroy");var r=e.closest(".members-am-column"),s=r.data("role"),a=r.data("user");e.sortable({axis:"y",distance:6,items:"> .members-am-item, > .members-am-sep",cancel:".members-am-item-actions button",placeholder:"members-am-sort-placeholder",forcePlaceholderSize:!0,tolerance:"pointer",update:function(){a?function(e,r){var n=[],t={};e.children().each(function(){var e=g(this);if(e.hasClass("members-am-sep")){var r=e.attr("data-sep-id");r&&n.push(r)}else if(e.hasClass("members-am-item")){var s=e.attr("data-id");if(s){var a=e.attr("data-menu-parent");void 0===a||""===a?n.push(s):(t[a]||(t[a]=[]),t[a].push(F(s)))}}});var s=x(r);s.order=n,s.submenu_order=t}(e,a):s&&function(e,r){var n=[],t={};e.children().each(function(){var e=g(this);if(e.hasClass("members-am-sep")){var r=e.attr("data-sep-id");r&&n.push(r)}else if(e.hasClass("members-am-item")){var s=e.attr("data-id");if(s){var a=e.attr("data-menu-parent");void 0===a||""===a?n.push(s):(t[a]||(t[a]=[]),t[a].push(F(s)))}}});var s=_(r);s.order=n,s.submenu_order=t}(e,s),W()}})})}function D(){var s=g("#members-am-columns"),a={};s.find(".members-am-column").each(function(){var e=g(this).data("role");if(e){var r=g(this).find(".members-am-sidebar-list");r.length&&(a[e]=r.scrollTop())}}),s.empty();var e=h.carouselPage*h.columnsPerPage;if(h.activeRoleSlugs.slice(e,e+h.columnsPerPage).forEach(function(e){var r=g('
');!function(s,e){e.empty();var r=g(''),a=(l().filter(function(e){return e.slug===s})[0]||{}).label||s;r.append(g('').text(a)),r.append(g(' ').append(g(' ').text("◀"),g(' ').text("▶"))),e.append(r);var n=g('');S(s).forEach(function(e){if(0!==e.indexOf("sep-")){var r=b(e);r&&j(s,r,null,n,0)}else n.append(g('
').attr("data-sep-id",e).text("—"))}),e.append(n)}(e,r),s.append(r),a[e]&&r.find(".members-am-sidebar-list").scrollTop(a[e])}),h.previewUserId){var n=h.previewUserId,r=g('
'),t=g('');t.append(g(" ").text(h.previewUserLabel||"User #"+n)),t.append(g('× ').on("click",function(){h.previewUserId=null,h.previewUserLabel=null,h.previewUserRoles=[],$()})),r.append(t);var i=g(''),o=x(n);c(n).forEach(function(e){if(0!==e.indexOf("sep-")){var r=b(e);r&&L(n,r,null,o,i,0)}else i.append(g('
').attr("data-sep-id",e).text("——"))}),r.append(i),s.append(r)}if(h.syncScroll){var m=s.find(".members-am-sidebar-list"),d=!1;m.on("scroll",function(){if(!d){d=!0;var e=g(this).scrollTop();m.not(this).scrollTop(e),d=!1}})}!function(){var e=Math.max(1,Math.ceil(h.activeRoleSlugs.length/h.columnsPerPage)),r=(Math.min(h.carouselPage+1,e),h.carouselPage*h.columnsPerPage+1),s=Math.min((h.carouselPage+1)*h.columnsPerPage,h.activeRoleSlugs.length);g("#members-am-carousel-status").text(r+"–"+s+" "+membersAdminMenus.i18n.of+" "+h.activeRoleSlugs.length);for(var a=g("#members-am-carousel-dots").empty(),n=0;n ').toggleClass("is-active",n===h.carouselPage))}(),z()}function W(){if(h.selectedId){g("#members-am-edit-panel").removeAttr("hidden");var e=b(h.selectedId),r=U()||{};g("#members-am-edit-title").text(e?e.title:h.selectedId),g("#members-am-edit-label").val(r.label||e&&e.title||"");var s=p(h.selectedId);g("#members-am-edit-url-wrap").toggle(s),g("#members-am-edit-url").attr("placeholder","Override URL (leave empty for default)").val(s&&(r.url||e&&e.url)||"").data("default-url",e&&e.url||""),g("#members-am-icon-type").val(r.icon_type||"dashicon"),g("#members-am-icon-value").val(r.icon||e&&e.icon||"");var a=r.icon||e&&e.icon||"",n=R(a,r.icon_type||e&&e.icon_type||"");"image"!==n&&"custom"!==n&&"svg"!==n||!a?g("#members-am-icon-preview").hide():g("#members-am-icon-preview").show().attr("src",a),g("#members-am-color-bg").val(r.color_bg||""),g("#members-am-color-text").val(r.color_text||""),g("#members-am-color-icon").val(r.color_icon||""),g("#members-am-badge-text").val(r.badge||""),g("#members-am-badge-bg").val(r.badge_bg||""),g("#members-am-item-cap").attr("placeholder",e&&e.cap?e.cap+" (default)":"").val(h.settings.capabilities[h.selectedId]||"");var t=e&&e.custom;g("#members-am-remove-custom").toggle(!!t),g("#members-am-visibility-toggles").empty();var i=e&&e.cap||"read";l().forEach(function(e){if("administrator"!==e.slug||h.settings._meta.admin_editable){var r=M(e.slug,h.selectedId),s=P(e.slug,i),a=g(' ').attr("data-role",e.slug).prop("checked",!r&&s);s||a.prop("disabled",!0);var n=g(' ').append(a,g(" ").text(e.label));s||(n.append(g(" ").text(" — no capability").css({color:"#999",fontStyle:"italic",marginLeft:"4px"})),n.css("opacity","0.5")),g("#members-am-visibility-toggles").append(n)}}),g(".members-am-color").each(function(){g(this).data("wpWpColorPicker")&&g(this).wpColorPicker("destroy")}),g(".members-am-color").wpColorPicker({change:function(e,r){setTimeout(function(){Q()},20)},clear:function(){setTimeout(function(){Q()},20)}}),q(),function(){var e=g(".members-am-demote-wrap"),s=g("#members-am-demote-parent"),r=g("#members-am-demote");if(!h.selectedId)return e.attr("hidden",!0);if(v(h.selectedId))return e.attr("hidden",!0);var a=C()[0]||h.activeRoleSlugs[0];if(a&&O(a,h.selectedId))return e.attr("hidden",!0);e.removeAttr("hidden");var n=h.selectedId,t=membersAdminMenus.i18n&&membersAdminMenus.i18n.selectParentMenu||"";s.empty().append(g(" ").val("").text(t));var i=0;h.tree.forEach(function(e){if(e&&e.id&&e.id!==n){var r=e.title&&String(e.title).trim()?e.title:e.id;s.append(g(" ").val(e.id).text(r)),i++}});var o=0 ');"dashicons"===s?r.append(g(' ')):r.append(g(' ')),r.on("click",function(){g("#members-am-icon-value").val(e),g("#members-am-icon-type").val("dashicons"===s?"dashicon":"fontawesome"),Q()}),n.append(r)}})}function s(e,r){var s=h.activeRoleSlugs.indexOf(e);if(-1!==s){var a=s+r;if(!(a<0||a>=h.activeRoleSlugs.length)){var n=h.activeRoleSlugs[s];h.activeRoleSlugs[s]=h.activeRoleSlugs[a],h.activeRoleSlugs[a]=n,o(),$()}}}function B(e,r,s){var a,n,t,i=_(e).overrides[r]||{},o=null;if("__promote__"===i.parent?o=null:-1!==r.indexOf("::")?o=v(r):i.parent&&"__promote__"!==i.parent&&(o=i.parent),o){var m=_(e).submenu_order;m[o]||(m[o]=(a=e,t=A(n=o),h.tree.forEach(function(e){e&&e.id&&-1===e.id.indexOf("::")&&(_(a).overrides[e.id]||{}).parent===n&&-1===t.indexOf(e.id)&&t.push(e.id)}),t));var d=m[o],l=-1!==r.indexOf("::")?r.split("::").pop():r;if(-1===(u=d.indexOf(l)))return;if((p=u+s)<0||p>=d.length)return;var c=d[u];d[u]=d[p],d[p]=c}else{_(e).order&&_(e).order.length||(_(e).order=w());var u,p,f=_(e).order;if(-1===(u=f.indexOf(r)))return;if((p=u+s)<0||p>=f.length)return;var b=f[u];f[u]=f[p],f[p]=b}$()}function G(){var e=C();if(e.length){var a="sep-"+Date.now();e.forEach(function(e){_(e).order&&_(e).order.length||(_(e).order=w());var r=_(e).order,s=h.selectedId?r.indexOf(h.selectedId):r.length-1;s<0&&(s=r.length),r.splice(s+1,0,a)}),$()}}function H(e){var r=g("#members-am-toolbar-loading");r.removeAttr("hidden"),r.find(".spinner").addClass("is-active"),r.find(".members-am-loading-text").text(e||""),g("#members-am-save, #members-am-reset, #members-am-import, #members-am-copy-apply").prop("disabled",!0)}function K(){var e=g("#members-am-toolbar-loading");e.attr("hidden",!0),e.find(".spinner").removeClass("is-active"),e.find(".members-am-loading-text").text(""),g("#members-am-save, #members-am-reset, #members-am-import, #members-am-copy-apply").prop("disabled",!1)}function V(e){H(e||membersAdminMenus.i18n&&membersAdminMenus.i18n.saving||"Saving…");var r=!1,n=membersAdminMenus.i18n&&membersAdminMenus.i18n.networkError||"Could not save settings. Check your connection and try again.";g.ajax({url:membersAdminMenus.ajaxUrl,type:"POST",dataType:"json",timeout:6e4,data:{action:"members_admin_menus_save",nonce:membersAdminMenus.nonce,settings:JSON.stringify(h.settings)}}).done(function(e){if(e&&void 0!==e.success)return e.success?(h.allowUnload=!0,alert(membersAdminMenus.i18n.saved),r=!0,void location.reload()):void alert(e.data&&e.data.message?e.data.message:"Error");alert(n)}).fail(function(e,r){if("abort"!==r){var s=n;if(e&&e.responseJSON&&void 0!==e.responseJSON.data){var a=e.responseJSON.data;"string"==typeof a&&a?s=a:a&&"string"==typeof a.message&&a.message&&(s=a.message)}alert(s)}}).always(function(){r||K()})}function X(e,r){if(confirm("role"===e&&r?"Reset all settings for this role? This cannot be undone.":"Reset ALL menu settings for every role? This cannot be undone.")){H(membersAdminMenus.i18n&&membersAdminMenus.i18n.resetting||"Resetting…");var s=!1;g.post(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_reset",nonce:membersAdminMenus.nonce,scope:e||"all",role:r||""}).done(function(e){if(e.success)return h.allowUnload=!0,s=!0,void location.reload();alert(e.data&&e.data.message?e.data.message:"Reset failed.")}).fail(function(){alert(membersAdminMenus.i18n.networkError||"Could not reset settings. Check your connection and try again.")}).always(function(){s||K()})}}function Y(e){g.getJSON(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_user_search",nonce:membersAdminMenus.nonce,term:e},function(e){e.success&&e.data&&e.data.length?function(e){g(".members-am-user-suggestions").remove();var r=g("#members-am-user-search").parent();r.css("position","relative");var s=g('
');e.forEach(function(e){s.append(g('
').text(e.label).data("userId",e.id).on("click",function(){!function(e,r,s){h.previewUserId=e,h.previewUserLabel=r||"User #"+e,h.previewUserRoles=s||[],m(),h.settings.users[e]||(h.settings.users[e]={});$()}(e.id,e.label,e.roles),g(".members-am-user-suggestions").remove(),g("#members-am-user-search").val("")}))}),r.append(s),setTimeout(function(){g(document).one("click",function(){g(".members-am-user-suggestions").remove()})},0)}(e.data):g(".members-am-user-suggestions").remove()})}function Z(){var r;g(document).on("click","#members-am-role-chips .members-am-chip",function(){var e=g(this).data("role"),r=h.activeRoleSlugs.indexOf(e);-1===r?h.activeRoleSlugs.push(e):1 ');if(t.append(g('
').text("Reset Settings")),a&&n){var i=g(' ');i.append(g(' ')),i.append(g(' ').append(g(" ").text("Reset "+n),g(" ").text("Clear all menu settings for this role only"))),i.on("click",function(){g(".members-am-reset-dropdown").remove(),X("role",a)}),t.append(i)}var o=g(' ');o.append(g(' ')),o.append(g(' ').append(g(" ").text("Reset all roles"),g(" ").text("Clear all menu settings for every role"))),o.on("click",function(){g(".members-am-reset-dropdown").remove(),X("all")}),t.append(o),r.parent().css("position","relative"),t.insertAfter(r),g(document).one("click",function(){g(".members-am-reset-dropdown").remove()})}),g("#members-am-export").on("click",function(e){e.preventDefault(),window.location.href=membersAdminMenus.exportUrl}),g("#members-am-import").on("click",function(){g("#members-am-import-file").trigger("click")}),g("#members-am-import-file").on("change",function(){var e=this.files&&this.files[0];e&&function(e){H(membersAdminMenus.i18n&&membersAdminMenus.i18n.importing||"Importing…");var s=new FileReader;s.onerror=function(){K(),alert(membersAdminMenus.i18n&&membersAdminMenus.i18n.networkError||"Could not read the file.")},s.onload=function(){try{var e=JSON.parse(s.result),r=!1;g.post(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_import",nonce:membersAdminMenus.nonce,settings:JSON.stringify(e)}).done(function(e){if(e.success)return h.allowUnload=!0,r=!0,void location.reload();alert(e.data&&e.data.message?e.data.message:"Error")}).fail(function(){alert(membersAdminMenus.i18n.networkError||"Could not import settings. Check your connection and try again.")}).always(function(){r||K()})}catch(e){K(),alert("Invalid JSON")}},s.readAsText(e)}(e)}),g("#members-am-copy-apply").on("click",function(){var s=g("#members-am-copy-from").val(),r=g("#members-am-copy-to").val();if(s&&r)if(s!==r){var a="",n="";if(l().forEach(function(e){e.slug===s&&(a=e.label),e.slug===r&&(n=e.label)}),confirm('Copy menu settings from "'+a+'" to "'+n+'"?\nThis will overwrite "'+n+"\" menu configuration.\n\nNote: This copies menu order, hidden items, labels, icons, and colors.\nIt does NOT change the role's capabilities (items marked with a lock icon).")){var e=_(s),t={hidden:e.hidden?e.hidden.slice():[],order:[],submenu_order:{},overrides:{}},i=S(s);t.order=i.slice(),h.tree.forEach(function(e){if(e.children&&e.children.length){var r=k(s,e.id);r&&r.length&&(t.submenu_order[e.id]=r.slice())}}),e.overrides&&"object"==typeof e.overrides&&(t.overrides=JSON.parse(JSON.stringify(e.overrides))),h.settings.roles[r]=t,-1===h.activeRoleSlugs.indexOf(r)&&(h.activeRoleSlugs.push(r),o(),J()),$(),V(membersAdminMenus.i18n&&membersAdminMenus.i18n.copying||"Copying…")}}else alert("Source and target roles must be different.")}),g("#members-am-admin-editable").on("change",function(){var e=!0;g(this).is(":checked")&&(e=window.confirm(membersAdminMenus.i18n.adminEditableWarn)),e?(h.settings._meta.admin_editable=g(this).is(":checked"),N(),J(),o(),$()):g(this).prop("checked",!1)}),g("#members-am-sync-scroll").prop("checked",!1!==h.syncScroll),g("#members-am-sync-scroll").on("change",function(){h.syncScroll=g(this).is(":checked");try{localStorage.setItem("members_am_sync_scroll",h.syncScroll?"1":"0")}catch(e){}D()}),g("#members-am-add-item").on("click",function(){var e="c"+Date.now();h.settings.custom_items.push({id:e,label:"Custom link",url:window.location.origin+"/wp-admin/",icon_type:"dashicon",icon:"dashicons-admin-generic",parent:"",position:99,cap:"read"}),h.tree=f(),h.selectedId=u({id:e}),$(),W()}),g("#members-am-remove-custom").on("click",function(){var r=b(h.selectedId);r&&r.customId&&(h.settings.custom_items=(h.settings.custom_items||[]).filter(function(e){return e.id!==r.customId}),h.selectedId=null,h.tree=f(),$(),g("#members-am-edit-panel").attr("hidden",!0))}),g("#members-am-edit-close").on("click",function(){h.selectedId=null,g("#members-am-edit-panel").attr("hidden",!0),$()}),g("#members-am-edit-target-role").on("change",W),g("#members-am-edit-label, #members-am-edit-url, #members-am-icon-value, #members-am-badge-text").on("input",function(){Q()}),g("#members-am-item-cap").on("input",function(){Q()}),g(".members-am-icon-tabs .button").on("click",function(){g(".members-am-icon-tabs .button").removeClass("is-active"),g(this).addClass("is-active"),h.iconTab="fontawesome"===g(this).data("tab")?"fontawesome":"upload"===g(this).data("tab")?"upload":"dashicons",q()}),g("#members-am-icon-search").on("input",q),g("#members-am-media-upload").on("click",function(e){e.preventDefault(),h.mediaFrame||(h.mediaFrame=wp.media({title:"Choose menu icon",button:{text:"Use as icon"},multiple:!1,library:{type:"image"}}),h.mediaFrame.on("select",function(){var e=h.mediaFrame.state().get("selection").first().toJSON(),r=e.url||"";e.sizes&&(e.sizes.thumbnail?r=e.sizes.thumbnail.url:e.sizes.medium&&(r=e.sizes.medium.url)),g("#members-am-icon-type").val("custom"),g("#members-am-icon-value").val(r),Q()})),h.mediaFrame.open()}),g(document).on("change",".members-am-vis-cb",function(){var e=g(this).data("role");if(g(this).is(":checked")){var r=_(e).hidden,s=r.indexOf(h.selectedId);-1!==s&&r.splice(s,1)}else-1===_(e).hidden.indexOf(h.selectedId)&&_(e).hidden.push(h.selectedId);$()}),g("#members-am-add-sep").on("click",G),g("#members-am-promote").on("click",function(){if(h.selectedId){var n=h.selectedId,e=U()||{};if(-1===n.indexOf("::")&&e.parent&&"__promote__"!==e.parent){var t=e.parent,r=E();if(r){var s=x(r);if(s.overrides[n]&&delete s.overrides[n].parent,s.submenu_order&&s.submenu_order[t]){var a=s.submenu_order[t].indexOf(n);-1!==a&&s.submenu_order[t].splice(a,1)}if(s.order.length||(s.order=w()),-1===s.order.indexOf(n)){var i=s.order.indexOf(t);-1!==i?s.order.splice(i+1,0,n):s.order.push(n)}}else C().forEach(function(e){var r=_(e);if(r.overrides[n]&&delete r.overrides[n].parent,r.submenu_order&&r.submenu_order[t]){var s=r.submenu_order[t].indexOf(n);-1!==s&&r.submenu_order[t].splice(s,1)}if(r.order&&r.order.length||(r.order=w()),-1===r.order.indexOf(n)){var a=r.order.indexOf(t);-1!==a?r.order.splice(a+1,0,n):r.order.push(n)}});return Q(),void W()}T("parent","__promote__");var o=v(n);C().forEach(function(e){var r=_(e);if(r.order&&r.order.length||(r.order=w()),-1===r.order.indexOf(n))if(o){var s=r.order.indexOf(o);-1!==s?r.order.splice(s+1,0,n):r.order.push(n)}else r.order.push(n)}),Q(),W()}}),g("#members-am-demote").on("click",function(){var e=g("#members-am-demote-parent").val();e?(T("parent",e),Q(),W()):window.alert(membersAdminMenus.i18n&&membersAdminMenus.i18n.selectParentFirst||"Please choose a parent menu from the list.")}),g("#members-am-user-search").on("input",function(){var e=g(this).val();clearTimeout(r),r=setTimeout(function(){1 ").val("__all__").text("All roles")),h.activeRoleSlugs.forEach(function(r){var e=(l().filter(function(e){return e.slug===r})[0]||{}).label||r;s.append(g(" ").val(r).text(e))}),h.previewUserId&&s.append(g(" ").val("__user__"+h.previewUserId).text(h.previewUserLabel||"User #"+h.previewUserId)),h.selectedId&&W()}g(function(){var r,s,e;m(),h.tree=f(),N(),g("#members-am-admin-editable").prop("checked",!!h.settings._meta.admin_editable),r=g("#members-am-copy-from").empty(),s=g("#members-am-copy-to").empty(),(e=l()).forEach(function(e){r.append(g(" ").val(e.slug).text(e.label)),s.append(g(" ").val(e.slug).text(e.label))}),1=n.length||(n.splice(p,1),n.splice(f,0,o?u:r))}}function u(e){var r=e.id||"c";return"members-am-"+String(r).replace(/[^a-z0-9_-]/gi,"-").toLowerCase()}function p(e){return!!e&&0===(-1!==e.indexOf("::")?e.split("::").pop():e).indexOf("members-am-")}function f(){var s=h.extend(!0,[],membersAdminMenus.menuTree||[]),n={};return s.forEach(function(e){n[e.id]=!0}),(g.settings.custom_items||[]).forEach(function(e){if(e&&e.id){var r=u(e);if(n[r]){for(var a=0;an&&(g.carouselPage=n))}}g.activeRoleSlugs=r.filter(function(e){return"administrator"!==e||a}),g.activeRoleSlugs.length||(g.activeRoleSlugs=["subscriber"])}function J(){var s=h("#members-am-role-chips").empty();l().forEach(function(e){if("administrator"!==e.slug||g.settings._meta.admin_editable){var r=-1!==g.activeRoleSlugs.indexOf(e.slug),a=h(' ').text(e.label).attr("data-role",e.slug).toggleClass("is-active",r);s.append(a)}})}function L(t,i,e,o,m){(function(e,r,a,s,n){n=n||0;var t=r.id,i=M(e,t),o=!C(e,r.cap),m=_(e).overrides[t]||{},d=m.label||r.title||t,l=h('
').attr("data-id",t).attr("data-menu-parent",a||"").toggleClass("is-hidden",i).toggleClass("is-no-cap",o).toggleClass("is-selected",g.selectedId===t).toggleClass("is-sub",0 ');if(0===n){var u=m.icon||r.icon,p=P(u,m.icon_type||r.icon_type);if("fontawesome"===p&&u)c.append(h(' '));else if("svg"!==p&&"image"!==p&&"custom"!==p||!u){var f=u&&0===u.indexOf("dashicons-")?u:"dashicons-admin-generic";c.append(h(' '))}else c.append(h(" ").attr("src",u).css({width:"20px",height:"20px",display:"inline-block",verticalAlign:"middle",objectFit:"contain",filter:"none"}))}r.custom&&c.append(h('custom '));m.label&&c.append(h('edit '));if(c.append(h(' ').text(d)),m.badge){var b=m.badge_bg||"#d63638";c.append(h(' ').text(m.badge).css({backgroundColor:b,color:"#fff",fontSize:"9px",padding:"1px 5px",borderRadius:"2px",marginLeft:"4px",whiteSpace:"nowrap"}))}o&&c.append(h(' Roles.\">🔒 no access "));l.append(c),m.color_bg&&l.css("background-color",m.color_bg);m.color_text&&l.find(".members-am-item-label").css("color",m.color_text);m.color_icon&&(l.find(".dashicons").css("color",m.color_icon),l.find(".members-am-fa-icon i").css("color",m.color_icon),l.find("img").css("filter","none"));var v=h('
');v.append(h(' ').text("◉"),h(' ').text("↑"),h(' ').text("↓")),l.append(v),s.append(l)})(t,i,e,o,m=m||0),i.children&&i.children.length&&k(t,i.id).forEach(function(e){var r,a,s,n=(r=t,a=i.id,b(I(a,s=e))||(-1===s.indexOf("::")&&(_(r).overrides[s]||{}).parent===a?b(s):null));n&&"__promote__"!==(_(t).overrides[n.id]||{}).parent&&L(t,n,i.id,o,m+1)})}function F(a,s,e,n,t,i){i=i||0,t.append(function(r,e,a,s,n){n=n||0;var t=s.overrides&&s.overrides[r.id]||{},i=t.label||r.title,o=function(e,r){var a=x(e);if(-1!==a.hidden.indexOf(r))return!0;var s=y(r,e);return!(!s||-1===a.hidden.indexOf(s))}(a,r.id),m=!function(e){if(!e||"read"===e)return 1;for(var r=g.previewUserRoles||[],a=0;a").addClass(l).attr("data-id",r.id).attr("data-menu-parent",e||""),u=h('
');if(0===n){var p=t.icon||r.icon,f=P(p,t.icon_type||r.icon_type);"fontawesome"===f&&p?u.append(h(' ')):"svg"!==f&&"image"!==f&&"custom"!==f||!p?p&&0===p.indexOf("dashicons-")?u.append(h(' ')):u.append(h(' ')):u.append(h(" ").attr("src",p).css({width:"20px",height:"20px",display:"inline-block",verticalAlign:"middle",objectFit:"contain",filter:"none"}))}r.custom&&u.append(h('custom '));t.label&&u.append(h('edit '));if(u.append(h(' ').text(i)),t.badge){var b=t.badge_bg||"#d63638";u.append(h(' ').text(t.badge).css({backgroundColor:b,color:"#fff",fontSize:"9px",padding:"1px 5px",borderRadius:"2px",marginLeft:"4px",whiteSpace:"nowrap"}))}m&&u.append(h('🔒 no access "));c.append(u),t.color_bg&&c.css("background-color",t.color_bg);t.color_text&&c.find(".members-am-item-label").css("color",t.color_text);t.color_icon&&(c.find(".dashicons").css("color",t.color_icon),c.find(".members-am-fa-icon i").css("color",t.color_icon));var v=h('
');return v.append(h(' ').text(o?"◯":"◉"),h(' ').text("↑"),h(' ').text("↓")),c.append(v),c.on("click",function(e){h(e.target).closest("button").length||(g.selectedId=r.id,re())}),c}(s,e,a,n,i)),s.children&&s.children.length&&function(e,r){var a=A(r),s=x(e);g.tree.forEach(function(e){e&&e.id&&-1===e.id.indexOf("::")&&(s.overrides&&s.overrides[e.id]||{}).parent===r&&-1===a.indexOf(e.id)&&a.push(e.id)});var n=s.submenu_order&&s.submenu_order[r];if(!n||!n.length)return a.slice();var t=n.filter(function(e){return-1!==a.indexOf(e)});return a.forEach(function(e){-1===t.indexOf(e)&&t.push(e)}),t}(a,s.id).forEach(function(e){var r=function(e,r,a){var s=b(I(r,a));if(s)return s;if(-1===a.indexOf("::")){var n=x(e);if((n.overrides&&n.overrides[a]||{}).parent===r)return b(a)}return null}(a,s.id,e);r&&"__promote__"!==(n.overrides&&n.overrides[r.id]||{}).parent&&F(a,r,s.id,n,t,i+1)})}function j(e,r){var n=(r||"").trim().toLowerCase(),a=e.children(".members-am-item");if(!n)return a.removeClass("members-am-filter-hidden"),void e.children(".members-am-sep").removeClass("members-am-filter-hidden");var i={};a.each(function(){var e=h(this),r=e.attr("data-id"),a=(e.find(".members-am-item-label").first().text()||"").toLowerCase(),s=(r||"").toLowerCase();i[r]=-1!==a.indexOf(n)||-1!==s.indexOf(n)});var o={};a.each(function(){var e=h(this).attr("data-id"),r=h(this).attr("data-menu-parent")||"";o[r]||(o[r]=[]),o[r].push(e)});var m={};function d(e){var r,a=i[e],s=o[e]||[],n=!1;for(r=0;r '),o=h(' ').attr("placeholder",n).attr("aria-label",t).val(s);i.append(o),e.find(".members-am-sidebar-head").first().after(i),o.on("input",function(){g.columnFilters[a]=h(this).val(),j(r,h(this).val())}),j(r,s)}function D(e){return-1!==e.indexOf("::")?e.split("::").pop():e}function W(){h.fn.sortable&&h("#members-am-columns .members-am-sidebar-list").each(function(){var e=h(this);e.data("ui-sortable")&&e.sortable("destroy");var r=e.closest(".members-am-column"),a=r.data("role"),s=r.data("user");e.sortable({axis:"y",distance:6,items:"> .members-am-item, > .members-am-sep",cancel:".members-am-item-actions button",placeholder:"members-am-sort-placeholder",forcePlaceholderSize:!0,tolerance:"pointer",update:function(){s?function(e,r){var n=[],t={};e.children().each(function(){var e=h(this);if(e.hasClass("members-am-sep")){var r=e.attr("data-sep-id");r&&n.push(r)}else if(e.hasClass("members-am-item")){var a=e.attr("data-id");if(a){var s=e.attr("data-menu-parent");void 0===s||""===s?n.push(a):(t[s]||(t[s]=[]),t[s].push(D(a)))}}});var a=x(r);a.order=n,a.submenu_order=t}(e,s):a&&function(e,r){var n=[],t={};e.children().each(function(){var e=h(this);if(e.hasClass("members-am-sep")){var r=e.attr("data-sep-id");r&&n.push(r)}else if(e.hasClass("members-am-item")){var a=e.attr("data-id");if(a){var s=e.attr("data-menu-parent");void 0===s||""===s?n.push(a):(t[s]||(t[s]=[]),t[s].push(D(a)))}}});var a=_(r);a.order=n,a.submenu_order=t}(e,a),q()}})})}function Q(){var a=h("#members-am-columns"),s={};a.find(".members-am-column").each(function(){var e=h(this).data("role");if(e){var r=h(this).find(".members-am-sidebar-list");r.length&&(s[e]=r.scrollTop())}}),a.empty();var e=g.carouselPage*g.columnsPerPage;if(g.activeRoleSlugs.slice(e,e+g.columnsPerPage).forEach(function(e){var r=h('
');!function(a,e){e.empty();var r=h(''),s=(l().filter(function(e){return e.slug===a})[0]||{}).label||a;r.append(h('').text(s)),r.append(h(' ').append(h(' ').text("◀"),h(' ').text("▶"))),e.append(r);var n=h('');S(a).forEach(function(e){if(0!==e.indexOf("sep-")){var r=b(e);r&&L(a,r,null,n,0)}else n.append(h('
').attr("data-sep-id",e).text("—"))}),e.append(n),z(e,n,a)}(e,r),a.append(r),s[e]&&r.find(".members-am-sidebar-list").scrollTop(s[e])}),g.previewUserId){var n=g.previewUserId,r=h('
'),t=h('');t.append(h(" ").text(g.previewUserLabel||"User #"+n)),t.append(h('× ').on("click",function(){g.previewUserId=null,g.previewUserLabel=null,g.previewUserRoles=[],re()})),r.append(t);var i=h(''),o=x(n);c(n).forEach(function(e){if(0!==e.indexOf("sep-")){var r=b(e);r&&F(n,r,null,o,i,0)}else i.append(h('
').attr("data-sep-id",e).text("——"))}),r.append(i),z(r,i,"u:"+n),a.append(r)}if(g.syncScroll){var m=a.find(".members-am-sidebar-list"),d=!1;m.on("scroll",function(){if(!d){d=!0;var e=h(this).scrollTop();m.not(this).scrollTop(e),d=!1}})}!function(){var e=Math.max(1,Math.ceil(g.activeRoleSlugs.length/g.columnsPerPage)),r=(Math.min(g.carouselPage+1,e),g.carouselPage*g.columnsPerPage+1),a=Math.min((g.carouselPage+1)*g.columnsPerPage,g.activeRoleSlugs.length);h("#members-am-carousel-status").text(r+"–"+a+" "+membersAdminMenus.i18n.of+" "+g.activeRoleSlugs.length);for(var s=h("#members-am-carousel-dots").empty(),n=0;n ').toggleClass("is-active",n===g.carouselPage))}(),W()}function q(){if(g.selectedId){h("#members-am-edit-panel").removeAttr("hidden");var e=b(g.selectedId),r=U()||{};h("#members-am-edit-title").text(e?e.title:g.selectedId),h("#members-am-edit-label").val(r.label||e&&e.title||"");var a=p(g.selectedId);h("#members-am-edit-url-wrap").toggle(a),h("#members-am-edit-url").attr("placeholder","Override URL (leave empty for default)").val(a&&(r.url||e&&e.url)||"").data("default-url",e&&e.url||""),h("#members-am-icon-type").val(r.icon_type||"dashicon"),h("#members-am-icon-value").val(r.icon||e&&e.icon||"");var s=r.icon||e&&e.icon||"",n=P(s,r.icon_type||e&&e.icon_type||"");"image"!==n&&"custom"!==n&&"svg"!==n||!s?h("#members-am-icon-preview").hide():h("#members-am-icon-preview").show().attr("src",s),h("#members-am-color-bg").val(r.color_bg||""),h("#members-am-color-text").val(r.color_text||""),h("#members-am-color-icon").val(r.color_icon||""),h("#members-am-badge-text").val(r.badge||""),h("#members-am-badge-bg").val(r.badge_bg||""),h("#members-am-item-cap").attr("placeholder",e&&e.cap?e.cap+" (default)":"").val(g.settings.capabilities[g.selectedId]||"");var t=e&&e.custom;h("#members-am-remove-custom").toggle(!!t),h("#members-am-visibility-toggles").empty();var i=e&&e.cap||"read";l().forEach(function(e){if("administrator"!==e.slug||g.settings._meta.admin_editable){var r=M(e.slug,g.selectedId),a=C(e.slug,i),s=h(' ').attr("data-role",e.slug).prop("checked",!r&&a);a||s.prop("disabled",!0);var n=h(' ').append(s,h(" ").text(e.label));a||(n.append(h(" ").text(" — no capability").css({color:"#999",fontStyle:"italic",marginLeft:"4px"})),n.css("opacity","0.5")),h("#members-am-visibility-toggles").append(n)}}),h(".members-am-color").each(function(){h(this).data("wpWpColorPicker")&&h(this).wpColorPicker("destroy")}),h(".members-am-color").wpColorPicker({change:function(e,r){setTimeout(function(){B()},20)},clear:function(){setTimeout(function(){B()},20)}}),G(),function(){var e=h(".members-am-demote-wrap"),a=h("#members-am-demote-parent"),r=h("#members-am-demote");if(!g.selectedId)return e.attr("hidden",!0);if(v(g.selectedId))return e.attr("hidden",!0);var s=R()[0]||g.activeRoleSlugs[0];if(s&&O(s,g.selectedId))return e.attr("hidden",!0);e.removeAttr("hidden");var n=g.selectedId,t=membersAdminMenus.i18n&&membersAdminMenus.i18n.selectParentMenu||"";a.empty().append(h(" ").val("").text(t));var i=0;g.tree.forEach(function(e){if(e&&e.id&&e.id!==n){var r=e.title&&String(e.title).trim()?e.title:e.id;a.append(h(" ").val(e.id).text(r)),i++}});var o=0 ');"dashicons"===a?r.append(h(' ')):r.append(h(' ')),r.on("click",function(){h("#members-am-icon-value").val(e),h("#members-am-icon-type").val("dashicons"===a?"dashicon":"fontawesome"),B()}),n.append(r)}})}function a(e,r){var a=g.activeRoleSlugs.indexOf(e);if(-1!==a){var s=a+r;if(!(s<0||s>=g.activeRoleSlugs.length)){var n=g.activeRoleSlugs[a];g.activeRoleSlugs[a]=g.activeRoleSlugs[s],g.activeRoleSlugs[s]=n,o(),re()}}}function H(e,r,a){var s,n,t,i=_(e).overrides[r]||{},o=null;if("__promote__"===i.parent?o=null:-1!==r.indexOf("::")?o=v(r):i.parent&&"__promote__"!==i.parent&&(o=i.parent),o){var m=_(e).submenu_order;m[o]||(m[o]=(s=e,t=A(n=o),g.tree.forEach(function(e){e&&e.id&&-1===e.id.indexOf("::")&&(_(s).overrides[e.id]||{}).parent===n&&-1===t.indexOf(e.id)&&t.push(e.id)}),t));var d=m[o],l=-1!==r.indexOf("::")?r.split("::").pop():r;if(-1===(u=d.indexOf(l)))return;if((p=u+a)<0||p>=d.length)return;var c=d[u];d[u]=d[p],d[p]=c}else{_(e).order&&_(e).order.length||(_(e).order=w());var u,p,f=_(e).order;if(-1===(u=f.indexOf(r)))return;if((p=u+a)<0||p>=f.length)return;var b=f[u];f[u]=f[p],f[p]=b}re()}function K(){var e=R();if(e.length){var s="sep-"+Date.now();e.forEach(function(e){_(e).order&&_(e).order.length||(_(e).order=w());var r=_(e).order,a=g.selectedId?r.indexOf(g.selectedId):r.length-1;a<0&&(a=r.length),r.splice(a+1,0,s)}),re()}}function V(e){var r=h("#members-am-toolbar-loading");r.removeAttr("hidden"),r.find(".spinner").addClass("is-active"),r.find(".members-am-loading-text").text(e||""),h("#members-am-save, #members-am-reset, #members-am-import, #members-am-copy-apply").prop("disabled",!0)}function X(){var e=h("#members-am-toolbar-loading");e.attr("hidden",!0),e.find(".spinner").removeClass("is-active"),e.find(".members-am-loading-text").text(""),h("#members-am-save, #members-am-reset, #members-am-import, #members-am-copy-apply").prop("disabled",!1)}function Y(e){V(e||membersAdminMenus.i18n&&membersAdminMenus.i18n.saving||"Saving…");var r=!1,n=membersAdminMenus.i18n&&membersAdminMenus.i18n.networkError||"Could not save settings. Check your connection and try again.";h.ajax({url:membersAdminMenus.ajaxUrl,type:"POST",dataType:"json",timeout:6e4,data:{action:"members_admin_menus_save",nonce:membersAdminMenus.nonce,settings:JSON.stringify(g.settings)}}).done(function(e){if(e&&void 0!==e.success)return e.success?(g.allowUnload=!0,alert(membersAdminMenus.i18n.saved),r=!0,void location.reload()):void alert(e.data&&e.data.message?e.data.message:"Error");alert(n)}).fail(function(e,r){if("abort"!==r){var a=n;if(e&&e.responseJSON&&void 0!==e.responseJSON.data){var s=e.responseJSON.data;"string"==typeof s&&s?a=s:s&&"string"==typeof s.message&&s.message&&(a=s.message)}alert(a)}}).always(function(){r||X()})}function Z(e,r){if(confirm("role"===e&&r?"Reset all settings for this role? This cannot be undone.":"Reset ALL menu settings for every role? This cannot be undone.")){V(membersAdminMenus.i18n&&membersAdminMenus.i18n.resetting||"Resetting…");var a=!1;h.post(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_reset",nonce:membersAdminMenus.nonce,scope:e||"all",role:r||""}).done(function(e){if(e.success)return g.allowUnload=!0,a=!0,void location.reload();alert(e.data&&e.data.message?e.data.message:"Reset failed.")}).fail(function(){alert(membersAdminMenus.i18n.networkError||"Could not reset settings. Check your connection and try again.")}).always(function(){a||X()})}}function $(e){h.getJSON(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_user_search",nonce:membersAdminMenus.nonce,term:e},function(e){e.success&&e.data&&e.data.length?function(e){h(".members-am-user-suggestions").remove();var r=h("#members-am-user-search").parent();r.css("position","relative");var a=h('
');e.forEach(function(e){a.append(h('
').text(e.label).data("userId",e.id).on("click",function(){!function(e,r,a){g.previewUserId=e,g.previewUserLabel=r||"User #"+e,g.previewUserRoles=a||[],m(),g.settings.users[e]||(g.settings.users[e]={});re()}(e.id,e.label,e.roles),h(".members-am-user-suggestions").remove(),h("#members-am-user-search").val("")}))}),r.append(a),setTimeout(function(){h(document).one("click",function(){h(".members-am-user-suggestions").remove()})},0)}(e.data):h(".members-am-user-suggestions").remove()})}function ee(){var r;h(document).on("click","#members-am-role-chips .members-am-chip",function(){var e=h(this).data("role"),r=g.activeRoleSlugs.indexOf(e);-1===r?g.activeRoleSlugs.push(e):1 ');if(t.append(h('
').text("Reset Settings")),s&&n){var i=h(' ');i.append(h(' ')),i.append(h(' ').append(h(" ").text("Reset "+n),h(" ").text("Clear all menu settings for this role only"))),i.on("click",function(){h(".members-am-reset-dropdown").remove(),Z("role",s)}),t.append(i)}var o=h(' ');o.append(h(' ')),o.append(h(' ').append(h(" ").text("Reset all roles"),h(" ").text("Clear all menu settings for every role"))),o.on("click",function(){h(".members-am-reset-dropdown").remove(),Z("all")}),t.append(o),r.parent().css("position","relative"),t.insertAfter(r),h(document).one("click",function(){h(".members-am-reset-dropdown").remove()})}),h("#members-am-export").on("click",function(e){e.preventDefault(),window.location.href=membersAdminMenus.exportUrl}),h("#members-am-import").on("click",function(){h("#members-am-import-file").trigger("click")}),h("#members-am-import-file").on("change",function(){var e=this.files&&this.files[0];e&&function(e){V(membersAdminMenus.i18n&&membersAdminMenus.i18n.importing||"Importing…");var a=new FileReader;a.onerror=function(){X(),alert(membersAdminMenus.i18n&&membersAdminMenus.i18n.networkError||"Could not read the file.")},a.onload=function(){try{var e=JSON.parse(a.result),r=!1;h.post(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_import",nonce:membersAdminMenus.nonce,settings:JSON.stringify(e)}).done(function(e){if(e.success)return g.allowUnload=!0,r=!0,void location.reload();alert(e.data&&e.data.message?e.data.message:"Error")}).fail(function(){alert(membersAdminMenus.i18n.networkError||"Could not import settings. Check your connection and try again.")}).always(function(){r||X()})}catch(e){X(),alert("Invalid JSON")}},a.readAsText(e)}(e)}),h("#members-am-copy-apply").on("click",function(){var a=h("#members-am-copy-from").val(),r=h("#members-am-copy-to").val();if(a&&r)if(a!==r){var s="",n="";if(l().forEach(function(e){e.slug===a&&(s=e.label),e.slug===r&&(n=e.label)}),confirm('Copy menu settings from "'+s+'" to "'+n+'"?\nThis will overwrite "'+n+"\" menu configuration.\n\nNote: This copies menu order, hidden items, labels, icons, and colors.\nIt does NOT change the role's capabilities (items marked with a lock icon).")){var e=_(a),t={hidden:e.hidden?e.hidden.slice():[],order:[],submenu_order:{},overrides:{}},i=S(a);t.order=i.slice(),g.tree.forEach(function(e){if(e.children&&e.children.length){var r=k(a,e.id);r&&r.length&&(t.submenu_order[e.id]=r.slice())}}),e.overrides&&"object"==typeof e.overrides&&(t.overrides=JSON.parse(JSON.stringify(e.overrides))),g.settings.roles[r]=t,-1===g.activeRoleSlugs.indexOf(r)&&(g.activeRoleSlugs.push(r),o(),J()),re(),Y(membersAdminMenus.i18n&&membersAdminMenus.i18n.copying||"Copying…")}}else alert("Source and target roles must be different.")}),h("#members-am-admin-editable").on("change",function(){var e=!0;h(this).is(":checked")&&(e=window.confirm(membersAdminMenus.i18n.adminEditableWarn)),e?(g.settings._meta.admin_editable=h(this).is(":checked"),N(),J(),o(),re()):h(this).prop("checked",!1)}),h("#members-am-sync-scroll").prop("checked",!1!==g.syncScroll),h("#members-am-sync-scroll").on("change",function(){g.syncScroll=h(this).is(":checked");try{localStorage.setItem("members_am_sync_scroll",g.syncScroll?"1":"0")}catch(e){}Q()}),h("#members-am-add-item").on("click",function(){var e="c"+Date.now();g.settings.custom_items.push({id:e,label:"Custom link",url:window.location.origin+"/wp-admin/",icon_type:"dashicon",icon:"dashicons-admin-generic",parent:"",position:99,cap:"read"}),g.tree=f(),g.selectedId=u({id:e}),re(),q()}),h("#members-am-remove-custom").on("click",function(){var r=b(g.selectedId);r&&r.customId&&(g.settings.custom_items=(g.settings.custom_items||[]).filter(function(e){return e.id!==r.customId}),g.selectedId=null,g.tree=f(),re(),h("#members-am-edit-panel").attr("hidden",!0))}),h("#members-am-edit-close").on("click",function(){g.selectedId=null,h("#members-am-edit-panel").attr("hidden",!0),re()}),h("#members-am-edit-target-role").on("change",q),h("#members-am-edit-label, #members-am-edit-url, #members-am-icon-value, #members-am-badge-text").on("input",function(){B()}),h("#members-am-item-cap").on("input",function(){B()}),h(".members-am-icon-tabs .button").on("click",function(){h(".members-am-icon-tabs .button").removeClass("is-active"),h(this).addClass("is-active"),g.iconTab="fontawesome"===h(this).data("tab")?"fontawesome":"upload"===h(this).data("tab")?"upload":"dashicons",G()}),h("#members-am-icon-search").on("input",G),h("#members-am-media-upload").on("click",function(e){e.preventDefault(),g.mediaFrame||(g.mediaFrame=wp.media({title:"Choose menu icon",button:{text:"Use as icon"},multiple:!1,library:{type:"image"}}),g.mediaFrame.on("select",function(){var e=g.mediaFrame.state().get("selection").first().toJSON(),r=e.url||"";e.sizes&&(e.sizes.thumbnail?r=e.sizes.thumbnail.url:e.sizes.medium&&(r=e.sizes.medium.url)),h("#members-am-icon-type").val("custom"),h("#members-am-icon-value").val(r),B()})),g.mediaFrame.open()}),h(document).on("change",".members-am-vis-cb",function(){var e=h(this).data("role");if(h(this).is(":checked")){var r=_(e).hidden,a=r.indexOf(g.selectedId);-1!==a&&r.splice(a,1)}else-1===_(e).hidden.indexOf(g.selectedId)&&_(e).hidden.push(g.selectedId);re()}),h("#members-am-add-sep").on("click",K),h("#members-am-promote").on("click",function(){if(g.selectedId){var n=g.selectedId,e=U()||{};if(-1===n.indexOf("::")&&e.parent&&"__promote__"!==e.parent){var t=e.parent,r=E();if(r){var a=x(r);if(a.overrides[n]&&delete a.overrides[n].parent,a.submenu_order&&a.submenu_order[t]){var s=a.submenu_order[t].indexOf(n);-1!==s&&a.submenu_order[t].splice(s,1)}if(a.order.length||(a.order=w()),-1===a.order.indexOf(n)){var i=a.order.indexOf(t);-1!==i?a.order.splice(i+1,0,n):a.order.push(n)}}else R().forEach(function(e){var r=_(e);if(r.overrides[n]&&delete r.overrides[n].parent,r.submenu_order&&r.submenu_order[t]){var a=r.submenu_order[t].indexOf(n);-1!==a&&r.submenu_order[t].splice(a,1)}if(r.order&&r.order.length||(r.order=w()),-1===r.order.indexOf(n)){var s=r.order.indexOf(t);-1!==s?r.order.splice(s+1,0,n):r.order.push(n)}});return B(),void q()}T("parent","__promote__");var o=v(n);R().forEach(function(e){var r=_(e);if(r.order&&r.order.length||(r.order=w()),-1===r.order.indexOf(n))if(o){var a=r.order.indexOf(o);-1!==a?r.order.splice(a+1,0,n):r.order.push(n)}else r.order.push(n)}),B(),q()}}),h("#members-am-demote").on("click",function(){var e=h("#members-am-demote-parent").val();e?(T("parent",e),B(),q()):window.alert(membersAdminMenus.i18n&&membersAdminMenus.i18n.selectParentFirst||"Please choose a parent menu from the list.")}),h("#members-am-user-search").on("input",function(){var e=h(this).val();clearTimeout(r),r=setTimeout(function(){1 ").val("__all__").text("All roles")),g.activeRoleSlugs.forEach(function(r){var e=(l().filter(function(e){return e.slug===r})[0]||{}).label||r;a.append(h(" ").val(r).text(e))}),g.previewUserId&&a.append(h(" ").val("__user__"+g.previewUserId).text(g.previewUserLabel||"User #"+g.previewUserId)),g.selectedId&&q()}h(function(){var r,a,e;m(),g.tree=f(),N(),h("#members-am-admin-editable").prop("checked",!!g.settings._meta.admin_editable),r=h("#members-am-copy-from").empty(),a=h("#members-am-copy-to").empty(),(e=l()).forEach(function(e){r.append(h(" ").val(e.slug).text(e.label)),a.append(h(" ").val(e.slug).text(e.label))}),1
Date: Wed, 15 Apr 2026 09:46:32 -0500
Subject: [PATCH 24/73] feat(admin): implement bulk actions and improved
visibility controls in admin menus
---
.../app/functions-admin.php | 25 +-
css/admin.css | 118 +++-
css/admin.min.css | 2 +-
js/admin-menus.js | 597 +++++++++++++++++-
js/admin-menus.min.js | 2 +-
5 files changed, 735 insertions(+), 9 deletions(-)
diff --git a/addons/members-admin-menus/app/functions-admin.php b/addons/members-admin-menus/app/functions-admin.php
index f0f9be7..4a52f32 100644
--- a/addons/members-admin-menus/app/functions-admin.php
+++ b/addons/members-admin-menus/app/functions-admin.php
@@ -203,8 +203,29 @@ function enqueue_admin_menus_assets() {
'copying' => __( 'Copying…', 'members' ),
'resetting' => __( 'Resetting…', 'members' ),
'importing' => __( 'Importing…', 'members' ),
- 'filterItems' => __( 'Filter items…', 'members' ),
- 'filterItemsLabel' => __( 'Filter menu items in this column', 'members' ),
+ 'filterItems' => __( 'Filter items…', 'members' ),
+ 'filterItemsLabel' => __( 'Filter menu items in this column', 'members' ),
+ 'bulkVisibilityLabel' => __( 'Menu visibility for this column', 'members' ),
+ 'bulkActionsPlaceholder' => __( 'Choose visibility…', 'members' ),
+ 'bulkGroupWholeColumn' => __( 'Whole column', 'members' ),
+ 'bulkGroupCheckedRows' => __( 'Checked rows', 'members' ),
+ 'bulkShowAllItems' => __( 'Show every menu item', 'members' ),
+ 'bulkHideAllItems' => __( 'Hide every menu item', 'members' ),
+ 'bulkKeepOnlyCheckedVisible' => __( 'Keep only checked visible', 'members' ),
+ 'bulkHideCheckedItems' => __( 'Hide checked items', 'members' ),
+ 'bulkShowCheckedItems' => __( 'Show checked items', 'members' ),
+ 'bulkSelectVisible' => __( 'Select visible', 'members' ),
+ 'bulkClearSelection' => __( 'Clear selection', 'members' ),
+ 'bulkCheckboxAria' => __( 'Include in bulk actions', 'members' ),
+ 'bulkSelectCheckedFirst' => __( 'Check one or more menu items first.', 'members' ),
+ 'bulkSelectItemFirst' => __( 'Select a menu item in the list first.', 'members' ),
+ 'bulkConfirmHideAll' => __( 'Hide every menu item in this column? You can use “Show every menu item” to undo before saving.', 'members' ),
+ 'bulkConfirmKeepOnlyChecked' => __( 'Hide all items except checked items and their parent menus?', 'members' ),
+ 'bulkConfirmHideChecked' => __( 'Hide the checked items (and their submenus where applicable)?', 'members' ),
+ 'collapseSubmenus' => __( 'Collapse submenu items', 'members' ),
+ 'expandSubmenus' => __( 'Expand submenu items', 'members' ),
+ 'collapseAllMenus' => __( 'Collapse submenus', 'members' ),
+ 'expandAllMenus' => __( 'Expand submenus', 'members' ),
),
)
);
diff --git a/css/admin.css b/css/admin.css
index fe7d6a6..5034ce2 100644
--- a/css/admin.css
+++ b/css/admin.css
@@ -1195,8 +1195,120 @@
box-shadow: 0 0 0 1px #2271b1;
}
+.members-am-col-bulk {
+ padding: 0 8px 8px;
+ border-bottom: 1px solid #3c434a;
+ flex-shrink: 0;
+}
+
+.members-am-col-bulk-toolbar,
+.members-am-col-collapse-toolbar {
+ display: flex;
+ flex-wrap: wrap;
+ gap: 6px;
+ margin-bottom: 6px;
+ align-items: center;
+}
+
+.members-am-col-bulk-toolbar .button.button-small,
+.members-am-col-collapse-toolbar .button.button-small {
+ font-size: 11px;
+ min-height: 26px;
+ line-height: 24px;
+ padding: 0 8px;
+ background: #2c3338;
+ border-color: #50575e;
+ color: #f0f0f1;
+}
+
+.members-am-col-bulk-toolbar .button.button-small:hover,
+.members-am-col-collapse-toolbar .button.button-small:hover {
+ background: #3c434a;
+ border-color: #8c8f94;
+ color: #fff;
+}
+
+.members-am-item-lead {
+ flex-shrink: 0;
+ display: flex;
+ align-items: flex-start;
+ justify-content: center;
+ width: 22px;
+ padding: 2px 0 0;
+}
+
+.members-am-collapse-spacer {
+ display: block;
+ width: 20px;
+ height: 20px;
+ flex-shrink: 0;
+}
+
+.members-am-collapse-toggle {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ width: 22px;
+ height: 22px;
+ margin: 0;
+ padding: 0;
+ border: none;
+ background: transparent;
+ color: #c3c4c7;
+ border-radius: 2px;
+ cursor: pointer;
+ flex-shrink: 0;
+}
+
+.members-am-collapse-toggle:hover,
+.members-am-collapse-toggle:focus {
+ color: #f0f0f1;
+ background: rgba(255, 255, 255, 0.08);
+ outline: none;
+}
+
+.members-am-collapse-toggle .dashicons {
+ font-size: 18px;
+ width: 18px;
+ height: 18px;
+}
+
+.members-am-item-cb-wrap {
+ flex-shrink: 0;
+ display: flex;
+ align-items: flex-start;
+ padding: 2px 4px 0 0;
+}
+
+.members-am-item-cb {
+ margin: 0;
+ width: 16px;
+ height: 16px;
+ flex-shrink: 0;
+}
+
+.members-am-bulk-select {
+ width: 100%;
+ max-width: 100%;
+ box-sizing: border-box;
+ font-size: 12px;
+ line-height: 1.4;
+ padding: 4px 8px;
+ border-radius: 2px;
+ border: 1px solid #50575e;
+ background: #1d2327;
+ color: #f0f0f1;
+}
+
+.members-am-bulk-select:focus {
+ border-color: #2271b1;
+ outline: 1px solid transparent;
+ box-shadow: 0 0 0 1px #2271b1;
+}
+
.members-am-item.members-am-filter-hidden,
-.members-am-sep.members-am-filter-hidden {
+.members-am-sep.members-am-filter-hidden,
+.members-am-item.members-am-collapse-hidden {
display: none !important;
}
@@ -1219,7 +1331,8 @@
display: flex;
align-items: center;
justify-content: space-between;
- padding: 6px 10px 6px 8px;
+ gap: 4px;
+ padding: 6px 10px 6px 6px;
cursor: pointer;
border-left: 3px solid transparent;
font-size: 13px;
@@ -1270,6 +1383,7 @@
}
.members-am-item-main {
+ flex: 1;
display: flex;
align-items: center;
gap: 8px;
diff --git a/css/admin.min.css b/css/admin.min.css
index e944ae3..c070d6b 100644
--- a/css/admin.min.css
+++ b/css/admin.min.css
@@ -1 +1 @@
-#members-cp h2.hndle,#members-cp-side h2.hndle{border-bottom:none !important;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}#members-cp h2.hndle:before,#members-cp-side h2.hndle:before{content:url("data:image/svg+xml,%3Csvg width='15px' aria-hidden='true' focusable='false' data-prefix='fas' data-icon='users-cog' class='svg-inline--fa fa-users-cog fa-w-20' role='img' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 640 512'%3E%3Cpath fill='currentColor' d='M610.5 341.3c2.6-14.1 2.6-28.5 0-42.6l25.8-14.9c3-1.7 4.3-5.2 3.3-8.5-6.7-21.6-18.2-41.2-33.2-57.4-2.3-2.5-6-3.1-9-1.4l-25.8 14.9c-10.9-9.3-23.4-16.5-36.9-21.3v-29.8c0-3.4-2.4-6.4-5.7-7.1-22.3-5-45-4.8-66.2 0-3.3.7-5.7 3.7-5.7 7.1v29.8c-13.5 4.8-26 12-36.9 21.3l-25.8-14.9c-2.9-1.7-6.7-1.1-9 1.4-15 16.2-26.5 35.8-33.2 57.4-1 3.3.4 6.8 3.3 8.5l25.8 14.9c-2.6 14.1-2.6 28.5 0 42.6l-25.8 14.9c-3 1.7-4.3 5.2-3.3 8.5 6.7 21.6 18.2 41.1 33.2 57.4 2.3 2.5 6 3.1 9 1.4l25.8-14.9c10.9 9.3 23.4 16.5 36.9 21.3v29.8c0 3.4 2.4 6.4 5.7 7.1 22.3 5 45 4.8 66.2 0 3.3-.7 5.7-3.7 5.7-7.1v-29.8c13.5-4.8 26-12 36.9-21.3l25.8 14.9c2.9 1.7 6.7 1.1 9-1.4 15-16.2 26.5-35.8 33.2-57.4 1-3.3-.4-6.8-3.3-8.5l-25.8-14.9zM496 368.5c-26.8 0-48.5-21.8-48.5-48.5s21.8-48.5 48.5-48.5 48.5 21.8 48.5 48.5-21.7 48.5-48.5 48.5zM96 224c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm224 32c1.9 0 3.7-.5 5.6-.6 8.3-21.7 20.5-42.1 36.3-59.2 7.4-8 17.9-12.6 28.9-12.6 6.9 0 13.7 1.8 19.6 5.3l7.9 4.6c.8-.5 1.6-.9 2.4-1.4 7-14.6 11.2-30.8 11.2-48 0-61.9-50.1-112-112-112S208 82.1 208 144c0 61.9 50.1 112 112 112zm105.2 194.5c-2.3-1.2-4.6-2.6-6.8-3.9-8.2 4.8-15.3 9.8-27.5 9.8-10.9 0-21.4-4.6-28.9-12.6-18.3-19.8-32.3-43.9-40.2-69.6-10.7-34.5 24.9-49.7 25.8-50.3-.1-2.6-.1-5.2 0-7.8l-7.9-4.6c-3.8-2.2-7-5-9.8-8.1-3.3.2-6.5.6-9.8.6-24.6 0-47.6-6-68.5-16h-8.3C179.6 288 128 339.6 128 403.2V432c0 26.5 21.5 48 48 48h255.4c-3.7-6-6.2-12.8-6.2-20.3v-9.2zM173.1 274.6C161.5 263.1 145.6 256 128 256H64c-35.3 0-64 28.7-64 64v32c0 17.7 14.3 32 32 32h65.9c6.3-47.4 34.9-87.3 75.2-109.4z'%3E%3C/path%3E%3C/svg%3E");margin-right:5px}#members-cp-side .postbox-header{border-bottom:none !important}#members-cp-side .handle-actions .handle-order-higher,#members-cp-side .handle-actions .handle-order-lower{display:none}#members-cp-side .handle-actions .handlediv{position:absolute;right:5px}.members-upgrade-header{text-align:center;padding:5px}.members-upgrade-header a{color:#f59431}.memberpress-paid-memberships{background-color:#f5f5f5;padding:50px 10px;text-align:center}.memberpress-paid-memberships a{background-color:#0e4598;display:inline-block;padding:10px 20px;border-radius:300px;color:#fff;text-decoration:none;margin-top:20px}#members-cp-side .members-tabs{position:relative}#members-cp-side .members-tab-nav{background-color:transparent;margin-bottom:20px;border-right:none !important}#members-cp-side .members-tab-nav .members-tab-title{width:33.333%;height:50px;border-right:none !important}#members-cp-side .members-tab-nav .members-tab-title a{border:0}#members-cp-side .members-tab-content h3{font-weight:bold;font-size:15px;margin-top:0;color:#000;margin-bottom:10px}#members-cp-side .members-tab-content .memberpress-paid-memberships{text-align:left;padding:20px}#members-cp-side .members-tab-content .memberpress-paid-memberships a{display:block;text-align:center}#members-cp-side .members-tabs .members-tab-nav li a,#members-cp-side .members-tabs .members-tab-nav li[aria-selected="false"] a i{color:#555}#members-cp-side .members-tabs .members-tab-nav li a svg,#members-cp-side .members-tabs .members-tab-nav li[aria-selected="false"] a svg{fill:#555}#members-cp-side .members-tabs .members-tab-nav li[aria-selected="true"] a{background-color:transparent;border-bottom:2px solid #3582ae}#members-cp-side .members-tabs .members-tab-nav li[aria-selected="true"] a i{color:#3582ae}#members-cp-side .members-tabs .members-tab-nav li[aria-selected="true"] a svg{fill:#3582ae}.members-tab-title svg,.members-tab-title[aria-selected="false"] svg{fill:#0073aa}.members-tab-title[aria-selected="true"] svg{fill:#555}#wpcontent #members-admin-header{margin-left:-20px;padding:0;padding-left:22px;background-color:#f9f9f9;background-repeat:repeat;background-size:1200px 75px;min-height:36px;position:relative}#wpcontent #members-admin-header img.members-logo{height:90px}.members-upgrade-header #close-members-upgrade-header{position:absolute;right:20px;top:3px}.members-upgrade-header #close-members-upgrade-header:hover{cursor:pointer}.memberpress-welcome-panel.welcome-panel{margin-top:0;padding:40px 20px;background:#fff}.memberpress-welcome-panel.welcome-panel:before{background:0}.memberpress-welcome-panel.welcome-panel .about-description{margin:20px 0}.memberpress-welcome-panel.welcome-panel-content{margin:0}.memberpress-welcome-panel.welcome-panel-content .mp-logo-wrap>a{display:block}@media screen and (min-width:870px){.members_page_members-settings .members-short-p{max-width:612px;margin-left:auto;margin-right:auto}.members_page_members-settings .welcome-panel-content{text-align:center}}.members_page_members-settings .welcome-panel .button.button-hero{margin-left:auto;margin-right:auto}.members_page_members-settings .members-svg-wrap{display:inline-block;margin:0 auto 20px}@media screen and (max-width:870px){.members_page_members-settings .welcome-panel{padding:20px}.members_page_members-settings .members-svg-wrap{float:left;margin-right:28px}.admin_page_members-settings.rtl .members-svg-wrap{float:right;margin-right:0;margin-left:28px}}.members_page_members-settings .members-svg-link{display:table-cell;text-align:center;width:128px;height:128px;background:#363b3f;color:#fff;padding:24px 16px 16px;border-radius:50%;-webkit-box-sizing:border-box;box-sizing:border-box;border:4px solid #fff;-webkit-box-shadow:0 0 0 4px #363b3f;box-shadow:0 0 0 4px #363b3f}.members_page_members-settings .members-svg-link svg{max-width:84px;max-height:64px;width:auto;height:auto}.members-addons{display:grid;grid-template-columns:1fr 1fr;grid-row-gap:20px;grid-column-gap:20px}.members-addons .plugin-card{margin:0}.members-addons .plugin-card-top{width:100%}.members-addon{width:100%;position:relative;float:none;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.members-addon .desc{margin-bottom:80px}.addon-activate{text-align:center;border:1px solid #ddd;border-radius:3px;padding:5px 10px 10px;display:inline-block;width:100px;position:absolute;right:20px;bottom:20px}.activate-toggle:hover{cursor:pointer}.activate-toggle svg{max-width:20px;position:relative;top:5px}.activate-toggle svg{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.activate-toggle svg.active{-webkit-transform:rotate(0);transform:rotate(0)}.activate-toggle svg path{fill:#ccc}.activate-toggle svg.active path{fill:#8cbd5a}.activate-toggle.processing{cursor:not-allowed;pointer-events:none;opacity:.5}.activate-toggle .action-label{display:inline-block;width:50px;text-align:left}.mepr_dummy_txns{-webkit-filter:blur(3px);filter:blur(3px);position:absolute;top:0;left:0;width:100%;z-index:5;pointer-events:none}.mepr_dummy_txns::after{background-color:rgba(0,0,0,.2);position:absolute;top:0;left:0;width:100%;height:100%;z-index:6}.mepr-upgrade-table{position:relative}.mepr-upgrade-table .mepr-upgrade{position:relative;top:100px;z-index:10;background:rgba(0,0,0,.2);width:100%;height:100%;max-width:600px;margin:0 auto;-webkit-box-shadow:0 0 30px #ccc;box-shadow:0 0 30px #ccc}.mepr-upgrade-content{background-color:#fff;padding:20px;text-align:center}.mepr-upgrade-content h2{font-size:24px}.mepr-upgrade-content h4{font-size:18px}.mepr-upgrade-content .features{display:grid;grid-template-columns:1fr 1fr;grid-column-gap:30px;grid-row-gap:10px;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;text-align:left;padding:10px}.features li:before{content:"\f147";font-family:dashicons;color:green;font-size:20px;position:relative;top:4px;margin-right:10px}.mepr-upgrade-cta{text-align:center;background-color:#f2f2f2;padding:20px}.mepr-upgrade-cta .mepr-cta-button{display:block;max-width:300px;margin:0 auto 20px;background-color:#fd9c27;color:#fff;padding:15px;font-size:18px;font-weight:bold;text-decoration:none;border-radius:300px}.members-plugin-card.plugin-card:nth-child(even){margin-right:inherit}.members-plugin-card.plugin-card:nth-child(odd){clear:none;margin-left:inherit}.members-plugin-card.plugin-card .plugin-card-top{min-height:0;padding:30px 20px}.members-plugin-card.plugin-card .plugin-icon{top:30px}.members-plugin-card.plugin-card .plugin-card-bottom .column-status{font-weight:bold}.members-plugin-card.plugin-card .plugin-card-bottom .column-status .active{color:#8cbd5a}.members-plugin-card.plugin-card .plugin-card-bottom .column-status .inactive{color:red}.members-plugin-card.plugin-card .plugin-icon{width:64px;height:auto}.plugin-icon-small{width:32px;height:auto}.members-plugin-card.plugin-card .name,.members-plugin-card.plugin-card .desc{margin-right:0;margin-left:84px}.members-addons .plugin-card .name,.members-addons .plugin-card .desc p{margin-right:0}@media screen and (max-width:1100px){.members-addons{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}}@media screen and (max-width:600px){.members_page_members-settings .members-svg-link{width:64px;height:64px}.members_page_members-settings .members-svg-link svg{position:absolute;top:14px;left:15px;max-width:30px;max-height:30px}.members_page_members-settings .plugin-card-members-edd-integration .members-svg-link svg,.members_page_members-settings .plugin-card-members-acf-integration .members-svg-link svg,.members_page_members-settings .plugin-card-members-givewp-integration .members-svg-link svg,.members_page_members-settings .plugin-card-members-meta-box-integration .members-svg-link svg,.members_page_members-settings .plugin-card-members-woocommerce-integration .members-svg-link svg{top:10px;left:8px;max-width:40px;max-height:40px}.members_page_members-settings .plugin-card-members-block-permissions .members-svg-link svg,.members_page_members-settings .plugin-card-members-role-hierarchy .members-svg-link svg{left:14px}.members-addons .plugin-card .desc>p,.members-addons .plugin-card .name{margin-left:84px}}.memberpress-about .welcome-panel-column-container{display:-webkit-box;display:-ms-flexbox;display:flex}.memberpress-about .mp-logo{max-width:256px;margin:50px}.members-about-addons{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-column-gap:20px}.members-about-addons .members-plugin-card{margin:0;width:100%}.members-about-addons .members-plugin-card .name h3 a{text-decoration:none}.members-about-addons .members-plugin-card .plugin-card-bottom{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}@media only screen and (max-width:1099px){.members-about-addons{grid-template-columns:1fr;grid-row-gap:20px}}@media screen and (min-width:1100px) and (max-width:1600px){.members-about-addons .members-plugin-card{float:none;width:auto;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.members-plugin-card.plugin-card .desc{margin-left:0;margin-top:50px}.members-plugin-card.plugin-card .desc p{margin-left:0;margin-right:0}.members-plugin-card.plugin-card .plugin-card-bottom .column-status{float:none}.members-plugin-card.plugin-card .plugin-card-bottom .column-updated{float:none;width:auto}}@media screen and (max-width:1200px){.welcome-panel .welcome-panel-column-container{-webkit-box-orient:vertical;-webkit-box-direction:reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse;gap:0;padding:0}.memberpress-about .mp-logo{margin:0 0 20px}}.members-plugin-card.plugin-card .desc p{margin-left:0;margin-right:0}@media only screen and (min-width:783px){.members_page_roles .column-users,.members_page_roles .column-granted_caps,.members_page_roles .column-denied_caps{width:100px;text-align:center}}.members-title-div #titlewrap input{padding:0 8px;font-size:1.7em;line-height:normal;height:1.7em;width:100%;outline:0;margin:0 0 3px;background-color:#fff}.members-title-div input[name="role"]{font-size:13px;height:22px;margin:0;width:16em}#tabcapsdiv{margin-top:1em}#tabcapsdiv>.hndle{padding:10px;border-bottom:1px solid #eee}#tabcapsdiv .inside,#members-cp .inside{margin:0;padding:0}.members-cap-tabs,.members-tabs{overflow:hidden;background:#fff;background:-webkit-gradient(linear,left top,right top,from(#fafafa),color-stop(20%,#fafafa),color-stop(20%,#fff),to(#fff));background:linear-gradient(90deg,#fafafa 0,#fafafa 20%,#fff 20%,#fff 100%)}@media only screen and (max-width:782px){.members-cap-tabs,.members-tabs{background:linear-gradient(90deg,#fafafa 0,#fafafa 48px,#fff 48px,#fff 100%)}}.members-cap-tabs .members-tab-nav,.members-tabs .members-tab-nav{position:relative;float:left;list-style:none;width:20%;line-height:1em;margin:0 0 -1px 0;padding:0;background-color:#fafafa;border-right:1px solid #eee;-webkit-box-sizing:border-box;box-sizing:border-box}.members-cap-tabs .members-tab-nav li,.members-tabs .members-tab-nav li{display:block;position:relative;margin:0;padding:0;line-height:20px}.members-cap-tabs .members-tab-nav li a,.members-tabs .members-tab-nav li a{display:block;margin:0;padding:10px;line-height:20px !important;text-decoration:none;border-bottom:1px solid #eee;-webkit-box-shadow:none;box-shadow:none}.members-cap-tabs .members-tab-nav li a .dashicons,.members-tabs .members-tab-nav li a .dashicons{line-height:20px;margin-right:3px}.members-cap-tabs .members-tab-nav li[aria-selected="true"] a,.members-tabs .members-tab-nav li[aria-selected="true"] a{position:relative;font-weight:bold;color:#555;background-color:#e0e0e0}@media only screen and (max-width:782px){.members-cap-tabs .members-tab-nav,.members-tabs .members-tab-nav{width:48px}.members-cap-tabs .members-tab-nav li a .dashicons,.members-tabs .members-tab-nav li a .dashicons{width:24px;height:24px;font-size:24px;line-height:24px}.members-tab-nav li .dashicons::before,.members-tab-nav li .dashicons::before{width:24px;height:24px}.members-tab-nav li .label{overflow:hidden;position:absolute;top:-1000em;left:-1000em;width:1px;height:1px}}.members-cap-tabs .members-tab-wrap,.members-tabs .members-tab-wrap{float:left;width:80%;margin-left:-1px}@media only screen and (max-width:782px){.members-cap-tabs .members-tab-wrap,.members-tabs .members-tab-wrap{width:calc(100% - 48px)}}#members-cp .members-tab-content{padding:10px;border-left:1px solid #e5e5e5}.members-roles-select th,.members-roles-select td{width:190px;overflow:hidden}.members-roles-select .check-all-th{text-align:center}.members-roles-select .check-all-th label{padding-left:5px}@media only screen and (min-width:850px){#side-sortables .members-tabs{background:#fff}#side-sortables .members-tabs .members-tab-wrap{width:100%}#side-sortables .members-tabs .members-tab-nav{display:table;width:100%}#side-sortables .members-tabs .members-tab-nav li{display:table-cell;text-align:center;border-right:1px solid #eee}#side-sortables .members-tabs .members-tab-nav li:last-of-type{border-right:0}#side-sortables .members-tabs .members-tab-nav li a{padding:10px 0}#side-sortables .members-tabs .members-tab-nav .dashicons{width:24px;height:24px;font-size:24px;line-height:24px}#side-sortables .members-tabs .members-tab-nav .dashicons::before{width:24px;height:24px}#side-sortables .members-tabs .members-tab-nav .label{overflow:hidden;position:absolute;top:-1000em;left:-1000em;width:1px;height:1px}}.members-tabs .members-tabs-label{display:block !important;font-weight:bold;display:inline-block;margin-bottom:4px}.members-tabs .butterbean-control-checkbox .members-tabs-label{display:inline !important}.members-tabs .members-tabs-description{display:block;font-style:italic;margin-top:4px}.members-tabs .members-tabs-label+.members-tabs-description{margin-top:0;margin-bottom:4px}#tabcapsdiv table{border-right:0;border-top:0;border-bottom:0}#tabcapsdiv table td,#tabcapsdiv table th{padding:10px;padding-bottom:10px;border-bottom:1px solid #eee;font-size:13px;line-height:20px}#tabcapsdiv table td{padding:9px}#tabcapsdiv tbody tr:last-of-type td{border-bottom:0}#tabcapsdiv tfoot th{border-color:#eee}@media only screen and (max-width:782px){#tabcapsdiv table td,#tabcapsdiv table th{line-height:24px}}.members-roles-select .column-grant,.members-roles-select .column-deny{width:70px !important;text-align:left;display:table-cell !important;clear:none !important}.members-roles-select thead th,.members-roles-select tfoot th{padding:9px !important}.members-roles-select .column-grant input,.members-roles-select .column-deny input{margin:0 5px 0 0;vertical-align:middle}.members-roles-select tbody tr:nth-child(even){background:#f2f2f2}.members-cap-tabs button{display:inline;margin:-4px;line-height:inherit;padding:4px 8px;border:1px solid transparent;background:transparent;border-radius:0;outline:0;-webkit-transition:all .25s ease-out;transition:all .25s ease-out}.members-cap-tabs button:hover,.members-cap-tabs button:focus{border-color:#eee;background:#fafafa;cursor:pointer}.members-cap-tabs button:active{color:#0073aa;border-color:#0073aa}.members-cap-tabs button+.dashicons{display:none;margin-top:1px;margin-bottom:-1px;line-height:inherit}.members-cap-tabs button:hover+.dashicons,.members-cap-tabs button:focus+.dashicons{display:inline-block}.members-tab-content .members-highlight{background-color:rgba(0,115,170,0.05)}.members-tab-content tbody{-webkit-transition:all 2s ease-in-out;transition:all 2s ease-in-out}.members-cp-role-list-wrap{overflow:auto;min-height:42px;max-height:200px;padding:0 .9em;border:solid 1px #dfdfdf;background-color:#fdfdfd}#wpbody-content{padding-bottom:200px}.members-footer-promotion{text-align:center;font-weight:400;font-size:13px;line-height:16px;color:#787c82;padding:20px 0 30px 0;margin-bottom:20px}.members-footer-promotion p{font-weight:600}.members-footer-promotion-links,.members-footer-promotion-social{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.members-footer-promotion-links{margin:9px 0 0}.members-footer-promotion-links span{color:#c3c4c7;padding:0 7px}.members-footer-promotion-social{margin:10px 0 0 0;gap:10px}.members-footer-promotion-social li{margin-bottom:0}.members-footer-promotion-social a{display:block;height:16px}.members_page_members-settings.rtl{.addon-activate{left:20px;right:unset}.members-addons .plugin-card{.name,.desc p{margin-left:0;margin-right:148px}}}.button.button-warning{background:#dc3232;border-color:#dc3232;color:#fff}.button.button-warning:hover,.button.button-warning:focus{background:#c92424;border-color:#c92424;color:#fff}.members-reset-spinner{float:none;margin-top:0;vertical-align:middle}.members-admin-menus-wrap{max-width:1400px}.members-admin-menus-toolbar{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;margin-bottom:16px}.members-am-toolbar-loading{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;margin-left:4px;color:#50575e;font-size:13px;line-height:1}.members-am-toolbar-loading .spinner{float:none;margin:0}.members-am-toolbar-loading[hidden]{display:none !important}.members-am-copy-wrap label{margin-right:8px}.members-am-chips{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:8px;margin-bottom:12px}.members-am-chip{border-radius:999px;padding:4px 12px;border:1px solid #c3c4c7;background:#f6f7f7;cursor:pointer}.members-am-chip.is-active{background:#2271b1;border-color:#2271b1;color:#fff}.members-am-carousel-wrap{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;gap:8px;margin-bottom:8px}.members-am-carousel-prev,.members-am-carousel-next{-ms-flex-item-align:center;align-self:center;width:36px;height:36px;border-radius:50%;border:1px solid #c3c4c7;background:#fff;cursor:pointer}.members-am-columns{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-ms-flex:1;flex:1;gap:12px;min-height:320px;overflow:hidden}.members-am-column{-webkit-box-flex:1;-ms-flex:1;flex:1;min-width:0;background:#1d2327;border-radius:4px;color:#f0f0f1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.members-am-user-column{border:2px dashed #8c8f94}.members-am-sidebar-head{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:8px 10px;background:#2c3338;border-radius:4px 4px 0 0;font-weight:600;font-size:12px;text-transform:uppercase;letter-spacing:.04em}.members-am-col-filter{padding:6px 8px 8px;border-bottom:1px solid #3c434a;-ms-flex-negative:0;flex-shrink:0}.members-am-col-filter-input{width:100%;max-width:100%;-webkit-box-sizing:border-box;box-sizing:border-box;font-size:12px;line-height:1.4;padding:4px 8px;border-radius:2px;border:1px solid #50575e;background:#1d2327;color:#f0f0f1}.members-am-col-filter-input::-webkit-input-placeholder{color:#8c8f94;opacity:1}.members-am-col-filter-input::-moz-placeholder{color:#8c8f94;opacity:1}.members-am-col-filter-input:-ms-input-placeholder{color:#8c8f94;opacity:1}.members-am-col-filter-input::-ms-input-placeholder{color:#8c8f94;opacity:1}.members-am-col-filter-input::placeholder{color:#8c8f94;opacity:1}.members-am-col-filter-input:focus{border-color:#2271b1;outline:1px solid transparent;-webkit-box-shadow:0 0 0 1px #2271b1;box-shadow:0 0 0 1px #2271b1}.members-am-item.members-am-filter-hidden,.members-am-sep.members-am-filter-hidden{display:none !important}.members-am-col-move button{margin-left:4px;padding:0 6px;min-height:24px;line-height:22px;font-size:11px}.members-am-sidebar-list{padding:6px 0 12px;overflow-y:auto;max-height:480px}.members-am-item{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:6px 10px 6px 8px;cursor:pointer;border-left:3px solid transparent;font-size:13px}.members-am-item.is-sub{padding-left:22px;font-size:12px;opacity:.95}.members-am-item.is-sub-deep{padding-left:36px}.members-am-sidebar-list .members-am-item{cursor:-webkit-grab;cursor:grab}.members-am-sidebar-list .members-am-item:active{cursor:-webkit-grabbing;cursor:grabbing}.members-am-sort-placeholder{-webkit-box-sizing:border-box;box-sizing:border-box;min-height:36px;margin:2px 0;background:rgba(34,113,177,0.08);border:1px dashed #2271b1;border-radius:2px}.members-am-item.is-hidden{opacity:.18}.members-am-item.is-no-cap{opacity:.35}.members-am-item.is-no-cap.is-hidden{opacity:.15}.members-am-item.is-selected{border-left-color:#2271b1;background:rgba(34,113,177,0.15)}.members-am-item-main{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;min-width:0}.members-am-item-main .dashicons{font-size:18px;width:18px;height:18px}.members-am-item-label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.members-am-item-actions{display:none;gap:2px}.members-am-item:hover .members-am-item-actions{display:-webkit-box;display:-ms-flexbox;display:flex}.members-am-item-actions button{min-height:22px;padding:0 4px;line-height:20px;font-size:11px}.members-am-sep{text-align:center;opacity:.35;font-size:11px;padding:4px 0}.members-am-carousel-dots{text-align:center;margin-bottom:4px}.members-am-dot{width:8px;height:8px;border-radius:50%;border:0;margin:0 4px;padding:0;background:#c3c4c7;cursor:pointer}.members-am-dot.is-active{background:#2271b1}.members-am-carousel-status{text-align:center;color:#646970;font-size:12px;margin-top:0}.members-am-badge{font-size:9px;text-transform:uppercase;padding:1px 4px;border-radius:2px;margin-right:4px;vertical-align:middle}.members-am-badge-new{background:#2271b1;color:#fff}.members-am-badge-edit{background:#dba617;color:#1d2327}.members-am-badge-nocap{background:#8c8f94;color:#fff}.members-am-legend{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:16px;margin:0 0 8px;padding:0;font-size:12px;color:#646970}.members-am-legend-item{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:4px}.members-am-edit-panel{margin-top:20px;padding:16px;border:1px solid #c3c4c7;background:#fff;border-radius:4px}.members-am-edit-panel-header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:12px}.members-am-edit-panel-header h2{margin:0;font-size:16px}.members-am-edit-toolbar{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:12px;margin-bottom:12px}.members-am-edit-target-wrap select{margin-left:8px}.members-am-level-actions .button{margin-right:6px}.members-am-demote-wrap{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:6px}.members-am-demote-wrap .members-am-demote-select{min-width:200px;max-width:min(320px,100%)}.members-am-edit-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:16px}.members-am-edit-col label{display:block;font-weight:600;margin-bottom:4px}.members-am-icon-tabs{margin-bottom:8px}.members-am-icon-tabs .button{margin-right:4px;margin-bottom:4px}.members-am-icon-tabs .button.is-active{background:#2271b1;border-color:#2271b1;color:#fff}.members-am-icon-grid{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:4px;max-height:160px;overflow-y:auto;border:1px solid #dcdcde;padding:8px;background:#f6f7f7;margin-bottom:8px}.members-am-icon-pick{width:36px;height:36px;padding:0;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;border:1px solid #c3c4c7;background:#fff;cursor:pointer}.members-am-vis-row{display:block;margin-bottom:6px;font-weight:normal}.members-am-reset-dropdown{position:absolute;z-index:100;background:#fff;border:1px solid #c3c4c7;border-radius:6px;padding:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-shadow:0 4px 12px rgba(0,0,0,0.15);box-shadow:0 4px 12px rgba(0,0,0,0.15);min-width:280px;top:100%;left:0;margin-top:4px;overflow:hidden}.members-am-reset-title{padding:10px 14px;font-weight:600;font-size:13px;border-bottom:1px solid #f0f0f0;color:#1d2327}.members-am-reset-option{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;gap:10px;padding:12px 14px;border:0;background:0;cursor:pointer;text-align:left;width:100%;border-bottom:1px solid #f0f0f0;-webkit-transition:background .15s;transition:background .15s}.members-am-reset-option:last-child{border-bottom:0}.members-am-reset-option:hover{background:#f6f7f7}.members-am-reset-option .dashicons{margin-top:2px;color:#646970}.members-am-reset-option-text{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:2px}.members-am-reset-option-text strong{font-size:13px;color:#1d2327}.members-am-reset-option-text small{font-size:12px;color:#646970}.members-am-reset-danger:hover{background:#fcf0f1}.members-am-reset-danger .dashicons{color:#d63638}.members-am-reset-danger:hover strong{color:#d63638}@media screen and (max-width:782px){.members-am-columns{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}}.members-am-user-suggestions{position:absolute;z-index:100;background:#fff;border:1px solid #c3c4c7;border-radius:4px;max-height:200px;overflow-y:auto;width:100%;-webkit-box-shadow:0 2px 6px rgba(0,0,0,0.15);box-shadow:0 2px 6px rgba(0,0,0,0.15);top:100%;left:0}.members-am-user-suggestion{padding:8px 12px;cursor:pointer;font-size:13px;border-bottom:1px solid #f0f0f0}.members-am-user-suggestion:hover{background:#f0f6fc}.members-am-user-suggestion:last-child{border-bottom:0}
\ No newline at end of file
+#members-cp h2.hndle,#members-cp-side h2.hndle{border-bottom:none !important;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}#members-cp h2.hndle:before,#members-cp-side h2.hndle:before{content:url("data:image/svg+xml,%3Csvg width='15px' aria-hidden='true' focusable='false' data-prefix='fas' data-icon='users-cog' class='svg-inline--fa fa-users-cog fa-w-20' role='img' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 640 512'%3E%3Cpath fill='currentColor' d='M610.5 341.3c2.6-14.1 2.6-28.5 0-42.6l25.8-14.9c3-1.7 4.3-5.2 3.3-8.5-6.7-21.6-18.2-41.2-33.2-57.4-2.3-2.5-6-3.1-9-1.4l-25.8 14.9c-10.9-9.3-23.4-16.5-36.9-21.3v-29.8c0-3.4-2.4-6.4-5.7-7.1-22.3-5-45-4.8-66.2 0-3.3.7-5.7 3.7-5.7 7.1v29.8c-13.5 4.8-26 12-36.9 21.3l-25.8-14.9c-2.9-1.7-6.7-1.1-9 1.4-15 16.2-26.5 35.8-33.2 57.4-1 3.3.4 6.8 3.3 8.5l25.8 14.9c-2.6 14.1-2.6 28.5 0 42.6l-25.8 14.9c-3 1.7-4.3 5.2-3.3 8.5 6.7 21.6 18.2 41.1 33.2 57.4 2.3 2.5 6 3.1 9 1.4l25.8-14.9c10.9 9.3 23.4 16.5 36.9 21.3v29.8c0 3.4 2.4 6.4 5.7 7.1 22.3 5 45 4.8 66.2 0 3.3-.7 5.7-3.7 5.7-7.1v-29.8c13.5-4.8 26-12 36.9-21.3l25.8 14.9c2.9 1.7 6.7 1.1 9-1.4 15-16.2 26.5-35.8 33.2-57.4 1-3.3-.4-6.8-3.3-8.5l-25.8-14.9zM496 368.5c-26.8 0-48.5-21.8-48.5-48.5s21.8-48.5 48.5-48.5 48.5 21.8 48.5 48.5-21.7 48.5-48.5 48.5zM96 224c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm224 32c1.9 0 3.7-.5 5.6-.6 8.3-21.7 20.5-42.1 36.3-59.2 7.4-8 17.9-12.6 28.9-12.6 6.9 0 13.7 1.8 19.6 5.3l7.9 4.6c.8-.5 1.6-.9 2.4-1.4 7-14.6 11.2-30.8 11.2-48 0-61.9-50.1-112-112-112S208 82.1 208 144c0 61.9 50.1 112 112 112zm105.2 194.5c-2.3-1.2-4.6-2.6-6.8-3.9-8.2 4.8-15.3 9.8-27.5 9.8-10.9 0-21.4-4.6-28.9-12.6-18.3-19.8-32.3-43.9-40.2-69.6-10.7-34.5 24.9-49.7 25.8-50.3-.1-2.6-.1-5.2 0-7.8l-7.9-4.6c-3.8-2.2-7-5-9.8-8.1-3.3.2-6.5.6-9.8.6-24.6 0-47.6-6-68.5-16h-8.3C179.6 288 128 339.6 128 403.2V432c0 26.5 21.5 48 48 48h255.4c-3.7-6-6.2-12.8-6.2-20.3v-9.2zM173.1 274.6C161.5 263.1 145.6 256 128 256H64c-35.3 0-64 28.7-64 64v32c0 17.7 14.3 32 32 32h65.9c6.3-47.4 34.9-87.3 75.2-109.4z'%3E%3C/path%3E%3C/svg%3E");margin-right:5px}#members-cp-side .postbox-header{border-bottom:none !important}#members-cp-side .handle-actions .handle-order-higher,#members-cp-side .handle-actions .handle-order-lower{display:none}#members-cp-side .handle-actions .handlediv{position:absolute;right:5px}.members-upgrade-header{text-align:center;padding:5px}.members-upgrade-header a{color:#f59431}.memberpress-paid-memberships{background-color:#f5f5f5;padding:50px 10px;text-align:center}.memberpress-paid-memberships a{background-color:#0e4598;display:inline-block;padding:10px 20px;border-radius:300px;color:#fff;text-decoration:none;margin-top:20px}#members-cp-side .members-tabs{position:relative}#members-cp-side .members-tab-nav{background-color:transparent;margin-bottom:20px;border-right:none !important}#members-cp-side .members-tab-nav .members-tab-title{width:33.333%;height:50px;border-right:none !important}#members-cp-side .members-tab-nav .members-tab-title a{border:0}#members-cp-side .members-tab-content h3{font-weight:bold;font-size:15px;margin-top:0;color:#000;margin-bottom:10px}#members-cp-side .members-tab-content .memberpress-paid-memberships{text-align:left;padding:20px}#members-cp-side .members-tab-content .memberpress-paid-memberships a{display:block;text-align:center}#members-cp-side .members-tabs .members-tab-nav li a,#members-cp-side .members-tabs .members-tab-nav li[aria-selected="false"] a i{color:#555}#members-cp-side .members-tabs .members-tab-nav li a svg,#members-cp-side .members-tabs .members-tab-nav li[aria-selected="false"] a svg{fill:#555}#members-cp-side .members-tabs .members-tab-nav li[aria-selected="true"] a{background-color:transparent;border-bottom:2px solid #3582ae}#members-cp-side .members-tabs .members-tab-nav li[aria-selected="true"] a i{color:#3582ae}#members-cp-side .members-tabs .members-tab-nav li[aria-selected="true"] a svg{fill:#3582ae}.members-tab-title svg,.members-tab-title[aria-selected="false"] svg{fill:#0073aa}.members-tab-title[aria-selected="true"] svg{fill:#555}#wpcontent #members-admin-header{margin-left:-20px;padding:0;padding-left:22px;background-color:#f9f9f9;background-repeat:repeat;background-size:1200px 75px;min-height:36px;position:relative}#wpcontent #members-admin-header img.members-logo{height:90px}.members-upgrade-header #close-members-upgrade-header{position:absolute;right:20px;top:3px}.members-upgrade-header #close-members-upgrade-header:hover{cursor:pointer}.memberpress-welcome-panel.welcome-panel{margin-top:0;padding:40px 20px;background:#fff}.memberpress-welcome-panel.welcome-panel:before{background:0}.memberpress-welcome-panel.welcome-panel .about-description{margin:20px 0}.memberpress-welcome-panel.welcome-panel-content{margin:0}.memberpress-welcome-panel.welcome-panel-content .mp-logo-wrap>a{display:block}@media screen and (min-width:870px){.members_page_members-settings .members-short-p{max-width:612px;margin-left:auto;margin-right:auto}.members_page_members-settings .welcome-panel-content{text-align:center}}.members_page_members-settings .welcome-panel .button.button-hero{margin-left:auto;margin-right:auto}.members_page_members-settings .members-svg-wrap{display:inline-block;margin:0 auto 20px}@media screen and (max-width:870px){.members_page_members-settings .welcome-panel{padding:20px}.members_page_members-settings .members-svg-wrap{float:left;margin-right:28px}.admin_page_members-settings.rtl .members-svg-wrap{float:right;margin-right:0;margin-left:28px}}.members_page_members-settings .members-svg-link{display:table-cell;text-align:center;width:128px;height:128px;background:#363b3f;color:#fff;padding:24px 16px 16px;border-radius:50%;-webkit-box-sizing:border-box;box-sizing:border-box;border:4px solid #fff;-webkit-box-shadow:0 0 0 4px #363b3f;box-shadow:0 0 0 4px #363b3f}.members_page_members-settings .members-svg-link svg{max-width:84px;max-height:64px;width:auto;height:auto}.members-addons{display:grid;grid-template-columns:1fr 1fr;grid-row-gap:20px;grid-column-gap:20px}.members-addons .plugin-card{margin:0}.members-addons .plugin-card-top{width:100%}.members-addon{width:100%;position:relative;float:none;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.members-addon .desc{margin-bottom:80px}.addon-activate{text-align:center;border:1px solid #ddd;border-radius:3px;padding:5px 10px 10px;display:inline-block;width:100px;position:absolute;right:20px;bottom:20px}.activate-toggle:hover{cursor:pointer}.activate-toggle svg{max-width:20px;position:relative;top:5px}.activate-toggle svg{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.activate-toggle svg.active{-webkit-transform:rotate(0);transform:rotate(0)}.activate-toggle svg path{fill:#ccc}.activate-toggle svg.active path{fill:#8cbd5a}.activate-toggle.processing{cursor:not-allowed;pointer-events:none;opacity:.5}.activate-toggle .action-label{display:inline-block;width:50px;text-align:left}.mepr_dummy_txns{-webkit-filter:blur(3px);filter:blur(3px);position:absolute;top:0;left:0;width:100%;z-index:5;pointer-events:none}.mepr_dummy_txns::after{background-color:rgba(0,0,0,.2);position:absolute;top:0;left:0;width:100%;height:100%;z-index:6}.mepr-upgrade-table{position:relative}.mepr-upgrade-table .mepr-upgrade{position:relative;top:100px;z-index:10;background:rgba(0,0,0,.2);width:100%;height:100%;max-width:600px;margin:0 auto;-webkit-box-shadow:0 0 30px #ccc;box-shadow:0 0 30px #ccc}.mepr-upgrade-content{background-color:#fff;padding:20px;text-align:center}.mepr-upgrade-content h2{font-size:24px}.mepr-upgrade-content h4{font-size:18px}.mepr-upgrade-content .features{display:grid;grid-template-columns:1fr 1fr;grid-column-gap:30px;grid-row-gap:10px;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;text-align:left;padding:10px}.features li:before{content:"\f147";font-family:dashicons;color:green;font-size:20px;position:relative;top:4px;margin-right:10px}.mepr-upgrade-cta{text-align:center;background-color:#f2f2f2;padding:20px}.mepr-upgrade-cta .mepr-cta-button{display:block;max-width:300px;margin:0 auto 20px;background-color:#fd9c27;color:#fff;padding:15px;font-size:18px;font-weight:bold;text-decoration:none;border-radius:300px}.members-plugin-card.plugin-card:nth-child(even){margin-right:inherit}.members-plugin-card.plugin-card:nth-child(odd){clear:none;margin-left:inherit}.members-plugin-card.plugin-card .plugin-card-top{min-height:0;padding:30px 20px}.members-plugin-card.plugin-card .plugin-icon{top:30px}.members-plugin-card.plugin-card .plugin-card-bottom .column-status{font-weight:bold}.members-plugin-card.plugin-card .plugin-card-bottom .column-status .active{color:#8cbd5a}.members-plugin-card.plugin-card .plugin-card-bottom .column-status .inactive{color:red}.members-plugin-card.plugin-card .plugin-icon{width:64px;height:auto}.plugin-icon-small{width:32px;height:auto}.members-plugin-card.plugin-card .name,.members-plugin-card.plugin-card .desc{margin-right:0;margin-left:84px}.members-addons .plugin-card .name,.members-addons .plugin-card .desc p{margin-right:0}@media screen and (max-width:1100px){.members-addons{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}}@media screen and (max-width:600px){.members_page_members-settings .members-svg-link{width:64px;height:64px}.members_page_members-settings .members-svg-link svg{position:absolute;top:14px;left:15px;max-width:30px;max-height:30px}.members_page_members-settings .plugin-card-members-edd-integration .members-svg-link svg,.members_page_members-settings .plugin-card-members-acf-integration .members-svg-link svg,.members_page_members-settings .plugin-card-members-givewp-integration .members-svg-link svg,.members_page_members-settings .plugin-card-members-meta-box-integration .members-svg-link svg,.members_page_members-settings .plugin-card-members-woocommerce-integration .members-svg-link svg{top:10px;left:8px;max-width:40px;max-height:40px}.members_page_members-settings .plugin-card-members-block-permissions .members-svg-link svg,.members_page_members-settings .plugin-card-members-role-hierarchy .members-svg-link svg{left:14px}.members-addons .plugin-card .desc>p,.members-addons .plugin-card .name{margin-left:84px}}.memberpress-about .welcome-panel-column-container{display:-webkit-box;display:-ms-flexbox;display:flex}.memberpress-about .mp-logo{max-width:256px;margin:50px}.members-about-addons{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-column-gap:20px}.members-about-addons .members-plugin-card{margin:0;width:100%}.members-about-addons .members-plugin-card .name h3 a{text-decoration:none}.members-about-addons .members-plugin-card .plugin-card-bottom{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}@media only screen and (max-width:1099px){.members-about-addons{grid-template-columns:1fr;grid-row-gap:20px}}@media screen and (min-width:1100px) and (max-width:1600px){.members-about-addons .members-plugin-card{float:none;width:auto;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.members-plugin-card.plugin-card .desc{margin-left:0;margin-top:50px}.members-plugin-card.plugin-card .desc p{margin-left:0;margin-right:0}.members-plugin-card.plugin-card .plugin-card-bottom .column-status{float:none}.members-plugin-card.plugin-card .plugin-card-bottom .column-updated{float:none;width:auto}}@media screen and (max-width:1200px){.welcome-panel .welcome-panel-column-container{-webkit-box-orient:vertical;-webkit-box-direction:reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse;gap:0;padding:0}.memberpress-about .mp-logo{margin:0 0 20px}}.members-plugin-card.plugin-card .desc p{margin-left:0;margin-right:0}@media only screen and (min-width:783px){.members_page_roles .column-users,.members_page_roles .column-granted_caps,.members_page_roles .column-denied_caps{width:100px;text-align:center}}.members-title-div #titlewrap input{padding:0 8px;font-size:1.7em;line-height:normal;height:1.7em;width:100%;outline:0;margin:0 0 3px;background-color:#fff}.members-title-div input[name="role"]{font-size:13px;height:22px;margin:0;width:16em}#tabcapsdiv{margin-top:1em}#tabcapsdiv>.hndle{padding:10px;border-bottom:1px solid #eee}#tabcapsdiv .inside,#members-cp .inside{margin:0;padding:0}.members-cap-tabs,.members-tabs{overflow:hidden;background:#fff;background:-webkit-gradient(linear,left top,right top,from(#fafafa),color-stop(20%,#fafafa),color-stop(20%,#fff),to(#fff));background:linear-gradient(90deg,#fafafa 0,#fafafa 20%,#fff 20%,#fff 100%)}@media only screen and (max-width:782px){.members-cap-tabs,.members-tabs{background:linear-gradient(90deg,#fafafa 0,#fafafa 48px,#fff 48px,#fff 100%)}}.members-cap-tabs .members-tab-nav,.members-tabs .members-tab-nav{position:relative;float:left;list-style:none;width:20%;line-height:1em;margin:0 0 -1px 0;padding:0;background-color:#fafafa;border-right:1px solid #eee;-webkit-box-sizing:border-box;box-sizing:border-box}.members-cap-tabs .members-tab-nav li,.members-tabs .members-tab-nav li{display:block;position:relative;margin:0;padding:0;line-height:20px}.members-cap-tabs .members-tab-nav li a,.members-tabs .members-tab-nav li a{display:block;margin:0;padding:10px;line-height:20px !important;text-decoration:none;border-bottom:1px solid #eee;-webkit-box-shadow:none;box-shadow:none}.members-cap-tabs .members-tab-nav li a .dashicons,.members-tabs .members-tab-nav li a .dashicons{line-height:20px;margin-right:3px}.members-cap-tabs .members-tab-nav li[aria-selected="true"] a,.members-tabs .members-tab-nav li[aria-selected="true"] a{position:relative;font-weight:bold;color:#555;background-color:#e0e0e0}@media only screen and (max-width:782px){.members-cap-tabs .members-tab-nav,.members-tabs .members-tab-nav{width:48px}.members-cap-tabs .members-tab-nav li a .dashicons,.members-tabs .members-tab-nav li a .dashicons{width:24px;height:24px;font-size:24px;line-height:24px}.members-tab-nav li .dashicons::before,.members-tab-nav li .dashicons::before{width:24px;height:24px}.members-tab-nav li .label{overflow:hidden;position:absolute;top:-1000em;left:-1000em;width:1px;height:1px}}.members-cap-tabs .members-tab-wrap,.members-tabs .members-tab-wrap{float:left;width:80%;margin-left:-1px}@media only screen and (max-width:782px){.members-cap-tabs .members-tab-wrap,.members-tabs .members-tab-wrap{width:calc(100% - 48px)}}#members-cp .members-tab-content{padding:10px;border-left:1px solid #e5e5e5}.members-roles-select th,.members-roles-select td{width:190px;overflow:hidden}.members-roles-select .check-all-th{text-align:center}.members-roles-select .check-all-th label{padding-left:5px}@media only screen and (min-width:850px){#side-sortables .members-tabs{background:#fff}#side-sortables .members-tabs .members-tab-wrap{width:100%}#side-sortables .members-tabs .members-tab-nav{display:table;width:100%}#side-sortables .members-tabs .members-tab-nav li{display:table-cell;text-align:center;border-right:1px solid #eee}#side-sortables .members-tabs .members-tab-nav li:last-of-type{border-right:0}#side-sortables .members-tabs .members-tab-nav li a{padding:10px 0}#side-sortables .members-tabs .members-tab-nav .dashicons{width:24px;height:24px;font-size:24px;line-height:24px}#side-sortables .members-tabs .members-tab-nav .dashicons::before{width:24px;height:24px}#side-sortables .members-tabs .members-tab-nav .label{overflow:hidden;position:absolute;top:-1000em;left:-1000em;width:1px;height:1px}}.members-tabs .members-tabs-label{display:block !important;font-weight:bold;display:inline-block;margin-bottom:4px}.members-tabs .butterbean-control-checkbox .members-tabs-label{display:inline !important}.members-tabs .members-tabs-description{display:block;font-style:italic;margin-top:4px}.members-tabs .members-tabs-label+.members-tabs-description{margin-top:0;margin-bottom:4px}#tabcapsdiv table{border-right:0;border-top:0;border-bottom:0}#tabcapsdiv table td,#tabcapsdiv table th{padding:10px;padding-bottom:10px;border-bottom:1px solid #eee;font-size:13px;line-height:20px}#tabcapsdiv table td{padding:9px}#tabcapsdiv tbody tr:last-of-type td{border-bottom:0}#tabcapsdiv tfoot th{border-color:#eee}@media only screen and (max-width:782px){#tabcapsdiv table td,#tabcapsdiv table th{line-height:24px}}.members-roles-select .column-grant,.members-roles-select .column-deny{width:70px !important;text-align:left;display:table-cell !important;clear:none !important}.members-roles-select thead th,.members-roles-select tfoot th{padding:9px !important}.members-roles-select .column-grant input,.members-roles-select .column-deny input{margin:0 5px 0 0;vertical-align:middle}.members-roles-select tbody tr:nth-child(even){background:#f2f2f2}.members-cap-tabs button{display:inline;margin:-4px;line-height:inherit;padding:4px 8px;border:1px solid transparent;background:transparent;border-radius:0;outline:0;-webkit-transition:all .25s ease-out;transition:all .25s ease-out}.members-cap-tabs button:hover,.members-cap-tabs button:focus{border-color:#eee;background:#fafafa;cursor:pointer}.members-cap-tabs button:active{color:#0073aa;border-color:#0073aa}.members-cap-tabs button+.dashicons{display:none;margin-top:1px;margin-bottom:-1px;line-height:inherit}.members-cap-tabs button:hover+.dashicons,.members-cap-tabs button:focus+.dashicons{display:inline-block}.members-tab-content .members-highlight{background-color:rgba(0,115,170,0.05)}.members-tab-content tbody{-webkit-transition:all 2s ease-in-out;transition:all 2s ease-in-out}.members-cp-role-list-wrap{overflow:auto;min-height:42px;max-height:200px;padding:0 .9em;border:solid 1px #dfdfdf;background-color:#fdfdfd}#wpbody-content{padding-bottom:200px}.members-footer-promotion{text-align:center;font-weight:400;font-size:13px;line-height:16px;color:#787c82;padding:20px 0 30px 0;margin-bottom:20px}.members-footer-promotion p{font-weight:600}.members-footer-promotion-links,.members-footer-promotion-social{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.members-footer-promotion-links{margin:9px 0 0}.members-footer-promotion-links span{color:#c3c4c7;padding:0 7px}.members-footer-promotion-social{margin:10px 0 0 0;gap:10px}.members-footer-promotion-social li{margin-bottom:0}.members-footer-promotion-social a{display:block;height:16px}.members_page_members-settings.rtl{.addon-activate{left:20px;right:unset}.members-addons .plugin-card{.name,.desc p{margin-left:0;margin-right:148px}}}.button.button-warning{background:#dc3232;border-color:#dc3232;color:#fff}.button.button-warning:hover,.button.button-warning:focus{background:#c92424;border-color:#c92424;color:#fff}.members-reset-spinner{float:none;margin-top:0;vertical-align:middle}.members-admin-menus-wrap{max-width:1400px}.members-admin-menus-toolbar{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;margin-bottom:16px}.members-am-toolbar-loading{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;margin-left:4px;color:#50575e;font-size:13px;line-height:1}.members-am-toolbar-loading .spinner{float:none;margin:0}.members-am-toolbar-loading[hidden]{display:none !important}.members-am-copy-wrap label{margin-right:8px}.members-am-chips{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:8px;margin-bottom:12px}.members-am-chip{border-radius:999px;padding:4px 12px;border:1px solid #c3c4c7;background:#f6f7f7;cursor:pointer}.members-am-chip.is-active{background:#2271b1;border-color:#2271b1;color:#fff}.members-am-carousel-wrap{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;gap:8px;margin-bottom:8px}.members-am-carousel-prev,.members-am-carousel-next{-ms-flex-item-align:center;align-self:center;width:36px;height:36px;border-radius:50%;border:1px solid #c3c4c7;background:#fff;cursor:pointer}.members-am-columns{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-ms-flex:1;flex:1;gap:12px;min-height:320px;overflow:hidden}.members-am-column{-webkit-box-flex:1;-ms-flex:1;flex:1;min-width:0;background:#1d2327;border-radius:4px;color:#f0f0f1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.members-am-user-column{border:2px dashed #8c8f94}.members-am-sidebar-head{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:8px 10px;background:#2c3338;border-radius:4px 4px 0 0;font-weight:600;font-size:12px;text-transform:uppercase;letter-spacing:.04em}.members-am-col-filter{padding:6px 8px 8px;border-bottom:1px solid #3c434a;-ms-flex-negative:0;flex-shrink:0}.members-am-col-filter-input{width:100%;max-width:100%;-webkit-box-sizing:border-box;box-sizing:border-box;font-size:12px;line-height:1.4;padding:4px 8px;border-radius:2px;border:1px solid #50575e;background:#1d2327;color:#f0f0f1}.members-am-col-filter-input::-webkit-input-placeholder{color:#8c8f94;opacity:1}.members-am-col-filter-input::-moz-placeholder{color:#8c8f94;opacity:1}.members-am-col-filter-input:-ms-input-placeholder{color:#8c8f94;opacity:1}.members-am-col-filter-input::-ms-input-placeholder{color:#8c8f94;opacity:1}.members-am-col-filter-input::placeholder{color:#8c8f94;opacity:1}.members-am-col-filter-input:focus{border-color:#2271b1;outline:1px solid transparent;-webkit-box-shadow:0 0 0 1px #2271b1;box-shadow:0 0 0 1px #2271b1}.members-am-col-bulk{padding:0 8px 8px;border-bottom:1px solid #3c434a;-ms-flex-negative:0;flex-shrink:0}.members-am-col-bulk-toolbar,.members-am-col-collapse-toolbar{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:6px;margin-bottom:6px;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.members-am-col-bulk-toolbar .button.button-small,.members-am-col-collapse-toolbar .button.button-small{font-size:11px;min-height:26px;line-height:24px;padding:0 8px;background:#2c3338;border-color:#50575e;color:#f0f0f1}.members-am-col-bulk-toolbar .button.button-small:hover,.members-am-col-collapse-toolbar .button.button-small:hover{background:#3c434a;border-color:#8c8f94;color:#fff}.members-am-item-lead{-ms-flex-negative:0;flex-shrink:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:22px;padding:2px 0 0}.members-am-collapse-spacer{display:block;width:20px;height:20px;-ms-flex-negative:0;flex-shrink:0}.members-am-collapse-toggle{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:22px;height:22px;margin:0;padding:0;border:0;background:transparent;color:#c3c4c7;border-radius:2px;cursor:pointer;-ms-flex-negative:0;flex-shrink:0}.members-am-collapse-toggle:hover,.members-am-collapse-toggle:focus{color:#f0f0f1;background:rgba(255,255,255,0.08);outline:0}.members-am-collapse-toggle .dashicons{font-size:18px;width:18px;height:18px}.members-am-item-cb-wrap{-ms-flex-negative:0;flex-shrink:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;padding:2px 4px 0 0}.members-am-item-cb{margin:0;width:16px;height:16px;-ms-flex-negative:0;flex-shrink:0}.members-am-bulk-select{width:100%;max-width:100%;-webkit-box-sizing:border-box;box-sizing:border-box;font-size:12px;line-height:1.4;padding:4px 8px;border-radius:2px;border:1px solid #50575e;background:#1d2327;color:#f0f0f1}.members-am-bulk-select:focus{border-color:#2271b1;outline:1px solid transparent;-webkit-box-shadow:0 0 0 1px #2271b1;box-shadow:0 0 0 1px #2271b1}.members-am-item.members-am-filter-hidden,.members-am-sep.members-am-filter-hidden,.members-am-item.members-am-collapse-hidden{display:none !important}.members-am-col-move button{margin-left:4px;padding:0 6px;min-height:24px;line-height:22px;font-size:11px}.members-am-sidebar-list{padding:6px 0 12px;overflow-y:auto;max-height:480px}.members-am-item{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;gap:4px;padding:6px 10px 6px 6px;cursor:pointer;border-left:3px solid transparent;font-size:13px}.members-am-item.is-sub{padding-left:22px;font-size:12px;opacity:.95}.members-am-item.is-sub-deep{padding-left:36px}.members-am-sidebar-list .members-am-item{cursor:-webkit-grab;cursor:grab}.members-am-sidebar-list .members-am-item:active{cursor:-webkit-grabbing;cursor:grabbing}.members-am-sort-placeholder{-webkit-box-sizing:border-box;box-sizing:border-box;min-height:36px;margin:2px 0;background:rgba(34,113,177,0.08);border:1px dashed #2271b1;border-radius:2px}.members-am-item.is-hidden{opacity:.18}.members-am-item.is-no-cap{opacity:.35}.members-am-item.is-no-cap.is-hidden{opacity:.15}.members-am-item.is-selected{border-left-color:#2271b1;background:rgba(34,113,177,0.15)}.members-am-item-main{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;min-width:0}.members-am-item-main .dashicons{font-size:18px;width:18px;height:18px}.members-am-item-label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.members-am-item-actions{display:none;gap:2px}.members-am-item:hover .members-am-item-actions{display:-webkit-box;display:-ms-flexbox;display:flex}.members-am-item-actions button{min-height:22px;padding:0 4px;line-height:20px;font-size:11px}.members-am-sep{text-align:center;opacity:.35;font-size:11px;padding:4px 0}.members-am-carousel-dots{text-align:center;margin-bottom:4px}.members-am-dot{width:8px;height:8px;border-radius:50%;border:0;margin:0 4px;padding:0;background:#c3c4c7;cursor:pointer}.members-am-dot.is-active{background:#2271b1}.members-am-carousel-status{text-align:center;color:#646970;font-size:12px;margin-top:0}.members-am-badge{font-size:9px;text-transform:uppercase;padding:1px 4px;border-radius:2px;margin-right:4px;vertical-align:middle}.members-am-badge-new{background:#2271b1;color:#fff}.members-am-badge-edit{background:#dba617;color:#1d2327}.members-am-badge-nocap{background:#8c8f94;color:#fff}.members-am-legend{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:16px;margin:0 0 8px;padding:0;font-size:12px;color:#646970}.members-am-legend-item{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:4px}.members-am-edit-panel{margin-top:20px;padding:16px;border:1px solid #c3c4c7;background:#fff;border-radius:4px}.members-am-edit-panel-header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:12px}.members-am-edit-panel-header h2{margin:0;font-size:16px}.members-am-edit-toolbar{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:12px;margin-bottom:12px}.members-am-edit-target-wrap select{margin-left:8px}.members-am-level-actions .button{margin-right:6px}.members-am-demote-wrap{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:6px}.members-am-demote-wrap .members-am-demote-select{min-width:200px;max-width:min(320px,100%)}.members-am-edit-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:16px}.members-am-edit-col label{display:block;font-weight:600;margin-bottom:4px}.members-am-icon-tabs{margin-bottom:8px}.members-am-icon-tabs .button{margin-right:4px;margin-bottom:4px}.members-am-icon-tabs .button.is-active{background:#2271b1;border-color:#2271b1;color:#fff}.members-am-icon-grid{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:4px;max-height:160px;overflow-y:auto;border:1px solid #dcdcde;padding:8px;background:#f6f7f7;margin-bottom:8px}.members-am-icon-pick{width:36px;height:36px;padding:0;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;border:1px solid #c3c4c7;background:#fff;cursor:pointer}.members-am-vis-row{display:block;margin-bottom:6px;font-weight:normal}.members-am-reset-dropdown{position:absolute;z-index:100;background:#fff;border:1px solid #c3c4c7;border-radius:6px;padding:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-shadow:0 4px 12px rgba(0,0,0,0.15);box-shadow:0 4px 12px rgba(0,0,0,0.15);min-width:280px;top:100%;left:0;margin-top:4px;overflow:hidden}.members-am-reset-title{padding:10px 14px;font-weight:600;font-size:13px;border-bottom:1px solid #f0f0f0;color:#1d2327}.members-am-reset-option{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;gap:10px;padding:12px 14px;border:0;background:0;cursor:pointer;text-align:left;width:100%;border-bottom:1px solid #f0f0f0;-webkit-transition:background .15s;transition:background .15s}.members-am-reset-option:last-child{border-bottom:0}.members-am-reset-option:hover{background:#f6f7f7}.members-am-reset-option .dashicons{margin-top:2px;color:#646970}.members-am-reset-option-text{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:2px}.members-am-reset-option-text strong{font-size:13px;color:#1d2327}.members-am-reset-option-text small{font-size:12px;color:#646970}.members-am-reset-danger:hover{background:#fcf0f1}.members-am-reset-danger .dashicons{color:#d63638}.members-am-reset-danger:hover strong{color:#d63638}@media screen and (max-width:782px){.members-am-columns{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}}.members-am-user-suggestions{position:absolute;z-index:100;background:#fff;border:1px solid #c3c4c7;border-radius:4px;max-height:200px;overflow-y:auto;width:100%;-webkit-box-shadow:0 2px 6px rgba(0,0,0,0.15);box-shadow:0 2px 6px rgba(0,0,0,0.15);top:100%;left:0}.members-am-user-suggestion{padding:8px 12px;cursor:pointer;font-size:13px;border-bottom:1px solid #f0f0f0}.members-am-user-suggestion:hover{background:#f0f6fc}.members-am-user-suggestion:last-child{border-bottom:0}
\ No newline at end of file
diff --git a/js/admin-menus.js b/js/admin-menus.js
index 7500485..ac47005 100644
--- a/js/admin-menus.js
+++ b/js/admin-menus.js
@@ -22,6 +22,10 @@
})(),
/** Per-column list filter query (role slug, or `u:` + user id for preview column). */
columnFilters: {},
+ /** Per-column bulk checkbox selection: key -> { ids: { [itemId]: true } }. */
+ columnBulkSelection: {},
+ /** Per-column collapsed parent ids: key -> { [parentItemId]: true } when children are folded away. */
+ collapsedParents: {},
};
/** Snapshot of persisted settings for unsaved-change detection (object key order–independent). */
@@ -636,6 +640,306 @@
}
}
+ function collectAllMenuItemIds() {
+ var out = [];
+ function walk(nodes) {
+ var i;
+ for (i = 0; i < nodes.length; i++) {
+ out.push(nodes[i].id);
+ if (nodes[i].children && nodes[i].children.length) {
+ walk(nodes[i].children);
+ }
+ }
+ }
+ walk(state.tree || []);
+ return out;
+ }
+
+ function ensureBulkSelection(columnKey) {
+ if (!state.columnBulkSelection[columnKey]) {
+ state.columnBulkSelection[columnKey] = { ids: {} };
+ }
+ if (!state.columnBulkSelection[columnKey].ids) {
+ state.columnBulkSelection[columnKey].ids = {};
+ }
+ }
+
+ function getBulkCheckedIds(columnKey) {
+ ensureBulkSelection(columnKey);
+ return Object.keys(state.columnBulkSelection[columnKey].ids).filter(function (k) {
+ return state.columnBulkSelection[columnKey].ids[k];
+ });
+ }
+
+ /** All descendant menu node ids under `itemId` in the snapshot tree (not including `itemId`). */
+ function collectDescendantIdsFromTree(itemId) {
+ var node = findNode(itemId);
+ if (!node || !node.children || !node.children.length) {
+ return [];
+ }
+ var out = [];
+ function walk(n) {
+ if (!n) {
+ return;
+ }
+ out.push(n.id);
+ if (n.children && n.children.length) {
+ n.children.forEach(walk);
+ }
+ }
+ node.children.forEach(walk);
+ return out;
+ }
+
+ function setBulkCheckedCascade(columnKey, itemId, checked) {
+ ensureBulkSelection(columnKey);
+ var ids = state.columnBulkSelection[columnKey].ids;
+ if (checked) {
+ ids[itemId] = true;
+ collectDescendantIdsFromTree(itemId).forEach(function (did) {
+ ids[did] = true;
+ });
+ } else {
+ delete ids[itemId];
+ collectDescendantIdsFromTree(itemId).forEach(function (did) {
+ delete ids[did];
+ });
+ }
+ }
+
+ function ensureCollapsedParents(columnKey) {
+ if (!state.collapsedParents[columnKey]) {
+ state.collapsedParents[columnKey] = {};
+ }
+ }
+
+ function isItemDescendantOfParent($item, ancestorId, $list) {
+ var p = $item.attr('data-menu-parent') || '';
+ while (p) {
+ if (p === ancestorId) {
+ return true;
+ }
+ var $parentRow = $list.find('.members-am-item').filter(function () {
+ return $(this).attr('data-id') === p;
+ }).first();
+ if (!$parentRow.length) {
+ return false;
+ }
+ p = $parentRow.attr('data-menu-parent') || '';
+ }
+ return false;
+ }
+
+ function applyCollapsedState($list, columnKey) {
+ var col = state.collapsedParents[columnKey];
+ var $items = $list.children('.members-am-item');
+ if (!col || !Object.keys(col).some(function (k) {
+ return col[k];
+ })) {
+ $items.removeClass('members-am-collapse-hidden');
+ return;
+ }
+ var collapsedIds = Object.keys(col).filter(function (k) {
+ return col[k];
+ });
+ $items.each(function () {
+ var $item = $(this);
+ var id = $item.attr('data-id');
+ var hide = false;
+ var i;
+ for (i = 0; i < collapsedIds.length; i++) {
+ if (collapsedIds[i] !== id && isItemDescendantOfParent($item, collapsedIds[i], $list)) {
+ hide = true;
+ break;
+ }
+ }
+ $item.toggleClass('members-am-collapse-hidden', hide);
+ });
+ }
+
+ /** Every menu node id in the snapshot tree that has at least one child (any depth). */
+ function collectParentIdsWithChildrenFromTree() {
+ var out = [];
+ function walk(nodes) {
+ if (!nodes || !nodes.length) {
+ return;
+ }
+ var i;
+ for (i = 0; i < nodes.length; i++) {
+ var n = nodes[i];
+ if (n.children && n.children.length) {
+ out.push(n.id);
+ walk(n.children);
+ }
+ }
+ }
+ walk(state.tree || []);
+ return out;
+ }
+
+ function collapseAllInColumn(columnKey) {
+ ensureCollapsedParents(columnKey);
+ collectParentIdsWithChildrenFromTree().forEach(function (id) {
+ state.collapsedParents[columnKey][id] = true;
+ });
+ }
+
+ function expandAllInColumn(columnKey) {
+ state.collapsedParents[columnKey] = {};
+ }
+
+ function ensureHiddenRole(role, itemId) {
+ var h = getRoleConfig(role).hidden;
+ if (h.indexOf(itemId) === -1) {
+ h.push(itemId);
+ }
+ var node = findNode(itemId);
+ if (node && node.children && node.children.length) {
+ node.children.forEach(function (child) {
+ if (h.indexOf(child.id) === -1) {
+ h.push(child.id);
+ }
+ });
+ }
+ }
+
+ function ensureShownRole(role, itemId) {
+ var h = getRoleConfig(role).hidden;
+ var ix = h.indexOf(itemId);
+ if (ix !== -1) {
+ h.splice(ix, 1);
+ }
+ var node = findNode(itemId);
+ if (node && node.children && node.children.length) {
+ node.children.forEach(function (child) {
+ var ci = h.indexOf(child.id);
+ if (ci !== -1) {
+ h.splice(ci, 1);
+ }
+ });
+ }
+ }
+
+ function ensureHiddenUser(uid, itemId) {
+ var h = getUserConfig(uid).hidden;
+ if (h.indexOf(itemId) === -1) {
+ h.push(itemId);
+ }
+ var node = findNode(itemId);
+ if (node && node.children && node.children.length) {
+ node.children.forEach(function (child) {
+ if (h.indexOf(child.id) === -1) {
+ h.push(child.id);
+ }
+ });
+ }
+ }
+
+ function ensureShownUser(uid, itemId) {
+ var h = getUserConfig(uid).hidden;
+ var ix = h.indexOf(itemId);
+ if (ix !== -1) {
+ h.splice(ix, 1);
+ }
+ var node = findNode(itemId);
+ if (node && node.children && node.children.length) {
+ node.children.forEach(function (child) {
+ var ci = h.indexOf(child.id);
+ if (ci !== -1) {
+ h.splice(ci, 1);
+ }
+ });
+ }
+ }
+
+ function bulkShowAllRole(role) {
+ getRoleConfig(role).hidden = [];
+ }
+
+ function bulkHideAllRole(role) {
+ var all = collectAllMenuItemIds();
+ getRoleConfig(role).hidden = all.slice();
+ }
+
+ function bulkKeepOnlyCheckedRole(columnKey, role) {
+ var ids = getBulkCheckedIds(columnKey);
+ if (!ids.length) {
+ return;
+ }
+ var keep = {};
+ ids.forEach(function (id) {
+ var cur = id;
+ while (cur) {
+ keep[cur] = true;
+ cur = getEffectiveParentId(cur, role);
+ }
+ });
+ var all = collectAllMenuItemIds();
+ var h = getRoleConfig(role).hidden;
+ h.length = 0;
+ all.forEach(function (id) {
+ if (!keep[id]) {
+ h.push(id);
+ }
+ });
+ }
+
+ function bulkHideCheckedRole(columnKey, role) {
+ getBulkCheckedIds(columnKey).forEach(function (id) {
+ ensureHiddenRole(role, id);
+ });
+ }
+
+ function bulkShowCheckedRole(columnKey, role) {
+ getBulkCheckedIds(columnKey).forEach(function (id) {
+ ensureShownRole(role, id);
+ });
+ }
+
+ function bulkShowAllUser(uid) {
+ getUserConfig(uid).hidden = [];
+ }
+
+ function bulkHideAllUser(uid) {
+ var all = collectAllMenuItemIds();
+ getUserConfig(uid).hidden = all.slice();
+ }
+
+ function bulkKeepOnlyCheckedUser(columnKey, uid) {
+ var ids = getBulkCheckedIds(columnKey);
+ if (!ids.length) {
+ return;
+ }
+ var keep = {};
+ ids.forEach(function (id) {
+ var cur = id;
+ while (cur) {
+ keep[cur] = true;
+ cur = getEffectiveParentIdForUser(cur, uid);
+ }
+ });
+ var all = collectAllMenuItemIds();
+ var h = getUserConfig(uid).hidden;
+ h.length = 0;
+ all.forEach(function (id) {
+ if (!keep[id]) {
+ h.push(id);
+ }
+ });
+ }
+
+ function bulkHideCheckedUser(columnKey, uid) {
+ getBulkCheckedIds(columnKey).forEach(function (id) {
+ ensureHiddenUser(uid, id);
+ });
+ }
+
+ function bulkShowCheckedUser(columnKey, uid) {
+ getBulkCheckedIds(columnKey).forEach(function (id) {
+ ensureShownUser(uid, id);
+ });
+ }
+
function getTargetRole() {
var v = $('#members-am-edit-target-role').val();
return v || (state.activeRoleSlugs[0] || '');
@@ -883,6 +1187,16 @@
$(this).toggleClass('members-am-filter-hidden', !show[id]);
});
$list.children('.members-am-sep').addClass('members-am-filter-hidden');
+ var $col = $list.closest('.members-am-column');
+ if ($col.length) {
+ var fk =
+ $col.data('user') != null && $col.data('user') !== ''
+ ? 'u:' + $col.data('user')
+ : $col.data('role');
+ if (fk) {
+ applyCollapsedState($list, fk);
+ }
+ }
}
function bindColumnFilter($wrap, $list, filterKey) {
@@ -907,6 +1221,140 @@
applyColumnListFilter($list, saved);
}
+ function bindColumnBulk($wrap, filterKey) {
+ var isUser = String(filterKey).indexOf('u:') === 0;
+ var uid = isUser ? parseInt(filterKey.replace(/^u:/, ''), 10) : 0;
+ var role = isUser ? null : filterKey;
+ var columnKey = filterKey;
+ var i18n = membersAdminMenus.i18n || {};
+ var $bulk = $('
').attr('data-column-key', columnKey);
+ var $toolbar = $('
');
+ $toolbar.append(
+ $(' ').text(
+ i18n.bulkSelectVisible || 'Select visible'
+ ),
+ $(' ').text(
+ i18n.bulkClearSelection || 'Clear selection'
+ )
+ );
+ var $collapseBar = $('
');
+ $collapseBar.append(
+ $(' ').text(
+ i18n.collapseAllMenus || 'Collapse all'
+ ),
+ $(' ').text(
+ i18n.expandAllMenus || 'Expand all'
+ )
+ );
+ var $sel = $(' ').attr(
+ 'aria-label',
+ i18n.bulkVisibilityLabel || 'Menu visibility for this column'
+ );
+ $sel.append(
+ $(' ').text(i18n.bulkActionsPlaceholder || 'Choose visibility…')
+ );
+ var $ogWhole = $(' ').attr(
+ 'label',
+ i18n.bulkGroupWholeColumn || 'Whole column'
+ );
+ $ogWhole.append(
+ $(' ').text(i18n.bulkShowAllItems || 'Show every menu item'),
+ $(' ').text(i18n.bulkHideAllItems || 'Hide every menu item')
+ );
+ var $ogChecked = $(' ').attr(
+ 'label',
+ i18n.bulkGroupCheckedRows || 'Checked rows'
+ );
+ $ogChecked.append(
+ $(' ').text(
+ i18n.bulkKeepOnlyCheckedVisible || 'Keep only checked visible'
+ ),
+ $(' ').text(
+ i18n.bulkHideCheckedItems || 'Hide checked items'
+ ),
+ $(' ').text(
+ i18n.bulkShowCheckedItems || 'Show checked items'
+ )
+ );
+ $sel.append($ogWhole, $ogChecked);
+ $bulk.append($toolbar, $collapseBar, $sel);
+ var $filter = $wrap.find('.members-am-col-filter').first();
+ if ($filter.length) {
+ $filter.after($bulk);
+ } else {
+ $wrap.find('.members-am-sidebar-head').first().after($bulk);
+ }
+ $sel.on('change', function () {
+ var v = $(this).val();
+ $(this).val('');
+ if (!v) {
+ return;
+ }
+ var needChecked =
+ v === 'keep-only-checked' || v === 'hide-checked' || v === 'show-checked';
+ if (needChecked && !getBulkCheckedIds(columnKey).length) {
+ alert(
+ i18n.bulkSelectCheckedFirst || 'Check one or more menu items first.'
+ );
+ return;
+ }
+ if (v === 'keep-only-checked') {
+ if (
+ !window.confirm(
+ i18n.bulkConfirmKeepOnlyChecked ||
+ 'Hide all items except checked items and their parent menus?'
+ )
+ ) {
+ return;
+ }
+ } else if (v === 'hide-all') {
+ if (
+ !window.confirm(
+ i18n.bulkConfirmHideAll ||
+ 'Hide every menu item in this column?'
+ )
+ ) {
+ return;
+ }
+ } else if (v === 'hide-checked') {
+ if (
+ !window.confirm(
+ i18n.bulkConfirmHideChecked ||
+ 'Hide the checked items (and their submenus where applicable)?'
+ )
+ ) {
+ return;
+ }
+ }
+ if (isUser) {
+ if (v === 'show-all') {
+ bulkShowAllUser(uid);
+ } else if (v === 'hide-all') {
+ bulkHideAllUser(uid);
+ } else if (v === 'keep-only-checked') {
+ bulkKeepOnlyCheckedUser(columnKey, uid);
+ } else if (v === 'hide-checked') {
+ bulkHideCheckedUser(columnKey, uid);
+ } else if (v === 'show-checked') {
+ bulkShowCheckedUser(columnKey, uid);
+ }
+ } else {
+ if (v === 'show-all') {
+ bulkShowAllRole(role);
+ } else if (v === 'hide-all') {
+ bulkHideAllRole(role);
+ } else if (v === 'keep-only-checked') {
+ bulkKeepOnlyCheckedRole(columnKey, role);
+ } else if (v === 'hide-checked') {
+ bulkHideCheckedRole(columnKey, role);
+ } else if (v === 'show-checked') {
+ bulkShowCheckedRole(columnKey, role);
+ }
+ }
+ renderAll();
+ });
+ }
+
function renderSidebar(role, $wrap) {
$wrap.empty();
var $head = $('');
@@ -935,7 +1383,9 @@
renderRoleBranch(role, node, null, $ul, 0);
});
$wrap.append($ul);
+ applyCollapsedState($ul, role);
bindColumnFilter($wrap, $ul, role);
+ bindColumnBulk($wrap, role);
}
function renderItemRow(role, node, parentMenuId, $container, depth) {
@@ -953,6 +1403,51 @@
.toggleClass('is-selected', state.selectedId === itemId)
.toggleClass('is-sub', depth > 0)
.toggleClass('is-sub-deep', depth > 1);
+ var columnKey = role;
+ ensureBulkSelection(columnKey);
+ var i18nRow = membersAdminMenus.i18n || {};
+ var hasKids = node.children && node.children.length;
+ var $lead = $(' ');
+ if (hasKids) {
+ ensureCollapsedParents(columnKey);
+ var isCol = !!state.collapsedParents[columnKey][itemId];
+ var expandLbl = i18nRow.expandSubmenus || 'Expand submenu items';
+ var collapseLbl = i18nRow.collapseSubmenus || 'Collapse submenu items';
+ $(' ')
+ .attr('aria-expanded', !isCol)
+ .attr('aria-label', (isCol ? expandLbl : collapseLbl) + ': ' + label)
+ .append(
+ $(' ').addClass(
+ isCol ? 'dashicons-arrow-right-alt2' : 'dashicons-arrow-down-alt2'
+ )
+ )
+ .on('click', function (e) {
+ e.stopPropagation();
+ ensureCollapsedParents(columnKey);
+ state.collapsedParents[columnKey][itemId] = !state.collapsedParents[columnKey][itemId];
+ renderColumns();
+ })
+ .appendTo($lead);
+ $row.toggleClass('is-collapse-collapsed', isCol);
+ } else {
+ $lead.append($(' '));
+ }
+ $row.append($lead);
+ var cbPrefix = i18nRow.bulkCheckboxAria || 'Include in bulk actions';
+ var $cbWrap = $(' ');
+ var $cb = $(' ')
+ .prop('checked', !!state.columnBulkSelection[columnKey].ids[itemId])
+ .attr('aria-label', cbPrefix + ': ' + label)
+ .on('click', function (e) {
+ e.stopPropagation();
+ })
+ .on('change', function (e) {
+ e.stopPropagation();
+ setBulkCheckedCascade(columnKey, itemId, $(this).prop('checked'));
+ renderColumns();
+ });
+ $cbWrap.append($cb);
+ $row.append($cbWrap);
var $main = $('
');
if (depth === 0) {
var icon = ov.icon || node.icon;
@@ -1021,6 +1516,51 @@
if (noCap) cls += ' is-no-cap';
var $row = $('
').addClass(cls).attr('data-id', node.id).attr('data-menu-parent', parentMenuId || '');
+ var uColKey = 'u:' + uid;
+ ensureBulkSelection(uColKey);
+ var i18nURow = membersAdminMenus.i18n || {};
+ var hasKidsU = node.children && node.children.length;
+ var $leadU = $(' ');
+ if (hasKidsU) {
+ ensureCollapsedParents(uColKey);
+ var isColU = !!state.collapsedParents[uColKey][node.id];
+ var expandLblU = i18nURow.expandSubmenus || 'Expand submenu items';
+ var collapseLblU = i18nURow.collapseSubmenus || 'Collapse submenu items';
+ $(' ')
+ .attr('aria-expanded', !isColU)
+ .attr('aria-label', (isColU ? expandLblU : collapseLblU) + ': ' + label)
+ .append(
+ $(' ').addClass(
+ isColU ? 'dashicons-arrow-right-alt2' : 'dashicons-arrow-down-alt2'
+ )
+ )
+ .on('click', function (e) {
+ e.stopPropagation();
+ ensureCollapsedParents(uColKey);
+ state.collapsedParents[uColKey][node.id] = !state.collapsedParents[uColKey][node.id];
+ renderColumns();
+ })
+ .appendTo($leadU);
+ $row.toggleClass('is-collapse-collapsed', isColU);
+ } else {
+ $leadU.append($(' '));
+ }
+ $row.append($leadU);
+ var cbPrefixU = i18nURow.bulkCheckboxAria || 'Include in bulk actions';
+ var $cbWrapU = $(' ');
+ var $cbU = $(' ')
+ .prop('checked', !!state.columnBulkSelection[uColKey].ids[node.id])
+ .attr('aria-label', cbPrefixU + ': ' + label)
+ .on('click', function (e) {
+ e.stopPropagation();
+ })
+ .on('change', function (e) {
+ e.stopPropagation();
+ setBulkCheckedCascade(uColKey, node.id, $(this).prop('checked'));
+ renderColumns();
+ });
+ $cbWrapU.append($cbU);
+ $row.append($cbWrapU);
var $main = $('
');
if (depth === 0) {
@@ -1074,7 +1614,7 @@
$row.append($actions);
$row.on('click', function (e) {
- if ($(e.target).closest('button').length) return;
+ if ($(e.target).closest('button, .members-am-item-cb, .members-am-collapse-toggle').length) return;
state.selectedId = node.id;
renderAll();
});
@@ -1170,7 +1710,7 @@
axis: 'y',
distance: 6,
items: '> .members-am-item, > .members-am-sep',
- cancel: '.members-am-item-actions button',
+ cancel: '.members-am-item-actions button, .members-am-item-cb, .members-am-item-cb-wrap, .members-am-collapse-toggle',
placeholder: 'members-am-sort-placeholder',
forcePlaceholderSize: true,
tolerance: 'pointer',
@@ -1242,7 +1782,9 @@
});
$uc.append($list);
+ applyCollapsedState($list, 'u:' + uid);
bindColumnFilter($uc, $list, 'u:' + uid);
+ bindColumnBulk($uc, 'u:' + uid);
$cols.append($uc);
}
if (state.syncScroll) {
@@ -1805,8 +2347,57 @@
});
$('#members-am-columns')
+ .on('click', '.members-am-bulk-select-visible', function (e) {
+ e.preventDefault();
+ e.stopPropagation();
+ var key = $(this).closest('.members-am-col-bulk').attr('data-column-key');
+ if (!key) {
+ return;
+ }
+ var $list = $(this).closest('.members-am-column').find('.members-am-sidebar-list');
+ ensureBulkSelection(key);
+ $list.find(
+ '.members-am-item:not(.members-am-filter-hidden):not(.members-am-collapse-hidden)'
+ ).each(function () {
+ var id = $(this).attr('data-id');
+ if (id) {
+ setBulkCheckedCascade(key, id, true);
+ }
+ });
+ renderColumns();
+ })
+ .on('click', '.members-am-bulk-clear-selection', function (e) {
+ e.preventDefault();
+ e.stopPropagation();
+ var key = $(this).closest('.members-am-col-bulk').attr('data-column-key');
+ if (!key) {
+ return;
+ }
+ state.columnBulkSelection[key] = { ids: {} };
+ renderColumns();
+ })
+ .on('click', '.members-am-collapse-all', function (e) {
+ e.preventDefault();
+ e.stopPropagation();
+ var key = $(this).closest('.members-am-col-bulk').attr('data-column-key');
+ if (!key) {
+ return;
+ }
+ collapseAllInColumn(key);
+ renderColumns();
+ })
+ .on('click', '.members-am-expand-all', function (e) {
+ e.preventDefault();
+ e.stopPropagation();
+ var key = $(this).closest('.members-am-col-bulk').attr('data-column-key');
+ if (!key) {
+ return;
+ }
+ expandAllInColumn(key);
+ renderColumns();
+ })
.on('click', '.members-am-item', function (e) {
- if ($(e.target).closest('button').length) {
+ if ($(e.target).closest('button, .members-am-item-cb, .members-am-collapse-toggle').length) {
return;
}
state.selectedId = $(this).data('id');
diff --git a/js/admin-menus.min.js b/js/admin-menus.min.js
index 1b719bb..fd7de1a 100644
--- a/js/admin-menus.min.js
+++ b/js/admin-menus.min.js
@@ -1 +1 @@
-!function(h){"use strict";var g={settings:h.extend(!0,{},membersAdminMenus.settings),tree:[],activeRoleSlugs:[],carouselPage:0,columnsPerPage:3,selectedId:null,iconTab:"dashicons",previewUserId:null,previewUserRoles:[],userSuggestions:[],mediaFrame:null,allowUnload:!1,syncScroll:function(){try{return"0"!==localStorage.getItem("members_am_sync_scroll")}catch(e){return!0}}(),columnFilters:{}},s="";function n(){return function r(a){if(null===a)return"null";var e=typeof a;return"string"==e||"number"==e||"boolean"==e?JSON.stringify(a):"undefined"==e?"null":Array.isArray(a)?"["+a.map(function(e){return r(e)}).join(",")+"]":"object"!=e?JSON.stringify(a):"{"+Object.keys(a).sort().map(function(e){return JSON.stringify(e)+":"+r(a[e])}).join(",")+"}"}(g.settings)}function t(){if(!g.allowUnload&&n()!==s)return membersAdminMenus.i18n&&membersAdminMenus.i18n.unsavedChanges||""}var e=["dashicons-menu","dashicons-admin-dashboard","dashicons-admin-post","dashicons-admin-page","dashicons-admin-media","dashicons-admin-comments","dashicons-admin-appearance","dashicons-admin-plugins","dashicons-admin-users","dashicons-admin-tools","dashicons-admin-settings","dashicons-admin-generic","dashicons-edit","dashicons-plus","dashicons-chart-bar","dashicons-cart","dashicons-products","dashicons-email","dashicons-groups","dashicons-heart","dashicons-star-filled","dashicons-smiley","dashicons-info","dashicons-lock","dashicons-unlock","dashicons-visibility","dashicons-hidden","dashicons-arrow-up","dashicons-arrow-down","dashicons-admin-network","dashicons-performance"],r=["fa-solid fa-house","fa-solid fa-user","fa-solid fa-gear","fa-solid fa-file","fa-solid fa-image","fa-solid fa-cart-shopping","fa-solid fa-chart-line","fa-solid fa-envelope","fa-solid fa-book","fa-solid fa-link","fa-solid fa-bell","fa-solid fa-star","fa-solid fa-heart","fa-solid fa-lock","fa-solid fa-unlock","fa-solid fa-pen","fa-solid fa-trash","fa-solid fa-plus","fa-solid fa-minus"],i="members_am_view_state";function o(){try{localStorage.setItem(i,JSON.stringify({activeRoleSlugs:g.activeRoleSlugs,carouselPage:g.carouselPage}))}catch(e){}}function l(){return membersAdminMenus.roles||[]}function m(){g.settings._meta&&!Array.isArray(g.settings._meta)||(g.settings._meta={version:3,admin_editable:!1}),g.settings.roles&&!Array.isArray(g.settings.roles)||(g.settings.roles={}),g.settings.users&&!Array.isArray(g.settings.users)||(g.settings.users={}),Array.isArray(g.settings.custom_items)||(g.settings.custom_items=[]),g.settings.capabilities&&!Array.isArray(g.settings.capabilities)||(g.settings.capabilities={})}function _(e){m(),g.settings.roles[e]||(g.settings.roles[e]={hidden:[],order:[],submenu_order:{},overrides:{}});var r=g.settings.roles[e];return r.hidden&&Array.isArray(r.hidden)||(r.hidden=[]),r.order&&Array.isArray(r.order)||(r.order=[]),r.submenu_order&&!Array.isArray(r.submenu_order)||(r.submenu_order={}),r.overrides&&!Array.isArray(r.overrides)||(r.overrides={}),r}function x(e){m(),g.settings.users[e]||(g.settings.users[e]={});var r=g.settings.users[e];return r.hidden&&Array.isArray(r.hidden)||(r.hidden=[]),r.order&&Array.isArray(r.order)||(r.order=[]),r.overrides&&!Array.isArray(r.overrides)||(r.overrides={}),r.submenu_order&&!Array.isArray(r.submenu_order)||(r.submenu_order={}),r}function c(r){var e=x(r);return(e.order&&e.order.length?e.order.slice():w()).filter(function(e){return 0===e.indexOf("sep-")||!!b(e)&&!function(e,r){if(!r||-1!==r.indexOf("::"))return;var a=x(e),s=a.overrides&&a.overrides[r]||{};return s.parent&&"__promote__"!==s.parent}(r,e)})}function d(e,r,a,s){var n,t=x(e),i=t.overrides&&t.overrides[r]||{},o=a;!o&&i.parent&&"__promote__"!==i.parent&&(o=i.parent);var m,d,l,c,u=-1!==r.indexOf("::")?r.split("::").pop():r,p=(n=o?(t.submenu_order[o]||(t.submenu_order[o]=(m=e,l=A(d=o),c=x(m),g.tree.forEach(function(e){e&&e.id&&-1===e.id.indexOf("::")&&(c.overrides&&c.overrides[e.id]||{}).parent===d&&-1===l.indexOf(e.id)&&l.push(e.id)}),l)),t.submenu_order[o]):(t.order.length||(t.order=w()),t.order)).indexOf(u);if(-1!==p){var f=p+s;f<0||f>=n.length||(n.splice(p,1),n.splice(f,0,o?u:r))}}function u(e){var r=e.id||"c";return"members-am-"+String(r).replace(/[^a-z0-9_-]/gi,"-").toLowerCase()}function p(e){return!!e&&0===(-1!==e.indexOf("::")?e.split("::").pop():e).indexOf("members-am-")}function f(){var s=h.extend(!0,[],membersAdminMenus.menuTree||[]),n={};return s.forEach(function(e){n[e.id]=!0}),(g.settings.custom_items||[]).forEach(function(e){if(e&&e.id){var r=u(e);if(n[r]){for(var a=0;an&&(g.carouselPage=n))}}g.activeRoleSlugs=r.filter(function(e){return"administrator"!==e||a}),g.activeRoleSlugs.length||(g.activeRoleSlugs=["subscriber"])}function J(){var s=h("#members-am-role-chips").empty();l().forEach(function(e){if("administrator"!==e.slug||g.settings._meta.admin_editable){var r=-1!==g.activeRoleSlugs.indexOf(e.slug),a=h(' ').text(e.label).attr("data-role",e.slug).toggleClass("is-active",r);s.append(a)}})}function L(t,i,e,o,m){(function(e,r,a,s,n){n=n||0;var t=r.id,i=M(e,t),o=!C(e,r.cap),m=_(e).overrides[t]||{},d=m.label||r.title||t,l=h('
').attr("data-id",t).attr("data-menu-parent",a||"").toggleClass("is-hidden",i).toggleClass("is-no-cap",o).toggleClass("is-selected",g.selectedId===t).toggleClass("is-sub",0 ');if(0===n){var u=m.icon||r.icon,p=P(u,m.icon_type||r.icon_type);if("fontawesome"===p&&u)c.append(h(' '));else if("svg"!==p&&"image"!==p&&"custom"!==p||!u){var f=u&&0===u.indexOf("dashicons-")?u:"dashicons-admin-generic";c.append(h(' '))}else c.append(h(" ").attr("src",u).css({width:"20px",height:"20px",display:"inline-block",verticalAlign:"middle",objectFit:"contain",filter:"none"}))}r.custom&&c.append(h('custom '));m.label&&c.append(h('edit '));if(c.append(h(' ').text(d)),m.badge){var b=m.badge_bg||"#d63638";c.append(h(' ').text(m.badge).css({backgroundColor:b,color:"#fff",fontSize:"9px",padding:"1px 5px",borderRadius:"2px",marginLeft:"4px",whiteSpace:"nowrap"}))}o&&c.append(h(' Roles.\">🔒 no access "));l.append(c),m.color_bg&&l.css("background-color",m.color_bg);m.color_text&&l.find(".members-am-item-label").css("color",m.color_text);m.color_icon&&(l.find(".dashicons").css("color",m.color_icon),l.find(".members-am-fa-icon i").css("color",m.color_icon),l.find("img").css("filter","none"));var v=h('
');v.append(h(' ').text("◉"),h(' ').text("↑"),h(' ').text("↓")),l.append(v),s.append(l)})(t,i,e,o,m=m||0),i.children&&i.children.length&&k(t,i.id).forEach(function(e){var r,a,s,n=(r=t,a=i.id,b(I(a,s=e))||(-1===s.indexOf("::")&&(_(r).overrides[s]||{}).parent===a?b(s):null));n&&"__promote__"!==(_(t).overrides[n.id]||{}).parent&&L(t,n,i.id,o,m+1)})}function F(a,s,e,n,t,i){i=i||0,t.append(function(r,e,a,s,n){n=n||0;var t=s.overrides&&s.overrides[r.id]||{},i=t.label||r.title,o=function(e,r){var a=x(e);if(-1!==a.hidden.indexOf(r))return!0;var s=y(r,e);return!(!s||-1===a.hidden.indexOf(s))}(a,r.id),m=!function(e){if(!e||"read"===e)return 1;for(var r=g.previewUserRoles||[],a=0;a").addClass(l).attr("data-id",r.id).attr("data-menu-parent",e||""),u=h('
');if(0===n){var p=t.icon||r.icon,f=P(p,t.icon_type||r.icon_type);"fontawesome"===f&&p?u.append(h(' ')):"svg"!==f&&"image"!==f&&"custom"!==f||!p?p&&0===p.indexOf("dashicons-")?u.append(h(' ')):u.append(h(' ')):u.append(h(" ").attr("src",p).css({width:"20px",height:"20px",display:"inline-block",verticalAlign:"middle",objectFit:"contain",filter:"none"}))}r.custom&&u.append(h('custom '));t.label&&u.append(h('edit '));if(u.append(h(' ').text(i)),t.badge){var b=t.badge_bg||"#d63638";u.append(h(' ').text(t.badge).css({backgroundColor:b,color:"#fff",fontSize:"9px",padding:"1px 5px",borderRadius:"2px",marginLeft:"4px",whiteSpace:"nowrap"}))}m&&u.append(h('🔒 no access "));c.append(u),t.color_bg&&c.css("background-color",t.color_bg);t.color_text&&c.find(".members-am-item-label").css("color",t.color_text);t.color_icon&&(c.find(".dashicons").css("color",t.color_icon),c.find(".members-am-fa-icon i").css("color",t.color_icon));var v=h('
');return v.append(h(' ').text(o?"◯":"◉"),h(' ').text("↑"),h(' ').text("↓")),c.append(v),c.on("click",function(e){h(e.target).closest("button").length||(g.selectedId=r.id,re())}),c}(s,e,a,n,i)),s.children&&s.children.length&&function(e,r){var a=A(r),s=x(e);g.tree.forEach(function(e){e&&e.id&&-1===e.id.indexOf("::")&&(s.overrides&&s.overrides[e.id]||{}).parent===r&&-1===a.indexOf(e.id)&&a.push(e.id)});var n=s.submenu_order&&s.submenu_order[r];if(!n||!n.length)return a.slice();var t=n.filter(function(e){return-1!==a.indexOf(e)});return a.forEach(function(e){-1===t.indexOf(e)&&t.push(e)}),t}(a,s.id).forEach(function(e){var r=function(e,r,a){var s=b(I(r,a));if(s)return s;if(-1===a.indexOf("::")){var n=x(e);if((n.overrides&&n.overrides[a]||{}).parent===r)return b(a)}return null}(a,s.id,e);r&&"__promote__"!==(n.overrides&&n.overrides[r.id]||{}).parent&&F(a,r,s.id,n,t,i+1)})}function j(e,r){var n=(r||"").trim().toLowerCase(),a=e.children(".members-am-item");if(!n)return a.removeClass("members-am-filter-hidden"),void e.children(".members-am-sep").removeClass("members-am-filter-hidden");var i={};a.each(function(){var e=h(this),r=e.attr("data-id"),a=(e.find(".members-am-item-label").first().text()||"").toLowerCase(),s=(r||"").toLowerCase();i[r]=-1!==a.indexOf(n)||-1!==s.indexOf(n)});var o={};a.each(function(){var e=h(this).attr("data-id"),r=h(this).attr("data-menu-parent")||"";o[r]||(o[r]=[]),o[r].push(e)});var m={};function d(e){var r,a=i[e],s=o[e]||[],n=!1;for(r=0;r '),o=h(' ').attr("placeholder",n).attr("aria-label",t).val(s);i.append(o),e.find(".members-am-sidebar-head").first().after(i),o.on("input",function(){g.columnFilters[a]=h(this).val(),j(r,h(this).val())}),j(r,s)}function D(e){return-1!==e.indexOf("::")?e.split("::").pop():e}function W(){h.fn.sortable&&h("#members-am-columns .members-am-sidebar-list").each(function(){var e=h(this);e.data("ui-sortable")&&e.sortable("destroy");var r=e.closest(".members-am-column"),a=r.data("role"),s=r.data("user");e.sortable({axis:"y",distance:6,items:"> .members-am-item, > .members-am-sep",cancel:".members-am-item-actions button",placeholder:"members-am-sort-placeholder",forcePlaceholderSize:!0,tolerance:"pointer",update:function(){s?function(e,r){var n=[],t={};e.children().each(function(){var e=h(this);if(e.hasClass("members-am-sep")){var r=e.attr("data-sep-id");r&&n.push(r)}else if(e.hasClass("members-am-item")){var a=e.attr("data-id");if(a){var s=e.attr("data-menu-parent");void 0===s||""===s?n.push(a):(t[s]||(t[s]=[]),t[s].push(D(a)))}}});var a=x(r);a.order=n,a.submenu_order=t}(e,s):a&&function(e,r){var n=[],t={};e.children().each(function(){var e=h(this);if(e.hasClass("members-am-sep")){var r=e.attr("data-sep-id");r&&n.push(r)}else if(e.hasClass("members-am-item")){var a=e.attr("data-id");if(a){var s=e.attr("data-menu-parent");void 0===s||""===s?n.push(a):(t[s]||(t[s]=[]),t[s].push(D(a)))}}});var a=_(r);a.order=n,a.submenu_order=t}(e,a),q()}})})}function Q(){var a=h("#members-am-columns"),s={};a.find(".members-am-column").each(function(){var e=h(this).data("role");if(e){var r=h(this).find(".members-am-sidebar-list");r.length&&(s[e]=r.scrollTop())}}),a.empty();var e=g.carouselPage*g.columnsPerPage;if(g.activeRoleSlugs.slice(e,e+g.columnsPerPage).forEach(function(e){var r=h('
');!function(a,e){e.empty();var r=h(''),s=(l().filter(function(e){return e.slug===a})[0]||{}).label||a;r.append(h('').text(s)),r.append(h(' ').append(h(' ').text("◀"),h(' ').text("▶"))),e.append(r);var n=h('');S(a).forEach(function(e){if(0!==e.indexOf("sep-")){var r=b(e);r&&L(a,r,null,n,0)}else n.append(h('
').attr("data-sep-id",e).text("—"))}),e.append(n),z(e,n,a)}(e,r),a.append(r),s[e]&&r.find(".members-am-sidebar-list").scrollTop(s[e])}),g.previewUserId){var n=g.previewUserId,r=h('
'),t=h('');t.append(h(" ").text(g.previewUserLabel||"User #"+n)),t.append(h('× ').on("click",function(){g.previewUserId=null,g.previewUserLabel=null,g.previewUserRoles=[],re()})),r.append(t);var i=h(''),o=x(n);c(n).forEach(function(e){if(0!==e.indexOf("sep-")){var r=b(e);r&&F(n,r,null,o,i,0)}else i.append(h('
').attr("data-sep-id",e).text("——"))}),r.append(i),z(r,i,"u:"+n),a.append(r)}if(g.syncScroll){var m=a.find(".members-am-sidebar-list"),d=!1;m.on("scroll",function(){if(!d){d=!0;var e=h(this).scrollTop();m.not(this).scrollTop(e),d=!1}})}!function(){var e=Math.max(1,Math.ceil(g.activeRoleSlugs.length/g.columnsPerPage)),r=(Math.min(g.carouselPage+1,e),g.carouselPage*g.columnsPerPage+1),a=Math.min((g.carouselPage+1)*g.columnsPerPage,g.activeRoleSlugs.length);h("#members-am-carousel-status").text(r+"–"+a+" "+membersAdminMenus.i18n.of+" "+g.activeRoleSlugs.length);for(var s=h("#members-am-carousel-dots").empty(),n=0;n ').toggleClass("is-active",n===g.carouselPage))}(),W()}function q(){if(g.selectedId){h("#members-am-edit-panel").removeAttr("hidden");var e=b(g.selectedId),r=U()||{};h("#members-am-edit-title").text(e?e.title:g.selectedId),h("#members-am-edit-label").val(r.label||e&&e.title||"");var a=p(g.selectedId);h("#members-am-edit-url-wrap").toggle(a),h("#members-am-edit-url").attr("placeholder","Override URL (leave empty for default)").val(a&&(r.url||e&&e.url)||"").data("default-url",e&&e.url||""),h("#members-am-icon-type").val(r.icon_type||"dashicon"),h("#members-am-icon-value").val(r.icon||e&&e.icon||"");var s=r.icon||e&&e.icon||"",n=P(s,r.icon_type||e&&e.icon_type||"");"image"!==n&&"custom"!==n&&"svg"!==n||!s?h("#members-am-icon-preview").hide():h("#members-am-icon-preview").show().attr("src",s),h("#members-am-color-bg").val(r.color_bg||""),h("#members-am-color-text").val(r.color_text||""),h("#members-am-color-icon").val(r.color_icon||""),h("#members-am-badge-text").val(r.badge||""),h("#members-am-badge-bg").val(r.badge_bg||""),h("#members-am-item-cap").attr("placeholder",e&&e.cap?e.cap+" (default)":"").val(g.settings.capabilities[g.selectedId]||"");var t=e&&e.custom;h("#members-am-remove-custom").toggle(!!t),h("#members-am-visibility-toggles").empty();var i=e&&e.cap||"read";l().forEach(function(e){if("administrator"!==e.slug||g.settings._meta.admin_editable){var r=M(e.slug,g.selectedId),a=C(e.slug,i),s=h(' ').attr("data-role",e.slug).prop("checked",!r&&a);a||s.prop("disabled",!0);var n=h(' ').append(s,h(" ").text(e.label));a||(n.append(h(" ").text(" — no capability").css({color:"#999",fontStyle:"italic",marginLeft:"4px"})),n.css("opacity","0.5")),h("#members-am-visibility-toggles").append(n)}}),h(".members-am-color").each(function(){h(this).data("wpWpColorPicker")&&h(this).wpColorPicker("destroy")}),h(".members-am-color").wpColorPicker({change:function(e,r){setTimeout(function(){B()},20)},clear:function(){setTimeout(function(){B()},20)}}),G(),function(){var e=h(".members-am-demote-wrap"),a=h("#members-am-demote-parent"),r=h("#members-am-demote");if(!g.selectedId)return e.attr("hidden",!0);if(v(g.selectedId))return e.attr("hidden",!0);var s=R()[0]||g.activeRoleSlugs[0];if(s&&O(s,g.selectedId))return e.attr("hidden",!0);e.removeAttr("hidden");var n=g.selectedId,t=membersAdminMenus.i18n&&membersAdminMenus.i18n.selectParentMenu||"";a.empty().append(h(" ").val("").text(t));var i=0;g.tree.forEach(function(e){if(e&&e.id&&e.id!==n){var r=e.title&&String(e.title).trim()?e.title:e.id;a.append(h(" ").val(e.id).text(r)),i++}});var o=0 ');"dashicons"===a?r.append(h(' ')):r.append(h(' ')),r.on("click",function(){h("#members-am-icon-value").val(e),h("#members-am-icon-type").val("dashicons"===a?"dashicon":"fontawesome"),B()}),n.append(r)}})}function a(e,r){var a=g.activeRoleSlugs.indexOf(e);if(-1!==a){var s=a+r;if(!(s<0||s>=g.activeRoleSlugs.length)){var n=g.activeRoleSlugs[a];g.activeRoleSlugs[a]=g.activeRoleSlugs[s],g.activeRoleSlugs[s]=n,o(),re()}}}function H(e,r,a){var s,n,t,i=_(e).overrides[r]||{},o=null;if("__promote__"===i.parent?o=null:-1!==r.indexOf("::")?o=v(r):i.parent&&"__promote__"!==i.parent&&(o=i.parent),o){var m=_(e).submenu_order;m[o]||(m[o]=(s=e,t=A(n=o),g.tree.forEach(function(e){e&&e.id&&-1===e.id.indexOf("::")&&(_(s).overrides[e.id]||{}).parent===n&&-1===t.indexOf(e.id)&&t.push(e.id)}),t));var d=m[o],l=-1!==r.indexOf("::")?r.split("::").pop():r;if(-1===(u=d.indexOf(l)))return;if((p=u+a)<0||p>=d.length)return;var c=d[u];d[u]=d[p],d[p]=c}else{_(e).order&&_(e).order.length||(_(e).order=w());var u,p,f=_(e).order;if(-1===(u=f.indexOf(r)))return;if((p=u+a)<0||p>=f.length)return;var b=f[u];f[u]=f[p],f[p]=b}re()}function K(){var e=R();if(e.length){var s="sep-"+Date.now();e.forEach(function(e){_(e).order&&_(e).order.length||(_(e).order=w());var r=_(e).order,a=g.selectedId?r.indexOf(g.selectedId):r.length-1;a<0&&(a=r.length),r.splice(a+1,0,s)}),re()}}function V(e){var r=h("#members-am-toolbar-loading");r.removeAttr("hidden"),r.find(".spinner").addClass("is-active"),r.find(".members-am-loading-text").text(e||""),h("#members-am-save, #members-am-reset, #members-am-import, #members-am-copy-apply").prop("disabled",!0)}function X(){var e=h("#members-am-toolbar-loading");e.attr("hidden",!0),e.find(".spinner").removeClass("is-active"),e.find(".members-am-loading-text").text(""),h("#members-am-save, #members-am-reset, #members-am-import, #members-am-copy-apply").prop("disabled",!1)}function Y(e){V(e||membersAdminMenus.i18n&&membersAdminMenus.i18n.saving||"Saving…");var r=!1,n=membersAdminMenus.i18n&&membersAdminMenus.i18n.networkError||"Could not save settings. Check your connection and try again.";h.ajax({url:membersAdminMenus.ajaxUrl,type:"POST",dataType:"json",timeout:6e4,data:{action:"members_admin_menus_save",nonce:membersAdminMenus.nonce,settings:JSON.stringify(g.settings)}}).done(function(e){if(e&&void 0!==e.success)return e.success?(g.allowUnload=!0,alert(membersAdminMenus.i18n.saved),r=!0,void location.reload()):void alert(e.data&&e.data.message?e.data.message:"Error");alert(n)}).fail(function(e,r){if("abort"!==r){var a=n;if(e&&e.responseJSON&&void 0!==e.responseJSON.data){var s=e.responseJSON.data;"string"==typeof s&&s?a=s:s&&"string"==typeof s.message&&s.message&&(a=s.message)}alert(a)}}).always(function(){r||X()})}function Z(e,r){if(confirm("role"===e&&r?"Reset all settings for this role? This cannot be undone.":"Reset ALL menu settings for every role? This cannot be undone.")){V(membersAdminMenus.i18n&&membersAdminMenus.i18n.resetting||"Resetting…");var a=!1;h.post(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_reset",nonce:membersAdminMenus.nonce,scope:e||"all",role:r||""}).done(function(e){if(e.success)return g.allowUnload=!0,a=!0,void location.reload();alert(e.data&&e.data.message?e.data.message:"Reset failed.")}).fail(function(){alert(membersAdminMenus.i18n.networkError||"Could not reset settings. Check your connection and try again.")}).always(function(){a||X()})}}function $(e){h.getJSON(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_user_search",nonce:membersAdminMenus.nonce,term:e},function(e){e.success&&e.data&&e.data.length?function(e){h(".members-am-user-suggestions").remove();var r=h("#members-am-user-search").parent();r.css("position","relative");var a=h('
');e.forEach(function(e){a.append(h('
').text(e.label).data("userId",e.id).on("click",function(){!function(e,r,a){g.previewUserId=e,g.previewUserLabel=r||"User #"+e,g.previewUserRoles=a||[],m(),g.settings.users[e]||(g.settings.users[e]={});re()}(e.id,e.label,e.roles),h(".members-am-user-suggestions").remove(),h("#members-am-user-search").val("")}))}),r.append(a),setTimeout(function(){h(document).one("click",function(){h(".members-am-user-suggestions").remove()})},0)}(e.data):h(".members-am-user-suggestions").remove()})}function ee(){var r;h(document).on("click","#members-am-role-chips .members-am-chip",function(){var e=h(this).data("role"),r=g.activeRoleSlugs.indexOf(e);-1===r?g.activeRoleSlugs.push(e):1 ');if(t.append(h('
').text("Reset Settings")),s&&n){var i=h(' ');i.append(h(' ')),i.append(h(' ').append(h(" ").text("Reset "+n),h(" ").text("Clear all menu settings for this role only"))),i.on("click",function(){h(".members-am-reset-dropdown").remove(),Z("role",s)}),t.append(i)}var o=h(' ');o.append(h(' ')),o.append(h(' ').append(h(" ").text("Reset all roles"),h(" ").text("Clear all menu settings for every role"))),o.on("click",function(){h(".members-am-reset-dropdown").remove(),Z("all")}),t.append(o),r.parent().css("position","relative"),t.insertAfter(r),h(document).one("click",function(){h(".members-am-reset-dropdown").remove()})}),h("#members-am-export").on("click",function(e){e.preventDefault(),window.location.href=membersAdminMenus.exportUrl}),h("#members-am-import").on("click",function(){h("#members-am-import-file").trigger("click")}),h("#members-am-import-file").on("change",function(){var e=this.files&&this.files[0];e&&function(e){V(membersAdminMenus.i18n&&membersAdminMenus.i18n.importing||"Importing…");var a=new FileReader;a.onerror=function(){X(),alert(membersAdminMenus.i18n&&membersAdminMenus.i18n.networkError||"Could not read the file.")},a.onload=function(){try{var e=JSON.parse(a.result),r=!1;h.post(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_import",nonce:membersAdminMenus.nonce,settings:JSON.stringify(e)}).done(function(e){if(e.success)return g.allowUnload=!0,r=!0,void location.reload();alert(e.data&&e.data.message?e.data.message:"Error")}).fail(function(){alert(membersAdminMenus.i18n.networkError||"Could not import settings. Check your connection and try again.")}).always(function(){r||X()})}catch(e){X(),alert("Invalid JSON")}},a.readAsText(e)}(e)}),h("#members-am-copy-apply").on("click",function(){var a=h("#members-am-copy-from").val(),r=h("#members-am-copy-to").val();if(a&&r)if(a!==r){var s="",n="";if(l().forEach(function(e){e.slug===a&&(s=e.label),e.slug===r&&(n=e.label)}),confirm('Copy menu settings from "'+s+'" to "'+n+'"?\nThis will overwrite "'+n+"\" menu configuration.\n\nNote: This copies menu order, hidden items, labels, icons, and colors.\nIt does NOT change the role's capabilities (items marked with a lock icon).")){var e=_(a),t={hidden:e.hidden?e.hidden.slice():[],order:[],submenu_order:{},overrides:{}},i=S(a);t.order=i.slice(),g.tree.forEach(function(e){if(e.children&&e.children.length){var r=k(a,e.id);r&&r.length&&(t.submenu_order[e.id]=r.slice())}}),e.overrides&&"object"==typeof e.overrides&&(t.overrides=JSON.parse(JSON.stringify(e.overrides))),g.settings.roles[r]=t,-1===g.activeRoleSlugs.indexOf(r)&&(g.activeRoleSlugs.push(r),o(),J()),re(),Y(membersAdminMenus.i18n&&membersAdminMenus.i18n.copying||"Copying…")}}else alert("Source and target roles must be different.")}),h("#members-am-admin-editable").on("change",function(){var e=!0;h(this).is(":checked")&&(e=window.confirm(membersAdminMenus.i18n.adminEditableWarn)),e?(g.settings._meta.admin_editable=h(this).is(":checked"),N(),J(),o(),re()):h(this).prop("checked",!1)}),h("#members-am-sync-scroll").prop("checked",!1!==g.syncScroll),h("#members-am-sync-scroll").on("change",function(){g.syncScroll=h(this).is(":checked");try{localStorage.setItem("members_am_sync_scroll",g.syncScroll?"1":"0")}catch(e){}Q()}),h("#members-am-add-item").on("click",function(){var e="c"+Date.now();g.settings.custom_items.push({id:e,label:"Custom link",url:window.location.origin+"/wp-admin/",icon_type:"dashicon",icon:"dashicons-admin-generic",parent:"",position:99,cap:"read"}),g.tree=f(),g.selectedId=u({id:e}),re(),q()}),h("#members-am-remove-custom").on("click",function(){var r=b(g.selectedId);r&&r.customId&&(g.settings.custom_items=(g.settings.custom_items||[]).filter(function(e){return e.id!==r.customId}),g.selectedId=null,g.tree=f(),re(),h("#members-am-edit-panel").attr("hidden",!0))}),h("#members-am-edit-close").on("click",function(){g.selectedId=null,h("#members-am-edit-panel").attr("hidden",!0),re()}),h("#members-am-edit-target-role").on("change",q),h("#members-am-edit-label, #members-am-edit-url, #members-am-icon-value, #members-am-badge-text").on("input",function(){B()}),h("#members-am-item-cap").on("input",function(){B()}),h(".members-am-icon-tabs .button").on("click",function(){h(".members-am-icon-tabs .button").removeClass("is-active"),h(this).addClass("is-active"),g.iconTab="fontawesome"===h(this).data("tab")?"fontawesome":"upload"===h(this).data("tab")?"upload":"dashicons",G()}),h("#members-am-icon-search").on("input",G),h("#members-am-media-upload").on("click",function(e){e.preventDefault(),g.mediaFrame||(g.mediaFrame=wp.media({title:"Choose menu icon",button:{text:"Use as icon"},multiple:!1,library:{type:"image"}}),g.mediaFrame.on("select",function(){var e=g.mediaFrame.state().get("selection").first().toJSON(),r=e.url||"";e.sizes&&(e.sizes.thumbnail?r=e.sizes.thumbnail.url:e.sizes.medium&&(r=e.sizes.medium.url)),h("#members-am-icon-type").val("custom"),h("#members-am-icon-value").val(r),B()})),g.mediaFrame.open()}),h(document).on("change",".members-am-vis-cb",function(){var e=h(this).data("role");if(h(this).is(":checked")){var r=_(e).hidden,a=r.indexOf(g.selectedId);-1!==a&&r.splice(a,1)}else-1===_(e).hidden.indexOf(g.selectedId)&&_(e).hidden.push(g.selectedId);re()}),h("#members-am-add-sep").on("click",K),h("#members-am-promote").on("click",function(){if(g.selectedId){var n=g.selectedId,e=U()||{};if(-1===n.indexOf("::")&&e.parent&&"__promote__"!==e.parent){var t=e.parent,r=E();if(r){var a=x(r);if(a.overrides[n]&&delete a.overrides[n].parent,a.submenu_order&&a.submenu_order[t]){var s=a.submenu_order[t].indexOf(n);-1!==s&&a.submenu_order[t].splice(s,1)}if(a.order.length||(a.order=w()),-1===a.order.indexOf(n)){var i=a.order.indexOf(t);-1!==i?a.order.splice(i+1,0,n):a.order.push(n)}}else R().forEach(function(e){var r=_(e);if(r.overrides[n]&&delete r.overrides[n].parent,r.submenu_order&&r.submenu_order[t]){var a=r.submenu_order[t].indexOf(n);-1!==a&&r.submenu_order[t].splice(a,1)}if(r.order&&r.order.length||(r.order=w()),-1===r.order.indexOf(n)){var s=r.order.indexOf(t);-1!==s?r.order.splice(s+1,0,n):r.order.push(n)}});return B(),void q()}T("parent","__promote__");var o=v(n);R().forEach(function(e){var r=_(e);if(r.order&&r.order.length||(r.order=w()),-1===r.order.indexOf(n))if(o){var a=r.order.indexOf(o);-1!==a?r.order.splice(a+1,0,n):r.order.push(n)}else r.order.push(n)}),B(),q()}}),h("#members-am-demote").on("click",function(){var e=h("#members-am-demote-parent").val();e?(T("parent",e),B(),q()):window.alert(membersAdminMenus.i18n&&membersAdminMenus.i18n.selectParentFirst||"Please choose a parent menu from the list.")}),h("#members-am-user-search").on("input",function(){var e=h(this).val();clearTimeout(r),r=setTimeout(function(){1 ").val("__all__").text("All roles")),g.activeRoleSlugs.forEach(function(r){var e=(l().filter(function(e){return e.slug===r})[0]||{}).label||r;a.append(h(" ").val(r).text(e))}),g.previewUserId&&a.append(h(" ").val("__user__"+g.previewUserId).text(g.previewUserLabel||"User #"+g.previewUserId)),g.selectedId&&q()}h(function(){var r,a,e;m(),g.tree=f(),N(),h("#members-am-admin-editable").prop("checked",!!g.settings._meta.admin_editable),r=h("#members-am-copy-from").empty(),a=h("#members-am-copy-to").empty(),(e=l()).forEach(function(e){r.append(h(" ").val(e.slug).text(e.label)),a.append(h(" ").val(e.slug).text(e.label))}),1=t.length||(t.splice(p,1),t.splice(f,0,o?u:a))}}function u(e){var a=e.id||"c";return"members-am-"+String(a).replace(/[^a-z0-9_-]/gi,"-").toLowerCase()}function p(e){return!!e&&0===(-1!==e.indexOf("::")?e.split("::").pop():e).indexOf("members-am-")}function f(){var r=C.extend(!0,[],membersAdminMenus.menuTree||[]),t={};return r.forEach(function(e){t[e.id]=!0}),(I.settings.custom_items||[]).forEach(function(e){if(e&&e.id){var a=u(e);if(t[a]){for(var n=0;nt&&(I.carouselPage=t))}}I.activeRoleSlugs=a.filter(function(e){return"administrator"!==e||n}),I.activeRoleSlugs.length||(I.activeRoleSlugs=["subscriber"])}function X(){var r=C("#members-am-role-chips").empty();c().forEach(function(e){if("administrator"!==e.slug||I.settings._meta.admin_editable){var a=-1!==I.activeRoleSlugs.indexOf(e.slug),n=C(' ').text(e.label).attr("data-role",e.slug).toggleClass("is-active",a);r.append(n)}})}function Y(s,i,e,o,l){(function(e,a,n,r,t){t=t||0;var s=a.id,i=R(e,s),o=!U(e,a.cap),l=P(e).overrides[s]||{},m=l.label||a.title||s,c=C('
').attr("data-id",s).attr("data-menu-parent",n||"").toggleClass("is-hidden",i).toggleClass("is-no-cap",o).toggleClass("is-selected",I.selectedId===s).toggleClass("is-sub",0 ');if(p){L(d);var b=!!I.collapsedParents[d][s],h=u.expandSubmenus||"Expand submenu items",v=u.collapseSubmenus||"Collapse submenu items";C(' ').attr("aria-expanded",!b).attr("aria-label",(b?h:v)+": "+m).append(C(' ').addClass(b?"dashicons-arrow-right-alt2":"dashicons-arrow-down-alt2")).on("click",function(e){e.stopPropagation(),L(d),I.collapsedParents[d][s]=!I.collapsedParents[d][s],te()}).appendTo(f),c.toggleClass("is-collapse-collapsed",b)}else f.append(C(' '));c.append(f);var g=u.bulkCheckboxAria||"Include in bulk actions",x=C(' '),y=C(' ').prop("checked",!!I.columnBulkSelection[d].ids[s]).attr("aria-label",g+": "+m).on("click",function(e){e.stopPropagation()}).on("change",function(e){e.stopPropagation(),j(d,s,C(this).prop("checked")),te()});x.append(y),c.append(x);var _=C('
');if(0===t){var k=l.icon||a.icon,w=T(k,l.icon_type||a.icon_type);if("fontawesome"===w&&k)_.append(C(' '));else if("svg"!==w&&"image"!==w&&"custom"!==w||!k){var O=k&&0===k.indexOf("dashicons-")?k:"dashicons-admin-generic";_.append(C(' '))}else _.append(C(" ").attr("src",k).css({width:"20px",height:"20px",display:"inline-block",verticalAlign:"middle",objectFit:"contain",filter:"none"}))}a.custom&&_.append(C('custom '));l.label&&_.append(C('edit '));if(_.append(C(' ').text(m)),l.badge){var S=l.badge_bg||"#d63638";_.append(C(' ').text(l.badge).css({backgroundColor:S,color:"#fff",fontSize:"9px",padding:"1px 5px",borderRadius:"2px",marginLeft:"4px",whiteSpace:"nowrap"}))}o&&_.append(C(' Roles.\">🔒 no access "));c.append(_),l.color_bg&&c.css("background-color",l.color_bg);l.color_text&&c.find(".members-am-item-label").css("color",l.color_text);l.color_icon&&(c.find(".dashicons").css("color",l.color_icon),c.find(".members-am-fa-icon i").css("color",l.color_icon),c.find("img").css("filter","none"));var A=C('
');A.append(C(' ').text("◉"),C(' ').text("↑"),C(' ').text("↓")),c.append(A),r.append(c)})(s,i,e,o,l=l||0),i.children&&i.children.length&&k(s,i.id).forEach(function(e){var a,n,r,t=(a=s,n=i.id,b(w(n,r=e))||(-1===r.indexOf("::")&&(P(a).overrides[r]||{}).parent===n?b(r):null));t&&"__promote__"!==(P(s).overrides[t.id]||{}).parent&&Y(s,t,i.id,o,l+1)})}function Z(n,r,e,t,s,i){i=i||0,s.append(function(a,e,n,r,t){t=t||0;var s=r.overrides&&r.overrides[a.id]||{},i=s.label||a.title,o=function(e,a){var n=M(e);if(-1!==n.hidden.indexOf(a))return!0;var r=E(a,e);return!(!r||-1===n.hidden.indexOf(r))}(n,a.id),l=!function(e){if(!e||"read"===e)return 1;for(var a=I.previewUserRoles||[],n=0;n").addClass(c).attr("data-id",a.id).attr("data-menu-parent",e||""),u="u:"+n;N(u);var p=membersAdminMenus.i18n||{},f=a.children&&a.children.length,b=C(' ');if(f){L(u);var h=!!I.collapsedParents[u][a.id],v=p.expandSubmenus||"Expand submenu items",g=p.collapseSubmenus||"Collapse submenu items";C(' ').attr("aria-expanded",!h).attr("aria-label",(h?v:g)+": "+i).append(C(' ').addClass(h?"dashicons-arrow-right-alt2":"dashicons-arrow-down-alt2")).on("click",function(e){e.stopPropagation(),L(u),I.collapsedParents[u][a.id]=!I.collapsedParents[u][a.id],te()}).appendTo(b),d.toggleClass("is-collapse-collapsed",h)}else b.append(C(' '));d.append(b);var x=p.bulkCheckboxAria||"Include in bulk actions",y=C(' '),_=C(' ').prop("checked",!!I.columnBulkSelection[u].ids[a.id]).attr("aria-label",x+": "+i).on("click",function(e){e.stopPropagation()}).on("change",function(e){e.stopPropagation(),j(u,a.id,C(this).prop("checked")),te()});y.append(_),d.append(y);var k=C('
');if(0===t){var w=s.icon||a.icon,O=T(w,s.icon_type||a.icon_type);"fontawesome"===O&&w?k.append(C(' ')):"svg"!==O&&"image"!==O&&"custom"!==O||!w?w&&0===w.indexOf("dashicons-")?k.append(C(' ')):k.append(C(' ')):k.append(C(" ").attr("src",w).css({width:"20px",height:"20px",display:"inline-block",verticalAlign:"middle",objectFit:"contain",filter:"none"}))}a.custom&&k.append(C('custom '));s.label&&k.append(C('edit '));if(k.append(C(' ').text(i)),s.badge){var S=s.badge_bg||"#d63638";k.append(C(' ').text(s.badge).css({backgroundColor:S,color:"#fff",fontSize:"9px",padding:"1px 5px",borderRadius:"2px",marginLeft:"4px",whiteSpace:"nowrap"}))}l&&k.append(C('🔒 no access "));d.append(k),s.color_bg&&d.css("background-color",s.color_bg);s.color_text&&d.find(".members-am-item-label").css("color",s.color_text);s.color_icon&&(d.find(".dashicons").css("color",s.color_icon),d.find(".members-am-fa-icon i").css("color",s.color_icon));var A=C('
');return A.append(C(' ').text(o?"◯":"◉"),C(' ').text("↑"),C(' ').text("↓")),d.append(A),d.on("click",function(e){C(e.target).closest("button, .members-am-item-cb, .members-am-collapse-toggle").length||(I.selectedId=a.id,he())}),d}(r,e,n,t,i)),r.children&&r.children.length&&function(e,a){var n=y(a),r=M(e);I.tree.forEach(function(e){e&&e.id&&-1===e.id.indexOf("::")&&(r.overrides&&r.overrides[e.id]||{}).parent===a&&-1===n.indexOf(e.id)&&n.push(e.id)});var t=r.submenu_order&&r.submenu_order[a];if(!t||!t.length)return n.slice();var s=t.filter(function(e){return-1!==n.indexOf(e)});return n.forEach(function(e){-1===s.indexOf(e)&&s.push(e)}),s}(n,r.id).forEach(function(e){var a=function(e,a,n){var r=b(w(a,n));if(r)return r;if(-1===n.indexOf("::")){var t=M(e);if((t.overrides&&t.overrides[n]||{}).parent===a)return b(n)}return null}(n,r.id,e);a&&"__promote__"!==(t.overrides&&t.overrides[a.id]||{}).parent&&Z(n,a,r.id,t,s,i+1)})}function $(e,a){var t=(a||"").trim().toLowerCase(),n=e.children(".members-am-item");if(!t)return n.removeClass("members-am-filter-hidden"),void e.children(".members-am-sep").removeClass("members-am-filter-hidden");var i={};n.each(function(){var e=C(this),a=e.attr("data-id"),n=(e.find(".members-am-item-label").first().text()||"").toLowerCase(),r=(a||"").toLowerCase();i[a]=-1!==n.indexOf(t)||-1!==r.indexOf(t)});var o={};n.each(function(){var e=C(this).attr("data-id"),a=C(this).attr("data-menu-parent")||"";o[a]||(o[a]=[]),o[a].push(e)});var l={};function m(e){var a,n=i[e],r=o[e]||[],t=!1;for(a=0;a '),o=C(' ').attr("placeholder",t).attr("aria-label",s).val(r);i.append(o),e.find(".members-am-sidebar-head").first().after(i),o.on("input",function(){I.columnFilters[n]=C(this).val(),$(a,C(this).val())}),$(a,r)}function ae(e,a){var s=0===String(a).indexOf("u:"),i=s?parseInt(a.replace(/^u:/,""),10):0,o=s?null:a,l=a,m=membersAdminMenus.i18n||{},n=C('
').attr("data-column-key",l),r=C('
');r.append(C(' ').text(m.bulkSelectVisible||"Select visible"),C(' ').text(m.bulkClearSelection||"Clear selection"));var t=C('
');t.append(C(' ').text(m.collapseAllMenus||"Collapse all"),C(' ').text(m.expandAllMenus||"Expand all"));var c=C(' ').attr("aria-label",m.bulkVisibilityLabel||"Menu visibility for this column");c.append(C(' ').text(m.bulkActionsPlaceholder||"Choose visibility…"));var d=C(" ").attr("label",m.bulkGroupWholeColumn||"Whole column");d.append(C(' ').text(m.bulkShowAllItems||"Show every menu item"),C(' ').text(m.bulkHideAllItems||"Hide every menu item"));var u=C(" ").attr("label",m.bulkGroupCheckedRows||"Checked rows");u.append(C(' ').text(m.bulkKeepOnlyCheckedVisible||"Keep only checked visible"),C(' ').text(m.bulkHideCheckedItems||"Hide checked items"),C(' ').text(m.bulkShowCheckedItems||"Show checked items")),c.append(d,u),n.append(r,t,c);var p=e.find(".members-am-col-filter").first();p.length?p.after(n):e.find(".members-am-sidebar-head").first().after(n),c.on("change",function(){var e=C(this).val();if(C(this).val(""),e)if(!("keep-only-checked"===e||"hide-checked"===e||"show-checked"===e)||S(l).length){if("keep-only-checked"===e){if(!window.confirm(m.bulkConfirmKeepOnlyChecked||"Hide all items except checked items and their parent menus?"))return}else if("hide-all"===e){if(!window.confirm(m.bulkConfirmHideAll||"Hide every menu item in this column?"))return}else if("hide-checked"===e&&!window.confirm(m.bulkConfirmHideChecked||"Hide the checked items (and their submenus where applicable)?"))return;var a,n,r,t;s?"show-all"===e?M(i).hidden=[]:"hide-all"===e?(r=i,t=O(),M(r).hidden=t.slice()):"keep-only-checked"===e?function(e,n){var a=S(e);if(a.length){var r={};a.forEach(function(e){for(var a=e;a;)r[a]=!0,a=E(a,n)});var t=O(),s=M(n).hidden;s.length=0,t.forEach(function(e){r[e]||s.push(e)})}}(l,i):"hide-checked"===e?H(l,i):"show-checked"===e&&W(l,i):"show-all"===e?P(o).hidden=[]:"hide-all"===e?(a=o,n=O(),P(a).hidden=n.slice()):"keep-only-checked"===e?function(e,n){var a=S(e);if(a.length){var r={};a.forEach(function(e){for(var a=e;a;)r[a]=!0,a=v(a,n)});var t=O(),s=P(n).hidden;s.length=0,t.forEach(function(e){r[e]||s.push(e)})}}(l,o):"hide-checked"===e?D(l,o):"show-checked"===e&&z(l,o),he()}else alert(m.bulkSelectCheckedFirst||"Check one or more menu items first.")})}function ne(e){return-1!==e.indexOf("::")?e.split("::").pop():e}function re(){C.fn.sortable&&C("#members-am-columns .members-am-sidebar-list").each(function(){var e=C(this);e.data("ui-sortable")&&e.sortable("destroy");var a=e.closest(".members-am-column"),n=a.data("role"),r=a.data("user");e.sortable({axis:"y",distance:6,items:"> .members-am-item, > .members-am-sep",cancel:".members-am-item-actions button, .members-am-item-cb, .members-am-item-cb-wrap, .members-am-collapse-toggle",placeholder:"members-am-sort-placeholder",forcePlaceholderSize:!0,tolerance:"pointer",update:function(){r?function(e,a){var t=[],s={};e.children().each(function(){var e=C(this);if(e.hasClass("members-am-sep")){var a=e.attr("data-sep-id");a&&t.push(a)}else if(e.hasClass("members-am-item")){var n=e.attr("data-id");if(n){var r=e.attr("data-menu-parent");void 0===r||""===r?t.push(n):(s[r]||(s[r]=[]),s[r].push(ne(n)))}}});var n=M(a);n.order=t,n.submenu_order=s}(e,r):n&&function(e,a){var t=[],s={};e.children().each(function(){var e=C(this);if(e.hasClass("members-am-sep")){var a=e.attr("data-sep-id");a&&t.push(a)}else if(e.hasClass("members-am-item")){var n=e.attr("data-id");if(n){var r=e.attr("data-menu-parent");void 0===r||""===r?t.push(n):(s[r]||(s[r]=[]),s[r].push(ne(n)))}}});var n=P(a);n.order=t,n.submenu_order=s}(e,n),se()}})})}function te(){var n=C("#members-am-columns"),r={};n.find(".members-am-column").each(function(){var e=C(this).data("role");if(e){var a=C(this).find(".members-am-sidebar-list");a.length&&(r[e]=a.scrollTop())}}),n.empty();var e=I.carouselPage*I.columnsPerPage;if(I.activeRoleSlugs.slice(e,e+I.columnsPerPage).forEach(function(e){var a=C('
');!function(n,e){e.empty();var a=C(''),r=(c().filter(function(e){return e.slug===n})[0]||{}).label||n;a.append(C('').text(r)),a.append(C(' ').append(C(' ').text("◀"),C(' ').text("▶"))),e.append(a);var t=C('');_(n).forEach(function(e){if(0!==e.indexOf("sep-")){var a=b(e);a&&Y(n,a,null,t,0)}else t.append(C('
').attr("data-sep-id",e).text("—"))}),e.append(t),J(t,n),ee(e,t,n),ae(e,n)}(e,a),n.append(a),r[e]&&a.find(".members-am-sidebar-list").scrollTop(r[e])}),I.previewUserId){var t=I.previewUserId,a=C('
'),s=C('');s.append(C(" ").text(I.previewUserLabel||"User #"+t)),s.append(C('× ').on("click",function(){I.previewUserId=null,I.previewUserLabel=null,I.previewUserRoles=[],he()})),a.append(s);var i=C(''),o=M(t);d(t).forEach(function(e){if(0!==e.indexOf("sep-")){var a=b(e);a&&Z(t,a,null,o,i,0)}else i.append(C('
').attr("data-sep-id",e).text("——"))}),a.append(i),J(i,"u:"+t),ee(a,i,"u:"+t),ae(a,"u:"+t),n.append(a)}if(I.syncScroll){var l=n.find(".members-am-sidebar-list"),m=!1;l.on("scroll",function(){if(!m){m=!0;var e=C(this).scrollTop();l.not(this).scrollTop(e),m=!1}})}!function(){var e=Math.max(1,Math.ceil(I.activeRoleSlugs.length/I.columnsPerPage)),a=(Math.min(I.carouselPage+1,e),I.carouselPage*I.columnsPerPage+1),n=Math.min((I.carouselPage+1)*I.columnsPerPage,I.activeRoleSlugs.length);C("#members-am-carousel-status").text(a+"–"+n+" "+membersAdminMenus.i18n.of+" "+I.activeRoleSlugs.length);for(var r=C("#members-am-carousel-dots").empty(),t=0;t ').toggleClass("is-active",t===I.carouselPage))}(),re()}function se(){if(I.selectedId){C("#members-am-edit-panel").removeAttr("hidden");var e=b(I.selectedId),a=G()||{};C("#members-am-edit-title").text(e?e.title:I.selectedId),C("#members-am-edit-label").val(a.label||e&&e.title||"");var n=p(I.selectedId);C("#members-am-edit-url-wrap").toggle(n),C("#members-am-edit-url").attr("placeholder","Override URL (leave empty for default)").val(n&&(a.url||e&&e.url)||"").data("default-url",e&&e.url||""),C("#members-am-icon-type").val(a.icon_type||"dashicon"),C("#members-am-icon-value").val(a.icon||e&&e.icon||"");var r=a.icon||e&&e.icon||"",t=T(r,a.icon_type||e&&e.icon_type||"");"image"!==t&&"custom"!==t&&"svg"!==t||!r?C("#members-am-icon-preview").hide():C("#members-am-icon-preview").show().attr("src",r),C("#members-am-color-bg").val(a.color_bg||""),C("#members-am-color-text").val(a.color_text||""),C("#members-am-color-icon").val(a.color_icon||""),C("#members-am-badge-text").val(a.badge||""),C("#members-am-badge-bg").val(a.badge_bg||""),C("#members-am-item-cap").attr("placeholder",e&&e.cap?e.cap+" (default)":"").val(I.settings.capabilities[I.selectedId]||"");var s=e&&e.custom;C("#members-am-remove-custom").toggle(!!s),C("#members-am-visibility-toggles").empty();var i=e&&e.cap||"read";c().forEach(function(e){if("administrator"!==e.slug||I.settings._meta.admin_editable){var a=R(e.slug,I.selectedId),n=U(e.slug,i),r=C(' ').attr("data-role",e.slug).prop("checked",!a&&n);n||r.prop("disabled",!0);var t=C(' ').append(r,C(" ").text(e.label));n||(t.append(C(" ").text(" — no capability").css({color:"#999",fontStyle:"italic",marginLeft:"4px"})),t.css("opacity","0.5")),C("#members-am-visibility-toggles").append(t)}}),C(".members-am-color").each(function(){C(this).data("wpWpColorPicker")&&C(this).wpColorPicker("destroy")}),C(".members-am-color").wpColorPicker({change:function(e,a){setTimeout(function(){ie()},20)},clear:function(){setTimeout(function(){ie()},20)}}),oe(),function(){var e=C(".members-am-demote-wrap"),n=C("#members-am-demote-parent"),a=C("#members-am-demote");if(!I.selectedId)return e.attr("hidden",!0);if(h(I.selectedId))return e.attr("hidden",!0);var r=K()[0]||I.activeRoleSlugs[0];if(r&&g(r,I.selectedId))return e.attr("hidden",!0);e.removeAttr("hidden");var t=I.selectedId,s=membersAdminMenus.i18n&&membersAdminMenus.i18n.selectParentMenu||"";n.empty().append(C(" ").val("").text(s));var i=0;I.tree.forEach(function(e){if(e&&e.id&&e.id!==t){var a=e.title&&String(e.title).trim()?e.title:e.id;n.append(C(" ").val(e.id).text(a)),i++}});var o=0 ');"dashicons"===n?a.append(C(' ')):a.append(C(' ')),a.on("click",function(){C("#members-am-icon-value").val(e),C("#members-am-icon-type").val("dashicons"===n?"dashicon":"fontawesome"),ie()}),t.append(a)}})}function n(e,a){var n=I.activeRoleSlugs.indexOf(e);if(-1!==n){var r=n+a;if(!(r<0||r>=I.activeRoleSlugs.length)){var t=I.activeRoleSlugs[n];I.activeRoleSlugs[n]=I.activeRoleSlugs[r],I.activeRoleSlugs[r]=t,o(),he()}}}function le(e,a,n){var r,t,s,i=P(e).overrides[a]||{},o=null;if("__promote__"===i.parent?o=null:-1!==a.indexOf("::")?o=h(a):i.parent&&"__promote__"!==i.parent&&(o=i.parent),o){var l=P(e).submenu_order;l[o]||(l[o]=(r=e,s=y(t=o),I.tree.forEach(function(e){e&&e.id&&-1===e.id.indexOf("::")&&(P(r).overrides[e.id]||{}).parent===t&&-1===s.indexOf(e.id)&&s.push(e.id)}),s));var m=l[o],c=-1!==a.indexOf("::")?a.split("::").pop():a;if(-1===(u=m.indexOf(c)))return;if((p=u+n)<0||p>=m.length)return;var d=m[u];m[u]=m[p],m[p]=d}else{P(e).order&&P(e).order.length||(P(e).order=x());var u,p,f=P(e).order;if(-1===(u=f.indexOf(a)))return;if((p=u+n)<0||p>=f.length)return;var b=f[u];f[u]=f[p],f[p]=b}he()}function me(){var e=K();if(e.length){var r="sep-"+Date.now();e.forEach(function(e){P(e).order&&P(e).order.length||(P(e).order=x());var a=P(e).order,n=I.selectedId?a.indexOf(I.selectedId):a.length-1;n<0&&(n=a.length),a.splice(n+1,0,r)}),he()}}function ce(e){var a=C("#members-am-toolbar-loading");a.removeAttr("hidden"),a.find(".spinner").addClass("is-active"),a.find(".members-am-loading-text").text(e||""),C("#members-am-save, #members-am-reset, #members-am-import, #members-am-copy-apply").prop("disabled",!0)}function de(){var e=C("#members-am-toolbar-loading");e.attr("hidden",!0),e.find(".spinner").removeClass("is-active"),e.find(".members-am-loading-text").text(""),C("#members-am-save, #members-am-reset, #members-am-import, #members-am-copy-apply").prop("disabled",!1)}function ue(e){ce(e||membersAdminMenus.i18n&&membersAdminMenus.i18n.saving||"Saving…");var a=!1,t=membersAdminMenus.i18n&&membersAdminMenus.i18n.networkError||"Could not save settings. Check your connection and try again.";C.ajax({url:membersAdminMenus.ajaxUrl,type:"POST",dataType:"json",timeout:6e4,data:{action:"members_admin_menus_save",nonce:membersAdminMenus.nonce,settings:JSON.stringify(I.settings)}}).done(function(e){if(e&&void 0!==e.success)return e.success?(I.allowUnload=!0,alert(membersAdminMenus.i18n.saved),a=!0,void location.reload()):void alert(e.data&&e.data.message?e.data.message:"Error");alert(t)}).fail(function(e,a){if("abort"!==a){var n=t;if(e&&e.responseJSON&&void 0!==e.responseJSON.data){var r=e.responseJSON.data;"string"==typeof r&&r?n=r:r&&"string"==typeof r.message&&r.message&&(n=r.message)}alert(n)}}).always(function(){a||de()})}function pe(e,a){if(confirm("role"===e&&a?"Reset all settings for this role? This cannot be undone.":"Reset ALL menu settings for every role? This cannot be undone.")){ce(membersAdminMenus.i18n&&membersAdminMenus.i18n.resetting||"Resetting…");var n=!1;C.post(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_reset",nonce:membersAdminMenus.nonce,scope:e||"all",role:a||""}).done(function(e){if(e.success)return I.allowUnload=!0,n=!0,void location.reload();alert(e.data&&e.data.message?e.data.message:"Reset failed.")}).fail(function(){alert(membersAdminMenus.i18n.networkError||"Could not reset settings. Check your connection and try again.")}).always(function(){n||de()})}}function fe(e){C.getJSON(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_user_search",nonce:membersAdminMenus.nonce,term:e},function(e){e.success&&e.data&&e.data.length?function(e){C(".members-am-user-suggestions").remove();var a=C("#members-am-user-search").parent();a.css("position","relative");var n=C('
');e.forEach(function(e){n.append(C('
').text(e.label).data("userId",e.id).on("click",function(){!function(e,a,n){I.previewUserId=e,I.previewUserLabel=a||"User #"+e,I.previewUserRoles=n||[],l(),I.settings.users[e]||(I.settings.users[e]={});he()}(e.id,e.label,e.roles),C(".members-am-user-suggestions").remove(),C("#members-am-user-search").val("")}))}),a.append(n),setTimeout(function(){C(document).one("click",function(){C(".members-am-user-suggestions").remove()})},0)}(e.data):C(".members-am-user-suggestions").remove()})}function be(){var a;C(document).on("click","#members-am-role-chips .members-am-chip",function(){var e=C(this).data("role"),a=I.activeRoleSlugs.indexOf(e);-1===a?I.activeRoleSlugs.push(e):1 ');if(s.append(C('
').text("Reset Settings")),r&&t){var i=C(' ');i.append(C(' ')),i.append(C(' ').append(C(" ").text("Reset "+t),C(" ").text("Clear all menu settings for this role only"))),i.on("click",function(){C(".members-am-reset-dropdown").remove(),pe("role",r)}),s.append(i)}var o=C(' ');o.append(C(' ')),o.append(C(' ').append(C(" ").text("Reset all roles"),C(" ").text("Clear all menu settings for every role"))),o.on("click",function(){C(".members-am-reset-dropdown").remove(),pe("all")}),s.append(o),a.parent().css("position","relative"),s.insertAfter(a),C(document).one("click",function(){C(".members-am-reset-dropdown").remove()})}),C("#members-am-export").on("click",function(e){e.preventDefault(),window.location.href=membersAdminMenus.exportUrl}),C("#members-am-import").on("click",function(){C("#members-am-import-file").trigger("click")}),C("#members-am-import-file").on("change",function(){var e=this.files&&this.files[0];e&&function(e){ce(membersAdminMenus.i18n&&membersAdminMenus.i18n.importing||"Importing…");var n=new FileReader;n.onerror=function(){de(),alert(membersAdminMenus.i18n&&membersAdminMenus.i18n.networkError||"Could not read the file.")},n.onload=function(){try{var e=JSON.parse(n.result),a=!1;C.post(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_import",nonce:membersAdminMenus.nonce,settings:JSON.stringify(e)}).done(function(e){if(e.success)return I.allowUnload=!0,a=!0,void location.reload();alert(e.data&&e.data.message?e.data.message:"Error")}).fail(function(){alert(membersAdminMenus.i18n.networkError||"Could not import settings. Check your connection and try again.")}).always(function(){a||de()})}catch(e){de(),alert("Invalid JSON")}},n.readAsText(e)}(e)}),C("#members-am-copy-apply").on("click",function(){var n=C("#members-am-copy-from").val(),a=C("#members-am-copy-to").val();if(n&&a)if(n!==a){var r="",t="";if(c().forEach(function(e){e.slug===n&&(r=e.label),e.slug===a&&(t=e.label)}),confirm('Copy menu settings from "'+r+'" to "'+t+'"?\nThis will overwrite "'+t+"\" menu configuration.\n\nNote: This copies menu order, hidden items, labels, icons, and colors.\nIt does NOT change the role's capabilities (items marked with a lock icon).")){var e=P(n),s={hidden:e.hidden?e.hidden.slice():[],order:[],submenu_order:{},overrides:{}},i=_(n);s.order=i.slice(),I.tree.forEach(function(e){if(e.children&&e.children.length){var a=k(n,e.id);a&&a.length&&(s.submenu_order[e.id]=a.slice())}}),e.overrides&&"object"==typeof e.overrides&&(s.overrides=JSON.parse(JSON.stringify(e.overrides))),I.settings.roles[a]=s,-1===I.activeRoleSlugs.indexOf(a)&&(I.activeRoleSlugs.push(a),o(),X()),he(),ue(membersAdminMenus.i18n&&membersAdminMenus.i18n.copying||"Copying…")}}else alert("Source and target roles must be different.")}),C("#members-am-admin-editable").on("change",function(){var e=!0;C(this).is(":checked")&&(e=window.confirm(membersAdminMenus.i18n.adminEditableWarn)),e?(I.settings._meta.admin_editable=C(this).is(":checked"),q(),X(),o(),he()):C(this).prop("checked",!1)}),C("#members-am-sync-scroll").prop("checked",!1!==I.syncScroll),C("#members-am-sync-scroll").on("change",function(){I.syncScroll=C(this).is(":checked");try{localStorage.setItem("members_am_sync_scroll",I.syncScroll?"1":"0")}catch(e){}te()}),C("#members-am-add-item").on("click",function(){var e="c"+Date.now();I.settings.custom_items.push({id:e,label:"Custom link",url:window.location.origin+"/wp-admin/",icon_type:"dashicon",icon:"dashicons-admin-generic",parent:"",position:99,cap:"read"}),I.tree=f(),I.selectedId=u({id:e}),he(),se()}),C("#members-am-remove-custom").on("click",function(){var a=b(I.selectedId);a&&a.customId&&(I.settings.custom_items=(I.settings.custom_items||[]).filter(function(e){return e.id!==a.customId}),I.selectedId=null,I.tree=f(),he(),C("#members-am-edit-panel").attr("hidden",!0))}),C("#members-am-edit-close").on("click",function(){I.selectedId=null,C("#members-am-edit-panel").attr("hidden",!0),he()}),C("#members-am-edit-target-role").on("change",se),C("#members-am-edit-label, #members-am-edit-url, #members-am-icon-value, #members-am-badge-text").on("input",function(){ie()}),C("#members-am-item-cap").on("input",function(){ie()}),C(".members-am-icon-tabs .button").on("click",function(){C(".members-am-icon-tabs .button").removeClass("is-active"),C(this).addClass("is-active"),I.iconTab="fontawesome"===C(this).data("tab")?"fontawesome":"upload"===C(this).data("tab")?"upload":"dashicons",oe()}),C("#members-am-icon-search").on("input",oe),C("#members-am-media-upload").on("click",function(e){e.preventDefault(),I.mediaFrame||(I.mediaFrame=wp.media({title:"Choose menu icon",button:{text:"Use as icon"},multiple:!1,library:{type:"image"}}),I.mediaFrame.on("select",function(){var e=I.mediaFrame.state().get("selection").first().toJSON(),a=e.url||"";e.sizes&&(e.sizes.thumbnail?a=e.sizes.thumbnail.url:e.sizes.medium&&(a=e.sizes.medium.url)),C("#members-am-icon-type").val("custom"),C("#members-am-icon-value").val(a),ie()})),I.mediaFrame.open()}),C(document).on("change",".members-am-vis-cb",function(){var e=C(this).data("role");if(C(this).is(":checked")){var a=P(e).hidden,n=a.indexOf(I.selectedId);-1!==n&&a.splice(n,1)}else-1===P(e).hidden.indexOf(I.selectedId)&&P(e).hidden.push(I.selectedId);he()}),C("#members-am-add-sep").on("click",me),C("#members-am-promote").on("click",function(){if(I.selectedId){var t=I.selectedId,e=G()||{};if(-1===t.indexOf("::")&&e.parent&&"__promote__"!==e.parent){var s=e.parent,a=V();if(a){var n=M(a);if(n.overrides[t]&&delete n.overrides[t].parent,n.submenu_order&&n.submenu_order[s]){var r=n.submenu_order[s].indexOf(t);-1!==r&&n.submenu_order[s].splice(r,1)}if(n.order.length||(n.order=x()),-1===n.order.indexOf(t)){var i=n.order.indexOf(s);-1!==i?n.order.splice(i+1,0,t):n.order.push(t)}}else K().forEach(function(e){var a=P(e);if(a.overrides[t]&&delete a.overrides[t].parent,a.submenu_order&&a.submenu_order[s]){var n=a.submenu_order[s].indexOf(t);-1!==n&&a.submenu_order[s].splice(n,1)}if(a.order&&a.order.length||(a.order=x()),-1===a.order.indexOf(t)){var r=a.order.indexOf(s);-1!==r?a.order.splice(r+1,0,t):a.order.push(t)}});return ie(),void se()}Q("parent","__promote__");var o=h(t);K().forEach(function(e){var a=P(e);if(a.order&&a.order.length||(a.order=x()),-1===a.order.indexOf(t))if(o){var n=a.order.indexOf(o);-1!==n?a.order.splice(n+1,0,t):a.order.push(t)}else a.order.push(t)}),ie(),se()}}),C("#members-am-demote").on("click",function(){var e=C("#members-am-demote-parent").val();e?(Q("parent",e),ie(),se()):window.alert(membersAdminMenus.i18n&&membersAdminMenus.i18n.selectParentFirst||"Please choose a parent menu from the list.")}),C("#members-am-user-search").on("input",function(){var e=C(this).val();clearTimeout(a),a=setTimeout(function(){1 ").val("__all__").text("All roles")),I.activeRoleSlugs.forEach(function(a){var e=(c().filter(function(e){return e.slug===a})[0]||{}).label||a;n.append(C(" ").val(a).text(e))}),I.previewUserId&&n.append(C(" ").val("__user__"+I.previewUserId).text(I.previewUserLabel||"User #"+I.previewUserId)),I.selectedId&&se()}C(function(){var a,n,e;l(),I.tree=f(),q(),C("#members-am-admin-editable").prop("checked",!!I.settings._meta.admin_editable),a=C("#members-am-copy-from").empty(),n=C("#members-am-copy-to").empty(),(e=c()).forEach(function(e){a.append(C(" ").val(e.slug).text(e.label)),n.append(C(" ").val(e.slug).text(e.label))}),1
Date: Wed, 15 Apr 2026 10:04:04 -0500
Subject: [PATCH 25/73] feat(admin): enhance color scheme management and
improve UI consistency in admin menus
---
.../app/functions-admin.php | 135 ++++++++++++++++
css/admin.css | 149 ++++++++++--------
2 files changed, 214 insertions(+), 70 deletions(-)
diff --git a/addons/members-admin-menus/app/functions-admin.php b/addons/members-admin-menus/app/functions-admin.php
index 4a52f32..29b70d7 100644
--- a/addons/members-admin-menus/app/functions-admin.php
+++ b/addons/members-admin-menus/app/functions-admin.php
@@ -114,6 +114,140 @@ function ensure_objects_for_js( $settings ) {
return $settings;
}
+/**
+ * WCAG relative luminance for a 6-digit hex color (after {@see sanitize_hex_color()}).
+ *
+ * @param string $hex Hex color, may include leading #.
+ * @return float Value in 0–1.
+ */
+function members_am_relative_luminance( $hex ) {
+ $hex = ltrim( $hex, '#' );
+ if ( 3 === strlen( $hex ) ) {
+ $hex = $hex[0] . $hex[0] . $hex[1] . $hex[1] . $hex[2] . $hex[2];
+ }
+ if ( 6 !== strlen( $hex ) || ! ctype_xdigit( $hex ) ) {
+ return 0.5;
+ }
+
+ $r = hexdec( substr( $hex, 0, 2 ) ) / 255;
+ $g = hexdec( substr( $hex, 2, 2 ) ) / 255;
+ $b = hexdec( substr( $hex, 4, 2 ) ) / 255;
+
+ $to_linear = static function ( $c ) {
+ return $c <= 0.03928 ? $c / 12.92 : pow( ( $c + 0.055 ) / 1.055, 2.4 );
+ };
+
+ $r = $to_linear( $r );
+ $g = $to_linear( $g );
+ $b = $to_linear( $b );
+
+ return 0.2126 * $r + 0.7152 * $g + 0.0722 * $b;
+}
+
+/**
+ * Primary text color on a solid background (e.g. Light scheme uses dark text on pale base).
+ *
+ * @param string $bg_hex Background hex.
+ * @return string Hex foreground.
+ */
+function members_am_contrast_fg_for_bg( $bg_hex ) {
+ return members_am_relative_luminance( $bg_hex ) > 0.45 ? '#1d2327' : '#f0f0f1';
+}
+
+/**
+ * Secondary/muted text on a solid background.
+ *
+ * @param string $bg_hex Background hex.
+ * @return string Hex foreground.
+ */
+function members_am_contrast_muted_for_bg( $bg_hex ) {
+ return members_am_relative_luminance( $bg_hex ) > 0.45 ? '#646970' : '#a7aaad';
+}
+
+/**
+ * Border color that reads on a given background (admin-style neutrals).
+ *
+ * @param string $bg_hex Background hex.
+ * @return string Hex border.
+ */
+function members_am_border_for_bg( $bg_hex ) {
+ return members_am_relative_luminance( $bg_hex ) > 0.45 ? '#c3c4c7' : '#50575e';
+}
+
+/**
+ * Inline CSS custom properties for the Admin Menus UI, derived from the active admin color scheme.
+ *
+ * Maps {@see wp_admin_css_color()} palette entries to semantic variables. Three-color schemes (e.g. Modern)
+ * use the second and third swatches as accents; four-color schemes use the full base/surface/accent layout.
+ *
+ * @return string Safe CSS (no user input; hex values sanitized).
+ */
+function get_admin_menus_color_scheme_css() {
+ global $_wp_admin_css_colors;
+
+ $scheme = get_user_option( 'admin_color' );
+ if ( empty( $scheme ) || empty( $_wp_admin_css_colors[ $scheme ] ) ) {
+ $scheme = 'fresh';
+ }
+
+ $raw = isset( $_wp_admin_css_colors[ $scheme ]->colors ) ? (array) $_wp_admin_css_colors[ $scheme ]->colors : array();
+ $colors = array();
+ foreach ( $raw as $hex ) {
+ if ( ! is_string( $hex ) ) {
+ continue;
+ }
+ $sanitized = sanitize_hex_color( $hex );
+ if ( $sanitized ) {
+ $colors[] = $sanitized;
+ }
+ }
+
+ $n = count( $colors );
+
+ $base = $colors[0] ?? '#1d2327';
+ $surface = null;
+ $accent = '#2271b1';
+ $accent_alt = '#72aee6';
+
+ if ( $n >= 4 ) {
+ $surface = $colors[1];
+ $accent = $colors[2];
+ $accent_alt = $colors[3];
+ } elseif ( 3 === $n ) {
+ $accent = $colors[1];
+ $accent_alt = $colors[2];
+ } elseif ( 2 === $n ) {
+ $accent = $colors[1];
+ $accent_alt = $colors[1];
+ }
+
+ $fg_base = members_am_contrast_fg_for_bg( $base );
+ $fg_muted = members_am_contrast_muted_for_bg( $base );
+ $border_bg = members_am_border_for_bg( $base );
+
+ $props = array(
+ '--members-am-base' => $base,
+ '--members-am-accent' => $accent,
+ '--members-am-accent-alt' => $accent_alt,
+ '--members-am-fg-on-base' => $fg_base,
+ '--members-am-fg-muted-on-base' => $fg_muted,
+ '--members-am-border-on-base' => $border_bg,
+ );
+
+ if ( $surface ) {
+ $props['--members-am-surface'] = $surface;
+ $props['--members-am-fg-on-surface'] = members_am_contrast_fg_for_bg( $surface );
+ $props['--members-am-border-on-surface'] = members_am_border_for_bg( $surface );
+ }
+
+ $decl = '';
+ foreach ( $props as $name => $value ) {
+ $decl .= $name . ':' . $value . ';';
+ }
+
+ return '.members-admin-menus-wrap{' . $decl . '}';
+}
+
/**
* Enqueue scripts and styles for the Admin Menus page.
*
@@ -122,6 +256,7 @@ function ensure_objects_for_js( $settings ) {
function enqueue_admin_menus_assets() {
wp_enqueue_media();
wp_enqueue_style( 'members-admin' );
+ wp_add_inline_style( 'members-admin', get_admin_menus_color_scheme_css() );
wp_enqueue_style( 'wp-color-picker' );
wp_enqueue_style(
'members-admin-menus-fa',
diff --git a/css/admin.css b/css/admin.css
index 5034ce2..ea81544 100644
--- a/css/admin.css
+++ b/css/admin.css
@@ -1055,9 +1055,17 @@
vertical-align: middle;
}
-/* Members — Admin Menus add-on */
+/* Members — Admin Menus add-on (inherits active admin color scheme via --members-am-*; aligns with wp-admin theme variables when present) */
.members-admin-menus-wrap {
max-width: 1400px;
+ /* Prefer palette from wp_admin_css_color (inline) over :root defaults from other admin bundles. */
+ --members-am-accent-use: var(--members-am-accent, var(--wp-admin-theme-color, #2271b1));
+ --members-am-surface-use: var(--members-am-surface, color-mix(in srgb, var(--members-am-base, #1d2327) 88%, #fff 12%));
+ /* Inline rules set --members-am-fg-on-base / --members-am-border-on-base from scheme luminance (e.g. Light = dark text). */
+ --members-am-border-on-base-fallback: color-mix(in srgb, var(--members-am-base, #1d2327) 62%, #fff 38%);
+ --members-am-chrome-bg: var(--wp-components-color-gray-100, #f6f7f7);
+ --members-am-chrome-border: var(--wp-components-color-gray-400, #c3c4c7);
+ --members-am-muted: var(--wp-components-color-gray-600, #646970);
}
.members-admin-menus-toolbar {
@@ -1073,7 +1081,7 @@
align-items: center;
gap: 8px;
margin-left: 4px;
- color: #50575e;
+ color: var(--members-am-muted, #646970);
font-size: 13px;
line-height: 1;
}
@@ -1101,15 +1109,15 @@
.members-am-chip {
border-radius: 999px;
padding: 4px 12px;
- border: 1px solid #c3c4c7;
- background: #f6f7f7;
+ border: 1px solid var(--members-am-chrome-border, #c3c4c7);
+ background: var(--members-am-chrome-bg, #f6f7f7);
cursor: pointer;
}
.members-am-chip.is-active {
- background: #2271b1;
- border-color: #2271b1;
- color: #fff;
+ background: var(--members-am-accent-use);
+ border-color: var(--members-am-accent-use);
+ color: var(--wp-components-color-accent-inverted, #fff);
}
.members-am-carousel-wrap {
@@ -1125,8 +1133,8 @@
width: 36px;
height: 36px;
border-radius: 50%;
- border: 1px solid #c3c4c7;
- background: #fff;
+ border: 1px solid var(--members-am-chrome-border, #c3c4c7);
+ background: var(--wp-components-color-background, #fff);
cursor: pointer;
}
@@ -1141,15 +1149,15 @@
.members-am-column {
flex: 1;
min-width: 0;
- background: #1d2327;
+ background: var(--members-am-base, #1d2327);
border-radius: 4px;
- color: #f0f0f1;
+ color: var(--members-am-fg-on-base, #f0f0f1);
display: flex;
flex-direction: column;
}
.members-am-user-column {
- border: 2px dashed #8c8f94;
+ border: 2px dashed var(--wp-components-color-gray-700, #8c8f94);
}
.members-am-sidebar-head {
@@ -1157,17 +1165,18 @@
justify-content: space-between;
align-items: center;
padding: 8px 10px;
- background: #2c3338;
+ background: var(--members-am-surface-use);
border-radius: 4px 4px 0 0;
font-weight: 600;
font-size: 12px;
text-transform: uppercase;
letter-spacing: 0.04em;
+ color: var(--members-am-fg-on-surface, var(--members-am-fg-on-base, #f0f0f1));
}
.members-am-col-filter {
padding: 6px 8px 8px;
- border-bottom: 1px solid #3c434a;
+ border-bottom: 1px solid var(--members-am-border-on-base, var(--members-am-border-on-base-fallback));
flex-shrink: 0;
}
@@ -1179,25 +1188,25 @@
line-height: 1.4;
padding: 4px 8px;
border-radius: 2px;
- border: 1px solid #50575e;
- background: #1d2327;
- color: #f0f0f1;
+ border: 1px solid var(--members-am-border-on-base, var(--members-am-border-on-base-fallback));
+ background: var(--members-am-base, #1d2327);
+ color: var(--members-am-fg-on-base, #f0f0f1);
}
.members-am-col-filter-input::placeholder {
- color: #8c8f94;
+ color: var(--members-am-fg-muted-on-base, var(--wp-components-color-gray-700, #8c8f94));
opacity: 1;
}
.members-am-col-filter-input:focus {
- border-color: #2271b1;
+ border-color: var(--members-am-accent-use);
outline: 1px solid transparent;
- box-shadow: 0 0 0 1px #2271b1;
+ box-shadow: 0 0 0 var(--wp-admin-border-width-focus, 1px) var(--members-am-accent-use);
}
.members-am-col-bulk {
padding: 0 8px 8px;
- border-bottom: 1px solid #3c434a;
+ border-bottom: 1px solid var(--members-am-border-on-base, var(--members-am-border-on-base-fallback));
flex-shrink: 0;
}
@@ -1216,16 +1225,16 @@
min-height: 26px;
line-height: 24px;
padding: 0 8px;
- background: #2c3338;
- border-color: #50575e;
- color: #f0f0f1;
+ background: var(--members-am-surface-use);
+ border-color: var(--members-am-border-on-surface, var(--members-am-border-on-base, var(--members-am-border-on-base-fallback)));
+ color: var(--members-am-fg-on-surface, var(--members-am-fg-on-base, #f0f0f1));
}
.members-am-col-bulk-toolbar .button.button-small:hover,
.members-am-col-collapse-toolbar .button.button-small:hover {
- background: #3c434a;
- border-color: #8c8f94;
- color: #fff;
+ background: color-mix(in srgb, var(--members-am-surface-use) 85%, #fff 15%);
+ border-color: var(--wp-components-color-gray-700, #8c8f94);
+ color: var(--members-am-fg-on-surface, var(--members-am-fg-on-base, #f0f0f1));
}
.members-am-item-lead {
@@ -1254,7 +1263,7 @@
padding: 0;
border: none;
background: transparent;
- color: #c3c4c7;
+ color: var(--members-am-fg-muted-on-base, var(--members-am-chrome-border, #c3c4c7));
border-radius: 2px;
cursor: pointer;
flex-shrink: 0;
@@ -1262,8 +1271,8 @@
.members-am-collapse-toggle:hover,
.members-am-collapse-toggle:focus {
- color: #f0f0f1;
- background: rgba(255, 255, 255, 0.08);
+ color: var(--members-am-fg-on-base, #f0f0f1);
+ background: color-mix(in srgb, var(--members-am-fg-on-base, #f0f0f1) 12%, transparent);
outline: none;
}
@@ -1295,15 +1304,15 @@
line-height: 1.4;
padding: 4px 8px;
border-radius: 2px;
- border: 1px solid #50575e;
- background: #1d2327;
- color: #f0f0f1;
+ border: 1px solid var(--members-am-border-on-base, var(--members-am-border-on-base-fallback));
+ background: var(--members-am-base, #1d2327);
+ color: var(--members-am-fg-on-base, #f0f0f1);
}
.members-am-bulk-select:focus {
- border-color: #2271b1;
+ border-color: var(--members-am-accent-use);
outline: 1px solid transparent;
- box-shadow: 0 0 0 1px #2271b1;
+ box-shadow: 0 0 0 var(--wp-admin-border-width-focus, 1px) var(--members-am-accent-use);
}
.members-am-item.members-am-filter-hidden,
@@ -1360,8 +1369,8 @@
box-sizing: border-box;
min-height: 36px;
margin: 2px 0;
- background: rgba(34, 113, 177, 0.08);
- border: 1px dashed #2271b1;
+ background: color-mix(in srgb, var(--members-am-accent-use) 8%, transparent);
+ border: 1px dashed var(--members-am-accent-use);
border-radius: 2px;
}
@@ -1378,8 +1387,8 @@
}
.members-am-item.is-selected {
- border-left-color: #2271b1;
- background: rgba(34, 113, 177, 0.15);
+ border-left-color: var(--members-am-accent-use);
+ background: color-mix(in srgb, var(--members-am-accent-use) 15%, transparent);
}
.members-am-item-main {
@@ -1437,17 +1446,17 @@
border: none;
margin: 0 4px;
padding: 0;
- background: #c3c4c7;
+ background: var(--members-am-chrome-border, #c3c4c7);
cursor: pointer;
}
.members-am-dot.is-active {
- background: #2271b1;
+ background: var(--members-am-accent-use);
}
.members-am-carousel-status {
text-align: center;
- color: #646970;
+ color: var(--members-am-muted, #646970);
font-size: 12px;
margin-top: 0;
}
@@ -1462,18 +1471,18 @@
}
.members-am-badge-new {
- background: #2271b1;
- color: #fff;
+ background: var(--members-am-accent-use);
+ color: var(--wp-components-color-accent-inverted, #fff);
}
.members-am-badge-edit {
background: #dba617;
- color: #1d2327;
+ color: var(--members-am-base, #1d2327);
}
.members-am-badge-nocap {
- background: #8c8f94;
- color: #fff;
+ background: var(--wp-components-color-gray-700, #8c8f94);
+ color: var(--wp-components-color-accent-inverted, #fff);
}
.members-am-legend {
@@ -1483,7 +1492,7 @@
margin: 0 0 8px;
padding: 0;
font-size: 12px;
- color: #646970;
+ color: var(--members-am-muted, #646970);
}
.members-am-legend-item {
@@ -1495,8 +1504,8 @@
.members-am-edit-panel {
margin-top: 20px;
padding: 16px;
- border: 1px solid #c3c4c7;
- background: #fff;
+ border: 1px solid var(--members-am-chrome-border, #c3c4c7);
+ background: var(--wp-components-color-background, #fff);
border-radius: 4px;
}
@@ -1563,9 +1572,9 @@
}
.members-am-icon-tabs .button.is-active {
- background: #2271b1;
- border-color: #2271b1;
- color: #fff;
+ background: var(--members-am-accent-use);
+ border-color: var(--members-am-accent-use);
+ color: var(--wp-components-color-accent-inverted, #fff);
}
.members-am-icon-grid {
@@ -1574,9 +1583,9 @@
gap: 4px;
max-height: 160px;
overflow-y: auto;
- border: 1px solid #dcdcde;
+ border: 1px solid var(--wp-components-color-gray-200, #dcdcde);
padding: 8px;
- background: #f6f7f7;
+ background: var(--members-am-chrome-bg, #f6f7f7);
margin-bottom: 8px;
}
@@ -1587,8 +1596,8 @@
display: inline-flex;
align-items: center;
justify-content: center;
- border: 1px solid #c3c4c7;
- background: #fff;
+ border: 1px solid var(--members-am-chrome-border, #c3c4c7);
+ background: var(--wp-components-color-background, #fff);
cursor: pointer;
}
@@ -1601,8 +1610,8 @@
.members-am-reset-dropdown {
position: absolute;
z-index: 100;
- background: #fff;
- border: 1px solid #c3c4c7;
+ background: var(--wp-components-color-background, #fff);
+ border: 1px solid var(--members-am-chrome-border, #c3c4c7);
border-radius: 6px;
padding: 0;
display: flex;
@@ -1619,8 +1628,8 @@
padding: 10px 14px;
font-weight: 600;
font-size: 13px;
- border-bottom: 1px solid #f0f0f0;
- color: #1d2327;
+ border-bottom: 1px solid var(--wp-components-color-gray-200, #f0f0f0);
+ color: var(--wp-components-color-foreground, #1d2327);
}
.members-am-reset-option {
@@ -1633,7 +1642,7 @@
cursor: pointer;
text-align: left;
width: 100%;
- border-bottom: 1px solid #f0f0f0;
+ border-bottom: 1px solid var(--wp-components-color-gray-200, #f0f0f0);
transition: background 0.15s;
}
@@ -1642,12 +1651,12 @@
}
.members-am-reset-option:hover {
- background: #f6f7f7;
+ background: var(--members-am-chrome-bg, #f6f7f7);
}
.members-am-reset-option .dashicons {
margin-top: 2px;
- color: #646970;
+ color: var(--members-am-muted, #646970);
}
.members-am-reset-option-text {
@@ -1658,12 +1667,12 @@
.members-am-reset-option-text strong {
font-size: 13px;
- color: #1d2327;
+ color: var(--wp-components-color-foreground, #1d2327);
}
.members-am-reset-option-text small {
font-size: 12px;
- color: #646970;
+ color: var(--members-am-muted, #646970);
}
.members-am-reset-danger:hover {
@@ -1687,8 +1696,8 @@
.members-am-user-suggestions {
position: absolute;
z-index: 100;
- background: #fff;
- border: 1px solid #c3c4c7;
+ background: var(--wp-components-color-background, #fff);
+ border: 1px solid var(--members-am-chrome-border, #c3c4c7);
border-radius: 4px;
max-height: 200px;
overflow-y: auto;
@@ -1702,11 +1711,11 @@
padding: 8px 12px;
cursor: pointer;
font-size: 13px;
- border-bottom: 1px solid #f0f0f0;
+ border-bottom: 1px solid var(--wp-components-color-gray-200, #f0f0f0);
}
.members-am-user-suggestion:hover {
- background: #f0f6fc;
+ background: color-mix(in srgb, var(--members-am-accent-use) 8%, var(--wp-components-color-background, #fff));
}
.members-am-user-suggestion:last-child {
From 4e1b0d3699f9beb0af5eae1b55e20eaf93fef844 Mon Sep 17 00:00:00 2001
From: Omar ElHawary
Date: Wed, 15 Apr 2026 10:33:25 -0500
Subject: [PATCH 26/73] feat(admin): add dismissible notices for user feedback
and enhance error handling in admin menus
---
.../app/functions-admin.php | 9 ++
css/admin.css | 8 +
js/admin-menus.js | 137 +++++++++++++++---
3 files changed, 131 insertions(+), 23 deletions(-)
diff --git a/addons/members-admin-menus/app/functions-admin.php b/addons/members-admin-menus/app/functions-admin.php
index 29b70d7..be96341 100644
--- a/addons/members-admin-menus/app/functions-admin.php
+++ b/addons/members-admin-menus/app/functions-admin.php
@@ -325,6 +325,14 @@ function enqueue_admin_menus_assets() {
'adminEditable' => __( 'Allow editing administrator menus', 'members' ),
'adminEditableWarn' => __( 'This can lock administrators out of menus. Continue?', 'members' ),
'saved' => __( 'Settings saved.', 'members' ),
+ 'invalidJson' => __( 'Invalid JSON.', 'members' ),
+ 'resetComplete' => __( 'Reset complete.', 'members' ),
+ 'imported' => __( 'Settings imported.', 'members' ),
+ 'resetFailed' => __( 'Reset failed.', 'members' ),
+ 'rolesMustDiffer' => __( 'Source and target roles must be different.', 'members' ),
+ 'resetNetworkError' => __( 'Could not reset settings. Check your connection and try again.', 'members' ),
+ 'importNetworkError' => __( 'Could not import settings. Check your connection and try again.', 'members' ),
+ 'readFileFailed' => __( 'Could not read the file.', 'members' ),
'networkError' => __( 'Could not save settings. Check your connection and try again.', 'members' ),
'unsavedChanges' => __( 'You have unsaved changes. If you leave this page, those changes will be lost.', 'members' ),
'visibility' => __( 'Visibility per role', 'members' ),
@@ -375,6 +383,7 @@ function render_admin_menus_page() {
?>
diff --git a/addons/members-admin-menus/app/functions.php b/addons/members-admin-menus/app/functions.php
index 320ef1c..9f4bc23 100644
--- a/addons/members-admin-menus/app/functions.php
+++ b/addons/members-admin-menus/app/functions.php
@@ -404,7 +404,7 @@ function apply_menu_overrides( $overrides ) {
if ( ! empty( $o['badge'] ) ) {
$badge_text = esc_html( $o['badge'] );
$badge_bg = ! empty( $o['badge_bg'] ) ? sanitize_hex_color( $o['badge_bg'] ) : '#d63638';
- $badge_html = ' ';
+ $badge_html = ' ';
$menu[ $k ][0] .= $badge_html;
}
if ( ! empty( $o['url'] ) && members_am_is_custom_menu_item_slug( $slug ) ) {
@@ -460,7 +460,7 @@ function apply_menu_overrides( $overrides ) {
if ( ! empty( $o['badge'] ) ) {
$badge_text = esc_html( $o['badge'] );
$badge_bg = ! empty( $o['badge_bg'] ) ? sanitize_hex_color( $o['badge_bg'] ) : '#d63638';
- $badge_html = ' ';
+ $badge_html = ' ';
$submenu[ $parent ][ $idx ][0] .= $badge_html;
}
if ( ! empty( $o['url'] ) && members_am_is_custom_menu_item_slug( $item[2] ) ) {
diff --git a/css/admin.css b/css/admin.css
index 01a7b81..1749258 100644
--- a/css/admin.css
+++ b/css/admin.css
@@ -1742,4 +1742,64 @@
.members-am-user-suggestion:last-child {
border-bottom: none;
+}
+
+/* Admin Menus screen — toolbar & edit panel (moved from inline styles in functions-admin.php) */
+#members-am-import-file.members-am-import-file-hidden {
+ display: none;
+}
+
+.members-am-user-search-wrap {
+ display: inline-flex;
+ align-items: center;
+ gap: 6px;
+}
+
+#members-am-user-search.members-am-user-search-input {
+ width: 200px;
+ max-width: 100%;
+}
+
+.members-am-legend-visibility-icon {
+ font-size: 14px;
+ width: 14px;
+ height: 14px;
+ vertical-align: middle;
+}
+
+.members-am-legend-nocap-badge {
+ display: inline-block;
+ background: #8c8f94;
+ color: #fff;
+ font-size: 9px;
+ padding: 1px 4px;
+ border-radius: 2px;
+ vertical-align: middle;
+}
+
+#members-am-icon-preview.members-am-icon-preview {
+ display: none;
+ width: 32px;
+ height: 32px;
+ object-fit: contain;
+ margin-bottom: 6px;
+ border: 1px solid #ddd;
+ border-radius: 3px;
+ padding: 2px;
+ background: #f0f0f1;
+}
+
+.members-am-icons .members-am-icon-upload-desc {
+ margin-top: 4px;
+}
+
+/* Admin sidebar menu badges (dynamic background-color still set inline in PHP) */
+#adminmenu .members-am-menu-badge {
+ display: inline-block;
+ color: #fff;
+ font-size: 9px;
+ padding: 1px 5px;
+ border-radius: 2px;
+ line-height: 1.4;
+ vertical-align: middle;
}
\ No newline at end of file
diff --git a/css/admin.min.css b/css/admin.min.css
index 0551a78..840b7b3 100644
--- a/css/admin.min.css
+++ b/css/admin.min.css
@@ -1 +1 @@
-#members-cp h2.hndle,#members-cp-side h2.hndle{border-bottom:none!important;justify-content:flex-start}#members-cp h2.hndle:before,#members-cp-side h2.hndle:before{content:url("data:image/svg+xml,%3Csvg width='15px' aria-hidden='true' focusable='false' data-prefix='fas' data-icon='users-cog' class='svg-inline--fa fa-users-cog fa-w-20' role='img' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 640 512'%3E%3Cpath fill='currentColor' d='M610.5 341.3c2.6-14.1 2.6-28.5 0-42.6l25.8-14.9c3-1.7 4.3-5.2 3.3-8.5-6.7-21.6-18.2-41.2-33.2-57.4-2.3-2.5-6-3.1-9-1.4l-25.8 14.9c-10.9-9.3-23.4-16.5-36.9-21.3v-29.8c0-3.4-2.4-6.4-5.7-7.1-22.3-5-45-4.8-66.2 0-3.3.7-5.7 3.7-5.7 7.1v29.8c-13.5 4.8-26 12-36.9 21.3l-25.8-14.9c-2.9-1.7-6.7-1.1-9 1.4-15 16.2-26.5 35.8-33.2 57.4-1 3.3.4 6.8 3.3 8.5l25.8 14.9c-2.6 14.1-2.6 28.5 0 42.6l-25.8 14.9c-3 1.7-4.3 5.2-3.3 8.5 6.7 21.6 18.2 41.1 33.2 57.4 2.3 2.5 6 3.1 9 1.4l25.8-14.9c10.9 9.3 23.4 16.5 36.9 21.3v29.8c0 3.4 2.4 6.4 5.7 7.1 22.3 5 45 4.8 66.2 0 3.3-.7 5.7-3.7 5.7-7.1v-29.8c13.5-4.8 26-12 36.9-21.3l25.8 14.9c2.9 1.7 6.7 1.1 9-1.4 15-16.2 26.5-35.8 33.2-57.4 1-3.3-.4-6.8-3.3-8.5l-25.8-14.9zM496 368.5c-26.8 0-48.5-21.8-48.5-48.5s21.8-48.5 48.5-48.5 48.5 21.8 48.5 48.5-21.7 48.5-48.5 48.5zM96 224c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm224 32c1.9 0 3.7-.5 5.6-.6 8.3-21.7 20.5-42.1 36.3-59.2 7.4-8 17.9-12.6 28.9-12.6 6.9 0 13.7 1.8 19.6 5.3l7.9 4.6c.8-.5 1.6-.9 2.4-1.4 7-14.6 11.2-30.8 11.2-48 0-61.9-50.1-112-112-112S208 82.1 208 144c0 61.9 50.1 112 112 112zm105.2 194.5c-2.3-1.2-4.6-2.6-6.8-3.9-8.2 4.8-15.3 9.8-27.5 9.8-10.9 0-21.4-4.6-28.9-12.6-18.3-19.8-32.3-43.9-40.2-69.6-10.7-34.5 24.9-49.7 25.8-50.3-.1-2.6-.1-5.2 0-7.8l-7.9-4.6c-3.8-2.2-7-5-9.8-8.1-3.3.2-6.5.6-9.8.6-24.6 0-47.6-6-68.5-16h-8.3C179.6 288 128 339.6 128 403.2V432c0 26.5 21.5 48 48 48h255.4c-3.7-6-6.2-12.8-6.2-20.3v-9.2zM173.1 274.6C161.5 263.1 145.6 256 128 256H64c-35.3 0-64 28.7-64 64v32c0 17.7 14.3 32 32 32h65.9c6.3-47.4 34.9-87.3 75.2-109.4z'%3E%3C/path%3E%3C/svg%3E");margin-right:5px}#members-cp-side .postbox-header{border-bottom:none!important}#members-cp-side .handle-actions .handle-order-higher,#members-cp-side .handle-actions .handle-order-lower{display:none}#members-cp-side .handle-actions .handlediv{position:absolute;right:5px}.members-upgrade-header{text-align:center;padding:5px}.members-upgrade-header a{color:#f59431}.memberpress-paid-memberships{background-color:#f5f5f5;padding:50px 10px;text-align:center}.memberpress-paid-memberships a{background-color:#0e4598;display:inline-block;padding:10px 20px;border-radius:300px;color:#fff;text-decoration:none;margin-top:20px}#members-cp-side .members-tabs{position:relative}#members-cp-side .members-tab-nav{background-color:transparent;margin-bottom:20px;border-right:none!important}#members-cp-side .members-tab-nav .members-tab-title{width:33.333%;height:50px;border-right:none!important}#members-cp-side .members-tab-nav .members-tab-title a{border:none}#members-cp-side .members-tab-content h3{font-weight:700;font-size:15px;margin-top:0;color:#000;margin-bottom:10px}#members-cp-side .members-tab-content .memberpress-paid-memberships{text-align:left;padding:20px}#members-cp-side .members-tab-content .memberpress-paid-memberships a{display:block;text-align:center}#members-cp-side .members-tabs .members-tab-nav li a,#members-cp-side .members-tabs .members-tab-nav li[aria-selected=false] a i{color:#555}#members-cp-side .members-tabs .members-tab-nav li a svg,#members-cp-side .members-tabs .members-tab-nav li[aria-selected=false] a svg{fill:#555}#members-cp-side .members-tabs .members-tab-nav li[aria-selected=true] a{background-color:transparent;border-bottom:2px solid #3582ae}#members-cp-side .members-tabs .members-tab-nav li[aria-selected=true] a i{color:#3582ae}#members-cp-side .members-tabs .members-tab-nav li[aria-selected=true] a svg{fill:#3582AE}.members-tab-title svg,.members-tab-title[aria-selected=false] svg{fill:#0073aa}.members-tab-title[aria-selected=true] svg{fill:#555}#wpcontent #members-admin-header{margin-left:-20px;padding:0;padding-left:22px;background-color:#f9f9f9;background-repeat:repeat;background-size:1200px 75px;min-height:36px;position:relative}#wpcontent #members-admin-header img.members-logo{height:90px}.members-upgrade-header #close-members-upgrade-header{position:absolute;right:20px;top:3px}.members-upgrade-header #close-members-upgrade-header:hover{cursor:pointer}.memberpress-welcome-panel.welcome-panel{margin-top:0;padding:40px 20px;background:#fff}.memberpress-welcome-panel.welcome-panel:before{background:0 0}.memberpress-welcome-panel.welcome-panel .about-description{margin:20px 0}.memberpress-welcome-panel.welcome-panel-content{margin:0}.memberpress-welcome-panel.welcome-panel-content .mp-logo-wrap>a{display:block}@media screen and (min-width:870px){.members_page_members-settings .members-short-p{max-width:612px;margin-left:auto;margin-right:auto}.members_page_members-settings .welcome-panel-content{text-align:center}}.members_page_members-settings .welcome-panel .button.button-hero{margin-left:auto;margin-right:auto}.members_page_members-settings .members-svg-wrap{display:inline-block;margin:0 auto 20px}@media screen and (max-width:870px){.members_page_members-settings .welcome-panel{padding:20px}.members_page_members-settings .members-svg-wrap{float:left;margin-right:28px}.admin_page_members-settings.rtl .members-svg-wrap{float:right;margin-right:0;margin-left:28px}}.members_page_members-settings .members-svg-link{display:table-cell;text-align:center;width:128px;height:128px;background:#363b3f;color:#fff;padding:24px 16px 16px;border-radius:50%;box-sizing:border-box;border:4px solid #fff;box-shadow:0 0 0 4px #363b3f}.members_page_members-settings .members-svg-link svg{max-width:84px;max-height:64px;width:auto;height:auto}.members-addons{display:grid;grid-template-columns:1fr 1fr;grid-row-gap:20px;grid-column-gap:20px}.members-addons .plugin-card{margin:0}.members-addons .plugin-card-top{width:100%}.members-addon{width:100%;position:relative;float:none;display:flex;align-items:center}.members-addon .desc{margin-bottom:80px}.addon-activate{text-align:center;border:1px solid #ddd;border-radius:3px;padding:5px 10px 10px;display:inline-block;width:100px;position:absolute;right:20px;bottom:20px}.activate-toggle:hover{cursor:pointer}.activate-toggle svg{max-width:20px;position:relative;top:5px}.activate-toggle svg{transform:rotate(180deg)}.activate-toggle svg.active{transform:rotate(0)}.activate-toggle svg path{fill:#cccccc}.activate-toggle svg.active path{fill:#8CBD5A}.activate-toggle.processing{cursor:not-allowed;pointer-events:none;opacity:.5}.activate-toggle .action-label{display:inline-block;width:50px;text-align:left}.mepr_dummy_txns{filter:blur(3px);position:absolute;top:0;left:0;width:100%;z-index:5;pointer-events:none}.mepr_dummy_txns::after{background-color:rgba(0,0,0,.2);position:absolute;top:0;left:0;width:100%;height:100%;z-index:6}.mepr-upgrade-table{position:relative}.mepr-upgrade-table .mepr-upgrade{position:relative;top:100px;z-index:10;background:rgba(0,0,0,.2);width:100%;height:100%;max-width:600px;margin:0 auto;box-shadow:0 0 30px #ccc}.mepr-upgrade-content{background-color:#fff;padding:20px;text-align:center}.mepr-upgrade-content h2{font-size:24px}.mepr-upgrade-content h4{font-size:18px}.mepr-upgrade-content .features{display:grid;grid-template-columns:1fr 1fr;grid-column-gap:30px;grid-row-gap:10px;align-items:center;justify-content:center;text-align:left;padding:10px}.features li:before{content:"\f147";font-family:dashicons;color:green;font-size:20px;position:relative;top:4px;margin-right:10px}.mepr-upgrade-cta{text-align:center;background-color:#f2f2f2;padding:20px}.mepr-upgrade-cta .mepr-cta-button{display:block;max-width:300px;margin:0 auto 20px;background-color:#fd9c27;color:#fff;padding:15px;font-size:18px;font-weight:700;text-decoration:none;border-radius:300px}.members-plugin-card.plugin-card:nth-child(2n){margin-right:inherit}.members-plugin-card.plugin-card:nth-child(odd){clear:none;margin-left:inherit}.members-plugin-card.plugin-card .plugin-card-top{min-height:0;padding:30px 20px}.members-plugin-card.plugin-card .plugin-icon{top:30px}.members-plugin-card.plugin-card .plugin-card-bottom .column-status{font-weight:700}.members-plugin-card.plugin-card .plugin-card-bottom .column-status .active{color:#8cbd5a}.members-plugin-card.plugin-card .plugin-card-bottom .column-status .inactive{color:red}.members-plugin-card.plugin-card .plugin-icon{width:64px;height:auto}.plugin-icon-small{width:32px;height:auto}.members-plugin-card.plugin-card .desc,.members-plugin-card.plugin-card .name{margin-right:0;margin-left:84px}.members-addons .plugin-card .desc p,.members-addons .plugin-card .name{margin-right:0}@media screen and (max-width:1100px){.members-addons{display:flex;flex-direction:column}}@media screen and (max-width:600px){.members_page_members-settings .members-svg-link{width:64px;height:64px}.members_page_members-settings .members-svg-link svg{position:absolute;top:14px;left:15px;max-width:30px;max-height:30px}.members_page_members-settings .plugin-card-members-acf-integration .members-svg-link svg,.members_page_members-settings .plugin-card-members-edd-integration .members-svg-link svg,.members_page_members-settings .plugin-card-members-givewp-integration .members-svg-link svg,.members_page_members-settings .plugin-card-members-meta-box-integration .members-svg-link svg,.members_page_members-settings .plugin-card-members-woocommerce-integration .members-svg-link svg{top:10px;left:8px;max-width:40px;max-height:40px}.members_page_members-settings .plugin-card-members-block-permissions .members-svg-link svg,.members_page_members-settings .plugin-card-members-role-hierarchy .members-svg-link svg{left:14px}.members-addons .plugin-card .desc>p,.members-addons .plugin-card .name{margin-left:84px}}.memberpress-about .welcome-panel-column-container{display:flex}.memberpress-about .mp-logo{max-width:256px;margin:50px}.members-about-addons{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-column-gap:20px}.members-about-addons .members-plugin-card{margin:0;width:100%}.members-about-addons .members-plugin-card .name h3 a{text-decoration:none}.members-about-addons .members-plugin-card .plugin-card-bottom{display:flex;align-items:center;justify-content:space-between}@media only screen and (max-width:1099px){.members-about-addons{grid-template-columns:1fr;grid-row-gap:20px}}@media screen and (min-width:1100px) and (max-width:1600px){.members-about-addons .members-plugin-card{float:none;width:auto;display:flex;flex-direction:column;justify-content:space-between}.members-plugin-card.plugin-card .desc{margin-left:0;margin-top:50px}.members-plugin-card.plugin-card .desc p{margin-left:0;margin-right:0}.members-plugin-card.plugin-card .plugin-card-bottom .column-status{float:none}.members-plugin-card.plugin-card .plugin-card-bottom .column-updated{float:none;width:auto}}@media screen and (max-width:1200px){.welcome-panel .welcome-panel-column-container{flex-direction:column-reverse;gap:0;padding:0}.memberpress-about .mp-logo{margin:0 0 20px}}.members-plugin-card.plugin-card .desc p{margin-left:0;margin-right:0}@media only screen and (min-width:783px){.members_page_roles .column-denied_caps,.members_page_roles .column-granted_caps,.members_page_roles .column-users{width:100px;text-align:center}}.members-title-div #titlewrap input{padding:0 8px;font-size:1.7em;line-height:normal;height:1.7em;width:100%;outline:0;margin:0 0 3px;background-color:#fff}.members-title-div input[name=role]{font-size:13px;height:22px;margin:0;width:16em}#tabcapsdiv{margin-top:1em}#tabcapsdiv>.hndle{padding:10px;border-bottom:1px solid #eee}#members-cp .inside,#tabcapsdiv .inside{margin:0;padding:0}.members-cap-tabs,.members-tabs{overflow:hidden;background:#fff;background:linear-gradient(90deg,#fafafa 0,#fafafa 20%,#fff 20%,#fff 100%)}@media only screen and (max-width:782px){.members-cap-tabs,.members-tabs{background:linear-gradient(90deg,#fafafa 0,#fafafa 48px,#fff 48px,#fff 100%)}}.members-cap-tabs .members-tab-nav,.members-tabs .members-tab-nav{position:relative;float:left;list-style:none;width:20%;line-height:1em;margin:0 0 -1px 0;padding:0;background-color:#fafafa;border-right:1px solid #eee;box-sizing:border-box}.members-cap-tabs .members-tab-nav li,.members-tabs .members-tab-nav li{display:block;position:relative;margin:0;padding:0;line-height:20px}.members-cap-tabs .members-tab-nav li a,.members-tabs .members-tab-nav li a{display:block;margin:0;padding:10px;line-height:20px!important;text-decoration:none;border-bottom:1px solid #eee;box-shadow:none}.members-cap-tabs .members-tab-nav li a .dashicons,.members-tabs .members-tab-nav li a .dashicons{line-height:20px;margin-right:3px}.members-cap-tabs .members-tab-nav li[aria-selected=true] a,.members-tabs .members-tab-nav li[aria-selected=true] a{position:relative;font-weight:700;color:#555;background-color:#e0e0e0}@media only screen and (max-width:782px){.members-cap-tabs .members-tab-nav,.members-tabs .members-tab-nav{width:48px}.members-cap-tabs .members-tab-nav li a .dashicons,.members-tabs .members-tab-nav li a .dashicons{width:24px;height:24px;font-size:24px;line-height:24px}.members-tab-nav li .dashicons::before{width:24px;height:24px}.members-tab-nav li .label{overflow:hidden;position:absolute;top:-1000em;left:-1000em;width:1px;height:1px}}.members-cap-tabs .members-tab-wrap,.members-tabs .members-tab-wrap{float:left;width:80%;margin-left:-1px}@media only screen and (max-width:782px){.members-cap-tabs .members-tab-wrap,.members-tabs .members-tab-wrap{width:calc(100% - 48px)}}#members-cp .members-tab-content{padding:10px;border-left:1px solid #e5e5e5}.members-roles-select td,.members-roles-select th{width:190px;overflow:hidden}.members-roles-select .check-all-th{text-align:center}.members-roles-select .check-all-th label{padding-left:5px}@media only screen and (min-width:850px){#side-sortables .members-tabs{background:#fff}#side-sortables .members-tabs .members-tab-wrap{width:100%}#side-sortables .members-tabs .members-tab-nav{display:table;width:100%}#side-sortables .members-tabs .members-tab-nav li{display:table-cell;text-align:center;border-right:1px solid #eee}#side-sortables .members-tabs .members-tab-nav li:last-of-type{border-right:none}#side-sortables .members-tabs .members-tab-nav li a{padding:10px 0}#side-sortables .members-tabs .members-tab-nav .dashicons{width:24px;height:24px;font-size:24px;line-height:24px}#side-sortables .members-tabs .members-tab-nav .dashicons::before{width:24px;height:24px}#side-sortables .members-tabs .members-tab-nav .label{overflow:hidden;position:absolute;top:-1000em;left:-1000em;width:1px;height:1px}}.members-tabs .members-tabs-label{display:block!important;font-weight:700;display:inline-block;margin-bottom:4px}.members-tabs .butterbean-control-checkbox .members-tabs-label{display:inline!important}.members-tabs .members-tabs-description{display:block;font-style:italic;margin-top:4px}.members-tabs .members-tabs-label+.members-tabs-description{margin-top:0;margin-bottom:4px}#tabcapsdiv table{border-right:none;border-top:none;border-bottom:none}#tabcapsdiv table td,#tabcapsdiv table th{padding:10px;padding-bottom:10px;border-bottom:1px solid #eee;font-size:13px;line-height:20px}#tabcapsdiv table td{padding:9px}#tabcapsdiv tbody tr:last-of-type td{border-bottom:none}#tabcapsdiv tfoot th{border-color:#eee}@media only screen and (max-width:782px){#tabcapsdiv table td,#tabcapsdiv table th{line-height:24px}}.members-roles-select .column-deny,.members-roles-select .column-grant{width:70px!important;text-align:left;display:table-cell!important;clear:none!important}.members-roles-select tfoot th,.members-roles-select thead th{padding:9px!important}.members-roles-select .column-deny input,.members-roles-select .column-grant input{margin:0 5px 0 0;vertical-align:middle}.members-roles-select tbody tr:nth-child(2n){background:#f2f2f2}.members-cap-tabs button{display:inline;margin:-4px;line-height:inherit;padding:4px 8px;border:1px solid transparent;background:0 0;border-radius:0;outline:0;-webkit-transition:all .25s ease-out;-moz-transition:all .25s ease-out;-o-transition:all .25s ease-out;transition:all .25s ease-out}.members-cap-tabs button:focus,.members-cap-tabs button:hover{border-color:#eee;background:#fafafa;cursor:pointer}.members-cap-tabs button:active{color:#0073aa;border-color:#0073aa}.members-cap-tabs button+.dashicons{display:none;margin-top:1px;margin-bottom:-1px;line-height:inherit}.members-cap-tabs button:focus+.dashicons,.members-cap-tabs button:hover+.dashicons{display:inline-block}.members-tab-content .members-highlight{background-color:rgba(0,115,170,.05)}.members-tab-content tbody{-webkit-transition:all 2s ease-in-out;-moz-transition:all 2s ease-in-out;-o-transition:all 2s ease-in-out;transition:all 2s ease-in-out}.members-cp-role-list-wrap{overflow:auto;min-height:42px;max-height:200px;padding:0 .9em;border:solid 1px #dfdfdf;background-color:#fdfdfd}#wpbody-content{padding-bottom:200px}.members-footer-promotion{text-align:center;font-weight:400;font-size:13px;line-height:16px;color:#787c82;padding:20px 0 30px 0;margin-bottom:20px}.members-footer-promotion p{font-weight:600}.members-footer-promotion-links,.members-footer-promotion-social{display:flex;justify-content:center;align-items:center}.members-footer-promotion-links{margin:9px 0 0}.members-footer-promotion-links span{color:#c3c4c7;padding:0 7px}.members-footer-promotion-social{margin:10px 0 0 0;gap:10px}.members-footer-promotion-social li{margin-bottom:0}.members-footer-promotion-social a{display:block;height:16px}.members_page_members-settings.rtl{right:unset}.members-addons .plugin-card{margin-right:148px}.button.button-warning:focus,.button.button-warning:hover{background:#c92424;border-color:#c92424;color:#fff}.members-reset-spinner{float:none;margin-top:0;vertical-align:middle}.members-admin-menus-wrap{max-width:1400px;--members-am-accent-use:var(--members-am-accent, var(--wp-admin-theme-color, #2271b1));--members-am-surface-use:var(--members-am-surface, color-mix(in srgb, var(--members-am-base, #1d2327) 88%, #fff 12%));--members-am-border-on-base-fallback:color-mix(in srgb, var(--members-am-base, #1d2327) 62%, #fff 38%);--members-am-chrome-bg:var(--wp-components-color-gray-100, #f6f7f7);--members-am-chrome-border:var(--wp-components-color-gray-400, #c3c4c7);--members-am-muted:var(--wp-components-color-gray-600, #646970)}.members-am-notices{margin:0 0 12px}.members-am-notices .notice{margin:0 0 8px}.members-admin-menus-toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:16px}.members-am-toolbar-loading{display:inline-flex;align-items:center;gap:8px;margin-left:4px;color:var(--members-am-muted,#646970);font-size:13px;line-height:1}.members-am-toolbar-loading .spinner{float:none;margin:0}.members-am-toolbar-loading[hidden]{display:none!important}.members-am-copy-wrap label{margin-right:8px}.members-am-chips{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:12px}.members-am-chip{border-radius:999px;padding:4px 12px;border:1px solid var(--members-am-chrome-border,#c3c4c7);background:var(--members-am-chrome-bg,#f6f7f7);cursor:pointer}.members-am-chip.is-active{background:var(--members-am-accent-use);border-color:var(--members-am-accent-use);color:var(--wp-components-color-accent-inverted,#fff)}.members-am-carousel-wrap{display:flex;align-items:stretch;gap:8px;margin-bottom:8px}.members-am-carousel-next,.members-am-carousel-prev{align-self:center;width:36px;height:36px;border-radius:50%;border:1px solid var(--members-am-chrome-border,#c3c4c7);background:var(--wp-components-color-background,#fff);cursor:pointer}.members-am-columns{display:flex;flex:1;gap:12px;min-height:320px;overflow:hidden}.members-am-column{flex:1;min-width:0;background:var(--members-am-base,#1d2327);border-radius:4px;color:var(--members-am-fg-on-base,#f0f0f1);display:flex;flex-direction:column}.members-am-user-column{border:2px dashed var(--wp-components-color-gray-700,#8c8f94)}.members-am-sidebar-head{display:flex;justify-content:space-between;align-items:center;padding:8px 10px;background:var(--members-am-surface-use);border-radius:4px 4px 0 0;font-weight:600;font-size:12px;text-transform:uppercase;letter-spacing:.04em;color:var(--members-am-fg-on-surface,var(--members-am-fg-on-base,#f0f0f1))}.members-am-col-filter{padding:6px 8px 8px;border-bottom:1px solid var(--members-am-border-on-base,var(--members-am-border-on-base-fallback));flex-shrink:0}.members-am-col-filter-input{width:100%;max-width:100%;box-sizing:border-box;font-size:12px;line-height:1.4;padding:4px 8px;border-radius:2px;border:1px solid var(--members-am-border-on-base,var(--members-am-border-on-base-fallback));background:var(--members-am-base,#1d2327);color:var(--members-am-fg-on-base,#f0f0f1)}.members-am-col-filter-input::placeholder{color:var(--members-am-fg-muted-on-base,var(--wp-components-color-gray-700,#8c8f94));opacity:1}.members-am-col-filter-input:focus{border-color:var(--members-am-accent-use);outline:1px solid transparent;box-shadow:0 0 0 var(--wp-admin-border-width-focus,1px) var(--members-am-accent-use)}.members-am-col-bulk{padding:0 8px 8px;border-bottom:1px solid var(--members-am-border-on-base,var(--members-am-border-on-base-fallback));flex-shrink:0}.members-am-col-bulk-toolbar,.members-am-col-collapse-toolbar{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:6px;align-items:center}.members-am-col-bulk-toolbar .button.button-small,.members-am-col-collapse-toolbar .button.button-small{font-size:11px;min-height:26px;line-height:24px;padding:0 8px;background:var(--members-am-surface-use);border-color:var(--members-am-border-on-surface,var(--members-am-border-on-base,var(--members-am-border-on-base-fallback)));color:var(--members-am-fg-on-surface,var(--members-am-fg-on-base,#f0f0f1))}.members-am-col-bulk-toolbar .button.button-small:hover,.members-am-col-collapse-toolbar .button.button-small:hover{background:color-mix(in srgb,var(--members-am-surface-use) 85%,#fff 15%);border-color:var(--wp-components-color-gray-700,#8c8f94);color:var(--members-am-fg-on-surface,var(--members-am-fg-on-base,#f0f0f1))}.members-am-item-lead{flex-shrink:0;display:flex;align-items:flex-start;justify-content:center;width:22px;padding:2px 0 0}.members-am-collapse-spacer{display:block;width:20px;height:20px;flex-shrink:0}.members-am-collapse-toggle{display:flex;align-items:center;justify-content:center;width:22px;height:22px;margin:0;padding:0;border:none;background:0 0;color:var(--members-am-fg-muted-on-base,var(--members-am-chrome-border,#c3c4c7));border-radius:2px;cursor:pointer;flex-shrink:0}.members-am-collapse-toggle:focus,.members-am-collapse-toggle:hover{color:var(--members-am-fg-on-base,#f0f0f1);background:color-mix(in srgb,var(--members-am-fg-on-base,#f0f0f1) 12%,transparent);outline:0}.members-am-collapse-toggle .dashicons{font-size:18px;width:18px;height:18px}.members-am-item-cb-wrap{flex-shrink:0;display:flex;align-items:flex-start;padding:2px 4px 0 0}.members-am-item-cb{margin:0;width:16px;height:16px;flex-shrink:0}.members-am-bulk-select{width:100%;max-width:100%;box-sizing:border-box;font-size:12px;line-height:1.4;padding:4px 8px;border-radius:2px;border:1px solid var(--members-am-border-on-base,var(--members-am-border-on-base-fallback));background:var(--members-am-base,#1d2327);color:var(--members-am-fg-on-base,#f0f0f1)}.members-am-bulk-select:focus{border-color:var(--members-am-accent-use);outline:1px solid transparent;box-shadow:0 0 0 var(--wp-admin-border-width-focus,1px) var(--members-am-accent-use)}.members-am-item.members-am-collapse-hidden,.members-am-item.members-am-filter-hidden,.members-am-sep.members-am-filter-hidden{display:none!important}.members-am-col-move button{margin-left:4px;padding:0 6px;min-height:24px;line-height:22px;font-size:11px}.members-am-sidebar-list{padding:6px 0 12px;overflow-y:auto;max-height:480px}.members-am-item{position:relative;display:flex;align-items:center;justify-content:space-between;gap:4px;padding:6px 10px 6px 6px;cursor:pointer;border-left:3px solid transparent;font-size:13px}.members-am-item.is-sub{padding-left:22px;font-size:12px;opacity:.95}.members-am-item.is-sub-deep{padding-left:36px}.members-am-sidebar-list .members-am-item{cursor:grab}.members-am-sidebar-list .members-am-item:active{cursor:grabbing}.members-am-sort-placeholder{box-sizing:border-box;min-height:36px;margin:2px 0;background:color-mix(in srgb,var(--members-am-accent-use) 8%,transparent);border:1px dashed var(--members-am-accent-use);border-radius:2px}.members-am-item.is-hidden{opacity:.18}.members-am-item.is-no-cap{opacity:.35}.members-am-item.is-no-cap.is-hidden{opacity:.15}.members-am-item.is-selected{border-left-color:var(--members-am-accent-use);background:color-mix(in srgb,var(--members-am-accent-use) 15%,transparent)}.members-am-item-main{flex:1;display:flex;align-items:center;gap:8px;min-width:0}.members-am-item-main .dashicons{font-size:18px;width:18px;height:18px}.members-am-item-label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.members-am-item-actions{display:none;gap:2px}.members-am-item:hover .members-am-item-actions{display:flex}.members-am-item-actions button{min-height:22px;padding:0 4px;line-height:20px;font-size:11px}.members-am-sep{text-align:center;opacity:.35;font-size:11px;padding:4px 0}.members-am-carousel-dots{text-align:center;margin-bottom:4px}.members-am-dot{width:8px;height:8px;border-radius:50%;border:none;margin:0 4px;padding:0;background:var(--members-am-chrome-border,#c3c4c7);cursor:pointer}.members-am-dot.is-active{background:var(--members-am-accent-use)}.members-am-carousel-status{text-align:center;color:var(--members-am-muted,#646970);font-size:12px;margin-top:0}.members-am-badge{font-size:9px;text-transform:uppercase;padding:1px 4px;border-radius:2px;margin-right:4px;vertical-align:middle}.members-am-badge-new{background:var(--members-am-accent-use);color:var(--wp-components-color-accent-inverted,#fff)}.members-am-badge-edit{background:#dba617;color:var(--members-am-base,#1d2327)}.members-am-badge-nocap{background:var(--wp-components-color-gray-700,#8c8f94);color:var(--wp-components-color-accent-inverted,#fff)}.members-am-legend{display:flex;flex-wrap:wrap;gap:16px;margin:0 0 8px;padding:0;font-size:12px;color:var(--members-am-muted,#646970)}.members-am-legend-item{display:inline-flex;align-items:center;gap:4px}.members-am-edit-panel{margin-top:20px;padding:16px;border:1px solid var(--members-am-chrome-border,#c3c4c7);background:var(--wp-components-color-background,#fff);border-radius:4px}.members-am-edit-panel-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.members-am-edit-panel-header h2{margin:0;font-size:16px}.members-am-edit-toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:12px}.members-am-edit-target-wrap select{margin-left:8px}.members-am-level-actions .button{margin-right:6px}.members-am-demote-wrap{display:inline-flex;align-items:center;gap:8px;flex-wrap:wrap;margin-right:6px}.members-am-demote-wrap .members-am-demote-select{min-width:200px;max-width:min(320px,100%)}.members-am-edit-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:16px}.members-am-edit-col label{display:block;font-weight:600;margin-bottom:4px}.members-am-icon-tabs{margin-bottom:8px}.members-am-icon-tabs .button{margin-right:4px;margin-bottom:4px}.members-am-icon-tabs .button.is-active{background:var(--members-am-accent-use);border-color:var(--members-am-accent-use);color:var(--wp-components-color-accent-inverted,#fff)}.members-am-icon-grid{display:flex;flex-wrap:wrap;gap:4px;max-height:160px;overflow-y:auto;border:1px solid var(--wp-components-color-gray-200,#dcdcde);padding:8px;background:var(--members-am-chrome-bg,#f6f7f7);margin-bottom:8px}.members-am-icon-pick{width:36px;height:36px;padding:0;display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--members-am-chrome-border,#c3c4c7);background:var(--wp-components-color-background,#fff);cursor:pointer}.members-am-bulk-visibility-hint{margin:0 0 8px;font-size:12px;color:var(--members-am-fg-muted-on-base,#646970)}.members-am-vis-role-filter-wrap{margin-bottom:8px}.members-am-vis-row.members-am-vis-filter-hidden{display:none}.members-am-vis-row{display:block;margin-bottom:6px;font-weight:400}.members-am-reset-dropdown{position:absolute;z-index:100;background:var(--wp-components-color-background,#fff);border:1px solid var(--members-am-chrome-border,#c3c4c7);border-radius:6px;padding:0;display:flex;flex-direction:column;box-shadow:0 4px 12px rgba(0,0,0,.15);min-width:280px;top:100%;left:0;margin-top:4px;overflow:hidden}.members-am-reset-title{padding:10px 14px;font-weight:600;font-size:13px;border-bottom:1px solid var(--wp-components-color-gray-200,#f0f0f0);color:var(--wp-components-color-foreground,#1d2327)}.members-am-reset-option{display:flex;align-items:flex-start;gap:10px;padding:12px 14px;border:none;background:0 0;cursor:pointer;text-align:left;width:100%;border-bottom:1px solid var(--wp-components-color-gray-200,#f0f0f0);transition:background .15s}.members-am-reset-option:last-child{border-bottom:none}.members-am-reset-option:hover{background:var(--members-am-chrome-bg,#f6f7f7)}.members-am-reset-option .dashicons{margin-top:2px;color:var(--members-am-muted,#646970)}.members-am-reset-option-text{display:flex;flex-direction:column;gap:2px}.members-am-reset-option-text strong{font-size:13px;color:var(--wp-components-color-foreground,#1d2327)}.members-am-reset-option-text small{font-size:12px;color:var(--members-am-muted,#646970)}.members-am-reset-danger:hover{background:#fcf0f1}.members-am-reset-danger .dashicons{color:#d63638}.members-am-reset-danger:hover strong{color:#d63638}@media screen and (max-width:782px){.members-am-columns{flex-direction:column}}.members-am-user-suggestions{position:absolute;z-index:100;background:var(--wp-components-color-background,#fff);border:1px solid var(--members-am-chrome-border,#c3c4c7);border-radius:4px;max-height:200px;overflow-y:auto;width:100%;box-shadow:0 2px 6px rgba(0,0,0,.15);top:100%;left:0}.members-am-user-suggestion{padding:8px 12px;cursor:pointer;font-size:13px;border-bottom:1px solid var(--wp-components-color-gray-200,#f0f0f0)}.members-am-user-suggestion:hover{background:color-mix(in srgb,var(--members-am-accent-use) 8%,var(--wp-components-color-background,#fff))}.members-am-user-suggestion:last-child{border-bottom:none}
\ No newline at end of file
+#members-cp h2.hndle,#members-cp-side h2.hndle{border-bottom:none !important;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}#members-cp h2.hndle:before,#members-cp-side h2.hndle:before{content:url("data:image/svg+xml,%3Csvg width='15px' aria-hidden='true' focusable='false' data-prefix='fas' data-icon='users-cog' class='svg-inline--fa fa-users-cog fa-w-20' role='img' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 640 512'%3E%3Cpath fill='currentColor' d='M610.5 341.3c2.6-14.1 2.6-28.5 0-42.6l25.8-14.9c3-1.7 4.3-5.2 3.3-8.5-6.7-21.6-18.2-41.2-33.2-57.4-2.3-2.5-6-3.1-9-1.4l-25.8 14.9c-10.9-9.3-23.4-16.5-36.9-21.3v-29.8c0-3.4-2.4-6.4-5.7-7.1-22.3-5-45-4.8-66.2 0-3.3.7-5.7 3.7-5.7 7.1v29.8c-13.5 4.8-26 12-36.9 21.3l-25.8-14.9c-2.9-1.7-6.7-1.1-9 1.4-15 16.2-26.5 35.8-33.2 57.4-1 3.3.4 6.8 3.3 8.5l25.8 14.9c-2.6 14.1-2.6 28.5 0 42.6l-25.8 14.9c-3 1.7-4.3 5.2-3.3 8.5 6.7 21.6 18.2 41.1 33.2 57.4 2.3 2.5 6 3.1 9 1.4l25.8-14.9c10.9 9.3 23.4 16.5 36.9 21.3v29.8c0 3.4 2.4 6.4 5.7 7.1 22.3 5 45 4.8 66.2 0 3.3-.7 5.7-3.7 5.7-7.1v-29.8c13.5-4.8 26-12 36.9-21.3l25.8 14.9c2.9 1.7 6.7 1.1 9-1.4 15-16.2 26.5-35.8 33.2-57.4 1-3.3-.4-6.8-3.3-8.5l-25.8-14.9zM496 368.5c-26.8 0-48.5-21.8-48.5-48.5s21.8-48.5 48.5-48.5 48.5 21.8 48.5 48.5-21.7 48.5-48.5 48.5zM96 224c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm224 32c1.9 0 3.7-.5 5.6-.6 8.3-21.7 20.5-42.1 36.3-59.2 7.4-8 17.9-12.6 28.9-12.6 6.9 0 13.7 1.8 19.6 5.3l7.9 4.6c.8-.5 1.6-.9 2.4-1.4 7-14.6 11.2-30.8 11.2-48 0-61.9-50.1-112-112-112S208 82.1 208 144c0 61.9 50.1 112 112 112zm105.2 194.5c-2.3-1.2-4.6-2.6-6.8-3.9-8.2 4.8-15.3 9.8-27.5 9.8-10.9 0-21.4-4.6-28.9-12.6-18.3-19.8-32.3-43.9-40.2-69.6-10.7-34.5 24.9-49.7 25.8-50.3-.1-2.6-.1-5.2 0-7.8l-7.9-4.6c-3.8-2.2-7-5-9.8-8.1-3.3.2-6.5.6-9.8.6-24.6 0-47.6-6-68.5-16h-8.3C179.6 288 128 339.6 128 403.2V432c0 26.5 21.5 48 48 48h255.4c-3.7-6-6.2-12.8-6.2-20.3v-9.2zM173.1 274.6C161.5 263.1 145.6 256 128 256H64c-35.3 0-64 28.7-64 64v32c0 17.7 14.3 32 32 32h65.9c6.3-47.4 34.9-87.3 75.2-109.4z'%3E%3C/path%3E%3C/svg%3E");margin-right:5px}#members-cp-side .postbox-header{border-bottom:none !important}#members-cp-side .handle-actions .handle-order-higher,#members-cp-side .handle-actions .handle-order-lower{display:none}#members-cp-side .handle-actions .handlediv{position:absolute;right:5px}.members-upgrade-header{text-align:center;padding:5px}.members-upgrade-header a{color:#f59431}.memberpress-paid-memberships{background-color:#f5f5f5;padding:50px 10px;text-align:center}.memberpress-paid-memberships a{background-color:#0e4598;display:inline-block;padding:10px 20px;border-radius:300px;color:#fff;text-decoration:none;margin-top:20px}#members-cp-side .members-tabs{position:relative}#members-cp-side .members-tab-nav{background-color:transparent;margin-bottom:20px;border-right:none !important}#members-cp-side .members-tab-nav .members-tab-title{width:33.333%;height:50px;border-right:none !important}#members-cp-side .members-tab-nav .members-tab-title a{border:0}#members-cp-side .members-tab-content h3{font-weight:bold;font-size:15px;margin-top:0;color:#000;margin-bottom:10px}#members-cp-side .members-tab-content .memberpress-paid-memberships{text-align:left;padding:20px}#members-cp-side .members-tab-content .memberpress-paid-memberships a{display:block;text-align:center}#members-cp-side .members-tabs .members-tab-nav li a,#members-cp-side .members-tabs .members-tab-nav li[aria-selected="false"] a i{color:#555}#members-cp-side .members-tabs .members-tab-nav li a svg,#members-cp-side .members-tabs .members-tab-nav li[aria-selected="false"] a svg{fill:#555}#members-cp-side .members-tabs .members-tab-nav li[aria-selected="true"] a{background-color:transparent;border-bottom:2px solid #3582ae}#members-cp-side .members-tabs .members-tab-nav li[aria-selected="true"] a i{color:#3582ae}#members-cp-side .members-tabs .members-tab-nav li[aria-selected="true"] a svg{fill:#3582ae}.members-tab-title svg,.members-tab-title[aria-selected="false"] svg{fill:#0073aa}.members-tab-title[aria-selected="true"] svg{fill:#555}#wpcontent #members-admin-header{margin-left:-20px;padding:0;padding-left:22px;background-color:#f9f9f9;background-repeat:repeat;background-size:1200px 75px;min-height:36px;position:relative}#wpcontent #members-admin-header img.members-logo{height:90px}.members-upgrade-header #close-members-upgrade-header{position:absolute;right:20px;top:3px}.members-upgrade-header #close-members-upgrade-header:hover{cursor:pointer}.memberpress-welcome-panel.welcome-panel{margin-top:0;padding:40px 20px;background:#fff}.memberpress-welcome-panel.welcome-panel:before{background:0}.memberpress-welcome-panel.welcome-panel .about-description{margin:20px 0}.memberpress-welcome-panel.welcome-panel-content{margin:0}.memberpress-welcome-panel.welcome-panel-content .mp-logo-wrap>a{display:block}@media screen and (min-width:870px){.members_page_members-settings .members-short-p{max-width:612px;margin-left:auto;margin-right:auto}.members_page_members-settings .welcome-panel-content{text-align:center}}.members_page_members-settings .welcome-panel .button.button-hero{margin-left:auto;margin-right:auto}.members_page_members-settings .members-svg-wrap{display:inline-block;margin:0 auto 20px}@media screen and (max-width:870px){.members_page_members-settings .welcome-panel{padding:20px}.members_page_members-settings .members-svg-wrap{float:left;margin-right:28px}.admin_page_members-settings.rtl .members-svg-wrap{float:right;margin-right:0;margin-left:28px}}.members_page_members-settings .members-svg-link{display:table-cell;text-align:center;width:128px;height:128px;background:#363b3f;color:#fff;padding:24px 16px 16px;border-radius:50%;-webkit-box-sizing:border-box;box-sizing:border-box;border:4px solid #fff;-webkit-box-shadow:0 0 0 4px #363b3f;box-shadow:0 0 0 4px #363b3f}.members_page_members-settings .members-svg-link svg{max-width:84px;max-height:64px;width:auto;height:auto}.members-addons{display:grid;grid-template-columns:1fr 1fr;grid-row-gap:20px;grid-column-gap:20px}.members-addons .plugin-card{margin:0}.members-addons .plugin-card-top{width:100%}.members-addon{width:100%;position:relative;float:none;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.members-addon .desc{margin-bottom:80px}.addon-activate{text-align:center;border:1px solid #ddd;border-radius:3px;padding:5px 10px 10px;display:inline-block;width:100px;position:absolute;right:20px;bottom:20px}.activate-toggle:hover{cursor:pointer}.activate-toggle svg{max-width:20px;position:relative;top:5px}.activate-toggle svg{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.activate-toggle svg.active{-webkit-transform:rotate(0);transform:rotate(0)}.activate-toggle svg path{fill:#ccc}.activate-toggle svg.active path{fill:#8cbd5a}.activate-toggle.processing{cursor:not-allowed;pointer-events:none;opacity:.5}.activate-toggle .action-label{display:inline-block;width:50px;text-align:left}.mepr_dummy_txns{-webkit-filter:blur(3px);filter:blur(3px);position:absolute;top:0;left:0;width:100%;z-index:5;pointer-events:none}.mepr_dummy_txns::after{background-color:rgba(0,0,0,.2);position:absolute;top:0;left:0;width:100%;height:100%;z-index:6}.mepr-upgrade-table{position:relative}.mepr-upgrade-table .mepr-upgrade{position:relative;top:100px;z-index:10;background:rgba(0,0,0,.2);width:100%;height:100%;max-width:600px;margin:0 auto;-webkit-box-shadow:0 0 30px #ccc;box-shadow:0 0 30px #ccc}.mepr-upgrade-content{background-color:#fff;padding:20px;text-align:center}.mepr-upgrade-content h2{font-size:24px}.mepr-upgrade-content h4{font-size:18px}.mepr-upgrade-content .features{display:grid;grid-template-columns:1fr 1fr;grid-column-gap:30px;grid-row-gap:10px;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;text-align:left;padding:10px}.features li:before{content:"\f147";font-family:dashicons;color:green;font-size:20px;position:relative;top:4px;margin-right:10px}.mepr-upgrade-cta{text-align:center;background-color:#f2f2f2;padding:20px}.mepr-upgrade-cta .mepr-cta-button{display:block;max-width:300px;margin:0 auto 20px;background-color:#fd9c27;color:#fff;padding:15px;font-size:18px;font-weight:bold;text-decoration:none;border-radius:300px}.members-plugin-card.plugin-card:nth-child(even){margin-right:inherit}.members-plugin-card.plugin-card:nth-child(odd){clear:none;margin-left:inherit}.members-plugin-card.plugin-card .plugin-card-top{min-height:0;padding:30px 20px}.members-plugin-card.plugin-card .plugin-icon{top:30px}.members-plugin-card.plugin-card .plugin-card-bottom .column-status{font-weight:bold}.members-plugin-card.plugin-card .plugin-card-bottom .column-status .active{color:#8cbd5a}.members-plugin-card.plugin-card .plugin-card-bottom .column-status .inactive{color:red}.members-plugin-card.plugin-card .plugin-icon{width:64px;height:auto}.plugin-icon-small{width:32px;height:auto}.members-plugin-card.plugin-card .name,.members-plugin-card.plugin-card .desc{margin-right:0;margin-left:84px}.members-addons .plugin-card .name,.members-addons .plugin-card .desc p{margin-right:0}@media screen and (max-width:1100px){.members-addons{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}}@media screen and (max-width:600px){.members_page_members-settings .members-svg-link{width:64px;height:64px}.members_page_members-settings .members-svg-link svg{position:absolute;top:14px;left:15px;max-width:30px;max-height:30px}.members_page_members-settings .plugin-card-members-edd-integration .members-svg-link svg,.members_page_members-settings .plugin-card-members-acf-integration .members-svg-link svg,.members_page_members-settings .plugin-card-members-givewp-integration .members-svg-link svg,.members_page_members-settings .plugin-card-members-meta-box-integration .members-svg-link svg,.members_page_members-settings .plugin-card-members-woocommerce-integration .members-svg-link svg{top:10px;left:8px;max-width:40px;max-height:40px}.members_page_members-settings .plugin-card-members-block-permissions .members-svg-link svg,.members_page_members-settings .plugin-card-members-role-hierarchy .members-svg-link svg{left:14px}.members-addons .plugin-card .desc>p,.members-addons .plugin-card .name{margin-left:84px}}.memberpress-about .welcome-panel-column-container{display:-webkit-box;display:-ms-flexbox;display:flex}.memberpress-about .mp-logo{max-width:256px;margin:50px}.members-about-addons{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-column-gap:20px}.members-about-addons .members-plugin-card{margin:0;width:100%}.members-about-addons .members-plugin-card .name h3 a{text-decoration:none}.members-about-addons .members-plugin-card .plugin-card-bottom{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}@media only screen and (max-width:1099px){.members-about-addons{grid-template-columns:1fr;grid-row-gap:20px}}@media screen and (min-width:1100px) and (max-width:1600px){.members-about-addons .members-plugin-card{float:none;width:auto;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.members-plugin-card.plugin-card .desc{margin-left:0;margin-top:50px}.members-plugin-card.plugin-card .desc p{margin-left:0;margin-right:0}.members-plugin-card.plugin-card .plugin-card-bottom .column-status{float:none}.members-plugin-card.plugin-card .plugin-card-bottom .column-updated{float:none;width:auto}}@media screen and (max-width:1200px){.welcome-panel .welcome-panel-column-container{-webkit-box-orient:vertical;-webkit-box-direction:reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse;gap:0;padding:0}.memberpress-about .mp-logo{margin:0 0 20px}}.members-plugin-card.plugin-card .desc p{margin-left:0;margin-right:0}@media only screen and (min-width:783px){.members_page_roles .column-users,.members_page_roles .column-granted_caps,.members_page_roles .column-denied_caps{width:100px;text-align:center}}.members-title-div #titlewrap input{padding:0 8px;font-size:1.7em;line-height:normal;height:1.7em;width:100%;outline:0;margin:0 0 3px;background-color:#fff}.members-title-div input[name="role"]{font-size:13px;height:22px;margin:0;width:16em}#tabcapsdiv{margin-top:1em}#tabcapsdiv>.hndle{padding:10px;border-bottom:1px solid #eee}#tabcapsdiv .inside,#members-cp .inside{margin:0;padding:0}.members-cap-tabs,.members-tabs{overflow:hidden;background:#fff;background:-webkit-gradient(linear,left top,right top,from(#fafafa),color-stop(20%,#fafafa),color-stop(20%,#fff),to(#fff));background:linear-gradient(90deg,#fafafa 0,#fafafa 20%,#fff 20%,#fff 100%)}@media only screen and (max-width:782px){.members-cap-tabs,.members-tabs{background:linear-gradient(90deg,#fafafa 0,#fafafa 48px,#fff 48px,#fff 100%)}}.members-cap-tabs .members-tab-nav,.members-tabs .members-tab-nav{position:relative;float:left;list-style:none;width:20%;line-height:1em;margin:0 0 -1px 0;padding:0;background-color:#fafafa;border-right:1px solid #eee;-webkit-box-sizing:border-box;box-sizing:border-box}.members-cap-tabs .members-tab-nav li,.members-tabs .members-tab-nav li{display:block;position:relative;margin:0;padding:0;line-height:20px}.members-cap-tabs .members-tab-nav li a,.members-tabs .members-tab-nav li a{display:block;margin:0;padding:10px;line-height:20px !important;text-decoration:none;border-bottom:1px solid #eee;-webkit-box-shadow:none;box-shadow:none}.members-cap-tabs .members-tab-nav li a .dashicons,.members-tabs .members-tab-nav li a .dashicons{line-height:20px;margin-right:3px}.members-cap-tabs .members-tab-nav li[aria-selected="true"] a,.members-tabs .members-tab-nav li[aria-selected="true"] a{position:relative;font-weight:bold;color:#555;background-color:#e0e0e0}@media only screen and (max-width:782px){.members-cap-tabs .members-tab-nav,.members-tabs .members-tab-nav{width:48px}.members-cap-tabs .members-tab-nav li a .dashicons,.members-tabs .members-tab-nav li a .dashicons{width:24px;height:24px;font-size:24px;line-height:24px}.members-tab-nav li .dashicons::before,.members-tab-nav li .dashicons::before{width:24px;height:24px}.members-tab-nav li .label{overflow:hidden;position:absolute;top:-1000em;left:-1000em;width:1px;height:1px}}.members-cap-tabs .members-tab-wrap,.members-tabs .members-tab-wrap{float:left;width:80%;margin-left:-1px}@media only screen and (max-width:782px){.members-cap-tabs .members-tab-wrap,.members-tabs .members-tab-wrap{width:calc(100% - 48px)}}#members-cp .members-tab-content{padding:10px;border-left:1px solid #e5e5e5}.members-roles-select th,.members-roles-select td{width:190px;overflow:hidden}.members-roles-select .check-all-th{text-align:center}.members-roles-select .check-all-th label{padding-left:5px}@media only screen and (min-width:850px){#side-sortables .members-tabs{background:#fff}#side-sortables .members-tabs .members-tab-wrap{width:100%}#side-sortables .members-tabs .members-tab-nav{display:table;width:100%}#side-sortables .members-tabs .members-tab-nav li{display:table-cell;text-align:center;border-right:1px solid #eee}#side-sortables .members-tabs .members-tab-nav li:last-of-type{border-right:0}#side-sortables .members-tabs .members-tab-nav li a{padding:10px 0}#side-sortables .members-tabs .members-tab-nav .dashicons{width:24px;height:24px;font-size:24px;line-height:24px}#side-sortables .members-tabs .members-tab-nav .dashicons::before{width:24px;height:24px}#side-sortables .members-tabs .members-tab-nav .label{overflow:hidden;position:absolute;top:-1000em;left:-1000em;width:1px;height:1px}}.members-tabs .members-tabs-label{display:block !important;font-weight:bold;display:inline-block;margin-bottom:4px}.members-tabs .butterbean-control-checkbox .members-tabs-label{display:inline !important}.members-tabs .members-tabs-description{display:block;font-style:italic;margin-top:4px}.members-tabs .members-tabs-label+.members-tabs-description{margin-top:0;margin-bottom:4px}#tabcapsdiv table{border-right:0;border-top:0;border-bottom:0}#tabcapsdiv table td,#tabcapsdiv table th{padding:10px;padding-bottom:10px;border-bottom:1px solid #eee;font-size:13px;line-height:20px}#tabcapsdiv table td{padding:9px}#tabcapsdiv tbody tr:last-of-type td{border-bottom:0}#tabcapsdiv tfoot th{border-color:#eee}@media only screen and (max-width:782px){#tabcapsdiv table td,#tabcapsdiv table th{line-height:24px}}.members-roles-select .column-grant,.members-roles-select .column-deny{width:70px !important;text-align:left;display:table-cell !important;clear:none !important}.members-roles-select thead th,.members-roles-select tfoot th{padding:9px !important}.members-roles-select .column-grant input,.members-roles-select .column-deny input{margin:0 5px 0 0;vertical-align:middle}.members-roles-select tbody tr:nth-child(even){background:#f2f2f2}.members-cap-tabs button{display:inline;margin:-4px;line-height:inherit;padding:4px 8px;border:1px solid transparent;background:transparent;border-radius:0;outline:0;-webkit-transition:all .25s ease-out;transition:all .25s ease-out}.members-cap-tabs button:hover,.members-cap-tabs button:focus{border-color:#eee;background:#fafafa;cursor:pointer}.members-cap-tabs button:active{color:#0073aa;border-color:#0073aa}.members-cap-tabs button+.dashicons{display:none;margin-top:1px;margin-bottom:-1px;line-height:inherit}.members-cap-tabs button:hover+.dashicons,.members-cap-tabs button:focus+.dashicons{display:inline-block}.members-tab-content .members-highlight{background-color:rgba(0,115,170,0.05)}.members-tab-content tbody{-webkit-transition:all 2s ease-in-out;transition:all 2s ease-in-out}.members-cp-role-list-wrap{overflow:auto;min-height:42px;max-height:200px;padding:0 .9em;border:solid 1px #dfdfdf;background-color:#fdfdfd}#wpbody-content{padding-bottom:200px}.members-footer-promotion{text-align:center;font-weight:400;font-size:13px;line-height:16px;color:#787c82;padding:20px 0 30px 0;margin-bottom:20px}.members-footer-promotion p{font-weight:600}.members-footer-promotion-links,.members-footer-promotion-social{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.members-footer-promotion-links{margin:9px 0 0}.members-footer-promotion-links span{color:#c3c4c7;padding:0 7px}.members-footer-promotion-social{margin:10px 0 0 0;gap:10px}.members-footer-promotion-social li{margin-bottom:0}.members-footer-promotion-social a{display:block;height:16px}.members_page_members-settings.rtl{.addon-activate{left:20px;right:unset}.members-addons .plugin-card{.name,.desc p{margin-left:0;margin-right:148px}}}.button.button-warning{background:#dc3232;border-color:#dc3232;color:#fff}.button.button-warning:hover,.button.button-warning:focus{background:#c92424;border-color:#c92424;color:#fff}.members-reset-spinner{float:none;margin-top:0;vertical-align:middle}.members-admin-menus-wrap{max-width:1400px;--members-am-accent-use:var(--members-am-accent,var(--wp-admin-theme-color,#2271b1));--members-am-surface-use:var(--members-am-surface,color-mix(in srgb,var(--members-am-base,#1d2327) 88%,#fff 12%));--members-am-border-on-base-fallback:color-mix(in srgb,var(--members-am-base,#1d2327) 62%,#fff 38%);--members-am-chrome-bg:var(--wp-components-color-gray-100,#f6f7f7);--members-am-chrome-border:var(--wp-components-color-gray-400,#c3c4c7);--members-am-muted:var(--wp-components-color-gray-600,#646970)}.members-am-notices{margin:0 0 12px}.members-am-notices .notice{margin:0 0 8px}.members-admin-menus-toolbar{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;margin-bottom:16px}.members-am-toolbar-loading{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;margin-left:4px;color:var(--members-am-muted,#646970);font-size:13px;line-height:1}.members-am-toolbar-loading .spinner{float:none;margin:0}.members-am-toolbar-loading[hidden]{display:none !important}.members-am-copy-wrap label{margin-right:8px}.members-am-chips{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:8px;margin-bottom:12px}.members-am-chip{border-radius:999px;padding:4px 12px;border:1px solid var(--members-am-chrome-border,#c3c4c7);background:var(--members-am-chrome-bg,#f6f7f7);cursor:pointer}.members-am-chip.is-active{background:var(--members-am-accent-use);border-color:var(--members-am-accent-use);color:var(--wp-components-color-accent-inverted,#fff)}.members-am-carousel-wrap{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;gap:8px;margin-bottom:8px}.members-am-carousel-prev,.members-am-carousel-next{-ms-flex-item-align:center;align-self:center;width:36px;height:36px;border-radius:50%;border:1px solid var(--members-am-chrome-border,#c3c4c7);background:var(--wp-components-color-background,#fff);cursor:pointer}.members-am-columns{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-ms-flex:1;flex:1;gap:12px;min-height:320px;overflow:hidden}.members-am-column{-webkit-box-flex:1;-ms-flex:1;flex:1;min-width:0;background:var(--members-am-base,#1d2327);border-radius:4px;color:var(--members-am-fg-on-base,#f0f0f1);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.members-am-user-column{border:2px dashed var(--wp-components-color-gray-700,#8c8f94)}.members-am-sidebar-head{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:8px 10px;background:var(--members-am-surface-use);border-radius:4px 4px 0 0;font-weight:600;font-size:12px;text-transform:uppercase;letter-spacing:.04em;color:var(--members-am-fg-on-surface,var(--members-am-fg-on-base,#f0f0f1))}.members-am-col-filter{padding:6px 8px 8px;border-bottom:1px solid var(--members-am-border-on-base,var(--members-am-border-on-base-fallback));-ms-flex-negative:0;flex-shrink:0}.members-am-col-filter-input{width:100%;max-width:100%;-webkit-box-sizing:border-box;box-sizing:border-box;font-size:12px;line-height:1.4;padding:4px 8px;border-radius:2px;border:1px solid var(--members-am-border-on-base,var(--members-am-border-on-base-fallback));background:var(--members-am-base,#1d2327);color:var(--members-am-fg-on-base,#f0f0f1)}.members-am-col-filter-input::-webkit-input-placeholder{color:var(--members-am-fg-muted-on-base,var(--wp-components-color-gray-700,#8c8f94));opacity:1}.members-am-col-filter-input::-moz-placeholder{color:var(--members-am-fg-muted-on-base,var(--wp-components-color-gray-700,#8c8f94));opacity:1}.members-am-col-filter-input:-ms-input-placeholder{color:var(--members-am-fg-muted-on-base,var(--wp-components-color-gray-700,#8c8f94));opacity:1}.members-am-col-filter-input::-ms-input-placeholder{color:var(--members-am-fg-muted-on-base,var(--wp-components-color-gray-700,#8c8f94));opacity:1}.members-am-col-filter-input::placeholder{color:var(--members-am-fg-muted-on-base,var(--wp-components-color-gray-700,#8c8f94));opacity:1}.members-am-col-filter-input:focus{border-color:var(--members-am-accent-use);outline:1px solid transparent;-webkit-box-shadow:0 0 0 var(--wp-admin-border-width-focus,1px) var(--members-am-accent-use);box-shadow:0 0 0 var(--wp-admin-border-width-focus,1px) var(--members-am-accent-use)}.members-am-col-bulk{padding:0 8px 8px;border-bottom:1px solid var(--members-am-border-on-base,var(--members-am-border-on-base-fallback));-ms-flex-negative:0;flex-shrink:0}.members-am-col-bulk-toolbar,.members-am-col-collapse-toolbar{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:6px;margin-bottom:6px;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.members-am-col-bulk-toolbar .button.button-small,.members-am-col-collapse-toolbar .button.button-small{font-size:11px;min-height:26px;line-height:24px;padding:0 8px;background:var(--members-am-surface-use);border-color:var(--members-am-border-on-surface,var(--members-am-border-on-base,var(--members-am-border-on-base-fallback)));color:var(--members-am-fg-on-surface,var(--members-am-fg-on-base,#f0f0f1))}.members-am-col-bulk-toolbar .button.button-small:hover,.members-am-col-collapse-toolbar .button.button-small:hover{background:color-mix(in srgb,var(--members-am-surface-use) 85%,#fff 15%);border-color:var(--wp-components-color-gray-700,#8c8f94);color:var(--members-am-fg-on-surface,var(--members-am-fg-on-base,#f0f0f1))}.members-am-item-lead{-ms-flex-negative:0;flex-shrink:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:22px;padding:2px 0 0}.members-am-collapse-spacer{display:block;width:20px;height:20px;-ms-flex-negative:0;flex-shrink:0}.members-am-collapse-toggle{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:22px;height:22px;margin:0;padding:0;border:0;background:transparent;color:var(--members-am-fg-muted-on-base,var(--members-am-chrome-border,#c3c4c7));border-radius:2px;cursor:pointer;-ms-flex-negative:0;flex-shrink:0}.members-am-collapse-toggle:hover,.members-am-collapse-toggle:focus{color:var(--members-am-fg-on-base,#f0f0f1);background:color-mix(in srgb,var(--members-am-fg-on-base,#f0f0f1) 12%,transparent);outline:0}.members-am-collapse-toggle .dashicons{font-size:18px;width:18px;height:18px}.members-am-item-cb-wrap{-ms-flex-negative:0;flex-shrink:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;padding:2px 4px 0 0}.members-am-item-cb{margin:0;width:16px;height:16px;-ms-flex-negative:0;flex-shrink:0}.members-am-bulk-select{width:100%;max-width:100%;-webkit-box-sizing:border-box;box-sizing:border-box;font-size:12px;line-height:1.4;padding:4px 8px;border-radius:2px;border:1px solid var(--members-am-border-on-base,var(--members-am-border-on-base-fallback));background:var(--members-am-base,#1d2327);color:var(--members-am-fg-on-base,#f0f0f1)}.members-am-bulk-select:focus{border-color:var(--members-am-accent-use);outline:1px solid transparent;-webkit-box-shadow:0 0 0 var(--wp-admin-border-width-focus,1px) var(--members-am-accent-use);box-shadow:0 0 0 var(--wp-admin-border-width-focus,1px) var(--members-am-accent-use)}.members-am-item.members-am-filter-hidden,.members-am-sep.members-am-filter-hidden,.members-am-item.members-am-collapse-hidden{display:none !important}.members-am-col-move button{margin-left:4px;padding:0 6px;min-height:24px;line-height:22px;font-size:11px}.members-am-sidebar-list{padding:6px 0 12px;overflow-y:auto;max-height:480px}.members-am-item{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;gap:4px;padding:6px 10px 6px 6px;cursor:pointer;border-left:3px solid transparent;font-size:13px}.members-am-item.is-sub{padding-left:22px;font-size:12px;opacity:.95}.members-am-item.is-sub-deep{padding-left:36px}.members-am-sidebar-list .members-am-item{cursor:-webkit-grab;cursor:grab}.members-am-sidebar-list .members-am-item:active{cursor:-webkit-grabbing;cursor:grabbing}.members-am-sort-placeholder{-webkit-box-sizing:border-box;box-sizing:border-box;min-height:36px;margin:2px 0;background:color-mix(in srgb,var(--members-am-accent-use) 8%,transparent);border:1px dashed var(--members-am-accent-use);border-radius:2px}.members-am-item.is-hidden{opacity:.18}.members-am-item.is-no-cap{opacity:.35}.members-am-item.is-no-cap.is-hidden{opacity:.15}.members-am-item.is-selected{border-left-color:var(--members-am-accent-use);background:color-mix(in srgb,var(--members-am-accent-use) 15%,transparent)}.members-am-item-main{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;min-width:0}.members-am-item-main .dashicons{font-size:18px;width:18px;height:18px}.members-am-item-label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.members-am-item-actions{display:none;gap:2px}.members-am-item:hover .members-am-item-actions{display:-webkit-box;display:-ms-flexbox;display:flex}.members-am-item-actions button{min-height:22px;padding:0 4px;line-height:20px;font-size:11px}.members-am-sep{text-align:center;opacity:.35;font-size:11px;padding:4px 0}.members-am-carousel-dots{text-align:center;margin-bottom:4px}.members-am-dot{width:8px;height:8px;border-radius:50%;border:0;margin:0 4px;padding:0;background:var(--members-am-chrome-border,#c3c4c7);cursor:pointer}.members-am-dot.is-active{background:var(--members-am-accent-use)}.members-am-carousel-status{text-align:center;color:var(--members-am-muted,#646970);font-size:12px;margin-top:0}.members-am-badge{font-size:9px;text-transform:uppercase;padding:1px 4px;border-radius:2px;margin-right:4px;vertical-align:middle}.members-am-badge-new{background:var(--members-am-accent-use);color:var(--wp-components-color-accent-inverted,#fff)}.members-am-badge-edit{background:#dba617;color:var(--members-am-base,#1d2327)}.members-am-badge-nocap{background:var(--wp-components-color-gray-700,#8c8f94);color:var(--wp-components-color-accent-inverted,#fff)}.members-am-legend{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:16px;margin:0 0 8px;padding:0;font-size:12px;color:var(--members-am-muted,#646970)}.members-am-legend-item{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:4px}.members-am-edit-panel{margin-top:20px;padding:16px;border:1px solid var(--members-am-chrome-border,#c3c4c7);background:var(--wp-components-color-background,#fff);border-radius:4px}.members-am-edit-panel-header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:12px}.members-am-edit-panel-header h2{margin:0;font-size:16px}.members-am-edit-toolbar{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:12px;margin-bottom:12px}.members-am-edit-target-wrap select{margin-left:8px}.members-am-level-actions .button{margin-right:6px}.members-am-demote-wrap{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:6px}.members-am-demote-wrap .members-am-demote-select{min-width:200px;max-width:min(320px,100%)}.members-am-edit-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:16px}.members-am-edit-col label{display:block;font-weight:600;margin-bottom:4px}.members-am-icon-tabs{margin-bottom:8px}.members-am-icon-tabs .button{margin-right:4px;margin-bottom:4px}.members-am-icon-tabs .button.is-active{background:var(--members-am-accent-use);border-color:var(--members-am-accent-use);color:var(--wp-components-color-accent-inverted,#fff)}.members-am-icon-grid{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:4px;max-height:160px;overflow-y:auto;border:1px solid var(--wp-components-color-gray-200,#dcdcde);padding:8px;background:var(--members-am-chrome-bg,#f6f7f7);margin-bottom:8px}.members-am-icon-pick{width:36px;height:36px;padding:0;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;border:1px solid var(--members-am-chrome-border,#c3c4c7);background:var(--wp-components-color-background,#fff);cursor:pointer}.members-am-bulk-visibility-hint{margin:0 0 8px;font-size:12px;color:var(--members-am-fg-muted-on-base,#646970)}.members-am-vis-role-filter-wrap{margin-bottom:8px}.members-am-vis-row.members-am-vis-filter-hidden{display:none}.members-am-vis-row{display:block;margin-bottom:6px;font-weight:normal}.members-am-reset-dropdown{position:absolute;z-index:100;background:var(--wp-components-color-background,#fff);border:1px solid var(--members-am-chrome-border,#c3c4c7);border-radius:6px;padding:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-shadow:0 4px 12px rgba(0,0,0,0.15);box-shadow:0 4px 12px rgba(0,0,0,0.15);min-width:280px;top:100%;left:0;margin-top:4px;overflow:hidden}.members-am-reset-title{padding:10px 14px;font-weight:600;font-size:13px;border-bottom:1px solid var(--wp-components-color-gray-200,#f0f0f0);color:var(--wp-components-color-foreground,#1d2327)}.members-am-reset-option{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;gap:10px;padding:12px 14px;border:0;background:0;cursor:pointer;text-align:left;width:100%;border-bottom:1px solid var(--wp-components-color-gray-200,#f0f0f0);-webkit-transition:background .15s;transition:background .15s}.members-am-reset-option:last-child{border-bottom:0}.members-am-reset-option:hover{background:var(--members-am-chrome-bg,#f6f7f7)}.members-am-reset-option .dashicons{margin-top:2px;color:var(--members-am-muted,#646970)}.members-am-reset-option-text{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:2px}.members-am-reset-option-text strong{font-size:13px;color:var(--wp-components-color-foreground,#1d2327)}.members-am-reset-option-text small{font-size:12px;color:var(--members-am-muted,#646970)}.members-am-reset-danger:hover{background:#fcf0f1}.members-am-reset-danger .dashicons{color:#d63638}.members-am-reset-danger:hover strong{color:#d63638}@media screen and (max-width:782px){.members-am-columns{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}}.members-am-user-suggestions{position:absolute;z-index:100;background:var(--wp-components-color-background,#fff);border:1px solid var(--members-am-chrome-border,#c3c4c7);border-radius:4px;max-height:200px;overflow-y:auto;width:100%;-webkit-box-shadow:0 2px 6px rgba(0,0,0,0.15);box-shadow:0 2px 6px rgba(0,0,0,0.15);top:100%;left:0}.members-am-user-suggestion{padding:8px 12px;cursor:pointer;font-size:13px;border-bottom:1px solid var(--wp-components-color-gray-200,#f0f0f0)}.members-am-user-suggestion:hover{background:color-mix(in srgb,var(--members-am-accent-use) 8%,var(--wp-components-color-background,#fff))}.members-am-user-suggestion:last-child{border-bottom:0}#members-am-import-file.members-am-import-file-hidden{display:none}.members-am-user-search-wrap{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px}#members-am-user-search.members-am-user-search-input{width:200px;max-width:100%}.members-am-legend-visibility-icon{font-size:14px;width:14px;height:14px;vertical-align:middle}.members-am-legend-nocap-badge{display:inline-block;background:#8c8f94;color:#fff;font-size:9px;padding:1px 4px;border-radius:2px;vertical-align:middle}#members-am-icon-preview.members-am-icon-preview{display:none;width:32px;height:32px;-o-object-fit:contain;object-fit:contain;margin-bottom:6px;border:1px solid #ddd;border-radius:3px;padding:2px;background:#f0f0f1}.members-am-icons .members-am-icon-upload-desc{margin-top:4px}#adminmenu .members-am-menu-badge{display:inline-block;color:#fff;font-size:9px;padding:1px 5px;border-radius:2px;line-height:1.4;vertical-align:middle}
\ No newline at end of file
From cf5e627c07189df1e2f402ee9cc2f98f685e0342 Mon Sep 17 00:00:00 2001
From: Omar ElHawary
Date: Thu, 23 Apr 2026 10:39:25 +0200
Subject: [PATCH 32/73] refactor(admin): optimize JavaScript for menu icon
rendering and enhance slug protection checks
---
addons/members-admin-menus/app/functions.php | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)
diff --git a/addons/members-admin-menus/app/functions.php b/addons/members-admin-menus/app/functions.php
index 9f4bc23..caf5557 100644
--- a/addons/members-admin-menus/app/functions.php
+++ b/addons/members-admin-menus/app/functions.php
@@ -499,7 +499,7 @@ function output_fa_icon_styles() {
$css .= $sel . ' img, ' . $sel . ' svg { display: none !important; }' . "\n";
$css .= $sel . ' { display: flex !important; align-items: center !important; justify-content: center !important; min-width: 20px !important; }' . "\n";
$css .= $sel . ' .members-am-fa { font-size: 20px; line-height: 1; display: inline-block; width: 20px; text-align: center; font-style: normal; font-weight: 900; vertical-align: middle; }' . "\n";
- $js .= 'jQuery("#' . esc_js( $menu_id ) . ' .wp-menu-image").html(\' \');' . "\n";
+ $js .= '(function(mid, faCls){var $w=jQuery("#"+mid+" .wp-menu-image");$w.empty();$w.append(jQuery(" ").attr("class","members-am-fa "+faCls).attr("aria-hidden","true"));})(' . wp_json_encode( (string) $menu_id ) . ', ' . wp_json_encode( (string) $fa_class ) . ');' . "\n";
}
echo '\n";
echo '' . "\n";
@@ -1112,7 +1112,11 @@ function get_current_screen_slugs() {
*/
function members_admin_menus_is_protected_slug( $slug ) {
$s = (string) $slug;
- return ( false !== stripos( $s, 'members-settings' ) || false !== stripos( $s, 'page=members' ) );
+ return (
+ false !== stripos( $s, 'members-settings' )
+ || false !== stripos( $s, 'members-admin-menus' )
+ || false !== stripos( $s, 'page=members' )
+ );
}
/**
From 80feb9f2b05b906e724ae84c0002c2b5d3cc707e Mon Sep 17 00:00:00 2001
From: Omar ElHawary
Date: Thu, 23 Apr 2026 10:52:32 +0200
Subject: [PATCH 33/73] refactor(admin): add function to match submenu child
slugs with current screen for improved menu navigation accuracy
---
addons/members-admin-menus/app/functions.php | 50 +++++++++++++++++++-
1 file changed, 48 insertions(+), 2 deletions(-)
diff --git a/addons/members-admin-menus/app/functions.php b/addons/members-admin-menus/app/functions.php
index caf5557..6775ad4 100644
--- a/addons/members-admin-menus/app/functions.php
+++ b/addons/members-admin-menus/app/functions.php
@@ -1041,6 +1041,52 @@ function block_restricted_pages() {
}
}
+/**
+ * Whether a stored submenu child slug matches a runtime screen slug.
+ *
+ * Avoids false positives when the child is a bare admin PHP basename that is only a prefix of
+ * another screen (e.g. Posts submenu child `edit.php` matching the Pages list `edit.php?post_type=page`).
+ *
+ * @param string $current Current screen id from get_current_screen_slugs().
+ * @param string $child_slug Submenu file/slug segment after `parent::`.
+ * @return bool
+ */
+function members_admin_menus_submenu_child_matches_current( $current, $child_slug ) {
+ $child_slug = (string) $child_slug;
+ $current = (string) $current;
+ if ( '' === $child_slug || '' === $current ) {
+ return false;
+ }
+ if ( $child_slug === $current ) {
+ return true;
+ }
+ // Child includes query args — classic submenu ids (e.g. edit-tags.php?taxonomy=post_tag).
+ if ( false !== strpos( $child_slug, '?' ) ) {
+ return false !== strpos( $current, $child_slug );
+ }
+ if ( 0 !== strpos( $current, $child_slug ) ) {
+ return false;
+ }
+ $len = strlen( $child_slug );
+ if ( strlen( $current ) === $len ) {
+ return true;
+ }
+ $nxt = $current[ $len ];
+ // Require a real path/query boundary (not `edit.php` matching a longer basename).
+ if ( '?' !== $nxt && '&' !== $nxt ) {
+ return false;
+ }
+ // CPT list / "Add New" screens share filenames; default Posts menu items map to post_type `post`.
+ $post_type_screens = array( 'edit.php', 'post-new.php' );
+ if ( ! in_array( $child_slug, $post_type_screens, true ) ) {
+ return true;
+ }
+ if ( ! preg_match( '/(?:^|[?&])post_type=([^&]+)/', $current, $m ) ) {
+ return true;
+ }
+ return 'post' === $m[1];
+}
+
/**
* Loose match for submenu vs top-level.
*
@@ -1054,8 +1100,8 @@ function members_admin_menus_slug_matches( $current, $stored ) {
}
if ( false !== strpos( $stored, '::' ) ) {
$parts = explode( '::', $stored, 2 );
- if ( isset( $parts[1] ) && ( $parts[1] === $current || false !== strpos( $current, $parts[1] ) ) ) {
- return true;
+ if ( isset( $parts[1] ) ) {
+ return members_admin_menus_submenu_child_matches_current( $current, $parts[1] );
}
}
return false;
From 46da3bde824a61a55771103e1d33f49defb55129 Mon Sep 17 00:00:00 2001
From: Omar ElHawary
Date: Thu, 23 Apr 2026 13:38:34 +0200
Subject: [PATCH 34/73] refactor(admin): enhance admin menus toolbar layout and
functionality with additional tools and improved accessibility
---
.../app/functions-admin.php | 86 ++++----
css/admin.css | 184 +++++++++++++++++-
css/admin.min.css | 2 +-
js/admin-menus.js | 31 +++
js/admin-menus.min.js | 2 +-
5 files changed, 267 insertions(+), 38 deletions(-)
diff --git a/addons/members-admin-menus/app/functions-admin.php b/addons/members-admin-menus/app/functions-admin.php
index e609fd4..a19aee4 100644
--- a/addons/members-admin-menus/app/functions-admin.php
+++ b/addons/members-admin-menus/app/functions-admin.php
@@ -376,6 +376,8 @@ function enqueue_admin_menus_assets() {
'bulkVisibilityHint' => __( 'For bulk visibility (whole column or checked rows), use the tools above each role column.', 'members' ),
'filterRolesVisibility' => __( 'Filter roles…', 'members' ),
'filterRolesVisibilityLabel' => __( 'Filter roles in this list', 'members' ),
+ 'moreToolsShowAria' => __( 'Show additional tools: copy between roles, import and export', 'members' ),
+ 'moreToolsHideAria' => __( 'Hide additional tools', 'members' ),
),
)
);
@@ -392,40 +394,56 @@ function render_admin_menus_page() {
diff --git a/css/admin.css b/css/admin.css
index 1749258..64de82f 100644
--- a/css/admin.css
+++ b/css/admin.css
@@ -1077,11 +1077,191 @@
}
.members-admin-menus-toolbar {
+ display: flex;
+ flex-direction: column;
+ align-items: stretch;
+ gap: 0;
+ margin-bottom: 16px;
+ border: 1px solid var(--members-am-chrome-border, #c3c4c7);
+ border-radius: 2px;
+ background: var(--wp-components-color-background, #fff);
+ overflow: hidden;
+}
+
+.members-am-toolbar-row {
display: flex;
flex-wrap: wrap;
align-items: center;
gap: 8px;
- margin-bottom: 16px;
+}
+
+.members-am-toolbar-row--primary {
+ padding: 10px 12px;
+ justify-content: space-between;
+ row-gap: 10px;
+}
+
+.members-am-toolbar-group {
+ display: flex;
+ flex-wrap: wrap;
+ align-items: center;
+ gap: 8px;
+}
+
+.members-am-toolbar-group--document {
+ padding-right: 12px;
+ border-right: 1px solid var(--members-am-chrome-border, #c3c4c7);
+}
+
+.members-am-toolbar-row--primary .members-am-toolbar-primary-user {
+ display: inline-flex;
+ align-items: center;
+ gap: 6px;
+ margin-left: 8px;
+ flex: 0 1 auto;
+ min-width: 0;
+}
+
+.members-am-toolbar-row--primary .members-am-toolbar-primary-user #members-am-user-search.members-am-user-search-input {
+ width: 168px;
+ max-width: 100%;
+ min-width: 0;
+}
+
+.members-am-toolbar-group--view {
+ margin-left: auto;
+ flex-wrap: nowrap;
+}
+
+.members-am-toolbar-extra {
+ background: var(--members-am-chrome-bg, #f6f7f7);
+ border-top: 1px solid var(--members-am-chrome-border, #c3c4c7);
+ padding: 10px 12px;
+ display: flex;
+ flex-direction: column;
+ gap: 10px;
+}
+
+.members-am-toolbar-extra[hidden] {
+ display: none !important;
+}
+
+.members-am-toolbar-row--extra-tools {
+ justify-content: flex-start;
+ align-items: center;
+ flex-wrap: wrap;
+ row-gap: 10px;
+}
+
+.members-am-toolbar-row--extra-tools .members-am-copy-wrap {
+ margin-left: 4px;
+ padding-left: 12px;
+ border-left: 1px solid var(--members-am-chrome-border, #c3c4c7);
+}
+
+.members-am-toolbar-row--extra-tools .members-am-toolbar-group--io {
+ display: inline-flex;
+ flex-wrap: wrap;
+ align-items: center;
+ gap: 8px;
+ margin-left: 8px;
+ padding-left: 12px;
+ border-left: 1px solid var(--members-am-chrome-border, #c3c4c7);
+}
+
+.members-am-more-tools,
+.members-am-more-tools:hover,
+.members-am-more-tools:focus,
+.members-am-more-tools:active {
+ text-decoration: none;
+}
+
+.members-am-more-tools {
+ display: inline-flex;
+ align-items: center;
+ gap: 2px;
+ white-space: nowrap;
+ padding: 2px 2px 2px 4px;
+ vertical-align: middle;
+}
+
+.members-am-more-tools .members-am-more-tools-chevron,
+.members-am-more-tools:hover .members-am-more-tools-chevron,
+.members-am-more-tools:focus .members-am-more-tools-chevron,
+.members-am-more-tools:active .members-am-more-tools-chevron {
+ text-decoration: none;
+}
+
+.members-am-more-tools .members-am-more-tools-chevron {
+ width: 18px;
+ height: 18px;
+ font-size: 18px;
+ line-height: 1;
+ opacity: 0.88;
+ transition: transform 0.15s ease;
+}
+
+.members-am-more-tools.is-open .members-am-more-tools-chevron {
+ transform: rotate(-180deg);
+}
+
+@media (prefers-reduced-motion: reduce) {
+ .members-am-more-tools .members-am-more-tools-chevron {
+ transition: none;
+ }
+}
+
+@media screen and (max-width: 782px) {
+ .members-am-toolbar-group--document {
+ border-right: none;
+ padding-right: 0;
+ border-bottom: 1px solid var(--members-am-chrome-border, #c3c4c7);
+ padding-bottom: 10px;
+ width: 100%;
+ }
+
+ .members-am-toolbar-group--view {
+ margin-left: 0;
+ width: 100%;
+ justify-content: space-between;
+ }
+
+ .members-am-toolbar-row--primary .members-am-toolbar-primary-user {
+ margin-left: 0;
+ padding-left: 0;
+ border-left: none;
+ padding-top: 8px;
+ border-top: 1px solid var(--members-am-chrome-border, #c3c4c7);
+ width: 100%;
+ max-width: none;
+ }
+
+ .members-am-toolbar-row--primary .members-am-toolbar-primary-user #members-am-user-search.members-am-user-search-input {
+ width: 100%;
+ max-width: 100%;
+ }
+
+ .members-am-toolbar-row--extra-tools .members-am-admin-editable {
+ width: 100%;
+ }
+
+ .members-am-toolbar-row--extra-tools .members-am-copy-wrap {
+ margin-left: 0;
+ padding-left: 0;
+ border-left: none;
+ padding-top: 8px;
+ border-top: 1px solid var(--members-am-chrome-border, #c3c4c7);
+ width: 100%;
+ }
+
+ .members-am-toolbar-row--extra-tools .members-am-toolbar-group--io {
+ margin-left: 0;
+ padding-left: 0;
+ border-left: none;
+ padding-top: 8px;
+ border-top: 1px solid var(--members-am-chrome-border, #c3c4c7);
+ width: 100%;
+ }
}
.members-am-toolbar-loading {
@@ -1756,7 +1936,7 @@
}
#members-am-user-search.members-am-user-search-input {
- width: 200px;
+ width: 168px;
max-width: 100%;
}
diff --git a/css/admin.min.css b/css/admin.min.css
index 840b7b3..7d2b1f1 100644
--- a/css/admin.min.css
+++ b/css/admin.min.css
@@ -1 +1 @@
-#members-cp h2.hndle,#members-cp-side h2.hndle{border-bottom:none !important;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}#members-cp h2.hndle:before,#members-cp-side h2.hndle:before{content:url("data:image/svg+xml,%3Csvg width='15px' aria-hidden='true' focusable='false' data-prefix='fas' data-icon='users-cog' class='svg-inline--fa fa-users-cog fa-w-20' role='img' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 640 512'%3E%3Cpath fill='currentColor' d='M610.5 341.3c2.6-14.1 2.6-28.5 0-42.6l25.8-14.9c3-1.7 4.3-5.2 3.3-8.5-6.7-21.6-18.2-41.2-33.2-57.4-2.3-2.5-6-3.1-9-1.4l-25.8 14.9c-10.9-9.3-23.4-16.5-36.9-21.3v-29.8c0-3.4-2.4-6.4-5.7-7.1-22.3-5-45-4.8-66.2 0-3.3.7-5.7 3.7-5.7 7.1v29.8c-13.5 4.8-26 12-36.9 21.3l-25.8-14.9c-2.9-1.7-6.7-1.1-9 1.4-15 16.2-26.5 35.8-33.2 57.4-1 3.3.4 6.8 3.3 8.5l25.8 14.9c-2.6 14.1-2.6 28.5 0 42.6l-25.8 14.9c-3 1.7-4.3 5.2-3.3 8.5 6.7 21.6 18.2 41.1 33.2 57.4 2.3 2.5 6 3.1 9 1.4l25.8-14.9c10.9 9.3 23.4 16.5 36.9 21.3v29.8c0 3.4 2.4 6.4 5.7 7.1 22.3 5 45 4.8 66.2 0 3.3-.7 5.7-3.7 5.7-7.1v-29.8c13.5-4.8 26-12 36.9-21.3l25.8 14.9c2.9 1.7 6.7 1.1 9-1.4 15-16.2 26.5-35.8 33.2-57.4 1-3.3-.4-6.8-3.3-8.5l-25.8-14.9zM496 368.5c-26.8 0-48.5-21.8-48.5-48.5s21.8-48.5 48.5-48.5 48.5 21.8 48.5 48.5-21.7 48.5-48.5 48.5zM96 224c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm224 32c1.9 0 3.7-.5 5.6-.6 8.3-21.7 20.5-42.1 36.3-59.2 7.4-8 17.9-12.6 28.9-12.6 6.9 0 13.7 1.8 19.6 5.3l7.9 4.6c.8-.5 1.6-.9 2.4-1.4 7-14.6 11.2-30.8 11.2-48 0-61.9-50.1-112-112-112S208 82.1 208 144c0 61.9 50.1 112 112 112zm105.2 194.5c-2.3-1.2-4.6-2.6-6.8-3.9-8.2 4.8-15.3 9.8-27.5 9.8-10.9 0-21.4-4.6-28.9-12.6-18.3-19.8-32.3-43.9-40.2-69.6-10.7-34.5 24.9-49.7 25.8-50.3-.1-2.6-.1-5.2 0-7.8l-7.9-4.6c-3.8-2.2-7-5-9.8-8.1-3.3.2-6.5.6-9.8.6-24.6 0-47.6-6-68.5-16h-8.3C179.6 288 128 339.6 128 403.2V432c0 26.5 21.5 48 48 48h255.4c-3.7-6-6.2-12.8-6.2-20.3v-9.2zM173.1 274.6C161.5 263.1 145.6 256 128 256H64c-35.3 0-64 28.7-64 64v32c0 17.7 14.3 32 32 32h65.9c6.3-47.4 34.9-87.3 75.2-109.4z'%3E%3C/path%3E%3C/svg%3E");margin-right:5px}#members-cp-side .postbox-header{border-bottom:none !important}#members-cp-side .handle-actions .handle-order-higher,#members-cp-side .handle-actions .handle-order-lower{display:none}#members-cp-side .handle-actions .handlediv{position:absolute;right:5px}.members-upgrade-header{text-align:center;padding:5px}.members-upgrade-header a{color:#f59431}.memberpress-paid-memberships{background-color:#f5f5f5;padding:50px 10px;text-align:center}.memberpress-paid-memberships a{background-color:#0e4598;display:inline-block;padding:10px 20px;border-radius:300px;color:#fff;text-decoration:none;margin-top:20px}#members-cp-side .members-tabs{position:relative}#members-cp-side .members-tab-nav{background-color:transparent;margin-bottom:20px;border-right:none !important}#members-cp-side .members-tab-nav .members-tab-title{width:33.333%;height:50px;border-right:none !important}#members-cp-side .members-tab-nav .members-tab-title a{border:0}#members-cp-side .members-tab-content h3{font-weight:bold;font-size:15px;margin-top:0;color:#000;margin-bottom:10px}#members-cp-side .members-tab-content .memberpress-paid-memberships{text-align:left;padding:20px}#members-cp-side .members-tab-content .memberpress-paid-memberships a{display:block;text-align:center}#members-cp-side .members-tabs .members-tab-nav li a,#members-cp-side .members-tabs .members-tab-nav li[aria-selected="false"] a i{color:#555}#members-cp-side .members-tabs .members-tab-nav li a svg,#members-cp-side .members-tabs .members-tab-nav li[aria-selected="false"] a svg{fill:#555}#members-cp-side .members-tabs .members-tab-nav li[aria-selected="true"] a{background-color:transparent;border-bottom:2px solid #3582ae}#members-cp-side .members-tabs .members-tab-nav li[aria-selected="true"] a i{color:#3582ae}#members-cp-side .members-tabs .members-tab-nav li[aria-selected="true"] a svg{fill:#3582ae}.members-tab-title svg,.members-tab-title[aria-selected="false"] svg{fill:#0073aa}.members-tab-title[aria-selected="true"] svg{fill:#555}#wpcontent #members-admin-header{margin-left:-20px;padding:0;padding-left:22px;background-color:#f9f9f9;background-repeat:repeat;background-size:1200px 75px;min-height:36px;position:relative}#wpcontent #members-admin-header img.members-logo{height:90px}.members-upgrade-header #close-members-upgrade-header{position:absolute;right:20px;top:3px}.members-upgrade-header #close-members-upgrade-header:hover{cursor:pointer}.memberpress-welcome-panel.welcome-panel{margin-top:0;padding:40px 20px;background:#fff}.memberpress-welcome-panel.welcome-panel:before{background:0}.memberpress-welcome-panel.welcome-panel .about-description{margin:20px 0}.memberpress-welcome-panel.welcome-panel-content{margin:0}.memberpress-welcome-panel.welcome-panel-content .mp-logo-wrap>a{display:block}@media screen and (min-width:870px){.members_page_members-settings .members-short-p{max-width:612px;margin-left:auto;margin-right:auto}.members_page_members-settings .welcome-panel-content{text-align:center}}.members_page_members-settings .welcome-panel .button.button-hero{margin-left:auto;margin-right:auto}.members_page_members-settings .members-svg-wrap{display:inline-block;margin:0 auto 20px}@media screen and (max-width:870px){.members_page_members-settings .welcome-panel{padding:20px}.members_page_members-settings .members-svg-wrap{float:left;margin-right:28px}.admin_page_members-settings.rtl .members-svg-wrap{float:right;margin-right:0;margin-left:28px}}.members_page_members-settings .members-svg-link{display:table-cell;text-align:center;width:128px;height:128px;background:#363b3f;color:#fff;padding:24px 16px 16px;border-radius:50%;-webkit-box-sizing:border-box;box-sizing:border-box;border:4px solid #fff;-webkit-box-shadow:0 0 0 4px #363b3f;box-shadow:0 0 0 4px #363b3f}.members_page_members-settings .members-svg-link svg{max-width:84px;max-height:64px;width:auto;height:auto}.members-addons{display:grid;grid-template-columns:1fr 1fr;grid-row-gap:20px;grid-column-gap:20px}.members-addons .plugin-card{margin:0}.members-addons .plugin-card-top{width:100%}.members-addon{width:100%;position:relative;float:none;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.members-addon .desc{margin-bottom:80px}.addon-activate{text-align:center;border:1px solid #ddd;border-radius:3px;padding:5px 10px 10px;display:inline-block;width:100px;position:absolute;right:20px;bottom:20px}.activate-toggle:hover{cursor:pointer}.activate-toggle svg{max-width:20px;position:relative;top:5px}.activate-toggle svg{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.activate-toggle svg.active{-webkit-transform:rotate(0);transform:rotate(0)}.activate-toggle svg path{fill:#ccc}.activate-toggle svg.active path{fill:#8cbd5a}.activate-toggle.processing{cursor:not-allowed;pointer-events:none;opacity:.5}.activate-toggle .action-label{display:inline-block;width:50px;text-align:left}.mepr_dummy_txns{-webkit-filter:blur(3px);filter:blur(3px);position:absolute;top:0;left:0;width:100%;z-index:5;pointer-events:none}.mepr_dummy_txns::after{background-color:rgba(0,0,0,.2);position:absolute;top:0;left:0;width:100%;height:100%;z-index:6}.mepr-upgrade-table{position:relative}.mepr-upgrade-table .mepr-upgrade{position:relative;top:100px;z-index:10;background:rgba(0,0,0,.2);width:100%;height:100%;max-width:600px;margin:0 auto;-webkit-box-shadow:0 0 30px #ccc;box-shadow:0 0 30px #ccc}.mepr-upgrade-content{background-color:#fff;padding:20px;text-align:center}.mepr-upgrade-content h2{font-size:24px}.mepr-upgrade-content h4{font-size:18px}.mepr-upgrade-content .features{display:grid;grid-template-columns:1fr 1fr;grid-column-gap:30px;grid-row-gap:10px;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;text-align:left;padding:10px}.features li:before{content:"\f147";font-family:dashicons;color:green;font-size:20px;position:relative;top:4px;margin-right:10px}.mepr-upgrade-cta{text-align:center;background-color:#f2f2f2;padding:20px}.mepr-upgrade-cta .mepr-cta-button{display:block;max-width:300px;margin:0 auto 20px;background-color:#fd9c27;color:#fff;padding:15px;font-size:18px;font-weight:bold;text-decoration:none;border-radius:300px}.members-plugin-card.plugin-card:nth-child(even){margin-right:inherit}.members-plugin-card.plugin-card:nth-child(odd){clear:none;margin-left:inherit}.members-plugin-card.plugin-card .plugin-card-top{min-height:0;padding:30px 20px}.members-plugin-card.plugin-card .plugin-icon{top:30px}.members-plugin-card.plugin-card .plugin-card-bottom .column-status{font-weight:bold}.members-plugin-card.plugin-card .plugin-card-bottom .column-status .active{color:#8cbd5a}.members-plugin-card.plugin-card .plugin-card-bottom .column-status .inactive{color:red}.members-plugin-card.plugin-card .plugin-icon{width:64px;height:auto}.plugin-icon-small{width:32px;height:auto}.members-plugin-card.plugin-card .name,.members-plugin-card.plugin-card .desc{margin-right:0;margin-left:84px}.members-addons .plugin-card .name,.members-addons .plugin-card .desc p{margin-right:0}@media screen and (max-width:1100px){.members-addons{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}}@media screen and (max-width:600px){.members_page_members-settings .members-svg-link{width:64px;height:64px}.members_page_members-settings .members-svg-link svg{position:absolute;top:14px;left:15px;max-width:30px;max-height:30px}.members_page_members-settings .plugin-card-members-edd-integration .members-svg-link svg,.members_page_members-settings .plugin-card-members-acf-integration .members-svg-link svg,.members_page_members-settings .plugin-card-members-givewp-integration .members-svg-link svg,.members_page_members-settings .plugin-card-members-meta-box-integration .members-svg-link svg,.members_page_members-settings .plugin-card-members-woocommerce-integration .members-svg-link svg{top:10px;left:8px;max-width:40px;max-height:40px}.members_page_members-settings .plugin-card-members-block-permissions .members-svg-link svg,.members_page_members-settings .plugin-card-members-role-hierarchy .members-svg-link svg{left:14px}.members-addons .plugin-card .desc>p,.members-addons .plugin-card .name{margin-left:84px}}.memberpress-about .welcome-panel-column-container{display:-webkit-box;display:-ms-flexbox;display:flex}.memberpress-about .mp-logo{max-width:256px;margin:50px}.members-about-addons{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-column-gap:20px}.members-about-addons .members-plugin-card{margin:0;width:100%}.members-about-addons .members-plugin-card .name h3 a{text-decoration:none}.members-about-addons .members-plugin-card .plugin-card-bottom{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}@media only screen and (max-width:1099px){.members-about-addons{grid-template-columns:1fr;grid-row-gap:20px}}@media screen and (min-width:1100px) and (max-width:1600px){.members-about-addons .members-plugin-card{float:none;width:auto;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.members-plugin-card.plugin-card .desc{margin-left:0;margin-top:50px}.members-plugin-card.plugin-card .desc p{margin-left:0;margin-right:0}.members-plugin-card.plugin-card .plugin-card-bottom .column-status{float:none}.members-plugin-card.plugin-card .plugin-card-bottom .column-updated{float:none;width:auto}}@media screen and (max-width:1200px){.welcome-panel .welcome-panel-column-container{-webkit-box-orient:vertical;-webkit-box-direction:reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse;gap:0;padding:0}.memberpress-about .mp-logo{margin:0 0 20px}}.members-plugin-card.plugin-card .desc p{margin-left:0;margin-right:0}@media only screen and (min-width:783px){.members_page_roles .column-users,.members_page_roles .column-granted_caps,.members_page_roles .column-denied_caps{width:100px;text-align:center}}.members-title-div #titlewrap input{padding:0 8px;font-size:1.7em;line-height:normal;height:1.7em;width:100%;outline:0;margin:0 0 3px;background-color:#fff}.members-title-div input[name="role"]{font-size:13px;height:22px;margin:0;width:16em}#tabcapsdiv{margin-top:1em}#tabcapsdiv>.hndle{padding:10px;border-bottom:1px solid #eee}#tabcapsdiv .inside,#members-cp .inside{margin:0;padding:0}.members-cap-tabs,.members-tabs{overflow:hidden;background:#fff;background:-webkit-gradient(linear,left top,right top,from(#fafafa),color-stop(20%,#fafafa),color-stop(20%,#fff),to(#fff));background:linear-gradient(90deg,#fafafa 0,#fafafa 20%,#fff 20%,#fff 100%)}@media only screen and (max-width:782px){.members-cap-tabs,.members-tabs{background:linear-gradient(90deg,#fafafa 0,#fafafa 48px,#fff 48px,#fff 100%)}}.members-cap-tabs .members-tab-nav,.members-tabs .members-tab-nav{position:relative;float:left;list-style:none;width:20%;line-height:1em;margin:0 0 -1px 0;padding:0;background-color:#fafafa;border-right:1px solid #eee;-webkit-box-sizing:border-box;box-sizing:border-box}.members-cap-tabs .members-tab-nav li,.members-tabs .members-tab-nav li{display:block;position:relative;margin:0;padding:0;line-height:20px}.members-cap-tabs .members-tab-nav li a,.members-tabs .members-tab-nav li a{display:block;margin:0;padding:10px;line-height:20px !important;text-decoration:none;border-bottom:1px solid #eee;-webkit-box-shadow:none;box-shadow:none}.members-cap-tabs .members-tab-nav li a .dashicons,.members-tabs .members-tab-nav li a .dashicons{line-height:20px;margin-right:3px}.members-cap-tabs .members-tab-nav li[aria-selected="true"] a,.members-tabs .members-tab-nav li[aria-selected="true"] a{position:relative;font-weight:bold;color:#555;background-color:#e0e0e0}@media only screen and (max-width:782px){.members-cap-tabs .members-tab-nav,.members-tabs .members-tab-nav{width:48px}.members-cap-tabs .members-tab-nav li a .dashicons,.members-tabs .members-tab-nav li a .dashicons{width:24px;height:24px;font-size:24px;line-height:24px}.members-tab-nav li .dashicons::before,.members-tab-nav li .dashicons::before{width:24px;height:24px}.members-tab-nav li .label{overflow:hidden;position:absolute;top:-1000em;left:-1000em;width:1px;height:1px}}.members-cap-tabs .members-tab-wrap,.members-tabs .members-tab-wrap{float:left;width:80%;margin-left:-1px}@media only screen and (max-width:782px){.members-cap-tabs .members-tab-wrap,.members-tabs .members-tab-wrap{width:calc(100% - 48px)}}#members-cp .members-tab-content{padding:10px;border-left:1px solid #e5e5e5}.members-roles-select th,.members-roles-select td{width:190px;overflow:hidden}.members-roles-select .check-all-th{text-align:center}.members-roles-select .check-all-th label{padding-left:5px}@media only screen and (min-width:850px){#side-sortables .members-tabs{background:#fff}#side-sortables .members-tabs .members-tab-wrap{width:100%}#side-sortables .members-tabs .members-tab-nav{display:table;width:100%}#side-sortables .members-tabs .members-tab-nav li{display:table-cell;text-align:center;border-right:1px solid #eee}#side-sortables .members-tabs .members-tab-nav li:last-of-type{border-right:0}#side-sortables .members-tabs .members-tab-nav li a{padding:10px 0}#side-sortables .members-tabs .members-tab-nav .dashicons{width:24px;height:24px;font-size:24px;line-height:24px}#side-sortables .members-tabs .members-tab-nav .dashicons::before{width:24px;height:24px}#side-sortables .members-tabs .members-tab-nav .label{overflow:hidden;position:absolute;top:-1000em;left:-1000em;width:1px;height:1px}}.members-tabs .members-tabs-label{display:block !important;font-weight:bold;display:inline-block;margin-bottom:4px}.members-tabs .butterbean-control-checkbox .members-tabs-label{display:inline !important}.members-tabs .members-tabs-description{display:block;font-style:italic;margin-top:4px}.members-tabs .members-tabs-label+.members-tabs-description{margin-top:0;margin-bottom:4px}#tabcapsdiv table{border-right:0;border-top:0;border-bottom:0}#tabcapsdiv table td,#tabcapsdiv table th{padding:10px;padding-bottom:10px;border-bottom:1px solid #eee;font-size:13px;line-height:20px}#tabcapsdiv table td{padding:9px}#tabcapsdiv tbody tr:last-of-type td{border-bottom:0}#tabcapsdiv tfoot th{border-color:#eee}@media only screen and (max-width:782px){#tabcapsdiv table td,#tabcapsdiv table th{line-height:24px}}.members-roles-select .column-grant,.members-roles-select .column-deny{width:70px !important;text-align:left;display:table-cell !important;clear:none !important}.members-roles-select thead th,.members-roles-select tfoot th{padding:9px !important}.members-roles-select .column-grant input,.members-roles-select .column-deny input{margin:0 5px 0 0;vertical-align:middle}.members-roles-select tbody tr:nth-child(even){background:#f2f2f2}.members-cap-tabs button{display:inline;margin:-4px;line-height:inherit;padding:4px 8px;border:1px solid transparent;background:transparent;border-radius:0;outline:0;-webkit-transition:all .25s ease-out;transition:all .25s ease-out}.members-cap-tabs button:hover,.members-cap-tabs button:focus{border-color:#eee;background:#fafafa;cursor:pointer}.members-cap-tabs button:active{color:#0073aa;border-color:#0073aa}.members-cap-tabs button+.dashicons{display:none;margin-top:1px;margin-bottom:-1px;line-height:inherit}.members-cap-tabs button:hover+.dashicons,.members-cap-tabs button:focus+.dashicons{display:inline-block}.members-tab-content .members-highlight{background-color:rgba(0,115,170,0.05)}.members-tab-content tbody{-webkit-transition:all 2s ease-in-out;transition:all 2s ease-in-out}.members-cp-role-list-wrap{overflow:auto;min-height:42px;max-height:200px;padding:0 .9em;border:solid 1px #dfdfdf;background-color:#fdfdfd}#wpbody-content{padding-bottom:200px}.members-footer-promotion{text-align:center;font-weight:400;font-size:13px;line-height:16px;color:#787c82;padding:20px 0 30px 0;margin-bottom:20px}.members-footer-promotion p{font-weight:600}.members-footer-promotion-links,.members-footer-promotion-social{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.members-footer-promotion-links{margin:9px 0 0}.members-footer-promotion-links span{color:#c3c4c7;padding:0 7px}.members-footer-promotion-social{margin:10px 0 0 0;gap:10px}.members-footer-promotion-social li{margin-bottom:0}.members-footer-promotion-social a{display:block;height:16px}.members_page_members-settings.rtl{.addon-activate{left:20px;right:unset}.members-addons .plugin-card{.name,.desc p{margin-left:0;margin-right:148px}}}.button.button-warning{background:#dc3232;border-color:#dc3232;color:#fff}.button.button-warning:hover,.button.button-warning:focus{background:#c92424;border-color:#c92424;color:#fff}.members-reset-spinner{float:none;margin-top:0;vertical-align:middle}.members-admin-menus-wrap{max-width:1400px;--members-am-accent-use:var(--members-am-accent,var(--wp-admin-theme-color,#2271b1));--members-am-surface-use:var(--members-am-surface,color-mix(in srgb,var(--members-am-base,#1d2327) 88%,#fff 12%));--members-am-border-on-base-fallback:color-mix(in srgb,var(--members-am-base,#1d2327) 62%,#fff 38%);--members-am-chrome-bg:var(--wp-components-color-gray-100,#f6f7f7);--members-am-chrome-border:var(--wp-components-color-gray-400,#c3c4c7);--members-am-muted:var(--wp-components-color-gray-600,#646970)}.members-am-notices{margin:0 0 12px}.members-am-notices .notice{margin:0 0 8px}.members-admin-menus-toolbar{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;margin-bottom:16px}.members-am-toolbar-loading{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;margin-left:4px;color:var(--members-am-muted,#646970);font-size:13px;line-height:1}.members-am-toolbar-loading .spinner{float:none;margin:0}.members-am-toolbar-loading[hidden]{display:none !important}.members-am-copy-wrap label{margin-right:8px}.members-am-chips{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:8px;margin-bottom:12px}.members-am-chip{border-radius:999px;padding:4px 12px;border:1px solid var(--members-am-chrome-border,#c3c4c7);background:var(--members-am-chrome-bg,#f6f7f7);cursor:pointer}.members-am-chip.is-active{background:var(--members-am-accent-use);border-color:var(--members-am-accent-use);color:var(--wp-components-color-accent-inverted,#fff)}.members-am-carousel-wrap{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;gap:8px;margin-bottom:8px}.members-am-carousel-prev,.members-am-carousel-next{-ms-flex-item-align:center;align-self:center;width:36px;height:36px;border-radius:50%;border:1px solid var(--members-am-chrome-border,#c3c4c7);background:var(--wp-components-color-background,#fff);cursor:pointer}.members-am-columns{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-ms-flex:1;flex:1;gap:12px;min-height:320px;overflow:hidden}.members-am-column{-webkit-box-flex:1;-ms-flex:1;flex:1;min-width:0;background:var(--members-am-base,#1d2327);border-radius:4px;color:var(--members-am-fg-on-base,#f0f0f1);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.members-am-user-column{border:2px dashed var(--wp-components-color-gray-700,#8c8f94)}.members-am-sidebar-head{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:8px 10px;background:var(--members-am-surface-use);border-radius:4px 4px 0 0;font-weight:600;font-size:12px;text-transform:uppercase;letter-spacing:.04em;color:var(--members-am-fg-on-surface,var(--members-am-fg-on-base,#f0f0f1))}.members-am-col-filter{padding:6px 8px 8px;border-bottom:1px solid var(--members-am-border-on-base,var(--members-am-border-on-base-fallback));-ms-flex-negative:0;flex-shrink:0}.members-am-col-filter-input{width:100%;max-width:100%;-webkit-box-sizing:border-box;box-sizing:border-box;font-size:12px;line-height:1.4;padding:4px 8px;border-radius:2px;border:1px solid var(--members-am-border-on-base,var(--members-am-border-on-base-fallback));background:var(--members-am-base,#1d2327);color:var(--members-am-fg-on-base,#f0f0f1)}.members-am-col-filter-input::-webkit-input-placeholder{color:var(--members-am-fg-muted-on-base,var(--wp-components-color-gray-700,#8c8f94));opacity:1}.members-am-col-filter-input::-moz-placeholder{color:var(--members-am-fg-muted-on-base,var(--wp-components-color-gray-700,#8c8f94));opacity:1}.members-am-col-filter-input:-ms-input-placeholder{color:var(--members-am-fg-muted-on-base,var(--wp-components-color-gray-700,#8c8f94));opacity:1}.members-am-col-filter-input::-ms-input-placeholder{color:var(--members-am-fg-muted-on-base,var(--wp-components-color-gray-700,#8c8f94));opacity:1}.members-am-col-filter-input::placeholder{color:var(--members-am-fg-muted-on-base,var(--wp-components-color-gray-700,#8c8f94));opacity:1}.members-am-col-filter-input:focus{border-color:var(--members-am-accent-use);outline:1px solid transparent;-webkit-box-shadow:0 0 0 var(--wp-admin-border-width-focus,1px) var(--members-am-accent-use);box-shadow:0 0 0 var(--wp-admin-border-width-focus,1px) var(--members-am-accent-use)}.members-am-col-bulk{padding:0 8px 8px;border-bottom:1px solid var(--members-am-border-on-base,var(--members-am-border-on-base-fallback));-ms-flex-negative:0;flex-shrink:0}.members-am-col-bulk-toolbar,.members-am-col-collapse-toolbar{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:6px;margin-bottom:6px;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.members-am-col-bulk-toolbar .button.button-small,.members-am-col-collapse-toolbar .button.button-small{font-size:11px;min-height:26px;line-height:24px;padding:0 8px;background:var(--members-am-surface-use);border-color:var(--members-am-border-on-surface,var(--members-am-border-on-base,var(--members-am-border-on-base-fallback)));color:var(--members-am-fg-on-surface,var(--members-am-fg-on-base,#f0f0f1))}.members-am-col-bulk-toolbar .button.button-small:hover,.members-am-col-collapse-toolbar .button.button-small:hover{background:color-mix(in srgb,var(--members-am-surface-use) 85%,#fff 15%);border-color:var(--wp-components-color-gray-700,#8c8f94);color:var(--members-am-fg-on-surface,var(--members-am-fg-on-base,#f0f0f1))}.members-am-item-lead{-ms-flex-negative:0;flex-shrink:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:22px;padding:2px 0 0}.members-am-collapse-spacer{display:block;width:20px;height:20px;-ms-flex-negative:0;flex-shrink:0}.members-am-collapse-toggle{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:22px;height:22px;margin:0;padding:0;border:0;background:transparent;color:var(--members-am-fg-muted-on-base,var(--members-am-chrome-border,#c3c4c7));border-radius:2px;cursor:pointer;-ms-flex-negative:0;flex-shrink:0}.members-am-collapse-toggle:hover,.members-am-collapse-toggle:focus{color:var(--members-am-fg-on-base,#f0f0f1);background:color-mix(in srgb,var(--members-am-fg-on-base,#f0f0f1) 12%,transparent);outline:0}.members-am-collapse-toggle .dashicons{font-size:18px;width:18px;height:18px}.members-am-item-cb-wrap{-ms-flex-negative:0;flex-shrink:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;padding:2px 4px 0 0}.members-am-item-cb{margin:0;width:16px;height:16px;-ms-flex-negative:0;flex-shrink:0}.members-am-bulk-select{width:100%;max-width:100%;-webkit-box-sizing:border-box;box-sizing:border-box;font-size:12px;line-height:1.4;padding:4px 8px;border-radius:2px;border:1px solid var(--members-am-border-on-base,var(--members-am-border-on-base-fallback));background:var(--members-am-base,#1d2327);color:var(--members-am-fg-on-base,#f0f0f1)}.members-am-bulk-select:focus{border-color:var(--members-am-accent-use);outline:1px solid transparent;-webkit-box-shadow:0 0 0 var(--wp-admin-border-width-focus,1px) var(--members-am-accent-use);box-shadow:0 0 0 var(--wp-admin-border-width-focus,1px) var(--members-am-accent-use)}.members-am-item.members-am-filter-hidden,.members-am-sep.members-am-filter-hidden,.members-am-item.members-am-collapse-hidden{display:none !important}.members-am-col-move button{margin-left:4px;padding:0 6px;min-height:24px;line-height:22px;font-size:11px}.members-am-sidebar-list{padding:6px 0 12px;overflow-y:auto;max-height:480px}.members-am-item{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;gap:4px;padding:6px 10px 6px 6px;cursor:pointer;border-left:3px solid transparent;font-size:13px}.members-am-item.is-sub{padding-left:22px;font-size:12px;opacity:.95}.members-am-item.is-sub-deep{padding-left:36px}.members-am-sidebar-list .members-am-item{cursor:-webkit-grab;cursor:grab}.members-am-sidebar-list .members-am-item:active{cursor:-webkit-grabbing;cursor:grabbing}.members-am-sort-placeholder{-webkit-box-sizing:border-box;box-sizing:border-box;min-height:36px;margin:2px 0;background:color-mix(in srgb,var(--members-am-accent-use) 8%,transparent);border:1px dashed var(--members-am-accent-use);border-radius:2px}.members-am-item.is-hidden{opacity:.18}.members-am-item.is-no-cap{opacity:.35}.members-am-item.is-no-cap.is-hidden{opacity:.15}.members-am-item.is-selected{border-left-color:var(--members-am-accent-use);background:color-mix(in srgb,var(--members-am-accent-use) 15%,transparent)}.members-am-item-main{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;min-width:0}.members-am-item-main .dashicons{font-size:18px;width:18px;height:18px}.members-am-item-label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.members-am-item-actions{display:none;gap:2px}.members-am-item:hover .members-am-item-actions{display:-webkit-box;display:-ms-flexbox;display:flex}.members-am-item-actions button{min-height:22px;padding:0 4px;line-height:20px;font-size:11px}.members-am-sep{text-align:center;opacity:.35;font-size:11px;padding:4px 0}.members-am-carousel-dots{text-align:center;margin-bottom:4px}.members-am-dot{width:8px;height:8px;border-radius:50%;border:0;margin:0 4px;padding:0;background:var(--members-am-chrome-border,#c3c4c7);cursor:pointer}.members-am-dot.is-active{background:var(--members-am-accent-use)}.members-am-carousel-status{text-align:center;color:var(--members-am-muted,#646970);font-size:12px;margin-top:0}.members-am-badge{font-size:9px;text-transform:uppercase;padding:1px 4px;border-radius:2px;margin-right:4px;vertical-align:middle}.members-am-badge-new{background:var(--members-am-accent-use);color:var(--wp-components-color-accent-inverted,#fff)}.members-am-badge-edit{background:#dba617;color:var(--members-am-base,#1d2327)}.members-am-badge-nocap{background:var(--wp-components-color-gray-700,#8c8f94);color:var(--wp-components-color-accent-inverted,#fff)}.members-am-legend{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:16px;margin:0 0 8px;padding:0;font-size:12px;color:var(--members-am-muted,#646970)}.members-am-legend-item{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:4px}.members-am-edit-panel{margin-top:20px;padding:16px;border:1px solid var(--members-am-chrome-border,#c3c4c7);background:var(--wp-components-color-background,#fff);border-radius:4px}.members-am-edit-panel-header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:12px}.members-am-edit-panel-header h2{margin:0;font-size:16px}.members-am-edit-toolbar{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:12px;margin-bottom:12px}.members-am-edit-target-wrap select{margin-left:8px}.members-am-level-actions .button{margin-right:6px}.members-am-demote-wrap{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:6px}.members-am-demote-wrap .members-am-demote-select{min-width:200px;max-width:min(320px,100%)}.members-am-edit-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:16px}.members-am-edit-col label{display:block;font-weight:600;margin-bottom:4px}.members-am-icon-tabs{margin-bottom:8px}.members-am-icon-tabs .button{margin-right:4px;margin-bottom:4px}.members-am-icon-tabs .button.is-active{background:var(--members-am-accent-use);border-color:var(--members-am-accent-use);color:var(--wp-components-color-accent-inverted,#fff)}.members-am-icon-grid{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:4px;max-height:160px;overflow-y:auto;border:1px solid var(--wp-components-color-gray-200,#dcdcde);padding:8px;background:var(--members-am-chrome-bg,#f6f7f7);margin-bottom:8px}.members-am-icon-pick{width:36px;height:36px;padding:0;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;border:1px solid var(--members-am-chrome-border,#c3c4c7);background:var(--wp-components-color-background,#fff);cursor:pointer}.members-am-bulk-visibility-hint{margin:0 0 8px;font-size:12px;color:var(--members-am-fg-muted-on-base,#646970)}.members-am-vis-role-filter-wrap{margin-bottom:8px}.members-am-vis-row.members-am-vis-filter-hidden{display:none}.members-am-vis-row{display:block;margin-bottom:6px;font-weight:normal}.members-am-reset-dropdown{position:absolute;z-index:100;background:var(--wp-components-color-background,#fff);border:1px solid var(--members-am-chrome-border,#c3c4c7);border-radius:6px;padding:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-shadow:0 4px 12px rgba(0,0,0,0.15);box-shadow:0 4px 12px rgba(0,0,0,0.15);min-width:280px;top:100%;left:0;margin-top:4px;overflow:hidden}.members-am-reset-title{padding:10px 14px;font-weight:600;font-size:13px;border-bottom:1px solid var(--wp-components-color-gray-200,#f0f0f0);color:var(--wp-components-color-foreground,#1d2327)}.members-am-reset-option{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;gap:10px;padding:12px 14px;border:0;background:0;cursor:pointer;text-align:left;width:100%;border-bottom:1px solid var(--wp-components-color-gray-200,#f0f0f0);-webkit-transition:background .15s;transition:background .15s}.members-am-reset-option:last-child{border-bottom:0}.members-am-reset-option:hover{background:var(--members-am-chrome-bg,#f6f7f7)}.members-am-reset-option .dashicons{margin-top:2px;color:var(--members-am-muted,#646970)}.members-am-reset-option-text{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:2px}.members-am-reset-option-text strong{font-size:13px;color:var(--wp-components-color-foreground,#1d2327)}.members-am-reset-option-text small{font-size:12px;color:var(--members-am-muted,#646970)}.members-am-reset-danger:hover{background:#fcf0f1}.members-am-reset-danger .dashicons{color:#d63638}.members-am-reset-danger:hover strong{color:#d63638}@media screen and (max-width:782px){.members-am-columns{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}}.members-am-user-suggestions{position:absolute;z-index:100;background:var(--wp-components-color-background,#fff);border:1px solid var(--members-am-chrome-border,#c3c4c7);border-radius:4px;max-height:200px;overflow-y:auto;width:100%;-webkit-box-shadow:0 2px 6px rgba(0,0,0,0.15);box-shadow:0 2px 6px rgba(0,0,0,0.15);top:100%;left:0}.members-am-user-suggestion{padding:8px 12px;cursor:pointer;font-size:13px;border-bottom:1px solid var(--wp-components-color-gray-200,#f0f0f0)}.members-am-user-suggestion:hover{background:color-mix(in srgb,var(--members-am-accent-use) 8%,var(--wp-components-color-background,#fff))}.members-am-user-suggestion:last-child{border-bottom:0}#members-am-import-file.members-am-import-file-hidden{display:none}.members-am-user-search-wrap{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px}#members-am-user-search.members-am-user-search-input{width:200px;max-width:100%}.members-am-legend-visibility-icon{font-size:14px;width:14px;height:14px;vertical-align:middle}.members-am-legend-nocap-badge{display:inline-block;background:#8c8f94;color:#fff;font-size:9px;padding:1px 4px;border-radius:2px;vertical-align:middle}#members-am-icon-preview.members-am-icon-preview{display:none;width:32px;height:32px;-o-object-fit:contain;object-fit:contain;margin-bottom:6px;border:1px solid #ddd;border-radius:3px;padding:2px;background:#f0f0f1}.members-am-icons .members-am-icon-upload-desc{margin-top:4px}#adminmenu .members-am-menu-badge{display:inline-block;color:#fff;font-size:9px;padding:1px 5px;border-radius:2px;line-height:1.4;vertical-align:middle}
\ No newline at end of file
+#members-cp h2.hndle,#members-cp-side h2.hndle{border-bottom:none !important;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}#members-cp h2.hndle:before,#members-cp-side h2.hndle:before{content:url("data:image/svg+xml,%3Csvg width='15px' aria-hidden='true' focusable='false' data-prefix='fas' data-icon='users-cog' class='svg-inline--fa fa-users-cog fa-w-20' role='img' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 640 512'%3E%3Cpath fill='currentColor' d='M610.5 341.3c2.6-14.1 2.6-28.5 0-42.6l25.8-14.9c3-1.7 4.3-5.2 3.3-8.5-6.7-21.6-18.2-41.2-33.2-57.4-2.3-2.5-6-3.1-9-1.4l-25.8 14.9c-10.9-9.3-23.4-16.5-36.9-21.3v-29.8c0-3.4-2.4-6.4-5.7-7.1-22.3-5-45-4.8-66.2 0-3.3.7-5.7 3.7-5.7 7.1v29.8c-13.5 4.8-26 12-36.9 21.3l-25.8-14.9c-2.9-1.7-6.7-1.1-9 1.4-15 16.2-26.5 35.8-33.2 57.4-1 3.3.4 6.8 3.3 8.5l25.8 14.9c-2.6 14.1-2.6 28.5 0 42.6l-25.8 14.9c-3 1.7-4.3 5.2-3.3 8.5 6.7 21.6 18.2 41.1 33.2 57.4 2.3 2.5 6 3.1 9 1.4l25.8-14.9c10.9 9.3 23.4 16.5 36.9 21.3v29.8c0 3.4 2.4 6.4 5.7 7.1 22.3 5 45 4.8 66.2 0 3.3-.7 5.7-3.7 5.7-7.1v-29.8c13.5-4.8 26-12 36.9-21.3l25.8 14.9c2.9 1.7 6.7 1.1 9-1.4 15-16.2 26.5-35.8 33.2-57.4 1-3.3-.4-6.8-3.3-8.5l-25.8-14.9zM496 368.5c-26.8 0-48.5-21.8-48.5-48.5s21.8-48.5 48.5-48.5 48.5 21.8 48.5 48.5-21.7 48.5-48.5 48.5zM96 224c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm224 32c1.9 0 3.7-.5 5.6-.6 8.3-21.7 20.5-42.1 36.3-59.2 7.4-8 17.9-12.6 28.9-12.6 6.9 0 13.7 1.8 19.6 5.3l7.9 4.6c.8-.5 1.6-.9 2.4-1.4 7-14.6 11.2-30.8 11.2-48 0-61.9-50.1-112-112-112S208 82.1 208 144c0 61.9 50.1 112 112 112zm105.2 194.5c-2.3-1.2-4.6-2.6-6.8-3.9-8.2 4.8-15.3 9.8-27.5 9.8-10.9 0-21.4-4.6-28.9-12.6-18.3-19.8-32.3-43.9-40.2-69.6-10.7-34.5 24.9-49.7 25.8-50.3-.1-2.6-.1-5.2 0-7.8l-7.9-4.6c-3.8-2.2-7-5-9.8-8.1-3.3.2-6.5.6-9.8.6-24.6 0-47.6-6-68.5-16h-8.3C179.6 288 128 339.6 128 403.2V432c0 26.5 21.5 48 48 48h255.4c-3.7-6-6.2-12.8-6.2-20.3v-9.2zM173.1 274.6C161.5 263.1 145.6 256 128 256H64c-35.3 0-64 28.7-64 64v32c0 17.7 14.3 32 32 32h65.9c6.3-47.4 34.9-87.3 75.2-109.4z'%3E%3C/path%3E%3C/svg%3E");margin-right:5px}#members-cp-side .postbox-header{border-bottom:none !important}#members-cp-side .handle-actions .handle-order-higher,#members-cp-side .handle-actions .handle-order-lower{display:none}#members-cp-side .handle-actions .handlediv{position:absolute;right:5px}.members-upgrade-header{text-align:center;padding:5px}.members-upgrade-header a{color:#f59431}.memberpress-paid-memberships{background-color:#f5f5f5;padding:50px 10px;text-align:center}.memberpress-paid-memberships a{background-color:#0e4598;display:inline-block;padding:10px 20px;border-radius:300px;color:#fff;text-decoration:none;margin-top:20px}#members-cp-side .members-tabs{position:relative}#members-cp-side .members-tab-nav{background-color:transparent;margin-bottom:20px;border-right:none !important}#members-cp-side .members-tab-nav .members-tab-title{width:33.333%;height:50px;border-right:none !important}#members-cp-side .members-tab-nav .members-tab-title a{border:0}#members-cp-side .members-tab-content h3{font-weight:bold;font-size:15px;margin-top:0;color:#000;margin-bottom:10px}#members-cp-side .members-tab-content .memberpress-paid-memberships{text-align:left;padding:20px}#members-cp-side .members-tab-content .memberpress-paid-memberships a{display:block;text-align:center}#members-cp-side .members-tabs .members-tab-nav li a,#members-cp-side .members-tabs .members-tab-nav li[aria-selected="false"] a i{color:#555}#members-cp-side .members-tabs .members-tab-nav li a svg,#members-cp-side .members-tabs .members-tab-nav li[aria-selected="false"] a svg{fill:#555}#members-cp-side .members-tabs .members-tab-nav li[aria-selected="true"] a{background-color:transparent;border-bottom:2px solid #3582ae}#members-cp-side .members-tabs .members-tab-nav li[aria-selected="true"] a i{color:#3582ae}#members-cp-side .members-tabs .members-tab-nav li[aria-selected="true"] a svg{fill:#3582ae}.members-tab-title svg,.members-tab-title[aria-selected="false"] svg{fill:#0073aa}.members-tab-title[aria-selected="true"] svg{fill:#555}#wpcontent #members-admin-header{margin-left:-20px;padding:0;padding-left:22px;background-color:#f9f9f9;background-repeat:repeat;background-size:1200px 75px;min-height:36px;position:relative}#wpcontent #members-admin-header img.members-logo{height:90px}.members-upgrade-header #close-members-upgrade-header{position:absolute;right:20px;top:3px}.members-upgrade-header #close-members-upgrade-header:hover{cursor:pointer}.memberpress-welcome-panel.welcome-panel{margin-top:0;padding:40px 20px;background:#fff}.memberpress-welcome-panel.welcome-panel:before{background:0}.memberpress-welcome-panel.welcome-panel .about-description{margin:20px 0}.memberpress-welcome-panel.welcome-panel-content{margin:0}.memberpress-welcome-panel.welcome-panel-content .mp-logo-wrap>a{display:block}@media screen and (min-width:870px){.members_page_members-settings .members-short-p{max-width:612px;margin-left:auto;margin-right:auto}.members_page_members-settings .welcome-panel-content{text-align:center}}.members_page_members-settings .welcome-panel .button.button-hero{margin-left:auto;margin-right:auto}.members_page_members-settings .members-svg-wrap{display:inline-block;margin:0 auto 20px}@media screen and (max-width:870px){.members_page_members-settings .welcome-panel{padding:20px}.members_page_members-settings .members-svg-wrap{float:left;margin-right:28px}.admin_page_members-settings.rtl .members-svg-wrap{float:right;margin-right:0;margin-left:28px}}.members_page_members-settings .members-svg-link{display:table-cell;text-align:center;width:128px;height:128px;background:#363b3f;color:#fff;padding:24px 16px 16px;border-radius:50%;-webkit-box-sizing:border-box;box-sizing:border-box;border:4px solid #fff;-webkit-box-shadow:0 0 0 4px #363b3f;box-shadow:0 0 0 4px #363b3f}.members_page_members-settings .members-svg-link svg{max-width:84px;max-height:64px;width:auto;height:auto}.members-addons{display:grid;grid-template-columns:1fr 1fr;grid-row-gap:20px;grid-column-gap:20px}.members-addons .plugin-card{margin:0}.members-addons .plugin-card-top{width:100%}.members-addon{width:100%;position:relative;float:none;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.members-addon .desc{margin-bottom:80px}.addon-activate{text-align:center;border:1px solid #ddd;border-radius:3px;padding:5px 10px 10px;display:inline-block;width:100px;position:absolute;right:20px;bottom:20px}.activate-toggle:hover{cursor:pointer}.activate-toggle svg{max-width:20px;position:relative;top:5px}.activate-toggle svg{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.activate-toggle svg.active{-webkit-transform:rotate(0);transform:rotate(0)}.activate-toggle svg path{fill:#ccc}.activate-toggle svg.active path{fill:#8cbd5a}.activate-toggle.processing{cursor:not-allowed;pointer-events:none;opacity:.5}.activate-toggle .action-label{display:inline-block;width:50px;text-align:left}.mepr_dummy_txns{-webkit-filter:blur(3px);filter:blur(3px);position:absolute;top:0;left:0;width:100%;z-index:5;pointer-events:none}.mepr_dummy_txns::after{background-color:rgba(0,0,0,.2);position:absolute;top:0;left:0;width:100%;height:100%;z-index:6}.mepr-upgrade-table{position:relative}.mepr-upgrade-table .mepr-upgrade{position:relative;top:100px;z-index:10;background:rgba(0,0,0,.2);width:100%;height:100%;max-width:600px;margin:0 auto;-webkit-box-shadow:0 0 30px #ccc;box-shadow:0 0 30px #ccc}.mepr-upgrade-content{background-color:#fff;padding:20px;text-align:center}.mepr-upgrade-content h2{font-size:24px}.mepr-upgrade-content h4{font-size:18px}.mepr-upgrade-content .features{display:grid;grid-template-columns:1fr 1fr;grid-column-gap:30px;grid-row-gap:10px;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;text-align:left;padding:10px}.features li:before{content:"\f147";font-family:dashicons;color:green;font-size:20px;position:relative;top:4px;margin-right:10px}.mepr-upgrade-cta{text-align:center;background-color:#f2f2f2;padding:20px}.mepr-upgrade-cta .mepr-cta-button{display:block;max-width:300px;margin:0 auto 20px;background-color:#fd9c27;color:#fff;padding:15px;font-size:18px;font-weight:bold;text-decoration:none;border-radius:300px}.members-plugin-card.plugin-card:nth-child(even){margin-right:inherit}.members-plugin-card.plugin-card:nth-child(odd){clear:none;margin-left:inherit}.members-plugin-card.plugin-card .plugin-card-top{min-height:0;padding:30px 20px}.members-plugin-card.plugin-card .plugin-icon{top:30px}.members-plugin-card.plugin-card .plugin-card-bottom .column-status{font-weight:bold}.members-plugin-card.plugin-card .plugin-card-bottom .column-status .active{color:#8cbd5a}.members-plugin-card.plugin-card .plugin-card-bottom .column-status .inactive{color:red}.members-plugin-card.plugin-card .plugin-icon{width:64px;height:auto}.plugin-icon-small{width:32px;height:auto}.members-plugin-card.plugin-card .name,.members-plugin-card.plugin-card .desc{margin-right:0;margin-left:84px}.members-addons .plugin-card .name,.members-addons .plugin-card .desc p{margin-right:0}@media screen and (max-width:1100px){.members-addons{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}}@media screen and (max-width:600px){.members_page_members-settings .members-svg-link{width:64px;height:64px}.members_page_members-settings .members-svg-link svg{position:absolute;top:14px;left:15px;max-width:30px;max-height:30px}.members_page_members-settings .plugin-card-members-edd-integration .members-svg-link svg,.members_page_members-settings .plugin-card-members-acf-integration .members-svg-link svg,.members_page_members-settings .plugin-card-members-givewp-integration .members-svg-link svg,.members_page_members-settings .plugin-card-members-meta-box-integration .members-svg-link svg,.members_page_members-settings .plugin-card-members-woocommerce-integration .members-svg-link svg{top:10px;left:8px;max-width:40px;max-height:40px}.members_page_members-settings .plugin-card-members-block-permissions .members-svg-link svg,.members_page_members-settings .plugin-card-members-role-hierarchy .members-svg-link svg{left:14px}.members-addons .plugin-card .desc>p,.members-addons .plugin-card .name{margin-left:84px}}.memberpress-about .welcome-panel-column-container{display:-webkit-box;display:-ms-flexbox;display:flex}.memberpress-about .mp-logo{max-width:256px;margin:50px}.members-about-addons{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-column-gap:20px}.members-about-addons .members-plugin-card{margin:0;width:100%}.members-about-addons .members-plugin-card .name h3 a{text-decoration:none}.members-about-addons .members-plugin-card .plugin-card-bottom{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}@media only screen and (max-width:1099px){.members-about-addons{grid-template-columns:1fr;grid-row-gap:20px}}@media screen and (min-width:1100px) and (max-width:1600px){.members-about-addons .members-plugin-card{float:none;width:auto;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.members-plugin-card.plugin-card .desc{margin-left:0;margin-top:50px}.members-plugin-card.plugin-card .desc p{margin-left:0;margin-right:0}.members-plugin-card.plugin-card .plugin-card-bottom .column-status{float:none}.members-plugin-card.plugin-card .plugin-card-bottom .column-updated{float:none;width:auto}}@media screen and (max-width:1200px){.welcome-panel .welcome-panel-column-container{-webkit-box-orient:vertical;-webkit-box-direction:reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse;gap:0;padding:0}.memberpress-about .mp-logo{margin:0 0 20px}}.members-plugin-card.plugin-card .desc p{margin-left:0;margin-right:0}@media only screen and (min-width:783px){.members_page_roles .column-users,.members_page_roles .column-granted_caps,.members_page_roles .column-denied_caps{width:100px;text-align:center}}.members-title-div #titlewrap input{padding:0 8px;font-size:1.7em;line-height:normal;height:1.7em;width:100%;outline:0;margin:0 0 3px;background-color:#fff}.members-title-div input[name="role"]{font-size:13px;height:22px;margin:0;width:16em}#tabcapsdiv{margin-top:1em}#tabcapsdiv>.hndle{padding:10px;border-bottom:1px solid #eee}#tabcapsdiv .inside,#members-cp .inside{margin:0;padding:0}.members-cap-tabs,.members-tabs{overflow:hidden;background:#fff;background:-webkit-gradient(linear,left top,right top,from(#fafafa),color-stop(20%,#fafafa),color-stop(20%,#fff),to(#fff));background:linear-gradient(90deg,#fafafa 0,#fafafa 20%,#fff 20%,#fff 100%)}@media only screen and (max-width:782px){.members-cap-tabs,.members-tabs{background:linear-gradient(90deg,#fafafa 0,#fafafa 48px,#fff 48px,#fff 100%)}}.members-cap-tabs .members-tab-nav,.members-tabs .members-tab-nav{position:relative;float:left;list-style:none;width:20%;line-height:1em;margin:0 0 -1px 0;padding:0;background-color:#fafafa;border-right:1px solid #eee;-webkit-box-sizing:border-box;box-sizing:border-box}.members-cap-tabs .members-tab-nav li,.members-tabs .members-tab-nav li{display:block;position:relative;margin:0;padding:0;line-height:20px}.members-cap-tabs .members-tab-nav li a,.members-tabs .members-tab-nav li a{display:block;margin:0;padding:10px;line-height:20px !important;text-decoration:none;border-bottom:1px solid #eee;-webkit-box-shadow:none;box-shadow:none}.members-cap-tabs .members-tab-nav li a .dashicons,.members-tabs .members-tab-nav li a .dashicons{line-height:20px;margin-right:3px}.members-cap-tabs .members-tab-nav li[aria-selected="true"] a,.members-tabs .members-tab-nav li[aria-selected="true"] a{position:relative;font-weight:bold;color:#555;background-color:#e0e0e0}@media only screen and (max-width:782px){.members-cap-tabs .members-tab-nav,.members-tabs .members-tab-nav{width:48px}.members-cap-tabs .members-tab-nav li a .dashicons,.members-tabs .members-tab-nav li a .dashicons{width:24px;height:24px;font-size:24px;line-height:24px}.members-tab-nav li .dashicons::before,.members-tab-nav li .dashicons::before{width:24px;height:24px}.members-tab-nav li .label{overflow:hidden;position:absolute;top:-1000em;left:-1000em;width:1px;height:1px}}.members-cap-tabs .members-tab-wrap,.members-tabs .members-tab-wrap{float:left;width:80%;margin-left:-1px}@media only screen and (max-width:782px){.members-cap-tabs .members-tab-wrap,.members-tabs .members-tab-wrap{width:calc(100% - 48px)}}#members-cp .members-tab-content{padding:10px;border-left:1px solid #e5e5e5}.members-roles-select th,.members-roles-select td{width:190px;overflow:hidden}.members-roles-select .check-all-th{text-align:center}.members-roles-select .check-all-th label{padding-left:5px}@media only screen and (min-width:850px){#side-sortables .members-tabs{background:#fff}#side-sortables .members-tabs .members-tab-wrap{width:100%}#side-sortables .members-tabs .members-tab-nav{display:table;width:100%}#side-sortables .members-tabs .members-tab-nav li{display:table-cell;text-align:center;border-right:1px solid #eee}#side-sortables .members-tabs .members-tab-nav li:last-of-type{border-right:0}#side-sortables .members-tabs .members-tab-nav li a{padding:10px 0}#side-sortables .members-tabs .members-tab-nav .dashicons{width:24px;height:24px;font-size:24px;line-height:24px}#side-sortables .members-tabs .members-tab-nav .dashicons::before{width:24px;height:24px}#side-sortables .members-tabs .members-tab-nav .label{overflow:hidden;position:absolute;top:-1000em;left:-1000em;width:1px;height:1px}}.members-tabs .members-tabs-label{display:block !important;font-weight:bold;display:inline-block;margin-bottom:4px}.members-tabs .butterbean-control-checkbox .members-tabs-label{display:inline !important}.members-tabs .members-tabs-description{display:block;font-style:italic;margin-top:4px}.members-tabs .members-tabs-label+.members-tabs-description{margin-top:0;margin-bottom:4px}#tabcapsdiv table{border-right:0;border-top:0;border-bottom:0}#tabcapsdiv table td,#tabcapsdiv table th{padding:10px;padding-bottom:10px;border-bottom:1px solid #eee;font-size:13px;line-height:20px}#tabcapsdiv table td{padding:9px}#tabcapsdiv tbody tr:last-of-type td{border-bottom:0}#tabcapsdiv tfoot th{border-color:#eee}@media only screen and (max-width:782px){#tabcapsdiv table td,#tabcapsdiv table th{line-height:24px}}.members-roles-select .column-grant,.members-roles-select .column-deny{width:70px !important;text-align:left;display:table-cell !important;clear:none !important}.members-roles-select thead th,.members-roles-select tfoot th{padding:9px !important}.members-roles-select .column-grant input,.members-roles-select .column-deny input{margin:0 5px 0 0;vertical-align:middle}.members-roles-select tbody tr:nth-child(even){background:#f2f2f2}.members-cap-tabs button{display:inline;margin:-4px;line-height:inherit;padding:4px 8px;border:1px solid transparent;background:transparent;border-radius:0;outline:0;-webkit-transition:all .25s ease-out;transition:all .25s ease-out}.members-cap-tabs button:hover,.members-cap-tabs button:focus{border-color:#eee;background:#fafafa;cursor:pointer}.members-cap-tabs button:active{color:#0073aa;border-color:#0073aa}.members-cap-tabs button+.dashicons{display:none;margin-top:1px;margin-bottom:-1px;line-height:inherit}.members-cap-tabs button:hover+.dashicons,.members-cap-tabs button:focus+.dashicons{display:inline-block}.members-tab-content .members-highlight{background-color:rgba(0,115,170,0.05)}.members-tab-content tbody{-webkit-transition:all 2s ease-in-out;transition:all 2s ease-in-out}.members-cp-role-list-wrap{overflow:auto;min-height:42px;max-height:200px;padding:0 .9em;border:solid 1px #dfdfdf;background-color:#fdfdfd}#wpbody-content{padding-bottom:200px}.members-footer-promotion{text-align:center;font-weight:400;font-size:13px;line-height:16px;color:#787c82;padding:20px 0 30px 0;margin-bottom:20px}.members-footer-promotion p{font-weight:600}.members-footer-promotion-links,.members-footer-promotion-social{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.members-footer-promotion-links{margin:9px 0 0}.members-footer-promotion-links span{color:#c3c4c7;padding:0 7px}.members-footer-promotion-social{margin:10px 0 0 0;gap:10px}.members-footer-promotion-social li{margin-bottom:0}.members-footer-promotion-social a{display:block;height:16px}.members_page_members-settings.rtl{.addon-activate{left:20px;right:unset}.members-addons .plugin-card{.name,.desc p{margin-left:0;margin-right:148px}}}.button.button-warning{background:#dc3232;border-color:#dc3232;color:#fff}.button.button-warning:hover,.button.button-warning:focus{background:#c92424;border-color:#c92424;color:#fff}.members-reset-spinner{float:none;margin-top:0;vertical-align:middle}.members-admin-menus-wrap{max-width:1400px;--members-am-accent-use:var(--members-am-accent,var(--wp-admin-theme-color,#2271b1));--members-am-surface-use:var(--members-am-surface,color-mix(in srgb,var(--members-am-base,#1d2327) 88%,#fff 12%));--members-am-border-on-base-fallback:color-mix(in srgb,var(--members-am-base,#1d2327) 62%,#fff 38%);--members-am-chrome-bg:var(--wp-components-color-gray-100,#f6f7f7);--members-am-chrome-border:var(--wp-components-color-gray-400,#c3c4c7);--members-am-muted:var(--wp-components-color-gray-600,#646970)}.members-am-notices{margin:0 0 12px}.members-am-notices .notice{margin:0 0 8px}.members-admin-menus-toolbar{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;gap:0;margin-bottom:16px;border:1px solid var(--members-am-chrome-border,#c3c4c7);border-radius:2px;background:var(--wp-components-color-background,#fff);overflow:hidden}.members-am-toolbar-row{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px}.members-am-toolbar-row--primary{padding:10px 12px;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;row-gap:10px}.members-am-toolbar-group{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px}.members-am-toolbar-group--document{padding-right:12px;border-right:1px solid var(--members-am-chrome-border,#c3c4c7)}.members-am-toolbar-row--primary .members-am-toolbar-primary-user{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px;margin-left:8px;-webkit-box-flex:0;-ms-flex:0 1 auto;flex:0 1 auto;min-width:0}.members-am-toolbar-row--primary .members-am-toolbar-primary-user #members-am-user-search.members-am-user-search-input{width:168px;max-width:100%;min-width:0}.members-am-toolbar-group--view{margin-left:auto;-ms-flex-wrap:nowrap;flex-wrap:nowrap}.members-am-toolbar-extra{background:var(--members-am-chrome-bg,#f6f7f7);border-top:1px solid var(--members-am-chrome-border,#c3c4c7);padding:10px 12px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:10px}.members-am-toolbar-extra[hidden]{display:none !important}.members-am-toolbar-row--extra-tools{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-wrap:wrap;flex-wrap:wrap;row-gap:10px}.members-am-toolbar-row--extra-tools .members-am-copy-wrap{margin-left:4px;padding-left:12px;border-left:1px solid var(--members-am-chrome-border,#c3c4c7)}.members-am-toolbar-row--extra-tools .members-am-toolbar-group--io{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;margin-left:8px;padding-left:12px;border-left:1px solid var(--members-am-chrome-border,#c3c4c7)}.members-am-more-tools,.members-am-more-tools:hover,.members-am-more-tools:focus,.members-am-more-tools:active{text-decoration:none}.members-am-more-tools{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:2px;white-space:nowrap;padding:2px 2px 2px 4px;vertical-align:middle}.members-am-more-tools .members-am-more-tools-chevron,.members-am-more-tools:hover .members-am-more-tools-chevron,.members-am-more-tools:focus .members-am-more-tools-chevron,.members-am-more-tools:active .members-am-more-tools-chevron{text-decoration:none}.members-am-more-tools .members-am-more-tools-chevron{width:18px;height:18px;font-size:18px;line-height:1;opacity:.88;-webkit-transition:-webkit-transform .15s ease;transition:-webkit-transform .15s ease;transition:transform .15s ease;transition:transform .15s ease,-webkit-transform .15s ease}.members-am-more-tools.is-open .members-am-more-tools-chevron{-webkit-transform:rotate(-180deg);transform:rotate(-180deg)}@media(prefers-reduced-motion:reduce){.members-am-more-tools .members-am-more-tools-chevron{-webkit-transition:none;transition:none}}@media screen and (max-width:782px){.members-am-toolbar-group--document{border-right:0;padding-right:0;border-bottom:1px solid var(--members-am-chrome-border,#c3c4c7);padding-bottom:10px;width:100%}.members-am-toolbar-group--view{margin-left:0;width:100%;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.members-am-toolbar-row--primary .members-am-toolbar-primary-user{margin-left:0;padding-left:0;border-left:0;padding-top:8px;border-top:1px solid var(--members-am-chrome-border,#c3c4c7);width:100%;max-width:none}.members-am-toolbar-row--primary .members-am-toolbar-primary-user #members-am-user-search.members-am-user-search-input{width:100%;max-width:100%}.members-am-toolbar-row--extra-tools .members-am-admin-editable{width:100%}.members-am-toolbar-row--extra-tools .members-am-copy-wrap{margin-left:0;padding-left:0;border-left:0;padding-top:8px;border-top:1px solid var(--members-am-chrome-border,#c3c4c7);width:100%}.members-am-toolbar-row--extra-tools .members-am-toolbar-group--io{margin-left:0;padding-left:0;border-left:0;padding-top:8px;border-top:1px solid var(--members-am-chrome-border,#c3c4c7);width:100%}}.members-am-toolbar-loading{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;margin-left:4px;color:var(--members-am-muted,#646970);font-size:13px;line-height:1}.members-am-toolbar-loading .spinner{float:none;margin:0}.members-am-toolbar-loading[hidden]{display:none !important}.members-am-copy-wrap label{margin-right:8px}.members-am-chips{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:8px;margin-bottom:12px}.members-am-chip{border-radius:999px;padding:4px 12px;border:1px solid var(--members-am-chrome-border,#c3c4c7);background:var(--members-am-chrome-bg,#f6f7f7);cursor:pointer}.members-am-chip.is-active{background:var(--members-am-accent-use);border-color:var(--members-am-accent-use);color:var(--wp-components-color-accent-inverted,#fff)}.members-am-carousel-wrap{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;gap:8px;margin-bottom:8px}.members-am-carousel-prev,.members-am-carousel-next{-ms-flex-item-align:center;align-self:center;width:36px;height:36px;border-radius:50%;border:1px solid var(--members-am-chrome-border,#c3c4c7);background:var(--wp-components-color-background,#fff);cursor:pointer}.members-am-columns{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-ms-flex:1;flex:1;gap:12px;min-height:320px;overflow:hidden}.members-am-column{-webkit-box-flex:1;-ms-flex:1;flex:1;min-width:0;background:var(--members-am-base,#1d2327);border-radius:4px;color:var(--members-am-fg-on-base,#f0f0f1);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.members-am-user-column{border:2px dashed var(--wp-components-color-gray-700,#8c8f94)}.members-am-sidebar-head{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:8px 10px;background:var(--members-am-surface-use);border-radius:4px 4px 0 0;font-weight:600;font-size:12px;text-transform:uppercase;letter-spacing:.04em;color:var(--members-am-fg-on-surface,var(--members-am-fg-on-base,#f0f0f1))}.members-am-col-filter{padding:6px 8px 8px;border-bottom:1px solid var(--members-am-border-on-base,var(--members-am-border-on-base-fallback));-ms-flex-negative:0;flex-shrink:0}.members-am-col-filter-input{width:100%;max-width:100%;-webkit-box-sizing:border-box;box-sizing:border-box;font-size:12px;line-height:1.4;padding:4px 8px;border-radius:2px;border:1px solid var(--members-am-border-on-base,var(--members-am-border-on-base-fallback));background:var(--members-am-base,#1d2327);color:var(--members-am-fg-on-base,#f0f0f1)}.members-am-col-filter-input::-webkit-input-placeholder{color:var(--members-am-fg-muted-on-base,var(--wp-components-color-gray-700,#8c8f94));opacity:1}.members-am-col-filter-input::-moz-placeholder{color:var(--members-am-fg-muted-on-base,var(--wp-components-color-gray-700,#8c8f94));opacity:1}.members-am-col-filter-input:-ms-input-placeholder{color:var(--members-am-fg-muted-on-base,var(--wp-components-color-gray-700,#8c8f94));opacity:1}.members-am-col-filter-input::-ms-input-placeholder{color:var(--members-am-fg-muted-on-base,var(--wp-components-color-gray-700,#8c8f94));opacity:1}.members-am-col-filter-input::placeholder{color:var(--members-am-fg-muted-on-base,var(--wp-components-color-gray-700,#8c8f94));opacity:1}.members-am-col-filter-input:focus{border-color:var(--members-am-accent-use);outline:1px solid transparent;-webkit-box-shadow:0 0 0 var(--wp-admin-border-width-focus,1px) var(--members-am-accent-use);box-shadow:0 0 0 var(--wp-admin-border-width-focus,1px) var(--members-am-accent-use)}.members-am-col-bulk{padding:0 8px 8px;border-bottom:1px solid var(--members-am-border-on-base,var(--members-am-border-on-base-fallback));-ms-flex-negative:0;flex-shrink:0}.members-am-col-bulk-toolbar,.members-am-col-collapse-toolbar{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:6px;margin-bottom:6px;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.members-am-col-bulk-toolbar .button.button-small,.members-am-col-collapse-toolbar .button.button-small{font-size:11px;min-height:26px;line-height:24px;padding:0 8px;background:var(--members-am-surface-use);border-color:var(--members-am-border-on-surface,var(--members-am-border-on-base,var(--members-am-border-on-base-fallback)));color:var(--members-am-fg-on-surface,var(--members-am-fg-on-base,#f0f0f1))}.members-am-col-bulk-toolbar .button.button-small:hover,.members-am-col-collapse-toolbar .button.button-small:hover{background:color-mix(in srgb,var(--members-am-surface-use) 85%,#fff 15%);border-color:var(--wp-components-color-gray-700,#8c8f94);color:var(--members-am-fg-on-surface,var(--members-am-fg-on-base,#f0f0f1))}.members-am-item-lead{-ms-flex-negative:0;flex-shrink:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:22px;padding:2px 0 0}.members-am-collapse-spacer{display:block;width:20px;height:20px;-ms-flex-negative:0;flex-shrink:0}.members-am-collapse-toggle{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:22px;height:22px;margin:0;padding:0;border:0;background:transparent;color:var(--members-am-fg-muted-on-base,var(--members-am-chrome-border,#c3c4c7));border-radius:2px;cursor:pointer;-ms-flex-negative:0;flex-shrink:0}.members-am-collapse-toggle:hover,.members-am-collapse-toggle:focus{color:var(--members-am-fg-on-base,#f0f0f1);background:color-mix(in srgb,var(--members-am-fg-on-base,#f0f0f1) 12%,transparent);outline:0}.members-am-collapse-toggle .dashicons{font-size:18px;width:18px;height:18px}.members-am-item-cb-wrap{-ms-flex-negative:0;flex-shrink:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;padding:2px 4px 0 0}.members-am-item-cb{margin:0;width:16px;height:16px;-ms-flex-negative:0;flex-shrink:0}.members-am-bulk-select{width:100%;max-width:100%;-webkit-box-sizing:border-box;box-sizing:border-box;font-size:12px;line-height:1.4;padding:4px 8px;border-radius:2px;border:1px solid var(--members-am-border-on-base,var(--members-am-border-on-base-fallback));background:var(--members-am-base,#1d2327);color:var(--members-am-fg-on-base,#f0f0f1)}.members-am-bulk-select:focus{border-color:var(--members-am-accent-use);outline:1px solid transparent;-webkit-box-shadow:0 0 0 var(--wp-admin-border-width-focus,1px) var(--members-am-accent-use);box-shadow:0 0 0 var(--wp-admin-border-width-focus,1px) var(--members-am-accent-use)}.members-am-item.members-am-filter-hidden,.members-am-sep.members-am-filter-hidden,.members-am-item.members-am-collapse-hidden{display:none !important}.members-am-col-move button{margin-left:4px;padding:0 6px;min-height:24px;line-height:22px;font-size:11px}.members-am-sidebar-list{padding:6px 0 12px;overflow-y:auto;max-height:480px}.members-am-item{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;gap:4px;padding:6px 10px 6px 6px;cursor:pointer;border-left:3px solid transparent;font-size:13px}.members-am-item.is-sub{padding-left:22px;font-size:12px;opacity:.95}.members-am-item.is-sub-deep{padding-left:36px}.members-am-sidebar-list .members-am-item{cursor:-webkit-grab;cursor:grab}.members-am-sidebar-list .members-am-item:active{cursor:-webkit-grabbing;cursor:grabbing}.members-am-sort-placeholder{-webkit-box-sizing:border-box;box-sizing:border-box;min-height:36px;margin:2px 0;background:color-mix(in srgb,var(--members-am-accent-use) 8%,transparent);border:1px dashed var(--members-am-accent-use);border-radius:2px}.members-am-item.is-hidden{opacity:.18}.members-am-item.is-no-cap{opacity:.35}.members-am-item.is-no-cap.is-hidden{opacity:.15}.members-am-item.is-selected{border-left-color:var(--members-am-accent-use);background:color-mix(in srgb,var(--members-am-accent-use) 15%,transparent)}.members-am-item-main{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;min-width:0}.members-am-item-main .dashicons{font-size:18px;width:18px;height:18px}.members-am-item-label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.members-am-item-actions{display:none;gap:2px}.members-am-item:hover .members-am-item-actions{display:-webkit-box;display:-ms-flexbox;display:flex}.members-am-item-actions button{min-height:22px;padding:0 4px;line-height:20px;font-size:11px}.members-am-sep{text-align:center;opacity:.35;font-size:11px;padding:4px 0}.members-am-carousel-dots{text-align:center;margin-bottom:4px}.members-am-dot{width:8px;height:8px;border-radius:50%;border:0;margin:0 4px;padding:0;background:var(--members-am-chrome-border,#c3c4c7);cursor:pointer}.members-am-dot.is-active{background:var(--members-am-accent-use)}.members-am-carousel-status{text-align:center;color:var(--members-am-muted,#646970);font-size:12px;margin-top:0}.members-am-badge{font-size:9px;text-transform:uppercase;padding:1px 4px;border-radius:2px;margin-right:4px;vertical-align:middle}.members-am-badge-new{background:var(--members-am-accent-use);color:var(--wp-components-color-accent-inverted,#fff)}.members-am-badge-edit{background:#dba617;color:var(--members-am-base,#1d2327)}.members-am-badge-nocap{background:var(--wp-components-color-gray-700,#8c8f94);color:var(--wp-components-color-accent-inverted,#fff)}.members-am-legend{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:16px;margin:0 0 8px;padding:0;font-size:12px;color:var(--members-am-muted,#646970)}.members-am-legend-item{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:4px}.members-am-edit-panel{margin-top:20px;padding:16px;border:1px solid var(--members-am-chrome-border,#c3c4c7);background:var(--wp-components-color-background,#fff);border-radius:4px}.members-am-edit-panel-header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:12px}.members-am-edit-panel-header h2{margin:0;font-size:16px}.members-am-edit-toolbar{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:12px;margin-bottom:12px}.members-am-edit-target-wrap select{margin-left:8px}.members-am-level-actions .button{margin-right:6px}.members-am-demote-wrap{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:6px}.members-am-demote-wrap .members-am-demote-select{min-width:200px;max-width:min(320px,100%)}.members-am-edit-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:16px}.members-am-edit-col label{display:block;font-weight:600;margin-bottom:4px}.members-am-icon-tabs{margin-bottom:8px}.members-am-icon-tabs .button{margin-right:4px;margin-bottom:4px}.members-am-icon-tabs .button.is-active{background:var(--members-am-accent-use);border-color:var(--members-am-accent-use);color:var(--wp-components-color-accent-inverted,#fff)}.members-am-icon-grid{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:4px;max-height:160px;overflow-y:auto;border:1px solid var(--wp-components-color-gray-200,#dcdcde);padding:8px;background:var(--members-am-chrome-bg,#f6f7f7);margin-bottom:8px}.members-am-icon-pick{width:36px;height:36px;padding:0;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;border:1px solid var(--members-am-chrome-border,#c3c4c7);background:var(--wp-components-color-background,#fff);cursor:pointer}.members-am-bulk-visibility-hint{margin:0 0 8px;font-size:12px;color:var(--members-am-fg-muted-on-base,#646970)}.members-am-vis-role-filter-wrap{margin-bottom:8px}.members-am-vis-row.members-am-vis-filter-hidden{display:none}.members-am-vis-row{display:block;margin-bottom:6px;font-weight:normal}.members-am-reset-dropdown{position:absolute;z-index:100;background:var(--wp-components-color-background,#fff);border:1px solid var(--members-am-chrome-border,#c3c4c7);border-radius:6px;padding:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-shadow:0 4px 12px rgba(0,0,0,0.15);box-shadow:0 4px 12px rgba(0,0,0,0.15);min-width:280px;top:100%;left:0;margin-top:4px;overflow:hidden}.members-am-reset-title{padding:10px 14px;font-weight:600;font-size:13px;border-bottom:1px solid var(--wp-components-color-gray-200,#f0f0f0);color:var(--wp-components-color-foreground,#1d2327)}.members-am-reset-option{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;gap:10px;padding:12px 14px;border:0;background:0;cursor:pointer;text-align:left;width:100%;border-bottom:1px solid var(--wp-components-color-gray-200,#f0f0f0);-webkit-transition:background .15s;transition:background .15s}.members-am-reset-option:last-child{border-bottom:0}.members-am-reset-option:hover{background:var(--members-am-chrome-bg,#f6f7f7)}.members-am-reset-option .dashicons{margin-top:2px;color:var(--members-am-muted,#646970)}.members-am-reset-option-text{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:2px}.members-am-reset-option-text strong{font-size:13px;color:var(--wp-components-color-foreground,#1d2327)}.members-am-reset-option-text small{font-size:12px;color:var(--members-am-muted,#646970)}.members-am-reset-danger:hover{background:#fcf0f1}.members-am-reset-danger .dashicons{color:#d63638}.members-am-reset-danger:hover strong{color:#d63638}@media screen and (max-width:782px){.members-am-columns{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}}.members-am-user-suggestions{position:absolute;z-index:100;background:var(--wp-components-color-background,#fff);border:1px solid var(--members-am-chrome-border,#c3c4c7);border-radius:4px;max-height:200px;overflow-y:auto;width:100%;-webkit-box-shadow:0 2px 6px rgba(0,0,0,0.15);box-shadow:0 2px 6px rgba(0,0,0,0.15);top:100%;left:0}.members-am-user-suggestion{padding:8px 12px;cursor:pointer;font-size:13px;border-bottom:1px solid var(--wp-components-color-gray-200,#f0f0f0)}.members-am-user-suggestion:hover{background:color-mix(in srgb,var(--members-am-accent-use) 8%,var(--wp-components-color-background,#fff))}.members-am-user-suggestion:last-child{border-bottom:0}#members-am-import-file.members-am-import-file-hidden{display:none}.members-am-user-search-wrap{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px}#members-am-user-search.members-am-user-search-input{width:168px;max-width:100%}.members-am-legend-visibility-icon{font-size:14px;width:14px;height:14px;vertical-align:middle}.members-am-legend-nocap-badge{display:inline-block;background:#8c8f94;color:#fff;font-size:9px;padding:1px 4px;border-radius:2px;vertical-align:middle}#members-am-icon-preview.members-am-icon-preview{display:none;width:32px;height:32px;-o-object-fit:contain;object-fit:contain;margin-bottom:6px;border:1px solid #ddd;border-radius:3px;padding:2px;background:#f0f0f1}.members-am-icons .members-am-icon-upload-desc{margin-top:4px}#adminmenu .members-am-menu-badge{display:inline-block;color:#fff;font-size:9px;padding:1px 5px;border-radius:2px;line-height:1.4;vertical-align:middle}
\ No newline at end of file
diff --git a/js/admin-menus.js b/js/admin-menus.js
index 11106fd..7fbe3dd 100644
--- a/js/admin-menus.js
+++ b/js/admin-menus.js
@@ -2772,6 +2772,37 @@
renderColumns();
});
+ var MORE_TOOLS_KEY = 'members_am_more_tools';
+ function membersAmSetMoreToolsOpen(open) {
+ var $extra = $('#members-am-toolbar-extra');
+ var $btn = $('#members-am-more-tools');
+ if (!$extra.length || !$btn.length) {
+ return;
+ }
+ $extra.prop('hidden', !open);
+ $btn.attr('aria-expanded', open ? 'true' : 'false').toggleClass('is-open', !!open);
+ var i18n = membersAdminMenus.i18n || {};
+ if (open && i18n.moreToolsHideAria) {
+ $btn.attr('aria-label', i18n.moreToolsHideAria);
+ } else if (!open && i18n.moreToolsShowAria) {
+ $btn.attr('aria-label', i18n.moreToolsShowAria);
+ } else {
+ $btn.removeAttr('aria-label');
+ }
+ try {
+ sessionStorage.setItem(MORE_TOOLS_KEY, open ? '1' : '0');
+ } catch (e) {}
+ }
+ var moreToolsInitiallyOpen = false;
+ try {
+ moreToolsInitiallyOpen = sessionStorage.getItem(MORE_TOOLS_KEY) === '1';
+ } catch (e) {}
+ membersAmSetMoreToolsOpen(moreToolsInitiallyOpen);
+
+ $('#members-am-more-tools').on('click', function () {
+ membersAmSetMoreToolsOpen($('#members-am-toolbar-extra').prop('hidden'));
+ });
+
$('#members-am-add-item').on('click', function () {
pushUndoSnapshot();
var id = 'c' + Date.now();
diff --git a/js/admin-menus.min.js b/js/admin-menus.min.js
index 55465b5..f224a2b 100644
--- a/js/admin-menus.min.js
+++ b/js/admin-menus.min.js
@@ -1 +1 @@
-!function(M){"use strict";var C={settings:M.extend(!0,{},membersAdminMenus.settings),tree:[],activeRoleSlugs:[],carouselPage:0,columnsPerPage:3,selectedId:null,iconTab:"dashicons",previewUserId:null,previewUserRoles:[],userSuggestions:[],mediaFrame:null,allowUnload:!1,syncScroll:function(){try{return"0"!==localStorage.getItem("members_am_sync_scroll")}catch(e){return!0}}(),columnFilters:{},columnBulkSelection:{},collapsedParents:{}},a="";function t(){return function n(r){if(null===r)return"null";var e=typeof r;return"string"==e||"number"==e||"boolean"==e?JSON.stringify(r):"undefined"==e?"null":Array.isArray(r)?"["+r.map(function(e){return n(e)}).join(",")+"]":"object"!=e?JSON.stringify(r):"{"+Object.keys(r).sort().map(function(e){return JSON.stringify(e)+":"+n(r[e])}).join(",")+"}"}(C.settings)}function s(){if(!C.allowUnload&&t()!==a)return membersAdminMenus.i18n&&membersAdminMenus.i18n.unsavedChanges||""}var i="members_am_notice";function f(e,n){if(n){var r=M("#members-am-notices");r.length||(M(".members-admin-menus-wrap h1").first().after('
'),r=M("#members-am-notices"));var a=M("
",{class:"notice is-dismissible"}).addClass("notice-"+(e||"info"));a.append(M("
").text(n)),r.prepend(a),M(document).trigger("wp-notice-added")}}function o(e,n){try{sessionStorage.setItem(i,JSON.stringify({type:e||"success",message:n}))}catch(e){}}var e=["dashicons-menu","dashicons-admin-dashboard","dashicons-admin-post","dashicons-admin-page","dashicons-admin-media","dashicons-admin-comments","dashicons-admin-appearance","dashicons-admin-plugins","dashicons-admin-users","dashicons-admin-tools","dashicons-admin-settings","dashicons-admin-generic","dashicons-edit","dashicons-plus","dashicons-chart-bar","dashicons-cart","dashicons-products","dashicons-email","dashicons-groups","dashicons-heart","dashicons-star-filled","dashicons-smiley","dashicons-info","dashicons-lock","dashicons-unlock","dashicons-visibility","dashicons-hidden","dashicons-arrow-up","dashicons-arrow-down","dashicons-admin-network","dashicons-performance"],n=["fa-solid fa-house","fa-solid fa-user","fa-solid fa-gear","fa-solid fa-file","fa-solid fa-image","fa-solid fa-cart-shopping","fa-solid fa-chart-line","fa-solid fa-envelope","fa-solid fa-book","fa-solid fa-link","fa-solid fa-bell","fa-solid fa-star","fa-solid fa-heart","fa-solid fa-lock","fa-solid fa-unlock","fa-solid fa-pen","fa-solid fa-trash","fa-solid fa-plus","fa-solid fa-minus"],m="members_am_view_state";function l(){try{localStorage.setItem(m,JSON.stringify({activeRoleSlugs:C.activeRoleSlugs,carouselPage:C.carouselPage}))}catch(e){}}function r(e){return JSON.parse(JSON.stringify(e))}var d=null;function h(){d=r(C.settings),c()}function c(){var e=M("#members-am-undo");if(e.length){var n=!!d;e.prop("disabled",!n).attr("aria-disabled",n?"false":"true")}}function u(){return membersAdminMenus.roles||[]}function p(){C.settings._meta&&!Array.isArray(C.settings._meta)||(C.settings._meta={version:3,admin_editable:!1}),C.settings.roles&&!Array.isArray(C.settings.roles)||(C.settings.roles={}),C.settings.users&&!Array.isArray(C.settings.users)||(C.settings.users={}),Array.isArray(C.settings.custom_items)||(C.settings.custom_items=[]),C.settings.capabilities&&!Array.isArray(C.settings.capabilities)||(C.settings.capabilities={})}function I(e){p(),C.settings.roles[e]||(C.settings.roles[e]={hidden:[],order:[],submenu_order:{},overrides:{}});var n=C.settings.roles[e];return n.hidden&&Array.isArray(n.hidden)||(n.hidden=[]),n.order&&Array.isArray(n.order)||(n.order=[]),n.submenu_order&&!Array.isArray(n.submenu_order)||(n.submenu_order={}),n.overrides&&!Array.isArray(n.overrides)||(n.overrides={}),n}function P(e){p(),C.settings.users[e]||(C.settings.users[e]={});var n=C.settings.users[e];return n.hidden&&Array.isArray(n.hidden)||(n.hidden=[]),n.order&&Array.isArray(n.order)||(n.order=[]),n.overrides&&!Array.isArray(n.overrides)||(n.overrides={}),n.submenu_order&&!Array.isArray(n.submenu_order)||(n.submenu_order={}),n}function b(n){var e=P(n);return(e.order&&e.order.length?e.order.slice():A()).filter(function(e){return 0===e.indexOf("sep-")||!!_(e)&&!function(e,n){if(!n||-1!==n.indexOf("::"))return;var r=P(e),a=r.overrides&&r.overrides[n]||{};return a.parent&&"__promote__"!==a.parent}(n,e)})}function v(e,n,r,a){var s,t=P(e),i=t.overrides&&t.overrides[n]||{},o=r;!o&&i.parent&&"__promote__"!==i.parent&&(o=i.parent);var m,l,d,c,u=-1!==n.indexOf("::")?n.split("::").pop():n,p=(s=o?(t.submenu_order[o]||(t.submenu_order[o]=(m=e,d=S(l=o),c=P(m),C.tree.forEach(function(e){e&&e.id&&-1===e.id.indexOf("::")&&(c.overrides&&c.overrides[e.id]||{}).parent===l&&-1===d.indexOf(e.id)&&d.push(e.id)}),d)),t.submenu_order[o]):(t.order.length||(t.order=A()),t.order)).indexOf(u);if(-1!==p){var f=p+a;f<0||f>=s.length||(h(),s.splice(p,1),s.splice(f,0,o?u:n))}}function g(e){var n=e.id||"c";return"members-am-"+String(n).replace(/[^a-z0-9_-]/gi,"-").toLowerCase()}function x(e){return!!e&&0===(-1!==e.indexOf("::")?e.split("::").pop():e).indexOf("members-am-")}function y(){var a=M.extend(!0,[],membersAdminMenus.menuTree||[]),s={};return a.forEach(function(e){s[e.id]=!0}),(C.settings.custom_items||[]).forEach(function(e){if(e&&e.id){var n=g(e);if(s[n]){for(var r=0;rs&&(C.carouselPage=s))}}C.activeRoleSlugs=n.filter(function(e){return"administrator"!==e||r}),C.activeRoleSlugs.length||(C.activeRoleSlugs=["subscriber"])}function re(){var a=M("#members-am-role-chips").empty();u().forEach(function(e){if("administrator"!==e.slug||C.settings._meta.admin_editable){var n=-1!==C.activeRoleSlugs.indexOf(e.slug),r=M(' ').text(e.label).attr("data-role",e.slug).toggleClass("is-active",n);a.append(r)}})}function ae(t,i,e,o,m){(function(e,n,r,a,s){s=s||0;var t=n.id,i=N(e,t),o=!L(e,n.cap),m=I(e).overrides[t]||{},l=m.label||n.title||t,d=M('
').attr("data-id",t).attr("data-menu-parent",r||"").toggleClass("is-hidden",i).toggleClass("is-no-cap",o).toggleClass("is-selected",C.selectedId===t).toggleClass("is-sub",0 ');if(p){H(c);var b=!!C.collapsedParents[c][t],h=u.expandSubmenus||"Expand submenu items",v=u.collapseSubmenus||"Collapse submenu items";M(' ').attr("aria-expanded",!b).attr("aria-label",(b?h:v)+": "+l).append(M(' ').addClass(b?"dashicons-arrow-right-alt2":"dashicons-arrow-down-alt2")).on("click",function(e){e.stopPropagation(),H(c),C.collapsedParents[c][t]=!C.collapsedParents[c][t],de()}).appendTo(f),d.toggleClass("is-collapse-collapsed",b)}else f.append(M(' '));d.append(f);var g=u.bulkCheckboxAria||"Include in bulk actions",x=M(' '),y=M(' ').prop("checked",!!C.columnBulkSelection[c].ids[t]).attr("aria-label",g+": "+l).on("click",function(e){e.stopPropagation()}).on("change",function(e){e.stopPropagation(),z(c,t,M(this).prop("checked")),de()});x.append(y),d.append(x);var _=M('
');if(0===s){var k=m.icon||n.icon,w=F(k,m.icon_type||n.icon_type);if("fontawesome"===w&&k)_.append(M(' '));else if("svg"!==w&&"image"!==w&&"custom"!==w||!k){var O=k&&0===k.indexOf("dashicons-")?k:"dashicons-admin-generic";_.append(M(' '))}else _.append(M(" ").attr("src",k).css({width:"20px",height:"20px",display:"inline-block",verticalAlign:"middle",objectFit:"contain",filter:"none"}))}n.custom&&_.append(M('custom '));m.label&&_.append(M('edit '));if(_.append(M(' ').text(l)),m.badge){var A=m.badge_bg||"#d63638";_.append(M(' ').text(m.badge).css({backgroundColor:A,color:"#fff",fontSize:"9px",padding:"1px 5px",borderRadius:"2px",marginLeft:"4px",whiteSpace:"nowrap"}))}o&&_.append(M(' Roles.\">🔒 no access "));d.append(_),m.color_bg&&d.css("background-color",m.color_bg);m.color_text&&d.find(".members-am-item-label").css("color",m.color_text);m.color_icon&&(d.find(".dashicons").css("color",m.color_icon),d.find(".members-am-fa-icon i").css("color",m.color_icon),d.find("img").css("filter","none"));var S=M('
');S.append(M(' ').text("◉"),M(' ').text("↑"),M(' ').text("↓")),d.append(S),a.append(d)})(t,i,e,o,m=m||0),i.children&&i.children.length&&U(t,i.id).forEach(function(e){var n,r,a,s=(n=t,r=i.id,_(T(r,a=e))||(-1===a.indexOf("::")&&(I(n).overrides[a]||{}).parent===r?_(a):null));s&&"__promote__"!==(I(t).overrides[s.id]||{}).parent&&ae(t,s,i.id,o,m+1)})}function se(r,a,e,s,t,i){i=i||0,t.append(function(n,e,r,a,s){s=s||0;var t=a.overrides&&a.overrides[n.id]||{},i=t.label||n.title,o=function(e,n){var r=P(e);if(-1!==r.hidden.indexOf(n))return!0;var a=E(n,e);return!(!a||-1===r.hidden.indexOf(a))}(r,n.id),m=!function(e){if(!e||"read"===e)return 1;for(var n=C.previewUserRoles||[],r=0;r").addClass(d).attr("data-id",n.id).attr("data-menu-parent",e||""),u="u:"+r;j(u);var p=membersAdminMenus.i18n||{},f=n.children&&n.children.length,b=M(' ');if(f){H(u);var h=!!C.collapsedParents[u][n.id],v=p.expandSubmenus||"Expand submenu items",g=p.collapseSubmenus||"Collapse submenu items";M(' ').attr("aria-expanded",!h).attr("aria-label",(h?v:g)+": "+i).append(M(' ').addClass(h?"dashicons-arrow-right-alt2":"dashicons-arrow-down-alt2")).on("click",function(e){e.stopPropagation(),H(u),C.collapsedParents[u][n.id]=!C.collapsedParents[u][n.id],de()}).appendTo(b),c.toggleClass("is-collapse-collapsed",h)}else b.append(M(' '));c.append(b);var x=p.bulkCheckboxAria||"Include in bulk actions",y=M(' '),_=M(' ').prop("checked",!!C.columnBulkSelection[u].ids[n.id]).attr("aria-label",x+": "+i).on("click",function(e){e.stopPropagation()}).on("change",function(e){e.stopPropagation(),z(u,n.id,M(this).prop("checked")),de()});y.append(_),c.append(y);var k=M('
');if(0===s){var w=t.icon||n.icon,O=F(w,t.icon_type||n.icon_type);"fontawesome"===O&&w?k.append(M(' ')):"svg"!==O&&"image"!==O&&"custom"!==O||!w?w&&0===w.indexOf("dashicons-")?k.append(M(' ')):k.append(M(' ')):k.append(M(" ").attr("src",w).css({width:"20px",height:"20px",display:"inline-block",verticalAlign:"middle",objectFit:"contain",filter:"none"}))}n.custom&&k.append(M('custom '));t.label&&k.append(M('edit '));if(k.append(M(' ').text(i)),t.badge){var A=t.badge_bg||"#d63638";k.append(M(' ').text(t.badge).css({backgroundColor:A,color:"#fff",fontSize:"9px",padding:"1px 5px",borderRadius:"2px",marginLeft:"4px",whiteSpace:"nowrap"}))}m&&k.append(M('🔒 no access "));c.append(k),t.color_bg&&c.css("background-color",t.color_bg);t.color_text&&c.find(".members-am-item-label").css("color",t.color_text);t.color_icon&&(c.find(".dashicons").css("color",t.color_icon),c.find(".members-am-fa-icon i").css("color",t.color_icon));var S=M('
');return S.append(M(' ').text(o?"◯":"◉"),M(' ').text("↑"),M(' ').text("↓")),c.append(S),c.on("click",function(e){M(e.target).closest("button, .members-am-item-cb, .members-am-collapse-toggle").length||(C.selectedId=n.id,we())}),c}(a,e,r,s,i)),a.children&&a.children.length&&function(e,n){var r=S(n),a=P(e);C.tree.forEach(function(e){e&&e.id&&-1===e.id.indexOf("::")&&(a.overrides&&a.overrides[e.id]||{}).parent===n&&-1===r.indexOf(e.id)&&r.push(e.id)});var s=a.submenu_order&&a.submenu_order[n];if(!s||!s.length)return r.slice();var t=s.filter(function(e){return-1!==r.indexOf(e)});return r.forEach(function(e){-1===t.indexOf(e)&&t.push(e)}),t}(r,a.id).forEach(function(e){var n=function(e,n,r){var a=_(T(n,r));if(a)return a;if(-1===r.indexOf("::")){var s=P(e);if((s.overrides&&s.overrides[r]||{}).parent===n)return _(r)}return null}(r,a.id,e);n&&"__promote__"!==(s.overrides&&s.overrides[n.id]||{}).parent&&se(r,n,a.id,s,t,i+1)})}function te(e,n){var s=(n||"").trim().toLowerCase(),r=e.children(".members-am-item");if(!s)return r.removeClass("members-am-filter-hidden"),void e.children(".members-am-sep").removeClass("members-am-filter-hidden");var i={};r.each(function(){var e=M(this),n=e.attr("data-id"),r=(e.find(".members-am-item-label").first().text()||"").toLowerCase(),a=(n||"").toLowerCase();i[n]=-1!==r.indexOf(s)||-1!==a.indexOf(s)});var o={};r.each(function(){var e=M(this).attr("data-id"),n=M(this).attr("data-menu-parent")||"";o[n]||(o[n]=[]),o[n].push(e)});var m={};function l(e){var n,r=i[e],a=o[e]||[],s=!1;for(n=0;n '),o=M(' ').attr("placeholder",s).attr("aria-label",t).val(a);i.append(o),e.find(".members-am-sidebar-head").first().after(i),o.on("input",function(){C.columnFilters[r]=M(this).val(),te(n,M(this).val())}),te(n,a)}function oe(e,n){var t=0===String(n).indexOf("u:"),i=t?parseInt(n.replace(/^u:/,""),10):0,o=t?null:n,m=n,l=membersAdminMenus.i18n||{},r=M('
').attr("data-column-key",m),a=M('
');a.append(M(' ').text(l.bulkSelectVisible||"Select visible"),M(' ').text(l.bulkClearSelection||"Clear selection"));var s=M('
');s.append(M(' ').text(l.collapseAllMenus||"Collapse all"),M(' ').text(l.expandAllMenus||"Expand all"));var d=M(' ').attr("aria-label",l.bulkVisibilityLabel||"Menu visibility for this column");d.append(M(' ').text(l.bulkActionsPlaceholder||"Choose visibility…"));var c=M(" ").attr("label",l.bulkGroupWholeColumn||"Whole column");c.append(M(' ').text(l.bulkShowAllItems||"Show every menu item"),M(' ').text(l.bulkHideAllItems||"Hide every menu item"));var u=M(" ").attr("label",l.bulkGroupCheckedRows||"Checked rows");u.append(M(' ').text(l.bulkKeepOnlyCheckedVisible||"Keep only checked visible"),M(' ').text(l.bulkHideCheckedItems||"Hide checked items"),M(' ').text(l.bulkShowCheckedItems||"Show checked items")),d.append(c,u),r.append(a,s,d);var p=e.find(".members-am-col-filter").first();p.length?p.after(r):e.find(".members-am-sidebar-head").first().after(r),d.on("change",function(){var e=M(this).val();if(M(this).val(""),e)if(!("keep-only-checked"===e||"hide-checked"===e||"show-checked"===e)||D(m).length){if("keep-only-checked"===e){if(!window.confirm(l.bulkConfirmKeepOnlyChecked||"Hide all items except checked items and their parent menus?"))return}else if("hide-all"===e){if(!window.confirm(l.bulkConfirmHideAll||"Hide every menu item in this column?"))return}else if("hide-checked"===e&&!window.confirm(l.bulkConfirmHideChecked||"Hide the checked items (and their submenus where applicable)?"))return;var n,r,a,s;h(),t?"show-all"===e?P(i).hidden=[]:"hide-all"===e?(a=i,s=J(),P(a).hidden=s.slice()):"keep-only-checked"===e?function(e,r){var n=D(e);if(n.length){var a={};n.forEach(function(e){for(var n=e;n;)a[n]=!0,n=E(n,r)});var s=J(),t=P(r).hidden;t.length=0,s.forEach(function(e){a[e]||t.push(e)})}}(m,i):"hide-checked"===e?q(m,i):"show-checked"===e&&X(m,i):"show-all"===e?I(o).hidden=[]:"hide-all"===e?(n=o,r=J(),I(n).hidden=r.slice()):"keep-only-checked"===e?function(e,r){var n=D(e);if(n.length){var a={};n.forEach(function(e){for(var n=e;n;)a[n]=!0,n=w(n,r)});var s=J(),t=I(r).hidden;t.length=0,s.forEach(function(e){a[e]||t.push(e)})}}(m,o):"hide-checked"===e?G(m,o):"show-checked"===e&&Q(m,o),we()}else f("warning",l.bulkSelectCheckedFirst||"Check one or more menu items first.")})}function me(e){return-1!==e.indexOf("::")?e.split("::").pop():e}function le(){M.fn.sortable&&M("#members-am-columns .members-am-sidebar-list").each(function(){var e=M(this);e.data("ui-sortable")&&e.sortable("destroy");var n=e.closest(".members-am-column"),r=n.data("role"),a=n.data("user");e.sortable({axis:"y",distance:6,items:"> .members-am-item, > .members-am-sep",cancel:".members-am-item-actions button, .members-am-item-cb, .members-am-item-cb-wrap, .members-am-collapse-toggle",placeholder:"members-am-sort-placeholder",forcePlaceholderSize:!0,tolerance:"pointer",start:function(){h()},update:function(){a?function(e,n){var s=[],t={};e.children().each(function(){var e=M(this);if(e.hasClass("members-am-sep")){var n=e.attr("data-sep-id");n&&s.push(n)}else if(e.hasClass("members-am-item")){var r=e.attr("data-id");if(r){var a=e.attr("data-menu-parent");void 0===a||""===a?s.push(r):(t[a]||(t[a]=[]),t[a].push(me(r)))}}});var r=P(n);r.order=s,r.submenu_order=t}(e,a):r&&function(e,n){var s=[],t={};e.children().each(function(){var e=M(this);if(e.hasClass("members-am-sep")){var n=e.attr("data-sep-id");n&&s.push(n)}else if(e.hasClass("members-am-item")){var r=e.attr("data-id");if(r){var a=e.attr("data-menu-parent");void 0===a||""===a?s.push(r):(t[a]||(t[a]=[]),t[a].push(me(r)))}}});var r=I(n);r.order=s,r.submenu_order=t}(e,r),ce()}})})}function de(){var r=M("#members-am-columns"),a={};r.find(".members-am-column").each(function(){var e=M(this).data("role");if(e){var n=M(this).find(".members-am-sidebar-list");n.length&&(a[e]=n.scrollTop())}}),r.empty();var e=C.carouselPage*C.columnsPerPage;if(C.activeRoleSlugs.slice(e,e+C.columnsPerPage).forEach(function(e){var n=M('
');!function(r,e){e.empty();var n=M(''),a=(u().filter(function(e){return e.slug===r})[0]||{}).label||r;n.append(M('').text(a)),n.append(M(' ').append(M(' ').text("◀"),M(' ').text("▶"))),e.append(n);var s=M('');R(r).forEach(function(e){if(0!==e.indexOf("sep-")){var n=_(e);n&&ae(r,n,null,s,0)}else s.append(M('
').attr("data-sep-id",e).text("—"))}),e.append(s),W(s,r),ie(e,s,r),oe(e,r)}(e,n),r.append(n),a[e]&&n.find(".members-am-sidebar-list").scrollTop(a[e])}),C.previewUserId){var s=C.previewUserId,n=M('
'),t=M('');t.append(M(" ").text(C.previewUserLabel||"User #"+s)),t.append(M('× ').on("click",function(){C.previewUserId=null,C.previewUserLabel=null,C.previewUserRoles=[],we()})),n.append(t);var i=M(''),o=P(s);b(s).forEach(function(e){if(0!==e.indexOf("sep-")){var n=_(e);n&&se(s,n,null,o,i,0)}else i.append(M('
').attr("data-sep-id",e).text("——"))}),n.append(i),W(i,"u:"+s),ie(n,i,"u:"+s),oe(n,"u:"+s),r.append(n)}if(C.syncScroll){var m=r.find(".members-am-sidebar-list"),l=!1;m.on("scroll",function(){if(!l){l=!0;var e=M(this).scrollTop();m.not(this).scrollTop(e),l=!1}})}!function(){var e=Math.max(1,Math.ceil(C.activeRoleSlugs.length/C.columnsPerPage)),n=(Math.min(C.carouselPage+1,e),C.carouselPage*C.columnsPerPage+1),r=Math.min((C.carouselPage+1)*C.columnsPerPage,C.activeRoleSlugs.length);M("#members-am-carousel-status").text(n+"–"+r+" "+membersAdminMenus.i18n.of+" "+C.activeRoleSlugs.length);for(var a=M("#members-am-carousel-dots").empty(),s=0;s ').toggleClass("is-active",s===C.carouselPage))}(),le()}function ce(){if(C.selectedId){M("#members-am-edit-panel").removeAttr("hidden");var e=_(C.selectedId),n=$()||{};M("#members-am-edit-title").text(e?e.title:C.selectedId),M("#members-am-edit-label").val(n.label||e&&e.title||"");var r=x(C.selectedId);M("#members-am-edit-url-wrap").toggle(r),M("#members-am-edit-url").attr("placeholder","Override URL (leave empty for default)").val(r&&(n.url||e&&e.url)||"").data("default-url",e&&e.url||""),M("#members-am-icon-type").val(n.icon_type||"dashicon"),M("#members-am-icon-value").val(n.icon||e&&e.icon||"");var a=n.icon||e&&e.icon||"",s=F(a,n.icon_type||e&&e.icon_type||"");"image"!==s&&"custom"!==s&&"svg"!==s||!a?M("#members-am-icon-preview").hide():M("#members-am-icon-preview").show().attr("src",a),M("#members-am-color-bg").val(n.color_bg||""),M("#members-am-color-text").val(n.color_text||""),M("#members-am-color-icon").val(n.color_icon||""),M("#members-am-badge-text").val(n.badge||""),M("#members-am-badge-bg").val(n.badge_bg||""),M("#members-am-item-cap").attr("placeholder",e&&e.cap?e.cap+" (default)":"").val(C.settings.capabilities[C.selectedId]||"");var t=e&&e.custom;M("#members-am-remove-custom").toggle(!!t),M("#members-am-visibility-toggles").empty();var i=e&&e.cap||"read",o=[];if(u().forEach(function(e){"administrator"===e.slug&&!C.settings._meta.admin_editable||o.push(e)}),10<=o.length){var m=membersAdminMenus.i18n&&membersAdminMenus.i18n.filterRolesVisibility||"Filter roles…",l=membersAdminMenus.i18n&&membersAdminMenus.i18n.filterRolesVisibilityLabel||"Filter roles in this list",d=M('
'),c=M(' ').attr("placeholder",m).attr("aria-label",l);d.append(c),M("#members-am-visibility-toggles").append(d),c.on("input",function(){var s=(M(this).val()||"").trim().toLowerCase();M("#members-am-visibility-toggles .members-am-vis-row").each(function(){var e=M(this),n=(e.find("span").first().text()||"").toLowerCase(),r=String(e.find(".members-am-vis-cb").data("role")||"").toLowerCase(),a=!s||-1!==n.indexOf(s)||-1!==r.indexOf(s);e.toggleClass("members-am-vis-filter-hidden",!a)})})}o.forEach(function(e){var n=N(e.slug,C.selectedId),r=L(e.slug,i),a=M(' ').attr("data-role",e.slug).prop("checked",!n&&r);r||a.prop("disabled",!0);var s=M(' ').append(a,M(" ").text(e.label));r||(s.append(M(" ").text(" — no capability").css({color:"#999",fontStyle:"italic",marginLeft:"4px"})),s.css("opacity","0.5")),M("#members-am-visibility-toggles").append(s)}),M(".members-am-color").each(function(){M(this).data("wpWpColorPicker")&&M(this).wpColorPicker("destroy")}),M(".members-am-color").wpColorPicker({change:function(e,n){setTimeout(function(){ue()},20)},clear:function(){setTimeout(function(){ue()},20)}}),pe(),function(){var e=M(".members-am-demote-wrap"),r=M("#members-am-demote-parent"),n=M("#members-am-demote");if(!C.selectedId)return e.attr("hidden",!0);if(k(C.selectedId))return e.attr("hidden",!0);var a=Y()[0]||C.activeRoleSlugs[0];if(a&&O(a,C.selectedId))return e.attr("hidden",!0);e.removeAttr("hidden");var s=C.selectedId,t=membersAdminMenus.i18n&&membersAdminMenus.i18n.selectParentMenu||"";r.empty().append(M(" ").val("").text(t));var i=0;C.tree.forEach(function(e){if(e&&e.id&&e.id!==s){var n=e.title&&String(e.title).trim()?e.title:e.id;r.append(M(" ").val(e.id).text(n)),i++}});var o=0 ');"dashicons"===r?n.append(M(' ')):n.append(M(' ')),n.on("click",function(){M("#members-am-icon-value").val(e),M("#members-am-icon-type").val("dashicons"===r?"dashicon":"fontawesome"),ue()}),s.append(n)}})}function fe(e,n){var r=C.activeRoleSlugs.indexOf(e);if(-1!==r){var a=r+n;if(!(a<0||a>=C.activeRoleSlugs.length)){h();var s=C.activeRoleSlugs[r];C.activeRoleSlugs[r]=C.activeRoleSlugs[a],C.activeRoleSlugs[a]=s,l(),we()}}}function be(e,n,r){var a,s,t,i=I(e).overrides[n]||{},o=null;if("__promote__"===i.parent?o=null:-1!==n.indexOf("::")?o=k(n):i.parent&&"__promote__"!==i.parent&&(o=i.parent),o){var m=I(e).submenu_order;m[o]||(m[o]=(a=e,t=S(s=o),C.tree.forEach(function(e){e&&e.id&&-1===e.id.indexOf("::")&&(I(a).overrides[e.id]||{}).parent===s&&-1===t.indexOf(e.id)&&t.push(e.id)}),t));var l=m[o],d=-1!==n.indexOf("::")?n.split("::").pop():n;if(-1===(u=l.indexOf(d)))return;if((p=u+r)<0||p>=l.length)return;h();var c=l[u];l[u]=l[p],l[p]=c}else{I(e).order&&I(e).order.length||(I(e).order=A());var u,p,f=I(e).order;if(-1===(u=f.indexOf(n)))return;if((p=u+r)<0||p>=f.length)return;h();var b=f[u];f[u]=f[p],f[p]=b}we()}function he(){var e=Y();if(e.length){h();var a="sep-"+Date.now();e.forEach(function(e){I(e).order&&I(e).order.length||(I(e).order=A());var n=I(e).order,r=C.selectedId?n.indexOf(C.selectedId):n.length-1;r<0&&(r=n.length),n.splice(r+1,0,a)}),we()}}function ve(e){var n=M("#members-am-toolbar-loading");n.removeAttr("hidden"),n.find(".spinner").addClass("is-active"),n.find(".members-am-loading-text").text(e||""),M("#members-am-save, #members-am-reset, #members-am-import, #members-am-copy-apply, #members-am-undo").prop("disabled",!0)}function ge(){var e=M("#members-am-toolbar-loading");e.attr("hidden",!0),e.find(".spinner").removeClass("is-active"),e.find(".members-am-loading-text").text(""),M("#members-am-save, #members-am-reset, #members-am-import, #members-am-copy-apply").prop("disabled",!1),c()}function xe(e){ve(e||membersAdminMenus.i18n&&membersAdminMenus.i18n.saving||"Saving…");var s=membersAdminMenus.i18n&&membersAdminMenus.i18n.networkError||"Could not save settings. Check your connection and try again.";M.ajax({url:membersAdminMenus.ajaxUrl,type:"POST",dataType:"json",timeout:6e4,data:{action:"members_admin_menus_save",nonce:membersAdminMenus.nonce,settings:JSON.stringify(C.settings)}}).done(function(e){if(e&&void 0!==e.success){if(e.success)return a=t(),d=null,c(),void f("success",e.data&&e.data.message||membersAdminMenus.i18n&&membersAdminMenus.i18n.saved||"Settings saved.");f("error",e.data&&e.data.message?e.data.message:"Error")}else f("error",s)}).fail(function(e,n){if("abort"!==n){var r=s;if(e&&e.responseJSON&&void 0!==e.responseJSON.data){var a=e.responseJSON.data;"string"==typeof a&&a?r=a:a&&"string"==typeof a.message&&a.message&&(r=a.message)}f("error",r)}}).always(function(){ge()})}function ye(e,n){if(confirm("role"===e&&n?"Reset all settings for this role? This cannot be undone.":"Reset ALL menu settings for every role? This cannot be undone.")){ve(membersAdminMenus.i18n&&membersAdminMenus.i18n.resetting||"Resetting…");var r=!1;M.post(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_reset",nonce:membersAdminMenus.nonce,scope:e||"all",role:n||""}).done(function(e){if(e.success)return o("success",e.data&&e.data.message||membersAdminMenus.i18n&&membersAdminMenus.i18n.resetComplete||"Reset complete."),C.allowUnload=!0,r=!0,void location.reload();f("error",e.data&&e.data.message?e.data.message:membersAdminMenus.i18n&&membersAdminMenus.i18n.resetFailed||"Reset failed.")}).fail(function(){f("error",membersAdminMenus.i18n&&membersAdminMenus.i18n.resetNetworkError||membersAdminMenus.i18n.networkError||"Could not reset settings. Check your connection and try again.")}).always(function(){r||ge()})}}function _e(e){M.getJSON(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_user_search",nonce:membersAdminMenus.nonce,term:e},function(e){e.success&&e.data&&e.data.length?function(e){M(".members-am-user-suggestions").remove();var n=M("#members-am-user-search").parent();n.css("position","relative");var r=M('
');e.forEach(function(e){r.append(M('
').text(e.label).data("userId",e.id).on("click",function(){!function(e,n,r){C.previewUserId=e,C.previewUserLabel=n||"User #"+e,C.previewUserRoles=r||[],p(),C.settings.users[e]||(C.settings.users[e]={});we()}(e.id,e.label,e.roles),M(".members-am-user-suggestions").remove(),M("#members-am-user-search").val("")}))}),n.append(r),setTimeout(function(){M(document).one("click",function(){M(".members-am-user-suggestions").remove()})},0)}(e.data):M(".members-am-user-suggestions").remove()})}function ke(){var n;M(document).on("click","#members-am-role-chips .members-am-chip",function(){var e=M(this).data("role"),n=C.activeRoleSlugs.indexOf(e);-1===n?C.activeRoleSlugs.push(e):1 ');if(t.append(M('
').text("Reset Settings")),a&&s){var i=M(' ');i.append(M(' ')),i.append(M(' ').append(M(" ").text("Reset "+s),M(" ").text("Clear all menu settings for this role only"))),i.on("click",function(){M(".members-am-reset-dropdown").remove(),ye("role",a)}),t.append(i)}var o=M(' ');o.append(M(' ')),o.append(M(' ').append(M(" ").text("Reset all roles"),M(" ").text("Clear all menu settings for every role"))),o.on("click",function(){M(".members-am-reset-dropdown").remove(),ye("all")}),t.append(o),n.parent().css("position","relative"),t.insertAfter(n),M(document).one("click",function(){M(".members-am-reset-dropdown").remove()})}),M("#members-am-export").on("click",function(e){e.preventDefault(),window.location.href=membersAdminMenus.exportUrl}),M("#members-am-import").on("click",function(){M("#members-am-import-file").trigger("click")}),M("#members-am-import-file").on("change",function(){var e=this.files&&this.files[0];e&&function(e){ve(membersAdminMenus.i18n&&membersAdminMenus.i18n.importing||"Importing…");var r=new FileReader;r.onerror=function(){ge(),f("error",membersAdminMenus.i18n&&membersAdminMenus.i18n.readFileFailed||"Could not read the file.")},r.onload=function(){try{var e=JSON.parse(r.result),n=!1;M.post(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_import",nonce:membersAdminMenus.nonce,settings:JSON.stringify(e)}).done(function(e){if(e.success)return o("success",e.data&&e.data.message||membersAdminMenus.i18n&&membersAdminMenus.i18n.imported||"Settings imported."),C.allowUnload=!0,n=!0,void location.reload();f("error",e.data&&e.data.message?e.data.message:"Error")}).fail(function(){f("error",membersAdminMenus.i18n&&membersAdminMenus.i18n.importNetworkError||membersAdminMenus.i18n.networkError||"Could not import settings. Check your connection and try again.")}).always(function(){n||ge()})}catch(e){ge(),f("error",membersAdminMenus.i18n&&membersAdminMenus.i18n.invalidJson||"Invalid JSON.")}},r.readAsText(e)}(e)}),M("#members-am-copy-apply").on("click",function(){var r=M("#members-am-copy-from").val(),n=M("#members-am-copy-to").val();if(r&&n)if(r!==n){var a="",s="";if(u().forEach(function(e){e.slug===r&&(a=e.label),e.slug===n&&(s=e.label)}),confirm('Copy menu settings from "'+a+'" to "'+s+'"?\nThis will overwrite "'+s+"\" menu configuration.\n\nNote: This copies menu order, hidden items, labels, icons, and colors.\nIt does NOT change the role's capabilities (items marked with a lock icon).")){h();var e=I(r),t={hidden:e.hidden?e.hidden.slice():[],order:[],submenu_order:{},overrides:{}},i=R(r);t.order=i.slice(),C.tree.forEach(function(e){if(e.children&&e.children.length){var n=U(r,e.id);n&&n.length&&(t.submenu_order[e.id]=n.slice())}}),e.overrides&&"object"==typeof e.overrides&&(t.overrides=JSON.parse(JSON.stringify(e.overrides))),C.settings.roles[n]=t,-1===C.activeRoleSlugs.indexOf(n)&&(C.activeRoleSlugs.push(n),l(),re()),we(),xe(membersAdminMenus.i18n&&membersAdminMenus.i18n.copying||"Copying…")}}else f("error",membersAdminMenus.i18n&&membersAdminMenus.i18n.rolesMustDiffer||"Source and target roles must be different.")}),M("#members-am-admin-editable").on("change",function(){var e=!0;M(this).is(":checked")&&(e=window.confirm(membersAdminMenus.i18n.adminEditableWarn)),e?(C.settings._meta.admin_editable=M(this).is(":checked"),ne(),re(),l(),we()):M(this).prop("checked",!1)}),M("#members-am-sync-scroll").prop("checked",!1!==C.syncScroll),M("#members-am-sync-scroll").on("change",function(){C.syncScroll=M(this).is(":checked");try{localStorage.setItem("members_am_sync_scroll",C.syncScroll?"1":"0")}catch(e){}de()}),M("#members-am-add-item").on("click",function(){h();var e="c"+Date.now();C.settings.custom_items.push({id:e,label:"Custom link",url:window.location.origin+"/wp-admin/",icon_type:"dashicon",icon:"dashicons-admin-generic",parent:"",position:99,cap:"read"}),C.tree=y(),C.selectedId=g({id:e}),we(),ce()}),M("#members-am-remove-custom").on("click",function(){var n=_(C.selectedId);n&&n.customId&&(h(),C.settings.custom_items=(C.settings.custom_items||[]).filter(function(e){return e.id!==n.customId}),C.selectedId=null,C.tree=y(),we(),M("#members-am-edit-panel").attr("hidden",!0))}),M("#members-am-edit-close").on("click",function(){C.selectedId=null,M("#members-am-edit-panel").attr("hidden",!0),we()}),M("#members-am-edit-target-role").on("change",ce),M("#members-am-edit-label, #members-am-edit-url, #members-am-icon-value, #members-am-badge-text").on("input",function(){ue()}),M("#members-am-item-cap").on("input",function(){ue()}),M(".members-am-icon-tabs .button").on("click",function(){M(".members-am-icon-tabs .button").removeClass("is-active"),M(this).addClass("is-active"),C.iconTab="fontawesome"===M(this).data("tab")?"fontawesome":"upload"===M(this).data("tab")?"upload":"dashicons",pe()}),M("#members-am-icon-search").on("input",pe),M("#members-am-media-upload").on("click",function(e){e.preventDefault(),C.mediaFrame||(C.mediaFrame=wp.media({title:"Choose menu icon",button:{text:"Use as icon"},multiple:!1,library:{type:"image"}}),C.mediaFrame.on("select",function(){var e=C.mediaFrame.state().get("selection").first().toJSON(),n=e.url||"";e.sizes&&(e.sizes.thumbnail?n=e.sizes.thumbnail.url:e.sizes.medium&&(n=e.sizes.medium.url)),M("#members-am-icon-type").val("custom"),M("#members-am-icon-value").val(n),ue()})),C.mediaFrame.open()}),M(document).on("change",".members-am-vis-cb",function(){h();var e=M(this).data("role");if(M(this).is(":checked")){var n=I(e).hidden,r=n.indexOf(C.selectedId);-1!==r&&n.splice(r,1)}else-1===I(e).hidden.indexOf(C.selectedId)&&I(e).hidden.push(C.selectedId);we()}),M("#members-am-add-sep").on("click",he),M("#members-am-promote").on("click",function(){if(C.selectedId){h();var s=C.selectedId,e=$()||{};if(-1===s.indexOf("::")&&e.parent&&"__promote__"!==e.parent){var t=e.parent,n=Z();if(n){var r=P(n);if(r.overrides[s]&&delete r.overrides[s].parent,r.submenu_order&&r.submenu_order[t]){var a=r.submenu_order[t].indexOf(s);-1!==a&&r.submenu_order[t].splice(a,1)}if(r.order.length||(r.order=A()),-1===r.order.indexOf(s)){var i=r.order.indexOf(t);-1!==i?r.order.splice(i+1,0,s):r.order.push(s)}}else Y().forEach(function(e){var n=I(e);if(n.overrides[s]&&delete n.overrides[s].parent,n.submenu_order&&n.submenu_order[t]){var r=n.submenu_order[t].indexOf(s);-1!==r&&n.submenu_order[t].splice(r,1)}if(n.order&&n.order.length||(n.order=A()),-1===n.order.indexOf(s)){var a=n.order.indexOf(t);-1!==a?n.order.splice(a+1,0,s):n.order.push(s)}});return ue(),void ce()}ee("parent","__promote__");var o=k(s);Y().forEach(function(e){var n=I(e);if(n.order&&n.order.length||(n.order=A()),-1===n.order.indexOf(s))if(o){var r=n.order.indexOf(o);-1!==r?n.order.splice(r+1,0,s):n.order.push(s)}else n.order.push(s)}),ue(),ce()}}),M("#members-am-demote").on("click",function(){var e=M("#members-am-demote-parent").val();e?(h(),ee("parent",e),ue(),ce()):f("warning",membersAdminMenus.i18n&&membersAdminMenus.i18n.selectParentFirst||"Please choose a parent menu from the list.")}),M("#members-am-user-search").on("input",function(){var e=M(this).val();clearTimeout(n),n=setTimeout(function(){1 ").val("__all__").text("All roles")),C.activeRoleSlugs.forEach(function(n){var e=(u().filter(function(e){return e.slug===n})[0]||{}).label||n;r.append(M(" ").val(n).text(e))}),C.previewUserId&&r.append(M(" ").val("__user__"+C.previewUserId).text(C.previewUserLabel||"User #"+C.previewUserId)),C.selectedId&&ce()}M(function(){var n,r,e;!function(){try{var e=sessionStorage.getItem(i);if(!e)return;sessionStorage.removeItem(i);var n=JSON.parse(e);n&&n.message&&f(n.type,n.message)}catch(e){}}(),p(),C.tree=y(),ne(),M("#members-am-admin-editable").prop("checked",!!C.settings._meta.admin_editable),n=M("#members-am-copy-from").empty(),r=M("#members-am-copy-to").empty(),(e=u()).forEach(function(e){n.append(M(" ").val(e.slug).text(e.label)),r.append(M(" ").val(e.slug).text(e.label))}),1 '),r=M("#members-am-notices"));var a=M("
",{class:"notice is-dismissible"}).addClass("notice-"+(e||"info"));a.append(M("
").text(n)),r.prepend(a),M(document).trigger("wp-notice-added")}}function o(e,n){try{sessionStorage.setItem(i,JSON.stringify({type:e||"success",message:n}))}catch(e){}}var e=["dashicons-menu","dashicons-admin-dashboard","dashicons-admin-post","dashicons-admin-page","dashicons-admin-media","dashicons-admin-comments","dashicons-admin-appearance","dashicons-admin-plugins","dashicons-admin-users","dashicons-admin-tools","dashicons-admin-settings","dashicons-admin-generic","dashicons-edit","dashicons-plus","dashicons-chart-bar","dashicons-cart","dashicons-products","dashicons-email","dashicons-groups","dashicons-heart","dashicons-star-filled","dashicons-smiley","dashicons-info","dashicons-lock","dashicons-unlock","dashicons-visibility","dashicons-hidden","dashicons-arrow-up","dashicons-arrow-down","dashicons-admin-network","dashicons-performance"],n=["fa-solid fa-house","fa-solid fa-user","fa-solid fa-gear","fa-solid fa-file","fa-solid fa-image","fa-solid fa-cart-shopping","fa-solid fa-chart-line","fa-solid fa-envelope","fa-solid fa-book","fa-solid fa-link","fa-solid fa-bell","fa-solid fa-star","fa-solid fa-heart","fa-solid fa-lock","fa-solid fa-unlock","fa-solid fa-pen","fa-solid fa-trash","fa-solid fa-plus","fa-solid fa-minus"],m="members_am_view_state";function l(){try{localStorage.setItem(m,JSON.stringify({activeRoleSlugs:C.activeRoleSlugs,carouselPage:C.carouselPage}))}catch(e){}}function d(e){return JSON.parse(JSON.stringify(e))}var c=null;function h(){c=d(C.settings),u()}function u(){var e=M("#members-am-undo");if(e.length){var n=!!c;e.prop("disabled",!n).attr("aria-disabled",n?"false":"true")}}function p(){return membersAdminMenus.roles||[]}function b(){C.settings._meta&&!Array.isArray(C.settings._meta)||(C.settings._meta={version:3,admin_editable:!1}),C.settings.roles&&!Array.isArray(C.settings.roles)||(C.settings.roles={}),C.settings.users&&!Array.isArray(C.settings.users)||(C.settings.users={}),Array.isArray(C.settings.custom_items)||(C.settings.custom_items=[]),C.settings.capabilities&&!Array.isArray(C.settings.capabilities)||(C.settings.capabilities={})}function I(e){b(),C.settings.roles[e]||(C.settings.roles[e]={hidden:[],order:[],submenu_order:{},overrides:{}});var n=C.settings.roles[e];return n.hidden&&Array.isArray(n.hidden)||(n.hidden=[]),n.order&&Array.isArray(n.order)||(n.order=[]),n.submenu_order&&!Array.isArray(n.submenu_order)||(n.submenu_order={}),n.overrides&&!Array.isArray(n.overrides)||(n.overrides={}),n}function P(e){b(),C.settings.users[e]||(C.settings.users[e]={});var n=C.settings.users[e];return n.hidden&&Array.isArray(n.hidden)||(n.hidden=[]),n.order&&Array.isArray(n.order)||(n.order=[]),n.overrides&&!Array.isArray(n.overrides)||(n.overrides={}),n.submenu_order&&!Array.isArray(n.submenu_order)||(n.submenu_order={}),n}function v(n){var e=P(n);return(e.order&&e.order.length?e.order.slice():S()).filter(function(e){return 0===e.indexOf("sep-")||!!k(e)&&!function(e,n){if(!n||-1!==n.indexOf("::"))return;var r=P(e),a=r.overrides&&r.overrides[n]||{};return a.parent&&"__promote__"!==a.parent}(n,e)})}function g(e,n,r,a){var s,t=P(e),i=t.overrides&&t.overrides[n]||{},o=r;!o&&i.parent&&"__promote__"!==i.parent&&(o=i.parent);var m,l,d,c,u=-1!==n.indexOf("::")?n.split("::").pop():n,p=(s=o?(t.submenu_order[o]||(t.submenu_order[o]=(m=e,d=R(l=o),c=P(m),C.tree.forEach(function(e){e&&e.id&&-1===e.id.indexOf("::")&&(c.overrides&&c.overrides[e.id]||{}).parent===l&&-1===d.indexOf(e.id)&&d.push(e.id)}),d)),t.submenu_order[o]):(t.order.length||(t.order=S()),t.order)).indexOf(u);if(-1!==p){var f=p+a;f<0||f>=s.length||(h(),s.splice(p,1),s.splice(f,0,o?u:n))}}function x(e){var n=e.id||"c";return"members-am-"+String(n).replace(/[^a-z0-9_-]/gi,"-").toLowerCase()}function y(e){return!!e&&0===(-1!==e.indexOf("::")?e.split("::").pop():e).indexOf("members-am-")}function _(){var a=M.extend(!0,[],membersAdminMenus.menuTree||[]),s={};return a.forEach(function(e){s[e.id]=!0}),(C.settings.custom_items||[]).forEach(function(e){if(e&&e.id){var n=x(e);if(s[n]){for(var r=0;rs&&(C.carouselPage=s))}}C.activeRoleSlugs=n.filter(function(e){return"administrator"!==e||r}),C.activeRoleSlugs.length||(C.activeRoleSlugs=["subscriber"])}function ae(){var a=M("#members-am-role-chips").empty();p().forEach(function(e){if("administrator"!==e.slug||C.settings._meta.admin_editable){var n=-1!==C.activeRoleSlugs.indexOf(e.slug),r=M(' ').text(e.label).attr("data-role",e.slug).toggleClass("is-active",n);a.append(r)}})}function se(t,i,e,o,m){(function(e,n,r,a,s){s=s||0;var t=n.id,i=L(e,t),o=!F(e,n.cap),m=I(e).overrides[t]||{},l=m.label||n.title||t,d=M('
').attr("data-id",t).attr("data-menu-parent",r||"").toggleClass("is-hidden",i).toggleClass("is-no-cap",o).toggleClass("is-selected",C.selectedId===t).toggleClass("is-sub",0 ');if(p){V(c);var b=!!C.collapsedParents[c][t],h=u.expandSubmenus||"Expand submenu items",v=u.collapseSubmenus||"Collapse submenu items";M(' ').attr("aria-expanded",!b).attr("aria-label",(b?h:v)+": "+l).append(M(' ').addClass(b?"dashicons-arrow-right-alt2":"dashicons-arrow-down-alt2")).on("click",function(e){e.stopPropagation(),V(c),C.collapsedParents[c][t]=!C.collapsedParents[c][t],ce()}).appendTo(f),d.toggleClass("is-collapse-collapsed",b)}else f.append(M(' '));d.append(f);var g=u.bulkCheckboxAria||"Include in bulk actions",x=M(' '),y=M(' ').prop("checked",!!C.columnBulkSelection[c].ids[t]).attr("aria-label",g+": "+l).on("click",function(e){e.stopPropagation()}).on("change",function(e){e.stopPropagation(),z(c,t,M(this).prop("checked")),ce()});x.append(y),d.append(x);var _=M('
');if(0===s){var k=m.icon||n.icon,w=J(k,m.icon_type||n.icon_type);if("fontawesome"===w&&k)_.append(M(' '));else if("svg"!==w&&"image"!==w&&"custom"!==w||!k){var O=k&&0===k.indexOf("dashicons-")?k:"dashicons-admin-generic";_.append(M(' '))}else _.append(M(" ").attr("src",k).css({width:"20px",height:"20px",display:"inline-block",verticalAlign:"middle",objectFit:"contain",filter:"none"}))}n.custom&&_.append(M('custom '));m.label&&_.append(M('edit '));if(_.append(M(' ').text(l)),m.badge){var A=m.badge_bg||"#d63638";_.append(M(' ').text(m.badge).css({backgroundColor:A,color:"#fff",fontSize:"9px",padding:"1px 5px",borderRadius:"2px",marginLeft:"4px",whiteSpace:"nowrap"}))}o&&_.append(M(' Roles.\">🔒 no access "));d.append(_),m.color_bg&&d.css("background-color",m.color_bg);m.color_text&&d.find(".members-am-item-label").css("color",m.color_text);m.color_icon&&(d.find(".dashicons").css("color",m.color_icon),d.find(".members-am-fa-icon i").css("color",m.color_icon),d.find("img").css("filter","none"));var S=M('
');S.append(M(' ').text("◉"),M(' ').text("↑"),M(' ').text("↓")),d.append(S),a.append(d)})(t,i,e,o,m=m||0),i.children&&i.children.length&&T(t,i.id).forEach(function(e){var n,r,a,s=(n=t,r=i.id,k(N(r,a=e))||(-1===a.indexOf("::")&&(I(n).overrides[a]||{}).parent===r?k(a):null));s&&"__promote__"!==(I(t).overrides[s.id]||{}).parent&&se(t,s,i.id,o,m+1)})}function te(r,a,e,s,t,i){i=i||0,t.append(function(n,e,r,a,s){s=s||0;var t=a.overrides&&a.overrides[n.id]||{},i=t.label||n.title,o=function(e,n){var r=P(e);if(-1!==r.hidden.indexOf(n))return!0;var a=E(n,e);return!(!a||-1===r.hidden.indexOf(a))}(r,n.id),m=!function(e){if(!e||"read"===e)return 1;for(var n=C.previewUserRoles||[],r=0;r").addClass(d).attr("data-id",n.id).attr("data-menu-parent",e||""),u="u:"+r;D(u);var p=membersAdminMenus.i18n||{},f=n.children&&n.children.length,b=M(' ');if(f){V(u);var h=!!C.collapsedParents[u][n.id],v=p.expandSubmenus||"Expand submenu items",g=p.collapseSubmenus||"Collapse submenu items";M(' ').attr("aria-expanded",!h).attr("aria-label",(h?v:g)+": "+i).append(M(' ').addClass(h?"dashicons-arrow-right-alt2":"dashicons-arrow-down-alt2")).on("click",function(e){e.stopPropagation(),V(u),C.collapsedParents[u][n.id]=!C.collapsedParents[u][n.id],ce()}).appendTo(b),c.toggleClass("is-collapse-collapsed",h)}else b.append(M(' '));c.append(b);var x=p.bulkCheckboxAria||"Include in bulk actions",y=M(' '),_=M(' ').prop("checked",!!C.columnBulkSelection[u].ids[n.id]).attr("aria-label",x+": "+i).on("click",function(e){e.stopPropagation()}).on("change",function(e){e.stopPropagation(),z(u,n.id,M(this).prop("checked")),ce()});y.append(_),c.append(y);var k=M('
');if(0===s){var w=t.icon||n.icon,O=J(w,t.icon_type||n.icon_type);"fontawesome"===O&&w?k.append(M(' ')):"svg"!==O&&"image"!==O&&"custom"!==O||!w?w&&0===w.indexOf("dashicons-")?k.append(M(' ')):k.append(M(' ')):k.append(M(" ").attr("src",w).css({width:"20px",height:"20px",display:"inline-block",verticalAlign:"middle",objectFit:"contain",filter:"none"}))}n.custom&&k.append(M('custom '));t.label&&k.append(M('edit '));if(k.append(M(' ').text(i)),t.badge){var A=t.badge_bg||"#d63638";k.append(M(' ').text(t.badge).css({backgroundColor:A,color:"#fff",fontSize:"9px",padding:"1px 5px",borderRadius:"2px",marginLeft:"4px",whiteSpace:"nowrap"}))}m&&k.append(M('🔒 no access "));c.append(k),t.color_bg&&c.css("background-color",t.color_bg);t.color_text&&c.find(".members-am-item-label").css("color",t.color_text);t.color_icon&&(c.find(".dashicons").css("color",t.color_icon),c.find(".members-am-fa-icon i").css("color",t.color_icon));var S=M('
');return S.append(M(' ').text(o?"◯":"◉"),M(' ').text("↑"),M(' ').text("↓")),c.append(S),c.on("click",function(e){M(e.target).closest("button, .members-am-item-cb, .members-am-collapse-toggle").length||(C.selectedId=n.id,Oe())}),c}(a,e,r,s,i)),a.children&&a.children.length&&function(e,n){var r=R(n),a=P(e);C.tree.forEach(function(e){e&&e.id&&-1===e.id.indexOf("::")&&(a.overrides&&a.overrides[e.id]||{}).parent===n&&-1===r.indexOf(e.id)&&r.push(e.id)});var s=a.submenu_order&&a.submenu_order[n];if(!s||!s.length)return r.slice();var t=s.filter(function(e){return-1!==r.indexOf(e)});return r.forEach(function(e){-1===t.indexOf(e)&&t.push(e)}),t}(r,a.id).forEach(function(e){var n=function(e,n,r){var a=k(N(n,r));if(a)return a;if(-1===r.indexOf("::")){var s=P(e);if((s.overrides&&s.overrides[r]||{}).parent===n)return k(r)}return null}(r,a.id,e);n&&"__promote__"!==(s.overrides&&s.overrides[n.id]||{}).parent&&te(r,n,a.id,s,t,i+1)})}function ie(e,n){var s=(n||"").trim().toLowerCase(),r=e.children(".members-am-item");if(!s)return r.removeClass("members-am-filter-hidden"),void e.children(".members-am-sep").removeClass("members-am-filter-hidden");var i={};r.each(function(){var e=M(this),n=e.attr("data-id"),r=(e.find(".members-am-item-label").first().text()||"").toLowerCase(),a=(n||"").toLowerCase();i[n]=-1!==r.indexOf(s)||-1!==a.indexOf(s)});var o={};r.each(function(){var e=M(this).attr("data-id"),n=M(this).attr("data-menu-parent")||"";o[n]||(o[n]=[]),o[n].push(e)});var m={};function l(e){var n,r=i[e],a=o[e]||[],s=!1;for(n=0;n '),o=M(' ').attr("placeholder",s).attr("aria-label",t).val(a);i.append(o),e.find(".members-am-sidebar-head").first().after(i),o.on("input",function(){C.columnFilters[r]=M(this).val(),ie(n,M(this).val())}),ie(n,a)}function me(e,n){var t=0===String(n).indexOf("u:"),i=t?parseInt(n.replace(/^u:/,""),10):0,o=t?null:n,m=n,l=membersAdminMenus.i18n||{},r=M('
').attr("data-column-key",m),a=M('
');a.append(M(' ').text(l.bulkSelectVisible||"Select visible"),M(' ').text(l.bulkClearSelection||"Clear selection"));var s=M('
');s.append(M(' ').text(l.collapseAllMenus||"Collapse all"),M(' ').text(l.expandAllMenus||"Expand all"));var d=M(' ').attr("aria-label",l.bulkVisibilityLabel||"Menu visibility for this column");d.append(M(' ').text(l.bulkActionsPlaceholder||"Choose visibility…"));var c=M(" ").attr("label",l.bulkGroupWholeColumn||"Whole column");c.append(M(' ').text(l.bulkShowAllItems||"Show every menu item"),M(' ').text(l.bulkHideAllItems||"Hide every menu item"));var u=M(" ").attr("label",l.bulkGroupCheckedRows||"Checked rows");u.append(M(' ').text(l.bulkKeepOnlyCheckedVisible||"Keep only checked visible"),M(' ').text(l.bulkHideCheckedItems||"Hide checked items"),M(' ').text(l.bulkShowCheckedItems||"Show checked items")),d.append(c,u),r.append(a,s,d);var p=e.find(".members-am-col-filter").first();p.length?p.after(r):e.find(".members-am-sidebar-head").first().after(r),d.on("change",function(){var e=M(this).val();if(M(this).val(""),e)if(!("keep-only-checked"===e||"hide-checked"===e||"show-checked"===e)||B(m).length){if("keep-only-checked"===e){if(!window.confirm(l.bulkConfirmKeepOnlyChecked||"Hide all items except checked items and their parent menus?"))return}else if("hide-all"===e){if(!window.confirm(l.bulkConfirmHideAll||"Hide every menu item in this column?"))return}else if("hide-checked"===e&&!window.confirm(l.bulkConfirmHideChecked||"Hide the checked items (and their submenus where applicable)?"))return;var n,r,a,s;h(),t?"show-all"===e?P(i).hidden=[]:"hide-all"===e?(a=i,s=j(),P(a).hidden=s.slice()):"keep-only-checked"===e?function(e,r){var n=B(e);if(n.length){var a={};n.forEach(function(e){for(var n=e;n;)a[n]=!0,n=E(n,r)});var s=j(),t=P(r).hidden;t.length=0,s.forEach(function(e){a[e]||t.push(e)})}}(m,i):"hide-checked"===e?X(m,i):"show-checked"===e&&Y(m,i):"show-all"===e?I(o).hidden=[]:"hide-all"===e?(n=o,r=j(),I(n).hidden=r.slice()):"keep-only-checked"===e?function(e,r){var n=B(e);if(n.length){var a={};n.forEach(function(e){for(var n=e;n;)a[n]=!0,n=O(n,r)});var s=j(),t=I(r).hidden;t.length=0,s.forEach(function(e){a[e]||t.push(e)})}}(m,o):"hide-checked"===e?Q(m,o):"show-checked"===e&&q(m,o),Oe()}else f("warning",l.bulkSelectCheckedFirst||"Check one or more menu items first.")})}function le(e){return-1!==e.indexOf("::")?e.split("::").pop():e}function de(){M.fn.sortable&&M("#members-am-columns .members-am-sidebar-list").each(function(){var e=M(this);e.data("ui-sortable")&&e.sortable("destroy");var n=e.closest(".members-am-column"),r=n.data("role"),a=n.data("user");e.sortable({axis:"y",distance:6,items:"> .members-am-item, > .members-am-sep",cancel:".members-am-item-actions button, .members-am-item-cb, .members-am-item-cb-wrap, .members-am-collapse-toggle",placeholder:"members-am-sort-placeholder",forcePlaceholderSize:!0,tolerance:"pointer",start:function(){h()},update:function(){a?function(e,n){var s=[],t={};e.children().each(function(){var e=M(this);if(e.hasClass("members-am-sep")){var n=e.attr("data-sep-id");n&&s.push(n)}else if(e.hasClass("members-am-item")){var r=e.attr("data-id");if(r){var a=e.attr("data-menu-parent");void 0===a||""===a?s.push(r):(t[a]||(t[a]=[]),t[a].push(le(r)))}}});var r=P(n);r.order=s,r.submenu_order=t}(e,a):r&&function(e,n){var s=[],t={};e.children().each(function(){var e=M(this);if(e.hasClass("members-am-sep")){var n=e.attr("data-sep-id");n&&s.push(n)}else if(e.hasClass("members-am-item")){var r=e.attr("data-id");if(r){var a=e.attr("data-menu-parent");void 0===a||""===a?s.push(r):(t[a]||(t[a]=[]),t[a].push(le(r)))}}});var r=I(n);r.order=s,r.submenu_order=t}(e,r),ue()}})})}function ce(){var r=M("#members-am-columns"),a={};r.find(".members-am-column").each(function(){var e=M(this).data("role");if(e){var n=M(this).find(".members-am-sidebar-list");n.length&&(a[e]=n.scrollTop())}}),r.empty();var e=C.carouselPage*C.columnsPerPage;if(C.activeRoleSlugs.slice(e,e+C.columnsPerPage).forEach(function(e){var n=M('
');!function(r,e){e.empty();var n=M(''),a=(p().filter(function(e){return e.slug===r})[0]||{}).label||r;n.append(M('').text(a)),n.append(M(' ').append(M(' ').text("◀"),M(' ').text("▶"))),e.append(n);var s=M('');U(r).forEach(function(e){if(0!==e.indexOf("sep-")){var n=k(e);n&&se(r,n,null,s,0)}else s.append(M('
').attr("data-sep-id",e).text("—"))}),e.append(s),K(s,r),oe(e,s,r),me(e,r)}(e,n),r.append(n),a[e]&&n.find(".members-am-sidebar-list").scrollTop(a[e])}),C.previewUserId){var s=C.previewUserId,n=M('
'),t=M('');t.append(M(" ").text(C.previewUserLabel||"User #"+s)),t.append(M('× ').on("click",function(){C.previewUserId=null,C.previewUserLabel=null,C.previewUserRoles=[],Oe()})),n.append(t);var i=M(''),o=P(s);v(s).forEach(function(e){if(0!==e.indexOf("sep-")){var n=k(e);n&&te(s,n,null,o,i,0)}else i.append(M('
').attr("data-sep-id",e).text("——"))}),n.append(i),K(i,"u:"+s),oe(n,i,"u:"+s),me(n,"u:"+s),r.append(n)}if(C.syncScroll){var m=r.find(".members-am-sidebar-list"),l=!1;m.on("scroll",function(){if(!l){l=!0;var e=M(this).scrollTop();m.not(this).scrollTop(e),l=!1}})}!function(){var e=Math.max(1,Math.ceil(C.activeRoleSlugs.length/C.columnsPerPage)),n=(Math.min(C.carouselPage+1,e),C.carouselPage*C.columnsPerPage+1),r=Math.min((C.carouselPage+1)*C.columnsPerPage,C.activeRoleSlugs.length);M("#members-am-carousel-status").text(n+"–"+r+" "+membersAdminMenus.i18n.of+" "+C.activeRoleSlugs.length);for(var a=M("#members-am-carousel-dots").empty(),s=0;s ').toggleClass("is-active",s===C.carouselPage))}(),de()}function ue(){if(C.selectedId){M("#members-am-edit-panel").removeAttr("hidden");var e=k(C.selectedId),n=ee()||{};M("#members-am-edit-title").text(e?e.title:C.selectedId),M("#members-am-edit-label").val(n.label||e&&e.title||"");var r=y(C.selectedId);M("#members-am-edit-url-wrap").toggle(r),M("#members-am-edit-url").attr("placeholder","Override URL (leave empty for default)").val(r&&(n.url||e&&e.url)||"").data("default-url",e&&e.url||""),M("#members-am-icon-type").val(n.icon_type||"dashicon"),M("#members-am-icon-value").val(n.icon||e&&e.icon||"");var a=n.icon||e&&e.icon||"",s=J(a,n.icon_type||e&&e.icon_type||"");"image"!==s&&"custom"!==s&&"svg"!==s||!a?M("#members-am-icon-preview").hide():M("#members-am-icon-preview").show().attr("src",a),M("#members-am-color-bg").val(n.color_bg||""),M("#members-am-color-text").val(n.color_text||""),M("#members-am-color-icon").val(n.color_icon||""),M("#members-am-badge-text").val(n.badge||""),M("#members-am-badge-bg").val(n.badge_bg||""),M("#members-am-item-cap").attr("placeholder",e&&e.cap?e.cap+" (default)":"").val(C.settings.capabilities[C.selectedId]||"");var t=e&&e.custom;M("#members-am-remove-custom").toggle(!!t),M("#members-am-visibility-toggles").empty();var i=e&&e.cap||"read",o=[];if(p().forEach(function(e){"administrator"===e.slug&&!C.settings._meta.admin_editable||o.push(e)}),10<=o.length){var m=membersAdminMenus.i18n&&membersAdminMenus.i18n.filterRolesVisibility||"Filter roles…",l=membersAdminMenus.i18n&&membersAdminMenus.i18n.filterRolesVisibilityLabel||"Filter roles in this list",d=M('
'),c=M(' ').attr("placeholder",m).attr("aria-label",l);d.append(c),M("#members-am-visibility-toggles").append(d),c.on("input",function(){var s=(M(this).val()||"").trim().toLowerCase();M("#members-am-visibility-toggles .members-am-vis-row").each(function(){var e=M(this),n=(e.find("span").first().text()||"").toLowerCase(),r=String(e.find(".members-am-vis-cb").data("role")||"").toLowerCase(),a=!s||-1!==n.indexOf(s)||-1!==r.indexOf(s);e.toggleClass("members-am-vis-filter-hidden",!a)})})}o.forEach(function(e){var n=L(e.slug,C.selectedId),r=F(e.slug,i),a=M(' ').attr("data-role",e.slug).prop("checked",!n&&r);r||a.prop("disabled",!0);var s=M(' ').append(a,M(" ").text(e.label));r||(s.append(M(" ").text(" — no capability").css({color:"#999",fontStyle:"italic",marginLeft:"4px"})),s.css("opacity","0.5")),M("#members-am-visibility-toggles").append(s)}),M(".members-am-color").each(function(){M(this).data("wpWpColorPicker")&&M(this).wpColorPicker("destroy")}),M(".members-am-color").wpColorPicker({change:function(e,n){setTimeout(function(){pe()},20)},clear:function(){setTimeout(function(){pe()},20)}}),fe(),function(){var e=M(".members-am-demote-wrap"),r=M("#members-am-demote-parent"),n=M("#members-am-demote");if(!C.selectedId)return e.attr("hidden",!0);if(w(C.selectedId))return e.attr("hidden",!0);var a=Z()[0]||C.activeRoleSlugs[0];if(a&&A(a,C.selectedId))return e.attr("hidden",!0);e.removeAttr("hidden");var s=C.selectedId,t=membersAdminMenus.i18n&&membersAdminMenus.i18n.selectParentMenu||"";r.empty().append(M(" ").val("").text(t));var i=0;C.tree.forEach(function(e){if(e&&e.id&&e.id!==s){var n=e.title&&String(e.title).trim()?e.title:e.id;r.append(M(" ").val(e.id).text(n)),i++}});var o=0 ');"dashicons"===r?n.append(M(' ')):n.append(M(' ')),n.on("click",function(){M("#members-am-icon-value").val(e),M("#members-am-icon-type").val("dashicons"===r?"dashicon":"fontawesome"),pe()}),s.append(n)}})}function be(e,n){var r=C.activeRoleSlugs.indexOf(e);if(-1!==r){var a=r+n;if(!(a<0||a>=C.activeRoleSlugs.length)){h();var s=C.activeRoleSlugs[r];C.activeRoleSlugs[r]=C.activeRoleSlugs[a],C.activeRoleSlugs[a]=s,l(),Oe()}}}function he(e,n,r){var a,s,t,i=I(e).overrides[n]||{},o=null;if("__promote__"===i.parent?o=null:-1!==n.indexOf("::")?o=w(n):i.parent&&"__promote__"!==i.parent&&(o=i.parent),o){var m=I(e).submenu_order;m[o]||(m[o]=(a=e,t=R(s=o),C.tree.forEach(function(e){e&&e.id&&-1===e.id.indexOf("::")&&(I(a).overrides[e.id]||{}).parent===s&&-1===t.indexOf(e.id)&&t.push(e.id)}),t));var l=m[o],d=-1!==n.indexOf("::")?n.split("::").pop():n;if(-1===(u=l.indexOf(d)))return;if((p=u+r)<0||p>=l.length)return;h();var c=l[u];l[u]=l[p],l[p]=c}else{I(e).order&&I(e).order.length||(I(e).order=S());var u,p,f=I(e).order;if(-1===(u=f.indexOf(n)))return;if((p=u+r)<0||p>=f.length)return;h();var b=f[u];f[u]=f[p],f[p]=b}Oe()}function ve(){var e=Z();if(e.length){h();var a="sep-"+Date.now();e.forEach(function(e){I(e).order&&I(e).order.length||(I(e).order=S());var n=I(e).order,r=C.selectedId?n.indexOf(C.selectedId):n.length-1;r<0&&(r=n.length),n.splice(r+1,0,a)}),Oe()}}function ge(e){var n=M("#members-am-toolbar-loading");n.removeAttr("hidden"),n.find(".spinner").addClass("is-active"),n.find(".members-am-loading-text").text(e||""),M("#members-am-save, #members-am-reset, #members-am-import, #members-am-copy-apply, #members-am-undo").prop("disabled",!0)}function xe(){var e=M("#members-am-toolbar-loading");e.attr("hidden",!0),e.find(".spinner").removeClass("is-active"),e.find(".members-am-loading-text").text(""),M("#members-am-save, #members-am-reset, #members-am-import, #members-am-copy-apply").prop("disabled",!1),u()}function ye(e){ge(e||membersAdminMenus.i18n&&membersAdminMenus.i18n.saving||"Saving…");var s=membersAdminMenus.i18n&&membersAdminMenus.i18n.networkError||"Could not save settings. Check your connection and try again.";M.ajax({url:membersAdminMenus.ajaxUrl,type:"POST",dataType:"json",timeout:6e4,data:{action:"members_admin_menus_save",nonce:membersAdminMenus.nonce,settings:JSON.stringify(C.settings)}}).done(function(e){if(e&&void 0!==e.success){if(e.success)return a=t(),c=null,u(),void f("success",e.data&&e.data.message||membersAdminMenus.i18n&&membersAdminMenus.i18n.saved||"Settings saved.");f("error",e.data&&e.data.message?e.data.message:"Error")}else f("error",s)}).fail(function(e,n){if("abort"!==n){var r=s;if(e&&e.responseJSON&&void 0!==e.responseJSON.data){var a=e.responseJSON.data;"string"==typeof a&&a?r=a:a&&"string"==typeof a.message&&a.message&&(r=a.message)}f("error",r)}}).always(function(){xe()})}function _e(e,n){if(confirm("role"===e&&n?"Reset all settings for this role? This cannot be undone.":"Reset ALL menu settings for every role? This cannot be undone.")){ge(membersAdminMenus.i18n&&membersAdminMenus.i18n.resetting||"Resetting…");var r=!1;M.post(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_reset",nonce:membersAdminMenus.nonce,scope:e||"all",role:n||""}).done(function(e){if(e.success)return o("success",e.data&&e.data.message||membersAdminMenus.i18n&&membersAdminMenus.i18n.resetComplete||"Reset complete."),C.allowUnload=!0,r=!0,void location.reload();f("error",e.data&&e.data.message?e.data.message:membersAdminMenus.i18n&&membersAdminMenus.i18n.resetFailed||"Reset failed.")}).fail(function(){f("error",membersAdminMenus.i18n&&membersAdminMenus.i18n.resetNetworkError||membersAdminMenus.i18n.networkError||"Could not reset settings. Check your connection and try again.")}).always(function(){r||xe()})}}function ke(e){M.getJSON(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_user_search",nonce:membersAdminMenus.nonce,term:e},function(e){e.success&&e.data&&e.data.length?function(e){M(".members-am-user-suggestions").remove();var n=M("#members-am-user-search").parent();n.css("position","relative");var r=M('
');e.forEach(function(e){r.append(M('
').text(e.label).data("userId",e.id).on("click",function(){!function(e,n,r){C.previewUserId=e,C.previewUserLabel=n||"User #"+e,C.previewUserRoles=r||[],b(),C.settings.users[e]||(C.settings.users[e]={});Oe()}(e.id,e.label,e.roles),M(".members-am-user-suggestions").remove(),M("#members-am-user-search").val("")}))}),n.append(r),setTimeout(function(){M(document).one("click",function(){M(".members-am-user-suggestions").remove()})},0)}(e.data):M(".members-am-user-suggestions").remove()})}function we(){M(document).on("click","#members-am-role-chips .members-am-chip",function(){var e=M(this).data("role"),n=C.activeRoleSlugs.indexOf(e);-1===n?C.activeRoleSlugs.push(e):1 ');if(t.append(M('
').text("Reset Settings")),a&&s){var i=M(' ');i.append(M(' ')),i.append(M(' ').append(M(" ").text("Reset "+s),M(" ").text("Clear all menu settings for this role only"))),i.on("click",function(){M(".members-am-reset-dropdown").remove(),_e("role",a)}),t.append(i)}var o=M(' ');o.append(M(' ')),o.append(M(' ').append(M(" ").text("Reset all roles"),M(" ").text("Clear all menu settings for every role"))),o.on("click",function(){M(".members-am-reset-dropdown").remove(),_e("all")}),t.append(o),n.parent().css("position","relative"),t.insertAfter(n),M(document).one("click",function(){M(".members-am-reset-dropdown").remove()})}),M("#members-am-export").on("click",function(e){e.preventDefault(),window.location.href=membersAdminMenus.exportUrl}),M("#members-am-import").on("click",function(){M("#members-am-import-file").trigger("click")}),M("#members-am-import-file").on("change",function(){var e=this.files&&this.files[0];e&&function(e){ge(membersAdminMenus.i18n&&membersAdminMenus.i18n.importing||"Importing…");var r=new FileReader;r.onerror=function(){xe(),f("error",membersAdminMenus.i18n&&membersAdminMenus.i18n.readFileFailed||"Could not read the file.")},r.onload=function(){try{var e=JSON.parse(r.result),n=!1;M.post(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_import",nonce:membersAdminMenus.nonce,settings:JSON.stringify(e)}).done(function(e){if(e.success)return o("success",e.data&&e.data.message||membersAdminMenus.i18n&&membersAdminMenus.i18n.imported||"Settings imported."),C.allowUnload=!0,n=!0,void location.reload();f("error",e.data&&e.data.message?e.data.message:"Error")}).fail(function(){f("error",membersAdminMenus.i18n&&membersAdminMenus.i18n.importNetworkError||membersAdminMenus.i18n.networkError||"Could not import settings. Check your connection and try again.")}).always(function(){n||xe()})}catch(e){xe(),f("error",membersAdminMenus.i18n&&membersAdminMenus.i18n.invalidJson||"Invalid JSON.")}},r.readAsText(e)}(e)}),M("#members-am-copy-apply").on("click",function(){var r=M("#members-am-copy-from").val(),n=M("#members-am-copy-to").val();if(r&&n)if(r!==n){var a="",s="";if(p().forEach(function(e){e.slug===r&&(a=e.label),e.slug===n&&(s=e.label)}),confirm('Copy menu settings from "'+a+'" to "'+s+'"?\nThis will overwrite "'+s+"\" menu configuration.\n\nNote: This copies menu order, hidden items, labels, icons, and colors.\nIt does NOT change the role's capabilities (items marked with a lock icon).")){h();var e=I(r),t={hidden:e.hidden?e.hidden.slice():[],order:[],submenu_order:{},overrides:{}},i=U(r);t.order=i.slice(),C.tree.forEach(function(e){if(e.children&&e.children.length){var n=T(r,e.id);n&&n.length&&(t.submenu_order[e.id]=n.slice())}}),e.overrides&&"object"==typeof e.overrides&&(t.overrides=JSON.parse(JSON.stringify(e.overrides))),C.settings.roles[n]=t,-1===C.activeRoleSlugs.indexOf(n)&&(C.activeRoleSlugs.push(n),l(),ae()),Oe(),ye(membersAdminMenus.i18n&&membersAdminMenus.i18n.copying||"Copying…")}}else f("error",membersAdminMenus.i18n&&membersAdminMenus.i18n.rolesMustDiffer||"Source and target roles must be different.")}),M("#members-am-admin-editable").on("change",function(){var e=!0;M(this).is(":checked")&&(e=window.confirm(membersAdminMenus.i18n.adminEditableWarn)),e?(C.settings._meta.admin_editable=M(this).is(":checked"),re(),ae(),l(),Oe()):M(this).prop("checked",!1)}),M("#members-am-sync-scroll").prop("checked",!1!==C.syncScroll),M("#members-am-sync-scroll").on("change",function(){C.syncScroll=M(this).is(":checked");try{localStorage.setItem("members_am_sync_scroll",C.syncScroll?"1":"0")}catch(e){}ce()});var s="members_am_more_tools";function e(e){var n=M("#members-am-toolbar-extra"),r=M("#members-am-more-tools");if(n.length&&r.length){n.prop("hidden",!e),r.attr("aria-expanded",e?"true":"false").toggleClass("is-open",!!e);var a=membersAdminMenus.i18n||{};e&&a.moreToolsHideAria?r.attr("aria-label",a.moreToolsHideAria):!e&&a.moreToolsShowAria?r.attr("aria-label",a.moreToolsShowAria):r.removeAttr("aria-label");try{sessionStorage.setItem(s,e?"1":"0")}catch(e){}}}var n,r=!1;try{r="1"===sessionStorage.getItem(s)}catch(e){}e(r),M("#members-am-more-tools").on("click",function(){e(M("#members-am-toolbar-extra").prop("hidden"))}),M("#members-am-add-item").on("click",function(){h();var e="c"+Date.now();C.settings.custom_items.push({id:e,label:"Custom link",url:window.location.origin+"/wp-admin/",icon_type:"dashicon",icon:"dashicons-admin-generic",parent:"",position:99,cap:"read"}),C.tree=_(),C.selectedId=x({id:e}),Oe(),ue()}),M("#members-am-remove-custom").on("click",function(){var n=k(C.selectedId);n&&n.customId&&(h(),C.settings.custom_items=(C.settings.custom_items||[]).filter(function(e){return e.id!==n.customId}),C.selectedId=null,C.tree=_(),Oe(),M("#members-am-edit-panel").attr("hidden",!0))}),M("#members-am-edit-close").on("click",function(){C.selectedId=null,M("#members-am-edit-panel").attr("hidden",!0),Oe()}),M("#members-am-edit-target-role").on("change",ue),M("#members-am-edit-label, #members-am-edit-url, #members-am-icon-value, #members-am-badge-text").on("input",function(){pe()}),M("#members-am-item-cap").on("input",function(){pe()}),M(".members-am-icon-tabs .button").on("click",function(){M(".members-am-icon-tabs .button").removeClass("is-active"),M(this).addClass("is-active"),C.iconTab="fontawesome"===M(this).data("tab")?"fontawesome":"upload"===M(this).data("tab")?"upload":"dashicons",fe()}),M("#members-am-icon-search").on("input",fe),M("#members-am-media-upload").on("click",function(e){e.preventDefault(),C.mediaFrame||(C.mediaFrame=wp.media({title:"Choose menu icon",button:{text:"Use as icon"},multiple:!1,library:{type:"image"}}),C.mediaFrame.on("select",function(){var e=C.mediaFrame.state().get("selection").first().toJSON(),n=e.url||"";e.sizes&&(e.sizes.thumbnail?n=e.sizes.thumbnail.url:e.sizes.medium&&(n=e.sizes.medium.url)),M("#members-am-icon-type").val("custom"),M("#members-am-icon-value").val(n),pe()})),C.mediaFrame.open()}),M(document).on("change",".members-am-vis-cb",function(){h();var e=M(this).data("role");if(M(this).is(":checked")){var n=I(e).hidden,r=n.indexOf(C.selectedId);-1!==r&&n.splice(r,1)}else-1===I(e).hidden.indexOf(C.selectedId)&&I(e).hidden.push(C.selectedId);Oe()}),M("#members-am-add-sep").on("click",ve),M("#members-am-promote").on("click",function(){if(C.selectedId){h();var s=C.selectedId,e=ee()||{};if(-1===s.indexOf("::")&&e.parent&&"__promote__"!==e.parent){var t=e.parent,n=$();if(n){var r=P(n);if(r.overrides[s]&&delete r.overrides[s].parent,r.submenu_order&&r.submenu_order[t]){var a=r.submenu_order[t].indexOf(s);-1!==a&&r.submenu_order[t].splice(a,1)}if(r.order.length||(r.order=S()),-1===r.order.indexOf(s)){var i=r.order.indexOf(t);-1!==i?r.order.splice(i+1,0,s):r.order.push(s)}}else Z().forEach(function(e){var n=I(e);if(n.overrides[s]&&delete n.overrides[s].parent,n.submenu_order&&n.submenu_order[t]){var r=n.submenu_order[t].indexOf(s);-1!==r&&n.submenu_order[t].splice(r,1)}if(n.order&&n.order.length||(n.order=S()),-1===n.order.indexOf(s)){var a=n.order.indexOf(t);-1!==a?n.order.splice(a+1,0,s):n.order.push(s)}});return pe(),void ue()}ne("parent","__promote__");var o=w(s);Z().forEach(function(e){var n=I(e);if(n.order&&n.order.length||(n.order=S()),-1===n.order.indexOf(s))if(o){var r=n.order.indexOf(o);-1!==r?n.order.splice(r+1,0,s):n.order.push(s)}else n.order.push(s)}),pe(),ue()}}),M("#members-am-demote").on("click",function(){var e=M("#members-am-demote-parent").val();e?(h(),ne("parent",e),pe(),ue()):f("warning",membersAdminMenus.i18n&&membersAdminMenus.i18n.selectParentFirst||"Please choose a parent menu from the list.")}),M("#members-am-user-search").on("input",function(){var e=M(this).val();clearTimeout(n),n=setTimeout(function(){1 ").val("__all__").text("All roles")),C.activeRoleSlugs.forEach(function(n){var e=(p().filter(function(e){return e.slug===n})[0]||{}).label||n;r.append(M(" ").val(n).text(e))}),C.previewUserId&&r.append(M(" ").val("__user__"+C.previewUserId).text(C.previewUserLabel||"User #"+C.previewUserId)),C.selectedId&&ue()}M(function(){var n,r,e;!function(){try{var e=sessionStorage.getItem(i);if(!e)return;sessionStorage.removeItem(i);var n=JSON.parse(e);n&&n.message&&f(n.type,n.message)}catch(e){}}(),b(),C.tree=_(),re(),M("#members-am-admin-editable").prop("checked",!!C.settings._meta.admin_editable),n=M("#members-am-copy-from").empty(),r=M("#members-am-copy-to").empty(),(e=p()).forEach(function(e){n.append(M(" ").val(e.slug).text(e.label)),r.append(M(" ").val(e.slug).text(e.label))}),1
Date: Thu, 23 Apr 2026 13:56:00 +0200
Subject: [PATCH 35/73] style(admin): add padding to header elements for
improved spacing in admin interface
---
css/admin.css | 1 +
css/admin.min.css | 2 +-
2 files changed, 2 insertions(+), 1 deletion(-)
diff --git a/css/admin.css b/css/admin.css
index 64de82f..43a0a8e 100644
--- a/css/admin.css
+++ b/css/admin.css
@@ -1198,6 +1198,7 @@
font-size: 18px;
line-height: 1;
opacity: 0.88;
+ padding-top: 6px;
transition: transform 0.15s ease;
}
diff --git a/css/admin.min.css b/css/admin.min.css
index 7d2b1f1..4ea3de6 100644
--- a/css/admin.min.css
+++ b/css/admin.min.css
@@ -1 +1 @@
-#members-cp h2.hndle,#members-cp-side h2.hndle{border-bottom:none !important;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}#members-cp h2.hndle:before,#members-cp-side h2.hndle:before{content:url("data:image/svg+xml,%3Csvg width='15px' aria-hidden='true' focusable='false' data-prefix='fas' data-icon='users-cog' class='svg-inline--fa fa-users-cog fa-w-20' role='img' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 640 512'%3E%3Cpath fill='currentColor' d='M610.5 341.3c2.6-14.1 2.6-28.5 0-42.6l25.8-14.9c3-1.7 4.3-5.2 3.3-8.5-6.7-21.6-18.2-41.2-33.2-57.4-2.3-2.5-6-3.1-9-1.4l-25.8 14.9c-10.9-9.3-23.4-16.5-36.9-21.3v-29.8c0-3.4-2.4-6.4-5.7-7.1-22.3-5-45-4.8-66.2 0-3.3.7-5.7 3.7-5.7 7.1v29.8c-13.5 4.8-26 12-36.9 21.3l-25.8-14.9c-2.9-1.7-6.7-1.1-9 1.4-15 16.2-26.5 35.8-33.2 57.4-1 3.3.4 6.8 3.3 8.5l25.8 14.9c-2.6 14.1-2.6 28.5 0 42.6l-25.8 14.9c-3 1.7-4.3 5.2-3.3 8.5 6.7 21.6 18.2 41.1 33.2 57.4 2.3 2.5 6 3.1 9 1.4l25.8-14.9c10.9 9.3 23.4 16.5 36.9 21.3v29.8c0 3.4 2.4 6.4 5.7 7.1 22.3 5 45 4.8 66.2 0 3.3-.7 5.7-3.7 5.7-7.1v-29.8c13.5-4.8 26-12 36.9-21.3l25.8 14.9c2.9 1.7 6.7 1.1 9-1.4 15-16.2 26.5-35.8 33.2-57.4 1-3.3-.4-6.8-3.3-8.5l-25.8-14.9zM496 368.5c-26.8 0-48.5-21.8-48.5-48.5s21.8-48.5 48.5-48.5 48.5 21.8 48.5 48.5-21.7 48.5-48.5 48.5zM96 224c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm224 32c1.9 0 3.7-.5 5.6-.6 8.3-21.7 20.5-42.1 36.3-59.2 7.4-8 17.9-12.6 28.9-12.6 6.9 0 13.7 1.8 19.6 5.3l7.9 4.6c.8-.5 1.6-.9 2.4-1.4 7-14.6 11.2-30.8 11.2-48 0-61.9-50.1-112-112-112S208 82.1 208 144c0 61.9 50.1 112 112 112zm105.2 194.5c-2.3-1.2-4.6-2.6-6.8-3.9-8.2 4.8-15.3 9.8-27.5 9.8-10.9 0-21.4-4.6-28.9-12.6-18.3-19.8-32.3-43.9-40.2-69.6-10.7-34.5 24.9-49.7 25.8-50.3-.1-2.6-.1-5.2 0-7.8l-7.9-4.6c-3.8-2.2-7-5-9.8-8.1-3.3.2-6.5.6-9.8.6-24.6 0-47.6-6-68.5-16h-8.3C179.6 288 128 339.6 128 403.2V432c0 26.5 21.5 48 48 48h255.4c-3.7-6-6.2-12.8-6.2-20.3v-9.2zM173.1 274.6C161.5 263.1 145.6 256 128 256H64c-35.3 0-64 28.7-64 64v32c0 17.7 14.3 32 32 32h65.9c6.3-47.4 34.9-87.3 75.2-109.4z'%3E%3C/path%3E%3C/svg%3E");margin-right:5px}#members-cp-side .postbox-header{border-bottom:none !important}#members-cp-side .handle-actions .handle-order-higher,#members-cp-side .handle-actions .handle-order-lower{display:none}#members-cp-side .handle-actions .handlediv{position:absolute;right:5px}.members-upgrade-header{text-align:center;padding:5px}.members-upgrade-header a{color:#f59431}.memberpress-paid-memberships{background-color:#f5f5f5;padding:50px 10px;text-align:center}.memberpress-paid-memberships a{background-color:#0e4598;display:inline-block;padding:10px 20px;border-radius:300px;color:#fff;text-decoration:none;margin-top:20px}#members-cp-side .members-tabs{position:relative}#members-cp-side .members-tab-nav{background-color:transparent;margin-bottom:20px;border-right:none !important}#members-cp-side .members-tab-nav .members-tab-title{width:33.333%;height:50px;border-right:none !important}#members-cp-side .members-tab-nav .members-tab-title a{border:0}#members-cp-side .members-tab-content h3{font-weight:bold;font-size:15px;margin-top:0;color:#000;margin-bottom:10px}#members-cp-side .members-tab-content .memberpress-paid-memberships{text-align:left;padding:20px}#members-cp-side .members-tab-content .memberpress-paid-memberships a{display:block;text-align:center}#members-cp-side .members-tabs .members-tab-nav li a,#members-cp-side .members-tabs .members-tab-nav li[aria-selected="false"] a i{color:#555}#members-cp-side .members-tabs .members-tab-nav li a svg,#members-cp-side .members-tabs .members-tab-nav li[aria-selected="false"] a svg{fill:#555}#members-cp-side .members-tabs .members-tab-nav li[aria-selected="true"] a{background-color:transparent;border-bottom:2px solid #3582ae}#members-cp-side .members-tabs .members-tab-nav li[aria-selected="true"] a i{color:#3582ae}#members-cp-side .members-tabs .members-tab-nav li[aria-selected="true"] a svg{fill:#3582ae}.members-tab-title svg,.members-tab-title[aria-selected="false"] svg{fill:#0073aa}.members-tab-title[aria-selected="true"] svg{fill:#555}#wpcontent #members-admin-header{margin-left:-20px;padding:0;padding-left:22px;background-color:#f9f9f9;background-repeat:repeat;background-size:1200px 75px;min-height:36px;position:relative}#wpcontent #members-admin-header img.members-logo{height:90px}.members-upgrade-header #close-members-upgrade-header{position:absolute;right:20px;top:3px}.members-upgrade-header #close-members-upgrade-header:hover{cursor:pointer}.memberpress-welcome-panel.welcome-panel{margin-top:0;padding:40px 20px;background:#fff}.memberpress-welcome-panel.welcome-panel:before{background:0}.memberpress-welcome-panel.welcome-panel .about-description{margin:20px 0}.memberpress-welcome-panel.welcome-panel-content{margin:0}.memberpress-welcome-panel.welcome-panel-content .mp-logo-wrap>a{display:block}@media screen and (min-width:870px){.members_page_members-settings .members-short-p{max-width:612px;margin-left:auto;margin-right:auto}.members_page_members-settings .welcome-panel-content{text-align:center}}.members_page_members-settings .welcome-panel .button.button-hero{margin-left:auto;margin-right:auto}.members_page_members-settings .members-svg-wrap{display:inline-block;margin:0 auto 20px}@media screen and (max-width:870px){.members_page_members-settings .welcome-panel{padding:20px}.members_page_members-settings .members-svg-wrap{float:left;margin-right:28px}.admin_page_members-settings.rtl .members-svg-wrap{float:right;margin-right:0;margin-left:28px}}.members_page_members-settings .members-svg-link{display:table-cell;text-align:center;width:128px;height:128px;background:#363b3f;color:#fff;padding:24px 16px 16px;border-radius:50%;-webkit-box-sizing:border-box;box-sizing:border-box;border:4px solid #fff;-webkit-box-shadow:0 0 0 4px #363b3f;box-shadow:0 0 0 4px #363b3f}.members_page_members-settings .members-svg-link svg{max-width:84px;max-height:64px;width:auto;height:auto}.members-addons{display:grid;grid-template-columns:1fr 1fr;grid-row-gap:20px;grid-column-gap:20px}.members-addons .plugin-card{margin:0}.members-addons .plugin-card-top{width:100%}.members-addon{width:100%;position:relative;float:none;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.members-addon .desc{margin-bottom:80px}.addon-activate{text-align:center;border:1px solid #ddd;border-radius:3px;padding:5px 10px 10px;display:inline-block;width:100px;position:absolute;right:20px;bottom:20px}.activate-toggle:hover{cursor:pointer}.activate-toggle svg{max-width:20px;position:relative;top:5px}.activate-toggle svg{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.activate-toggle svg.active{-webkit-transform:rotate(0);transform:rotate(0)}.activate-toggle svg path{fill:#ccc}.activate-toggle svg.active path{fill:#8cbd5a}.activate-toggle.processing{cursor:not-allowed;pointer-events:none;opacity:.5}.activate-toggle .action-label{display:inline-block;width:50px;text-align:left}.mepr_dummy_txns{-webkit-filter:blur(3px);filter:blur(3px);position:absolute;top:0;left:0;width:100%;z-index:5;pointer-events:none}.mepr_dummy_txns::after{background-color:rgba(0,0,0,.2);position:absolute;top:0;left:0;width:100%;height:100%;z-index:6}.mepr-upgrade-table{position:relative}.mepr-upgrade-table .mepr-upgrade{position:relative;top:100px;z-index:10;background:rgba(0,0,0,.2);width:100%;height:100%;max-width:600px;margin:0 auto;-webkit-box-shadow:0 0 30px #ccc;box-shadow:0 0 30px #ccc}.mepr-upgrade-content{background-color:#fff;padding:20px;text-align:center}.mepr-upgrade-content h2{font-size:24px}.mepr-upgrade-content h4{font-size:18px}.mepr-upgrade-content .features{display:grid;grid-template-columns:1fr 1fr;grid-column-gap:30px;grid-row-gap:10px;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;text-align:left;padding:10px}.features li:before{content:"\f147";font-family:dashicons;color:green;font-size:20px;position:relative;top:4px;margin-right:10px}.mepr-upgrade-cta{text-align:center;background-color:#f2f2f2;padding:20px}.mepr-upgrade-cta .mepr-cta-button{display:block;max-width:300px;margin:0 auto 20px;background-color:#fd9c27;color:#fff;padding:15px;font-size:18px;font-weight:bold;text-decoration:none;border-radius:300px}.members-plugin-card.plugin-card:nth-child(even){margin-right:inherit}.members-plugin-card.plugin-card:nth-child(odd){clear:none;margin-left:inherit}.members-plugin-card.plugin-card .plugin-card-top{min-height:0;padding:30px 20px}.members-plugin-card.plugin-card .plugin-icon{top:30px}.members-plugin-card.plugin-card .plugin-card-bottom .column-status{font-weight:bold}.members-plugin-card.plugin-card .plugin-card-bottom .column-status .active{color:#8cbd5a}.members-plugin-card.plugin-card .plugin-card-bottom .column-status .inactive{color:red}.members-plugin-card.plugin-card .plugin-icon{width:64px;height:auto}.plugin-icon-small{width:32px;height:auto}.members-plugin-card.plugin-card .name,.members-plugin-card.plugin-card .desc{margin-right:0;margin-left:84px}.members-addons .plugin-card .name,.members-addons .plugin-card .desc p{margin-right:0}@media screen and (max-width:1100px){.members-addons{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}}@media screen and (max-width:600px){.members_page_members-settings .members-svg-link{width:64px;height:64px}.members_page_members-settings .members-svg-link svg{position:absolute;top:14px;left:15px;max-width:30px;max-height:30px}.members_page_members-settings .plugin-card-members-edd-integration .members-svg-link svg,.members_page_members-settings .plugin-card-members-acf-integration .members-svg-link svg,.members_page_members-settings .plugin-card-members-givewp-integration .members-svg-link svg,.members_page_members-settings .plugin-card-members-meta-box-integration .members-svg-link svg,.members_page_members-settings .plugin-card-members-woocommerce-integration .members-svg-link svg{top:10px;left:8px;max-width:40px;max-height:40px}.members_page_members-settings .plugin-card-members-block-permissions .members-svg-link svg,.members_page_members-settings .plugin-card-members-role-hierarchy .members-svg-link svg{left:14px}.members-addons .plugin-card .desc>p,.members-addons .plugin-card .name{margin-left:84px}}.memberpress-about .welcome-panel-column-container{display:-webkit-box;display:-ms-flexbox;display:flex}.memberpress-about .mp-logo{max-width:256px;margin:50px}.members-about-addons{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-column-gap:20px}.members-about-addons .members-plugin-card{margin:0;width:100%}.members-about-addons .members-plugin-card .name h3 a{text-decoration:none}.members-about-addons .members-plugin-card .plugin-card-bottom{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}@media only screen and (max-width:1099px){.members-about-addons{grid-template-columns:1fr;grid-row-gap:20px}}@media screen and (min-width:1100px) and (max-width:1600px){.members-about-addons .members-plugin-card{float:none;width:auto;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.members-plugin-card.plugin-card .desc{margin-left:0;margin-top:50px}.members-plugin-card.plugin-card .desc p{margin-left:0;margin-right:0}.members-plugin-card.plugin-card .plugin-card-bottom .column-status{float:none}.members-plugin-card.plugin-card .plugin-card-bottom .column-updated{float:none;width:auto}}@media screen and (max-width:1200px){.welcome-panel .welcome-panel-column-container{-webkit-box-orient:vertical;-webkit-box-direction:reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse;gap:0;padding:0}.memberpress-about .mp-logo{margin:0 0 20px}}.members-plugin-card.plugin-card .desc p{margin-left:0;margin-right:0}@media only screen and (min-width:783px){.members_page_roles .column-users,.members_page_roles .column-granted_caps,.members_page_roles .column-denied_caps{width:100px;text-align:center}}.members-title-div #titlewrap input{padding:0 8px;font-size:1.7em;line-height:normal;height:1.7em;width:100%;outline:0;margin:0 0 3px;background-color:#fff}.members-title-div input[name="role"]{font-size:13px;height:22px;margin:0;width:16em}#tabcapsdiv{margin-top:1em}#tabcapsdiv>.hndle{padding:10px;border-bottom:1px solid #eee}#tabcapsdiv .inside,#members-cp .inside{margin:0;padding:0}.members-cap-tabs,.members-tabs{overflow:hidden;background:#fff;background:-webkit-gradient(linear,left top,right top,from(#fafafa),color-stop(20%,#fafafa),color-stop(20%,#fff),to(#fff));background:linear-gradient(90deg,#fafafa 0,#fafafa 20%,#fff 20%,#fff 100%)}@media only screen and (max-width:782px){.members-cap-tabs,.members-tabs{background:linear-gradient(90deg,#fafafa 0,#fafafa 48px,#fff 48px,#fff 100%)}}.members-cap-tabs .members-tab-nav,.members-tabs .members-tab-nav{position:relative;float:left;list-style:none;width:20%;line-height:1em;margin:0 0 -1px 0;padding:0;background-color:#fafafa;border-right:1px solid #eee;-webkit-box-sizing:border-box;box-sizing:border-box}.members-cap-tabs .members-tab-nav li,.members-tabs .members-tab-nav li{display:block;position:relative;margin:0;padding:0;line-height:20px}.members-cap-tabs .members-tab-nav li a,.members-tabs .members-tab-nav li a{display:block;margin:0;padding:10px;line-height:20px !important;text-decoration:none;border-bottom:1px solid #eee;-webkit-box-shadow:none;box-shadow:none}.members-cap-tabs .members-tab-nav li a .dashicons,.members-tabs .members-tab-nav li a .dashicons{line-height:20px;margin-right:3px}.members-cap-tabs .members-tab-nav li[aria-selected="true"] a,.members-tabs .members-tab-nav li[aria-selected="true"] a{position:relative;font-weight:bold;color:#555;background-color:#e0e0e0}@media only screen and (max-width:782px){.members-cap-tabs .members-tab-nav,.members-tabs .members-tab-nav{width:48px}.members-cap-tabs .members-tab-nav li a .dashicons,.members-tabs .members-tab-nav li a .dashicons{width:24px;height:24px;font-size:24px;line-height:24px}.members-tab-nav li .dashicons::before,.members-tab-nav li .dashicons::before{width:24px;height:24px}.members-tab-nav li .label{overflow:hidden;position:absolute;top:-1000em;left:-1000em;width:1px;height:1px}}.members-cap-tabs .members-tab-wrap,.members-tabs .members-tab-wrap{float:left;width:80%;margin-left:-1px}@media only screen and (max-width:782px){.members-cap-tabs .members-tab-wrap,.members-tabs .members-tab-wrap{width:calc(100% - 48px)}}#members-cp .members-tab-content{padding:10px;border-left:1px solid #e5e5e5}.members-roles-select th,.members-roles-select td{width:190px;overflow:hidden}.members-roles-select .check-all-th{text-align:center}.members-roles-select .check-all-th label{padding-left:5px}@media only screen and (min-width:850px){#side-sortables .members-tabs{background:#fff}#side-sortables .members-tabs .members-tab-wrap{width:100%}#side-sortables .members-tabs .members-tab-nav{display:table;width:100%}#side-sortables .members-tabs .members-tab-nav li{display:table-cell;text-align:center;border-right:1px solid #eee}#side-sortables .members-tabs .members-tab-nav li:last-of-type{border-right:0}#side-sortables .members-tabs .members-tab-nav li a{padding:10px 0}#side-sortables .members-tabs .members-tab-nav .dashicons{width:24px;height:24px;font-size:24px;line-height:24px}#side-sortables .members-tabs .members-tab-nav .dashicons::before{width:24px;height:24px}#side-sortables .members-tabs .members-tab-nav .label{overflow:hidden;position:absolute;top:-1000em;left:-1000em;width:1px;height:1px}}.members-tabs .members-tabs-label{display:block !important;font-weight:bold;display:inline-block;margin-bottom:4px}.members-tabs .butterbean-control-checkbox .members-tabs-label{display:inline !important}.members-tabs .members-tabs-description{display:block;font-style:italic;margin-top:4px}.members-tabs .members-tabs-label+.members-tabs-description{margin-top:0;margin-bottom:4px}#tabcapsdiv table{border-right:0;border-top:0;border-bottom:0}#tabcapsdiv table td,#tabcapsdiv table th{padding:10px;padding-bottom:10px;border-bottom:1px solid #eee;font-size:13px;line-height:20px}#tabcapsdiv table td{padding:9px}#tabcapsdiv tbody tr:last-of-type td{border-bottom:0}#tabcapsdiv tfoot th{border-color:#eee}@media only screen and (max-width:782px){#tabcapsdiv table td,#tabcapsdiv table th{line-height:24px}}.members-roles-select .column-grant,.members-roles-select .column-deny{width:70px !important;text-align:left;display:table-cell !important;clear:none !important}.members-roles-select thead th,.members-roles-select tfoot th{padding:9px !important}.members-roles-select .column-grant input,.members-roles-select .column-deny input{margin:0 5px 0 0;vertical-align:middle}.members-roles-select tbody tr:nth-child(even){background:#f2f2f2}.members-cap-tabs button{display:inline;margin:-4px;line-height:inherit;padding:4px 8px;border:1px solid transparent;background:transparent;border-radius:0;outline:0;-webkit-transition:all .25s ease-out;transition:all .25s ease-out}.members-cap-tabs button:hover,.members-cap-tabs button:focus{border-color:#eee;background:#fafafa;cursor:pointer}.members-cap-tabs button:active{color:#0073aa;border-color:#0073aa}.members-cap-tabs button+.dashicons{display:none;margin-top:1px;margin-bottom:-1px;line-height:inherit}.members-cap-tabs button:hover+.dashicons,.members-cap-tabs button:focus+.dashicons{display:inline-block}.members-tab-content .members-highlight{background-color:rgba(0,115,170,0.05)}.members-tab-content tbody{-webkit-transition:all 2s ease-in-out;transition:all 2s ease-in-out}.members-cp-role-list-wrap{overflow:auto;min-height:42px;max-height:200px;padding:0 .9em;border:solid 1px #dfdfdf;background-color:#fdfdfd}#wpbody-content{padding-bottom:200px}.members-footer-promotion{text-align:center;font-weight:400;font-size:13px;line-height:16px;color:#787c82;padding:20px 0 30px 0;margin-bottom:20px}.members-footer-promotion p{font-weight:600}.members-footer-promotion-links,.members-footer-promotion-social{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.members-footer-promotion-links{margin:9px 0 0}.members-footer-promotion-links span{color:#c3c4c7;padding:0 7px}.members-footer-promotion-social{margin:10px 0 0 0;gap:10px}.members-footer-promotion-social li{margin-bottom:0}.members-footer-promotion-social a{display:block;height:16px}.members_page_members-settings.rtl{.addon-activate{left:20px;right:unset}.members-addons .plugin-card{.name,.desc p{margin-left:0;margin-right:148px}}}.button.button-warning{background:#dc3232;border-color:#dc3232;color:#fff}.button.button-warning:hover,.button.button-warning:focus{background:#c92424;border-color:#c92424;color:#fff}.members-reset-spinner{float:none;margin-top:0;vertical-align:middle}.members-admin-menus-wrap{max-width:1400px;--members-am-accent-use:var(--members-am-accent,var(--wp-admin-theme-color,#2271b1));--members-am-surface-use:var(--members-am-surface,color-mix(in srgb,var(--members-am-base,#1d2327) 88%,#fff 12%));--members-am-border-on-base-fallback:color-mix(in srgb,var(--members-am-base,#1d2327) 62%,#fff 38%);--members-am-chrome-bg:var(--wp-components-color-gray-100,#f6f7f7);--members-am-chrome-border:var(--wp-components-color-gray-400,#c3c4c7);--members-am-muted:var(--wp-components-color-gray-600,#646970)}.members-am-notices{margin:0 0 12px}.members-am-notices .notice{margin:0 0 8px}.members-admin-menus-toolbar{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;gap:0;margin-bottom:16px;border:1px solid var(--members-am-chrome-border,#c3c4c7);border-radius:2px;background:var(--wp-components-color-background,#fff);overflow:hidden}.members-am-toolbar-row{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px}.members-am-toolbar-row--primary{padding:10px 12px;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;row-gap:10px}.members-am-toolbar-group{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px}.members-am-toolbar-group--document{padding-right:12px;border-right:1px solid var(--members-am-chrome-border,#c3c4c7)}.members-am-toolbar-row--primary .members-am-toolbar-primary-user{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px;margin-left:8px;-webkit-box-flex:0;-ms-flex:0 1 auto;flex:0 1 auto;min-width:0}.members-am-toolbar-row--primary .members-am-toolbar-primary-user #members-am-user-search.members-am-user-search-input{width:168px;max-width:100%;min-width:0}.members-am-toolbar-group--view{margin-left:auto;-ms-flex-wrap:nowrap;flex-wrap:nowrap}.members-am-toolbar-extra{background:var(--members-am-chrome-bg,#f6f7f7);border-top:1px solid var(--members-am-chrome-border,#c3c4c7);padding:10px 12px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:10px}.members-am-toolbar-extra[hidden]{display:none !important}.members-am-toolbar-row--extra-tools{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-wrap:wrap;flex-wrap:wrap;row-gap:10px}.members-am-toolbar-row--extra-tools .members-am-copy-wrap{margin-left:4px;padding-left:12px;border-left:1px solid var(--members-am-chrome-border,#c3c4c7)}.members-am-toolbar-row--extra-tools .members-am-toolbar-group--io{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;margin-left:8px;padding-left:12px;border-left:1px solid var(--members-am-chrome-border,#c3c4c7)}.members-am-more-tools,.members-am-more-tools:hover,.members-am-more-tools:focus,.members-am-more-tools:active{text-decoration:none}.members-am-more-tools{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:2px;white-space:nowrap;padding:2px 2px 2px 4px;vertical-align:middle}.members-am-more-tools .members-am-more-tools-chevron,.members-am-more-tools:hover .members-am-more-tools-chevron,.members-am-more-tools:focus .members-am-more-tools-chevron,.members-am-more-tools:active .members-am-more-tools-chevron{text-decoration:none}.members-am-more-tools .members-am-more-tools-chevron{width:18px;height:18px;font-size:18px;line-height:1;opacity:.88;-webkit-transition:-webkit-transform .15s ease;transition:-webkit-transform .15s ease;transition:transform .15s ease;transition:transform .15s ease,-webkit-transform .15s ease}.members-am-more-tools.is-open .members-am-more-tools-chevron{-webkit-transform:rotate(-180deg);transform:rotate(-180deg)}@media(prefers-reduced-motion:reduce){.members-am-more-tools .members-am-more-tools-chevron{-webkit-transition:none;transition:none}}@media screen and (max-width:782px){.members-am-toolbar-group--document{border-right:0;padding-right:0;border-bottom:1px solid var(--members-am-chrome-border,#c3c4c7);padding-bottom:10px;width:100%}.members-am-toolbar-group--view{margin-left:0;width:100%;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.members-am-toolbar-row--primary .members-am-toolbar-primary-user{margin-left:0;padding-left:0;border-left:0;padding-top:8px;border-top:1px solid var(--members-am-chrome-border,#c3c4c7);width:100%;max-width:none}.members-am-toolbar-row--primary .members-am-toolbar-primary-user #members-am-user-search.members-am-user-search-input{width:100%;max-width:100%}.members-am-toolbar-row--extra-tools .members-am-admin-editable{width:100%}.members-am-toolbar-row--extra-tools .members-am-copy-wrap{margin-left:0;padding-left:0;border-left:0;padding-top:8px;border-top:1px solid var(--members-am-chrome-border,#c3c4c7);width:100%}.members-am-toolbar-row--extra-tools .members-am-toolbar-group--io{margin-left:0;padding-left:0;border-left:0;padding-top:8px;border-top:1px solid var(--members-am-chrome-border,#c3c4c7);width:100%}}.members-am-toolbar-loading{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;margin-left:4px;color:var(--members-am-muted,#646970);font-size:13px;line-height:1}.members-am-toolbar-loading .spinner{float:none;margin:0}.members-am-toolbar-loading[hidden]{display:none !important}.members-am-copy-wrap label{margin-right:8px}.members-am-chips{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:8px;margin-bottom:12px}.members-am-chip{border-radius:999px;padding:4px 12px;border:1px solid var(--members-am-chrome-border,#c3c4c7);background:var(--members-am-chrome-bg,#f6f7f7);cursor:pointer}.members-am-chip.is-active{background:var(--members-am-accent-use);border-color:var(--members-am-accent-use);color:var(--wp-components-color-accent-inverted,#fff)}.members-am-carousel-wrap{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;gap:8px;margin-bottom:8px}.members-am-carousel-prev,.members-am-carousel-next{-ms-flex-item-align:center;align-self:center;width:36px;height:36px;border-radius:50%;border:1px solid var(--members-am-chrome-border,#c3c4c7);background:var(--wp-components-color-background,#fff);cursor:pointer}.members-am-columns{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-ms-flex:1;flex:1;gap:12px;min-height:320px;overflow:hidden}.members-am-column{-webkit-box-flex:1;-ms-flex:1;flex:1;min-width:0;background:var(--members-am-base,#1d2327);border-radius:4px;color:var(--members-am-fg-on-base,#f0f0f1);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.members-am-user-column{border:2px dashed var(--wp-components-color-gray-700,#8c8f94)}.members-am-sidebar-head{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:8px 10px;background:var(--members-am-surface-use);border-radius:4px 4px 0 0;font-weight:600;font-size:12px;text-transform:uppercase;letter-spacing:.04em;color:var(--members-am-fg-on-surface,var(--members-am-fg-on-base,#f0f0f1))}.members-am-col-filter{padding:6px 8px 8px;border-bottom:1px solid var(--members-am-border-on-base,var(--members-am-border-on-base-fallback));-ms-flex-negative:0;flex-shrink:0}.members-am-col-filter-input{width:100%;max-width:100%;-webkit-box-sizing:border-box;box-sizing:border-box;font-size:12px;line-height:1.4;padding:4px 8px;border-radius:2px;border:1px solid var(--members-am-border-on-base,var(--members-am-border-on-base-fallback));background:var(--members-am-base,#1d2327);color:var(--members-am-fg-on-base,#f0f0f1)}.members-am-col-filter-input::-webkit-input-placeholder{color:var(--members-am-fg-muted-on-base,var(--wp-components-color-gray-700,#8c8f94));opacity:1}.members-am-col-filter-input::-moz-placeholder{color:var(--members-am-fg-muted-on-base,var(--wp-components-color-gray-700,#8c8f94));opacity:1}.members-am-col-filter-input:-ms-input-placeholder{color:var(--members-am-fg-muted-on-base,var(--wp-components-color-gray-700,#8c8f94));opacity:1}.members-am-col-filter-input::-ms-input-placeholder{color:var(--members-am-fg-muted-on-base,var(--wp-components-color-gray-700,#8c8f94));opacity:1}.members-am-col-filter-input::placeholder{color:var(--members-am-fg-muted-on-base,var(--wp-components-color-gray-700,#8c8f94));opacity:1}.members-am-col-filter-input:focus{border-color:var(--members-am-accent-use);outline:1px solid transparent;-webkit-box-shadow:0 0 0 var(--wp-admin-border-width-focus,1px) var(--members-am-accent-use);box-shadow:0 0 0 var(--wp-admin-border-width-focus,1px) var(--members-am-accent-use)}.members-am-col-bulk{padding:0 8px 8px;border-bottom:1px solid var(--members-am-border-on-base,var(--members-am-border-on-base-fallback));-ms-flex-negative:0;flex-shrink:0}.members-am-col-bulk-toolbar,.members-am-col-collapse-toolbar{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:6px;margin-bottom:6px;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.members-am-col-bulk-toolbar .button.button-small,.members-am-col-collapse-toolbar .button.button-small{font-size:11px;min-height:26px;line-height:24px;padding:0 8px;background:var(--members-am-surface-use);border-color:var(--members-am-border-on-surface,var(--members-am-border-on-base,var(--members-am-border-on-base-fallback)));color:var(--members-am-fg-on-surface,var(--members-am-fg-on-base,#f0f0f1))}.members-am-col-bulk-toolbar .button.button-small:hover,.members-am-col-collapse-toolbar .button.button-small:hover{background:color-mix(in srgb,var(--members-am-surface-use) 85%,#fff 15%);border-color:var(--wp-components-color-gray-700,#8c8f94);color:var(--members-am-fg-on-surface,var(--members-am-fg-on-base,#f0f0f1))}.members-am-item-lead{-ms-flex-negative:0;flex-shrink:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:22px;padding:2px 0 0}.members-am-collapse-spacer{display:block;width:20px;height:20px;-ms-flex-negative:0;flex-shrink:0}.members-am-collapse-toggle{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:22px;height:22px;margin:0;padding:0;border:0;background:transparent;color:var(--members-am-fg-muted-on-base,var(--members-am-chrome-border,#c3c4c7));border-radius:2px;cursor:pointer;-ms-flex-negative:0;flex-shrink:0}.members-am-collapse-toggle:hover,.members-am-collapse-toggle:focus{color:var(--members-am-fg-on-base,#f0f0f1);background:color-mix(in srgb,var(--members-am-fg-on-base,#f0f0f1) 12%,transparent);outline:0}.members-am-collapse-toggle .dashicons{font-size:18px;width:18px;height:18px}.members-am-item-cb-wrap{-ms-flex-negative:0;flex-shrink:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;padding:2px 4px 0 0}.members-am-item-cb{margin:0;width:16px;height:16px;-ms-flex-negative:0;flex-shrink:0}.members-am-bulk-select{width:100%;max-width:100%;-webkit-box-sizing:border-box;box-sizing:border-box;font-size:12px;line-height:1.4;padding:4px 8px;border-radius:2px;border:1px solid var(--members-am-border-on-base,var(--members-am-border-on-base-fallback));background:var(--members-am-base,#1d2327);color:var(--members-am-fg-on-base,#f0f0f1)}.members-am-bulk-select:focus{border-color:var(--members-am-accent-use);outline:1px solid transparent;-webkit-box-shadow:0 0 0 var(--wp-admin-border-width-focus,1px) var(--members-am-accent-use);box-shadow:0 0 0 var(--wp-admin-border-width-focus,1px) var(--members-am-accent-use)}.members-am-item.members-am-filter-hidden,.members-am-sep.members-am-filter-hidden,.members-am-item.members-am-collapse-hidden{display:none !important}.members-am-col-move button{margin-left:4px;padding:0 6px;min-height:24px;line-height:22px;font-size:11px}.members-am-sidebar-list{padding:6px 0 12px;overflow-y:auto;max-height:480px}.members-am-item{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;gap:4px;padding:6px 10px 6px 6px;cursor:pointer;border-left:3px solid transparent;font-size:13px}.members-am-item.is-sub{padding-left:22px;font-size:12px;opacity:.95}.members-am-item.is-sub-deep{padding-left:36px}.members-am-sidebar-list .members-am-item{cursor:-webkit-grab;cursor:grab}.members-am-sidebar-list .members-am-item:active{cursor:-webkit-grabbing;cursor:grabbing}.members-am-sort-placeholder{-webkit-box-sizing:border-box;box-sizing:border-box;min-height:36px;margin:2px 0;background:color-mix(in srgb,var(--members-am-accent-use) 8%,transparent);border:1px dashed var(--members-am-accent-use);border-radius:2px}.members-am-item.is-hidden{opacity:.18}.members-am-item.is-no-cap{opacity:.35}.members-am-item.is-no-cap.is-hidden{opacity:.15}.members-am-item.is-selected{border-left-color:var(--members-am-accent-use);background:color-mix(in srgb,var(--members-am-accent-use) 15%,transparent)}.members-am-item-main{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;min-width:0}.members-am-item-main .dashicons{font-size:18px;width:18px;height:18px}.members-am-item-label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.members-am-item-actions{display:none;gap:2px}.members-am-item:hover .members-am-item-actions{display:-webkit-box;display:-ms-flexbox;display:flex}.members-am-item-actions button{min-height:22px;padding:0 4px;line-height:20px;font-size:11px}.members-am-sep{text-align:center;opacity:.35;font-size:11px;padding:4px 0}.members-am-carousel-dots{text-align:center;margin-bottom:4px}.members-am-dot{width:8px;height:8px;border-radius:50%;border:0;margin:0 4px;padding:0;background:var(--members-am-chrome-border,#c3c4c7);cursor:pointer}.members-am-dot.is-active{background:var(--members-am-accent-use)}.members-am-carousel-status{text-align:center;color:var(--members-am-muted,#646970);font-size:12px;margin-top:0}.members-am-badge{font-size:9px;text-transform:uppercase;padding:1px 4px;border-radius:2px;margin-right:4px;vertical-align:middle}.members-am-badge-new{background:var(--members-am-accent-use);color:var(--wp-components-color-accent-inverted,#fff)}.members-am-badge-edit{background:#dba617;color:var(--members-am-base,#1d2327)}.members-am-badge-nocap{background:var(--wp-components-color-gray-700,#8c8f94);color:var(--wp-components-color-accent-inverted,#fff)}.members-am-legend{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:16px;margin:0 0 8px;padding:0;font-size:12px;color:var(--members-am-muted,#646970)}.members-am-legend-item{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:4px}.members-am-edit-panel{margin-top:20px;padding:16px;border:1px solid var(--members-am-chrome-border,#c3c4c7);background:var(--wp-components-color-background,#fff);border-radius:4px}.members-am-edit-panel-header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:12px}.members-am-edit-panel-header h2{margin:0;font-size:16px}.members-am-edit-toolbar{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:12px;margin-bottom:12px}.members-am-edit-target-wrap select{margin-left:8px}.members-am-level-actions .button{margin-right:6px}.members-am-demote-wrap{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:6px}.members-am-demote-wrap .members-am-demote-select{min-width:200px;max-width:min(320px,100%)}.members-am-edit-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:16px}.members-am-edit-col label{display:block;font-weight:600;margin-bottom:4px}.members-am-icon-tabs{margin-bottom:8px}.members-am-icon-tabs .button{margin-right:4px;margin-bottom:4px}.members-am-icon-tabs .button.is-active{background:var(--members-am-accent-use);border-color:var(--members-am-accent-use);color:var(--wp-components-color-accent-inverted,#fff)}.members-am-icon-grid{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:4px;max-height:160px;overflow-y:auto;border:1px solid var(--wp-components-color-gray-200,#dcdcde);padding:8px;background:var(--members-am-chrome-bg,#f6f7f7);margin-bottom:8px}.members-am-icon-pick{width:36px;height:36px;padding:0;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;border:1px solid var(--members-am-chrome-border,#c3c4c7);background:var(--wp-components-color-background,#fff);cursor:pointer}.members-am-bulk-visibility-hint{margin:0 0 8px;font-size:12px;color:var(--members-am-fg-muted-on-base,#646970)}.members-am-vis-role-filter-wrap{margin-bottom:8px}.members-am-vis-row.members-am-vis-filter-hidden{display:none}.members-am-vis-row{display:block;margin-bottom:6px;font-weight:normal}.members-am-reset-dropdown{position:absolute;z-index:100;background:var(--wp-components-color-background,#fff);border:1px solid var(--members-am-chrome-border,#c3c4c7);border-radius:6px;padding:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-shadow:0 4px 12px rgba(0,0,0,0.15);box-shadow:0 4px 12px rgba(0,0,0,0.15);min-width:280px;top:100%;left:0;margin-top:4px;overflow:hidden}.members-am-reset-title{padding:10px 14px;font-weight:600;font-size:13px;border-bottom:1px solid var(--wp-components-color-gray-200,#f0f0f0);color:var(--wp-components-color-foreground,#1d2327)}.members-am-reset-option{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;gap:10px;padding:12px 14px;border:0;background:0;cursor:pointer;text-align:left;width:100%;border-bottom:1px solid var(--wp-components-color-gray-200,#f0f0f0);-webkit-transition:background .15s;transition:background .15s}.members-am-reset-option:last-child{border-bottom:0}.members-am-reset-option:hover{background:var(--members-am-chrome-bg,#f6f7f7)}.members-am-reset-option .dashicons{margin-top:2px;color:var(--members-am-muted,#646970)}.members-am-reset-option-text{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:2px}.members-am-reset-option-text strong{font-size:13px;color:var(--wp-components-color-foreground,#1d2327)}.members-am-reset-option-text small{font-size:12px;color:var(--members-am-muted,#646970)}.members-am-reset-danger:hover{background:#fcf0f1}.members-am-reset-danger .dashicons{color:#d63638}.members-am-reset-danger:hover strong{color:#d63638}@media screen and (max-width:782px){.members-am-columns{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}}.members-am-user-suggestions{position:absolute;z-index:100;background:var(--wp-components-color-background,#fff);border:1px solid var(--members-am-chrome-border,#c3c4c7);border-radius:4px;max-height:200px;overflow-y:auto;width:100%;-webkit-box-shadow:0 2px 6px rgba(0,0,0,0.15);box-shadow:0 2px 6px rgba(0,0,0,0.15);top:100%;left:0}.members-am-user-suggestion{padding:8px 12px;cursor:pointer;font-size:13px;border-bottom:1px solid var(--wp-components-color-gray-200,#f0f0f0)}.members-am-user-suggestion:hover{background:color-mix(in srgb,var(--members-am-accent-use) 8%,var(--wp-components-color-background,#fff))}.members-am-user-suggestion:last-child{border-bottom:0}#members-am-import-file.members-am-import-file-hidden{display:none}.members-am-user-search-wrap{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px}#members-am-user-search.members-am-user-search-input{width:168px;max-width:100%}.members-am-legend-visibility-icon{font-size:14px;width:14px;height:14px;vertical-align:middle}.members-am-legend-nocap-badge{display:inline-block;background:#8c8f94;color:#fff;font-size:9px;padding:1px 4px;border-radius:2px;vertical-align:middle}#members-am-icon-preview.members-am-icon-preview{display:none;width:32px;height:32px;-o-object-fit:contain;object-fit:contain;margin-bottom:6px;border:1px solid #ddd;border-radius:3px;padding:2px;background:#f0f0f1}.members-am-icons .members-am-icon-upload-desc{margin-top:4px}#adminmenu .members-am-menu-badge{display:inline-block;color:#fff;font-size:9px;padding:1px 5px;border-radius:2px;line-height:1.4;vertical-align:middle}
\ No newline at end of file
+#members-cp h2.hndle,#members-cp-side h2.hndle{border-bottom:none !important;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}#members-cp h2.hndle:before,#members-cp-side h2.hndle:before{content:url("data:image/svg+xml,%3Csvg width='15px' aria-hidden='true' focusable='false' data-prefix='fas' data-icon='users-cog' class='svg-inline--fa fa-users-cog fa-w-20' role='img' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 640 512'%3E%3Cpath fill='currentColor' d='M610.5 341.3c2.6-14.1 2.6-28.5 0-42.6l25.8-14.9c3-1.7 4.3-5.2 3.3-8.5-6.7-21.6-18.2-41.2-33.2-57.4-2.3-2.5-6-3.1-9-1.4l-25.8 14.9c-10.9-9.3-23.4-16.5-36.9-21.3v-29.8c0-3.4-2.4-6.4-5.7-7.1-22.3-5-45-4.8-66.2 0-3.3.7-5.7 3.7-5.7 7.1v29.8c-13.5 4.8-26 12-36.9 21.3l-25.8-14.9c-2.9-1.7-6.7-1.1-9 1.4-15 16.2-26.5 35.8-33.2 57.4-1 3.3.4 6.8 3.3 8.5l25.8 14.9c-2.6 14.1-2.6 28.5 0 42.6l-25.8 14.9c-3 1.7-4.3 5.2-3.3 8.5 6.7 21.6 18.2 41.1 33.2 57.4 2.3 2.5 6 3.1 9 1.4l25.8-14.9c10.9 9.3 23.4 16.5 36.9 21.3v29.8c0 3.4 2.4 6.4 5.7 7.1 22.3 5 45 4.8 66.2 0 3.3-.7 5.7-3.7 5.7-7.1v-29.8c13.5-4.8 26-12 36.9-21.3l25.8 14.9c2.9 1.7 6.7 1.1 9-1.4 15-16.2 26.5-35.8 33.2-57.4 1-3.3-.4-6.8-3.3-8.5l-25.8-14.9zM496 368.5c-26.8 0-48.5-21.8-48.5-48.5s21.8-48.5 48.5-48.5 48.5 21.8 48.5 48.5-21.7 48.5-48.5 48.5zM96 224c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm224 32c1.9 0 3.7-.5 5.6-.6 8.3-21.7 20.5-42.1 36.3-59.2 7.4-8 17.9-12.6 28.9-12.6 6.9 0 13.7 1.8 19.6 5.3l7.9 4.6c.8-.5 1.6-.9 2.4-1.4 7-14.6 11.2-30.8 11.2-48 0-61.9-50.1-112-112-112S208 82.1 208 144c0 61.9 50.1 112 112 112zm105.2 194.5c-2.3-1.2-4.6-2.6-6.8-3.9-8.2 4.8-15.3 9.8-27.5 9.8-10.9 0-21.4-4.6-28.9-12.6-18.3-19.8-32.3-43.9-40.2-69.6-10.7-34.5 24.9-49.7 25.8-50.3-.1-2.6-.1-5.2 0-7.8l-7.9-4.6c-3.8-2.2-7-5-9.8-8.1-3.3.2-6.5.6-9.8.6-24.6 0-47.6-6-68.5-16h-8.3C179.6 288 128 339.6 128 403.2V432c0 26.5 21.5 48 48 48h255.4c-3.7-6-6.2-12.8-6.2-20.3v-9.2zM173.1 274.6C161.5 263.1 145.6 256 128 256H64c-35.3 0-64 28.7-64 64v32c0 17.7 14.3 32 32 32h65.9c6.3-47.4 34.9-87.3 75.2-109.4z'%3E%3C/path%3E%3C/svg%3E");margin-right:5px}#members-cp-side .postbox-header{border-bottom:none !important}#members-cp-side .handle-actions .handle-order-higher,#members-cp-side .handle-actions .handle-order-lower{display:none}#members-cp-side .handle-actions .handlediv{position:absolute;right:5px}.members-upgrade-header{text-align:center;padding:5px}.members-upgrade-header a{color:#f59431}.memberpress-paid-memberships{background-color:#f5f5f5;padding:50px 10px;text-align:center}.memberpress-paid-memberships a{background-color:#0e4598;display:inline-block;padding:10px 20px;border-radius:300px;color:#fff;text-decoration:none;margin-top:20px}#members-cp-side .members-tabs{position:relative}#members-cp-side .members-tab-nav{background-color:transparent;margin-bottom:20px;border-right:none !important}#members-cp-side .members-tab-nav .members-tab-title{width:33.333%;height:50px;border-right:none !important}#members-cp-side .members-tab-nav .members-tab-title a{border:0}#members-cp-side .members-tab-content h3{font-weight:bold;font-size:15px;margin-top:0;color:#000;margin-bottom:10px}#members-cp-side .members-tab-content .memberpress-paid-memberships{text-align:left;padding:20px}#members-cp-side .members-tab-content .memberpress-paid-memberships a{display:block;text-align:center}#members-cp-side .members-tabs .members-tab-nav li a,#members-cp-side .members-tabs .members-tab-nav li[aria-selected="false"] a i{color:#555}#members-cp-side .members-tabs .members-tab-nav li a svg,#members-cp-side .members-tabs .members-tab-nav li[aria-selected="false"] a svg{fill:#555}#members-cp-side .members-tabs .members-tab-nav li[aria-selected="true"] a{background-color:transparent;border-bottom:2px solid #3582ae}#members-cp-side .members-tabs .members-tab-nav li[aria-selected="true"] a i{color:#3582ae}#members-cp-side .members-tabs .members-tab-nav li[aria-selected="true"] a svg{fill:#3582ae}.members-tab-title svg,.members-tab-title[aria-selected="false"] svg{fill:#0073aa}.members-tab-title[aria-selected="true"] svg{fill:#555}#wpcontent #members-admin-header{margin-left:-20px;padding:0;padding-left:22px;background-color:#f9f9f9;background-repeat:repeat;background-size:1200px 75px;min-height:36px;position:relative}#wpcontent #members-admin-header img.members-logo{height:90px}.members-upgrade-header #close-members-upgrade-header{position:absolute;right:20px;top:3px}.members-upgrade-header #close-members-upgrade-header:hover{cursor:pointer}.memberpress-welcome-panel.welcome-panel{margin-top:0;padding:40px 20px;background:#fff}.memberpress-welcome-panel.welcome-panel:before{background:0}.memberpress-welcome-panel.welcome-panel .about-description{margin:20px 0}.memberpress-welcome-panel.welcome-panel-content{margin:0}.memberpress-welcome-panel.welcome-panel-content .mp-logo-wrap>a{display:block}@media screen and (min-width:870px){.members_page_members-settings .members-short-p{max-width:612px;margin-left:auto;margin-right:auto}.members_page_members-settings .welcome-panel-content{text-align:center}}.members_page_members-settings .welcome-panel .button.button-hero{margin-left:auto;margin-right:auto}.members_page_members-settings .members-svg-wrap{display:inline-block;margin:0 auto 20px}@media screen and (max-width:870px){.members_page_members-settings .welcome-panel{padding:20px}.members_page_members-settings .members-svg-wrap{float:left;margin-right:28px}.admin_page_members-settings.rtl .members-svg-wrap{float:right;margin-right:0;margin-left:28px}}.members_page_members-settings .members-svg-link{display:table-cell;text-align:center;width:128px;height:128px;background:#363b3f;color:#fff;padding:24px 16px 16px;border-radius:50%;-webkit-box-sizing:border-box;box-sizing:border-box;border:4px solid #fff;-webkit-box-shadow:0 0 0 4px #363b3f;box-shadow:0 0 0 4px #363b3f}.members_page_members-settings .members-svg-link svg{max-width:84px;max-height:64px;width:auto;height:auto}.members-addons{display:grid;grid-template-columns:1fr 1fr;grid-row-gap:20px;grid-column-gap:20px}.members-addons .plugin-card{margin:0}.members-addons .plugin-card-top{width:100%}.members-addon{width:100%;position:relative;float:none;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.members-addon .desc{margin-bottom:80px}.addon-activate{text-align:center;border:1px solid #ddd;border-radius:3px;padding:5px 10px 10px;display:inline-block;width:100px;position:absolute;right:20px;bottom:20px}.activate-toggle:hover{cursor:pointer}.activate-toggle svg{max-width:20px;position:relative;top:5px}.activate-toggle svg{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.activate-toggle svg.active{-webkit-transform:rotate(0);transform:rotate(0)}.activate-toggle svg path{fill:#ccc}.activate-toggle svg.active path{fill:#8cbd5a}.activate-toggle.processing{cursor:not-allowed;pointer-events:none;opacity:.5}.activate-toggle .action-label{display:inline-block;width:50px;text-align:left}.mepr_dummy_txns{-webkit-filter:blur(3px);filter:blur(3px);position:absolute;top:0;left:0;width:100%;z-index:5;pointer-events:none}.mepr_dummy_txns::after{background-color:rgba(0,0,0,.2);position:absolute;top:0;left:0;width:100%;height:100%;z-index:6}.mepr-upgrade-table{position:relative}.mepr-upgrade-table .mepr-upgrade{position:relative;top:100px;z-index:10;background:rgba(0,0,0,.2);width:100%;height:100%;max-width:600px;margin:0 auto;-webkit-box-shadow:0 0 30px #ccc;box-shadow:0 0 30px #ccc}.mepr-upgrade-content{background-color:#fff;padding:20px;text-align:center}.mepr-upgrade-content h2{font-size:24px}.mepr-upgrade-content h4{font-size:18px}.mepr-upgrade-content .features{display:grid;grid-template-columns:1fr 1fr;grid-column-gap:30px;grid-row-gap:10px;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;text-align:left;padding:10px}.features li:before{content:"\f147";font-family:dashicons;color:green;font-size:20px;position:relative;top:4px;margin-right:10px}.mepr-upgrade-cta{text-align:center;background-color:#f2f2f2;padding:20px}.mepr-upgrade-cta .mepr-cta-button{display:block;max-width:300px;margin:0 auto 20px;background-color:#fd9c27;color:#fff;padding:15px;font-size:18px;font-weight:bold;text-decoration:none;border-radius:300px}.members-plugin-card.plugin-card:nth-child(even){margin-right:inherit}.members-plugin-card.plugin-card:nth-child(odd){clear:none;margin-left:inherit}.members-plugin-card.plugin-card .plugin-card-top{min-height:0;padding:30px 20px}.members-plugin-card.plugin-card .plugin-icon{top:30px}.members-plugin-card.plugin-card .plugin-card-bottom .column-status{font-weight:bold}.members-plugin-card.plugin-card .plugin-card-bottom .column-status .active{color:#8cbd5a}.members-plugin-card.plugin-card .plugin-card-bottom .column-status .inactive{color:red}.members-plugin-card.plugin-card .plugin-icon{width:64px;height:auto}.plugin-icon-small{width:32px;height:auto}.members-plugin-card.plugin-card .name,.members-plugin-card.plugin-card .desc{margin-right:0;margin-left:84px}.members-addons .plugin-card .name,.members-addons .plugin-card .desc p{margin-right:0}@media screen and (max-width:1100px){.members-addons{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}}@media screen and (max-width:600px){.members_page_members-settings .members-svg-link{width:64px;height:64px}.members_page_members-settings .members-svg-link svg{position:absolute;top:14px;left:15px;max-width:30px;max-height:30px}.members_page_members-settings .plugin-card-members-edd-integration .members-svg-link svg,.members_page_members-settings .plugin-card-members-acf-integration .members-svg-link svg,.members_page_members-settings .plugin-card-members-givewp-integration .members-svg-link svg,.members_page_members-settings .plugin-card-members-meta-box-integration .members-svg-link svg,.members_page_members-settings .plugin-card-members-woocommerce-integration .members-svg-link svg{top:10px;left:8px;max-width:40px;max-height:40px}.members_page_members-settings .plugin-card-members-block-permissions .members-svg-link svg,.members_page_members-settings .plugin-card-members-role-hierarchy .members-svg-link svg{left:14px}.members-addons .plugin-card .desc>p,.members-addons .plugin-card .name{margin-left:84px}}.memberpress-about .welcome-panel-column-container{display:-webkit-box;display:-ms-flexbox;display:flex}.memberpress-about .mp-logo{max-width:256px;margin:50px}.members-about-addons{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-column-gap:20px}.members-about-addons .members-plugin-card{margin:0;width:100%}.members-about-addons .members-plugin-card .name h3 a{text-decoration:none}.members-about-addons .members-plugin-card .plugin-card-bottom{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}@media only screen and (max-width:1099px){.members-about-addons{grid-template-columns:1fr;grid-row-gap:20px}}@media screen and (min-width:1100px) and (max-width:1600px){.members-about-addons .members-plugin-card{float:none;width:auto;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.members-plugin-card.plugin-card .desc{margin-left:0;margin-top:50px}.members-plugin-card.plugin-card .desc p{margin-left:0;margin-right:0}.members-plugin-card.plugin-card .plugin-card-bottom .column-status{float:none}.members-plugin-card.plugin-card .plugin-card-bottom .column-updated{float:none;width:auto}}@media screen and (max-width:1200px){.welcome-panel .welcome-panel-column-container{-webkit-box-orient:vertical;-webkit-box-direction:reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse;gap:0;padding:0}.memberpress-about .mp-logo{margin:0 0 20px}}.members-plugin-card.plugin-card .desc p{margin-left:0;margin-right:0}@media only screen and (min-width:783px){.members_page_roles .column-users,.members_page_roles .column-granted_caps,.members_page_roles .column-denied_caps{width:100px;text-align:center}}.members-title-div #titlewrap input{padding:0 8px;font-size:1.7em;line-height:normal;height:1.7em;width:100%;outline:0;margin:0 0 3px;background-color:#fff}.members-title-div input[name="role"]{font-size:13px;height:22px;margin:0;width:16em}#tabcapsdiv{margin-top:1em}#tabcapsdiv>.hndle{padding:10px;border-bottom:1px solid #eee}#tabcapsdiv .inside,#members-cp .inside{margin:0;padding:0}.members-cap-tabs,.members-tabs{overflow:hidden;background:#fff;background:-webkit-gradient(linear,left top,right top,from(#fafafa),color-stop(20%,#fafafa),color-stop(20%,#fff),to(#fff));background:linear-gradient(90deg,#fafafa 0,#fafafa 20%,#fff 20%,#fff 100%)}@media only screen and (max-width:782px){.members-cap-tabs,.members-tabs{background:linear-gradient(90deg,#fafafa 0,#fafafa 48px,#fff 48px,#fff 100%)}}.members-cap-tabs .members-tab-nav,.members-tabs .members-tab-nav{position:relative;float:left;list-style:none;width:20%;line-height:1em;margin:0 0 -1px 0;padding:0;background-color:#fafafa;border-right:1px solid #eee;-webkit-box-sizing:border-box;box-sizing:border-box}.members-cap-tabs .members-tab-nav li,.members-tabs .members-tab-nav li{display:block;position:relative;margin:0;padding:0;line-height:20px}.members-cap-tabs .members-tab-nav li a,.members-tabs .members-tab-nav li a{display:block;margin:0;padding:10px;line-height:20px !important;text-decoration:none;border-bottom:1px solid #eee;-webkit-box-shadow:none;box-shadow:none}.members-cap-tabs .members-tab-nav li a .dashicons,.members-tabs .members-tab-nav li a .dashicons{line-height:20px;margin-right:3px}.members-cap-tabs .members-tab-nav li[aria-selected="true"] a,.members-tabs .members-tab-nav li[aria-selected="true"] a{position:relative;font-weight:bold;color:#555;background-color:#e0e0e0}@media only screen and (max-width:782px){.members-cap-tabs .members-tab-nav,.members-tabs .members-tab-nav{width:48px}.members-cap-tabs .members-tab-nav li a .dashicons,.members-tabs .members-tab-nav li a .dashicons{width:24px;height:24px;font-size:24px;line-height:24px}.members-tab-nav li .dashicons::before,.members-tab-nav li .dashicons::before{width:24px;height:24px}.members-tab-nav li .label{overflow:hidden;position:absolute;top:-1000em;left:-1000em;width:1px;height:1px}}.members-cap-tabs .members-tab-wrap,.members-tabs .members-tab-wrap{float:left;width:80%;margin-left:-1px}@media only screen and (max-width:782px){.members-cap-tabs .members-tab-wrap,.members-tabs .members-tab-wrap{width:calc(100% - 48px)}}#members-cp .members-tab-content{padding:10px;border-left:1px solid #e5e5e5}.members-roles-select th,.members-roles-select td{width:190px;overflow:hidden}.members-roles-select .check-all-th{text-align:center}.members-roles-select .check-all-th label{padding-left:5px}@media only screen and (min-width:850px){#side-sortables .members-tabs{background:#fff}#side-sortables .members-tabs .members-tab-wrap{width:100%}#side-sortables .members-tabs .members-tab-nav{display:table;width:100%}#side-sortables .members-tabs .members-tab-nav li{display:table-cell;text-align:center;border-right:1px solid #eee}#side-sortables .members-tabs .members-tab-nav li:last-of-type{border-right:0}#side-sortables .members-tabs .members-tab-nav li a{padding:10px 0}#side-sortables .members-tabs .members-tab-nav .dashicons{width:24px;height:24px;font-size:24px;line-height:24px}#side-sortables .members-tabs .members-tab-nav .dashicons::before{width:24px;height:24px}#side-sortables .members-tabs .members-tab-nav .label{overflow:hidden;position:absolute;top:-1000em;left:-1000em;width:1px;height:1px}}.members-tabs .members-tabs-label{display:block !important;font-weight:bold;display:inline-block;margin-bottom:4px}.members-tabs .butterbean-control-checkbox .members-tabs-label{display:inline !important}.members-tabs .members-tabs-description{display:block;font-style:italic;margin-top:4px}.members-tabs .members-tabs-label+.members-tabs-description{margin-top:0;margin-bottom:4px}#tabcapsdiv table{border-right:0;border-top:0;border-bottom:0}#tabcapsdiv table td,#tabcapsdiv table th{padding:10px;padding-bottom:10px;border-bottom:1px solid #eee;font-size:13px;line-height:20px}#tabcapsdiv table td{padding:9px}#tabcapsdiv tbody tr:last-of-type td{border-bottom:0}#tabcapsdiv tfoot th{border-color:#eee}@media only screen and (max-width:782px){#tabcapsdiv table td,#tabcapsdiv table th{line-height:24px}}.members-roles-select .column-grant,.members-roles-select .column-deny{width:70px !important;text-align:left;display:table-cell !important;clear:none !important}.members-roles-select thead th,.members-roles-select tfoot th{padding:9px !important}.members-roles-select .column-grant input,.members-roles-select .column-deny input{margin:0 5px 0 0;vertical-align:middle}.members-roles-select tbody tr:nth-child(even){background:#f2f2f2}.members-cap-tabs button{display:inline;margin:-4px;line-height:inherit;padding:4px 8px;border:1px solid transparent;background:transparent;border-radius:0;outline:0;-webkit-transition:all .25s ease-out;transition:all .25s ease-out}.members-cap-tabs button:hover,.members-cap-tabs button:focus{border-color:#eee;background:#fafafa;cursor:pointer}.members-cap-tabs button:active{color:#0073aa;border-color:#0073aa}.members-cap-tabs button+.dashicons{display:none;margin-top:1px;margin-bottom:-1px;line-height:inherit}.members-cap-tabs button:hover+.dashicons,.members-cap-tabs button:focus+.dashicons{display:inline-block}.members-tab-content .members-highlight{background-color:rgba(0,115,170,0.05)}.members-tab-content tbody{-webkit-transition:all 2s ease-in-out;transition:all 2s ease-in-out}.members-cp-role-list-wrap{overflow:auto;min-height:42px;max-height:200px;padding:0 .9em;border:solid 1px #dfdfdf;background-color:#fdfdfd}#wpbody-content{padding-bottom:200px}.members-footer-promotion{text-align:center;font-weight:400;font-size:13px;line-height:16px;color:#787c82;padding:20px 0 30px 0;margin-bottom:20px}.members-footer-promotion p{font-weight:600}.members-footer-promotion-links,.members-footer-promotion-social{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.members-footer-promotion-links{margin:9px 0 0}.members-footer-promotion-links span{color:#c3c4c7;padding:0 7px}.members-footer-promotion-social{margin:10px 0 0 0;gap:10px}.members-footer-promotion-social li{margin-bottom:0}.members-footer-promotion-social a{display:block;height:16px}.members_page_members-settings.rtl{.addon-activate{left:20px;right:unset}.members-addons .plugin-card{.name,.desc p{margin-left:0;margin-right:148px}}}.button.button-warning{background:#dc3232;border-color:#dc3232;color:#fff}.button.button-warning:hover,.button.button-warning:focus{background:#c92424;border-color:#c92424;color:#fff}.members-reset-spinner{float:none;margin-top:0;vertical-align:middle}.members-admin-menus-wrap{max-width:1400px;--members-am-accent-use:var(--members-am-accent,var(--wp-admin-theme-color,#2271b1));--members-am-surface-use:var(--members-am-surface,color-mix(in srgb,var(--members-am-base,#1d2327) 88%,#fff 12%));--members-am-border-on-base-fallback:color-mix(in srgb,var(--members-am-base,#1d2327) 62%,#fff 38%);--members-am-chrome-bg:var(--wp-components-color-gray-100,#f6f7f7);--members-am-chrome-border:var(--wp-components-color-gray-400,#c3c4c7);--members-am-muted:var(--wp-components-color-gray-600,#646970)}.members-am-notices{margin:0 0 12px}.members-am-notices .notice{margin:0 0 8px}.members-admin-menus-toolbar{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;gap:0;margin-bottom:16px;border:1px solid var(--members-am-chrome-border,#c3c4c7);border-radius:2px;background:var(--wp-components-color-background,#fff);overflow:hidden}.members-am-toolbar-row{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px}.members-am-toolbar-row--primary{padding:10px 12px;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;row-gap:10px}.members-am-toolbar-group{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px}.members-am-toolbar-group--document{padding-right:12px;border-right:1px solid var(--members-am-chrome-border,#c3c4c7)}.members-am-toolbar-row--primary .members-am-toolbar-primary-user{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px;margin-left:8px;-webkit-box-flex:0;-ms-flex:0 1 auto;flex:0 1 auto;min-width:0}.members-am-toolbar-row--primary .members-am-toolbar-primary-user #members-am-user-search.members-am-user-search-input{width:168px;max-width:100%;min-width:0}.members-am-toolbar-group--view{margin-left:auto;-ms-flex-wrap:nowrap;flex-wrap:nowrap}.members-am-toolbar-extra{background:var(--members-am-chrome-bg,#f6f7f7);border-top:1px solid var(--members-am-chrome-border,#c3c4c7);padding:10px 12px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:10px}.members-am-toolbar-extra[hidden]{display:none !important}.members-am-toolbar-row--extra-tools{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-wrap:wrap;flex-wrap:wrap;row-gap:10px}.members-am-toolbar-row--extra-tools .members-am-copy-wrap{margin-left:4px;padding-left:12px;border-left:1px solid var(--members-am-chrome-border,#c3c4c7)}.members-am-toolbar-row--extra-tools .members-am-toolbar-group--io{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;margin-left:8px;padding-left:12px;border-left:1px solid var(--members-am-chrome-border,#c3c4c7)}.members-am-more-tools,.members-am-more-tools:hover,.members-am-more-tools:focus,.members-am-more-tools:active{text-decoration:none}.members-am-more-tools{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:2px;white-space:nowrap;padding:2px 2px 2px 4px;vertical-align:middle}.members-am-more-tools .members-am-more-tools-chevron,.members-am-more-tools:hover .members-am-more-tools-chevron,.members-am-more-tools:focus .members-am-more-tools-chevron,.members-am-more-tools:active .members-am-more-tools-chevron{text-decoration:none}.members-am-more-tools .members-am-more-tools-chevron{width:18px;height:18px;font-size:18px;line-height:1;opacity:.88;padding-top:6px;-webkit-transition:-webkit-transform .15s ease;transition:-webkit-transform .15s ease;transition:transform .15s ease;transition:transform .15s ease,-webkit-transform .15s ease}.members-am-more-tools.is-open .members-am-more-tools-chevron{-webkit-transform:rotate(-180deg);transform:rotate(-180deg)}@media(prefers-reduced-motion:reduce){.members-am-more-tools .members-am-more-tools-chevron{-webkit-transition:none;transition:none}}@media screen and (max-width:782px){.members-am-toolbar-group--document{border-right:0;padding-right:0;border-bottom:1px solid var(--members-am-chrome-border,#c3c4c7);padding-bottom:10px;width:100%}.members-am-toolbar-group--view{margin-left:0;width:100%;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.members-am-toolbar-row--primary .members-am-toolbar-primary-user{margin-left:0;padding-left:0;border-left:0;padding-top:8px;border-top:1px solid var(--members-am-chrome-border,#c3c4c7);width:100%;max-width:none}.members-am-toolbar-row--primary .members-am-toolbar-primary-user #members-am-user-search.members-am-user-search-input{width:100%;max-width:100%}.members-am-toolbar-row--extra-tools .members-am-admin-editable{width:100%}.members-am-toolbar-row--extra-tools .members-am-copy-wrap{margin-left:0;padding-left:0;border-left:0;padding-top:8px;border-top:1px solid var(--members-am-chrome-border,#c3c4c7);width:100%}.members-am-toolbar-row--extra-tools .members-am-toolbar-group--io{margin-left:0;padding-left:0;border-left:0;padding-top:8px;border-top:1px solid var(--members-am-chrome-border,#c3c4c7);width:100%}}.members-am-toolbar-loading{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;margin-left:4px;color:var(--members-am-muted,#646970);font-size:13px;line-height:1}.members-am-toolbar-loading .spinner{float:none;margin:0}.members-am-toolbar-loading[hidden]{display:none !important}.members-am-copy-wrap label{margin-right:8px}.members-am-chips{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:8px;margin-bottom:12px}.members-am-chip{border-radius:999px;padding:4px 12px;border:1px solid var(--members-am-chrome-border,#c3c4c7);background:var(--members-am-chrome-bg,#f6f7f7);cursor:pointer}.members-am-chip.is-active{background:var(--members-am-accent-use);border-color:var(--members-am-accent-use);color:var(--wp-components-color-accent-inverted,#fff)}.members-am-carousel-wrap{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;gap:8px;margin-bottom:8px}.members-am-carousel-prev,.members-am-carousel-next{-ms-flex-item-align:center;align-self:center;width:36px;height:36px;border-radius:50%;border:1px solid var(--members-am-chrome-border,#c3c4c7);background:var(--wp-components-color-background,#fff);cursor:pointer}.members-am-columns{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-ms-flex:1;flex:1;gap:12px;min-height:320px;overflow:hidden}.members-am-column{-webkit-box-flex:1;-ms-flex:1;flex:1;min-width:0;background:var(--members-am-base,#1d2327);border-radius:4px;color:var(--members-am-fg-on-base,#f0f0f1);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.members-am-user-column{border:2px dashed var(--wp-components-color-gray-700,#8c8f94)}.members-am-sidebar-head{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:8px 10px;background:var(--members-am-surface-use);border-radius:4px 4px 0 0;font-weight:600;font-size:12px;text-transform:uppercase;letter-spacing:.04em;color:var(--members-am-fg-on-surface,var(--members-am-fg-on-base,#f0f0f1))}.members-am-col-filter{padding:6px 8px 8px;border-bottom:1px solid var(--members-am-border-on-base,var(--members-am-border-on-base-fallback));-ms-flex-negative:0;flex-shrink:0}.members-am-col-filter-input{width:100%;max-width:100%;-webkit-box-sizing:border-box;box-sizing:border-box;font-size:12px;line-height:1.4;padding:4px 8px;border-radius:2px;border:1px solid var(--members-am-border-on-base,var(--members-am-border-on-base-fallback));background:var(--members-am-base,#1d2327);color:var(--members-am-fg-on-base,#f0f0f1)}.members-am-col-filter-input::-webkit-input-placeholder{color:var(--members-am-fg-muted-on-base,var(--wp-components-color-gray-700,#8c8f94));opacity:1}.members-am-col-filter-input::-moz-placeholder{color:var(--members-am-fg-muted-on-base,var(--wp-components-color-gray-700,#8c8f94));opacity:1}.members-am-col-filter-input:-ms-input-placeholder{color:var(--members-am-fg-muted-on-base,var(--wp-components-color-gray-700,#8c8f94));opacity:1}.members-am-col-filter-input::-ms-input-placeholder{color:var(--members-am-fg-muted-on-base,var(--wp-components-color-gray-700,#8c8f94));opacity:1}.members-am-col-filter-input::placeholder{color:var(--members-am-fg-muted-on-base,var(--wp-components-color-gray-700,#8c8f94));opacity:1}.members-am-col-filter-input:focus{border-color:var(--members-am-accent-use);outline:1px solid transparent;-webkit-box-shadow:0 0 0 var(--wp-admin-border-width-focus,1px) var(--members-am-accent-use);box-shadow:0 0 0 var(--wp-admin-border-width-focus,1px) var(--members-am-accent-use)}.members-am-col-bulk{padding:0 8px 8px;border-bottom:1px solid var(--members-am-border-on-base,var(--members-am-border-on-base-fallback));-ms-flex-negative:0;flex-shrink:0}.members-am-col-bulk-toolbar,.members-am-col-collapse-toolbar{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:6px;margin-bottom:6px;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.members-am-col-bulk-toolbar .button.button-small,.members-am-col-collapse-toolbar .button.button-small{font-size:11px;min-height:26px;line-height:24px;padding:0 8px;background:var(--members-am-surface-use);border-color:var(--members-am-border-on-surface,var(--members-am-border-on-base,var(--members-am-border-on-base-fallback)));color:var(--members-am-fg-on-surface,var(--members-am-fg-on-base,#f0f0f1))}.members-am-col-bulk-toolbar .button.button-small:hover,.members-am-col-collapse-toolbar .button.button-small:hover{background:color-mix(in srgb,var(--members-am-surface-use) 85%,#fff 15%);border-color:var(--wp-components-color-gray-700,#8c8f94);color:var(--members-am-fg-on-surface,var(--members-am-fg-on-base,#f0f0f1))}.members-am-item-lead{-ms-flex-negative:0;flex-shrink:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:22px;padding:2px 0 0}.members-am-collapse-spacer{display:block;width:20px;height:20px;-ms-flex-negative:0;flex-shrink:0}.members-am-collapse-toggle{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:22px;height:22px;margin:0;padding:0;border:0;background:transparent;color:var(--members-am-fg-muted-on-base,var(--members-am-chrome-border,#c3c4c7));border-radius:2px;cursor:pointer;-ms-flex-negative:0;flex-shrink:0}.members-am-collapse-toggle:hover,.members-am-collapse-toggle:focus{color:var(--members-am-fg-on-base,#f0f0f1);background:color-mix(in srgb,var(--members-am-fg-on-base,#f0f0f1) 12%,transparent);outline:0}.members-am-collapse-toggle .dashicons{font-size:18px;width:18px;height:18px}.members-am-item-cb-wrap{-ms-flex-negative:0;flex-shrink:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;padding:2px 4px 0 0}.members-am-item-cb{margin:0;width:16px;height:16px;-ms-flex-negative:0;flex-shrink:0}.members-am-bulk-select{width:100%;max-width:100%;-webkit-box-sizing:border-box;box-sizing:border-box;font-size:12px;line-height:1.4;padding:4px 8px;border-radius:2px;border:1px solid var(--members-am-border-on-base,var(--members-am-border-on-base-fallback));background:var(--members-am-base,#1d2327);color:var(--members-am-fg-on-base,#f0f0f1)}.members-am-bulk-select:focus{border-color:var(--members-am-accent-use);outline:1px solid transparent;-webkit-box-shadow:0 0 0 var(--wp-admin-border-width-focus,1px) var(--members-am-accent-use);box-shadow:0 0 0 var(--wp-admin-border-width-focus,1px) var(--members-am-accent-use)}.members-am-item.members-am-filter-hidden,.members-am-sep.members-am-filter-hidden,.members-am-item.members-am-collapse-hidden{display:none !important}.members-am-col-move button{margin-left:4px;padding:0 6px;min-height:24px;line-height:22px;font-size:11px}.members-am-sidebar-list{padding:6px 0 12px;overflow-y:auto;max-height:480px}.members-am-item{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;gap:4px;padding:6px 10px 6px 6px;cursor:pointer;border-left:3px solid transparent;font-size:13px}.members-am-item.is-sub{padding-left:22px;font-size:12px;opacity:.95}.members-am-item.is-sub-deep{padding-left:36px}.members-am-sidebar-list .members-am-item{cursor:-webkit-grab;cursor:grab}.members-am-sidebar-list .members-am-item:active{cursor:-webkit-grabbing;cursor:grabbing}.members-am-sort-placeholder{-webkit-box-sizing:border-box;box-sizing:border-box;min-height:36px;margin:2px 0;background:color-mix(in srgb,var(--members-am-accent-use) 8%,transparent);border:1px dashed var(--members-am-accent-use);border-radius:2px}.members-am-item.is-hidden{opacity:.18}.members-am-item.is-no-cap{opacity:.35}.members-am-item.is-no-cap.is-hidden{opacity:.15}.members-am-item.is-selected{border-left-color:var(--members-am-accent-use);background:color-mix(in srgb,var(--members-am-accent-use) 15%,transparent)}.members-am-item-main{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;min-width:0}.members-am-item-main .dashicons{font-size:18px;width:18px;height:18px}.members-am-item-label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.members-am-item-actions{display:none;gap:2px}.members-am-item:hover .members-am-item-actions{display:-webkit-box;display:-ms-flexbox;display:flex}.members-am-item-actions button{min-height:22px;padding:0 4px;line-height:20px;font-size:11px}.members-am-sep{text-align:center;opacity:.35;font-size:11px;padding:4px 0}.members-am-carousel-dots{text-align:center;margin-bottom:4px}.members-am-dot{width:8px;height:8px;border-radius:50%;border:0;margin:0 4px;padding:0;background:var(--members-am-chrome-border,#c3c4c7);cursor:pointer}.members-am-dot.is-active{background:var(--members-am-accent-use)}.members-am-carousel-status{text-align:center;color:var(--members-am-muted,#646970);font-size:12px;margin-top:0}.members-am-badge{font-size:9px;text-transform:uppercase;padding:1px 4px;border-radius:2px;margin-right:4px;vertical-align:middle}.members-am-badge-new{background:var(--members-am-accent-use);color:var(--wp-components-color-accent-inverted,#fff)}.members-am-badge-edit{background:#dba617;color:var(--members-am-base,#1d2327)}.members-am-badge-nocap{background:var(--wp-components-color-gray-700,#8c8f94);color:var(--wp-components-color-accent-inverted,#fff)}.members-am-legend{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:16px;margin:0 0 8px;padding:0;font-size:12px;color:var(--members-am-muted,#646970)}.members-am-legend-item{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:4px}.members-am-edit-panel{margin-top:20px;padding:16px;border:1px solid var(--members-am-chrome-border,#c3c4c7);background:var(--wp-components-color-background,#fff);border-radius:4px}.members-am-edit-panel-header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:12px}.members-am-edit-panel-header h2{margin:0;font-size:16px}.members-am-edit-toolbar{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:12px;margin-bottom:12px}.members-am-edit-target-wrap select{margin-left:8px}.members-am-level-actions .button{margin-right:6px}.members-am-demote-wrap{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:6px}.members-am-demote-wrap .members-am-demote-select{min-width:200px;max-width:min(320px,100%)}.members-am-edit-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:16px}.members-am-edit-col label{display:block;font-weight:600;margin-bottom:4px}.members-am-icon-tabs{margin-bottom:8px}.members-am-icon-tabs .button{margin-right:4px;margin-bottom:4px}.members-am-icon-tabs .button.is-active{background:var(--members-am-accent-use);border-color:var(--members-am-accent-use);color:var(--wp-components-color-accent-inverted,#fff)}.members-am-icon-grid{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:4px;max-height:160px;overflow-y:auto;border:1px solid var(--wp-components-color-gray-200,#dcdcde);padding:8px;background:var(--members-am-chrome-bg,#f6f7f7);margin-bottom:8px}.members-am-icon-pick{width:36px;height:36px;padding:0;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;border:1px solid var(--members-am-chrome-border,#c3c4c7);background:var(--wp-components-color-background,#fff);cursor:pointer}.members-am-bulk-visibility-hint{margin:0 0 8px;font-size:12px;color:var(--members-am-fg-muted-on-base,#646970)}.members-am-vis-role-filter-wrap{margin-bottom:8px}.members-am-vis-row.members-am-vis-filter-hidden{display:none}.members-am-vis-row{display:block;margin-bottom:6px;font-weight:normal}.members-am-reset-dropdown{position:absolute;z-index:100;background:var(--wp-components-color-background,#fff);border:1px solid var(--members-am-chrome-border,#c3c4c7);border-radius:6px;padding:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-shadow:0 4px 12px rgba(0,0,0,0.15);box-shadow:0 4px 12px rgba(0,0,0,0.15);min-width:280px;top:100%;left:0;margin-top:4px;overflow:hidden}.members-am-reset-title{padding:10px 14px;font-weight:600;font-size:13px;border-bottom:1px solid var(--wp-components-color-gray-200,#f0f0f0);color:var(--wp-components-color-foreground,#1d2327)}.members-am-reset-option{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;gap:10px;padding:12px 14px;border:0;background:0;cursor:pointer;text-align:left;width:100%;border-bottom:1px solid var(--wp-components-color-gray-200,#f0f0f0);-webkit-transition:background .15s;transition:background .15s}.members-am-reset-option:last-child{border-bottom:0}.members-am-reset-option:hover{background:var(--members-am-chrome-bg,#f6f7f7)}.members-am-reset-option .dashicons{margin-top:2px;color:var(--members-am-muted,#646970)}.members-am-reset-option-text{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:2px}.members-am-reset-option-text strong{font-size:13px;color:var(--wp-components-color-foreground,#1d2327)}.members-am-reset-option-text small{font-size:12px;color:var(--members-am-muted,#646970)}.members-am-reset-danger:hover{background:#fcf0f1}.members-am-reset-danger .dashicons{color:#d63638}.members-am-reset-danger:hover strong{color:#d63638}@media screen and (max-width:782px){.members-am-columns{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}}.members-am-user-suggestions{position:absolute;z-index:100;background:var(--wp-components-color-background,#fff);border:1px solid var(--members-am-chrome-border,#c3c4c7);border-radius:4px;max-height:200px;overflow-y:auto;width:100%;-webkit-box-shadow:0 2px 6px rgba(0,0,0,0.15);box-shadow:0 2px 6px rgba(0,0,0,0.15);top:100%;left:0}.members-am-user-suggestion{padding:8px 12px;cursor:pointer;font-size:13px;border-bottom:1px solid var(--wp-components-color-gray-200,#f0f0f0)}.members-am-user-suggestion:hover{background:color-mix(in srgb,var(--members-am-accent-use) 8%,var(--wp-components-color-background,#fff))}.members-am-user-suggestion:last-child{border-bottom:0}#members-am-import-file.members-am-import-file-hidden{display:none}.members-am-user-search-wrap{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px}#members-am-user-search.members-am-user-search-input{width:168px;max-width:100%}.members-am-legend-visibility-icon{font-size:14px;width:14px;height:14px;vertical-align:middle}.members-am-legend-nocap-badge{display:inline-block;background:#8c8f94;color:#fff;font-size:9px;padding:1px 4px;border-radius:2px;vertical-align:middle}#members-am-icon-preview.members-am-icon-preview{display:none;width:32px;height:32px;-o-object-fit:contain;object-fit:contain;margin-bottom:6px;border:1px solid #ddd;border-radius:3px;padding:2px;background:#f0f0f1}.members-am-icons .members-am-icon-upload-desc{margin-top:4px}#adminmenu .members-am-menu-badge{display:inline-block;color:#fff;font-size:9px;padding:1px 5px;border-radius:2px;line-height:1.4;vertical-align:middle}
\ No newline at end of file
From 73bb4a27d2ce190fdcd2de89baf89ce17da1cf36 Mon Sep 17 00:00:00 2001
From: Omar ElHawary
Date: Thu, 23 Apr 2026 14:05:45 +0200
Subject: [PATCH 36/73] refactor(admin): adjust dropdown behavior and styling
for improved visibility and interaction in admin menus
---
css/admin.css | 7 +++++--
css/admin.min.css | 2 +-
js/admin-menus.js | 19 +++++++++++++------
js/admin-menus.min.js | 2 +-
4 files changed, 20 insertions(+), 10 deletions(-)
diff --git a/css/admin.css b/css/admin.css
index 43a0a8e..7e6bb4e 100644
--- a/css/admin.css
+++ b/css/admin.css
@@ -1085,7 +1085,8 @@
border: 1px solid var(--members-am-chrome-border, #c3c4c7);
border-radius: 2px;
background: var(--wp-components-color-background, #fff);
- overflow: hidden;
+ /* Must not clip the Reset dropdown (position absolute, extends below this box). */
+ overflow: visible;
}
.members-am-toolbar-row {
@@ -1109,6 +1110,8 @@
}
.members-am-toolbar-group--document {
+ position: relative;
+ z-index: 5;
padding-right: 12px;
border-right: 1px solid var(--members-am-chrome-border, #c3c4c7);
}
@@ -1812,7 +1815,7 @@
.members-am-reset-dropdown {
position: absolute;
- z-index: 100;
+ z-index: 100000;
background: var(--wp-components-color-background, #fff);
border: 1px solid var(--members-am-chrome-border, #c3c4c7);
border-radius: 6px;
diff --git a/css/admin.min.css b/css/admin.min.css
index 4ea3de6..7e7d5e0 100644
--- a/css/admin.min.css
+++ b/css/admin.min.css
@@ -1 +1 @@
-#members-cp h2.hndle,#members-cp-side h2.hndle{border-bottom:none !important;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}#members-cp h2.hndle:before,#members-cp-side h2.hndle:before{content:url("data:image/svg+xml,%3Csvg width='15px' aria-hidden='true' focusable='false' data-prefix='fas' data-icon='users-cog' class='svg-inline--fa fa-users-cog fa-w-20' role='img' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 640 512'%3E%3Cpath fill='currentColor' d='M610.5 341.3c2.6-14.1 2.6-28.5 0-42.6l25.8-14.9c3-1.7 4.3-5.2 3.3-8.5-6.7-21.6-18.2-41.2-33.2-57.4-2.3-2.5-6-3.1-9-1.4l-25.8 14.9c-10.9-9.3-23.4-16.5-36.9-21.3v-29.8c0-3.4-2.4-6.4-5.7-7.1-22.3-5-45-4.8-66.2 0-3.3.7-5.7 3.7-5.7 7.1v29.8c-13.5 4.8-26 12-36.9 21.3l-25.8-14.9c-2.9-1.7-6.7-1.1-9 1.4-15 16.2-26.5 35.8-33.2 57.4-1 3.3.4 6.8 3.3 8.5l25.8 14.9c-2.6 14.1-2.6 28.5 0 42.6l-25.8 14.9c-3 1.7-4.3 5.2-3.3 8.5 6.7 21.6 18.2 41.1 33.2 57.4 2.3 2.5 6 3.1 9 1.4l25.8-14.9c10.9 9.3 23.4 16.5 36.9 21.3v29.8c0 3.4 2.4 6.4 5.7 7.1 22.3 5 45 4.8 66.2 0 3.3-.7 5.7-3.7 5.7-7.1v-29.8c13.5-4.8 26-12 36.9-21.3l25.8 14.9c2.9 1.7 6.7 1.1 9-1.4 15-16.2 26.5-35.8 33.2-57.4 1-3.3-.4-6.8-3.3-8.5l-25.8-14.9zM496 368.5c-26.8 0-48.5-21.8-48.5-48.5s21.8-48.5 48.5-48.5 48.5 21.8 48.5 48.5-21.7 48.5-48.5 48.5zM96 224c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm224 32c1.9 0 3.7-.5 5.6-.6 8.3-21.7 20.5-42.1 36.3-59.2 7.4-8 17.9-12.6 28.9-12.6 6.9 0 13.7 1.8 19.6 5.3l7.9 4.6c.8-.5 1.6-.9 2.4-1.4 7-14.6 11.2-30.8 11.2-48 0-61.9-50.1-112-112-112S208 82.1 208 144c0 61.9 50.1 112 112 112zm105.2 194.5c-2.3-1.2-4.6-2.6-6.8-3.9-8.2 4.8-15.3 9.8-27.5 9.8-10.9 0-21.4-4.6-28.9-12.6-18.3-19.8-32.3-43.9-40.2-69.6-10.7-34.5 24.9-49.7 25.8-50.3-.1-2.6-.1-5.2 0-7.8l-7.9-4.6c-3.8-2.2-7-5-9.8-8.1-3.3.2-6.5.6-9.8.6-24.6 0-47.6-6-68.5-16h-8.3C179.6 288 128 339.6 128 403.2V432c0 26.5 21.5 48 48 48h255.4c-3.7-6-6.2-12.8-6.2-20.3v-9.2zM173.1 274.6C161.5 263.1 145.6 256 128 256H64c-35.3 0-64 28.7-64 64v32c0 17.7 14.3 32 32 32h65.9c6.3-47.4 34.9-87.3 75.2-109.4z'%3E%3C/path%3E%3C/svg%3E");margin-right:5px}#members-cp-side .postbox-header{border-bottom:none !important}#members-cp-side .handle-actions .handle-order-higher,#members-cp-side .handle-actions .handle-order-lower{display:none}#members-cp-side .handle-actions .handlediv{position:absolute;right:5px}.members-upgrade-header{text-align:center;padding:5px}.members-upgrade-header a{color:#f59431}.memberpress-paid-memberships{background-color:#f5f5f5;padding:50px 10px;text-align:center}.memberpress-paid-memberships a{background-color:#0e4598;display:inline-block;padding:10px 20px;border-radius:300px;color:#fff;text-decoration:none;margin-top:20px}#members-cp-side .members-tabs{position:relative}#members-cp-side .members-tab-nav{background-color:transparent;margin-bottom:20px;border-right:none !important}#members-cp-side .members-tab-nav .members-tab-title{width:33.333%;height:50px;border-right:none !important}#members-cp-side .members-tab-nav .members-tab-title a{border:0}#members-cp-side .members-tab-content h3{font-weight:bold;font-size:15px;margin-top:0;color:#000;margin-bottom:10px}#members-cp-side .members-tab-content .memberpress-paid-memberships{text-align:left;padding:20px}#members-cp-side .members-tab-content .memberpress-paid-memberships a{display:block;text-align:center}#members-cp-side .members-tabs .members-tab-nav li a,#members-cp-side .members-tabs .members-tab-nav li[aria-selected="false"] a i{color:#555}#members-cp-side .members-tabs .members-tab-nav li a svg,#members-cp-side .members-tabs .members-tab-nav li[aria-selected="false"] a svg{fill:#555}#members-cp-side .members-tabs .members-tab-nav li[aria-selected="true"] a{background-color:transparent;border-bottom:2px solid #3582ae}#members-cp-side .members-tabs .members-tab-nav li[aria-selected="true"] a i{color:#3582ae}#members-cp-side .members-tabs .members-tab-nav li[aria-selected="true"] a svg{fill:#3582ae}.members-tab-title svg,.members-tab-title[aria-selected="false"] svg{fill:#0073aa}.members-tab-title[aria-selected="true"] svg{fill:#555}#wpcontent #members-admin-header{margin-left:-20px;padding:0;padding-left:22px;background-color:#f9f9f9;background-repeat:repeat;background-size:1200px 75px;min-height:36px;position:relative}#wpcontent #members-admin-header img.members-logo{height:90px}.members-upgrade-header #close-members-upgrade-header{position:absolute;right:20px;top:3px}.members-upgrade-header #close-members-upgrade-header:hover{cursor:pointer}.memberpress-welcome-panel.welcome-panel{margin-top:0;padding:40px 20px;background:#fff}.memberpress-welcome-panel.welcome-panel:before{background:0}.memberpress-welcome-panel.welcome-panel .about-description{margin:20px 0}.memberpress-welcome-panel.welcome-panel-content{margin:0}.memberpress-welcome-panel.welcome-panel-content .mp-logo-wrap>a{display:block}@media screen and (min-width:870px){.members_page_members-settings .members-short-p{max-width:612px;margin-left:auto;margin-right:auto}.members_page_members-settings .welcome-panel-content{text-align:center}}.members_page_members-settings .welcome-panel .button.button-hero{margin-left:auto;margin-right:auto}.members_page_members-settings .members-svg-wrap{display:inline-block;margin:0 auto 20px}@media screen and (max-width:870px){.members_page_members-settings .welcome-panel{padding:20px}.members_page_members-settings .members-svg-wrap{float:left;margin-right:28px}.admin_page_members-settings.rtl .members-svg-wrap{float:right;margin-right:0;margin-left:28px}}.members_page_members-settings .members-svg-link{display:table-cell;text-align:center;width:128px;height:128px;background:#363b3f;color:#fff;padding:24px 16px 16px;border-radius:50%;-webkit-box-sizing:border-box;box-sizing:border-box;border:4px solid #fff;-webkit-box-shadow:0 0 0 4px #363b3f;box-shadow:0 0 0 4px #363b3f}.members_page_members-settings .members-svg-link svg{max-width:84px;max-height:64px;width:auto;height:auto}.members-addons{display:grid;grid-template-columns:1fr 1fr;grid-row-gap:20px;grid-column-gap:20px}.members-addons .plugin-card{margin:0}.members-addons .plugin-card-top{width:100%}.members-addon{width:100%;position:relative;float:none;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.members-addon .desc{margin-bottom:80px}.addon-activate{text-align:center;border:1px solid #ddd;border-radius:3px;padding:5px 10px 10px;display:inline-block;width:100px;position:absolute;right:20px;bottom:20px}.activate-toggle:hover{cursor:pointer}.activate-toggle svg{max-width:20px;position:relative;top:5px}.activate-toggle svg{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.activate-toggle svg.active{-webkit-transform:rotate(0);transform:rotate(0)}.activate-toggle svg path{fill:#ccc}.activate-toggle svg.active path{fill:#8cbd5a}.activate-toggle.processing{cursor:not-allowed;pointer-events:none;opacity:.5}.activate-toggle .action-label{display:inline-block;width:50px;text-align:left}.mepr_dummy_txns{-webkit-filter:blur(3px);filter:blur(3px);position:absolute;top:0;left:0;width:100%;z-index:5;pointer-events:none}.mepr_dummy_txns::after{background-color:rgba(0,0,0,.2);position:absolute;top:0;left:0;width:100%;height:100%;z-index:6}.mepr-upgrade-table{position:relative}.mepr-upgrade-table .mepr-upgrade{position:relative;top:100px;z-index:10;background:rgba(0,0,0,.2);width:100%;height:100%;max-width:600px;margin:0 auto;-webkit-box-shadow:0 0 30px #ccc;box-shadow:0 0 30px #ccc}.mepr-upgrade-content{background-color:#fff;padding:20px;text-align:center}.mepr-upgrade-content h2{font-size:24px}.mepr-upgrade-content h4{font-size:18px}.mepr-upgrade-content .features{display:grid;grid-template-columns:1fr 1fr;grid-column-gap:30px;grid-row-gap:10px;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;text-align:left;padding:10px}.features li:before{content:"\f147";font-family:dashicons;color:green;font-size:20px;position:relative;top:4px;margin-right:10px}.mepr-upgrade-cta{text-align:center;background-color:#f2f2f2;padding:20px}.mepr-upgrade-cta .mepr-cta-button{display:block;max-width:300px;margin:0 auto 20px;background-color:#fd9c27;color:#fff;padding:15px;font-size:18px;font-weight:bold;text-decoration:none;border-radius:300px}.members-plugin-card.plugin-card:nth-child(even){margin-right:inherit}.members-plugin-card.plugin-card:nth-child(odd){clear:none;margin-left:inherit}.members-plugin-card.plugin-card .plugin-card-top{min-height:0;padding:30px 20px}.members-plugin-card.plugin-card .plugin-icon{top:30px}.members-plugin-card.plugin-card .plugin-card-bottom .column-status{font-weight:bold}.members-plugin-card.plugin-card .plugin-card-bottom .column-status .active{color:#8cbd5a}.members-plugin-card.plugin-card .plugin-card-bottom .column-status .inactive{color:red}.members-plugin-card.plugin-card .plugin-icon{width:64px;height:auto}.plugin-icon-small{width:32px;height:auto}.members-plugin-card.plugin-card .name,.members-plugin-card.plugin-card .desc{margin-right:0;margin-left:84px}.members-addons .plugin-card .name,.members-addons .plugin-card .desc p{margin-right:0}@media screen and (max-width:1100px){.members-addons{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}}@media screen and (max-width:600px){.members_page_members-settings .members-svg-link{width:64px;height:64px}.members_page_members-settings .members-svg-link svg{position:absolute;top:14px;left:15px;max-width:30px;max-height:30px}.members_page_members-settings .plugin-card-members-edd-integration .members-svg-link svg,.members_page_members-settings .plugin-card-members-acf-integration .members-svg-link svg,.members_page_members-settings .plugin-card-members-givewp-integration .members-svg-link svg,.members_page_members-settings .plugin-card-members-meta-box-integration .members-svg-link svg,.members_page_members-settings .plugin-card-members-woocommerce-integration .members-svg-link svg{top:10px;left:8px;max-width:40px;max-height:40px}.members_page_members-settings .plugin-card-members-block-permissions .members-svg-link svg,.members_page_members-settings .plugin-card-members-role-hierarchy .members-svg-link svg{left:14px}.members-addons .plugin-card .desc>p,.members-addons .plugin-card .name{margin-left:84px}}.memberpress-about .welcome-panel-column-container{display:-webkit-box;display:-ms-flexbox;display:flex}.memberpress-about .mp-logo{max-width:256px;margin:50px}.members-about-addons{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-column-gap:20px}.members-about-addons .members-plugin-card{margin:0;width:100%}.members-about-addons .members-plugin-card .name h3 a{text-decoration:none}.members-about-addons .members-plugin-card .plugin-card-bottom{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}@media only screen and (max-width:1099px){.members-about-addons{grid-template-columns:1fr;grid-row-gap:20px}}@media screen and (min-width:1100px) and (max-width:1600px){.members-about-addons .members-plugin-card{float:none;width:auto;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.members-plugin-card.plugin-card .desc{margin-left:0;margin-top:50px}.members-plugin-card.plugin-card .desc p{margin-left:0;margin-right:0}.members-plugin-card.plugin-card .plugin-card-bottom .column-status{float:none}.members-plugin-card.plugin-card .plugin-card-bottom .column-updated{float:none;width:auto}}@media screen and (max-width:1200px){.welcome-panel .welcome-panel-column-container{-webkit-box-orient:vertical;-webkit-box-direction:reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse;gap:0;padding:0}.memberpress-about .mp-logo{margin:0 0 20px}}.members-plugin-card.plugin-card .desc p{margin-left:0;margin-right:0}@media only screen and (min-width:783px){.members_page_roles .column-users,.members_page_roles .column-granted_caps,.members_page_roles .column-denied_caps{width:100px;text-align:center}}.members-title-div #titlewrap input{padding:0 8px;font-size:1.7em;line-height:normal;height:1.7em;width:100%;outline:0;margin:0 0 3px;background-color:#fff}.members-title-div input[name="role"]{font-size:13px;height:22px;margin:0;width:16em}#tabcapsdiv{margin-top:1em}#tabcapsdiv>.hndle{padding:10px;border-bottom:1px solid #eee}#tabcapsdiv .inside,#members-cp .inside{margin:0;padding:0}.members-cap-tabs,.members-tabs{overflow:hidden;background:#fff;background:-webkit-gradient(linear,left top,right top,from(#fafafa),color-stop(20%,#fafafa),color-stop(20%,#fff),to(#fff));background:linear-gradient(90deg,#fafafa 0,#fafafa 20%,#fff 20%,#fff 100%)}@media only screen and (max-width:782px){.members-cap-tabs,.members-tabs{background:linear-gradient(90deg,#fafafa 0,#fafafa 48px,#fff 48px,#fff 100%)}}.members-cap-tabs .members-tab-nav,.members-tabs .members-tab-nav{position:relative;float:left;list-style:none;width:20%;line-height:1em;margin:0 0 -1px 0;padding:0;background-color:#fafafa;border-right:1px solid #eee;-webkit-box-sizing:border-box;box-sizing:border-box}.members-cap-tabs .members-tab-nav li,.members-tabs .members-tab-nav li{display:block;position:relative;margin:0;padding:0;line-height:20px}.members-cap-tabs .members-tab-nav li a,.members-tabs .members-tab-nav li a{display:block;margin:0;padding:10px;line-height:20px !important;text-decoration:none;border-bottom:1px solid #eee;-webkit-box-shadow:none;box-shadow:none}.members-cap-tabs .members-tab-nav li a .dashicons,.members-tabs .members-tab-nav li a .dashicons{line-height:20px;margin-right:3px}.members-cap-tabs .members-tab-nav li[aria-selected="true"] a,.members-tabs .members-tab-nav li[aria-selected="true"] a{position:relative;font-weight:bold;color:#555;background-color:#e0e0e0}@media only screen and (max-width:782px){.members-cap-tabs .members-tab-nav,.members-tabs .members-tab-nav{width:48px}.members-cap-tabs .members-tab-nav li a .dashicons,.members-tabs .members-tab-nav li a .dashicons{width:24px;height:24px;font-size:24px;line-height:24px}.members-tab-nav li .dashicons::before,.members-tab-nav li .dashicons::before{width:24px;height:24px}.members-tab-nav li .label{overflow:hidden;position:absolute;top:-1000em;left:-1000em;width:1px;height:1px}}.members-cap-tabs .members-tab-wrap,.members-tabs .members-tab-wrap{float:left;width:80%;margin-left:-1px}@media only screen and (max-width:782px){.members-cap-tabs .members-tab-wrap,.members-tabs .members-tab-wrap{width:calc(100% - 48px)}}#members-cp .members-tab-content{padding:10px;border-left:1px solid #e5e5e5}.members-roles-select th,.members-roles-select td{width:190px;overflow:hidden}.members-roles-select .check-all-th{text-align:center}.members-roles-select .check-all-th label{padding-left:5px}@media only screen and (min-width:850px){#side-sortables .members-tabs{background:#fff}#side-sortables .members-tabs .members-tab-wrap{width:100%}#side-sortables .members-tabs .members-tab-nav{display:table;width:100%}#side-sortables .members-tabs .members-tab-nav li{display:table-cell;text-align:center;border-right:1px solid #eee}#side-sortables .members-tabs .members-tab-nav li:last-of-type{border-right:0}#side-sortables .members-tabs .members-tab-nav li a{padding:10px 0}#side-sortables .members-tabs .members-tab-nav .dashicons{width:24px;height:24px;font-size:24px;line-height:24px}#side-sortables .members-tabs .members-tab-nav .dashicons::before{width:24px;height:24px}#side-sortables .members-tabs .members-tab-nav .label{overflow:hidden;position:absolute;top:-1000em;left:-1000em;width:1px;height:1px}}.members-tabs .members-tabs-label{display:block !important;font-weight:bold;display:inline-block;margin-bottom:4px}.members-tabs .butterbean-control-checkbox .members-tabs-label{display:inline !important}.members-tabs .members-tabs-description{display:block;font-style:italic;margin-top:4px}.members-tabs .members-tabs-label+.members-tabs-description{margin-top:0;margin-bottom:4px}#tabcapsdiv table{border-right:0;border-top:0;border-bottom:0}#tabcapsdiv table td,#tabcapsdiv table th{padding:10px;padding-bottom:10px;border-bottom:1px solid #eee;font-size:13px;line-height:20px}#tabcapsdiv table td{padding:9px}#tabcapsdiv tbody tr:last-of-type td{border-bottom:0}#tabcapsdiv tfoot th{border-color:#eee}@media only screen and (max-width:782px){#tabcapsdiv table td,#tabcapsdiv table th{line-height:24px}}.members-roles-select .column-grant,.members-roles-select .column-deny{width:70px !important;text-align:left;display:table-cell !important;clear:none !important}.members-roles-select thead th,.members-roles-select tfoot th{padding:9px !important}.members-roles-select .column-grant input,.members-roles-select .column-deny input{margin:0 5px 0 0;vertical-align:middle}.members-roles-select tbody tr:nth-child(even){background:#f2f2f2}.members-cap-tabs button{display:inline;margin:-4px;line-height:inherit;padding:4px 8px;border:1px solid transparent;background:transparent;border-radius:0;outline:0;-webkit-transition:all .25s ease-out;transition:all .25s ease-out}.members-cap-tabs button:hover,.members-cap-tabs button:focus{border-color:#eee;background:#fafafa;cursor:pointer}.members-cap-tabs button:active{color:#0073aa;border-color:#0073aa}.members-cap-tabs button+.dashicons{display:none;margin-top:1px;margin-bottom:-1px;line-height:inherit}.members-cap-tabs button:hover+.dashicons,.members-cap-tabs button:focus+.dashicons{display:inline-block}.members-tab-content .members-highlight{background-color:rgba(0,115,170,0.05)}.members-tab-content tbody{-webkit-transition:all 2s ease-in-out;transition:all 2s ease-in-out}.members-cp-role-list-wrap{overflow:auto;min-height:42px;max-height:200px;padding:0 .9em;border:solid 1px #dfdfdf;background-color:#fdfdfd}#wpbody-content{padding-bottom:200px}.members-footer-promotion{text-align:center;font-weight:400;font-size:13px;line-height:16px;color:#787c82;padding:20px 0 30px 0;margin-bottom:20px}.members-footer-promotion p{font-weight:600}.members-footer-promotion-links,.members-footer-promotion-social{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.members-footer-promotion-links{margin:9px 0 0}.members-footer-promotion-links span{color:#c3c4c7;padding:0 7px}.members-footer-promotion-social{margin:10px 0 0 0;gap:10px}.members-footer-promotion-social li{margin-bottom:0}.members-footer-promotion-social a{display:block;height:16px}.members_page_members-settings.rtl{.addon-activate{left:20px;right:unset}.members-addons .plugin-card{.name,.desc p{margin-left:0;margin-right:148px}}}.button.button-warning{background:#dc3232;border-color:#dc3232;color:#fff}.button.button-warning:hover,.button.button-warning:focus{background:#c92424;border-color:#c92424;color:#fff}.members-reset-spinner{float:none;margin-top:0;vertical-align:middle}.members-admin-menus-wrap{max-width:1400px;--members-am-accent-use:var(--members-am-accent,var(--wp-admin-theme-color,#2271b1));--members-am-surface-use:var(--members-am-surface,color-mix(in srgb,var(--members-am-base,#1d2327) 88%,#fff 12%));--members-am-border-on-base-fallback:color-mix(in srgb,var(--members-am-base,#1d2327) 62%,#fff 38%);--members-am-chrome-bg:var(--wp-components-color-gray-100,#f6f7f7);--members-am-chrome-border:var(--wp-components-color-gray-400,#c3c4c7);--members-am-muted:var(--wp-components-color-gray-600,#646970)}.members-am-notices{margin:0 0 12px}.members-am-notices .notice{margin:0 0 8px}.members-admin-menus-toolbar{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;gap:0;margin-bottom:16px;border:1px solid var(--members-am-chrome-border,#c3c4c7);border-radius:2px;background:var(--wp-components-color-background,#fff);overflow:hidden}.members-am-toolbar-row{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px}.members-am-toolbar-row--primary{padding:10px 12px;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;row-gap:10px}.members-am-toolbar-group{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px}.members-am-toolbar-group--document{padding-right:12px;border-right:1px solid var(--members-am-chrome-border,#c3c4c7)}.members-am-toolbar-row--primary .members-am-toolbar-primary-user{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px;margin-left:8px;-webkit-box-flex:0;-ms-flex:0 1 auto;flex:0 1 auto;min-width:0}.members-am-toolbar-row--primary .members-am-toolbar-primary-user #members-am-user-search.members-am-user-search-input{width:168px;max-width:100%;min-width:0}.members-am-toolbar-group--view{margin-left:auto;-ms-flex-wrap:nowrap;flex-wrap:nowrap}.members-am-toolbar-extra{background:var(--members-am-chrome-bg,#f6f7f7);border-top:1px solid var(--members-am-chrome-border,#c3c4c7);padding:10px 12px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:10px}.members-am-toolbar-extra[hidden]{display:none !important}.members-am-toolbar-row--extra-tools{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-wrap:wrap;flex-wrap:wrap;row-gap:10px}.members-am-toolbar-row--extra-tools .members-am-copy-wrap{margin-left:4px;padding-left:12px;border-left:1px solid var(--members-am-chrome-border,#c3c4c7)}.members-am-toolbar-row--extra-tools .members-am-toolbar-group--io{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;margin-left:8px;padding-left:12px;border-left:1px solid var(--members-am-chrome-border,#c3c4c7)}.members-am-more-tools,.members-am-more-tools:hover,.members-am-more-tools:focus,.members-am-more-tools:active{text-decoration:none}.members-am-more-tools{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:2px;white-space:nowrap;padding:2px 2px 2px 4px;vertical-align:middle}.members-am-more-tools .members-am-more-tools-chevron,.members-am-more-tools:hover .members-am-more-tools-chevron,.members-am-more-tools:focus .members-am-more-tools-chevron,.members-am-more-tools:active .members-am-more-tools-chevron{text-decoration:none}.members-am-more-tools .members-am-more-tools-chevron{width:18px;height:18px;font-size:18px;line-height:1;opacity:.88;padding-top:6px;-webkit-transition:-webkit-transform .15s ease;transition:-webkit-transform .15s ease;transition:transform .15s ease;transition:transform .15s ease,-webkit-transform .15s ease}.members-am-more-tools.is-open .members-am-more-tools-chevron{-webkit-transform:rotate(-180deg);transform:rotate(-180deg)}@media(prefers-reduced-motion:reduce){.members-am-more-tools .members-am-more-tools-chevron{-webkit-transition:none;transition:none}}@media screen and (max-width:782px){.members-am-toolbar-group--document{border-right:0;padding-right:0;border-bottom:1px solid var(--members-am-chrome-border,#c3c4c7);padding-bottom:10px;width:100%}.members-am-toolbar-group--view{margin-left:0;width:100%;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.members-am-toolbar-row--primary .members-am-toolbar-primary-user{margin-left:0;padding-left:0;border-left:0;padding-top:8px;border-top:1px solid var(--members-am-chrome-border,#c3c4c7);width:100%;max-width:none}.members-am-toolbar-row--primary .members-am-toolbar-primary-user #members-am-user-search.members-am-user-search-input{width:100%;max-width:100%}.members-am-toolbar-row--extra-tools .members-am-admin-editable{width:100%}.members-am-toolbar-row--extra-tools .members-am-copy-wrap{margin-left:0;padding-left:0;border-left:0;padding-top:8px;border-top:1px solid var(--members-am-chrome-border,#c3c4c7);width:100%}.members-am-toolbar-row--extra-tools .members-am-toolbar-group--io{margin-left:0;padding-left:0;border-left:0;padding-top:8px;border-top:1px solid var(--members-am-chrome-border,#c3c4c7);width:100%}}.members-am-toolbar-loading{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;margin-left:4px;color:var(--members-am-muted,#646970);font-size:13px;line-height:1}.members-am-toolbar-loading .spinner{float:none;margin:0}.members-am-toolbar-loading[hidden]{display:none !important}.members-am-copy-wrap label{margin-right:8px}.members-am-chips{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:8px;margin-bottom:12px}.members-am-chip{border-radius:999px;padding:4px 12px;border:1px solid var(--members-am-chrome-border,#c3c4c7);background:var(--members-am-chrome-bg,#f6f7f7);cursor:pointer}.members-am-chip.is-active{background:var(--members-am-accent-use);border-color:var(--members-am-accent-use);color:var(--wp-components-color-accent-inverted,#fff)}.members-am-carousel-wrap{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;gap:8px;margin-bottom:8px}.members-am-carousel-prev,.members-am-carousel-next{-ms-flex-item-align:center;align-self:center;width:36px;height:36px;border-radius:50%;border:1px solid var(--members-am-chrome-border,#c3c4c7);background:var(--wp-components-color-background,#fff);cursor:pointer}.members-am-columns{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-ms-flex:1;flex:1;gap:12px;min-height:320px;overflow:hidden}.members-am-column{-webkit-box-flex:1;-ms-flex:1;flex:1;min-width:0;background:var(--members-am-base,#1d2327);border-radius:4px;color:var(--members-am-fg-on-base,#f0f0f1);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.members-am-user-column{border:2px dashed var(--wp-components-color-gray-700,#8c8f94)}.members-am-sidebar-head{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:8px 10px;background:var(--members-am-surface-use);border-radius:4px 4px 0 0;font-weight:600;font-size:12px;text-transform:uppercase;letter-spacing:.04em;color:var(--members-am-fg-on-surface,var(--members-am-fg-on-base,#f0f0f1))}.members-am-col-filter{padding:6px 8px 8px;border-bottom:1px solid var(--members-am-border-on-base,var(--members-am-border-on-base-fallback));-ms-flex-negative:0;flex-shrink:0}.members-am-col-filter-input{width:100%;max-width:100%;-webkit-box-sizing:border-box;box-sizing:border-box;font-size:12px;line-height:1.4;padding:4px 8px;border-radius:2px;border:1px solid var(--members-am-border-on-base,var(--members-am-border-on-base-fallback));background:var(--members-am-base,#1d2327);color:var(--members-am-fg-on-base,#f0f0f1)}.members-am-col-filter-input::-webkit-input-placeholder{color:var(--members-am-fg-muted-on-base,var(--wp-components-color-gray-700,#8c8f94));opacity:1}.members-am-col-filter-input::-moz-placeholder{color:var(--members-am-fg-muted-on-base,var(--wp-components-color-gray-700,#8c8f94));opacity:1}.members-am-col-filter-input:-ms-input-placeholder{color:var(--members-am-fg-muted-on-base,var(--wp-components-color-gray-700,#8c8f94));opacity:1}.members-am-col-filter-input::-ms-input-placeholder{color:var(--members-am-fg-muted-on-base,var(--wp-components-color-gray-700,#8c8f94));opacity:1}.members-am-col-filter-input::placeholder{color:var(--members-am-fg-muted-on-base,var(--wp-components-color-gray-700,#8c8f94));opacity:1}.members-am-col-filter-input:focus{border-color:var(--members-am-accent-use);outline:1px solid transparent;-webkit-box-shadow:0 0 0 var(--wp-admin-border-width-focus,1px) var(--members-am-accent-use);box-shadow:0 0 0 var(--wp-admin-border-width-focus,1px) var(--members-am-accent-use)}.members-am-col-bulk{padding:0 8px 8px;border-bottom:1px solid var(--members-am-border-on-base,var(--members-am-border-on-base-fallback));-ms-flex-negative:0;flex-shrink:0}.members-am-col-bulk-toolbar,.members-am-col-collapse-toolbar{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:6px;margin-bottom:6px;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.members-am-col-bulk-toolbar .button.button-small,.members-am-col-collapse-toolbar .button.button-small{font-size:11px;min-height:26px;line-height:24px;padding:0 8px;background:var(--members-am-surface-use);border-color:var(--members-am-border-on-surface,var(--members-am-border-on-base,var(--members-am-border-on-base-fallback)));color:var(--members-am-fg-on-surface,var(--members-am-fg-on-base,#f0f0f1))}.members-am-col-bulk-toolbar .button.button-small:hover,.members-am-col-collapse-toolbar .button.button-small:hover{background:color-mix(in srgb,var(--members-am-surface-use) 85%,#fff 15%);border-color:var(--wp-components-color-gray-700,#8c8f94);color:var(--members-am-fg-on-surface,var(--members-am-fg-on-base,#f0f0f1))}.members-am-item-lead{-ms-flex-negative:0;flex-shrink:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:22px;padding:2px 0 0}.members-am-collapse-spacer{display:block;width:20px;height:20px;-ms-flex-negative:0;flex-shrink:0}.members-am-collapse-toggle{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:22px;height:22px;margin:0;padding:0;border:0;background:transparent;color:var(--members-am-fg-muted-on-base,var(--members-am-chrome-border,#c3c4c7));border-radius:2px;cursor:pointer;-ms-flex-negative:0;flex-shrink:0}.members-am-collapse-toggle:hover,.members-am-collapse-toggle:focus{color:var(--members-am-fg-on-base,#f0f0f1);background:color-mix(in srgb,var(--members-am-fg-on-base,#f0f0f1) 12%,transparent);outline:0}.members-am-collapse-toggle .dashicons{font-size:18px;width:18px;height:18px}.members-am-item-cb-wrap{-ms-flex-negative:0;flex-shrink:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;padding:2px 4px 0 0}.members-am-item-cb{margin:0;width:16px;height:16px;-ms-flex-negative:0;flex-shrink:0}.members-am-bulk-select{width:100%;max-width:100%;-webkit-box-sizing:border-box;box-sizing:border-box;font-size:12px;line-height:1.4;padding:4px 8px;border-radius:2px;border:1px solid var(--members-am-border-on-base,var(--members-am-border-on-base-fallback));background:var(--members-am-base,#1d2327);color:var(--members-am-fg-on-base,#f0f0f1)}.members-am-bulk-select:focus{border-color:var(--members-am-accent-use);outline:1px solid transparent;-webkit-box-shadow:0 0 0 var(--wp-admin-border-width-focus,1px) var(--members-am-accent-use);box-shadow:0 0 0 var(--wp-admin-border-width-focus,1px) var(--members-am-accent-use)}.members-am-item.members-am-filter-hidden,.members-am-sep.members-am-filter-hidden,.members-am-item.members-am-collapse-hidden{display:none !important}.members-am-col-move button{margin-left:4px;padding:0 6px;min-height:24px;line-height:22px;font-size:11px}.members-am-sidebar-list{padding:6px 0 12px;overflow-y:auto;max-height:480px}.members-am-item{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;gap:4px;padding:6px 10px 6px 6px;cursor:pointer;border-left:3px solid transparent;font-size:13px}.members-am-item.is-sub{padding-left:22px;font-size:12px;opacity:.95}.members-am-item.is-sub-deep{padding-left:36px}.members-am-sidebar-list .members-am-item{cursor:-webkit-grab;cursor:grab}.members-am-sidebar-list .members-am-item:active{cursor:-webkit-grabbing;cursor:grabbing}.members-am-sort-placeholder{-webkit-box-sizing:border-box;box-sizing:border-box;min-height:36px;margin:2px 0;background:color-mix(in srgb,var(--members-am-accent-use) 8%,transparent);border:1px dashed var(--members-am-accent-use);border-radius:2px}.members-am-item.is-hidden{opacity:.18}.members-am-item.is-no-cap{opacity:.35}.members-am-item.is-no-cap.is-hidden{opacity:.15}.members-am-item.is-selected{border-left-color:var(--members-am-accent-use);background:color-mix(in srgb,var(--members-am-accent-use) 15%,transparent)}.members-am-item-main{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;min-width:0}.members-am-item-main .dashicons{font-size:18px;width:18px;height:18px}.members-am-item-label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.members-am-item-actions{display:none;gap:2px}.members-am-item:hover .members-am-item-actions{display:-webkit-box;display:-ms-flexbox;display:flex}.members-am-item-actions button{min-height:22px;padding:0 4px;line-height:20px;font-size:11px}.members-am-sep{text-align:center;opacity:.35;font-size:11px;padding:4px 0}.members-am-carousel-dots{text-align:center;margin-bottom:4px}.members-am-dot{width:8px;height:8px;border-radius:50%;border:0;margin:0 4px;padding:0;background:var(--members-am-chrome-border,#c3c4c7);cursor:pointer}.members-am-dot.is-active{background:var(--members-am-accent-use)}.members-am-carousel-status{text-align:center;color:var(--members-am-muted,#646970);font-size:12px;margin-top:0}.members-am-badge{font-size:9px;text-transform:uppercase;padding:1px 4px;border-radius:2px;margin-right:4px;vertical-align:middle}.members-am-badge-new{background:var(--members-am-accent-use);color:var(--wp-components-color-accent-inverted,#fff)}.members-am-badge-edit{background:#dba617;color:var(--members-am-base,#1d2327)}.members-am-badge-nocap{background:var(--wp-components-color-gray-700,#8c8f94);color:var(--wp-components-color-accent-inverted,#fff)}.members-am-legend{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:16px;margin:0 0 8px;padding:0;font-size:12px;color:var(--members-am-muted,#646970)}.members-am-legend-item{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:4px}.members-am-edit-panel{margin-top:20px;padding:16px;border:1px solid var(--members-am-chrome-border,#c3c4c7);background:var(--wp-components-color-background,#fff);border-radius:4px}.members-am-edit-panel-header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:12px}.members-am-edit-panel-header h2{margin:0;font-size:16px}.members-am-edit-toolbar{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:12px;margin-bottom:12px}.members-am-edit-target-wrap select{margin-left:8px}.members-am-level-actions .button{margin-right:6px}.members-am-demote-wrap{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:6px}.members-am-demote-wrap .members-am-demote-select{min-width:200px;max-width:min(320px,100%)}.members-am-edit-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:16px}.members-am-edit-col label{display:block;font-weight:600;margin-bottom:4px}.members-am-icon-tabs{margin-bottom:8px}.members-am-icon-tabs .button{margin-right:4px;margin-bottom:4px}.members-am-icon-tabs .button.is-active{background:var(--members-am-accent-use);border-color:var(--members-am-accent-use);color:var(--wp-components-color-accent-inverted,#fff)}.members-am-icon-grid{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:4px;max-height:160px;overflow-y:auto;border:1px solid var(--wp-components-color-gray-200,#dcdcde);padding:8px;background:var(--members-am-chrome-bg,#f6f7f7);margin-bottom:8px}.members-am-icon-pick{width:36px;height:36px;padding:0;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;border:1px solid var(--members-am-chrome-border,#c3c4c7);background:var(--wp-components-color-background,#fff);cursor:pointer}.members-am-bulk-visibility-hint{margin:0 0 8px;font-size:12px;color:var(--members-am-fg-muted-on-base,#646970)}.members-am-vis-role-filter-wrap{margin-bottom:8px}.members-am-vis-row.members-am-vis-filter-hidden{display:none}.members-am-vis-row{display:block;margin-bottom:6px;font-weight:normal}.members-am-reset-dropdown{position:absolute;z-index:100;background:var(--wp-components-color-background,#fff);border:1px solid var(--members-am-chrome-border,#c3c4c7);border-radius:6px;padding:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-shadow:0 4px 12px rgba(0,0,0,0.15);box-shadow:0 4px 12px rgba(0,0,0,0.15);min-width:280px;top:100%;left:0;margin-top:4px;overflow:hidden}.members-am-reset-title{padding:10px 14px;font-weight:600;font-size:13px;border-bottom:1px solid var(--wp-components-color-gray-200,#f0f0f0);color:var(--wp-components-color-foreground,#1d2327)}.members-am-reset-option{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;gap:10px;padding:12px 14px;border:0;background:0;cursor:pointer;text-align:left;width:100%;border-bottom:1px solid var(--wp-components-color-gray-200,#f0f0f0);-webkit-transition:background .15s;transition:background .15s}.members-am-reset-option:last-child{border-bottom:0}.members-am-reset-option:hover{background:var(--members-am-chrome-bg,#f6f7f7)}.members-am-reset-option .dashicons{margin-top:2px;color:var(--members-am-muted,#646970)}.members-am-reset-option-text{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:2px}.members-am-reset-option-text strong{font-size:13px;color:var(--wp-components-color-foreground,#1d2327)}.members-am-reset-option-text small{font-size:12px;color:var(--members-am-muted,#646970)}.members-am-reset-danger:hover{background:#fcf0f1}.members-am-reset-danger .dashicons{color:#d63638}.members-am-reset-danger:hover strong{color:#d63638}@media screen and (max-width:782px){.members-am-columns{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}}.members-am-user-suggestions{position:absolute;z-index:100;background:var(--wp-components-color-background,#fff);border:1px solid var(--members-am-chrome-border,#c3c4c7);border-radius:4px;max-height:200px;overflow-y:auto;width:100%;-webkit-box-shadow:0 2px 6px rgba(0,0,0,0.15);box-shadow:0 2px 6px rgba(0,0,0,0.15);top:100%;left:0}.members-am-user-suggestion{padding:8px 12px;cursor:pointer;font-size:13px;border-bottom:1px solid var(--wp-components-color-gray-200,#f0f0f0)}.members-am-user-suggestion:hover{background:color-mix(in srgb,var(--members-am-accent-use) 8%,var(--wp-components-color-background,#fff))}.members-am-user-suggestion:last-child{border-bottom:0}#members-am-import-file.members-am-import-file-hidden{display:none}.members-am-user-search-wrap{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px}#members-am-user-search.members-am-user-search-input{width:168px;max-width:100%}.members-am-legend-visibility-icon{font-size:14px;width:14px;height:14px;vertical-align:middle}.members-am-legend-nocap-badge{display:inline-block;background:#8c8f94;color:#fff;font-size:9px;padding:1px 4px;border-radius:2px;vertical-align:middle}#members-am-icon-preview.members-am-icon-preview{display:none;width:32px;height:32px;-o-object-fit:contain;object-fit:contain;margin-bottom:6px;border:1px solid #ddd;border-radius:3px;padding:2px;background:#f0f0f1}.members-am-icons .members-am-icon-upload-desc{margin-top:4px}#adminmenu .members-am-menu-badge{display:inline-block;color:#fff;font-size:9px;padding:1px 5px;border-radius:2px;line-height:1.4;vertical-align:middle}
\ No newline at end of file
+#members-cp h2.hndle,#members-cp-side h2.hndle{border-bottom:none !important;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}#members-cp h2.hndle:before,#members-cp-side h2.hndle:before{content:url("data:image/svg+xml,%3Csvg width='15px' aria-hidden='true' focusable='false' data-prefix='fas' data-icon='users-cog' class='svg-inline--fa fa-users-cog fa-w-20' role='img' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 640 512'%3E%3Cpath fill='currentColor' d='M610.5 341.3c2.6-14.1 2.6-28.5 0-42.6l25.8-14.9c3-1.7 4.3-5.2 3.3-8.5-6.7-21.6-18.2-41.2-33.2-57.4-2.3-2.5-6-3.1-9-1.4l-25.8 14.9c-10.9-9.3-23.4-16.5-36.9-21.3v-29.8c0-3.4-2.4-6.4-5.7-7.1-22.3-5-45-4.8-66.2 0-3.3.7-5.7 3.7-5.7 7.1v29.8c-13.5 4.8-26 12-36.9 21.3l-25.8-14.9c-2.9-1.7-6.7-1.1-9 1.4-15 16.2-26.5 35.8-33.2 57.4-1 3.3.4 6.8 3.3 8.5l25.8 14.9c-2.6 14.1-2.6 28.5 0 42.6l-25.8 14.9c-3 1.7-4.3 5.2-3.3 8.5 6.7 21.6 18.2 41.1 33.2 57.4 2.3 2.5 6 3.1 9 1.4l25.8-14.9c10.9 9.3 23.4 16.5 36.9 21.3v29.8c0 3.4 2.4 6.4 5.7 7.1 22.3 5 45 4.8 66.2 0 3.3-.7 5.7-3.7 5.7-7.1v-29.8c13.5-4.8 26-12 36.9-21.3l25.8 14.9c2.9 1.7 6.7 1.1 9-1.4 15-16.2 26.5-35.8 33.2-57.4 1-3.3-.4-6.8-3.3-8.5l-25.8-14.9zM496 368.5c-26.8 0-48.5-21.8-48.5-48.5s21.8-48.5 48.5-48.5 48.5 21.8 48.5 48.5-21.7 48.5-48.5 48.5zM96 224c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm224 32c1.9 0 3.7-.5 5.6-.6 8.3-21.7 20.5-42.1 36.3-59.2 7.4-8 17.9-12.6 28.9-12.6 6.9 0 13.7 1.8 19.6 5.3l7.9 4.6c.8-.5 1.6-.9 2.4-1.4 7-14.6 11.2-30.8 11.2-48 0-61.9-50.1-112-112-112S208 82.1 208 144c0 61.9 50.1 112 112 112zm105.2 194.5c-2.3-1.2-4.6-2.6-6.8-3.9-8.2 4.8-15.3 9.8-27.5 9.8-10.9 0-21.4-4.6-28.9-12.6-18.3-19.8-32.3-43.9-40.2-69.6-10.7-34.5 24.9-49.7 25.8-50.3-.1-2.6-.1-5.2 0-7.8l-7.9-4.6c-3.8-2.2-7-5-9.8-8.1-3.3.2-6.5.6-9.8.6-24.6 0-47.6-6-68.5-16h-8.3C179.6 288 128 339.6 128 403.2V432c0 26.5 21.5 48 48 48h255.4c-3.7-6-6.2-12.8-6.2-20.3v-9.2zM173.1 274.6C161.5 263.1 145.6 256 128 256H64c-35.3 0-64 28.7-64 64v32c0 17.7 14.3 32 32 32h65.9c6.3-47.4 34.9-87.3 75.2-109.4z'%3E%3C/path%3E%3C/svg%3E");margin-right:5px}#members-cp-side .postbox-header{border-bottom:none !important}#members-cp-side .handle-actions .handle-order-higher,#members-cp-side .handle-actions .handle-order-lower{display:none}#members-cp-side .handle-actions .handlediv{position:absolute;right:5px}.members-upgrade-header{text-align:center;padding:5px}.members-upgrade-header a{color:#f59431}.memberpress-paid-memberships{background-color:#f5f5f5;padding:50px 10px;text-align:center}.memberpress-paid-memberships a{background-color:#0e4598;display:inline-block;padding:10px 20px;border-radius:300px;color:#fff;text-decoration:none;margin-top:20px}#members-cp-side .members-tabs{position:relative}#members-cp-side .members-tab-nav{background-color:transparent;margin-bottom:20px;border-right:none !important}#members-cp-side .members-tab-nav .members-tab-title{width:33.333%;height:50px;border-right:none !important}#members-cp-side .members-tab-nav .members-tab-title a{border:0}#members-cp-side .members-tab-content h3{font-weight:bold;font-size:15px;margin-top:0;color:#000;margin-bottom:10px}#members-cp-side .members-tab-content .memberpress-paid-memberships{text-align:left;padding:20px}#members-cp-side .members-tab-content .memberpress-paid-memberships a{display:block;text-align:center}#members-cp-side .members-tabs .members-tab-nav li a,#members-cp-side .members-tabs .members-tab-nav li[aria-selected="false"] a i{color:#555}#members-cp-side .members-tabs .members-tab-nav li a svg,#members-cp-side .members-tabs .members-tab-nav li[aria-selected="false"] a svg{fill:#555}#members-cp-side .members-tabs .members-tab-nav li[aria-selected="true"] a{background-color:transparent;border-bottom:2px solid #3582ae}#members-cp-side .members-tabs .members-tab-nav li[aria-selected="true"] a i{color:#3582ae}#members-cp-side .members-tabs .members-tab-nav li[aria-selected="true"] a svg{fill:#3582ae}.members-tab-title svg,.members-tab-title[aria-selected="false"] svg{fill:#0073aa}.members-tab-title[aria-selected="true"] svg{fill:#555}#wpcontent #members-admin-header{margin-left:-20px;padding:0;padding-left:22px;background-color:#f9f9f9;background-repeat:repeat;background-size:1200px 75px;min-height:36px;position:relative}#wpcontent #members-admin-header img.members-logo{height:90px}.members-upgrade-header #close-members-upgrade-header{position:absolute;right:20px;top:3px}.members-upgrade-header #close-members-upgrade-header:hover{cursor:pointer}.memberpress-welcome-panel.welcome-panel{margin-top:0;padding:40px 20px;background:#fff}.memberpress-welcome-panel.welcome-panel:before{background:0}.memberpress-welcome-panel.welcome-panel .about-description{margin:20px 0}.memberpress-welcome-panel.welcome-panel-content{margin:0}.memberpress-welcome-panel.welcome-panel-content .mp-logo-wrap>a{display:block}@media screen and (min-width:870px){.members_page_members-settings .members-short-p{max-width:612px;margin-left:auto;margin-right:auto}.members_page_members-settings .welcome-panel-content{text-align:center}}.members_page_members-settings .welcome-panel .button.button-hero{margin-left:auto;margin-right:auto}.members_page_members-settings .members-svg-wrap{display:inline-block;margin:0 auto 20px}@media screen and (max-width:870px){.members_page_members-settings .welcome-panel{padding:20px}.members_page_members-settings .members-svg-wrap{float:left;margin-right:28px}.admin_page_members-settings.rtl .members-svg-wrap{float:right;margin-right:0;margin-left:28px}}.members_page_members-settings .members-svg-link{display:table-cell;text-align:center;width:128px;height:128px;background:#363b3f;color:#fff;padding:24px 16px 16px;border-radius:50%;-webkit-box-sizing:border-box;box-sizing:border-box;border:4px solid #fff;-webkit-box-shadow:0 0 0 4px #363b3f;box-shadow:0 0 0 4px #363b3f}.members_page_members-settings .members-svg-link svg{max-width:84px;max-height:64px;width:auto;height:auto}.members-addons{display:grid;grid-template-columns:1fr 1fr;grid-row-gap:20px;grid-column-gap:20px}.members-addons .plugin-card{margin:0}.members-addons .plugin-card-top{width:100%}.members-addon{width:100%;position:relative;float:none;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.members-addon .desc{margin-bottom:80px}.addon-activate{text-align:center;border:1px solid #ddd;border-radius:3px;padding:5px 10px 10px;display:inline-block;width:100px;position:absolute;right:20px;bottom:20px}.activate-toggle:hover{cursor:pointer}.activate-toggle svg{max-width:20px;position:relative;top:5px}.activate-toggle svg{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.activate-toggle svg.active{-webkit-transform:rotate(0);transform:rotate(0)}.activate-toggle svg path{fill:#ccc}.activate-toggle svg.active path{fill:#8cbd5a}.activate-toggle.processing{cursor:not-allowed;pointer-events:none;opacity:.5}.activate-toggle .action-label{display:inline-block;width:50px;text-align:left}.mepr_dummy_txns{-webkit-filter:blur(3px);filter:blur(3px);position:absolute;top:0;left:0;width:100%;z-index:5;pointer-events:none}.mepr_dummy_txns::after{background-color:rgba(0,0,0,.2);position:absolute;top:0;left:0;width:100%;height:100%;z-index:6}.mepr-upgrade-table{position:relative}.mepr-upgrade-table .mepr-upgrade{position:relative;top:100px;z-index:10;background:rgba(0,0,0,.2);width:100%;height:100%;max-width:600px;margin:0 auto;-webkit-box-shadow:0 0 30px #ccc;box-shadow:0 0 30px #ccc}.mepr-upgrade-content{background-color:#fff;padding:20px;text-align:center}.mepr-upgrade-content h2{font-size:24px}.mepr-upgrade-content h4{font-size:18px}.mepr-upgrade-content .features{display:grid;grid-template-columns:1fr 1fr;grid-column-gap:30px;grid-row-gap:10px;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;text-align:left;padding:10px}.features li:before{content:"\f147";font-family:dashicons;color:green;font-size:20px;position:relative;top:4px;margin-right:10px}.mepr-upgrade-cta{text-align:center;background-color:#f2f2f2;padding:20px}.mepr-upgrade-cta .mepr-cta-button{display:block;max-width:300px;margin:0 auto 20px;background-color:#fd9c27;color:#fff;padding:15px;font-size:18px;font-weight:bold;text-decoration:none;border-radius:300px}.members-plugin-card.plugin-card:nth-child(even){margin-right:inherit}.members-plugin-card.plugin-card:nth-child(odd){clear:none;margin-left:inherit}.members-plugin-card.plugin-card .plugin-card-top{min-height:0;padding:30px 20px}.members-plugin-card.plugin-card .plugin-icon{top:30px}.members-plugin-card.plugin-card .plugin-card-bottom .column-status{font-weight:bold}.members-plugin-card.plugin-card .plugin-card-bottom .column-status .active{color:#8cbd5a}.members-plugin-card.plugin-card .plugin-card-bottom .column-status .inactive{color:red}.members-plugin-card.plugin-card .plugin-icon{width:64px;height:auto}.plugin-icon-small{width:32px;height:auto}.members-plugin-card.plugin-card .name,.members-plugin-card.plugin-card .desc{margin-right:0;margin-left:84px}.members-addons .plugin-card .name,.members-addons .plugin-card .desc p{margin-right:0}@media screen and (max-width:1100px){.members-addons{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}}@media screen and (max-width:600px){.members_page_members-settings .members-svg-link{width:64px;height:64px}.members_page_members-settings .members-svg-link svg{position:absolute;top:14px;left:15px;max-width:30px;max-height:30px}.members_page_members-settings .plugin-card-members-edd-integration .members-svg-link svg,.members_page_members-settings .plugin-card-members-acf-integration .members-svg-link svg,.members_page_members-settings .plugin-card-members-givewp-integration .members-svg-link svg,.members_page_members-settings .plugin-card-members-meta-box-integration .members-svg-link svg,.members_page_members-settings .plugin-card-members-woocommerce-integration .members-svg-link svg{top:10px;left:8px;max-width:40px;max-height:40px}.members_page_members-settings .plugin-card-members-block-permissions .members-svg-link svg,.members_page_members-settings .plugin-card-members-role-hierarchy .members-svg-link svg{left:14px}.members-addons .plugin-card .desc>p,.members-addons .plugin-card .name{margin-left:84px}}.memberpress-about .welcome-panel-column-container{display:-webkit-box;display:-ms-flexbox;display:flex}.memberpress-about .mp-logo{max-width:256px;margin:50px}.members-about-addons{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-column-gap:20px}.members-about-addons .members-plugin-card{margin:0;width:100%}.members-about-addons .members-plugin-card .name h3 a{text-decoration:none}.members-about-addons .members-plugin-card .plugin-card-bottom{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}@media only screen and (max-width:1099px){.members-about-addons{grid-template-columns:1fr;grid-row-gap:20px}}@media screen and (min-width:1100px) and (max-width:1600px){.members-about-addons .members-plugin-card{float:none;width:auto;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.members-plugin-card.plugin-card .desc{margin-left:0;margin-top:50px}.members-plugin-card.plugin-card .desc p{margin-left:0;margin-right:0}.members-plugin-card.plugin-card .plugin-card-bottom .column-status{float:none}.members-plugin-card.plugin-card .plugin-card-bottom .column-updated{float:none;width:auto}}@media screen and (max-width:1200px){.welcome-panel .welcome-panel-column-container{-webkit-box-orient:vertical;-webkit-box-direction:reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse;gap:0;padding:0}.memberpress-about .mp-logo{margin:0 0 20px}}.members-plugin-card.plugin-card .desc p{margin-left:0;margin-right:0}@media only screen and (min-width:783px){.members_page_roles .column-users,.members_page_roles .column-granted_caps,.members_page_roles .column-denied_caps{width:100px;text-align:center}}.members-title-div #titlewrap input{padding:0 8px;font-size:1.7em;line-height:normal;height:1.7em;width:100%;outline:0;margin:0 0 3px;background-color:#fff}.members-title-div input[name="role"]{font-size:13px;height:22px;margin:0;width:16em}#tabcapsdiv{margin-top:1em}#tabcapsdiv>.hndle{padding:10px;border-bottom:1px solid #eee}#tabcapsdiv .inside,#members-cp .inside{margin:0;padding:0}.members-cap-tabs,.members-tabs{overflow:hidden;background:#fff;background:-webkit-gradient(linear,left top,right top,from(#fafafa),color-stop(20%,#fafafa),color-stop(20%,#fff),to(#fff));background:linear-gradient(90deg,#fafafa 0,#fafafa 20%,#fff 20%,#fff 100%)}@media only screen and (max-width:782px){.members-cap-tabs,.members-tabs{background:linear-gradient(90deg,#fafafa 0,#fafafa 48px,#fff 48px,#fff 100%)}}.members-cap-tabs .members-tab-nav,.members-tabs .members-tab-nav{position:relative;float:left;list-style:none;width:20%;line-height:1em;margin:0 0 -1px 0;padding:0;background-color:#fafafa;border-right:1px solid #eee;-webkit-box-sizing:border-box;box-sizing:border-box}.members-cap-tabs .members-tab-nav li,.members-tabs .members-tab-nav li{display:block;position:relative;margin:0;padding:0;line-height:20px}.members-cap-tabs .members-tab-nav li a,.members-tabs .members-tab-nav li a{display:block;margin:0;padding:10px;line-height:20px !important;text-decoration:none;border-bottom:1px solid #eee;-webkit-box-shadow:none;box-shadow:none}.members-cap-tabs .members-tab-nav li a .dashicons,.members-tabs .members-tab-nav li a .dashicons{line-height:20px;margin-right:3px}.members-cap-tabs .members-tab-nav li[aria-selected="true"] a,.members-tabs .members-tab-nav li[aria-selected="true"] a{position:relative;font-weight:bold;color:#555;background-color:#e0e0e0}@media only screen and (max-width:782px){.members-cap-tabs .members-tab-nav,.members-tabs .members-tab-nav{width:48px}.members-cap-tabs .members-tab-nav li a .dashicons,.members-tabs .members-tab-nav li a .dashicons{width:24px;height:24px;font-size:24px;line-height:24px}.members-tab-nav li .dashicons::before,.members-tab-nav li .dashicons::before{width:24px;height:24px}.members-tab-nav li .label{overflow:hidden;position:absolute;top:-1000em;left:-1000em;width:1px;height:1px}}.members-cap-tabs .members-tab-wrap,.members-tabs .members-tab-wrap{float:left;width:80%;margin-left:-1px}@media only screen and (max-width:782px){.members-cap-tabs .members-tab-wrap,.members-tabs .members-tab-wrap{width:calc(100% - 48px)}}#members-cp .members-tab-content{padding:10px;border-left:1px solid #e5e5e5}.members-roles-select th,.members-roles-select td{width:190px;overflow:hidden}.members-roles-select .check-all-th{text-align:center}.members-roles-select .check-all-th label{padding-left:5px}@media only screen and (min-width:850px){#side-sortables .members-tabs{background:#fff}#side-sortables .members-tabs .members-tab-wrap{width:100%}#side-sortables .members-tabs .members-tab-nav{display:table;width:100%}#side-sortables .members-tabs .members-tab-nav li{display:table-cell;text-align:center;border-right:1px solid #eee}#side-sortables .members-tabs .members-tab-nav li:last-of-type{border-right:0}#side-sortables .members-tabs .members-tab-nav li a{padding:10px 0}#side-sortables .members-tabs .members-tab-nav .dashicons{width:24px;height:24px;font-size:24px;line-height:24px}#side-sortables .members-tabs .members-tab-nav .dashicons::before{width:24px;height:24px}#side-sortables .members-tabs .members-tab-nav .label{overflow:hidden;position:absolute;top:-1000em;left:-1000em;width:1px;height:1px}}.members-tabs .members-tabs-label{display:block !important;font-weight:bold;display:inline-block;margin-bottom:4px}.members-tabs .butterbean-control-checkbox .members-tabs-label{display:inline !important}.members-tabs .members-tabs-description{display:block;font-style:italic;margin-top:4px}.members-tabs .members-tabs-label+.members-tabs-description{margin-top:0;margin-bottom:4px}#tabcapsdiv table{border-right:0;border-top:0;border-bottom:0}#tabcapsdiv table td,#tabcapsdiv table th{padding:10px;padding-bottom:10px;border-bottom:1px solid #eee;font-size:13px;line-height:20px}#tabcapsdiv table td{padding:9px}#tabcapsdiv tbody tr:last-of-type td{border-bottom:0}#tabcapsdiv tfoot th{border-color:#eee}@media only screen and (max-width:782px){#tabcapsdiv table td,#tabcapsdiv table th{line-height:24px}}.members-roles-select .column-grant,.members-roles-select .column-deny{width:70px !important;text-align:left;display:table-cell !important;clear:none !important}.members-roles-select thead th,.members-roles-select tfoot th{padding:9px !important}.members-roles-select .column-grant input,.members-roles-select .column-deny input{margin:0 5px 0 0;vertical-align:middle}.members-roles-select tbody tr:nth-child(even){background:#f2f2f2}.members-cap-tabs button{display:inline;margin:-4px;line-height:inherit;padding:4px 8px;border:1px solid transparent;background:transparent;border-radius:0;outline:0;-webkit-transition:all .25s ease-out;transition:all .25s ease-out}.members-cap-tabs button:hover,.members-cap-tabs button:focus{border-color:#eee;background:#fafafa;cursor:pointer}.members-cap-tabs button:active{color:#0073aa;border-color:#0073aa}.members-cap-tabs button+.dashicons{display:none;margin-top:1px;margin-bottom:-1px;line-height:inherit}.members-cap-tabs button:hover+.dashicons,.members-cap-tabs button:focus+.dashicons{display:inline-block}.members-tab-content .members-highlight{background-color:rgba(0,115,170,0.05)}.members-tab-content tbody{-webkit-transition:all 2s ease-in-out;transition:all 2s ease-in-out}.members-cp-role-list-wrap{overflow:auto;min-height:42px;max-height:200px;padding:0 .9em;border:solid 1px #dfdfdf;background-color:#fdfdfd}#wpbody-content{padding-bottom:200px}.members-footer-promotion{text-align:center;font-weight:400;font-size:13px;line-height:16px;color:#787c82;padding:20px 0 30px 0;margin-bottom:20px}.members-footer-promotion p{font-weight:600}.members-footer-promotion-links,.members-footer-promotion-social{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.members-footer-promotion-links{margin:9px 0 0}.members-footer-promotion-links span{color:#c3c4c7;padding:0 7px}.members-footer-promotion-social{margin:10px 0 0 0;gap:10px}.members-footer-promotion-social li{margin-bottom:0}.members-footer-promotion-social a{display:block;height:16px}.members_page_members-settings.rtl{.addon-activate{left:20px;right:unset}.members-addons .plugin-card{.name,.desc p{margin-left:0;margin-right:148px}}}.button.button-warning{background:#dc3232;border-color:#dc3232;color:#fff}.button.button-warning:hover,.button.button-warning:focus{background:#c92424;border-color:#c92424;color:#fff}.members-reset-spinner{float:none;margin-top:0;vertical-align:middle}.members-admin-menus-wrap{max-width:1400px;--members-am-accent-use:var(--members-am-accent,var(--wp-admin-theme-color,#2271b1));--members-am-surface-use:var(--members-am-surface,color-mix(in srgb,var(--members-am-base,#1d2327) 88%,#fff 12%));--members-am-border-on-base-fallback:color-mix(in srgb,var(--members-am-base,#1d2327) 62%,#fff 38%);--members-am-chrome-bg:var(--wp-components-color-gray-100,#f6f7f7);--members-am-chrome-border:var(--wp-components-color-gray-400,#c3c4c7);--members-am-muted:var(--wp-components-color-gray-600,#646970)}.members-am-notices{margin:0 0 12px}.members-am-notices .notice{margin:0 0 8px}.members-admin-menus-toolbar{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;gap:0;margin-bottom:16px;border:1px solid var(--members-am-chrome-border,#c3c4c7);border-radius:2px;background:var(--wp-components-color-background,#fff);overflow:visible}.members-am-toolbar-row{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px}.members-am-toolbar-row--primary{padding:10px 12px;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;row-gap:10px}.members-am-toolbar-group{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px}.members-am-toolbar-group--document{position:relative;z-index:5;padding-right:12px;border-right:1px solid var(--members-am-chrome-border,#c3c4c7)}.members-am-toolbar-row--primary .members-am-toolbar-primary-user{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px;margin-left:8px;-webkit-box-flex:0;-ms-flex:0 1 auto;flex:0 1 auto;min-width:0}.members-am-toolbar-row--primary .members-am-toolbar-primary-user #members-am-user-search.members-am-user-search-input{width:168px;max-width:100%;min-width:0}.members-am-toolbar-group--view{margin-left:auto;-ms-flex-wrap:nowrap;flex-wrap:nowrap}.members-am-toolbar-extra{background:var(--members-am-chrome-bg,#f6f7f7);border-top:1px solid var(--members-am-chrome-border,#c3c4c7);padding:10px 12px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:10px}.members-am-toolbar-extra[hidden]{display:none !important}.members-am-toolbar-row--extra-tools{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-wrap:wrap;flex-wrap:wrap;row-gap:10px}.members-am-toolbar-row--extra-tools .members-am-copy-wrap{margin-left:4px;padding-left:12px;border-left:1px solid var(--members-am-chrome-border,#c3c4c7)}.members-am-toolbar-row--extra-tools .members-am-toolbar-group--io{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;margin-left:8px;padding-left:12px;border-left:1px solid var(--members-am-chrome-border,#c3c4c7)}.members-am-more-tools,.members-am-more-tools:hover,.members-am-more-tools:focus,.members-am-more-tools:active{text-decoration:none}.members-am-more-tools{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:2px;white-space:nowrap;padding:2px 2px 2px 4px;vertical-align:middle}.members-am-more-tools .members-am-more-tools-chevron,.members-am-more-tools:hover .members-am-more-tools-chevron,.members-am-more-tools:focus .members-am-more-tools-chevron,.members-am-more-tools:active .members-am-more-tools-chevron{text-decoration:none}.members-am-more-tools .members-am-more-tools-chevron{width:18px;height:18px;font-size:18px;line-height:1;opacity:.88;padding-top:6px;-webkit-transition:-webkit-transform .15s ease;transition:-webkit-transform .15s ease;transition:transform .15s ease;transition:transform .15s ease,-webkit-transform .15s ease}.members-am-more-tools.is-open .members-am-more-tools-chevron{-webkit-transform:rotate(-180deg);transform:rotate(-180deg)}@media(prefers-reduced-motion:reduce){.members-am-more-tools .members-am-more-tools-chevron{-webkit-transition:none;transition:none}}@media screen and (max-width:782px){.members-am-toolbar-group--document{border-right:0;padding-right:0;border-bottom:1px solid var(--members-am-chrome-border,#c3c4c7);padding-bottom:10px;width:100%}.members-am-toolbar-group--view{margin-left:0;width:100%;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.members-am-toolbar-row--primary .members-am-toolbar-primary-user{margin-left:0;padding-left:0;border-left:0;padding-top:8px;border-top:1px solid var(--members-am-chrome-border,#c3c4c7);width:100%;max-width:none}.members-am-toolbar-row--primary .members-am-toolbar-primary-user #members-am-user-search.members-am-user-search-input{width:100%;max-width:100%}.members-am-toolbar-row--extra-tools .members-am-admin-editable{width:100%}.members-am-toolbar-row--extra-tools .members-am-copy-wrap{margin-left:0;padding-left:0;border-left:0;padding-top:8px;border-top:1px solid var(--members-am-chrome-border,#c3c4c7);width:100%}.members-am-toolbar-row--extra-tools .members-am-toolbar-group--io{margin-left:0;padding-left:0;border-left:0;padding-top:8px;border-top:1px solid var(--members-am-chrome-border,#c3c4c7);width:100%}}.members-am-toolbar-loading{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;margin-left:4px;color:var(--members-am-muted,#646970);font-size:13px;line-height:1}.members-am-toolbar-loading .spinner{float:none;margin:0}.members-am-toolbar-loading[hidden]{display:none !important}.members-am-copy-wrap label{margin-right:8px}.members-am-chips{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:8px;margin-bottom:12px}.members-am-chip{border-radius:999px;padding:4px 12px;border:1px solid var(--members-am-chrome-border,#c3c4c7);background:var(--members-am-chrome-bg,#f6f7f7);cursor:pointer}.members-am-chip.is-active{background:var(--members-am-accent-use);border-color:var(--members-am-accent-use);color:var(--wp-components-color-accent-inverted,#fff)}.members-am-carousel-wrap{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;gap:8px;margin-bottom:8px}.members-am-carousel-prev,.members-am-carousel-next{-ms-flex-item-align:center;align-self:center;width:36px;height:36px;border-radius:50%;border:1px solid var(--members-am-chrome-border,#c3c4c7);background:var(--wp-components-color-background,#fff);cursor:pointer}.members-am-columns{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-ms-flex:1;flex:1;gap:12px;min-height:320px;overflow:hidden}.members-am-column{-webkit-box-flex:1;-ms-flex:1;flex:1;min-width:0;background:var(--members-am-base,#1d2327);border-radius:4px;color:var(--members-am-fg-on-base,#f0f0f1);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.members-am-user-column{border:2px dashed var(--wp-components-color-gray-700,#8c8f94)}.members-am-sidebar-head{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:8px 10px;background:var(--members-am-surface-use);border-radius:4px 4px 0 0;font-weight:600;font-size:12px;text-transform:uppercase;letter-spacing:.04em;color:var(--members-am-fg-on-surface,var(--members-am-fg-on-base,#f0f0f1))}.members-am-col-filter{padding:6px 8px 8px;border-bottom:1px solid var(--members-am-border-on-base,var(--members-am-border-on-base-fallback));-ms-flex-negative:0;flex-shrink:0}.members-am-col-filter-input{width:100%;max-width:100%;-webkit-box-sizing:border-box;box-sizing:border-box;font-size:12px;line-height:1.4;padding:4px 8px;border-radius:2px;border:1px solid var(--members-am-border-on-base,var(--members-am-border-on-base-fallback));background:var(--members-am-base,#1d2327);color:var(--members-am-fg-on-base,#f0f0f1)}.members-am-col-filter-input::-webkit-input-placeholder{color:var(--members-am-fg-muted-on-base,var(--wp-components-color-gray-700,#8c8f94));opacity:1}.members-am-col-filter-input::-moz-placeholder{color:var(--members-am-fg-muted-on-base,var(--wp-components-color-gray-700,#8c8f94));opacity:1}.members-am-col-filter-input:-ms-input-placeholder{color:var(--members-am-fg-muted-on-base,var(--wp-components-color-gray-700,#8c8f94));opacity:1}.members-am-col-filter-input::-ms-input-placeholder{color:var(--members-am-fg-muted-on-base,var(--wp-components-color-gray-700,#8c8f94));opacity:1}.members-am-col-filter-input::placeholder{color:var(--members-am-fg-muted-on-base,var(--wp-components-color-gray-700,#8c8f94));opacity:1}.members-am-col-filter-input:focus{border-color:var(--members-am-accent-use);outline:1px solid transparent;-webkit-box-shadow:0 0 0 var(--wp-admin-border-width-focus,1px) var(--members-am-accent-use);box-shadow:0 0 0 var(--wp-admin-border-width-focus,1px) var(--members-am-accent-use)}.members-am-col-bulk{padding:0 8px 8px;border-bottom:1px solid var(--members-am-border-on-base,var(--members-am-border-on-base-fallback));-ms-flex-negative:0;flex-shrink:0}.members-am-col-bulk-toolbar,.members-am-col-collapse-toolbar{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:6px;margin-bottom:6px;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.members-am-col-bulk-toolbar .button.button-small,.members-am-col-collapse-toolbar .button.button-small{font-size:11px;min-height:26px;line-height:24px;padding:0 8px;background:var(--members-am-surface-use);border-color:var(--members-am-border-on-surface,var(--members-am-border-on-base,var(--members-am-border-on-base-fallback)));color:var(--members-am-fg-on-surface,var(--members-am-fg-on-base,#f0f0f1))}.members-am-col-bulk-toolbar .button.button-small:hover,.members-am-col-collapse-toolbar .button.button-small:hover{background:color-mix(in srgb,var(--members-am-surface-use) 85%,#fff 15%);border-color:var(--wp-components-color-gray-700,#8c8f94);color:var(--members-am-fg-on-surface,var(--members-am-fg-on-base,#f0f0f1))}.members-am-item-lead{-ms-flex-negative:0;flex-shrink:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:22px;padding:2px 0 0}.members-am-collapse-spacer{display:block;width:20px;height:20px;-ms-flex-negative:0;flex-shrink:0}.members-am-collapse-toggle{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:22px;height:22px;margin:0;padding:0;border:0;background:transparent;color:var(--members-am-fg-muted-on-base,var(--members-am-chrome-border,#c3c4c7));border-radius:2px;cursor:pointer;-ms-flex-negative:0;flex-shrink:0}.members-am-collapse-toggle:hover,.members-am-collapse-toggle:focus{color:var(--members-am-fg-on-base,#f0f0f1);background:color-mix(in srgb,var(--members-am-fg-on-base,#f0f0f1) 12%,transparent);outline:0}.members-am-collapse-toggle .dashicons{font-size:18px;width:18px;height:18px}.members-am-item-cb-wrap{-ms-flex-negative:0;flex-shrink:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;padding:2px 4px 0 0}.members-am-item-cb{margin:0;width:16px;height:16px;-ms-flex-negative:0;flex-shrink:0}.members-am-bulk-select{width:100%;max-width:100%;-webkit-box-sizing:border-box;box-sizing:border-box;font-size:12px;line-height:1.4;padding:4px 8px;border-radius:2px;border:1px solid var(--members-am-border-on-base,var(--members-am-border-on-base-fallback));background:var(--members-am-base,#1d2327);color:var(--members-am-fg-on-base,#f0f0f1)}.members-am-bulk-select:focus{border-color:var(--members-am-accent-use);outline:1px solid transparent;-webkit-box-shadow:0 0 0 var(--wp-admin-border-width-focus,1px) var(--members-am-accent-use);box-shadow:0 0 0 var(--wp-admin-border-width-focus,1px) var(--members-am-accent-use)}.members-am-item.members-am-filter-hidden,.members-am-sep.members-am-filter-hidden,.members-am-item.members-am-collapse-hidden{display:none !important}.members-am-col-move button{margin-left:4px;padding:0 6px;min-height:24px;line-height:22px;font-size:11px}.members-am-sidebar-list{padding:6px 0 12px;overflow-y:auto;max-height:480px}.members-am-item{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;gap:4px;padding:6px 10px 6px 6px;cursor:pointer;border-left:3px solid transparent;font-size:13px}.members-am-item.is-sub{padding-left:22px;font-size:12px;opacity:.95}.members-am-item.is-sub-deep{padding-left:36px}.members-am-sidebar-list .members-am-item{cursor:-webkit-grab;cursor:grab}.members-am-sidebar-list .members-am-item:active{cursor:-webkit-grabbing;cursor:grabbing}.members-am-sort-placeholder{-webkit-box-sizing:border-box;box-sizing:border-box;min-height:36px;margin:2px 0;background:color-mix(in srgb,var(--members-am-accent-use) 8%,transparent);border:1px dashed var(--members-am-accent-use);border-radius:2px}.members-am-item.is-hidden{opacity:.18}.members-am-item.is-no-cap{opacity:.35}.members-am-item.is-no-cap.is-hidden{opacity:.15}.members-am-item.is-selected{border-left-color:var(--members-am-accent-use);background:color-mix(in srgb,var(--members-am-accent-use) 15%,transparent)}.members-am-item-main{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;min-width:0}.members-am-item-main .dashicons{font-size:18px;width:18px;height:18px}.members-am-item-label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.members-am-item-actions{display:none;gap:2px}.members-am-item:hover .members-am-item-actions{display:-webkit-box;display:-ms-flexbox;display:flex}.members-am-item-actions button{min-height:22px;padding:0 4px;line-height:20px;font-size:11px}.members-am-sep{text-align:center;opacity:.35;font-size:11px;padding:4px 0}.members-am-carousel-dots{text-align:center;margin-bottom:4px}.members-am-dot{width:8px;height:8px;border-radius:50%;border:0;margin:0 4px;padding:0;background:var(--members-am-chrome-border,#c3c4c7);cursor:pointer}.members-am-dot.is-active{background:var(--members-am-accent-use)}.members-am-carousel-status{text-align:center;color:var(--members-am-muted,#646970);font-size:12px;margin-top:0}.members-am-badge{font-size:9px;text-transform:uppercase;padding:1px 4px;border-radius:2px;margin-right:4px;vertical-align:middle}.members-am-badge-new{background:var(--members-am-accent-use);color:var(--wp-components-color-accent-inverted,#fff)}.members-am-badge-edit{background:#dba617;color:var(--members-am-base,#1d2327)}.members-am-badge-nocap{background:var(--wp-components-color-gray-700,#8c8f94);color:var(--wp-components-color-accent-inverted,#fff)}.members-am-legend{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:16px;margin:0 0 8px;padding:0;font-size:12px;color:var(--members-am-muted,#646970)}.members-am-legend-item{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:4px}.members-am-edit-panel{margin-top:20px;padding:16px;border:1px solid var(--members-am-chrome-border,#c3c4c7);background:var(--wp-components-color-background,#fff);border-radius:4px}.members-am-edit-panel-header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:12px}.members-am-edit-panel-header h2{margin:0;font-size:16px}.members-am-edit-toolbar{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:12px;margin-bottom:12px}.members-am-edit-target-wrap select{margin-left:8px}.members-am-level-actions .button{margin-right:6px}.members-am-demote-wrap{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:6px}.members-am-demote-wrap .members-am-demote-select{min-width:200px;max-width:min(320px,100%)}.members-am-edit-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:16px}.members-am-edit-col label{display:block;font-weight:600;margin-bottom:4px}.members-am-icon-tabs{margin-bottom:8px}.members-am-icon-tabs .button{margin-right:4px;margin-bottom:4px}.members-am-icon-tabs .button.is-active{background:var(--members-am-accent-use);border-color:var(--members-am-accent-use);color:var(--wp-components-color-accent-inverted,#fff)}.members-am-icon-grid{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:4px;max-height:160px;overflow-y:auto;border:1px solid var(--wp-components-color-gray-200,#dcdcde);padding:8px;background:var(--members-am-chrome-bg,#f6f7f7);margin-bottom:8px}.members-am-icon-pick{width:36px;height:36px;padding:0;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;border:1px solid var(--members-am-chrome-border,#c3c4c7);background:var(--wp-components-color-background,#fff);cursor:pointer}.members-am-bulk-visibility-hint{margin:0 0 8px;font-size:12px;color:var(--members-am-fg-muted-on-base,#646970)}.members-am-vis-role-filter-wrap{margin-bottom:8px}.members-am-vis-row.members-am-vis-filter-hidden{display:none}.members-am-vis-row{display:block;margin-bottom:6px;font-weight:normal}.members-am-reset-dropdown{position:absolute;z-index:100000;background:var(--wp-components-color-background,#fff);border:1px solid var(--members-am-chrome-border,#c3c4c7);border-radius:6px;padding:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-shadow:0 4px 12px rgba(0,0,0,0.15);box-shadow:0 4px 12px rgba(0,0,0,0.15);min-width:280px;top:100%;left:0;margin-top:4px;overflow:hidden}.members-am-reset-title{padding:10px 14px;font-weight:600;font-size:13px;border-bottom:1px solid var(--wp-components-color-gray-200,#f0f0f0);color:var(--wp-components-color-foreground,#1d2327)}.members-am-reset-option{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;gap:10px;padding:12px 14px;border:0;background:0;cursor:pointer;text-align:left;width:100%;border-bottom:1px solid var(--wp-components-color-gray-200,#f0f0f0);-webkit-transition:background .15s;transition:background .15s}.members-am-reset-option:last-child{border-bottom:0}.members-am-reset-option:hover{background:var(--members-am-chrome-bg,#f6f7f7)}.members-am-reset-option .dashicons{margin-top:2px;color:var(--members-am-muted,#646970)}.members-am-reset-option-text{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:2px}.members-am-reset-option-text strong{font-size:13px;color:var(--wp-components-color-foreground,#1d2327)}.members-am-reset-option-text small{font-size:12px;color:var(--members-am-muted,#646970)}.members-am-reset-danger:hover{background:#fcf0f1}.members-am-reset-danger .dashicons{color:#d63638}.members-am-reset-danger:hover strong{color:#d63638}@media screen and (max-width:782px){.members-am-columns{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}}.members-am-user-suggestions{position:absolute;z-index:100;background:var(--wp-components-color-background,#fff);border:1px solid var(--members-am-chrome-border,#c3c4c7);border-radius:4px;max-height:200px;overflow-y:auto;width:100%;-webkit-box-shadow:0 2px 6px rgba(0,0,0,0.15);box-shadow:0 2px 6px rgba(0,0,0,0.15);top:100%;left:0}.members-am-user-suggestion{padding:8px 12px;cursor:pointer;font-size:13px;border-bottom:1px solid var(--wp-components-color-gray-200,#f0f0f0)}.members-am-user-suggestion:hover{background:color-mix(in srgb,var(--members-am-accent-use) 8%,var(--wp-components-color-background,#fff))}.members-am-user-suggestion:last-child{border-bottom:0}#members-am-import-file.members-am-import-file-hidden{display:none}.members-am-user-search-wrap{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px}#members-am-user-search.members-am-user-search-input{width:168px;max-width:100%}.members-am-legend-visibility-icon{font-size:14px;width:14px;height:14px;vertical-align:middle}.members-am-legend-nocap-badge{display:inline-block;background:#8c8f94;color:#fff;font-size:9px;padding:1px 4px;border-radius:2px;vertical-align:middle}#members-am-icon-preview.members-am-icon-preview{display:none;width:32px;height:32px;-o-object-fit:contain;object-fit:contain;margin-bottom:6px;border:1px solid #ddd;border-radius:3px;padding:2px;background:#f0f0f1}.members-am-icons .members-am-icon-upload-desc{margin-top:4px}#adminmenu .members-am-menu-badge{display:inline-block;color:#fff;font-size:9px;padding:1px 5px;border-radius:2px;line-height:1.4;vertical-align:middle}
\ No newline at end of file
diff --git a/js/admin-menus.js b/js/admin-menus.js
index 7fbe3dd..ac6d6c2 100644
--- a/js/admin-menus.js
+++ b/js/admin-menus.js
@@ -2642,7 +2642,9 @@
$(' ').text('Clear all menu settings for this role only')
)
);
- $roleBtn.on('click', function () {
+ $roleBtn.on('click', function (e) {
+ e.preventDefault();
+ e.stopPropagation();
$('.members-am-reset-dropdown').remove();
resetSettings('role', firstRole);
});
@@ -2657,18 +2659,23 @@
$(' ').text('Clear all menu settings for every role')
)
);
- $allBtn.on('click', function () {
+ $allBtn.on('click', function (e) {
+ e.preventDefault();
+ e.stopPropagation();
$('.members-am-reset-dropdown').remove();
resetSettings('all');
});
$drop.append($allBtn);
- $btn.parent().css('position', 'relative');
$drop.insertAfter($btn);
- $(document).one('click', function () {
- $('.members-am-reset-dropdown').remove();
- });
+ // Defer so the same click that opened the menu does not hit document first,
+ // and so the menu is not removed before option buttons receive the click.
+ setTimeout(function () {
+ $(document).one('click', function () {
+ $('.members-am-reset-dropdown').remove();
+ });
+ }, 0);
});
$('#members-am-export').on('click', function (e) {
e.preventDefault();
diff --git a/js/admin-menus.min.js b/js/admin-menus.min.js
index f224a2b..240e2ca 100644
--- a/js/admin-menus.min.js
+++ b/js/admin-menus.min.js
@@ -1 +1 @@
-!function(M){"use strict";var C={settings:M.extend(!0,{},membersAdminMenus.settings),tree:[],activeRoleSlugs:[],carouselPage:0,columnsPerPage:3,selectedId:null,iconTab:"dashicons",previewUserId:null,previewUserRoles:[],userSuggestions:[],mediaFrame:null,allowUnload:!1,syncScroll:function(){try{return"0"!==localStorage.getItem("members_am_sync_scroll")}catch(e){return!0}}(),columnFilters:{},columnBulkSelection:{},collapsedParents:{}},a="";function t(){return function n(r){if(null===r)return"null";var e=typeof r;return"string"==e||"number"==e||"boolean"==e?JSON.stringify(r):"undefined"==e?"null":Array.isArray(r)?"["+r.map(function(e){return n(e)}).join(",")+"]":"object"!=e?JSON.stringify(r):"{"+Object.keys(r).sort().map(function(e){return JSON.stringify(e)+":"+n(r[e])}).join(",")+"}"}(C.settings)}function s(){if(!C.allowUnload&&t()!==a)return membersAdminMenus.i18n&&membersAdminMenus.i18n.unsavedChanges||""}var i="members_am_notice";function f(e,n){if(n){var r=M("#members-am-notices");r.length||(M(".members-admin-menus-wrap h1").first().after('
'),r=M("#members-am-notices"));var a=M("
",{class:"notice is-dismissible"}).addClass("notice-"+(e||"info"));a.append(M("
").text(n)),r.prepend(a),M(document).trigger("wp-notice-added")}}function o(e,n){try{sessionStorage.setItem(i,JSON.stringify({type:e||"success",message:n}))}catch(e){}}var e=["dashicons-menu","dashicons-admin-dashboard","dashicons-admin-post","dashicons-admin-page","dashicons-admin-media","dashicons-admin-comments","dashicons-admin-appearance","dashicons-admin-plugins","dashicons-admin-users","dashicons-admin-tools","dashicons-admin-settings","dashicons-admin-generic","dashicons-edit","dashicons-plus","dashicons-chart-bar","dashicons-cart","dashicons-products","dashicons-email","dashicons-groups","dashicons-heart","dashicons-star-filled","dashicons-smiley","dashicons-info","dashicons-lock","dashicons-unlock","dashicons-visibility","dashicons-hidden","dashicons-arrow-up","dashicons-arrow-down","dashicons-admin-network","dashicons-performance"],n=["fa-solid fa-house","fa-solid fa-user","fa-solid fa-gear","fa-solid fa-file","fa-solid fa-image","fa-solid fa-cart-shopping","fa-solid fa-chart-line","fa-solid fa-envelope","fa-solid fa-book","fa-solid fa-link","fa-solid fa-bell","fa-solid fa-star","fa-solid fa-heart","fa-solid fa-lock","fa-solid fa-unlock","fa-solid fa-pen","fa-solid fa-trash","fa-solid fa-plus","fa-solid fa-minus"],m="members_am_view_state";function l(){try{localStorage.setItem(m,JSON.stringify({activeRoleSlugs:C.activeRoleSlugs,carouselPage:C.carouselPage}))}catch(e){}}function d(e){return JSON.parse(JSON.stringify(e))}var c=null;function h(){c=d(C.settings),u()}function u(){var e=M("#members-am-undo");if(e.length){var n=!!c;e.prop("disabled",!n).attr("aria-disabled",n?"false":"true")}}function p(){return membersAdminMenus.roles||[]}function b(){C.settings._meta&&!Array.isArray(C.settings._meta)||(C.settings._meta={version:3,admin_editable:!1}),C.settings.roles&&!Array.isArray(C.settings.roles)||(C.settings.roles={}),C.settings.users&&!Array.isArray(C.settings.users)||(C.settings.users={}),Array.isArray(C.settings.custom_items)||(C.settings.custom_items=[]),C.settings.capabilities&&!Array.isArray(C.settings.capabilities)||(C.settings.capabilities={})}function I(e){b(),C.settings.roles[e]||(C.settings.roles[e]={hidden:[],order:[],submenu_order:{},overrides:{}});var n=C.settings.roles[e];return n.hidden&&Array.isArray(n.hidden)||(n.hidden=[]),n.order&&Array.isArray(n.order)||(n.order=[]),n.submenu_order&&!Array.isArray(n.submenu_order)||(n.submenu_order={}),n.overrides&&!Array.isArray(n.overrides)||(n.overrides={}),n}function P(e){b(),C.settings.users[e]||(C.settings.users[e]={});var n=C.settings.users[e];return n.hidden&&Array.isArray(n.hidden)||(n.hidden=[]),n.order&&Array.isArray(n.order)||(n.order=[]),n.overrides&&!Array.isArray(n.overrides)||(n.overrides={}),n.submenu_order&&!Array.isArray(n.submenu_order)||(n.submenu_order={}),n}function v(n){var e=P(n);return(e.order&&e.order.length?e.order.slice():S()).filter(function(e){return 0===e.indexOf("sep-")||!!k(e)&&!function(e,n){if(!n||-1!==n.indexOf("::"))return;var r=P(e),a=r.overrides&&r.overrides[n]||{};return a.parent&&"__promote__"!==a.parent}(n,e)})}function g(e,n,r,a){var s,t=P(e),i=t.overrides&&t.overrides[n]||{},o=r;!o&&i.parent&&"__promote__"!==i.parent&&(o=i.parent);var m,l,d,c,u=-1!==n.indexOf("::")?n.split("::").pop():n,p=(s=o?(t.submenu_order[o]||(t.submenu_order[o]=(m=e,d=R(l=o),c=P(m),C.tree.forEach(function(e){e&&e.id&&-1===e.id.indexOf("::")&&(c.overrides&&c.overrides[e.id]||{}).parent===l&&-1===d.indexOf(e.id)&&d.push(e.id)}),d)),t.submenu_order[o]):(t.order.length||(t.order=S()),t.order)).indexOf(u);if(-1!==p){var f=p+a;f<0||f>=s.length||(h(),s.splice(p,1),s.splice(f,0,o?u:n))}}function x(e){var n=e.id||"c";return"members-am-"+String(n).replace(/[^a-z0-9_-]/gi,"-").toLowerCase()}function y(e){return!!e&&0===(-1!==e.indexOf("::")?e.split("::").pop():e).indexOf("members-am-")}function _(){var a=M.extend(!0,[],membersAdminMenus.menuTree||[]),s={};return a.forEach(function(e){s[e.id]=!0}),(C.settings.custom_items||[]).forEach(function(e){if(e&&e.id){var n=x(e);if(s[n]){for(var r=0;rs&&(C.carouselPage=s))}}C.activeRoleSlugs=n.filter(function(e){return"administrator"!==e||r}),C.activeRoleSlugs.length||(C.activeRoleSlugs=["subscriber"])}function ae(){var a=M("#members-am-role-chips").empty();p().forEach(function(e){if("administrator"!==e.slug||C.settings._meta.admin_editable){var n=-1!==C.activeRoleSlugs.indexOf(e.slug),r=M(' ').text(e.label).attr("data-role",e.slug).toggleClass("is-active",n);a.append(r)}})}function se(t,i,e,o,m){(function(e,n,r,a,s){s=s||0;var t=n.id,i=L(e,t),o=!F(e,n.cap),m=I(e).overrides[t]||{},l=m.label||n.title||t,d=M('
').attr("data-id",t).attr("data-menu-parent",r||"").toggleClass("is-hidden",i).toggleClass("is-no-cap",o).toggleClass("is-selected",C.selectedId===t).toggleClass("is-sub",0 ');if(p){V(c);var b=!!C.collapsedParents[c][t],h=u.expandSubmenus||"Expand submenu items",v=u.collapseSubmenus||"Collapse submenu items";M(' ').attr("aria-expanded",!b).attr("aria-label",(b?h:v)+": "+l).append(M(' ').addClass(b?"dashicons-arrow-right-alt2":"dashicons-arrow-down-alt2")).on("click",function(e){e.stopPropagation(),V(c),C.collapsedParents[c][t]=!C.collapsedParents[c][t],ce()}).appendTo(f),d.toggleClass("is-collapse-collapsed",b)}else f.append(M(' '));d.append(f);var g=u.bulkCheckboxAria||"Include in bulk actions",x=M(' '),y=M(' ').prop("checked",!!C.columnBulkSelection[c].ids[t]).attr("aria-label",g+": "+l).on("click",function(e){e.stopPropagation()}).on("change",function(e){e.stopPropagation(),z(c,t,M(this).prop("checked")),ce()});x.append(y),d.append(x);var _=M('
');if(0===s){var k=m.icon||n.icon,w=J(k,m.icon_type||n.icon_type);if("fontawesome"===w&&k)_.append(M(' '));else if("svg"!==w&&"image"!==w&&"custom"!==w||!k){var O=k&&0===k.indexOf("dashicons-")?k:"dashicons-admin-generic";_.append(M(' '))}else _.append(M(" ").attr("src",k).css({width:"20px",height:"20px",display:"inline-block",verticalAlign:"middle",objectFit:"contain",filter:"none"}))}n.custom&&_.append(M('custom '));m.label&&_.append(M('edit '));if(_.append(M(' ').text(l)),m.badge){var A=m.badge_bg||"#d63638";_.append(M(' ').text(m.badge).css({backgroundColor:A,color:"#fff",fontSize:"9px",padding:"1px 5px",borderRadius:"2px",marginLeft:"4px",whiteSpace:"nowrap"}))}o&&_.append(M(' Roles.\">🔒 no access "));d.append(_),m.color_bg&&d.css("background-color",m.color_bg);m.color_text&&d.find(".members-am-item-label").css("color",m.color_text);m.color_icon&&(d.find(".dashicons").css("color",m.color_icon),d.find(".members-am-fa-icon i").css("color",m.color_icon),d.find("img").css("filter","none"));var S=M('
');S.append(M(' ').text("◉"),M(' ').text("↑"),M(' ').text("↓")),d.append(S),a.append(d)})(t,i,e,o,m=m||0),i.children&&i.children.length&&T(t,i.id).forEach(function(e){var n,r,a,s=(n=t,r=i.id,k(N(r,a=e))||(-1===a.indexOf("::")&&(I(n).overrides[a]||{}).parent===r?k(a):null));s&&"__promote__"!==(I(t).overrides[s.id]||{}).parent&&se(t,s,i.id,o,m+1)})}function te(r,a,e,s,t,i){i=i||0,t.append(function(n,e,r,a,s){s=s||0;var t=a.overrides&&a.overrides[n.id]||{},i=t.label||n.title,o=function(e,n){var r=P(e);if(-1!==r.hidden.indexOf(n))return!0;var a=E(n,e);return!(!a||-1===r.hidden.indexOf(a))}(r,n.id),m=!function(e){if(!e||"read"===e)return 1;for(var n=C.previewUserRoles||[],r=0;r").addClass(d).attr("data-id",n.id).attr("data-menu-parent",e||""),u="u:"+r;D(u);var p=membersAdminMenus.i18n||{},f=n.children&&n.children.length,b=M(' ');if(f){V(u);var h=!!C.collapsedParents[u][n.id],v=p.expandSubmenus||"Expand submenu items",g=p.collapseSubmenus||"Collapse submenu items";M(' ').attr("aria-expanded",!h).attr("aria-label",(h?v:g)+": "+i).append(M(' ').addClass(h?"dashicons-arrow-right-alt2":"dashicons-arrow-down-alt2")).on("click",function(e){e.stopPropagation(),V(u),C.collapsedParents[u][n.id]=!C.collapsedParents[u][n.id],ce()}).appendTo(b),c.toggleClass("is-collapse-collapsed",h)}else b.append(M(' '));c.append(b);var x=p.bulkCheckboxAria||"Include in bulk actions",y=M(' '),_=M(' ').prop("checked",!!C.columnBulkSelection[u].ids[n.id]).attr("aria-label",x+": "+i).on("click",function(e){e.stopPropagation()}).on("change",function(e){e.stopPropagation(),z(u,n.id,M(this).prop("checked")),ce()});y.append(_),c.append(y);var k=M('
');if(0===s){var w=t.icon||n.icon,O=J(w,t.icon_type||n.icon_type);"fontawesome"===O&&w?k.append(M(' ')):"svg"!==O&&"image"!==O&&"custom"!==O||!w?w&&0===w.indexOf("dashicons-")?k.append(M(' ')):k.append(M(' ')):k.append(M(" ").attr("src",w).css({width:"20px",height:"20px",display:"inline-block",verticalAlign:"middle",objectFit:"contain",filter:"none"}))}n.custom&&k.append(M('custom '));t.label&&k.append(M('edit '));if(k.append(M(' ').text(i)),t.badge){var A=t.badge_bg||"#d63638";k.append(M(' ').text(t.badge).css({backgroundColor:A,color:"#fff",fontSize:"9px",padding:"1px 5px",borderRadius:"2px",marginLeft:"4px",whiteSpace:"nowrap"}))}m&&k.append(M('🔒 no access "));c.append(k),t.color_bg&&c.css("background-color",t.color_bg);t.color_text&&c.find(".members-am-item-label").css("color",t.color_text);t.color_icon&&(c.find(".dashicons").css("color",t.color_icon),c.find(".members-am-fa-icon i").css("color",t.color_icon));var S=M('
');return S.append(M(' ').text(o?"◯":"◉"),M(' ').text("↑"),M(' ').text("↓")),c.append(S),c.on("click",function(e){M(e.target).closest("button, .members-am-item-cb, .members-am-collapse-toggle").length||(C.selectedId=n.id,Oe())}),c}(a,e,r,s,i)),a.children&&a.children.length&&function(e,n){var r=R(n),a=P(e);C.tree.forEach(function(e){e&&e.id&&-1===e.id.indexOf("::")&&(a.overrides&&a.overrides[e.id]||{}).parent===n&&-1===r.indexOf(e.id)&&r.push(e.id)});var s=a.submenu_order&&a.submenu_order[n];if(!s||!s.length)return r.slice();var t=s.filter(function(e){return-1!==r.indexOf(e)});return r.forEach(function(e){-1===t.indexOf(e)&&t.push(e)}),t}(r,a.id).forEach(function(e){var n=function(e,n,r){var a=k(N(n,r));if(a)return a;if(-1===r.indexOf("::")){var s=P(e);if((s.overrides&&s.overrides[r]||{}).parent===n)return k(r)}return null}(r,a.id,e);n&&"__promote__"!==(s.overrides&&s.overrides[n.id]||{}).parent&&te(r,n,a.id,s,t,i+1)})}function ie(e,n){var s=(n||"").trim().toLowerCase(),r=e.children(".members-am-item");if(!s)return r.removeClass("members-am-filter-hidden"),void e.children(".members-am-sep").removeClass("members-am-filter-hidden");var i={};r.each(function(){var e=M(this),n=e.attr("data-id"),r=(e.find(".members-am-item-label").first().text()||"").toLowerCase(),a=(n||"").toLowerCase();i[n]=-1!==r.indexOf(s)||-1!==a.indexOf(s)});var o={};r.each(function(){var e=M(this).attr("data-id"),n=M(this).attr("data-menu-parent")||"";o[n]||(o[n]=[]),o[n].push(e)});var m={};function l(e){var n,r=i[e],a=o[e]||[],s=!1;for(n=0;n '),o=M(' ').attr("placeholder",s).attr("aria-label",t).val(a);i.append(o),e.find(".members-am-sidebar-head").first().after(i),o.on("input",function(){C.columnFilters[r]=M(this).val(),ie(n,M(this).val())}),ie(n,a)}function me(e,n){var t=0===String(n).indexOf("u:"),i=t?parseInt(n.replace(/^u:/,""),10):0,o=t?null:n,m=n,l=membersAdminMenus.i18n||{},r=M('
').attr("data-column-key",m),a=M('
');a.append(M(' ').text(l.bulkSelectVisible||"Select visible"),M(' ').text(l.bulkClearSelection||"Clear selection"));var s=M('
');s.append(M(' ').text(l.collapseAllMenus||"Collapse all"),M(' ').text(l.expandAllMenus||"Expand all"));var d=M(' ').attr("aria-label",l.bulkVisibilityLabel||"Menu visibility for this column");d.append(M(' ').text(l.bulkActionsPlaceholder||"Choose visibility…"));var c=M(" ").attr("label",l.bulkGroupWholeColumn||"Whole column");c.append(M(' ').text(l.bulkShowAllItems||"Show every menu item"),M(' ').text(l.bulkHideAllItems||"Hide every menu item"));var u=M(" ").attr("label",l.bulkGroupCheckedRows||"Checked rows");u.append(M(' ').text(l.bulkKeepOnlyCheckedVisible||"Keep only checked visible"),M(' ').text(l.bulkHideCheckedItems||"Hide checked items"),M(' ').text(l.bulkShowCheckedItems||"Show checked items")),d.append(c,u),r.append(a,s,d);var p=e.find(".members-am-col-filter").first();p.length?p.after(r):e.find(".members-am-sidebar-head").first().after(r),d.on("change",function(){var e=M(this).val();if(M(this).val(""),e)if(!("keep-only-checked"===e||"hide-checked"===e||"show-checked"===e)||B(m).length){if("keep-only-checked"===e){if(!window.confirm(l.bulkConfirmKeepOnlyChecked||"Hide all items except checked items and their parent menus?"))return}else if("hide-all"===e){if(!window.confirm(l.bulkConfirmHideAll||"Hide every menu item in this column?"))return}else if("hide-checked"===e&&!window.confirm(l.bulkConfirmHideChecked||"Hide the checked items (and their submenus where applicable)?"))return;var n,r,a,s;h(),t?"show-all"===e?P(i).hidden=[]:"hide-all"===e?(a=i,s=j(),P(a).hidden=s.slice()):"keep-only-checked"===e?function(e,r){var n=B(e);if(n.length){var a={};n.forEach(function(e){for(var n=e;n;)a[n]=!0,n=E(n,r)});var s=j(),t=P(r).hidden;t.length=0,s.forEach(function(e){a[e]||t.push(e)})}}(m,i):"hide-checked"===e?X(m,i):"show-checked"===e&&Y(m,i):"show-all"===e?I(o).hidden=[]:"hide-all"===e?(n=o,r=j(),I(n).hidden=r.slice()):"keep-only-checked"===e?function(e,r){var n=B(e);if(n.length){var a={};n.forEach(function(e){for(var n=e;n;)a[n]=!0,n=O(n,r)});var s=j(),t=I(r).hidden;t.length=0,s.forEach(function(e){a[e]||t.push(e)})}}(m,o):"hide-checked"===e?Q(m,o):"show-checked"===e&&q(m,o),Oe()}else f("warning",l.bulkSelectCheckedFirst||"Check one or more menu items first.")})}function le(e){return-1!==e.indexOf("::")?e.split("::").pop():e}function de(){M.fn.sortable&&M("#members-am-columns .members-am-sidebar-list").each(function(){var e=M(this);e.data("ui-sortable")&&e.sortable("destroy");var n=e.closest(".members-am-column"),r=n.data("role"),a=n.data("user");e.sortable({axis:"y",distance:6,items:"> .members-am-item, > .members-am-sep",cancel:".members-am-item-actions button, .members-am-item-cb, .members-am-item-cb-wrap, .members-am-collapse-toggle",placeholder:"members-am-sort-placeholder",forcePlaceholderSize:!0,tolerance:"pointer",start:function(){h()},update:function(){a?function(e,n){var s=[],t={};e.children().each(function(){var e=M(this);if(e.hasClass("members-am-sep")){var n=e.attr("data-sep-id");n&&s.push(n)}else if(e.hasClass("members-am-item")){var r=e.attr("data-id");if(r){var a=e.attr("data-menu-parent");void 0===a||""===a?s.push(r):(t[a]||(t[a]=[]),t[a].push(le(r)))}}});var r=P(n);r.order=s,r.submenu_order=t}(e,a):r&&function(e,n){var s=[],t={};e.children().each(function(){var e=M(this);if(e.hasClass("members-am-sep")){var n=e.attr("data-sep-id");n&&s.push(n)}else if(e.hasClass("members-am-item")){var r=e.attr("data-id");if(r){var a=e.attr("data-menu-parent");void 0===a||""===a?s.push(r):(t[a]||(t[a]=[]),t[a].push(le(r)))}}});var r=I(n);r.order=s,r.submenu_order=t}(e,r),ue()}})})}function ce(){var r=M("#members-am-columns"),a={};r.find(".members-am-column").each(function(){var e=M(this).data("role");if(e){var n=M(this).find(".members-am-sidebar-list");n.length&&(a[e]=n.scrollTop())}}),r.empty();var e=C.carouselPage*C.columnsPerPage;if(C.activeRoleSlugs.slice(e,e+C.columnsPerPage).forEach(function(e){var n=M('
');!function(r,e){e.empty();var n=M(''),a=(p().filter(function(e){return e.slug===r})[0]||{}).label||r;n.append(M('').text(a)),n.append(M(' ').append(M(' ').text("◀"),M(' ').text("▶"))),e.append(n);var s=M('');U(r).forEach(function(e){if(0!==e.indexOf("sep-")){var n=k(e);n&&se(r,n,null,s,0)}else s.append(M('
').attr("data-sep-id",e).text("—"))}),e.append(s),K(s,r),oe(e,s,r),me(e,r)}(e,n),r.append(n),a[e]&&n.find(".members-am-sidebar-list").scrollTop(a[e])}),C.previewUserId){var s=C.previewUserId,n=M('
'),t=M('');t.append(M(" ").text(C.previewUserLabel||"User #"+s)),t.append(M('× ').on("click",function(){C.previewUserId=null,C.previewUserLabel=null,C.previewUserRoles=[],Oe()})),n.append(t);var i=M(''),o=P(s);v(s).forEach(function(e){if(0!==e.indexOf("sep-")){var n=k(e);n&&te(s,n,null,o,i,0)}else i.append(M('
').attr("data-sep-id",e).text("——"))}),n.append(i),K(i,"u:"+s),oe(n,i,"u:"+s),me(n,"u:"+s),r.append(n)}if(C.syncScroll){var m=r.find(".members-am-sidebar-list"),l=!1;m.on("scroll",function(){if(!l){l=!0;var e=M(this).scrollTop();m.not(this).scrollTop(e),l=!1}})}!function(){var e=Math.max(1,Math.ceil(C.activeRoleSlugs.length/C.columnsPerPage)),n=(Math.min(C.carouselPage+1,e),C.carouselPage*C.columnsPerPage+1),r=Math.min((C.carouselPage+1)*C.columnsPerPage,C.activeRoleSlugs.length);M("#members-am-carousel-status").text(n+"–"+r+" "+membersAdminMenus.i18n.of+" "+C.activeRoleSlugs.length);for(var a=M("#members-am-carousel-dots").empty(),s=0;s ').toggleClass("is-active",s===C.carouselPage))}(),de()}function ue(){if(C.selectedId){M("#members-am-edit-panel").removeAttr("hidden");var e=k(C.selectedId),n=ee()||{};M("#members-am-edit-title").text(e?e.title:C.selectedId),M("#members-am-edit-label").val(n.label||e&&e.title||"");var r=y(C.selectedId);M("#members-am-edit-url-wrap").toggle(r),M("#members-am-edit-url").attr("placeholder","Override URL (leave empty for default)").val(r&&(n.url||e&&e.url)||"").data("default-url",e&&e.url||""),M("#members-am-icon-type").val(n.icon_type||"dashicon"),M("#members-am-icon-value").val(n.icon||e&&e.icon||"");var a=n.icon||e&&e.icon||"",s=J(a,n.icon_type||e&&e.icon_type||"");"image"!==s&&"custom"!==s&&"svg"!==s||!a?M("#members-am-icon-preview").hide():M("#members-am-icon-preview").show().attr("src",a),M("#members-am-color-bg").val(n.color_bg||""),M("#members-am-color-text").val(n.color_text||""),M("#members-am-color-icon").val(n.color_icon||""),M("#members-am-badge-text").val(n.badge||""),M("#members-am-badge-bg").val(n.badge_bg||""),M("#members-am-item-cap").attr("placeholder",e&&e.cap?e.cap+" (default)":"").val(C.settings.capabilities[C.selectedId]||"");var t=e&&e.custom;M("#members-am-remove-custom").toggle(!!t),M("#members-am-visibility-toggles").empty();var i=e&&e.cap||"read",o=[];if(p().forEach(function(e){"administrator"===e.slug&&!C.settings._meta.admin_editable||o.push(e)}),10<=o.length){var m=membersAdminMenus.i18n&&membersAdminMenus.i18n.filterRolesVisibility||"Filter roles…",l=membersAdminMenus.i18n&&membersAdminMenus.i18n.filterRolesVisibilityLabel||"Filter roles in this list",d=M('
'),c=M(' ').attr("placeholder",m).attr("aria-label",l);d.append(c),M("#members-am-visibility-toggles").append(d),c.on("input",function(){var s=(M(this).val()||"").trim().toLowerCase();M("#members-am-visibility-toggles .members-am-vis-row").each(function(){var e=M(this),n=(e.find("span").first().text()||"").toLowerCase(),r=String(e.find(".members-am-vis-cb").data("role")||"").toLowerCase(),a=!s||-1!==n.indexOf(s)||-1!==r.indexOf(s);e.toggleClass("members-am-vis-filter-hidden",!a)})})}o.forEach(function(e){var n=L(e.slug,C.selectedId),r=F(e.slug,i),a=M(' ').attr("data-role",e.slug).prop("checked",!n&&r);r||a.prop("disabled",!0);var s=M(' ').append(a,M(" ").text(e.label));r||(s.append(M(" ").text(" — no capability").css({color:"#999",fontStyle:"italic",marginLeft:"4px"})),s.css("opacity","0.5")),M("#members-am-visibility-toggles").append(s)}),M(".members-am-color").each(function(){M(this).data("wpWpColorPicker")&&M(this).wpColorPicker("destroy")}),M(".members-am-color").wpColorPicker({change:function(e,n){setTimeout(function(){pe()},20)},clear:function(){setTimeout(function(){pe()},20)}}),fe(),function(){var e=M(".members-am-demote-wrap"),r=M("#members-am-demote-parent"),n=M("#members-am-demote");if(!C.selectedId)return e.attr("hidden",!0);if(w(C.selectedId))return e.attr("hidden",!0);var a=Z()[0]||C.activeRoleSlugs[0];if(a&&A(a,C.selectedId))return e.attr("hidden",!0);e.removeAttr("hidden");var s=C.selectedId,t=membersAdminMenus.i18n&&membersAdminMenus.i18n.selectParentMenu||"";r.empty().append(M(" ").val("").text(t));var i=0;C.tree.forEach(function(e){if(e&&e.id&&e.id!==s){var n=e.title&&String(e.title).trim()?e.title:e.id;r.append(M(" ").val(e.id).text(n)),i++}});var o=0 ');"dashicons"===r?n.append(M(' ')):n.append(M(' ')),n.on("click",function(){M("#members-am-icon-value").val(e),M("#members-am-icon-type").val("dashicons"===r?"dashicon":"fontawesome"),pe()}),s.append(n)}})}function be(e,n){var r=C.activeRoleSlugs.indexOf(e);if(-1!==r){var a=r+n;if(!(a<0||a>=C.activeRoleSlugs.length)){h();var s=C.activeRoleSlugs[r];C.activeRoleSlugs[r]=C.activeRoleSlugs[a],C.activeRoleSlugs[a]=s,l(),Oe()}}}function he(e,n,r){var a,s,t,i=I(e).overrides[n]||{},o=null;if("__promote__"===i.parent?o=null:-1!==n.indexOf("::")?o=w(n):i.parent&&"__promote__"!==i.parent&&(o=i.parent),o){var m=I(e).submenu_order;m[o]||(m[o]=(a=e,t=R(s=o),C.tree.forEach(function(e){e&&e.id&&-1===e.id.indexOf("::")&&(I(a).overrides[e.id]||{}).parent===s&&-1===t.indexOf(e.id)&&t.push(e.id)}),t));var l=m[o],d=-1!==n.indexOf("::")?n.split("::").pop():n;if(-1===(u=l.indexOf(d)))return;if((p=u+r)<0||p>=l.length)return;h();var c=l[u];l[u]=l[p],l[p]=c}else{I(e).order&&I(e).order.length||(I(e).order=S());var u,p,f=I(e).order;if(-1===(u=f.indexOf(n)))return;if((p=u+r)<0||p>=f.length)return;h();var b=f[u];f[u]=f[p],f[p]=b}Oe()}function ve(){var e=Z();if(e.length){h();var a="sep-"+Date.now();e.forEach(function(e){I(e).order&&I(e).order.length||(I(e).order=S());var n=I(e).order,r=C.selectedId?n.indexOf(C.selectedId):n.length-1;r<0&&(r=n.length),n.splice(r+1,0,a)}),Oe()}}function ge(e){var n=M("#members-am-toolbar-loading");n.removeAttr("hidden"),n.find(".spinner").addClass("is-active"),n.find(".members-am-loading-text").text(e||""),M("#members-am-save, #members-am-reset, #members-am-import, #members-am-copy-apply, #members-am-undo").prop("disabled",!0)}function xe(){var e=M("#members-am-toolbar-loading");e.attr("hidden",!0),e.find(".spinner").removeClass("is-active"),e.find(".members-am-loading-text").text(""),M("#members-am-save, #members-am-reset, #members-am-import, #members-am-copy-apply").prop("disabled",!1),u()}function ye(e){ge(e||membersAdminMenus.i18n&&membersAdminMenus.i18n.saving||"Saving…");var s=membersAdminMenus.i18n&&membersAdminMenus.i18n.networkError||"Could not save settings. Check your connection and try again.";M.ajax({url:membersAdminMenus.ajaxUrl,type:"POST",dataType:"json",timeout:6e4,data:{action:"members_admin_menus_save",nonce:membersAdminMenus.nonce,settings:JSON.stringify(C.settings)}}).done(function(e){if(e&&void 0!==e.success){if(e.success)return a=t(),c=null,u(),void f("success",e.data&&e.data.message||membersAdminMenus.i18n&&membersAdminMenus.i18n.saved||"Settings saved.");f("error",e.data&&e.data.message?e.data.message:"Error")}else f("error",s)}).fail(function(e,n){if("abort"!==n){var r=s;if(e&&e.responseJSON&&void 0!==e.responseJSON.data){var a=e.responseJSON.data;"string"==typeof a&&a?r=a:a&&"string"==typeof a.message&&a.message&&(r=a.message)}f("error",r)}}).always(function(){xe()})}function _e(e,n){if(confirm("role"===e&&n?"Reset all settings for this role? This cannot be undone.":"Reset ALL menu settings for every role? This cannot be undone.")){ge(membersAdminMenus.i18n&&membersAdminMenus.i18n.resetting||"Resetting…");var r=!1;M.post(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_reset",nonce:membersAdminMenus.nonce,scope:e||"all",role:n||""}).done(function(e){if(e.success)return o("success",e.data&&e.data.message||membersAdminMenus.i18n&&membersAdminMenus.i18n.resetComplete||"Reset complete."),C.allowUnload=!0,r=!0,void location.reload();f("error",e.data&&e.data.message?e.data.message:membersAdminMenus.i18n&&membersAdminMenus.i18n.resetFailed||"Reset failed.")}).fail(function(){f("error",membersAdminMenus.i18n&&membersAdminMenus.i18n.resetNetworkError||membersAdminMenus.i18n.networkError||"Could not reset settings. Check your connection and try again.")}).always(function(){r||xe()})}}function ke(e){M.getJSON(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_user_search",nonce:membersAdminMenus.nonce,term:e},function(e){e.success&&e.data&&e.data.length?function(e){M(".members-am-user-suggestions").remove();var n=M("#members-am-user-search").parent();n.css("position","relative");var r=M('
');e.forEach(function(e){r.append(M('
').text(e.label).data("userId",e.id).on("click",function(){!function(e,n,r){C.previewUserId=e,C.previewUserLabel=n||"User #"+e,C.previewUserRoles=r||[],b(),C.settings.users[e]||(C.settings.users[e]={});Oe()}(e.id,e.label,e.roles),M(".members-am-user-suggestions").remove(),M("#members-am-user-search").val("")}))}),n.append(r),setTimeout(function(){M(document).one("click",function(){M(".members-am-user-suggestions").remove()})},0)}(e.data):M(".members-am-user-suggestions").remove()})}function we(){M(document).on("click","#members-am-role-chips .members-am-chip",function(){var e=M(this).data("role"),n=C.activeRoleSlugs.indexOf(e);-1===n?C.activeRoleSlugs.push(e):1 ');if(t.append(M('
').text("Reset Settings")),a&&s){var i=M(' ');i.append(M(' ')),i.append(M(' ').append(M(" ").text("Reset "+s),M(" ").text("Clear all menu settings for this role only"))),i.on("click",function(){M(".members-am-reset-dropdown").remove(),_e("role",a)}),t.append(i)}var o=M(' ');o.append(M(' ')),o.append(M(' ').append(M(" ").text("Reset all roles"),M(" ").text("Clear all menu settings for every role"))),o.on("click",function(){M(".members-am-reset-dropdown").remove(),_e("all")}),t.append(o),n.parent().css("position","relative"),t.insertAfter(n),M(document).one("click",function(){M(".members-am-reset-dropdown").remove()})}),M("#members-am-export").on("click",function(e){e.preventDefault(),window.location.href=membersAdminMenus.exportUrl}),M("#members-am-import").on("click",function(){M("#members-am-import-file").trigger("click")}),M("#members-am-import-file").on("change",function(){var e=this.files&&this.files[0];e&&function(e){ge(membersAdminMenus.i18n&&membersAdminMenus.i18n.importing||"Importing…");var r=new FileReader;r.onerror=function(){xe(),f("error",membersAdminMenus.i18n&&membersAdminMenus.i18n.readFileFailed||"Could not read the file.")},r.onload=function(){try{var e=JSON.parse(r.result),n=!1;M.post(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_import",nonce:membersAdminMenus.nonce,settings:JSON.stringify(e)}).done(function(e){if(e.success)return o("success",e.data&&e.data.message||membersAdminMenus.i18n&&membersAdminMenus.i18n.imported||"Settings imported."),C.allowUnload=!0,n=!0,void location.reload();f("error",e.data&&e.data.message?e.data.message:"Error")}).fail(function(){f("error",membersAdminMenus.i18n&&membersAdminMenus.i18n.importNetworkError||membersAdminMenus.i18n.networkError||"Could not import settings. Check your connection and try again.")}).always(function(){n||xe()})}catch(e){xe(),f("error",membersAdminMenus.i18n&&membersAdminMenus.i18n.invalidJson||"Invalid JSON.")}},r.readAsText(e)}(e)}),M("#members-am-copy-apply").on("click",function(){var r=M("#members-am-copy-from").val(),n=M("#members-am-copy-to").val();if(r&&n)if(r!==n){var a="",s="";if(p().forEach(function(e){e.slug===r&&(a=e.label),e.slug===n&&(s=e.label)}),confirm('Copy menu settings from "'+a+'" to "'+s+'"?\nThis will overwrite "'+s+"\" menu configuration.\n\nNote: This copies menu order, hidden items, labels, icons, and colors.\nIt does NOT change the role's capabilities (items marked with a lock icon).")){h();var e=I(r),t={hidden:e.hidden?e.hidden.slice():[],order:[],submenu_order:{},overrides:{}},i=U(r);t.order=i.slice(),C.tree.forEach(function(e){if(e.children&&e.children.length){var n=T(r,e.id);n&&n.length&&(t.submenu_order[e.id]=n.slice())}}),e.overrides&&"object"==typeof e.overrides&&(t.overrides=JSON.parse(JSON.stringify(e.overrides))),C.settings.roles[n]=t,-1===C.activeRoleSlugs.indexOf(n)&&(C.activeRoleSlugs.push(n),l(),ae()),Oe(),ye(membersAdminMenus.i18n&&membersAdminMenus.i18n.copying||"Copying…")}}else f("error",membersAdminMenus.i18n&&membersAdminMenus.i18n.rolesMustDiffer||"Source and target roles must be different.")}),M("#members-am-admin-editable").on("change",function(){var e=!0;M(this).is(":checked")&&(e=window.confirm(membersAdminMenus.i18n.adminEditableWarn)),e?(C.settings._meta.admin_editable=M(this).is(":checked"),re(),ae(),l(),Oe()):M(this).prop("checked",!1)}),M("#members-am-sync-scroll").prop("checked",!1!==C.syncScroll),M("#members-am-sync-scroll").on("change",function(){C.syncScroll=M(this).is(":checked");try{localStorage.setItem("members_am_sync_scroll",C.syncScroll?"1":"0")}catch(e){}ce()});var s="members_am_more_tools";function e(e){var n=M("#members-am-toolbar-extra"),r=M("#members-am-more-tools");if(n.length&&r.length){n.prop("hidden",!e),r.attr("aria-expanded",e?"true":"false").toggleClass("is-open",!!e);var a=membersAdminMenus.i18n||{};e&&a.moreToolsHideAria?r.attr("aria-label",a.moreToolsHideAria):!e&&a.moreToolsShowAria?r.attr("aria-label",a.moreToolsShowAria):r.removeAttr("aria-label");try{sessionStorage.setItem(s,e?"1":"0")}catch(e){}}}var n,r=!1;try{r="1"===sessionStorage.getItem(s)}catch(e){}e(r),M("#members-am-more-tools").on("click",function(){e(M("#members-am-toolbar-extra").prop("hidden"))}),M("#members-am-add-item").on("click",function(){h();var e="c"+Date.now();C.settings.custom_items.push({id:e,label:"Custom link",url:window.location.origin+"/wp-admin/",icon_type:"dashicon",icon:"dashicons-admin-generic",parent:"",position:99,cap:"read"}),C.tree=_(),C.selectedId=x({id:e}),Oe(),ue()}),M("#members-am-remove-custom").on("click",function(){var n=k(C.selectedId);n&&n.customId&&(h(),C.settings.custom_items=(C.settings.custom_items||[]).filter(function(e){return e.id!==n.customId}),C.selectedId=null,C.tree=_(),Oe(),M("#members-am-edit-panel").attr("hidden",!0))}),M("#members-am-edit-close").on("click",function(){C.selectedId=null,M("#members-am-edit-panel").attr("hidden",!0),Oe()}),M("#members-am-edit-target-role").on("change",ue),M("#members-am-edit-label, #members-am-edit-url, #members-am-icon-value, #members-am-badge-text").on("input",function(){pe()}),M("#members-am-item-cap").on("input",function(){pe()}),M(".members-am-icon-tabs .button").on("click",function(){M(".members-am-icon-tabs .button").removeClass("is-active"),M(this).addClass("is-active"),C.iconTab="fontawesome"===M(this).data("tab")?"fontawesome":"upload"===M(this).data("tab")?"upload":"dashicons",fe()}),M("#members-am-icon-search").on("input",fe),M("#members-am-media-upload").on("click",function(e){e.preventDefault(),C.mediaFrame||(C.mediaFrame=wp.media({title:"Choose menu icon",button:{text:"Use as icon"},multiple:!1,library:{type:"image"}}),C.mediaFrame.on("select",function(){var e=C.mediaFrame.state().get("selection").first().toJSON(),n=e.url||"";e.sizes&&(e.sizes.thumbnail?n=e.sizes.thumbnail.url:e.sizes.medium&&(n=e.sizes.medium.url)),M("#members-am-icon-type").val("custom"),M("#members-am-icon-value").val(n),pe()})),C.mediaFrame.open()}),M(document).on("change",".members-am-vis-cb",function(){h();var e=M(this).data("role");if(M(this).is(":checked")){var n=I(e).hidden,r=n.indexOf(C.selectedId);-1!==r&&n.splice(r,1)}else-1===I(e).hidden.indexOf(C.selectedId)&&I(e).hidden.push(C.selectedId);Oe()}),M("#members-am-add-sep").on("click",ve),M("#members-am-promote").on("click",function(){if(C.selectedId){h();var s=C.selectedId,e=ee()||{};if(-1===s.indexOf("::")&&e.parent&&"__promote__"!==e.parent){var t=e.parent,n=$();if(n){var r=P(n);if(r.overrides[s]&&delete r.overrides[s].parent,r.submenu_order&&r.submenu_order[t]){var a=r.submenu_order[t].indexOf(s);-1!==a&&r.submenu_order[t].splice(a,1)}if(r.order.length||(r.order=S()),-1===r.order.indexOf(s)){var i=r.order.indexOf(t);-1!==i?r.order.splice(i+1,0,s):r.order.push(s)}}else Z().forEach(function(e){var n=I(e);if(n.overrides[s]&&delete n.overrides[s].parent,n.submenu_order&&n.submenu_order[t]){var r=n.submenu_order[t].indexOf(s);-1!==r&&n.submenu_order[t].splice(r,1)}if(n.order&&n.order.length||(n.order=S()),-1===n.order.indexOf(s)){var a=n.order.indexOf(t);-1!==a?n.order.splice(a+1,0,s):n.order.push(s)}});return pe(),void ue()}ne("parent","__promote__");var o=w(s);Z().forEach(function(e){var n=I(e);if(n.order&&n.order.length||(n.order=S()),-1===n.order.indexOf(s))if(o){var r=n.order.indexOf(o);-1!==r?n.order.splice(r+1,0,s):n.order.push(s)}else n.order.push(s)}),pe(),ue()}}),M("#members-am-demote").on("click",function(){var e=M("#members-am-demote-parent").val();e?(h(),ne("parent",e),pe(),ue()):f("warning",membersAdminMenus.i18n&&membersAdminMenus.i18n.selectParentFirst||"Please choose a parent menu from the list.")}),M("#members-am-user-search").on("input",function(){var e=M(this).val();clearTimeout(n),n=setTimeout(function(){1 ").val("__all__").text("All roles")),C.activeRoleSlugs.forEach(function(n){var e=(p().filter(function(e){return e.slug===n})[0]||{}).label||n;r.append(M(" ").val(n).text(e))}),C.previewUserId&&r.append(M(" ").val("__user__"+C.previewUserId).text(C.previewUserLabel||"User #"+C.previewUserId)),C.selectedId&&ue()}M(function(){var n,r,e;!function(){try{var e=sessionStorage.getItem(i);if(!e)return;sessionStorage.removeItem(i);var n=JSON.parse(e);n&&n.message&&f(n.type,n.message)}catch(e){}}(),b(),C.tree=_(),re(),M("#members-am-admin-editable").prop("checked",!!C.settings._meta.admin_editable),n=M("#members-am-copy-from").empty(),r=M("#members-am-copy-to").empty(),(e=p()).forEach(function(e){n.append(M(" ").val(e.slug).text(e.label)),r.append(M(" ").val(e.slug).text(e.label))}),1
'),r=M("#members-am-notices"));var a=M("
",{class:"notice is-dismissible"}).addClass("notice-"+(e||"info"));a.append(M("
").text(n)),r.prepend(a),M(document).trigger("wp-notice-added")}}function o(e,n){try{sessionStorage.setItem(i,JSON.stringify({type:e||"success",message:n}))}catch(e){}}var e=["dashicons-menu","dashicons-admin-dashboard","dashicons-admin-post","dashicons-admin-page","dashicons-admin-media","dashicons-admin-comments","dashicons-admin-appearance","dashicons-admin-plugins","dashicons-admin-users","dashicons-admin-tools","dashicons-admin-settings","dashicons-admin-generic","dashicons-edit","dashicons-plus","dashicons-chart-bar","dashicons-cart","dashicons-products","dashicons-email","dashicons-groups","dashicons-heart","dashicons-star-filled","dashicons-smiley","dashicons-info","dashicons-lock","dashicons-unlock","dashicons-visibility","dashicons-hidden","dashicons-arrow-up","dashicons-arrow-down","dashicons-admin-network","dashicons-performance"],n=["fa-solid fa-house","fa-solid fa-user","fa-solid fa-gear","fa-solid fa-file","fa-solid fa-image","fa-solid fa-cart-shopping","fa-solid fa-chart-line","fa-solid fa-envelope","fa-solid fa-book","fa-solid fa-link","fa-solid fa-bell","fa-solid fa-star","fa-solid fa-heart","fa-solid fa-lock","fa-solid fa-unlock","fa-solid fa-pen","fa-solid fa-trash","fa-solid fa-plus","fa-solid fa-minus"],m="members_am_view_state";function l(){try{localStorage.setItem(m,JSON.stringify({activeRoleSlugs:C.activeRoleSlugs,carouselPage:C.carouselPage}))}catch(e){}}function d(e){return JSON.parse(JSON.stringify(e))}var c=null;function h(){c=d(C.settings),u()}function u(){var e=M("#members-am-undo");if(e.length){var n=!!c;e.prop("disabled",!n).attr("aria-disabled",n?"false":"true")}}function p(){return membersAdminMenus.roles||[]}function b(){C.settings._meta&&!Array.isArray(C.settings._meta)||(C.settings._meta={version:3,admin_editable:!1}),C.settings.roles&&!Array.isArray(C.settings.roles)||(C.settings.roles={}),C.settings.users&&!Array.isArray(C.settings.users)||(C.settings.users={}),Array.isArray(C.settings.custom_items)||(C.settings.custom_items=[]),C.settings.capabilities&&!Array.isArray(C.settings.capabilities)||(C.settings.capabilities={})}function I(e){b(),C.settings.roles[e]||(C.settings.roles[e]={hidden:[],order:[],submenu_order:{},overrides:{}});var n=C.settings.roles[e];return n.hidden&&Array.isArray(n.hidden)||(n.hidden=[]),n.order&&Array.isArray(n.order)||(n.order=[]),n.submenu_order&&!Array.isArray(n.submenu_order)||(n.submenu_order={}),n.overrides&&!Array.isArray(n.overrides)||(n.overrides={}),n}function P(e){b(),C.settings.users[e]||(C.settings.users[e]={});var n=C.settings.users[e];return n.hidden&&Array.isArray(n.hidden)||(n.hidden=[]),n.order&&Array.isArray(n.order)||(n.order=[]),n.overrides&&!Array.isArray(n.overrides)||(n.overrides={}),n.submenu_order&&!Array.isArray(n.submenu_order)||(n.submenu_order={}),n}function v(n){var e=P(n);return(e.order&&e.order.length?e.order.slice():S()).filter(function(e){return 0===e.indexOf("sep-")||!!k(e)&&!function(e,n){if(!n||-1!==n.indexOf("::"))return;var r=P(e),a=r.overrides&&r.overrides[n]||{};return a.parent&&"__promote__"!==a.parent}(n,e)})}function g(e,n,r,a){var s,t=P(e),i=t.overrides&&t.overrides[n]||{},o=r;!o&&i.parent&&"__promote__"!==i.parent&&(o=i.parent);var m,l,d,c,u=-1!==n.indexOf("::")?n.split("::").pop():n,p=(s=o?(t.submenu_order[o]||(t.submenu_order[o]=(m=e,d=R(l=o),c=P(m),C.tree.forEach(function(e){e&&e.id&&-1===e.id.indexOf("::")&&(c.overrides&&c.overrides[e.id]||{}).parent===l&&-1===d.indexOf(e.id)&&d.push(e.id)}),d)),t.submenu_order[o]):(t.order.length||(t.order=S()),t.order)).indexOf(u);if(-1!==p){var f=p+a;f<0||f>=s.length||(h(),s.splice(p,1),s.splice(f,0,o?u:n))}}function x(e){var n=e.id||"c";return"members-am-"+String(n).replace(/[^a-z0-9_-]/gi,"-").toLowerCase()}function y(e){return!!e&&0===(-1!==e.indexOf("::")?e.split("::").pop():e).indexOf("members-am-")}function _(){var a=M.extend(!0,[],membersAdminMenus.menuTree||[]),s={};return a.forEach(function(e){s[e.id]=!0}),(C.settings.custom_items||[]).forEach(function(e){if(e&&e.id){var n=x(e);if(s[n]){for(var r=0;rs&&(C.carouselPage=s))}}C.activeRoleSlugs=n.filter(function(e){return"administrator"!==e||r}),C.activeRoleSlugs.length||(C.activeRoleSlugs=["subscriber"])}function ae(){var a=M("#members-am-role-chips").empty();p().forEach(function(e){if("administrator"!==e.slug||C.settings._meta.admin_editable){var n=-1!==C.activeRoleSlugs.indexOf(e.slug),r=M(' ').text(e.label).attr("data-role",e.slug).toggleClass("is-active",n);a.append(r)}})}function se(t,i,e,o,m){(function(e,n,r,a,s){s=s||0;var t=n.id,i=L(e,t),o=!F(e,n.cap),m=I(e).overrides[t]||{},l=m.label||n.title||t,d=M('
').attr("data-id",t).attr("data-menu-parent",r||"").toggleClass("is-hidden",i).toggleClass("is-no-cap",o).toggleClass("is-selected",C.selectedId===t).toggleClass("is-sub",0 ');if(p){V(c);var b=!!C.collapsedParents[c][t],h=u.expandSubmenus||"Expand submenu items",v=u.collapseSubmenus||"Collapse submenu items";M(' ').attr("aria-expanded",!b).attr("aria-label",(b?h:v)+": "+l).append(M(' ').addClass(b?"dashicons-arrow-right-alt2":"dashicons-arrow-down-alt2")).on("click",function(e){e.stopPropagation(),V(c),C.collapsedParents[c][t]=!C.collapsedParents[c][t],ce()}).appendTo(f),d.toggleClass("is-collapse-collapsed",b)}else f.append(M(' '));d.append(f);var g=u.bulkCheckboxAria||"Include in bulk actions",x=M(' '),y=M(' ').prop("checked",!!C.columnBulkSelection[c].ids[t]).attr("aria-label",g+": "+l).on("click",function(e){e.stopPropagation()}).on("change",function(e){e.stopPropagation(),z(c,t,M(this).prop("checked")),ce()});x.append(y),d.append(x);var _=M('
');if(0===s){var k=m.icon||n.icon,w=J(k,m.icon_type||n.icon_type);if("fontawesome"===w&&k)_.append(M(' '));else if("svg"!==w&&"image"!==w&&"custom"!==w||!k){var O=k&&0===k.indexOf("dashicons-")?k:"dashicons-admin-generic";_.append(M(' '))}else _.append(M(" ").attr("src",k).css({width:"20px",height:"20px",display:"inline-block",verticalAlign:"middle",objectFit:"contain",filter:"none"}))}n.custom&&_.append(M('custom '));m.label&&_.append(M('edit '));if(_.append(M(' ').text(l)),m.badge){var A=m.badge_bg||"#d63638";_.append(M(' ').text(m.badge).css({backgroundColor:A,color:"#fff",fontSize:"9px",padding:"1px 5px",borderRadius:"2px",marginLeft:"4px",whiteSpace:"nowrap"}))}o&&_.append(M(' Roles.\">🔒 no access "));d.append(_),m.color_bg&&d.css("background-color",m.color_bg);m.color_text&&d.find(".members-am-item-label").css("color",m.color_text);m.color_icon&&(d.find(".dashicons").css("color",m.color_icon),d.find(".members-am-fa-icon i").css("color",m.color_icon),d.find("img").css("filter","none"));var S=M('
');S.append(M(' ').text("◉"),M(' ').text("↑"),M(' ').text("↓")),d.append(S),a.append(d)})(t,i,e,o,m=m||0),i.children&&i.children.length&&U(t,i.id).forEach(function(e){var n,r,a,s=(n=t,r=i.id,k(N(r,a=e))||(-1===a.indexOf("::")&&(I(n).overrides[a]||{}).parent===r?k(a):null));s&&"__promote__"!==(I(t).overrides[s.id]||{}).parent&&se(t,s,i.id,o,m+1)})}function te(r,a,e,s,t,i){i=i||0,t.append(function(n,e,r,a,s){s=s||0;var t=a.overrides&&a.overrides[n.id]||{},i=t.label||n.title,o=function(e,n){var r=P(e);if(-1!==r.hidden.indexOf(n))return!0;var a=E(n,e);return!(!a||-1===r.hidden.indexOf(a))}(r,n.id),m=!function(e){if(!e||"read"===e)return 1;for(var n=C.previewUserRoles||[],r=0;r").addClass(d).attr("data-id",n.id).attr("data-menu-parent",e||""),u="u:"+r;D(u);var p=membersAdminMenus.i18n||{},f=n.children&&n.children.length,b=M(' ');if(f){V(u);var h=!!C.collapsedParents[u][n.id],v=p.expandSubmenus||"Expand submenu items",g=p.collapseSubmenus||"Collapse submenu items";M(' ').attr("aria-expanded",!h).attr("aria-label",(h?v:g)+": "+i).append(M(' ').addClass(h?"dashicons-arrow-right-alt2":"dashicons-arrow-down-alt2")).on("click",function(e){e.stopPropagation(),V(u),C.collapsedParents[u][n.id]=!C.collapsedParents[u][n.id],ce()}).appendTo(b),c.toggleClass("is-collapse-collapsed",h)}else b.append(M(' '));c.append(b);var x=p.bulkCheckboxAria||"Include in bulk actions",y=M(' '),_=M(' ').prop("checked",!!C.columnBulkSelection[u].ids[n.id]).attr("aria-label",x+": "+i).on("click",function(e){e.stopPropagation()}).on("change",function(e){e.stopPropagation(),z(u,n.id,M(this).prop("checked")),ce()});y.append(_),c.append(y);var k=M('
');if(0===s){var w=t.icon||n.icon,O=J(w,t.icon_type||n.icon_type);"fontawesome"===O&&w?k.append(M(' ')):"svg"!==O&&"image"!==O&&"custom"!==O||!w?w&&0===w.indexOf("dashicons-")?k.append(M(' ')):k.append(M(' ')):k.append(M(" ").attr("src",w).css({width:"20px",height:"20px",display:"inline-block",verticalAlign:"middle",objectFit:"contain",filter:"none"}))}n.custom&&k.append(M('custom '));t.label&&k.append(M('edit '));if(k.append(M(' ').text(i)),t.badge){var A=t.badge_bg||"#d63638";k.append(M(' ').text(t.badge).css({backgroundColor:A,color:"#fff",fontSize:"9px",padding:"1px 5px",borderRadius:"2px",marginLeft:"4px",whiteSpace:"nowrap"}))}m&&k.append(M('🔒 no access "));c.append(k),t.color_bg&&c.css("background-color",t.color_bg);t.color_text&&c.find(".members-am-item-label").css("color",t.color_text);t.color_icon&&(c.find(".dashicons").css("color",t.color_icon),c.find(".members-am-fa-icon i").css("color",t.color_icon));var S=M('
');return S.append(M(' ').text(o?"◯":"◉"),M(' ').text("↑"),M(' ').text("↓")),c.append(S),c.on("click",function(e){M(e.target).closest("button, .members-am-item-cb, .members-am-collapse-toggle").length||(C.selectedId=n.id,Oe())}),c}(a,e,r,s,i)),a.children&&a.children.length&&function(e,n){var r=R(n),a=P(e);C.tree.forEach(function(e){e&&e.id&&-1===e.id.indexOf("::")&&(a.overrides&&a.overrides[e.id]||{}).parent===n&&-1===r.indexOf(e.id)&&r.push(e.id)});var s=a.submenu_order&&a.submenu_order[n];if(!s||!s.length)return r.slice();var t=s.filter(function(e){return-1!==r.indexOf(e)});return r.forEach(function(e){-1===t.indexOf(e)&&t.push(e)}),t}(r,a.id).forEach(function(e){var n=function(e,n,r){var a=k(N(n,r));if(a)return a;if(-1===r.indexOf("::")){var s=P(e);if((s.overrides&&s.overrides[r]||{}).parent===n)return k(r)}return null}(r,a.id,e);n&&"__promote__"!==(s.overrides&&s.overrides[n.id]||{}).parent&&te(r,n,a.id,s,t,i+1)})}function ie(e,n){var s=(n||"").trim().toLowerCase(),r=e.children(".members-am-item");if(!s)return r.removeClass("members-am-filter-hidden"),void e.children(".members-am-sep").removeClass("members-am-filter-hidden");var i={};r.each(function(){var e=M(this),n=e.attr("data-id"),r=(e.find(".members-am-item-label").first().text()||"").toLowerCase(),a=(n||"").toLowerCase();i[n]=-1!==r.indexOf(s)||-1!==a.indexOf(s)});var o={};r.each(function(){var e=M(this).attr("data-id"),n=M(this).attr("data-menu-parent")||"";o[n]||(o[n]=[]),o[n].push(e)});var m={};function l(e){var n,r=i[e],a=o[e]||[],s=!1;for(n=0;n '),o=M(' ').attr("placeholder",s).attr("aria-label",t).val(a);i.append(o),e.find(".members-am-sidebar-head").first().after(i),o.on("input",function(){C.columnFilters[r]=M(this).val(),ie(n,M(this).val())}),ie(n,a)}function me(e,n){var t=0===String(n).indexOf("u:"),i=t?parseInt(n.replace(/^u:/,""),10):0,o=t?null:n,m=n,l=membersAdminMenus.i18n||{},r=M('
').attr("data-column-key",m),a=M('
');a.append(M(' ').text(l.bulkSelectVisible||"Select visible"),M(' ').text(l.bulkClearSelection||"Clear selection"));var s=M('
');s.append(M(' ').text(l.collapseAllMenus||"Collapse all"),M(' ').text(l.expandAllMenus||"Expand all"));var d=M(' ').attr("aria-label",l.bulkVisibilityLabel||"Menu visibility for this column");d.append(M(' ').text(l.bulkActionsPlaceholder||"Choose visibility…"));var c=M(" ").attr("label",l.bulkGroupWholeColumn||"Whole column");c.append(M(' ').text(l.bulkShowAllItems||"Show every menu item"),M(' ').text(l.bulkHideAllItems||"Hide every menu item"));var u=M(" ").attr("label",l.bulkGroupCheckedRows||"Checked rows");u.append(M(' ').text(l.bulkKeepOnlyCheckedVisible||"Keep only checked visible"),M(' ').text(l.bulkHideCheckedItems||"Hide checked items"),M(' ').text(l.bulkShowCheckedItems||"Show checked items")),d.append(c,u),r.append(a,s,d);var p=e.find(".members-am-col-filter").first();p.length?p.after(r):e.find(".members-am-sidebar-head").first().after(r),d.on("change",function(){var e=M(this).val();if(M(this).val(""),e)if(!("keep-only-checked"===e||"hide-checked"===e||"show-checked"===e)||B(m).length){if("keep-only-checked"===e){if(!window.confirm(l.bulkConfirmKeepOnlyChecked||"Hide all items except checked items and their parent menus?"))return}else if("hide-all"===e){if(!window.confirm(l.bulkConfirmHideAll||"Hide every menu item in this column?"))return}else if("hide-checked"===e&&!window.confirm(l.bulkConfirmHideChecked||"Hide the checked items (and their submenus where applicable)?"))return;var n,r,a,s;h(),t?"show-all"===e?P(i).hidden=[]:"hide-all"===e?(a=i,s=j(),P(a).hidden=s.slice()):"keep-only-checked"===e?function(e,r){var n=B(e);if(n.length){var a={};n.forEach(function(e){for(var n=e;n;)a[n]=!0,n=E(n,r)});var s=j(),t=P(r).hidden;t.length=0,s.forEach(function(e){a[e]||t.push(e)})}}(m,i):"hide-checked"===e?X(m,i):"show-checked"===e&&Y(m,i):"show-all"===e?I(o).hidden=[]:"hide-all"===e?(n=o,r=j(),I(n).hidden=r.slice()):"keep-only-checked"===e?function(e,r){var n=B(e);if(n.length){var a={};n.forEach(function(e){for(var n=e;n;)a[n]=!0,n=O(n,r)});var s=j(),t=I(r).hidden;t.length=0,s.forEach(function(e){a[e]||t.push(e)})}}(m,o):"hide-checked"===e?Q(m,o):"show-checked"===e&&q(m,o),Oe()}else f("warning",l.bulkSelectCheckedFirst||"Check one or more menu items first.")})}function le(e){return-1!==e.indexOf("::")?e.split("::").pop():e}function de(){M.fn.sortable&&M("#members-am-columns .members-am-sidebar-list").each(function(){var e=M(this);e.data("ui-sortable")&&e.sortable("destroy");var n=e.closest(".members-am-column"),r=n.data("role"),a=n.data("user");e.sortable({axis:"y",distance:6,items:"> .members-am-item, > .members-am-sep",cancel:".members-am-item-actions button, .members-am-item-cb, .members-am-item-cb-wrap, .members-am-collapse-toggle",placeholder:"members-am-sort-placeholder",forcePlaceholderSize:!0,tolerance:"pointer",start:function(){h()},update:function(){a?function(e,n){var s=[],t={};e.children().each(function(){var e=M(this);if(e.hasClass("members-am-sep")){var n=e.attr("data-sep-id");n&&s.push(n)}else if(e.hasClass("members-am-item")){var r=e.attr("data-id");if(r){var a=e.attr("data-menu-parent");void 0===a||""===a?s.push(r):(t[a]||(t[a]=[]),t[a].push(le(r)))}}});var r=P(n);r.order=s,r.submenu_order=t}(e,a):r&&function(e,n){var s=[],t={};e.children().each(function(){var e=M(this);if(e.hasClass("members-am-sep")){var n=e.attr("data-sep-id");n&&s.push(n)}else if(e.hasClass("members-am-item")){var r=e.attr("data-id");if(r){var a=e.attr("data-menu-parent");void 0===a||""===a?s.push(r):(t[a]||(t[a]=[]),t[a].push(le(r)))}}});var r=I(n);r.order=s,r.submenu_order=t}(e,r),ue()}})})}function ce(){var r=M("#members-am-columns"),a={};r.find(".members-am-column").each(function(){var e=M(this).data("role");if(e){var n=M(this).find(".members-am-sidebar-list");n.length&&(a[e]=n.scrollTop())}}),r.empty();var e=C.carouselPage*C.columnsPerPage;if(C.activeRoleSlugs.slice(e,e+C.columnsPerPage).forEach(function(e){var n=M('
');!function(r,e){e.empty();var n=M(''),a=(p().filter(function(e){return e.slug===r})[0]||{}).label||r;n.append(M('').text(a)),n.append(M(' ').append(M(' ').text("◀"),M(' ').text("▶"))),e.append(n);var s=M('');T(r).forEach(function(e){if(0!==e.indexOf("sep-")){var n=k(e);n&&se(r,n,null,s,0)}else s.append(M('
').attr("data-sep-id",e).text("—"))}),e.append(s),K(s,r),oe(e,s,r),me(e,r)}(e,n),r.append(n),a[e]&&n.find(".members-am-sidebar-list").scrollTop(a[e])}),C.previewUserId){var s=C.previewUserId,n=M('
'),t=M('');t.append(M(" ").text(C.previewUserLabel||"User #"+s)),t.append(M('× ').on("click",function(){C.previewUserId=null,C.previewUserLabel=null,C.previewUserRoles=[],Oe()})),n.append(t);var i=M(''),o=P(s);v(s).forEach(function(e){if(0!==e.indexOf("sep-")){var n=k(e);n&&te(s,n,null,o,i,0)}else i.append(M('
').attr("data-sep-id",e).text("——"))}),n.append(i),K(i,"u:"+s),oe(n,i,"u:"+s),me(n,"u:"+s),r.append(n)}if(C.syncScroll){var m=r.find(".members-am-sidebar-list"),l=!1;m.on("scroll",function(){if(!l){l=!0;var e=M(this).scrollTop();m.not(this).scrollTop(e),l=!1}})}!function(){var e=Math.max(1,Math.ceil(C.activeRoleSlugs.length/C.columnsPerPage)),n=(Math.min(C.carouselPage+1,e),C.carouselPage*C.columnsPerPage+1),r=Math.min((C.carouselPage+1)*C.columnsPerPage,C.activeRoleSlugs.length);M("#members-am-carousel-status").text(n+"–"+r+" "+membersAdminMenus.i18n.of+" "+C.activeRoleSlugs.length);for(var a=M("#members-am-carousel-dots").empty(),s=0;s ').toggleClass("is-active",s===C.carouselPage))}(),de()}function ue(){if(C.selectedId){M("#members-am-edit-panel").removeAttr("hidden");var e=k(C.selectedId),n=ee()||{};M("#members-am-edit-title").text(e?e.title:C.selectedId),M("#members-am-edit-label").val(n.label||e&&e.title||"");var r=y(C.selectedId);M("#members-am-edit-url-wrap").toggle(r),M("#members-am-edit-url").attr("placeholder","Override URL (leave empty for default)").val(r&&(n.url||e&&e.url)||"").data("default-url",e&&e.url||""),M("#members-am-icon-type").val(n.icon_type||"dashicon"),M("#members-am-icon-value").val(n.icon||e&&e.icon||"");var a=n.icon||e&&e.icon||"",s=J(a,n.icon_type||e&&e.icon_type||"");"image"!==s&&"custom"!==s&&"svg"!==s||!a?M("#members-am-icon-preview").hide():M("#members-am-icon-preview").show().attr("src",a),M("#members-am-color-bg").val(n.color_bg||""),M("#members-am-color-text").val(n.color_text||""),M("#members-am-color-icon").val(n.color_icon||""),M("#members-am-badge-text").val(n.badge||""),M("#members-am-badge-bg").val(n.badge_bg||""),M("#members-am-item-cap").attr("placeholder",e&&e.cap?e.cap+" (default)":"").val(C.settings.capabilities[C.selectedId]||"");var t=e&&e.custom;M("#members-am-remove-custom").toggle(!!t),M("#members-am-visibility-toggles").empty();var i=e&&e.cap||"read",o=[];if(p().forEach(function(e){"administrator"===e.slug&&!C.settings._meta.admin_editable||o.push(e)}),10<=o.length){var m=membersAdminMenus.i18n&&membersAdminMenus.i18n.filterRolesVisibility||"Filter roles…",l=membersAdminMenus.i18n&&membersAdminMenus.i18n.filterRolesVisibilityLabel||"Filter roles in this list",d=M('
'),c=M(' ').attr("placeholder",m).attr("aria-label",l);d.append(c),M("#members-am-visibility-toggles").append(d),c.on("input",function(){var s=(M(this).val()||"").trim().toLowerCase();M("#members-am-visibility-toggles .members-am-vis-row").each(function(){var e=M(this),n=(e.find("span").first().text()||"").toLowerCase(),r=String(e.find(".members-am-vis-cb").data("role")||"").toLowerCase(),a=!s||-1!==n.indexOf(s)||-1!==r.indexOf(s);e.toggleClass("members-am-vis-filter-hidden",!a)})})}o.forEach(function(e){var n=L(e.slug,C.selectedId),r=F(e.slug,i),a=M(' ').attr("data-role",e.slug).prop("checked",!n&&r);r||a.prop("disabled",!0);var s=M(' ').append(a,M(" ").text(e.label));r||(s.append(M(" ").text(" — no capability").css({color:"#999",fontStyle:"italic",marginLeft:"4px"})),s.css("opacity","0.5")),M("#members-am-visibility-toggles").append(s)}),M(".members-am-color").each(function(){M(this).data("wpWpColorPicker")&&M(this).wpColorPicker("destroy")}),M(".members-am-color").wpColorPicker({change:function(e,n){setTimeout(function(){pe()},20)},clear:function(){setTimeout(function(){pe()},20)}}),fe(),function(){var e=M(".members-am-demote-wrap"),r=M("#members-am-demote-parent"),n=M("#members-am-demote");if(!C.selectedId)return e.attr("hidden",!0);if(w(C.selectedId))return e.attr("hidden",!0);var a=Z()[0]||C.activeRoleSlugs[0];if(a&&A(a,C.selectedId))return e.attr("hidden",!0);e.removeAttr("hidden");var s=C.selectedId,t=membersAdminMenus.i18n&&membersAdminMenus.i18n.selectParentMenu||"";r.empty().append(M(" ").val("").text(t));var i=0;C.tree.forEach(function(e){if(e&&e.id&&e.id!==s){var n=e.title&&String(e.title).trim()?e.title:e.id;r.append(M(" ").val(e.id).text(n)),i++}});var o=0 ');"dashicons"===r?n.append(M(' ')):n.append(M(' ')),n.on("click",function(){M("#members-am-icon-value").val(e),M("#members-am-icon-type").val("dashicons"===r?"dashicon":"fontawesome"),pe()}),s.append(n)}})}function be(e,n){var r=C.activeRoleSlugs.indexOf(e);if(-1!==r){var a=r+n;if(!(a<0||a>=C.activeRoleSlugs.length)){h();var s=C.activeRoleSlugs[r];C.activeRoleSlugs[r]=C.activeRoleSlugs[a],C.activeRoleSlugs[a]=s,l(),Oe()}}}function he(e,n,r){var a,s,t,i=I(e).overrides[n]||{},o=null;if("__promote__"===i.parent?o=null:-1!==n.indexOf("::")?o=w(n):i.parent&&"__promote__"!==i.parent&&(o=i.parent),o){var m=I(e).submenu_order;m[o]||(m[o]=(a=e,t=R(s=o),C.tree.forEach(function(e){e&&e.id&&-1===e.id.indexOf("::")&&(I(a).overrides[e.id]||{}).parent===s&&-1===t.indexOf(e.id)&&t.push(e.id)}),t));var l=m[o],d=-1!==n.indexOf("::")?n.split("::").pop():n;if(-1===(u=l.indexOf(d)))return;if((p=u+r)<0||p>=l.length)return;h();var c=l[u];l[u]=l[p],l[p]=c}else{I(e).order&&I(e).order.length||(I(e).order=S());var u,p,f=I(e).order;if(-1===(u=f.indexOf(n)))return;if((p=u+r)<0||p>=f.length)return;h();var b=f[u];f[u]=f[p],f[p]=b}Oe()}function ve(){var e=Z();if(e.length){h();var a="sep-"+Date.now();e.forEach(function(e){I(e).order&&I(e).order.length||(I(e).order=S());var n=I(e).order,r=C.selectedId?n.indexOf(C.selectedId):n.length-1;r<0&&(r=n.length),n.splice(r+1,0,a)}),Oe()}}function ge(e){var n=M("#members-am-toolbar-loading");n.removeAttr("hidden"),n.find(".spinner").addClass("is-active"),n.find(".members-am-loading-text").text(e||""),M("#members-am-save, #members-am-reset, #members-am-import, #members-am-copy-apply, #members-am-undo").prop("disabled",!0)}function xe(){var e=M("#members-am-toolbar-loading");e.attr("hidden",!0),e.find(".spinner").removeClass("is-active"),e.find(".members-am-loading-text").text(""),M("#members-am-save, #members-am-reset, #members-am-import, #members-am-copy-apply").prop("disabled",!1),u()}function ye(e){ge(e||membersAdminMenus.i18n&&membersAdminMenus.i18n.saving||"Saving…");var s=membersAdminMenus.i18n&&membersAdminMenus.i18n.networkError||"Could not save settings. Check your connection and try again.";M.ajax({url:membersAdminMenus.ajaxUrl,type:"POST",dataType:"json",timeout:6e4,data:{action:"members_admin_menus_save",nonce:membersAdminMenus.nonce,settings:JSON.stringify(C.settings)}}).done(function(e){if(e&&void 0!==e.success){if(e.success)return a=t(),c=null,u(),void f("success",e.data&&e.data.message||membersAdminMenus.i18n&&membersAdminMenus.i18n.saved||"Settings saved.");f("error",e.data&&e.data.message?e.data.message:"Error")}else f("error",s)}).fail(function(e,n){if("abort"!==n){var r=s;if(e&&e.responseJSON&&void 0!==e.responseJSON.data){var a=e.responseJSON.data;"string"==typeof a&&a?r=a:a&&"string"==typeof a.message&&a.message&&(r=a.message)}f("error",r)}}).always(function(){xe()})}function _e(e,n){if(confirm("role"===e&&n?"Reset all settings for this role? This cannot be undone.":"Reset ALL menu settings for every role? This cannot be undone.")){ge(membersAdminMenus.i18n&&membersAdminMenus.i18n.resetting||"Resetting…");var r=!1;M.post(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_reset",nonce:membersAdminMenus.nonce,scope:e||"all",role:n||""}).done(function(e){if(e.success)return o("success",e.data&&e.data.message||membersAdminMenus.i18n&&membersAdminMenus.i18n.resetComplete||"Reset complete."),C.allowUnload=!0,r=!0,void location.reload();f("error",e.data&&e.data.message?e.data.message:membersAdminMenus.i18n&&membersAdminMenus.i18n.resetFailed||"Reset failed.")}).fail(function(){f("error",membersAdminMenus.i18n&&membersAdminMenus.i18n.resetNetworkError||membersAdminMenus.i18n.networkError||"Could not reset settings. Check your connection and try again.")}).always(function(){r||xe()})}}function ke(e){M.getJSON(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_user_search",nonce:membersAdminMenus.nonce,term:e},function(e){e.success&&e.data&&e.data.length?function(e){M(".members-am-user-suggestions").remove();var n=M("#members-am-user-search").parent();n.css("position","relative");var r=M('
');e.forEach(function(e){r.append(M('
').text(e.label).data("userId",e.id).on("click",function(){!function(e,n,r){C.previewUserId=e,C.previewUserLabel=n||"User #"+e,C.previewUserRoles=r||[],b(),C.settings.users[e]||(C.settings.users[e]={});Oe()}(e.id,e.label,e.roles),M(".members-am-user-suggestions").remove(),M("#members-am-user-search").val("")}))}),n.append(r),setTimeout(function(){M(document).one("click",function(){M(".members-am-user-suggestions").remove()})},0)}(e.data):M(".members-am-user-suggestions").remove()})}function we(){M(document).on("click","#members-am-role-chips .members-am-chip",function(){var e=M(this).data("role"),n=C.activeRoleSlugs.indexOf(e);-1===n?C.activeRoleSlugs.push(e):1 ');if(t.append(M('
').text("Reset Settings")),a&&s){var i=M(' ');i.append(M(' ')),i.append(M(' ').append(M(" ").text("Reset "+s),M(" ").text("Clear all menu settings for this role only"))),i.on("click",function(e){e.preventDefault(),e.stopPropagation(),M(".members-am-reset-dropdown").remove(),_e("role",a)}),t.append(i)}var o=M(' ');o.append(M(' ')),o.append(M(' ').append(M(" ").text("Reset all roles"),M(" ").text("Clear all menu settings for every role"))),o.on("click",function(e){e.preventDefault(),e.stopPropagation(),M(".members-am-reset-dropdown").remove(),_e("all")}),t.append(o),t.insertAfter(n),setTimeout(function(){M(document).one("click",function(){M(".members-am-reset-dropdown").remove()})},0)}),M("#members-am-export").on("click",function(e){e.preventDefault(),window.location.href=membersAdminMenus.exportUrl}),M("#members-am-import").on("click",function(){M("#members-am-import-file").trigger("click")}),M("#members-am-import-file").on("change",function(){var e=this.files&&this.files[0];e&&function(e){ge(membersAdminMenus.i18n&&membersAdminMenus.i18n.importing||"Importing…");var r=new FileReader;r.onerror=function(){xe(),f("error",membersAdminMenus.i18n&&membersAdminMenus.i18n.readFileFailed||"Could not read the file.")},r.onload=function(){try{var e=JSON.parse(r.result),n=!1;M.post(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_import",nonce:membersAdminMenus.nonce,settings:JSON.stringify(e)}).done(function(e){if(e.success)return o("success",e.data&&e.data.message||membersAdminMenus.i18n&&membersAdminMenus.i18n.imported||"Settings imported."),C.allowUnload=!0,n=!0,void location.reload();f("error",e.data&&e.data.message?e.data.message:"Error")}).fail(function(){f("error",membersAdminMenus.i18n&&membersAdminMenus.i18n.importNetworkError||membersAdminMenus.i18n.networkError||"Could not import settings. Check your connection and try again.")}).always(function(){n||xe()})}catch(e){xe(),f("error",membersAdminMenus.i18n&&membersAdminMenus.i18n.invalidJson||"Invalid JSON.")}},r.readAsText(e)}(e)}),M("#members-am-copy-apply").on("click",function(){var r=M("#members-am-copy-from").val(),n=M("#members-am-copy-to").val();if(r&&n)if(r!==n){var a="",s="";if(p().forEach(function(e){e.slug===r&&(a=e.label),e.slug===n&&(s=e.label)}),confirm('Copy menu settings from "'+a+'" to "'+s+'"?\nThis will overwrite "'+s+"\" menu configuration.\n\nNote: This copies menu order, hidden items, labels, icons, and colors.\nIt does NOT change the role's capabilities (items marked with a lock icon).")){h();var e=I(r),t={hidden:e.hidden?e.hidden.slice():[],order:[],submenu_order:{},overrides:{}},i=T(r);t.order=i.slice(),C.tree.forEach(function(e){if(e.children&&e.children.length){var n=U(r,e.id);n&&n.length&&(t.submenu_order[e.id]=n.slice())}}),e.overrides&&"object"==typeof e.overrides&&(t.overrides=JSON.parse(JSON.stringify(e.overrides))),C.settings.roles[n]=t,-1===C.activeRoleSlugs.indexOf(n)&&(C.activeRoleSlugs.push(n),l(),ae()),Oe(),ye(membersAdminMenus.i18n&&membersAdminMenus.i18n.copying||"Copying…")}}else f("error",membersAdminMenus.i18n&&membersAdminMenus.i18n.rolesMustDiffer||"Source and target roles must be different.")}),M("#members-am-admin-editable").on("change",function(){var e=!0;M(this).is(":checked")&&(e=window.confirm(membersAdminMenus.i18n.adminEditableWarn)),e?(C.settings._meta.admin_editable=M(this).is(":checked"),re(),ae(),l(),Oe()):M(this).prop("checked",!1)}),M("#members-am-sync-scroll").prop("checked",!1!==C.syncScroll),M("#members-am-sync-scroll").on("change",function(){C.syncScroll=M(this).is(":checked");try{localStorage.setItem("members_am_sync_scroll",C.syncScroll?"1":"0")}catch(e){}ce()});var s="members_am_more_tools";function e(e){var n=M("#members-am-toolbar-extra"),r=M("#members-am-more-tools");if(n.length&&r.length){n.prop("hidden",!e),r.attr("aria-expanded",e?"true":"false").toggleClass("is-open",!!e);var a=membersAdminMenus.i18n||{};e&&a.moreToolsHideAria?r.attr("aria-label",a.moreToolsHideAria):!e&&a.moreToolsShowAria?r.attr("aria-label",a.moreToolsShowAria):r.removeAttr("aria-label");try{sessionStorage.setItem(s,e?"1":"0")}catch(e){}}}var n,r=!1;try{r="1"===sessionStorage.getItem(s)}catch(e){}e(r),M("#members-am-more-tools").on("click",function(){e(M("#members-am-toolbar-extra").prop("hidden"))}),M("#members-am-add-item").on("click",function(){h();var e="c"+Date.now();C.settings.custom_items.push({id:e,label:"Custom link",url:window.location.origin+"/wp-admin/",icon_type:"dashicon",icon:"dashicons-admin-generic",parent:"",position:99,cap:"read"}),C.tree=_(),C.selectedId=x({id:e}),Oe(),ue()}),M("#members-am-remove-custom").on("click",function(){var n=k(C.selectedId);n&&n.customId&&(h(),C.settings.custom_items=(C.settings.custom_items||[]).filter(function(e){return e.id!==n.customId}),C.selectedId=null,C.tree=_(),Oe(),M("#members-am-edit-panel").attr("hidden",!0))}),M("#members-am-edit-close").on("click",function(){C.selectedId=null,M("#members-am-edit-panel").attr("hidden",!0),Oe()}),M("#members-am-edit-target-role").on("change",ue),M("#members-am-edit-label, #members-am-edit-url, #members-am-icon-value, #members-am-badge-text").on("input",function(){pe()}),M("#members-am-item-cap").on("input",function(){pe()}),M(".members-am-icon-tabs .button").on("click",function(){M(".members-am-icon-tabs .button").removeClass("is-active"),M(this).addClass("is-active"),C.iconTab="fontawesome"===M(this).data("tab")?"fontawesome":"upload"===M(this).data("tab")?"upload":"dashicons",fe()}),M("#members-am-icon-search").on("input",fe),M("#members-am-media-upload").on("click",function(e){e.preventDefault(),C.mediaFrame||(C.mediaFrame=wp.media({title:"Choose menu icon",button:{text:"Use as icon"},multiple:!1,library:{type:"image"}}),C.mediaFrame.on("select",function(){var e=C.mediaFrame.state().get("selection").first().toJSON(),n=e.url||"";e.sizes&&(e.sizes.thumbnail?n=e.sizes.thumbnail.url:e.sizes.medium&&(n=e.sizes.medium.url)),M("#members-am-icon-type").val("custom"),M("#members-am-icon-value").val(n),pe()})),C.mediaFrame.open()}),M(document).on("change",".members-am-vis-cb",function(){h();var e=M(this).data("role");if(M(this).is(":checked")){var n=I(e).hidden,r=n.indexOf(C.selectedId);-1!==r&&n.splice(r,1)}else-1===I(e).hidden.indexOf(C.selectedId)&&I(e).hidden.push(C.selectedId);Oe()}),M("#members-am-add-sep").on("click",ve),M("#members-am-promote").on("click",function(){if(C.selectedId){h();var s=C.selectedId,e=ee()||{};if(-1===s.indexOf("::")&&e.parent&&"__promote__"!==e.parent){var t=e.parent,n=$();if(n){var r=P(n);if(r.overrides[s]&&delete r.overrides[s].parent,r.submenu_order&&r.submenu_order[t]){var a=r.submenu_order[t].indexOf(s);-1!==a&&r.submenu_order[t].splice(a,1)}if(r.order.length||(r.order=S()),-1===r.order.indexOf(s)){var i=r.order.indexOf(t);-1!==i?r.order.splice(i+1,0,s):r.order.push(s)}}else Z().forEach(function(e){var n=I(e);if(n.overrides[s]&&delete n.overrides[s].parent,n.submenu_order&&n.submenu_order[t]){var r=n.submenu_order[t].indexOf(s);-1!==r&&n.submenu_order[t].splice(r,1)}if(n.order&&n.order.length||(n.order=S()),-1===n.order.indexOf(s)){var a=n.order.indexOf(t);-1!==a?n.order.splice(a+1,0,s):n.order.push(s)}});return pe(),void ue()}ne("parent","__promote__");var o=w(s);Z().forEach(function(e){var n=I(e);if(n.order&&n.order.length||(n.order=S()),-1===n.order.indexOf(s))if(o){var r=n.order.indexOf(o);-1!==r?n.order.splice(r+1,0,s):n.order.push(s)}else n.order.push(s)}),pe(),ue()}}),M("#members-am-demote").on("click",function(){var e=M("#members-am-demote-parent").val();e?(h(),ne("parent",e),pe(),ue()):f("warning",membersAdminMenus.i18n&&membersAdminMenus.i18n.selectParentFirst||"Please choose a parent menu from the list.")}),M("#members-am-user-search").on("input",function(){var e=M(this).val();clearTimeout(n),n=setTimeout(function(){1 ").val("__all__").text("All roles")),C.activeRoleSlugs.forEach(function(n){var e=(p().filter(function(e){return e.slug===n})[0]||{}).label||n;r.append(M(" ").val(n).text(e))}),C.previewUserId&&r.append(M(" ").val("__user__"+C.previewUserId).text(C.previewUserLabel||"User #"+C.previewUserId)),C.selectedId&&ue()}M(function(){var n,r,e;!function(){try{var e=sessionStorage.getItem(i);if(!e)return;sessionStorage.removeItem(i);var n=JSON.parse(e);n&&n.message&&f(n.type,n.message)}catch(e){}}(),b(),C.tree=_(),re(),M("#members-am-admin-editable").prop("checked",!!C.settings._meta.admin_editable),n=M("#members-am-copy-from").empty(),r=M("#members-am-copy-to").empty(),(e=p()).forEach(function(e){n.append(M(" ").val(e.slug).text(e.label)),r.append(M(" ").val(e.slug).text(e.label))}),1
Date: Thu, 23 Apr 2026 15:02:50 +0200
Subject: [PATCH 37/73] refactor(admin): replace Dashicon with inline SVG for
dropdown chevron and adjust styling for better alignment and spacing
---
.../app/functions-admin.php | 4 ++-
css/admin.css | 31 +++++++++++++------
css/admin.min.css | 2 +-
3 files changed, 26 insertions(+), 11 deletions(-)
diff --git a/addons/members-admin-menus/app/functions-admin.php b/addons/members-admin-menus/app/functions-admin.php
index a19aee4..4da2b35 100644
--- a/addons/members-admin-menus/app/functions-admin.php
+++ b/addons/members-admin-menus/app/functions-admin.php
@@ -412,7 +412,9 @@ function render_admin_menus_page() {
-
+
+
+
diff --git a/css/admin.css b/css/admin.css
index 7e6bb4e..cedcb30 100644
--- a/css/admin.css
+++ b/css/admin.css
@@ -1182,10 +1182,11 @@
.members-am-more-tools {
display: inline-flex;
align-items: center;
- gap: 2px;
+ gap: 4px;
white-space: nowrap;
padding: 2px 2px 2px 4px;
vertical-align: middle;
+ line-height: 1.4;
}
.members-am-more-tools .members-am-more-tools-chevron,
@@ -1195,22 +1196,34 @@
text-decoration: none;
}
+.members-am-more-tools .members-am-more-tools-text {
+ display: inline-flex;
+ align-items: center;
+ line-height: 1.4;
+}
+
+/* Inline SVG chevron (replaces Dashicon) so collapsed/expanded states share the same vertical metrics as the label. */
.members-am-more-tools .members-am-more-tools-chevron {
- width: 18px;
- height: 18px;
- font-size: 18px;
- line-height: 1;
+ display: inline-flex;
+ align-items: center;
+ justify-content: center;
+ flex-shrink: 0;
+ line-height: 0;
opacity: 0.88;
- padding-top: 6px;
+}
+
+.members-am-more-tools .members-am-more-tools-chevron-svg {
+ display: block;
transition: transform 0.15s ease;
+ transform-origin: 50% 50%;
}
-.members-am-more-tools.is-open .members-am-more-tools-chevron {
- transform: rotate(-180deg);
+.members-am-more-tools.is-open .members-am-more-tools-chevron-svg {
+ transform: rotate(180deg);
}
@media (prefers-reduced-motion: reduce) {
- .members-am-more-tools .members-am-more-tools-chevron {
+ .members-am-more-tools .members-am-more-tools-chevron-svg {
transition: none;
}
}
diff --git a/css/admin.min.css b/css/admin.min.css
index 7e7d5e0..a1a1ee5 100644
--- a/css/admin.min.css
+++ b/css/admin.min.css
@@ -1 +1 @@
-#members-cp h2.hndle,#members-cp-side h2.hndle{border-bottom:none !important;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}#members-cp h2.hndle:before,#members-cp-side h2.hndle:before{content:url("data:image/svg+xml,%3Csvg width='15px' aria-hidden='true' focusable='false' data-prefix='fas' data-icon='users-cog' class='svg-inline--fa fa-users-cog fa-w-20' role='img' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 640 512'%3E%3Cpath fill='currentColor' d='M610.5 341.3c2.6-14.1 2.6-28.5 0-42.6l25.8-14.9c3-1.7 4.3-5.2 3.3-8.5-6.7-21.6-18.2-41.2-33.2-57.4-2.3-2.5-6-3.1-9-1.4l-25.8 14.9c-10.9-9.3-23.4-16.5-36.9-21.3v-29.8c0-3.4-2.4-6.4-5.7-7.1-22.3-5-45-4.8-66.2 0-3.3.7-5.7 3.7-5.7 7.1v29.8c-13.5 4.8-26 12-36.9 21.3l-25.8-14.9c-2.9-1.7-6.7-1.1-9 1.4-15 16.2-26.5 35.8-33.2 57.4-1 3.3.4 6.8 3.3 8.5l25.8 14.9c-2.6 14.1-2.6 28.5 0 42.6l-25.8 14.9c-3 1.7-4.3 5.2-3.3 8.5 6.7 21.6 18.2 41.1 33.2 57.4 2.3 2.5 6 3.1 9 1.4l25.8-14.9c10.9 9.3 23.4 16.5 36.9 21.3v29.8c0 3.4 2.4 6.4 5.7 7.1 22.3 5 45 4.8 66.2 0 3.3-.7 5.7-3.7 5.7-7.1v-29.8c13.5-4.8 26-12 36.9-21.3l25.8 14.9c2.9 1.7 6.7 1.1 9-1.4 15-16.2 26.5-35.8 33.2-57.4 1-3.3-.4-6.8-3.3-8.5l-25.8-14.9zM496 368.5c-26.8 0-48.5-21.8-48.5-48.5s21.8-48.5 48.5-48.5 48.5 21.8 48.5 48.5-21.7 48.5-48.5 48.5zM96 224c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm224 32c1.9 0 3.7-.5 5.6-.6 8.3-21.7 20.5-42.1 36.3-59.2 7.4-8 17.9-12.6 28.9-12.6 6.9 0 13.7 1.8 19.6 5.3l7.9 4.6c.8-.5 1.6-.9 2.4-1.4 7-14.6 11.2-30.8 11.2-48 0-61.9-50.1-112-112-112S208 82.1 208 144c0 61.9 50.1 112 112 112zm105.2 194.5c-2.3-1.2-4.6-2.6-6.8-3.9-8.2 4.8-15.3 9.8-27.5 9.8-10.9 0-21.4-4.6-28.9-12.6-18.3-19.8-32.3-43.9-40.2-69.6-10.7-34.5 24.9-49.7 25.8-50.3-.1-2.6-.1-5.2 0-7.8l-7.9-4.6c-3.8-2.2-7-5-9.8-8.1-3.3.2-6.5.6-9.8.6-24.6 0-47.6-6-68.5-16h-8.3C179.6 288 128 339.6 128 403.2V432c0 26.5 21.5 48 48 48h255.4c-3.7-6-6.2-12.8-6.2-20.3v-9.2zM173.1 274.6C161.5 263.1 145.6 256 128 256H64c-35.3 0-64 28.7-64 64v32c0 17.7 14.3 32 32 32h65.9c6.3-47.4 34.9-87.3 75.2-109.4z'%3E%3C/path%3E%3C/svg%3E");margin-right:5px}#members-cp-side .postbox-header{border-bottom:none !important}#members-cp-side .handle-actions .handle-order-higher,#members-cp-side .handle-actions .handle-order-lower{display:none}#members-cp-side .handle-actions .handlediv{position:absolute;right:5px}.members-upgrade-header{text-align:center;padding:5px}.members-upgrade-header a{color:#f59431}.memberpress-paid-memberships{background-color:#f5f5f5;padding:50px 10px;text-align:center}.memberpress-paid-memberships a{background-color:#0e4598;display:inline-block;padding:10px 20px;border-radius:300px;color:#fff;text-decoration:none;margin-top:20px}#members-cp-side .members-tabs{position:relative}#members-cp-side .members-tab-nav{background-color:transparent;margin-bottom:20px;border-right:none !important}#members-cp-side .members-tab-nav .members-tab-title{width:33.333%;height:50px;border-right:none !important}#members-cp-side .members-tab-nav .members-tab-title a{border:0}#members-cp-side .members-tab-content h3{font-weight:bold;font-size:15px;margin-top:0;color:#000;margin-bottom:10px}#members-cp-side .members-tab-content .memberpress-paid-memberships{text-align:left;padding:20px}#members-cp-side .members-tab-content .memberpress-paid-memberships a{display:block;text-align:center}#members-cp-side .members-tabs .members-tab-nav li a,#members-cp-side .members-tabs .members-tab-nav li[aria-selected="false"] a i{color:#555}#members-cp-side .members-tabs .members-tab-nav li a svg,#members-cp-side .members-tabs .members-tab-nav li[aria-selected="false"] a svg{fill:#555}#members-cp-side .members-tabs .members-tab-nav li[aria-selected="true"] a{background-color:transparent;border-bottom:2px solid #3582ae}#members-cp-side .members-tabs .members-tab-nav li[aria-selected="true"] a i{color:#3582ae}#members-cp-side .members-tabs .members-tab-nav li[aria-selected="true"] a svg{fill:#3582ae}.members-tab-title svg,.members-tab-title[aria-selected="false"] svg{fill:#0073aa}.members-tab-title[aria-selected="true"] svg{fill:#555}#wpcontent #members-admin-header{margin-left:-20px;padding:0;padding-left:22px;background-color:#f9f9f9;background-repeat:repeat;background-size:1200px 75px;min-height:36px;position:relative}#wpcontent #members-admin-header img.members-logo{height:90px}.members-upgrade-header #close-members-upgrade-header{position:absolute;right:20px;top:3px}.members-upgrade-header #close-members-upgrade-header:hover{cursor:pointer}.memberpress-welcome-panel.welcome-panel{margin-top:0;padding:40px 20px;background:#fff}.memberpress-welcome-panel.welcome-panel:before{background:0}.memberpress-welcome-panel.welcome-panel .about-description{margin:20px 0}.memberpress-welcome-panel.welcome-panel-content{margin:0}.memberpress-welcome-panel.welcome-panel-content .mp-logo-wrap>a{display:block}@media screen and (min-width:870px){.members_page_members-settings .members-short-p{max-width:612px;margin-left:auto;margin-right:auto}.members_page_members-settings .welcome-panel-content{text-align:center}}.members_page_members-settings .welcome-panel .button.button-hero{margin-left:auto;margin-right:auto}.members_page_members-settings .members-svg-wrap{display:inline-block;margin:0 auto 20px}@media screen and (max-width:870px){.members_page_members-settings .welcome-panel{padding:20px}.members_page_members-settings .members-svg-wrap{float:left;margin-right:28px}.admin_page_members-settings.rtl .members-svg-wrap{float:right;margin-right:0;margin-left:28px}}.members_page_members-settings .members-svg-link{display:table-cell;text-align:center;width:128px;height:128px;background:#363b3f;color:#fff;padding:24px 16px 16px;border-radius:50%;-webkit-box-sizing:border-box;box-sizing:border-box;border:4px solid #fff;-webkit-box-shadow:0 0 0 4px #363b3f;box-shadow:0 0 0 4px #363b3f}.members_page_members-settings .members-svg-link svg{max-width:84px;max-height:64px;width:auto;height:auto}.members-addons{display:grid;grid-template-columns:1fr 1fr;grid-row-gap:20px;grid-column-gap:20px}.members-addons .plugin-card{margin:0}.members-addons .plugin-card-top{width:100%}.members-addon{width:100%;position:relative;float:none;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.members-addon .desc{margin-bottom:80px}.addon-activate{text-align:center;border:1px solid #ddd;border-radius:3px;padding:5px 10px 10px;display:inline-block;width:100px;position:absolute;right:20px;bottom:20px}.activate-toggle:hover{cursor:pointer}.activate-toggle svg{max-width:20px;position:relative;top:5px}.activate-toggle svg{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.activate-toggle svg.active{-webkit-transform:rotate(0);transform:rotate(0)}.activate-toggle svg path{fill:#ccc}.activate-toggle svg.active path{fill:#8cbd5a}.activate-toggle.processing{cursor:not-allowed;pointer-events:none;opacity:.5}.activate-toggle .action-label{display:inline-block;width:50px;text-align:left}.mepr_dummy_txns{-webkit-filter:blur(3px);filter:blur(3px);position:absolute;top:0;left:0;width:100%;z-index:5;pointer-events:none}.mepr_dummy_txns::after{background-color:rgba(0,0,0,.2);position:absolute;top:0;left:0;width:100%;height:100%;z-index:6}.mepr-upgrade-table{position:relative}.mepr-upgrade-table .mepr-upgrade{position:relative;top:100px;z-index:10;background:rgba(0,0,0,.2);width:100%;height:100%;max-width:600px;margin:0 auto;-webkit-box-shadow:0 0 30px #ccc;box-shadow:0 0 30px #ccc}.mepr-upgrade-content{background-color:#fff;padding:20px;text-align:center}.mepr-upgrade-content h2{font-size:24px}.mepr-upgrade-content h4{font-size:18px}.mepr-upgrade-content .features{display:grid;grid-template-columns:1fr 1fr;grid-column-gap:30px;grid-row-gap:10px;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;text-align:left;padding:10px}.features li:before{content:"\f147";font-family:dashicons;color:green;font-size:20px;position:relative;top:4px;margin-right:10px}.mepr-upgrade-cta{text-align:center;background-color:#f2f2f2;padding:20px}.mepr-upgrade-cta .mepr-cta-button{display:block;max-width:300px;margin:0 auto 20px;background-color:#fd9c27;color:#fff;padding:15px;font-size:18px;font-weight:bold;text-decoration:none;border-radius:300px}.members-plugin-card.plugin-card:nth-child(even){margin-right:inherit}.members-plugin-card.plugin-card:nth-child(odd){clear:none;margin-left:inherit}.members-plugin-card.plugin-card .plugin-card-top{min-height:0;padding:30px 20px}.members-plugin-card.plugin-card .plugin-icon{top:30px}.members-plugin-card.plugin-card .plugin-card-bottom .column-status{font-weight:bold}.members-plugin-card.plugin-card .plugin-card-bottom .column-status .active{color:#8cbd5a}.members-plugin-card.plugin-card .plugin-card-bottom .column-status .inactive{color:red}.members-plugin-card.plugin-card .plugin-icon{width:64px;height:auto}.plugin-icon-small{width:32px;height:auto}.members-plugin-card.plugin-card .name,.members-plugin-card.plugin-card .desc{margin-right:0;margin-left:84px}.members-addons .plugin-card .name,.members-addons .plugin-card .desc p{margin-right:0}@media screen and (max-width:1100px){.members-addons{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}}@media screen and (max-width:600px){.members_page_members-settings .members-svg-link{width:64px;height:64px}.members_page_members-settings .members-svg-link svg{position:absolute;top:14px;left:15px;max-width:30px;max-height:30px}.members_page_members-settings .plugin-card-members-edd-integration .members-svg-link svg,.members_page_members-settings .plugin-card-members-acf-integration .members-svg-link svg,.members_page_members-settings .plugin-card-members-givewp-integration .members-svg-link svg,.members_page_members-settings .plugin-card-members-meta-box-integration .members-svg-link svg,.members_page_members-settings .plugin-card-members-woocommerce-integration .members-svg-link svg{top:10px;left:8px;max-width:40px;max-height:40px}.members_page_members-settings .plugin-card-members-block-permissions .members-svg-link svg,.members_page_members-settings .plugin-card-members-role-hierarchy .members-svg-link svg{left:14px}.members-addons .plugin-card .desc>p,.members-addons .plugin-card .name{margin-left:84px}}.memberpress-about .welcome-panel-column-container{display:-webkit-box;display:-ms-flexbox;display:flex}.memberpress-about .mp-logo{max-width:256px;margin:50px}.members-about-addons{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-column-gap:20px}.members-about-addons .members-plugin-card{margin:0;width:100%}.members-about-addons .members-plugin-card .name h3 a{text-decoration:none}.members-about-addons .members-plugin-card .plugin-card-bottom{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}@media only screen and (max-width:1099px){.members-about-addons{grid-template-columns:1fr;grid-row-gap:20px}}@media screen and (min-width:1100px) and (max-width:1600px){.members-about-addons .members-plugin-card{float:none;width:auto;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.members-plugin-card.plugin-card .desc{margin-left:0;margin-top:50px}.members-plugin-card.plugin-card .desc p{margin-left:0;margin-right:0}.members-plugin-card.plugin-card .plugin-card-bottom .column-status{float:none}.members-plugin-card.plugin-card .plugin-card-bottom .column-updated{float:none;width:auto}}@media screen and (max-width:1200px){.welcome-panel .welcome-panel-column-container{-webkit-box-orient:vertical;-webkit-box-direction:reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse;gap:0;padding:0}.memberpress-about .mp-logo{margin:0 0 20px}}.members-plugin-card.plugin-card .desc p{margin-left:0;margin-right:0}@media only screen and (min-width:783px){.members_page_roles .column-users,.members_page_roles .column-granted_caps,.members_page_roles .column-denied_caps{width:100px;text-align:center}}.members-title-div #titlewrap input{padding:0 8px;font-size:1.7em;line-height:normal;height:1.7em;width:100%;outline:0;margin:0 0 3px;background-color:#fff}.members-title-div input[name="role"]{font-size:13px;height:22px;margin:0;width:16em}#tabcapsdiv{margin-top:1em}#tabcapsdiv>.hndle{padding:10px;border-bottom:1px solid #eee}#tabcapsdiv .inside,#members-cp .inside{margin:0;padding:0}.members-cap-tabs,.members-tabs{overflow:hidden;background:#fff;background:-webkit-gradient(linear,left top,right top,from(#fafafa),color-stop(20%,#fafafa),color-stop(20%,#fff),to(#fff));background:linear-gradient(90deg,#fafafa 0,#fafafa 20%,#fff 20%,#fff 100%)}@media only screen and (max-width:782px){.members-cap-tabs,.members-tabs{background:linear-gradient(90deg,#fafafa 0,#fafafa 48px,#fff 48px,#fff 100%)}}.members-cap-tabs .members-tab-nav,.members-tabs .members-tab-nav{position:relative;float:left;list-style:none;width:20%;line-height:1em;margin:0 0 -1px 0;padding:0;background-color:#fafafa;border-right:1px solid #eee;-webkit-box-sizing:border-box;box-sizing:border-box}.members-cap-tabs .members-tab-nav li,.members-tabs .members-tab-nav li{display:block;position:relative;margin:0;padding:0;line-height:20px}.members-cap-tabs .members-tab-nav li a,.members-tabs .members-tab-nav li a{display:block;margin:0;padding:10px;line-height:20px !important;text-decoration:none;border-bottom:1px solid #eee;-webkit-box-shadow:none;box-shadow:none}.members-cap-tabs .members-tab-nav li a .dashicons,.members-tabs .members-tab-nav li a .dashicons{line-height:20px;margin-right:3px}.members-cap-tabs .members-tab-nav li[aria-selected="true"] a,.members-tabs .members-tab-nav li[aria-selected="true"] a{position:relative;font-weight:bold;color:#555;background-color:#e0e0e0}@media only screen and (max-width:782px){.members-cap-tabs .members-tab-nav,.members-tabs .members-tab-nav{width:48px}.members-cap-tabs .members-tab-nav li a .dashicons,.members-tabs .members-tab-nav li a .dashicons{width:24px;height:24px;font-size:24px;line-height:24px}.members-tab-nav li .dashicons::before,.members-tab-nav li .dashicons::before{width:24px;height:24px}.members-tab-nav li .label{overflow:hidden;position:absolute;top:-1000em;left:-1000em;width:1px;height:1px}}.members-cap-tabs .members-tab-wrap,.members-tabs .members-tab-wrap{float:left;width:80%;margin-left:-1px}@media only screen and (max-width:782px){.members-cap-tabs .members-tab-wrap,.members-tabs .members-tab-wrap{width:calc(100% - 48px)}}#members-cp .members-tab-content{padding:10px;border-left:1px solid #e5e5e5}.members-roles-select th,.members-roles-select td{width:190px;overflow:hidden}.members-roles-select .check-all-th{text-align:center}.members-roles-select .check-all-th label{padding-left:5px}@media only screen and (min-width:850px){#side-sortables .members-tabs{background:#fff}#side-sortables .members-tabs .members-tab-wrap{width:100%}#side-sortables .members-tabs .members-tab-nav{display:table;width:100%}#side-sortables .members-tabs .members-tab-nav li{display:table-cell;text-align:center;border-right:1px solid #eee}#side-sortables .members-tabs .members-tab-nav li:last-of-type{border-right:0}#side-sortables .members-tabs .members-tab-nav li a{padding:10px 0}#side-sortables .members-tabs .members-tab-nav .dashicons{width:24px;height:24px;font-size:24px;line-height:24px}#side-sortables .members-tabs .members-tab-nav .dashicons::before{width:24px;height:24px}#side-sortables .members-tabs .members-tab-nav .label{overflow:hidden;position:absolute;top:-1000em;left:-1000em;width:1px;height:1px}}.members-tabs .members-tabs-label{display:block !important;font-weight:bold;display:inline-block;margin-bottom:4px}.members-tabs .butterbean-control-checkbox .members-tabs-label{display:inline !important}.members-tabs .members-tabs-description{display:block;font-style:italic;margin-top:4px}.members-tabs .members-tabs-label+.members-tabs-description{margin-top:0;margin-bottom:4px}#tabcapsdiv table{border-right:0;border-top:0;border-bottom:0}#tabcapsdiv table td,#tabcapsdiv table th{padding:10px;padding-bottom:10px;border-bottom:1px solid #eee;font-size:13px;line-height:20px}#tabcapsdiv table td{padding:9px}#tabcapsdiv tbody tr:last-of-type td{border-bottom:0}#tabcapsdiv tfoot th{border-color:#eee}@media only screen and (max-width:782px){#tabcapsdiv table td,#tabcapsdiv table th{line-height:24px}}.members-roles-select .column-grant,.members-roles-select .column-deny{width:70px !important;text-align:left;display:table-cell !important;clear:none !important}.members-roles-select thead th,.members-roles-select tfoot th{padding:9px !important}.members-roles-select .column-grant input,.members-roles-select .column-deny input{margin:0 5px 0 0;vertical-align:middle}.members-roles-select tbody tr:nth-child(even){background:#f2f2f2}.members-cap-tabs button{display:inline;margin:-4px;line-height:inherit;padding:4px 8px;border:1px solid transparent;background:transparent;border-radius:0;outline:0;-webkit-transition:all .25s ease-out;transition:all .25s ease-out}.members-cap-tabs button:hover,.members-cap-tabs button:focus{border-color:#eee;background:#fafafa;cursor:pointer}.members-cap-tabs button:active{color:#0073aa;border-color:#0073aa}.members-cap-tabs button+.dashicons{display:none;margin-top:1px;margin-bottom:-1px;line-height:inherit}.members-cap-tabs button:hover+.dashicons,.members-cap-tabs button:focus+.dashicons{display:inline-block}.members-tab-content .members-highlight{background-color:rgba(0,115,170,0.05)}.members-tab-content tbody{-webkit-transition:all 2s ease-in-out;transition:all 2s ease-in-out}.members-cp-role-list-wrap{overflow:auto;min-height:42px;max-height:200px;padding:0 .9em;border:solid 1px #dfdfdf;background-color:#fdfdfd}#wpbody-content{padding-bottom:200px}.members-footer-promotion{text-align:center;font-weight:400;font-size:13px;line-height:16px;color:#787c82;padding:20px 0 30px 0;margin-bottom:20px}.members-footer-promotion p{font-weight:600}.members-footer-promotion-links,.members-footer-promotion-social{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.members-footer-promotion-links{margin:9px 0 0}.members-footer-promotion-links span{color:#c3c4c7;padding:0 7px}.members-footer-promotion-social{margin:10px 0 0 0;gap:10px}.members-footer-promotion-social li{margin-bottom:0}.members-footer-promotion-social a{display:block;height:16px}.members_page_members-settings.rtl{.addon-activate{left:20px;right:unset}.members-addons .plugin-card{.name,.desc p{margin-left:0;margin-right:148px}}}.button.button-warning{background:#dc3232;border-color:#dc3232;color:#fff}.button.button-warning:hover,.button.button-warning:focus{background:#c92424;border-color:#c92424;color:#fff}.members-reset-spinner{float:none;margin-top:0;vertical-align:middle}.members-admin-menus-wrap{max-width:1400px;--members-am-accent-use:var(--members-am-accent,var(--wp-admin-theme-color,#2271b1));--members-am-surface-use:var(--members-am-surface,color-mix(in srgb,var(--members-am-base,#1d2327) 88%,#fff 12%));--members-am-border-on-base-fallback:color-mix(in srgb,var(--members-am-base,#1d2327) 62%,#fff 38%);--members-am-chrome-bg:var(--wp-components-color-gray-100,#f6f7f7);--members-am-chrome-border:var(--wp-components-color-gray-400,#c3c4c7);--members-am-muted:var(--wp-components-color-gray-600,#646970)}.members-am-notices{margin:0 0 12px}.members-am-notices .notice{margin:0 0 8px}.members-admin-menus-toolbar{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;gap:0;margin-bottom:16px;border:1px solid var(--members-am-chrome-border,#c3c4c7);border-radius:2px;background:var(--wp-components-color-background,#fff);overflow:visible}.members-am-toolbar-row{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px}.members-am-toolbar-row--primary{padding:10px 12px;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;row-gap:10px}.members-am-toolbar-group{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px}.members-am-toolbar-group--document{position:relative;z-index:5;padding-right:12px;border-right:1px solid var(--members-am-chrome-border,#c3c4c7)}.members-am-toolbar-row--primary .members-am-toolbar-primary-user{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px;margin-left:8px;-webkit-box-flex:0;-ms-flex:0 1 auto;flex:0 1 auto;min-width:0}.members-am-toolbar-row--primary .members-am-toolbar-primary-user #members-am-user-search.members-am-user-search-input{width:168px;max-width:100%;min-width:0}.members-am-toolbar-group--view{margin-left:auto;-ms-flex-wrap:nowrap;flex-wrap:nowrap}.members-am-toolbar-extra{background:var(--members-am-chrome-bg,#f6f7f7);border-top:1px solid var(--members-am-chrome-border,#c3c4c7);padding:10px 12px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:10px}.members-am-toolbar-extra[hidden]{display:none !important}.members-am-toolbar-row--extra-tools{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-wrap:wrap;flex-wrap:wrap;row-gap:10px}.members-am-toolbar-row--extra-tools .members-am-copy-wrap{margin-left:4px;padding-left:12px;border-left:1px solid var(--members-am-chrome-border,#c3c4c7)}.members-am-toolbar-row--extra-tools .members-am-toolbar-group--io{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;margin-left:8px;padding-left:12px;border-left:1px solid var(--members-am-chrome-border,#c3c4c7)}.members-am-more-tools,.members-am-more-tools:hover,.members-am-more-tools:focus,.members-am-more-tools:active{text-decoration:none}.members-am-more-tools{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:2px;white-space:nowrap;padding:2px 2px 2px 4px;vertical-align:middle}.members-am-more-tools .members-am-more-tools-chevron,.members-am-more-tools:hover .members-am-more-tools-chevron,.members-am-more-tools:focus .members-am-more-tools-chevron,.members-am-more-tools:active .members-am-more-tools-chevron{text-decoration:none}.members-am-more-tools .members-am-more-tools-chevron{width:18px;height:18px;font-size:18px;line-height:1;opacity:.88;padding-top:6px;-webkit-transition:-webkit-transform .15s ease;transition:-webkit-transform .15s ease;transition:transform .15s ease;transition:transform .15s ease,-webkit-transform .15s ease}.members-am-more-tools.is-open .members-am-more-tools-chevron{-webkit-transform:rotate(-180deg);transform:rotate(-180deg)}@media(prefers-reduced-motion:reduce){.members-am-more-tools .members-am-more-tools-chevron{-webkit-transition:none;transition:none}}@media screen and (max-width:782px){.members-am-toolbar-group--document{border-right:0;padding-right:0;border-bottom:1px solid var(--members-am-chrome-border,#c3c4c7);padding-bottom:10px;width:100%}.members-am-toolbar-group--view{margin-left:0;width:100%;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.members-am-toolbar-row--primary .members-am-toolbar-primary-user{margin-left:0;padding-left:0;border-left:0;padding-top:8px;border-top:1px solid var(--members-am-chrome-border,#c3c4c7);width:100%;max-width:none}.members-am-toolbar-row--primary .members-am-toolbar-primary-user #members-am-user-search.members-am-user-search-input{width:100%;max-width:100%}.members-am-toolbar-row--extra-tools .members-am-admin-editable{width:100%}.members-am-toolbar-row--extra-tools .members-am-copy-wrap{margin-left:0;padding-left:0;border-left:0;padding-top:8px;border-top:1px solid var(--members-am-chrome-border,#c3c4c7);width:100%}.members-am-toolbar-row--extra-tools .members-am-toolbar-group--io{margin-left:0;padding-left:0;border-left:0;padding-top:8px;border-top:1px solid var(--members-am-chrome-border,#c3c4c7);width:100%}}.members-am-toolbar-loading{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;margin-left:4px;color:var(--members-am-muted,#646970);font-size:13px;line-height:1}.members-am-toolbar-loading .spinner{float:none;margin:0}.members-am-toolbar-loading[hidden]{display:none !important}.members-am-copy-wrap label{margin-right:8px}.members-am-chips{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:8px;margin-bottom:12px}.members-am-chip{border-radius:999px;padding:4px 12px;border:1px solid var(--members-am-chrome-border,#c3c4c7);background:var(--members-am-chrome-bg,#f6f7f7);cursor:pointer}.members-am-chip.is-active{background:var(--members-am-accent-use);border-color:var(--members-am-accent-use);color:var(--wp-components-color-accent-inverted,#fff)}.members-am-carousel-wrap{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;gap:8px;margin-bottom:8px}.members-am-carousel-prev,.members-am-carousel-next{-ms-flex-item-align:center;align-self:center;width:36px;height:36px;border-radius:50%;border:1px solid var(--members-am-chrome-border,#c3c4c7);background:var(--wp-components-color-background,#fff);cursor:pointer}.members-am-columns{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-ms-flex:1;flex:1;gap:12px;min-height:320px;overflow:hidden}.members-am-column{-webkit-box-flex:1;-ms-flex:1;flex:1;min-width:0;background:var(--members-am-base,#1d2327);border-radius:4px;color:var(--members-am-fg-on-base,#f0f0f1);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.members-am-user-column{border:2px dashed var(--wp-components-color-gray-700,#8c8f94)}.members-am-sidebar-head{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:8px 10px;background:var(--members-am-surface-use);border-radius:4px 4px 0 0;font-weight:600;font-size:12px;text-transform:uppercase;letter-spacing:.04em;color:var(--members-am-fg-on-surface,var(--members-am-fg-on-base,#f0f0f1))}.members-am-col-filter{padding:6px 8px 8px;border-bottom:1px solid var(--members-am-border-on-base,var(--members-am-border-on-base-fallback));-ms-flex-negative:0;flex-shrink:0}.members-am-col-filter-input{width:100%;max-width:100%;-webkit-box-sizing:border-box;box-sizing:border-box;font-size:12px;line-height:1.4;padding:4px 8px;border-radius:2px;border:1px solid var(--members-am-border-on-base,var(--members-am-border-on-base-fallback));background:var(--members-am-base,#1d2327);color:var(--members-am-fg-on-base,#f0f0f1)}.members-am-col-filter-input::-webkit-input-placeholder{color:var(--members-am-fg-muted-on-base,var(--wp-components-color-gray-700,#8c8f94));opacity:1}.members-am-col-filter-input::-moz-placeholder{color:var(--members-am-fg-muted-on-base,var(--wp-components-color-gray-700,#8c8f94));opacity:1}.members-am-col-filter-input:-ms-input-placeholder{color:var(--members-am-fg-muted-on-base,var(--wp-components-color-gray-700,#8c8f94));opacity:1}.members-am-col-filter-input::-ms-input-placeholder{color:var(--members-am-fg-muted-on-base,var(--wp-components-color-gray-700,#8c8f94));opacity:1}.members-am-col-filter-input::placeholder{color:var(--members-am-fg-muted-on-base,var(--wp-components-color-gray-700,#8c8f94));opacity:1}.members-am-col-filter-input:focus{border-color:var(--members-am-accent-use);outline:1px solid transparent;-webkit-box-shadow:0 0 0 var(--wp-admin-border-width-focus,1px) var(--members-am-accent-use);box-shadow:0 0 0 var(--wp-admin-border-width-focus,1px) var(--members-am-accent-use)}.members-am-col-bulk{padding:0 8px 8px;border-bottom:1px solid var(--members-am-border-on-base,var(--members-am-border-on-base-fallback));-ms-flex-negative:0;flex-shrink:0}.members-am-col-bulk-toolbar,.members-am-col-collapse-toolbar{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:6px;margin-bottom:6px;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.members-am-col-bulk-toolbar .button.button-small,.members-am-col-collapse-toolbar .button.button-small{font-size:11px;min-height:26px;line-height:24px;padding:0 8px;background:var(--members-am-surface-use);border-color:var(--members-am-border-on-surface,var(--members-am-border-on-base,var(--members-am-border-on-base-fallback)));color:var(--members-am-fg-on-surface,var(--members-am-fg-on-base,#f0f0f1))}.members-am-col-bulk-toolbar .button.button-small:hover,.members-am-col-collapse-toolbar .button.button-small:hover{background:color-mix(in srgb,var(--members-am-surface-use) 85%,#fff 15%);border-color:var(--wp-components-color-gray-700,#8c8f94);color:var(--members-am-fg-on-surface,var(--members-am-fg-on-base,#f0f0f1))}.members-am-item-lead{-ms-flex-negative:0;flex-shrink:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:22px;padding:2px 0 0}.members-am-collapse-spacer{display:block;width:20px;height:20px;-ms-flex-negative:0;flex-shrink:0}.members-am-collapse-toggle{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:22px;height:22px;margin:0;padding:0;border:0;background:transparent;color:var(--members-am-fg-muted-on-base,var(--members-am-chrome-border,#c3c4c7));border-radius:2px;cursor:pointer;-ms-flex-negative:0;flex-shrink:0}.members-am-collapse-toggle:hover,.members-am-collapse-toggle:focus{color:var(--members-am-fg-on-base,#f0f0f1);background:color-mix(in srgb,var(--members-am-fg-on-base,#f0f0f1) 12%,transparent);outline:0}.members-am-collapse-toggle .dashicons{font-size:18px;width:18px;height:18px}.members-am-item-cb-wrap{-ms-flex-negative:0;flex-shrink:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;padding:2px 4px 0 0}.members-am-item-cb{margin:0;width:16px;height:16px;-ms-flex-negative:0;flex-shrink:0}.members-am-bulk-select{width:100%;max-width:100%;-webkit-box-sizing:border-box;box-sizing:border-box;font-size:12px;line-height:1.4;padding:4px 8px;border-radius:2px;border:1px solid var(--members-am-border-on-base,var(--members-am-border-on-base-fallback));background:var(--members-am-base,#1d2327);color:var(--members-am-fg-on-base,#f0f0f1)}.members-am-bulk-select:focus{border-color:var(--members-am-accent-use);outline:1px solid transparent;-webkit-box-shadow:0 0 0 var(--wp-admin-border-width-focus,1px) var(--members-am-accent-use);box-shadow:0 0 0 var(--wp-admin-border-width-focus,1px) var(--members-am-accent-use)}.members-am-item.members-am-filter-hidden,.members-am-sep.members-am-filter-hidden,.members-am-item.members-am-collapse-hidden{display:none !important}.members-am-col-move button{margin-left:4px;padding:0 6px;min-height:24px;line-height:22px;font-size:11px}.members-am-sidebar-list{padding:6px 0 12px;overflow-y:auto;max-height:480px}.members-am-item{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;gap:4px;padding:6px 10px 6px 6px;cursor:pointer;border-left:3px solid transparent;font-size:13px}.members-am-item.is-sub{padding-left:22px;font-size:12px;opacity:.95}.members-am-item.is-sub-deep{padding-left:36px}.members-am-sidebar-list .members-am-item{cursor:-webkit-grab;cursor:grab}.members-am-sidebar-list .members-am-item:active{cursor:-webkit-grabbing;cursor:grabbing}.members-am-sort-placeholder{-webkit-box-sizing:border-box;box-sizing:border-box;min-height:36px;margin:2px 0;background:color-mix(in srgb,var(--members-am-accent-use) 8%,transparent);border:1px dashed var(--members-am-accent-use);border-radius:2px}.members-am-item.is-hidden{opacity:.18}.members-am-item.is-no-cap{opacity:.35}.members-am-item.is-no-cap.is-hidden{opacity:.15}.members-am-item.is-selected{border-left-color:var(--members-am-accent-use);background:color-mix(in srgb,var(--members-am-accent-use) 15%,transparent)}.members-am-item-main{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;min-width:0}.members-am-item-main .dashicons{font-size:18px;width:18px;height:18px}.members-am-item-label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.members-am-item-actions{display:none;gap:2px}.members-am-item:hover .members-am-item-actions{display:-webkit-box;display:-ms-flexbox;display:flex}.members-am-item-actions button{min-height:22px;padding:0 4px;line-height:20px;font-size:11px}.members-am-sep{text-align:center;opacity:.35;font-size:11px;padding:4px 0}.members-am-carousel-dots{text-align:center;margin-bottom:4px}.members-am-dot{width:8px;height:8px;border-radius:50%;border:0;margin:0 4px;padding:0;background:var(--members-am-chrome-border,#c3c4c7);cursor:pointer}.members-am-dot.is-active{background:var(--members-am-accent-use)}.members-am-carousel-status{text-align:center;color:var(--members-am-muted,#646970);font-size:12px;margin-top:0}.members-am-badge{font-size:9px;text-transform:uppercase;padding:1px 4px;border-radius:2px;margin-right:4px;vertical-align:middle}.members-am-badge-new{background:var(--members-am-accent-use);color:var(--wp-components-color-accent-inverted,#fff)}.members-am-badge-edit{background:#dba617;color:var(--members-am-base,#1d2327)}.members-am-badge-nocap{background:var(--wp-components-color-gray-700,#8c8f94);color:var(--wp-components-color-accent-inverted,#fff)}.members-am-legend{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:16px;margin:0 0 8px;padding:0;font-size:12px;color:var(--members-am-muted,#646970)}.members-am-legend-item{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:4px}.members-am-edit-panel{margin-top:20px;padding:16px;border:1px solid var(--members-am-chrome-border,#c3c4c7);background:var(--wp-components-color-background,#fff);border-radius:4px}.members-am-edit-panel-header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:12px}.members-am-edit-panel-header h2{margin:0;font-size:16px}.members-am-edit-toolbar{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:12px;margin-bottom:12px}.members-am-edit-target-wrap select{margin-left:8px}.members-am-level-actions .button{margin-right:6px}.members-am-demote-wrap{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:6px}.members-am-demote-wrap .members-am-demote-select{min-width:200px;max-width:min(320px,100%)}.members-am-edit-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:16px}.members-am-edit-col label{display:block;font-weight:600;margin-bottom:4px}.members-am-icon-tabs{margin-bottom:8px}.members-am-icon-tabs .button{margin-right:4px;margin-bottom:4px}.members-am-icon-tabs .button.is-active{background:var(--members-am-accent-use);border-color:var(--members-am-accent-use);color:var(--wp-components-color-accent-inverted,#fff)}.members-am-icon-grid{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:4px;max-height:160px;overflow-y:auto;border:1px solid var(--wp-components-color-gray-200,#dcdcde);padding:8px;background:var(--members-am-chrome-bg,#f6f7f7);margin-bottom:8px}.members-am-icon-pick{width:36px;height:36px;padding:0;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;border:1px solid var(--members-am-chrome-border,#c3c4c7);background:var(--wp-components-color-background,#fff);cursor:pointer}.members-am-bulk-visibility-hint{margin:0 0 8px;font-size:12px;color:var(--members-am-fg-muted-on-base,#646970)}.members-am-vis-role-filter-wrap{margin-bottom:8px}.members-am-vis-row.members-am-vis-filter-hidden{display:none}.members-am-vis-row{display:block;margin-bottom:6px;font-weight:normal}.members-am-reset-dropdown{position:absolute;z-index:100000;background:var(--wp-components-color-background,#fff);border:1px solid var(--members-am-chrome-border,#c3c4c7);border-radius:6px;padding:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-shadow:0 4px 12px rgba(0,0,0,0.15);box-shadow:0 4px 12px rgba(0,0,0,0.15);min-width:280px;top:100%;left:0;margin-top:4px;overflow:hidden}.members-am-reset-title{padding:10px 14px;font-weight:600;font-size:13px;border-bottom:1px solid var(--wp-components-color-gray-200,#f0f0f0);color:var(--wp-components-color-foreground,#1d2327)}.members-am-reset-option{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;gap:10px;padding:12px 14px;border:0;background:0;cursor:pointer;text-align:left;width:100%;border-bottom:1px solid var(--wp-components-color-gray-200,#f0f0f0);-webkit-transition:background .15s;transition:background .15s}.members-am-reset-option:last-child{border-bottom:0}.members-am-reset-option:hover{background:var(--members-am-chrome-bg,#f6f7f7)}.members-am-reset-option .dashicons{margin-top:2px;color:var(--members-am-muted,#646970)}.members-am-reset-option-text{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:2px}.members-am-reset-option-text strong{font-size:13px;color:var(--wp-components-color-foreground,#1d2327)}.members-am-reset-option-text small{font-size:12px;color:var(--members-am-muted,#646970)}.members-am-reset-danger:hover{background:#fcf0f1}.members-am-reset-danger .dashicons{color:#d63638}.members-am-reset-danger:hover strong{color:#d63638}@media screen and (max-width:782px){.members-am-columns{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}}.members-am-user-suggestions{position:absolute;z-index:100;background:var(--wp-components-color-background,#fff);border:1px solid var(--members-am-chrome-border,#c3c4c7);border-radius:4px;max-height:200px;overflow-y:auto;width:100%;-webkit-box-shadow:0 2px 6px rgba(0,0,0,0.15);box-shadow:0 2px 6px rgba(0,0,0,0.15);top:100%;left:0}.members-am-user-suggestion{padding:8px 12px;cursor:pointer;font-size:13px;border-bottom:1px solid var(--wp-components-color-gray-200,#f0f0f0)}.members-am-user-suggestion:hover{background:color-mix(in srgb,var(--members-am-accent-use) 8%,var(--wp-components-color-background,#fff))}.members-am-user-suggestion:last-child{border-bottom:0}#members-am-import-file.members-am-import-file-hidden{display:none}.members-am-user-search-wrap{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px}#members-am-user-search.members-am-user-search-input{width:168px;max-width:100%}.members-am-legend-visibility-icon{font-size:14px;width:14px;height:14px;vertical-align:middle}.members-am-legend-nocap-badge{display:inline-block;background:#8c8f94;color:#fff;font-size:9px;padding:1px 4px;border-radius:2px;vertical-align:middle}#members-am-icon-preview.members-am-icon-preview{display:none;width:32px;height:32px;-o-object-fit:contain;object-fit:contain;margin-bottom:6px;border:1px solid #ddd;border-radius:3px;padding:2px;background:#f0f0f1}.members-am-icons .members-am-icon-upload-desc{margin-top:4px}#adminmenu .members-am-menu-badge{display:inline-block;color:#fff;font-size:9px;padding:1px 5px;border-radius:2px;line-height:1.4;vertical-align:middle}
\ No newline at end of file
+#members-cp h2.hndle,#members-cp-side h2.hndle{border-bottom:none !important;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}#members-cp h2.hndle:before,#members-cp-side h2.hndle:before{content:url("data:image/svg+xml,%3Csvg width='15px' aria-hidden='true' focusable='false' data-prefix='fas' data-icon='users-cog' class='svg-inline--fa fa-users-cog fa-w-20' role='img' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 640 512'%3E%3Cpath fill='currentColor' d='M610.5 341.3c2.6-14.1 2.6-28.5 0-42.6l25.8-14.9c3-1.7 4.3-5.2 3.3-8.5-6.7-21.6-18.2-41.2-33.2-57.4-2.3-2.5-6-3.1-9-1.4l-25.8 14.9c-10.9-9.3-23.4-16.5-36.9-21.3v-29.8c0-3.4-2.4-6.4-5.7-7.1-22.3-5-45-4.8-66.2 0-3.3.7-5.7 3.7-5.7 7.1v29.8c-13.5 4.8-26 12-36.9 21.3l-25.8-14.9c-2.9-1.7-6.7-1.1-9 1.4-15 16.2-26.5 35.8-33.2 57.4-1 3.3.4 6.8 3.3 8.5l25.8 14.9c-2.6 14.1-2.6 28.5 0 42.6l-25.8 14.9c-3 1.7-4.3 5.2-3.3 8.5 6.7 21.6 18.2 41.1 33.2 57.4 2.3 2.5 6 3.1 9 1.4l25.8-14.9c10.9 9.3 23.4 16.5 36.9 21.3v29.8c0 3.4 2.4 6.4 5.7 7.1 22.3 5 45 4.8 66.2 0 3.3-.7 5.7-3.7 5.7-7.1v-29.8c13.5-4.8 26-12 36.9-21.3l25.8 14.9c2.9 1.7 6.7 1.1 9-1.4 15-16.2 26.5-35.8 33.2-57.4 1-3.3-.4-6.8-3.3-8.5l-25.8-14.9zM496 368.5c-26.8 0-48.5-21.8-48.5-48.5s21.8-48.5 48.5-48.5 48.5 21.8 48.5 48.5-21.7 48.5-48.5 48.5zM96 224c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm224 32c1.9 0 3.7-.5 5.6-.6 8.3-21.7 20.5-42.1 36.3-59.2 7.4-8 17.9-12.6 28.9-12.6 6.9 0 13.7 1.8 19.6 5.3l7.9 4.6c.8-.5 1.6-.9 2.4-1.4 7-14.6 11.2-30.8 11.2-48 0-61.9-50.1-112-112-112S208 82.1 208 144c0 61.9 50.1 112 112 112zm105.2 194.5c-2.3-1.2-4.6-2.6-6.8-3.9-8.2 4.8-15.3 9.8-27.5 9.8-10.9 0-21.4-4.6-28.9-12.6-18.3-19.8-32.3-43.9-40.2-69.6-10.7-34.5 24.9-49.7 25.8-50.3-.1-2.6-.1-5.2 0-7.8l-7.9-4.6c-3.8-2.2-7-5-9.8-8.1-3.3.2-6.5.6-9.8.6-24.6 0-47.6-6-68.5-16h-8.3C179.6 288 128 339.6 128 403.2V432c0 26.5 21.5 48 48 48h255.4c-3.7-6-6.2-12.8-6.2-20.3v-9.2zM173.1 274.6C161.5 263.1 145.6 256 128 256H64c-35.3 0-64 28.7-64 64v32c0 17.7 14.3 32 32 32h65.9c6.3-47.4 34.9-87.3 75.2-109.4z'%3E%3C/path%3E%3C/svg%3E");margin-right:5px}#members-cp-side .postbox-header{border-bottom:none !important}#members-cp-side .handle-actions .handle-order-higher,#members-cp-side .handle-actions .handle-order-lower{display:none}#members-cp-side .handle-actions .handlediv{position:absolute;right:5px}.members-upgrade-header{text-align:center;padding:5px}.members-upgrade-header a{color:#f59431}.memberpress-paid-memberships{background-color:#f5f5f5;padding:50px 10px;text-align:center}.memberpress-paid-memberships a{background-color:#0e4598;display:inline-block;padding:10px 20px;border-radius:300px;color:#fff;text-decoration:none;margin-top:20px}#members-cp-side .members-tabs{position:relative}#members-cp-side .members-tab-nav{background-color:transparent;margin-bottom:20px;border-right:none !important}#members-cp-side .members-tab-nav .members-tab-title{width:33.333%;height:50px;border-right:none !important}#members-cp-side .members-tab-nav .members-tab-title a{border:0}#members-cp-side .members-tab-content h3{font-weight:bold;font-size:15px;margin-top:0;color:#000;margin-bottom:10px}#members-cp-side .members-tab-content .memberpress-paid-memberships{text-align:left;padding:20px}#members-cp-side .members-tab-content .memberpress-paid-memberships a{display:block;text-align:center}#members-cp-side .members-tabs .members-tab-nav li a,#members-cp-side .members-tabs .members-tab-nav li[aria-selected="false"] a i{color:#555}#members-cp-side .members-tabs .members-tab-nav li a svg,#members-cp-side .members-tabs .members-tab-nav li[aria-selected="false"] a svg{fill:#555}#members-cp-side .members-tabs .members-tab-nav li[aria-selected="true"] a{background-color:transparent;border-bottom:2px solid #3582ae}#members-cp-side .members-tabs .members-tab-nav li[aria-selected="true"] a i{color:#3582ae}#members-cp-side .members-tabs .members-tab-nav li[aria-selected="true"] a svg{fill:#3582ae}.members-tab-title svg,.members-tab-title[aria-selected="false"] svg{fill:#0073aa}.members-tab-title[aria-selected="true"] svg{fill:#555}#wpcontent #members-admin-header{margin-left:-20px;padding:0;padding-left:22px;background-color:#f9f9f9;background-repeat:repeat;background-size:1200px 75px;min-height:36px;position:relative}#wpcontent #members-admin-header img.members-logo{height:90px}.members-upgrade-header #close-members-upgrade-header{position:absolute;right:20px;top:3px}.members-upgrade-header #close-members-upgrade-header:hover{cursor:pointer}.memberpress-welcome-panel.welcome-panel{margin-top:0;padding:40px 20px;background:#fff}.memberpress-welcome-panel.welcome-panel:before{background:0}.memberpress-welcome-panel.welcome-panel .about-description{margin:20px 0}.memberpress-welcome-panel.welcome-panel-content{margin:0}.memberpress-welcome-panel.welcome-panel-content .mp-logo-wrap>a{display:block}@media screen and (min-width:870px){.members_page_members-settings .members-short-p{max-width:612px;margin-left:auto;margin-right:auto}.members_page_members-settings .welcome-panel-content{text-align:center}}.members_page_members-settings .welcome-panel .button.button-hero{margin-left:auto;margin-right:auto}.members_page_members-settings .members-svg-wrap{display:inline-block;margin:0 auto 20px}@media screen and (max-width:870px){.members_page_members-settings .welcome-panel{padding:20px}.members_page_members-settings .members-svg-wrap{float:left;margin-right:28px}.admin_page_members-settings.rtl .members-svg-wrap{float:right;margin-right:0;margin-left:28px}}.members_page_members-settings .members-svg-link{display:table-cell;text-align:center;width:128px;height:128px;background:#363b3f;color:#fff;padding:24px 16px 16px;border-radius:50%;-webkit-box-sizing:border-box;box-sizing:border-box;border:4px solid #fff;-webkit-box-shadow:0 0 0 4px #363b3f;box-shadow:0 0 0 4px #363b3f}.members_page_members-settings .members-svg-link svg{max-width:84px;max-height:64px;width:auto;height:auto}.members-addons{display:grid;grid-template-columns:1fr 1fr;grid-row-gap:20px;grid-column-gap:20px}.members-addons .plugin-card{margin:0}.members-addons .plugin-card-top{width:100%}.members-addon{width:100%;position:relative;float:none;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.members-addon .desc{margin-bottom:80px}.addon-activate{text-align:center;border:1px solid #ddd;border-radius:3px;padding:5px 10px 10px;display:inline-block;width:100px;position:absolute;right:20px;bottom:20px}.activate-toggle:hover{cursor:pointer}.activate-toggle svg{max-width:20px;position:relative;top:5px}.activate-toggle svg{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.activate-toggle svg.active{-webkit-transform:rotate(0);transform:rotate(0)}.activate-toggle svg path{fill:#ccc}.activate-toggle svg.active path{fill:#8cbd5a}.activate-toggle.processing{cursor:not-allowed;pointer-events:none;opacity:.5}.activate-toggle .action-label{display:inline-block;width:50px;text-align:left}.mepr_dummy_txns{-webkit-filter:blur(3px);filter:blur(3px);position:absolute;top:0;left:0;width:100%;z-index:5;pointer-events:none}.mepr_dummy_txns::after{background-color:rgba(0,0,0,.2);position:absolute;top:0;left:0;width:100%;height:100%;z-index:6}.mepr-upgrade-table{position:relative}.mepr-upgrade-table .mepr-upgrade{position:relative;top:100px;z-index:10;background:rgba(0,0,0,.2);width:100%;height:100%;max-width:600px;margin:0 auto;-webkit-box-shadow:0 0 30px #ccc;box-shadow:0 0 30px #ccc}.mepr-upgrade-content{background-color:#fff;padding:20px;text-align:center}.mepr-upgrade-content h2{font-size:24px}.mepr-upgrade-content h4{font-size:18px}.mepr-upgrade-content .features{display:grid;grid-template-columns:1fr 1fr;grid-column-gap:30px;grid-row-gap:10px;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;text-align:left;padding:10px}.features li:before{content:"\f147";font-family:dashicons;color:green;font-size:20px;position:relative;top:4px;margin-right:10px}.mepr-upgrade-cta{text-align:center;background-color:#f2f2f2;padding:20px}.mepr-upgrade-cta .mepr-cta-button{display:block;max-width:300px;margin:0 auto 20px;background-color:#fd9c27;color:#fff;padding:15px;font-size:18px;font-weight:bold;text-decoration:none;border-radius:300px}.members-plugin-card.plugin-card:nth-child(even){margin-right:inherit}.members-plugin-card.plugin-card:nth-child(odd){clear:none;margin-left:inherit}.members-plugin-card.plugin-card .plugin-card-top{min-height:0;padding:30px 20px}.members-plugin-card.plugin-card .plugin-icon{top:30px}.members-plugin-card.plugin-card .plugin-card-bottom .column-status{font-weight:bold}.members-plugin-card.plugin-card .plugin-card-bottom .column-status .active{color:#8cbd5a}.members-plugin-card.plugin-card .plugin-card-bottom .column-status .inactive{color:red}.members-plugin-card.plugin-card .plugin-icon{width:64px;height:auto}.plugin-icon-small{width:32px;height:auto}.members-plugin-card.plugin-card .name,.members-plugin-card.plugin-card .desc{margin-right:0;margin-left:84px}.members-addons .plugin-card .name,.members-addons .plugin-card .desc p{margin-right:0}@media screen and (max-width:1100px){.members-addons{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}}@media screen and (max-width:600px){.members_page_members-settings .members-svg-link{width:64px;height:64px}.members_page_members-settings .members-svg-link svg{position:absolute;top:14px;left:15px;max-width:30px;max-height:30px}.members_page_members-settings .plugin-card-members-edd-integration .members-svg-link svg,.members_page_members-settings .plugin-card-members-acf-integration .members-svg-link svg,.members_page_members-settings .plugin-card-members-givewp-integration .members-svg-link svg,.members_page_members-settings .plugin-card-members-meta-box-integration .members-svg-link svg,.members_page_members-settings .plugin-card-members-woocommerce-integration .members-svg-link svg{top:10px;left:8px;max-width:40px;max-height:40px}.members_page_members-settings .plugin-card-members-block-permissions .members-svg-link svg,.members_page_members-settings .plugin-card-members-role-hierarchy .members-svg-link svg{left:14px}.members-addons .plugin-card .desc>p,.members-addons .plugin-card .name{margin-left:84px}}.memberpress-about .welcome-panel-column-container{display:-webkit-box;display:-ms-flexbox;display:flex}.memberpress-about .mp-logo{max-width:256px;margin:50px}.members-about-addons{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-column-gap:20px}.members-about-addons .members-plugin-card{margin:0;width:100%}.members-about-addons .members-plugin-card .name h3 a{text-decoration:none}.members-about-addons .members-plugin-card .plugin-card-bottom{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}@media only screen and (max-width:1099px){.members-about-addons{grid-template-columns:1fr;grid-row-gap:20px}}@media screen and (min-width:1100px) and (max-width:1600px){.members-about-addons .members-plugin-card{float:none;width:auto;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.members-plugin-card.plugin-card .desc{margin-left:0;margin-top:50px}.members-plugin-card.plugin-card .desc p{margin-left:0;margin-right:0}.members-plugin-card.plugin-card .plugin-card-bottom .column-status{float:none}.members-plugin-card.plugin-card .plugin-card-bottom .column-updated{float:none;width:auto}}@media screen and (max-width:1200px){.welcome-panel .welcome-panel-column-container{-webkit-box-orient:vertical;-webkit-box-direction:reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse;gap:0;padding:0}.memberpress-about .mp-logo{margin:0 0 20px}}.members-plugin-card.plugin-card .desc p{margin-left:0;margin-right:0}@media only screen and (min-width:783px){.members_page_roles .column-users,.members_page_roles .column-granted_caps,.members_page_roles .column-denied_caps{width:100px;text-align:center}}.members-title-div #titlewrap input{padding:0 8px;font-size:1.7em;line-height:normal;height:1.7em;width:100%;outline:0;margin:0 0 3px;background-color:#fff}.members-title-div input[name="role"]{font-size:13px;height:22px;margin:0;width:16em}#tabcapsdiv{margin-top:1em}#tabcapsdiv>.hndle{padding:10px;border-bottom:1px solid #eee}#tabcapsdiv .inside,#members-cp .inside{margin:0;padding:0}.members-cap-tabs,.members-tabs{overflow:hidden;background:#fff;background:-webkit-gradient(linear,left top,right top,from(#fafafa),color-stop(20%,#fafafa),color-stop(20%,#fff),to(#fff));background:linear-gradient(90deg,#fafafa 0,#fafafa 20%,#fff 20%,#fff 100%)}@media only screen and (max-width:782px){.members-cap-tabs,.members-tabs{background:linear-gradient(90deg,#fafafa 0,#fafafa 48px,#fff 48px,#fff 100%)}}.members-cap-tabs .members-tab-nav,.members-tabs .members-tab-nav{position:relative;float:left;list-style:none;width:20%;line-height:1em;margin:0 0 -1px 0;padding:0;background-color:#fafafa;border-right:1px solid #eee;-webkit-box-sizing:border-box;box-sizing:border-box}.members-cap-tabs .members-tab-nav li,.members-tabs .members-tab-nav li{display:block;position:relative;margin:0;padding:0;line-height:20px}.members-cap-tabs .members-tab-nav li a,.members-tabs .members-tab-nav li a{display:block;margin:0;padding:10px;line-height:20px !important;text-decoration:none;border-bottom:1px solid #eee;-webkit-box-shadow:none;box-shadow:none}.members-cap-tabs .members-tab-nav li a .dashicons,.members-tabs .members-tab-nav li a .dashicons{line-height:20px;margin-right:3px}.members-cap-tabs .members-tab-nav li[aria-selected="true"] a,.members-tabs .members-tab-nav li[aria-selected="true"] a{position:relative;font-weight:bold;color:#555;background-color:#e0e0e0}@media only screen and (max-width:782px){.members-cap-tabs .members-tab-nav,.members-tabs .members-tab-nav{width:48px}.members-cap-tabs .members-tab-nav li a .dashicons,.members-tabs .members-tab-nav li a .dashicons{width:24px;height:24px;font-size:24px;line-height:24px}.members-tab-nav li .dashicons::before,.members-tab-nav li .dashicons::before{width:24px;height:24px}.members-tab-nav li .label{overflow:hidden;position:absolute;top:-1000em;left:-1000em;width:1px;height:1px}}.members-cap-tabs .members-tab-wrap,.members-tabs .members-tab-wrap{float:left;width:80%;margin-left:-1px}@media only screen and (max-width:782px){.members-cap-tabs .members-tab-wrap,.members-tabs .members-tab-wrap{width:calc(100% - 48px)}}#members-cp .members-tab-content{padding:10px;border-left:1px solid #e5e5e5}.members-roles-select th,.members-roles-select td{width:190px;overflow:hidden}.members-roles-select .check-all-th{text-align:center}.members-roles-select .check-all-th label{padding-left:5px}@media only screen and (min-width:850px){#side-sortables .members-tabs{background:#fff}#side-sortables .members-tabs .members-tab-wrap{width:100%}#side-sortables .members-tabs .members-tab-nav{display:table;width:100%}#side-sortables .members-tabs .members-tab-nav li{display:table-cell;text-align:center;border-right:1px solid #eee}#side-sortables .members-tabs .members-tab-nav li:last-of-type{border-right:0}#side-sortables .members-tabs .members-tab-nav li a{padding:10px 0}#side-sortables .members-tabs .members-tab-nav .dashicons{width:24px;height:24px;font-size:24px;line-height:24px}#side-sortables .members-tabs .members-tab-nav .dashicons::before{width:24px;height:24px}#side-sortables .members-tabs .members-tab-nav .label{overflow:hidden;position:absolute;top:-1000em;left:-1000em;width:1px;height:1px}}.members-tabs .members-tabs-label{display:block !important;font-weight:bold;display:inline-block;margin-bottom:4px}.members-tabs .butterbean-control-checkbox .members-tabs-label{display:inline !important}.members-tabs .members-tabs-description{display:block;font-style:italic;margin-top:4px}.members-tabs .members-tabs-label+.members-tabs-description{margin-top:0;margin-bottom:4px}#tabcapsdiv table{border-right:0;border-top:0;border-bottom:0}#tabcapsdiv table td,#tabcapsdiv table th{padding:10px;padding-bottom:10px;border-bottom:1px solid #eee;font-size:13px;line-height:20px}#tabcapsdiv table td{padding:9px}#tabcapsdiv tbody tr:last-of-type td{border-bottom:0}#tabcapsdiv tfoot th{border-color:#eee}@media only screen and (max-width:782px){#tabcapsdiv table td,#tabcapsdiv table th{line-height:24px}}.members-roles-select .column-grant,.members-roles-select .column-deny{width:70px !important;text-align:left;display:table-cell !important;clear:none !important}.members-roles-select thead th,.members-roles-select tfoot th{padding:9px !important}.members-roles-select .column-grant input,.members-roles-select .column-deny input{margin:0 5px 0 0;vertical-align:middle}.members-roles-select tbody tr:nth-child(even){background:#f2f2f2}.members-cap-tabs button{display:inline;margin:-4px;line-height:inherit;padding:4px 8px;border:1px solid transparent;background:transparent;border-radius:0;outline:0;-webkit-transition:all .25s ease-out;transition:all .25s ease-out}.members-cap-tabs button:hover,.members-cap-tabs button:focus{border-color:#eee;background:#fafafa;cursor:pointer}.members-cap-tabs button:active{color:#0073aa;border-color:#0073aa}.members-cap-tabs button+.dashicons{display:none;margin-top:1px;margin-bottom:-1px;line-height:inherit}.members-cap-tabs button:hover+.dashicons,.members-cap-tabs button:focus+.dashicons{display:inline-block}.members-tab-content .members-highlight{background-color:rgba(0,115,170,0.05)}.members-tab-content tbody{-webkit-transition:all 2s ease-in-out;transition:all 2s ease-in-out}.members-cp-role-list-wrap{overflow:auto;min-height:42px;max-height:200px;padding:0 .9em;border:solid 1px #dfdfdf;background-color:#fdfdfd}#wpbody-content{padding-bottom:200px}.members-footer-promotion{text-align:center;font-weight:400;font-size:13px;line-height:16px;color:#787c82;padding:20px 0 30px 0;margin-bottom:20px}.members-footer-promotion p{font-weight:600}.members-footer-promotion-links,.members-footer-promotion-social{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.members-footer-promotion-links{margin:9px 0 0}.members-footer-promotion-links span{color:#c3c4c7;padding:0 7px}.members-footer-promotion-social{margin:10px 0 0 0;gap:10px}.members-footer-promotion-social li{margin-bottom:0}.members-footer-promotion-social a{display:block;height:16px}.members_page_members-settings.rtl{.addon-activate{left:20px;right:unset}.members-addons .plugin-card{.name,.desc p{margin-left:0;margin-right:148px}}}.button.button-warning{background:#dc3232;border-color:#dc3232;color:#fff}.button.button-warning:hover,.button.button-warning:focus{background:#c92424;border-color:#c92424;color:#fff}.members-reset-spinner{float:none;margin-top:0;vertical-align:middle}.members-admin-menus-wrap{max-width:1400px;--members-am-accent-use:var(--members-am-accent,var(--wp-admin-theme-color,#2271b1));--members-am-surface-use:var(--members-am-surface,color-mix(in srgb,var(--members-am-base,#1d2327) 88%,#fff 12%));--members-am-border-on-base-fallback:color-mix(in srgb,var(--members-am-base,#1d2327) 62%,#fff 38%);--members-am-chrome-bg:var(--wp-components-color-gray-100,#f6f7f7);--members-am-chrome-border:var(--wp-components-color-gray-400,#c3c4c7);--members-am-muted:var(--wp-components-color-gray-600,#646970)}.members-am-notices{margin:0 0 12px}.members-am-notices .notice{margin:0 0 8px}.members-admin-menus-toolbar{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;gap:0;margin-bottom:16px;border:1px solid var(--members-am-chrome-border,#c3c4c7);border-radius:2px;background:var(--wp-components-color-background,#fff);overflow:visible}.members-am-toolbar-row{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px}.members-am-toolbar-row--primary{padding:10px 12px;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;row-gap:10px}.members-am-toolbar-group{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px}.members-am-toolbar-group--document{position:relative;z-index:5;padding-right:12px;border-right:1px solid var(--members-am-chrome-border,#c3c4c7)}.members-am-toolbar-row--primary .members-am-toolbar-primary-user{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px;margin-left:8px;-webkit-box-flex:0;-ms-flex:0 1 auto;flex:0 1 auto;min-width:0}.members-am-toolbar-row--primary .members-am-toolbar-primary-user #members-am-user-search.members-am-user-search-input{width:168px;max-width:100%;min-width:0}.members-am-toolbar-group--view{margin-left:auto;-ms-flex-wrap:nowrap;flex-wrap:nowrap}.members-am-toolbar-extra{background:var(--members-am-chrome-bg,#f6f7f7);border-top:1px solid var(--members-am-chrome-border,#c3c4c7);padding:10px 12px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:10px}.members-am-toolbar-extra[hidden]{display:none !important}.members-am-toolbar-row--extra-tools{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-wrap:wrap;flex-wrap:wrap;row-gap:10px}.members-am-toolbar-row--extra-tools .members-am-copy-wrap{margin-left:4px;padding-left:12px;border-left:1px solid var(--members-am-chrome-border,#c3c4c7)}.members-am-toolbar-row--extra-tools .members-am-toolbar-group--io{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;margin-left:8px;padding-left:12px;border-left:1px solid var(--members-am-chrome-border,#c3c4c7)}.members-am-more-tools,.members-am-more-tools:hover,.members-am-more-tools:focus,.members-am-more-tools:active{text-decoration:none}.members-am-more-tools{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:4px;white-space:nowrap;padding:2px 2px 2px 4px;vertical-align:middle;line-height:1.4}.members-am-more-tools .members-am-more-tools-chevron,.members-am-more-tools:hover .members-am-more-tools-chevron,.members-am-more-tools:focus .members-am-more-tools-chevron,.members-am-more-tools:active .members-am-more-tools-chevron{text-decoration:none}.members-am-more-tools .members-am-more-tools-text{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;line-height:1.4}.members-am-more-tools .members-am-more-tools-chevron{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-ms-flex-negative:0;flex-shrink:0;line-height:0;opacity:.88}.members-am-more-tools .members-am-more-tools-chevron-svg{display:block;-webkit-transition:-webkit-transform .15s ease;transition:-webkit-transform .15s ease;transition:transform .15s ease;transition:transform .15s ease,-webkit-transform .15s ease;-webkit-transform-origin:50% 50%;transform-origin:50% 50%}.members-am-more-tools.is-open .members-am-more-tools-chevron-svg{-webkit-transform:rotate(180deg);transform:rotate(180deg)}@media(prefers-reduced-motion:reduce){.members-am-more-tools .members-am-more-tools-chevron-svg{-webkit-transition:none;transition:none}}@media screen and (max-width:782px){.members-am-toolbar-group--document{border-right:0;padding-right:0;border-bottom:1px solid var(--members-am-chrome-border,#c3c4c7);padding-bottom:10px;width:100%}.members-am-toolbar-group--view{margin-left:0;width:100%;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.members-am-toolbar-row--primary .members-am-toolbar-primary-user{margin-left:0;padding-left:0;border-left:0;padding-top:8px;border-top:1px solid var(--members-am-chrome-border,#c3c4c7);width:100%;max-width:none}.members-am-toolbar-row--primary .members-am-toolbar-primary-user #members-am-user-search.members-am-user-search-input{width:100%;max-width:100%}.members-am-toolbar-row--extra-tools .members-am-admin-editable{width:100%}.members-am-toolbar-row--extra-tools .members-am-copy-wrap{margin-left:0;padding-left:0;border-left:0;padding-top:8px;border-top:1px solid var(--members-am-chrome-border,#c3c4c7);width:100%}.members-am-toolbar-row--extra-tools .members-am-toolbar-group--io{margin-left:0;padding-left:0;border-left:0;padding-top:8px;border-top:1px solid var(--members-am-chrome-border,#c3c4c7);width:100%}}.members-am-toolbar-loading{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;margin-left:4px;color:var(--members-am-muted,#646970);font-size:13px;line-height:1}.members-am-toolbar-loading .spinner{float:none;margin:0}.members-am-toolbar-loading[hidden]{display:none !important}.members-am-copy-wrap label{margin-right:8px}.members-am-chips{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:8px;margin-bottom:12px}.members-am-chip{border-radius:999px;padding:4px 12px;border:1px solid var(--members-am-chrome-border,#c3c4c7);background:var(--members-am-chrome-bg,#f6f7f7);cursor:pointer}.members-am-chip.is-active{background:var(--members-am-accent-use);border-color:var(--members-am-accent-use);color:var(--wp-components-color-accent-inverted,#fff)}.members-am-carousel-wrap{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;gap:8px;margin-bottom:8px}.members-am-carousel-prev,.members-am-carousel-next{-ms-flex-item-align:center;align-self:center;width:36px;height:36px;border-radius:50%;border:1px solid var(--members-am-chrome-border,#c3c4c7);background:var(--wp-components-color-background,#fff);cursor:pointer}.members-am-columns{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-ms-flex:1;flex:1;gap:12px;min-height:320px;overflow:hidden}.members-am-column{-webkit-box-flex:1;-ms-flex:1;flex:1;min-width:0;background:var(--members-am-base,#1d2327);border-radius:4px;color:var(--members-am-fg-on-base,#f0f0f1);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.members-am-user-column{border:2px dashed var(--wp-components-color-gray-700,#8c8f94)}.members-am-sidebar-head{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:8px 10px;background:var(--members-am-surface-use);border-radius:4px 4px 0 0;font-weight:600;font-size:12px;text-transform:uppercase;letter-spacing:.04em;color:var(--members-am-fg-on-surface,var(--members-am-fg-on-base,#f0f0f1))}.members-am-col-filter{padding:6px 8px 8px;border-bottom:1px solid var(--members-am-border-on-base,var(--members-am-border-on-base-fallback));-ms-flex-negative:0;flex-shrink:0}.members-am-col-filter-input{width:100%;max-width:100%;-webkit-box-sizing:border-box;box-sizing:border-box;font-size:12px;line-height:1.4;padding:4px 8px;border-radius:2px;border:1px solid var(--members-am-border-on-base,var(--members-am-border-on-base-fallback));background:var(--members-am-base,#1d2327);color:var(--members-am-fg-on-base,#f0f0f1)}.members-am-col-filter-input::-webkit-input-placeholder{color:var(--members-am-fg-muted-on-base,var(--wp-components-color-gray-700,#8c8f94));opacity:1}.members-am-col-filter-input::-moz-placeholder{color:var(--members-am-fg-muted-on-base,var(--wp-components-color-gray-700,#8c8f94));opacity:1}.members-am-col-filter-input:-ms-input-placeholder{color:var(--members-am-fg-muted-on-base,var(--wp-components-color-gray-700,#8c8f94));opacity:1}.members-am-col-filter-input::-ms-input-placeholder{color:var(--members-am-fg-muted-on-base,var(--wp-components-color-gray-700,#8c8f94));opacity:1}.members-am-col-filter-input::placeholder{color:var(--members-am-fg-muted-on-base,var(--wp-components-color-gray-700,#8c8f94));opacity:1}.members-am-col-filter-input:focus{border-color:var(--members-am-accent-use);outline:1px solid transparent;-webkit-box-shadow:0 0 0 var(--wp-admin-border-width-focus,1px) var(--members-am-accent-use);box-shadow:0 0 0 var(--wp-admin-border-width-focus,1px) var(--members-am-accent-use)}.members-am-col-bulk{padding:0 8px 8px;border-bottom:1px solid var(--members-am-border-on-base,var(--members-am-border-on-base-fallback));-ms-flex-negative:0;flex-shrink:0}.members-am-col-bulk-toolbar,.members-am-col-collapse-toolbar{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:6px;margin-bottom:6px;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.members-am-col-bulk-toolbar .button.button-small,.members-am-col-collapse-toolbar .button.button-small{font-size:11px;min-height:26px;line-height:24px;padding:0 8px;background:var(--members-am-surface-use);border-color:var(--members-am-border-on-surface,var(--members-am-border-on-base,var(--members-am-border-on-base-fallback)));color:var(--members-am-fg-on-surface,var(--members-am-fg-on-base,#f0f0f1))}.members-am-col-bulk-toolbar .button.button-small:hover,.members-am-col-collapse-toolbar .button.button-small:hover{background:color-mix(in srgb,var(--members-am-surface-use) 85%,#fff 15%);border-color:var(--wp-components-color-gray-700,#8c8f94);color:var(--members-am-fg-on-surface,var(--members-am-fg-on-base,#f0f0f1))}.members-am-item-lead{-ms-flex-negative:0;flex-shrink:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:22px;padding:2px 0 0}.members-am-collapse-spacer{display:block;width:20px;height:20px;-ms-flex-negative:0;flex-shrink:0}.members-am-collapse-toggle{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:22px;height:22px;margin:0;padding:0;border:0;background:transparent;color:var(--members-am-fg-muted-on-base,var(--members-am-chrome-border,#c3c4c7));border-radius:2px;cursor:pointer;-ms-flex-negative:0;flex-shrink:0}.members-am-collapse-toggle:hover,.members-am-collapse-toggle:focus{color:var(--members-am-fg-on-base,#f0f0f1);background:color-mix(in srgb,var(--members-am-fg-on-base,#f0f0f1) 12%,transparent);outline:0}.members-am-collapse-toggle .dashicons{font-size:18px;width:18px;height:18px}.members-am-item-cb-wrap{-ms-flex-negative:0;flex-shrink:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;padding:2px 4px 0 0}.members-am-item-cb{margin:0;width:16px;height:16px;-ms-flex-negative:0;flex-shrink:0}.members-am-bulk-select{width:100%;max-width:100%;-webkit-box-sizing:border-box;box-sizing:border-box;font-size:12px;line-height:1.4;padding:4px 8px;border-radius:2px;border:1px solid var(--members-am-border-on-base,var(--members-am-border-on-base-fallback));background:var(--members-am-base,#1d2327);color:var(--members-am-fg-on-base,#f0f0f1)}.members-am-bulk-select:focus{border-color:var(--members-am-accent-use);outline:1px solid transparent;-webkit-box-shadow:0 0 0 var(--wp-admin-border-width-focus,1px) var(--members-am-accent-use);box-shadow:0 0 0 var(--wp-admin-border-width-focus,1px) var(--members-am-accent-use)}.members-am-item.members-am-filter-hidden,.members-am-sep.members-am-filter-hidden,.members-am-item.members-am-collapse-hidden{display:none !important}.members-am-col-move button{margin-left:4px;padding:0 6px;min-height:24px;line-height:22px;font-size:11px}.members-am-sidebar-list{padding:6px 0 12px;overflow-y:auto;max-height:480px}.members-am-item{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;gap:4px;padding:6px 10px 6px 6px;cursor:pointer;border-left:3px solid transparent;font-size:13px}.members-am-item.is-sub{padding-left:22px;font-size:12px;opacity:.95}.members-am-item.is-sub-deep{padding-left:36px}.members-am-sidebar-list .members-am-item{cursor:-webkit-grab;cursor:grab}.members-am-sidebar-list .members-am-item:active{cursor:-webkit-grabbing;cursor:grabbing}.members-am-sort-placeholder{-webkit-box-sizing:border-box;box-sizing:border-box;min-height:36px;margin:2px 0;background:color-mix(in srgb,var(--members-am-accent-use) 8%,transparent);border:1px dashed var(--members-am-accent-use);border-radius:2px}.members-am-item.is-hidden{opacity:.18}.members-am-item.is-no-cap{opacity:.35}.members-am-item.is-no-cap.is-hidden{opacity:.15}.members-am-item.is-selected{border-left-color:var(--members-am-accent-use);background:color-mix(in srgb,var(--members-am-accent-use) 15%,transparent)}.members-am-item-main{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;min-width:0}.members-am-item-main .dashicons{font-size:18px;width:18px;height:18px}.members-am-item-label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.members-am-item-actions{display:none;gap:2px}.members-am-item:hover .members-am-item-actions{display:-webkit-box;display:-ms-flexbox;display:flex}.members-am-item-actions button{min-height:22px;padding:0 4px;line-height:20px;font-size:11px}.members-am-sep{text-align:center;opacity:.35;font-size:11px;padding:4px 0}.members-am-carousel-dots{text-align:center;margin-bottom:4px}.members-am-dot{width:8px;height:8px;border-radius:50%;border:0;margin:0 4px;padding:0;background:var(--members-am-chrome-border,#c3c4c7);cursor:pointer}.members-am-dot.is-active{background:var(--members-am-accent-use)}.members-am-carousel-status{text-align:center;color:var(--members-am-muted,#646970);font-size:12px;margin-top:0}.members-am-badge{font-size:9px;text-transform:uppercase;padding:1px 4px;border-radius:2px;margin-right:4px;vertical-align:middle}.members-am-badge-new{background:var(--members-am-accent-use);color:var(--wp-components-color-accent-inverted,#fff)}.members-am-badge-edit{background:#dba617;color:var(--members-am-base,#1d2327)}.members-am-badge-nocap{background:var(--wp-components-color-gray-700,#8c8f94);color:var(--wp-components-color-accent-inverted,#fff)}.members-am-legend{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:16px;margin:0 0 8px;padding:0;font-size:12px;color:var(--members-am-muted,#646970)}.members-am-legend-item{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:4px}.members-am-edit-panel{margin-top:20px;padding:16px;border:1px solid var(--members-am-chrome-border,#c3c4c7);background:var(--wp-components-color-background,#fff);border-radius:4px}.members-am-edit-panel-header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:12px}.members-am-edit-panel-header h2{margin:0;font-size:16px}.members-am-edit-toolbar{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:12px;margin-bottom:12px}.members-am-edit-target-wrap select{margin-left:8px}.members-am-level-actions .button{margin-right:6px}.members-am-demote-wrap{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:6px}.members-am-demote-wrap .members-am-demote-select{min-width:200px;max-width:min(320px,100%)}.members-am-edit-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:16px}.members-am-edit-col label{display:block;font-weight:600;margin-bottom:4px}.members-am-icon-tabs{margin-bottom:8px}.members-am-icon-tabs .button{margin-right:4px;margin-bottom:4px}.members-am-icon-tabs .button.is-active{background:var(--members-am-accent-use);border-color:var(--members-am-accent-use);color:var(--wp-components-color-accent-inverted,#fff)}.members-am-icon-grid{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:4px;max-height:160px;overflow-y:auto;border:1px solid var(--wp-components-color-gray-200,#dcdcde);padding:8px;background:var(--members-am-chrome-bg,#f6f7f7);margin-bottom:8px}.members-am-icon-pick{width:36px;height:36px;padding:0;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;border:1px solid var(--members-am-chrome-border,#c3c4c7);background:var(--wp-components-color-background,#fff);cursor:pointer}.members-am-bulk-visibility-hint{margin:0 0 8px;font-size:12px;color:var(--members-am-fg-muted-on-base,#646970)}.members-am-vis-role-filter-wrap{margin-bottom:8px}.members-am-vis-row.members-am-vis-filter-hidden{display:none}.members-am-vis-row{display:block;margin-bottom:6px;font-weight:normal}.members-am-reset-dropdown{position:absolute;z-index:100000;background:var(--wp-components-color-background,#fff);border:1px solid var(--members-am-chrome-border,#c3c4c7);border-radius:6px;padding:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-shadow:0 4px 12px rgba(0,0,0,0.15);box-shadow:0 4px 12px rgba(0,0,0,0.15);min-width:280px;top:100%;left:0;margin-top:4px;overflow:hidden}.members-am-reset-title{padding:10px 14px;font-weight:600;font-size:13px;border-bottom:1px solid var(--wp-components-color-gray-200,#f0f0f0);color:var(--wp-components-color-foreground,#1d2327)}.members-am-reset-option{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;gap:10px;padding:12px 14px;border:0;background:0;cursor:pointer;text-align:left;width:100%;border-bottom:1px solid var(--wp-components-color-gray-200,#f0f0f0);-webkit-transition:background .15s;transition:background .15s}.members-am-reset-option:last-child{border-bottom:0}.members-am-reset-option:hover{background:var(--members-am-chrome-bg,#f6f7f7)}.members-am-reset-option .dashicons{margin-top:2px;color:var(--members-am-muted,#646970)}.members-am-reset-option-text{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:2px}.members-am-reset-option-text strong{font-size:13px;color:var(--wp-components-color-foreground,#1d2327)}.members-am-reset-option-text small{font-size:12px;color:var(--members-am-muted,#646970)}.members-am-reset-danger:hover{background:#fcf0f1}.members-am-reset-danger .dashicons{color:#d63638}.members-am-reset-danger:hover strong{color:#d63638}@media screen and (max-width:782px){.members-am-columns{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}}.members-am-user-suggestions{position:absolute;z-index:100;background:var(--wp-components-color-background,#fff);border:1px solid var(--members-am-chrome-border,#c3c4c7);border-radius:4px;max-height:200px;overflow-y:auto;width:100%;-webkit-box-shadow:0 2px 6px rgba(0,0,0,0.15);box-shadow:0 2px 6px rgba(0,0,0,0.15);top:100%;left:0}.members-am-user-suggestion{padding:8px 12px;cursor:pointer;font-size:13px;border-bottom:1px solid var(--wp-components-color-gray-200,#f0f0f0)}.members-am-user-suggestion:hover{background:color-mix(in srgb,var(--members-am-accent-use) 8%,var(--wp-components-color-background,#fff))}.members-am-user-suggestion:last-child{border-bottom:0}#members-am-import-file.members-am-import-file-hidden{display:none}.members-am-user-search-wrap{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px}#members-am-user-search.members-am-user-search-input{width:168px;max-width:100%}.members-am-legend-visibility-icon{font-size:14px;width:14px;height:14px;vertical-align:middle}.members-am-legend-nocap-badge{display:inline-block;background:#8c8f94;color:#fff;font-size:9px;padding:1px 4px;border-radius:2px;vertical-align:middle}#members-am-icon-preview.members-am-icon-preview{display:none;width:32px;height:32px;-o-object-fit:contain;object-fit:contain;margin-bottom:6px;border:1px solid #ddd;border-radius:3px;padding:2px;background:#f0f0f1}.members-am-icons .members-am-icon-upload-desc{margin-top:4px}#adminmenu .members-am-menu-badge{display:inline-block;color:#fff;font-size:9px;padding:1px 5px;border-radius:2px;line-height:1.4;vertical-align:middle}
\ No newline at end of file
From 86bb3b97c1273f4a3626d9969d440555fcb7af5f Mon Sep 17 00:00:00 2001
From: Omar ElHawary
Date: Thu, 23 Apr 2026 15:05:21 +0200
Subject: [PATCH 38/73] style(admin): update SVG chevron in dropdown button and
enforce text decoration rules for improved visual consistency
---
.../app/functions-admin.php | 2 +-
css/admin.css | 25 ++++++++++++++++---
css/admin.min.css | 2 +-
3 files changed, 24 insertions(+), 5 deletions(-)
diff --git a/addons/members-admin-menus/app/functions-admin.php b/addons/members-admin-menus/app/functions-admin.php
index 4da2b35..0206596 100644
--- a/addons/members-admin-menus/app/functions-admin.php
+++ b/addons/members-admin-menus/app/functions-admin.php
@@ -413,7 +413,7 @@ function render_admin_menus_page() {
-
+
diff --git a/css/admin.css b/css/admin.css
index cedcb30..77c16d4 100644
--- a/css/admin.css
+++ b/css/admin.css
@@ -1172,11 +1172,13 @@
border-left: 1px solid var(--members-am-chrome-border, #c3c4c7);
}
+/* Override core .button-link underline (it can fragment and appear only under the SVG chevron). */
.members-am-more-tools,
.members-am-more-tools:hover,
.members-am-more-tools:focus,
+.members-am-more-tools:focus-visible,
.members-am-more-tools:active {
- text-decoration: none;
+ text-decoration: none !important;
}
.members-am-more-tools {
@@ -1189,11 +1191,22 @@
line-height: 1.4;
}
+.members-am-more-tools .members-am-more-tools-text,
+.members-am-more-tools:hover .members-am-more-tools-text,
+.members-am-more-tools:focus .members-am-more-tools-text,
+.members-am-more-tools:focus-visible .members-am-more-tools-text,
+.members-am-more-tools:active .members-am-more-tools-text,
.members-am-more-tools .members-am-more-tools-chevron,
.members-am-more-tools:hover .members-am-more-tools-chevron,
.members-am-more-tools:focus .members-am-more-tools-chevron,
-.members-am-more-tools:active .members-am-more-tools-chevron {
- text-decoration: none;
+.members-am-more-tools:focus-visible .members-am-more-tools-chevron,
+.members-am-more-tools:active .members-am-more-tools-chevron,
+.members-am-more-tools .members-am-more-tools-chevron-svg,
+.members-am-more-tools:hover .members-am-more-tools-chevron-svg,
+.members-am-more-tools:focus .members-am-more-tools-chevron-svg,
+.members-am-more-tools:focus-visible .members-am-more-tools-chevron-svg,
+.members-am-more-tools:active .members-am-more-tools-chevron-svg {
+ text-decoration: none !important;
}
.members-am-more-tools .members-am-more-tools-text {
@@ -1214,8 +1227,14 @@
.members-am-more-tools .members-am-more-tools-chevron-svg {
display: block;
+ overflow: visible;
transition: transform 0.15s ease;
transform-origin: 50% 50%;
+ shape-rendering: geometricPrecision;
+}
+
+.members-am-more-tools .members-am-more-tools-chevron-svg polygon {
+ stroke: none;
}
.members-am-more-tools.is-open .members-am-more-tools-chevron-svg {
diff --git a/css/admin.min.css b/css/admin.min.css
index a1a1ee5..4120a48 100644
--- a/css/admin.min.css
+++ b/css/admin.min.css
@@ -1 +1 @@
-#members-cp h2.hndle,#members-cp-side h2.hndle{border-bottom:none !important;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}#members-cp h2.hndle:before,#members-cp-side h2.hndle:before{content:url("data:image/svg+xml,%3Csvg width='15px' aria-hidden='true' focusable='false' data-prefix='fas' data-icon='users-cog' class='svg-inline--fa fa-users-cog fa-w-20' role='img' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 640 512'%3E%3Cpath fill='currentColor' d='M610.5 341.3c2.6-14.1 2.6-28.5 0-42.6l25.8-14.9c3-1.7 4.3-5.2 3.3-8.5-6.7-21.6-18.2-41.2-33.2-57.4-2.3-2.5-6-3.1-9-1.4l-25.8 14.9c-10.9-9.3-23.4-16.5-36.9-21.3v-29.8c0-3.4-2.4-6.4-5.7-7.1-22.3-5-45-4.8-66.2 0-3.3.7-5.7 3.7-5.7 7.1v29.8c-13.5 4.8-26 12-36.9 21.3l-25.8-14.9c-2.9-1.7-6.7-1.1-9 1.4-15 16.2-26.5 35.8-33.2 57.4-1 3.3.4 6.8 3.3 8.5l25.8 14.9c-2.6 14.1-2.6 28.5 0 42.6l-25.8 14.9c-3 1.7-4.3 5.2-3.3 8.5 6.7 21.6 18.2 41.1 33.2 57.4 2.3 2.5 6 3.1 9 1.4l25.8-14.9c10.9 9.3 23.4 16.5 36.9 21.3v29.8c0 3.4 2.4 6.4 5.7 7.1 22.3 5 45 4.8 66.2 0 3.3-.7 5.7-3.7 5.7-7.1v-29.8c13.5-4.8 26-12 36.9-21.3l25.8 14.9c2.9 1.7 6.7 1.1 9-1.4 15-16.2 26.5-35.8 33.2-57.4 1-3.3-.4-6.8-3.3-8.5l-25.8-14.9zM496 368.5c-26.8 0-48.5-21.8-48.5-48.5s21.8-48.5 48.5-48.5 48.5 21.8 48.5 48.5-21.7 48.5-48.5 48.5zM96 224c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm224 32c1.9 0 3.7-.5 5.6-.6 8.3-21.7 20.5-42.1 36.3-59.2 7.4-8 17.9-12.6 28.9-12.6 6.9 0 13.7 1.8 19.6 5.3l7.9 4.6c.8-.5 1.6-.9 2.4-1.4 7-14.6 11.2-30.8 11.2-48 0-61.9-50.1-112-112-112S208 82.1 208 144c0 61.9 50.1 112 112 112zm105.2 194.5c-2.3-1.2-4.6-2.6-6.8-3.9-8.2 4.8-15.3 9.8-27.5 9.8-10.9 0-21.4-4.6-28.9-12.6-18.3-19.8-32.3-43.9-40.2-69.6-10.7-34.5 24.9-49.7 25.8-50.3-.1-2.6-.1-5.2 0-7.8l-7.9-4.6c-3.8-2.2-7-5-9.8-8.1-3.3.2-6.5.6-9.8.6-24.6 0-47.6-6-68.5-16h-8.3C179.6 288 128 339.6 128 403.2V432c0 26.5 21.5 48 48 48h255.4c-3.7-6-6.2-12.8-6.2-20.3v-9.2zM173.1 274.6C161.5 263.1 145.6 256 128 256H64c-35.3 0-64 28.7-64 64v32c0 17.7 14.3 32 32 32h65.9c6.3-47.4 34.9-87.3 75.2-109.4z'%3E%3C/path%3E%3C/svg%3E");margin-right:5px}#members-cp-side .postbox-header{border-bottom:none !important}#members-cp-side .handle-actions .handle-order-higher,#members-cp-side .handle-actions .handle-order-lower{display:none}#members-cp-side .handle-actions .handlediv{position:absolute;right:5px}.members-upgrade-header{text-align:center;padding:5px}.members-upgrade-header a{color:#f59431}.memberpress-paid-memberships{background-color:#f5f5f5;padding:50px 10px;text-align:center}.memberpress-paid-memberships a{background-color:#0e4598;display:inline-block;padding:10px 20px;border-radius:300px;color:#fff;text-decoration:none;margin-top:20px}#members-cp-side .members-tabs{position:relative}#members-cp-side .members-tab-nav{background-color:transparent;margin-bottom:20px;border-right:none !important}#members-cp-side .members-tab-nav .members-tab-title{width:33.333%;height:50px;border-right:none !important}#members-cp-side .members-tab-nav .members-tab-title a{border:0}#members-cp-side .members-tab-content h3{font-weight:bold;font-size:15px;margin-top:0;color:#000;margin-bottom:10px}#members-cp-side .members-tab-content .memberpress-paid-memberships{text-align:left;padding:20px}#members-cp-side .members-tab-content .memberpress-paid-memberships a{display:block;text-align:center}#members-cp-side .members-tabs .members-tab-nav li a,#members-cp-side .members-tabs .members-tab-nav li[aria-selected="false"] a i{color:#555}#members-cp-side .members-tabs .members-tab-nav li a svg,#members-cp-side .members-tabs .members-tab-nav li[aria-selected="false"] a svg{fill:#555}#members-cp-side .members-tabs .members-tab-nav li[aria-selected="true"] a{background-color:transparent;border-bottom:2px solid #3582ae}#members-cp-side .members-tabs .members-tab-nav li[aria-selected="true"] a i{color:#3582ae}#members-cp-side .members-tabs .members-tab-nav li[aria-selected="true"] a svg{fill:#3582ae}.members-tab-title svg,.members-tab-title[aria-selected="false"] svg{fill:#0073aa}.members-tab-title[aria-selected="true"] svg{fill:#555}#wpcontent #members-admin-header{margin-left:-20px;padding:0;padding-left:22px;background-color:#f9f9f9;background-repeat:repeat;background-size:1200px 75px;min-height:36px;position:relative}#wpcontent #members-admin-header img.members-logo{height:90px}.members-upgrade-header #close-members-upgrade-header{position:absolute;right:20px;top:3px}.members-upgrade-header #close-members-upgrade-header:hover{cursor:pointer}.memberpress-welcome-panel.welcome-panel{margin-top:0;padding:40px 20px;background:#fff}.memberpress-welcome-panel.welcome-panel:before{background:0}.memberpress-welcome-panel.welcome-panel .about-description{margin:20px 0}.memberpress-welcome-panel.welcome-panel-content{margin:0}.memberpress-welcome-panel.welcome-panel-content .mp-logo-wrap>a{display:block}@media screen and (min-width:870px){.members_page_members-settings .members-short-p{max-width:612px;margin-left:auto;margin-right:auto}.members_page_members-settings .welcome-panel-content{text-align:center}}.members_page_members-settings .welcome-panel .button.button-hero{margin-left:auto;margin-right:auto}.members_page_members-settings .members-svg-wrap{display:inline-block;margin:0 auto 20px}@media screen and (max-width:870px){.members_page_members-settings .welcome-panel{padding:20px}.members_page_members-settings .members-svg-wrap{float:left;margin-right:28px}.admin_page_members-settings.rtl .members-svg-wrap{float:right;margin-right:0;margin-left:28px}}.members_page_members-settings .members-svg-link{display:table-cell;text-align:center;width:128px;height:128px;background:#363b3f;color:#fff;padding:24px 16px 16px;border-radius:50%;-webkit-box-sizing:border-box;box-sizing:border-box;border:4px solid #fff;-webkit-box-shadow:0 0 0 4px #363b3f;box-shadow:0 0 0 4px #363b3f}.members_page_members-settings .members-svg-link svg{max-width:84px;max-height:64px;width:auto;height:auto}.members-addons{display:grid;grid-template-columns:1fr 1fr;grid-row-gap:20px;grid-column-gap:20px}.members-addons .plugin-card{margin:0}.members-addons .plugin-card-top{width:100%}.members-addon{width:100%;position:relative;float:none;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.members-addon .desc{margin-bottom:80px}.addon-activate{text-align:center;border:1px solid #ddd;border-radius:3px;padding:5px 10px 10px;display:inline-block;width:100px;position:absolute;right:20px;bottom:20px}.activate-toggle:hover{cursor:pointer}.activate-toggle svg{max-width:20px;position:relative;top:5px}.activate-toggle svg{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.activate-toggle svg.active{-webkit-transform:rotate(0);transform:rotate(0)}.activate-toggle svg path{fill:#ccc}.activate-toggle svg.active path{fill:#8cbd5a}.activate-toggle.processing{cursor:not-allowed;pointer-events:none;opacity:.5}.activate-toggle .action-label{display:inline-block;width:50px;text-align:left}.mepr_dummy_txns{-webkit-filter:blur(3px);filter:blur(3px);position:absolute;top:0;left:0;width:100%;z-index:5;pointer-events:none}.mepr_dummy_txns::after{background-color:rgba(0,0,0,.2);position:absolute;top:0;left:0;width:100%;height:100%;z-index:6}.mepr-upgrade-table{position:relative}.mepr-upgrade-table .mepr-upgrade{position:relative;top:100px;z-index:10;background:rgba(0,0,0,.2);width:100%;height:100%;max-width:600px;margin:0 auto;-webkit-box-shadow:0 0 30px #ccc;box-shadow:0 0 30px #ccc}.mepr-upgrade-content{background-color:#fff;padding:20px;text-align:center}.mepr-upgrade-content h2{font-size:24px}.mepr-upgrade-content h4{font-size:18px}.mepr-upgrade-content .features{display:grid;grid-template-columns:1fr 1fr;grid-column-gap:30px;grid-row-gap:10px;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;text-align:left;padding:10px}.features li:before{content:"\f147";font-family:dashicons;color:green;font-size:20px;position:relative;top:4px;margin-right:10px}.mepr-upgrade-cta{text-align:center;background-color:#f2f2f2;padding:20px}.mepr-upgrade-cta .mepr-cta-button{display:block;max-width:300px;margin:0 auto 20px;background-color:#fd9c27;color:#fff;padding:15px;font-size:18px;font-weight:bold;text-decoration:none;border-radius:300px}.members-plugin-card.plugin-card:nth-child(even){margin-right:inherit}.members-plugin-card.plugin-card:nth-child(odd){clear:none;margin-left:inherit}.members-plugin-card.plugin-card .plugin-card-top{min-height:0;padding:30px 20px}.members-plugin-card.plugin-card .plugin-icon{top:30px}.members-plugin-card.plugin-card .plugin-card-bottom .column-status{font-weight:bold}.members-plugin-card.plugin-card .plugin-card-bottom .column-status .active{color:#8cbd5a}.members-plugin-card.plugin-card .plugin-card-bottom .column-status .inactive{color:red}.members-plugin-card.plugin-card .plugin-icon{width:64px;height:auto}.plugin-icon-small{width:32px;height:auto}.members-plugin-card.plugin-card .name,.members-plugin-card.plugin-card .desc{margin-right:0;margin-left:84px}.members-addons .plugin-card .name,.members-addons .plugin-card .desc p{margin-right:0}@media screen and (max-width:1100px){.members-addons{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}}@media screen and (max-width:600px){.members_page_members-settings .members-svg-link{width:64px;height:64px}.members_page_members-settings .members-svg-link svg{position:absolute;top:14px;left:15px;max-width:30px;max-height:30px}.members_page_members-settings .plugin-card-members-edd-integration .members-svg-link svg,.members_page_members-settings .plugin-card-members-acf-integration .members-svg-link svg,.members_page_members-settings .plugin-card-members-givewp-integration .members-svg-link svg,.members_page_members-settings .plugin-card-members-meta-box-integration .members-svg-link svg,.members_page_members-settings .plugin-card-members-woocommerce-integration .members-svg-link svg{top:10px;left:8px;max-width:40px;max-height:40px}.members_page_members-settings .plugin-card-members-block-permissions .members-svg-link svg,.members_page_members-settings .plugin-card-members-role-hierarchy .members-svg-link svg{left:14px}.members-addons .plugin-card .desc>p,.members-addons .plugin-card .name{margin-left:84px}}.memberpress-about .welcome-panel-column-container{display:-webkit-box;display:-ms-flexbox;display:flex}.memberpress-about .mp-logo{max-width:256px;margin:50px}.members-about-addons{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-column-gap:20px}.members-about-addons .members-plugin-card{margin:0;width:100%}.members-about-addons .members-plugin-card .name h3 a{text-decoration:none}.members-about-addons .members-plugin-card .plugin-card-bottom{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}@media only screen and (max-width:1099px){.members-about-addons{grid-template-columns:1fr;grid-row-gap:20px}}@media screen and (min-width:1100px) and (max-width:1600px){.members-about-addons .members-plugin-card{float:none;width:auto;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.members-plugin-card.plugin-card .desc{margin-left:0;margin-top:50px}.members-plugin-card.plugin-card .desc p{margin-left:0;margin-right:0}.members-plugin-card.plugin-card .plugin-card-bottom .column-status{float:none}.members-plugin-card.plugin-card .plugin-card-bottom .column-updated{float:none;width:auto}}@media screen and (max-width:1200px){.welcome-panel .welcome-panel-column-container{-webkit-box-orient:vertical;-webkit-box-direction:reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse;gap:0;padding:0}.memberpress-about .mp-logo{margin:0 0 20px}}.members-plugin-card.plugin-card .desc p{margin-left:0;margin-right:0}@media only screen and (min-width:783px){.members_page_roles .column-users,.members_page_roles .column-granted_caps,.members_page_roles .column-denied_caps{width:100px;text-align:center}}.members-title-div #titlewrap input{padding:0 8px;font-size:1.7em;line-height:normal;height:1.7em;width:100%;outline:0;margin:0 0 3px;background-color:#fff}.members-title-div input[name="role"]{font-size:13px;height:22px;margin:0;width:16em}#tabcapsdiv{margin-top:1em}#tabcapsdiv>.hndle{padding:10px;border-bottom:1px solid #eee}#tabcapsdiv .inside,#members-cp .inside{margin:0;padding:0}.members-cap-tabs,.members-tabs{overflow:hidden;background:#fff;background:-webkit-gradient(linear,left top,right top,from(#fafafa),color-stop(20%,#fafafa),color-stop(20%,#fff),to(#fff));background:linear-gradient(90deg,#fafafa 0,#fafafa 20%,#fff 20%,#fff 100%)}@media only screen and (max-width:782px){.members-cap-tabs,.members-tabs{background:linear-gradient(90deg,#fafafa 0,#fafafa 48px,#fff 48px,#fff 100%)}}.members-cap-tabs .members-tab-nav,.members-tabs .members-tab-nav{position:relative;float:left;list-style:none;width:20%;line-height:1em;margin:0 0 -1px 0;padding:0;background-color:#fafafa;border-right:1px solid #eee;-webkit-box-sizing:border-box;box-sizing:border-box}.members-cap-tabs .members-tab-nav li,.members-tabs .members-tab-nav li{display:block;position:relative;margin:0;padding:0;line-height:20px}.members-cap-tabs .members-tab-nav li a,.members-tabs .members-tab-nav li a{display:block;margin:0;padding:10px;line-height:20px !important;text-decoration:none;border-bottom:1px solid #eee;-webkit-box-shadow:none;box-shadow:none}.members-cap-tabs .members-tab-nav li a .dashicons,.members-tabs .members-tab-nav li a .dashicons{line-height:20px;margin-right:3px}.members-cap-tabs .members-tab-nav li[aria-selected="true"] a,.members-tabs .members-tab-nav li[aria-selected="true"] a{position:relative;font-weight:bold;color:#555;background-color:#e0e0e0}@media only screen and (max-width:782px){.members-cap-tabs .members-tab-nav,.members-tabs .members-tab-nav{width:48px}.members-cap-tabs .members-tab-nav li a .dashicons,.members-tabs .members-tab-nav li a .dashicons{width:24px;height:24px;font-size:24px;line-height:24px}.members-tab-nav li .dashicons::before,.members-tab-nav li .dashicons::before{width:24px;height:24px}.members-tab-nav li .label{overflow:hidden;position:absolute;top:-1000em;left:-1000em;width:1px;height:1px}}.members-cap-tabs .members-tab-wrap,.members-tabs .members-tab-wrap{float:left;width:80%;margin-left:-1px}@media only screen and (max-width:782px){.members-cap-tabs .members-tab-wrap,.members-tabs .members-tab-wrap{width:calc(100% - 48px)}}#members-cp .members-tab-content{padding:10px;border-left:1px solid #e5e5e5}.members-roles-select th,.members-roles-select td{width:190px;overflow:hidden}.members-roles-select .check-all-th{text-align:center}.members-roles-select .check-all-th label{padding-left:5px}@media only screen and (min-width:850px){#side-sortables .members-tabs{background:#fff}#side-sortables .members-tabs .members-tab-wrap{width:100%}#side-sortables .members-tabs .members-tab-nav{display:table;width:100%}#side-sortables .members-tabs .members-tab-nav li{display:table-cell;text-align:center;border-right:1px solid #eee}#side-sortables .members-tabs .members-tab-nav li:last-of-type{border-right:0}#side-sortables .members-tabs .members-tab-nav li a{padding:10px 0}#side-sortables .members-tabs .members-tab-nav .dashicons{width:24px;height:24px;font-size:24px;line-height:24px}#side-sortables .members-tabs .members-tab-nav .dashicons::before{width:24px;height:24px}#side-sortables .members-tabs .members-tab-nav .label{overflow:hidden;position:absolute;top:-1000em;left:-1000em;width:1px;height:1px}}.members-tabs .members-tabs-label{display:block !important;font-weight:bold;display:inline-block;margin-bottom:4px}.members-tabs .butterbean-control-checkbox .members-tabs-label{display:inline !important}.members-tabs .members-tabs-description{display:block;font-style:italic;margin-top:4px}.members-tabs .members-tabs-label+.members-tabs-description{margin-top:0;margin-bottom:4px}#tabcapsdiv table{border-right:0;border-top:0;border-bottom:0}#tabcapsdiv table td,#tabcapsdiv table th{padding:10px;padding-bottom:10px;border-bottom:1px solid #eee;font-size:13px;line-height:20px}#tabcapsdiv table td{padding:9px}#tabcapsdiv tbody tr:last-of-type td{border-bottom:0}#tabcapsdiv tfoot th{border-color:#eee}@media only screen and (max-width:782px){#tabcapsdiv table td,#tabcapsdiv table th{line-height:24px}}.members-roles-select .column-grant,.members-roles-select .column-deny{width:70px !important;text-align:left;display:table-cell !important;clear:none !important}.members-roles-select thead th,.members-roles-select tfoot th{padding:9px !important}.members-roles-select .column-grant input,.members-roles-select .column-deny input{margin:0 5px 0 0;vertical-align:middle}.members-roles-select tbody tr:nth-child(even){background:#f2f2f2}.members-cap-tabs button{display:inline;margin:-4px;line-height:inherit;padding:4px 8px;border:1px solid transparent;background:transparent;border-radius:0;outline:0;-webkit-transition:all .25s ease-out;transition:all .25s ease-out}.members-cap-tabs button:hover,.members-cap-tabs button:focus{border-color:#eee;background:#fafafa;cursor:pointer}.members-cap-tabs button:active{color:#0073aa;border-color:#0073aa}.members-cap-tabs button+.dashicons{display:none;margin-top:1px;margin-bottom:-1px;line-height:inherit}.members-cap-tabs button:hover+.dashicons,.members-cap-tabs button:focus+.dashicons{display:inline-block}.members-tab-content .members-highlight{background-color:rgba(0,115,170,0.05)}.members-tab-content tbody{-webkit-transition:all 2s ease-in-out;transition:all 2s ease-in-out}.members-cp-role-list-wrap{overflow:auto;min-height:42px;max-height:200px;padding:0 .9em;border:solid 1px #dfdfdf;background-color:#fdfdfd}#wpbody-content{padding-bottom:200px}.members-footer-promotion{text-align:center;font-weight:400;font-size:13px;line-height:16px;color:#787c82;padding:20px 0 30px 0;margin-bottom:20px}.members-footer-promotion p{font-weight:600}.members-footer-promotion-links,.members-footer-promotion-social{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.members-footer-promotion-links{margin:9px 0 0}.members-footer-promotion-links span{color:#c3c4c7;padding:0 7px}.members-footer-promotion-social{margin:10px 0 0 0;gap:10px}.members-footer-promotion-social li{margin-bottom:0}.members-footer-promotion-social a{display:block;height:16px}.members_page_members-settings.rtl{.addon-activate{left:20px;right:unset}.members-addons .plugin-card{.name,.desc p{margin-left:0;margin-right:148px}}}.button.button-warning{background:#dc3232;border-color:#dc3232;color:#fff}.button.button-warning:hover,.button.button-warning:focus{background:#c92424;border-color:#c92424;color:#fff}.members-reset-spinner{float:none;margin-top:0;vertical-align:middle}.members-admin-menus-wrap{max-width:1400px;--members-am-accent-use:var(--members-am-accent,var(--wp-admin-theme-color,#2271b1));--members-am-surface-use:var(--members-am-surface,color-mix(in srgb,var(--members-am-base,#1d2327) 88%,#fff 12%));--members-am-border-on-base-fallback:color-mix(in srgb,var(--members-am-base,#1d2327) 62%,#fff 38%);--members-am-chrome-bg:var(--wp-components-color-gray-100,#f6f7f7);--members-am-chrome-border:var(--wp-components-color-gray-400,#c3c4c7);--members-am-muted:var(--wp-components-color-gray-600,#646970)}.members-am-notices{margin:0 0 12px}.members-am-notices .notice{margin:0 0 8px}.members-admin-menus-toolbar{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;gap:0;margin-bottom:16px;border:1px solid var(--members-am-chrome-border,#c3c4c7);border-radius:2px;background:var(--wp-components-color-background,#fff);overflow:visible}.members-am-toolbar-row{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px}.members-am-toolbar-row--primary{padding:10px 12px;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;row-gap:10px}.members-am-toolbar-group{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px}.members-am-toolbar-group--document{position:relative;z-index:5;padding-right:12px;border-right:1px solid var(--members-am-chrome-border,#c3c4c7)}.members-am-toolbar-row--primary .members-am-toolbar-primary-user{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px;margin-left:8px;-webkit-box-flex:0;-ms-flex:0 1 auto;flex:0 1 auto;min-width:0}.members-am-toolbar-row--primary .members-am-toolbar-primary-user #members-am-user-search.members-am-user-search-input{width:168px;max-width:100%;min-width:0}.members-am-toolbar-group--view{margin-left:auto;-ms-flex-wrap:nowrap;flex-wrap:nowrap}.members-am-toolbar-extra{background:var(--members-am-chrome-bg,#f6f7f7);border-top:1px solid var(--members-am-chrome-border,#c3c4c7);padding:10px 12px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:10px}.members-am-toolbar-extra[hidden]{display:none !important}.members-am-toolbar-row--extra-tools{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-wrap:wrap;flex-wrap:wrap;row-gap:10px}.members-am-toolbar-row--extra-tools .members-am-copy-wrap{margin-left:4px;padding-left:12px;border-left:1px solid var(--members-am-chrome-border,#c3c4c7)}.members-am-toolbar-row--extra-tools .members-am-toolbar-group--io{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;margin-left:8px;padding-left:12px;border-left:1px solid var(--members-am-chrome-border,#c3c4c7)}.members-am-more-tools,.members-am-more-tools:hover,.members-am-more-tools:focus,.members-am-more-tools:active{text-decoration:none}.members-am-more-tools{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:4px;white-space:nowrap;padding:2px 2px 2px 4px;vertical-align:middle;line-height:1.4}.members-am-more-tools .members-am-more-tools-chevron,.members-am-more-tools:hover .members-am-more-tools-chevron,.members-am-more-tools:focus .members-am-more-tools-chevron,.members-am-more-tools:active .members-am-more-tools-chevron{text-decoration:none}.members-am-more-tools .members-am-more-tools-text{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;line-height:1.4}.members-am-more-tools .members-am-more-tools-chevron{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-ms-flex-negative:0;flex-shrink:0;line-height:0;opacity:.88}.members-am-more-tools .members-am-more-tools-chevron-svg{display:block;-webkit-transition:-webkit-transform .15s ease;transition:-webkit-transform .15s ease;transition:transform .15s ease;transition:transform .15s ease,-webkit-transform .15s ease;-webkit-transform-origin:50% 50%;transform-origin:50% 50%}.members-am-more-tools.is-open .members-am-more-tools-chevron-svg{-webkit-transform:rotate(180deg);transform:rotate(180deg)}@media(prefers-reduced-motion:reduce){.members-am-more-tools .members-am-more-tools-chevron-svg{-webkit-transition:none;transition:none}}@media screen and (max-width:782px){.members-am-toolbar-group--document{border-right:0;padding-right:0;border-bottom:1px solid var(--members-am-chrome-border,#c3c4c7);padding-bottom:10px;width:100%}.members-am-toolbar-group--view{margin-left:0;width:100%;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.members-am-toolbar-row--primary .members-am-toolbar-primary-user{margin-left:0;padding-left:0;border-left:0;padding-top:8px;border-top:1px solid var(--members-am-chrome-border,#c3c4c7);width:100%;max-width:none}.members-am-toolbar-row--primary .members-am-toolbar-primary-user #members-am-user-search.members-am-user-search-input{width:100%;max-width:100%}.members-am-toolbar-row--extra-tools .members-am-admin-editable{width:100%}.members-am-toolbar-row--extra-tools .members-am-copy-wrap{margin-left:0;padding-left:0;border-left:0;padding-top:8px;border-top:1px solid var(--members-am-chrome-border,#c3c4c7);width:100%}.members-am-toolbar-row--extra-tools .members-am-toolbar-group--io{margin-left:0;padding-left:0;border-left:0;padding-top:8px;border-top:1px solid var(--members-am-chrome-border,#c3c4c7);width:100%}}.members-am-toolbar-loading{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;margin-left:4px;color:var(--members-am-muted,#646970);font-size:13px;line-height:1}.members-am-toolbar-loading .spinner{float:none;margin:0}.members-am-toolbar-loading[hidden]{display:none !important}.members-am-copy-wrap label{margin-right:8px}.members-am-chips{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:8px;margin-bottom:12px}.members-am-chip{border-radius:999px;padding:4px 12px;border:1px solid var(--members-am-chrome-border,#c3c4c7);background:var(--members-am-chrome-bg,#f6f7f7);cursor:pointer}.members-am-chip.is-active{background:var(--members-am-accent-use);border-color:var(--members-am-accent-use);color:var(--wp-components-color-accent-inverted,#fff)}.members-am-carousel-wrap{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;gap:8px;margin-bottom:8px}.members-am-carousel-prev,.members-am-carousel-next{-ms-flex-item-align:center;align-self:center;width:36px;height:36px;border-radius:50%;border:1px solid var(--members-am-chrome-border,#c3c4c7);background:var(--wp-components-color-background,#fff);cursor:pointer}.members-am-columns{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-ms-flex:1;flex:1;gap:12px;min-height:320px;overflow:hidden}.members-am-column{-webkit-box-flex:1;-ms-flex:1;flex:1;min-width:0;background:var(--members-am-base,#1d2327);border-radius:4px;color:var(--members-am-fg-on-base,#f0f0f1);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.members-am-user-column{border:2px dashed var(--wp-components-color-gray-700,#8c8f94)}.members-am-sidebar-head{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:8px 10px;background:var(--members-am-surface-use);border-radius:4px 4px 0 0;font-weight:600;font-size:12px;text-transform:uppercase;letter-spacing:.04em;color:var(--members-am-fg-on-surface,var(--members-am-fg-on-base,#f0f0f1))}.members-am-col-filter{padding:6px 8px 8px;border-bottom:1px solid var(--members-am-border-on-base,var(--members-am-border-on-base-fallback));-ms-flex-negative:0;flex-shrink:0}.members-am-col-filter-input{width:100%;max-width:100%;-webkit-box-sizing:border-box;box-sizing:border-box;font-size:12px;line-height:1.4;padding:4px 8px;border-radius:2px;border:1px solid var(--members-am-border-on-base,var(--members-am-border-on-base-fallback));background:var(--members-am-base,#1d2327);color:var(--members-am-fg-on-base,#f0f0f1)}.members-am-col-filter-input::-webkit-input-placeholder{color:var(--members-am-fg-muted-on-base,var(--wp-components-color-gray-700,#8c8f94));opacity:1}.members-am-col-filter-input::-moz-placeholder{color:var(--members-am-fg-muted-on-base,var(--wp-components-color-gray-700,#8c8f94));opacity:1}.members-am-col-filter-input:-ms-input-placeholder{color:var(--members-am-fg-muted-on-base,var(--wp-components-color-gray-700,#8c8f94));opacity:1}.members-am-col-filter-input::-ms-input-placeholder{color:var(--members-am-fg-muted-on-base,var(--wp-components-color-gray-700,#8c8f94));opacity:1}.members-am-col-filter-input::placeholder{color:var(--members-am-fg-muted-on-base,var(--wp-components-color-gray-700,#8c8f94));opacity:1}.members-am-col-filter-input:focus{border-color:var(--members-am-accent-use);outline:1px solid transparent;-webkit-box-shadow:0 0 0 var(--wp-admin-border-width-focus,1px) var(--members-am-accent-use);box-shadow:0 0 0 var(--wp-admin-border-width-focus,1px) var(--members-am-accent-use)}.members-am-col-bulk{padding:0 8px 8px;border-bottom:1px solid var(--members-am-border-on-base,var(--members-am-border-on-base-fallback));-ms-flex-negative:0;flex-shrink:0}.members-am-col-bulk-toolbar,.members-am-col-collapse-toolbar{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:6px;margin-bottom:6px;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.members-am-col-bulk-toolbar .button.button-small,.members-am-col-collapse-toolbar .button.button-small{font-size:11px;min-height:26px;line-height:24px;padding:0 8px;background:var(--members-am-surface-use);border-color:var(--members-am-border-on-surface,var(--members-am-border-on-base,var(--members-am-border-on-base-fallback)));color:var(--members-am-fg-on-surface,var(--members-am-fg-on-base,#f0f0f1))}.members-am-col-bulk-toolbar .button.button-small:hover,.members-am-col-collapse-toolbar .button.button-small:hover{background:color-mix(in srgb,var(--members-am-surface-use) 85%,#fff 15%);border-color:var(--wp-components-color-gray-700,#8c8f94);color:var(--members-am-fg-on-surface,var(--members-am-fg-on-base,#f0f0f1))}.members-am-item-lead{-ms-flex-negative:0;flex-shrink:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:22px;padding:2px 0 0}.members-am-collapse-spacer{display:block;width:20px;height:20px;-ms-flex-negative:0;flex-shrink:0}.members-am-collapse-toggle{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:22px;height:22px;margin:0;padding:0;border:0;background:transparent;color:var(--members-am-fg-muted-on-base,var(--members-am-chrome-border,#c3c4c7));border-radius:2px;cursor:pointer;-ms-flex-negative:0;flex-shrink:0}.members-am-collapse-toggle:hover,.members-am-collapse-toggle:focus{color:var(--members-am-fg-on-base,#f0f0f1);background:color-mix(in srgb,var(--members-am-fg-on-base,#f0f0f1) 12%,transparent);outline:0}.members-am-collapse-toggle .dashicons{font-size:18px;width:18px;height:18px}.members-am-item-cb-wrap{-ms-flex-negative:0;flex-shrink:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;padding:2px 4px 0 0}.members-am-item-cb{margin:0;width:16px;height:16px;-ms-flex-negative:0;flex-shrink:0}.members-am-bulk-select{width:100%;max-width:100%;-webkit-box-sizing:border-box;box-sizing:border-box;font-size:12px;line-height:1.4;padding:4px 8px;border-radius:2px;border:1px solid var(--members-am-border-on-base,var(--members-am-border-on-base-fallback));background:var(--members-am-base,#1d2327);color:var(--members-am-fg-on-base,#f0f0f1)}.members-am-bulk-select:focus{border-color:var(--members-am-accent-use);outline:1px solid transparent;-webkit-box-shadow:0 0 0 var(--wp-admin-border-width-focus,1px) var(--members-am-accent-use);box-shadow:0 0 0 var(--wp-admin-border-width-focus,1px) var(--members-am-accent-use)}.members-am-item.members-am-filter-hidden,.members-am-sep.members-am-filter-hidden,.members-am-item.members-am-collapse-hidden{display:none !important}.members-am-col-move button{margin-left:4px;padding:0 6px;min-height:24px;line-height:22px;font-size:11px}.members-am-sidebar-list{padding:6px 0 12px;overflow-y:auto;max-height:480px}.members-am-item{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;gap:4px;padding:6px 10px 6px 6px;cursor:pointer;border-left:3px solid transparent;font-size:13px}.members-am-item.is-sub{padding-left:22px;font-size:12px;opacity:.95}.members-am-item.is-sub-deep{padding-left:36px}.members-am-sidebar-list .members-am-item{cursor:-webkit-grab;cursor:grab}.members-am-sidebar-list .members-am-item:active{cursor:-webkit-grabbing;cursor:grabbing}.members-am-sort-placeholder{-webkit-box-sizing:border-box;box-sizing:border-box;min-height:36px;margin:2px 0;background:color-mix(in srgb,var(--members-am-accent-use) 8%,transparent);border:1px dashed var(--members-am-accent-use);border-radius:2px}.members-am-item.is-hidden{opacity:.18}.members-am-item.is-no-cap{opacity:.35}.members-am-item.is-no-cap.is-hidden{opacity:.15}.members-am-item.is-selected{border-left-color:var(--members-am-accent-use);background:color-mix(in srgb,var(--members-am-accent-use) 15%,transparent)}.members-am-item-main{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;min-width:0}.members-am-item-main .dashicons{font-size:18px;width:18px;height:18px}.members-am-item-label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.members-am-item-actions{display:none;gap:2px}.members-am-item:hover .members-am-item-actions{display:-webkit-box;display:-ms-flexbox;display:flex}.members-am-item-actions button{min-height:22px;padding:0 4px;line-height:20px;font-size:11px}.members-am-sep{text-align:center;opacity:.35;font-size:11px;padding:4px 0}.members-am-carousel-dots{text-align:center;margin-bottom:4px}.members-am-dot{width:8px;height:8px;border-radius:50%;border:0;margin:0 4px;padding:0;background:var(--members-am-chrome-border,#c3c4c7);cursor:pointer}.members-am-dot.is-active{background:var(--members-am-accent-use)}.members-am-carousel-status{text-align:center;color:var(--members-am-muted,#646970);font-size:12px;margin-top:0}.members-am-badge{font-size:9px;text-transform:uppercase;padding:1px 4px;border-radius:2px;margin-right:4px;vertical-align:middle}.members-am-badge-new{background:var(--members-am-accent-use);color:var(--wp-components-color-accent-inverted,#fff)}.members-am-badge-edit{background:#dba617;color:var(--members-am-base,#1d2327)}.members-am-badge-nocap{background:var(--wp-components-color-gray-700,#8c8f94);color:var(--wp-components-color-accent-inverted,#fff)}.members-am-legend{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:16px;margin:0 0 8px;padding:0;font-size:12px;color:var(--members-am-muted,#646970)}.members-am-legend-item{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:4px}.members-am-edit-panel{margin-top:20px;padding:16px;border:1px solid var(--members-am-chrome-border,#c3c4c7);background:var(--wp-components-color-background,#fff);border-radius:4px}.members-am-edit-panel-header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:12px}.members-am-edit-panel-header h2{margin:0;font-size:16px}.members-am-edit-toolbar{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:12px;margin-bottom:12px}.members-am-edit-target-wrap select{margin-left:8px}.members-am-level-actions .button{margin-right:6px}.members-am-demote-wrap{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:6px}.members-am-demote-wrap .members-am-demote-select{min-width:200px;max-width:min(320px,100%)}.members-am-edit-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:16px}.members-am-edit-col label{display:block;font-weight:600;margin-bottom:4px}.members-am-icon-tabs{margin-bottom:8px}.members-am-icon-tabs .button{margin-right:4px;margin-bottom:4px}.members-am-icon-tabs .button.is-active{background:var(--members-am-accent-use);border-color:var(--members-am-accent-use);color:var(--wp-components-color-accent-inverted,#fff)}.members-am-icon-grid{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:4px;max-height:160px;overflow-y:auto;border:1px solid var(--wp-components-color-gray-200,#dcdcde);padding:8px;background:var(--members-am-chrome-bg,#f6f7f7);margin-bottom:8px}.members-am-icon-pick{width:36px;height:36px;padding:0;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;border:1px solid var(--members-am-chrome-border,#c3c4c7);background:var(--wp-components-color-background,#fff);cursor:pointer}.members-am-bulk-visibility-hint{margin:0 0 8px;font-size:12px;color:var(--members-am-fg-muted-on-base,#646970)}.members-am-vis-role-filter-wrap{margin-bottom:8px}.members-am-vis-row.members-am-vis-filter-hidden{display:none}.members-am-vis-row{display:block;margin-bottom:6px;font-weight:normal}.members-am-reset-dropdown{position:absolute;z-index:100000;background:var(--wp-components-color-background,#fff);border:1px solid var(--members-am-chrome-border,#c3c4c7);border-radius:6px;padding:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-shadow:0 4px 12px rgba(0,0,0,0.15);box-shadow:0 4px 12px rgba(0,0,0,0.15);min-width:280px;top:100%;left:0;margin-top:4px;overflow:hidden}.members-am-reset-title{padding:10px 14px;font-weight:600;font-size:13px;border-bottom:1px solid var(--wp-components-color-gray-200,#f0f0f0);color:var(--wp-components-color-foreground,#1d2327)}.members-am-reset-option{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;gap:10px;padding:12px 14px;border:0;background:0;cursor:pointer;text-align:left;width:100%;border-bottom:1px solid var(--wp-components-color-gray-200,#f0f0f0);-webkit-transition:background .15s;transition:background .15s}.members-am-reset-option:last-child{border-bottom:0}.members-am-reset-option:hover{background:var(--members-am-chrome-bg,#f6f7f7)}.members-am-reset-option .dashicons{margin-top:2px;color:var(--members-am-muted,#646970)}.members-am-reset-option-text{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:2px}.members-am-reset-option-text strong{font-size:13px;color:var(--wp-components-color-foreground,#1d2327)}.members-am-reset-option-text small{font-size:12px;color:var(--members-am-muted,#646970)}.members-am-reset-danger:hover{background:#fcf0f1}.members-am-reset-danger .dashicons{color:#d63638}.members-am-reset-danger:hover strong{color:#d63638}@media screen and (max-width:782px){.members-am-columns{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}}.members-am-user-suggestions{position:absolute;z-index:100;background:var(--wp-components-color-background,#fff);border:1px solid var(--members-am-chrome-border,#c3c4c7);border-radius:4px;max-height:200px;overflow-y:auto;width:100%;-webkit-box-shadow:0 2px 6px rgba(0,0,0,0.15);box-shadow:0 2px 6px rgba(0,0,0,0.15);top:100%;left:0}.members-am-user-suggestion{padding:8px 12px;cursor:pointer;font-size:13px;border-bottom:1px solid var(--wp-components-color-gray-200,#f0f0f0)}.members-am-user-suggestion:hover{background:color-mix(in srgb,var(--members-am-accent-use) 8%,var(--wp-components-color-background,#fff))}.members-am-user-suggestion:last-child{border-bottom:0}#members-am-import-file.members-am-import-file-hidden{display:none}.members-am-user-search-wrap{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px}#members-am-user-search.members-am-user-search-input{width:168px;max-width:100%}.members-am-legend-visibility-icon{font-size:14px;width:14px;height:14px;vertical-align:middle}.members-am-legend-nocap-badge{display:inline-block;background:#8c8f94;color:#fff;font-size:9px;padding:1px 4px;border-radius:2px;vertical-align:middle}#members-am-icon-preview.members-am-icon-preview{display:none;width:32px;height:32px;-o-object-fit:contain;object-fit:contain;margin-bottom:6px;border:1px solid #ddd;border-radius:3px;padding:2px;background:#f0f0f1}.members-am-icons .members-am-icon-upload-desc{margin-top:4px}#adminmenu .members-am-menu-badge{display:inline-block;color:#fff;font-size:9px;padding:1px 5px;border-radius:2px;line-height:1.4;vertical-align:middle}
\ No newline at end of file
+#members-cp h2.hndle,#members-cp-side h2.hndle{border-bottom:none !important;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}#members-cp h2.hndle:before,#members-cp-side h2.hndle:before{content:url("data:image/svg+xml,%3Csvg width='15px' aria-hidden='true' focusable='false' data-prefix='fas' data-icon='users-cog' class='svg-inline--fa fa-users-cog fa-w-20' role='img' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 640 512'%3E%3Cpath fill='currentColor' d='M610.5 341.3c2.6-14.1 2.6-28.5 0-42.6l25.8-14.9c3-1.7 4.3-5.2 3.3-8.5-6.7-21.6-18.2-41.2-33.2-57.4-2.3-2.5-6-3.1-9-1.4l-25.8 14.9c-10.9-9.3-23.4-16.5-36.9-21.3v-29.8c0-3.4-2.4-6.4-5.7-7.1-22.3-5-45-4.8-66.2 0-3.3.7-5.7 3.7-5.7 7.1v29.8c-13.5 4.8-26 12-36.9 21.3l-25.8-14.9c-2.9-1.7-6.7-1.1-9 1.4-15 16.2-26.5 35.8-33.2 57.4-1 3.3.4 6.8 3.3 8.5l25.8 14.9c-2.6 14.1-2.6 28.5 0 42.6l-25.8 14.9c-3 1.7-4.3 5.2-3.3 8.5 6.7 21.6 18.2 41.1 33.2 57.4 2.3 2.5 6 3.1 9 1.4l25.8-14.9c10.9 9.3 23.4 16.5 36.9 21.3v29.8c0 3.4 2.4 6.4 5.7 7.1 22.3 5 45 4.8 66.2 0 3.3-.7 5.7-3.7 5.7-7.1v-29.8c13.5-4.8 26-12 36.9-21.3l25.8 14.9c2.9 1.7 6.7 1.1 9-1.4 15-16.2 26.5-35.8 33.2-57.4 1-3.3-.4-6.8-3.3-8.5l-25.8-14.9zM496 368.5c-26.8 0-48.5-21.8-48.5-48.5s21.8-48.5 48.5-48.5 48.5 21.8 48.5 48.5-21.7 48.5-48.5 48.5zM96 224c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm224 32c1.9 0 3.7-.5 5.6-.6 8.3-21.7 20.5-42.1 36.3-59.2 7.4-8 17.9-12.6 28.9-12.6 6.9 0 13.7 1.8 19.6 5.3l7.9 4.6c.8-.5 1.6-.9 2.4-1.4 7-14.6 11.2-30.8 11.2-48 0-61.9-50.1-112-112-112S208 82.1 208 144c0 61.9 50.1 112 112 112zm105.2 194.5c-2.3-1.2-4.6-2.6-6.8-3.9-8.2 4.8-15.3 9.8-27.5 9.8-10.9 0-21.4-4.6-28.9-12.6-18.3-19.8-32.3-43.9-40.2-69.6-10.7-34.5 24.9-49.7 25.8-50.3-.1-2.6-.1-5.2 0-7.8l-7.9-4.6c-3.8-2.2-7-5-9.8-8.1-3.3.2-6.5.6-9.8.6-24.6 0-47.6-6-68.5-16h-8.3C179.6 288 128 339.6 128 403.2V432c0 26.5 21.5 48 48 48h255.4c-3.7-6-6.2-12.8-6.2-20.3v-9.2zM173.1 274.6C161.5 263.1 145.6 256 128 256H64c-35.3 0-64 28.7-64 64v32c0 17.7 14.3 32 32 32h65.9c6.3-47.4 34.9-87.3 75.2-109.4z'%3E%3C/path%3E%3C/svg%3E");margin-right:5px}#members-cp-side .postbox-header{border-bottom:none !important}#members-cp-side .handle-actions .handle-order-higher,#members-cp-side .handle-actions .handle-order-lower{display:none}#members-cp-side .handle-actions .handlediv{position:absolute;right:5px}.members-upgrade-header{text-align:center;padding:5px}.members-upgrade-header a{color:#f59431}.memberpress-paid-memberships{background-color:#f5f5f5;padding:50px 10px;text-align:center}.memberpress-paid-memberships a{background-color:#0e4598;display:inline-block;padding:10px 20px;border-radius:300px;color:#fff;text-decoration:none;margin-top:20px}#members-cp-side .members-tabs{position:relative}#members-cp-side .members-tab-nav{background-color:transparent;margin-bottom:20px;border-right:none !important}#members-cp-side .members-tab-nav .members-tab-title{width:33.333%;height:50px;border-right:none !important}#members-cp-side .members-tab-nav .members-tab-title a{border:0}#members-cp-side .members-tab-content h3{font-weight:bold;font-size:15px;margin-top:0;color:#000;margin-bottom:10px}#members-cp-side .members-tab-content .memberpress-paid-memberships{text-align:left;padding:20px}#members-cp-side .members-tab-content .memberpress-paid-memberships a{display:block;text-align:center}#members-cp-side .members-tabs .members-tab-nav li a,#members-cp-side .members-tabs .members-tab-nav li[aria-selected="false"] a i{color:#555}#members-cp-side .members-tabs .members-tab-nav li a svg,#members-cp-side .members-tabs .members-tab-nav li[aria-selected="false"] a svg{fill:#555}#members-cp-side .members-tabs .members-tab-nav li[aria-selected="true"] a{background-color:transparent;border-bottom:2px solid #3582ae}#members-cp-side .members-tabs .members-tab-nav li[aria-selected="true"] a i{color:#3582ae}#members-cp-side .members-tabs .members-tab-nav li[aria-selected="true"] a svg{fill:#3582ae}.members-tab-title svg,.members-tab-title[aria-selected="false"] svg{fill:#0073aa}.members-tab-title[aria-selected="true"] svg{fill:#555}#wpcontent #members-admin-header{margin-left:-20px;padding:0;padding-left:22px;background-color:#f9f9f9;background-repeat:repeat;background-size:1200px 75px;min-height:36px;position:relative}#wpcontent #members-admin-header img.members-logo{height:90px}.members-upgrade-header #close-members-upgrade-header{position:absolute;right:20px;top:3px}.members-upgrade-header #close-members-upgrade-header:hover{cursor:pointer}.memberpress-welcome-panel.welcome-panel{margin-top:0;padding:40px 20px;background:#fff}.memberpress-welcome-panel.welcome-panel:before{background:0}.memberpress-welcome-panel.welcome-panel .about-description{margin:20px 0}.memberpress-welcome-panel.welcome-panel-content{margin:0}.memberpress-welcome-panel.welcome-panel-content .mp-logo-wrap>a{display:block}@media screen and (min-width:870px){.members_page_members-settings .members-short-p{max-width:612px;margin-left:auto;margin-right:auto}.members_page_members-settings .welcome-panel-content{text-align:center}}.members_page_members-settings .welcome-panel .button.button-hero{margin-left:auto;margin-right:auto}.members_page_members-settings .members-svg-wrap{display:inline-block;margin:0 auto 20px}@media screen and (max-width:870px){.members_page_members-settings .welcome-panel{padding:20px}.members_page_members-settings .members-svg-wrap{float:left;margin-right:28px}.admin_page_members-settings.rtl .members-svg-wrap{float:right;margin-right:0;margin-left:28px}}.members_page_members-settings .members-svg-link{display:table-cell;text-align:center;width:128px;height:128px;background:#363b3f;color:#fff;padding:24px 16px 16px;border-radius:50%;-webkit-box-sizing:border-box;box-sizing:border-box;border:4px solid #fff;-webkit-box-shadow:0 0 0 4px #363b3f;box-shadow:0 0 0 4px #363b3f}.members_page_members-settings .members-svg-link svg{max-width:84px;max-height:64px;width:auto;height:auto}.members-addons{display:grid;grid-template-columns:1fr 1fr;grid-row-gap:20px;grid-column-gap:20px}.members-addons .plugin-card{margin:0}.members-addons .plugin-card-top{width:100%}.members-addon{width:100%;position:relative;float:none;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.members-addon .desc{margin-bottom:80px}.addon-activate{text-align:center;border:1px solid #ddd;border-radius:3px;padding:5px 10px 10px;display:inline-block;width:100px;position:absolute;right:20px;bottom:20px}.activate-toggle:hover{cursor:pointer}.activate-toggle svg{max-width:20px;position:relative;top:5px}.activate-toggle svg{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.activate-toggle svg.active{-webkit-transform:rotate(0);transform:rotate(0)}.activate-toggle svg path{fill:#ccc}.activate-toggle svg.active path{fill:#8cbd5a}.activate-toggle.processing{cursor:not-allowed;pointer-events:none;opacity:.5}.activate-toggle .action-label{display:inline-block;width:50px;text-align:left}.mepr_dummy_txns{-webkit-filter:blur(3px);filter:blur(3px);position:absolute;top:0;left:0;width:100%;z-index:5;pointer-events:none}.mepr_dummy_txns::after{background-color:rgba(0,0,0,.2);position:absolute;top:0;left:0;width:100%;height:100%;z-index:6}.mepr-upgrade-table{position:relative}.mepr-upgrade-table .mepr-upgrade{position:relative;top:100px;z-index:10;background:rgba(0,0,0,.2);width:100%;height:100%;max-width:600px;margin:0 auto;-webkit-box-shadow:0 0 30px #ccc;box-shadow:0 0 30px #ccc}.mepr-upgrade-content{background-color:#fff;padding:20px;text-align:center}.mepr-upgrade-content h2{font-size:24px}.mepr-upgrade-content h4{font-size:18px}.mepr-upgrade-content .features{display:grid;grid-template-columns:1fr 1fr;grid-column-gap:30px;grid-row-gap:10px;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;text-align:left;padding:10px}.features li:before{content:"\f147";font-family:dashicons;color:green;font-size:20px;position:relative;top:4px;margin-right:10px}.mepr-upgrade-cta{text-align:center;background-color:#f2f2f2;padding:20px}.mepr-upgrade-cta .mepr-cta-button{display:block;max-width:300px;margin:0 auto 20px;background-color:#fd9c27;color:#fff;padding:15px;font-size:18px;font-weight:bold;text-decoration:none;border-radius:300px}.members-plugin-card.plugin-card:nth-child(even){margin-right:inherit}.members-plugin-card.plugin-card:nth-child(odd){clear:none;margin-left:inherit}.members-plugin-card.plugin-card .plugin-card-top{min-height:0;padding:30px 20px}.members-plugin-card.plugin-card .plugin-icon{top:30px}.members-plugin-card.plugin-card .plugin-card-bottom .column-status{font-weight:bold}.members-plugin-card.plugin-card .plugin-card-bottom .column-status .active{color:#8cbd5a}.members-plugin-card.plugin-card .plugin-card-bottom .column-status .inactive{color:red}.members-plugin-card.plugin-card .plugin-icon{width:64px;height:auto}.plugin-icon-small{width:32px;height:auto}.members-plugin-card.plugin-card .name,.members-plugin-card.plugin-card .desc{margin-right:0;margin-left:84px}.members-addons .plugin-card .name,.members-addons .plugin-card .desc p{margin-right:0}@media screen and (max-width:1100px){.members-addons{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}}@media screen and (max-width:600px){.members_page_members-settings .members-svg-link{width:64px;height:64px}.members_page_members-settings .members-svg-link svg{position:absolute;top:14px;left:15px;max-width:30px;max-height:30px}.members_page_members-settings .plugin-card-members-edd-integration .members-svg-link svg,.members_page_members-settings .plugin-card-members-acf-integration .members-svg-link svg,.members_page_members-settings .plugin-card-members-givewp-integration .members-svg-link svg,.members_page_members-settings .plugin-card-members-meta-box-integration .members-svg-link svg,.members_page_members-settings .plugin-card-members-woocommerce-integration .members-svg-link svg{top:10px;left:8px;max-width:40px;max-height:40px}.members_page_members-settings .plugin-card-members-block-permissions .members-svg-link svg,.members_page_members-settings .plugin-card-members-role-hierarchy .members-svg-link svg{left:14px}.members-addons .plugin-card .desc>p,.members-addons .plugin-card .name{margin-left:84px}}.memberpress-about .welcome-panel-column-container{display:-webkit-box;display:-ms-flexbox;display:flex}.memberpress-about .mp-logo{max-width:256px;margin:50px}.members-about-addons{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-column-gap:20px}.members-about-addons .members-plugin-card{margin:0;width:100%}.members-about-addons .members-plugin-card .name h3 a{text-decoration:none}.members-about-addons .members-plugin-card .plugin-card-bottom{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}@media only screen and (max-width:1099px){.members-about-addons{grid-template-columns:1fr;grid-row-gap:20px}}@media screen and (min-width:1100px) and (max-width:1600px){.members-about-addons .members-plugin-card{float:none;width:auto;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.members-plugin-card.plugin-card .desc{margin-left:0;margin-top:50px}.members-plugin-card.plugin-card .desc p{margin-left:0;margin-right:0}.members-plugin-card.plugin-card .plugin-card-bottom .column-status{float:none}.members-plugin-card.plugin-card .plugin-card-bottom .column-updated{float:none;width:auto}}@media screen and (max-width:1200px){.welcome-panel .welcome-panel-column-container{-webkit-box-orient:vertical;-webkit-box-direction:reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse;gap:0;padding:0}.memberpress-about .mp-logo{margin:0 0 20px}}.members-plugin-card.plugin-card .desc p{margin-left:0;margin-right:0}@media only screen and (min-width:783px){.members_page_roles .column-users,.members_page_roles .column-granted_caps,.members_page_roles .column-denied_caps{width:100px;text-align:center}}.members-title-div #titlewrap input{padding:0 8px;font-size:1.7em;line-height:normal;height:1.7em;width:100%;outline:0;margin:0 0 3px;background-color:#fff}.members-title-div input[name="role"]{font-size:13px;height:22px;margin:0;width:16em}#tabcapsdiv{margin-top:1em}#tabcapsdiv>.hndle{padding:10px;border-bottom:1px solid #eee}#tabcapsdiv .inside,#members-cp .inside{margin:0;padding:0}.members-cap-tabs,.members-tabs{overflow:hidden;background:#fff;background:-webkit-gradient(linear,left top,right top,from(#fafafa),color-stop(20%,#fafafa),color-stop(20%,#fff),to(#fff));background:linear-gradient(90deg,#fafafa 0,#fafafa 20%,#fff 20%,#fff 100%)}@media only screen and (max-width:782px){.members-cap-tabs,.members-tabs{background:linear-gradient(90deg,#fafafa 0,#fafafa 48px,#fff 48px,#fff 100%)}}.members-cap-tabs .members-tab-nav,.members-tabs .members-tab-nav{position:relative;float:left;list-style:none;width:20%;line-height:1em;margin:0 0 -1px 0;padding:0;background-color:#fafafa;border-right:1px solid #eee;-webkit-box-sizing:border-box;box-sizing:border-box}.members-cap-tabs .members-tab-nav li,.members-tabs .members-tab-nav li{display:block;position:relative;margin:0;padding:0;line-height:20px}.members-cap-tabs .members-tab-nav li a,.members-tabs .members-tab-nav li a{display:block;margin:0;padding:10px;line-height:20px !important;text-decoration:none;border-bottom:1px solid #eee;-webkit-box-shadow:none;box-shadow:none}.members-cap-tabs .members-tab-nav li a .dashicons,.members-tabs .members-tab-nav li a .dashicons{line-height:20px;margin-right:3px}.members-cap-tabs .members-tab-nav li[aria-selected="true"] a,.members-tabs .members-tab-nav li[aria-selected="true"] a{position:relative;font-weight:bold;color:#555;background-color:#e0e0e0}@media only screen and (max-width:782px){.members-cap-tabs .members-tab-nav,.members-tabs .members-tab-nav{width:48px}.members-cap-tabs .members-tab-nav li a .dashicons,.members-tabs .members-tab-nav li a .dashicons{width:24px;height:24px;font-size:24px;line-height:24px}.members-tab-nav li .dashicons::before,.members-tab-nav li .dashicons::before{width:24px;height:24px}.members-tab-nav li .label{overflow:hidden;position:absolute;top:-1000em;left:-1000em;width:1px;height:1px}}.members-cap-tabs .members-tab-wrap,.members-tabs .members-tab-wrap{float:left;width:80%;margin-left:-1px}@media only screen and (max-width:782px){.members-cap-tabs .members-tab-wrap,.members-tabs .members-tab-wrap{width:calc(100% - 48px)}}#members-cp .members-tab-content{padding:10px;border-left:1px solid #e5e5e5}.members-roles-select th,.members-roles-select td{width:190px;overflow:hidden}.members-roles-select .check-all-th{text-align:center}.members-roles-select .check-all-th label{padding-left:5px}@media only screen and (min-width:850px){#side-sortables .members-tabs{background:#fff}#side-sortables .members-tabs .members-tab-wrap{width:100%}#side-sortables .members-tabs .members-tab-nav{display:table;width:100%}#side-sortables .members-tabs .members-tab-nav li{display:table-cell;text-align:center;border-right:1px solid #eee}#side-sortables .members-tabs .members-tab-nav li:last-of-type{border-right:0}#side-sortables .members-tabs .members-tab-nav li a{padding:10px 0}#side-sortables .members-tabs .members-tab-nav .dashicons{width:24px;height:24px;font-size:24px;line-height:24px}#side-sortables .members-tabs .members-tab-nav .dashicons::before{width:24px;height:24px}#side-sortables .members-tabs .members-tab-nav .label{overflow:hidden;position:absolute;top:-1000em;left:-1000em;width:1px;height:1px}}.members-tabs .members-tabs-label{display:block !important;font-weight:bold;display:inline-block;margin-bottom:4px}.members-tabs .butterbean-control-checkbox .members-tabs-label{display:inline !important}.members-tabs .members-tabs-description{display:block;font-style:italic;margin-top:4px}.members-tabs .members-tabs-label+.members-tabs-description{margin-top:0;margin-bottom:4px}#tabcapsdiv table{border-right:0;border-top:0;border-bottom:0}#tabcapsdiv table td,#tabcapsdiv table th{padding:10px;padding-bottom:10px;border-bottom:1px solid #eee;font-size:13px;line-height:20px}#tabcapsdiv table td{padding:9px}#tabcapsdiv tbody tr:last-of-type td{border-bottom:0}#tabcapsdiv tfoot th{border-color:#eee}@media only screen and (max-width:782px){#tabcapsdiv table td,#tabcapsdiv table th{line-height:24px}}.members-roles-select .column-grant,.members-roles-select .column-deny{width:70px !important;text-align:left;display:table-cell !important;clear:none !important}.members-roles-select thead th,.members-roles-select tfoot th{padding:9px !important}.members-roles-select .column-grant input,.members-roles-select .column-deny input{margin:0 5px 0 0;vertical-align:middle}.members-roles-select tbody tr:nth-child(even){background:#f2f2f2}.members-cap-tabs button{display:inline;margin:-4px;line-height:inherit;padding:4px 8px;border:1px solid transparent;background:transparent;border-radius:0;outline:0;-webkit-transition:all .25s ease-out;transition:all .25s ease-out}.members-cap-tabs button:hover,.members-cap-tabs button:focus{border-color:#eee;background:#fafafa;cursor:pointer}.members-cap-tabs button:active{color:#0073aa;border-color:#0073aa}.members-cap-tabs button+.dashicons{display:none;margin-top:1px;margin-bottom:-1px;line-height:inherit}.members-cap-tabs button:hover+.dashicons,.members-cap-tabs button:focus+.dashicons{display:inline-block}.members-tab-content .members-highlight{background-color:rgba(0,115,170,0.05)}.members-tab-content tbody{-webkit-transition:all 2s ease-in-out;transition:all 2s ease-in-out}.members-cp-role-list-wrap{overflow:auto;min-height:42px;max-height:200px;padding:0 .9em;border:solid 1px #dfdfdf;background-color:#fdfdfd}#wpbody-content{padding-bottom:200px}.members-footer-promotion{text-align:center;font-weight:400;font-size:13px;line-height:16px;color:#787c82;padding:20px 0 30px 0;margin-bottom:20px}.members-footer-promotion p{font-weight:600}.members-footer-promotion-links,.members-footer-promotion-social{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.members-footer-promotion-links{margin:9px 0 0}.members-footer-promotion-links span{color:#c3c4c7;padding:0 7px}.members-footer-promotion-social{margin:10px 0 0 0;gap:10px}.members-footer-promotion-social li{margin-bottom:0}.members-footer-promotion-social a{display:block;height:16px}.members_page_members-settings.rtl{.addon-activate{left:20px;right:unset}.members-addons .plugin-card{.name,.desc p{margin-left:0;margin-right:148px}}}.button.button-warning{background:#dc3232;border-color:#dc3232;color:#fff}.button.button-warning:hover,.button.button-warning:focus{background:#c92424;border-color:#c92424;color:#fff}.members-reset-spinner{float:none;margin-top:0;vertical-align:middle}.members-admin-menus-wrap{max-width:1400px;--members-am-accent-use:var(--members-am-accent,var(--wp-admin-theme-color,#2271b1));--members-am-surface-use:var(--members-am-surface,color-mix(in srgb,var(--members-am-base,#1d2327) 88%,#fff 12%));--members-am-border-on-base-fallback:color-mix(in srgb,var(--members-am-base,#1d2327) 62%,#fff 38%);--members-am-chrome-bg:var(--wp-components-color-gray-100,#f6f7f7);--members-am-chrome-border:var(--wp-components-color-gray-400,#c3c4c7);--members-am-muted:var(--wp-components-color-gray-600,#646970)}.members-am-notices{margin:0 0 12px}.members-am-notices .notice{margin:0 0 8px}.members-admin-menus-toolbar{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;gap:0;margin-bottom:16px;border:1px solid var(--members-am-chrome-border,#c3c4c7);border-radius:2px;background:var(--wp-components-color-background,#fff);overflow:visible}.members-am-toolbar-row{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px}.members-am-toolbar-row--primary{padding:10px 12px;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;row-gap:10px}.members-am-toolbar-group{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px}.members-am-toolbar-group--document{position:relative;z-index:5;padding-right:12px;border-right:1px solid var(--members-am-chrome-border,#c3c4c7)}.members-am-toolbar-row--primary .members-am-toolbar-primary-user{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px;margin-left:8px;-webkit-box-flex:0;-ms-flex:0 1 auto;flex:0 1 auto;min-width:0}.members-am-toolbar-row--primary .members-am-toolbar-primary-user #members-am-user-search.members-am-user-search-input{width:168px;max-width:100%;min-width:0}.members-am-toolbar-group--view{margin-left:auto;-ms-flex-wrap:nowrap;flex-wrap:nowrap}.members-am-toolbar-extra{background:var(--members-am-chrome-bg,#f6f7f7);border-top:1px solid var(--members-am-chrome-border,#c3c4c7);padding:10px 12px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:10px}.members-am-toolbar-extra[hidden]{display:none !important}.members-am-toolbar-row--extra-tools{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-wrap:wrap;flex-wrap:wrap;row-gap:10px}.members-am-toolbar-row--extra-tools .members-am-copy-wrap{margin-left:4px;padding-left:12px;border-left:1px solid var(--members-am-chrome-border,#c3c4c7)}.members-am-toolbar-row--extra-tools .members-am-toolbar-group--io{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;margin-left:8px;padding-left:12px;border-left:1px solid var(--members-am-chrome-border,#c3c4c7)}.members-am-more-tools,.members-am-more-tools:hover,.members-am-more-tools:focus,.members-am-more-tools:focus-visible,.members-am-more-tools:active{text-decoration:none !important}.members-am-more-tools{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:4px;white-space:nowrap;padding:2px 2px 2px 4px;vertical-align:middle;line-height:1.4}.members-am-more-tools .members-am-more-tools-text,.members-am-more-tools:hover .members-am-more-tools-text,.members-am-more-tools:focus .members-am-more-tools-text,.members-am-more-tools:focus-visible .members-am-more-tools-text,.members-am-more-tools:active .members-am-more-tools-text,.members-am-more-tools .members-am-more-tools-chevron,.members-am-more-tools:hover .members-am-more-tools-chevron,.members-am-more-tools:focus .members-am-more-tools-chevron,.members-am-more-tools:focus-visible .members-am-more-tools-chevron,.members-am-more-tools:active .members-am-more-tools-chevron,.members-am-more-tools .members-am-more-tools-chevron-svg,.members-am-more-tools:hover .members-am-more-tools-chevron-svg,.members-am-more-tools:focus .members-am-more-tools-chevron-svg,.members-am-more-tools:focus-visible .members-am-more-tools-chevron-svg,.members-am-more-tools:active .members-am-more-tools-chevron-svg{text-decoration:none !important}.members-am-more-tools .members-am-more-tools-text{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;line-height:1.4}.members-am-more-tools .members-am-more-tools-chevron{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-ms-flex-negative:0;flex-shrink:0;line-height:0;opacity:.88}.members-am-more-tools .members-am-more-tools-chevron-svg{display:block;overflow:visible;-webkit-transition:-webkit-transform .15s ease;transition:-webkit-transform .15s ease;transition:transform .15s ease;transition:transform .15s ease,-webkit-transform .15s ease;-webkit-transform-origin:50% 50%;transform-origin:50% 50%;shape-rendering:geometricPrecision}.members-am-more-tools .members-am-more-tools-chevron-svg polygon{stroke:none}.members-am-more-tools.is-open .members-am-more-tools-chevron-svg{-webkit-transform:rotate(180deg);transform:rotate(180deg)}@media(prefers-reduced-motion:reduce){.members-am-more-tools .members-am-more-tools-chevron-svg{-webkit-transition:none;transition:none}}@media screen and (max-width:782px){.members-am-toolbar-group--document{border-right:0;padding-right:0;border-bottom:1px solid var(--members-am-chrome-border,#c3c4c7);padding-bottom:10px;width:100%}.members-am-toolbar-group--view{margin-left:0;width:100%;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.members-am-toolbar-row--primary .members-am-toolbar-primary-user{margin-left:0;padding-left:0;border-left:0;padding-top:8px;border-top:1px solid var(--members-am-chrome-border,#c3c4c7);width:100%;max-width:none}.members-am-toolbar-row--primary .members-am-toolbar-primary-user #members-am-user-search.members-am-user-search-input{width:100%;max-width:100%}.members-am-toolbar-row--extra-tools .members-am-admin-editable{width:100%}.members-am-toolbar-row--extra-tools .members-am-copy-wrap{margin-left:0;padding-left:0;border-left:0;padding-top:8px;border-top:1px solid var(--members-am-chrome-border,#c3c4c7);width:100%}.members-am-toolbar-row--extra-tools .members-am-toolbar-group--io{margin-left:0;padding-left:0;border-left:0;padding-top:8px;border-top:1px solid var(--members-am-chrome-border,#c3c4c7);width:100%}}.members-am-toolbar-loading{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;margin-left:4px;color:var(--members-am-muted,#646970);font-size:13px;line-height:1}.members-am-toolbar-loading .spinner{float:none;margin:0}.members-am-toolbar-loading[hidden]{display:none !important}.members-am-copy-wrap label{margin-right:8px}.members-am-chips{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:8px;margin-bottom:12px}.members-am-chip{border-radius:999px;padding:4px 12px;border:1px solid var(--members-am-chrome-border,#c3c4c7);background:var(--members-am-chrome-bg,#f6f7f7);cursor:pointer}.members-am-chip.is-active{background:var(--members-am-accent-use);border-color:var(--members-am-accent-use);color:var(--wp-components-color-accent-inverted,#fff)}.members-am-carousel-wrap{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;gap:8px;margin-bottom:8px}.members-am-carousel-prev,.members-am-carousel-next{-ms-flex-item-align:center;align-self:center;width:36px;height:36px;border-radius:50%;border:1px solid var(--members-am-chrome-border,#c3c4c7);background:var(--wp-components-color-background,#fff);cursor:pointer}.members-am-columns{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-ms-flex:1;flex:1;gap:12px;min-height:320px;overflow:hidden}.members-am-column{-webkit-box-flex:1;-ms-flex:1;flex:1;min-width:0;background:var(--members-am-base,#1d2327);border-radius:4px;color:var(--members-am-fg-on-base,#f0f0f1);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.members-am-user-column{border:2px dashed var(--wp-components-color-gray-700,#8c8f94)}.members-am-sidebar-head{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:8px 10px;background:var(--members-am-surface-use);border-radius:4px 4px 0 0;font-weight:600;font-size:12px;text-transform:uppercase;letter-spacing:.04em;color:var(--members-am-fg-on-surface,var(--members-am-fg-on-base,#f0f0f1))}.members-am-col-filter{padding:6px 8px 8px;border-bottom:1px solid var(--members-am-border-on-base,var(--members-am-border-on-base-fallback));-ms-flex-negative:0;flex-shrink:0}.members-am-col-filter-input{width:100%;max-width:100%;-webkit-box-sizing:border-box;box-sizing:border-box;font-size:12px;line-height:1.4;padding:4px 8px;border-radius:2px;border:1px solid var(--members-am-border-on-base,var(--members-am-border-on-base-fallback));background:var(--members-am-base,#1d2327);color:var(--members-am-fg-on-base,#f0f0f1)}.members-am-col-filter-input::-webkit-input-placeholder{color:var(--members-am-fg-muted-on-base,var(--wp-components-color-gray-700,#8c8f94));opacity:1}.members-am-col-filter-input::-moz-placeholder{color:var(--members-am-fg-muted-on-base,var(--wp-components-color-gray-700,#8c8f94));opacity:1}.members-am-col-filter-input:-ms-input-placeholder{color:var(--members-am-fg-muted-on-base,var(--wp-components-color-gray-700,#8c8f94));opacity:1}.members-am-col-filter-input::-ms-input-placeholder{color:var(--members-am-fg-muted-on-base,var(--wp-components-color-gray-700,#8c8f94));opacity:1}.members-am-col-filter-input::placeholder{color:var(--members-am-fg-muted-on-base,var(--wp-components-color-gray-700,#8c8f94));opacity:1}.members-am-col-filter-input:focus{border-color:var(--members-am-accent-use);outline:1px solid transparent;-webkit-box-shadow:0 0 0 var(--wp-admin-border-width-focus,1px) var(--members-am-accent-use);box-shadow:0 0 0 var(--wp-admin-border-width-focus,1px) var(--members-am-accent-use)}.members-am-col-bulk{padding:0 8px 8px;border-bottom:1px solid var(--members-am-border-on-base,var(--members-am-border-on-base-fallback));-ms-flex-negative:0;flex-shrink:0}.members-am-col-bulk-toolbar,.members-am-col-collapse-toolbar{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:6px;margin-bottom:6px;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.members-am-col-bulk-toolbar .button.button-small,.members-am-col-collapse-toolbar .button.button-small{font-size:11px;min-height:26px;line-height:24px;padding:0 8px;background:var(--members-am-surface-use);border-color:var(--members-am-border-on-surface,var(--members-am-border-on-base,var(--members-am-border-on-base-fallback)));color:var(--members-am-fg-on-surface,var(--members-am-fg-on-base,#f0f0f1))}.members-am-col-bulk-toolbar .button.button-small:hover,.members-am-col-collapse-toolbar .button.button-small:hover{background:color-mix(in srgb,var(--members-am-surface-use) 85%,#fff 15%);border-color:var(--wp-components-color-gray-700,#8c8f94);color:var(--members-am-fg-on-surface,var(--members-am-fg-on-base,#f0f0f1))}.members-am-item-lead{-ms-flex-negative:0;flex-shrink:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:22px;padding:2px 0 0}.members-am-collapse-spacer{display:block;width:20px;height:20px;-ms-flex-negative:0;flex-shrink:0}.members-am-collapse-toggle{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:22px;height:22px;margin:0;padding:0;border:0;background:transparent;color:var(--members-am-fg-muted-on-base,var(--members-am-chrome-border,#c3c4c7));border-radius:2px;cursor:pointer;-ms-flex-negative:0;flex-shrink:0}.members-am-collapse-toggle:hover,.members-am-collapse-toggle:focus{color:var(--members-am-fg-on-base,#f0f0f1);background:color-mix(in srgb,var(--members-am-fg-on-base,#f0f0f1) 12%,transparent);outline:0}.members-am-collapse-toggle .dashicons{font-size:18px;width:18px;height:18px}.members-am-item-cb-wrap{-ms-flex-negative:0;flex-shrink:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;padding:2px 4px 0 0}.members-am-item-cb{margin:0;width:16px;height:16px;-ms-flex-negative:0;flex-shrink:0}.members-am-bulk-select{width:100%;max-width:100%;-webkit-box-sizing:border-box;box-sizing:border-box;font-size:12px;line-height:1.4;padding:4px 8px;border-radius:2px;border:1px solid var(--members-am-border-on-base,var(--members-am-border-on-base-fallback));background:var(--members-am-base,#1d2327);color:var(--members-am-fg-on-base,#f0f0f1)}.members-am-bulk-select:focus{border-color:var(--members-am-accent-use);outline:1px solid transparent;-webkit-box-shadow:0 0 0 var(--wp-admin-border-width-focus,1px) var(--members-am-accent-use);box-shadow:0 0 0 var(--wp-admin-border-width-focus,1px) var(--members-am-accent-use)}.members-am-item.members-am-filter-hidden,.members-am-sep.members-am-filter-hidden,.members-am-item.members-am-collapse-hidden{display:none !important}.members-am-col-move button{margin-left:4px;padding:0 6px;min-height:24px;line-height:22px;font-size:11px}.members-am-sidebar-list{padding:6px 0 12px;overflow-y:auto;max-height:480px}.members-am-item{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;gap:4px;padding:6px 10px 6px 6px;cursor:pointer;border-left:3px solid transparent;font-size:13px}.members-am-item.is-sub{padding-left:22px;font-size:12px;opacity:.95}.members-am-item.is-sub-deep{padding-left:36px}.members-am-sidebar-list .members-am-item{cursor:-webkit-grab;cursor:grab}.members-am-sidebar-list .members-am-item:active{cursor:-webkit-grabbing;cursor:grabbing}.members-am-sort-placeholder{-webkit-box-sizing:border-box;box-sizing:border-box;min-height:36px;margin:2px 0;background:color-mix(in srgb,var(--members-am-accent-use) 8%,transparent);border:1px dashed var(--members-am-accent-use);border-radius:2px}.members-am-item.is-hidden{opacity:.18}.members-am-item.is-no-cap{opacity:.35}.members-am-item.is-no-cap.is-hidden{opacity:.15}.members-am-item.is-selected{border-left-color:var(--members-am-accent-use);background:color-mix(in srgb,var(--members-am-accent-use) 15%,transparent)}.members-am-item-main{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;min-width:0}.members-am-item-main .dashicons{font-size:18px;width:18px;height:18px}.members-am-item-label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.members-am-item-actions{display:none;gap:2px}.members-am-item:hover .members-am-item-actions{display:-webkit-box;display:-ms-flexbox;display:flex}.members-am-item-actions button{min-height:22px;padding:0 4px;line-height:20px;font-size:11px}.members-am-sep{text-align:center;opacity:.35;font-size:11px;padding:4px 0}.members-am-carousel-dots{text-align:center;margin-bottom:4px}.members-am-dot{width:8px;height:8px;border-radius:50%;border:0;margin:0 4px;padding:0;background:var(--members-am-chrome-border,#c3c4c7);cursor:pointer}.members-am-dot.is-active{background:var(--members-am-accent-use)}.members-am-carousel-status{text-align:center;color:var(--members-am-muted,#646970);font-size:12px;margin-top:0}.members-am-badge{font-size:9px;text-transform:uppercase;padding:1px 4px;border-radius:2px;margin-right:4px;vertical-align:middle}.members-am-badge-new{background:var(--members-am-accent-use);color:var(--wp-components-color-accent-inverted,#fff)}.members-am-badge-edit{background:#dba617;color:var(--members-am-base,#1d2327)}.members-am-badge-nocap{background:var(--wp-components-color-gray-700,#8c8f94);color:var(--wp-components-color-accent-inverted,#fff)}.members-am-legend{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:16px;margin:0 0 8px;padding:0;font-size:12px;color:var(--members-am-muted,#646970)}.members-am-legend-item{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:4px}.members-am-edit-panel{margin-top:20px;padding:16px;border:1px solid var(--members-am-chrome-border,#c3c4c7);background:var(--wp-components-color-background,#fff);border-radius:4px}.members-am-edit-panel-header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:12px}.members-am-edit-panel-header h2{margin:0;font-size:16px}.members-am-edit-toolbar{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:12px;margin-bottom:12px}.members-am-edit-target-wrap select{margin-left:8px}.members-am-level-actions .button{margin-right:6px}.members-am-demote-wrap{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:6px}.members-am-demote-wrap .members-am-demote-select{min-width:200px;max-width:min(320px,100%)}.members-am-edit-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:16px}.members-am-edit-col label{display:block;font-weight:600;margin-bottom:4px}.members-am-icon-tabs{margin-bottom:8px}.members-am-icon-tabs .button{margin-right:4px;margin-bottom:4px}.members-am-icon-tabs .button.is-active{background:var(--members-am-accent-use);border-color:var(--members-am-accent-use);color:var(--wp-components-color-accent-inverted,#fff)}.members-am-icon-grid{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:4px;max-height:160px;overflow-y:auto;border:1px solid var(--wp-components-color-gray-200,#dcdcde);padding:8px;background:var(--members-am-chrome-bg,#f6f7f7);margin-bottom:8px}.members-am-icon-pick{width:36px;height:36px;padding:0;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;border:1px solid var(--members-am-chrome-border,#c3c4c7);background:var(--wp-components-color-background,#fff);cursor:pointer}.members-am-bulk-visibility-hint{margin:0 0 8px;font-size:12px;color:var(--members-am-fg-muted-on-base,#646970)}.members-am-vis-role-filter-wrap{margin-bottom:8px}.members-am-vis-row.members-am-vis-filter-hidden{display:none}.members-am-vis-row{display:block;margin-bottom:6px;font-weight:normal}.members-am-reset-dropdown{position:absolute;z-index:100000;background:var(--wp-components-color-background,#fff);border:1px solid var(--members-am-chrome-border,#c3c4c7);border-radius:6px;padding:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-shadow:0 4px 12px rgba(0,0,0,0.15);box-shadow:0 4px 12px rgba(0,0,0,0.15);min-width:280px;top:100%;left:0;margin-top:4px;overflow:hidden}.members-am-reset-title{padding:10px 14px;font-weight:600;font-size:13px;border-bottom:1px solid var(--wp-components-color-gray-200,#f0f0f0);color:var(--wp-components-color-foreground,#1d2327)}.members-am-reset-option{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;gap:10px;padding:12px 14px;border:0;background:0;cursor:pointer;text-align:left;width:100%;border-bottom:1px solid var(--wp-components-color-gray-200,#f0f0f0);-webkit-transition:background .15s;transition:background .15s}.members-am-reset-option:last-child{border-bottom:0}.members-am-reset-option:hover{background:var(--members-am-chrome-bg,#f6f7f7)}.members-am-reset-option .dashicons{margin-top:2px;color:var(--members-am-muted,#646970)}.members-am-reset-option-text{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:2px}.members-am-reset-option-text strong{font-size:13px;color:var(--wp-components-color-foreground,#1d2327)}.members-am-reset-option-text small{font-size:12px;color:var(--members-am-muted,#646970)}.members-am-reset-danger:hover{background:#fcf0f1}.members-am-reset-danger .dashicons{color:#d63638}.members-am-reset-danger:hover strong{color:#d63638}@media screen and (max-width:782px){.members-am-columns{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}}.members-am-user-suggestions{position:absolute;z-index:100;background:var(--wp-components-color-background,#fff);border:1px solid var(--members-am-chrome-border,#c3c4c7);border-radius:4px;max-height:200px;overflow-y:auto;width:100%;-webkit-box-shadow:0 2px 6px rgba(0,0,0,0.15);box-shadow:0 2px 6px rgba(0,0,0,0.15);top:100%;left:0}.members-am-user-suggestion{padding:8px 12px;cursor:pointer;font-size:13px;border-bottom:1px solid var(--wp-components-color-gray-200,#f0f0f0)}.members-am-user-suggestion:hover{background:color-mix(in srgb,var(--members-am-accent-use) 8%,var(--wp-components-color-background,#fff))}.members-am-user-suggestion:last-child{border-bottom:0}#members-am-import-file.members-am-import-file-hidden{display:none}.members-am-user-search-wrap{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px}#members-am-user-search.members-am-user-search-input{width:168px;max-width:100%}.members-am-legend-visibility-icon{font-size:14px;width:14px;height:14px;vertical-align:middle}.members-am-legend-nocap-badge{display:inline-block;background:#8c8f94;color:#fff;font-size:9px;padding:1px 4px;border-radius:2px;vertical-align:middle}#members-am-icon-preview.members-am-icon-preview{display:none;width:32px;height:32px;-o-object-fit:contain;object-fit:contain;margin-bottom:6px;border:1px solid #ddd;border-radius:3px;padding:2px;background:#f0f0f1}.members-am-icons .members-am-icon-upload-desc{margin-top:4px}#adminmenu .members-am-menu-badge{display:inline-block;color:#fff;font-size:9px;padding:1px 5px;border-radius:2px;line-height:1.4;vertical-align:middle}
\ No newline at end of file
From c529bcb5288664c51ef2648c32c06e1c3bf9337e Mon Sep 17 00:00:00 2001
From: Omar ElHawary
Date: Thu, 23 Apr 2026 18:44:53 +0200
Subject: [PATCH 39/73] style(admin): add icon for Members - Admin menus for
addon page
---
img/members-admin-menus.svg | 11 +++++++++++
1 file changed, 11 insertions(+)
create mode 100644 img/members-admin-menus.svg
diff --git a/img/members-admin-menus.svg b/img/members-admin-menus.svg
new file mode 100644
index 0000000..d166ef5
--- /dev/null
+++ b/img/members-admin-menus.svg
@@ -0,0 +1,11 @@
+
+Members – Admin Menus
+
+
+
+
+
+
+
+
+
\ No newline at end of file
From 1365fd813da52f984928a4682f79075ed334566b Mon Sep 17 00:00:00 2001
From: Omar ElHawary
Date: Fri, 24 Apr 2026 10:36:24 +0300
Subject: [PATCH 40/73] refactor(admin): enhance color management features in
admin menus
---
.../app/functions-admin.php | 5 +
addons/members-admin-menus/app/functions.php | 23 ++-
css/admin.css | 8 +
js/admin-menus.js | 163 +++++++++++++++++-
js/admin-menus.min.js | 2 +-
5 files changed, 192 insertions(+), 9 deletions(-)
diff --git a/addons/members-admin-menus/app/functions-admin.php b/addons/members-admin-menus/app/functions-admin.php
index 0206596..e562fec 100644
--- a/addons/members-admin-menus/app/functions-admin.php
+++ b/addons/members-admin-menus/app/functions-admin.php
@@ -378,6 +378,7 @@ function enqueue_admin_menus_assets() {
'filterRolesVisibilityLabel' => __( 'Filter roles in this list', 'members' ),
'moreToolsShowAria' => __( 'Show additional tools: copy between roles, import and export', 'members' ),
'moreToolsHideAria' => __( 'Hide additional tools', 'members' ),
+ 'colorsReadableNeedBg' => __( 'Choose a background color first.', 'members' ),
),
)
);
@@ -510,9 +511,13 @@ function render_admin_menus_page() {
diff --git a/addons/members-admin-menus/app/functions.php b/addons/members-admin-menus/app/functions.php
index 6775ad4..a30e660 100644
--- a/addons/members-admin-menus/app/functions.php
+++ b/addons/members-admin-menus/app/functions.php
@@ -1231,7 +1231,7 @@ function is_user_exempt( $user_id ) {
}
/**
- * Resolved config for a user: roles merged + user overrides + hidden intersect + merged order.
+ * Resolved config for a user: roles merged + user blocks (menu overrides deep-merged per slug onto role merge).
*
* @param int $user_id User ID.
* @return array
@@ -1259,14 +1259,31 @@ function get_resolved_config_for_user( $user_id ) {
$base = get_resolved_config_for_user_from_roles_only( $settings, $roles );
- // Phase 3: user-specific overrides replace role-merged blocks.
+ // Phase 3: user-specific blocks. Menu overrides are deep-merged per slug onto the role-merged map so an
+ // empty or partial users[ id ].overrides entry does not wipe role styling (colors, labels, etc.).
if ( ! empty( $settings['users'][ $uid ] ) && is_array( $settings['users'][ $uid ] ) ) {
$u = $settings['users'][ $uid ];
- foreach ( array( 'hidden', 'order', 'submenu_order', 'overrides', 'custom_items', 'capabilities' ) as $k ) {
+ foreach ( array( 'hidden', 'order', 'submenu_order', 'custom_items', 'capabilities' ) as $k ) {
if ( isset( $u[ $k ] ) ) {
$base[ $k ] = $u[ $k ];
}
}
+ if ( ! empty( $u['overrides'] ) && is_array( $u['overrides'] ) ) {
+ if ( ! isset( $base['overrides'] ) || ! is_array( $base['overrides'] ) ) {
+ $base['overrides'] = array();
+ }
+ foreach ( $u['overrides'] as $slug => $user_ov ) {
+ if ( ! is_string( $slug ) || '' === $slug || ! is_array( $user_ov ) ) {
+ continue;
+ }
+ $slug = sanitize_text_field( $slug );
+ $prev = isset( $base['overrides'][ $slug ] ) && is_array( $base['overrides'][ $slug ] ) ? $base['overrides'][ $slug ] : array();
+ $merged_row = array_merge( $prev, $user_ov );
+ if ( array() !== $merged_row ) {
+ $base['overrides'][ $slug ] = $merged_row;
+ }
+ }
+ }
}
$cache[ $uid ] = $base;
diff --git a/css/admin.css b/css/admin.css
index 6eeef4b..bc8d057 100644
--- a/css/admin.css
+++ b/css/admin.css
@@ -2304,6 +2304,14 @@ body.admin_page_members-about #wpbody-content {
margin-bottom: 4px;
}
+.members-am-colors-hint {
+ margin: 0 0 10px;
+}
+
+.members-am-colors-readable-wrap {
+ margin: 8px 0 0;
+}
+
.members-am-icon-tabs {
margin-bottom: 8px;
}
diff --git a/js/admin-menus.js b/js/admin-menus.js
index ac6d6c2..18e6fcd 100644
--- a/js/admin-menus.js
+++ b/js/admin-menus.js
@@ -31,6 +31,9 @@
/** Snapshot of persisted settings for unsaved-change detection (object key order–independent). */
var initialSettingsSerialized = '';
+ /** Skip wpColorPicker `change` / `clear` while programmatically syncing Iris (avoids double save/render). */
+ var membersAmColorPickerSuppress = false;
+
/**
* Stable JSON string for comparing settings payloads (sorts object keys recursively).
*
@@ -263,6 +266,42 @@
return u;
}
+ /**
+ * Merged role override for one menu id (matches PHP array_merge across sorted roles: last role wins the row).
+ *
+ * @param {string[]} roles
+ * @param {string} itemId
+ * @return {Object}
+ */
+ function getRoleMergedOverrideForItem(roles, itemId) {
+ var sorted = (roles || []).slice().sort();
+ var out = null;
+ for (var i = 0; i < sorted.length; i++) {
+ var o = getRoleConfig(sorted[i]).overrides[itemId];
+ if (o && typeof o === 'object') {
+ out = o;
+ }
+ }
+ return out ? $.extend(true, {}, out) : {};
+ }
+
+ /**
+ * Effective overrides for the user preview column: merged roles for that user, then per-user row on top.
+ *
+ * @param {number} uid
+ * @param {string} itemId
+ * @return {Object}
+ */
+ function getEffectiveOverrideForUserItem(uid, itemId) {
+ var roles = uid === state.previewUserId ? state.previewUserRoles || [] : [];
+ var base = getRoleMergedOverrideForItem(roles, itemId);
+ var uov = (getUserConfig(uid).overrides && getUserConfig(uid).overrides[itemId]) || {};
+ if (!uov || typeof uov !== 'object') {
+ return base;
+ }
+ return $.extend(true, {}, base, uov);
+ }
+
function getTopOrderForUser(uid) {
var ucfg = getUserConfig(uid);
var base = ucfg.order && ucfg.order.length ? ucfg.order.slice() : defaultTopOrder();
@@ -1062,11 +1101,40 @@
return (ucfg.overrides && ucfg.overrides[state.selectedId]) || {};
}
var roles = getTargetRoles();
- var role = roles[0];
- if (!role) {
+ if (!roles.length) {
return null;
}
- var o = getRoleConfig(role).overrides[state.selectedId];
+ // "All roles" (or any multi-target selection): the first slug in getRolesList()
+ // order is not necessarily the column the user edited — merge so each field
+ // uses the first non-empty value found across targeted roles (fixes color
+ // pickers and other fields showing blank while row previews look correct).
+ if (roles.length > 1) {
+ var keySet = {};
+ roles.forEach(function (r) {
+ var ov = getRoleConfig(r).overrides[state.selectedId];
+ if (ov && typeof ov === 'object') {
+ Object.keys(ov).forEach(function (k) {
+ keySet[k] = true;
+ });
+ }
+ });
+ var merged = {};
+ Object.keys(keySet).forEach(function (k) {
+ for (var i = 0; i < roles.length; i++) {
+ var ov = getRoleConfig(roles[i]).overrides[state.selectedId];
+ if (!ov) {
+ continue;
+ }
+ var val = ov[k];
+ if (val !== '' && val !== undefined && val !== null) {
+ merged[k] = val;
+ break;
+ }
+ }
+ });
+ return merged;
+ }
+ var o = getRoleConfig(roles[0]).overrides[state.selectedId];
return o || {};
}
@@ -1592,7 +1660,7 @@
function renderUserItemRow(node, parentMenuId, uid, ucfg, depth) {
depth = depth || 0;
- var ov = (ucfg.overrides && ucfg.overrides[node.id]) || {};
+ var ov = getEffectiveOverrideForUserItem(uid, node.id);
var label = ov.label || node.title;
var hidden = isUserHidden(uid, node.id);
var noCap = !userHasCap(node.cap);
@@ -2065,6 +2133,53 @@
}
}
+ /**
+ * WCAG relative luminance for a 6-digit hex color (mirrors PHP members_am_relative_luminance).
+ *
+ * @param {string} hex
+ * @return {number}
+ */
+ function membersAmRelativeLuminance(hex) {
+ hex = String(hex || '').replace(/^#/, '');
+ if (hex.length === 3) {
+ hex = hex[0] + hex[0] + hex[1] + hex[1] + hex[2] + hex[2];
+ }
+ if (hex.length !== 6 || !/^[0-9a-fA-F]+$/.test(hex)) {
+ return 0.5;
+ }
+ var r = parseInt(hex.slice(0, 2), 16) / 255;
+ var g = parseInt(hex.slice(2, 4), 16) / 255;
+ var b = parseInt(hex.slice(4, 6), 16) / 255;
+ var toLinear = function (c) {
+ return c <= 0.03928 ? c / 12.92 : Math.pow((c + 0.055) / 1.055, 2.4);
+ };
+ r = toLinear(r);
+ g = toLinear(g);
+ b = toLinear(b);
+ return 0.2126 * r + 0.7152 * g + 0.0722 * b;
+ }
+
+ /**
+ * @param {string} hex
+ * @return {string}
+ */
+ function membersAmContrastFgForBg(hex) {
+ return membersAmRelativeLuminance(hex) > 0.45 ? '#1d2327' : '#f0f0f1';
+ }
+
+ function membersAmSyncColorInput($input, hex) {
+ $input.val(hex);
+ if ($input.data('wpWpColorPicker')) {
+ membersAmColorPickerSuppress = true;
+ try {
+ $input.wpColorPicker('color', hex);
+ } catch (ignore) {
+ // Iris may reject malformed values.
+ }
+ membersAmColorPickerSuppress = false;
+ }
+ }
+
function destroyColorPickers() {
$('.members-am-color').each(function () {
if ($(this).data('wpWpColorPicker')) {
@@ -2076,7 +2191,10 @@
function initColorPickers() {
destroyColorPickers();
$('.members-am-color').wpColorPicker({
- change: function (event, ui) {
+ change: function () {
+ if (membersAmColorPickerSuppress) {
+ return;
+ }
// wpColorPicker fires change BEFORE writing to the input,
// so we defer reading until the value is committed.
setTimeout(function () {
@@ -2084,12 +2202,31 @@
}, 20);
},
clear: function () {
+ if (membersAmColorPickerSuppress) {
+ return;
+ }
// "Clear" button doesn't fire change — handle it separately.
setTimeout(function () {
pushOverridesFromForm();
}, 20);
},
});
+ membersAmColorPickerSuppress = true;
+ $('.members-am-color').each(function () {
+ var $el = $(this);
+ var hex = String($el.val() || '').trim();
+ if (!hex || hex === '#') {
+ return;
+ }
+ if ($el.data('wpWpColorPicker')) {
+ try {
+ $el.wpColorPicker('color', hex);
+ } catch (ignore) {
+ // Iris may reject malformed values.
+ }
+ }
+ });
+ membersAmColorPickerSuppress = false;
}
function pushOverridesFromForm() {
@@ -2852,6 +2989,22 @@
$('#members-am-edit-target-role').on('change', openEditPanel);
+ $('#members-am-colors-readable').on('click', function (e) {
+ e.preventDefault();
+ var bg = String($('#members-am-color-bg').val() || '').trim();
+ if (!bg || bg === '#') {
+ var needBg =
+ (membersAdminMenus.i18n && membersAdminMenus.i18n.colorsReadableNeedBg) ||
+ 'Choose a background color first.';
+ window.alert(needBg);
+ return;
+ }
+ var fg = membersAmContrastFgForBg(bg);
+ membersAmSyncColorInput($('#members-am-color-text'), fg);
+ membersAmSyncColorInput($('#members-am-color-icon'), fg);
+ pushOverridesFromForm();
+ });
+
$('#members-am-edit-label, #members-am-edit-url, #members-am-icon-value, #members-am-badge-text').on('input', function () {
pushOverridesFromForm();
});
diff --git a/js/admin-menus.min.js b/js/admin-menus.min.js
index 240e2ca..6062e59 100644
--- a/js/admin-menus.min.js
+++ b/js/admin-menus.min.js
@@ -1 +1 @@
-!function(M){"use strict";var C={settings:M.extend(!0,{},membersAdminMenus.settings),tree:[],activeRoleSlugs:[],carouselPage:0,columnsPerPage:3,selectedId:null,iconTab:"dashicons",previewUserId:null,previewUserRoles:[],userSuggestions:[],mediaFrame:null,allowUnload:!1,syncScroll:function(){try{return"0"!==localStorage.getItem("members_am_sync_scroll")}catch(e){return!0}}(),columnFilters:{},columnBulkSelection:{},collapsedParents:{}},a="";function t(){return function n(r){if(null===r)return"null";var e=typeof r;return"string"==e||"number"==e||"boolean"==e?JSON.stringify(r):"undefined"==e?"null":Array.isArray(r)?"["+r.map(function(e){return n(e)}).join(",")+"]":"object"!=e?JSON.stringify(r):"{"+Object.keys(r).sort().map(function(e){return JSON.stringify(e)+":"+n(r[e])}).join(",")+"}"}(C.settings)}function s(){if(!C.allowUnload&&t()!==a)return membersAdminMenus.i18n&&membersAdminMenus.i18n.unsavedChanges||""}var i="members_am_notice";function f(e,n){if(n){var r=M("#members-am-notices");r.length||(M(".members-admin-menus-wrap h1").first().after('
'),r=M("#members-am-notices"));var a=M("
",{class:"notice is-dismissible"}).addClass("notice-"+(e||"info"));a.append(M("
").text(n)),r.prepend(a),M(document).trigger("wp-notice-added")}}function o(e,n){try{sessionStorage.setItem(i,JSON.stringify({type:e||"success",message:n}))}catch(e){}}var e=["dashicons-menu","dashicons-admin-dashboard","dashicons-admin-post","dashicons-admin-page","dashicons-admin-media","dashicons-admin-comments","dashicons-admin-appearance","dashicons-admin-plugins","dashicons-admin-users","dashicons-admin-tools","dashicons-admin-settings","dashicons-admin-generic","dashicons-edit","dashicons-plus","dashicons-chart-bar","dashicons-cart","dashicons-products","dashicons-email","dashicons-groups","dashicons-heart","dashicons-star-filled","dashicons-smiley","dashicons-info","dashicons-lock","dashicons-unlock","dashicons-visibility","dashicons-hidden","dashicons-arrow-up","dashicons-arrow-down","dashicons-admin-network","dashicons-performance"],n=["fa-solid fa-house","fa-solid fa-user","fa-solid fa-gear","fa-solid fa-file","fa-solid fa-image","fa-solid fa-cart-shopping","fa-solid fa-chart-line","fa-solid fa-envelope","fa-solid fa-book","fa-solid fa-link","fa-solid fa-bell","fa-solid fa-star","fa-solid fa-heart","fa-solid fa-lock","fa-solid fa-unlock","fa-solid fa-pen","fa-solid fa-trash","fa-solid fa-plus","fa-solid fa-minus"],m="members_am_view_state";function l(){try{localStorage.setItem(m,JSON.stringify({activeRoleSlugs:C.activeRoleSlugs,carouselPage:C.carouselPage}))}catch(e){}}function d(e){return JSON.parse(JSON.stringify(e))}var c=null;function h(){c=d(C.settings),u()}function u(){var e=M("#members-am-undo");if(e.length){var n=!!c;e.prop("disabled",!n).attr("aria-disabled",n?"false":"true")}}function p(){return membersAdminMenus.roles||[]}function b(){C.settings._meta&&!Array.isArray(C.settings._meta)||(C.settings._meta={version:3,admin_editable:!1}),C.settings.roles&&!Array.isArray(C.settings.roles)||(C.settings.roles={}),C.settings.users&&!Array.isArray(C.settings.users)||(C.settings.users={}),Array.isArray(C.settings.custom_items)||(C.settings.custom_items=[]),C.settings.capabilities&&!Array.isArray(C.settings.capabilities)||(C.settings.capabilities={})}function I(e){b(),C.settings.roles[e]||(C.settings.roles[e]={hidden:[],order:[],submenu_order:{},overrides:{}});var n=C.settings.roles[e];return n.hidden&&Array.isArray(n.hidden)||(n.hidden=[]),n.order&&Array.isArray(n.order)||(n.order=[]),n.submenu_order&&!Array.isArray(n.submenu_order)||(n.submenu_order={}),n.overrides&&!Array.isArray(n.overrides)||(n.overrides={}),n}function P(e){b(),C.settings.users[e]||(C.settings.users[e]={});var n=C.settings.users[e];return n.hidden&&Array.isArray(n.hidden)||(n.hidden=[]),n.order&&Array.isArray(n.order)||(n.order=[]),n.overrides&&!Array.isArray(n.overrides)||(n.overrides={}),n.submenu_order&&!Array.isArray(n.submenu_order)||(n.submenu_order={}),n}function v(n){var e=P(n);return(e.order&&e.order.length?e.order.slice():S()).filter(function(e){return 0===e.indexOf("sep-")||!!k(e)&&!function(e,n){if(!n||-1!==n.indexOf("::"))return;var r=P(e),a=r.overrides&&r.overrides[n]||{};return a.parent&&"__promote__"!==a.parent}(n,e)})}function g(e,n,r,a){var s,t=P(e),i=t.overrides&&t.overrides[n]||{},o=r;!o&&i.parent&&"__promote__"!==i.parent&&(o=i.parent);var m,l,d,c,u=-1!==n.indexOf("::")?n.split("::").pop():n,p=(s=o?(t.submenu_order[o]||(t.submenu_order[o]=(m=e,d=R(l=o),c=P(m),C.tree.forEach(function(e){e&&e.id&&-1===e.id.indexOf("::")&&(c.overrides&&c.overrides[e.id]||{}).parent===l&&-1===d.indexOf(e.id)&&d.push(e.id)}),d)),t.submenu_order[o]):(t.order.length||(t.order=S()),t.order)).indexOf(u);if(-1!==p){var f=p+a;f<0||f>=s.length||(h(),s.splice(p,1),s.splice(f,0,o?u:n))}}function x(e){var n=e.id||"c";return"members-am-"+String(n).replace(/[^a-z0-9_-]/gi,"-").toLowerCase()}function y(e){return!!e&&0===(-1!==e.indexOf("::")?e.split("::").pop():e).indexOf("members-am-")}function _(){var a=M.extend(!0,[],membersAdminMenus.menuTree||[]),s={};return a.forEach(function(e){s[e.id]=!0}),(C.settings.custom_items||[]).forEach(function(e){if(e&&e.id){var n=x(e);if(s[n]){for(var r=0;r
s&&(C.carouselPage=s))}}C.activeRoleSlugs=n.filter(function(e){return"administrator"!==e||r}),C.activeRoleSlugs.length||(C.activeRoleSlugs=["subscriber"])}function ae(){var a=M("#members-am-role-chips").empty();p().forEach(function(e){if("administrator"!==e.slug||C.settings._meta.admin_editable){var n=-1!==C.activeRoleSlugs.indexOf(e.slug),r=M(' ').text(e.label).attr("data-role",e.slug).toggleClass("is-active",n);a.append(r)}})}function se(t,i,e,o,m){(function(e,n,r,a,s){s=s||0;var t=n.id,i=L(e,t),o=!F(e,n.cap),m=I(e).overrides[t]||{},l=m.label||n.title||t,d=M('
').attr("data-id",t).attr("data-menu-parent",r||"").toggleClass("is-hidden",i).toggleClass("is-no-cap",o).toggleClass("is-selected",C.selectedId===t).toggleClass("is-sub",0 ');if(p){V(c);var b=!!C.collapsedParents[c][t],h=u.expandSubmenus||"Expand submenu items",v=u.collapseSubmenus||"Collapse submenu items";M(' ').attr("aria-expanded",!b).attr("aria-label",(b?h:v)+": "+l).append(M(' ').addClass(b?"dashicons-arrow-right-alt2":"dashicons-arrow-down-alt2")).on("click",function(e){e.stopPropagation(),V(c),C.collapsedParents[c][t]=!C.collapsedParents[c][t],ce()}).appendTo(f),d.toggleClass("is-collapse-collapsed",b)}else f.append(M(' '));d.append(f);var g=u.bulkCheckboxAria||"Include in bulk actions",x=M(' '),y=M(' ').prop("checked",!!C.columnBulkSelection[c].ids[t]).attr("aria-label",g+": "+l).on("click",function(e){e.stopPropagation()}).on("change",function(e){e.stopPropagation(),z(c,t,M(this).prop("checked")),ce()});x.append(y),d.append(x);var _=M('
');if(0===s){var k=m.icon||n.icon,w=J(k,m.icon_type||n.icon_type);if("fontawesome"===w&&k)_.append(M(' '));else if("svg"!==w&&"image"!==w&&"custom"!==w||!k){var O=k&&0===k.indexOf("dashicons-")?k:"dashicons-admin-generic";_.append(M(' '))}else _.append(M(" ").attr("src",k).css({width:"20px",height:"20px",display:"inline-block",verticalAlign:"middle",objectFit:"contain",filter:"none"}))}n.custom&&_.append(M('custom '));m.label&&_.append(M('edit '));if(_.append(M(' ').text(l)),m.badge){var A=m.badge_bg||"#d63638";_.append(M(' ').text(m.badge).css({backgroundColor:A,color:"#fff",fontSize:"9px",padding:"1px 5px",borderRadius:"2px",marginLeft:"4px",whiteSpace:"nowrap"}))}o&&_.append(M(' Roles.\">🔒 no access "));d.append(_),m.color_bg&&d.css("background-color",m.color_bg);m.color_text&&d.find(".members-am-item-label").css("color",m.color_text);m.color_icon&&(d.find(".dashicons").css("color",m.color_icon),d.find(".members-am-fa-icon i").css("color",m.color_icon),d.find("img").css("filter","none"));var S=M('
');S.append(M(' ').text("◉"),M(' ').text("↑"),M(' ').text("↓")),d.append(S),a.append(d)})(t,i,e,o,m=m||0),i.children&&i.children.length&&U(t,i.id).forEach(function(e){var n,r,a,s=(n=t,r=i.id,k(N(r,a=e))||(-1===a.indexOf("::")&&(I(n).overrides[a]||{}).parent===r?k(a):null));s&&"__promote__"!==(I(t).overrides[s.id]||{}).parent&&se(t,s,i.id,o,m+1)})}function te(r,a,e,s,t,i){i=i||0,t.append(function(n,e,r,a,s){s=s||0;var t=a.overrides&&a.overrides[n.id]||{},i=t.label||n.title,o=function(e,n){var r=P(e);if(-1!==r.hidden.indexOf(n))return!0;var a=E(n,e);return!(!a||-1===r.hidden.indexOf(a))}(r,n.id),m=!function(e){if(!e||"read"===e)return 1;for(var n=C.previewUserRoles||[],r=0;r").addClass(d).attr("data-id",n.id).attr("data-menu-parent",e||""),u="u:"+r;D(u);var p=membersAdminMenus.i18n||{},f=n.children&&n.children.length,b=M(' ');if(f){V(u);var h=!!C.collapsedParents[u][n.id],v=p.expandSubmenus||"Expand submenu items",g=p.collapseSubmenus||"Collapse submenu items";M(' ').attr("aria-expanded",!h).attr("aria-label",(h?v:g)+": "+i).append(M(' ').addClass(h?"dashicons-arrow-right-alt2":"dashicons-arrow-down-alt2")).on("click",function(e){e.stopPropagation(),V(u),C.collapsedParents[u][n.id]=!C.collapsedParents[u][n.id],ce()}).appendTo(b),c.toggleClass("is-collapse-collapsed",h)}else b.append(M(' '));c.append(b);var x=p.bulkCheckboxAria||"Include in bulk actions",y=M(' '),_=M(' ').prop("checked",!!C.columnBulkSelection[u].ids[n.id]).attr("aria-label",x+": "+i).on("click",function(e){e.stopPropagation()}).on("change",function(e){e.stopPropagation(),z(u,n.id,M(this).prop("checked")),ce()});y.append(_),c.append(y);var k=M('
');if(0===s){var w=t.icon||n.icon,O=J(w,t.icon_type||n.icon_type);"fontawesome"===O&&w?k.append(M(' ')):"svg"!==O&&"image"!==O&&"custom"!==O||!w?w&&0===w.indexOf("dashicons-")?k.append(M(' ')):k.append(M(' ')):k.append(M(" ").attr("src",w).css({width:"20px",height:"20px",display:"inline-block",verticalAlign:"middle",objectFit:"contain",filter:"none"}))}n.custom&&k.append(M('custom '));t.label&&k.append(M('edit '));if(k.append(M(' ').text(i)),t.badge){var A=t.badge_bg||"#d63638";k.append(M(' ').text(t.badge).css({backgroundColor:A,color:"#fff",fontSize:"9px",padding:"1px 5px",borderRadius:"2px",marginLeft:"4px",whiteSpace:"nowrap"}))}m&&k.append(M('🔒 no access "));c.append(k),t.color_bg&&c.css("background-color",t.color_bg);t.color_text&&c.find(".members-am-item-label").css("color",t.color_text);t.color_icon&&(c.find(".dashicons").css("color",t.color_icon),c.find(".members-am-fa-icon i").css("color",t.color_icon));var S=M('
');return S.append(M(' ').text(o?"◯":"◉"),M(' ').text("↑"),M(' ').text("↓")),c.append(S),c.on("click",function(e){M(e.target).closest("button, .members-am-item-cb, .members-am-collapse-toggle").length||(C.selectedId=n.id,Oe())}),c}(a,e,r,s,i)),a.children&&a.children.length&&function(e,n){var r=R(n),a=P(e);C.tree.forEach(function(e){e&&e.id&&-1===e.id.indexOf("::")&&(a.overrides&&a.overrides[e.id]||{}).parent===n&&-1===r.indexOf(e.id)&&r.push(e.id)});var s=a.submenu_order&&a.submenu_order[n];if(!s||!s.length)return r.slice();var t=s.filter(function(e){return-1!==r.indexOf(e)});return r.forEach(function(e){-1===t.indexOf(e)&&t.push(e)}),t}(r,a.id).forEach(function(e){var n=function(e,n,r){var a=k(N(n,r));if(a)return a;if(-1===r.indexOf("::")){var s=P(e);if((s.overrides&&s.overrides[r]||{}).parent===n)return k(r)}return null}(r,a.id,e);n&&"__promote__"!==(s.overrides&&s.overrides[n.id]||{}).parent&&te(r,n,a.id,s,t,i+1)})}function ie(e,n){var s=(n||"").trim().toLowerCase(),r=e.children(".members-am-item");if(!s)return r.removeClass("members-am-filter-hidden"),void e.children(".members-am-sep").removeClass("members-am-filter-hidden");var i={};r.each(function(){var e=M(this),n=e.attr("data-id"),r=(e.find(".members-am-item-label").first().text()||"").toLowerCase(),a=(n||"").toLowerCase();i[n]=-1!==r.indexOf(s)||-1!==a.indexOf(s)});var o={};r.each(function(){var e=M(this).attr("data-id"),n=M(this).attr("data-menu-parent")||"";o[n]||(o[n]=[]),o[n].push(e)});var m={};function l(e){var n,r=i[e],a=o[e]||[],s=!1;for(n=0;n '),o=M(' ').attr("placeholder",s).attr("aria-label",t).val(a);i.append(o),e.find(".members-am-sidebar-head").first().after(i),o.on("input",function(){C.columnFilters[r]=M(this).val(),ie(n,M(this).val())}),ie(n,a)}function me(e,n){var t=0===String(n).indexOf("u:"),i=t?parseInt(n.replace(/^u:/,""),10):0,o=t?null:n,m=n,l=membersAdminMenus.i18n||{},r=M('
').attr("data-column-key",m),a=M('
');a.append(M(' ').text(l.bulkSelectVisible||"Select visible"),M(' ').text(l.bulkClearSelection||"Clear selection"));var s=M('
');s.append(M(' ').text(l.collapseAllMenus||"Collapse all"),M(' ').text(l.expandAllMenus||"Expand all"));var d=M(' ').attr("aria-label",l.bulkVisibilityLabel||"Menu visibility for this column");d.append(M(' ').text(l.bulkActionsPlaceholder||"Choose visibility…"));var c=M(" ").attr("label",l.bulkGroupWholeColumn||"Whole column");c.append(M(' ').text(l.bulkShowAllItems||"Show every menu item"),M(' ').text(l.bulkHideAllItems||"Hide every menu item"));var u=M(" ").attr("label",l.bulkGroupCheckedRows||"Checked rows");u.append(M(' ').text(l.bulkKeepOnlyCheckedVisible||"Keep only checked visible"),M(' ').text(l.bulkHideCheckedItems||"Hide checked items"),M(' ').text(l.bulkShowCheckedItems||"Show checked items")),d.append(c,u),r.append(a,s,d);var p=e.find(".members-am-col-filter").first();p.length?p.after(r):e.find(".members-am-sidebar-head").first().after(r),d.on("change",function(){var e=M(this).val();if(M(this).val(""),e)if(!("keep-only-checked"===e||"hide-checked"===e||"show-checked"===e)||B(m).length){if("keep-only-checked"===e){if(!window.confirm(l.bulkConfirmKeepOnlyChecked||"Hide all items except checked items and their parent menus?"))return}else if("hide-all"===e){if(!window.confirm(l.bulkConfirmHideAll||"Hide every menu item in this column?"))return}else if("hide-checked"===e&&!window.confirm(l.bulkConfirmHideChecked||"Hide the checked items (and their submenus where applicable)?"))return;var n,r,a,s;h(),t?"show-all"===e?P(i).hidden=[]:"hide-all"===e?(a=i,s=j(),P(a).hidden=s.slice()):"keep-only-checked"===e?function(e,r){var n=B(e);if(n.length){var a={};n.forEach(function(e){for(var n=e;n;)a[n]=!0,n=E(n,r)});var s=j(),t=P(r).hidden;t.length=0,s.forEach(function(e){a[e]||t.push(e)})}}(m,i):"hide-checked"===e?X(m,i):"show-checked"===e&&Y(m,i):"show-all"===e?I(o).hidden=[]:"hide-all"===e?(n=o,r=j(),I(n).hidden=r.slice()):"keep-only-checked"===e?function(e,r){var n=B(e);if(n.length){var a={};n.forEach(function(e){for(var n=e;n;)a[n]=!0,n=O(n,r)});var s=j(),t=I(r).hidden;t.length=0,s.forEach(function(e){a[e]||t.push(e)})}}(m,o):"hide-checked"===e?Q(m,o):"show-checked"===e&&q(m,o),Oe()}else f("warning",l.bulkSelectCheckedFirst||"Check one or more menu items first.")})}function le(e){return-1!==e.indexOf("::")?e.split("::").pop():e}function de(){M.fn.sortable&&M("#members-am-columns .members-am-sidebar-list").each(function(){var e=M(this);e.data("ui-sortable")&&e.sortable("destroy");var n=e.closest(".members-am-column"),r=n.data("role"),a=n.data("user");e.sortable({axis:"y",distance:6,items:"> .members-am-item, > .members-am-sep",cancel:".members-am-item-actions button, .members-am-item-cb, .members-am-item-cb-wrap, .members-am-collapse-toggle",placeholder:"members-am-sort-placeholder",forcePlaceholderSize:!0,tolerance:"pointer",start:function(){h()},update:function(){a?function(e,n){var s=[],t={};e.children().each(function(){var e=M(this);if(e.hasClass("members-am-sep")){var n=e.attr("data-sep-id");n&&s.push(n)}else if(e.hasClass("members-am-item")){var r=e.attr("data-id");if(r){var a=e.attr("data-menu-parent");void 0===a||""===a?s.push(r):(t[a]||(t[a]=[]),t[a].push(le(r)))}}});var r=P(n);r.order=s,r.submenu_order=t}(e,a):r&&function(e,n){var s=[],t={};e.children().each(function(){var e=M(this);if(e.hasClass("members-am-sep")){var n=e.attr("data-sep-id");n&&s.push(n)}else if(e.hasClass("members-am-item")){var r=e.attr("data-id");if(r){var a=e.attr("data-menu-parent");void 0===a||""===a?s.push(r):(t[a]||(t[a]=[]),t[a].push(le(r)))}}});var r=I(n);r.order=s,r.submenu_order=t}(e,r),ue()}})})}function ce(){var r=M("#members-am-columns"),a={};r.find(".members-am-column").each(function(){var e=M(this).data("role");if(e){var n=M(this).find(".members-am-sidebar-list");n.length&&(a[e]=n.scrollTop())}}),r.empty();var e=C.carouselPage*C.columnsPerPage;if(C.activeRoleSlugs.slice(e,e+C.columnsPerPage).forEach(function(e){var n=M('
');!function(r,e){e.empty();var n=M(''),a=(p().filter(function(e){return e.slug===r})[0]||{}).label||r;n.append(M('').text(a)),n.append(M(' ').append(M(' ').text("◀"),M(' ').text("▶"))),e.append(n);var s=M('');T(r).forEach(function(e){if(0!==e.indexOf("sep-")){var n=k(e);n&&se(r,n,null,s,0)}else s.append(M('
').attr("data-sep-id",e).text("—"))}),e.append(s),K(s,r),oe(e,s,r),me(e,r)}(e,n),r.append(n),a[e]&&n.find(".members-am-sidebar-list").scrollTop(a[e])}),C.previewUserId){var s=C.previewUserId,n=M('
'),t=M('');t.append(M(" ").text(C.previewUserLabel||"User #"+s)),t.append(M('× ').on("click",function(){C.previewUserId=null,C.previewUserLabel=null,C.previewUserRoles=[],Oe()})),n.append(t);var i=M(''),o=P(s);v(s).forEach(function(e){if(0!==e.indexOf("sep-")){var n=k(e);n&&te(s,n,null,o,i,0)}else i.append(M('
').attr("data-sep-id",e).text("——"))}),n.append(i),K(i,"u:"+s),oe(n,i,"u:"+s),me(n,"u:"+s),r.append(n)}if(C.syncScroll){var m=r.find(".members-am-sidebar-list"),l=!1;m.on("scroll",function(){if(!l){l=!0;var e=M(this).scrollTop();m.not(this).scrollTop(e),l=!1}})}!function(){var e=Math.max(1,Math.ceil(C.activeRoleSlugs.length/C.columnsPerPage)),n=(Math.min(C.carouselPage+1,e),C.carouselPage*C.columnsPerPage+1),r=Math.min((C.carouselPage+1)*C.columnsPerPage,C.activeRoleSlugs.length);M("#members-am-carousel-status").text(n+"–"+r+" "+membersAdminMenus.i18n.of+" "+C.activeRoleSlugs.length);for(var a=M("#members-am-carousel-dots").empty(),s=0;s ').toggleClass("is-active",s===C.carouselPage))}(),de()}function ue(){if(C.selectedId){M("#members-am-edit-panel").removeAttr("hidden");var e=k(C.selectedId),n=ee()||{};M("#members-am-edit-title").text(e?e.title:C.selectedId),M("#members-am-edit-label").val(n.label||e&&e.title||"");var r=y(C.selectedId);M("#members-am-edit-url-wrap").toggle(r),M("#members-am-edit-url").attr("placeholder","Override URL (leave empty for default)").val(r&&(n.url||e&&e.url)||"").data("default-url",e&&e.url||""),M("#members-am-icon-type").val(n.icon_type||"dashicon"),M("#members-am-icon-value").val(n.icon||e&&e.icon||"");var a=n.icon||e&&e.icon||"",s=J(a,n.icon_type||e&&e.icon_type||"");"image"!==s&&"custom"!==s&&"svg"!==s||!a?M("#members-am-icon-preview").hide():M("#members-am-icon-preview").show().attr("src",a),M("#members-am-color-bg").val(n.color_bg||""),M("#members-am-color-text").val(n.color_text||""),M("#members-am-color-icon").val(n.color_icon||""),M("#members-am-badge-text").val(n.badge||""),M("#members-am-badge-bg").val(n.badge_bg||""),M("#members-am-item-cap").attr("placeholder",e&&e.cap?e.cap+" (default)":"").val(C.settings.capabilities[C.selectedId]||"");var t=e&&e.custom;M("#members-am-remove-custom").toggle(!!t),M("#members-am-visibility-toggles").empty();var i=e&&e.cap||"read",o=[];if(p().forEach(function(e){"administrator"===e.slug&&!C.settings._meta.admin_editable||o.push(e)}),10<=o.length){var m=membersAdminMenus.i18n&&membersAdminMenus.i18n.filterRolesVisibility||"Filter roles…",l=membersAdminMenus.i18n&&membersAdminMenus.i18n.filterRolesVisibilityLabel||"Filter roles in this list",d=M('
'),c=M(' ').attr("placeholder",m).attr("aria-label",l);d.append(c),M("#members-am-visibility-toggles").append(d),c.on("input",function(){var s=(M(this).val()||"").trim().toLowerCase();M("#members-am-visibility-toggles .members-am-vis-row").each(function(){var e=M(this),n=(e.find("span").first().text()||"").toLowerCase(),r=String(e.find(".members-am-vis-cb").data("role")||"").toLowerCase(),a=!s||-1!==n.indexOf(s)||-1!==r.indexOf(s);e.toggleClass("members-am-vis-filter-hidden",!a)})})}o.forEach(function(e){var n=L(e.slug,C.selectedId),r=F(e.slug,i),a=M(' ').attr("data-role",e.slug).prop("checked",!n&&r);r||a.prop("disabled",!0);var s=M(' ').append(a,M(" ").text(e.label));r||(s.append(M(" ").text(" — no capability").css({color:"#999",fontStyle:"italic",marginLeft:"4px"})),s.css("opacity","0.5")),M("#members-am-visibility-toggles").append(s)}),M(".members-am-color").each(function(){M(this).data("wpWpColorPicker")&&M(this).wpColorPicker("destroy")}),M(".members-am-color").wpColorPicker({change:function(e,n){setTimeout(function(){pe()},20)},clear:function(){setTimeout(function(){pe()},20)}}),fe(),function(){var e=M(".members-am-demote-wrap"),r=M("#members-am-demote-parent"),n=M("#members-am-demote");if(!C.selectedId)return e.attr("hidden",!0);if(w(C.selectedId))return e.attr("hidden",!0);var a=Z()[0]||C.activeRoleSlugs[0];if(a&&A(a,C.selectedId))return e.attr("hidden",!0);e.removeAttr("hidden");var s=C.selectedId,t=membersAdminMenus.i18n&&membersAdminMenus.i18n.selectParentMenu||"";r.empty().append(M(" ").val("").text(t));var i=0;C.tree.forEach(function(e){if(e&&e.id&&e.id!==s){var n=e.title&&String(e.title).trim()?e.title:e.id;r.append(M(" ").val(e.id).text(n)),i++}});var o=0 ');"dashicons"===r?n.append(M(' ')):n.append(M(' ')),n.on("click",function(){M("#members-am-icon-value").val(e),M("#members-am-icon-type").val("dashicons"===r?"dashicon":"fontawesome"),pe()}),s.append(n)}})}function be(e,n){var r=C.activeRoleSlugs.indexOf(e);if(-1!==r){var a=r+n;if(!(a<0||a>=C.activeRoleSlugs.length)){h();var s=C.activeRoleSlugs[r];C.activeRoleSlugs[r]=C.activeRoleSlugs[a],C.activeRoleSlugs[a]=s,l(),Oe()}}}function he(e,n,r){var a,s,t,i=I(e).overrides[n]||{},o=null;if("__promote__"===i.parent?o=null:-1!==n.indexOf("::")?o=w(n):i.parent&&"__promote__"!==i.parent&&(o=i.parent),o){var m=I(e).submenu_order;m[o]||(m[o]=(a=e,t=R(s=o),C.tree.forEach(function(e){e&&e.id&&-1===e.id.indexOf("::")&&(I(a).overrides[e.id]||{}).parent===s&&-1===t.indexOf(e.id)&&t.push(e.id)}),t));var l=m[o],d=-1!==n.indexOf("::")?n.split("::").pop():n;if(-1===(u=l.indexOf(d)))return;if((p=u+r)<0||p>=l.length)return;h();var c=l[u];l[u]=l[p],l[p]=c}else{I(e).order&&I(e).order.length||(I(e).order=S());var u,p,f=I(e).order;if(-1===(u=f.indexOf(n)))return;if((p=u+r)<0||p>=f.length)return;h();var b=f[u];f[u]=f[p],f[p]=b}Oe()}function ve(){var e=Z();if(e.length){h();var a="sep-"+Date.now();e.forEach(function(e){I(e).order&&I(e).order.length||(I(e).order=S());var n=I(e).order,r=C.selectedId?n.indexOf(C.selectedId):n.length-1;r<0&&(r=n.length),n.splice(r+1,0,a)}),Oe()}}function ge(e){var n=M("#members-am-toolbar-loading");n.removeAttr("hidden"),n.find(".spinner").addClass("is-active"),n.find(".members-am-loading-text").text(e||""),M("#members-am-save, #members-am-reset, #members-am-import, #members-am-copy-apply, #members-am-undo").prop("disabled",!0)}function xe(){var e=M("#members-am-toolbar-loading");e.attr("hidden",!0),e.find(".spinner").removeClass("is-active"),e.find(".members-am-loading-text").text(""),M("#members-am-save, #members-am-reset, #members-am-import, #members-am-copy-apply").prop("disabled",!1),u()}function ye(e){ge(e||membersAdminMenus.i18n&&membersAdminMenus.i18n.saving||"Saving…");var s=membersAdminMenus.i18n&&membersAdminMenus.i18n.networkError||"Could not save settings. Check your connection and try again.";M.ajax({url:membersAdminMenus.ajaxUrl,type:"POST",dataType:"json",timeout:6e4,data:{action:"members_admin_menus_save",nonce:membersAdminMenus.nonce,settings:JSON.stringify(C.settings)}}).done(function(e){if(e&&void 0!==e.success){if(e.success)return a=t(),c=null,u(),void f("success",e.data&&e.data.message||membersAdminMenus.i18n&&membersAdminMenus.i18n.saved||"Settings saved.");f("error",e.data&&e.data.message?e.data.message:"Error")}else f("error",s)}).fail(function(e,n){if("abort"!==n){var r=s;if(e&&e.responseJSON&&void 0!==e.responseJSON.data){var a=e.responseJSON.data;"string"==typeof a&&a?r=a:a&&"string"==typeof a.message&&a.message&&(r=a.message)}f("error",r)}}).always(function(){xe()})}function _e(e,n){if(confirm("role"===e&&n?"Reset all settings for this role? This cannot be undone.":"Reset ALL menu settings for every role? This cannot be undone.")){ge(membersAdminMenus.i18n&&membersAdminMenus.i18n.resetting||"Resetting…");var r=!1;M.post(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_reset",nonce:membersAdminMenus.nonce,scope:e||"all",role:n||""}).done(function(e){if(e.success)return o("success",e.data&&e.data.message||membersAdminMenus.i18n&&membersAdminMenus.i18n.resetComplete||"Reset complete."),C.allowUnload=!0,r=!0,void location.reload();f("error",e.data&&e.data.message?e.data.message:membersAdminMenus.i18n&&membersAdminMenus.i18n.resetFailed||"Reset failed.")}).fail(function(){f("error",membersAdminMenus.i18n&&membersAdminMenus.i18n.resetNetworkError||membersAdminMenus.i18n.networkError||"Could not reset settings. Check your connection and try again.")}).always(function(){r||xe()})}}function ke(e){M.getJSON(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_user_search",nonce:membersAdminMenus.nonce,term:e},function(e){e.success&&e.data&&e.data.length?function(e){M(".members-am-user-suggestions").remove();var n=M("#members-am-user-search").parent();n.css("position","relative");var r=M('
');e.forEach(function(e){r.append(M('
').text(e.label).data("userId",e.id).on("click",function(){!function(e,n,r){C.previewUserId=e,C.previewUserLabel=n||"User #"+e,C.previewUserRoles=r||[],b(),C.settings.users[e]||(C.settings.users[e]={});Oe()}(e.id,e.label,e.roles),M(".members-am-user-suggestions").remove(),M("#members-am-user-search").val("")}))}),n.append(r),setTimeout(function(){M(document).one("click",function(){M(".members-am-user-suggestions").remove()})},0)}(e.data):M(".members-am-user-suggestions").remove()})}function we(){M(document).on("click","#members-am-role-chips .members-am-chip",function(){var e=M(this).data("role"),n=C.activeRoleSlugs.indexOf(e);-1===n?C.activeRoleSlugs.push(e):1 ');if(t.append(M('
').text("Reset Settings")),a&&s){var i=M(' ');i.append(M(' ')),i.append(M(' ').append(M(" ").text("Reset "+s),M(" ").text("Clear all menu settings for this role only"))),i.on("click",function(e){e.preventDefault(),e.stopPropagation(),M(".members-am-reset-dropdown").remove(),_e("role",a)}),t.append(i)}var o=M(' ');o.append(M(' ')),o.append(M(' ').append(M(" ").text("Reset all roles"),M(" ").text("Clear all menu settings for every role"))),o.on("click",function(e){e.preventDefault(),e.stopPropagation(),M(".members-am-reset-dropdown").remove(),_e("all")}),t.append(o),t.insertAfter(n),setTimeout(function(){M(document).one("click",function(){M(".members-am-reset-dropdown").remove()})},0)}),M("#members-am-export").on("click",function(e){e.preventDefault(),window.location.href=membersAdminMenus.exportUrl}),M("#members-am-import").on("click",function(){M("#members-am-import-file").trigger("click")}),M("#members-am-import-file").on("change",function(){var e=this.files&&this.files[0];e&&function(e){ge(membersAdminMenus.i18n&&membersAdminMenus.i18n.importing||"Importing…");var r=new FileReader;r.onerror=function(){xe(),f("error",membersAdminMenus.i18n&&membersAdminMenus.i18n.readFileFailed||"Could not read the file.")},r.onload=function(){try{var e=JSON.parse(r.result),n=!1;M.post(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_import",nonce:membersAdminMenus.nonce,settings:JSON.stringify(e)}).done(function(e){if(e.success)return o("success",e.data&&e.data.message||membersAdminMenus.i18n&&membersAdminMenus.i18n.imported||"Settings imported."),C.allowUnload=!0,n=!0,void location.reload();f("error",e.data&&e.data.message?e.data.message:"Error")}).fail(function(){f("error",membersAdminMenus.i18n&&membersAdminMenus.i18n.importNetworkError||membersAdminMenus.i18n.networkError||"Could not import settings. Check your connection and try again.")}).always(function(){n||xe()})}catch(e){xe(),f("error",membersAdminMenus.i18n&&membersAdminMenus.i18n.invalidJson||"Invalid JSON.")}},r.readAsText(e)}(e)}),M("#members-am-copy-apply").on("click",function(){var r=M("#members-am-copy-from").val(),n=M("#members-am-copy-to").val();if(r&&n)if(r!==n){var a="",s="";if(p().forEach(function(e){e.slug===r&&(a=e.label),e.slug===n&&(s=e.label)}),confirm('Copy menu settings from "'+a+'" to "'+s+'"?\nThis will overwrite "'+s+"\" menu configuration.\n\nNote: This copies menu order, hidden items, labels, icons, and colors.\nIt does NOT change the role's capabilities (items marked with a lock icon).")){h();var e=I(r),t={hidden:e.hidden?e.hidden.slice():[],order:[],submenu_order:{},overrides:{}},i=T(r);t.order=i.slice(),C.tree.forEach(function(e){if(e.children&&e.children.length){var n=U(r,e.id);n&&n.length&&(t.submenu_order[e.id]=n.slice())}}),e.overrides&&"object"==typeof e.overrides&&(t.overrides=JSON.parse(JSON.stringify(e.overrides))),C.settings.roles[n]=t,-1===C.activeRoleSlugs.indexOf(n)&&(C.activeRoleSlugs.push(n),l(),ae()),Oe(),ye(membersAdminMenus.i18n&&membersAdminMenus.i18n.copying||"Copying…")}}else f("error",membersAdminMenus.i18n&&membersAdminMenus.i18n.rolesMustDiffer||"Source and target roles must be different.")}),M("#members-am-admin-editable").on("change",function(){var e=!0;M(this).is(":checked")&&(e=window.confirm(membersAdminMenus.i18n.adminEditableWarn)),e?(C.settings._meta.admin_editable=M(this).is(":checked"),re(),ae(),l(),Oe()):M(this).prop("checked",!1)}),M("#members-am-sync-scroll").prop("checked",!1!==C.syncScroll),M("#members-am-sync-scroll").on("change",function(){C.syncScroll=M(this).is(":checked");try{localStorage.setItem("members_am_sync_scroll",C.syncScroll?"1":"0")}catch(e){}ce()});var s="members_am_more_tools";function e(e){var n=M("#members-am-toolbar-extra"),r=M("#members-am-more-tools");if(n.length&&r.length){n.prop("hidden",!e),r.attr("aria-expanded",e?"true":"false").toggleClass("is-open",!!e);var a=membersAdminMenus.i18n||{};e&&a.moreToolsHideAria?r.attr("aria-label",a.moreToolsHideAria):!e&&a.moreToolsShowAria?r.attr("aria-label",a.moreToolsShowAria):r.removeAttr("aria-label");try{sessionStorage.setItem(s,e?"1":"0")}catch(e){}}}var n,r=!1;try{r="1"===sessionStorage.getItem(s)}catch(e){}e(r),M("#members-am-more-tools").on("click",function(){e(M("#members-am-toolbar-extra").prop("hidden"))}),M("#members-am-add-item").on("click",function(){h();var e="c"+Date.now();C.settings.custom_items.push({id:e,label:"Custom link",url:window.location.origin+"/wp-admin/",icon_type:"dashicon",icon:"dashicons-admin-generic",parent:"",position:99,cap:"read"}),C.tree=_(),C.selectedId=x({id:e}),Oe(),ue()}),M("#members-am-remove-custom").on("click",function(){var n=k(C.selectedId);n&&n.customId&&(h(),C.settings.custom_items=(C.settings.custom_items||[]).filter(function(e){return e.id!==n.customId}),C.selectedId=null,C.tree=_(),Oe(),M("#members-am-edit-panel").attr("hidden",!0))}),M("#members-am-edit-close").on("click",function(){C.selectedId=null,M("#members-am-edit-panel").attr("hidden",!0),Oe()}),M("#members-am-edit-target-role").on("change",ue),M("#members-am-edit-label, #members-am-edit-url, #members-am-icon-value, #members-am-badge-text").on("input",function(){pe()}),M("#members-am-item-cap").on("input",function(){pe()}),M(".members-am-icon-tabs .button").on("click",function(){M(".members-am-icon-tabs .button").removeClass("is-active"),M(this).addClass("is-active"),C.iconTab="fontawesome"===M(this).data("tab")?"fontawesome":"upload"===M(this).data("tab")?"upload":"dashicons",fe()}),M("#members-am-icon-search").on("input",fe),M("#members-am-media-upload").on("click",function(e){e.preventDefault(),C.mediaFrame||(C.mediaFrame=wp.media({title:"Choose menu icon",button:{text:"Use as icon"},multiple:!1,library:{type:"image"}}),C.mediaFrame.on("select",function(){var e=C.mediaFrame.state().get("selection").first().toJSON(),n=e.url||"";e.sizes&&(e.sizes.thumbnail?n=e.sizes.thumbnail.url:e.sizes.medium&&(n=e.sizes.medium.url)),M("#members-am-icon-type").val("custom"),M("#members-am-icon-value").val(n),pe()})),C.mediaFrame.open()}),M(document).on("change",".members-am-vis-cb",function(){h();var e=M(this).data("role");if(M(this).is(":checked")){var n=I(e).hidden,r=n.indexOf(C.selectedId);-1!==r&&n.splice(r,1)}else-1===I(e).hidden.indexOf(C.selectedId)&&I(e).hidden.push(C.selectedId);Oe()}),M("#members-am-add-sep").on("click",ve),M("#members-am-promote").on("click",function(){if(C.selectedId){h();var s=C.selectedId,e=ee()||{};if(-1===s.indexOf("::")&&e.parent&&"__promote__"!==e.parent){var t=e.parent,n=$();if(n){var r=P(n);if(r.overrides[s]&&delete r.overrides[s].parent,r.submenu_order&&r.submenu_order[t]){var a=r.submenu_order[t].indexOf(s);-1!==a&&r.submenu_order[t].splice(a,1)}if(r.order.length||(r.order=S()),-1===r.order.indexOf(s)){var i=r.order.indexOf(t);-1!==i?r.order.splice(i+1,0,s):r.order.push(s)}}else Z().forEach(function(e){var n=I(e);if(n.overrides[s]&&delete n.overrides[s].parent,n.submenu_order&&n.submenu_order[t]){var r=n.submenu_order[t].indexOf(s);-1!==r&&n.submenu_order[t].splice(r,1)}if(n.order&&n.order.length||(n.order=S()),-1===n.order.indexOf(s)){var a=n.order.indexOf(t);-1!==a?n.order.splice(a+1,0,s):n.order.push(s)}});return pe(),void ue()}ne("parent","__promote__");var o=w(s);Z().forEach(function(e){var n=I(e);if(n.order&&n.order.length||(n.order=S()),-1===n.order.indexOf(s))if(o){var r=n.order.indexOf(o);-1!==r?n.order.splice(r+1,0,s):n.order.push(s)}else n.order.push(s)}),pe(),ue()}}),M("#members-am-demote").on("click",function(){var e=M("#members-am-demote-parent").val();e?(h(),ne("parent",e),pe(),ue()):f("warning",membersAdminMenus.i18n&&membersAdminMenus.i18n.selectParentFirst||"Please choose a parent menu from the list.")}),M("#members-am-user-search").on("input",function(){var e=M(this).val();clearTimeout(n),n=setTimeout(function(){1 ").val("__all__").text("All roles")),C.activeRoleSlugs.forEach(function(n){var e=(p().filter(function(e){return e.slug===n})[0]||{}).label||n;r.append(M(" ").val(n).text(e))}),C.previewUserId&&r.append(M(" ").val("__user__"+C.previewUserId).text(C.previewUserLabel||"User #"+C.previewUserId)),C.selectedId&&ue()}M(function(){var n,r,e;!function(){try{var e=sessionStorage.getItem(i);if(!e)return;sessionStorage.removeItem(i);var n=JSON.parse(e);n&&n.message&&f(n.type,n.message)}catch(e){}}(),b(),C.tree=_(),re(),M("#members-am-admin-editable").prop("checked",!!C.settings._meta.admin_editable),n=M("#members-am-copy-from").empty(),r=M("#members-am-copy-to").empty(),(e=p()).forEach(function(e){n.append(M(" ").val(e.slug).text(e.label)),r.append(M(" ").val(e.slug).text(e.label))}),1 '),n=M("#members-am-notices"));var a=M("
",{class:"notice is-dismissible"}).addClass("notice-"+(e||"info"));a.append(M("
").text(r)),n.prepend(a),M(document).trigger("wp-notice-added")}}function o(e,r){try{sessionStorage.setItem(i,JSON.stringify({type:e||"success",message:r}))}catch(e){}}var e=["dashicons-menu","dashicons-admin-dashboard","dashicons-admin-post","dashicons-admin-page","dashicons-admin-media","dashicons-admin-comments","dashicons-admin-appearance","dashicons-admin-plugins","dashicons-admin-users","dashicons-admin-tools","dashicons-admin-settings","dashicons-admin-generic","dashicons-edit","dashicons-plus","dashicons-chart-bar","dashicons-cart","dashicons-products","dashicons-email","dashicons-groups","dashicons-heart","dashicons-star-filled","dashicons-smiley","dashicons-info","dashicons-lock","dashicons-unlock","dashicons-visibility","dashicons-hidden","dashicons-arrow-up","dashicons-arrow-down","dashicons-admin-network","dashicons-performance"],r=["fa-solid fa-house","fa-solid fa-user","fa-solid fa-gear","fa-solid fa-file","fa-solid fa-image","fa-solid fa-cart-shopping","fa-solid fa-chart-line","fa-solid fa-envelope","fa-solid fa-book","fa-solid fa-link","fa-solid fa-bell","fa-solid fa-star","fa-solid fa-heart","fa-solid fa-lock","fa-solid fa-unlock","fa-solid fa-pen","fa-solid fa-trash","fa-solid fa-plus","fa-solid fa-minus"],m="members_am_view_state";function l(){try{localStorage.setItem(m,JSON.stringify({activeRoleSlugs:C.activeRoleSlugs,carouselPage:C.carouselPage}))}catch(e){}}function d(e){return JSON.parse(JSON.stringify(e))}var c=null;function h(){c=d(C.settings),u()}function u(){var e=M("#members-am-undo");if(e.length){var r=!!c;e.prop("disabled",!r).attr("aria-disabled",r?"false":"true")}}function p(){return membersAdminMenus.roles||[]}function b(){C.settings._meta&&!Array.isArray(C.settings._meta)||(C.settings._meta={version:3,admin_editable:!1}),C.settings.roles&&!Array.isArray(C.settings.roles)||(C.settings.roles={}),C.settings.users&&!Array.isArray(C.settings.users)||(C.settings.users={}),Array.isArray(C.settings.custom_items)||(C.settings.custom_items=[]),C.settings.capabilities&&!Array.isArray(C.settings.capabilities)||(C.settings.capabilities={})}function I(e){b(),C.settings.roles[e]||(C.settings.roles[e]={hidden:[],order:[],submenu_order:{},overrides:{}});var r=C.settings.roles[e];return r.hidden&&Array.isArray(r.hidden)||(r.hidden=[]),r.order&&Array.isArray(r.order)||(r.order=[]),r.submenu_order&&!Array.isArray(r.submenu_order)||(r.submenu_order={}),r.overrides&&!Array.isArray(r.overrides)||(r.overrides={}),r}function P(e){b(),C.settings.users[e]||(C.settings.users[e]={});var r=C.settings.users[e];return r.hidden&&Array.isArray(r.hidden)||(r.hidden=[]),r.order&&Array.isArray(r.order)||(r.order=[]),r.overrides&&!Array.isArray(r.overrides)||(r.overrides={}),r.submenu_order&&!Array.isArray(r.submenu_order)||(r.submenu_order={}),r}function v(r){var e=P(r);return(e.order&&e.order.length?e.order.slice():S()).filter(function(e){return 0===e.indexOf("sep-")||!!k(e)&&!function(e,r){if(!r||-1!==r.indexOf("::"))return;var n=P(e),a=n.overrides&&n.overrides[r]||{};return a.parent&&"__promote__"!==a.parent}(r,e)})}function g(e,r,n,a){var s,t=P(e),i=t.overrides&&t.overrides[r]||{},o=n;!o&&i.parent&&"__promote__"!==i.parent&&(o=i.parent);var m,l,d,c,u=-1!==r.indexOf("::")?r.split("::").pop():r,p=(s=o?(t.submenu_order[o]||(t.submenu_order[o]=(m=e,d=R(l=o),c=P(m),C.tree.forEach(function(e){e&&e.id&&-1===e.id.indexOf("::")&&(c.overrides&&c.overrides[e.id]||{}).parent===l&&-1===d.indexOf(e.id)&&d.push(e.id)}),d)),t.submenu_order[o]):(t.order.length||(t.order=S()),t.order)).indexOf(u);if(-1!==p){var f=p+a;f<0||f>=s.length||(h(),s.splice(p,1),s.splice(f,0,o?u:r))}}function x(e){var r=e.id||"c";return"members-am-"+String(r).replace(/[^a-z0-9_-]/gi,"-").toLowerCase()}function y(e){return!!e&&0===(-1!==e.indexOf("::")?e.split("::").pop():e).indexOf("members-am-")}function _(){var a=M.extend(!0,[],membersAdminMenus.menuTree||[]),s={};return a.forEach(function(e){s[e.id]=!0}),(C.settings.custom_items||[]).forEach(function(e){if(e&&e.id){var r=x(e);if(s[r]){for(var n=0;ns&&(C.carouselPage=s))}}C.activeRoleSlugs=r.filter(function(e){return"administrator"!==e||n}),C.activeRoleSlugs.length||(C.activeRoleSlugs=["subscriber"])}function ae(){var a=M("#members-am-role-chips").empty();p().forEach(function(e){if("administrator"!==e.slug||C.settings._meta.admin_editable){var r=-1!==C.activeRoleSlugs.indexOf(e.slug),n=M(' ').text(e.label).attr("data-role",e.slug).toggleClass("is-active",r);a.append(n)}})}function se(t,i,e,o,m){(function(e,r,n,a,s){s=s||0;var t=r.id,i=L(e,t),o=!F(e,r.cap),m=I(e).overrides[t]||{},l=m.label||r.title||t,d=M('
').attr("data-id",t).attr("data-menu-parent",n||"").toggleClass("is-hidden",i).toggleClass("is-no-cap",o).toggleClass("is-selected",C.selectedId===t).toggleClass("is-sub",0 ');if(p){V(c);var b=!!C.collapsedParents[c][t],h=u.expandSubmenus||"Expand submenu items",v=u.collapseSubmenus||"Collapse submenu items";M(' ').attr("aria-expanded",!b).attr("aria-label",(b?h:v)+": "+l).append(M(' ').addClass(b?"dashicons-arrow-right-alt2":"dashicons-arrow-down-alt2")).on("click",function(e){e.stopPropagation(),V(c),C.collapsedParents[c][t]=!C.collapsedParents[c][t],ce()}).appendTo(f),d.toggleClass("is-collapse-collapsed",b)}else f.append(M(' '));d.append(f);var g=u.bulkCheckboxAria||"Include in bulk actions",x=M(' '),y=M(' ').prop("checked",!!C.columnBulkSelection[c].ids[t]).attr("aria-label",g+": "+l).on("click",function(e){e.stopPropagation()}).on("change",function(e){e.stopPropagation(),z(c,t,M(this).prop("checked")),ce()});x.append(y),d.append(x);var _=M('
');if(0===s){var k=m.icon||r.icon,w=J(k,m.icon_type||r.icon_type);if("fontawesome"===w&&k)_.append(M(' '));else if("svg"!==w&&"image"!==w&&"custom"!==w||!k){var O=k&&0===k.indexOf("dashicons-")?k:"dashicons-admin-generic";_.append(M(' '))}else _.append(M(" ").attr("src",k).css({width:"20px",height:"20px",display:"inline-block",verticalAlign:"middle",objectFit:"contain",filter:"none"}))}r.custom&&_.append(M('custom '));m.label&&_.append(M('edit '));if(_.append(M(' ').text(l)),m.badge){var A=m.badge_bg||"#d63638";_.append(M(' ').text(m.badge).css({backgroundColor:A,color:"#fff",fontSize:"9px",padding:"1px 5px",borderRadius:"2px",marginLeft:"4px",whiteSpace:"nowrap"}))}o&&_.append(M(' Roles.\">🔒 no access "));d.append(_),m.color_bg&&d.css("background-color",m.color_bg);m.color_text&&d.find(".members-am-item-label").css("color",m.color_text);m.color_icon&&(d.find(".dashicons").css("color",m.color_icon),d.find(".members-am-fa-icon i").css("color",m.color_icon),d.find("img").css("filter","none"));var S=M('
');S.append(M(' ').text("◉"),M(' ').text("↑"),M(' ').text("↓")),d.append(S),a.append(d)})(t,i,e,o,m=m||0),i.children&&i.children.length&&U(t,i.id).forEach(function(e){var r,n,a,s=(r=t,n=i.id,k(N(n,a=e))||(-1===a.indexOf("::")&&(I(r).overrides[a]||{}).parent===n?k(a):null));s&&"__promote__"!==(I(t).overrides[s.id]||{}).parent&&se(t,s,i.id,o,m+1)})}function te(n,a,e,s,t,i){i=i||0,t.append(function(r,e,n,a,s){s=s||0;var t=a.overrides&&a.overrides[r.id]||{},i=t.label||r.title,o=function(e,r){var n=P(e);if(-1!==n.hidden.indexOf(r))return!0;var a=E(r,e);return!(!a||-1===n.hidden.indexOf(a))}(n,r.id),m=!function(e){if(!e||"read"===e)return 1;for(var r=C.previewUserRoles||[],n=0;n").addClass(d).attr("data-id",r.id).attr("data-menu-parent",e||""),u="u:"+n;D(u);var p=membersAdminMenus.i18n||{},f=r.children&&r.children.length,b=M(' ');if(f){V(u);var h=!!C.collapsedParents[u][r.id],v=p.expandSubmenus||"Expand submenu items",g=p.collapseSubmenus||"Collapse submenu items";M(' ').attr("aria-expanded",!h).attr("aria-label",(h?v:g)+": "+i).append(M(' ').addClass(h?"dashicons-arrow-right-alt2":"dashicons-arrow-down-alt2")).on("click",function(e){e.stopPropagation(),V(u),C.collapsedParents[u][r.id]=!C.collapsedParents[u][r.id],ce()}).appendTo(b),c.toggleClass("is-collapse-collapsed",h)}else b.append(M(' '));c.append(b);var x=p.bulkCheckboxAria||"Include in bulk actions",y=M(' '),_=M(' ').prop("checked",!!C.columnBulkSelection[u].ids[r.id]).attr("aria-label",x+": "+i).on("click",function(e){e.stopPropagation()}).on("change",function(e){e.stopPropagation(),z(u,r.id,M(this).prop("checked")),ce()});y.append(_),c.append(y);var k=M('
');if(0===s){var w=t.icon||r.icon,O=J(w,t.icon_type||r.icon_type);"fontawesome"===O&&w?k.append(M(' ')):"svg"!==O&&"image"!==O&&"custom"!==O||!w?w&&0===w.indexOf("dashicons-")?k.append(M(' ')):k.append(M(' ')):k.append(M(" ").attr("src",w).css({width:"20px",height:"20px",display:"inline-block",verticalAlign:"middle",objectFit:"contain",filter:"none"}))}r.custom&&k.append(M('custom '));t.label&&k.append(M('edit '));if(k.append(M(' ').text(i)),t.badge){var A=t.badge_bg||"#d63638";k.append(M(' ').text(t.badge).css({backgroundColor:A,color:"#fff",fontSize:"9px",padding:"1px 5px",borderRadius:"2px",marginLeft:"4px",whiteSpace:"nowrap"}))}m&&k.append(M('🔒 no access "));c.append(k),t.color_bg&&c.css("background-color",t.color_bg);t.color_text&&c.find(".members-am-item-label").css("color",t.color_text);t.color_icon&&(c.find(".dashicons").css("color",t.color_icon),c.find(".members-am-fa-icon i").css("color",t.color_icon));var S=M('
');return S.append(M(' ').text(o?"◯":"◉"),M(' ').text("↑"),M(' ').text("↓")),c.append(S),c.on("click",function(e){M(e.target).closest("button, .members-am-item-cb, .members-am-collapse-toggle").length||(C.selectedId=r.id,Oe())}),c}(a,e,n,s,i)),a.children&&a.children.length&&function(e,r){var n=R(r),a=P(e);C.tree.forEach(function(e){e&&e.id&&-1===e.id.indexOf("::")&&(a.overrides&&a.overrides[e.id]||{}).parent===r&&-1===n.indexOf(e.id)&&n.push(e.id)});var s=a.submenu_order&&a.submenu_order[r];if(!s||!s.length)return n.slice();var t=s.filter(function(e){return-1!==n.indexOf(e)});return n.forEach(function(e){-1===t.indexOf(e)&&t.push(e)}),t}(n,a.id).forEach(function(e){var r=function(e,r,n){var a=k(N(r,n));if(a)return a;if(-1===n.indexOf("::")){var s=P(e);if((s.overrides&&s.overrides[n]||{}).parent===r)return k(n)}return null}(n,a.id,e);r&&"__promote__"!==(s.overrides&&s.overrides[r.id]||{}).parent&&te(n,r,a.id,s,t,i+1)})}function ie(e,r){var s=(r||"").trim().toLowerCase(),n=e.children(".members-am-item");if(!s)return n.removeClass("members-am-filter-hidden"),void e.children(".members-am-sep").removeClass("members-am-filter-hidden");var i={};n.each(function(){var e=M(this),r=e.attr("data-id"),n=(e.find(".members-am-item-label").first().text()||"").toLowerCase(),a=(r||"").toLowerCase();i[r]=-1!==n.indexOf(s)||-1!==a.indexOf(s)});var o={};n.each(function(){var e=M(this).attr("data-id"),r=M(this).attr("data-menu-parent")||"";o[r]||(o[r]=[]),o[r].push(e)});var m={};function l(e){var r,n=i[e],a=o[e]||[],s=!1;for(r=0;r '),o=M(' ').attr("placeholder",s).attr("aria-label",t).val(a);i.append(o),e.find(".members-am-sidebar-head").first().after(i),o.on("input",function(){C.columnFilters[n]=M(this).val(),ie(r,M(this).val())}),ie(r,a)}function me(e,r){var t=0===String(r).indexOf("u:"),i=t?parseInt(r.replace(/^u:/,""),10):0,o=t?null:r,m=r,l=membersAdminMenus.i18n||{},n=M('
').attr("data-column-key",m),a=M('
');a.append(M(' ').text(l.bulkSelectVisible||"Select visible"),M(' ').text(l.bulkClearSelection||"Clear selection"));var s=M('
');s.append(M(' ').text(l.collapseAllMenus||"Collapse all"),M(' ').text(l.expandAllMenus||"Expand all"));var d=M(' ').attr("aria-label",l.bulkVisibilityLabel||"Menu visibility for this column");d.append(M(' ').text(l.bulkActionsPlaceholder||"Choose visibility…"));var c=M(" ").attr("label",l.bulkGroupWholeColumn||"Whole column");c.append(M(' ').text(l.bulkShowAllItems||"Show every menu item"),M(' ').text(l.bulkHideAllItems||"Hide every menu item"));var u=M(" ").attr("label",l.bulkGroupCheckedRows||"Checked rows");u.append(M(' ').text(l.bulkKeepOnlyCheckedVisible||"Keep only checked visible"),M(' ').text(l.bulkHideCheckedItems||"Hide checked items"),M(' ').text(l.bulkShowCheckedItems||"Show checked items")),d.append(c,u),n.append(a,s,d);var p=e.find(".members-am-col-filter").first();p.length?p.after(n):e.find(".members-am-sidebar-head").first().after(n),d.on("change",function(){var e=M(this).val();if(M(this).val(""),e)if(!("keep-only-checked"===e||"hide-checked"===e||"show-checked"===e)||B(m).length){if("keep-only-checked"===e){if(!window.confirm(l.bulkConfirmKeepOnlyChecked||"Hide all items except checked items and their parent menus?"))return}else if("hide-all"===e){if(!window.confirm(l.bulkConfirmHideAll||"Hide every menu item in this column?"))return}else if("hide-checked"===e&&!window.confirm(l.bulkConfirmHideChecked||"Hide the checked items (and their submenus where applicable)?"))return;var r,n,a,s;h(),t?"show-all"===e?P(i).hidden=[]:"hide-all"===e?(a=i,s=j(),P(a).hidden=s.slice()):"keep-only-checked"===e?function(e,n){var r=B(e);if(r.length){var a={};r.forEach(function(e){for(var r=e;r;)a[r]=!0,r=E(r,n)});var s=j(),t=P(n).hidden;t.length=0,s.forEach(function(e){a[e]||t.push(e)})}}(m,i):"hide-checked"===e?X(m,i):"show-checked"===e&&Y(m,i):"show-all"===e?I(o).hidden=[]:"hide-all"===e?(r=o,n=j(),I(r).hidden=n.slice()):"keep-only-checked"===e?function(e,n){var r=B(e);if(r.length){var a={};r.forEach(function(e){for(var r=e;r;)a[r]=!0,r=O(r,n)});var s=j(),t=I(n).hidden;t.length=0,s.forEach(function(e){a[e]||t.push(e)})}}(m,o):"hide-checked"===e?Q(m,o):"show-checked"===e&&q(m,o),Oe()}else f("warning",l.bulkSelectCheckedFirst||"Check one or more menu items first.")})}function le(e){return-1!==e.indexOf("::")?e.split("::").pop():e}function de(){M.fn.sortable&&M("#members-am-columns .members-am-sidebar-list").each(function(){var e=M(this);e.data("ui-sortable")&&e.sortable("destroy");var r=e.closest(".members-am-column"),n=r.data("role"),a=r.data("user");e.sortable({axis:"y",distance:6,items:"> .members-am-item, > .members-am-sep",cancel:".members-am-item-actions button, .members-am-item-cb, .members-am-item-cb-wrap, .members-am-collapse-toggle",placeholder:"members-am-sort-placeholder",forcePlaceholderSize:!0,tolerance:"pointer",start:function(){h()},update:function(){a?function(e,r){var s=[],t={};e.children().each(function(){var e=M(this);if(e.hasClass("members-am-sep")){var r=e.attr("data-sep-id");r&&s.push(r)}else if(e.hasClass("members-am-item")){var n=e.attr("data-id");if(n){var a=e.attr("data-menu-parent");void 0===a||""===a?s.push(n):(t[a]||(t[a]=[]),t[a].push(le(n)))}}});var n=P(r);n.order=s,n.submenu_order=t}(e,a):n&&function(e,r){var s=[],t={};e.children().each(function(){var e=M(this);if(e.hasClass("members-am-sep")){var r=e.attr("data-sep-id");r&&s.push(r)}else if(e.hasClass("members-am-item")){var n=e.attr("data-id");if(n){var a=e.attr("data-menu-parent");void 0===a||""===a?s.push(n):(t[a]||(t[a]=[]),t[a].push(le(n)))}}});var n=I(r);n.order=s,n.submenu_order=t}(e,n),ue()}})})}function ce(){var n=M("#members-am-columns"),a={};n.find(".members-am-column").each(function(){var e=M(this).data("role");if(e){var r=M(this).find(".members-am-sidebar-list");r.length&&(a[e]=r.scrollTop())}}),n.empty();var e=C.carouselPage*C.columnsPerPage;if(C.activeRoleSlugs.slice(e,e+C.columnsPerPage).forEach(function(e){var r=M('
');!function(n,e){e.empty();var r=M(''),a=(p().filter(function(e){return e.slug===n})[0]||{}).label||n;r.append(M('').text(a)),r.append(M(' ').append(M(' ').text("◀"),M(' ').text("▶"))),e.append(r);var s=M('');T(n).forEach(function(e){if(0!==e.indexOf("sep-")){var r=k(e);r&&se(n,r,null,s,0)}else s.append(M('
').attr("data-sep-id",e).text("—"))}),e.append(s),K(s,n),oe(e,s,n),me(e,n)}(e,r),n.append(r),a[e]&&r.find(".members-am-sidebar-list").scrollTop(a[e])}),C.previewUserId){var s=C.previewUserId,r=M('
'),t=M('');t.append(M(" ").text(C.previewUserLabel||"User #"+s)),t.append(M('× ').on("click",function(){C.previewUserId=null,C.previewUserLabel=null,C.previewUserRoles=[],Oe()})),r.append(t);var i=M(''),o=P(s);v(s).forEach(function(e){if(0!==e.indexOf("sep-")){var r=k(e);r&&te(s,r,null,o,i,0)}else i.append(M('
').attr("data-sep-id",e).text("——"))}),r.append(i),K(i,"u:"+s),oe(r,i,"u:"+s),me(r,"u:"+s),n.append(r)}if(C.syncScroll){var m=n.find(".members-am-sidebar-list"),l=!1;m.on("scroll",function(){if(!l){l=!0;var e=M(this).scrollTop();m.not(this).scrollTop(e),l=!1}})}!function(){var e=Math.max(1,Math.ceil(C.activeRoleSlugs.length/C.columnsPerPage)),r=(Math.min(C.carouselPage+1,e),C.carouselPage*C.columnsPerPage+1),n=Math.min((C.carouselPage+1)*C.columnsPerPage,C.activeRoleSlugs.length);M("#members-am-carousel-status").text(r+"–"+n+" "+membersAdminMenus.i18n.of+" "+C.activeRoleSlugs.length);for(var a=M("#members-am-carousel-dots").empty(),s=0;s ').toggleClass("is-active",s===C.carouselPage))}(),de()}function ue(){if(C.selectedId){M("#members-am-edit-panel").removeAttr("hidden");var e=k(C.selectedId),r=ee()||{};M("#members-am-edit-title").text(e?e.title:C.selectedId),M("#members-am-edit-label").val(r.label||e&&e.title||"");var n=y(C.selectedId);M("#members-am-edit-url-wrap").toggle(n),M("#members-am-edit-url").attr("placeholder","Override URL (leave empty for default)").val(n&&(r.url||e&&e.url)||"").data("default-url",e&&e.url||""),M("#members-am-icon-type").val(r.icon_type||"dashicon"),M("#members-am-icon-value").val(r.icon||e&&e.icon||"");var a=r.icon||e&&e.icon||"",s=J(a,r.icon_type||e&&e.icon_type||"");"image"!==s&&"custom"!==s&&"svg"!==s||!a?M("#members-am-icon-preview").hide():M("#members-am-icon-preview").show().attr("src",a),M("#members-am-color-bg").val(r.color_bg||""),M("#members-am-color-text").val(r.color_text||""),M("#members-am-color-icon").val(r.color_icon||""),M("#members-am-badge-text").val(r.badge||""),M("#members-am-badge-bg").val(r.badge_bg||""),M("#members-am-item-cap").attr("placeholder",e&&e.cap?e.cap+" (default)":"").val(C.settings.capabilities[C.selectedId]||"");var t=e&&e.custom;M("#members-am-remove-custom").toggle(!!t),M("#members-am-visibility-toggles").empty();var i=e&&e.cap||"read",o=[];if(p().forEach(function(e){"administrator"===e.slug&&!C.settings._meta.admin_editable||o.push(e)}),10<=o.length){var m=membersAdminMenus.i18n&&membersAdminMenus.i18n.filterRolesVisibility||"Filter roles…",l=membersAdminMenus.i18n&&membersAdminMenus.i18n.filterRolesVisibilityLabel||"Filter roles in this list",d=M('
'),c=M(' ').attr("placeholder",m).attr("aria-label",l);d.append(c),M("#members-am-visibility-toggles").append(d),c.on("input",function(){var s=(M(this).val()||"").trim().toLowerCase();M("#members-am-visibility-toggles .members-am-vis-row").each(function(){var e=M(this),r=(e.find("span").first().text()||"").toLowerCase(),n=String(e.find(".members-am-vis-cb").data("role")||"").toLowerCase(),a=!s||-1!==r.indexOf(s)||-1!==n.indexOf(s);e.toggleClass("members-am-vis-filter-hidden",!a)})})}o.forEach(function(e){var r=L(e.slug,C.selectedId),n=F(e.slug,i),a=M(' ').attr("data-role",e.slug).prop("checked",!r&&n);n||a.prop("disabled",!0);var s=M(' ').append(a,M(" ").text(e.label));n||(s.append(M(" ").text(" — no capability").css({color:"#999",fontStyle:"italic",marginLeft:"4px"})),s.css("opacity","0.5")),M("#members-am-visibility-toggles").append(s)}),M(".members-am-color").each(function(){M(this).data("wpWpColorPicker")&&M(this).wpColorPicker("destroy")}),M(".members-am-color").wpColorPicker({change:function(e,r){setTimeout(function(){pe()},20)},clear:function(){setTimeout(function(){pe()},20)}}),fe(),function(){var e=M(".members-am-demote-wrap"),n=M("#members-am-demote-parent"),r=M("#members-am-demote");if(!C.selectedId)return e.attr("hidden",!0);if(w(C.selectedId))return e.attr("hidden",!0);var a=Z()[0]||C.activeRoleSlugs[0];if(a&&A(a,C.selectedId))return e.attr("hidden",!0);e.removeAttr("hidden");var s=C.selectedId,t=membersAdminMenus.i18n&&membersAdminMenus.i18n.selectParentMenu||"";n.empty().append(M(" ").val("").text(t));var i=0;C.tree.forEach(function(e){if(e&&e.id&&e.id!==s){var r=e.title&&String(e.title).trim()?e.title:e.id;n.append(M(" ").val(e.id).text(r)),i++}});var o=0 ');"dashicons"===n?r.append(M(' ')):r.append(M(' ')),r.on("click",function(){M("#members-am-icon-value").val(e),M("#members-am-icon-type").val("dashicons"===n?"dashicon":"fontawesome"),pe()}),s.append(r)}})}function be(e,r){var n=C.activeRoleSlugs.indexOf(e);if(-1!==n){var a=n+r;if(!(a<0||a>=C.activeRoleSlugs.length)){h();var s=C.activeRoleSlugs[n];C.activeRoleSlugs[n]=C.activeRoleSlugs[a],C.activeRoleSlugs[a]=s,l(),Oe()}}}function he(e,r,n){var a,s,t,i=I(e).overrides[r]||{},o=null;if("__promote__"===i.parent?o=null:-1!==r.indexOf("::")?o=w(r):i.parent&&"__promote__"!==i.parent&&(o=i.parent),o){var m=I(e).submenu_order;m[o]||(m[o]=(a=e,t=R(s=o),C.tree.forEach(function(e){e&&e.id&&-1===e.id.indexOf("::")&&(I(a).overrides[e.id]||{}).parent===s&&-1===t.indexOf(e.id)&&t.push(e.id)}),t));var l=m[o],d=-1!==r.indexOf("::")?r.split("::").pop():r;if(-1===(u=l.indexOf(d)))return;if((p=u+n)<0||p>=l.length)return;h();var c=l[u];l[u]=l[p],l[p]=c}else{I(e).order&&I(e).order.length||(I(e).order=S());var u,p,f=I(e).order;if(-1===(u=f.indexOf(r)))return;if((p=u+n)<0||p>=f.length)return;h();var b=f[u];f[u]=f[p],f[p]=b}Oe()}function ve(){var e=Z();if(e.length){h();var a="sep-"+Date.now();e.forEach(function(e){I(e).order&&I(e).order.length||(I(e).order=S());var r=I(e).order,n=C.selectedId?r.indexOf(C.selectedId):r.length-1;n<0&&(n=r.length),r.splice(n+1,0,a)}),Oe()}}function ge(e){var r=M("#members-am-toolbar-loading");r.removeAttr("hidden"),r.find(".spinner").addClass("is-active"),r.find(".members-am-loading-text").text(e||""),M("#members-am-save, #members-am-reset, #members-am-import, #members-am-copy-apply, #members-am-undo").prop("disabled",!0)}function xe(){var e=M("#members-am-toolbar-loading");e.attr("hidden",!0),e.find(".spinner").removeClass("is-active"),e.find(".members-am-loading-text").text(""),M("#members-am-save, #members-am-reset, #members-am-import, #members-am-copy-apply").prop("disabled",!1),u()}function ye(e){ge(e||membersAdminMenus.i18n&&membersAdminMenus.i18n.saving||"Saving…");var s=membersAdminMenus.i18n&&membersAdminMenus.i18n.networkError||"Could not save settings. Check your connection and try again.";M.ajax({url:membersAdminMenus.ajaxUrl,type:"POST",dataType:"json",timeout:6e4,data:{action:"members_admin_menus_save",nonce:membersAdminMenus.nonce,settings:JSON.stringify(C.settings)}}).done(function(e){if(e&&void 0!==e.success){if(e.success)return a=t(),c=null,u(),void f("success",e.data&&e.data.message||membersAdminMenus.i18n&&membersAdminMenus.i18n.saved||"Settings saved.");f("error",e.data&&e.data.message?e.data.message:"Error")}else f("error",s)}).fail(function(e,r){if("abort"!==r){var n=s;if(e&&e.responseJSON&&void 0!==e.responseJSON.data){var a=e.responseJSON.data;"string"==typeof a&&a?n=a:a&&"string"==typeof a.message&&a.message&&(n=a.message)}f("error",n)}}).always(function(){xe()})}function _e(e,r){if(confirm("role"===e&&r?"Reset all settings for this role? This cannot be undone.":"Reset ALL menu settings for every role? This cannot be undone.")){ge(membersAdminMenus.i18n&&membersAdminMenus.i18n.resetting||"Resetting…");var n=!1;M.post(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_reset",nonce:membersAdminMenus.nonce,scope:e||"all",role:r||""}).done(function(e){if(e.success)return o("success",e.data&&e.data.message||membersAdminMenus.i18n&&membersAdminMenus.i18n.resetComplete||"Reset complete."),C.allowUnload=!0,n=!0,void location.reload();f("error",e.data&&e.data.message?e.data.message:membersAdminMenus.i18n&&membersAdminMenus.i18n.resetFailed||"Reset failed.")}).fail(function(){f("error",membersAdminMenus.i18n&&membersAdminMenus.i18n.resetNetworkError||membersAdminMenus.i18n.networkError||"Could not reset settings. Check your connection and try again.")}).always(function(){n||xe()})}}function ke(e){M.getJSON(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_user_search",nonce:membersAdminMenus.nonce,term:e},function(e){e.success&&e.data&&e.data.length?function(e){M(".members-am-user-suggestions").remove();var r=M("#members-am-user-search").parent();r.css("position","relative");var n=M('
');e.forEach(function(e){n.append(M('
').text(e.label).data("userId",e.id).on("click",function(){!function(e,r,n){C.previewUserId=e,C.previewUserLabel=r||"User #"+e,C.previewUserRoles=n||[],b(),C.settings.users[e]||(C.settings.users[e]={});Oe()}(e.id,e.label,e.roles),M(".members-am-user-suggestions").remove(),M("#members-am-user-search").val("")}))}),r.append(n),setTimeout(function(){M(document).one("click",function(){M(".members-am-user-suggestions").remove()})},0)}(e.data):M(".members-am-user-suggestions").remove()})}function we(){M(document).on("click","#members-am-role-chips .members-am-chip",function(){var e=M(this).data("role"),r=C.activeRoleSlugs.indexOf(e);-1===r?C.activeRoleSlugs.push(e):1 ');if(t.append(M('
').text("Reset Settings")),a&&s){var i=M(' ');i.append(M(' ')),i.append(M(' ').append(M(" ").text("Reset "+s),M(" ").text("Clear all menu settings for this role only"))),i.on("click",function(e){e.preventDefault(),e.stopPropagation(),M(".members-am-reset-dropdown").remove(),_e("role",a)}),t.append(i)}var o=M(' ');o.append(M(' ')),o.append(M(' ').append(M(" ").text("Reset all roles"),M(" ").text("Clear all menu settings for every role"))),o.on("click",function(e){e.preventDefault(),e.stopPropagation(),M(".members-am-reset-dropdown").remove(),_e("all")}),t.append(o),t.insertAfter(r),setTimeout(function(){M(document).one("click",function(){M(".members-am-reset-dropdown").remove()})},0)}),M("#members-am-export").on("click",function(e){e.preventDefault(),window.location.href=membersAdminMenus.exportUrl}),M("#members-am-import").on("click",function(){M("#members-am-import-file").trigger("click")}),M("#members-am-import-file").on("change",function(){var e=this.files&&this.files[0];e&&function(e){ge(membersAdminMenus.i18n&&membersAdminMenus.i18n.importing||"Importing…");var n=new FileReader;n.onerror=function(){xe(),f("error",membersAdminMenus.i18n&&membersAdminMenus.i18n.readFileFailed||"Could not read the file.")},n.onload=function(){try{var e=JSON.parse(n.result),r=!1;M.post(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_import",nonce:membersAdminMenus.nonce,settings:JSON.stringify(e)}).done(function(e){if(e.success)return o("success",e.data&&e.data.message||membersAdminMenus.i18n&&membersAdminMenus.i18n.imported||"Settings imported."),C.allowUnload=!0,r=!0,void location.reload();f("error",e.data&&e.data.message?e.data.message:"Error")}).fail(function(){f("error",membersAdminMenus.i18n&&membersAdminMenus.i18n.importNetworkError||membersAdminMenus.i18n.networkError||"Could not import settings. Check your connection and try again.")}).always(function(){r||xe()})}catch(e){xe(),f("error",membersAdminMenus.i18n&&membersAdminMenus.i18n.invalidJson||"Invalid JSON.")}},n.readAsText(e)}(e)}),M("#members-am-copy-apply").on("click",function(){var n=M("#members-am-copy-from").val(),r=M("#members-am-copy-to").val();if(n&&r)if(n!==r){var a="",s="";if(p().forEach(function(e){e.slug===n&&(a=e.label),e.slug===r&&(s=e.label)}),confirm('Copy menu settings from "'+a+'" to "'+s+'"?\nThis will overwrite "'+s+"\" menu configuration.\n\nNote: This copies menu order, hidden items, labels, icons, and colors.\nIt does NOT change the role's capabilities (items marked with a lock icon).")){h();var e=I(n),t={hidden:e.hidden?e.hidden.slice():[],order:[],submenu_order:{},overrides:{}},i=T(n);t.order=i.slice(),C.tree.forEach(function(e){if(e.children&&e.children.length){var r=U(n,e.id);r&&r.length&&(t.submenu_order[e.id]=r.slice())}}),e.overrides&&"object"==typeof e.overrides&&(t.overrides=JSON.parse(JSON.stringify(e.overrides))),C.settings.roles[r]=t,-1===C.activeRoleSlugs.indexOf(r)&&(C.activeRoleSlugs.push(r),l(),ae()),Oe(),ye(membersAdminMenus.i18n&&membersAdminMenus.i18n.copying||"Copying…")}}else f("error",membersAdminMenus.i18n&&membersAdminMenus.i18n.rolesMustDiffer||"Source and target roles must be different.")}),M("#members-am-admin-editable").on("change",function(){var e=!0;M(this).is(":checked")&&(e=window.confirm(membersAdminMenus.i18n.adminEditableWarn)),e?(C.settings._meta.admin_editable=M(this).is(":checked"),ne(),ae(),l(),Oe()):M(this).prop("checked",!1)}),M("#members-am-sync-scroll").prop("checked",!1!==C.syncScroll),M("#members-am-sync-scroll").on("change",function(){C.syncScroll=M(this).is(":checked");try{localStorage.setItem("members_am_sync_scroll",C.syncScroll?"1":"0")}catch(e){}ce()});var s="members_am_more_tools";function e(e){var r=M("#members-am-toolbar-extra"),n=M("#members-am-more-tools");if(r.length&&n.length){r.prop("hidden",!e),n.attr("aria-expanded",e?"true":"false").toggleClass("is-open",!!e);var a=membersAdminMenus.i18n||{};e&&a.moreToolsHideAria?n.attr("aria-label",a.moreToolsHideAria):!e&&a.moreToolsShowAria?n.attr("aria-label",a.moreToolsShowAria):n.removeAttr("aria-label");try{sessionStorage.setItem(s,e?"1":"0")}catch(e){}}}var r,n=!1;try{n="1"===sessionStorage.getItem(s)}catch(e){}e(n),M("#members-am-more-tools").on("click",function(){e(M("#members-am-toolbar-extra").prop("hidden"))}),M("#members-am-add-item").on("click",function(){h();var e="c"+Date.now();C.settings.custom_items.push({id:e,label:"Custom link",url:window.location.origin+"/wp-admin/",icon_type:"dashicon",icon:"dashicons-admin-generic",parent:"",position:99,cap:"read"}),C.tree=_(),C.selectedId=x({id:e}),Oe(),ue()}),M("#members-am-remove-custom").on("click",function(){var r=k(C.selectedId);r&&r.customId&&(h(),C.settings.custom_items=(C.settings.custom_items||[]).filter(function(e){return e.id!==r.customId}),C.selectedId=null,C.tree=_(),Oe(),M("#members-am-edit-panel").attr("hidden",!0))}),M("#members-am-edit-close").on("click",function(){C.selectedId=null,M("#members-am-edit-panel").attr("hidden",!0),Oe()}),M("#members-am-edit-target-role").on("change",ue),M("#members-am-edit-label, #members-am-edit-url, #members-am-icon-value, #members-am-badge-text").on("input",function(){pe()}),M("#members-am-item-cap").on("input",function(){pe()}),M(".members-am-icon-tabs .button").on("click",function(){M(".members-am-icon-tabs .button").removeClass("is-active"),M(this).addClass("is-active"),C.iconTab="fontawesome"===M(this).data("tab")?"fontawesome":"upload"===M(this).data("tab")?"upload":"dashicons",fe()}),M("#members-am-icon-search").on("input",fe),M("#members-am-media-upload").on("click",function(e){e.preventDefault(),C.mediaFrame||(C.mediaFrame=wp.media({title:"Choose menu icon",button:{text:"Use as icon"},multiple:!1,library:{type:"image"}}),C.mediaFrame.on("select",function(){var e=C.mediaFrame.state().get("selection").first().toJSON(),r=e.url||"";e.sizes&&(e.sizes.thumbnail?r=e.sizes.thumbnail.url:e.sizes.medium&&(r=e.sizes.medium.url)),M("#members-am-icon-type").val("custom"),M("#members-am-icon-value").val(r),pe()})),C.mediaFrame.open()}),M(document).on("change",".members-am-vis-cb",function(){h();var e=M(this).data("role");if(M(this).is(":checked")){var r=I(e).hidden,n=r.indexOf(C.selectedId);-1!==n&&r.splice(n,1)}else-1===I(e).hidden.indexOf(C.selectedId)&&I(e).hidden.push(C.selectedId);Oe()}),M("#members-am-add-sep").on("click",ve),M("#members-am-promote").on("click",function(){if(C.selectedId){h();var s=C.selectedId,e=ee()||{};if(-1===s.indexOf("::")&&e.parent&&"__promote__"!==e.parent){var t=e.parent,r=$();if(r){var n=P(r);if(n.overrides[s]&&delete n.overrides[s].parent,n.submenu_order&&n.submenu_order[t]){var a=n.submenu_order[t].indexOf(s);-1!==a&&n.submenu_order[t].splice(a,1)}if(n.order.length||(n.order=S()),-1===n.order.indexOf(s)){var i=n.order.indexOf(t);-1!==i?n.order.splice(i+1,0,s):n.order.push(s)}}else Z().forEach(function(e){var r=I(e);if(r.overrides[s]&&delete r.overrides[s].parent,r.submenu_order&&r.submenu_order[t]){var n=r.submenu_order[t].indexOf(s);-1!==n&&r.submenu_order[t].splice(n,1)}if(r.order&&r.order.length||(r.order=S()),-1===r.order.indexOf(s)){var a=r.order.indexOf(t);-1!==a?r.order.splice(a+1,0,s):r.order.push(s)}});return pe(),void ue()}re("parent","__promote__");var o=w(s);Z().forEach(function(e){var r=I(e);if(r.order&&r.order.length||(r.order=S()),-1===r.order.indexOf(s))if(o){var n=r.order.indexOf(o);-1!==n?r.order.splice(n+1,0,s):r.order.push(s)}else r.order.push(s)}),pe(),ue()}}),M("#members-am-demote").on("click",function(){var e=M("#members-am-demote-parent").val();e?(h(),re("parent",e),pe(),ue()):f("warning",membersAdminMenus.i18n&&membersAdminMenus.i18n.selectParentFirst||"Please choose a parent menu from the list.")}),M("#members-am-user-search").on("input",function(){var e=M(this).val();clearTimeout(r),r=setTimeout(function(){1 ").val("__all__").text("All roles")),C.activeRoleSlugs.forEach(function(r){var e=(p().filter(function(e){return e.slug===r})[0]||{}).label||r;n.append(M(" ").val(r).text(e))}),C.previewUserId&&n.append(M(" ").val("__user__"+C.previewUserId).text(C.previewUserLabel||"User #"+C.previewUserId)),C.selectedId&&ue()}M(function(){var r,n,e;!function(){try{var e=sessionStorage.getItem(i);if(!e)return;sessionStorage.removeItem(i);var r=JSON.parse(e);r&&r.message&&f(r.type,r.message)}catch(e){}}(),b(),C.tree=_(),ne(),M("#members-am-admin-editable").prop("checked",!!C.settings._meta.admin_editable),r=M("#members-am-copy-from").empty(),n=M("#members-am-copy-to").empty(),(e=p()).forEach(function(e){r.append(M(" ").val(e.slug).text(e.label)),n.append(M(" ").val(e.slug).text(e.label))}),1
Date: Fri, 24 Apr 2026 10:51:49 +0300
Subject: [PATCH 41/73] fix(admin): remove custom menu item button
---
addons/members-admin-menus/app/functions.php | 33 +++++-
js/admin-menus.js | 104 +++++++++++++++----
js/admin-menus.min.js | 2 +-
3 files changed, 117 insertions(+), 22 deletions(-)
diff --git a/addons/members-admin-menus/app/functions.php b/addons/members-admin-menus/app/functions.php
index a30e660..4619bef 100644
--- a/addons/members-admin-menus/app/functions.php
+++ b/addons/members-admin-menus/app/functions.php
@@ -176,8 +176,10 @@ function apply_menu_modifications() {
// Phase 2: label, icon, URL, colors.
if ( ! empty( $cfg['overrides'] ) && is_array( $cfg['overrides'] ) ) {
- apply_menu_overrides( $cfg['overrides'] );
+ // Colors must run before apply_menu_overrides(): custom items replace $menu[ $k ][2] with the
+ // external URL while overrides stay keyed by members-am-* — otherwise CSS rules never match.
apply_color_overrides( $cfg['overrides'] );
+ apply_menu_overrides( $cfg['overrides'] );
apply_level_moves( $cfg['overrides'] );
}
@@ -713,6 +715,31 @@ function members_am_promoted_menu_callback() {
}
}
+/**
+ * Resolve which overrides key applies to a top-level $menu row (handles members-am-* slug replaced by URL in $item[2]).
+ *
+ * @param array $item One $menu row (0–6).
+ * @param array $overrides Overrides map.
+ * @return string Matching key or ''.
+ */
+function members_am_resolve_top_level_override_key( $item, $overrides ) {
+ if ( empty( $overrides ) || ! is_array( $overrides ) ) {
+ return '';
+ }
+ $try = isset( $item[2] ) ? (string) $item[2] : '';
+ if ( '' !== $try && ! empty( $overrides[ $try ] ) && is_array( $overrides[ $try ] ) ) {
+ return $try;
+ }
+ // $item[5] is the admin page hook (e.g. toplevel_page_members-am-c123); suffix matches the internal menu slug.
+ if ( ! empty( $item[5] ) && is_string( $item[5] ) && preg_match( '/_page_(.+)$/', $item[5], $m ) ) {
+ $cand = $m[1];
+ if ( '' !== $cand && ! empty( $overrides[ $cand ] ) && is_array( $overrides[ $cand ] ) ) {
+ return $cand;
+ }
+ }
+ return '';
+}
+
/**
* Apply color overrides via admin_head CSS rules.
*
@@ -731,8 +758,8 @@ function apply_color_overrides( $overrides ) {
if ( empty( $item[2] ) ) {
continue;
}
- $slug = $item[2];
- if ( empty( $overrides[ $slug ] ) || ! is_array( $overrides[ $slug ] ) ) {
+ $slug = members_am_resolve_top_level_override_key( $item, $overrides );
+ if ( '' === $slug ) {
continue;
}
$o = $overrides[ $slug ];
diff --git a/js/admin-menus.js b/js/admin-menus.js
index 18e6fcd..8454b1f 100644
--- a/js/admin-menus.js
+++ b/js/admin-menus.js
@@ -440,16 +440,76 @@
return part.indexOf('members-am-') === 0;
}
+ /**
+ * Remove Members custom hook rows from a tree clone when they are no longer in settings
+ * (localized menuTree is static for the page load).
+ *
+ * @param {Array} nodes Tree nodes (mutated).
+ * @param {Object} allowedHooks Map of hook slug -> true for current custom_items.
+ */
+ function pruneStaleMembersAmNodes(nodes, allowedHooks) {
+ if (!Array.isArray(nodes)) {
+ return;
+ }
+ for (var i = nodes.length - 1; i >= 0; i--) {
+ var n = nodes[i];
+ if (n.children && n.children.length) {
+ pruneStaleMembersAmNodes(n.children, allowedHooks);
+ }
+ var hookPart = n.id ? (n.id.indexOf('::') !== -1 ? n.id.split('::').pop() : n.id) : '';
+ if (hookPart && hookPart.indexOf('members-am-') === 0 && !allowedHooks[hookPart]) {
+ nodes.splice(i, 1);
+ }
+ }
+ }
+
+ function findNodeInTree(nodes, id) {
+ if (!nodes || !id) {
+ return null;
+ }
+ for (var i = 0; i < nodes.length; i++) {
+ if (nodes[i].id === id) {
+ return nodes[i];
+ }
+ if (nodes[i].children && nodes[i].children.length) {
+ var f = findNodeInTree(nodes[i].children, id);
+ if (f) {
+ return f;
+ }
+ }
+ }
+ return null;
+ }
+
function buildTreeWithCustoms() {
var base = $.extend(true, [], membersAdminMenus.menuTree || []);
- // Build a set of existing IDs so we don't add duplicates.
+ var allowedHooks = {};
+ (state.settings.custom_items || []).forEach(function (item) {
+ if (item && item.id) {
+ allowedHooks[customHookId(item)] = true;
+ }
+ });
+ pruneStaleMembersAmNodes(base, allowedHooks);
+ // Build a set of existing top-level IDs so we don't add duplicates.
var existingIds = {};
- base.forEach(function (n) { existingIds[n.id] = true; });
+ base.forEach(function (n) {
+ existingIds[n.id] = true;
+ });
(state.settings.custom_items || []).forEach(function (item) {
if (!item || !item.id) {
return;
}
var hookId = customHookId(item);
+ var parentSlug = (item.parent && String(item.parent).trim()) || '';
+ if (parentSlug) {
+ var fullId = parentSlug + '::' + hookId;
+ var subNode = findNodeInTree(base, fullId);
+ if (subNode) {
+ subNode.custom = true;
+ subNode.customId = item.id;
+ }
+ return;
+ }
if (existingIds[hookId]) {
// Already present in the base tree (injected by PHP).
// Just flag it as custom so badges and remove work.
@@ -471,24 +531,13 @@
customId: item.id,
children: [],
});
+ existingIds[hookId] = true;
});
return base;
}
function findNode(id, nodes) {
- nodes = nodes || state.tree;
- for (var i = 0; i < nodes.length; i++) {
- if (nodes[i].id === id) {
- return nodes[i];
- }
- if (nodes[i].children && nodes[i].children.length) {
- var f = findNode(id, nodes[i].children);
- if (f) {
- return f;
- }
- }
- }
- return null;
+ return findNodeInTree(nodes || state.tree, id);
}
/**
@@ -2027,7 +2076,12 @@
.val(state.settings.capabilities[state.selectedId] || '');
var custom = node && node.custom;
- $('#members-am-remove-custom').toggle(!!custom);
+ var $rmCustom = $('#members-am-remove-custom');
+ if (custom) {
+ $rmCustom.removeAttr('hidden');
+ } else {
+ $rmCustom.attr('hidden', 'hidden');
+ }
$('#members-am-visibility-toggles').empty();
var itemCap = (node && node.cap) || 'read';
@@ -2968,12 +3022,26 @@
$('#members-am-remove-custom').on('click', function () {
var node = findNode(state.selectedId);
- if (!node || !node.customId) {
+ var storageId = node && node.customId ? String(node.customId) : '';
+ if (!storageId && node && node.custom && state.selectedId) {
+ var hook =
+ state.selectedId.indexOf('::') !== -1
+ ? state.selectedId.split('::').pop()
+ : state.selectedId;
+ if (hook.indexOf('members-am-') === 0) {
+ (state.settings.custom_items || []).forEach(function (c) {
+ if (c && c.id && customHookId(c) === hook) {
+ storageId = String(c.id);
+ }
+ });
+ }
+ }
+ if (!node || !storageId) {
return;
}
pushUndoSnapshot();
state.settings.custom_items = (state.settings.custom_items || []).filter(function (c) {
- return c.id !== node.customId;
+ return !c || String(c.id) !== storageId;
});
state.selectedId = null;
state.tree = buildTreeWithCustoms();
diff --git a/js/admin-menus.min.js b/js/admin-menus.min.js
index 6062e59..b4b3a9d 100644
--- a/js/admin-menus.min.js
+++ b/js/admin-menus.min.js
@@ -1 +1 @@
-!function(M){"use strict";var C={settings:M.extend(!0,{},membersAdminMenus.settings),tree:[],activeRoleSlugs:[],carouselPage:0,columnsPerPage:3,selectedId:null,iconTab:"dashicons",previewUserId:null,previewUserRoles:[],userSuggestions:[],mediaFrame:null,allowUnload:!1,syncScroll:function(){try{return"0"!==localStorage.getItem("members_am_sync_scroll")}catch(e){return!0}}(),columnFilters:{},columnBulkSelection:{},collapsedParents:{}},a="";function t(){return function r(n){if(null===n)return"null";var e=typeof n;return"string"==e||"number"==e||"boolean"==e?JSON.stringify(n):"undefined"==e?"null":Array.isArray(n)?"["+n.map(function(e){return r(e)}).join(",")+"]":"object"!=e?JSON.stringify(n):"{"+Object.keys(n).sort().map(function(e){return JSON.stringify(e)+":"+r(n[e])}).join(",")+"}"}(C.settings)}function s(){if(!C.allowUnload&&t()!==a)return membersAdminMenus.i18n&&membersAdminMenus.i18n.unsavedChanges||""}var i="members_am_notice";function f(e,r){if(r){var n=M("#members-am-notices");n.length||(M(".members-admin-menus-wrap h1").first().after('
'),n=M("#members-am-notices"));var a=M("
",{class:"notice is-dismissible"}).addClass("notice-"+(e||"info"));a.append(M("
").text(r)),n.prepend(a),M(document).trigger("wp-notice-added")}}function o(e,r){try{sessionStorage.setItem(i,JSON.stringify({type:e||"success",message:r}))}catch(e){}}var e=["dashicons-menu","dashicons-admin-dashboard","dashicons-admin-post","dashicons-admin-page","dashicons-admin-media","dashicons-admin-comments","dashicons-admin-appearance","dashicons-admin-plugins","dashicons-admin-users","dashicons-admin-tools","dashicons-admin-settings","dashicons-admin-generic","dashicons-edit","dashicons-plus","dashicons-chart-bar","dashicons-cart","dashicons-products","dashicons-email","dashicons-groups","dashicons-heart","dashicons-star-filled","dashicons-smiley","dashicons-info","dashicons-lock","dashicons-unlock","dashicons-visibility","dashicons-hidden","dashicons-arrow-up","dashicons-arrow-down","dashicons-admin-network","dashicons-performance"],r=["fa-solid fa-house","fa-solid fa-user","fa-solid fa-gear","fa-solid fa-file","fa-solid fa-image","fa-solid fa-cart-shopping","fa-solid fa-chart-line","fa-solid fa-envelope","fa-solid fa-book","fa-solid fa-link","fa-solid fa-bell","fa-solid fa-star","fa-solid fa-heart","fa-solid fa-lock","fa-solid fa-unlock","fa-solid fa-pen","fa-solid fa-trash","fa-solid fa-plus","fa-solid fa-minus"],m="members_am_view_state";function l(){try{localStorage.setItem(m,JSON.stringify({activeRoleSlugs:C.activeRoleSlugs,carouselPage:C.carouselPage}))}catch(e){}}function d(e){return JSON.parse(JSON.stringify(e))}var c=null;function h(){c=d(C.settings),u()}function u(){var e=M("#members-am-undo");if(e.length){var r=!!c;e.prop("disabled",!r).attr("aria-disabled",r?"false":"true")}}function p(){return membersAdminMenus.roles||[]}function b(){C.settings._meta&&!Array.isArray(C.settings._meta)||(C.settings._meta={version:3,admin_editable:!1}),C.settings.roles&&!Array.isArray(C.settings.roles)||(C.settings.roles={}),C.settings.users&&!Array.isArray(C.settings.users)||(C.settings.users={}),Array.isArray(C.settings.custom_items)||(C.settings.custom_items=[]),C.settings.capabilities&&!Array.isArray(C.settings.capabilities)||(C.settings.capabilities={})}function I(e){b(),C.settings.roles[e]||(C.settings.roles[e]={hidden:[],order:[],submenu_order:{},overrides:{}});var r=C.settings.roles[e];return r.hidden&&Array.isArray(r.hidden)||(r.hidden=[]),r.order&&Array.isArray(r.order)||(r.order=[]),r.submenu_order&&!Array.isArray(r.submenu_order)||(r.submenu_order={}),r.overrides&&!Array.isArray(r.overrides)||(r.overrides={}),r}function P(e){b(),C.settings.users[e]||(C.settings.users[e]={});var r=C.settings.users[e];return r.hidden&&Array.isArray(r.hidden)||(r.hidden=[]),r.order&&Array.isArray(r.order)||(r.order=[]),r.overrides&&!Array.isArray(r.overrides)||(r.overrides={}),r.submenu_order&&!Array.isArray(r.submenu_order)||(r.submenu_order={}),r}function v(r){var e=P(r);return(e.order&&e.order.length?e.order.slice():S()).filter(function(e){return 0===e.indexOf("sep-")||!!k(e)&&!function(e,r){if(!r||-1!==r.indexOf("::"))return;var n=P(e),a=n.overrides&&n.overrides[r]||{};return a.parent&&"__promote__"!==a.parent}(r,e)})}function g(e,r,n,a){var s,t=P(e),i=t.overrides&&t.overrides[r]||{},o=n;!o&&i.parent&&"__promote__"!==i.parent&&(o=i.parent);var m,l,d,c,u=-1!==r.indexOf("::")?r.split("::").pop():r,p=(s=o?(t.submenu_order[o]||(t.submenu_order[o]=(m=e,d=R(l=o),c=P(m),C.tree.forEach(function(e){e&&e.id&&-1===e.id.indexOf("::")&&(c.overrides&&c.overrides[e.id]||{}).parent===l&&-1===d.indexOf(e.id)&&d.push(e.id)}),d)),t.submenu_order[o]):(t.order.length||(t.order=S()),t.order)).indexOf(u);if(-1!==p){var f=p+a;f<0||f>=s.length||(h(),s.splice(p,1),s.splice(f,0,o?u:r))}}function x(e){var r=e.id||"c";return"members-am-"+String(r).replace(/[^a-z0-9_-]/gi,"-").toLowerCase()}function y(e){return!!e&&0===(-1!==e.indexOf("::")?e.split("::").pop():e).indexOf("members-am-")}function _(){var a=M.extend(!0,[],membersAdminMenus.menuTree||[]),s={};return a.forEach(function(e){s[e.id]=!0}),(C.settings.custom_items||[]).forEach(function(e){if(e&&e.id){var r=x(e);if(s[r]){for(var n=0;ns&&(C.carouselPage=s))}}C.activeRoleSlugs=r.filter(function(e){return"administrator"!==e||n}),C.activeRoleSlugs.length||(C.activeRoleSlugs=["subscriber"])}function ae(){var a=M("#members-am-role-chips").empty();p().forEach(function(e){if("administrator"!==e.slug||C.settings._meta.admin_editable){var r=-1!==C.activeRoleSlugs.indexOf(e.slug),n=M(' ').text(e.label).attr("data-role",e.slug).toggleClass("is-active",r);a.append(n)}})}function se(t,i,e,o,m){(function(e,r,n,a,s){s=s||0;var t=r.id,i=L(e,t),o=!F(e,r.cap),m=I(e).overrides[t]||{},l=m.label||r.title||t,d=M('
').attr("data-id",t).attr("data-menu-parent",n||"").toggleClass("is-hidden",i).toggleClass("is-no-cap",o).toggleClass("is-selected",C.selectedId===t).toggleClass("is-sub",0 ');if(p){V(c);var b=!!C.collapsedParents[c][t],h=u.expandSubmenus||"Expand submenu items",v=u.collapseSubmenus||"Collapse submenu items";M(' ').attr("aria-expanded",!b).attr("aria-label",(b?h:v)+": "+l).append(M(' ').addClass(b?"dashicons-arrow-right-alt2":"dashicons-arrow-down-alt2")).on("click",function(e){e.stopPropagation(),V(c),C.collapsedParents[c][t]=!C.collapsedParents[c][t],ce()}).appendTo(f),d.toggleClass("is-collapse-collapsed",b)}else f.append(M(' '));d.append(f);var g=u.bulkCheckboxAria||"Include in bulk actions",x=M(' '),y=M(' ').prop("checked",!!C.columnBulkSelection[c].ids[t]).attr("aria-label",g+": "+l).on("click",function(e){e.stopPropagation()}).on("change",function(e){e.stopPropagation(),z(c,t,M(this).prop("checked")),ce()});x.append(y),d.append(x);var _=M('
');if(0===s){var k=m.icon||r.icon,w=J(k,m.icon_type||r.icon_type);if("fontawesome"===w&&k)_.append(M(' '));else if("svg"!==w&&"image"!==w&&"custom"!==w||!k){var O=k&&0===k.indexOf("dashicons-")?k:"dashicons-admin-generic";_.append(M(' '))}else _.append(M(" ").attr("src",k).css({width:"20px",height:"20px",display:"inline-block",verticalAlign:"middle",objectFit:"contain",filter:"none"}))}r.custom&&_.append(M('custom '));m.label&&_.append(M('edit '));if(_.append(M(' ').text(l)),m.badge){var A=m.badge_bg||"#d63638";_.append(M(' ').text(m.badge).css({backgroundColor:A,color:"#fff",fontSize:"9px",padding:"1px 5px",borderRadius:"2px",marginLeft:"4px",whiteSpace:"nowrap"}))}o&&_.append(M(' Roles.\">🔒 no access "));d.append(_),m.color_bg&&d.css("background-color",m.color_bg);m.color_text&&d.find(".members-am-item-label").css("color",m.color_text);m.color_icon&&(d.find(".dashicons").css("color",m.color_icon),d.find(".members-am-fa-icon i").css("color",m.color_icon),d.find("img").css("filter","none"));var S=M('
');S.append(M(' ').text("◉"),M(' ').text("↑"),M(' ').text("↓")),d.append(S),a.append(d)})(t,i,e,o,m=m||0),i.children&&i.children.length&&U(t,i.id).forEach(function(e){var r,n,a,s=(r=t,n=i.id,k(N(n,a=e))||(-1===a.indexOf("::")&&(I(r).overrides[a]||{}).parent===n?k(a):null));s&&"__promote__"!==(I(t).overrides[s.id]||{}).parent&&se(t,s,i.id,o,m+1)})}function te(n,a,e,s,t,i){i=i||0,t.append(function(r,e,n,a,s){s=s||0;var t=a.overrides&&a.overrides[r.id]||{},i=t.label||r.title,o=function(e,r){var n=P(e);if(-1!==n.hidden.indexOf(r))return!0;var a=E(r,e);return!(!a||-1===n.hidden.indexOf(a))}(n,r.id),m=!function(e){if(!e||"read"===e)return 1;for(var r=C.previewUserRoles||[],n=0;n").addClass(d).attr("data-id",r.id).attr("data-menu-parent",e||""),u="u:"+n;D(u);var p=membersAdminMenus.i18n||{},f=r.children&&r.children.length,b=M(' ');if(f){V(u);var h=!!C.collapsedParents[u][r.id],v=p.expandSubmenus||"Expand submenu items",g=p.collapseSubmenus||"Collapse submenu items";M(' ').attr("aria-expanded",!h).attr("aria-label",(h?v:g)+": "+i).append(M(' ').addClass(h?"dashicons-arrow-right-alt2":"dashicons-arrow-down-alt2")).on("click",function(e){e.stopPropagation(),V(u),C.collapsedParents[u][r.id]=!C.collapsedParents[u][r.id],ce()}).appendTo(b),c.toggleClass("is-collapse-collapsed",h)}else b.append(M(' '));c.append(b);var x=p.bulkCheckboxAria||"Include in bulk actions",y=M(' '),_=M(' ').prop("checked",!!C.columnBulkSelection[u].ids[r.id]).attr("aria-label",x+": "+i).on("click",function(e){e.stopPropagation()}).on("change",function(e){e.stopPropagation(),z(u,r.id,M(this).prop("checked")),ce()});y.append(_),c.append(y);var k=M('
');if(0===s){var w=t.icon||r.icon,O=J(w,t.icon_type||r.icon_type);"fontawesome"===O&&w?k.append(M(' ')):"svg"!==O&&"image"!==O&&"custom"!==O||!w?w&&0===w.indexOf("dashicons-")?k.append(M(' ')):k.append(M(' ')):k.append(M(" ").attr("src",w).css({width:"20px",height:"20px",display:"inline-block",verticalAlign:"middle",objectFit:"contain",filter:"none"}))}r.custom&&k.append(M('custom '));t.label&&k.append(M('edit '));if(k.append(M(' ').text(i)),t.badge){var A=t.badge_bg||"#d63638";k.append(M(' ').text(t.badge).css({backgroundColor:A,color:"#fff",fontSize:"9px",padding:"1px 5px",borderRadius:"2px",marginLeft:"4px",whiteSpace:"nowrap"}))}m&&k.append(M('🔒 no access "));c.append(k),t.color_bg&&c.css("background-color",t.color_bg);t.color_text&&c.find(".members-am-item-label").css("color",t.color_text);t.color_icon&&(c.find(".dashicons").css("color",t.color_icon),c.find(".members-am-fa-icon i").css("color",t.color_icon));var S=M('
');return S.append(M(' ').text(o?"◯":"◉"),M(' ').text("↑"),M(' ').text("↓")),c.append(S),c.on("click",function(e){M(e.target).closest("button, .members-am-item-cb, .members-am-collapse-toggle").length||(C.selectedId=r.id,Oe())}),c}(a,e,n,s,i)),a.children&&a.children.length&&function(e,r){var n=R(r),a=P(e);C.tree.forEach(function(e){e&&e.id&&-1===e.id.indexOf("::")&&(a.overrides&&a.overrides[e.id]||{}).parent===r&&-1===n.indexOf(e.id)&&n.push(e.id)});var s=a.submenu_order&&a.submenu_order[r];if(!s||!s.length)return n.slice();var t=s.filter(function(e){return-1!==n.indexOf(e)});return n.forEach(function(e){-1===t.indexOf(e)&&t.push(e)}),t}(n,a.id).forEach(function(e){var r=function(e,r,n){var a=k(N(r,n));if(a)return a;if(-1===n.indexOf("::")){var s=P(e);if((s.overrides&&s.overrides[n]||{}).parent===r)return k(n)}return null}(n,a.id,e);r&&"__promote__"!==(s.overrides&&s.overrides[r.id]||{}).parent&&te(n,r,a.id,s,t,i+1)})}function ie(e,r){var s=(r||"").trim().toLowerCase(),n=e.children(".members-am-item");if(!s)return n.removeClass("members-am-filter-hidden"),void e.children(".members-am-sep").removeClass("members-am-filter-hidden");var i={};n.each(function(){var e=M(this),r=e.attr("data-id"),n=(e.find(".members-am-item-label").first().text()||"").toLowerCase(),a=(r||"").toLowerCase();i[r]=-1!==n.indexOf(s)||-1!==a.indexOf(s)});var o={};n.each(function(){var e=M(this).attr("data-id"),r=M(this).attr("data-menu-parent")||"";o[r]||(o[r]=[]),o[r].push(e)});var m={};function l(e){var r,n=i[e],a=o[e]||[],s=!1;for(r=0;r '),o=M(' ').attr("placeholder",s).attr("aria-label",t).val(a);i.append(o),e.find(".members-am-sidebar-head").first().after(i),o.on("input",function(){C.columnFilters[n]=M(this).val(),ie(r,M(this).val())}),ie(r,a)}function me(e,r){var t=0===String(r).indexOf("u:"),i=t?parseInt(r.replace(/^u:/,""),10):0,o=t?null:r,m=r,l=membersAdminMenus.i18n||{},n=M('
').attr("data-column-key",m),a=M('
');a.append(M(' ').text(l.bulkSelectVisible||"Select visible"),M(' ').text(l.bulkClearSelection||"Clear selection"));var s=M('
');s.append(M(' ').text(l.collapseAllMenus||"Collapse all"),M(' ').text(l.expandAllMenus||"Expand all"));var d=M(' ').attr("aria-label",l.bulkVisibilityLabel||"Menu visibility for this column");d.append(M(' ').text(l.bulkActionsPlaceholder||"Choose visibility…"));var c=M(" ").attr("label",l.bulkGroupWholeColumn||"Whole column");c.append(M(' ').text(l.bulkShowAllItems||"Show every menu item"),M(' ').text(l.bulkHideAllItems||"Hide every menu item"));var u=M(" ").attr("label",l.bulkGroupCheckedRows||"Checked rows");u.append(M(' ').text(l.bulkKeepOnlyCheckedVisible||"Keep only checked visible"),M(' ').text(l.bulkHideCheckedItems||"Hide checked items"),M(' ').text(l.bulkShowCheckedItems||"Show checked items")),d.append(c,u),n.append(a,s,d);var p=e.find(".members-am-col-filter").first();p.length?p.after(n):e.find(".members-am-sidebar-head").first().after(n),d.on("change",function(){var e=M(this).val();if(M(this).val(""),e)if(!("keep-only-checked"===e||"hide-checked"===e||"show-checked"===e)||B(m).length){if("keep-only-checked"===e){if(!window.confirm(l.bulkConfirmKeepOnlyChecked||"Hide all items except checked items and their parent menus?"))return}else if("hide-all"===e){if(!window.confirm(l.bulkConfirmHideAll||"Hide every menu item in this column?"))return}else if("hide-checked"===e&&!window.confirm(l.bulkConfirmHideChecked||"Hide the checked items (and their submenus where applicable)?"))return;var r,n,a,s;h(),t?"show-all"===e?P(i).hidden=[]:"hide-all"===e?(a=i,s=j(),P(a).hidden=s.slice()):"keep-only-checked"===e?function(e,n){var r=B(e);if(r.length){var a={};r.forEach(function(e){for(var r=e;r;)a[r]=!0,r=E(r,n)});var s=j(),t=P(n).hidden;t.length=0,s.forEach(function(e){a[e]||t.push(e)})}}(m,i):"hide-checked"===e?X(m,i):"show-checked"===e&&Y(m,i):"show-all"===e?I(o).hidden=[]:"hide-all"===e?(r=o,n=j(),I(r).hidden=n.slice()):"keep-only-checked"===e?function(e,n){var r=B(e);if(r.length){var a={};r.forEach(function(e){for(var r=e;r;)a[r]=!0,r=O(r,n)});var s=j(),t=I(n).hidden;t.length=0,s.forEach(function(e){a[e]||t.push(e)})}}(m,o):"hide-checked"===e?Q(m,o):"show-checked"===e&&q(m,o),Oe()}else f("warning",l.bulkSelectCheckedFirst||"Check one or more menu items first.")})}function le(e){return-1!==e.indexOf("::")?e.split("::").pop():e}function de(){M.fn.sortable&&M("#members-am-columns .members-am-sidebar-list").each(function(){var e=M(this);e.data("ui-sortable")&&e.sortable("destroy");var r=e.closest(".members-am-column"),n=r.data("role"),a=r.data("user");e.sortable({axis:"y",distance:6,items:"> .members-am-item, > .members-am-sep",cancel:".members-am-item-actions button, .members-am-item-cb, .members-am-item-cb-wrap, .members-am-collapse-toggle",placeholder:"members-am-sort-placeholder",forcePlaceholderSize:!0,tolerance:"pointer",start:function(){h()},update:function(){a?function(e,r){var s=[],t={};e.children().each(function(){var e=M(this);if(e.hasClass("members-am-sep")){var r=e.attr("data-sep-id");r&&s.push(r)}else if(e.hasClass("members-am-item")){var n=e.attr("data-id");if(n){var a=e.attr("data-menu-parent");void 0===a||""===a?s.push(n):(t[a]||(t[a]=[]),t[a].push(le(n)))}}});var n=P(r);n.order=s,n.submenu_order=t}(e,a):n&&function(e,r){var s=[],t={};e.children().each(function(){var e=M(this);if(e.hasClass("members-am-sep")){var r=e.attr("data-sep-id");r&&s.push(r)}else if(e.hasClass("members-am-item")){var n=e.attr("data-id");if(n){var a=e.attr("data-menu-parent");void 0===a||""===a?s.push(n):(t[a]||(t[a]=[]),t[a].push(le(n)))}}});var n=I(r);n.order=s,n.submenu_order=t}(e,n),ue()}})})}function ce(){var n=M("#members-am-columns"),a={};n.find(".members-am-column").each(function(){var e=M(this).data("role");if(e){var r=M(this).find(".members-am-sidebar-list");r.length&&(a[e]=r.scrollTop())}}),n.empty();var e=C.carouselPage*C.columnsPerPage;if(C.activeRoleSlugs.slice(e,e+C.columnsPerPage).forEach(function(e){var r=M('
');!function(n,e){e.empty();var r=M(''),a=(p().filter(function(e){return e.slug===n})[0]||{}).label||n;r.append(M('').text(a)),r.append(M(' ').append(M(' ').text("◀"),M(' ').text("▶"))),e.append(r);var s=M('');T(n).forEach(function(e){if(0!==e.indexOf("sep-")){var r=k(e);r&&se(n,r,null,s,0)}else s.append(M('
').attr("data-sep-id",e).text("—"))}),e.append(s),K(s,n),oe(e,s,n),me(e,n)}(e,r),n.append(r),a[e]&&r.find(".members-am-sidebar-list").scrollTop(a[e])}),C.previewUserId){var s=C.previewUserId,r=M('
'),t=M('');t.append(M(" ").text(C.previewUserLabel||"User #"+s)),t.append(M('× ').on("click",function(){C.previewUserId=null,C.previewUserLabel=null,C.previewUserRoles=[],Oe()})),r.append(t);var i=M(''),o=P(s);v(s).forEach(function(e){if(0!==e.indexOf("sep-")){var r=k(e);r&&te(s,r,null,o,i,0)}else i.append(M('
').attr("data-sep-id",e).text("——"))}),r.append(i),K(i,"u:"+s),oe(r,i,"u:"+s),me(r,"u:"+s),n.append(r)}if(C.syncScroll){var m=n.find(".members-am-sidebar-list"),l=!1;m.on("scroll",function(){if(!l){l=!0;var e=M(this).scrollTop();m.not(this).scrollTop(e),l=!1}})}!function(){var e=Math.max(1,Math.ceil(C.activeRoleSlugs.length/C.columnsPerPage)),r=(Math.min(C.carouselPage+1,e),C.carouselPage*C.columnsPerPage+1),n=Math.min((C.carouselPage+1)*C.columnsPerPage,C.activeRoleSlugs.length);M("#members-am-carousel-status").text(r+"–"+n+" "+membersAdminMenus.i18n.of+" "+C.activeRoleSlugs.length);for(var a=M("#members-am-carousel-dots").empty(),s=0;s ').toggleClass("is-active",s===C.carouselPage))}(),de()}function ue(){if(C.selectedId){M("#members-am-edit-panel").removeAttr("hidden");var e=k(C.selectedId),r=ee()||{};M("#members-am-edit-title").text(e?e.title:C.selectedId),M("#members-am-edit-label").val(r.label||e&&e.title||"");var n=y(C.selectedId);M("#members-am-edit-url-wrap").toggle(n),M("#members-am-edit-url").attr("placeholder","Override URL (leave empty for default)").val(n&&(r.url||e&&e.url)||"").data("default-url",e&&e.url||""),M("#members-am-icon-type").val(r.icon_type||"dashicon"),M("#members-am-icon-value").val(r.icon||e&&e.icon||"");var a=r.icon||e&&e.icon||"",s=J(a,r.icon_type||e&&e.icon_type||"");"image"!==s&&"custom"!==s&&"svg"!==s||!a?M("#members-am-icon-preview").hide():M("#members-am-icon-preview").show().attr("src",a),M("#members-am-color-bg").val(r.color_bg||""),M("#members-am-color-text").val(r.color_text||""),M("#members-am-color-icon").val(r.color_icon||""),M("#members-am-badge-text").val(r.badge||""),M("#members-am-badge-bg").val(r.badge_bg||""),M("#members-am-item-cap").attr("placeholder",e&&e.cap?e.cap+" (default)":"").val(C.settings.capabilities[C.selectedId]||"");var t=e&&e.custom;M("#members-am-remove-custom").toggle(!!t),M("#members-am-visibility-toggles").empty();var i=e&&e.cap||"read",o=[];if(p().forEach(function(e){"administrator"===e.slug&&!C.settings._meta.admin_editable||o.push(e)}),10<=o.length){var m=membersAdminMenus.i18n&&membersAdminMenus.i18n.filterRolesVisibility||"Filter roles…",l=membersAdminMenus.i18n&&membersAdminMenus.i18n.filterRolesVisibilityLabel||"Filter roles in this list",d=M('
'),c=M(' ').attr("placeholder",m).attr("aria-label",l);d.append(c),M("#members-am-visibility-toggles").append(d),c.on("input",function(){var s=(M(this).val()||"").trim().toLowerCase();M("#members-am-visibility-toggles .members-am-vis-row").each(function(){var e=M(this),r=(e.find("span").first().text()||"").toLowerCase(),n=String(e.find(".members-am-vis-cb").data("role")||"").toLowerCase(),a=!s||-1!==r.indexOf(s)||-1!==n.indexOf(s);e.toggleClass("members-am-vis-filter-hidden",!a)})})}o.forEach(function(e){var r=L(e.slug,C.selectedId),n=F(e.slug,i),a=M(' ').attr("data-role",e.slug).prop("checked",!r&&n);n||a.prop("disabled",!0);var s=M(' ').append(a,M(" ").text(e.label));n||(s.append(M(" ").text(" — no capability").css({color:"#999",fontStyle:"italic",marginLeft:"4px"})),s.css("opacity","0.5")),M("#members-am-visibility-toggles").append(s)}),M(".members-am-color").each(function(){M(this).data("wpWpColorPicker")&&M(this).wpColorPicker("destroy")}),M(".members-am-color").wpColorPicker({change:function(e,r){setTimeout(function(){pe()},20)},clear:function(){setTimeout(function(){pe()},20)}}),fe(),function(){var e=M(".members-am-demote-wrap"),n=M("#members-am-demote-parent"),r=M("#members-am-demote");if(!C.selectedId)return e.attr("hidden",!0);if(w(C.selectedId))return e.attr("hidden",!0);var a=Z()[0]||C.activeRoleSlugs[0];if(a&&A(a,C.selectedId))return e.attr("hidden",!0);e.removeAttr("hidden");var s=C.selectedId,t=membersAdminMenus.i18n&&membersAdminMenus.i18n.selectParentMenu||"";n.empty().append(M(" ").val("").text(t));var i=0;C.tree.forEach(function(e){if(e&&e.id&&e.id!==s){var r=e.title&&String(e.title).trim()?e.title:e.id;n.append(M(" ").val(e.id).text(r)),i++}});var o=0 ');"dashicons"===n?r.append(M(' ')):r.append(M(' ')),r.on("click",function(){M("#members-am-icon-value").val(e),M("#members-am-icon-type").val("dashicons"===n?"dashicon":"fontawesome"),pe()}),s.append(r)}})}function be(e,r){var n=C.activeRoleSlugs.indexOf(e);if(-1!==n){var a=n+r;if(!(a<0||a>=C.activeRoleSlugs.length)){h();var s=C.activeRoleSlugs[n];C.activeRoleSlugs[n]=C.activeRoleSlugs[a],C.activeRoleSlugs[a]=s,l(),Oe()}}}function he(e,r,n){var a,s,t,i=I(e).overrides[r]||{},o=null;if("__promote__"===i.parent?o=null:-1!==r.indexOf("::")?o=w(r):i.parent&&"__promote__"!==i.parent&&(o=i.parent),o){var m=I(e).submenu_order;m[o]||(m[o]=(a=e,t=R(s=o),C.tree.forEach(function(e){e&&e.id&&-1===e.id.indexOf("::")&&(I(a).overrides[e.id]||{}).parent===s&&-1===t.indexOf(e.id)&&t.push(e.id)}),t));var l=m[o],d=-1!==r.indexOf("::")?r.split("::").pop():r;if(-1===(u=l.indexOf(d)))return;if((p=u+n)<0||p>=l.length)return;h();var c=l[u];l[u]=l[p],l[p]=c}else{I(e).order&&I(e).order.length||(I(e).order=S());var u,p,f=I(e).order;if(-1===(u=f.indexOf(r)))return;if((p=u+n)<0||p>=f.length)return;h();var b=f[u];f[u]=f[p],f[p]=b}Oe()}function ve(){var e=Z();if(e.length){h();var a="sep-"+Date.now();e.forEach(function(e){I(e).order&&I(e).order.length||(I(e).order=S());var r=I(e).order,n=C.selectedId?r.indexOf(C.selectedId):r.length-1;n<0&&(n=r.length),r.splice(n+1,0,a)}),Oe()}}function ge(e){var r=M("#members-am-toolbar-loading");r.removeAttr("hidden"),r.find(".spinner").addClass("is-active"),r.find(".members-am-loading-text").text(e||""),M("#members-am-save, #members-am-reset, #members-am-import, #members-am-copy-apply, #members-am-undo").prop("disabled",!0)}function xe(){var e=M("#members-am-toolbar-loading");e.attr("hidden",!0),e.find(".spinner").removeClass("is-active"),e.find(".members-am-loading-text").text(""),M("#members-am-save, #members-am-reset, #members-am-import, #members-am-copy-apply").prop("disabled",!1),u()}function ye(e){ge(e||membersAdminMenus.i18n&&membersAdminMenus.i18n.saving||"Saving…");var s=membersAdminMenus.i18n&&membersAdminMenus.i18n.networkError||"Could not save settings. Check your connection and try again.";M.ajax({url:membersAdminMenus.ajaxUrl,type:"POST",dataType:"json",timeout:6e4,data:{action:"members_admin_menus_save",nonce:membersAdminMenus.nonce,settings:JSON.stringify(C.settings)}}).done(function(e){if(e&&void 0!==e.success){if(e.success)return a=t(),c=null,u(),void f("success",e.data&&e.data.message||membersAdminMenus.i18n&&membersAdminMenus.i18n.saved||"Settings saved.");f("error",e.data&&e.data.message?e.data.message:"Error")}else f("error",s)}).fail(function(e,r){if("abort"!==r){var n=s;if(e&&e.responseJSON&&void 0!==e.responseJSON.data){var a=e.responseJSON.data;"string"==typeof a&&a?n=a:a&&"string"==typeof a.message&&a.message&&(n=a.message)}f("error",n)}}).always(function(){xe()})}function _e(e,r){if(confirm("role"===e&&r?"Reset all settings for this role? This cannot be undone.":"Reset ALL menu settings for every role? This cannot be undone.")){ge(membersAdminMenus.i18n&&membersAdminMenus.i18n.resetting||"Resetting…");var n=!1;M.post(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_reset",nonce:membersAdminMenus.nonce,scope:e||"all",role:r||""}).done(function(e){if(e.success)return o("success",e.data&&e.data.message||membersAdminMenus.i18n&&membersAdminMenus.i18n.resetComplete||"Reset complete."),C.allowUnload=!0,n=!0,void location.reload();f("error",e.data&&e.data.message?e.data.message:membersAdminMenus.i18n&&membersAdminMenus.i18n.resetFailed||"Reset failed.")}).fail(function(){f("error",membersAdminMenus.i18n&&membersAdminMenus.i18n.resetNetworkError||membersAdminMenus.i18n.networkError||"Could not reset settings. Check your connection and try again.")}).always(function(){n||xe()})}}function ke(e){M.getJSON(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_user_search",nonce:membersAdminMenus.nonce,term:e},function(e){e.success&&e.data&&e.data.length?function(e){M(".members-am-user-suggestions").remove();var r=M("#members-am-user-search").parent();r.css("position","relative");var n=M('
');e.forEach(function(e){n.append(M('
').text(e.label).data("userId",e.id).on("click",function(){!function(e,r,n){C.previewUserId=e,C.previewUserLabel=r||"User #"+e,C.previewUserRoles=n||[],b(),C.settings.users[e]||(C.settings.users[e]={});Oe()}(e.id,e.label,e.roles),M(".members-am-user-suggestions").remove(),M("#members-am-user-search").val("")}))}),r.append(n),setTimeout(function(){M(document).one("click",function(){M(".members-am-user-suggestions").remove()})},0)}(e.data):M(".members-am-user-suggestions").remove()})}function we(){M(document).on("click","#members-am-role-chips .members-am-chip",function(){var e=M(this).data("role"),r=C.activeRoleSlugs.indexOf(e);-1===r?C.activeRoleSlugs.push(e):1 ');if(t.append(M('
').text("Reset Settings")),a&&s){var i=M(' ');i.append(M(' ')),i.append(M(' ').append(M(" ").text("Reset "+s),M(" ").text("Clear all menu settings for this role only"))),i.on("click",function(e){e.preventDefault(),e.stopPropagation(),M(".members-am-reset-dropdown").remove(),_e("role",a)}),t.append(i)}var o=M(' ');o.append(M(' ')),o.append(M(' ').append(M(" ").text("Reset all roles"),M(" ").text("Clear all menu settings for every role"))),o.on("click",function(e){e.preventDefault(),e.stopPropagation(),M(".members-am-reset-dropdown").remove(),_e("all")}),t.append(o),t.insertAfter(r),setTimeout(function(){M(document).one("click",function(){M(".members-am-reset-dropdown").remove()})},0)}),M("#members-am-export").on("click",function(e){e.preventDefault(),window.location.href=membersAdminMenus.exportUrl}),M("#members-am-import").on("click",function(){M("#members-am-import-file").trigger("click")}),M("#members-am-import-file").on("change",function(){var e=this.files&&this.files[0];e&&function(e){ge(membersAdminMenus.i18n&&membersAdminMenus.i18n.importing||"Importing…");var n=new FileReader;n.onerror=function(){xe(),f("error",membersAdminMenus.i18n&&membersAdminMenus.i18n.readFileFailed||"Could not read the file.")},n.onload=function(){try{var e=JSON.parse(n.result),r=!1;M.post(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_import",nonce:membersAdminMenus.nonce,settings:JSON.stringify(e)}).done(function(e){if(e.success)return o("success",e.data&&e.data.message||membersAdminMenus.i18n&&membersAdminMenus.i18n.imported||"Settings imported."),C.allowUnload=!0,r=!0,void location.reload();f("error",e.data&&e.data.message?e.data.message:"Error")}).fail(function(){f("error",membersAdminMenus.i18n&&membersAdminMenus.i18n.importNetworkError||membersAdminMenus.i18n.networkError||"Could not import settings. Check your connection and try again.")}).always(function(){r||xe()})}catch(e){xe(),f("error",membersAdminMenus.i18n&&membersAdminMenus.i18n.invalidJson||"Invalid JSON.")}},n.readAsText(e)}(e)}),M("#members-am-copy-apply").on("click",function(){var n=M("#members-am-copy-from").val(),r=M("#members-am-copy-to").val();if(n&&r)if(n!==r){var a="",s="";if(p().forEach(function(e){e.slug===n&&(a=e.label),e.slug===r&&(s=e.label)}),confirm('Copy menu settings from "'+a+'" to "'+s+'"?\nThis will overwrite "'+s+"\" menu configuration.\n\nNote: This copies menu order, hidden items, labels, icons, and colors.\nIt does NOT change the role's capabilities (items marked with a lock icon).")){h();var e=I(n),t={hidden:e.hidden?e.hidden.slice():[],order:[],submenu_order:{},overrides:{}},i=T(n);t.order=i.slice(),C.tree.forEach(function(e){if(e.children&&e.children.length){var r=U(n,e.id);r&&r.length&&(t.submenu_order[e.id]=r.slice())}}),e.overrides&&"object"==typeof e.overrides&&(t.overrides=JSON.parse(JSON.stringify(e.overrides))),C.settings.roles[r]=t,-1===C.activeRoleSlugs.indexOf(r)&&(C.activeRoleSlugs.push(r),l(),ae()),Oe(),ye(membersAdminMenus.i18n&&membersAdminMenus.i18n.copying||"Copying…")}}else f("error",membersAdminMenus.i18n&&membersAdminMenus.i18n.rolesMustDiffer||"Source and target roles must be different.")}),M("#members-am-admin-editable").on("change",function(){var e=!0;M(this).is(":checked")&&(e=window.confirm(membersAdminMenus.i18n.adminEditableWarn)),e?(C.settings._meta.admin_editable=M(this).is(":checked"),ne(),ae(),l(),Oe()):M(this).prop("checked",!1)}),M("#members-am-sync-scroll").prop("checked",!1!==C.syncScroll),M("#members-am-sync-scroll").on("change",function(){C.syncScroll=M(this).is(":checked");try{localStorage.setItem("members_am_sync_scroll",C.syncScroll?"1":"0")}catch(e){}ce()});var s="members_am_more_tools";function e(e){var r=M("#members-am-toolbar-extra"),n=M("#members-am-more-tools");if(r.length&&n.length){r.prop("hidden",!e),n.attr("aria-expanded",e?"true":"false").toggleClass("is-open",!!e);var a=membersAdminMenus.i18n||{};e&&a.moreToolsHideAria?n.attr("aria-label",a.moreToolsHideAria):!e&&a.moreToolsShowAria?n.attr("aria-label",a.moreToolsShowAria):n.removeAttr("aria-label");try{sessionStorage.setItem(s,e?"1":"0")}catch(e){}}}var r,n=!1;try{n="1"===sessionStorage.getItem(s)}catch(e){}e(n),M("#members-am-more-tools").on("click",function(){e(M("#members-am-toolbar-extra").prop("hidden"))}),M("#members-am-add-item").on("click",function(){h();var e="c"+Date.now();C.settings.custom_items.push({id:e,label:"Custom link",url:window.location.origin+"/wp-admin/",icon_type:"dashicon",icon:"dashicons-admin-generic",parent:"",position:99,cap:"read"}),C.tree=_(),C.selectedId=x({id:e}),Oe(),ue()}),M("#members-am-remove-custom").on("click",function(){var r=k(C.selectedId);r&&r.customId&&(h(),C.settings.custom_items=(C.settings.custom_items||[]).filter(function(e){return e.id!==r.customId}),C.selectedId=null,C.tree=_(),Oe(),M("#members-am-edit-panel").attr("hidden",!0))}),M("#members-am-edit-close").on("click",function(){C.selectedId=null,M("#members-am-edit-panel").attr("hidden",!0),Oe()}),M("#members-am-edit-target-role").on("change",ue),M("#members-am-edit-label, #members-am-edit-url, #members-am-icon-value, #members-am-badge-text").on("input",function(){pe()}),M("#members-am-item-cap").on("input",function(){pe()}),M(".members-am-icon-tabs .button").on("click",function(){M(".members-am-icon-tabs .button").removeClass("is-active"),M(this).addClass("is-active"),C.iconTab="fontawesome"===M(this).data("tab")?"fontawesome":"upload"===M(this).data("tab")?"upload":"dashicons",fe()}),M("#members-am-icon-search").on("input",fe),M("#members-am-media-upload").on("click",function(e){e.preventDefault(),C.mediaFrame||(C.mediaFrame=wp.media({title:"Choose menu icon",button:{text:"Use as icon"},multiple:!1,library:{type:"image"}}),C.mediaFrame.on("select",function(){var e=C.mediaFrame.state().get("selection").first().toJSON(),r=e.url||"";e.sizes&&(e.sizes.thumbnail?r=e.sizes.thumbnail.url:e.sizes.medium&&(r=e.sizes.medium.url)),M("#members-am-icon-type").val("custom"),M("#members-am-icon-value").val(r),pe()})),C.mediaFrame.open()}),M(document).on("change",".members-am-vis-cb",function(){h();var e=M(this).data("role");if(M(this).is(":checked")){var r=I(e).hidden,n=r.indexOf(C.selectedId);-1!==n&&r.splice(n,1)}else-1===I(e).hidden.indexOf(C.selectedId)&&I(e).hidden.push(C.selectedId);Oe()}),M("#members-am-add-sep").on("click",ve),M("#members-am-promote").on("click",function(){if(C.selectedId){h();var s=C.selectedId,e=ee()||{};if(-1===s.indexOf("::")&&e.parent&&"__promote__"!==e.parent){var t=e.parent,r=$();if(r){var n=P(r);if(n.overrides[s]&&delete n.overrides[s].parent,n.submenu_order&&n.submenu_order[t]){var a=n.submenu_order[t].indexOf(s);-1!==a&&n.submenu_order[t].splice(a,1)}if(n.order.length||(n.order=S()),-1===n.order.indexOf(s)){var i=n.order.indexOf(t);-1!==i?n.order.splice(i+1,0,s):n.order.push(s)}}else Z().forEach(function(e){var r=I(e);if(r.overrides[s]&&delete r.overrides[s].parent,r.submenu_order&&r.submenu_order[t]){var n=r.submenu_order[t].indexOf(s);-1!==n&&r.submenu_order[t].splice(n,1)}if(r.order&&r.order.length||(r.order=S()),-1===r.order.indexOf(s)){var a=r.order.indexOf(t);-1!==a?r.order.splice(a+1,0,s):r.order.push(s)}});return pe(),void ue()}re("parent","__promote__");var o=w(s);Z().forEach(function(e){var r=I(e);if(r.order&&r.order.length||(r.order=S()),-1===r.order.indexOf(s))if(o){var n=r.order.indexOf(o);-1!==n?r.order.splice(n+1,0,s):r.order.push(s)}else r.order.push(s)}),pe(),ue()}}),M("#members-am-demote").on("click",function(){var e=M("#members-am-demote-parent").val();e?(h(),re("parent",e),pe(),ue()):f("warning",membersAdminMenus.i18n&&membersAdminMenus.i18n.selectParentFirst||"Please choose a parent menu from the list.")}),M("#members-am-user-search").on("input",function(){var e=M(this).val();clearTimeout(r),r=setTimeout(function(){1 ").val("__all__").text("All roles")),C.activeRoleSlugs.forEach(function(r){var e=(p().filter(function(e){return e.slug===r})[0]||{}).label||r;n.append(M(" ").val(r).text(e))}),C.previewUserId&&n.append(M(" ").val("__user__"+C.previewUserId).text(C.previewUserLabel||"User #"+C.previewUserId)),C.selectedId&&ue()}M(function(){var r,n,e;!function(){try{var e=sessionStorage.getItem(i);if(!e)return;sessionStorage.removeItem(i);var r=JSON.parse(e);r&&r.message&&f(r.type,r.message)}catch(e){}}(),b(),C.tree=_(),ne(),M("#members-am-admin-editable").prop("checked",!!C.settings._meta.admin_editable),r=M("#members-am-copy-from").empty(),n=M("#members-am-copy-to").empty(),(e=p()).forEach(function(e){r.append(M(" ").val(e.slug).text(e.label)),n.append(M(" ").val(e.slug).text(e.label))}),1'),n=M("#members-am-notices"));var a=M("
",{class:"notice is-dismissible"}).addClass("notice-"+(e||"info"));a.append(M("
").text(r)),n.prepend(a),M(document).trigger("wp-notice-added")}}function o(e,r){try{sessionStorage.setItem(i,JSON.stringify({type:e||"success",message:r}))}catch(e){}}var e=["dashicons-menu","dashicons-admin-dashboard","dashicons-admin-post","dashicons-admin-page","dashicons-admin-media","dashicons-admin-comments","dashicons-admin-appearance","dashicons-admin-plugins","dashicons-admin-users","dashicons-admin-tools","dashicons-admin-settings","dashicons-admin-generic","dashicons-edit","dashicons-plus","dashicons-chart-bar","dashicons-cart","dashicons-products","dashicons-email","dashicons-groups","dashicons-heart","dashicons-star-filled","dashicons-smiley","dashicons-info","dashicons-lock","dashicons-unlock","dashicons-visibility","dashicons-hidden","dashicons-arrow-up","dashicons-arrow-down","dashicons-admin-network","dashicons-performance"],r=["fa-solid fa-house","fa-solid fa-user","fa-solid fa-gear","fa-solid fa-file","fa-solid fa-image","fa-solid fa-cart-shopping","fa-solid fa-chart-line","fa-solid fa-envelope","fa-solid fa-book","fa-solid fa-link","fa-solid fa-bell","fa-solid fa-star","fa-solid fa-heart","fa-solid fa-lock","fa-solid fa-unlock","fa-solid fa-pen","fa-solid fa-trash","fa-solid fa-plus","fa-solid fa-minus"],m="members_am_view_state";function l(){try{localStorage.setItem(m,JSON.stringify({activeRoleSlugs:C.activeRoleSlugs,carouselPage:C.carouselPage}))}catch(e){}}function c(e){return JSON.parse(JSON.stringify(e))}var d=null;function h(){d=c(C.settings),u()}function u(){var e=M("#members-am-undo");if(e.length){var r=!!d;e.prop("disabled",!r).attr("aria-disabled",r?"false":"true")}}function b(){return membersAdminMenus.roles||[]}function v(){C.settings._meta&&!Array.isArray(C.settings._meta)||(C.settings._meta={version:3,admin_editable:!1}),C.settings.roles&&!Array.isArray(C.settings.roles)||(C.settings.roles={}),C.settings.users&&!Array.isArray(C.settings.users)||(C.settings.users={}),Array.isArray(C.settings.custom_items)||(C.settings.custom_items=[]),C.settings.capabilities&&!Array.isArray(C.settings.capabilities)||(C.settings.capabilities={})}function I(e){v(),C.settings.roles[e]||(C.settings.roles[e]={hidden:[],order:[],submenu_order:{},overrides:{}});var r=C.settings.roles[e];return r.hidden&&Array.isArray(r.hidden)||(r.hidden=[]),r.order&&Array.isArray(r.order)||(r.order=[]),r.submenu_order&&!Array.isArray(r.submenu_order)||(r.submenu_order={}),r.overrides&&!Array.isArray(r.overrides)||(r.overrides={}),r}function S(e){v(),C.settings.users[e]||(C.settings.users[e]={});var r=C.settings.users[e];return r.hidden&&Array.isArray(r.hidden)||(r.hidden=[]),r.order&&Array.isArray(r.order)||(r.order=[]),r.overrides&&!Array.isArray(r.overrides)||(r.overrides={}),r.submenu_order&&!Array.isArray(r.submenu_order)||(r.submenu_order={}),r}function P(e,r){var n=function(e,r){for(var n=(e||[]).slice().sort(),a=null,s=0;s=s.length||(h(),s.splice(p,1),s.splice(f,0,o?u:r))}}function y(e){var r=e.id||"c";return"members-am-"+String(r).replace(/[^a-z0-9_-]/gi,"-").toLowerCase()}function k(e){return!!e&&0===(-1!==e.indexOf("::")?e.split("::").pop():e).indexOf("members-am-")}function _(e,r){if(!e||!r)return null;for(var n=0;ns&&(C.carouselPage=s))}}C.activeRoleSlugs=r.filter(function(e){return"administrator"!==e||n}),C.activeRoleSlugs.length||(C.activeRoleSlugs=["subscriber"])}function ie(){var a=M("#members-am-role-chips").empty();b().forEach(function(e){if("administrator"!==e.slug||C.settings._meta.admin_editable){var r=-1!==C.activeRoleSlugs.indexOf(e.slug),n=M(' ').text(e.label).attr("data-role",e.slug).toggleClass("is-active",r);a.append(n)}})}function oe(t,i,e,o,m){(function(e,r,n,a,s){s=s||0;var t=r.id,i=J(e,t),o=!D(e,r.cap),m=I(e).overrides[t]||{},l=m.label||r.title||t,c=M('
').attr("data-id",t).attr("data-menu-parent",n||"").toggleClass("is-hidden",i).toggleClass("is-no-cap",o).toggleClass("is-selected",C.selectedId===t).toggleClass("is-sub",0 ');if(p){G(d);var b=!!C.collapsedParents[d][t],h=u.expandSubmenus||"Expand submenu items",v=u.collapseSubmenus||"Collapse submenu items";M(' ').attr("aria-expanded",!b).attr("aria-label",(b?h:v)+": "+l).append(M(' ').addClass(b?"dashicons-arrow-right-alt2":"dashicons-arrow-down-alt2")).on("click",function(e){e.stopPropagation(),G(d),C.collapsedParents[d][t]=!C.collapsedParents[d][t],fe()}).appendTo(f),c.toggleClass("is-collapse-collapsed",b)}else f.append(M(' '));c.append(f);var g=u.bulkCheckboxAria||"Include in bulk actions",x=M(' '),y=M(' ').prop("checked",!!C.columnBulkSelection[d].ids[t]).attr("aria-label",g+": "+l).on("click",function(e){e.stopPropagation()}).on("change",function(e){e.stopPropagation(),K(d,t,M(this).prop("checked")),fe()});x.append(y),c.append(x);var k=M('
');if(0===s){var _=m.icon||r.icon,w=B(_,m.icon_type||r.icon_type);if("fontawesome"===w&&_)k.append(M(' '));else if("svg"!==w&&"image"!==w&&"custom"!==w||!_){var O=_&&0===_.indexOf("dashicons-")?_:"dashicons-admin-generic";k.append(M(' '))}else k.append(M(" ").attr("src",_).css({width:"20px",height:"20px",display:"inline-block",verticalAlign:"middle",objectFit:"contain",filter:"none"}))}r.custom&&k.append(M('custom '));m.label&&k.append(M('edit '));if(k.append(M(' ').text(l)),m.badge){var A=m.badge_bg||"#d63638";k.append(M(' ').text(m.badge).css({backgroundColor:A,color:"#fff",fontSize:"9px",padding:"1px 5px",borderRadius:"2px",marginLeft:"4px",whiteSpace:"nowrap"}))}o&&k.append(M(' Roles.\">🔒 no access "));c.append(k),m.color_bg&&c.css("background-color",m.color_bg);m.color_text&&c.find(".members-am-item-label").css("color",m.color_text);m.color_icon&&(c.find(".dashicons").css("color",m.color_icon),c.find(".members-am-fa-icon i").css("color",m.color_icon),c.find("img").css("filter","none"));var S=M('
');S.append(M(' ').text("◉"),M(' ').text("↑"),M(' ').text("↓")),c.append(S),a.append(c)})(t,i,e,o,m=m||0),i.children&&i.children.length&&F(t,i.id).forEach(function(e){var r,n,a,s=(r=t,n=i.id,O(L(n,a=e))||(-1===a.indexOf("::")&&(I(r).overrides[a]||{}).parent===n?O(a):null));s&&"__promote__"!==(I(t).overrides[s.id]||{}).parent&&oe(t,s,i.id,o,m+1)})}function me(n,a,e,s,t,i){i=i||0,t.append(function(r,e,n,a){a=a||0;var s=P(n,r.id),t=s.label||r.title,i=function(e,r){var n=S(e);if(-1!==n.hidden.indexOf(r))return!0;var a=R(r,e);return!(!a||-1===n.hidden.indexOf(a))}(n,r.id),o=!function(e){if(!e||"read"===e)return 1;for(var r=C.previewUserRoles||[],n=0;n").addClass(l).attr("data-id",r.id).attr("data-menu-parent",e||""),d="u:"+n;z(d);var u=membersAdminMenus.i18n||{},p=r.children&&r.children.length,f=M(' ');if(p){G(d);var b=!!C.collapsedParents[d][r.id],h=u.expandSubmenus||"Expand submenu items",v=u.collapseSubmenus||"Collapse submenu items";M(' ').attr("aria-expanded",!b).attr("aria-label",(b?h:v)+": "+t).append(M(' ').addClass(b?"dashicons-arrow-right-alt2":"dashicons-arrow-down-alt2")).on("click",function(e){e.stopPropagation(),G(d),C.collapsedParents[d][r.id]=!C.collapsedParents[d][r.id],fe()}).appendTo(f),c.toggleClass("is-collapse-collapsed",b)}else f.append(M(' '));c.append(f);var g=u.bulkCheckboxAria||"Include in bulk actions",x=M(' '),y=M(' ').prop("checked",!!C.columnBulkSelection[d].ids[r.id]).attr("aria-label",g+": "+t).on("click",function(e){e.stopPropagation()}).on("change",function(e){e.stopPropagation(),K(d,r.id,M(this).prop("checked")),fe()});x.append(y),c.append(x);var k=M('
');if(0===a){var _=s.icon||r.icon,w=B(_,s.icon_type||r.icon_type);"fontawesome"===w&&_?k.append(M(' ')):"svg"!==w&&"image"!==w&&"custom"!==w||!_?_&&0===_.indexOf("dashicons-")?k.append(M(' ')):k.append(M(' ')):k.append(M(" ").attr("src",_).css({width:"20px",height:"20px",display:"inline-block",verticalAlign:"middle",objectFit:"contain",filter:"none"}))}r.custom&&k.append(M('custom '));s.label&&k.append(M('edit '));if(k.append(M(' ').text(t)),s.badge){var O=s.badge_bg||"#d63638";k.append(M(' ').text(s.badge).css({backgroundColor:O,color:"#fff",fontSize:"9px",padding:"1px 5px",borderRadius:"2px",marginLeft:"4px",whiteSpace:"nowrap"}))}o&&k.append(M('🔒 no access "));c.append(k),s.color_bg&&c.css("background-color",s.color_bg);s.color_text&&c.find(".members-am-item-label").css("color",s.color_text);s.color_icon&&(c.find(".dashicons").css("color",s.color_icon),c.find(".members-am-fa-icon i").css("color",s.color_icon));var A=M('
');return A.append(M(' ').text(i?"◯":"◉"),M(' ').text("↑"),M(' ').text("↓")),c.append(A),c.on("click",function(e){M(e.target).closest("button, .members-am-item-cb, .members-am-collapse-toggle").length||(C.selectedId=r.id,Ie())}),c}(a,e,n,i)),a.children&&a.children.length&&function(e,r){var n=N(r),a=S(e);C.tree.forEach(function(e){e&&e.id&&-1===e.id.indexOf("::")&&(a.overrides&&a.overrides[e.id]||{}).parent===r&&-1===n.indexOf(e.id)&&n.push(e.id)});var s=a.submenu_order&&a.submenu_order[r];if(!s||!s.length)return n.slice();var t=s.filter(function(e){return-1!==n.indexOf(e)});return n.forEach(function(e){-1===t.indexOf(e)&&t.push(e)}),t}(n,a.id).forEach(function(e){var r=function(e,r,n){var a=O(L(r,n));if(a)return a;if(-1===n.indexOf("::")){var s=S(e);if((s.overrides&&s.overrides[n]||{}).parent===r)return O(n)}return null}(n,a.id,e);r&&"__promote__"!==(s.overrides&&s.overrides[r.id]||{}).parent&&me(n,r,a.id,s,t,i+1)})}function le(e,r){var s=(r||"").trim().toLowerCase(),n=e.children(".members-am-item");if(!s)return n.removeClass("members-am-filter-hidden"),void e.children(".members-am-sep").removeClass("members-am-filter-hidden");var i={};n.each(function(){var e=M(this),r=e.attr("data-id"),n=(e.find(".members-am-item-label").first().text()||"").toLowerCase(),a=(r||"").toLowerCase();i[r]=-1!==n.indexOf(s)||-1!==a.indexOf(s)});var o={};n.each(function(){var e=M(this).attr("data-id"),r=M(this).attr("data-menu-parent")||"";o[r]||(o[r]=[]),o[r].push(e)});var m={};function l(e){var r,n=i[e],a=o[e]||[],s=!1;for(r=0;r '),o=M(' ').attr("placeholder",s).attr("aria-label",t).val(a);i.append(o),e.find(".members-am-sidebar-head").first().after(i),o.on("input",function(){C.columnFilters[n]=M(this).val(),le(r,M(this).val())}),le(r,a)}function de(e,r){var t=0===String(r).indexOf("u:"),i=t?parseInt(r.replace(/^u:/,""),10):0,o=t?null:r,m=r,l=membersAdminMenus.i18n||{},n=M('
').attr("data-column-key",m),a=M('
');a.append(M(' ').text(l.bulkSelectVisible||"Select visible"),M(' ').text(l.bulkClearSelection||"Clear selection"));var s=M('
');s.append(M(' ').text(l.collapseAllMenus||"Collapse all"),M(' ').text(l.expandAllMenus||"Expand all"));var c=M(' ').attr("aria-label",l.bulkVisibilityLabel||"Menu visibility for this column");c.append(M(' ').text(l.bulkActionsPlaceholder||"Choose visibility…"));var d=M(" ").attr("label",l.bulkGroupWholeColumn||"Whole column");d.append(M(' ').text(l.bulkShowAllItems||"Show every menu item"),M(' ').text(l.bulkHideAllItems||"Hide every menu item"));var u=M(" ").attr("label",l.bulkGroupCheckedRows||"Checked rows");u.append(M(' ').text(l.bulkKeepOnlyCheckedVisible||"Keep only checked visible"),M(' ').text(l.bulkHideCheckedItems||"Hide checked items"),M(' ').text(l.bulkShowCheckedItems||"Show checked items")),c.append(d,u),n.append(a,s,c);var p=e.find(".members-am-col-filter").first();p.length?p.after(n):e.find(".members-am-sidebar-head").first().after(n),c.on("change",function(){var e=M(this).val();if(M(this).val(""),e)if(!("keep-only-checked"===e||"hide-checked"===e||"show-checked"===e)||W(m).length){if("keep-only-checked"===e){if(!window.confirm(l.bulkConfirmKeepOnlyChecked||"Hide all items except checked items and their parent menus?"))return}else if("hide-all"===e){if(!window.confirm(l.bulkConfirmHideAll||"Hide every menu item in this column?"))return}else if("hide-checked"===e&&!window.confirm(l.bulkConfirmHideChecked||"Hide the checked items (and their submenus where applicable)?"))return;var r,n,a,s;h(),t?"show-all"===e?S(i).hidden=[]:"hide-all"===e?(a=i,s=H(),S(a).hidden=s.slice()):"keep-only-checked"===e?function(e,n){var r=W(e);if(r.length){var a={};r.forEach(function(e){for(var r=e;r;)a[r]=!0,r=R(r,n)});var s=H(),t=S(n).hidden;t.length=0,s.forEach(function(e){a[e]||t.push(e)})}}(m,i):"hide-checked"===e?Z(m,i):"show-checked"===e&&ee(m,i):"show-all"===e?I(o).hidden=[]:"hide-all"===e?(r=o,n=H(),I(r).hidden=n.slice()):"keep-only-checked"===e?function(e,n){var r=W(e);if(r.length){var a={};r.forEach(function(e){for(var r=e;r;)a[r]=!0,r=E(r,n)});var s=H(),t=I(n).hidden;t.length=0,s.forEach(function(e){a[e]||t.push(e)})}}(m,o):"hide-checked"===e?X(m,o):"show-checked"===e&&Y(m,o),Ie()}else f("warning",l.bulkSelectCheckedFirst||"Check one or more menu items first.")})}function ue(e){return-1!==e.indexOf("::")?e.split("::").pop():e}function pe(){M.fn.sortable&&M("#members-am-columns .members-am-sidebar-list").each(function(){var e=M(this);e.data("ui-sortable")&&e.sortable("destroy");var r=e.closest(".members-am-column"),n=r.data("role"),a=r.data("user");e.sortable({axis:"y",distance:6,items:"> .members-am-item, > .members-am-sep",cancel:".members-am-item-actions button, .members-am-item-cb, .members-am-item-cb-wrap, .members-am-collapse-toggle",placeholder:"members-am-sort-placeholder",forcePlaceholderSize:!0,tolerance:"pointer",start:function(){h()},update:function(){a?function(e,r){var s=[],t={};e.children().each(function(){var e=M(this);if(e.hasClass("members-am-sep")){var r=e.attr("data-sep-id");r&&s.push(r)}else if(e.hasClass("members-am-item")){var n=e.attr("data-id");if(n){var a=e.attr("data-menu-parent");void 0===a||""===a?s.push(n):(t[a]||(t[a]=[]),t[a].push(ue(n)))}}});var n=S(r);n.order=s,n.submenu_order=t}(e,a):n&&function(e,r){var s=[],t={};e.children().each(function(){var e=M(this);if(e.hasClass("members-am-sep")){var r=e.attr("data-sep-id");r&&s.push(r)}else if(e.hasClass("members-am-item")){var n=e.attr("data-id");if(n){var a=e.attr("data-menu-parent");void 0===a||""===a?s.push(n):(t[a]||(t[a]=[]),t[a].push(ue(n)))}}});var n=I(r);n.order=s,n.submenu_order=t}(e,n),be()}})})}function fe(){var n=M("#members-am-columns"),a={};n.find(".members-am-column").each(function(){var e=M(this).data("role");if(e){var r=M(this).find(".members-am-sidebar-list");r.length&&(a[e]=r.scrollTop())}}),n.empty();var e=C.carouselPage*C.columnsPerPage;if(C.activeRoleSlugs.slice(e,e+C.columnsPerPage).forEach(function(e){var r=M('
');!function(n,e){e.empty();var r=M(''),a=(b().filter(function(e){return e.slug===n})[0]||{}).label||n;r.append(M('').text(a)),r.append(M(' ').append(M(' ').text("◀"),M(' ').text("▶"))),e.append(r);var s=M('');j(n).forEach(function(e){if(0!==e.indexOf("sep-")){var r=O(e);r&&oe(n,r,null,s,0)}else s.append(M('
').attr("data-sep-id",e).text("—"))}),e.append(s),$(s,n),ce(e,s,n),de(e,n)}(e,r),n.append(r),a[e]&&r.find(".members-am-sidebar-list").scrollTop(a[e])}),C.previewUserId){var s=C.previewUserId,r=M('
'),t=M('');t.append(M(" ").text(C.previewUserLabel||"User #"+s)),t.append(M('× ').on("click",function(){C.previewUserId=null,C.previewUserLabel=null,C.previewUserRoles=[],Ie()})),r.append(t);var i=M(''),o=S(s);g(s).forEach(function(e){if(0!==e.indexOf("sep-")){var r=O(e);r&&me(s,r,null,o,i,0)}else i.append(M('
').attr("data-sep-id",e).text("——"))}),r.append(i),$(i,"u:"+s),ce(r,i,"u:"+s),de(r,"u:"+s),n.append(r)}if(C.syncScroll){var m=n.find(".members-am-sidebar-list"),l=!1;m.on("scroll",function(){if(!l){l=!0;var e=M(this).scrollTop();m.not(this).scrollTop(e),l=!1}})}!function(){var e=Math.max(1,Math.ceil(C.activeRoleSlugs.length/C.columnsPerPage)),r=(Math.min(C.carouselPage+1,e),C.carouselPage*C.columnsPerPage+1),n=Math.min((C.carouselPage+1)*C.columnsPerPage,C.activeRoleSlugs.length);M("#members-am-carousel-status").text(r+"–"+n+" "+membersAdminMenus.i18n.of+" "+C.activeRoleSlugs.length);for(var a=M("#members-am-carousel-dots").empty(),s=0;s ').toggleClass("is-active",s===C.carouselPage))}(),pe()}function be(){if(C.selectedId){M("#members-am-edit-panel").removeAttr("hidden");var e=O(C.selectedId),r=ae()||{};M("#members-am-edit-title").text(e?e.title:C.selectedId),M("#members-am-edit-label").val(r.label||e&&e.title||"");var n=k(C.selectedId);M("#members-am-edit-url-wrap").toggle(n),M("#members-am-edit-url").attr("placeholder","Override URL (leave empty for default)").val(n&&(r.url||e&&e.url)||"").data("default-url",e&&e.url||""),M("#members-am-icon-type").val(r.icon_type||"dashicon"),M("#members-am-icon-value").val(r.icon||e&&e.icon||"");var a=r.icon||e&&e.icon||"",s=B(a,r.icon_type||e&&e.icon_type||"");"image"!==s&&"custom"!==s&&"svg"!==s||!a?M("#members-am-icon-preview").hide():M("#members-am-icon-preview").show().attr("src",a),M("#members-am-color-bg").val(r.color_bg||""),M("#members-am-color-text").val(r.color_text||""),M("#members-am-color-icon").val(r.color_icon||""),M("#members-am-badge-text").val(r.badge||""),M("#members-am-badge-bg").val(r.badge_bg||""),M("#members-am-item-cap").attr("placeholder",e&&e.cap?e.cap+" (default)":"").val(C.settings.capabilities[C.selectedId]||"");var t=e&&e.custom,i=M("#members-am-remove-custom");t?i.removeAttr("hidden"):i.attr("hidden","hidden"),M("#members-am-visibility-toggles").empty();var o=e&&e.cap||"read",m=[];if(b().forEach(function(e){"administrator"===e.slug&&!C.settings._meta.admin_editable||m.push(e)}),10<=m.length){var l=membersAdminMenus.i18n&&membersAdminMenus.i18n.filterRolesVisibility||"Filter roles…",c=membersAdminMenus.i18n&&membersAdminMenus.i18n.filterRolesVisibilityLabel||"Filter roles in this list",d=M('
'),u=M(' ').attr("placeholder",l).attr("aria-label",c);d.append(u),M("#members-am-visibility-toggles").append(d),u.on("input",function(){var s=(M(this).val()||"").trim().toLowerCase();M("#members-am-visibility-toggles .members-am-vis-row").each(function(){var e=M(this),r=(e.find("span").first().text()||"").toLowerCase(),n=String(e.find(".members-am-vis-cb").data("role")||"").toLowerCase(),a=!s||-1!==r.indexOf(s)||-1!==n.indexOf(s);e.toggleClass("members-am-vis-filter-hidden",!a)})})}m.forEach(function(e){var r=J(e.slug,C.selectedId),n=D(e.slug,o),a=M(' ').attr("data-role",e.slug).prop("checked",!r&&n);n||a.prop("disabled",!0);var s=M(' ').append(a,M(" ").text(e.label));n||(s.append(M(" ").text(" — no capability").css({color:"#999",fontStyle:"italic",marginLeft:"4px"})),s.css("opacity","0.5")),M("#members-am-visibility-toggles").append(s)}),M(".members-am-color").each(function(){M(this).data("wpWpColorPicker")&&M(this).wpColorPicker("destroy")}),M(".members-am-color").wpColorPicker({change:function(){p||setTimeout(function(){ge()},20)},clear:function(){p||setTimeout(function(){ge()},20)}}),p=!0,M(".members-am-color").each(function(){var e=M(this),r=String(e.val()||"").trim();if(r&&"#"!==r&&e.data("wpWpColorPicker"))try{e.wpColorPicker("color",r)}catch(e){}}),p=!1,xe(),function(){var e=M(".members-am-demote-wrap"),n=M("#members-am-demote-parent"),r=M("#members-am-demote");if(!C.selectedId)return e.attr("hidden",!0);if(A(C.selectedId))return e.attr("hidden",!0);var a=re()[0]||C.activeRoleSlugs[0];if(a&&U(a,C.selectedId))return e.attr("hidden",!0);e.removeAttr("hidden");var s=C.selectedId,t=membersAdminMenus.i18n&&membersAdminMenus.i18n.selectParentMenu||"";n.empty().append(M(" ").val("").text(t));var i=0;C.tree.forEach(function(e){if(e&&e.id&&e.id!==s){var r=e.title&&String(e.title).trim()?e.title:e.id;n.append(M(" ").val(e.id).text(r)),i++}});var o=0 ');"dashicons"===n?r.append(M(' ')):r.append(M(' ')),r.on("click",function(){M("#members-am-icon-value").val(e),M("#members-am-icon-type").val("dashicons"===n?"dashicon":"fontawesome"),ge()}),s.append(r)}})}function ye(e,r){var n=C.activeRoleSlugs.indexOf(e);if(-1!==n){var a=n+r;if(!(a<0||a>=C.activeRoleSlugs.length)){h();var s=C.activeRoleSlugs[n];C.activeRoleSlugs[n]=C.activeRoleSlugs[a],C.activeRoleSlugs[a]=s,l(),Ie()}}}function ke(e,r,n){var a,s,t,i=I(e).overrides[r]||{},o=null;if("__promote__"===i.parent?o=null:-1!==r.indexOf("::")?o=A(r):i.parent&&"__promote__"!==i.parent&&(o=i.parent),o){var m=I(e).submenu_order;m[o]||(m[o]=(a=e,t=N(s=o),C.tree.forEach(function(e){e&&e.id&&-1===e.id.indexOf("::")&&(I(a).overrides[e.id]||{}).parent===s&&-1===t.indexOf(e.id)&&t.push(e.id)}),t));var l=m[o],c=-1!==r.indexOf("::")?r.split("::").pop():r;if(-1===(u=l.indexOf(c)))return;if((p=u+n)<0||p>=l.length)return;h();var d=l[u];l[u]=l[p],l[p]=d}else{I(e).order&&I(e).order.length||(I(e).order=T());var u,p,f=I(e).order;if(-1===(u=f.indexOf(r)))return;if((p=u+n)<0||p>=f.length)return;h();var b=f[u];f[u]=f[p],f[p]=b}Ie()}function _e(){var e=re();if(e.length){h();var a="sep-"+Date.now();e.forEach(function(e){I(e).order&&I(e).order.length||(I(e).order=T());var r=I(e).order,n=C.selectedId?r.indexOf(C.selectedId):r.length-1;n<0&&(n=r.length),r.splice(n+1,0,a)}),Ie()}}function we(e){var r=M("#members-am-toolbar-loading");r.removeAttr("hidden"),r.find(".spinner").addClass("is-active"),r.find(".members-am-loading-text").text(e||""),M("#members-am-save, #members-am-reset, #members-am-import, #members-am-copy-apply, #members-am-undo").prop("disabled",!0)}function Oe(){var e=M("#members-am-toolbar-loading");e.attr("hidden",!0),e.find(".spinner").removeClass("is-active"),e.find(".members-am-loading-text").text(""),M("#members-am-save, #members-am-reset, #members-am-import, #members-am-copy-apply").prop("disabled",!1),u()}function Ae(e){we(e||membersAdminMenus.i18n&&membersAdminMenus.i18n.saving||"Saving…");var s=membersAdminMenus.i18n&&membersAdminMenus.i18n.networkError||"Could not save settings. Check your connection and try again.";M.ajax({url:membersAdminMenus.ajaxUrl,type:"POST",dataType:"json",timeout:6e4,data:{action:"members_admin_menus_save",nonce:membersAdminMenus.nonce,settings:JSON.stringify(C.settings)}}).done(function(e){if(e&&void 0!==e.success){if(e.success)return a=t(),d=null,u(),void f("success",e.data&&e.data.message||membersAdminMenus.i18n&&membersAdminMenus.i18n.saved||"Settings saved.");f("error",e.data&&e.data.message?e.data.message:"Error")}else f("error",s)}).fail(function(e,r){if("abort"!==r){var n=s;if(e&&e.responseJSON&&void 0!==e.responseJSON.data){var a=e.responseJSON.data;"string"==typeof a&&a?n=a:a&&"string"==typeof a.message&&a.message&&(n=a.message)}f("error",n)}}).always(function(){Oe()})}function Se(e,r){if(confirm("role"===e&&r?"Reset all settings for this role? This cannot be undone.":"Reset ALL menu settings for every role? This cannot be undone.")){we(membersAdminMenus.i18n&&membersAdminMenus.i18n.resetting||"Resetting…");var n=!1;M.post(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_reset",nonce:membersAdminMenus.nonce,scope:e||"all",role:r||""}).done(function(e){if(e.success)return o("success",e.data&&e.data.message||membersAdminMenus.i18n&&membersAdminMenus.i18n.resetComplete||"Reset complete."),C.allowUnload=!0,n=!0,void location.reload();f("error",e.data&&e.data.message?e.data.message:membersAdminMenus.i18n&&membersAdminMenus.i18n.resetFailed||"Reset failed.")}).fail(function(){f("error",membersAdminMenus.i18n&&membersAdminMenus.i18n.resetNetworkError||membersAdminMenus.i18n.networkError||"Could not reset settings. Check your connection and try again.")}).always(function(){n||Oe()})}}function Me(e){M.getJSON(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_user_search",nonce:membersAdminMenus.nonce,term:e},function(e){e.success&&e.data&&e.data.length?function(e){M(".members-am-user-suggestions").remove();var r=M("#members-am-user-search").parent();r.css("position","relative");var n=M('
');e.forEach(function(e){n.append(M('
').text(e.label).data("userId",e.id).on("click",function(){!function(e,r,n){C.previewUserId=e,C.previewUserLabel=r||"User #"+e,C.previewUserRoles=n||[],v(),C.settings.users[e]||(C.settings.users[e]={});Ie()}(e.id,e.label,e.roles),M(".members-am-user-suggestions").remove(),M("#members-am-user-search").val("")}))}),r.append(n),setTimeout(function(){M(document).one("click",function(){M(".members-am-user-suggestions").remove()})},0)}(e.data):M(".members-am-user-suggestions").remove()})}function Ce(){M(document).on("click","#members-am-role-chips .members-am-chip",function(){var e=M(this).data("role"),r=C.activeRoleSlugs.indexOf(e);-1===r?C.activeRoleSlugs.push(e):1 ');if(t.append(M('
').text("Reset Settings")),a&&s){var i=M(' ');i.append(M(' ')),i.append(M(' ').append(M(" ").text("Reset "+s),M(" ").text("Clear all menu settings for this role only"))),i.on("click",function(e){e.preventDefault(),e.stopPropagation(),M(".members-am-reset-dropdown").remove(),Se("role",a)}),t.append(i)}var o=M(' ');o.append(M(' ')),o.append(M(' ').append(M(" ").text("Reset all roles"),M(" ").text("Clear all menu settings for every role"))),o.on("click",function(e){e.preventDefault(),e.stopPropagation(),M(".members-am-reset-dropdown").remove(),Se("all")}),t.append(o),t.insertAfter(r),setTimeout(function(){M(document).one("click",function(){M(".members-am-reset-dropdown").remove()})},0)}),M("#members-am-export").on("click",function(e){e.preventDefault(),window.location.href=membersAdminMenus.exportUrl}),M("#members-am-import").on("click",function(){M("#members-am-import-file").trigger("click")}),M("#members-am-import-file").on("change",function(){var e=this.files&&this.files[0];e&&function(e){we(membersAdminMenus.i18n&&membersAdminMenus.i18n.importing||"Importing…");var n=new FileReader;n.onerror=function(){Oe(),f("error",membersAdminMenus.i18n&&membersAdminMenus.i18n.readFileFailed||"Could not read the file.")},n.onload=function(){try{var e=JSON.parse(n.result),r=!1;M.post(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_import",nonce:membersAdminMenus.nonce,settings:JSON.stringify(e)}).done(function(e){if(e.success)return o("success",e.data&&e.data.message||membersAdminMenus.i18n&&membersAdminMenus.i18n.imported||"Settings imported."),C.allowUnload=!0,r=!0,void location.reload();f("error",e.data&&e.data.message?e.data.message:"Error")}).fail(function(){f("error",membersAdminMenus.i18n&&membersAdminMenus.i18n.importNetworkError||membersAdminMenus.i18n.networkError||"Could not import settings. Check your connection and try again.")}).always(function(){r||Oe()})}catch(e){Oe(),f("error",membersAdminMenus.i18n&&membersAdminMenus.i18n.invalidJson||"Invalid JSON.")}},n.readAsText(e)}(e)}),M("#members-am-copy-apply").on("click",function(){var n=M("#members-am-copy-from").val(),r=M("#members-am-copy-to").val();if(n&&r)if(n!==r){var a="",s="";if(b().forEach(function(e){e.slug===n&&(a=e.label),e.slug===r&&(s=e.label)}),confirm('Copy menu settings from "'+a+'" to "'+s+'"?\nThis will overwrite "'+s+"\" menu configuration.\n\nNote: This copies menu order, hidden items, labels, icons, and colors.\nIt does NOT change the role's capabilities (items marked with a lock icon).")){h();var e=I(n),t={hidden:e.hidden?e.hidden.slice():[],order:[],submenu_order:{},overrides:{}},i=j(n);t.order=i.slice(),C.tree.forEach(function(e){if(e.children&&e.children.length){var r=F(n,e.id);r&&r.length&&(t.submenu_order[e.id]=r.slice())}}),e.overrides&&"object"==typeof e.overrides&&(t.overrides=JSON.parse(JSON.stringify(e.overrides))),C.settings.roles[r]=t,-1===C.activeRoleSlugs.indexOf(r)&&(C.activeRoleSlugs.push(r),l(),ie()),Ie(),Ae(membersAdminMenus.i18n&&membersAdminMenus.i18n.copying||"Copying…")}}else f("error",membersAdminMenus.i18n&&membersAdminMenus.i18n.rolesMustDiffer||"Source and target roles must be different.")}),M("#members-am-admin-editable").on("change",function(){var e=!0;M(this).is(":checked")&&(e=window.confirm(membersAdminMenus.i18n.adminEditableWarn)),e?(C.settings._meta.admin_editable=M(this).is(":checked"),te(),ie(),l(),Ie()):M(this).prop("checked",!1)}),M("#members-am-sync-scroll").prop("checked",!1!==C.syncScroll),M("#members-am-sync-scroll").on("change",function(){C.syncScroll=M(this).is(":checked");try{localStorage.setItem("members_am_sync_scroll",C.syncScroll?"1":"0")}catch(e){}fe()});var s="members_am_more_tools";function e(e){var r=M("#members-am-toolbar-extra"),n=M("#members-am-more-tools");if(r.length&&n.length){r.prop("hidden",!e),n.attr("aria-expanded",e?"true":"false").toggleClass("is-open",!!e);var a=membersAdminMenus.i18n||{};e&&a.moreToolsHideAria?n.attr("aria-label",a.moreToolsHideAria):!e&&a.moreToolsShowAria?n.attr("aria-label",a.moreToolsShowAria):n.removeAttr("aria-label");try{sessionStorage.setItem(s,e?"1":"0")}catch(e){}}}var r,n=!1;try{n="1"===sessionStorage.getItem(s)}catch(e){}e(n),M("#members-am-more-tools").on("click",function(){e(M("#members-am-toolbar-extra").prop("hidden"))}),M("#members-am-add-item").on("click",function(){h();var e="c"+Date.now();C.settings.custom_items.push({id:e,label:"Custom link",url:window.location.origin+"/wp-admin/",icon_type:"dashicon",icon:"dashicons-admin-generic",parent:"",position:99,cap:"read"}),C.tree=w(),C.selectedId=y({id:e}),Ie(),be()}),M("#members-am-remove-custom").on("click",function(){var e=O(C.selectedId),r=e&&e.customId?String(e.customId):"";if(!r&&e&&e.custom&&C.selectedId){var n=-1!==C.selectedId.indexOf("::")?C.selectedId.split("::").pop():C.selectedId;0===n.indexOf("members-am-")&&(C.settings.custom_items||[]).forEach(function(e){e&&e.id&&y(e)===n&&(r=String(e.id))})}e&&r&&(h(),C.settings.custom_items=(C.settings.custom_items||[]).filter(function(e){return!e||String(e.id)!==r}),C.selectedId=null,C.tree=w(),Ie(),M("#members-am-edit-panel").attr("hidden",!0))}),M("#members-am-edit-close").on("click",function(){C.selectedId=null,M("#members-am-edit-panel").attr("hidden",!0),Ie()}),M("#members-am-edit-target-role").on("change",be),M("#members-am-colors-readable").on("click",function(e){e.preventDefault();var r=String(M("#members-am-color-bg").val()||"").trim();if(r&&"#"!==r){var n=.45 ").val("__all__").text("All roles")),C.activeRoleSlugs.forEach(function(r){var e=(b().filter(function(e){return e.slug===r})[0]||{}).label||r;n.append(M(" ").val(r).text(e))}),C.previewUserId&&n.append(M(" ").val("__user__"+C.previewUserId).text(C.previewUserLabel||"User #"+C.previewUserId)),C.selectedId&&be()}M(function(){var r,n,e;!function(){try{var e=sessionStorage.getItem(i);if(!e)return;sessionStorage.removeItem(i);var r=JSON.parse(e);r&&r.message&&f(r.type,r.message)}catch(e){}}(),v(),C.tree=w(),te(),M("#members-am-admin-editable").prop("checked",!!C.settings._meta.admin_editable),r=M("#members-am-copy-from").empty(),n=M("#members-am-copy-to").empty(),(e=b()).forEach(function(e){r.append(M(" ").val(e.slug).text(e.label)),n.append(M(" ").val(e.slug).text(e.label))}),1
Date: Fri, 24 Apr 2026 11:10:25 +0300
Subject: [PATCH 42/73] refactor(admin): simplify menu slug protection logic
and remove unused function
---
addons/members-admin-menus/app/functions.php | 31 ++------------------
1 file changed, 2 insertions(+), 29 deletions(-)
diff --git a/addons/members-admin-menus/app/functions.php b/addons/members-admin-menus/app/functions.php
index 4619bef..2768c83 100644
--- a/addons/members-admin-menus/app/functions.php
+++ b/addons/members-admin-menus/app/functions.php
@@ -189,7 +189,7 @@ function apply_menu_modifications() {
foreach ( $cap_map as $slug => $cap ) {
$slug = sanitize_text_field( $slug );
$cap = sanitize_key( $cap );
- if ( ! $slug || ! $cap || current_user_can( $cap ) || members_admin_menus_is_protected_slug( $slug ) ) {
+ if ( ! $slug || ! $cap || current_user_can( $cap ) ) {
continue;
}
if ( false !== strpos( $slug, '::' ) ) {
@@ -211,7 +211,7 @@ function apply_menu_modifications() {
foreach ( $hidden as $slug ) {
$slug = sanitize_text_field( $slug );
- if ( ! $slug || members_admin_menus_is_protected_slug( $slug ) ) {
+ if ( ! $slug ) {
continue;
}
if ( false !== strpos( $slug, '::' ) ) {
@@ -956,9 +956,6 @@ function members_am_redirect_target_is_blocked_for_user( $user_id, $url ) {
if ( ! $cslug ) {
continue;
}
- if ( members_admin_menus_is_protected_slug( $cslug ) ) {
- return false;
- }
foreach ( $hidden as $h ) {
if ( $h === $cslug || members_admin_menus_slug_matches( $cslug, $h ) ) {
return true;
@@ -1018,9 +1015,6 @@ function block_restricted_pages() {
if ( ! is_admin() || wp_doing_ajax() || wp_doing_cron() ) {
return;
}
- if ( isset( $_GET['page'] ) && 'members-settings' === sanitize_key( wp_unslash( $_GET['page'] ) ) ) {
- return;
- }
$user_id = get_current_user_id();
if ( ! $user_id || is_user_exempt( $user_id ) ) {
return;
@@ -1032,9 +1026,6 @@ function block_restricted_pages() {
if ( ! empty( $cap_map ) && is_array( $cap_map ) ) {
$current = get_current_screen_slugs();
foreach ( $current as $cslug ) {
- if ( members_admin_menus_is_protected_slug( $cslug ) ) {
- continue;
- }
foreach ( $cap_map as $slug => $cap ) {
if ( ! $slug || ! $cap || current_user_can( $cap ) ) {
continue;
@@ -1055,9 +1046,6 @@ function block_restricted_pages() {
$current = get_current_screen_slugs();
foreach ( $current as $cslug ) {
- if ( members_admin_menus_is_protected_slug( $cslug ) ) {
- continue;
- }
foreach ( $hidden as $h ) {
if ( $h === $cslug || members_admin_menus_slug_matches( $cslug, $h ) ) {
$url = apply_filters( app()->namespace . '/redirect_url', members_am_blocked_redirect_fallback_url( $user_id ), $user_id );
@@ -1177,21 +1165,6 @@ function get_current_screen_slugs() {
return array_unique( array_filter( apply_filters( app()->namespace . '/current_screen_slugs', $slugs ) ) );
}
-/**
- * Slugs that cannot be hidden (Members settings / safety).
- *
- * @param string $slug Slug.
- * @return bool
- */
-function members_admin_menus_is_protected_slug( $slug ) {
- $s = (string) $slug;
- return (
- false !== stripos( $s, 'members-settings' )
- || false !== stripos( $s, 'members-admin-menus' )
- || false !== stripos( $s, 'page=members' )
- );
-}
-
/**
* Whether a menu slug is a Members-added custom item (see inject_custom_menu_items).
*
From 27a426ca1f347d777fe28e59c48feaa747854d60 Mon Sep 17 00:00:00 2001
From: Omar ElHawary
Date: Fri, 24 Apr 2026 11:33:41 +0300
Subject: [PATCH 43/73] feat(admin): improve role capability messaging and sync
post-tag capabilities for category managers
---
.../app/functions-admin.php | 3 +-
.../src/Activator.php | 6 +++
.../src/functions-filters.php | 40 +++++++++++++++++++
css/admin.min.css | 2 +-
js/admin-menus.js | 13 +++++-
js/admin-menus.min.js | 2 +-
6 files changed, 61 insertions(+), 5 deletions(-)
diff --git a/addons/members-admin-menus/app/functions-admin.php b/addons/members-admin-menus/app/functions-admin.php
index e562fec..b4a663f 100644
--- a/addons/members-admin-menus/app/functions-admin.php
+++ b/addons/members-admin-menus/app/functions-admin.php
@@ -379,6 +379,7 @@ function enqueue_admin_menus_assets() {
'moreToolsShowAria' => __( 'Show additional tools: copy between roles, import and export', 'members' ),
'moreToolsHideAria' => __( 'Hide additional tools', 'members' ),
'colorsReadableNeedBg' => __( 'Choose a background color first.', 'members' ),
+ 'noAccessTitlePattern' => __( 'This role does not have the stored capability “%s”. Users with multiple roles may still reach the screen if another role grants it. Tags use manage_post_tags when Category & Tag Caps is active (Members → Roles, Taxonomy).', 'members' ),
),
)
);
@@ -451,7 +452,7 @@ function render_admin_menus_page() {
- 🔒 no access
+ 🔒 no access
diff --git a/addons/members-category-and-tag-caps/src/Activator.php b/addons/members-category-and-tag-caps/src/Activator.php
index c403541..f723bcc 100644
--- a/addons/members-category-and-tag-caps/src/Activator.php
+++ b/addons/members-category-and-tag-caps/src/Activator.php
@@ -30,6 +30,9 @@ class Activator {
*/
public static function activate() {
+ // Activator can run before addon.php loads filters (e.g. first activation).
+ require_once __DIR__ . '/functions-filters.php';
+
// Get the administrator role.
$role = get_role( 'administrator' );
@@ -47,5 +50,8 @@ public static function activate() {
$role->add_cap( 'edit_post_tags' );
$role->add_cap( 'delete_post_tags' );
}
+
+ // Roles with manage_categories could manage tags before granular caps; keep parity.
+ sync_post_tag_caps_for_roles_with_manage_categories();
}
}
diff --git a/addons/members-category-and-tag-caps/src/functions-filters.php b/addons/members-category-and-tag-caps/src/functions-filters.php
index bde38bd..b7c7c8f 100644
--- a/addons/members-category-and-tag-caps/src/functions-filters.php
+++ b/addons/members-category-and-tag-caps/src/functions-filters.php
@@ -99,3 +99,43 @@
return $caps;
}, 10, 2 );
+
+/**
+ * Grant post-tag granular caps to every role that can manage categories.
+ *
+ * Core mapped post_tag `manage_terms` to `manage_categories`. After this add-on remaps
+ * post_tag to `manage_post_tags`, roles cloned from Administrator (or otherwise missing the
+ * new primitives) still had `manage_categories` only — Admin Menus then showed "no access"
+ * for Tags while `current_user_can()` could still pass if another role granted the tag caps.
+ *
+ * @since 1.0.1
+ * @return void
+ */
+function sync_post_tag_caps_for_roles_with_manage_categories() {
+ $tag_caps = array( 'manage_post_tags', 'assign_post_tags', 'edit_post_tags', 'delete_post_tags' );
+ foreach ( wp_roles()->roles as $slug => $_role_info ) {
+ $role = get_role( $slug );
+ if ( ! $role || ! $role->has_cap( 'manage_categories' ) ) {
+ continue;
+ }
+ foreach ( $tag_caps as $cap ) {
+ $role->add_cap( $cap );
+ }
+ }
+}
+
+/**
+ * One-time migration for sites that activated the add-on before tag caps were synced.
+ *
+ * @since 1.0.1
+ * @return void
+ */
+function maybe_sync_post_tag_caps_roles_migration() {
+ if ( '1' === get_option( 'members_ctc_sync_post_tag_caps_roles_v1', '' ) ) {
+ return;
+ }
+ sync_post_tag_caps_for_roles_with_manage_categories();
+ update_option( 'members_ctc_sync_post_tag_caps_roles_v1', '1', true );
+}
+
+add_action( 'init', __NAMESPACE__ . '\maybe_sync_post_tag_caps_roles_migration', 20 );
diff --git a/css/admin.min.css b/css/admin.min.css
index f7a5abd..1b10480 100644
--- a/css/admin.min.css
+++ b/css/admin.min.css
@@ -1 +1 @@
-#members-cp h2.hndle,#members-cp-side h2.hndle{border-bottom:none !important;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}#members-cp h2.hndle:before,#members-cp-side h2.hndle:before{content:url("data:image/svg+xml,%3Csvg width='15px' aria-hidden='true' focusable='false' data-prefix='fas' data-icon='users-cog' class='svg-inline--fa fa-users-cog fa-w-20' role='img' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 640 512'%3E%3Cpath fill='currentColor' d='M610.5 341.3c2.6-14.1 2.6-28.5 0-42.6l25.8-14.9c3-1.7 4.3-5.2 3.3-8.5-6.7-21.6-18.2-41.2-33.2-57.4-2.3-2.5-6-3.1-9-1.4l-25.8 14.9c-10.9-9.3-23.4-16.5-36.9-21.3v-29.8c0-3.4-2.4-6.4-5.7-7.1-22.3-5-45-4.8-66.2 0-3.3.7-5.7 3.7-5.7 7.1v29.8c-13.5 4.8-26 12-36.9 21.3l-25.8-14.9c-2.9-1.7-6.7-1.1-9 1.4-15 16.2-26.5 35.8-33.2 57.4-1 3.3.4 6.8 3.3 8.5l25.8 14.9c-2.6 14.1-2.6 28.5 0 42.6l-25.8 14.9c-3 1.7-4.3 5.2-3.3 8.5 6.7 21.6 18.2 41.1 33.2 57.4 2.3 2.5 6 3.1 9 1.4l25.8-14.9c10.9 9.3 23.4 16.5 36.9 21.3v29.8c0 3.4 2.4 6.4 5.7 7.1 22.3 5 45 4.8 66.2 0 3.3-.7 5.7-3.7 5.7-7.1v-29.8c13.5-4.8 26-12 36.9-21.3l25.8 14.9c2.9 1.7 6.7 1.1 9-1.4 15-16.2 26.5-35.8 33.2-57.4 1-3.3-.4-6.8-3.3-8.5l-25.8-14.9zM496 368.5c-26.8 0-48.5-21.8-48.5-48.5s21.8-48.5 48.5-48.5 48.5 21.8 48.5 48.5-21.7 48.5-48.5 48.5zM96 224c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm224 32c1.9 0 3.7-.5 5.6-.6 8.3-21.7 20.5-42.1 36.3-59.2 7.4-8 17.9-12.6 28.9-12.6 6.9 0 13.7 1.8 19.6 5.3l7.9 4.6c.8-.5 1.6-.9 2.4-1.4 7-14.6 11.2-30.8 11.2-48 0-61.9-50.1-112-112-112S208 82.1 208 144c0 61.9 50.1 112 112 112zm105.2 194.5c-2.3-1.2-4.6-2.6-6.8-3.9-8.2 4.8-15.3 9.8-27.5 9.8-10.9 0-21.4-4.6-28.9-12.6-18.3-19.8-32.3-43.9-40.2-69.6-10.7-34.5 24.9-49.7 25.8-50.3-.1-2.6-.1-5.2 0-7.8l-7.9-4.6c-3.8-2.2-7-5-9.8-8.1-3.3.2-6.5.6-9.8.6-24.6 0-47.6-6-68.5-16h-8.3C179.6 288 128 339.6 128 403.2V432c0 26.5 21.5 48 48 48h255.4c-3.7-6-6.2-12.8-6.2-20.3v-9.2zM173.1 274.6C161.5 263.1 145.6 256 128 256H64c-35.3 0-64 28.7-64 64v32c0 17.7 14.3 32 32 32h65.9c6.3-47.4 34.9-87.3 75.2-109.4z'%3E%3C/path%3E%3C/svg%3E");margin-right:5px}#members-cp-side .postbox-header{border-bottom:none !important}#members-cp-side .handle-actions .handle-order-higher,#members-cp-side .handle-actions .handle-order-lower{display:none}#members-cp-side .handle-actions .handlediv{position:absolute;right:5px}.members-upgrade-header{text-align:center;padding:5px}.members-upgrade-header a{color:#f59431}.memberpress-paid-memberships{background-color:#f5f5f5;padding:50px 10px;text-align:center}.memberpress-paid-memberships a{background-color:#0e4598;display:inline-block;padding:10px 20px;border-radius:300px;color:#fff;text-decoration:none;margin-top:20px}#members-cp-side .members-tabs{position:relative}#members-cp-side .members-tab-nav{background-color:transparent;margin-bottom:20px;border-right:none !important}#members-cp-side .members-tab-nav .members-tab-title{width:33.333%;height:50px;border-right:none !important}#members-cp-side .members-tab-nav .members-tab-title a{border:0}#members-cp-side .members-tab-content h3{font-weight:bold;font-size:15px;margin-top:0;color:#000;margin-bottom:10px}#members-cp-side .members-tab-content .memberpress-paid-memberships{text-align:left;padding:20px}#members-cp-side .members-tab-content .memberpress-paid-memberships a{display:block;text-align:center}#members-cp-side .members-tabs .members-tab-nav li a,#members-cp-side .members-tabs .members-tab-nav li[aria-selected="false"] a i{color:#555}#members-cp-side .members-tabs .members-tab-nav li a svg,#members-cp-side .members-tabs .members-tab-nav li[aria-selected="false"] a svg{fill:#555}#members-cp-side .members-tabs .members-tab-nav li[aria-selected="true"] a{background-color:transparent;border-bottom:2px solid #3582ae}#members-cp-side .members-tabs .members-tab-nav li[aria-selected="true"] a i{color:#3582ae}#members-cp-side .members-tabs .members-tab-nav li[aria-selected="true"] a svg{fill:#3582ae}.members-tab-title svg,.members-tab-title[aria-selected="false"] svg{fill:#0073aa}.members-tab-title[aria-selected="true"] svg{fill:#555}#wpcontent #members-admin-header{margin-left:-20px;padding:0 28px 0 22px;background-color:#0b1220;background-image:radial-gradient(circle at 12% 35%,rgba(14,69,152,0.45),transparent 55%),radial-gradient(circle at 90% 85%,rgba(245,148,49,0.14),transparent 60%);background-repeat:no-repeat;min-height:56px;position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}#wpcontent #members-admin-header img.members-logo{height:42px;display:block}#wpcontent #members-admin-header .members-by-mp{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:12px;margin-left:auto;text-decoration:none;-webkit-box-shadow:none;box-shadow:none;-webkit-transition:opacity .15s ease;transition:opacity .15s ease}#wpcontent #members-admin-header .members-by-mp:hover,#wpcontent #members-admin-header .members-by-mp:focus{opacity:.75;text-decoration:none;-webkit-box-shadow:none;box-shadow:none}#wpcontent #members-admin-header .members-by-label{color:#94a3b8;font-size:12px;font-weight:500}#wpcontent #members-admin-header img.members-mp-logo{height:18px;display:block}#wpcontent #members-admin-header #membersAdminHeaderNotifications{position:relative;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:36px;height:36px;padding:0;margin:0 0 0 18px;background:rgba(255,255,255,0.06);border:1px solid rgba(255,255,255,0.12);border-radius:8px;color:#fff;cursor:pointer;-webkit-box-shadow:none;box-shadow:none;-webkit-transition:background .15s ease,border-color .15s ease;transition:background .15s ease,border-color .15s ease;line-height:1;vertical-align:middle;min-height:0;text-decoration:none}#wpcontent #members-admin-header #membersAdminHeaderNotifications:hover,#wpcontent #members-admin-header #membersAdminHeaderNotifications:focus{background:rgba(255,255,255,0.12);border-color:rgba(255,255,255,0.24);color:#fff;-webkit-box-shadow:none;box-shadow:none;outline:0}#wpcontent #members-admin-header #membersAdminHeaderNotifications svg{width:16px;height:auto;display:block}#wpcontent #members-admin-header #membersAdminHeaderNotifications svg path{fill:#e2e8f0}#wpcontent #members-admin-header #membersAdminHeaderNotifications .members-notifications-count{position:absolute;top:-4px;right:-4px;min-width:16px;height:16px;padding:0 4px;border-radius:999px;background:#f59431;color:#0b1220;font-size:10px;font-weight:700;line-height:16px;text-align:center;border:1.5px solid #0b1220;-webkit-box-sizing:content-box;box-sizing:content-box}.members-upgrade-header #close-members-upgrade-header{position:absolute;right:20px;top:3px}.members-upgrade-header #close-members-upgrade-header:hover{cursor:pointer}.memberpress-welcome-panel.welcome-panel{margin-top:20px;padding:20px 28px;background:#fff;border-radius:10px;min-height:0}.memberpress-welcome-panel.welcome-panel .welcome-panel-content{min-height:0;height:auto}.members-about{--ink:#0f172a;--ink-soft:#334155;--ink-muted:#64748b;--mp-blue:#0e4598;--mp-teal:#3582ae;--mp-orange:#f59431;--rule:#e5e7eb;--paper:#fbfaf7;--paper-soft:#f3efe6;--paper-line:#e8e3d5;--display-font:"Inter",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;--sans-font:"Inter",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif}body.members_page_members-about #wpbody-content,body.toplevel_page_members-about #wpbody-content,body.admin_page_members-about #wpbody-content{background:var(--paper)}.members-about.wrap{max-width:1120px;margin:0 auto;padding:48px 24px 80px;color:var(--ink);font-family:var(--sans-font)}.members-about__hero{display:grid;grid-template-columns:minmax(0,1fr) 200px;grid-template-areas:"head mark" "body mark";gap:32px 56px;-webkit-box-align:start;-ms-flex-align:start;align-items:start;padding-bottom:64px;border-bottom:1px solid var(--paper-line)}.members-about__hero-head{grid-area:head}.members-about__body{grid-area:body}.members-about__mark{grid-area:mark;align-self:start}.members-about__eyebrow{display:inline-block;font-family:var(--sans-font);font-size:12px;font-weight:600;letter-spacing:.18em;text-transform:uppercase;color:var(--ink-muted);padding-bottom:18px}.members-about__title{font-family:var(--display-font);font-weight:900;font-size:clamp(40px,5.5vw,64px);line-height:1;letter-spacing:-0.035em;color:var(--ink);margin:0}.members-about__title em{font-style:normal;font-weight:900;color:var(--mp-blue)}.members-about__title-dot{color:var(--mp-blue);font-style:normal;font-weight:900}.members-about__body{max-width:60ch;font-size:15.5px;line-height:1.62;color:var(--ink-soft)}.members-about__body p{margin:0 0 14px}.members-about__body p:last-child{margin-bottom:0}.members-about__lead{font-family:var(--sans-font);font-weight:500;font-size:17px;line-height:1.5;color:var(--ink);margin-bottom:24px !important;padding-left:18px;border-left:2px solid var(--mp-blue)}.members-about__body a,.members-about__lead a{color:var(--mp-blue);text-decoration:none;background-image:-webkit-gradient(linear,left top,left bottom,from(currentColor),to(currentColor));background-image:linear-gradient(currentColor,currentColor);background-size:100% 1px;background-position:0 100%;background-repeat:no-repeat;padding-bottom:1px;-webkit-transition:color .2s ease,background-size .2s ease;transition:color .2s ease,background-size .2s ease}.members-about__body a:hover,.members-about__lead a:hover{color:var(--mp-orange)}.members-about__body em,.members-about__lead em{font-style:normal;font-weight:700;color:var(--mp-blue)}.members-about__mark{padding:24px;background:#fff;border:1px solid var(--paper-line);border-radius:4px;-webkit-box-shadow:0 1px 2px rgba(15,23,42,0.03);box-shadow:0 1px 2px rgba(15,23,42,0.03);-webkit-transition:-webkit-transform .25s ease,-webkit-box-shadow .25s ease;transition:-webkit-transform .25s ease,-webkit-box-shadow .25s ease;transition:transform .25s ease,box-shadow .25s ease;transition:transform .25s ease,box-shadow .25s ease,-webkit-transform .25s ease,-webkit-box-shadow .25s ease}.members-about__mark:hover{-webkit-transform:translateY(-2px);transform:translateY(-2px);-webkit-box-shadow:0 8px 20px rgba(15,23,42,0.08);box-shadow:0 8px 20px rgba(15,23,42,0.08)}.members-about__mark a{display:block;-webkit-box-shadow:none !important;box-shadow:none !important;text-decoration:none}.members-about__mark img{display:block;width:100%;height:auto;max-width:160px;margin:0 auto}.members-about__products{padding-top:56px}.members-about__products-head{margin-bottom:28px;text-align:center}.members-about__products-head h3{font-family:var(--display-font);font-weight:700;font-size:15px;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-muted);margin:0}.members-about__grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px}.members-about__card{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;padding:24px;background:#fff;border:1px solid var(--paper-line);border-radius:6px;-webkit-transition:border-color .25s ease,-webkit-transform .25s ease,-webkit-box-shadow .25s ease;transition:border-color .25s ease,-webkit-transform .25s ease,-webkit-box-shadow .25s ease;transition:transform .25s ease,box-shadow .25s ease,border-color .25s ease;transition:transform .25s ease,box-shadow .25s ease,border-color .25s ease,-webkit-transform .25s ease,-webkit-box-shadow .25s ease}.members-about__card:hover{-webkit-transform:translateY(-3px);transform:translateY(-3px);-webkit-box-shadow:0 12px 28px rgba(15,23,42,0.08);box-shadow:0 12px 28px rgba(15,23,42,0.08);border-color:rgba(14,69,152,0.2)}.members-about__card-head{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:14px;margin-bottom:14px}.members-about__card-icon{-webkit-box-flex:0;-ms-flex:0 0 44px;flex:0 0 44px;width:44px;height:44px;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;background:var(--paper-soft);border-radius:10px;overflow:hidden}.members-about__card-icon img{display:block;max-width:32px;max-height:32px;width:auto;height:auto}.members-about__card-title{margin:0;font-family:var(--display-font);font-weight:700;font-size:17px;line-height:1.2;letter-spacing:-0.01em;color:var(--ink)}.members-about__card-title a{color:inherit;text-decoration:none;-webkit-box-shadow:none;box-shadow:none}.members-about__card-title a:hover{color:var(--mp-blue)}.members-about__card-desc{-webkit-box-flex:1;-ms-flex:1;flex:1;margin:0 0 24px;font-size:14px;line-height:1.55;color:var(--ink-soft)}.members-about__card-foot{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;gap:16px;padding-top:16px;border-top:1px solid var(--paper-line)}.members-about__status{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;font-size:12px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-muted)}.members-about__status::before{content:"";width:7px;height:7px;border-radius:50%;background:currentColor}.members-about__status.is-active{color:#10b981}.members-about__status.is-inactive{color:var(--mp-orange)}.members-about__status.is-missing{color:var(--ink-muted)}.members-about__cta{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;padding:8px 14px;font-size:13px;font-weight:600;letter-spacing:.01em;border-radius:4px;text-decoration:none;border:1px solid transparent;-webkit-transition:background .2s ease,border-color .2s ease,color .2s ease,-webkit-transform .15s ease;transition:background .2s ease,border-color .2s ease,color .2s ease,-webkit-transform .15s ease;transition:background .2s ease,border-color .2s ease,color .2s ease,transform .15s ease;transition:background .2s ease,border-color .2s ease,color .2s ease,transform .15s ease,-webkit-transform .15s ease;-webkit-box-shadow:none;box-shadow:none}.members-about__cta:focus,.members-about__cta:focus-visible{outline:2px solid var(--mp-blue);outline-offset:2px;-webkit-box-shadow:none;box-shadow:none}.members-about__cta.is-primary{background:var(--mp-blue);color:#fff}.members-about__cta.is-primary:hover{background:#093374;color:#fff;-webkit-transform:translateY(-1px);transform:translateY(-1px)}.members-about__cta.is-secondary{background:transparent;color:var(--ink);border-color:var(--rule)}.members-about__cta.is-secondary:hover{border-color:var(--ink);background:#fff;color:var(--ink)}.members-about__cta svg{-webkit-transition:-webkit-transform .2s ease;transition:-webkit-transform .2s ease;transition:transform .2s ease;transition:transform .2s ease,-webkit-transform .2s ease}.members-about__cta:hover svg{-webkit-transform:translate(1px,-1px);transform:translate(1px,-1px)}@media(max-width:900px){.members-about__hero{grid-template-columns:1fr;grid-template-areas:"head" "body" "mark";gap:24px}.members-about__mark{max-width:160px}.members-about__grid{grid-template-columns:1fr}}.memberpress-welcome-panel.welcome-panel:before{background:0}.memberpress-welcome-panel.welcome-panel .about-description{margin:20px 0}.memberpress-welcome-panel.welcome-panel-content{margin:0}.memberpress-welcome-panel.welcome-panel-content .mp-logo-wrap>a{display:block}@media screen and (min-width:870px){.members_page_members-settings .members-short-p{max-width:612px;margin-left:auto;margin-right:auto}.members_page_members-settings .welcome-panel-content{text-align:center}}.members_page_members-settings .welcome-panel .button.button-hero{margin-left:auto;margin-right:auto}.members_page_members-settings .members-svg-wrap{display:inline-block;margin:0 auto 20px}@media screen and (max-width:870px){.members_page_members-settings .welcome-panel{padding:20px}.members_page_members-settings .members-svg-wrap{float:left;margin-right:28px}.admin_page_members-settings.rtl .members-svg-wrap{float:right;margin-right:0;margin-left:28px}}.members_page_members-settings .members-svg-link{display:table-cell;text-align:center;width:128px;height:128px;background:#363b3f;color:#fff;padding:24px 16px 16px;border-radius:50%;-webkit-box-sizing:border-box;box-sizing:border-box;border:4px solid #fff;-webkit-box-shadow:0 0 0 4px #363b3f;box-shadow:0 0 0 4px #363b3f}.members_page_members-settings .members-svg-link svg{max-width:84px;max-height:64px;width:auto;height:auto}.members-addons{display:grid;grid-template-columns:1fr 1fr;grid-row-gap:20px;grid-column-gap:20px}.members-addons .plugin-card{margin:0}.members-addons .plugin-card-top{width:100%}.members-addon{width:100%;position:relative;float:none;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.members-addon .desc{margin-bottom:80px}.addon-activate{text-align:center;border:1px solid #ddd;border-radius:3px;padding:5px 10px 10px;display:inline-block;width:100px;position:absolute;right:20px;bottom:20px}.activate-toggle:hover{cursor:pointer}.activate-toggle svg{max-width:20px;position:relative;top:5px}.activate-toggle svg{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.activate-toggle svg.active{-webkit-transform:rotate(0);transform:rotate(0)}.activate-toggle svg path{fill:#ccc}.activate-toggle svg.active path{fill:#8cbd5a}.activate-toggle.processing{cursor:not-allowed;pointer-events:none;opacity:.5}.activate-toggle .action-label{display:inline-block;width:50px;text-align:left}.mepr_dummy_txns{-webkit-filter:blur(3px);filter:blur(3px);position:absolute;top:0;left:0;width:100%;z-index:5;pointer-events:none}.mepr_dummy_txns::after{background-color:rgba(0,0,0,.2);position:absolute;top:0;left:0;width:100%;height:100%;z-index:6}.mepr-upgrade-table{position:relative}.mepr-upgrade-table .mepr-upgrade{position:relative;top:100px;z-index:10;background:rgba(0,0,0,.2);width:100%;height:100%;max-width:600px;margin:0 auto;-webkit-box-shadow:0 0 30px #ccc;box-shadow:0 0 30px #ccc}.mepr-upgrade-content{background-color:#fff;padding:20px;text-align:center}.mepr-upgrade-content h2{font-size:24px}.mepr-upgrade-content h4{font-size:18px}.mepr-upgrade-content .features{display:grid;grid-template-columns:1fr 1fr;grid-column-gap:30px;grid-row-gap:10px;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;text-align:left;padding:10px}.features li:before{content:"\f147";font-family:dashicons;color:green;font-size:20px;position:relative;top:4px;margin-right:10px}.mepr-upgrade-cta{text-align:center;background-color:#f2f2f2;padding:20px}.mepr-upgrade-cta .mepr-cta-button{display:block;max-width:300px;margin:0 auto 20px;background-color:#fd9c27;color:#fff;padding:15px;font-size:18px;font-weight:bold;text-decoration:none;border-radius:300px}.members-plugin-card.plugin-card:nth-child(even){margin-right:inherit}.members-plugin-card.plugin-card:nth-child(odd){clear:none;margin-left:inherit}.members-plugin-card.plugin-card .plugin-card-top{min-height:0;padding:30px 20px}.members-plugin-card.plugin-card .plugin-icon{top:30px}.members-plugin-card.plugin-card .plugin-card-bottom .column-status{font-weight:bold}.members-plugin-card.plugin-card .plugin-card-bottom .column-status .active{color:#8cbd5a}.members-plugin-card.plugin-card .plugin-card-bottom .column-status .inactive{color:red}.members-plugin-card.plugin-card .plugin-icon{width:64px;height:auto}.plugin-icon-small{width:32px;height:auto}.members-plugin-card.plugin-card .name,.members-plugin-card.plugin-card .desc{margin-right:0;margin-left:84px}.members-addons .plugin-card .name,.members-addons .plugin-card .desc p{margin-right:0}@media screen and (max-width:1100px){.members-addons{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}}@media screen and (max-width:600px){.members_page_members-settings .members-svg-link{width:64px;height:64px}.members_page_members-settings .members-svg-link svg{position:absolute;top:14px;left:15px;max-width:30px;max-height:30px}.members_page_members-settings .plugin-card-members-edd-integration .members-svg-link svg,.members_page_members-settings .plugin-card-members-acf-integration .members-svg-link svg,.members_page_members-settings .plugin-card-members-givewp-integration .members-svg-link svg,.members_page_members-settings .plugin-card-members-meta-box-integration .members-svg-link svg,.members_page_members-settings .plugin-card-members-woocommerce-integration .members-svg-link svg{top:10px;left:8px;max-width:40px;max-height:40px}.members_page_members-settings .plugin-card-members-block-permissions .members-svg-link svg,.members_page_members-settings .plugin-card-members-role-hierarchy .members-svg-link svg{left:14px}.members-addons .plugin-card .desc>p,.members-addons .plugin-card .name{margin-left:84px}}.memberpress-about .welcome-panel-column-container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:40px;padding:0;margin:0}.memberpress-about .mp-desc p{font-size:13px;line-height:1.6;color:#334155;margin:0 0 12px}.memberpress-about .mp-desc p:first-child{font-size:15px;font-weight:600;color:#0f172a;margin-top:0;margin-bottom:14px}.memberpress-about .mp-desc p:last-child{margin-bottom:0}.memberpress-about .mp-logo-wrap{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.memberpress-about .mp-logo{display:block;max-width:220px;height:auto;margin:0}.members-about-addons{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-column-gap:20px}.members-about-addons .members-plugin-card{margin:0;width:100%}.members-about-addons .members-plugin-card .plugin-icon{position:static;width:auto;height:28px;max-width:40px;-o-object-fit:contain;object-fit:contain;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;display:block}.members-about-addons .members-plugin-card .name,.members-about-addons .members-plugin-card .desc{margin-left:0}.members-about-addons .members-plugin-card .plugin-card-top{padding:20px}.members-about-addons .members-plugin-card .name h3{margin:0 0 10px;min-height:0;height:auto;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:10px;line-height:1.2}.members-about-addons .members-plugin-card .name h3 a{text-decoration:none;line-height:1.2}.members-about-addons .members-plugin-card .plugin-card-bottom{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}@media only screen and (max-width:1099px){.members-about-addons{grid-template-columns:1fr;grid-row-gap:20px}}@media screen and (min-width:1100px) and (max-width:1600px){.members-about-addons .members-plugin-card{float:none;width:auto;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.members-plugin-card.plugin-card .desc{margin-left:0;margin-top:50px}.members-plugin-card.plugin-card .desc p{margin-left:0;margin-right:0}.members-plugin-card.plugin-card .plugin-card-bottom .column-status{float:none}.members-plugin-card.plugin-card .plugin-card-bottom .column-updated{float:none;width:auto}}@media screen and (max-width:1200px){.welcome-panel .welcome-panel-column-container{-webkit-box-orient:vertical;-webkit-box-direction:reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse;gap:0;padding:0}.memberpress-about .mp-logo{margin:0 0 20px}}.members-plugin-card.plugin-card .desc p{margin-left:0;margin-right:0}@media only screen and (min-width:783px){.members_page_roles .column-users,.members_page_roles .column-granted_caps,.members_page_roles .column-denied_caps{width:100px;text-align:center}}.members-title-div #titlewrap input{padding:0 8px;font-size:1.7em;line-height:normal;height:1.7em;width:100%;outline:0;margin:0 0 3px;background-color:#fff}.members-title-div input[name="role"]{font-size:13px;height:22px;margin:0;width:16em}#tabcapsdiv{margin-top:1em}#tabcapsdiv>.hndle{padding:10px;border-bottom:1px solid #eee}#tabcapsdiv .inside,#members-cp .inside{margin:0;padding:0}.members-cap-tabs,.members-tabs{overflow:hidden;background:#fff;background:-webkit-gradient(linear,left top,right top,from(#fafafa),color-stop(20%,#fafafa),color-stop(20%,#fff),to(#fff));background:linear-gradient(90deg,#fafafa 0,#fafafa 20%,#fff 20%,#fff 100%)}@media only screen and (max-width:782px){.members-cap-tabs,.members-tabs{background:linear-gradient(90deg,#fafafa 0,#fafafa 48px,#fff 48px,#fff 100%)}}.members-cap-tabs .members-tab-nav,.members-tabs .members-tab-nav{position:relative;float:left;list-style:none;width:20%;line-height:1em;margin:0 0 -1px 0;padding:0;background-color:#fafafa;border-right:1px solid #eee;-webkit-box-sizing:border-box;box-sizing:border-box}.members-cap-tabs .members-tab-nav li,.members-tabs .members-tab-nav li{display:block;position:relative;margin:0;padding:0;line-height:20px}.members-cap-tabs .members-tab-nav li a,.members-tabs .members-tab-nav li a{display:block;margin:0;padding:10px;line-height:20px !important;text-decoration:none;border-bottom:1px solid #eee;-webkit-box-shadow:none;box-shadow:none}.members-cap-tabs .members-tab-nav li a .dashicons,.members-tabs .members-tab-nav li a .dashicons{line-height:20px;margin-right:3px}.members-cap-tabs .members-tab-nav li[aria-selected="true"] a,.members-tabs .members-tab-nav li[aria-selected="true"] a{position:relative;font-weight:bold;color:#555;background-color:#e0e0e0}@media only screen and (max-width:782px){.members-cap-tabs .members-tab-nav,.members-tabs .members-tab-nav{width:48px}.members-cap-tabs .members-tab-nav li a .dashicons,.members-tabs .members-tab-nav li a .dashicons{width:24px;height:24px;font-size:24px;line-height:24px}.members-tab-nav li .dashicons::before,.members-tab-nav li .dashicons::before{width:24px;height:24px}.members-tab-nav li .label{overflow:hidden;position:absolute;top:-1000em;left:-1000em;width:1px;height:1px}}.members-cap-tabs .members-tab-wrap,.members-tabs .members-tab-wrap{float:left;width:80%;margin-left:-1px}@media only screen and (max-width:782px){.members-cap-tabs .members-tab-wrap,.members-tabs .members-tab-wrap{width:calc(100% - 48px)}}#members-cp .members-tab-content{padding:10px;border-left:1px solid #e5e5e5}.members-roles-select th,.members-roles-select td{width:190px;overflow:hidden}.members-roles-select .check-all-th{text-align:center}.members-roles-select .check-all-th label{padding-left:5px}@media only screen and (min-width:850px){#side-sortables .members-tabs{background:#fff}#side-sortables .members-tabs .members-tab-wrap{width:100%}#side-sortables .members-tabs .members-tab-nav{display:table;width:100%}#side-sortables .members-tabs .members-tab-nav li{display:table-cell;text-align:center;border-right:1px solid #eee}#side-sortables .members-tabs .members-tab-nav li:last-of-type{border-right:0}#side-sortables .members-tabs .members-tab-nav li a{padding:10px 0}#side-sortables .members-tabs .members-tab-nav .dashicons{width:24px;height:24px;font-size:24px;line-height:24px}#side-sortables .members-tabs .members-tab-nav .dashicons::before{width:24px;height:24px}#side-sortables .members-tabs .members-tab-nav .label{overflow:hidden;position:absolute;top:-1000em;left:-1000em;width:1px;height:1px}}.members-tabs .members-tabs-label{display:block !important;font-weight:bold;display:inline-block;margin-bottom:4px}.members-tabs .butterbean-control-checkbox .members-tabs-label{display:inline !important}.members-tabs .members-tabs-description{display:block;font-style:italic;margin-top:4px}.members-tabs .members-tabs-label+.members-tabs-description{margin-top:0;margin-bottom:4px}#tabcapsdiv table{border-right:0;border-top:0;border-bottom:0}#tabcapsdiv table td,#tabcapsdiv table th{padding:10px;padding-bottom:10px;border-bottom:1px solid #eee;font-size:13px;line-height:20px}#tabcapsdiv table td{padding:9px}#tabcapsdiv tbody tr:last-of-type td{border-bottom:0}#tabcapsdiv tfoot th{border-color:#eee}@media only screen and (max-width:782px){#tabcapsdiv table td,#tabcapsdiv table th{line-height:24px}}.members-roles-select .column-grant,.members-roles-select .column-deny{width:70px !important;text-align:left;display:table-cell !important;clear:none !important}.members-roles-select thead th,.members-roles-select tfoot th{padding:9px !important}.members-roles-select .column-grant input,.members-roles-select .column-deny input{margin:0 5px 0 0;vertical-align:middle}.members-roles-select tbody tr:nth-child(even){background:#f2f2f2}.members-cap-tabs button{display:inline;margin:-4px;line-height:inherit;padding:4px 8px;border:1px solid transparent;background:transparent;border-radius:0;outline:0;-webkit-transition:all .25s ease-out;transition:all .25s ease-out}.members-cap-tabs button:hover,.members-cap-tabs button:focus{border-color:#eee;background:#fafafa;cursor:pointer}.members-cap-tabs button:active{color:#0073aa;border-color:#0073aa}.members-cap-tabs button+.dashicons{display:none;margin-top:1px;margin-bottom:-1px;line-height:inherit}.members-cap-tabs button:hover+.dashicons,.members-cap-tabs button:focus+.dashicons{display:inline-block}.members-tab-content .members-highlight{background-color:rgba(0,115,170,0.05)}.members-tab-content tbody{-webkit-transition:all 2s ease-in-out;transition:all 2s ease-in-out}.members-cp-role-list-wrap{overflow:auto;min-height:42px;max-height:200px;padding:0 .9em;border:solid 1px #dfdfdf;background-color:#fdfdfd}#wpbody-content{padding-bottom:200px}.members-footer-promotion{text-align:center;font-weight:400;font-size:13px;line-height:16px;color:#787c82;padding:20px 0 30px 0;margin-bottom:20px}.members-footer-promotion p{font-weight:600}.members-footer-promotion-links,.members-footer-promotion-social{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.members-footer-promotion-links{margin:9px 0 0}.members-footer-promotion-links span{color:#c3c4c7;padding:0 7px}.members-footer-promotion-social{margin:10px 0 0 0;gap:10px}.members-footer-promotion-social li{margin-bottom:0}.members-footer-promotion-social a{display:block;height:16px}.members_page_members-settings.rtl{.addon-activate{left:20px;right:unset}.members-addons .plugin-card{.name,.desc p{margin-left:0;margin-right:148px}}}.button.button-warning{background:#dc3232;border-color:#dc3232;color:#fff}.button.button-warning:hover,.button.button-warning:focus{background:#c92424;border-color:#c92424;color:#fff}.members-reset-spinner{float:none;margin-top:0;vertical-align:middle}.members-admin-menus-wrap{max-width:1400px;--members-am-accent-use:var(--members-am-accent,var(--wp-admin-theme-color,#2271b1));--members-am-surface-use:var(--members-am-surface,color-mix(in srgb,var(--members-am-base,#1d2327) 88%,#fff 12%));--members-am-border-on-base-fallback:color-mix(in srgb,var(--members-am-base,#1d2327) 62%,#fff 38%);--members-am-chrome-bg:var(--wp-components-color-gray-100,#f6f7f7);--members-am-chrome-border:var(--wp-components-color-gray-400,#c3c4c7);--members-am-muted:var(--wp-components-color-gray-600,#646970)}.members-am-notices{margin:0 0 12px}.members-am-notices .notice{margin:0 0 8px}.members-admin-menus-toolbar{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;gap:0;margin-bottom:16px;border:1px solid var(--members-am-chrome-border,#c3c4c7);border-radius:2px;background:var(--wp-components-color-background,#fff);overflow:visible}.members-am-toolbar-row{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px}.members-am-toolbar-row--primary{padding:10px 12px;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;row-gap:10px}.members-am-toolbar-group{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px}.members-am-toolbar-group--document{position:relative;z-index:5;padding-right:12px;border-right:1px solid var(--members-am-chrome-border,#c3c4c7)}.members-am-toolbar-row--primary .members-am-toolbar-primary-user{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px;margin-left:8px;-webkit-box-flex:0;-ms-flex:0 1 auto;flex:0 1 auto;min-width:0}.members-am-toolbar-row--primary .members-am-toolbar-primary-user #members-am-user-search.members-am-user-search-input{width:168px;max-width:100%;min-width:0}.members-am-toolbar-group--view{margin-left:auto;-ms-flex-wrap:nowrap;flex-wrap:nowrap}.members-am-toolbar-extra{background:var(--members-am-chrome-bg,#f6f7f7);border-top:1px solid var(--members-am-chrome-border,#c3c4c7);padding:10px 12px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:10px}.members-am-toolbar-extra[hidden]{display:none !important}.members-am-toolbar-row--extra-tools{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-wrap:wrap;flex-wrap:wrap;row-gap:10px}.members-am-toolbar-row--extra-tools .members-am-copy-wrap{margin-left:4px;padding-left:12px;border-left:1px solid var(--members-am-chrome-border,#c3c4c7)}.members-am-toolbar-row--extra-tools .members-am-toolbar-group--io{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;margin-left:8px;padding-left:12px;border-left:1px solid var(--members-am-chrome-border,#c3c4c7)}.members-am-more-tools,.members-am-more-tools:hover,.members-am-more-tools:focus,.members-am-more-tools:focus-visible,.members-am-more-tools:active{text-decoration:none !important}.members-am-more-tools{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:4px;white-space:nowrap;padding:2px 2px 2px 4px;vertical-align:middle;line-height:1.4}.members-am-more-tools .members-am-more-tools-text,.members-am-more-tools:hover .members-am-more-tools-text,.members-am-more-tools:focus .members-am-more-tools-text,.members-am-more-tools:focus-visible .members-am-more-tools-text,.members-am-more-tools:active .members-am-more-tools-text,.members-am-more-tools .members-am-more-tools-chevron,.members-am-more-tools:hover .members-am-more-tools-chevron,.members-am-more-tools:focus .members-am-more-tools-chevron,.members-am-more-tools:focus-visible .members-am-more-tools-chevron,.members-am-more-tools:active .members-am-more-tools-chevron,.members-am-more-tools .members-am-more-tools-chevron-svg,.members-am-more-tools:hover .members-am-more-tools-chevron-svg,.members-am-more-tools:focus .members-am-more-tools-chevron-svg,.members-am-more-tools:focus-visible .members-am-more-tools-chevron-svg,.members-am-more-tools:active .members-am-more-tools-chevron-svg{text-decoration:none !important}.members-am-more-tools .members-am-more-tools-text{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;line-height:1.4}.members-am-more-tools .members-am-more-tools-chevron{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-ms-flex-negative:0;flex-shrink:0;line-height:0;opacity:.88}.members-am-more-tools .members-am-more-tools-chevron-svg{display:block;overflow:visible;-webkit-transition:-webkit-transform .15s ease;transition:-webkit-transform .15s ease;transition:transform .15s ease;transition:transform .15s ease,-webkit-transform .15s ease;-webkit-transform-origin:50% 50%;transform-origin:50% 50%;shape-rendering:geometricPrecision}.members-am-more-tools .members-am-more-tools-chevron-svg polygon{stroke:none}.members-am-more-tools.is-open .members-am-more-tools-chevron-svg{-webkit-transform:rotate(180deg);transform:rotate(180deg)}@media(prefers-reduced-motion:reduce){.members-am-more-tools .members-am-more-tools-chevron-svg{-webkit-transition:none;transition:none}}@media screen and (max-width:782px){.members-am-toolbar-group--document{border-right:0;padding-right:0;border-bottom:1px solid var(--members-am-chrome-border,#c3c4c7);padding-bottom:10px;width:100%}.members-am-toolbar-group--view{margin-left:0;width:100%;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.members-am-toolbar-row--primary .members-am-toolbar-primary-user{margin-left:0;padding-left:0;border-left:0;padding-top:8px;border-top:1px solid var(--members-am-chrome-border,#c3c4c7);width:100%;max-width:none}.members-am-toolbar-row--primary .members-am-toolbar-primary-user #members-am-user-search.members-am-user-search-input{width:100%;max-width:100%}.members-am-toolbar-row--extra-tools .members-am-admin-editable{width:100%}.members-am-toolbar-row--extra-tools .members-am-copy-wrap{margin-left:0;padding-left:0;border-left:0;padding-top:8px;border-top:1px solid var(--members-am-chrome-border,#c3c4c7);width:100%}.members-am-toolbar-row--extra-tools .members-am-toolbar-group--io{margin-left:0;padding-left:0;border-left:0;padding-top:8px;border-top:1px solid var(--members-am-chrome-border,#c3c4c7);width:100%}}.members-am-toolbar-loading{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;margin-left:4px;color:var(--members-am-muted,#646970);font-size:13px;line-height:1}.members-am-toolbar-loading .spinner{float:none;margin:0}.members-am-toolbar-loading[hidden]{display:none !important}.members-am-copy-wrap label{margin-right:8px}.members-am-chips{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:8px;margin-bottom:12px}.members-am-chip{border-radius:999px;padding:4px 12px;border:1px solid var(--members-am-chrome-border,#c3c4c7);background:var(--members-am-chrome-bg,#f6f7f7);cursor:pointer}.members-am-chip.is-active{background:var(--members-am-accent-use);border-color:var(--members-am-accent-use);color:var(--wp-components-color-accent-inverted,#fff)}.members-am-carousel-wrap{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;gap:8px;margin-bottom:8px}.members-am-carousel-prev,.members-am-carousel-next{-ms-flex-item-align:center;align-self:center;width:36px;height:36px;border-radius:50%;border:1px solid var(--members-am-chrome-border,#c3c4c7);background:var(--wp-components-color-background,#fff);cursor:pointer}.members-am-columns{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-ms-flex:1;flex:1;gap:12px;min-height:320px;overflow:hidden}.members-am-column{-webkit-box-flex:1;-ms-flex:1;flex:1;min-width:0;background:var(--members-am-base,#1d2327);border-radius:4px;color:var(--members-am-fg-on-base,#f0f0f1);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.members-am-user-column{border:2px dashed var(--wp-components-color-gray-700,#8c8f94)}.members-am-sidebar-head{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:8px 10px;background:var(--members-am-surface-use);border-radius:4px 4px 0 0;font-weight:600;font-size:12px;text-transform:uppercase;letter-spacing:.04em;color:var(--members-am-fg-on-surface,var(--members-am-fg-on-base,#f0f0f1))}.members-am-col-filter{padding:6px 8px 8px;border-bottom:1px solid var(--members-am-border-on-base,var(--members-am-border-on-base-fallback));-ms-flex-negative:0;flex-shrink:0}.members-am-col-filter-input{width:100%;max-width:100%;-webkit-box-sizing:border-box;box-sizing:border-box;font-size:12px;line-height:1.4;padding:4px 8px;border-radius:2px;border:1px solid var(--members-am-border-on-base,var(--members-am-border-on-base-fallback));background:var(--members-am-base,#1d2327);color:var(--members-am-fg-on-base,#f0f0f1)}.members-am-col-filter-input::-webkit-input-placeholder{color:var(--members-am-fg-muted-on-base,var(--wp-components-color-gray-700,#8c8f94));opacity:1}.members-am-col-filter-input::-moz-placeholder{color:var(--members-am-fg-muted-on-base,var(--wp-components-color-gray-700,#8c8f94));opacity:1}.members-am-col-filter-input:-ms-input-placeholder{color:var(--members-am-fg-muted-on-base,var(--wp-components-color-gray-700,#8c8f94));opacity:1}.members-am-col-filter-input::-ms-input-placeholder{color:var(--members-am-fg-muted-on-base,var(--wp-components-color-gray-700,#8c8f94));opacity:1}.members-am-col-filter-input::placeholder{color:var(--members-am-fg-muted-on-base,var(--wp-components-color-gray-700,#8c8f94));opacity:1}.members-am-col-filter-input:focus{border-color:var(--members-am-accent-use);outline:1px solid transparent;-webkit-box-shadow:0 0 0 var(--wp-admin-border-width-focus,1px) var(--members-am-accent-use);box-shadow:0 0 0 var(--wp-admin-border-width-focus,1px) var(--members-am-accent-use)}.members-am-col-bulk{padding:0 8px 8px;border-bottom:1px solid var(--members-am-border-on-base,var(--members-am-border-on-base-fallback));-ms-flex-negative:0;flex-shrink:0}.members-am-col-bulk-toolbar,.members-am-col-collapse-toolbar{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:6px;margin-bottom:6px;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.members-am-col-bulk-toolbar .button.button-small,.members-am-col-collapse-toolbar .button.button-small{font-size:11px;min-height:26px;line-height:24px;padding:0 8px;background:var(--members-am-surface-use);border-color:var(--members-am-border-on-surface,var(--members-am-border-on-base,var(--members-am-border-on-base-fallback)));color:var(--members-am-fg-on-surface,var(--members-am-fg-on-base,#f0f0f1))}.members-am-col-bulk-toolbar .button.button-small:hover,.members-am-col-collapse-toolbar .button.button-small:hover{background:color-mix(in srgb,var(--members-am-surface-use) 85%,#fff 15%);border-color:var(--wp-components-color-gray-700,#8c8f94);color:var(--members-am-fg-on-surface,var(--members-am-fg-on-base,#f0f0f1))}.members-am-item-lead{-ms-flex-negative:0;flex-shrink:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:22px;padding:2px 0 0}.members-am-collapse-spacer{display:block;width:20px;height:20px;-ms-flex-negative:0;flex-shrink:0}.members-am-collapse-toggle{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:22px;height:22px;margin:0;padding:0;border:0;background:transparent;color:var(--members-am-fg-muted-on-base,var(--members-am-chrome-border,#c3c4c7));border-radius:2px;cursor:pointer;-ms-flex-negative:0;flex-shrink:0}.members-am-collapse-toggle:hover,.members-am-collapse-toggle:focus{color:var(--members-am-fg-on-base,#f0f0f1);background:color-mix(in srgb,var(--members-am-fg-on-base,#f0f0f1) 12%,transparent);outline:0}.members-am-collapse-toggle .dashicons{font-size:18px;width:18px;height:18px}.members-am-item-cb-wrap{-ms-flex-negative:0;flex-shrink:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;padding:2px 4px 0 0}.members-am-item-cb{margin:0;width:16px;height:16px;-ms-flex-negative:0;flex-shrink:0}.members-am-bulk-select{width:100%;max-width:100%;-webkit-box-sizing:border-box;box-sizing:border-box;font-size:12px;line-height:1.4;padding:4px 8px;border-radius:2px;border:1px solid var(--members-am-border-on-base,var(--members-am-border-on-base-fallback));background:var(--members-am-base,#1d2327);color:var(--members-am-fg-on-base,#f0f0f1)}.members-am-bulk-select:focus{border-color:var(--members-am-accent-use);outline:1px solid transparent;-webkit-box-shadow:0 0 0 var(--wp-admin-border-width-focus,1px) var(--members-am-accent-use);box-shadow:0 0 0 var(--wp-admin-border-width-focus,1px) var(--members-am-accent-use)}.members-am-item.members-am-filter-hidden,.members-am-sep.members-am-filter-hidden,.members-am-item.members-am-collapse-hidden{display:none !important}.members-am-col-move button{margin-left:4px;padding:0 6px;min-height:24px;line-height:22px;font-size:11px}.members-am-sidebar-list{padding:6px 0 12px;overflow-y:auto;max-height:480px}.members-am-item{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;gap:4px;padding:6px 10px 6px 6px;cursor:pointer;border-left:3px solid transparent;font-size:13px}.members-am-item.is-sub{padding-left:22px;font-size:12px;opacity:.95}.members-am-item.is-sub-deep{padding-left:36px}.members-am-sidebar-list .members-am-item{cursor:-webkit-grab;cursor:grab}.members-am-sidebar-list .members-am-item:active{cursor:-webkit-grabbing;cursor:grabbing}.members-am-sort-placeholder{-webkit-box-sizing:border-box;box-sizing:border-box;min-height:36px;margin:2px 0;background:color-mix(in srgb,var(--members-am-accent-use) 8%,transparent);border:1px dashed var(--members-am-accent-use);border-radius:2px}.members-am-item.is-hidden{opacity:.18}.members-am-item.is-no-cap{opacity:.35}.members-am-item.is-no-cap.is-hidden{opacity:.15}.members-am-item.is-selected{border-left-color:var(--members-am-accent-use);background:color-mix(in srgb,var(--members-am-accent-use) 15%,transparent)}.members-am-item-main{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;min-width:0}.members-am-item-main .dashicons{font-size:18px;width:18px;height:18px}.members-am-item-label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.members-am-item-actions{display:none;gap:2px}.members-am-item:hover .members-am-item-actions{display:-webkit-box;display:-ms-flexbox;display:flex}.members-am-item-actions button{min-height:22px;padding:0 4px;line-height:20px;font-size:11px}.members-am-sep{text-align:center;opacity:.35;font-size:11px;padding:4px 0}.members-am-carousel-dots{text-align:center;margin-bottom:4px}.members-am-dot{width:8px;height:8px;border-radius:50%;border:0;margin:0 4px;padding:0;background:var(--members-am-chrome-border,#c3c4c7);cursor:pointer}.members-am-dot.is-active{background:var(--members-am-accent-use)}.members-am-carousel-status{text-align:center;color:var(--members-am-muted,#646970);font-size:12px;margin-top:0}.members-am-badge{font-size:9px;text-transform:uppercase;padding:1px 4px;border-radius:2px;margin-right:4px;vertical-align:middle}.members-am-badge-new{background:var(--members-am-accent-use);color:var(--wp-components-color-accent-inverted,#fff)}.members-am-badge-edit{background:#dba617;color:var(--members-am-base,#1d2327)}.members-am-badge-nocap{background:var(--wp-components-color-gray-700,#8c8f94);color:var(--wp-components-color-accent-inverted,#fff)}.members-am-legend{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:16px;margin:0 0 8px;padding:0;font-size:12px;color:var(--members-am-muted,#646970)}.members-am-legend-item{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:4px}.members-am-edit-panel{margin-top:20px;padding:16px;border:1px solid var(--members-am-chrome-border,#c3c4c7);background:var(--wp-components-color-background,#fff);border-radius:4px}.members-am-edit-panel-header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:12px}.members-am-edit-panel-header h2{margin:0;font-size:16px}.members-am-edit-toolbar{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:12px;margin-bottom:12px}.members-am-edit-target-wrap select{margin-left:8px}.members-am-level-actions .button{margin-right:6px}.members-am-demote-wrap{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:6px}.members-am-demote-wrap .members-am-demote-select{min-width:200px;max-width:min(320px,100%)}.members-am-edit-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:16px}.members-am-edit-col label{display:block;font-weight:600;margin-bottom:4px}.members-am-icon-tabs{margin-bottom:8px}.members-am-icon-tabs .button{margin-right:4px;margin-bottom:4px}.members-am-icon-tabs .button.is-active{background:var(--members-am-accent-use);border-color:var(--members-am-accent-use);color:var(--wp-components-color-accent-inverted,#fff)}.members-am-icon-grid{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:4px;max-height:160px;overflow-y:auto;border:1px solid var(--wp-components-color-gray-200,#dcdcde);padding:8px;background:var(--members-am-chrome-bg,#f6f7f7);margin-bottom:8px}.members-am-icon-pick{width:36px;height:36px;padding:0;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;border:1px solid var(--members-am-chrome-border,#c3c4c7);background:var(--wp-components-color-background,#fff);cursor:pointer}.members-am-bulk-visibility-hint{margin:0 0 8px;font-size:12px;color:var(--members-am-fg-muted-on-base,#646970)}.members-am-vis-role-filter-wrap{margin-bottom:8px}.members-am-vis-row.members-am-vis-filter-hidden{display:none}.members-am-vis-row{display:block;margin-bottom:6px;font-weight:normal}.members-am-reset-dropdown{position:absolute;z-index:100000;background:var(--wp-components-color-background,#fff);border:1px solid var(--members-am-chrome-border,#c3c4c7);border-radius:6px;padding:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-shadow:0 4px 12px rgba(0,0,0,0.15);box-shadow:0 4px 12px rgba(0,0,0,0.15);min-width:280px;top:100%;left:0;margin-top:4px;overflow:hidden}.members-am-reset-title{padding:10px 14px;font-weight:600;font-size:13px;border-bottom:1px solid var(--wp-components-color-gray-200,#f0f0f0);color:var(--wp-components-color-foreground,#1d2327)}.members-am-reset-option{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;gap:10px;padding:12px 14px;border:0;background:0;cursor:pointer;text-align:left;width:100%;border-bottom:1px solid var(--wp-components-color-gray-200,#f0f0f0);-webkit-transition:background .15s;transition:background .15s}.members-am-reset-option:last-child{border-bottom:0}.members-am-reset-option:hover{background:var(--members-am-chrome-bg,#f6f7f7)}.members-am-reset-option .dashicons{margin-top:2px;color:var(--members-am-muted,#646970)}.members-am-reset-option-text{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:2px}.members-am-reset-option-text strong{font-size:13px;color:var(--wp-components-color-foreground,#1d2327)}.members-am-reset-option-text small{font-size:12px;color:var(--members-am-muted,#646970)}.members-am-reset-danger:hover{background:#fcf0f1}.members-am-reset-danger .dashicons{color:#d63638}.members-am-reset-danger:hover strong{color:#d63638}@media screen and (max-width:782px){.members-am-columns{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}}.members-am-user-suggestions{position:absolute;z-index:100;background:var(--wp-components-color-background,#fff);border:1px solid var(--members-am-chrome-border,#c3c4c7);border-radius:4px;max-height:200px;overflow-y:auto;width:100%;-webkit-box-shadow:0 2px 6px rgba(0,0,0,0.15);box-shadow:0 2px 6px rgba(0,0,0,0.15);top:100%;left:0}.members-am-user-suggestion{padding:8px 12px;cursor:pointer;font-size:13px;border-bottom:1px solid var(--wp-components-color-gray-200,#f0f0f0)}.members-am-user-suggestion:hover{background:color-mix(in srgb,var(--members-am-accent-use) 8%,var(--wp-components-color-background,#fff))}.members-am-user-suggestion:last-child{border-bottom:0}#members-am-import-file.members-am-import-file-hidden{display:none}.members-am-user-search-wrap{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px}#members-am-user-search.members-am-user-search-input{width:168px;max-width:100%}.members-am-legend-visibility-icon{font-size:14px;width:14px;height:14px;vertical-align:middle}.members-am-legend-nocap-badge{display:inline-block;background:#8c8f94;color:#fff;font-size:9px;padding:1px 4px;border-radius:2px;vertical-align:middle}#members-am-icon-preview.members-am-icon-preview{display:none;width:32px;height:32px;-o-object-fit:contain;object-fit:contain;margin-bottom:6px;border:1px solid #ddd;border-radius:3px;padding:2px;background:#f0f0f1}.members-am-icons .members-am-icon-upload-desc{margin-top:4px}#adminmenu .members-am-menu-badge{display:inline-block;color:#fff;font-size:9px;padding:1px 5px;border-radius:2px;line-height:1.4;vertical-align:middle}
\ No newline at end of file
+#members-cp h2.hndle,#members-cp-side h2.hndle{border-bottom:none !important;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}#members-cp h2.hndle:before,#members-cp-side h2.hndle:before{content:url("data:image/svg+xml,%3Csvg width='15px' aria-hidden='true' focusable='false' data-prefix='fas' data-icon='users-cog' class='svg-inline--fa fa-users-cog fa-w-20' role='img' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 640 512'%3E%3Cpath fill='currentColor' d='M610.5 341.3c2.6-14.1 2.6-28.5 0-42.6l25.8-14.9c3-1.7 4.3-5.2 3.3-8.5-6.7-21.6-18.2-41.2-33.2-57.4-2.3-2.5-6-3.1-9-1.4l-25.8 14.9c-10.9-9.3-23.4-16.5-36.9-21.3v-29.8c0-3.4-2.4-6.4-5.7-7.1-22.3-5-45-4.8-66.2 0-3.3.7-5.7 3.7-5.7 7.1v29.8c-13.5 4.8-26 12-36.9 21.3l-25.8-14.9c-2.9-1.7-6.7-1.1-9 1.4-15 16.2-26.5 35.8-33.2 57.4-1 3.3.4 6.8 3.3 8.5l25.8 14.9c-2.6 14.1-2.6 28.5 0 42.6l-25.8 14.9c-3 1.7-4.3 5.2-3.3 8.5 6.7 21.6 18.2 41.1 33.2 57.4 2.3 2.5 6 3.1 9 1.4l25.8-14.9c10.9 9.3 23.4 16.5 36.9 21.3v29.8c0 3.4 2.4 6.4 5.7 7.1 22.3 5 45 4.8 66.2 0 3.3-.7 5.7-3.7 5.7-7.1v-29.8c13.5-4.8 26-12 36.9-21.3l25.8 14.9c2.9 1.7 6.7 1.1 9-1.4 15-16.2 26.5-35.8 33.2-57.4 1-3.3-.4-6.8-3.3-8.5l-25.8-14.9zM496 368.5c-26.8 0-48.5-21.8-48.5-48.5s21.8-48.5 48.5-48.5 48.5 21.8 48.5 48.5-21.7 48.5-48.5 48.5zM96 224c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm224 32c1.9 0 3.7-.5 5.6-.6 8.3-21.7 20.5-42.1 36.3-59.2 7.4-8 17.9-12.6 28.9-12.6 6.9 0 13.7 1.8 19.6 5.3l7.9 4.6c.8-.5 1.6-.9 2.4-1.4 7-14.6 11.2-30.8 11.2-48 0-61.9-50.1-112-112-112S208 82.1 208 144c0 61.9 50.1 112 112 112zm105.2 194.5c-2.3-1.2-4.6-2.6-6.8-3.9-8.2 4.8-15.3 9.8-27.5 9.8-10.9 0-21.4-4.6-28.9-12.6-18.3-19.8-32.3-43.9-40.2-69.6-10.7-34.5 24.9-49.7 25.8-50.3-.1-2.6-.1-5.2 0-7.8l-7.9-4.6c-3.8-2.2-7-5-9.8-8.1-3.3.2-6.5.6-9.8.6-24.6 0-47.6-6-68.5-16h-8.3C179.6 288 128 339.6 128 403.2V432c0 26.5 21.5 48 48 48h255.4c-3.7-6-6.2-12.8-6.2-20.3v-9.2zM173.1 274.6C161.5 263.1 145.6 256 128 256H64c-35.3 0-64 28.7-64 64v32c0 17.7 14.3 32 32 32h65.9c6.3-47.4 34.9-87.3 75.2-109.4z'%3E%3C/path%3E%3C/svg%3E");margin-right:5px}#members-cp-side .postbox-header{border-bottom:none !important}#members-cp-side .handle-actions .handle-order-higher,#members-cp-side .handle-actions .handle-order-lower{display:none}#members-cp-side .handle-actions .handlediv{position:absolute;right:5px}.members-upgrade-header{text-align:center;padding:5px}.members-upgrade-header a{color:#f59431}.memberpress-paid-memberships{background-color:#f5f5f5;padding:50px 10px;text-align:center}.memberpress-paid-memberships a{background-color:#0e4598;display:inline-block;padding:10px 20px;border-radius:300px;color:#fff;text-decoration:none;margin-top:20px}#members-cp-side .members-tabs{position:relative}#members-cp-side .members-tab-nav{background-color:transparent;margin-bottom:20px;border-right:none !important}#members-cp-side .members-tab-nav .members-tab-title{width:33.333%;height:50px;border-right:none !important}#members-cp-side .members-tab-nav .members-tab-title a{border:0}#members-cp-side .members-tab-content h3{font-weight:bold;font-size:15px;margin-top:0;color:#000;margin-bottom:10px}#members-cp-side .members-tab-content .memberpress-paid-memberships{text-align:left;padding:20px}#members-cp-side .members-tab-content .memberpress-paid-memberships a{display:block;text-align:center}#members-cp-side .members-tabs .members-tab-nav li a,#members-cp-side .members-tabs .members-tab-nav li[aria-selected="false"] a i{color:#555}#members-cp-side .members-tabs .members-tab-nav li a svg,#members-cp-side .members-tabs .members-tab-nav li[aria-selected="false"] a svg{fill:#555}#members-cp-side .members-tabs .members-tab-nav li[aria-selected="true"] a{background-color:transparent;border-bottom:2px solid #3582ae}#members-cp-side .members-tabs .members-tab-nav li[aria-selected="true"] a i{color:#3582ae}#members-cp-side .members-tabs .members-tab-nav li[aria-selected="true"] a svg{fill:#3582ae}.members-tab-title svg,.members-tab-title[aria-selected="false"] svg{fill:#0073aa}.members-tab-title[aria-selected="true"] svg{fill:#555}#wpcontent #members-admin-header{margin-left:-20px;padding:0 28px 0 22px;background-color:#0b1220;background-image:radial-gradient(circle at 12% 35%,rgba(14,69,152,0.45),transparent 55%),radial-gradient(circle at 90% 85%,rgba(245,148,49,0.14),transparent 60%);background-repeat:no-repeat;min-height:56px;position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}#wpcontent #members-admin-header img.members-logo{height:42px;display:block}#wpcontent #members-admin-header .members-by-mp{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:12px;margin-left:auto;text-decoration:none;-webkit-box-shadow:none;box-shadow:none;-webkit-transition:opacity .15s ease;transition:opacity .15s ease}#wpcontent #members-admin-header .members-by-mp:hover,#wpcontent #members-admin-header .members-by-mp:focus{opacity:.75;text-decoration:none;-webkit-box-shadow:none;box-shadow:none}#wpcontent #members-admin-header .members-by-label{color:#94a3b8;font-size:12px;font-weight:500}#wpcontent #members-admin-header img.members-mp-logo{height:18px;display:block}#wpcontent #members-admin-header #membersAdminHeaderNotifications{position:relative;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:36px;height:36px;padding:0;margin:0 0 0 18px;background:rgba(255,255,255,0.06);border:1px solid rgba(255,255,255,0.12);border-radius:8px;color:#fff;cursor:pointer;-webkit-box-shadow:none;box-shadow:none;-webkit-transition:background .15s ease,border-color .15s ease;transition:background .15s ease,border-color .15s ease;line-height:1;vertical-align:middle;min-height:0;text-decoration:none}#wpcontent #members-admin-header #membersAdminHeaderNotifications:hover,#wpcontent #members-admin-header #membersAdminHeaderNotifications:focus{background:rgba(255,255,255,0.12);border-color:rgba(255,255,255,0.24);color:#fff;-webkit-box-shadow:none;box-shadow:none;outline:0}#wpcontent #members-admin-header #membersAdminHeaderNotifications svg{width:16px;height:auto;display:block}#wpcontent #members-admin-header #membersAdminHeaderNotifications svg path{fill:#e2e8f0}#wpcontent #members-admin-header #membersAdminHeaderNotifications .members-notifications-count{position:absolute;top:-4px;right:-4px;min-width:16px;height:16px;padding:0 4px;border-radius:999px;background:#f59431;color:#0b1220;font-size:10px;font-weight:700;line-height:16px;text-align:center;border:1.5px solid #0b1220;-webkit-box-sizing:content-box;box-sizing:content-box}.members-upgrade-header #close-members-upgrade-header{position:absolute;right:20px;top:3px}.members-upgrade-header #close-members-upgrade-header:hover{cursor:pointer}.memberpress-welcome-panel.welcome-panel{margin-top:20px;padding:20px 28px;background:#fff;border-radius:10px;min-height:0}.memberpress-welcome-panel.welcome-panel .welcome-panel-content{min-height:0;height:auto}.members-about{--ink:#0f172a;--ink-soft:#334155;--ink-muted:#64748b;--mp-blue:#0e4598;--mp-teal:#3582ae;--mp-orange:#f59431;--rule:#e5e7eb;--paper:#fbfaf7;--paper-soft:#f3efe6;--paper-line:#e8e3d5;--display-font:"Inter",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;--sans-font:"Inter",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif}body.members_page_members-about #wpbody-content,body.toplevel_page_members-about #wpbody-content,body.admin_page_members-about #wpbody-content{background:var(--paper)}.members-about.wrap{max-width:1120px;margin:0 auto;padding:48px 24px 80px;color:var(--ink);font-family:var(--sans-font)}.members-about__hero{display:grid;grid-template-columns:minmax(0,1fr) 200px;grid-template-areas:"head mark" "body mark";gap:32px 56px;-webkit-box-align:start;-ms-flex-align:start;align-items:start;padding-bottom:64px;border-bottom:1px solid var(--paper-line)}.members-about__hero-head{grid-area:head}.members-about__body{grid-area:body}.members-about__mark{grid-area:mark;align-self:start}.members-about__eyebrow{display:inline-block;font-family:var(--sans-font);font-size:12px;font-weight:600;letter-spacing:.18em;text-transform:uppercase;color:var(--ink-muted);padding-bottom:18px}.members-about__title{font-family:var(--display-font);font-weight:900;font-size:clamp(40px,5.5vw,64px);line-height:1;letter-spacing:-0.035em;color:var(--ink);margin:0}.members-about__title em{font-style:normal;font-weight:900;color:var(--mp-blue)}.members-about__title-dot{color:var(--mp-blue);font-style:normal;font-weight:900}.members-about__body{max-width:60ch;font-size:15.5px;line-height:1.62;color:var(--ink-soft)}.members-about__body p{margin:0 0 14px}.members-about__body p:last-child{margin-bottom:0}.members-about__lead{font-family:var(--sans-font);font-weight:500;font-size:17px;line-height:1.5;color:var(--ink);margin-bottom:24px !important;padding-left:18px;border-left:2px solid var(--mp-blue)}.members-about__body a,.members-about__lead a{color:var(--mp-blue);text-decoration:none;background-image:-webkit-gradient(linear,left top,left bottom,from(currentColor),to(currentColor));background-image:linear-gradient(currentColor,currentColor);background-size:100% 1px;background-position:0 100%;background-repeat:no-repeat;padding-bottom:1px;-webkit-transition:color .2s ease,background-size .2s ease;transition:color .2s ease,background-size .2s ease}.members-about__body a:hover,.members-about__lead a:hover{color:var(--mp-orange)}.members-about__body em,.members-about__lead em{font-style:normal;font-weight:700;color:var(--mp-blue)}.members-about__mark{padding:24px;background:#fff;border:1px solid var(--paper-line);border-radius:4px;-webkit-box-shadow:0 1px 2px rgba(15,23,42,0.03);box-shadow:0 1px 2px rgba(15,23,42,0.03);-webkit-transition:-webkit-transform .25s ease,-webkit-box-shadow .25s ease;transition:-webkit-transform .25s ease,-webkit-box-shadow .25s ease;transition:transform .25s ease,box-shadow .25s ease;transition:transform .25s ease,box-shadow .25s ease,-webkit-transform .25s ease,-webkit-box-shadow .25s ease}.members-about__mark:hover{-webkit-transform:translateY(-2px);transform:translateY(-2px);-webkit-box-shadow:0 8px 20px rgba(15,23,42,0.08);box-shadow:0 8px 20px rgba(15,23,42,0.08)}.members-about__mark a{display:block;-webkit-box-shadow:none !important;box-shadow:none !important;text-decoration:none}.members-about__mark img{display:block;width:100%;height:auto;max-width:160px;margin:0 auto}.members-about__products{padding-top:56px}.members-about__products-head{margin-bottom:28px;text-align:center}.members-about__products-head h3{font-family:var(--display-font);font-weight:700;font-size:15px;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-muted);margin:0}.members-about__grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px}.members-about__card{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;padding:24px;background:#fff;border:1px solid var(--paper-line);border-radius:6px;-webkit-transition:border-color .25s ease,-webkit-transform .25s ease,-webkit-box-shadow .25s ease;transition:border-color .25s ease,-webkit-transform .25s ease,-webkit-box-shadow .25s ease;transition:transform .25s ease,box-shadow .25s ease,border-color .25s ease;transition:transform .25s ease,box-shadow .25s ease,border-color .25s ease,-webkit-transform .25s ease,-webkit-box-shadow .25s ease}.members-about__card:hover{-webkit-transform:translateY(-3px);transform:translateY(-3px);-webkit-box-shadow:0 12px 28px rgba(15,23,42,0.08);box-shadow:0 12px 28px rgba(15,23,42,0.08);border-color:rgba(14,69,152,0.2)}.members-about__card-head{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:14px;margin-bottom:14px}.members-about__card-icon{-webkit-box-flex:0;-ms-flex:0 0 44px;flex:0 0 44px;width:44px;height:44px;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;background:var(--paper-soft);border-radius:10px;overflow:hidden}.members-about__card-icon img{display:block;max-width:32px;max-height:32px;width:auto;height:auto}.members-about__card-title{margin:0;font-family:var(--display-font);font-weight:700;font-size:17px;line-height:1.2;letter-spacing:-0.01em;color:var(--ink)}.members-about__card-title a{color:inherit;text-decoration:none;-webkit-box-shadow:none;box-shadow:none}.members-about__card-title a:hover{color:var(--mp-blue)}.members-about__card-desc{-webkit-box-flex:1;-ms-flex:1;flex:1;margin:0 0 24px;font-size:14px;line-height:1.55;color:var(--ink-soft)}.members-about__card-foot{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;gap:16px;padding-top:16px;border-top:1px solid var(--paper-line)}.members-about__status{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;font-size:12px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-muted)}.members-about__status::before{content:"";width:7px;height:7px;border-radius:50%;background:currentColor}.members-about__status.is-active{color:#10b981}.members-about__status.is-inactive{color:var(--mp-orange)}.members-about__status.is-missing{color:var(--ink-muted)}.members-about__cta{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;padding:8px 14px;font-size:13px;font-weight:600;letter-spacing:.01em;border-radius:4px;text-decoration:none;border:1px solid transparent;-webkit-transition:background .2s ease,border-color .2s ease,color .2s ease,-webkit-transform .15s ease;transition:background .2s ease,border-color .2s ease,color .2s ease,-webkit-transform .15s ease;transition:background .2s ease,border-color .2s ease,color .2s ease,transform .15s ease;transition:background .2s ease,border-color .2s ease,color .2s ease,transform .15s ease,-webkit-transform .15s ease;-webkit-box-shadow:none;box-shadow:none}.members-about__cta:focus,.members-about__cta:focus-visible{outline:2px solid var(--mp-blue);outline-offset:2px;-webkit-box-shadow:none;box-shadow:none}.members-about__cta.is-primary{background:var(--mp-blue);color:#fff}.members-about__cta.is-primary:hover{background:#093374;color:#fff;-webkit-transform:translateY(-1px);transform:translateY(-1px)}.members-about__cta.is-secondary{background:transparent;color:var(--ink);border-color:var(--rule)}.members-about__cta.is-secondary:hover{border-color:var(--ink);background:#fff;color:var(--ink)}.members-about__cta svg{-webkit-transition:-webkit-transform .2s ease;transition:-webkit-transform .2s ease;transition:transform .2s ease;transition:transform .2s ease,-webkit-transform .2s ease}.members-about__cta:hover svg{-webkit-transform:translate(1px,-1px);transform:translate(1px,-1px)}@media(max-width:900px){.members-about__hero{grid-template-columns:1fr;grid-template-areas:"head" "body" "mark";gap:24px}.members-about__mark{max-width:160px}.members-about__grid{grid-template-columns:1fr}}.memberpress-welcome-panel.welcome-panel:before{background:0}.memberpress-welcome-panel.welcome-panel .about-description{margin:20px 0}.memberpress-welcome-panel.welcome-panel-content{margin:0}.memberpress-welcome-panel.welcome-panel-content .mp-logo-wrap>a{display:block}@media screen and (min-width:870px){.members_page_members-settings .members-short-p{max-width:612px;margin-left:auto;margin-right:auto}.members_page_members-settings .welcome-panel-content{text-align:center}}.members_page_members-settings .welcome-panel .button.button-hero{margin-left:auto;margin-right:auto}.members_page_members-settings .members-svg-wrap{display:inline-block;margin:0 auto 20px}@media screen and (max-width:870px){.members_page_members-settings .welcome-panel{padding:20px}.members_page_members-settings .members-svg-wrap{float:left;margin-right:28px}.admin_page_members-settings.rtl .members-svg-wrap{float:right;margin-right:0;margin-left:28px}}.members_page_members-settings .members-svg-link{display:table-cell;text-align:center;width:128px;height:128px;background:#363b3f;color:#fff;padding:24px 16px 16px;border-radius:50%;-webkit-box-sizing:border-box;box-sizing:border-box;border:4px solid #fff;-webkit-box-shadow:0 0 0 4px #363b3f;box-shadow:0 0 0 4px #363b3f}.members_page_members-settings .members-svg-link svg{max-width:84px;max-height:64px;width:auto;height:auto}.members-addons{display:grid;grid-template-columns:1fr 1fr;grid-row-gap:20px;grid-column-gap:20px}.members-addons .plugin-card{margin:0}.members-addons .plugin-card-top{width:100%}.members-addon{width:100%;position:relative;float:none;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.members-addon .desc{margin-bottom:80px}.addon-activate{text-align:center;border:1px solid #ddd;border-radius:3px;padding:5px 10px 10px;display:inline-block;width:100px;position:absolute;right:20px;bottom:20px}.activate-toggle:hover{cursor:pointer}.activate-toggle svg{max-width:20px;position:relative;top:5px}.activate-toggle svg{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.activate-toggle svg.active{-webkit-transform:rotate(0);transform:rotate(0)}.activate-toggle svg path{fill:#ccc}.activate-toggle svg.active path{fill:#8cbd5a}.activate-toggle.processing{cursor:not-allowed;pointer-events:none;opacity:.5}.activate-toggle .action-label{display:inline-block;width:50px;text-align:left}.mepr_dummy_txns{-webkit-filter:blur(3px);filter:blur(3px);position:absolute;top:0;left:0;width:100%;z-index:5;pointer-events:none}.mepr_dummy_txns::after{background-color:rgba(0,0,0,.2);position:absolute;top:0;left:0;width:100%;height:100%;z-index:6}.mepr-upgrade-table{position:relative}.mepr-upgrade-table .mepr-upgrade{position:relative;top:100px;z-index:10;background:rgba(0,0,0,.2);width:100%;height:100%;max-width:600px;margin:0 auto;-webkit-box-shadow:0 0 30px #ccc;box-shadow:0 0 30px #ccc}.mepr-upgrade-content{background-color:#fff;padding:20px;text-align:center}.mepr-upgrade-content h2{font-size:24px}.mepr-upgrade-content h4{font-size:18px}.mepr-upgrade-content .features{display:grid;grid-template-columns:1fr 1fr;grid-column-gap:30px;grid-row-gap:10px;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;text-align:left;padding:10px}.features li:before{content:"\f147";font-family:dashicons;color:green;font-size:20px;position:relative;top:4px;margin-right:10px}.mepr-upgrade-cta{text-align:center;background-color:#f2f2f2;padding:20px}.mepr-upgrade-cta .mepr-cta-button{display:block;max-width:300px;margin:0 auto 20px;background-color:#fd9c27;color:#fff;padding:15px;font-size:18px;font-weight:bold;text-decoration:none;border-radius:300px}.members-plugin-card.plugin-card:nth-child(even){margin-right:inherit}.members-plugin-card.plugin-card:nth-child(odd){clear:none;margin-left:inherit}.members-plugin-card.plugin-card .plugin-card-top{min-height:0;padding:30px 20px}.members-plugin-card.plugin-card .plugin-icon{top:30px}.members-plugin-card.plugin-card .plugin-card-bottom .column-status{font-weight:bold}.members-plugin-card.plugin-card .plugin-card-bottom .column-status .active{color:#8cbd5a}.members-plugin-card.plugin-card .plugin-card-bottom .column-status .inactive{color:red}.members-plugin-card.plugin-card .plugin-icon{width:64px;height:auto}.plugin-icon-small{width:32px;height:auto}.members-plugin-card.plugin-card .name,.members-plugin-card.plugin-card .desc{margin-right:0;margin-left:84px}.members-addons .plugin-card .name,.members-addons .plugin-card .desc p{margin-right:0}@media screen and (max-width:1100px){.members-addons{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}}@media screen and (max-width:600px){.members_page_members-settings .members-svg-link{width:64px;height:64px}.members_page_members-settings .members-svg-link svg{position:absolute;top:14px;left:15px;max-width:30px;max-height:30px}.members_page_members-settings .plugin-card-members-edd-integration .members-svg-link svg,.members_page_members-settings .plugin-card-members-acf-integration .members-svg-link svg,.members_page_members-settings .plugin-card-members-givewp-integration .members-svg-link svg,.members_page_members-settings .plugin-card-members-meta-box-integration .members-svg-link svg,.members_page_members-settings .plugin-card-members-woocommerce-integration .members-svg-link svg{top:10px;left:8px;max-width:40px;max-height:40px}.members_page_members-settings .plugin-card-members-block-permissions .members-svg-link svg,.members_page_members-settings .plugin-card-members-role-hierarchy .members-svg-link svg{left:14px}.members-addons .plugin-card .desc>p,.members-addons .plugin-card .name{margin-left:84px}}.memberpress-about .welcome-panel-column-container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:40px;padding:0;margin:0}.memberpress-about .mp-desc p{font-size:13px;line-height:1.6;color:#334155;margin:0 0 12px}.memberpress-about .mp-desc p:first-child{font-size:15px;font-weight:600;color:#0f172a;margin-top:0;margin-bottom:14px}.memberpress-about .mp-desc p:last-child{margin-bottom:0}.memberpress-about .mp-logo-wrap{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.memberpress-about .mp-logo{display:block;max-width:220px;height:auto;margin:0}.members-about-addons{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-column-gap:20px}.members-about-addons .members-plugin-card{margin:0;width:100%}.members-about-addons .members-plugin-card .plugin-icon{position:static;width:auto;height:28px;max-width:40px;-o-object-fit:contain;object-fit:contain;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;display:block}.members-about-addons .members-plugin-card .name,.members-about-addons .members-plugin-card .desc{margin-left:0}.members-about-addons .members-plugin-card .plugin-card-top{padding:20px}.members-about-addons .members-plugin-card .name h3{margin:0 0 10px;min-height:0;height:auto;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:10px;line-height:1.2}.members-about-addons .members-plugin-card .name h3 a{text-decoration:none;line-height:1.2}.members-about-addons .members-plugin-card .plugin-card-bottom{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}@media only screen and (max-width:1099px){.members-about-addons{grid-template-columns:1fr;grid-row-gap:20px}}@media screen and (min-width:1100px) and (max-width:1600px){.members-about-addons .members-plugin-card{float:none;width:auto;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.members-plugin-card.plugin-card .desc{margin-left:0;margin-top:50px}.members-plugin-card.plugin-card .desc p{margin-left:0;margin-right:0}.members-plugin-card.plugin-card .plugin-card-bottom .column-status{float:none}.members-plugin-card.plugin-card .plugin-card-bottom .column-updated{float:none;width:auto}}@media screen and (max-width:1200px){.welcome-panel .welcome-panel-column-container{-webkit-box-orient:vertical;-webkit-box-direction:reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse;gap:0;padding:0}.memberpress-about .mp-logo{margin:0 0 20px}}.members-plugin-card.plugin-card .desc p{margin-left:0;margin-right:0}@media only screen and (min-width:783px){.members_page_roles .column-users,.members_page_roles .column-granted_caps,.members_page_roles .column-denied_caps{width:100px;text-align:center}}.members-title-div #titlewrap input{padding:0 8px;font-size:1.7em;line-height:normal;height:1.7em;width:100%;outline:0;margin:0 0 3px;background-color:#fff}.members-title-div input[name="role"]{font-size:13px;height:22px;margin:0;width:16em}#tabcapsdiv{margin-top:1em}#tabcapsdiv>.hndle{padding:10px;border-bottom:1px solid #eee}#tabcapsdiv .inside,#members-cp .inside{margin:0;padding:0}.members-cap-tabs,.members-tabs{overflow:hidden;background:#fff;background:-webkit-gradient(linear,left top,right top,from(#fafafa),color-stop(20%,#fafafa),color-stop(20%,#fff),to(#fff));background:linear-gradient(90deg,#fafafa 0,#fafafa 20%,#fff 20%,#fff 100%)}@media only screen and (max-width:782px){.members-cap-tabs,.members-tabs{background:linear-gradient(90deg,#fafafa 0,#fafafa 48px,#fff 48px,#fff 100%)}}.members-cap-tabs .members-tab-nav,.members-tabs .members-tab-nav{position:relative;float:left;list-style:none;width:20%;line-height:1em;margin:0 0 -1px 0;padding:0;background-color:#fafafa;border-right:1px solid #eee;-webkit-box-sizing:border-box;box-sizing:border-box}.members-cap-tabs .members-tab-nav li,.members-tabs .members-tab-nav li{display:block;position:relative;margin:0;padding:0;line-height:20px}.members-cap-tabs .members-tab-nav li a,.members-tabs .members-tab-nav li a{display:block;margin:0;padding:10px;line-height:20px !important;text-decoration:none;border-bottom:1px solid #eee;-webkit-box-shadow:none;box-shadow:none}.members-cap-tabs .members-tab-nav li a .dashicons,.members-tabs .members-tab-nav li a .dashicons{line-height:20px;margin-right:3px}.members-cap-tabs .members-tab-nav li[aria-selected="true"] a,.members-tabs .members-tab-nav li[aria-selected="true"] a{position:relative;font-weight:bold;color:#555;background-color:#e0e0e0}@media only screen and (max-width:782px){.members-cap-tabs .members-tab-nav,.members-tabs .members-tab-nav{width:48px}.members-cap-tabs .members-tab-nav li a .dashicons,.members-tabs .members-tab-nav li a .dashicons{width:24px;height:24px;font-size:24px;line-height:24px}.members-tab-nav li .dashicons::before,.members-tab-nav li .dashicons::before{width:24px;height:24px}.members-tab-nav li .label{overflow:hidden;position:absolute;top:-1000em;left:-1000em;width:1px;height:1px}}.members-cap-tabs .members-tab-wrap,.members-tabs .members-tab-wrap{float:left;width:80%;margin-left:-1px}@media only screen and (max-width:782px){.members-cap-tabs .members-tab-wrap,.members-tabs .members-tab-wrap{width:calc(100% - 48px)}}#members-cp .members-tab-content{padding:10px;border-left:1px solid #e5e5e5}.members-roles-select th,.members-roles-select td{width:190px;overflow:hidden}.members-roles-select .check-all-th{text-align:center}.members-roles-select .check-all-th label{padding-left:5px}@media only screen and (min-width:850px){#side-sortables .members-tabs{background:#fff}#side-sortables .members-tabs .members-tab-wrap{width:100%}#side-sortables .members-tabs .members-tab-nav{display:table;width:100%}#side-sortables .members-tabs .members-tab-nav li{display:table-cell;text-align:center;border-right:1px solid #eee}#side-sortables .members-tabs .members-tab-nav li:last-of-type{border-right:0}#side-sortables .members-tabs .members-tab-nav li a{padding:10px 0}#side-sortables .members-tabs .members-tab-nav .dashicons{width:24px;height:24px;font-size:24px;line-height:24px}#side-sortables .members-tabs .members-tab-nav .dashicons::before{width:24px;height:24px}#side-sortables .members-tabs .members-tab-nav .label{overflow:hidden;position:absolute;top:-1000em;left:-1000em;width:1px;height:1px}}.members-tabs .members-tabs-label{display:block !important;font-weight:bold;display:inline-block;margin-bottom:4px}.members-tabs .butterbean-control-checkbox .members-tabs-label{display:inline !important}.members-tabs .members-tabs-description{display:block;font-style:italic;margin-top:4px}.members-tabs .members-tabs-label+.members-tabs-description{margin-top:0;margin-bottom:4px}#tabcapsdiv table{border-right:0;border-top:0;border-bottom:0}#tabcapsdiv table td,#tabcapsdiv table th{padding:10px;padding-bottom:10px;border-bottom:1px solid #eee;font-size:13px;line-height:20px}#tabcapsdiv table td{padding:9px}#tabcapsdiv tbody tr:last-of-type td{border-bottom:0}#tabcapsdiv tfoot th{border-color:#eee}@media only screen and (max-width:782px){#tabcapsdiv table td,#tabcapsdiv table th{line-height:24px}}.members-roles-select .column-grant,.members-roles-select .column-deny{width:70px !important;text-align:left;display:table-cell !important;clear:none !important}.members-roles-select thead th,.members-roles-select tfoot th{padding:9px !important}.members-roles-select .column-grant input,.members-roles-select .column-deny input{margin:0 5px 0 0;vertical-align:middle}.members-roles-select tbody tr:nth-child(even){background:#f2f2f2}.members-cap-tabs button{display:inline;margin:-4px;line-height:inherit;padding:4px 8px;border:1px solid transparent;background:transparent;border-radius:0;outline:0;-webkit-transition:all .25s ease-out;transition:all .25s ease-out}.members-cap-tabs button:hover,.members-cap-tabs button:focus{border-color:#eee;background:#fafafa;cursor:pointer}.members-cap-tabs button:active{color:#0073aa;border-color:#0073aa}.members-cap-tabs button+.dashicons{display:none;margin-top:1px;margin-bottom:-1px;line-height:inherit}.members-cap-tabs button:hover+.dashicons,.members-cap-tabs button:focus+.dashicons{display:inline-block}.members-tab-content .members-highlight{background-color:rgba(0,115,170,0.05)}.members-tab-content tbody{-webkit-transition:all 2s ease-in-out;transition:all 2s ease-in-out}.members-cp-role-list-wrap{overflow:auto;min-height:42px;max-height:200px;padding:0 .9em;border:solid 1px #dfdfdf;background-color:#fdfdfd}#wpbody-content{padding-bottom:200px}.members-footer-promotion{text-align:center;font-weight:400;font-size:13px;line-height:16px;color:#787c82;padding:20px 0 30px 0;margin-bottom:20px}.members-footer-promotion p{font-weight:600}.members-footer-promotion-links,.members-footer-promotion-social{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.members-footer-promotion-links{margin:9px 0 0}.members-footer-promotion-links span{color:#c3c4c7;padding:0 7px}.members-footer-promotion-social{margin:10px 0 0 0;gap:10px}.members-footer-promotion-social li{margin-bottom:0}.members-footer-promotion-social a{display:block;height:16px}.members_page_members-settings.rtl{.addon-activate{left:20px;right:unset}.members-addons .plugin-card{.name,.desc p{margin-left:0;margin-right:148px}}}.button.button-warning{background:#dc3232;border-color:#dc3232;color:#fff}.button.button-warning:hover,.button.button-warning:focus{background:#c92424;border-color:#c92424;color:#fff}.members-reset-spinner{float:none;margin-top:0;vertical-align:middle}.members-admin-menus-wrap{max-width:1400px;--members-am-accent-use:var(--members-am-accent,var(--wp-admin-theme-color,#2271b1));--members-am-surface-use:var(--members-am-surface,color-mix(in srgb,var(--members-am-base,#1d2327) 88%,#fff 12%));--members-am-border-on-base-fallback:color-mix(in srgb,var(--members-am-base,#1d2327) 62%,#fff 38%);--members-am-chrome-bg:var(--wp-components-color-gray-100,#f6f7f7);--members-am-chrome-border:var(--wp-components-color-gray-400,#c3c4c7);--members-am-muted:var(--wp-components-color-gray-600,#646970)}.members-am-notices{margin:0 0 12px}.members-am-notices .notice{margin:0 0 8px}.members-admin-menus-toolbar{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;gap:0;margin-bottom:16px;border:1px solid var(--members-am-chrome-border,#c3c4c7);border-radius:2px;background:var(--wp-components-color-background,#fff);overflow:visible}.members-am-toolbar-row{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px}.members-am-toolbar-row--primary{padding:10px 12px;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;row-gap:10px}.members-am-toolbar-group{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px}.members-am-toolbar-group--document{position:relative;z-index:5;padding-right:12px;border-right:1px solid var(--members-am-chrome-border,#c3c4c7)}.members-am-toolbar-row--primary .members-am-toolbar-primary-user{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px;margin-left:8px;-webkit-box-flex:0;-ms-flex:0 1 auto;flex:0 1 auto;min-width:0}.members-am-toolbar-row--primary .members-am-toolbar-primary-user #members-am-user-search.members-am-user-search-input{width:168px;max-width:100%;min-width:0}.members-am-toolbar-group--view{margin-left:auto;-ms-flex-wrap:nowrap;flex-wrap:nowrap}.members-am-toolbar-extra{background:var(--members-am-chrome-bg,#f6f7f7);border-top:1px solid var(--members-am-chrome-border,#c3c4c7);padding:10px 12px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:10px}.members-am-toolbar-extra[hidden]{display:none !important}.members-am-toolbar-row--extra-tools{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-wrap:wrap;flex-wrap:wrap;row-gap:10px}.members-am-toolbar-row--extra-tools .members-am-copy-wrap{margin-left:4px;padding-left:12px;border-left:1px solid var(--members-am-chrome-border,#c3c4c7)}.members-am-toolbar-row--extra-tools .members-am-toolbar-group--io{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;margin-left:8px;padding-left:12px;border-left:1px solid var(--members-am-chrome-border,#c3c4c7)}.members-am-more-tools,.members-am-more-tools:hover,.members-am-more-tools:focus,.members-am-more-tools:focus-visible,.members-am-more-tools:active{text-decoration:none !important}.members-am-more-tools{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:4px;white-space:nowrap;padding:2px 2px 2px 4px;vertical-align:middle;line-height:1.4}.members-am-more-tools .members-am-more-tools-text,.members-am-more-tools:hover .members-am-more-tools-text,.members-am-more-tools:focus .members-am-more-tools-text,.members-am-more-tools:focus-visible .members-am-more-tools-text,.members-am-more-tools:active .members-am-more-tools-text,.members-am-more-tools .members-am-more-tools-chevron,.members-am-more-tools:hover .members-am-more-tools-chevron,.members-am-more-tools:focus .members-am-more-tools-chevron,.members-am-more-tools:focus-visible .members-am-more-tools-chevron,.members-am-more-tools:active .members-am-more-tools-chevron,.members-am-more-tools .members-am-more-tools-chevron-svg,.members-am-more-tools:hover .members-am-more-tools-chevron-svg,.members-am-more-tools:focus .members-am-more-tools-chevron-svg,.members-am-more-tools:focus-visible .members-am-more-tools-chevron-svg,.members-am-more-tools:active .members-am-more-tools-chevron-svg{text-decoration:none !important}.members-am-more-tools .members-am-more-tools-text{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;line-height:1.4}.members-am-more-tools .members-am-more-tools-chevron{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-ms-flex-negative:0;flex-shrink:0;line-height:0;opacity:.88}.members-am-more-tools .members-am-more-tools-chevron-svg{display:block;overflow:visible;-webkit-transition:-webkit-transform .15s ease;transition:-webkit-transform .15s ease;transition:transform .15s ease;transition:transform .15s ease,-webkit-transform .15s ease;-webkit-transform-origin:50% 50%;transform-origin:50% 50%;shape-rendering:geometricPrecision}.members-am-more-tools .members-am-more-tools-chevron-svg polygon{stroke:none}.members-am-more-tools.is-open .members-am-more-tools-chevron-svg{-webkit-transform:rotate(180deg);transform:rotate(180deg)}@media(prefers-reduced-motion:reduce){.members-am-more-tools .members-am-more-tools-chevron-svg{-webkit-transition:none;transition:none}}@media screen and (max-width:782px){.members-am-toolbar-group--document{border-right:0;padding-right:0;border-bottom:1px solid var(--members-am-chrome-border,#c3c4c7);padding-bottom:10px;width:100%}.members-am-toolbar-group--view{margin-left:0;width:100%;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.members-am-toolbar-row--primary .members-am-toolbar-primary-user{margin-left:0;padding-left:0;border-left:0;padding-top:8px;border-top:1px solid var(--members-am-chrome-border,#c3c4c7);width:100%;max-width:none}.members-am-toolbar-row--primary .members-am-toolbar-primary-user #members-am-user-search.members-am-user-search-input{width:100%;max-width:100%}.members-am-toolbar-row--extra-tools .members-am-admin-editable{width:100%}.members-am-toolbar-row--extra-tools .members-am-copy-wrap{margin-left:0;padding-left:0;border-left:0;padding-top:8px;border-top:1px solid var(--members-am-chrome-border,#c3c4c7);width:100%}.members-am-toolbar-row--extra-tools .members-am-toolbar-group--io{margin-left:0;padding-left:0;border-left:0;padding-top:8px;border-top:1px solid var(--members-am-chrome-border,#c3c4c7);width:100%}}.members-am-toolbar-loading{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;margin-left:4px;color:var(--members-am-muted,#646970);font-size:13px;line-height:1}.members-am-toolbar-loading .spinner{float:none;margin:0}.members-am-toolbar-loading[hidden]{display:none !important}.members-am-copy-wrap label{margin-right:8px}.members-am-chips{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:8px;margin-bottom:12px}.members-am-chip{border-radius:999px;padding:4px 12px;border:1px solid var(--members-am-chrome-border,#c3c4c7);background:var(--members-am-chrome-bg,#f6f7f7);cursor:pointer}.members-am-chip.is-active{background:var(--members-am-accent-use);border-color:var(--members-am-accent-use);color:var(--wp-components-color-accent-inverted,#fff)}.members-am-carousel-wrap{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;gap:8px;margin-bottom:8px}.members-am-carousel-prev,.members-am-carousel-next{-ms-flex-item-align:center;align-self:center;width:36px;height:36px;border-radius:50%;border:1px solid var(--members-am-chrome-border,#c3c4c7);background:var(--wp-components-color-background,#fff);cursor:pointer}.members-am-columns{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-ms-flex:1;flex:1;gap:12px;min-height:320px;overflow:hidden}.members-am-column{-webkit-box-flex:1;-ms-flex:1;flex:1;min-width:0;background:var(--members-am-base,#1d2327);border-radius:4px;color:var(--members-am-fg-on-base,#f0f0f1);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.members-am-user-column{border:2px dashed var(--wp-components-color-gray-700,#8c8f94)}.members-am-sidebar-head{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:8px 10px;background:var(--members-am-surface-use);border-radius:4px 4px 0 0;font-weight:600;font-size:12px;text-transform:uppercase;letter-spacing:.04em;color:var(--members-am-fg-on-surface,var(--members-am-fg-on-base,#f0f0f1))}.members-am-col-filter{padding:6px 8px 8px;border-bottom:1px solid var(--members-am-border-on-base,var(--members-am-border-on-base-fallback));-ms-flex-negative:0;flex-shrink:0}.members-am-col-filter-input{width:100%;max-width:100%;-webkit-box-sizing:border-box;box-sizing:border-box;font-size:12px;line-height:1.4;padding:4px 8px;border-radius:2px;border:1px solid var(--members-am-border-on-base,var(--members-am-border-on-base-fallback));background:var(--members-am-base,#1d2327);color:var(--members-am-fg-on-base,#f0f0f1)}.members-am-col-filter-input::-webkit-input-placeholder{color:var(--members-am-fg-muted-on-base,var(--wp-components-color-gray-700,#8c8f94));opacity:1}.members-am-col-filter-input::-moz-placeholder{color:var(--members-am-fg-muted-on-base,var(--wp-components-color-gray-700,#8c8f94));opacity:1}.members-am-col-filter-input:-ms-input-placeholder{color:var(--members-am-fg-muted-on-base,var(--wp-components-color-gray-700,#8c8f94));opacity:1}.members-am-col-filter-input::-ms-input-placeholder{color:var(--members-am-fg-muted-on-base,var(--wp-components-color-gray-700,#8c8f94));opacity:1}.members-am-col-filter-input::placeholder{color:var(--members-am-fg-muted-on-base,var(--wp-components-color-gray-700,#8c8f94));opacity:1}.members-am-col-filter-input:focus{border-color:var(--members-am-accent-use);outline:1px solid transparent;-webkit-box-shadow:0 0 0 var(--wp-admin-border-width-focus,1px) var(--members-am-accent-use);box-shadow:0 0 0 var(--wp-admin-border-width-focus,1px) var(--members-am-accent-use)}.members-am-col-bulk{padding:0 8px 8px;border-bottom:1px solid var(--members-am-border-on-base,var(--members-am-border-on-base-fallback));-ms-flex-negative:0;flex-shrink:0}.members-am-col-bulk-toolbar,.members-am-col-collapse-toolbar{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:6px;margin-bottom:6px;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.members-am-col-bulk-toolbar .button.button-small,.members-am-col-collapse-toolbar .button.button-small{font-size:11px;min-height:26px;line-height:24px;padding:0 8px;background:var(--members-am-surface-use);border-color:var(--members-am-border-on-surface,var(--members-am-border-on-base,var(--members-am-border-on-base-fallback)));color:var(--members-am-fg-on-surface,var(--members-am-fg-on-base,#f0f0f1))}.members-am-col-bulk-toolbar .button.button-small:hover,.members-am-col-collapse-toolbar .button.button-small:hover{background:color-mix(in srgb,var(--members-am-surface-use) 85%,#fff 15%);border-color:var(--wp-components-color-gray-700,#8c8f94);color:var(--members-am-fg-on-surface,var(--members-am-fg-on-base,#f0f0f1))}.members-am-item-lead{-ms-flex-negative:0;flex-shrink:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:22px;padding:2px 0 0}.members-am-collapse-spacer{display:block;width:20px;height:20px;-ms-flex-negative:0;flex-shrink:0}.members-am-collapse-toggle{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:22px;height:22px;margin:0;padding:0;border:0;background:transparent;color:var(--members-am-fg-muted-on-base,var(--members-am-chrome-border,#c3c4c7));border-radius:2px;cursor:pointer;-ms-flex-negative:0;flex-shrink:0}.members-am-collapse-toggle:hover,.members-am-collapse-toggle:focus{color:var(--members-am-fg-on-base,#f0f0f1);background:color-mix(in srgb,var(--members-am-fg-on-base,#f0f0f1) 12%,transparent);outline:0}.members-am-collapse-toggle .dashicons{font-size:18px;width:18px;height:18px}.members-am-item-cb-wrap{-ms-flex-negative:0;flex-shrink:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;padding:2px 4px 0 0}.members-am-item-cb{margin:0;width:16px;height:16px;-ms-flex-negative:0;flex-shrink:0}.members-am-bulk-select{width:100%;max-width:100%;-webkit-box-sizing:border-box;box-sizing:border-box;font-size:12px;line-height:1.4;padding:4px 8px;border-radius:2px;border:1px solid var(--members-am-border-on-base,var(--members-am-border-on-base-fallback));background:var(--members-am-base,#1d2327);color:var(--members-am-fg-on-base,#f0f0f1)}.members-am-bulk-select:focus{border-color:var(--members-am-accent-use);outline:1px solid transparent;-webkit-box-shadow:0 0 0 var(--wp-admin-border-width-focus,1px) var(--members-am-accent-use);box-shadow:0 0 0 var(--wp-admin-border-width-focus,1px) var(--members-am-accent-use)}.members-am-item.members-am-filter-hidden,.members-am-sep.members-am-filter-hidden,.members-am-item.members-am-collapse-hidden{display:none !important}.members-am-col-move button{margin-left:4px;padding:0 6px;min-height:24px;line-height:22px;font-size:11px}.members-am-sidebar-list{padding:6px 0 12px;overflow-y:auto;max-height:480px}.members-am-item{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;gap:4px;padding:6px 10px 6px 6px;cursor:pointer;border-left:3px solid transparent;font-size:13px}.members-am-item.is-sub{padding-left:22px;font-size:12px;opacity:.95}.members-am-item.is-sub-deep{padding-left:36px}.members-am-sidebar-list .members-am-item{cursor:-webkit-grab;cursor:grab}.members-am-sidebar-list .members-am-item:active{cursor:-webkit-grabbing;cursor:grabbing}.members-am-sort-placeholder{-webkit-box-sizing:border-box;box-sizing:border-box;min-height:36px;margin:2px 0;background:color-mix(in srgb,var(--members-am-accent-use) 8%,transparent);border:1px dashed var(--members-am-accent-use);border-radius:2px}.members-am-item.is-hidden{opacity:.18}.members-am-item.is-no-cap{opacity:.35}.members-am-item.is-no-cap.is-hidden{opacity:.15}.members-am-item.is-selected{border-left-color:var(--members-am-accent-use);background:color-mix(in srgb,var(--members-am-accent-use) 15%,transparent)}.members-am-item-main{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;min-width:0}.members-am-item-main .dashicons{font-size:18px;width:18px;height:18px}.members-am-item-label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.members-am-item-actions{display:none;gap:2px}.members-am-item:hover .members-am-item-actions{display:-webkit-box;display:-ms-flexbox;display:flex}.members-am-item-actions button{min-height:22px;padding:0 4px;line-height:20px;font-size:11px}.members-am-sep{text-align:center;opacity:.35;font-size:11px;padding:4px 0}.members-am-carousel-dots{text-align:center;margin-bottom:4px}.members-am-dot{width:8px;height:8px;border-radius:50%;border:0;margin:0 4px;padding:0;background:var(--members-am-chrome-border,#c3c4c7);cursor:pointer}.members-am-dot.is-active{background:var(--members-am-accent-use)}.members-am-carousel-status{text-align:center;color:var(--members-am-muted,#646970);font-size:12px;margin-top:0}.members-am-badge{font-size:9px;text-transform:uppercase;padding:1px 4px;border-radius:2px;margin-right:4px;vertical-align:middle}.members-am-badge-new{background:var(--members-am-accent-use);color:var(--wp-components-color-accent-inverted,#fff)}.members-am-badge-edit{background:#dba617;color:var(--members-am-base,#1d2327)}.members-am-badge-nocap{background:var(--wp-components-color-gray-700,#8c8f94);color:var(--wp-components-color-accent-inverted,#fff)}.members-am-legend{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:16px;margin:0 0 8px;padding:0;font-size:12px;color:var(--members-am-muted,#646970)}.members-am-legend-item{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:4px}.members-am-edit-panel{margin-top:20px;padding:16px;border:1px solid var(--members-am-chrome-border,#c3c4c7);background:var(--wp-components-color-background,#fff);border-radius:4px}.members-am-edit-panel-header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:12px}.members-am-edit-panel-header h2{margin:0;font-size:16px}.members-am-edit-toolbar{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:12px;margin-bottom:12px}.members-am-edit-target-wrap select{margin-left:8px}.members-am-level-actions .button{margin-right:6px}.members-am-demote-wrap{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:6px}.members-am-demote-wrap .members-am-demote-select{min-width:200px;max-width:min(320px,100%)}.members-am-edit-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:16px}.members-am-edit-col label{display:block;font-weight:600;margin-bottom:4px}.members-am-colors-hint{margin:0 0 10px}.members-am-colors-readable-wrap{margin:8px 0 0}.members-am-icon-tabs{margin-bottom:8px}.members-am-icon-tabs .button{margin-right:4px;margin-bottom:4px}.members-am-icon-tabs .button.is-active{background:var(--members-am-accent-use);border-color:var(--members-am-accent-use);color:var(--wp-components-color-accent-inverted,#fff)}.members-am-icon-grid{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:4px;max-height:160px;overflow-y:auto;border:1px solid var(--wp-components-color-gray-200,#dcdcde);padding:8px;background:var(--members-am-chrome-bg,#f6f7f7);margin-bottom:8px}.members-am-icon-pick{width:36px;height:36px;padding:0;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;border:1px solid var(--members-am-chrome-border,#c3c4c7);background:var(--wp-components-color-background,#fff);cursor:pointer}.members-am-bulk-visibility-hint{margin:0 0 8px;font-size:12px;color:var(--members-am-fg-muted-on-base,#646970)}.members-am-vis-role-filter-wrap{margin-bottom:8px}.members-am-vis-row.members-am-vis-filter-hidden{display:none}.members-am-vis-row{display:block;margin-bottom:6px;font-weight:normal}.members-am-reset-dropdown{position:absolute;z-index:100000;background:var(--wp-components-color-background,#fff);border:1px solid var(--members-am-chrome-border,#c3c4c7);border-radius:6px;padding:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-shadow:0 4px 12px rgba(0,0,0,0.15);box-shadow:0 4px 12px rgba(0,0,0,0.15);min-width:280px;top:100%;left:0;margin-top:4px;overflow:hidden}.members-am-reset-title{padding:10px 14px;font-weight:600;font-size:13px;border-bottom:1px solid var(--wp-components-color-gray-200,#f0f0f0);color:var(--wp-components-color-foreground,#1d2327)}.members-am-reset-option{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;gap:10px;padding:12px 14px;border:0;background:0;cursor:pointer;text-align:left;width:100%;border-bottom:1px solid var(--wp-components-color-gray-200,#f0f0f0);-webkit-transition:background .15s;transition:background .15s}.members-am-reset-option:last-child{border-bottom:0}.members-am-reset-option:hover{background:var(--members-am-chrome-bg,#f6f7f7)}.members-am-reset-option .dashicons{margin-top:2px;color:var(--members-am-muted,#646970)}.members-am-reset-option-text{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:2px}.members-am-reset-option-text strong{font-size:13px;color:var(--wp-components-color-foreground,#1d2327)}.members-am-reset-option-text small{font-size:12px;color:var(--members-am-muted,#646970)}.members-am-reset-danger:hover{background:#fcf0f1}.members-am-reset-danger .dashicons{color:#d63638}.members-am-reset-danger:hover strong{color:#d63638}@media screen and (max-width:782px){.members-am-columns{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}}.members-am-user-suggestions{position:absolute;z-index:100;background:var(--wp-components-color-background,#fff);border:1px solid var(--members-am-chrome-border,#c3c4c7);border-radius:4px;max-height:200px;overflow-y:auto;width:100%;-webkit-box-shadow:0 2px 6px rgba(0,0,0,0.15);box-shadow:0 2px 6px rgba(0,0,0,0.15);top:100%;left:0}.members-am-user-suggestion{padding:8px 12px;cursor:pointer;font-size:13px;border-bottom:1px solid var(--wp-components-color-gray-200,#f0f0f0)}.members-am-user-suggestion:hover{background:color-mix(in srgb,var(--members-am-accent-use) 8%,var(--wp-components-color-background,#fff))}.members-am-user-suggestion:last-child{border-bottom:0}#members-am-import-file.members-am-import-file-hidden{display:none}.members-am-user-search-wrap{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px}#members-am-user-search.members-am-user-search-input{width:168px;max-width:100%}.members-am-legend-visibility-icon{font-size:14px;width:14px;height:14px;vertical-align:middle}.members-am-legend-nocap-badge{display:inline-block;background:#8c8f94;color:#fff;font-size:9px;padding:1px 4px;border-radius:2px;vertical-align:middle}#members-am-icon-preview.members-am-icon-preview{display:none;width:32px;height:32px;-o-object-fit:contain;object-fit:contain;margin-bottom:6px;border:1px solid #ddd;border-radius:3px;padding:2px;background:#f0f0f1}.members-am-icons .members-am-icon-upload-desc{margin-top:4px}#adminmenu .members-am-menu-badge{display:inline-block;color:#fff;font-size:9px;padding:1px 5px;border-radius:2px;line-height:1.4;vertical-align:middle}
\ No newline at end of file
diff --git a/js/admin-menus.js b/js/admin-menus.js
index 8454b1f..a69e9d1 100644
--- a/js/admin-menus.js
+++ b/js/admin-menus.js
@@ -752,7 +752,6 @@
function roleHasCap(role, cap) {
if (!cap || cap === 'read') return true;
- if (role === 'administrator') return true;
var caps = membersAdminMenus.roleCaps && membersAdminMenus.roleCaps[role];
if (!caps) return false;
return caps.indexOf(cap) !== -1;
@@ -1680,7 +1679,17 @@
$main.append($(' ').text(ov.badge).css({ backgroundColor: badgeBg, color: '#fff', fontSize: '9px', padding: '1px 5px', borderRadius: '2px', marginLeft: '4px', whiteSpace: 'nowrap' }));
}
if (noCap) {
- $main.append($('🔒 no access '));
+ var i18nN = membersAdminMenus.i18n || {};
+ var nocapTitle =
+ (i18nN.noAccessTitlePattern && i18nN.noAccessTitlePattern.replace('%s', node.cap || 'read')) ||
+ 'This role does not have the \'' +
+ (node.cap || 'read') +
+ '\' capability on this role object. Users with multiple roles may still access the screen. Manage capabilities in Members → Roles.';
+ $main.append(
+ $(' ')
+ .attr('title', nocapTitle)
+ .html('🔒 no access')
+ );
}
$row.append($main);
diff --git a/js/admin-menus.min.js b/js/admin-menus.min.js
index b4b3a9d..f3a4bb3 100644
--- a/js/admin-menus.min.js
+++ b/js/admin-menus.min.js
@@ -1 +1 @@
-!function(M){"use strict";var C={settings:M.extend(!0,{},membersAdminMenus.settings),tree:[],activeRoleSlugs:[],carouselPage:0,columnsPerPage:3,selectedId:null,iconTab:"dashicons",previewUserId:null,previewUserRoles:[],userSuggestions:[],mediaFrame:null,allowUnload:!1,syncScroll:function(){try{return"0"!==localStorage.getItem("members_am_sync_scroll")}catch(e){return!0}}(),columnFilters:{},columnBulkSelection:{},collapsedParents:{}},a="",p=!1;function t(){return function r(n){if(null===n)return"null";var e=typeof n;return"string"==e||"number"==e||"boolean"==e?JSON.stringify(n):"undefined"==e?"null":Array.isArray(n)?"["+n.map(function(e){return r(e)}).join(",")+"]":"object"!=e?JSON.stringify(n):"{"+Object.keys(n).sort().map(function(e){return JSON.stringify(e)+":"+r(n[e])}).join(",")+"}"}(C.settings)}function s(){if(!C.allowUnload&&t()!==a)return membersAdminMenus.i18n&&membersAdminMenus.i18n.unsavedChanges||""}var i="members_am_notice";function f(e,r){if(r){var n=M("#members-am-notices");n.length||(M(".members-admin-menus-wrap h1").first().after('
'),n=M("#members-am-notices"));var a=M("
",{class:"notice is-dismissible"}).addClass("notice-"+(e||"info"));a.append(M("
").text(r)),n.prepend(a),M(document).trigger("wp-notice-added")}}function o(e,r){try{sessionStorage.setItem(i,JSON.stringify({type:e||"success",message:r}))}catch(e){}}var e=["dashicons-menu","dashicons-admin-dashboard","dashicons-admin-post","dashicons-admin-page","dashicons-admin-media","dashicons-admin-comments","dashicons-admin-appearance","dashicons-admin-plugins","dashicons-admin-users","dashicons-admin-tools","dashicons-admin-settings","dashicons-admin-generic","dashicons-edit","dashicons-plus","dashicons-chart-bar","dashicons-cart","dashicons-products","dashicons-email","dashicons-groups","dashicons-heart","dashicons-star-filled","dashicons-smiley","dashicons-info","dashicons-lock","dashicons-unlock","dashicons-visibility","dashicons-hidden","dashicons-arrow-up","dashicons-arrow-down","dashicons-admin-network","dashicons-performance"],r=["fa-solid fa-house","fa-solid fa-user","fa-solid fa-gear","fa-solid fa-file","fa-solid fa-image","fa-solid fa-cart-shopping","fa-solid fa-chart-line","fa-solid fa-envelope","fa-solid fa-book","fa-solid fa-link","fa-solid fa-bell","fa-solid fa-star","fa-solid fa-heart","fa-solid fa-lock","fa-solid fa-unlock","fa-solid fa-pen","fa-solid fa-trash","fa-solid fa-plus","fa-solid fa-minus"],m="members_am_view_state";function l(){try{localStorage.setItem(m,JSON.stringify({activeRoleSlugs:C.activeRoleSlugs,carouselPage:C.carouselPage}))}catch(e){}}function c(e){return JSON.parse(JSON.stringify(e))}var d=null;function h(){d=c(C.settings),u()}function u(){var e=M("#members-am-undo");if(e.length){var r=!!d;e.prop("disabled",!r).attr("aria-disabled",r?"false":"true")}}function b(){return membersAdminMenus.roles||[]}function v(){C.settings._meta&&!Array.isArray(C.settings._meta)||(C.settings._meta={version:3,admin_editable:!1}),C.settings.roles&&!Array.isArray(C.settings.roles)||(C.settings.roles={}),C.settings.users&&!Array.isArray(C.settings.users)||(C.settings.users={}),Array.isArray(C.settings.custom_items)||(C.settings.custom_items=[]),C.settings.capabilities&&!Array.isArray(C.settings.capabilities)||(C.settings.capabilities={})}function I(e){v(),C.settings.roles[e]||(C.settings.roles[e]={hidden:[],order:[],submenu_order:{},overrides:{}});var r=C.settings.roles[e];return r.hidden&&Array.isArray(r.hidden)||(r.hidden=[]),r.order&&Array.isArray(r.order)||(r.order=[]),r.submenu_order&&!Array.isArray(r.submenu_order)||(r.submenu_order={}),r.overrides&&!Array.isArray(r.overrides)||(r.overrides={}),r}function S(e){v(),C.settings.users[e]||(C.settings.users[e]={});var r=C.settings.users[e];return r.hidden&&Array.isArray(r.hidden)||(r.hidden=[]),r.order&&Array.isArray(r.order)||(r.order=[]),r.overrides&&!Array.isArray(r.overrides)||(r.overrides={}),r.submenu_order&&!Array.isArray(r.submenu_order)||(r.submenu_order={}),r}function P(e,r){var n=function(e,r){for(var n=(e||[]).slice().sort(),a=null,s=0;s=s.length||(h(),s.splice(p,1),s.splice(f,0,o?u:r))}}function y(e){var r=e.id||"c";return"members-am-"+String(r).replace(/[^a-z0-9_-]/gi,"-").toLowerCase()}function k(e){return!!e&&0===(-1!==e.indexOf("::")?e.split("::").pop():e).indexOf("members-am-")}function _(e,r){if(!e||!r)return null;for(var n=0;ns&&(C.carouselPage=s))}}C.activeRoleSlugs=r.filter(function(e){return"administrator"!==e||n}),C.activeRoleSlugs.length||(C.activeRoleSlugs=["subscriber"])}function ie(){var a=M("#members-am-role-chips").empty();b().forEach(function(e){if("administrator"!==e.slug||C.settings._meta.admin_editable){var r=-1!==C.activeRoleSlugs.indexOf(e.slug),n=M(' ').text(e.label).attr("data-role",e.slug).toggleClass("is-active",r);a.append(n)}})}function oe(t,i,e,o,m){(function(e,r,n,a,s){s=s||0;var t=r.id,i=J(e,t),o=!D(e,r.cap),m=I(e).overrides[t]||{},l=m.label||r.title||t,c=M('
').attr("data-id",t).attr("data-menu-parent",n||"").toggleClass("is-hidden",i).toggleClass("is-no-cap",o).toggleClass("is-selected",C.selectedId===t).toggleClass("is-sub",0 ');if(p){G(d);var b=!!C.collapsedParents[d][t],h=u.expandSubmenus||"Expand submenu items",v=u.collapseSubmenus||"Collapse submenu items";M(' ').attr("aria-expanded",!b).attr("aria-label",(b?h:v)+": "+l).append(M(' ').addClass(b?"dashicons-arrow-right-alt2":"dashicons-arrow-down-alt2")).on("click",function(e){e.stopPropagation(),G(d),C.collapsedParents[d][t]=!C.collapsedParents[d][t],fe()}).appendTo(f),c.toggleClass("is-collapse-collapsed",b)}else f.append(M(' '));c.append(f);var g=u.bulkCheckboxAria||"Include in bulk actions",x=M(' '),y=M(' ').prop("checked",!!C.columnBulkSelection[d].ids[t]).attr("aria-label",g+": "+l).on("click",function(e){e.stopPropagation()}).on("change",function(e){e.stopPropagation(),K(d,t,M(this).prop("checked")),fe()});x.append(y),c.append(x);var k=M('
');if(0===s){var _=m.icon||r.icon,w=B(_,m.icon_type||r.icon_type);if("fontawesome"===w&&_)k.append(M(' '));else if("svg"!==w&&"image"!==w&&"custom"!==w||!_){var O=_&&0===_.indexOf("dashicons-")?_:"dashicons-admin-generic";k.append(M(' '))}else k.append(M(" ").attr("src",_).css({width:"20px",height:"20px",display:"inline-block",verticalAlign:"middle",objectFit:"contain",filter:"none"}))}r.custom&&k.append(M('custom '));m.label&&k.append(M('edit '));if(k.append(M(' ').text(l)),m.badge){var A=m.badge_bg||"#d63638";k.append(M(' ').text(m.badge).css({backgroundColor:A,color:"#fff",fontSize:"9px",padding:"1px 5px",borderRadius:"2px",marginLeft:"4px",whiteSpace:"nowrap"}))}o&&k.append(M(' Roles.\">🔒 no access "));c.append(k),m.color_bg&&c.css("background-color",m.color_bg);m.color_text&&c.find(".members-am-item-label").css("color",m.color_text);m.color_icon&&(c.find(".dashicons").css("color",m.color_icon),c.find(".members-am-fa-icon i").css("color",m.color_icon),c.find("img").css("filter","none"));var S=M('
');S.append(M(' ').text("◉"),M(' ').text("↑"),M(' ').text("↓")),c.append(S),a.append(c)})(t,i,e,o,m=m||0),i.children&&i.children.length&&F(t,i.id).forEach(function(e){var r,n,a,s=(r=t,n=i.id,O(L(n,a=e))||(-1===a.indexOf("::")&&(I(r).overrides[a]||{}).parent===n?O(a):null));s&&"__promote__"!==(I(t).overrides[s.id]||{}).parent&&oe(t,s,i.id,o,m+1)})}function me(n,a,e,s,t,i){i=i||0,t.append(function(r,e,n,a){a=a||0;var s=P(n,r.id),t=s.label||r.title,i=function(e,r){var n=S(e);if(-1!==n.hidden.indexOf(r))return!0;var a=R(r,e);return!(!a||-1===n.hidden.indexOf(a))}(n,r.id),o=!function(e){if(!e||"read"===e)return 1;for(var r=C.previewUserRoles||[],n=0;n").addClass(l).attr("data-id",r.id).attr("data-menu-parent",e||""),d="u:"+n;z(d);var u=membersAdminMenus.i18n||{},p=r.children&&r.children.length,f=M(' ');if(p){G(d);var b=!!C.collapsedParents[d][r.id],h=u.expandSubmenus||"Expand submenu items",v=u.collapseSubmenus||"Collapse submenu items";M(' ').attr("aria-expanded",!b).attr("aria-label",(b?h:v)+": "+t).append(M(' ').addClass(b?"dashicons-arrow-right-alt2":"dashicons-arrow-down-alt2")).on("click",function(e){e.stopPropagation(),G(d),C.collapsedParents[d][r.id]=!C.collapsedParents[d][r.id],fe()}).appendTo(f),c.toggleClass("is-collapse-collapsed",b)}else f.append(M(' '));c.append(f);var g=u.bulkCheckboxAria||"Include in bulk actions",x=M(' '),y=M(' ').prop("checked",!!C.columnBulkSelection[d].ids[r.id]).attr("aria-label",g+": "+t).on("click",function(e){e.stopPropagation()}).on("change",function(e){e.stopPropagation(),K(d,r.id,M(this).prop("checked")),fe()});x.append(y),c.append(x);var k=M('
');if(0===a){var _=s.icon||r.icon,w=B(_,s.icon_type||r.icon_type);"fontawesome"===w&&_?k.append(M(' ')):"svg"!==w&&"image"!==w&&"custom"!==w||!_?_&&0===_.indexOf("dashicons-")?k.append(M(' ')):k.append(M(' ')):k.append(M(" ").attr("src",_).css({width:"20px",height:"20px",display:"inline-block",verticalAlign:"middle",objectFit:"contain",filter:"none"}))}r.custom&&k.append(M('custom '));s.label&&k.append(M('edit '));if(k.append(M(' ').text(t)),s.badge){var O=s.badge_bg||"#d63638";k.append(M(' ').text(s.badge).css({backgroundColor:O,color:"#fff",fontSize:"9px",padding:"1px 5px",borderRadius:"2px",marginLeft:"4px",whiteSpace:"nowrap"}))}o&&k.append(M('🔒 no access "));c.append(k),s.color_bg&&c.css("background-color",s.color_bg);s.color_text&&c.find(".members-am-item-label").css("color",s.color_text);s.color_icon&&(c.find(".dashicons").css("color",s.color_icon),c.find(".members-am-fa-icon i").css("color",s.color_icon));var A=M('
');return A.append(M(' ').text(i?"◯":"◉"),M(' ').text("↑"),M(' ').text("↓")),c.append(A),c.on("click",function(e){M(e.target).closest("button, .members-am-item-cb, .members-am-collapse-toggle").length||(C.selectedId=r.id,Ie())}),c}(a,e,n,i)),a.children&&a.children.length&&function(e,r){var n=N(r),a=S(e);C.tree.forEach(function(e){e&&e.id&&-1===e.id.indexOf("::")&&(a.overrides&&a.overrides[e.id]||{}).parent===r&&-1===n.indexOf(e.id)&&n.push(e.id)});var s=a.submenu_order&&a.submenu_order[r];if(!s||!s.length)return n.slice();var t=s.filter(function(e){return-1!==n.indexOf(e)});return n.forEach(function(e){-1===t.indexOf(e)&&t.push(e)}),t}(n,a.id).forEach(function(e){var r=function(e,r,n){var a=O(L(r,n));if(a)return a;if(-1===n.indexOf("::")){var s=S(e);if((s.overrides&&s.overrides[n]||{}).parent===r)return O(n)}return null}(n,a.id,e);r&&"__promote__"!==(s.overrides&&s.overrides[r.id]||{}).parent&&me(n,r,a.id,s,t,i+1)})}function le(e,r){var s=(r||"").trim().toLowerCase(),n=e.children(".members-am-item");if(!s)return n.removeClass("members-am-filter-hidden"),void e.children(".members-am-sep").removeClass("members-am-filter-hidden");var i={};n.each(function(){var e=M(this),r=e.attr("data-id"),n=(e.find(".members-am-item-label").first().text()||"").toLowerCase(),a=(r||"").toLowerCase();i[r]=-1!==n.indexOf(s)||-1!==a.indexOf(s)});var o={};n.each(function(){var e=M(this).attr("data-id"),r=M(this).attr("data-menu-parent")||"";o[r]||(o[r]=[]),o[r].push(e)});var m={};function l(e){var r,n=i[e],a=o[e]||[],s=!1;for(r=0;r '),o=M(' ').attr("placeholder",s).attr("aria-label",t).val(a);i.append(o),e.find(".members-am-sidebar-head").first().after(i),o.on("input",function(){C.columnFilters[n]=M(this).val(),le(r,M(this).val())}),le(r,a)}function de(e,r){var t=0===String(r).indexOf("u:"),i=t?parseInt(r.replace(/^u:/,""),10):0,o=t?null:r,m=r,l=membersAdminMenus.i18n||{},n=M('
').attr("data-column-key",m),a=M('
');a.append(M(' ').text(l.bulkSelectVisible||"Select visible"),M(' ').text(l.bulkClearSelection||"Clear selection"));var s=M('
');s.append(M(' ').text(l.collapseAllMenus||"Collapse all"),M(' ').text(l.expandAllMenus||"Expand all"));var c=M(' ').attr("aria-label",l.bulkVisibilityLabel||"Menu visibility for this column");c.append(M(' ').text(l.bulkActionsPlaceholder||"Choose visibility…"));var d=M(" ").attr("label",l.bulkGroupWholeColumn||"Whole column");d.append(M(' ').text(l.bulkShowAllItems||"Show every menu item"),M(' ').text(l.bulkHideAllItems||"Hide every menu item"));var u=M(" ").attr("label",l.bulkGroupCheckedRows||"Checked rows");u.append(M(' ').text(l.bulkKeepOnlyCheckedVisible||"Keep only checked visible"),M(' ').text(l.bulkHideCheckedItems||"Hide checked items"),M(' ').text(l.bulkShowCheckedItems||"Show checked items")),c.append(d,u),n.append(a,s,c);var p=e.find(".members-am-col-filter").first();p.length?p.after(n):e.find(".members-am-sidebar-head").first().after(n),c.on("change",function(){var e=M(this).val();if(M(this).val(""),e)if(!("keep-only-checked"===e||"hide-checked"===e||"show-checked"===e)||W(m).length){if("keep-only-checked"===e){if(!window.confirm(l.bulkConfirmKeepOnlyChecked||"Hide all items except checked items and their parent menus?"))return}else if("hide-all"===e){if(!window.confirm(l.bulkConfirmHideAll||"Hide every menu item in this column?"))return}else if("hide-checked"===e&&!window.confirm(l.bulkConfirmHideChecked||"Hide the checked items (and their submenus where applicable)?"))return;var r,n,a,s;h(),t?"show-all"===e?S(i).hidden=[]:"hide-all"===e?(a=i,s=H(),S(a).hidden=s.slice()):"keep-only-checked"===e?function(e,n){var r=W(e);if(r.length){var a={};r.forEach(function(e){for(var r=e;r;)a[r]=!0,r=R(r,n)});var s=H(),t=S(n).hidden;t.length=0,s.forEach(function(e){a[e]||t.push(e)})}}(m,i):"hide-checked"===e?Z(m,i):"show-checked"===e&&ee(m,i):"show-all"===e?I(o).hidden=[]:"hide-all"===e?(r=o,n=H(),I(r).hidden=n.slice()):"keep-only-checked"===e?function(e,n){var r=W(e);if(r.length){var a={};r.forEach(function(e){for(var r=e;r;)a[r]=!0,r=E(r,n)});var s=H(),t=I(n).hidden;t.length=0,s.forEach(function(e){a[e]||t.push(e)})}}(m,o):"hide-checked"===e?X(m,o):"show-checked"===e&&Y(m,o),Ie()}else f("warning",l.bulkSelectCheckedFirst||"Check one or more menu items first.")})}function ue(e){return-1!==e.indexOf("::")?e.split("::").pop():e}function pe(){M.fn.sortable&&M("#members-am-columns .members-am-sidebar-list").each(function(){var e=M(this);e.data("ui-sortable")&&e.sortable("destroy");var r=e.closest(".members-am-column"),n=r.data("role"),a=r.data("user");e.sortable({axis:"y",distance:6,items:"> .members-am-item, > .members-am-sep",cancel:".members-am-item-actions button, .members-am-item-cb, .members-am-item-cb-wrap, .members-am-collapse-toggle",placeholder:"members-am-sort-placeholder",forcePlaceholderSize:!0,tolerance:"pointer",start:function(){h()},update:function(){a?function(e,r){var s=[],t={};e.children().each(function(){var e=M(this);if(e.hasClass("members-am-sep")){var r=e.attr("data-sep-id");r&&s.push(r)}else if(e.hasClass("members-am-item")){var n=e.attr("data-id");if(n){var a=e.attr("data-menu-parent");void 0===a||""===a?s.push(n):(t[a]||(t[a]=[]),t[a].push(ue(n)))}}});var n=S(r);n.order=s,n.submenu_order=t}(e,a):n&&function(e,r){var s=[],t={};e.children().each(function(){var e=M(this);if(e.hasClass("members-am-sep")){var r=e.attr("data-sep-id");r&&s.push(r)}else if(e.hasClass("members-am-item")){var n=e.attr("data-id");if(n){var a=e.attr("data-menu-parent");void 0===a||""===a?s.push(n):(t[a]||(t[a]=[]),t[a].push(ue(n)))}}});var n=I(r);n.order=s,n.submenu_order=t}(e,n),be()}})})}function fe(){var n=M("#members-am-columns"),a={};n.find(".members-am-column").each(function(){var e=M(this).data("role");if(e){var r=M(this).find(".members-am-sidebar-list");r.length&&(a[e]=r.scrollTop())}}),n.empty();var e=C.carouselPage*C.columnsPerPage;if(C.activeRoleSlugs.slice(e,e+C.columnsPerPage).forEach(function(e){var r=M('
');!function(n,e){e.empty();var r=M(''),a=(b().filter(function(e){return e.slug===n})[0]||{}).label||n;r.append(M('').text(a)),r.append(M(' ').append(M(' ').text("◀"),M(' ').text("▶"))),e.append(r);var s=M('');j(n).forEach(function(e){if(0!==e.indexOf("sep-")){var r=O(e);r&&oe(n,r,null,s,0)}else s.append(M('
').attr("data-sep-id",e).text("—"))}),e.append(s),$(s,n),ce(e,s,n),de(e,n)}(e,r),n.append(r),a[e]&&r.find(".members-am-sidebar-list").scrollTop(a[e])}),C.previewUserId){var s=C.previewUserId,r=M('
'),t=M('');t.append(M(" ").text(C.previewUserLabel||"User #"+s)),t.append(M('× ').on("click",function(){C.previewUserId=null,C.previewUserLabel=null,C.previewUserRoles=[],Ie()})),r.append(t);var i=M(''),o=S(s);g(s).forEach(function(e){if(0!==e.indexOf("sep-")){var r=O(e);r&&me(s,r,null,o,i,0)}else i.append(M('
').attr("data-sep-id",e).text("——"))}),r.append(i),$(i,"u:"+s),ce(r,i,"u:"+s),de(r,"u:"+s),n.append(r)}if(C.syncScroll){var m=n.find(".members-am-sidebar-list"),l=!1;m.on("scroll",function(){if(!l){l=!0;var e=M(this).scrollTop();m.not(this).scrollTop(e),l=!1}})}!function(){var e=Math.max(1,Math.ceil(C.activeRoleSlugs.length/C.columnsPerPage)),r=(Math.min(C.carouselPage+1,e),C.carouselPage*C.columnsPerPage+1),n=Math.min((C.carouselPage+1)*C.columnsPerPage,C.activeRoleSlugs.length);M("#members-am-carousel-status").text(r+"–"+n+" "+membersAdminMenus.i18n.of+" "+C.activeRoleSlugs.length);for(var a=M("#members-am-carousel-dots").empty(),s=0;s ').toggleClass("is-active",s===C.carouselPage))}(),pe()}function be(){if(C.selectedId){M("#members-am-edit-panel").removeAttr("hidden");var e=O(C.selectedId),r=ae()||{};M("#members-am-edit-title").text(e?e.title:C.selectedId),M("#members-am-edit-label").val(r.label||e&&e.title||"");var n=k(C.selectedId);M("#members-am-edit-url-wrap").toggle(n),M("#members-am-edit-url").attr("placeholder","Override URL (leave empty for default)").val(n&&(r.url||e&&e.url)||"").data("default-url",e&&e.url||""),M("#members-am-icon-type").val(r.icon_type||"dashicon"),M("#members-am-icon-value").val(r.icon||e&&e.icon||"");var a=r.icon||e&&e.icon||"",s=B(a,r.icon_type||e&&e.icon_type||"");"image"!==s&&"custom"!==s&&"svg"!==s||!a?M("#members-am-icon-preview").hide():M("#members-am-icon-preview").show().attr("src",a),M("#members-am-color-bg").val(r.color_bg||""),M("#members-am-color-text").val(r.color_text||""),M("#members-am-color-icon").val(r.color_icon||""),M("#members-am-badge-text").val(r.badge||""),M("#members-am-badge-bg").val(r.badge_bg||""),M("#members-am-item-cap").attr("placeholder",e&&e.cap?e.cap+" (default)":"").val(C.settings.capabilities[C.selectedId]||"");var t=e&&e.custom,i=M("#members-am-remove-custom");t?i.removeAttr("hidden"):i.attr("hidden","hidden"),M("#members-am-visibility-toggles").empty();var o=e&&e.cap||"read",m=[];if(b().forEach(function(e){"administrator"===e.slug&&!C.settings._meta.admin_editable||m.push(e)}),10<=m.length){var l=membersAdminMenus.i18n&&membersAdminMenus.i18n.filterRolesVisibility||"Filter roles…",c=membersAdminMenus.i18n&&membersAdminMenus.i18n.filterRolesVisibilityLabel||"Filter roles in this list",d=M('
'),u=M(' ').attr("placeholder",l).attr("aria-label",c);d.append(u),M("#members-am-visibility-toggles").append(d),u.on("input",function(){var s=(M(this).val()||"").trim().toLowerCase();M("#members-am-visibility-toggles .members-am-vis-row").each(function(){var e=M(this),r=(e.find("span").first().text()||"").toLowerCase(),n=String(e.find(".members-am-vis-cb").data("role")||"").toLowerCase(),a=!s||-1!==r.indexOf(s)||-1!==n.indexOf(s);e.toggleClass("members-am-vis-filter-hidden",!a)})})}m.forEach(function(e){var r=J(e.slug,C.selectedId),n=D(e.slug,o),a=M(' ').attr("data-role",e.slug).prop("checked",!r&&n);n||a.prop("disabled",!0);var s=M(' ').append(a,M(" ").text(e.label));n||(s.append(M(" ").text(" — no capability").css({color:"#999",fontStyle:"italic",marginLeft:"4px"})),s.css("opacity","0.5")),M("#members-am-visibility-toggles").append(s)}),M(".members-am-color").each(function(){M(this).data("wpWpColorPicker")&&M(this).wpColorPicker("destroy")}),M(".members-am-color").wpColorPicker({change:function(){p||setTimeout(function(){ge()},20)},clear:function(){p||setTimeout(function(){ge()},20)}}),p=!0,M(".members-am-color").each(function(){var e=M(this),r=String(e.val()||"").trim();if(r&&"#"!==r&&e.data("wpWpColorPicker"))try{e.wpColorPicker("color",r)}catch(e){}}),p=!1,xe(),function(){var e=M(".members-am-demote-wrap"),n=M("#members-am-demote-parent"),r=M("#members-am-demote");if(!C.selectedId)return e.attr("hidden",!0);if(A(C.selectedId))return e.attr("hidden",!0);var a=re()[0]||C.activeRoleSlugs[0];if(a&&U(a,C.selectedId))return e.attr("hidden",!0);e.removeAttr("hidden");var s=C.selectedId,t=membersAdminMenus.i18n&&membersAdminMenus.i18n.selectParentMenu||"";n.empty().append(M(" ").val("").text(t));var i=0;C.tree.forEach(function(e){if(e&&e.id&&e.id!==s){var r=e.title&&String(e.title).trim()?e.title:e.id;n.append(M(" ").val(e.id).text(r)),i++}});var o=0 ');"dashicons"===n?r.append(M(' ')):r.append(M(' ')),r.on("click",function(){M("#members-am-icon-value").val(e),M("#members-am-icon-type").val("dashicons"===n?"dashicon":"fontawesome"),ge()}),s.append(r)}})}function ye(e,r){var n=C.activeRoleSlugs.indexOf(e);if(-1!==n){var a=n+r;if(!(a<0||a>=C.activeRoleSlugs.length)){h();var s=C.activeRoleSlugs[n];C.activeRoleSlugs[n]=C.activeRoleSlugs[a],C.activeRoleSlugs[a]=s,l(),Ie()}}}function ke(e,r,n){var a,s,t,i=I(e).overrides[r]||{},o=null;if("__promote__"===i.parent?o=null:-1!==r.indexOf("::")?o=A(r):i.parent&&"__promote__"!==i.parent&&(o=i.parent),o){var m=I(e).submenu_order;m[o]||(m[o]=(a=e,t=N(s=o),C.tree.forEach(function(e){e&&e.id&&-1===e.id.indexOf("::")&&(I(a).overrides[e.id]||{}).parent===s&&-1===t.indexOf(e.id)&&t.push(e.id)}),t));var l=m[o],c=-1!==r.indexOf("::")?r.split("::").pop():r;if(-1===(u=l.indexOf(c)))return;if((p=u+n)<0||p>=l.length)return;h();var d=l[u];l[u]=l[p],l[p]=d}else{I(e).order&&I(e).order.length||(I(e).order=T());var u,p,f=I(e).order;if(-1===(u=f.indexOf(r)))return;if((p=u+n)<0||p>=f.length)return;h();var b=f[u];f[u]=f[p],f[p]=b}Ie()}function _e(){var e=re();if(e.length){h();var a="sep-"+Date.now();e.forEach(function(e){I(e).order&&I(e).order.length||(I(e).order=T());var r=I(e).order,n=C.selectedId?r.indexOf(C.selectedId):r.length-1;n<0&&(n=r.length),r.splice(n+1,0,a)}),Ie()}}function we(e){var r=M("#members-am-toolbar-loading");r.removeAttr("hidden"),r.find(".spinner").addClass("is-active"),r.find(".members-am-loading-text").text(e||""),M("#members-am-save, #members-am-reset, #members-am-import, #members-am-copy-apply, #members-am-undo").prop("disabled",!0)}function Oe(){var e=M("#members-am-toolbar-loading");e.attr("hidden",!0),e.find(".spinner").removeClass("is-active"),e.find(".members-am-loading-text").text(""),M("#members-am-save, #members-am-reset, #members-am-import, #members-am-copy-apply").prop("disabled",!1),u()}function Ae(e){we(e||membersAdminMenus.i18n&&membersAdminMenus.i18n.saving||"Saving…");var s=membersAdminMenus.i18n&&membersAdminMenus.i18n.networkError||"Could not save settings. Check your connection and try again.";M.ajax({url:membersAdminMenus.ajaxUrl,type:"POST",dataType:"json",timeout:6e4,data:{action:"members_admin_menus_save",nonce:membersAdminMenus.nonce,settings:JSON.stringify(C.settings)}}).done(function(e){if(e&&void 0!==e.success){if(e.success)return a=t(),d=null,u(),void f("success",e.data&&e.data.message||membersAdminMenus.i18n&&membersAdminMenus.i18n.saved||"Settings saved.");f("error",e.data&&e.data.message?e.data.message:"Error")}else f("error",s)}).fail(function(e,r){if("abort"!==r){var n=s;if(e&&e.responseJSON&&void 0!==e.responseJSON.data){var a=e.responseJSON.data;"string"==typeof a&&a?n=a:a&&"string"==typeof a.message&&a.message&&(n=a.message)}f("error",n)}}).always(function(){Oe()})}function Se(e,r){if(confirm("role"===e&&r?"Reset all settings for this role? This cannot be undone.":"Reset ALL menu settings for every role? This cannot be undone.")){we(membersAdminMenus.i18n&&membersAdminMenus.i18n.resetting||"Resetting…");var n=!1;M.post(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_reset",nonce:membersAdminMenus.nonce,scope:e||"all",role:r||""}).done(function(e){if(e.success)return o("success",e.data&&e.data.message||membersAdminMenus.i18n&&membersAdminMenus.i18n.resetComplete||"Reset complete."),C.allowUnload=!0,n=!0,void location.reload();f("error",e.data&&e.data.message?e.data.message:membersAdminMenus.i18n&&membersAdminMenus.i18n.resetFailed||"Reset failed.")}).fail(function(){f("error",membersAdminMenus.i18n&&membersAdminMenus.i18n.resetNetworkError||membersAdminMenus.i18n.networkError||"Could not reset settings. Check your connection and try again.")}).always(function(){n||Oe()})}}function Me(e){M.getJSON(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_user_search",nonce:membersAdminMenus.nonce,term:e},function(e){e.success&&e.data&&e.data.length?function(e){M(".members-am-user-suggestions").remove();var r=M("#members-am-user-search").parent();r.css("position","relative");var n=M('
');e.forEach(function(e){n.append(M('
').text(e.label).data("userId",e.id).on("click",function(){!function(e,r,n){C.previewUserId=e,C.previewUserLabel=r||"User #"+e,C.previewUserRoles=n||[],v(),C.settings.users[e]||(C.settings.users[e]={});Ie()}(e.id,e.label,e.roles),M(".members-am-user-suggestions").remove(),M("#members-am-user-search").val("")}))}),r.append(n),setTimeout(function(){M(document).one("click",function(){M(".members-am-user-suggestions").remove()})},0)}(e.data):M(".members-am-user-suggestions").remove()})}function Ce(){M(document).on("click","#members-am-role-chips .members-am-chip",function(){var e=M(this).data("role"),r=C.activeRoleSlugs.indexOf(e);-1===r?C.activeRoleSlugs.push(e):1 ');if(t.append(M('
').text("Reset Settings")),a&&s){var i=M(' ');i.append(M(' ')),i.append(M(' ').append(M(" ").text("Reset "+s),M(" ").text("Clear all menu settings for this role only"))),i.on("click",function(e){e.preventDefault(),e.stopPropagation(),M(".members-am-reset-dropdown").remove(),Se("role",a)}),t.append(i)}var o=M(' ');o.append(M(' ')),o.append(M(' ').append(M(" ").text("Reset all roles"),M(" ").text("Clear all menu settings for every role"))),o.on("click",function(e){e.preventDefault(),e.stopPropagation(),M(".members-am-reset-dropdown").remove(),Se("all")}),t.append(o),t.insertAfter(r),setTimeout(function(){M(document).one("click",function(){M(".members-am-reset-dropdown").remove()})},0)}),M("#members-am-export").on("click",function(e){e.preventDefault(),window.location.href=membersAdminMenus.exportUrl}),M("#members-am-import").on("click",function(){M("#members-am-import-file").trigger("click")}),M("#members-am-import-file").on("change",function(){var e=this.files&&this.files[0];e&&function(e){we(membersAdminMenus.i18n&&membersAdminMenus.i18n.importing||"Importing…");var n=new FileReader;n.onerror=function(){Oe(),f("error",membersAdminMenus.i18n&&membersAdminMenus.i18n.readFileFailed||"Could not read the file.")},n.onload=function(){try{var e=JSON.parse(n.result),r=!1;M.post(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_import",nonce:membersAdminMenus.nonce,settings:JSON.stringify(e)}).done(function(e){if(e.success)return o("success",e.data&&e.data.message||membersAdminMenus.i18n&&membersAdminMenus.i18n.imported||"Settings imported."),C.allowUnload=!0,r=!0,void location.reload();f("error",e.data&&e.data.message?e.data.message:"Error")}).fail(function(){f("error",membersAdminMenus.i18n&&membersAdminMenus.i18n.importNetworkError||membersAdminMenus.i18n.networkError||"Could not import settings. Check your connection and try again.")}).always(function(){r||Oe()})}catch(e){Oe(),f("error",membersAdminMenus.i18n&&membersAdminMenus.i18n.invalidJson||"Invalid JSON.")}},n.readAsText(e)}(e)}),M("#members-am-copy-apply").on("click",function(){var n=M("#members-am-copy-from").val(),r=M("#members-am-copy-to").val();if(n&&r)if(n!==r){var a="",s="";if(b().forEach(function(e){e.slug===n&&(a=e.label),e.slug===r&&(s=e.label)}),confirm('Copy menu settings from "'+a+'" to "'+s+'"?\nThis will overwrite "'+s+"\" menu configuration.\n\nNote: This copies menu order, hidden items, labels, icons, and colors.\nIt does NOT change the role's capabilities (items marked with a lock icon).")){h();var e=I(n),t={hidden:e.hidden?e.hidden.slice():[],order:[],submenu_order:{},overrides:{}},i=j(n);t.order=i.slice(),C.tree.forEach(function(e){if(e.children&&e.children.length){var r=F(n,e.id);r&&r.length&&(t.submenu_order[e.id]=r.slice())}}),e.overrides&&"object"==typeof e.overrides&&(t.overrides=JSON.parse(JSON.stringify(e.overrides))),C.settings.roles[r]=t,-1===C.activeRoleSlugs.indexOf(r)&&(C.activeRoleSlugs.push(r),l(),ie()),Ie(),Ae(membersAdminMenus.i18n&&membersAdminMenus.i18n.copying||"Copying…")}}else f("error",membersAdminMenus.i18n&&membersAdminMenus.i18n.rolesMustDiffer||"Source and target roles must be different.")}),M("#members-am-admin-editable").on("change",function(){var e=!0;M(this).is(":checked")&&(e=window.confirm(membersAdminMenus.i18n.adminEditableWarn)),e?(C.settings._meta.admin_editable=M(this).is(":checked"),te(),ie(),l(),Ie()):M(this).prop("checked",!1)}),M("#members-am-sync-scroll").prop("checked",!1!==C.syncScroll),M("#members-am-sync-scroll").on("change",function(){C.syncScroll=M(this).is(":checked");try{localStorage.setItem("members_am_sync_scroll",C.syncScroll?"1":"0")}catch(e){}fe()});var s="members_am_more_tools";function e(e){var r=M("#members-am-toolbar-extra"),n=M("#members-am-more-tools");if(r.length&&n.length){r.prop("hidden",!e),n.attr("aria-expanded",e?"true":"false").toggleClass("is-open",!!e);var a=membersAdminMenus.i18n||{};e&&a.moreToolsHideAria?n.attr("aria-label",a.moreToolsHideAria):!e&&a.moreToolsShowAria?n.attr("aria-label",a.moreToolsShowAria):n.removeAttr("aria-label");try{sessionStorage.setItem(s,e?"1":"0")}catch(e){}}}var r,n=!1;try{n="1"===sessionStorage.getItem(s)}catch(e){}e(n),M("#members-am-more-tools").on("click",function(){e(M("#members-am-toolbar-extra").prop("hidden"))}),M("#members-am-add-item").on("click",function(){h();var e="c"+Date.now();C.settings.custom_items.push({id:e,label:"Custom link",url:window.location.origin+"/wp-admin/",icon_type:"dashicon",icon:"dashicons-admin-generic",parent:"",position:99,cap:"read"}),C.tree=w(),C.selectedId=y({id:e}),Ie(),be()}),M("#members-am-remove-custom").on("click",function(){var e=O(C.selectedId),r=e&&e.customId?String(e.customId):"";if(!r&&e&&e.custom&&C.selectedId){var n=-1!==C.selectedId.indexOf("::")?C.selectedId.split("::").pop():C.selectedId;0===n.indexOf("members-am-")&&(C.settings.custom_items||[]).forEach(function(e){e&&e.id&&y(e)===n&&(r=String(e.id))})}e&&r&&(h(),C.settings.custom_items=(C.settings.custom_items||[]).filter(function(e){return!e||String(e.id)!==r}),C.selectedId=null,C.tree=w(),Ie(),M("#members-am-edit-panel").attr("hidden",!0))}),M("#members-am-edit-close").on("click",function(){C.selectedId=null,M("#members-am-edit-panel").attr("hidden",!0),Ie()}),M("#members-am-edit-target-role").on("change",be),M("#members-am-colors-readable").on("click",function(e){e.preventDefault();var r=String(M("#members-am-color-bg").val()||"").trim();if(r&&"#"!==r){var n=.45 ").val("__all__").text("All roles")),C.activeRoleSlugs.forEach(function(r){var e=(b().filter(function(e){return e.slug===r})[0]||{}).label||r;n.append(M(" ").val(r).text(e))}),C.previewUserId&&n.append(M(" ").val("__user__"+C.previewUserId).text(C.previewUserLabel||"User #"+C.previewUserId)),C.selectedId&&be()}M(function(){var r,n,e;!function(){try{var e=sessionStorage.getItem(i);if(!e)return;sessionStorage.removeItem(i);var r=JSON.parse(e);r&&r.message&&f(r.type,r.message)}catch(e){}}(),v(),C.tree=w(),te(),M("#members-am-admin-editable").prop("checked",!!C.settings._meta.admin_editable),r=M("#members-am-copy-from").empty(),n=M("#members-am-copy-to").empty(),(e=b()).forEach(function(e){r.append(M(" ").val(e.slug).text(e.label)),n.append(M(" ").val(e.slug).text(e.label))}),1'),n=I("#members-am-notices"));var a=I("
",{class:"notice is-dismissible"}).addClass("notice-"+(e||"info"));a.append(I("
").text(r)),n.prepend(a),I(document).trigger("wp-notice-added")}}function o(e,r){try{sessionStorage.setItem(i,JSON.stringify({type:e||"success",message:r}))}catch(e){}}var e=["dashicons-menu","dashicons-admin-dashboard","dashicons-admin-post","dashicons-admin-page","dashicons-admin-media","dashicons-admin-comments","dashicons-admin-appearance","dashicons-admin-plugins","dashicons-admin-users","dashicons-admin-tools","dashicons-admin-settings","dashicons-admin-generic","dashicons-edit","dashicons-plus","dashicons-chart-bar","dashicons-cart","dashicons-products","dashicons-email","dashicons-groups","dashicons-heart","dashicons-star-filled","dashicons-smiley","dashicons-info","dashicons-lock","dashicons-unlock","dashicons-visibility","dashicons-hidden","dashicons-arrow-up","dashicons-arrow-down","dashicons-admin-network","dashicons-performance"],r=["fa-solid fa-house","fa-solid fa-user","fa-solid fa-gear","fa-solid fa-file","fa-solid fa-image","fa-solid fa-cart-shopping","fa-solid fa-chart-line","fa-solid fa-envelope","fa-solid fa-book","fa-solid fa-link","fa-solid fa-bell","fa-solid fa-star","fa-solid fa-heart","fa-solid fa-lock","fa-solid fa-unlock","fa-solid fa-pen","fa-solid fa-trash","fa-solid fa-plus","fa-solid fa-minus"],m="members_am_view_state";function l(){try{localStorage.setItem(m,JSON.stringify({activeRoleSlugs:P.activeRoleSlugs,carouselPage:P.carouselPage}))}catch(e){}}function c(e){return JSON.parse(JSON.stringify(e))}var d=null;function h(){d=c(P.settings),u()}function u(){var e=I("#members-am-undo");if(e.length){var r=!!d;e.prop("disabled",!r).attr("aria-disabled",r?"false":"true")}}function b(){return membersAdminMenus.roles||[]}function v(){P.settings._meta&&!Array.isArray(P.settings._meta)||(P.settings._meta={version:3,admin_editable:!1}),P.settings.roles&&!Array.isArray(P.settings.roles)||(P.settings.roles={}),P.settings.users&&!Array.isArray(P.settings.users)||(P.settings.users={}),Array.isArray(P.settings.custom_items)||(P.settings.custom_items=[]),P.settings.capabilities&&!Array.isArray(P.settings.capabilities)||(P.settings.capabilities={})}function E(e){v(),P.settings.roles[e]||(P.settings.roles[e]={hidden:[],order:[],submenu_order:{},overrides:{}});var r=P.settings.roles[e];return r.hidden&&Array.isArray(r.hidden)||(r.hidden=[]),r.order&&Array.isArray(r.order)||(r.order=[]),r.submenu_order&&!Array.isArray(r.submenu_order)||(r.submenu_order={}),r.overrides&&!Array.isArray(r.overrides)||(r.overrides={}),r}function S(e){v(),P.settings.users[e]||(P.settings.users[e]={});var r=P.settings.users[e];return r.hidden&&Array.isArray(r.hidden)||(r.hidden=[]),r.order&&Array.isArray(r.order)||(r.order=[]),r.overrides&&!Array.isArray(r.overrides)||(r.overrides={}),r.submenu_order&&!Array.isArray(r.submenu_order)||(r.submenu_order={}),r}function M(e,r){var n=function(e,r){for(var n=(e||[]).slice().sort(),a=null,s=0;s=s.length||(h(),s.splice(p,1),s.splice(f,0,o?u:r))}}function y(e){var r=e.id||"c";return"members-am-"+String(r).replace(/[^a-z0-9_-]/gi,"-").toLowerCase()}function k(e){return!!e&&0===(-1!==e.indexOf("::")?e.split("::").pop():e).indexOf("members-am-")}function _(e,r){if(!e||!r)return null;for(var n=0;ns&&(P.carouselPage=s))}}P.activeRoleSlugs=r.filter(function(e){return"administrator"!==e||n}),P.activeRoleSlugs.length||(P.activeRoleSlugs=["subscriber"])}function ie(){var a=I("#members-am-role-chips").empty();b().forEach(function(e){if("administrator"!==e.slug||P.settings._meta.admin_editable){var r=-1!==P.activeRoleSlugs.indexOf(e.slug),n=I(' ').text(e.label).attr("data-role",e.slug).toggleClass("is-active",r);a.append(n)}})}function oe(t,i,e,o,m){(function(e,r,n,a,s){s=s||0;var t=r.id,i=J(e,t),o=!D(e,r.cap),m=E(e).overrides[t]||{},l=m.label||r.title||t,c=I('
').attr("data-id",t).attr("data-menu-parent",n||"").toggleClass("is-hidden",i).toggleClass("is-no-cap",o).toggleClass("is-selected",P.selectedId===t).toggleClass("is-sub",0 ');if(p){G(d);var b=!!P.collapsedParents[d][t],h=u.expandSubmenus||"Expand submenu items",v=u.collapseSubmenus||"Collapse submenu items";I(' ').attr("aria-expanded",!b).attr("aria-label",(b?h:v)+": "+l).append(I(' ').addClass(b?"dashicons-arrow-right-alt2":"dashicons-arrow-down-alt2")).on("click",function(e){e.stopPropagation(),G(d),P.collapsedParents[d][t]=!P.collapsedParents[d][t],fe()}).appendTo(f),c.toggleClass("is-collapse-collapsed",b)}else f.append(I(' '));c.append(f);var g=u.bulkCheckboxAria||"Include in bulk actions",x=I(' '),y=I(' ').prop("checked",!!P.columnBulkSelection[d].ids[t]).attr("aria-label",g+": "+l).on("click",function(e){e.stopPropagation()}).on("change",function(e){e.stopPropagation(),K(d,t,I(this).prop("checked")),fe()});x.append(y),c.append(x);var k=I('
');if(0===s){var _=m.icon||r.icon,w=B(_,m.icon_type||r.icon_type);if("fontawesome"===w&&_)k.append(I(' '));else if("svg"!==w&&"image"!==w&&"custom"!==w||!_){var A=_&&0===_.indexOf("dashicons-")?_:"dashicons-admin-generic";k.append(I(' '))}else k.append(I(" ").attr("src",_).css({width:"20px",height:"20px",display:"inline-block",verticalAlign:"middle",objectFit:"contain",filter:"none"}))}r.custom&&k.append(I('custom '));m.label&&k.append(I('edit '));if(k.append(I(' ').text(l)),m.badge){var O=m.badge_bg||"#d63638";k.append(I(' ').text(m.badge).css({backgroundColor:O,color:"#fff",fontSize:"9px",padding:"1px 5px",borderRadius:"2px",marginLeft:"4px",whiteSpace:"nowrap"}))}if(o){var S=membersAdminMenus.i18n||{},M=S.noAccessTitlePattern&&S.noAccessTitlePattern.replace("%s",r.cap||"read")||"This role does not have the '"+(r.cap||"read")+"' capability on this role object. Users with multiple roles may still access the screen. Manage capabilities in Members → Roles.";k.append(I(' ').attr("title",M).html("🔒 no access"))}c.append(k),m.color_bg&&c.css("background-color",m.color_bg);m.color_text&&c.find(".members-am-item-label").css("color",m.color_text);m.color_icon&&(c.find(".dashicons").css("color",m.color_icon),c.find(".members-am-fa-icon i").css("color",m.color_icon),c.find("img").css("filter","none"));var C=I('
');C.append(I(' ').text("◉"),I(' ').text("↑"),I(' ').text("↓")),c.append(C),a.append(c)})(t,i,e,o,m=m||0),i.children&&i.children.length&&F(t,i.id).forEach(function(e){var r,n,a,s=(r=t,n=i.id,A(L(n,a=e))||(-1===a.indexOf("::")&&(E(r).overrides[a]||{}).parent===n?A(a):null));s&&"__promote__"!==(E(t).overrides[s.id]||{}).parent&&oe(t,s,i.id,o,m+1)})}function me(n,a,e,s,t,i){i=i||0,t.append(function(r,e,n,a){a=a||0;var s=M(n,r.id),t=s.label||r.title,i=function(e,r){var n=S(e);if(-1!==n.hidden.indexOf(r))return!0;var a=R(r,e);return!(!a||-1===n.hidden.indexOf(a))}(n,r.id),o=!function(e){if(!e||"read"===e)return 1;for(var r=P.previewUserRoles||[],n=0;n").addClass(l).attr("data-id",r.id).attr("data-menu-parent",e||""),d="u:"+n;z(d);var u=membersAdminMenus.i18n||{},p=r.children&&r.children.length,f=I(' ');if(p){G(d);var b=!!P.collapsedParents[d][r.id],h=u.expandSubmenus||"Expand submenu items",v=u.collapseSubmenus||"Collapse submenu items";I(' ').attr("aria-expanded",!b).attr("aria-label",(b?h:v)+": "+t).append(I(' ').addClass(b?"dashicons-arrow-right-alt2":"dashicons-arrow-down-alt2")).on("click",function(e){e.stopPropagation(),G(d),P.collapsedParents[d][r.id]=!P.collapsedParents[d][r.id],fe()}).appendTo(f),c.toggleClass("is-collapse-collapsed",b)}else f.append(I(' '));c.append(f);var g=u.bulkCheckboxAria||"Include in bulk actions",x=I(' '),y=I(' ').prop("checked",!!P.columnBulkSelection[d].ids[r.id]).attr("aria-label",g+": "+t).on("click",function(e){e.stopPropagation()}).on("change",function(e){e.stopPropagation(),K(d,r.id,I(this).prop("checked")),fe()});x.append(y),c.append(x);var k=I('
');if(0===a){var _=s.icon||r.icon,w=B(_,s.icon_type||r.icon_type);"fontawesome"===w&&_?k.append(I(' ')):"svg"!==w&&"image"!==w&&"custom"!==w||!_?_&&0===_.indexOf("dashicons-")?k.append(I(' ')):k.append(I(' ')):k.append(I(" ").attr("src",_).css({width:"20px",height:"20px",display:"inline-block",verticalAlign:"middle",objectFit:"contain",filter:"none"}))}r.custom&&k.append(I('custom '));s.label&&k.append(I('edit '));if(k.append(I(' ').text(t)),s.badge){var A=s.badge_bg||"#d63638";k.append(I(' ').text(s.badge).css({backgroundColor:A,color:"#fff",fontSize:"9px",padding:"1px 5px",borderRadius:"2px",marginLeft:"4px",whiteSpace:"nowrap"}))}o&&k.append(I('🔒 no access "));c.append(k),s.color_bg&&c.css("background-color",s.color_bg);s.color_text&&c.find(".members-am-item-label").css("color",s.color_text);s.color_icon&&(c.find(".dashicons").css("color",s.color_icon),c.find(".members-am-fa-icon i").css("color",s.color_icon));var O=I('
');return O.append(I(' ').text(i?"◯":"◉"),I(' ').text("↑"),I(' ').text("↓")),c.append(O),c.on("click",function(e){I(e.target).closest("button, .members-am-item-cb, .members-am-collapse-toggle").length||(P.selectedId=r.id,Ie())}),c}(a,e,n,i)),a.children&&a.children.length&&function(e,r){var n=N(r),a=S(e);P.tree.forEach(function(e){e&&e.id&&-1===e.id.indexOf("::")&&(a.overrides&&a.overrides[e.id]||{}).parent===r&&-1===n.indexOf(e.id)&&n.push(e.id)});var s=a.submenu_order&&a.submenu_order[r];if(!s||!s.length)return n.slice();var t=s.filter(function(e){return-1!==n.indexOf(e)});return n.forEach(function(e){-1===t.indexOf(e)&&t.push(e)}),t}(n,a.id).forEach(function(e){var r=function(e,r,n){var a=A(L(r,n));if(a)return a;if(-1===n.indexOf("::")){var s=S(e);if((s.overrides&&s.overrides[n]||{}).parent===r)return A(n)}return null}(n,a.id,e);r&&"__promote__"!==(s.overrides&&s.overrides[r.id]||{}).parent&&me(n,r,a.id,s,t,i+1)})}function le(e,r){var s=(r||"").trim().toLowerCase(),n=e.children(".members-am-item");if(!s)return n.removeClass("members-am-filter-hidden"),void e.children(".members-am-sep").removeClass("members-am-filter-hidden");var i={};n.each(function(){var e=I(this),r=e.attr("data-id"),n=(e.find(".members-am-item-label").first().text()||"").toLowerCase(),a=(r||"").toLowerCase();i[r]=-1!==n.indexOf(s)||-1!==a.indexOf(s)});var o={};n.each(function(){var e=I(this).attr("data-id"),r=I(this).attr("data-menu-parent")||"";o[r]||(o[r]=[]),o[r].push(e)});var m={};function l(e){var r,n=i[e],a=o[e]||[],s=!1;for(r=0;r '),o=I(' ').attr("placeholder",s).attr("aria-label",t).val(a);i.append(o),e.find(".members-am-sidebar-head").first().after(i),o.on("input",function(){P.columnFilters[n]=I(this).val(),le(r,I(this).val())}),le(r,a)}function de(e,r){var t=0===String(r).indexOf("u:"),i=t?parseInt(r.replace(/^u:/,""),10):0,o=t?null:r,m=r,l=membersAdminMenus.i18n||{},n=I('
').attr("data-column-key",m),a=I('
');a.append(I(' ').text(l.bulkSelectVisible||"Select visible"),I(' ').text(l.bulkClearSelection||"Clear selection"));var s=I('
');s.append(I(' ').text(l.collapseAllMenus||"Collapse all"),I(' ').text(l.expandAllMenus||"Expand all"));var c=I(' ').attr("aria-label",l.bulkVisibilityLabel||"Menu visibility for this column");c.append(I(' ').text(l.bulkActionsPlaceholder||"Choose visibility…"));var d=I(" ").attr("label",l.bulkGroupWholeColumn||"Whole column");d.append(I(' ').text(l.bulkShowAllItems||"Show every menu item"),I(' ').text(l.bulkHideAllItems||"Hide every menu item"));var u=I(" ").attr("label",l.bulkGroupCheckedRows||"Checked rows");u.append(I(' ').text(l.bulkKeepOnlyCheckedVisible||"Keep only checked visible"),I(' ').text(l.bulkHideCheckedItems||"Hide checked items"),I(' ').text(l.bulkShowCheckedItems||"Show checked items")),c.append(d,u),n.append(a,s,c);var p=e.find(".members-am-col-filter").first();p.length?p.after(n):e.find(".members-am-sidebar-head").first().after(n),c.on("change",function(){var e=I(this).val();if(I(this).val(""),e)if(!("keep-only-checked"===e||"hide-checked"===e||"show-checked"===e)||W(m).length){if("keep-only-checked"===e){if(!window.confirm(l.bulkConfirmKeepOnlyChecked||"Hide all items except checked items and their parent menus?"))return}else if("hide-all"===e){if(!window.confirm(l.bulkConfirmHideAll||"Hide every menu item in this column?"))return}else if("hide-checked"===e&&!window.confirm(l.bulkConfirmHideChecked||"Hide the checked items (and their submenus where applicable)?"))return;var r,n,a,s;h(),t?"show-all"===e?S(i).hidden=[]:"hide-all"===e?(a=i,s=H(),S(a).hidden=s.slice()):"keep-only-checked"===e?function(e,n){var r=W(e);if(r.length){var a={};r.forEach(function(e){for(var r=e;r;)a[r]=!0,r=R(r,n)});var s=H(),t=S(n).hidden;t.length=0,s.forEach(function(e){a[e]||t.push(e)})}}(m,i):"hide-checked"===e?Z(m,i):"show-checked"===e&&ee(m,i):"show-all"===e?E(o).hidden=[]:"hide-all"===e?(r=o,n=H(),E(r).hidden=n.slice()):"keep-only-checked"===e?function(e,n){var r=W(e);if(r.length){var a={};r.forEach(function(e){for(var r=e;r;)a[r]=!0,r=C(r,n)});var s=H(),t=E(n).hidden;t.length=0,s.forEach(function(e){a[e]||t.push(e)})}}(m,o):"hide-checked"===e?X(m,o):"show-checked"===e&&Y(m,o),Ie()}else f("warning",l.bulkSelectCheckedFirst||"Check one or more menu items first.")})}function ue(e){return-1!==e.indexOf("::")?e.split("::").pop():e}function pe(){I.fn.sortable&&I("#members-am-columns .members-am-sidebar-list").each(function(){var e=I(this);e.data("ui-sortable")&&e.sortable("destroy");var r=e.closest(".members-am-column"),n=r.data("role"),a=r.data("user");e.sortable({axis:"y",distance:6,items:"> .members-am-item, > .members-am-sep",cancel:".members-am-item-actions button, .members-am-item-cb, .members-am-item-cb-wrap, .members-am-collapse-toggle",placeholder:"members-am-sort-placeholder",forcePlaceholderSize:!0,tolerance:"pointer",start:function(){h()},update:function(){a?function(e,r){var s=[],t={};e.children().each(function(){var e=I(this);if(e.hasClass("members-am-sep")){var r=e.attr("data-sep-id");r&&s.push(r)}else if(e.hasClass("members-am-item")){var n=e.attr("data-id");if(n){var a=e.attr("data-menu-parent");void 0===a||""===a?s.push(n):(t[a]||(t[a]=[]),t[a].push(ue(n)))}}});var n=S(r);n.order=s,n.submenu_order=t}(e,a):n&&function(e,r){var s=[],t={};e.children().each(function(){var e=I(this);if(e.hasClass("members-am-sep")){var r=e.attr("data-sep-id");r&&s.push(r)}else if(e.hasClass("members-am-item")){var n=e.attr("data-id");if(n){var a=e.attr("data-menu-parent");void 0===a||""===a?s.push(n):(t[a]||(t[a]=[]),t[a].push(ue(n)))}}});var n=E(r);n.order=s,n.submenu_order=t}(e,n),be()}})})}function fe(){var n=I("#members-am-columns"),a={};n.find(".members-am-column").each(function(){var e=I(this).data("role");if(e){var r=I(this).find(".members-am-sidebar-list");r.length&&(a[e]=r.scrollTop())}}),n.empty();var e=P.carouselPage*P.columnsPerPage;if(P.activeRoleSlugs.slice(e,e+P.columnsPerPage).forEach(function(e){var r=I('
');!function(n,e){e.empty();var r=I(''),a=(b().filter(function(e){return e.slug===n})[0]||{}).label||n;r.append(I('').text(a)),r.append(I(' ').append(I(' ').text("◀"),I(' ').text("▶"))),e.append(r);var s=I('');j(n).forEach(function(e){if(0!==e.indexOf("sep-")){var r=A(e);r&&oe(n,r,null,s,0)}else s.append(I('
').attr("data-sep-id",e).text("—"))}),e.append(s),$(s,n),ce(e,s,n),de(e,n)}(e,r),n.append(r),a[e]&&r.find(".members-am-sidebar-list").scrollTop(a[e])}),P.previewUserId){var s=P.previewUserId,r=I('
'),t=I('');t.append(I(" ").text(P.previewUserLabel||"User #"+s)),t.append(I('× ').on("click",function(){P.previewUserId=null,P.previewUserLabel=null,P.previewUserRoles=[],Ie()})),r.append(t);var i=I(''),o=S(s);g(s).forEach(function(e){if(0!==e.indexOf("sep-")){var r=A(e);r&&me(s,r,null,o,i,0)}else i.append(I('
').attr("data-sep-id",e).text("——"))}),r.append(i),$(i,"u:"+s),ce(r,i,"u:"+s),de(r,"u:"+s),n.append(r)}if(P.syncScroll){var m=n.find(".members-am-sidebar-list"),l=!1;m.on("scroll",function(){if(!l){l=!0;var e=I(this).scrollTop();m.not(this).scrollTop(e),l=!1}})}!function(){var e=Math.max(1,Math.ceil(P.activeRoleSlugs.length/P.columnsPerPage)),r=(Math.min(P.carouselPage+1,e),P.carouselPage*P.columnsPerPage+1),n=Math.min((P.carouselPage+1)*P.columnsPerPage,P.activeRoleSlugs.length);I("#members-am-carousel-status").text(r+"–"+n+" "+membersAdminMenus.i18n.of+" "+P.activeRoleSlugs.length);for(var a=I("#members-am-carousel-dots").empty(),s=0;s ').toggleClass("is-active",s===P.carouselPage))}(),pe()}function be(){if(P.selectedId){I("#members-am-edit-panel").removeAttr("hidden");var e=A(P.selectedId),r=ae()||{};I("#members-am-edit-title").text(e?e.title:P.selectedId),I("#members-am-edit-label").val(r.label||e&&e.title||"");var n=k(P.selectedId);I("#members-am-edit-url-wrap").toggle(n),I("#members-am-edit-url").attr("placeholder","Override URL (leave empty for default)").val(n&&(r.url||e&&e.url)||"").data("default-url",e&&e.url||""),I("#members-am-icon-type").val(r.icon_type||"dashicon"),I("#members-am-icon-value").val(r.icon||e&&e.icon||"");var a=r.icon||e&&e.icon||"",s=B(a,r.icon_type||e&&e.icon_type||"");"image"!==s&&"custom"!==s&&"svg"!==s||!a?I("#members-am-icon-preview").hide():I("#members-am-icon-preview").show().attr("src",a),I("#members-am-color-bg").val(r.color_bg||""),I("#members-am-color-text").val(r.color_text||""),I("#members-am-color-icon").val(r.color_icon||""),I("#members-am-badge-text").val(r.badge||""),I("#members-am-badge-bg").val(r.badge_bg||""),I("#members-am-item-cap").attr("placeholder",e&&e.cap?e.cap+" (default)":"").val(P.settings.capabilities[P.selectedId]||"");var t=e&&e.custom,i=I("#members-am-remove-custom");t?i.removeAttr("hidden"):i.attr("hidden","hidden"),I("#members-am-visibility-toggles").empty();var o=e&&e.cap||"read",m=[];if(b().forEach(function(e){"administrator"===e.slug&&!P.settings._meta.admin_editable||m.push(e)}),10<=m.length){var l=membersAdminMenus.i18n&&membersAdminMenus.i18n.filterRolesVisibility||"Filter roles…",c=membersAdminMenus.i18n&&membersAdminMenus.i18n.filterRolesVisibilityLabel||"Filter roles in this list",d=I('
'),u=I(' ').attr("placeholder",l).attr("aria-label",c);d.append(u),I("#members-am-visibility-toggles").append(d),u.on("input",function(){var s=(I(this).val()||"").trim().toLowerCase();I("#members-am-visibility-toggles .members-am-vis-row").each(function(){var e=I(this),r=(e.find("span").first().text()||"").toLowerCase(),n=String(e.find(".members-am-vis-cb").data("role")||"").toLowerCase(),a=!s||-1!==r.indexOf(s)||-1!==n.indexOf(s);e.toggleClass("members-am-vis-filter-hidden",!a)})})}m.forEach(function(e){var r=J(e.slug,P.selectedId),n=D(e.slug,o),a=I(' ').attr("data-role",e.slug).prop("checked",!r&&n);n||a.prop("disabled",!0);var s=I(' ').append(a,I(" ").text(e.label));n||(s.append(I(" ").text(" — no capability").css({color:"#999",fontStyle:"italic",marginLeft:"4px"})),s.css("opacity","0.5")),I("#members-am-visibility-toggles").append(s)}),I(".members-am-color").each(function(){I(this).data("wpWpColorPicker")&&I(this).wpColorPicker("destroy")}),I(".members-am-color").wpColorPicker({change:function(){p||setTimeout(function(){ge()},20)},clear:function(){p||setTimeout(function(){ge()},20)}}),p=!0,I(".members-am-color").each(function(){var e=I(this),r=String(e.val()||"").trim();if(r&&"#"!==r&&e.data("wpWpColorPicker"))try{e.wpColorPicker("color",r)}catch(e){}}),p=!1,xe(),function(){var e=I(".members-am-demote-wrap"),n=I("#members-am-demote-parent"),r=I("#members-am-demote");if(!P.selectedId)return e.attr("hidden",!0);if(O(P.selectedId))return e.attr("hidden",!0);var a=re()[0]||P.activeRoleSlugs[0];if(a&&U(a,P.selectedId))return e.attr("hidden",!0);e.removeAttr("hidden");var s=P.selectedId,t=membersAdminMenus.i18n&&membersAdminMenus.i18n.selectParentMenu||"";n.empty().append(I(" ").val("").text(t));var i=0;P.tree.forEach(function(e){if(e&&e.id&&e.id!==s){var r=e.title&&String(e.title).trim()?e.title:e.id;n.append(I(" ").val(e.id).text(r)),i++}});var o=0 ');"dashicons"===n?r.append(I(' ')):r.append(I(' ')),r.on("click",function(){I("#members-am-icon-value").val(e),I("#members-am-icon-type").val("dashicons"===n?"dashicon":"fontawesome"),ge()}),s.append(r)}})}function ye(e,r){var n=P.activeRoleSlugs.indexOf(e);if(-1!==n){var a=n+r;if(!(a<0||a>=P.activeRoleSlugs.length)){h();var s=P.activeRoleSlugs[n];P.activeRoleSlugs[n]=P.activeRoleSlugs[a],P.activeRoleSlugs[a]=s,l(),Ie()}}}function ke(e,r,n){var a,s,t,i=E(e).overrides[r]||{},o=null;if("__promote__"===i.parent?o=null:-1!==r.indexOf("::")?o=O(r):i.parent&&"__promote__"!==i.parent&&(o=i.parent),o){var m=E(e).submenu_order;m[o]||(m[o]=(a=e,t=N(s=o),P.tree.forEach(function(e){e&&e.id&&-1===e.id.indexOf("::")&&(E(a).overrides[e.id]||{}).parent===s&&-1===t.indexOf(e.id)&&t.push(e.id)}),t));var l=m[o],c=-1!==r.indexOf("::")?r.split("::").pop():r;if(-1===(u=l.indexOf(c)))return;if((p=u+n)<0||p>=l.length)return;h();var d=l[u];l[u]=l[p],l[p]=d}else{E(e).order&&E(e).order.length||(E(e).order=T());var u,p,f=E(e).order;if(-1===(u=f.indexOf(r)))return;if((p=u+n)<0||p>=f.length)return;h();var b=f[u];f[u]=f[p],f[p]=b}Ie()}function _e(){var e=re();if(e.length){h();var a="sep-"+Date.now();e.forEach(function(e){E(e).order&&E(e).order.length||(E(e).order=T());var r=E(e).order,n=P.selectedId?r.indexOf(P.selectedId):r.length-1;n<0&&(n=r.length),r.splice(n+1,0,a)}),Ie()}}function we(e){var r=I("#members-am-toolbar-loading");r.removeAttr("hidden"),r.find(".spinner").addClass("is-active"),r.find(".members-am-loading-text").text(e||""),I("#members-am-save, #members-am-reset, #members-am-import, #members-am-copy-apply, #members-am-undo").prop("disabled",!0)}function Ae(){var e=I("#members-am-toolbar-loading");e.attr("hidden",!0),e.find(".spinner").removeClass("is-active"),e.find(".members-am-loading-text").text(""),I("#members-am-save, #members-am-reset, #members-am-import, #members-am-copy-apply").prop("disabled",!1),u()}function Oe(e){we(e||membersAdminMenus.i18n&&membersAdminMenus.i18n.saving||"Saving…");var s=membersAdminMenus.i18n&&membersAdminMenus.i18n.networkError||"Could not save settings. Check your connection and try again.";I.ajax({url:membersAdminMenus.ajaxUrl,type:"POST",dataType:"json",timeout:6e4,data:{action:"members_admin_menus_save",nonce:membersAdminMenus.nonce,settings:JSON.stringify(P.settings)}}).done(function(e){if(e&&void 0!==e.success){if(e.success)return a=t(),d=null,u(),void f("success",e.data&&e.data.message||membersAdminMenus.i18n&&membersAdminMenus.i18n.saved||"Settings saved.");f("error",e.data&&e.data.message?e.data.message:"Error")}else f("error",s)}).fail(function(e,r){if("abort"!==r){var n=s;if(e&&e.responseJSON&&void 0!==e.responseJSON.data){var a=e.responseJSON.data;"string"==typeof a&&a?n=a:a&&"string"==typeof a.message&&a.message&&(n=a.message)}f("error",n)}}).always(function(){Ae()})}function Se(e,r){if(confirm("role"===e&&r?"Reset all settings for this role? This cannot be undone.":"Reset ALL menu settings for every role? This cannot be undone.")){we(membersAdminMenus.i18n&&membersAdminMenus.i18n.resetting||"Resetting…");var n=!1;I.post(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_reset",nonce:membersAdminMenus.nonce,scope:e||"all",role:r||""}).done(function(e){if(e.success)return o("success",e.data&&e.data.message||membersAdminMenus.i18n&&membersAdminMenus.i18n.resetComplete||"Reset complete."),P.allowUnload=!0,n=!0,void location.reload();f("error",e.data&&e.data.message?e.data.message:membersAdminMenus.i18n&&membersAdminMenus.i18n.resetFailed||"Reset failed.")}).fail(function(){f("error",membersAdminMenus.i18n&&membersAdminMenus.i18n.resetNetworkError||membersAdminMenus.i18n.networkError||"Could not reset settings. Check your connection and try again.")}).always(function(){n||Ae()})}}function Me(e){I.getJSON(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_user_search",nonce:membersAdminMenus.nonce,term:e},function(e){e.success&&e.data&&e.data.length?function(e){I(".members-am-user-suggestions").remove();var r=I("#members-am-user-search").parent();r.css("position","relative");var n=I('
');e.forEach(function(e){n.append(I('
').text(e.label).data("userId",e.id).on("click",function(){!function(e,r,n){P.previewUserId=e,P.previewUserLabel=r||"User #"+e,P.previewUserRoles=n||[],v(),P.settings.users[e]||(P.settings.users[e]={});Ie()}(e.id,e.label,e.roles),I(".members-am-user-suggestions").remove(),I("#members-am-user-search").val("")}))}),r.append(n),setTimeout(function(){I(document).one("click",function(){I(".members-am-user-suggestions").remove()})},0)}(e.data):I(".members-am-user-suggestions").remove()})}function Ce(){I(document).on("click","#members-am-role-chips .members-am-chip",function(){var e=I(this).data("role"),r=P.activeRoleSlugs.indexOf(e);-1===r?P.activeRoleSlugs.push(e):1 ');if(t.append(I('
').text("Reset Settings")),a&&s){var i=I(' ');i.append(I(' ')),i.append(I(' ').append(I(" ").text("Reset "+s),I(" ").text("Clear all menu settings for this role only"))),i.on("click",function(e){e.preventDefault(),e.stopPropagation(),I(".members-am-reset-dropdown").remove(),Se("role",a)}),t.append(i)}var o=I(' ');o.append(I(' ')),o.append(I(' ').append(I(" ").text("Reset all roles"),I(" ").text("Clear all menu settings for every role"))),o.on("click",function(e){e.preventDefault(),e.stopPropagation(),I(".members-am-reset-dropdown").remove(),Se("all")}),t.append(o),t.insertAfter(r),setTimeout(function(){I(document).one("click",function(){I(".members-am-reset-dropdown").remove()})},0)}),I("#members-am-export").on("click",function(e){e.preventDefault(),window.location.href=membersAdminMenus.exportUrl}),I("#members-am-import").on("click",function(){I("#members-am-import-file").trigger("click")}),I("#members-am-import-file").on("change",function(){var e=this.files&&this.files[0];e&&function(e){we(membersAdminMenus.i18n&&membersAdminMenus.i18n.importing||"Importing…");var n=new FileReader;n.onerror=function(){Ae(),f("error",membersAdminMenus.i18n&&membersAdminMenus.i18n.readFileFailed||"Could not read the file.")},n.onload=function(){try{var e=JSON.parse(n.result),r=!1;I.post(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_import",nonce:membersAdminMenus.nonce,settings:JSON.stringify(e)}).done(function(e){if(e.success)return o("success",e.data&&e.data.message||membersAdminMenus.i18n&&membersAdminMenus.i18n.imported||"Settings imported."),P.allowUnload=!0,r=!0,void location.reload();f("error",e.data&&e.data.message?e.data.message:"Error")}).fail(function(){f("error",membersAdminMenus.i18n&&membersAdminMenus.i18n.importNetworkError||membersAdminMenus.i18n.networkError||"Could not import settings. Check your connection and try again.")}).always(function(){r||Ae()})}catch(e){Ae(),f("error",membersAdminMenus.i18n&&membersAdminMenus.i18n.invalidJson||"Invalid JSON.")}},n.readAsText(e)}(e)}),I("#members-am-copy-apply").on("click",function(){var n=I("#members-am-copy-from").val(),r=I("#members-am-copy-to").val();if(n&&r)if(n!==r){var a="",s="";if(b().forEach(function(e){e.slug===n&&(a=e.label),e.slug===r&&(s=e.label)}),confirm('Copy menu settings from "'+a+'" to "'+s+'"?\nThis will overwrite "'+s+"\" menu configuration.\n\nNote: This copies menu order, hidden items, labels, icons, and colors.\nIt does NOT change the role's capabilities (items marked with a lock icon).")){h();var e=E(n),t={hidden:e.hidden?e.hidden.slice():[],order:[],submenu_order:{},overrides:{}},i=j(n);t.order=i.slice(),P.tree.forEach(function(e){if(e.children&&e.children.length){var r=F(n,e.id);r&&r.length&&(t.submenu_order[e.id]=r.slice())}}),e.overrides&&"object"==typeof e.overrides&&(t.overrides=JSON.parse(JSON.stringify(e.overrides))),P.settings.roles[r]=t,-1===P.activeRoleSlugs.indexOf(r)&&(P.activeRoleSlugs.push(r),l(),ie()),Ie(),Oe(membersAdminMenus.i18n&&membersAdminMenus.i18n.copying||"Copying…")}}else f("error",membersAdminMenus.i18n&&membersAdminMenus.i18n.rolesMustDiffer||"Source and target roles must be different.")}),I("#members-am-admin-editable").on("change",function(){var e=!0;I(this).is(":checked")&&(e=window.confirm(membersAdminMenus.i18n.adminEditableWarn)),e?(P.settings._meta.admin_editable=I(this).is(":checked"),te(),ie(),l(),Ie()):I(this).prop("checked",!1)}),I("#members-am-sync-scroll").prop("checked",!1!==P.syncScroll),I("#members-am-sync-scroll").on("change",function(){P.syncScroll=I(this).is(":checked");try{localStorage.setItem("members_am_sync_scroll",P.syncScroll?"1":"0")}catch(e){}fe()});var s="members_am_more_tools";function e(e){var r=I("#members-am-toolbar-extra"),n=I("#members-am-more-tools");if(r.length&&n.length){r.prop("hidden",!e),n.attr("aria-expanded",e?"true":"false").toggleClass("is-open",!!e);var a=membersAdminMenus.i18n||{};e&&a.moreToolsHideAria?n.attr("aria-label",a.moreToolsHideAria):!e&&a.moreToolsShowAria?n.attr("aria-label",a.moreToolsShowAria):n.removeAttr("aria-label");try{sessionStorage.setItem(s,e?"1":"0")}catch(e){}}}var r,n=!1;try{n="1"===sessionStorage.getItem(s)}catch(e){}e(n),I("#members-am-more-tools").on("click",function(){e(I("#members-am-toolbar-extra").prop("hidden"))}),I("#members-am-add-item").on("click",function(){h();var e="c"+Date.now();P.settings.custom_items.push({id:e,label:"Custom link",url:window.location.origin+"/wp-admin/",icon_type:"dashicon",icon:"dashicons-admin-generic",parent:"",position:99,cap:"read"}),P.tree=w(),P.selectedId=y({id:e}),Ie(),be()}),I("#members-am-remove-custom").on("click",function(){var e=A(P.selectedId),r=e&&e.customId?String(e.customId):"";if(!r&&e&&e.custom&&P.selectedId){var n=-1!==P.selectedId.indexOf("::")?P.selectedId.split("::").pop():P.selectedId;0===n.indexOf("members-am-")&&(P.settings.custom_items||[]).forEach(function(e){e&&e.id&&y(e)===n&&(r=String(e.id))})}e&&r&&(h(),P.settings.custom_items=(P.settings.custom_items||[]).filter(function(e){return!e||String(e.id)!==r}),P.selectedId=null,P.tree=w(),Ie(),I("#members-am-edit-panel").attr("hidden",!0))}),I("#members-am-edit-close").on("click",function(){P.selectedId=null,I("#members-am-edit-panel").attr("hidden",!0),Ie()}),I("#members-am-edit-target-role").on("change",be),I("#members-am-colors-readable").on("click",function(e){e.preventDefault();var r=String(I("#members-am-color-bg").val()||"").trim();if(r&&"#"!==r){var n=.45 ").val("__all__").text("All roles")),P.activeRoleSlugs.forEach(function(r){var e=(b().filter(function(e){return e.slug===r})[0]||{}).label||r;n.append(I(" ").val(r).text(e))}),P.previewUserId&&n.append(I(" ").val("__user__"+P.previewUserId).text(P.previewUserLabel||"User #"+P.previewUserId)),P.selectedId&&be()}I(function(){var r,n,e;!function(){try{var e=sessionStorage.getItem(i);if(!e)return;sessionStorage.removeItem(i);var r=JSON.parse(e);r&&r.message&&f(r.type,r.message)}catch(e){}}(),v(),P.tree=w(),te(),I("#members-am-admin-editable").prop("checked",!!P.settings._meta.admin_editable),r=I("#members-am-copy-from").empty(),n=I("#members-am-copy-to").empty(),(e=b()).forEach(function(e){r.append(I(" ").val(e.slug).text(e.label)),n.append(I(" ").val(e.slug).text(e.label))}),1
Date: Fri, 24 Apr 2026 15:49:56 +0300
Subject: [PATCH 44/73] feat(admin): add capability management functions and
enhance role capability checks in admin menus
---
.../app/functions-admin.php | 85 +++++++++++++++++++
js/admin-menus.js | 20 ++++-
2 files changed, 104 insertions(+), 1 deletion(-)
diff --git a/addons/members-admin-menus/app/functions-admin.php b/addons/members-admin-menus/app/functions-admin.php
index b4a663f..e394f68 100644
--- a/addons/members-admin-menus/app/functions-admin.php
+++ b/addons/members-admin-menus/app/functions-admin.php
@@ -250,6 +250,87 @@ function get_admin_menus_color_scheme_css() {
return '.members-admin-menus-wrap{' . $decl . '}';
}
+/**
+ * Collect unique capability strings referenced by the menu tree (for Admin Menus UI checks).
+ *
+ * @param array $tree Menu tree from build_menu_tree_for_js().
+ * @return string[]
+ */
+function collect_capability_names_from_menu_tree( $tree ) {
+ $out = array();
+ if ( ! is_array( $tree ) ) {
+ return $out;
+ }
+ foreach ( $tree as $node ) {
+ if ( ! empty( $node['cap'] ) && is_string( $node['cap'] ) ) {
+ $c = sanitize_key( $node['cap'] );
+ if ( $c ) {
+ $out[] = $c;
+ }
+ }
+ if ( ! empty( $node['children'] ) && is_array( $node['children'] ) ) {
+ foreach ( $node['children'] as $child ) {
+ if ( ! empty( $child['cap'] ) && is_string( $child['cap'] ) ) {
+ $c = sanitize_key( $child['cap'] );
+ if ( $c ) {
+ $out[] = $c;
+ }
+ }
+ }
+ }
+ }
+ return array_values( array_unique( $out ) );
+}
+
+/**
+ * Merge per-item capability overrides from saved settings into the capability list.
+ *
+ * @param string[] $caps Base capability names.
+ * @param array $settings Admin Menus settings.
+ * @return string[]
+ */
+function merge_menu_capabilities_from_settings( array $caps, $settings ) {
+ if ( empty( $settings['capabilities'] ) || ! is_array( $settings['capabilities'] ) ) {
+ return $caps;
+ }
+ foreach ( $settings['capabilities'] as $slug => $cap ) {
+ if ( is_string( $cap ) && '' !== trim( $cap ) ) {
+ $c = sanitize_key( preg_replace( '/\s.*/', '', trim( $cap ) ) );
+ if ( $c ) {
+ $caps[] = $c;
+ }
+ }
+ }
+ return array_values( array_unique( $caps ) );
+}
+
+/**
+ * For each role, whether {@see WP_Role::has_cap()} allows the capability (respects role_has_cap).
+ *
+ * @param string[] $caps Capability names.
+ * @return array>
+ */
+function build_role_cap_matrix_for_js( array $caps ) {
+ $matrix = array();
+ foreach ( \members_get_roles() as $role_obj ) {
+ $slug = $role_obj->name;
+ $wp_role = \get_role( $slug );
+ if ( ! $wp_role ) {
+ $matrix[ $slug ] = array();
+ continue;
+ }
+ $row = array();
+ foreach ( $caps as $cap ) {
+ if ( ! is_string( $cap ) || '' === $cap ) {
+ continue;
+ }
+ $row[ $cap ] = (bool) $wp_role->has_cap( $cap );
+ }
+ $matrix[ $slug ] = $row;
+ }
+ return $matrix;
+}
+
/**
* Enqueue scripts and styles for the Admin Menus page.
*
@@ -297,6 +378,9 @@ function enqueue_admin_menus_assets() {
}
}
+ $menu_caps = merge_menu_capabilities_from_settings( collect_capability_names_from_menu_tree( $tree ), $settings );
+ $role_cap_matrix = build_role_cap_matrix_for_js( $menu_caps );
+
wp_localize_script(
'members-admin-menus',
'membersAdminMenus',
@@ -305,6 +389,7 @@ function enqueue_admin_menus_assets() {
'settings' => ensure_objects_for_js( $settings ),
'roles' => $roles,
'roleCaps' => $role_caps,
+ 'roleCapMatrix' => $role_cap_matrix,
'adminEditable' => ! empty( $settings['_meta']['admin_editable'] ),
'nonce' => wp_create_nonce( 'members_admin_menus' ),
'ajaxUrl' => admin_url( 'admin-ajax.php' ),
diff --git a/js/admin-menus.js b/js/admin-menus.js
index a69e9d1..6af7769 100644
--- a/js/admin-menus.js
+++ b/js/admin-menus.js
@@ -750,8 +750,25 @@
return false;
}
+ function normalizeCapForCheck(cap) {
+ if (!cap || typeof cap !== 'string') {
+ return cap;
+ }
+ var s = cap.trim().toLowerCase();
+ var sp = s.indexOf(' ');
+ if (sp !== -1) {
+ s = s.substring(0, sp);
+ }
+ return s;
+ }
+
function roleHasCap(role, cap) {
+ cap = normalizeCapForCheck(cap);
if (!cap || cap === 'read') return true;
+ var matrix = membersAdminMenus.roleCapMatrix && membersAdminMenus.roleCapMatrix[role];
+ if (matrix && Object.prototype.hasOwnProperty.call(matrix, cap)) {
+ return !!matrix[cap];
+ }
var caps = membersAdminMenus.roleCaps && membersAdminMenus.roleCaps[role];
if (!caps) return false;
return caps.indexOf(cap) !== -1;
@@ -2093,7 +2110,8 @@
}
$('#members-am-visibility-toggles').empty();
- var itemCap = (node && node.cap) || 'read';
+ var capFromSettings = normalizeCapForCheck(state.settings.capabilities[state.selectedId] || '');
+ var itemCap = capFromSettings || normalizeCapForCheck((node && node.cap) || '') || 'read';
var visRolesForPanel = [];
getRolesList().forEach(function (r) {
if (r.slug === 'administrator' && !state.settings._meta.admin_editable) {
From 587c743e580380931f5f4c70d5256a9a9ae54734 Mon Sep 17 00:00:00 2001
From: Omar ElHawary
Date: Fri, 24 Apr 2026 16:22:18 +0300
Subject: [PATCH 45/73] feat(admin): enhance reset settings functionality
---
.../app/functions-admin.php | 15 +++-
css/admin.css | 8 +-
js/admin-menus.js | 85 ++++++++++++-------
3 files changed, 71 insertions(+), 37 deletions(-)
diff --git a/addons/members-admin-menus/app/functions-admin.php b/addons/members-admin-menus/app/functions-admin.php
index e394f68..f22c90b 100644
--- a/addons/members-admin-menus/app/functions-admin.php
+++ b/addons/members-admin-menus/app/functions-admin.php
@@ -401,10 +401,17 @@ function enqueue_admin_menus_assets() {
admin_url( 'admin-ajax.php' )
),
'i18n' => array(
- 'save' => __( 'Save changes', 'members' ),
- 'reset' => __( 'Reset', 'members' ),
- 'resetAll' => __( 'Reset all roles', 'members' ),
- 'resetRole' => __( 'Reset this role', 'members' ),
+ 'save' => __( 'Save changes', 'members' ),
+ 'reset' => __( 'Reset', 'members' ),
+ 'resetSettingsLabel' => __( 'Reset Settings', 'members' ),
+ 'resetAdministrator' => __( 'Reset Administrator', 'members' ),
+ 'resetAdministratorHelp' => __( 'Clear all menu settings for the Administrator role only.', 'members' ),
+ 'resetAllRolesHelp' => __( 'Clear all menu settings for every role.', 'members' ),
+ 'confirmResetAdministrator' => __( 'Reset all menu settings for the Administrator role? This cannot be undone.', 'members' ),
+ 'confirmResetAllRoles' => __( 'Reset ALL menu settings for every role? This cannot be undone.', 'members' ),
+ 'confirmResetRole' => __( 'Reset all settings for this role? This cannot be undone.', 'members' ),
+ 'resetAll' => __( 'Reset all roles', 'members' ),
+ 'resetRole' => __( 'Reset this role', 'members' ),
'addItem' => __( 'Add custom item', 'members' ),
'copyRole' => __( 'Copy from role', 'members' ),
'import' => __( 'Import', 'members' ),
diff --git a/css/admin.css b/css/admin.css
index bc8d057..93c1c1b 100644
--- a/css/admin.css
+++ b/css/admin.css
@@ -2396,6 +2396,10 @@ body.admin_page_members-about #wpbody-content {
color: var(--wp-components-color-foreground, #1d2327);
}
+.members-am-reset-dropdown > .members-am-reset-option:last-of-type {
+ border-bottom: none;
+}
+
.members-am-reset-option {
display: flex;
align-items: flex-start;
@@ -2410,10 +2414,6 @@ body.admin_page_members-about #wpbody-content {
transition: background 0.15s;
}
-.members-am-reset-option:last-child {
- border-bottom: none;
-}
-
.members-am-reset-option:hover {
background: var(--members-am-chrome-bg, #f6f7f7);
}
diff --git a/js/admin-menus.js b/js/admin-menus.js
index 6af7769..b28588a 100644
--- a/js/admin-menus.js
+++ b/js/admin-menus.js
@@ -2527,10 +2527,25 @@
}
function resetSettings(scope, role) {
- var msg =
- scope === 'role' && role
- ? 'Reset all settings for this role? This cannot be undone.'
- : 'Reset ALL menu settings for every role? This cannot be undone.';
+ var i18n = membersAdminMenus.i18n || {};
+ var msg;
+ if (scope === 'role' && role === 'administrator') {
+ msg =
+ i18n.confirmResetAdministrator ||
+ 'Reset all menu settings for the Administrator role? This cannot be undone.';
+ } else if (scope === 'all') {
+ msg =
+ i18n.confirmResetAllRoles ||
+ 'Reset ALL menu settings for every role? This cannot be undone.';
+ } else if (scope === 'role' && role) {
+ msg =
+ i18n.confirmResetRole ||
+ 'Reset all settings for this role? This cannot be undone.';
+ } else {
+ msg =
+ i18n.confirmResetAllRoles ||
+ 'Reset ALL menu settings for every role? This cannot be undone.';
+ }
if (!confirm(msg)) {
return;
}
@@ -2839,47 +2854,59 @@
$('.members-am-reset-dropdown').remove();
var $btn = $(this);
- var activeRoles = state.activeRoleSlugs || [];
- var firstRole = activeRoles.length ? activeRoles[0] : '';
- var firstRoleLabel = '';
- if (firstRole) {
- (membersAdminMenus.roles || []).forEach(function (r) {
- if (r.slug === firstRole) firstRoleLabel = r.label;
- });
- }
+ var i18n = membersAdminMenus.i18n || {};
+ var adminSlug = 'administrator';
+ var hasAdministrator = false;
+ (membersAdminMenus.roles || []).forEach(function (r) {
+ if (r.slug === adminSlug) {
+ hasAdministrator = true;
+ }
+ });
var $drop = $('
');
- $drop.append($('
').text('Reset Settings'));
+ $drop.append(
+ $('
').text(
+ i18n.resetSettingsLabel || 'Reset Settings'
+ )
+ );
- if (firstRole && firstRoleLabel) {
- var $roleBtn = $(' ');
- $roleBtn.append($(' '));
- $roleBtn.append(
+ if (hasAdministrator) {
+ var $adminBtn = $(' ');
+ $adminBtn.append($(' '));
+ $adminBtn.append(
$(' ').append(
- $(' ').text('Reset ' + firstRoleLabel),
- $(' ').text('Clear all menu settings for this role only')
+ $(' ').text(
+ i18n.resetAdministrator || 'Reset Administrator'
+ ),
+ $(' ').text(
+ i18n.resetAdministratorHelp ||
+ 'Clear all menu settings for the Administrator role only.'
+ )
)
);
- $roleBtn.on('click', function (e) {
- e.preventDefault();
- e.stopPropagation();
+ $adminBtn.on('click', function (ev) {
+ ev.preventDefault();
+ ev.stopPropagation();
$('.members-am-reset-dropdown').remove();
- resetSettings('role', firstRole);
+ resetSettings('role', adminSlug);
});
- $drop.append($roleBtn);
+ $drop.append($adminBtn);
}
var $allBtn = $(' ');
$allBtn.append($(' '));
$allBtn.append(
$(' ').append(
- $(' ').text('Reset all roles'),
- $(' ').text('Clear all menu settings for every role')
+ $(' ').text(i18n.resetAll || 'Reset all roles'),
+ $(' ').text(
+ i18n.resetAllRolesHelp ||
+ 'Clear all menu settings for every role.'
+ )
)
);
- $allBtn.on('click', function (e) {
- e.preventDefault();
- e.stopPropagation();
+ $allBtn.on('click', function (ev) {
+ ev.preventDefault();
+ ev.stopPropagation();
$('.members-am-reset-dropdown').remove();
resetSettings('all');
});
From 3a03855e8139e87b66d78108516bf8c015050b96 Mon Sep 17 00:00:00 2001
From: Omar ElHawary
Date: Fri, 24 Apr 2026 16:23:07 +0300
Subject: [PATCH 46/73] minifying the files
---
css/admin.min.css | 2 +-
js/admin-menus.min.js | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/css/admin.min.css b/css/admin.min.css
index 1b10480..962300f 100644
--- a/css/admin.min.css
+++ b/css/admin.min.css
@@ -1 +1 @@
-#members-cp h2.hndle,#members-cp-side h2.hndle{border-bottom:none !important;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}#members-cp h2.hndle:before,#members-cp-side h2.hndle:before{content:url("data:image/svg+xml,%3Csvg width='15px' aria-hidden='true' focusable='false' data-prefix='fas' data-icon='users-cog' class='svg-inline--fa fa-users-cog fa-w-20' role='img' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 640 512'%3E%3Cpath fill='currentColor' d='M610.5 341.3c2.6-14.1 2.6-28.5 0-42.6l25.8-14.9c3-1.7 4.3-5.2 3.3-8.5-6.7-21.6-18.2-41.2-33.2-57.4-2.3-2.5-6-3.1-9-1.4l-25.8 14.9c-10.9-9.3-23.4-16.5-36.9-21.3v-29.8c0-3.4-2.4-6.4-5.7-7.1-22.3-5-45-4.8-66.2 0-3.3.7-5.7 3.7-5.7 7.1v29.8c-13.5 4.8-26 12-36.9 21.3l-25.8-14.9c-2.9-1.7-6.7-1.1-9 1.4-15 16.2-26.5 35.8-33.2 57.4-1 3.3.4 6.8 3.3 8.5l25.8 14.9c-2.6 14.1-2.6 28.5 0 42.6l-25.8 14.9c-3 1.7-4.3 5.2-3.3 8.5 6.7 21.6 18.2 41.1 33.2 57.4 2.3 2.5 6 3.1 9 1.4l25.8-14.9c10.9 9.3 23.4 16.5 36.9 21.3v29.8c0 3.4 2.4 6.4 5.7 7.1 22.3 5 45 4.8 66.2 0 3.3-.7 5.7-3.7 5.7-7.1v-29.8c13.5-4.8 26-12 36.9-21.3l25.8 14.9c2.9 1.7 6.7 1.1 9-1.4 15-16.2 26.5-35.8 33.2-57.4 1-3.3-.4-6.8-3.3-8.5l-25.8-14.9zM496 368.5c-26.8 0-48.5-21.8-48.5-48.5s21.8-48.5 48.5-48.5 48.5 21.8 48.5 48.5-21.7 48.5-48.5 48.5zM96 224c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm224 32c1.9 0 3.7-.5 5.6-.6 8.3-21.7 20.5-42.1 36.3-59.2 7.4-8 17.9-12.6 28.9-12.6 6.9 0 13.7 1.8 19.6 5.3l7.9 4.6c.8-.5 1.6-.9 2.4-1.4 7-14.6 11.2-30.8 11.2-48 0-61.9-50.1-112-112-112S208 82.1 208 144c0 61.9 50.1 112 112 112zm105.2 194.5c-2.3-1.2-4.6-2.6-6.8-3.9-8.2 4.8-15.3 9.8-27.5 9.8-10.9 0-21.4-4.6-28.9-12.6-18.3-19.8-32.3-43.9-40.2-69.6-10.7-34.5 24.9-49.7 25.8-50.3-.1-2.6-.1-5.2 0-7.8l-7.9-4.6c-3.8-2.2-7-5-9.8-8.1-3.3.2-6.5.6-9.8.6-24.6 0-47.6-6-68.5-16h-8.3C179.6 288 128 339.6 128 403.2V432c0 26.5 21.5 48 48 48h255.4c-3.7-6-6.2-12.8-6.2-20.3v-9.2zM173.1 274.6C161.5 263.1 145.6 256 128 256H64c-35.3 0-64 28.7-64 64v32c0 17.7 14.3 32 32 32h65.9c6.3-47.4 34.9-87.3 75.2-109.4z'%3E%3C/path%3E%3C/svg%3E");margin-right:5px}#members-cp-side .postbox-header{border-bottom:none !important}#members-cp-side .handle-actions .handle-order-higher,#members-cp-side .handle-actions .handle-order-lower{display:none}#members-cp-side .handle-actions .handlediv{position:absolute;right:5px}.members-upgrade-header{text-align:center;padding:5px}.members-upgrade-header a{color:#f59431}.memberpress-paid-memberships{background-color:#f5f5f5;padding:50px 10px;text-align:center}.memberpress-paid-memberships a{background-color:#0e4598;display:inline-block;padding:10px 20px;border-radius:300px;color:#fff;text-decoration:none;margin-top:20px}#members-cp-side .members-tabs{position:relative}#members-cp-side .members-tab-nav{background-color:transparent;margin-bottom:20px;border-right:none !important}#members-cp-side .members-tab-nav .members-tab-title{width:33.333%;height:50px;border-right:none !important}#members-cp-side .members-tab-nav .members-tab-title a{border:0}#members-cp-side .members-tab-content h3{font-weight:bold;font-size:15px;margin-top:0;color:#000;margin-bottom:10px}#members-cp-side .members-tab-content .memberpress-paid-memberships{text-align:left;padding:20px}#members-cp-side .members-tab-content .memberpress-paid-memberships a{display:block;text-align:center}#members-cp-side .members-tabs .members-tab-nav li a,#members-cp-side .members-tabs .members-tab-nav li[aria-selected="false"] a i{color:#555}#members-cp-side .members-tabs .members-tab-nav li a svg,#members-cp-side .members-tabs .members-tab-nav li[aria-selected="false"] a svg{fill:#555}#members-cp-side .members-tabs .members-tab-nav li[aria-selected="true"] a{background-color:transparent;border-bottom:2px solid #3582ae}#members-cp-side .members-tabs .members-tab-nav li[aria-selected="true"] a i{color:#3582ae}#members-cp-side .members-tabs .members-tab-nav li[aria-selected="true"] a svg{fill:#3582ae}.members-tab-title svg,.members-tab-title[aria-selected="false"] svg{fill:#0073aa}.members-tab-title[aria-selected="true"] svg{fill:#555}#wpcontent #members-admin-header{margin-left:-20px;padding:0 28px 0 22px;background-color:#0b1220;background-image:radial-gradient(circle at 12% 35%,rgba(14,69,152,0.45),transparent 55%),radial-gradient(circle at 90% 85%,rgba(245,148,49,0.14),transparent 60%);background-repeat:no-repeat;min-height:56px;position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}#wpcontent #members-admin-header img.members-logo{height:42px;display:block}#wpcontent #members-admin-header .members-by-mp{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:12px;margin-left:auto;text-decoration:none;-webkit-box-shadow:none;box-shadow:none;-webkit-transition:opacity .15s ease;transition:opacity .15s ease}#wpcontent #members-admin-header .members-by-mp:hover,#wpcontent #members-admin-header .members-by-mp:focus{opacity:.75;text-decoration:none;-webkit-box-shadow:none;box-shadow:none}#wpcontent #members-admin-header .members-by-label{color:#94a3b8;font-size:12px;font-weight:500}#wpcontent #members-admin-header img.members-mp-logo{height:18px;display:block}#wpcontent #members-admin-header #membersAdminHeaderNotifications{position:relative;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:36px;height:36px;padding:0;margin:0 0 0 18px;background:rgba(255,255,255,0.06);border:1px solid rgba(255,255,255,0.12);border-radius:8px;color:#fff;cursor:pointer;-webkit-box-shadow:none;box-shadow:none;-webkit-transition:background .15s ease,border-color .15s ease;transition:background .15s ease,border-color .15s ease;line-height:1;vertical-align:middle;min-height:0;text-decoration:none}#wpcontent #members-admin-header #membersAdminHeaderNotifications:hover,#wpcontent #members-admin-header #membersAdminHeaderNotifications:focus{background:rgba(255,255,255,0.12);border-color:rgba(255,255,255,0.24);color:#fff;-webkit-box-shadow:none;box-shadow:none;outline:0}#wpcontent #members-admin-header #membersAdminHeaderNotifications svg{width:16px;height:auto;display:block}#wpcontent #members-admin-header #membersAdminHeaderNotifications svg path{fill:#e2e8f0}#wpcontent #members-admin-header #membersAdminHeaderNotifications .members-notifications-count{position:absolute;top:-4px;right:-4px;min-width:16px;height:16px;padding:0 4px;border-radius:999px;background:#f59431;color:#0b1220;font-size:10px;font-weight:700;line-height:16px;text-align:center;border:1.5px solid #0b1220;-webkit-box-sizing:content-box;box-sizing:content-box}.members-upgrade-header #close-members-upgrade-header{position:absolute;right:20px;top:3px}.members-upgrade-header #close-members-upgrade-header:hover{cursor:pointer}.memberpress-welcome-panel.welcome-panel{margin-top:20px;padding:20px 28px;background:#fff;border-radius:10px;min-height:0}.memberpress-welcome-panel.welcome-panel .welcome-panel-content{min-height:0;height:auto}.members-about{--ink:#0f172a;--ink-soft:#334155;--ink-muted:#64748b;--mp-blue:#0e4598;--mp-teal:#3582ae;--mp-orange:#f59431;--rule:#e5e7eb;--paper:#fbfaf7;--paper-soft:#f3efe6;--paper-line:#e8e3d5;--display-font:"Inter",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;--sans-font:"Inter",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif}body.members_page_members-about #wpbody-content,body.toplevel_page_members-about #wpbody-content,body.admin_page_members-about #wpbody-content{background:var(--paper)}.members-about.wrap{max-width:1120px;margin:0 auto;padding:48px 24px 80px;color:var(--ink);font-family:var(--sans-font)}.members-about__hero{display:grid;grid-template-columns:minmax(0,1fr) 200px;grid-template-areas:"head mark" "body mark";gap:32px 56px;-webkit-box-align:start;-ms-flex-align:start;align-items:start;padding-bottom:64px;border-bottom:1px solid var(--paper-line)}.members-about__hero-head{grid-area:head}.members-about__body{grid-area:body}.members-about__mark{grid-area:mark;align-self:start}.members-about__eyebrow{display:inline-block;font-family:var(--sans-font);font-size:12px;font-weight:600;letter-spacing:.18em;text-transform:uppercase;color:var(--ink-muted);padding-bottom:18px}.members-about__title{font-family:var(--display-font);font-weight:900;font-size:clamp(40px,5.5vw,64px);line-height:1;letter-spacing:-0.035em;color:var(--ink);margin:0}.members-about__title em{font-style:normal;font-weight:900;color:var(--mp-blue)}.members-about__title-dot{color:var(--mp-blue);font-style:normal;font-weight:900}.members-about__body{max-width:60ch;font-size:15.5px;line-height:1.62;color:var(--ink-soft)}.members-about__body p{margin:0 0 14px}.members-about__body p:last-child{margin-bottom:0}.members-about__lead{font-family:var(--sans-font);font-weight:500;font-size:17px;line-height:1.5;color:var(--ink);margin-bottom:24px !important;padding-left:18px;border-left:2px solid var(--mp-blue)}.members-about__body a,.members-about__lead a{color:var(--mp-blue);text-decoration:none;background-image:-webkit-gradient(linear,left top,left bottom,from(currentColor),to(currentColor));background-image:linear-gradient(currentColor,currentColor);background-size:100% 1px;background-position:0 100%;background-repeat:no-repeat;padding-bottom:1px;-webkit-transition:color .2s ease,background-size .2s ease;transition:color .2s ease,background-size .2s ease}.members-about__body a:hover,.members-about__lead a:hover{color:var(--mp-orange)}.members-about__body em,.members-about__lead em{font-style:normal;font-weight:700;color:var(--mp-blue)}.members-about__mark{padding:24px;background:#fff;border:1px solid var(--paper-line);border-radius:4px;-webkit-box-shadow:0 1px 2px rgba(15,23,42,0.03);box-shadow:0 1px 2px rgba(15,23,42,0.03);-webkit-transition:-webkit-transform .25s ease,-webkit-box-shadow .25s ease;transition:-webkit-transform .25s ease,-webkit-box-shadow .25s ease;transition:transform .25s ease,box-shadow .25s ease;transition:transform .25s ease,box-shadow .25s ease,-webkit-transform .25s ease,-webkit-box-shadow .25s ease}.members-about__mark:hover{-webkit-transform:translateY(-2px);transform:translateY(-2px);-webkit-box-shadow:0 8px 20px rgba(15,23,42,0.08);box-shadow:0 8px 20px rgba(15,23,42,0.08)}.members-about__mark a{display:block;-webkit-box-shadow:none !important;box-shadow:none !important;text-decoration:none}.members-about__mark img{display:block;width:100%;height:auto;max-width:160px;margin:0 auto}.members-about__products{padding-top:56px}.members-about__products-head{margin-bottom:28px;text-align:center}.members-about__products-head h3{font-family:var(--display-font);font-weight:700;font-size:15px;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-muted);margin:0}.members-about__grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px}.members-about__card{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;padding:24px;background:#fff;border:1px solid var(--paper-line);border-radius:6px;-webkit-transition:border-color .25s ease,-webkit-transform .25s ease,-webkit-box-shadow .25s ease;transition:border-color .25s ease,-webkit-transform .25s ease,-webkit-box-shadow .25s ease;transition:transform .25s ease,box-shadow .25s ease,border-color .25s ease;transition:transform .25s ease,box-shadow .25s ease,border-color .25s ease,-webkit-transform .25s ease,-webkit-box-shadow .25s ease}.members-about__card:hover{-webkit-transform:translateY(-3px);transform:translateY(-3px);-webkit-box-shadow:0 12px 28px rgba(15,23,42,0.08);box-shadow:0 12px 28px rgba(15,23,42,0.08);border-color:rgba(14,69,152,0.2)}.members-about__card-head{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:14px;margin-bottom:14px}.members-about__card-icon{-webkit-box-flex:0;-ms-flex:0 0 44px;flex:0 0 44px;width:44px;height:44px;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;background:var(--paper-soft);border-radius:10px;overflow:hidden}.members-about__card-icon img{display:block;max-width:32px;max-height:32px;width:auto;height:auto}.members-about__card-title{margin:0;font-family:var(--display-font);font-weight:700;font-size:17px;line-height:1.2;letter-spacing:-0.01em;color:var(--ink)}.members-about__card-title a{color:inherit;text-decoration:none;-webkit-box-shadow:none;box-shadow:none}.members-about__card-title a:hover{color:var(--mp-blue)}.members-about__card-desc{-webkit-box-flex:1;-ms-flex:1;flex:1;margin:0 0 24px;font-size:14px;line-height:1.55;color:var(--ink-soft)}.members-about__card-foot{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;gap:16px;padding-top:16px;border-top:1px solid var(--paper-line)}.members-about__status{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;font-size:12px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-muted)}.members-about__status::before{content:"";width:7px;height:7px;border-radius:50%;background:currentColor}.members-about__status.is-active{color:#10b981}.members-about__status.is-inactive{color:var(--mp-orange)}.members-about__status.is-missing{color:var(--ink-muted)}.members-about__cta{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;padding:8px 14px;font-size:13px;font-weight:600;letter-spacing:.01em;border-radius:4px;text-decoration:none;border:1px solid transparent;-webkit-transition:background .2s ease,border-color .2s ease,color .2s ease,-webkit-transform .15s ease;transition:background .2s ease,border-color .2s ease,color .2s ease,-webkit-transform .15s ease;transition:background .2s ease,border-color .2s ease,color .2s ease,transform .15s ease;transition:background .2s ease,border-color .2s ease,color .2s ease,transform .15s ease,-webkit-transform .15s ease;-webkit-box-shadow:none;box-shadow:none}.members-about__cta:focus,.members-about__cta:focus-visible{outline:2px solid var(--mp-blue);outline-offset:2px;-webkit-box-shadow:none;box-shadow:none}.members-about__cta.is-primary{background:var(--mp-blue);color:#fff}.members-about__cta.is-primary:hover{background:#093374;color:#fff;-webkit-transform:translateY(-1px);transform:translateY(-1px)}.members-about__cta.is-secondary{background:transparent;color:var(--ink);border-color:var(--rule)}.members-about__cta.is-secondary:hover{border-color:var(--ink);background:#fff;color:var(--ink)}.members-about__cta svg{-webkit-transition:-webkit-transform .2s ease;transition:-webkit-transform .2s ease;transition:transform .2s ease;transition:transform .2s ease,-webkit-transform .2s ease}.members-about__cta:hover svg{-webkit-transform:translate(1px,-1px);transform:translate(1px,-1px)}@media(max-width:900px){.members-about__hero{grid-template-columns:1fr;grid-template-areas:"head" "body" "mark";gap:24px}.members-about__mark{max-width:160px}.members-about__grid{grid-template-columns:1fr}}.memberpress-welcome-panel.welcome-panel:before{background:0}.memberpress-welcome-panel.welcome-panel .about-description{margin:20px 0}.memberpress-welcome-panel.welcome-panel-content{margin:0}.memberpress-welcome-panel.welcome-panel-content .mp-logo-wrap>a{display:block}@media screen and (min-width:870px){.members_page_members-settings .members-short-p{max-width:612px;margin-left:auto;margin-right:auto}.members_page_members-settings .welcome-panel-content{text-align:center}}.members_page_members-settings .welcome-panel .button.button-hero{margin-left:auto;margin-right:auto}.members_page_members-settings .members-svg-wrap{display:inline-block;margin:0 auto 20px}@media screen and (max-width:870px){.members_page_members-settings .welcome-panel{padding:20px}.members_page_members-settings .members-svg-wrap{float:left;margin-right:28px}.admin_page_members-settings.rtl .members-svg-wrap{float:right;margin-right:0;margin-left:28px}}.members_page_members-settings .members-svg-link{display:table-cell;text-align:center;width:128px;height:128px;background:#363b3f;color:#fff;padding:24px 16px 16px;border-radius:50%;-webkit-box-sizing:border-box;box-sizing:border-box;border:4px solid #fff;-webkit-box-shadow:0 0 0 4px #363b3f;box-shadow:0 0 0 4px #363b3f}.members_page_members-settings .members-svg-link svg{max-width:84px;max-height:64px;width:auto;height:auto}.members-addons{display:grid;grid-template-columns:1fr 1fr;grid-row-gap:20px;grid-column-gap:20px}.members-addons .plugin-card{margin:0}.members-addons .plugin-card-top{width:100%}.members-addon{width:100%;position:relative;float:none;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.members-addon .desc{margin-bottom:80px}.addon-activate{text-align:center;border:1px solid #ddd;border-radius:3px;padding:5px 10px 10px;display:inline-block;width:100px;position:absolute;right:20px;bottom:20px}.activate-toggle:hover{cursor:pointer}.activate-toggle svg{max-width:20px;position:relative;top:5px}.activate-toggle svg{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.activate-toggle svg.active{-webkit-transform:rotate(0);transform:rotate(0)}.activate-toggle svg path{fill:#ccc}.activate-toggle svg.active path{fill:#8cbd5a}.activate-toggle.processing{cursor:not-allowed;pointer-events:none;opacity:.5}.activate-toggle .action-label{display:inline-block;width:50px;text-align:left}.mepr_dummy_txns{-webkit-filter:blur(3px);filter:blur(3px);position:absolute;top:0;left:0;width:100%;z-index:5;pointer-events:none}.mepr_dummy_txns::after{background-color:rgba(0,0,0,.2);position:absolute;top:0;left:0;width:100%;height:100%;z-index:6}.mepr-upgrade-table{position:relative}.mepr-upgrade-table .mepr-upgrade{position:relative;top:100px;z-index:10;background:rgba(0,0,0,.2);width:100%;height:100%;max-width:600px;margin:0 auto;-webkit-box-shadow:0 0 30px #ccc;box-shadow:0 0 30px #ccc}.mepr-upgrade-content{background-color:#fff;padding:20px;text-align:center}.mepr-upgrade-content h2{font-size:24px}.mepr-upgrade-content h4{font-size:18px}.mepr-upgrade-content .features{display:grid;grid-template-columns:1fr 1fr;grid-column-gap:30px;grid-row-gap:10px;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;text-align:left;padding:10px}.features li:before{content:"\f147";font-family:dashicons;color:green;font-size:20px;position:relative;top:4px;margin-right:10px}.mepr-upgrade-cta{text-align:center;background-color:#f2f2f2;padding:20px}.mepr-upgrade-cta .mepr-cta-button{display:block;max-width:300px;margin:0 auto 20px;background-color:#fd9c27;color:#fff;padding:15px;font-size:18px;font-weight:bold;text-decoration:none;border-radius:300px}.members-plugin-card.plugin-card:nth-child(even){margin-right:inherit}.members-plugin-card.plugin-card:nth-child(odd){clear:none;margin-left:inherit}.members-plugin-card.plugin-card .plugin-card-top{min-height:0;padding:30px 20px}.members-plugin-card.plugin-card .plugin-icon{top:30px}.members-plugin-card.plugin-card .plugin-card-bottom .column-status{font-weight:bold}.members-plugin-card.plugin-card .plugin-card-bottom .column-status .active{color:#8cbd5a}.members-plugin-card.plugin-card .plugin-card-bottom .column-status .inactive{color:red}.members-plugin-card.plugin-card .plugin-icon{width:64px;height:auto}.plugin-icon-small{width:32px;height:auto}.members-plugin-card.plugin-card .name,.members-plugin-card.plugin-card .desc{margin-right:0;margin-left:84px}.members-addons .plugin-card .name,.members-addons .plugin-card .desc p{margin-right:0}@media screen and (max-width:1100px){.members-addons{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}}@media screen and (max-width:600px){.members_page_members-settings .members-svg-link{width:64px;height:64px}.members_page_members-settings .members-svg-link svg{position:absolute;top:14px;left:15px;max-width:30px;max-height:30px}.members_page_members-settings .plugin-card-members-edd-integration .members-svg-link svg,.members_page_members-settings .plugin-card-members-acf-integration .members-svg-link svg,.members_page_members-settings .plugin-card-members-givewp-integration .members-svg-link svg,.members_page_members-settings .plugin-card-members-meta-box-integration .members-svg-link svg,.members_page_members-settings .plugin-card-members-woocommerce-integration .members-svg-link svg{top:10px;left:8px;max-width:40px;max-height:40px}.members_page_members-settings .plugin-card-members-block-permissions .members-svg-link svg,.members_page_members-settings .plugin-card-members-role-hierarchy .members-svg-link svg{left:14px}.members-addons .plugin-card .desc>p,.members-addons .plugin-card .name{margin-left:84px}}.memberpress-about .welcome-panel-column-container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:40px;padding:0;margin:0}.memberpress-about .mp-desc p{font-size:13px;line-height:1.6;color:#334155;margin:0 0 12px}.memberpress-about .mp-desc p:first-child{font-size:15px;font-weight:600;color:#0f172a;margin-top:0;margin-bottom:14px}.memberpress-about .mp-desc p:last-child{margin-bottom:0}.memberpress-about .mp-logo-wrap{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.memberpress-about .mp-logo{display:block;max-width:220px;height:auto;margin:0}.members-about-addons{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-column-gap:20px}.members-about-addons .members-plugin-card{margin:0;width:100%}.members-about-addons .members-plugin-card .plugin-icon{position:static;width:auto;height:28px;max-width:40px;-o-object-fit:contain;object-fit:contain;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;display:block}.members-about-addons .members-plugin-card .name,.members-about-addons .members-plugin-card .desc{margin-left:0}.members-about-addons .members-plugin-card .plugin-card-top{padding:20px}.members-about-addons .members-plugin-card .name h3{margin:0 0 10px;min-height:0;height:auto;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:10px;line-height:1.2}.members-about-addons .members-plugin-card .name h3 a{text-decoration:none;line-height:1.2}.members-about-addons .members-plugin-card .plugin-card-bottom{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}@media only screen and (max-width:1099px){.members-about-addons{grid-template-columns:1fr;grid-row-gap:20px}}@media screen and (min-width:1100px) and (max-width:1600px){.members-about-addons .members-plugin-card{float:none;width:auto;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.members-plugin-card.plugin-card .desc{margin-left:0;margin-top:50px}.members-plugin-card.plugin-card .desc p{margin-left:0;margin-right:0}.members-plugin-card.plugin-card .plugin-card-bottom .column-status{float:none}.members-plugin-card.plugin-card .plugin-card-bottom .column-updated{float:none;width:auto}}@media screen and (max-width:1200px){.welcome-panel .welcome-panel-column-container{-webkit-box-orient:vertical;-webkit-box-direction:reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse;gap:0;padding:0}.memberpress-about .mp-logo{margin:0 0 20px}}.members-plugin-card.plugin-card .desc p{margin-left:0;margin-right:0}@media only screen and (min-width:783px){.members_page_roles .column-users,.members_page_roles .column-granted_caps,.members_page_roles .column-denied_caps{width:100px;text-align:center}}.members-title-div #titlewrap input{padding:0 8px;font-size:1.7em;line-height:normal;height:1.7em;width:100%;outline:0;margin:0 0 3px;background-color:#fff}.members-title-div input[name="role"]{font-size:13px;height:22px;margin:0;width:16em}#tabcapsdiv{margin-top:1em}#tabcapsdiv>.hndle{padding:10px;border-bottom:1px solid #eee}#tabcapsdiv .inside,#members-cp .inside{margin:0;padding:0}.members-cap-tabs,.members-tabs{overflow:hidden;background:#fff;background:-webkit-gradient(linear,left top,right top,from(#fafafa),color-stop(20%,#fafafa),color-stop(20%,#fff),to(#fff));background:linear-gradient(90deg,#fafafa 0,#fafafa 20%,#fff 20%,#fff 100%)}@media only screen and (max-width:782px){.members-cap-tabs,.members-tabs{background:linear-gradient(90deg,#fafafa 0,#fafafa 48px,#fff 48px,#fff 100%)}}.members-cap-tabs .members-tab-nav,.members-tabs .members-tab-nav{position:relative;float:left;list-style:none;width:20%;line-height:1em;margin:0 0 -1px 0;padding:0;background-color:#fafafa;border-right:1px solid #eee;-webkit-box-sizing:border-box;box-sizing:border-box}.members-cap-tabs .members-tab-nav li,.members-tabs .members-tab-nav li{display:block;position:relative;margin:0;padding:0;line-height:20px}.members-cap-tabs .members-tab-nav li a,.members-tabs .members-tab-nav li a{display:block;margin:0;padding:10px;line-height:20px !important;text-decoration:none;border-bottom:1px solid #eee;-webkit-box-shadow:none;box-shadow:none}.members-cap-tabs .members-tab-nav li a .dashicons,.members-tabs .members-tab-nav li a .dashicons{line-height:20px;margin-right:3px}.members-cap-tabs .members-tab-nav li[aria-selected="true"] a,.members-tabs .members-tab-nav li[aria-selected="true"] a{position:relative;font-weight:bold;color:#555;background-color:#e0e0e0}@media only screen and (max-width:782px){.members-cap-tabs .members-tab-nav,.members-tabs .members-tab-nav{width:48px}.members-cap-tabs .members-tab-nav li a .dashicons,.members-tabs .members-tab-nav li a .dashicons{width:24px;height:24px;font-size:24px;line-height:24px}.members-tab-nav li .dashicons::before,.members-tab-nav li .dashicons::before{width:24px;height:24px}.members-tab-nav li .label{overflow:hidden;position:absolute;top:-1000em;left:-1000em;width:1px;height:1px}}.members-cap-tabs .members-tab-wrap,.members-tabs .members-tab-wrap{float:left;width:80%;margin-left:-1px}@media only screen and (max-width:782px){.members-cap-tabs .members-tab-wrap,.members-tabs .members-tab-wrap{width:calc(100% - 48px)}}#members-cp .members-tab-content{padding:10px;border-left:1px solid #e5e5e5}.members-roles-select th,.members-roles-select td{width:190px;overflow:hidden}.members-roles-select .check-all-th{text-align:center}.members-roles-select .check-all-th label{padding-left:5px}@media only screen and (min-width:850px){#side-sortables .members-tabs{background:#fff}#side-sortables .members-tabs .members-tab-wrap{width:100%}#side-sortables .members-tabs .members-tab-nav{display:table;width:100%}#side-sortables .members-tabs .members-tab-nav li{display:table-cell;text-align:center;border-right:1px solid #eee}#side-sortables .members-tabs .members-tab-nav li:last-of-type{border-right:0}#side-sortables .members-tabs .members-tab-nav li a{padding:10px 0}#side-sortables .members-tabs .members-tab-nav .dashicons{width:24px;height:24px;font-size:24px;line-height:24px}#side-sortables .members-tabs .members-tab-nav .dashicons::before{width:24px;height:24px}#side-sortables .members-tabs .members-tab-nav .label{overflow:hidden;position:absolute;top:-1000em;left:-1000em;width:1px;height:1px}}.members-tabs .members-tabs-label{display:block !important;font-weight:bold;display:inline-block;margin-bottom:4px}.members-tabs .butterbean-control-checkbox .members-tabs-label{display:inline !important}.members-tabs .members-tabs-description{display:block;font-style:italic;margin-top:4px}.members-tabs .members-tabs-label+.members-tabs-description{margin-top:0;margin-bottom:4px}#tabcapsdiv table{border-right:0;border-top:0;border-bottom:0}#tabcapsdiv table td,#tabcapsdiv table th{padding:10px;padding-bottom:10px;border-bottom:1px solid #eee;font-size:13px;line-height:20px}#tabcapsdiv table td{padding:9px}#tabcapsdiv tbody tr:last-of-type td{border-bottom:0}#tabcapsdiv tfoot th{border-color:#eee}@media only screen and (max-width:782px){#tabcapsdiv table td,#tabcapsdiv table th{line-height:24px}}.members-roles-select .column-grant,.members-roles-select .column-deny{width:70px !important;text-align:left;display:table-cell !important;clear:none !important}.members-roles-select thead th,.members-roles-select tfoot th{padding:9px !important}.members-roles-select .column-grant input,.members-roles-select .column-deny input{margin:0 5px 0 0;vertical-align:middle}.members-roles-select tbody tr:nth-child(even){background:#f2f2f2}.members-cap-tabs button{display:inline;margin:-4px;line-height:inherit;padding:4px 8px;border:1px solid transparent;background:transparent;border-radius:0;outline:0;-webkit-transition:all .25s ease-out;transition:all .25s ease-out}.members-cap-tabs button:hover,.members-cap-tabs button:focus{border-color:#eee;background:#fafafa;cursor:pointer}.members-cap-tabs button:active{color:#0073aa;border-color:#0073aa}.members-cap-tabs button+.dashicons{display:none;margin-top:1px;margin-bottom:-1px;line-height:inherit}.members-cap-tabs button:hover+.dashicons,.members-cap-tabs button:focus+.dashicons{display:inline-block}.members-tab-content .members-highlight{background-color:rgba(0,115,170,0.05)}.members-tab-content tbody{-webkit-transition:all 2s ease-in-out;transition:all 2s ease-in-out}.members-cp-role-list-wrap{overflow:auto;min-height:42px;max-height:200px;padding:0 .9em;border:solid 1px #dfdfdf;background-color:#fdfdfd}#wpbody-content{padding-bottom:200px}.members-footer-promotion{text-align:center;font-weight:400;font-size:13px;line-height:16px;color:#787c82;padding:20px 0 30px 0;margin-bottom:20px}.members-footer-promotion p{font-weight:600}.members-footer-promotion-links,.members-footer-promotion-social{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.members-footer-promotion-links{margin:9px 0 0}.members-footer-promotion-links span{color:#c3c4c7;padding:0 7px}.members-footer-promotion-social{margin:10px 0 0 0;gap:10px}.members-footer-promotion-social li{margin-bottom:0}.members-footer-promotion-social a{display:block;height:16px}.members_page_members-settings.rtl{.addon-activate{left:20px;right:unset}.members-addons .plugin-card{.name,.desc p{margin-left:0;margin-right:148px}}}.button.button-warning{background:#dc3232;border-color:#dc3232;color:#fff}.button.button-warning:hover,.button.button-warning:focus{background:#c92424;border-color:#c92424;color:#fff}.members-reset-spinner{float:none;margin-top:0;vertical-align:middle}.members-admin-menus-wrap{max-width:1400px;--members-am-accent-use:var(--members-am-accent,var(--wp-admin-theme-color,#2271b1));--members-am-surface-use:var(--members-am-surface,color-mix(in srgb,var(--members-am-base,#1d2327) 88%,#fff 12%));--members-am-border-on-base-fallback:color-mix(in srgb,var(--members-am-base,#1d2327) 62%,#fff 38%);--members-am-chrome-bg:var(--wp-components-color-gray-100,#f6f7f7);--members-am-chrome-border:var(--wp-components-color-gray-400,#c3c4c7);--members-am-muted:var(--wp-components-color-gray-600,#646970)}.members-am-notices{margin:0 0 12px}.members-am-notices .notice{margin:0 0 8px}.members-admin-menus-toolbar{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;gap:0;margin-bottom:16px;border:1px solid var(--members-am-chrome-border,#c3c4c7);border-radius:2px;background:var(--wp-components-color-background,#fff);overflow:visible}.members-am-toolbar-row{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px}.members-am-toolbar-row--primary{padding:10px 12px;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;row-gap:10px}.members-am-toolbar-group{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px}.members-am-toolbar-group--document{position:relative;z-index:5;padding-right:12px;border-right:1px solid var(--members-am-chrome-border,#c3c4c7)}.members-am-toolbar-row--primary .members-am-toolbar-primary-user{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px;margin-left:8px;-webkit-box-flex:0;-ms-flex:0 1 auto;flex:0 1 auto;min-width:0}.members-am-toolbar-row--primary .members-am-toolbar-primary-user #members-am-user-search.members-am-user-search-input{width:168px;max-width:100%;min-width:0}.members-am-toolbar-group--view{margin-left:auto;-ms-flex-wrap:nowrap;flex-wrap:nowrap}.members-am-toolbar-extra{background:var(--members-am-chrome-bg,#f6f7f7);border-top:1px solid var(--members-am-chrome-border,#c3c4c7);padding:10px 12px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:10px}.members-am-toolbar-extra[hidden]{display:none !important}.members-am-toolbar-row--extra-tools{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-wrap:wrap;flex-wrap:wrap;row-gap:10px}.members-am-toolbar-row--extra-tools .members-am-copy-wrap{margin-left:4px;padding-left:12px;border-left:1px solid var(--members-am-chrome-border,#c3c4c7)}.members-am-toolbar-row--extra-tools .members-am-toolbar-group--io{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;margin-left:8px;padding-left:12px;border-left:1px solid var(--members-am-chrome-border,#c3c4c7)}.members-am-more-tools,.members-am-more-tools:hover,.members-am-more-tools:focus,.members-am-more-tools:focus-visible,.members-am-more-tools:active{text-decoration:none !important}.members-am-more-tools{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:4px;white-space:nowrap;padding:2px 2px 2px 4px;vertical-align:middle;line-height:1.4}.members-am-more-tools .members-am-more-tools-text,.members-am-more-tools:hover .members-am-more-tools-text,.members-am-more-tools:focus .members-am-more-tools-text,.members-am-more-tools:focus-visible .members-am-more-tools-text,.members-am-more-tools:active .members-am-more-tools-text,.members-am-more-tools .members-am-more-tools-chevron,.members-am-more-tools:hover .members-am-more-tools-chevron,.members-am-more-tools:focus .members-am-more-tools-chevron,.members-am-more-tools:focus-visible .members-am-more-tools-chevron,.members-am-more-tools:active .members-am-more-tools-chevron,.members-am-more-tools .members-am-more-tools-chevron-svg,.members-am-more-tools:hover .members-am-more-tools-chevron-svg,.members-am-more-tools:focus .members-am-more-tools-chevron-svg,.members-am-more-tools:focus-visible .members-am-more-tools-chevron-svg,.members-am-more-tools:active .members-am-more-tools-chevron-svg{text-decoration:none !important}.members-am-more-tools .members-am-more-tools-text{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;line-height:1.4}.members-am-more-tools .members-am-more-tools-chevron{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-ms-flex-negative:0;flex-shrink:0;line-height:0;opacity:.88}.members-am-more-tools .members-am-more-tools-chevron-svg{display:block;overflow:visible;-webkit-transition:-webkit-transform .15s ease;transition:-webkit-transform .15s ease;transition:transform .15s ease;transition:transform .15s ease,-webkit-transform .15s ease;-webkit-transform-origin:50% 50%;transform-origin:50% 50%;shape-rendering:geometricPrecision}.members-am-more-tools .members-am-more-tools-chevron-svg polygon{stroke:none}.members-am-more-tools.is-open .members-am-more-tools-chevron-svg{-webkit-transform:rotate(180deg);transform:rotate(180deg)}@media(prefers-reduced-motion:reduce){.members-am-more-tools .members-am-more-tools-chevron-svg{-webkit-transition:none;transition:none}}@media screen and (max-width:782px){.members-am-toolbar-group--document{border-right:0;padding-right:0;border-bottom:1px solid var(--members-am-chrome-border,#c3c4c7);padding-bottom:10px;width:100%}.members-am-toolbar-group--view{margin-left:0;width:100%;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.members-am-toolbar-row--primary .members-am-toolbar-primary-user{margin-left:0;padding-left:0;border-left:0;padding-top:8px;border-top:1px solid var(--members-am-chrome-border,#c3c4c7);width:100%;max-width:none}.members-am-toolbar-row--primary .members-am-toolbar-primary-user #members-am-user-search.members-am-user-search-input{width:100%;max-width:100%}.members-am-toolbar-row--extra-tools .members-am-admin-editable{width:100%}.members-am-toolbar-row--extra-tools .members-am-copy-wrap{margin-left:0;padding-left:0;border-left:0;padding-top:8px;border-top:1px solid var(--members-am-chrome-border,#c3c4c7);width:100%}.members-am-toolbar-row--extra-tools .members-am-toolbar-group--io{margin-left:0;padding-left:0;border-left:0;padding-top:8px;border-top:1px solid var(--members-am-chrome-border,#c3c4c7);width:100%}}.members-am-toolbar-loading{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;margin-left:4px;color:var(--members-am-muted,#646970);font-size:13px;line-height:1}.members-am-toolbar-loading .spinner{float:none;margin:0}.members-am-toolbar-loading[hidden]{display:none !important}.members-am-copy-wrap label{margin-right:8px}.members-am-chips{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:8px;margin-bottom:12px}.members-am-chip{border-radius:999px;padding:4px 12px;border:1px solid var(--members-am-chrome-border,#c3c4c7);background:var(--members-am-chrome-bg,#f6f7f7);cursor:pointer}.members-am-chip.is-active{background:var(--members-am-accent-use);border-color:var(--members-am-accent-use);color:var(--wp-components-color-accent-inverted,#fff)}.members-am-carousel-wrap{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;gap:8px;margin-bottom:8px}.members-am-carousel-prev,.members-am-carousel-next{-ms-flex-item-align:center;align-self:center;width:36px;height:36px;border-radius:50%;border:1px solid var(--members-am-chrome-border,#c3c4c7);background:var(--wp-components-color-background,#fff);cursor:pointer}.members-am-columns{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-ms-flex:1;flex:1;gap:12px;min-height:320px;overflow:hidden}.members-am-column{-webkit-box-flex:1;-ms-flex:1;flex:1;min-width:0;background:var(--members-am-base,#1d2327);border-radius:4px;color:var(--members-am-fg-on-base,#f0f0f1);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.members-am-user-column{border:2px dashed var(--wp-components-color-gray-700,#8c8f94)}.members-am-sidebar-head{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:8px 10px;background:var(--members-am-surface-use);border-radius:4px 4px 0 0;font-weight:600;font-size:12px;text-transform:uppercase;letter-spacing:.04em;color:var(--members-am-fg-on-surface,var(--members-am-fg-on-base,#f0f0f1))}.members-am-col-filter{padding:6px 8px 8px;border-bottom:1px solid var(--members-am-border-on-base,var(--members-am-border-on-base-fallback));-ms-flex-negative:0;flex-shrink:0}.members-am-col-filter-input{width:100%;max-width:100%;-webkit-box-sizing:border-box;box-sizing:border-box;font-size:12px;line-height:1.4;padding:4px 8px;border-radius:2px;border:1px solid var(--members-am-border-on-base,var(--members-am-border-on-base-fallback));background:var(--members-am-base,#1d2327);color:var(--members-am-fg-on-base,#f0f0f1)}.members-am-col-filter-input::-webkit-input-placeholder{color:var(--members-am-fg-muted-on-base,var(--wp-components-color-gray-700,#8c8f94));opacity:1}.members-am-col-filter-input::-moz-placeholder{color:var(--members-am-fg-muted-on-base,var(--wp-components-color-gray-700,#8c8f94));opacity:1}.members-am-col-filter-input:-ms-input-placeholder{color:var(--members-am-fg-muted-on-base,var(--wp-components-color-gray-700,#8c8f94));opacity:1}.members-am-col-filter-input::-ms-input-placeholder{color:var(--members-am-fg-muted-on-base,var(--wp-components-color-gray-700,#8c8f94));opacity:1}.members-am-col-filter-input::placeholder{color:var(--members-am-fg-muted-on-base,var(--wp-components-color-gray-700,#8c8f94));opacity:1}.members-am-col-filter-input:focus{border-color:var(--members-am-accent-use);outline:1px solid transparent;-webkit-box-shadow:0 0 0 var(--wp-admin-border-width-focus,1px) var(--members-am-accent-use);box-shadow:0 0 0 var(--wp-admin-border-width-focus,1px) var(--members-am-accent-use)}.members-am-col-bulk{padding:0 8px 8px;border-bottom:1px solid var(--members-am-border-on-base,var(--members-am-border-on-base-fallback));-ms-flex-negative:0;flex-shrink:0}.members-am-col-bulk-toolbar,.members-am-col-collapse-toolbar{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:6px;margin-bottom:6px;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.members-am-col-bulk-toolbar .button.button-small,.members-am-col-collapse-toolbar .button.button-small{font-size:11px;min-height:26px;line-height:24px;padding:0 8px;background:var(--members-am-surface-use);border-color:var(--members-am-border-on-surface,var(--members-am-border-on-base,var(--members-am-border-on-base-fallback)));color:var(--members-am-fg-on-surface,var(--members-am-fg-on-base,#f0f0f1))}.members-am-col-bulk-toolbar .button.button-small:hover,.members-am-col-collapse-toolbar .button.button-small:hover{background:color-mix(in srgb,var(--members-am-surface-use) 85%,#fff 15%);border-color:var(--wp-components-color-gray-700,#8c8f94);color:var(--members-am-fg-on-surface,var(--members-am-fg-on-base,#f0f0f1))}.members-am-item-lead{-ms-flex-negative:0;flex-shrink:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:22px;padding:2px 0 0}.members-am-collapse-spacer{display:block;width:20px;height:20px;-ms-flex-negative:0;flex-shrink:0}.members-am-collapse-toggle{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:22px;height:22px;margin:0;padding:0;border:0;background:transparent;color:var(--members-am-fg-muted-on-base,var(--members-am-chrome-border,#c3c4c7));border-radius:2px;cursor:pointer;-ms-flex-negative:0;flex-shrink:0}.members-am-collapse-toggle:hover,.members-am-collapse-toggle:focus{color:var(--members-am-fg-on-base,#f0f0f1);background:color-mix(in srgb,var(--members-am-fg-on-base,#f0f0f1) 12%,transparent);outline:0}.members-am-collapse-toggle .dashicons{font-size:18px;width:18px;height:18px}.members-am-item-cb-wrap{-ms-flex-negative:0;flex-shrink:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;padding:2px 4px 0 0}.members-am-item-cb{margin:0;width:16px;height:16px;-ms-flex-negative:0;flex-shrink:0}.members-am-bulk-select{width:100%;max-width:100%;-webkit-box-sizing:border-box;box-sizing:border-box;font-size:12px;line-height:1.4;padding:4px 8px;border-radius:2px;border:1px solid var(--members-am-border-on-base,var(--members-am-border-on-base-fallback));background:var(--members-am-base,#1d2327);color:var(--members-am-fg-on-base,#f0f0f1)}.members-am-bulk-select:focus{border-color:var(--members-am-accent-use);outline:1px solid transparent;-webkit-box-shadow:0 0 0 var(--wp-admin-border-width-focus,1px) var(--members-am-accent-use);box-shadow:0 0 0 var(--wp-admin-border-width-focus,1px) var(--members-am-accent-use)}.members-am-item.members-am-filter-hidden,.members-am-sep.members-am-filter-hidden,.members-am-item.members-am-collapse-hidden{display:none !important}.members-am-col-move button{margin-left:4px;padding:0 6px;min-height:24px;line-height:22px;font-size:11px}.members-am-sidebar-list{padding:6px 0 12px;overflow-y:auto;max-height:480px}.members-am-item{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;gap:4px;padding:6px 10px 6px 6px;cursor:pointer;border-left:3px solid transparent;font-size:13px}.members-am-item.is-sub{padding-left:22px;font-size:12px;opacity:.95}.members-am-item.is-sub-deep{padding-left:36px}.members-am-sidebar-list .members-am-item{cursor:-webkit-grab;cursor:grab}.members-am-sidebar-list .members-am-item:active{cursor:-webkit-grabbing;cursor:grabbing}.members-am-sort-placeholder{-webkit-box-sizing:border-box;box-sizing:border-box;min-height:36px;margin:2px 0;background:color-mix(in srgb,var(--members-am-accent-use) 8%,transparent);border:1px dashed var(--members-am-accent-use);border-radius:2px}.members-am-item.is-hidden{opacity:.18}.members-am-item.is-no-cap{opacity:.35}.members-am-item.is-no-cap.is-hidden{opacity:.15}.members-am-item.is-selected{border-left-color:var(--members-am-accent-use);background:color-mix(in srgb,var(--members-am-accent-use) 15%,transparent)}.members-am-item-main{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;min-width:0}.members-am-item-main .dashicons{font-size:18px;width:18px;height:18px}.members-am-item-label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.members-am-item-actions{display:none;gap:2px}.members-am-item:hover .members-am-item-actions{display:-webkit-box;display:-ms-flexbox;display:flex}.members-am-item-actions button{min-height:22px;padding:0 4px;line-height:20px;font-size:11px}.members-am-sep{text-align:center;opacity:.35;font-size:11px;padding:4px 0}.members-am-carousel-dots{text-align:center;margin-bottom:4px}.members-am-dot{width:8px;height:8px;border-radius:50%;border:0;margin:0 4px;padding:0;background:var(--members-am-chrome-border,#c3c4c7);cursor:pointer}.members-am-dot.is-active{background:var(--members-am-accent-use)}.members-am-carousel-status{text-align:center;color:var(--members-am-muted,#646970);font-size:12px;margin-top:0}.members-am-badge{font-size:9px;text-transform:uppercase;padding:1px 4px;border-radius:2px;margin-right:4px;vertical-align:middle}.members-am-badge-new{background:var(--members-am-accent-use);color:var(--wp-components-color-accent-inverted,#fff)}.members-am-badge-edit{background:#dba617;color:var(--members-am-base,#1d2327)}.members-am-badge-nocap{background:var(--wp-components-color-gray-700,#8c8f94);color:var(--wp-components-color-accent-inverted,#fff)}.members-am-legend{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:16px;margin:0 0 8px;padding:0;font-size:12px;color:var(--members-am-muted,#646970)}.members-am-legend-item{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:4px}.members-am-edit-panel{margin-top:20px;padding:16px;border:1px solid var(--members-am-chrome-border,#c3c4c7);background:var(--wp-components-color-background,#fff);border-radius:4px}.members-am-edit-panel-header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:12px}.members-am-edit-panel-header h2{margin:0;font-size:16px}.members-am-edit-toolbar{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:12px;margin-bottom:12px}.members-am-edit-target-wrap select{margin-left:8px}.members-am-level-actions .button{margin-right:6px}.members-am-demote-wrap{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:6px}.members-am-demote-wrap .members-am-demote-select{min-width:200px;max-width:min(320px,100%)}.members-am-edit-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:16px}.members-am-edit-col label{display:block;font-weight:600;margin-bottom:4px}.members-am-colors-hint{margin:0 0 10px}.members-am-colors-readable-wrap{margin:8px 0 0}.members-am-icon-tabs{margin-bottom:8px}.members-am-icon-tabs .button{margin-right:4px;margin-bottom:4px}.members-am-icon-tabs .button.is-active{background:var(--members-am-accent-use);border-color:var(--members-am-accent-use);color:var(--wp-components-color-accent-inverted,#fff)}.members-am-icon-grid{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:4px;max-height:160px;overflow-y:auto;border:1px solid var(--wp-components-color-gray-200,#dcdcde);padding:8px;background:var(--members-am-chrome-bg,#f6f7f7);margin-bottom:8px}.members-am-icon-pick{width:36px;height:36px;padding:0;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;border:1px solid var(--members-am-chrome-border,#c3c4c7);background:var(--wp-components-color-background,#fff);cursor:pointer}.members-am-bulk-visibility-hint{margin:0 0 8px;font-size:12px;color:var(--members-am-fg-muted-on-base,#646970)}.members-am-vis-role-filter-wrap{margin-bottom:8px}.members-am-vis-row.members-am-vis-filter-hidden{display:none}.members-am-vis-row{display:block;margin-bottom:6px;font-weight:normal}.members-am-reset-dropdown{position:absolute;z-index:100000;background:var(--wp-components-color-background,#fff);border:1px solid var(--members-am-chrome-border,#c3c4c7);border-radius:6px;padding:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-shadow:0 4px 12px rgba(0,0,0,0.15);box-shadow:0 4px 12px rgba(0,0,0,0.15);min-width:280px;top:100%;left:0;margin-top:4px;overflow:hidden}.members-am-reset-title{padding:10px 14px;font-weight:600;font-size:13px;border-bottom:1px solid var(--wp-components-color-gray-200,#f0f0f0);color:var(--wp-components-color-foreground,#1d2327)}.members-am-reset-option{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;gap:10px;padding:12px 14px;border:0;background:0;cursor:pointer;text-align:left;width:100%;border-bottom:1px solid var(--wp-components-color-gray-200,#f0f0f0);-webkit-transition:background .15s;transition:background .15s}.members-am-reset-option:last-child{border-bottom:0}.members-am-reset-option:hover{background:var(--members-am-chrome-bg,#f6f7f7)}.members-am-reset-option .dashicons{margin-top:2px;color:var(--members-am-muted,#646970)}.members-am-reset-option-text{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:2px}.members-am-reset-option-text strong{font-size:13px;color:var(--wp-components-color-foreground,#1d2327)}.members-am-reset-option-text small{font-size:12px;color:var(--members-am-muted,#646970)}.members-am-reset-danger:hover{background:#fcf0f1}.members-am-reset-danger .dashicons{color:#d63638}.members-am-reset-danger:hover strong{color:#d63638}@media screen and (max-width:782px){.members-am-columns{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}}.members-am-user-suggestions{position:absolute;z-index:100;background:var(--wp-components-color-background,#fff);border:1px solid var(--members-am-chrome-border,#c3c4c7);border-radius:4px;max-height:200px;overflow-y:auto;width:100%;-webkit-box-shadow:0 2px 6px rgba(0,0,0,0.15);box-shadow:0 2px 6px rgba(0,0,0,0.15);top:100%;left:0}.members-am-user-suggestion{padding:8px 12px;cursor:pointer;font-size:13px;border-bottom:1px solid var(--wp-components-color-gray-200,#f0f0f0)}.members-am-user-suggestion:hover{background:color-mix(in srgb,var(--members-am-accent-use) 8%,var(--wp-components-color-background,#fff))}.members-am-user-suggestion:last-child{border-bottom:0}#members-am-import-file.members-am-import-file-hidden{display:none}.members-am-user-search-wrap{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px}#members-am-user-search.members-am-user-search-input{width:168px;max-width:100%}.members-am-legend-visibility-icon{font-size:14px;width:14px;height:14px;vertical-align:middle}.members-am-legend-nocap-badge{display:inline-block;background:#8c8f94;color:#fff;font-size:9px;padding:1px 4px;border-radius:2px;vertical-align:middle}#members-am-icon-preview.members-am-icon-preview{display:none;width:32px;height:32px;-o-object-fit:contain;object-fit:contain;margin-bottom:6px;border:1px solid #ddd;border-radius:3px;padding:2px;background:#f0f0f1}.members-am-icons .members-am-icon-upload-desc{margin-top:4px}#adminmenu .members-am-menu-badge{display:inline-block;color:#fff;font-size:9px;padding:1px 5px;border-radius:2px;line-height:1.4;vertical-align:middle}
\ No newline at end of file
+#members-cp h2.hndle,#members-cp-side h2.hndle{border-bottom:none !important;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}#members-cp h2.hndle:before,#members-cp-side h2.hndle:before{content:url("data:image/svg+xml,%3Csvg width='15px' aria-hidden='true' focusable='false' data-prefix='fas' data-icon='users-cog' class='svg-inline--fa fa-users-cog fa-w-20' role='img' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 640 512'%3E%3Cpath fill='currentColor' d='M610.5 341.3c2.6-14.1 2.6-28.5 0-42.6l25.8-14.9c3-1.7 4.3-5.2 3.3-8.5-6.7-21.6-18.2-41.2-33.2-57.4-2.3-2.5-6-3.1-9-1.4l-25.8 14.9c-10.9-9.3-23.4-16.5-36.9-21.3v-29.8c0-3.4-2.4-6.4-5.7-7.1-22.3-5-45-4.8-66.2 0-3.3.7-5.7 3.7-5.7 7.1v29.8c-13.5 4.8-26 12-36.9 21.3l-25.8-14.9c-2.9-1.7-6.7-1.1-9 1.4-15 16.2-26.5 35.8-33.2 57.4-1 3.3.4 6.8 3.3 8.5l25.8 14.9c-2.6 14.1-2.6 28.5 0 42.6l-25.8 14.9c-3 1.7-4.3 5.2-3.3 8.5 6.7 21.6 18.2 41.1 33.2 57.4 2.3 2.5 6 3.1 9 1.4l25.8-14.9c10.9 9.3 23.4 16.5 36.9 21.3v29.8c0 3.4 2.4 6.4 5.7 7.1 22.3 5 45 4.8 66.2 0 3.3-.7 5.7-3.7 5.7-7.1v-29.8c13.5-4.8 26-12 36.9-21.3l25.8 14.9c2.9 1.7 6.7 1.1 9-1.4 15-16.2 26.5-35.8 33.2-57.4 1-3.3-.4-6.8-3.3-8.5l-25.8-14.9zM496 368.5c-26.8 0-48.5-21.8-48.5-48.5s21.8-48.5 48.5-48.5 48.5 21.8 48.5 48.5-21.7 48.5-48.5 48.5zM96 224c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm224 32c1.9 0 3.7-.5 5.6-.6 8.3-21.7 20.5-42.1 36.3-59.2 7.4-8 17.9-12.6 28.9-12.6 6.9 0 13.7 1.8 19.6 5.3l7.9 4.6c.8-.5 1.6-.9 2.4-1.4 7-14.6 11.2-30.8 11.2-48 0-61.9-50.1-112-112-112S208 82.1 208 144c0 61.9 50.1 112 112 112zm105.2 194.5c-2.3-1.2-4.6-2.6-6.8-3.9-8.2 4.8-15.3 9.8-27.5 9.8-10.9 0-21.4-4.6-28.9-12.6-18.3-19.8-32.3-43.9-40.2-69.6-10.7-34.5 24.9-49.7 25.8-50.3-.1-2.6-.1-5.2 0-7.8l-7.9-4.6c-3.8-2.2-7-5-9.8-8.1-3.3.2-6.5.6-9.8.6-24.6 0-47.6-6-68.5-16h-8.3C179.6 288 128 339.6 128 403.2V432c0 26.5 21.5 48 48 48h255.4c-3.7-6-6.2-12.8-6.2-20.3v-9.2zM173.1 274.6C161.5 263.1 145.6 256 128 256H64c-35.3 0-64 28.7-64 64v32c0 17.7 14.3 32 32 32h65.9c6.3-47.4 34.9-87.3 75.2-109.4z'%3E%3C/path%3E%3C/svg%3E");margin-right:5px}#members-cp-side .postbox-header{border-bottom:none !important}#members-cp-side .handle-actions .handle-order-higher,#members-cp-side .handle-actions .handle-order-lower{display:none}#members-cp-side .handle-actions .handlediv{position:absolute;right:5px}.members-upgrade-header{text-align:center;padding:5px}.members-upgrade-header a{color:#f59431}.memberpress-paid-memberships{background-color:#f5f5f5;padding:50px 10px;text-align:center}.memberpress-paid-memberships a{background-color:#0e4598;display:inline-block;padding:10px 20px;border-radius:300px;color:#fff;text-decoration:none;margin-top:20px}#members-cp-side .members-tabs{position:relative}#members-cp-side .members-tab-nav{background-color:transparent;margin-bottom:20px;border-right:none !important}#members-cp-side .members-tab-nav .members-tab-title{width:33.333%;height:50px;border-right:none !important}#members-cp-side .members-tab-nav .members-tab-title a{border:0}#members-cp-side .members-tab-content h3{font-weight:bold;font-size:15px;margin-top:0;color:#000;margin-bottom:10px}#members-cp-side .members-tab-content .memberpress-paid-memberships{text-align:left;padding:20px}#members-cp-side .members-tab-content .memberpress-paid-memberships a{display:block;text-align:center}#members-cp-side .members-tabs .members-tab-nav li a,#members-cp-side .members-tabs .members-tab-nav li[aria-selected="false"] a i{color:#555}#members-cp-side .members-tabs .members-tab-nav li a svg,#members-cp-side .members-tabs .members-tab-nav li[aria-selected="false"] a svg{fill:#555}#members-cp-side .members-tabs .members-tab-nav li[aria-selected="true"] a{background-color:transparent;border-bottom:2px solid #3582ae}#members-cp-side .members-tabs .members-tab-nav li[aria-selected="true"] a i{color:#3582ae}#members-cp-side .members-tabs .members-tab-nav li[aria-selected="true"] a svg{fill:#3582ae}.members-tab-title svg,.members-tab-title[aria-selected="false"] svg{fill:#0073aa}.members-tab-title[aria-selected="true"] svg{fill:#555}#wpcontent #members-admin-header{margin-left:-20px;padding:0 28px 0 22px;background-color:#0b1220;background-image:radial-gradient(circle at 12% 35%,rgba(14,69,152,0.45),transparent 55%),radial-gradient(circle at 90% 85%,rgba(245,148,49,0.14),transparent 60%);background-repeat:no-repeat;min-height:56px;position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}#wpcontent #members-admin-header img.members-logo{height:42px;display:block}#wpcontent #members-admin-header .members-by-mp{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:12px;margin-left:auto;text-decoration:none;-webkit-box-shadow:none;box-shadow:none;-webkit-transition:opacity .15s ease;transition:opacity .15s ease}#wpcontent #members-admin-header .members-by-mp:hover,#wpcontent #members-admin-header .members-by-mp:focus{opacity:.75;text-decoration:none;-webkit-box-shadow:none;box-shadow:none}#wpcontent #members-admin-header .members-by-label{color:#94a3b8;font-size:12px;font-weight:500}#wpcontent #members-admin-header img.members-mp-logo{height:18px;display:block}#wpcontent #members-admin-header #membersAdminHeaderNotifications{position:relative;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:36px;height:36px;padding:0;margin:0 0 0 18px;background:rgba(255,255,255,0.06);border:1px solid rgba(255,255,255,0.12);border-radius:8px;color:#fff;cursor:pointer;-webkit-box-shadow:none;box-shadow:none;-webkit-transition:background .15s ease,border-color .15s ease;transition:background .15s ease,border-color .15s ease;line-height:1;vertical-align:middle;min-height:0;text-decoration:none}#wpcontent #members-admin-header #membersAdminHeaderNotifications:hover,#wpcontent #members-admin-header #membersAdminHeaderNotifications:focus{background:rgba(255,255,255,0.12);border-color:rgba(255,255,255,0.24);color:#fff;-webkit-box-shadow:none;box-shadow:none;outline:0}#wpcontent #members-admin-header #membersAdminHeaderNotifications svg{width:16px;height:auto;display:block}#wpcontent #members-admin-header #membersAdminHeaderNotifications svg path{fill:#e2e8f0}#wpcontent #members-admin-header #membersAdminHeaderNotifications .members-notifications-count{position:absolute;top:-4px;right:-4px;min-width:16px;height:16px;padding:0 4px;border-radius:999px;background:#f59431;color:#0b1220;font-size:10px;font-weight:700;line-height:16px;text-align:center;border:1.5px solid #0b1220;-webkit-box-sizing:content-box;box-sizing:content-box}.members-upgrade-header #close-members-upgrade-header{position:absolute;right:20px;top:3px}.members-upgrade-header #close-members-upgrade-header:hover{cursor:pointer}.memberpress-welcome-panel.welcome-panel{margin-top:20px;padding:20px 28px;background:#fff;border-radius:10px;min-height:0}.memberpress-welcome-panel.welcome-panel .welcome-panel-content{min-height:0;height:auto}.members-about{--ink:#0f172a;--ink-soft:#334155;--ink-muted:#64748b;--mp-blue:#0e4598;--mp-teal:#3582ae;--mp-orange:#f59431;--rule:#e5e7eb;--paper:#fbfaf7;--paper-soft:#f3efe6;--paper-line:#e8e3d5;--display-font:"Inter",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;--sans-font:"Inter",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif}body.members_page_members-about #wpbody-content,body.toplevel_page_members-about #wpbody-content,body.admin_page_members-about #wpbody-content{background:var(--paper)}.members-about.wrap{max-width:1120px;margin:0 auto;padding:48px 24px 80px;color:var(--ink);font-family:var(--sans-font)}.members-about__hero{display:grid;grid-template-columns:minmax(0,1fr) 200px;grid-template-areas:"head mark" "body mark";gap:32px 56px;-webkit-box-align:start;-ms-flex-align:start;align-items:start;padding-bottom:64px;border-bottom:1px solid var(--paper-line)}.members-about__hero-head{grid-area:head}.members-about__body{grid-area:body}.members-about__mark{grid-area:mark;align-self:start}.members-about__eyebrow{display:inline-block;font-family:var(--sans-font);font-size:12px;font-weight:600;letter-spacing:.18em;text-transform:uppercase;color:var(--ink-muted);padding-bottom:18px}.members-about__title{font-family:var(--display-font);font-weight:900;font-size:clamp(40px,5.5vw,64px);line-height:1;letter-spacing:-0.035em;color:var(--ink);margin:0}.members-about__title em{font-style:normal;font-weight:900;color:var(--mp-blue)}.members-about__title-dot{color:var(--mp-blue);font-style:normal;font-weight:900}.members-about__body{max-width:60ch;font-size:15.5px;line-height:1.62;color:var(--ink-soft)}.members-about__body p{margin:0 0 14px}.members-about__body p:last-child{margin-bottom:0}.members-about__lead{font-family:var(--sans-font);font-weight:500;font-size:17px;line-height:1.5;color:var(--ink);margin-bottom:24px !important;padding-left:18px;border-left:2px solid var(--mp-blue)}.members-about__body a,.members-about__lead a{color:var(--mp-blue);text-decoration:none;background-image:-webkit-gradient(linear,left top,left bottom,from(currentColor),to(currentColor));background-image:linear-gradient(currentColor,currentColor);background-size:100% 1px;background-position:0 100%;background-repeat:no-repeat;padding-bottom:1px;-webkit-transition:color .2s ease,background-size .2s ease;transition:color .2s ease,background-size .2s ease}.members-about__body a:hover,.members-about__lead a:hover{color:var(--mp-orange)}.members-about__body em,.members-about__lead em{font-style:normal;font-weight:700;color:var(--mp-blue)}.members-about__mark{padding:24px;background:#fff;border:1px solid var(--paper-line);border-radius:4px;-webkit-box-shadow:0 1px 2px rgba(15,23,42,0.03);box-shadow:0 1px 2px rgba(15,23,42,0.03);-webkit-transition:-webkit-transform .25s ease,-webkit-box-shadow .25s ease;transition:-webkit-transform .25s ease,-webkit-box-shadow .25s ease;transition:transform .25s ease,box-shadow .25s ease;transition:transform .25s ease,box-shadow .25s ease,-webkit-transform .25s ease,-webkit-box-shadow .25s ease}.members-about__mark:hover{-webkit-transform:translateY(-2px);transform:translateY(-2px);-webkit-box-shadow:0 8px 20px rgba(15,23,42,0.08);box-shadow:0 8px 20px rgba(15,23,42,0.08)}.members-about__mark a{display:block;-webkit-box-shadow:none !important;box-shadow:none !important;text-decoration:none}.members-about__mark img{display:block;width:100%;height:auto;max-width:160px;margin:0 auto}.members-about__products{padding-top:56px}.members-about__products-head{margin-bottom:28px;text-align:center}.members-about__products-head h3{font-family:var(--display-font);font-weight:700;font-size:15px;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-muted);margin:0}.members-about__grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px}.members-about__card{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;padding:24px;background:#fff;border:1px solid var(--paper-line);border-radius:6px;-webkit-transition:border-color .25s ease,-webkit-transform .25s ease,-webkit-box-shadow .25s ease;transition:border-color .25s ease,-webkit-transform .25s ease,-webkit-box-shadow .25s ease;transition:transform .25s ease,box-shadow .25s ease,border-color .25s ease;transition:transform .25s ease,box-shadow .25s ease,border-color .25s ease,-webkit-transform .25s ease,-webkit-box-shadow .25s ease}.members-about__card:hover{-webkit-transform:translateY(-3px);transform:translateY(-3px);-webkit-box-shadow:0 12px 28px rgba(15,23,42,0.08);box-shadow:0 12px 28px rgba(15,23,42,0.08);border-color:rgba(14,69,152,0.2)}.members-about__card-head{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:14px;margin-bottom:14px}.members-about__card-icon{-webkit-box-flex:0;-ms-flex:0 0 44px;flex:0 0 44px;width:44px;height:44px;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;background:var(--paper-soft);border-radius:10px;overflow:hidden}.members-about__card-icon img{display:block;max-width:32px;max-height:32px;width:auto;height:auto}.members-about__card-title{margin:0;font-family:var(--display-font);font-weight:700;font-size:17px;line-height:1.2;letter-spacing:-0.01em;color:var(--ink)}.members-about__card-title a{color:inherit;text-decoration:none;-webkit-box-shadow:none;box-shadow:none}.members-about__card-title a:hover{color:var(--mp-blue)}.members-about__card-desc{-webkit-box-flex:1;-ms-flex:1;flex:1;margin:0 0 24px;font-size:14px;line-height:1.55;color:var(--ink-soft)}.members-about__card-foot{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;gap:16px;padding-top:16px;border-top:1px solid var(--paper-line)}.members-about__status{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;font-size:12px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-muted)}.members-about__status::before{content:"";width:7px;height:7px;border-radius:50%;background:currentColor}.members-about__status.is-active{color:#10b981}.members-about__status.is-inactive{color:var(--mp-orange)}.members-about__status.is-missing{color:var(--ink-muted)}.members-about__cta{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;padding:8px 14px;font-size:13px;font-weight:600;letter-spacing:.01em;border-radius:4px;text-decoration:none;border:1px solid transparent;-webkit-transition:background .2s ease,border-color .2s ease,color .2s ease,-webkit-transform .15s ease;transition:background .2s ease,border-color .2s ease,color .2s ease,-webkit-transform .15s ease;transition:background .2s ease,border-color .2s ease,color .2s ease,transform .15s ease;transition:background .2s ease,border-color .2s ease,color .2s ease,transform .15s ease,-webkit-transform .15s ease;-webkit-box-shadow:none;box-shadow:none}.members-about__cta:focus,.members-about__cta:focus-visible{outline:2px solid var(--mp-blue);outline-offset:2px;-webkit-box-shadow:none;box-shadow:none}.members-about__cta.is-primary{background:var(--mp-blue);color:#fff}.members-about__cta.is-primary:hover{background:#093374;color:#fff;-webkit-transform:translateY(-1px);transform:translateY(-1px)}.members-about__cta.is-secondary{background:transparent;color:var(--ink);border-color:var(--rule)}.members-about__cta.is-secondary:hover{border-color:var(--ink);background:#fff;color:var(--ink)}.members-about__cta svg{-webkit-transition:-webkit-transform .2s ease;transition:-webkit-transform .2s ease;transition:transform .2s ease;transition:transform .2s ease,-webkit-transform .2s ease}.members-about__cta:hover svg{-webkit-transform:translate(1px,-1px);transform:translate(1px,-1px)}@media(max-width:900px){.members-about__hero{grid-template-columns:1fr;grid-template-areas:"head" "body" "mark";gap:24px}.members-about__mark{max-width:160px}.members-about__grid{grid-template-columns:1fr}}.memberpress-welcome-panel.welcome-panel:before{background:0}.memberpress-welcome-panel.welcome-panel .about-description{margin:20px 0}.memberpress-welcome-panel.welcome-panel-content{margin:0}.memberpress-welcome-panel.welcome-panel-content .mp-logo-wrap>a{display:block}@media screen and (min-width:870px){.members_page_members-settings .members-short-p{max-width:612px;margin-left:auto;margin-right:auto}.members_page_members-settings .welcome-panel-content{text-align:center}}.members_page_members-settings .welcome-panel .button.button-hero{margin-left:auto;margin-right:auto}.members_page_members-settings .members-svg-wrap{display:inline-block;margin:0 auto 20px}@media screen and (max-width:870px){.members_page_members-settings .welcome-panel{padding:20px}.members_page_members-settings .members-svg-wrap{float:left;margin-right:28px}.admin_page_members-settings.rtl .members-svg-wrap{float:right;margin-right:0;margin-left:28px}}.members_page_members-settings .members-svg-link{display:table-cell;text-align:center;width:128px;height:128px;background:#363b3f;color:#fff;padding:24px 16px 16px;border-radius:50%;-webkit-box-sizing:border-box;box-sizing:border-box;border:4px solid #fff;-webkit-box-shadow:0 0 0 4px #363b3f;box-shadow:0 0 0 4px #363b3f}.members_page_members-settings .members-svg-link svg{max-width:84px;max-height:64px;width:auto;height:auto}.members-addons{display:grid;grid-template-columns:1fr 1fr;grid-row-gap:20px;grid-column-gap:20px}.members-addons .plugin-card{margin:0}.members-addons .plugin-card-top{width:100%}.members-addon{width:100%;position:relative;float:none;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.members-addon .desc{margin-bottom:80px}.addon-activate{text-align:center;border:1px solid #ddd;border-radius:3px;padding:5px 10px 10px;display:inline-block;width:100px;position:absolute;right:20px;bottom:20px}.activate-toggle:hover{cursor:pointer}.activate-toggle svg{max-width:20px;position:relative;top:5px}.activate-toggle svg{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.activate-toggle svg.active{-webkit-transform:rotate(0);transform:rotate(0)}.activate-toggle svg path{fill:#ccc}.activate-toggle svg.active path{fill:#8cbd5a}.activate-toggle.processing{cursor:not-allowed;pointer-events:none;opacity:.5}.activate-toggle .action-label{display:inline-block;width:50px;text-align:left}.mepr_dummy_txns{-webkit-filter:blur(3px);filter:blur(3px);position:absolute;top:0;left:0;width:100%;z-index:5;pointer-events:none}.mepr_dummy_txns::after{background-color:rgba(0,0,0,.2);position:absolute;top:0;left:0;width:100%;height:100%;z-index:6}.mepr-upgrade-table{position:relative}.mepr-upgrade-table .mepr-upgrade{position:relative;top:100px;z-index:10;background:rgba(0,0,0,.2);width:100%;height:100%;max-width:600px;margin:0 auto;-webkit-box-shadow:0 0 30px #ccc;box-shadow:0 0 30px #ccc}.mepr-upgrade-content{background-color:#fff;padding:20px;text-align:center}.mepr-upgrade-content h2{font-size:24px}.mepr-upgrade-content h4{font-size:18px}.mepr-upgrade-content .features{display:grid;grid-template-columns:1fr 1fr;grid-column-gap:30px;grid-row-gap:10px;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;text-align:left;padding:10px}.features li:before{content:"\f147";font-family:dashicons;color:green;font-size:20px;position:relative;top:4px;margin-right:10px}.mepr-upgrade-cta{text-align:center;background-color:#f2f2f2;padding:20px}.mepr-upgrade-cta .mepr-cta-button{display:block;max-width:300px;margin:0 auto 20px;background-color:#fd9c27;color:#fff;padding:15px;font-size:18px;font-weight:bold;text-decoration:none;border-radius:300px}.members-plugin-card.plugin-card:nth-child(even){margin-right:inherit}.members-plugin-card.plugin-card:nth-child(odd){clear:none;margin-left:inherit}.members-plugin-card.plugin-card .plugin-card-top{min-height:0;padding:30px 20px}.members-plugin-card.plugin-card .plugin-icon{top:30px}.members-plugin-card.plugin-card .plugin-card-bottom .column-status{font-weight:bold}.members-plugin-card.plugin-card .plugin-card-bottom .column-status .active{color:#8cbd5a}.members-plugin-card.plugin-card .plugin-card-bottom .column-status .inactive{color:red}.members-plugin-card.plugin-card .plugin-icon{width:64px;height:auto}.plugin-icon-small{width:32px;height:auto}.members-plugin-card.plugin-card .name,.members-plugin-card.plugin-card .desc{margin-right:0;margin-left:84px}.members-addons .plugin-card .name,.members-addons .plugin-card .desc p{margin-right:0}@media screen and (max-width:1100px){.members-addons{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}}@media screen and (max-width:600px){.members_page_members-settings .members-svg-link{width:64px;height:64px}.members_page_members-settings .members-svg-link svg{position:absolute;top:14px;left:15px;max-width:30px;max-height:30px}.members_page_members-settings .plugin-card-members-edd-integration .members-svg-link svg,.members_page_members-settings .plugin-card-members-acf-integration .members-svg-link svg,.members_page_members-settings .plugin-card-members-givewp-integration .members-svg-link svg,.members_page_members-settings .plugin-card-members-meta-box-integration .members-svg-link svg,.members_page_members-settings .plugin-card-members-woocommerce-integration .members-svg-link svg{top:10px;left:8px;max-width:40px;max-height:40px}.members_page_members-settings .plugin-card-members-block-permissions .members-svg-link svg,.members_page_members-settings .plugin-card-members-role-hierarchy .members-svg-link svg{left:14px}.members-addons .plugin-card .desc>p,.members-addons .plugin-card .name{margin-left:84px}}.memberpress-about .welcome-panel-column-container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:40px;padding:0;margin:0}.memberpress-about .mp-desc p{font-size:13px;line-height:1.6;color:#334155;margin:0 0 12px}.memberpress-about .mp-desc p:first-child{font-size:15px;font-weight:600;color:#0f172a;margin-top:0;margin-bottom:14px}.memberpress-about .mp-desc p:last-child{margin-bottom:0}.memberpress-about .mp-logo-wrap{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.memberpress-about .mp-logo{display:block;max-width:220px;height:auto;margin:0}.members-about-addons{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-column-gap:20px}.members-about-addons .members-plugin-card{margin:0;width:100%}.members-about-addons .members-plugin-card .plugin-icon{position:static;width:auto;height:28px;max-width:40px;-o-object-fit:contain;object-fit:contain;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;display:block}.members-about-addons .members-plugin-card .name,.members-about-addons .members-plugin-card .desc{margin-left:0}.members-about-addons .members-plugin-card .plugin-card-top{padding:20px}.members-about-addons .members-plugin-card .name h3{margin:0 0 10px;min-height:0;height:auto;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:10px;line-height:1.2}.members-about-addons .members-plugin-card .name h3 a{text-decoration:none;line-height:1.2}.members-about-addons .members-plugin-card .plugin-card-bottom{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}@media only screen and (max-width:1099px){.members-about-addons{grid-template-columns:1fr;grid-row-gap:20px}}@media screen and (min-width:1100px) and (max-width:1600px){.members-about-addons .members-plugin-card{float:none;width:auto;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.members-plugin-card.plugin-card .desc{margin-left:0;margin-top:50px}.members-plugin-card.plugin-card .desc p{margin-left:0;margin-right:0}.members-plugin-card.plugin-card .plugin-card-bottom .column-status{float:none}.members-plugin-card.plugin-card .plugin-card-bottom .column-updated{float:none;width:auto}}@media screen and (max-width:1200px){.welcome-panel .welcome-panel-column-container{-webkit-box-orient:vertical;-webkit-box-direction:reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse;gap:0;padding:0}.memberpress-about .mp-logo{margin:0 0 20px}}.members-plugin-card.plugin-card .desc p{margin-left:0;margin-right:0}@media only screen and (min-width:783px){.members_page_roles .column-users,.members_page_roles .column-granted_caps,.members_page_roles .column-denied_caps{width:100px;text-align:center}}.members-title-div #titlewrap input{padding:0 8px;font-size:1.7em;line-height:normal;height:1.7em;width:100%;outline:0;margin:0 0 3px;background-color:#fff}.members-title-div input[name="role"]{font-size:13px;height:22px;margin:0;width:16em}#tabcapsdiv{margin-top:1em}#tabcapsdiv>.hndle{padding:10px;border-bottom:1px solid #eee}#tabcapsdiv .inside,#members-cp .inside{margin:0;padding:0}.members-cap-tabs,.members-tabs{overflow:hidden;background:#fff;background:-webkit-gradient(linear,left top,right top,from(#fafafa),color-stop(20%,#fafafa),color-stop(20%,#fff),to(#fff));background:linear-gradient(90deg,#fafafa 0,#fafafa 20%,#fff 20%,#fff 100%)}@media only screen and (max-width:782px){.members-cap-tabs,.members-tabs{background:linear-gradient(90deg,#fafafa 0,#fafafa 48px,#fff 48px,#fff 100%)}}.members-cap-tabs .members-tab-nav,.members-tabs .members-tab-nav{position:relative;float:left;list-style:none;width:20%;line-height:1em;margin:0 0 -1px 0;padding:0;background-color:#fafafa;border-right:1px solid #eee;-webkit-box-sizing:border-box;box-sizing:border-box}.members-cap-tabs .members-tab-nav li,.members-tabs .members-tab-nav li{display:block;position:relative;margin:0;padding:0;line-height:20px}.members-cap-tabs .members-tab-nav li a,.members-tabs .members-tab-nav li a{display:block;margin:0;padding:10px;line-height:20px !important;text-decoration:none;border-bottom:1px solid #eee;-webkit-box-shadow:none;box-shadow:none}.members-cap-tabs .members-tab-nav li a .dashicons,.members-tabs .members-tab-nav li a .dashicons{line-height:20px;margin-right:3px}.members-cap-tabs .members-tab-nav li[aria-selected="true"] a,.members-tabs .members-tab-nav li[aria-selected="true"] a{position:relative;font-weight:bold;color:#555;background-color:#e0e0e0}@media only screen and (max-width:782px){.members-cap-tabs .members-tab-nav,.members-tabs .members-tab-nav{width:48px}.members-cap-tabs .members-tab-nav li a .dashicons,.members-tabs .members-tab-nav li a .dashicons{width:24px;height:24px;font-size:24px;line-height:24px}.members-tab-nav li .dashicons::before,.members-tab-nav li .dashicons::before{width:24px;height:24px}.members-tab-nav li .label{overflow:hidden;position:absolute;top:-1000em;left:-1000em;width:1px;height:1px}}.members-cap-tabs .members-tab-wrap,.members-tabs .members-tab-wrap{float:left;width:80%;margin-left:-1px}@media only screen and (max-width:782px){.members-cap-tabs .members-tab-wrap,.members-tabs .members-tab-wrap{width:calc(100% - 48px)}}#members-cp .members-tab-content{padding:10px;border-left:1px solid #e5e5e5}.members-roles-select th,.members-roles-select td{width:190px;overflow:hidden}.members-roles-select .check-all-th{text-align:center}.members-roles-select .check-all-th label{padding-left:5px}@media only screen and (min-width:850px){#side-sortables .members-tabs{background:#fff}#side-sortables .members-tabs .members-tab-wrap{width:100%}#side-sortables .members-tabs .members-tab-nav{display:table;width:100%}#side-sortables .members-tabs .members-tab-nav li{display:table-cell;text-align:center;border-right:1px solid #eee}#side-sortables .members-tabs .members-tab-nav li:last-of-type{border-right:0}#side-sortables .members-tabs .members-tab-nav li a{padding:10px 0}#side-sortables .members-tabs .members-tab-nav .dashicons{width:24px;height:24px;font-size:24px;line-height:24px}#side-sortables .members-tabs .members-tab-nav .dashicons::before{width:24px;height:24px}#side-sortables .members-tabs .members-tab-nav .label{overflow:hidden;position:absolute;top:-1000em;left:-1000em;width:1px;height:1px}}.members-tabs .members-tabs-label{display:block !important;font-weight:bold;display:inline-block;margin-bottom:4px}.members-tabs .butterbean-control-checkbox .members-tabs-label{display:inline !important}.members-tabs .members-tabs-description{display:block;font-style:italic;margin-top:4px}.members-tabs .members-tabs-label+.members-tabs-description{margin-top:0;margin-bottom:4px}#tabcapsdiv table{border-right:0;border-top:0;border-bottom:0}#tabcapsdiv table td,#tabcapsdiv table th{padding:10px;padding-bottom:10px;border-bottom:1px solid #eee;font-size:13px;line-height:20px}#tabcapsdiv table td{padding:9px}#tabcapsdiv tbody tr:last-of-type td{border-bottom:0}#tabcapsdiv tfoot th{border-color:#eee}@media only screen and (max-width:782px){#tabcapsdiv table td,#tabcapsdiv table th{line-height:24px}}.members-roles-select .column-grant,.members-roles-select .column-deny{width:70px !important;text-align:left;display:table-cell !important;clear:none !important}.members-roles-select thead th,.members-roles-select tfoot th{padding:9px !important}.members-roles-select .column-grant input,.members-roles-select .column-deny input{margin:0 5px 0 0;vertical-align:middle}.members-roles-select tbody tr:nth-child(even){background:#f2f2f2}.members-cap-tabs button{display:inline;margin:-4px;line-height:inherit;padding:4px 8px;border:1px solid transparent;background:transparent;border-radius:0;outline:0;-webkit-transition:all .25s ease-out;transition:all .25s ease-out}.members-cap-tabs button:hover,.members-cap-tabs button:focus{border-color:#eee;background:#fafafa;cursor:pointer}.members-cap-tabs button:active{color:#0073aa;border-color:#0073aa}.members-cap-tabs button+.dashicons{display:none;margin-top:1px;margin-bottom:-1px;line-height:inherit}.members-cap-tabs button:hover+.dashicons,.members-cap-tabs button:focus+.dashicons{display:inline-block}.members-tab-content .members-highlight{background-color:rgba(0,115,170,0.05)}.members-tab-content tbody{-webkit-transition:all 2s ease-in-out;transition:all 2s ease-in-out}.members-cp-role-list-wrap{overflow:auto;min-height:42px;max-height:200px;padding:0 .9em;border:solid 1px #dfdfdf;background-color:#fdfdfd}#wpbody-content{padding-bottom:200px}.members-footer-promotion{text-align:center;font-weight:400;font-size:13px;line-height:16px;color:#787c82;padding:20px 0 30px 0;margin-bottom:20px}.members-footer-promotion p{font-weight:600}.members-footer-promotion-links,.members-footer-promotion-social{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.members-footer-promotion-links{margin:9px 0 0}.members-footer-promotion-links span{color:#c3c4c7;padding:0 7px}.members-footer-promotion-social{margin:10px 0 0 0;gap:10px}.members-footer-promotion-social li{margin-bottom:0}.members-footer-promotion-social a{display:block;height:16px}.members_page_members-settings.rtl{.addon-activate{left:20px;right:unset}.members-addons .plugin-card{.name,.desc p{margin-left:0;margin-right:148px}}}.button.button-warning{background:#dc3232;border-color:#dc3232;color:#fff}.button.button-warning:hover,.button.button-warning:focus{background:#c92424;border-color:#c92424;color:#fff}.members-reset-spinner{float:none;margin-top:0;vertical-align:middle}.members-admin-menus-wrap{max-width:1400px;--members-am-accent-use:var(--members-am-accent,var(--wp-admin-theme-color,#2271b1));--members-am-surface-use:var(--members-am-surface,color-mix(in srgb,var(--members-am-base,#1d2327) 88%,#fff 12%));--members-am-border-on-base-fallback:color-mix(in srgb,var(--members-am-base,#1d2327) 62%,#fff 38%);--members-am-chrome-bg:var(--wp-components-color-gray-100,#f6f7f7);--members-am-chrome-border:var(--wp-components-color-gray-400,#c3c4c7);--members-am-muted:var(--wp-components-color-gray-600,#646970)}.members-am-notices{margin:0 0 12px}.members-am-notices .notice{margin:0 0 8px}.members-admin-menus-toolbar{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;gap:0;margin-bottom:16px;border:1px solid var(--members-am-chrome-border,#c3c4c7);border-radius:2px;background:var(--wp-components-color-background,#fff);overflow:visible}.members-am-toolbar-row{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px}.members-am-toolbar-row--primary{padding:10px 12px;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;row-gap:10px}.members-am-toolbar-group{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px}.members-am-toolbar-group--document{position:relative;z-index:5;padding-right:12px;border-right:1px solid var(--members-am-chrome-border,#c3c4c7)}.members-am-toolbar-row--primary .members-am-toolbar-primary-user{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px;margin-left:8px;-webkit-box-flex:0;-ms-flex:0 1 auto;flex:0 1 auto;min-width:0}.members-am-toolbar-row--primary .members-am-toolbar-primary-user #members-am-user-search.members-am-user-search-input{width:168px;max-width:100%;min-width:0}.members-am-toolbar-group--view{margin-left:auto;-ms-flex-wrap:nowrap;flex-wrap:nowrap}.members-am-toolbar-extra{background:var(--members-am-chrome-bg,#f6f7f7);border-top:1px solid var(--members-am-chrome-border,#c3c4c7);padding:10px 12px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:10px}.members-am-toolbar-extra[hidden]{display:none !important}.members-am-toolbar-row--extra-tools{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-wrap:wrap;flex-wrap:wrap;row-gap:10px}.members-am-toolbar-row--extra-tools .members-am-copy-wrap{margin-left:4px;padding-left:12px;border-left:1px solid var(--members-am-chrome-border,#c3c4c7)}.members-am-toolbar-row--extra-tools .members-am-toolbar-group--io{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;margin-left:8px;padding-left:12px;border-left:1px solid var(--members-am-chrome-border,#c3c4c7)}.members-am-more-tools,.members-am-more-tools:hover,.members-am-more-tools:focus,.members-am-more-tools:focus-visible,.members-am-more-tools:active{text-decoration:none !important}.members-am-more-tools{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:4px;white-space:nowrap;padding:2px 2px 2px 4px;vertical-align:middle;line-height:1.4}.members-am-more-tools .members-am-more-tools-text,.members-am-more-tools:hover .members-am-more-tools-text,.members-am-more-tools:focus .members-am-more-tools-text,.members-am-more-tools:focus-visible .members-am-more-tools-text,.members-am-more-tools:active .members-am-more-tools-text,.members-am-more-tools .members-am-more-tools-chevron,.members-am-more-tools:hover .members-am-more-tools-chevron,.members-am-more-tools:focus .members-am-more-tools-chevron,.members-am-more-tools:focus-visible .members-am-more-tools-chevron,.members-am-more-tools:active .members-am-more-tools-chevron,.members-am-more-tools .members-am-more-tools-chevron-svg,.members-am-more-tools:hover .members-am-more-tools-chevron-svg,.members-am-more-tools:focus .members-am-more-tools-chevron-svg,.members-am-more-tools:focus-visible .members-am-more-tools-chevron-svg,.members-am-more-tools:active .members-am-more-tools-chevron-svg{text-decoration:none !important}.members-am-more-tools .members-am-more-tools-text{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;line-height:1.4}.members-am-more-tools .members-am-more-tools-chevron{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-ms-flex-negative:0;flex-shrink:0;line-height:0;opacity:.88}.members-am-more-tools .members-am-more-tools-chevron-svg{display:block;overflow:visible;-webkit-transition:-webkit-transform .15s ease;transition:-webkit-transform .15s ease;transition:transform .15s ease;transition:transform .15s ease,-webkit-transform .15s ease;-webkit-transform-origin:50% 50%;transform-origin:50% 50%;shape-rendering:geometricPrecision}.members-am-more-tools .members-am-more-tools-chevron-svg polygon{stroke:none}.members-am-more-tools.is-open .members-am-more-tools-chevron-svg{-webkit-transform:rotate(180deg);transform:rotate(180deg)}@media(prefers-reduced-motion:reduce){.members-am-more-tools .members-am-more-tools-chevron-svg{-webkit-transition:none;transition:none}}@media screen and (max-width:782px){.members-am-toolbar-group--document{border-right:0;padding-right:0;border-bottom:1px solid var(--members-am-chrome-border,#c3c4c7);padding-bottom:10px;width:100%}.members-am-toolbar-group--view{margin-left:0;width:100%;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.members-am-toolbar-row--primary .members-am-toolbar-primary-user{margin-left:0;padding-left:0;border-left:0;padding-top:8px;border-top:1px solid var(--members-am-chrome-border,#c3c4c7);width:100%;max-width:none}.members-am-toolbar-row--primary .members-am-toolbar-primary-user #members-am-user-search.members-am-user-search-input{width:100%;max-width:100%}.members-am-toolbar-row--extra-tools .members-am-admin-editable{width:100%}.members-am-toolbar-row--extra-tools .members-am-copy-wrap{margin-left:0;padding-left:0;border-left:0;padding-top:8px;border-top:1px solid var(--members-am-chrome-border,#c3c4c7);width:100%}.members-am-toolbar-row--extra-tools .members-am-toolbar-group--io{margin-left:0;padding-left:0;border-left:0;padding-top:8px;border-top:1px solid var(--members-am-chrome-border,#c3c4c7);width:100%}}.members-am-toolbar-loading{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;margin-left:4px;color:var(--members-am-muted,#646970);font-size:13px;line-height:1}.members-am-toolbar-loading .spinner{float:none;margin:0}.members-am-toolbar-loading[hidden]{display:none !important}.members-am-copy-wrap label{margin-right:8px}.members-am-chips{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:8px;margin-bottom:12px}.members-am-chip{border-radius:999px;padding:4px 12px;border:1px solid var(--members-am-chrome-border,#c3c4c7);background:var(--members-am-chrome-bg,#f6f7f7);cursor:pointer}.members-am-chip.is-active{background:var(--members-am-accent-use);border-color:var(--members-am-accent-use);color:var(--wp-components-color-accent-inverted,#fff)}.members-am-carousel-wrap{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;gap:8px;margin-bottom:8px}.members-am-carousel-prev,.members-am-carousel-next{-ms-flex-item-align:center;align-self:center;width:36px;height:36px;border-radius:50%;border:1px solid var(--members-am-chrome-border,#c3c4c7);background:var(--wp-components-color-background,#fff);cursor:pointer}.members-am-columns{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-ms-flex:1;flex:1;gap:12px;min-height:320px;overflow:hidden}.members-am-column{-webkit-box-flex:1;-ms-flex:1;flex:1;min-width:0;background:var(--members-am-base,#1d2327);border-radius:4px;color:var(--members-am-fg-on-base,#f0f0f1);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.members-am-user-column{border:2px dashed var(--wp-components-color-gray-700,#8c8f94)}.members-am-sidebar-head{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:8px 10px;background:var(--members-am-surface-use);border-radius:4px 4px 0 0;font-weight:600;font-size:12px;text-transform:uppercase;letter-spacing:.04em;color:var(--members-am-fg-on-surface,var(--members-am-fg-on-base,#f0f0f1))}.members-am-col-filter{padding:6px 8px 8px;border-bottom:1px solid var(--members-am-border-on-base,var(--members-am-border-on-base-fallback));-ms-flex-negative:0;flex-shrink:0}.members-am-col-filter-input{width:100%;max-width:100%;-webkit-box-sizing:border-box;box-sizing:border-box;font-size:12px;line-height:1.4;padding:4px 8px;border-radius:2px;border:1px solid var(--members-am-border-on-base,var(--members-am-border-on-base-fallback));background:var(--members-am-base,#1d2327);color:var(--members-am-fg-on-base,#f0f0f1)}.members-am-col-filter-input::-webkit-input-placeholder{color:var(--members-am-fg-muted-on-base,var(--wp-components-color-gray-700,#8c8f94));opacity:1}.members-am-col-filter-input::-moz-placeholder{color:var(--members-am-fg-muted-on-base,var(--wp-components-color-gray-700,#8c8f94));opacity:1}.members-am-col-filter-input:-ms-input-placeholder{color:var(--members-am-fg-muted-on-base,var(--wp-components-color-gray-700,#8c8f94));opacity:1}.members-am-col-filter-input::-ms-input-placeholder{color:var(--members-am-fg-muted-on-base,var(--wp-components-color-gray-700,#8c8f94));opacity:1}.members-am-col-filter-input::placeholder{color:var(--members-am-fg-muted-on-base,var(--wp-components-color-gray-700,#8c8f94));opacity:1}.members-am-col-filter-input:focus{border-color:var(--members-am-accent-use);outline:1px solid transparent;-webkit-box-shadow:0 0 0 var(--wp-admin-border-width-focus,1px) var(--members-am-accent-use);box-shadow:0 0 0 var(--wp-admin-border-width-focus,1px) var(--members-am-accent-use)}.members-am-col-bulk{padding:0 8px 8px;border-bottom:1px solid var(--members-am-border-on-base,var(--members-am-border-on-base-fallback));-ms-flex-negative:0;flex-shrink:0}.members-am-col-bulk-toolbar,.members-am-col-collapse-toolbar{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:6px;margin-bottom:6px;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.members-am-col-bulk-toolbar .button.button-small,.members-am-col-collapse-toolbar .button.button-small{font-size:11px;min-height:26px;line-height:24px;padding:0 8px;background:var(--members-am-surface-use);border-color:var(--members-am-border-on-surface,var(--members-am-border-on-base,var(--members-am-border-on-base-fallback)));color:var(--members-am-fg-on-surface,var(--members-am-fg-on-base,#f0f0f1))}.members-am-col-bulk-toolbar .button.button-small:hover,.members-am-col-collapse-toolbar .button.button-small:hover{background:color-mix(in srgb,var(--members-am-surface-use) 85%,#fff 15%);border-color:var(--wp-components-color-gray-700,#8c8f94);color:var(--members-am-fg-on-surface,var(--members-am-fg-on-base,#f0f0f1))}.members-am-item-lead{-ms-flex-negative:0;flex-shrink:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:22px;padding:2px 0 0}.members-am-collapse-spacer{display:block;width:20px;height:20px;-ms-flex-negative:0;flex-shrink:0}.members-am-collapse-toggle{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:22px;height:22px;margin:0;padding:0;border:0;background:transparent;color:var(--members-am-fg-muted-on-base,var(--members-am-chrome-border,#c3c4c7));border-radius:2px;cursor:pointer;-ms-flex-negative:0;flex-shrink:0}.members-am-collapse-toggle:hover,.members-am-collapse-toggle:focus{color:var(--members-am-fg-on-base,#f0f0f1);background:color-mix(in srgb,var(--members-am-fg-on-base,#f0f0f1) 12%,transparent);outline:0}.members-am-collapse-toggle .dashicons{font-size:18px;width:18px;height:18px}.members-am-item-cb-wrap{-ms-flex-negative:0;flex-shrink:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;padding:2px 4px 0 0}.members-am-item-cb{margin:0;width:16px;height:16px;-ms-flex-negative:0;flex-shrink:0}.members-am-bulk-select{width:100%;max-width:100%;-webkit-box-sizing:border-box;box-sizing:border-box;font-size:12px;line-height:1.4;padding:4px 8px;border-radius:2px;border:1px solid var(--members-am-border-on-base,var(--members-am-border-on-base-fallback));background:var(--members-am-base,#1d2327);color:var(--members-am-fg-on-base,#f0f0f1)}.members-am-bulk-select:focus{border-color:var(--members-am-accent-use);outline:1px solid transparent;-webkit-box-shadow:0 0 0 var(--wp-admin-border-width-focus,1px) var(--members-am-accent-use);box-shadow:0 0 0 var(--wp-admin-border-width-focus,1px) var(--members-am-accent-use)}.members-am-item.members-am-filter-hidden,.members-am-sep.members-am-filter-hidden,.members-am-item.members-am-collapse-hidden{display:none !important}.members-am-col-move button{margin-left:4px;padding:0 6px;min-height:24px;line-height:22px;font-size:11px}.members-am-sidebar-list{padding:6px 0 12px;overflow-y:auto;max-height:480px}.members-am-item{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;gap:4px;padding:6px 10px 6px 6px;cursor:pointer;border-left:3px solid transparent;font-size:13px}.members-am-item.is-sub{padding-left:22px;font-size:12px;opacity:.95}.members-am-item.is-sub-deep{padding-left:36px}.members-am-sidebar-list .members-am-item{cursor:-webkit-grab;cursor:grab}.members-am-sidebar-list .members-am-item:active{cursor:-webkit-grabbing;cursor:grabbing}.members-am-sort-placeholder{-webkit-box-sizing:border-box;box-sizing:border-box;min-height:36px;margin:2px 0;background:color-mix(in srgb,var(--members-am-accent-use) 8%,transparent);border:1px dashed var(--members-am-accent-use);border-radius:2px}.members-am-item.is-hidden{opacity:.18}.members-am-item.is-no-cap{opacity:.35}.members-am-item.is-no-cap.is-hidden{opacity:.15}.members-am-item.is-selected{border-left-color:var(--members-am-accent-use);background:color-mix(in srgb,var(--members-am-accent-use) 15%,transparent)}.members-am-item-main{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;min-width:0}.members-am-item-main .dashicons{font-size:18px;width:18px;height:18px}.members-am-item-label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.members-am-item-actions{display:none;gap:2px}.members-am-item:hover .members-am-item-actions{display:-webkit-box;display:-ms-flexbox;display:flex}.members-am-item-actions button{min-height:22px;padding:0 4px;line-height:20px;font-size:11px}.members-am-sep{text-align:center;opacity:.35;font-size:11px;padding:4px 0}.members-am-carousel-dots{text-align:center;margin-bottom:4px}.members-am-dot{width:8px;height:8px;border-radius:50%;border:0;margin:0 4px;padding:0;background:var(--members-am-chrome-border,#c3c4c7);cursor:pointer}.members-am-dot.is-active{background:var(--members-am-accent-use)}.members-am-carousel-status{text-align:center;color:var(--members-am-muted,#646970);font-size:12px;margin-top:0}.members-am-badge{font-size:9px;text-transform:uppercase;padding:1px 4px;border-radius:2px;margin-right:4px;vertical-align:middle}.members-am-badge-new{background:var(--members-am-accent-use);color:var(--wp-components-color-accent-inverted,#fff)}.members-am-badge-edit{background:#dba617;color:var(--members-am-base,#1d2327)}.members-am-badge-nocap{background:var(--wp-components-color-gray-700,#8c8f94);color:var(--wp-components-color-accent-inverted,#fff)}.members-am-legend{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:16px;margin:0 0 8px;padding:0;font-size:12px;color:var(--members-am-muted,#646970)}.members-am-legend-item{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:4px}.members-am-edit-panel{margin-top:20px;padding:16px;border:1px solid var(--members-am-chrome-border,#c3c4c7);background:var(--wp-components-color-background,#fff);border-radius:4px}.members-am-edit-panel-header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:12px}.members-am-edit-panel-header h2{margin:0;font-size:16px}.members-am-edit-toolbar{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:12px;margin-bottom:12px}.members-am-edit-target-wrap select{margin-left:8px}.members-am-level-actions .button{margin-right:6px}.members-am-demote-wrap{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:6px}.members-am-demote-wrap .members-am-demote-select{min-width:200px;max-width:min(320px,100%)}.members-am-edit-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:16px}.members-am-edit-col label{display:block;font-weight:600;margin-bottom:4px}.members-am-colors-hint{margin:0 0 10px}.members-am-colors-readable-wrap{margin:8px 0 0}.members-am-icon-tabs{margin-bottom:8px}.members-am-icon-tabs .button{margin-right:4px;margin-bottom:4px}.members-am-icon-tabs .button.is-active{background:var(--members-am-accent-use);border-color:var(--members-am-accent-use);color:var(--wp-components-color-accent-inverted,#fff)}.members-am-icon-grid{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:4px;max-height:160px;overflow-y:auto;border:1px solid var(--wp-components-color-gray-200,#dcdcde);padding:8px;background:var(--members-am-chrome-bg,#f6f7f7);margin-bottom:8px}.members-am-icon-pick{width:36px;height:36px;padding:0;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;border:1px solid var(--members-am-chrome-border,#c3c4c7);background:var(--wp-components-color-background,#fff);cursor:pointer}.members-am-bulk-visibility-hint{margin:0 0 8px;font-size:12px;color:var(--members-am-fg-muted-on-base,#646970)}.members-am-vis-role-filter-wrap{margin-bottom:8px}.members-am-vis-row.members-am-vis-filter-hidden{display:none}.members-am-vis-row{display:block;margin-bottom:6px;font-weight:normal}.members-am-reset-dropdown{position:absolute;z-index:100000;background:var(--wp-components-color-background,#fff);border:1px solid var(--members-am-chrome-border,#c3c4c7);border-radius:6px;padding:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-shadow:0 4px 12px rgba(0,0,0,0.15);box-shadow:0 4px 12px rgba(0,0,0,0.15);min-width:280px;top:100%;left:0;margin-top:4px;overflow:hidden}.members-am-reset-title{padding:10px 14px;font-weight:600;font-size:13px;border-bottom:1px solid var(--wp-components-color-gray-200,#f0f0f0);color:var(--wp-components-color-foreground,#1d2327)}.members-am-reset-dropdown>.members-am-reset-option:last-of-type{border-bottom:0}.members-am-reset-option{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;gap:10px;padding:12px 14px;border:0;background:0;cursor:pointer;text-align:left;width:100%;border-bottom:1px solid var(--wp-components-color-gray-200,#f0f0f0);-webkit-transition:background .15s;transition:background .15s}.members-am-reset-option:hover{background:var(--members-am-chrome-bg,#f6f7f7)}.members-am-reset-option .dashicons{margin-top:2px;color:var(--members-am-muted,#646970)}.members-am-reset-option-text{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:2px}.members-am-reset-option-text strong{font-size:13px;color:var(--wp-components-color-foreground,#1d2327)}.members-am-reset-option-text small{font-size:12px;color:var(--members-am-muted,#646970)}.members-am-reset-danger:hover{background:#fcf0f1}.members-am-reset-danger .dashicons{color:#d63638}.members-am-reset-danger:hover strong{color:#d63638}@media screen and (max-width:782px){.members-am-columns{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}}.members-am-user-suggestions{position:absolute;z-index:100;background:var(--wp-components-color-background,#fff);border:1px solid var(--members-am-chrome-border,#c3c4c7);border-radius:4px;max-height:200px;overflow-y:auto;width:100%;-webkit-box-shadow:0 2px 6px rgba(0,0,0,0.15);box-shadow:0 2px 6px rgba(0,0,0,0.15);top:100%;left:0}.members-am-user-suggestion{padding:8px 12px;cursor:pointer;font-size:13px;border-bottom:1px solid var(--wp-components-color-gray-200,#f0f0f0)}.members-am-user-suggestion:hover{background:color-mix(in srgb,var(--members-am-accent-use) 8%,var(--wp-components-color-background,#fff))}.members-am-user-suggestion:last-child{border-bottom:0}#members-am-import-file.members-am-import-file-hidden{display:none}.members-am-user-search-wrap{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px}#members-am-user-search.members-am-user-search-input{width:168px;max-width:100%}.members-am-legend-visibility-icon{font-size:14px;width:14px;height:14px;vertical-align:middle}.members-am-legend-nocap-badge{display:inline-block;background:#8c8f94;color:#fff;font-size:9px;padding:1px 4px;border-radius:2px;vertical-align:middle}#members-am-icon-preview.members-am-icon-preview{display:none;width:32px;height:32px;-o-object-fit:contain;object-fit:contain;margin-bottom:6px;border:1px solid #ddd;border-radius:3px;padding:2px;background:#f0f0f1}.members-am-icons .members-am-icon-upload-desc{margin-top:4px}#adminmenu .members-am-menu-badge{display:inline-block;color:#fff;font-size:9px;padding:1px 5px;border-radius:2px;line-height:1.4;vertical-align:middle}
\ No newline at end of file
diff --git a/js/admin-menus.min.js b/js/admin-menus.min.js
index f3a4bb3..0d3c481 100644
--- a/js/admin-menus.min.js
+++ b/js/admin-menus.min.js
@@ -1 +1 @@
-!function(I){"use strict";var P={settings:I.extend(!0,{},membersAdminMenus.settings),tree:[],activeRoleSlugs:[],carouselPage:0,columnsPerPage:3,selectedId:null,iconTab:"dashicons",previewUserId:null,previewUserRoles:[],userSuggestions:[],mediaFrame:null,allowUnload:!1,syncScroll:function(){try{return"0"!==localStorage.getItem("members_am_sync_scroll")}catch(e){return!0}}(),columnFilters:{},columnBulkSelection:{},collapsedParents:{}},a="",p=!1;function t(){return function r(n){if(null===n)return"null";var e=typeof n;return"string"==e||"number"==e||"boolean"==e?JSON.stringify(n):"undefined"==e?"null":Array.isArray(n)?"["+n.map(function(e){return r(e)}).join(",")+"]":"object"!=e?JSON.stringify(n):"{"+Object.keys(n).sort().map(function(e){return JSON.stringify(e)+":"+r(n[e])}).join(",")+"}"}(P.settings)}function s(){if(!P.allowUnload&&t()!==a)return membersAdminMenus.i18n&&membersAdminMenus.i18n.unsavedChanges||""}var i="members_am_notice";function f(e,r){if(r){var n=I("#members-am-notices");n.length||(I(".members-admin-menus-wrap h1").first().after('
'),n=I("#members-am-notices"));var a=I("
",{class:"notice is-dismissible"}).addClass("notice-"+(e||"info"));a.append(I("
").text(r)),n.prepend(a),I(document).trigger("wp-notice-added")}}function o(e,r){try{sessionStorage.setItem(i,JSON.stringify({type:e||"success",message:r}))}catch(e){}}var e=["dashicons-menu","dashicons-admin-dashboard","dashicons-admin-post","dashicons-admin-page","dashicons-admin-media","dashicons-admin-comments","dashicons-admin-appearance","dashicons-admin-plugins","dashicons-admin-users","dashicons-admin-tools","dashicons-admin-settings","dashicons-admin-generic","dashicons-edit","dashicons-plus","dashicons-chart-bar","dashicons-cart","dashicons-products","dashicons-email","dashicons-groups","dashicons-heart","dashicons-star-filled","dashicons-smiley","dashicons-info","dashicons-lock","dashicons-unlock","dashicons-visibility","dashicons-hidden","dashicons-arrow-up","dashicons-arrow-down","dashicons-admin-network","dashicons-performance"],r=["fa-solid fa-house","fa-solid fa-user","fa-solid fa-gear","fa-solid fa-file","fa-solid fa-image","fa-solid fa-cart-shopping","fa-solid fa-chart-line","fa-solid fa-envelope","fa-solid fa-book","fa-solid fa-link","fa-solid fa-bell","fa-solid fa-star","fa-solid fa-heart","fa-solid fa-lock","fa-solid fa-unlock","fa-solid fa-pen","fa-solid fa-trash","fa-solid fa-plus","fa-solid fa-minus"],m="members_am_view_state";function l(){try{localStorage.setItem(m,JSON.stringify({activeRoleSlugs:P.activeRoleSlugs,carouselPage:P.carouselPage}))}catch(e){}}function c(e){return JSON.parse(JSON.stringify(e))}var d=null;function h(){d=c(P.settings),u()}function u(){var e=I("#members-am-undo");if(e.length){var r=!!d;e.prop("disabled",!r).attr("aria-disabled",r?"false":"true")}}function b(){return membersAdminMenus.roles||[]}function v(){P.settings._meta&&!Array.isArray(P.settings._meta)||(P.settings._meta={version:3,admin_editable:!1}),P.settings.roles&&!Array.isArray(P.settings.roles)||(P.settings.roles={}),P.settings.users&&!Array.isArray(P.settings.users)||(P.settings.users={}),Array.isArray(P.settings.custom_items)||(P.settings.custom_items=[]),P.settings.capabilities&&!Array.isArray(P.settings.capabilities)||(P.settings.capabilities={})}function E(e){v(),P.settings.roles[e]||(P.settings.roles[e]={hidden:[],order:[],submenu_order:{},overrides:{}});var r=P.settings.roles[e];return r.hidden&&Array.isArray(r.hidden)||(r.hidden=[]),r.order&&Array.isArray(r.order)||(r.order=[]),r.submenu_order&&!Array.isArray(r.submenu_order)||(r.submenu_order={}),r.overrides&&!Array.isArray(r.overrides)||(r.overrides={}),r}function S(e){v(),P.settings.users[e]||(P.settings.users[e]={});var r=P.settings.users[e];return r.hidden&&Array.isArray(r.hidden)||(r.hidden=[]),r.order&&Array.isArray(r.order)||(r.order=[]),r.overrides&&!Array.isArray(r.overrides)||(r.overrides={}),r.submenu_order&&!Array.isArray(r.submenu_order)||(r.submenu_order={}),r}function M(e,r){var n=function(e,r){for(var n=(e||[]).slice().sort(),a=null,s=0;s=s.length||(h(),s.splice(p,1),s.splice(f,0,o?u:r))}}function y(e){var r=e.id||"c";return"members-am-"+String(r).replace(/[^a-z0-9_-]/gi,"-").toLowerCase()}function k(e){return!!e&&0===(-1!==e.indexOf("::")?e.split("::").pop():e).indexOf("members-am-")}function _(e,r){if(!e||!r)return null;for(var n=0;ns&&(P.carouselPage=s))}}P.activeRoleSlugs=r.filter(function(e){return"administrator"!==e||n}),P.activeRoleSlugs.length||(P.activeRoleSlugs=["subscriber"])}function ie(){var a=I("#members-am-role-chips").empty();b().forEach(function(e){if("administrator"!==e.slug||P.settings._meta.admin_editable){var r=-1!==P.activeRoleSlugs.indexOf(e.slug),n=I(' ').text(e.label).attr("data-role",e.slug).toggleClass("is-active",r);a.append(n)}})}function oe(t,i,e,o,m){(function(e,r,n,a,s){s=s||0;var t=r.id,i=J(e,t),o=!D(e,r.cap),m=E(e).overrides[t]||{},l=m.label||r.title||t,c=I('
').attr("data-id",t).attr("data-menu-parent",n||"").toggleClass("is-hidden",i).toggleClass("is-no-cap",o).toggleClass("is-selected",P.selectedId===t).toggleClass("is-sub",0 ');if(p){G(d);var b=!!P.collapsedParents[d][t],h=u.expandSubmenus||"Expand submenu items",v=u.collapseSubmenus||"Collapse submenu items";I(' ').attr("aria-expanded",!b).attr("aria-label",(b?h:v)+": "+l).append(I(' ').addClass(b?"dashicons-arrow-right-alt2":"dashicons-arrow-down-alt2")).on("click",function(e){e.stopPropagation(),G(d),P.collapsedParents[d][t]=!P.collapsedParents[d][t],fe()}).appendTo(f),c.toggleClass("is-collapse-collapsed",b)}else f.append(I(' '));c.append(f);var g=u.bulkCheckboxAria||"Include in bulk actions",x=I(' '),y=I(' ').prop("checked",!!P.columnBulkSelection[d].ids[t]).attr("aria-label",g+": "+l).on("click",function(e){e.stopPropagation()}).on("change",function(e){e.stopPropagation(),K(d,t,I(this).prop("checked")),fe()});x.append(y),c.append(x);var k=I('
');if(0===s){var _=m.icon||r.icon,w=B(_,m.icon_type||r.icon_type);if("fontawesome"===w&&_)k.append(I(' '));else if("svg"!==w&&"image"!==w&&"custom"!==w||!_){var A=_&&0===_.indexOf("dashicons-")?_:"dashicons-admin-generic";k.append(I(' '))}else k.append(I(" ").attr("src",_).css({width:"20px",height:"20px",display:"inline-block",verticalAlign:"middle",objectFit:"contain",filter:"none"}))}r.custom&&k.append(I('custom '));m.label&&k.append(I('edit '));if(k.append(I(' ').text(l)),m.badge){var O=m.badge_bg||"#d63638";k.append(I(' ').text(m.badge).css({backgroundColor:O,color:"#fff",fontSize:"9px",padding:"1px 5px",borderRadius:"2px",marginLeft:"4px",whiteSpace:"nowrap"}))}if(o){var S=membersAdminMenus.i18n||{},M=S.noAccessTitlePattern&&S.noAccessTitlePattern.replace("%s",r.cap||"read")||"This role does not have the '"+(r.cap||"read")+"' capability on this role object. Users with multiple roles may still access the screen. Manage capabilities in Members → Roles.";k.append(I(' ').attr("title",M).html("🔒 no access"))}c.append(k),m.color_bg&&c.css("background-color",m.color_bg);m.color_text&&c.find(".members-am-item-label").css("color",m.color_text);m.color_icon&&(c.find(".dashicons").css("color",m.color_icon),c.find(".members-am-fa-icon i").css("color",m.color_icon),c.find("img").css("filter","none"));var C=I('
');C.append(I(' ').text("◉"),I(' ').text("↑"),I(' ').text("↓")),c.append(C),a.append(c)})(t,i,e,o,m=m||0),i.children&&i.children.length&&F(t,i.id).forEach(function(e){var r,n,a,s=(r=t,n=i.id,A(L(n,a=e))||(-1===a.indexOf("::")&&(E(r).overrides[a]||{}).parent===n?A(a):null));s&&"__promote__"!==(E(t).overrides[s.id]||{}).parent&&oe(t,s,i.id,o,m+1)})}function me(n,a,e,s,t,i){i=i||0,t.append(function(r,e,n,a){a=a||0;var s=M(n,r.id),t=s.label||r.title,i=function(e,r){var n=S(e);if(-1!==n.hidden.indexOf(r))return!0;var a=R(r,e);return!(!a||-1===n.hidden.indexOf(a))}(n,r.id),o=!function(e){if(!e||"read"===e)return 1;for(var r=P.previewUserRoles||[],n=0;n").addClass(l).attr("data-id",r.id).attr("data-menu-parent",e||""),d="u:"+n;z(d);var u=membersAdminMenus.i18n||{},p=r.children&&r.children.length,f=I(' ');if(p){G(d);var b=!!P.collapsedParents[d][r.id],h=u.expandSubmenus||"Expand submenu items",v=u.collapseSubmenus||"Collapse submenu items";I(' ').attr("aria-expanded",!b).attr("aria-label",(b?h:v)+": "+t).append(I(' ').addClass(b?"dashicons-arrow-right-alt2":"dashicons-arrow-down-alt2")).on("click",function(e){e.stopPropagation(),G(d),P.collapsedParents[d][r.id]=!P.collapsedParents[d][r.id],fe()}).appendTo(f),c.toggleClass("is-collapse-collapsed",b)}else f.append(I(' '));c.append(f);var g=u.bulkCheckboxAria||"Include in bulk actions",x=I(' '),y=I(' ').prop("checked",!!P.columnBulkSelection[d].ids[r.id]).attr("aria-label",g+": "+t).on("click",function(e){e.stopPropagation()}).on("change",function(e){e.stopPropagation(),K(d,r.id,I(this).prop("checked")),fe()});x.append(y),c.append(x);var k=I('
');if(0===a){var _=s.icon||r.icon,w=B(_,s.icon_type||r.icon_type);"fontawesome"===w&&_?k.append(I(' ')):"svg"!==w&&"image"!==w&&"custom"!==w||!_?_&&0===_.indexOf("dashicons-")?k.append(I(' ')):k.append(I(' ')):k.append(I(" ").attr("src",_).css({width:"20px",height:"20px",display:"inline-block",verticalAlign:"middle",objectFit:"contain",filter:"none"}))}r.custom&&k.append(I('custom '));s.label&&k.append(I('edit '));if(k.append(I(' ').text(t)),s.badge){var A=s.badge_bg||"#d63638";k.append(I(' ').text(s.badge).css({backgroundColor:A,color:"#fff",fontSize:"9px",padding:"1px 5px",borderRadius:"2px",marginLeft:"4px",whiteSpace:"nowrap"}))}o&&k.append(I('🔒 no access "));c.append(k),s.color_bg&&c.css("background-color",s.color_bg);s.color_text&&c.find(".members-am-item-label").css("color",s.color_text);s.color_icon&&(c.find(".dashicons").css("color",s.color_icon),c.find(".members-am-fa-icon i").css("color",s.color_icon));var O=I('
');return O.append(I(' ').text(i?"◯":"◉"),I(' ').text("↑"),I(' ').text("↓")),c.append(O),c.on("click",function(e){I(e.target).closest("button, .members-am-item-cb, .members-am-collapse-toggle").length||(P.selectedId=r.id,Ie())}),c}(a,e,n,i)),a.children&&a.children.length&&function(e,r){var n=N(r),a=S(e);P.tree.forEach(function(e){e&&e.id&&-1===e.id.indexOf("::")&&(a.overrides&&a.overrides[e.id]||{}).parent===r&&-1===n.indexOf(e.id)&&n.push(e.id)});var s=a.submenu_order&&a.submenu_order[r];if(!s||!s.length)return n.slice();var t=s.filter(function(e){return-1!==n.indexOf(e)});return n.forEach(function(e){-1===t.indexOf(e)&&t.push(e)}),t}(n,a.id).forEach(function(e){var r=function(e,r,n){var a=A(L(r,n));if(a)return a;if(-1===n.indexOf("::")){var s=S(e);if((s.overrides&&s.overrides[n]||{}).parent===r)return A(n)}return null}(n,a.id,e);r&&"__promote__"!==(s.overrides&&s.overrides[r.id]||{}).parent&&me(n,r,a.id,s,t,i+1)})}function le(e,r){var s=(r||"").trim().toLowerCase(),n=e.children(".members-am-item");if(!s)return n.removeClass("members-am-filter-hidden"),void e.children(".members-am-sep").removeClass("members-am-filter-hidden");var i={};n.each(function(){var e=I(this),r=e.attr("data-id"),n=(e.find(".members-am-item-label").first().text()||"").toLowerCase(),a=(r||"").toLowerCase();i[r]=-1!==n.indexOf(s)||-1!==a.indexOf(s)});var o={};n.each(function(){var e=I(this).attr("data-id"),r=I(this).attr("data-menu-parent")||"";o[r]||(o[r]=[]),o[r].push(e)});var m={};function l(e){var r,n=i[e],a=o[e]||[],s=!1;for(r=0;r '),o=I(' ').attr("placeholder",s).attr("aria-label",t).val(a);i.append(o),e.find(".members-am-sidebar-head").first().after(i),o.on("input",function(){P.columnFilters[n]=I(this).val(),le(r,I(this).val())}),le(r,a)}function de(e,r){var t=0===String(r).indexOf("u:"),i=t?parseInt(r.replace(/^u:/,""),10):0,o=t?null:r,m=r,l=membersAdminMenus.i18n||{},n=I('
').attr("data-column-key",m),a=I('
');a.append(I(' ').text(l.bulkSelectVisible||"Select visible"),I(' ').text(l.bulkClearSelection||"Clear selection"));var s=I('
');s.append(I(' ').text(l.collapseAllMenus||"Collapse all"),I(' ').text(l.expandAllMenus||"Expand all"));var c=I(' ').attr("aria-label",l.bulkVisibilityLabel||"Menu visibility for this column");c.append(I(' ').text(l.bulkActionsPlaceholder||"Choose visibility…"));var d=I(" ").attr("label",l.bulkGroupWholeColumn||"Whole column");d.append(I(' ').text(l.bulkShowAllItems||"Show every menu item"),I(' ').text(l.bulkHideAllItems||"Hide every menu item"));var u=I(" ").attr("label",l.bulkGroupCheckedRows||"Checked rows");u.append(I(' ').text(l.bulkKeepOnlyCheckedVisible||"Keep only checked visible"),I(' ').text(l.bulkHideCheckedItems||"Hide checked items"),I(' ').text(l.bulkShowCheckedItems||"Show checked items")),c.append(d,u),n.append(a,s,c);var p=e.find(".members-am-col-filter").first();p.length?p.after(n):e.find(".members-am-sidebar-head").first().after(n),c.on("change",function(){var e=I(this).val();if(I(this).val(""),e)if(!("keep-only-checked"===e||"hide-checked"===e||"show-checked"===e)||W(m).length){if("keep-only-checked"===e){if(!window.confirm(l.bulkConfirmKeepOnlyChecked||"Hide all items except checked items and their parent menus?"))return}else if("hide-all"===e){if(!window.confirm(l.bulkConfirmHideAll||"Hide every menu item in this column?"))return}else if("hide-checked"===e&&!window.confirm(l.bulkConfirmHideChecked||"Hide the checked items (and their submenus where applicable)?"))return;var r,n,a,s;h(),t?"show-all"===e?S(i).hidden=[]:"hide-all"===e?(a=i,s=H(),S(a).hidden=s.slice()):"keep-only-checked"===e?function(e,n){var r=W(e);if(r.length){var a={};r.forEach(function(e){for(var r=e;r;)a[r]=!0,r=R(r,n)});var s=H(),t=S(n).hidden;t.length=0,s.forEach(function(e){a[e]||t.push(e)})}}(m,i):"hide-checked"===e?Z(m,i):"show-checked"===e&&ee(m,i):"show-all"===e?E(o).hidden=[]:"hide-all"===e?(r=o,n=H(),E(r).hidden=n.slice()):"keep-only-checked"===e?function(e,n){var r=W(e);if(r.length){var a={};r.forEach(function(e){for(var r=e;r;)a[r]=!0,r=C(r,n)});var s=H(),t=E(n).hidden;t.length=0,s.forEach(function(e){a[e]||t.push(e)})}}(m,o):"hide-checked"===e?X(m,o):"show-checked"===e&&Y(m,o),Ie()}else f("warning",l.bulkSelectCheckedFirst||"Check one or more menu items first.")})}function ue(e){return-1!==e.indexOf("::")?e.split("::").pop():e}function pe(){I.fn.sortable&&I("#members-am-columns .members-am-sidebar-list").each(function(){var e=I(this);e.data("ui-sortable")&&e.sortable("destroy");var r=e.closest(".members-am-column"),n=r.data("role"),a=r.data("user");e.sortable({axis:"y",distance:6,items:"> .members-am-item, > .members-am-sep",cancel:".members-am-item-actions button, .members-am-item-cb, .members-am-item-cb-wrap, .members-am-collapse-toggle",placeholder:"members-am-sort-placeholder",forcePlaceholderSize:!0,tolerance:"pointer",start:function(){h()},update:function(){a?function(e,r){var s=[],t={};e.children().each(function(){var e=I(this);if(e.hasClass("members-am-sep")){var r=e.attr("data-sep-id");r&&s.push(r)}else if(e.hasClass("members-am-item")){var n=e.attr("data-id");if(n){var a=e.attr("data-menu-parent");void 0===a||""===a?s.push(n):(t[a]||(t[a]=[]),t[a].push(ue(n)))}}});var n=S(r);n.order=s,n.submenu_order=t}(e,a):n&&function(e,r){var s=[],t={};e.children().each(function(){var e=I(this);if(e.hasClass("members-am-sep")){var r=e.attr("data-sep-id");r&&s.push(r)}else if(e.hasClass("members-am-item")){var n=e.attr("data-id");if(n){var a=e.attr("data-menu-parent");void 0===a||""===a?s.push(n):(t[a]||(t[a]=[]),t[a].push(ue(n)))}}});var n=E(r);n.order=s,n.submenu_order=t}(e,n),be()}})})}function fe(){var n=I("#members-am-columns"),a={};n.find(".members-am-column").each(function(){var e=I(this).data("role");if(e){var r=I(this).find(".members-am-sidebar-list");r.length&&(a[e]=r.scrollTop())}}),n.empty();var e=P.carouselPage*P.columnsPerPage;if(P.activeRoleSlugs.slice(e,e+P.columnsPerPage).forEach(function(e){var r=I('
');!function(n,e){e.empty();var r=I(''),a=(b().filter(function(e){return e.slug===n})[0]||{}).label||n;r.append(I('').text(a)),r.append(I(' ').append(I(' ').text("◀"),I(' ').text("▶"))),e.append(r);var s=I('');j(n).forEach(function(e){if(0!==e.indexOf("sep-")){var r=A(e);r&&oe(n,r,null,s,0)}else s.append(I('
').attr("data-sep-id",e).text("—"))}),e.append(s),$(s,n),ce(e,s,n),de(e,n)}(e,r),n.append(r),a[e]&&r.find(".members-am-sidebar-list").scrollTop(a[e])}),P.previewUserId){var s=P.previewUserId,r=I('
'),t=I('');t.append(I(" ").text(P.previewUserLabel||"User #"+s)),t.append(I('× ').on("click",function(){P.previewUserId=null,P.previewUserLabel=null,P.previewUserRoles=[],Ie()})),r.append(t);var i=I(''),o=S(s);g(s).forEach(function(e){if(0!==e.indexOf("sep-")){var r=A(e);r&&me(s,r,null,o,i,0)}else i.append(I('
').attr("data-sep-id",e).text("——"))}),r.append(i),$(i,"u:"+s),ce(r,i,"u:"+s),de(r,"u:"+s),n.append(r)}if(P.syncScroll){var m=n.find(".members-am-sidebar-list"),l=!1;m.on("scroll",function(){if(!l){l=!0;var e=I(this).scrollTop();m.not(this).scrollTop(e),l=!1}})}!function(){var e=Math.max(1,Math.ceil(P.activeRoleSlugs.length/P.columnsPerPage)),r=(Math.min(P.carouselPage+1,e),P.carouselPage*P.columnsPerPage+1),n=Math.min((P.carouselPage+1)*P.columnsPerPage,P.activeRoleSlugs.length);I("#members-am-carousel-status").text(r+"–"+n+" "+membersAdminMenus.i18n.of+" "+P.activeRoleSlugs.length);for(var a=I("#members-am-carousel-dots").empty(),s=0;s ').toggleClass("is-active",s===P.carouselPage))}(),pe()}function be(){if(P.selectedId){I("#members-am-edit-panel").removeAttr("hidden");var e=A(P.selectedId),r=ae()||{};I("#members-am-edit-title").text(e?e.title:P.selectedId),I("#members-am-edit-label").val(r.label||e&&e.title||"");var n=k(P.selectedId);I("#members-am-edit-url-wrap").toggle(n),I("#members-am-edit-url").attr("placeholder","Override URL (leave empty for default)").val(n&&(r.url||e&&e.url)||"").data("default-url",e&&e.url||""),I("#members-am-icon-type").val(r.icon_type||"dashicon"),I("#members-am-icon-value").val(r.icon||e&&e.icon||"");var a=r.icon||e&&e.icon||"",s=B(a,r.icon_type||e&&e.icon_type||"");"image"!==s&&"custom"!==s&&"svg"!==s||!a?I("#members-am-icon-preview").hide():I("#members-am-icon-preview").show().attr("src",a),I("#members-am-color-bg").val(r.color_bg||""),I("#members-am-color-text").val(r.color_text||""),I("#members-am-color-icon").val(r.color_icon||""),I("#members-am-badge-text").val(r.badge||""),I("#members-am-badge-bg").val(r.badge_bg||""),I("#members-am-item-cap").attr("placeholder",e&&e.cap?e.cap+" (default)":"").val(P.settings.capabilities[P.selectedId]||"");var t=e&&e.custom,i=I("#members-am-remove-custom");t?i.removeAttr("hidden"):i.attr("hidden","hidden"),I("#members-am-visibility-toggles").empty();var o=e&&e.cap||"read",m=[];if(b().forEach(function(e){"administrator"===e.slug&&!P.settings._meta.admin_editable||m.push(e)}),10<=m.length){var l=membersAdminMenus.i18n&&membersAdminMenus.i18n.filterRolesVisibility||"Filter roles…",c=membersAdminMenus.i18n&&membersAdminMenus.i18n.filterRolesVisibilityLabel||"Filter roles in this list",d=I('
'),u=I(' ').attr("placeholder",l).attr("aria-label",c);d.append(u),I("#members-am-visibility-toggles").append(d),u.on("input",function(){var s=(I(this).val()||"").trim().toLowerCase();I("#members-am-visibility-toggles .members-am-vis-row").each(function(){var e=I(this),r=(e.find("span").first().text()||"").toLowerCase(),n=String(e.find(".members-am-vis-cb").data("role")||"").toLowerCase(),a=!s||-1!==r.indexOf(s)||-1!==n.indexOf(s);e.toggleClass("members-am-vis-filter-hidden",!a)})})}m.forEach(function(e){var r=J(e.slug,P.selectedId),n=D(e.slug,o),a=I(' ').attr("data-role",e.slug).prop("checked",!r&&n);n||a.prop("disabled",!0);var s=I(' ').append(a,I(" ").text(e.label));n||(s.append(I(" ").text(" — no capability").css({color:"#999",fontStyle:"italic",marginLeft:"4px"})),s.css("opacity","0.5")),I("#members-am-visibility-toggles").append(s)}),I(".members-am-color").each(function(){I(this).data("wpWpColorPicker")&&I(this).wpColorPicker("destroy")}),I(".members-am-color").wpColorPicker({change:function(){p||setTimeout(function(){ge()},20)},clear:function(){p||setTimeout(function(){ge()},20)}}),p=!0,I(".members-am-color").each(function(){var e=I(this),r=String(e.val()||"").trim();if(r&&"#"!==r&&e.data("wpWpColorPicker"))try{e.wpColorPicker("color",r)}catch(e){}}),p=!1,xe(),function(){var e=I(".members-am-demote-wrap"),n=I("#members-am-demote-parent"),r=I("#members-am-demote");if(!P.selectedId)return e.attr("hidden",!0);if(O(P.selectedId))return e.attr("hidden",!0);var a=re()[0]||P.activeRoleSlugs[0];if(a&&U(a,P.selectedId))return e.attr("hidden",!0);e.removeAttr("hidden");var s=P.selectedId,t=membersAdminMenus.i18n&&membersAdminMenus.i18n.selectParentMenu||"";n.empty().append(I(" ").val("").text(t));var i=0;P.tree.forEach(function(e){if(e&&e.id&&e.id!==s){var r=e.title&&String(e.title).trim()?e.title:e.id;n.append(I(" ").val(e.id).text(r)),i++}});var o=0 ');"dashicons"===n?r.append(I(' ')):r.append(I(' ')),r.on("click",function(){I("#members-am-icon-value").val(e),I("#members-am-icon-type").val("dashicons"===n?"dashicon":"fontawesome"),ge()}),s.append(r)}})}function ye(e,r){var n=P.activeRoleSlugs.indexOf(e);if(-1!==n){var a=n+r;if(!(a<0||a>=P.activeRoleSlugs.length)){h();var s=P.activeRoleSlugs[n];P.activeRoleSlugs[n]=P.activeRoleSlugs[a],P.activeRoleSlugs[a]=s,l(),Ie()}}}function ke(e,r,n){var a,s,t,i=E(e).overrides[r]||{},o=null;if("__promote__"===i.parent?o=null:-1!==r.indexOf("::")?o=O(r):i.parent&&"__promote__"!==i.parent&&(o=i.parent),o){var m=E(e).submenu_order;m[o]||(m[o]=(a=e,t=N(s=o),P.tree.forEach(function(e){e&&e.id&&-1===e.id.indexOf("::")&&(E(a).overrides[e.id]||{}).parent===s&&-1===t.indexOf(e.id)&&t.push(e.id)}),t));var l=m[o],c=-1!==r.indexOf("::")?r.split("::").pop():r;if(-1===(u=l.indexOf(c)))return;if((p=u+n)<0||p>=l.length)return;h();var d=l[u];l[u]=l[p],l[p]=d}else{E(e).order&&E(e).order.length||(E(e).order=T());var u,p,f=E(e).order;if(-1===(u=f.indexOf(r)))return;if((p=u+n)<0||p>=f.length)return;h();var b=f[u];f[u]=f[p],f[p]=b}Ie()}function _e(){var e=re();if(e.length){h();var a="sep-"+Date.now();e.forEach(function(e){E(e).order&&E(e).order.length||(E(e).order=T());var r=E(e).order,n=P.selectedId?r.indexOf(P.selectedId):r.length-1;n<0&&(n=r.length),r.splice(n+1,0,a)}),Ie()}}function we(e){var r=I("#members-am-toolbar-loading");r.removeAttr("hidden"),r.find(".spinner").addClass("is-active"),r.find(".members-am-loading-text").text(e||""),I("#members-am-save, #members-am-reset, #members-am-import, #members-am-copy-apply, #members-am-undo").prop("disabled",!0)}function Ae(){var e=I("#members-am-toolbar-loading");e.attr("hidden",!0),e.find(".spinner").removeClass("is-active"),e.find(".members-am-loading-text").text(""),I("#members-am-save, #members-am-reset, #members-am-import, #members-am-copy-apply").prop("disabled",!1),u()}function Oe(e){we(e||membersAdminMenus.i18n&&membersAdminMenus.i18n.saving||"Saving…");var s=membersAdminMenus.i18n&&membersAdminMenus.i18n.networkError||"Could not save settings. Check your connection and try again.";I.ajax({url:membersAdminMenus.ajaxUrl,type:"POST",dataType:"json",timeout:6e4,data:{action:"members_admin_menus_save",nonce:membersAdminMenus.nonce,settings:JSON.stringify(P.settings)}}).done(function(e){if(e&&void 0!==e.success){if(e.success)return a=t(),d=null,u(),void f("success",e.data&&e.data.message||membersAdminMenus.i18n&&membersAdminMenus.i18n.saved||"Settings saved.");f("error",e.data&&e.data.message?e.data.message:"Error")}else f("error",s)}).fail(function(e,r){if("abort"!==r){var n=s;if(e&&e.responseJSON&&void 0!==e.responseJSON.data){var a=e.responseJSON.data;"string"==typeof a&&a?n=a:a&&"string"==typeof a.message&&a.message&&(n=a.message)}f("error",n)}}).always(function(){Ae()})}function Se(e,r){if(confirm("role"===e&&r?"Reset all settings for this role? This cannot be undone.":"Reset ALL menu settings for every role? This cannot be undone.")){we(membersAdminMenus.i18n&&membersAdminMenus.i18n.resetting||"Resetting…");var n=!1;I.post(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_reset",nonce:membersAdminMenus.nonce,scope:e||"all",role:r||""}).done(function(e){if(e.success)return o("success",e.data&&e.data.message||membersAdminMenus.i18n&&membersAdminMenus.i18n.resetComplete||"Reset complete."),P.allowUnload=!0,n=!0,void location.reload();f("error",e.data&&e.data.message?e.data.message:membersAdminMenus.i18n&&membersAdminMenus.i18n.resetFailed||"Reset failed.")}).fail(function(){f("error",membersAdminMenus.i18n&&membersAdminMenus.i18n.resetNetworkError||membersAdminMenus.i18n.networkError||"Could not reset settings. Check your connection and try again.")}).always(function(){n||Ae()})}}function Me(e){I.getJSON(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_user_search",nonce:membersAdminMenus.nonce,term:e},function(e){e.success&&e.data&&e.data.length?function(e){I(".members-am-user-suggestions").remove();var r=I("#members-am-user-search").parent();r.css("position","relative");var n=I('
');e.forEach(function(e){n.append(I('
').text(e.label).data("userId",e.id).on("click",function(){!function(e,r,n){P.previewUserId=e,P.previewUserLabel=r||"User #"+e,P.previewUserRoles=n||[],v(),P.settings.users[e]||(P.settings.users[e]={});Ie()}(e.id,e.label,e.roles),I(".members-am-user-suggestions").remove(),I("#members-am-user-search").val("")}))}),r.append(n),setTimeout(function(){I(document).one("click",function(){I(".members-am-user-suggestions").remove()})},0)}(e.data):I(".members-am-user-suggestions").remove()})}function Ce(){I(document).on("click","#members-am-role-chips .members-am-chip",function(){var e=I(this).data("role"),r=P.activeRoleSlugs.indexOf(e);-1===r?P.activeRoleSlugs.push(e):1 ');if(t.append(I('
').text("Reset Settings")),a&&s){var i=I(' ');i.append(I(' ')),i.append(I(' ').append(I(" ").text("Reset "+s),I(" ").text("Clear all menu settings for this role only"))),i.on("click",function(e){e.preventDefault(),e.stopPropagation(),I(".members-am-reset-dropdown").remove(),Se("role",a)}),t.append(i)}var o=I(' ');o.append(I(' ')),o.append(I(' ').append(I(" ").text("Reset all roles"),I(" ").text("Clear all menu settings for every role"))),o.on("click",function(e){e.preventDefault(),e.stopPropagation(),I(".members-am-reset-dropdown").remove(),Se("all")}),t.append(o),t.insertAfter(r),setTimeout(function(){I(document).one("click",function(){I(".members-am-reset-dropdown").remove()})},0)}),I("#members-am-export").on("click",function(e){e.preventDefault(),window.location.href=membersAdminMenus.exportUrl}),I("#members-am-import").on("click",function(){I("#members-am-import-file").trigger("click")}),I("#members-am-import-file").on("change",function(){var e=this.files&&this.files[0];e&&function(e){we(membersAdminMenus.i18n&&membersAdminMenus.i18n.importing||"Importing…");var n=new FileReader;n.onerror=function(){Ae(),f("error",membersAdminMenus.i18n&&membersAdminMenus.i18n.readFileFailed||"Could not read the file.")},n.onload=function(){try{var e=JSON.parse(n.result),r=!1;I.post(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_import",nonce:membersAdminMenus.nonce,settings:JSON.stringify(e)}).done(function(e){if(e.success)return o("success",e.data&&e.data.message||membersAdminMenus.i18n&&membersAdminMenus.i18n.imported||"Settings imported."),P.allowUnload=!0,r=!0,void location.reload();f("error",e.data&&e.data.message?e.data.message:"Error")}).fail(function(){f("error",membersAdminMenus.i18n&&membersAdminMenus.i18n.importNetworkError||membersAdminMenus.i18n.networkError||"Could not import settings. Check your connection and try again.")}).always(function(){r||Ae()})}catch(e){Ae(),f("error",membersAdminMenus.i18n&&membersAdminMenus.i18n.invalidJson||"Invalid JSON.")}},n.readAsText(e)}(e)}),I("#members-am-copy-apply").on("click",function(){var n=I("#members-am-copy-from").val(),r=I("#members-am-copy-to").val();if(n&&r)if(n!==r){var a="",s="";if(b().forEach(function(e){e.slug===n&&(a=e.label),e.slug===r&&(s=e.label)}),confirm('Copy menu settings from "'+a+'" to "'+s+'"?\nThis will overwrite "'+s+"\" menu configuration.\n\nNote: This copies menu order, hidden items, labels, icons, and colors.\nIt does NOT change the role's capabilities (items marked with a lock icon).")){h();var e=E(n),t={hidden:e.hidden?e.hidden.slice():[],order:[],submenu_order:{},overrides:{}},i=j(n);t.order=i.slice(),P.tree.forEach(function(e){if(e.children&&e.children.length){var r=F(n,e.id);r&&r.length&&(t.submenu_order[e.id]=r.slice())}}),e.overrides&&"object"==typeof e.overrides&&(t.overrides=JSON.parse(JSON.stringify(e.overrides))),P.settings.roles[r]=t,-1===P.activeRoleSlugs.indexOf(r)&&(P.activeRoleSlugs.push(r),l(),ie()),Ie(),Oe(membersAdminMenus.i18n&&membersAdminMenus.i18n.copying||"Copying…")}}else f("error",membersAdminMenus.i18n&&membersAdminMenus.i18n.rolesMustDiffer||"Source and target roles must be different.")}),I("#members-am-admin-editable").on("change",function(){var e=!0;I(this).is(":checked")&&(e=window.confirm(membersAdminMenus.i18n.adminEditableWarn)),e?(P.settings._meta.admin_editable=I(this).is(":checked"),te(),ie(),l(),Ie()):I(this).prop("checked",!1)}),I("#members-am-sync-scroll").prop("checked",!1!==P.syncScroll),I("#members-am-sync-scroll").on("change",function(){P.syncScroll=I(this).is(":checked");try{localStorage.setItem("members_am_sync_scroll",P.syncScroll?"1":"0")}catch(e){}fe()});var s="members_am_more_tools";function e(e){var r=I("#members-am-toolbar-extra"),n=I("#members-am-more-tools");if(r.length&&n.length){r.prop("hidden",!e),n.attr("aria-expanded",e?"true":"false").toggleClass("is-open",!!e);var a=membersAdminMenus.i18n||{};e&&a.moreToolsHideAria?n.attr("aria-label",a.moreToolsHideAria):!e&&a.moreToolsShowAria?n.attr("aria-label",a.moreToolsShowAria):n.removeAttr("aria-label");try{sessionStorage.setItem(s,e?"1":"0")}catch(e){}}}var r,n=!1;try{n="1"===sessionStorage.getItem(s)}catch(e){}e(n),I("#members-am-more-tools").on("click",function(){e(I("#members-am-toolbar-extra").prop("hidden"))}),I("#members-am-add-item").on("click",function(){h();var e="c"+Date.now();P.settings.custom_items.push({id:e,label:"Custom link",url:window.location.origin+"/wp-admin/",icon_type:"dashicon",icon:"dashicons-admin-generic",parent:"",position:99,cap:"read"}),P.tree=w(),P.selectedId=y({id:e}),Ie(),be()}),I("#members-am-remove-custom").on("click",function(){var e=A(P.selectedId),r=e&&e.customId?String(e.customId):"";if(!r&&e&&e.custom&&P.selectedId){var n=-1!==P.selectedId.indexOf("::")?P.selectedId.split("::").pop():P.selectedId;0===n.indexOf("members-am-")&&(P.settings.custom_items||[]).forEach(function(e){e&&e.id&&y(e)===n&&(r=String(e.id))})}e&&r&&(h(),P.settings.custom_items=(P.settings.custom_items||[]).filter(function(e){return!e||String(e.id)!==r}),P.selectedId=null,P.tree=w(),Ie(),I("#members-am-edit-panel").attr("hidden",!0))}),I("#members-am-edit-close").on("click",function(){P.selectedId=null,I("#members-am-edit-panel").attr("hidden",!0),Ie()}),I("#members-am-edit-target-role").on("change",be),I("#members-am-colors-readable").on("click",function(e){e.preventDefault();var r=String(I("#members-am-color-bg").val()||"").trim();if(r&&"#"!==r){var n=.45 ").val("__all__").text("All roles")),P.activeRoleSlugs.forEach(function(r){var e=(b().filter(function(e){return e.slug===r})[0]||{}).label||r;n.append(I(" ").val(r).text(e))}),P.previewUserId&&n.append(I(" ").val("__user__"+P.previewUserId).text(P.previewUserLabel||"User #"+P.previewUserId)),P.selectedId&&be()}I(function(){var r,n,e;!function(){try{var e=sessionStorage.getItem(i);if(!e)return;sessionStorage.removeItem(i);var r=JSON.parse(e);r&&r.message&&f(r.type,r.message)}catch(e){}}(),v(),P.tree=w(),te(),I("#members-am-admin-editable").prop("checked",!!P.settings._meta.admin_editable),r=I("#members-am-copy-from").empty(),n=I("#members-am-copy-to").empty(),(e=b()).forEach(function(e){r.append(I(" ").val(e.slug).text(e.label)),n.append(I(" ").val(e.slug).text(e.label))}),1'),n=I("#members-am-notices"));var a=I("
",{class:"notice is-dismissible"}).addClass("notice-"+(e||"info"));a.append(I("
").text(r)),n.prepend(a),I(document).trigger("wp-notice-added")}}function o(e,r){try{sessionStorage.setItem(i,JSON.stringify({type:e||"success",message:r}))}catch(e){}}var e=["dashicons-menu","dashicons-admin-dashboard","dashicons-admin-post","dashicons-admin-page","dashicons-admin-media","dashicons-admin-comments","dashicons-admin-appearance","dashicons-admin-plugins","dashicons-admin-users","dashicons-admin-tools","dashicons-admin-settings","dashicons-admin-generic","dashicons-edit","dashicons-plus","dashicons-chart-bar","dashicons-cart","dashicons-products","dashicons-email","dashicons-groups","dashicons-heart","dashicons-star-filled","dashicons-smiley","dashicons-info","dashicons-lock","dashicons-unlock","dashicons-visibility","dashicons-hidden","dashicons-arrow-up","dashicons-arrow-down","dashicons-admin-network","dashicons-performance"],r=["fa-solid fa-house","fa-solid fa-user","fa-solid fa-gear","fa-solid fa-file","fa-solid fa-image","fa-solid fa-cart-shopping","fa-solid fa-chart-line","fa-solid fa-envelope","fa-solid fa-book","fa-solid fa-link","fa-solid fa-bell","fa-solid fa-star","fa-solid fa-heart","fa-solid fa-lock","fa-solid fa-unlock","fa-solid fa-pen","fa-solid fa-trash","fa-solid fa-plus","fa-solid fa-minus"],m="members_am_view_state";function l(){try{localStorage.setItem(m,JSON.stringify({activeRoleSlugs:P.activeRoleSlugs,carouselPage:P.carouselPage}))}catch(e){}}function c(e){return JSON.parse(JSON.stringify(e))}var d=null;function h(){d=c(P.settings),u()}function u(){var e=I("#members-am-undo");if(e.length){var r=!!d;e.prop("disabled",!r).attr("aria-disabled",r?"false":"true")}}function b(){return membersAdminMenus.roles||[]}function v(){P.settings._meta&&!Array.isArray(P.settings._meta)||(P.settings._meta={version:3,admin_editable:!1}),P.settings.roles&&!Array.isArray(P.settings.roles)||(P.settings.roles={}),P.settings.users&&!Array.isArray(P.settings.users)||(P.settings.users={}),Array.isArray(P.settings.custom_items)||(P.settings.custom_items=[]),P.settings.capabilities&&!Array.isArray(P.settings.capabilities)||(P.settings.capabilities={})}function E(e){v(),P.settings.roles[e]||(P.settings.roles[e]={hidden:[],order:[],submenu_order:{},overrides:{}});var r=P.settings.roles[e];return r.hidden&&Array.isArray(r.hidden)||(r.hidden=[]),r.order&&Array.isArray(r.order)||(r.order=[]),r.submenu_order&&!Array.isArray(r.submenu_order)||(r.submenu_order={}),r.overrides&&!Array.isArray(r.overrides)||(r.overrides={}),r}function S(e){v(),P.settings.users[e]||(P.settings.users[e]={});var r=P.settings.users[e];return r.hidden&&Array.isArray(r.hidden)||(r.hidden=[]),r.order&&Array.isArray(r.order)||(r.order=[]),r.overrides&&!Array.isArray(r.overrides)||(r.overrides={}),r.submenu_order&&!Array.isArray(r.submenu_order)||(r.submenu_order={}),r}function M(e,r){var n=function(e,r){for(var n=(e||[]).slice().sort(),a=null,t=0;t=t.length||(h(),t.splice(p,1),t.splice(f,0,o?u:r))}}function y(e){var r=e.id||"c";return"members-am-"+String(r).replace(/[^a-z0-9_-]/gi,"-").toLowerCase()}function k(e){return!!e&&0===(-1!==e.indexOf("::")?e.split("::").pop():e).indexOf("members-am-")}function _(e,r){if(!e||!r)return null;for(var n=0;nt&&(P.carouselPage=t))}}P.activeRoleSlugs=r.filter(function(e){return"administrator"!==e||n}),P.activeRoleSlugs.length||(P.activeRoleSlugs=["subscriber"])}function oe(){var a=I("#members-am-role-chips").empty();b().forEach(function(e){if("administrator"!==e.slug||P.settings._meta.admin_editable){var r=-1!==P.activeRoleSlugs.indexOf(e.slug),n=I(' ').text(e.label).attr("data-role",e.slug).toggleClass("is-active",r);a.append(n)}})}function me(s,i,e,o,m){(function(e,r,n,a,t){t=t||0;var s=r.id,i=J(e,s),o=!H(e,r.cap),m=E(e).overrides[s]||{},l=m.label||r.title||s,c=I('
').attr("data-id",s).attr("data-menu-parent",n||"").toggleClass("is-hidden",i).toggleClass("is-no-cap",o).toggleClass("is-selected",P.selectedId===s).toggleClass("is-sub",0 ');if(p){Q(d);var b=!!P.collapsedParents[d][s],h=u.expandSubmenus||"Expand submenu items",v=u.collapseSubmenus||"Collapse submenu items";I(' ').attr("aria-expanded",!b).attr("aria-label",(b?h:v)+": "+l).append(I(' ').addClass(b?"dashicons-arrow-right-alt2":"dashicons-arrow-down-alt2")).on("click",function(e){e.stopPropagation(),Q(d),P.collapsedParents[d][s]=!P.collapsedParents[d][s],be()}).appendTo(f),c.toggleClass("is-collapse-collapsed",b)}else f.append(I(' '));c.append(f);var g=u.bulkCheckboxAria||"Include in bulk actions",x=I(' '),y=I(' ').prop("checked",!!P.columnBulkSelection[d].ids[s]).attr("aria-label",g+": "+l).on("click",function(e){e.stopPropagation()}).on("change",function(e){e.stopPropagation(),G(d,s,I(this).prop("checked")),be()});x.append(y),c.append(x);var k=I('
');if(0===t){var _=m.icon||r.icon,w=B(_,m.icon_type||r.icon_type);if("fontawesome"===w&&_)k.append(I(' '));else if("svg"!==w&&"image"!==w&&"custom"!==w||!_){var A=_&&0===_.indexOf("dashicons-")?_:"dashicons-admin-generic";k.append(I(' '))}else k.append(I(" ").attr("src",_).css({width:"20px",height:"20px",display:"inline-block",verticalAlign:"middle",objectFit:"contain",filter:"none"}))}r.custom&&k.append(I('custom '));m.label&&k.append(I('edit '));if(k.append(I(' ').text(l)),m.badge){var O=m.badge_bg||"#d63638";k.append(I(' ').text(m.badge).css({backgroundColor:O,color:"#fff",fontSize:"9px",padding:"1px 5px",borderRadius:"2px",marginLeft:"4px",whiteSpace:"nowrap"}))}if(o){var S=membersAdminMenus.i18n||{},M=S.noAccessTitlePattern&&S.noAccessTitlePattern.replace("%s",r.cap||"read")||"This role does not have the '"+(r.cap||"read")+"' capability on this role object. Users with multiple roles may still access the screen. Manage capabilities in Members → Roles.";k.append(I(' ').attr("title",M).html("🔒 no access"))}c.append(k),m.color_bg&&c.css("background-color",m.color_bg);m.color_text&&c.find(".members-am-item-label").css("color",m.color_text);m.color_icon&&(c.find(".dashicons").css("color",m.color_icon),c.find(".members-am-fa-icon i").css("color",m.color_icon),c.find("img").css("filter","none"));var C=I('
');C.append(I(' ').text("◉"),I(' ').text("↑"),I(' ').text("↓")),c.append(C),a.append(c)})(s,i,e,o,m=m||0),i.children&&i.children.length&&L(s,i.id).forEach(function(e){var r,n,a,t=(r=s,n=i.id,A(F(n,a=e))||(-1===a.indexOf("::")&&(E(r).overrides[a]||{}).parent===n?A(a):null));t&&"__promote__"!==(E(s).overrides[t.id]||{}).parent&&me(s,t,i.id,o,m+1)})}function le(n,a,e,t,s,i){i=i||0,s.append(function(r,e,n,a){a=a||0;var t=M(n,r.id),s=t.label||r.title,i=function(e,r){var n=S(e);if(-1!==n.hidden.indexOf(r))return!0;var a=R(r,e);return!(!a||-1===n.hidden.indexOf(a))}(n,r.id),o=!function(e){if(!e||"read"===e)return 1;for(var r=P.previewUserRoles||[],n=0;n").addClass(l).attr("data-id",r.id).attr("data-menu-parent",e||""),d="u:"+n;W(d);var u=membersAdminMenus.i18n||{},p=r.children&&r.children.length,f=I(' ');if(p){Q(d);var b=!!P.collapsedParents[d][r.id],h=u.expandSubmenus||"Expand submenu items",v=u.collapseSubmenus||"Collapse submenu items";I(' ').attr("aria-expanded",!b).attr("aria-label",(b?h:v)+": "+s).append(I(' ').addClass(b?"dashicons-arrow-right-alt2":"dashicons-arrow-down-alt2")).on("click",function(e){e.stopPropagation(),Q(d),P.collapsedParents[d][r.id]=!P.collapsedParents[d][r.id],be()}).appendTo(f),c.toggleClass("is-collapse-collapsed",b)}else f.append(I(' '));c.append(f);var g=u.bulkCheckboxAria||"Include in bulk actions",x=I(' '),y=I(' ').prop("checked",!!P.columnBulkSelection[d].ids[r.id]).attr("aria-label",g+": "+s).on("click",function(e){e.stopPropagation()}).on("change",function(e){e.stopPropagation(),G(d,r.id,I(this).prop("checked")),be()});x.append(y),c.append(x);var k=I('
');if(0===a){var _=t.icon||r.icon,w=B(_,t.icon_type||r.icon_type);"fontawesome"===w&&_?k.append(I(' ')):"svg"!==w&&"image"!==w&&"custom"!==w||!_?_&&0===_.indexOf("dashicons-")?k.append(I(' ')):k.append(I(' ')):k.append(I(" ").attr("src",_).css({width:"20px",height:"20px",display:"inline-block",verticalAlign:"middle",objectFit:"contain",filter:"none"}))}r.custom&&k.append(I('custom '));t.label&&k.append(I('edit '));if(k.append(I(' ').text(s)),t.badge){var A=t.badge_bg||"#d63638";k.append(I(' ').text(t.badge).css({backgroundColor:A,color:"#fff",fontSize:"9px",padding:"1px 5px",borderRadius:"2px",marginLeft:"4px",whiteSpace:"nowrap"}))}o&&k.append(I('🔒 no access "));c.append(k),t.color_bg&&c.css("background-color",t.color_bg);t.color_text&&c.find(".members-am-item-label").css("color",t.color_text);t.color_icon&&(c.find(".dashicons").css("color",t.color_icon),c.find(".members-am-fa-icon i").css("color",t.color_icon));var O=I('
');return O.append(I(' ').text(i?"◯":"◉"),I(' ').text("↑"),I(' ').text("↓")),c.append(O),c.on("click",function(e){I(e.target).closest("button, .members-am-item-cb, .members-am-collapse-toggle").length||(P.selectedId=r.id,Pe())}),c}(a,e,n,i)),a.children&&a.children.length&&function(e,r){var n=N(r),a=S(e);P.tree.forEach(function(e){e&&e.id&&-1===e.id.indexOf("::")&&(a.overrides&&a.overrides[e.id]||{}).parent===r&&-1===n.indexOf(e.id)&&n.push(e.id)});var t=a.submenu_order&&a.submenu_order[r];if(!t||!t.length)return n.slice();var s=t.filter(function(e){return-1!==n.indexOf(e)});return n.forEach(function(e){-1===s.indexOf(e)&&s.push(e)}),s}(n,a.id).forEach(function(e){var r=function(e,r,n){var a=A(F(r,n));if(a)return a;if(-1===n.indexOf("::")){var t=S(e);if((t.overrides&&t.overrides[n]||{}).parent===r)return A(n)}return null}(n,a.id,e);r&&"__promote__"!==(t.overrides&&t.overrides[r.id]||{}).parent&&le(n,r,a.id,t,s,i+1)})}function ce(e,r){var t=(r||"").trim().toLowerCase(),n=e.children(".members-am-item");if(!t)return n.removeClass("members-am-filter-hidden"),void e.children(".members-am-sep").removeClass("members-am-filter-hidden");var i={};n.each(function(){var e=I(this),r=e.attr("data-id"),n=(e.find(".members-am-item-label").first().text()||"").toLowerCase(),a=(r||"").toLowerCase();i[r]=-1!==n.indexOf(t)||-1!==a.indexOf(t)});var o={};n.each(function(){var e=I(this).attr("data-id"),r=I(this).attr("data-menu-parent")||"";o[r]||(o[r]=[]),o[r].push(e)});var m={};function l(e){var r,n=i[e],a=o[e]||[],t=!1;for(r=0;r '),o=I(' ').attr("placeholder",t).attr("aria-label",s).val(a);i.append(o),e.find(".members-am-sidebar-head").first().after(i),o.on("input",function(){P.columnFilters[n]=I(this).val(),ce(r,I(this).val())}),ce(r,a)}function ue(e,r){var s=0===String(r).indexOf("u:"),i=s?parseInt(r.replace(/^u:/,""),10):0,o=s?null:r,m=r,l=membersAdminMenus.i18n||{},n=I('
').attr("data-column-key",m),a=I('
');a.append(I(' ').text(l.bulkSelectVisible||"Select visible"),I(' ').text(l.bulkClearSelection||"Clear selection"));var t=I('
');t.append(I(' ').text(l.collapseAllMenus||"Collapse all"),I(' ').text(l.expandAllMenus||"Expand all"));var c=I(' ').attr("aria-label",l.bulkVisibilityLabel||"Menu visibility for this column");c.append(I(' ').text(l.bulkActionsPlaceholder||"Choose visibility…"));var d=I(" ").attr("label",l.bulkGroupWholeColumn||"Whole column");d.append(I(' ').text(l.bulkShowAllItems||"Show every menu item"),I(' ').text(l.bulkHideAllItems||"Hide every menu item"));var u=I(" ").attr("label",l.bulkGroupCheckedRows||"Checked rows");u.append(I(' ').text(l.bulkKeepOnlyCheckedVisible||"Keep only checked visible"),I(' ').text(l.bulkHideCheckedItems||"Hide checked items"),I(' ').text(l.bulkShowCheckedItems||"Show checked items")),c.append(d,u),n.append(a,t,c);var p=e.find(".members-am-col-filter").first();p.length?p.after(n):e.find(".members-am-sidebar-head").first().after(n),c.on("change",function(){var e=I(this).val();if(I(this).val(""),e)if(!("keep-only-checked"===e||"hide-checked"===e||"show-checked"===e)||V(m).length){if("keep-only-checked"===e){if(!window.confirm(l.bulkConfirmKeepOnlyChecked||"Hide all items except checked items and their parent menus?"))return}else if("hide-all"===e){if(!window.confirm(l.bulkConfirmHideAll||"Hide every menu item in this column?"))return}else if("hide-checked"===e&&!window.confirm(l.bulkConfirmHideChecked||"Hide the checked items (and their submenus where applicable)?"))return;var r,n,a,t;h(),s?"show-all"===e?S(i).hidden=[]:"hide-all"===e?(a=i,t=z(),S(a).hidden=t.slice()):"keep-only-checked"===e?function(e,n){var r=V(e);if(r.length){var a={};r.forEach(function(e){for(var r=e;r;)a[r]=!0,r=R(r,n)});var t=z(),s=S(n).hidden;s.length=0,t.forEach(function(e){a[e]||s.push(e)})}}(m,i):"hide-checked"===e?ee(m,i):"show-checked"===e&&re(m,i):"show-all"===e?E(o).hidden=[]:"hide-all"===e?(r=o,n=z(),E(r).hidden=n.slice()):"keep-only-checked"===e?function(e,n){var r=V(e);if(r.length){var a={};r.forEach(function(e){for(var r=e;r;)a[r]=!0,r=C(r,n)});var t=z(),s=E(n).hidden;s.length=0,t.forEach(function(e){a[e]||s.push(e)})}}(m,o):"hide-checked"===e?Y(m,o):"show-checked"===e&&Z(m,o),Pe()}else f("warning",l.bulkSelectCheckedFirst||"Check one or more menu items first.")})}function pe(e){return-1!==e.indexOf("::")?e.split("::").pop():e}function fe(){I.fn.sortable&&I("#members-am-columns .members-am-sidebar-list").each(function(){var e=I(this);e.data("ui-sortable")&&e.sortable("destroy");var r=e.closest(".members-am-column"),n=r.data("role"),a=r.data("user");e.sortable({axis:"y",distance:6,items:"> .members-am-item, > .members-am-sep",cancel:".members-am-item-actions button, .members-am-item-cb, .members-am-item-cb-wrap, .members-am-collapse-toggle",placeholder:"members-am-sort-placeholder",forcePlaceholderSize:!0,tolerance:"pointer",start:function(){h()},update:function(){a?function(e,r){var t=[],s={};e.children().each(function(){var e=I(this);if(e.hasClass("members-am-sep")){var r=e.attr("data-sep-id");r&&t.push(r)}else if(e.hasClass("members-am-item")){var n=e.attr("data-id");if(n){var a=e.attr("data-menu-parent");void 0===a||""===a?t.push(n):(s[a]||(s[a]=[]),s[a].push(pe(n)))}}});var n=S(r);n.order=t,n.submenu_order=s}(e,a):n&&function(e,r){var t=[],s={};e.children().each(function(){var e=I(this);if(e.hasClass("members-am-sep")){var r=e.attr("data-sep-id");r&&t.push(r)}else if(e.hasClass("members-am-item")){var n=e.attr("data-id");if(n){var a=e.attr("data-menu-parent");void 0===a||""===a?t.push(n):(s[a]||(s[a]=[]),s[a].push(pe(n)))}}});var n=E(r);n.order=t,n.submenu_order=s}(e,n),he()}})})}function be(){var n=I("#members-am-columns"),a={};n.find(".members-am-column").each(function(){var e=I(this).data("role");if(e){var r=I(this).find(".members-am-sidebar-list");r.length&&(a[e]=r.scrollTop())}}),n.empty();var e=P.carouselPage*P.columnsPerPage;if(P.activeRoleSlugs.slice(e,e+P.columnsPerPage).forEach(function(e){var r=I('
');!function(n,e){e.empty();var r=I(''),a=(b().filter(function(e){return e.slug===n})[0]||{}).label||n;r.append(I('').text(a)),r.append(I(' ').append(I(' ').text("◀"),I(' ').text("▶"))),e.append(r);var t=I('');j(n).forEach(function(e){if(0!==e.indexOf("sep-")){var r=A(e);r&&me(n,r,null,t,0)}else t.append(I('
').attr("data-sep-id",e).text("—"))}),e.append(t),q(t,n),de(e,t,n),ue(e,n)}(e,r),n.append(r),a[e]&&r.find(".members-am-sidebar-list").scrollTop(a[e])}),P.previewUserId){var t=P.previewUserId,r=I('
'),s=I('');s.append(I(" ").text(P.previewUserLabel||"User #"+t)),s.append(I('× ').on("click",function(){P.previewUserId=null,P.previewUserLabel=null,P.previewUserRoles=[],Pe()})),r.append(s);var i=I(''),o=S(t);g(t).forEach(function(e){if(0!==e.indexOf("sep-")){var r=A(e);r&&le(t,r,null,o,i,0)}else i.append(I('
').attr("data-sep-id",e).text("——"))}),r.append(i),q(i,"u:"+t),de(r,i,"u:"+t),ue(r,"u:"+t),n.append(r)}if(P.syncScroll){var m=n.find(".members-am-sidebar-list"),l=!1;m.on("scroll",function(){if(!l){l=!0;var e=I(this).scrollTop();m.not(this).scrollTop(e),l=!1}})}!function(){var e=Math.max(1,Math.ceil(P.activeRoleSlugs.length/P.columnsPerPage)),r=(Math.min(P.carouselPage+1,e),P.carouselPage*P.columnsPerPage+1),n=Math.min((P.carouselPage+1)*P.columnsPerPage,P.activeRoleSlugs.length);I("#members-am-carousel-status").text(r+"–"+n+" "+membersAdminMenus.i18n.of+" "+P.activeRoleSlugs.length);for(var a=I("#members-am-carousel-dots").empty(),t=0;t ').toggleClass("is-active",t===P.carouselPage))}(),fe()}function he(){if(P.selectedId){I("#members-am-edit-panel").removeAttr("hidden");var e=A(P.selectedId),r=te()||{};I("#members-am-edit-title").text(e?e.title:P.selectedId),I("#members-am-edit-label").val(r.label||e&&e.title||"");var n=k(P.selectedId);I("#members-am-edit-url-wrap").toggle(n),I("#members-am-edit-url").attr("placeholder","Override URL (leave empty for default)").val(n&&(r.url||e&&e.url)||"").data("default-url",e&&e.url||""),I("#members-am-icon-type").val(r.icon_type||"dashicon"),I("#members-am-icon-value").val(r.icon||e&&e.icon||"");var a=r.icon||e&&e.icon||"",t=B(a,r.icon_type||e&&e.icon_type||"");"image"!==t&&"custom"!==t&&"svg"!==t||!a?I("#members-am-icon-preview").hide():I("#members-am-icon-preview").show().attr("src",a),I("#members-am-color-bg").val(r.color_bg||""),I("#members-am-color-text").val(r.color_text||""),I("#members-am-color-icon").val(r.color_icon||""),I("#members-am-badge-text").val(r.badge||""),I("#members-am-badge-bg").val(r.badge_bg||""),I("#members-am-item-cap").attr("placeholder",e&&e.cap?e.cap+" (default)":"").val(P.settings.capabilities[P.selectedId]||"");var s=e&&e.custom,i=I("#members-am-remove-custom");s?i.removeAttr("hidden"):i.attr("hidden","hidden"),I("#members-am-visibility-toggles").empty();var o=D(P.settings.capabilities[P.selectedId]||"")||D(e&&e.cap||"")||"read",m=[];if(b().forEach(function(e){"administrator"===e.slug&&!P.settings._meta.admin_editable||m.push(e)}),10<=m.length){var l=membersAdminMenus.i18n&&membersAdminMenus.i18n.filterRolesVisibility||"Filter roles…",c=membersAdminMenus.i18n&&membersAdminMenus.i18n.filterRolesVisibilityLabel||"Filter roles in this list",d=I('
'),u=I(' ').attr("placeholder",l).attr("aria-label",c);d.append(u),I("#members-am-visibility-toggles").append(d),u.on("input",function(){var t=(I(this).val()||"").trim().toLowerCase();I("#members-am-visibility-toggles .members-am-vis-row").each(function(){var e=I(this),r=(e.find("span").first().text()||"").toLowerCase(),n=String(e.find(".members-am-vis-cb").data("role")||"").toLowerCase(),a=!t||-1!==r.indexOf(t)||-1!==n.indexOf(t);e.toggleClass("members-am-vis-filter-hidden",!a)})})}m.forEach(function(e){var r=J(e.slug,P.selectedId),n=H(e.slug,o),a=I(' ').attr("data-role",e.slug).prop("checked",!r&&n);n||a.prop("disabled",!0);var t=I(' ').append(a,I(" ").text(e.label));n||(t.append(I(" ").text(" — no capability").css({color:"#999",fontStyle:"italic",marginLeft:"4px"})),t.css("opacity","0.5")),I("#members-am-visibility-toggles").append(t)}),I(".members-am-color").each(function(){I(this).data("wpWpColorPicker")&&I(this).wpColorPicker("destroy")}),I(".members-am-color").wpColorPicker({change:function(){p||setTimeout(function(){xe()},20)},clear:function(){p||setTimeout(function(){xe()},20)}}),p=!0,I(".members-am-color").each(function(){var e=I(this),r=String(e.val()||"").trim();if(r&&"#"!==r&&e.data("wpWpColorPicker"))try{e.wpColorPicker("color",r)}catch(e){}}),p=!1,ye(),function(){var e=I(".members-am-demote-wrap"),n=I("#members-am-demote-parent"),r=I("#members-am-demote");if(!P.selectedId)return e.attr("hidden",!0);if(O(P.selectedId))return e.attr("hidden",!0);var a=ne()[0]||P.activeRoleSlugs[0];if(a&&T(a,P.selectedId))return e.attr("hidden",!0);e.removeAttr("hidden");var t=P.selectedId,s=membersAdminMenus.i18n&&membersAdminMenus.i18n.selectParentMenu||"";n.empty().append(I(" ").val("").text(s));var i=0;P.tree.forEach(function(e){if(e&&e.id&&e.id!==t){var r=e.title&&String(e.title).trim()?e.title:e.id;n.append(I(" ").val(e.id).text(r)),i++}});var o=0 ');"dashicons"===n?r.append(I(' ')):r.append(I(' ')),r.on("click",function(){I("#members-am-icon-value").val(e),I("#members-am-icon-type").val("dashicons"===n?"dashicon":"fontawesome"),xe()}),t.append(r)}})}function ke(e,r){var n=P.activeRoleSlugs.indexOf(e);if(-1!==n){var a=n+r;if(!(a<0||a>=P.activeRoleSlugs.length)){h();var t=P.activeRoleSlugs[n];P.activeRoleSlugs[n]=P.activeRoleSlugs[a],P.activeRoleSlugs[a]=t,l(),Pe()}}}function _e(e,r,n){var a,t,s,i=E(e).overrides[r]||{},o=null;if("__promote__"===i.parent?o=null:-1!==r.indexOf("::")?o=O(r):i.parent&&"__promote__"!==i.parent&&(o=i.parent),o){var m=E(e).submenu_order;m[o]||(m[o]=(a=e,s=N(t=o),P.tree.forEach(function(e){e&&e.id&&-1===e.id.indexOf("::")&&(E(a).overrides[e.id]||{}).parent===t&&-1===s.indexOf(e.id)&&s.push(e.id)}),s));var l=m[o],c=-1!==r.indexOf("::")?r.split("::").pop():r;if(-1===(u=l.indexOf(c)))return;if((p=u+n)<0||p>=l.length)return;h();var d=l[u];l[u]=l[p],l[p]=d}else{E(e).order&&E(e).order.length||(E(e).order=U());var u,p,f=E(e).order;if(-1===(u=f.indexOf(r)))return;if((p=u+n)<0||p>=f.length)return;h();var b=f[u];f[u]=f[p],f[p]=b}Pe()}function we(){var e=ne();if(e.length){h();var a="sep-"+Date.now();e.forEach(function(e){E(e).order&&E(e).order.length||(E(e).order=U());var r=E(e).order,n=P.selectedId?r.indexOf(P.selectedId):r.length-1;n<0&&(n=r.length),r.splice(n+1,0,a)}),Pe()}}function Ae(e){var r=I("#members-am-toolbar-loading");r.removeAttr("hidden"),r.find(".spinner").addClass("is-active"),r.find(".members-am-loading-text").text(e||""),I("#members-am-save, #members-am-reset, #members-am-import, #members-am-copy-apply, #members-am-undo").prop("disabled",!0)}function Oe(){var e=I("#members-am-toolbar-loading");e.attr("hidden",!0),e.find(".spinner").removeClass("is-active"),e.find(".members-am-loading-text").text(""),I("#members-am-save, #members-am-reset, #members-am-import, #members-am-copy-apply").prop("disabled",!1),u()}function Se(e){Ae(e||membersAdminMenus.i18n&&membersAdminMenus.i18n.saving||"Saving…");var t=membersAdminMenus.i18n&&membersAdminMenus.i18n.networkError||"Could not save settings. Check your connection and try again.";I.ajax({url:membersAdminMenus.ajaxUrl,type:"POST",dataType:"json",timeout:6e4,data:{action:"members_admin_menus_save",nonce:membersAdminMenus.nonce,settings:JSON.stringify(P.settings)}}).done(function(e){if(e&&void 0!==e.success){if(e.success)return a=s(),d=null,u(),void f("success",e.data&&e.data.message||membersAdminMenus.i18n&&membersAdminMenus.i18n.saved||"Settings saved.");f("error",e.data&&e.data.message?e.data.message:"Error")}else f("error",t)}).fail(function(e,r){if("abort"!==r){var n=t;if(e&&e.responseJSON&&void 0!==e.responseJSON.data){var a=e.responseJSON.data;"string"==typeof a&&a?n=a:a&&"string"==typeof a.message&&a.message&&(n=a.message)}f("error",n)}}).always(function(){Oe()})}function Me(e,r){var n,a=membersAdminMenus.i18n||{};if(n="role"===e&&"administrator"===r?a.confirmResetAdministrator||"Reset all menu settings for the Administrator role? This cannot be undone.":"all"!==e&&"role"===e&&r?a.confirmResetRole||"Reset all settings for this role? This cannot be undone.":a.confirmResetAllRoles||"Reset ALL menu settings for every role? This cannot be undone.",confirm(n)){Ae(membersAdminMenus.i18n&&membersAdminMenus.i18n.resetting||"Resetting…");var t=!1;I.post(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_reset",nonce:membersAdminMenus.nonce,scope:e||"all",role:r||""}).done(function(e){if(e.success)return o("success",e.data&&e.data.message||membersAdminMenus.i18n&&membersAdminMenus.i18n.resetComplete||"Reset complete."),P.allowUnload=!0,t=!0,void location.reload();f("error",e.data&&e.data.message?e.data.message:membersAdminMenus.i18n&&membersAdminMenus.i18n.resetFailed||"Reset failed.")}).fail(function(){f("error",membersAdminMenus.i18n&&membersAdminMenus.i18n.resetNetworkError||membersAdminMenus.i18n.networkError||"Could not reset settings. Check your connection and try again.")}).always(function(){t||Oe()})}}function Ce(e){I.getJSON(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_user_search",nonce:membersAdminMenus.nonce,term:e},function(e){e.success&&e.data&&e.data.length?function(e){I(".members-am-user-suggestions").remove();var r=I("#members-am-user-search").parent();r.css("position","relative");var n=I('
');e.forEach(function(e){n.append(I('
').text(e.label).data("userId",e.id).on("click",function(){!function(e,r,n){P.previewUserId=e,P.previewUserLabel=r||"User #"+e,P.previewUserRoles=n||[],v(),P.settings.users[e]||(P.settings.users[e]={});Pe()}(e.id,e.label,e.roles),I(".members-am-user-suggestions").remove(),I("#members-am-user-search").val("")}))}),r.append(n),setTimeout(function(){I(document).one("click",function(){I(".members-am-user-suggestions").remove()})},0)}(e.data):I(".members-am-user-suggestions").remove()})}function Ie(){I(document).on("click","#members-am-role-chips .members-am-chip",function(){var e=I(this).data("role"),r=P.activeRoleSlugs.indexOf(e);-1===r?P.activeRoleSlugs.push(e):1 ');if(s.append(I('
').text(n.resetSettingsLabel||"Reset Settings")),t){var i=I(' ');i.append(I(' ')),i.append(I(' ').append(I(" ").text(n.resetAdministrator||"Reset Administrator"),I(" ").text(n.resetAdministratorHelp||"Clear all menu settings for the Administrator role only."))),i.on("click",function(e){e.preventDefault(),e.stopPropagation(),I(".members-am-reset-dropdown").remove(),Me("role",a)}),s.append(i)}var o=I(' ');o.append(I(' ')),o.append(I(' ').append(I(" ").text(n.resetAll||"Reset all roles"),I(" ").text(n.resetAllRolesHelp||"Clear all menu settings for every role."))),o.on("click",function(e){e.preventDefault(),e.stopPropagation(),I(".members-am-reset-dropdown").remove(),Me("all")}),s.append(o),s.insertAfter(r),setTimeout(function(){I(document).one("click",function(){I(".members-am-reset-dropdown").remove()})},0)}),I("#members-am-export").on("click",function(e){e.preventDefault(),window.location.href=membersAdminMenus.exportUrl}),I("#members-am-import").on("click",function(){I("#members-am-import-file").trigger("click")}),I("#members-am-import-file").on("change",function(){var e=this.files&&this.files[0];e&&function(e){Ae(membersAdminMenus.i18n&&membersAdminMenus.i18n.importing||"Importing…");var n=new FileReader;n.onerror=function(){Oe(),f("error",membersAdminMenus.i18n&&membersAdminMenus.i18n.readFileFailed||"Could not read the file.")},n.onload=function(){try{var e=JSON.parse(n.result),r=!1;I.post(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_import",nonce:membersAdminMenus.nonce,settings:JSON.stringify(e)}).done(function(e){if(e.success)return o("success",e.data&&e.data.message||membersAdminMenus.i18n&&membersAdminMenus.i18n.imported||"Settings imported."),P.allowUnload=!0,r=!0,void location.reload();f("error",e.data&&e.data.message?e.data.message:"Error")}).fail(function(){f("error",membersAdminMenus.i18n&&membersAdminMenus.i18n.importNetworkError||membersAdminMenus.i18n.networkError||"Could not import settings. Check your connection and try again.")}).always(function(){r||Oe()})}catch(e){Oe(),f("error",membersAdminMenus.i18n&&membersAdminMenus.i18n.invalidJson||"Invalid JSON.")}},n.readAsText(e)}(e)}),I("#members-am-copy-apply").on("click",function(){var n=I("#members-am-copy-from").val(),r=I("#members-am-copy-to").val();if(n&&r)if(n!==r){var a="",t="";if(b().forEach(function(e){e.slug===n&&(a=e.label),e.slug===r&&(t=e.label)}),confirm('Copy menu settings from "'+a+'" to "'+t+'"?\nThis will overwrite "'+t+"\" menu configuration.\n\nNote: This copies menu order, hidden items, labels, icons, and colors.\nIt does NOT change the role's capabilities (items marked with a lock icon).")){h();var e=E(n),s={hidden:e.hidden?e.hidden.slice():[],order:[],submenu_order:{},overrides:{}},i=j(n);s.order=i.slice(),P.tree.forEach(function(e){if(e.children&&e.children.length){var r=L(n,e.id);r&&r.length&&(s.submenu_order[e.id]=r.slice())}}),e.overrides&&"object"==typeof e.overrides&&(s.overrides=JSON.parse(JSON.stringify(e.overrides))),P.settings.roles[r]=s,-1===P.activeRoleSlugs.indexOf(r)&&(P.activeRoleSlugs.push(r),l(),oe()),Pe(),Se(membersAdminMenus.i18n&&membersAdminMenus.i18n.copying||"Copying…")}}else f("error",membersAdminMenus.i18n&&membersAdminMenus.i18n.rolesMustDiffer||"Source and target roles must be different.")}),I("#members-am-admin-editable").on("change",function(){var e=!0;I(this).is(":checked")&&(e=window.confirm(membersAdminMenus.i18n.adminEditableWarn)),e?(P.settings._meta.admin_editable=I(this).is(":checked"),ie(),oe(),l(),Pe()):I(this).prop("checked",!1)}),I("#members-am-sync-scroll").prop("checked",!1!==P.syncScroll),I("#members-am-sync-scroll").on("change",function(){P.syncScroll=I(this).is(":checked");try{localStorage.setItem("members_am_sync_scroll",P.syncScroll?"1":"0")}catch(e){}be()});var t="members_am_more_tools";function e(e){var r=I("#members-am-toolbar-extra"),n=I("#members-am-more-tools");if(r.length&&n.length){r.prop("hidden",!e),n.attr("aria-expanded",e?"true":"false").toggleClass("is-open",!!e);var a=membersAdminMenus.i18n||{};e&&a.moreToolsHideAria?n.attr("aria-label",a.moreToolsHideAria):!e&&a.moreToolsShowAria?n.attr("aria-label",a.moreToolsShowAria):n.removeAttr("aria-label");try{sessionStorage.setItem(t,e?"1":"0")}catch(e){}}}var r,n=!1;try{n="1"===sessionStorage.getItem(t)}catch(e){}e(n),I("#members-am-more-tools").on("click",function(){e(I("#members-am-toolbar-extra").prop("hidden"))}),I("#members-am-add-item").on("click",function(){h();var e="c"+Date.now();P.settings.custom_items.push({id:e,label:"Custom link",url:window.location.origin+"/wp-admin/",icon_type:"dashicon",icon:"dashicons-admin-generic",parent:"",position:99,cap:"read"}),P.tree=w(),P.selectedId=y({id:e}),Pe(),he()}),I("#members-am-remove-custom").on("click",function(){var e=A(P.selectedId),r=e&&e.customId?String(e.customId):"";if(!r&&e&&e.custom&&P.selectedId){var n=-1!==P.selectedId.indexOf("::")?P.selectedId.split("::").pop():P.selectedId;0===n.indexOf("members-am-")&&(P.settings.custom_items||[]).forEach(function(e){e&&e.id&&y(e)===n&&(r=String(e.id))})}e&&r&&(h(),P.settings.custom_items=(P.settings.custom_items||[]).filter(function(e){return!e||String(e.id)!==r}),P.selectedId=null,P.tree=w(),Pe(),I("#members-am-edit-panel").attr("hidden",!0))}),I("#members-am-edit-close").on("click",function(){P.selectedId=null,I("#members-am-edit-panel").attr("hidden",!0),Pe()}),I("#members-am-edit-target-role").on("change",he),I("#members-am-colors-readable").on("click",function(e){e.preventDefault();var r=String(I("#members-am-color-bg").val()||"").trim();if(r&&"#"!==r){var n=.45 ").val("__all__").text("All roles")),P.activeRoleSlugs.forEach(function(r){var e=(b().filter(function(e){return e.slug===r})[0]||{}).label||r;n.append(I(" ").val(r).text(e))}),P.previewUserId&&n.append(I(" ").val("__user__"+P.previewUserId).text(P.previewUserLabel||"User #"+P.previewUserId)),P.selectedId&&he()}I(function(){var r,n,e;!function(){try{var e=sessionStorage.getItem(i);if(!e)return;sessionStorage.removeItem(i);var r=JSON.parse(e);r&&r.message&&f(r.type,r.message)}catch(e){}}(),v(),P.tree=w(),ie(),I("#members-am-admin-editable").prop("checked",!!P.settings._meta.admin_editable),r=I("#members-am-copy-from").empty(),n=I("#members-am-copy-to").empty(),(e=b()).forEach(function(e){r.append(I(" ").val(e.slug).text(e.label)),n.append(I(" ").val(e.slug).text(e.label))}),1
Date: Fri, 24 Apr 2026 21:00:13 +0300
Subject: [PATCH 47/73] feat(admin): add functions for role capability mapping
and enhance menu item visibility logic
---
.../app/functions-admin.php | 42 +++++++++++++--
js/admin-menus.js | 51 ++++++++++++++++++-
js/admin-menus.min.js | 2 +-
3 files changed, 88 insertions(+), 7 deletions(-)
diff --git a/addons/members-admin-menus/app/functions-admin.php b/addons/members-admin-menus/app/functions-admin.php
index f22c90b..eac0cf0 100644
--- a/addons/members-admin-menus/app/functions-admin.php
+++ b/addons/members-admin-menus/app/functions-admin.php
@@ -305,13 +305,46 @@ function merge_menu_capabilities_from_settings( array $caps, $settings ) {
}
/**
- * For each role, whether {@see WP_Role::has_cap()} allows the capability (respects role_has_cap).
+ * Build an allcaps-style map from a role, then apply the same core {@see 'user_has_cap'}
+ * grants WordPress registers in {@see wp-includes/default-filters.php}:
+ * {@see wp_maybe_grant_install_languages_cap()}, {@see wp_maybe_grant_resume_extensions_caps()},
+ * {@see wp_maybe_grant_site_health_caps()}.
+ *
+ * {@see WP_Role::has_cap()} does not run those callbacks, so the Admin Menus matrix uses this
+ * merged map (e.g. Site Health, resume plugins/themes, install languages).
+ *
+ * @param \WP_Role $role Role object.
+ * @param \WP_User $pseudo_user User stub for {@see wp_maybe_grant_site_health_caps()} (ID 0:
+ * single-site grants match install_plugins; multisite skips super-admin-only grant).
+ * @return array
+ */
+function role_matrix_allcaps_with_core_runtime_grants( $role, $pseudo_user ) {
+ if ( ! $role instanceof \WP_Role || ! $pseudo_user instanceof \WP_User ) {
+ return array();
+ }
+ $allcaps = array();
+ foreach ( $role->capabilities as $cap => $grant ) {
+ if ( $grant ) {
+ $allcaps[ $cap ] = true;
+ }
+ }
+ $allcaps = \wp_maybe_grant_install_languages_cap( $allcaps );
+ $allcaps = \wp_maybe_grant_resume_extensions_caps( $allcaps );
+ $allcaps = \wp_maybe_grant_site_health_caps( $allcaps, array(), array(), $pseudo_user );
+ return $allcaps;
+}
+
+/**
+ * For each role, whether the capability applies for UI previews (stored caps + core runtime grants).
*
* @param string[] $caps Capability names.
* @return array>
*/
function build_role_cap_matrix_for_js( array $caps ) {
- $matrix = array();
+ $matrix = array();
+ $pseudo_user = new \WP_User();
+ $pseudo_user->ID = 0;
+
foreach ( \members_get_roles() as $role_obj ) {
$slug = $role_obj->name;
$wp_role = \get_role( $slug );
@@ -319,12 +352,13 @@ function build_role_cap_matrix_for_js( array $caps ) {
$matrix[ $slug ] = array();
continue;
}
- $row = array();
+ $runtime_caps = role_matrix_allcaps_with_core_runtime_grants( $wp_role, $pseudo_user );
+ $row = array();
foreach ( $caps as $cap ) {
if ( ! is_string( $cap ) || '' === $cap ) {
continue;
}
- $row[ $cap ] = (bool) $wp_role->has_cap( $cap );
+ $row[ $cap ] = $wp_role->has_cap( $cap ) || ! empty( $runtime_caps[ $cap ] );
}
$matrix[ $slug ] = $row;
}
diff --git a/js/admin-menus.js b/js/admin-menus.js
index b28588a..93851a9 100644
--- a/js/admin-menus.js
+++ b/js/admin-menus.js
@@ -750,6 +750,53 @@
return false;
}
+ /**
+ * Top-level and submenu item IDs in the current tree (excludes separator placeholders).
+ *
+ * @return {string[]}
+ */
+ function getAllMenuItemIdsFromTree() {
+ var ids = [];
+ (state.tree || []).forEach(function (node) {
+ if (!node || !node.id || node.id.indexOf('sep-') === 0) {
+ return;
+ }
+ ids.push(node.id);
+ (node.children || []).forEach(function (ch) {
+ if (ch && ch.id) {
+ ids.push(ch.id);
+ }
+ });
+ });
+ return ids;
+ }
+
+ /**
+ * Hidden IDs so the target role matches the source column: saved hidden entries (including stale slugs)
+ * plus any tree item that is hidden for the source or shows as "no access" there.
+ *
+ * @param {string} sourceRole Role slug to mimic.
+ * @return {string[]}
+ */
+ function getHiddenIdsForMimickingSourceRole(sourceRole) {
+ var out = {};
+ (getRoleConfig(sourceRole).hidden || []).forEach(function (id) {
+ if (id) {
+ out[id] = true;
+ }
+ });
+ getAllMenuItemIdsFromTree().forEach(function (itemId) {
+ var node = findNode(itemId);
+ if (!node) {
+ return;
+ }
+ if (isHidden(sourceRole, itemId) || !roleHasCap(sourceRole, node.cap || 'read')) {
+ out[itemId] = true;
+ }
+ });
+ return Object.keys(out);
+ }
+
function normalizeCapForCheck(cap) {
if (!cap || typeof cap !== 'string') {
return cap;
@@ -2956,7 +3003,7 @@
if (r.slug === from) fromLabel = r.label;
if (r.slug === to) toLabel = r.label;
});
- if (!confirm('Copy menu settings from "' + fromLabel + '" to "' + toLabel + '"?\nThis will overwrite "' + toLabel + '" menu configuration.\n\nNote: This copies menu order, hidden items, labels, icons, and colors.\nIt does NOT change the role\'s capabilities (items marked with a lock icon).')) {
+ if (!confirm('Copy menu settings from "' + fromLabel + '" to "' + toLabel + '"?\nThis will overwrite "' + toLabel + '" menu configuration.\n\nNote: This copies menu order, labels, icons, and colors. Items the source role cannot access (no-access in its column) are stored as hidden on the target so a higher-capability role does not gain those screens.\nIt does not change WordPress role capabilities (lock icon).')) {
return;
}
@@ -2964,7 +3011,7 @@
var srcCfg = getRoleConfig(from);
var newCfg = {
- hidden: srcCfg.hidden ? srcCfg.hidden.slice() : [],
+ hidden: getHiddenIdsForMimickingSourceRole(from),
order: [],
submenu_order: {},
overrides: {}
diff --git a/js/admin-menus.min.js b/js/admin-menus.min.js
index 0d3c481..a90a2eb 100644
--- a/js/admin-menus.min.js
+++ b/js/admin-menus.min.js
@@ -1 +1 @@
-!function(I){"use strict";var P={settings:I.extend(!0,{},membersAdminMenus.settings),tree:[],activeRoleSlugs:[],carouselPage:0,columnsPerPage:3,selectedId:null,iconTab:"dashicons",previewUserId:null,previewUserRoles:[],userSuggestions:[],mediaFrame:null,allowUnload:!1,syncScroll:function(){try{return"0"!==localStorage.getItem("members_am_sync_scroll")}catch(e){return!0}}(),columnFilters:{},columnBulkSelection:{},collapsedParents:{}},a="",p=!1;function s(){return function r(n){if(null===n)return"null";var e=typeof n;return"string"==e||"number"==e||"boolean"==e?JSON.stringify(n):"undefined"==e?"null":Array.isArray(n)?"["+n.map(function(e){return r(e)}).join(",")+"]":"object"!=e?JSON.stringify(n):"{"+Object.keys(n).sort().map(function(e){return JSON.stringify(e)+":"+r(n[e])}).join(",")+"}"}(P.settings)}function t(){if(!P.allowUnload&&s()!==a)return membersAdminMenus.i18n&&membersAdminMenus.i18n.unsavedChanges||""}var i="members_am_notice";function f(e,r){if(r){var n=I("#members-am-notices");n.length||(I(".members-admin-menus-wrap h1").first().after('
'),n=I("#members-am-notices"));var a=I("
",{class:"notice is-dismissible"}).addClass("notice-"+(e||"info"));a.append(I("
").text(r)),n.prepend(a),I(document).trigger("wp-notice-added")}}function o(e,r){try{sessionStorage.setItem(i,JSON.stringify({type:e||"success",message:r}))}catch(e){}}var e=["dashicons-menu","dashicons-admin-dashboard","dashicons-admin-post","dashicons-admin-page","dashicons-admin-media","dashicons-admin-comments","dashicons-admin-appearance","dashicons-admin-plugins","dashicons-admin-users","dashicons-admin-tools","dashicons-admin-settings","dashicons-admin-generic","dashicons-edit","dashicons-plus","dashicons-chart-bar","dashicons-cart","dashicons-products","dashicons-email","dashicons-groups","dashicons-heart","dashicons-star-filled","dashicons-smiley","dashicons-info","dashicons-lock","dashicons-unlock","dashicons-visibility","dashicons-hidden","dashicons-arrow-up","dashicons-arrow-down","dashicons-admin-network","dashicons-performance"],r=["fa-solid fa-house","fa-solid fa-user","fa-solid fa-gear","fa-solid fa-file","fa-solid fa-image","fa-solid fa-cart-shopping","fa-solid fa-chart-line","fa-solid fa-envelope","fa-solid fa-book","fa-solid fa-link","fa-solid fa-bell","fa-solid fa-star","fa-solid fa-heart","fa-solid fa-lock","fa-solid fa-unlock","fa-solid fa-pen","fa-solid fa-trash","fa-solid fa-plus","fa-solid fa-minus"],m="members_am_view_state";function l(){try{localStorage.setItem(m,JSON.stringify({activeRoleSlugs:P.activeRoleSlugs,carouselPage:P.carouselPage}))}catch(e){}}function c(e){return JSON.parse(JSON.stringify(e))}var d=null;function h(){d=c(P.settings),u()}function u(){var e=I("#members-am-undo");if(e.length){var r=!!d;e.prop("disabled",!r).attr("aria-disabled",r?"false":"true")}}function b(){return membersAdminMenus.roles||[]}function v(){P.settings._meta&&!Array.isArray(P.settings._meta)||(P.settings._meta={version:3,admin_editable:!1}),P.settings.roles&&!Array.isArray(P.settings.roles)||(P.settings.roles={}),P.settings.users&&!Array.isArray(P.settings.users)||(P.settings.users={}),Array.isArray(P.settings.custom_items)||(P.settings.custom_items=[]),P.settings.capabilities&&!Array.isArray(P.settings.capabilities)||(P.settings.capabilities={})}function E(e){v(),P.settings.roles[e]||(P.settings.roles[e]={hidden:[],order:[],submenu_order:{},overrides:{}});var r=P.settings.roles[e];return r.hidden&&Array.isArray(r.hidden)||(r.hidden=[]),r.order&&Array.isArray(r.order)||(r.order=[]),r.submenu_order&&!Array.isArray(r.submenu_order)||(r.submenu_order={}),r.overrides&&!Array.isArray(r.overrides)||(r.overrides={}),r}function S(e){v(),P.settings.users[e]||(P.settings.users[e]={});var r=P.settings.users[e];return r.hidden&&Array.isArray(r.hidden)||(r.hidden=[]),r.order&&Array.isArray(r.order)||(r.order=[]),r.overrides&&!Array.isArray(r.overrides)||(r.overrides={}),r.submenu_order&&!Array.isArray(r.submenu_order)||(r.submenu_order={}),r}function M(e,r){var n=function(e,r){for(var n=(e||[]).slice().sort(),a=null,t=0;t=t.length||(h(),t.splice(p,1),t.splice(f,0,o?u:r))}}function y(e){var r=e.id||"c";return"members-am-"+String(r).replace(/[^a-z0-9_-]/gi,"-").toLowerCase()}function k(e){return!!e&&0===(-1!==e.indexOf("::")?e.split("::").pop():e).indexOf("members-am-")}function _(e,r){if(!e||!r)return null;for(var n=0;nt&&(P.carouselPage=t))}}P.activeRoleSlugs=r.filter(function(e){return"administrator"!==e||n}),P.activeRoleSlugs.length||(P.activeRoleSlugs=["subscriber"])}function oe(){var a=I("#members-am-role-chips").empty();b().forEach(function(e){if("administrator"!==e.slug||P.settings._meta.admin_editable){var r=-1!==P.activeRoleSlugs.indexOf(e.slug),n=I(' ').text(e.label).attr("data-role",e.slug).toggleClass("is-active",r);a.append(n)}})}function me(s,i,e,o,m){(function(e,r,n,a,t){t=t||0;var s=r.id,i=J(e,s),o=!H(e,r.cap),m=E(e).overrides[s]||{},l=m.label||r.title||s,c=I('
').attr("data-id",s).attr("data-menu-parent",n||"").toggleClass("is-hidden",i).toggleClass("is-no-cap",o).toggleClass("is-selected",P.selectedId===s).toggleClass("is-sub",0 ');if(p){Q(d);var b=!!P.collapsedParents[d][s],h=u.expandSubmenus||"Expand submenu items",v=u.collapseSubmenus||"Collapse submenu items";I(' ').attr("aria-expanded",!b).attr("aria-label",(b?h:v)+": "+l).append(I(' ').addClass(b?"dashicons-arrow-right-alt2":"dashicons-arrow-down-alt2")).on("click",function(e){e.stopPropagation(),Q(d),P.collapsedParents[d][s]=!P.collapsedParents[d][s],be()}).appendTo(f),c.toggleClass("is-collapse-collapsed",b)}else f.append(I(' '));c.append(f);var g=u.bulkCheckboxAria||"Include in bulk actions",x=I(' '),y=I(' ').prop("checked",!!P.columnBulkSelection[d].ids[s]).attr("aria-label",g+": "+l).on("click",function(e){e.stopPropagation()}).on("change",function(e){e.stopPropagation(),G(d,s,I(this).prop("checked")),be()});x.append(y),c.append(x);var k=I('
');if(0===t){var _=m.icon||r.icon,w=B(_,m.icon_type||r.icon_type);if("fontawesome"===w&&_)k.append(I(' '));else if("svg"!==w&&"image"!==w&&"custom"!==w||!_){var A=_&&0===_.indexOf("dashicons-")?_:"dashicons-admin-generic";k.append(I(' '))}else k.append(I(" ").attr("src",_).css({width:"20px",height:"20px",display:"inline-block",verticalAlign:"middle",objectFit:"contain",filter:"none"}))}r.custom&&k.append(I('custom '));m.label&&k.append(I('edit '));if(k.append(I(' ').text(l)),m.badge){var O=m.badge_bg||"#d63638";k.append(I(' ').text(m.badge).css({backgroundColor:O,color:"#fff",fontSize:"9px",padding:"1px 5px",borderRadius:"2px",marginLeft:"4px",whiteSpace:"nowrap"}))}if(o){var S=membersAdminMenus.i18n||{},M=S.noAccessTitlePattern&&S.noAccessTitlePattern.replace("%s",r.cap||"read")||"This role does not have the '"+(r.cap||"read")+"' capability on this role object. Users with multiple roles may still access the screen. Manage capabilities in Members → Roles.";k.append(I(' ').attr("title",M).html("🔒 no access"))}c.append(k),m.color_bg&&c.css("background-color",m.color_bg);m.color_text&&c.find(".members-am-item-label").css("color",m.color_text);m.color_icon&&(c.find(".dashicons").css("color",m.color_icon),c.find(".members-am-fa-icon i").css("color",m.color_icon),c.find("img").css("filter","none"));var C=I('
');C.append(I(' ').text("◉"),I(' ').text("↑"),I(' ').text("↓")),c.append(C),a.append(c)})(s,i,e,o,m=m||0),i.children&&i.children.length&&L(s,i.id).forEach(function(e){var r,n,a,t=(r=s,n=i.id,A(F(n,a=e))||(-1===a.indexOf("::")&&(E(r).overrides[a]||{}).parent===n?A(a):null));t&&"__promote__"!==(E(s).overrides[t.id]||{}).parent&&me(s,t,i.id,o,m+1)})}function le(n,a,e,t,s,i){i=i||0,s.append(function(r,e,n,a){a=a||0;var t=M(n,r.id),s=t.label||r.title,i=function(e,r){var n=S(e);if(-1!==n.hidden.indexOf(r))return!0;var a=R(r,e);return!(!a||-1===n.hidden.indexOf(a))}(n,r.id),o=!function(e){if(!e||"read"===e)return 1;for(var r=P.previewUserRoles||[],n=0;n").addClass(l).attr("data-id",r.id).attr("data-menu-parent",e||""),d="u:"+n;W(d);var u=membersAdminMenus.i18n||{},p=r.children&&r.children.length,f=I(' ');if(p){Q(d);var b=!!P.collapsedParents[d][r.id],h=u.expandSubmenus||"Expand submenu items",v=u.collapseSubmenus||"Collapse submenu items";I(' ').attr("aria-expanded",!b).attr("aria-label",(b?h:v)+": "+s).append(I(' ').addClass(b?"dashicons-arrow-right-alt2":"dashicons-arrow-down-alt2")).on("click",function(e){e.stopPropagation(),Q(d),P.collapsedParents[d][r.id]=!P.collapsedParents[d][r.id],be()}).appendTo(f),c.toggleClass("is-collapse-collapsed",b)}else f.append(I(' '));c.append(f);var g=u.bulkCheckboxAria||"Include in bulk actions",x=I(' '),y=I(' ').prop("checked",!!P.columnBulkSelection[d].ids[r.id]).attr("aria-label",g+": "+s).on("click",function(e){e.stopPropagation()}).on("change",function(e){e.stopPropagation(),G(d,r.id,I(this).prop("checked")),be()});x.append(y),c.append(x);var k=I('
');if(0===a){var _=t.icon||r.icon,w=B(_,t.icon_type||r.icon_type);"fontawesome"===w&&_?k.append(I(' ')):"svg"!==w&&"image"!==w&&"custom"!==w||!_?_&&0===_.indexOf("dashicons-")?k.append(I(' ')):k.append(I(' ')):k.append(I(" ").attr("src",_).css({width:"20px",height:"20px",display:"inline-block",verticalAlign:"middle",objectFit:"contain",filter:"none"}))}r.custom&&k.append(I('custom '));t.label&&k.append(I('edit '));if(k.append(I(' ').text(s)),t.badge){var A=t.badge_bg||"#d63638";k.append(I(' ').text(t.badge).css({backgroundColor:A,color:"#fff",fontSize:"9px",padding:"1px 5px",borderRadius:"2px",marginLeft:"4px",whiteSpace:"nowrap"}))}o&&k.append(I('🔒 no access "));c.append(k),t.color_bg&&c.css("background-color",t.color_bg);t.color_text&&c.find(".members-am-item-label").css("color",t.color_text);t.color_icon&&(c.find(".dashicons").css("color",t.color_icon),c.find(".members-am-fa-icon i").css("color",t.color_icon));var O=I('
');return O.append(I(' ').text(i?"◯":"◉"),I(' ').text("↑"),I(' ').text("↓")),c.append(O),c.on("click",function(e){I(e.target).closest("button, .members-am-item-cb, .members-am-collapse-toggle").length||(P.selectedId=r.id,Pe())}),c}(a,e,n,i)),a.children&&a.children.length&&function(e,r){var n=N(r),a=S(e);P.tree.forEach(function(e){e&&e.id&&-1===e.id.indexOf("::")&&(a.overrides&&a.overrides[e.id]||{}).parent===r&&-1===n.indexOf(e.id)&&n.push(e.id)});var t=a.submenu_order&&a.submenu_order[r];if(!t||!t.length)return n.slice();var s=t.filter(function(e){return-1!==n.indexOf(e)});return n.forEach(function(e){-1===s.indexOf(e)&&s.push(e)}),s}(n,a.id).forEach(function(e){var r=function(e,r,n){var a=A(F(r,n));if(a)return a;if(-1===n.indexOf("::")){var t=S(e);if((t.overrides&&t.overrides[n]||{}).parent===r)return A(n)}return null}(n,a.id,e);r&&"__promote__"!==(t.overrides&&t.overrides[r.id]||{}).parent&&le(n,r,a.id,t,s,i+1)})}function ce(e,r){var t=(r||"").trim().toLowerCase(),n=e.children(".members-am-item");if(!t)return n.removeClass("members-am-filter-hidden"),void e.children(".members-am-sep").removeClass("members-am-filter-hidden");var i={};n.each(function(){var e=I(this),r=e.attr("data-id"),n=(e.find(".members-am-item-label").first().text()||"").toLowerCase(),a=(r||"").toLowerCase();i[r]=-1!==n.indexOf(t)||-1!==a.indexOf(t)});var o={};n.each(function(){var e=I(this).attr("data-id"),r=I(this).attr("data-menu-parent")||"";o[r]||(o[r]=[]),o[r].push(e)});var m={};function l(e){var r,n=i[e],a=o[e]||[],t=!1;for(r=0;r '),o=I(' ').attr("placeholder",t).attr("aria-label",s).val(a);i.append(o),e.find(".members-am-sidebar-head").first().after(i),o.on("input",function(){P.columnFilters[n]=I(this).val(),ce(r,I(this).val())}),ce(r,a)}function ue(e,r){var s=0===String(r).indexOf("u:"),i=s?parseInt(r.replace(/^u:/,""),10):0,o=s?null:r,m=r,l=membersAdminMenus.i18n||{},n=I('
').attr("data-column-key",m),a=I('
');a.append(I(' ').text(l.bulkSelectVisible||"Select visible"),I(' ').text(l.bulkClearSelection||"Clear selection"));var t=I('
');t.append(I(' ').text(l.collapseAllMenus||"Collapse all"),I(' ').text(l.expandAllMenus||"Expand all"));var c=I(' ').attr("aria-label",l.bulkVisibilityLabel||"Menu visibility for this column");c.append(I(' ').text(l.bulkActionsPlaceholder||"Choose visibility…"));var d=I(" ").attr("label",l.bulkGroupWholeColumn||"Whole column");d.append(I(' ').text(l.bulkShowAllItems||"Show every menu item"),I(' ').text(l.bulkHideAllItems||"Hide every menu item"));var u=I(" ").attr("label",l.bulkGroupCheckedRows||"Checked rows");u.append(I(' ').text(l.bulkKeepOnlyCheckedVisible||"Keep only checked visible"),I(' ').text(l.bulkHideCheckedItems||"Hide checked items"),I(' ').text(l.bulkShowCheckedItems||"Show checked items")),c.append(d,u),n.append(a,t,c);var p=e.find(".members-am-col-filter").first();p.length?p.after(n):e.find(".members-am-sidebar-head").first().after(n),c.on("change",function(){var e=I(this).val();if(I(this).val(""),e)if(!("keep-only-checked"===e||"hide-checked"===e||"show-checked"===e)||V(m).length){if("keep-only-checked"===e){if(!window.confirm(l.bulkConfirmKeepOnlyChecked||"Hide all items except checked items and their parent menus?"))return}else if("hide-all"===e){if(!window.confirm(l.bulkConfirmHideAll||"Hide every menu item in this column?"))return}else if("hide-checked"===e&&!window.confirm(l.bulkConfirmHideChecked||"Hide the checked items (and their submenus where applicable)?"))return;var r,n,a,t;h(),s?"show-all"===e?S(i).hidden=[]:"hide-all"===e?(a=i,t=z(),S(a).hidden=t.slice()):"keep-only-checked"===e?function(e,n){var r=V(e);if(r.length){var a={};r.forEach(function(e){for(var r=e;r;)a[r]=!0,r=R(r,n)});var t=z(),s=S(n).hidden;s.length=0,t.forEach(function(e){a[e]||s.push(e)})}}(m,i):"hide-checked"===e?ee(m,i):"show-checked"===e&&re(m,i):"show-all"===e?E(o).hidden=[]:"hide-all"===e?(r=o,n=z(),E(r).hidden=n.slice()):"keep-only-checked"===e?function(e,n){var r=V(e);if(r.length){var a={};r.forEach(function(e){for(var r=e;r;)a[r]=!0,r=C(r,n)});var t=z(),s=E(n).hidden;s.length=0,t.forEach(function(e){a[e]||s.push(e)})}}(m,o):"hide-checked"===e?Y(m,o):"show-checked"===e&&Z(m,o),Pe()}else f("warning",l.bulkSelectCheckedFirst||"Check one or more menu items first.")})}function pe(e){return-1!==e.indexOf("::")?e.split("::").pop():e}function fe(){I.fn.sortable&&I("#members-am-columns .members-am-sidebar-list").each(function(){var e=I(this);e.data("ui-sortable")&&e.sortable("destroy");var r=e.closest(".members-am-column"),n=r.data("role"),a=r.data("user");e.sortable({axis:"y",distance:6,items:"> .members-am-item, > .members-am-sep",cancel:".members-am-item-actions button, .members-am-item-cb, .members-am-item-cb-wrap, .members-am-collapse-toggle",placeholder:"members-am-sort-placeholder",forcePlaceholderSize:!0,tolerance:"pointer",start:function(){h()},update:function(){a?function(e,r){var t=[],s={};e.children().each(function(){var e=I(this);if(e.hasClass("members-am-sep")){var r=e.attr("data-sep-id");r&&t.push(r)}else if(e.hasClass("members-am-item")){var n=e.attr("data-id");if(n){var a=e.attr("data-menu-parent");void 0===a||""===a?t.push(n):(s[a]||(s[a]=[]),s[a].push(pe(n)))}}});var n=S(r);n.order=t,n.submenu_order=s}(e,a):n&&function(e,r){var t=[],s={};e.children().each(function(){var e=I(this);if(e.hasClass("members-am-sep")){var r=e.attr("data-sep-id");r&&t.push(r)}else if(e.hasClass("members-am-item")){var n=e.attr("data-id");if(n){var a=e.attr("data-menu-parent");void 0===a||""===a?t.push(n):(s[a]||(s[a]=[]),s[a].push(pe(n)))}}});var n=E(r);n.order=t,n.submenu_order=s}(e,n),he()}})})}function be(){var n=I("#members-am-columns"),a={};n.find(".members-am-column").each(function(){var e=I(this).data("role");if(e){var r=I(this).find(".members-am-sidebar-list");r.length&&(a[e]=r.scrollTop())}}),n.empty();var e=P.carouselPage*P.columnsPerPage;if(P.activeRoleSlugs.slice(e,e+P.columnsPerPage).forEach(function(e){var r=I('
');!function(n,e){e.empty();var r=I(''),a=(b().filter(function(e){return e.slug===n})[0]||{}).label||n;r.append(I('').text(a)),r.append(I(' ').append(I(' ').text("◀"),I(' ').text("▶"))),e.append(r);var t=I('');j(n).forEach(function(e){if(0!==e.indexOf("sep-")){var r=A(e);r&&me(n,r,null,t,0)}else t.append(I('
').attr("data-sep-id",e).text("—"))}),e.append(t),q(t,n),de(e,t,n),ue(e,n)}(e,r),n.append(r),a[e]&&r.find(".members-am-sidebar-list").scrollTop(a[e])}),P.previewUserId){var t=P.previewUserId,r=I('
'),s=I('');s.append(I(" ").text(P.previewUserLabel||"User #"+t)),s.append(I('× ').on("click",function(){P.previewUserId=null,P.previewUserLabel=null,P.previewUserRoles=[],Pe()})),r.append(s);var i=I(''),o=S(t);g(t).forEach(function(e){if(0!==e.indexOf("sep-")){var r=A(e);r&&le(t,r,null,o,i,0)}else i.append(I('
').attr("data-sep-id",e).text("——"))}),r.append(i),q(i,"u:"+t),de(r,i,"u:"+t),ue(r,"u:"+t),n.append(r)}if(P.syncScroll){var m=n.find(".members-am-sidebar-list"),l=!1;m.on("scroll",function(){if(!l){l=!0;var e=I(this).scrollTop();m.not(this).scrollTop(e),l=!1}})}!function(){var e=Math.max(1,Math.ceil(P.activeRoleSlugs.length/P.columnsPerPage)),r=(Math.min(P.carouselPage+1,e),P.carouselPage*P.columnsPerPage+1),n=Math.min((P.carouselPage+1)*P.columnsPerPage,P.activeRoleSlugs.length);I("#members-am-carousel-status").text(r+"–"+n+" "+membersAdminMenus.i18n.of+" "+P.activeRoleSlugs.length);for(var a=I("#members-am-carousel-dots").empty(),t=0;t ').toggleClass("is-active",t===P.carouselPage))}(),fe()}function he(){if(P.selectedId){I("#members-am-edit-panel").removeAttr("hidden");var e=A(P.selectedId),r=te()||{};I("#members-am-edit-title").text(e?e.title:P.selectedId),I("#members-am-edit-label").val(r.label||e&&e.title||"");var n=k(P.selectedId);I("#members-am-edit-url-wrap").toggle(n),I("#members-am-edit-url").attr("placeholder","Override URL (leave empty for default)").val(n&&(r.url||e&&e.url)||"").data("default-url",e&&e.url||""),I("#members-am-icon-type").val(r.icon_type||"dashicon"),I("#members-am-icon-value").val(r.icon||e&&e.icon||"");var a=r.icon||e&&e.icon||"",t=B(a,r.icon_type||e&&e.icon_type||"");"image"!==t&&"custom"!==t&&"svg"!==t||!a?I("#members-am-icon-preview").hide():I("#members-am-icon-preview").show().attr("src",a),I("#members-am-color-bg").val(r.color_bg||""),I("#members-am-color-text").val(r.color_text||""),I("#members-am-color-icon").val(r.color_icon||""),I("#members-am-badge-text").val(r.badge||""),I("#members-am-badge-bg").val(r.badge_bg||""),I("#members-am-item-cap").attr("placeholder",e&&e.cap?e.cap+" (default)":"").val(P.settings.capabilities[P.selectedId]||"");var s=e&&e.custom,i=I("#members-am-remove-custom");s?i.removeAttr("hidden"):i.attr("hidden","hidden"),I("#members-am-visibility-toggles").empty();var o=D(P.settings.capabilities[P.selectedId]||"")||D(e&&e.cap||"")||"read",m=[];if(b().forEach(function(e){"administrator"===e.slug&&!P.settings._meta.admin_editable||m.push(e)}),10<=m.length){var l=membersAdminMenus.i18n&&membersAdminMenus.i18n.filterRolesVisibility||"Filter roles…",c=membersAdminMenus.i18n&&membersAdminMenus.i18n.filterRolesVisibilityLabel||"Filter roles in this list",d=I('
'),u=I(' ').attr("placeholder",l).attr("aria-label",c);d.append(u),I("#members-am-visibility-toggles").append(d),u.on("input",function(){var t=(I(this).val()||"").trim().toLowerCase();I("#members-am-visibility-toggles .members-am-vis-row").each(function(){var e=I(this),r=(e.find("span").first().text()||"").toLowerCase(),n=String(e.find(".members-am-vis-cb").data("role")||"").toLowerCase(),a=!t||-1!==r.indexOf(t)||-1!==n.indexOf(t);e.toggleClass("members-am-vis-filter-hidden",!a)})})}m.forEach(function(e){var r=J(e.slug,P.selectedId),n=H(e.slug,o),a=I(' ').attr("data-role",e.slug).prop("checked",!r&&n);n||a.prop("disabled",!0);var t=I(' ').append(a,I(" ").text(e.label));n||(t.append(I(" ").text(" — no capability").css({color:"#999",fontStyle:"italic",marginLeft:"4px"})),t.css("opacity","0.5")),I("#members-am-visibility-toggles").append(t)}),I(".members-am-color").each(function(){I(this).data("wpWpColorPicker")&&I(this).wpColorPicker("destroy")}),I(".members-am-color").wpColorPicker({change:function(){p||setTimeout(function(){xe()},20)},clear:function(){p||setTimeout(function(){xe()},20)}}),p=!0,I(".members-am-color").each(function(){var e=I(this),r=String(e.val()||"").trim();if(r&&"#"!==r&&e.data("wpWpColorPicker"))try{e.wpColorPicker("color",r)}catch(e){}}),p=!1,ye(),function(){var e=I(".members-am-demote-wrap"),n=I("#members-am-demote-parent"),r=I("#members-am-demote");if(!P.selectedId)return e.attr("hidden",!0);if(O(P.selectedId))return e.attr("hidden",!0);var a=ne()[0]||P.activeRoleSlugs[0];if(a&&T(a,P.selectedId))return e.attr("hidden",!0);e.removeAttr("hidden");var t=P.selectedId,s=membersAdminMenus.i18n&&membersAdminMenus.i18n.selectParentMenu||"";n.empty().append(I(" ").val("").text(s));var i=0;P.tree.forEach(function(e){if(e&&e.id&&e.id!==t){var r=e.title&&String(e.title).trim()?e.title:e.id;n.append(I(" ").val(e.id).text(r)),i++}});var o=0 ');"dashicons"===n?r.append(I(' ')):r.append(I(' ')),r.on("click",function(){I("#members-am-icon-value").val(e),I("#members-am-icon-type").val("dashicons"===n?"dashicon":"fontawesome"),xe()}),t.append(r)}})}function ke(e,r){var n=P.activeRoleSlugs.indexOf(e);if(-1!==n){var a=n+r;if(!(a<0||a>=P.activeRoleSlugs.length)){h();var t=P.activeRoleSlugs[n];P.activeRoleSlugs[n]=P.activeRoleSlugs[a],P.activeRoleSlugs[a]=t,l(),Pe()}}}function _e(e,r,n){var a,t,s,i=E(e).overrides[r]||{},o=null;if("__promote__"===i.parent?o=null:-1!==r.indexOf("::")?o=O(r):i.parent&&"__promote__"!==i.parent&&(o=i.parent),o){var m=E(e).submenu_order;m[o]||(m[o]=(a=e,s=N(t=o),P.tree.forEach(function(e){e&&e.id&&-1===e.id.indexOf("::")&&(E(a).overrides[e.id]||{}).parent===t&&-1===s.indexOf(e.id)&&s.push(e.id)}),s));var l=m[o],c=-1!==r.indexOf("::")?r.split("::").pop():r;if(-1===(u=l.indexOf(c)))return;if((p=u+n)<0||p>=l.length)return;h();var d=l[u];l[u]=l[p],l[p]=d}else{E(e).order&&E(e).order.length||(E(e).order=U());var u,p,f=E(e).order;if(-1===(u=f.indexOf(r)))return;if((p=u+n)<0||p>=f.length)return;h();var b=f[u];f[u]=f[p],f[p]=b}Pe()}function we(){var e=ne();if(e.length){h();var a="sep-"+Date.now();e.forEach(function(e){E(e).order&&E(e).order.length||(E(e).order=U());var r=E(e).order,n=P.selectedId?r.indexOf(P.selectedId):r.length-1;n<0&&(n=r.length),r.splice(n+1,0,a)}),Pe()}}function Ae(e){var r=I("#members-am-toolbar-loading");r.removeAttr("hidden"),r.find(".spinner").addClass("is-active"),r.find(".members-am-loading-text").text(e||""),I("#members-am-save, #members-am-reset, #members-am-import, #members-am-copy-apply, #members-am-undo").prop("disabled",!0)}function Oe(){var e=I("#members-am-toolbar-loading");e.attr("hidden",!0),e.find(".spinner").removeClass("is-active"),e.find(".members-am-loading-text").text(""),I("#members-am-save, #members-am-reset, #members-am-import, #members-am-copy-apply").prop("disabled",!1),u()}function Se(e){Ae(e||membersAdminMenus.i18n&&membersAdminMenus.i18n.saving||"Saving…");var t=membersAdminMenus.i18n&&membersAdminMenus.i18n.networkError||"Could not save settings. Check your connection and try again.";I.ajax({url:membersAdminMenus.ajaxUrl,type:"POST",dataType:"json",timeout:6e4,data:{action:"members_admin_menus_save",nonce:membersAdminMenus.nonce,settings:JSON.stringify(P.settings)}}).done(function(e){if(e&&void 0!==e.success){if(e.success)return a=s(),d=null,u(),void f("success",e.data&&e.data.message||membersAdminMenus.i18n&&membersAdminMenus.i18n.saved||"Settings saved.");f("error",e.data&&e.data.message?e.data.message:"Error")}else f("error",t)}).fail(function(e,r){if("abort"!==r){var n=t;if(e&&e.responseJSON&&void 0!==e.responseJSON.data){var a=e.responseJSON.data;"string"==typeof a&&a?n=a:a&&"string"==typeof a.message&&a.message&&(n=a.message)}f("error",n)}}).always(function(){Oe()})}function Me(e,r){var n,a=membersAdminMenus.i18n||{};if(n="role"===e&&"administrator"===r?a.confirmResetAdministrator||"Reset all menu settings for the Administrator role? This cannot be undone.":"all"!==e&&"role"===e&&r?a.confirmResetRole||"Reset all settings for this role? This cannot be undone.":a.confirmResetAllRoles||"Reset ALL menu settings for every role? This cannot be undone.",confirm(n)){Ae(membersAdminMenus.i18n&&membersAdminMenus.i18n.resetting||"Resetting…");var t=!1;I.post(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_reset",nonce:membersAdminMenus.nonce,scope:e||"all",role:r||""}).done(function(e){if(e.success)return o("success",e.data&&e.data.message||membersAdminMenus.i18n&&membersAdminMenus.i18n.resetComplete||"Reset complete."),P.allowUnload=!0,t=!0,void location.reload();f("error",e.data&&e.data.message?e.data.message:membersAdminMenus.i18n&&membersAdminMenus.i18n.resetFailed||"Reset failed.")}).fail(function(){f("error",membersAdminMenus.i18n&&membersAdminMenus.i18n.resetNetworkError||membersAdminMenus.i18n.networkError||"Could not reset settings. Check your connection and try again.")}).always(function(){t||Oe()})}}function Ce(e){I.getJSON(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_user_search",nonce:membersAdminMenus.nonce,term:e},function(e){e.success&&e.data&&e.data.length?function(e){I(".members-am-user-suggestions").remove();var r=I("#members-am-user-search").parent();r.css("position","relative");var n=I('
');e.forEach(function(e){n.append(I('
').text(e.label).data("userId",e.id).on("click",function(){!function(e,r,n){P.previewUserId=e,P.previewUserLabel=r||"User #"+e,P.previewUserRoles=n||[],v(),P.settings.users[e]||(P.settings.users[e]={});Pe()}(e.id,e.label,e.roles),I(".members-am-user-suggestions").remove(),I("#members-am-user-search").val("")}))}),r.append(n),setTimeout(function(){I(document).one("click",function(){I(".members-am-user-suggestions").remove()})},0)}(e.data):I(".members-am-user-suggestions").remove()})}function Ie(){I(document).on("click","#members-am-role-chips .members-am-chip",function(){var e=I(this).data("role"),r=P.activeRoleSlugs.indexOf(e);-1===r?P.activeRoleSlugs.push(e):1 ');if(s.append(I('
').text(n.resetSettingsLabel||"Reset Settings")),t){var i=I(' ');i.append(I(' ')),i.append(I(' ').append(I(" ").text(n.resetAdministrator||"Reset Administrator"),I(" ").text(n.resetAdministratorHelp||"Clear all menu settings for the Administrator role only."))),i.on("click",function(e){e.preventDefault(),e.stopPropagation(),I(".members-am-reset-dropdown").remove(),Me("role",a)}),s.append(i)}var o=I(' ');o.append(I(' ')),o.append(I(' ').append(I(" ").text(n.resetAll||"Reset all roles"),I(" ").text(n.resetAllRolesHelp||"Clear all menu settings for every role."))),o.on("click",function(e){e.preventDefault(),e.stopPropagation(),I(".members-am-reset-dropdown").remove(),Me("all")}),s.append(o),s.insertAfter(r),setTimeout(function(){I(document).one("click",function(){I(".members-am-reset-dropdown").remove()})},0)}),I("#members-am-export").on("click",function(e){e.preventDefault(),window.location.href=membersAdminMenus.exportUrl}),I("#members-am-import").on("click",function(){I("#members-am-import-file").trigger("click")}),I("#members-am-import-file").on("change",function(){var e=this.files&&this.files[0];e&&function(e){Ae(membersAdminMenus.i18n&&membersAdminMenus.i18n.importing||"Importing…");var n=new FileReader;n.onerror=function(){Oe(),f("error",membersAdminMenus.i18n&&membersAdminMenus.i18n.readFileFailed||"Could not read the file.")},n.onload=function(){try{var e=JSON.parse(n.result),r=!1;I.post(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_import",nonce:membersAdminMenus.nonce,settings:JSON.stringify(e)}).done(function(e){if(e.success)return o("success",e.data&&e.data.message||membersAdminMenus.i18n&&membersAdminMenus.i18n.imported||"Settings imported."),P.allowUnload=!0,r=!0,void location.reload();f("error",e.data&&e.data.message?e.data.message:"Error")}).fail(function(){f("error",membersAdminMenus.i18n&&membersAdminMenus.i18n.importNetworkError||membersAdminMenus.i18n.networkError||"Could not import settings. Check your connection and try again.")}).always(function(){r||Oe()})}catch(e){Oe(),f("error",membersAdminMenus.i18n&&membersAdminMenus.i18n.invalidJson||"Invalid JSON.")}},n.readAsText(e)}(e)}),I("#members-am-copy-apply").on("click",function(){var n=I("#members-am-copy-from").val(),r=I("#members-am-copy-to").val();if(n&&r)if(n!==r){var a="",t="";if(b().forEach(function(e){e.slug===n&&(a=e.label),e.slug===r&&(t=e.label)}),confirm('Copy menu settings from "'+a+'" to "'+t+'"?\nThis will overwrite "'+t+"\" menu configuration.\n\nNote: This copies menu order, hidden items, labels, icons, and colors.\nIt does NOT change the role's capabilities (items marked with a lock icon).")){h();var e=E(n),s={hidden:e.hidden?e.hidden.slice():[],order:[],submenu_order:{},overrides:{}},i=j(n);s.order=i.slice(),P.tree.forEach(function(e){if(e.children&&e.children.length){var r=L(n,e.id);r&&r.length&&(s.submenu_order[e.id]=r.slice())}}),e.overrides&&"object"==typeof e.overrides&&(s.overrides=JSON.parse(JSON.stringify(e.overrides))),P.settings.roles[r]=s,-1===P.activeRoleSlugs.indexOf(r)&&(P.activeRoleSlugs.push(r),l(),oe()),Pe(),Se(membersAdminMenus.i18n&&membersAdminMenus.i18n.copying||"Copying…")}}else f("error",membersAdminMenus.i18n&&membersAdminMenus.i18n.rolesMustDiffer||"Source and target roles must be different.")}),I("#members-am-admin-editable").on("change",function(){var e=!0;I(this).is(":checked")&&(e=window.confirm(membersAdminMenus.i18n.adminEditableWarn)),e?(P.settings._meta.admin_editable=I(this).is(":checked"),ie(),oe(),l(),Pe()):I(this).prop("checked",!1)}),I("#members-am-sync-scroll").prop("checked",!1!==P.syncScroll),I("#members-am-sync-scroll").on("change",function(){P.syncScroll=I(this).is(":checked");try{localStorage.setItem("members_am_sync_scroll",P.syncScroll?"1":"0")}catch(e){}be()});var t="members_am_more_tools";function e(e){var r=I("#members-am-toolbar-extra"),n=I("#members-am-more-tools");if(r.length&&n.length){r.prop("hidden",!e),n.attr("aria-expanded",e?"true":"false").toggleClass("is-open",!!e);var a=membersAdminMenus.i18n||{};e&&a.moreToolsHideAria?n.attr("aria-label",a.moreToolsHideAria):!e&&a.moreToolsShowAria?n.attr("aria-label",a.moreToolsShowAria):n.removeAttr("aria-label");try{sessionStorage.setItem(t,e?"1":"0")}catch(e){}}}var r,n=!1;try{n="1"===sessionStorage.getItem(t)}catch(e){}e(n),I("#members-am-more-tools").on("click",function(){e(I("#members-am-toolbar-extra").prop("hidden"))}),I("#members-am-add-item").on("click",function(){h();var e="c"+Date.now();P.settings.custom_items.push({id:e,label:"Custom link",url:window.location.origin+"/wp-admin/",icon_type:"dashicon",icon:"dashicons-admin-generic",parent:"",position:99,cap:"read"}),P.tree=w(),P.selectedId=y({id:e}),Pe(),he()}),I("#members-am-remove-custom").on("click",function(){var e=A(P.selectedId),r=e&&e.customId?String(e.customId):"";if(!r&&e&&e.custom&&P.selectedId){var n=-1!==P.selectedId.indexOf("::")?P.selectedId.split("::").pop():P.selectedId;0===n.indexOf("members-am-")&&(P.settings.custom_items||[]).forEach(function(e){e&&e.id&&y(e)===n&&(r=String(e.id))})}e&&r&&(h(),P.settings.custom_items=(P.settings.custom_items||[]).filter(function(e){return!e||String(e.id)!==r}),P.selectedId=null,P.tree=w(),Pe(),I("#members-am-edit-panel").attr("hidden",!0))}),I("#members-am-edit-close").on("click",function(){P.selectedId=null,I("#members-am-edit-panel").attr("hidden",!0),Pe()}),I("#members-am-edit-target-role").on("change",he),I("#members-am-colors-readable").on("click",function(e){e.preventDefault();var r=String(I("#members-am-color-bg").val()||"").trim();if(r&&"#"!==r){var n=.45 ").val("__all__").text("All roles")),P.activeRoleSlugs.forEach(function(r){var e=(b().filter(function(e){return e.slug===r})[0]||{}).label||r;n.append(I(" ").val(r).text(e))}),P.previewUserId&&n.append(I(" ").val("__user__"+P.previewUserId).text(P.previewUserLabel||"User #"+P.previewUserId)),P.selectedId&&he()}I(function(){var r,n,e;!function(){try{var e=sessionStorage.getItem(i);if(!e)return;sessionStorage.removeItem(i);var r=JSON.parse(e);r&&r.message&&f(r.type,r.message)}catch(e){}}(),v(),P.tree=w(),ie(),I("#members-am-admin-editable").prop("checked",!!P.settings._meta.admin_editable),r=I("#members-am-copy-from").empty(),n=I("#members-am-copy-to").empty(),(e=b()).forEach(function(e){r.append(I(" ").val(e.slug).text(e.label)),n.append(I(" ").val(e.slug).text(e.label))}),1'),n=I("#members-am-notices"));var a=I("
",{class:"notice is-dismissible"}).addClass("notice-"+(e||"info"));a.append(I("
").text(r)),n.prepend(a),I(document).trigger("wp-notice-added")}}function o(e,r){try{sessionStorage.setItem(i,JSON.stringify({type:e||"success",message:r}))}catch(e){}}var e=["dashicons-menu","dashicons-admin-dashboard","dashicons-admin-post","dashicons-admin-page","dashicons-admin-media","dashicons-admin-comments","dashicons-admin-appearance","dashicons-admin-plugins","dashicons-admin-users","dashicons-admin-tools","dashicons-admin-settings","dashicons-admin-generic","dashicons-edit","dashicons-plus","dashicons-chart-bar","dashicons-cart","dashicons-products","dashicons-email","dashicons-groups","dashicons-heart","dashicons-star-filled","dashicons-smiley","dashicons-info","dashicons-lock","dashicons-unlock","dashicons-visibility","dashicons-hidden","dashicons-arrow-up","dashicons-arrow-down","dashicons-admin-network","dashicons-performance"],r=["fa-solid fa-house","fa-solid fa-user","fa-solid fa-gear","fa-solid fa-file","fa-solid fa-image","fa-solid fa-cart-shopping","fa-solid fa-chart-line","fa-solid fa-envelope","fa-solid fa-book","fa-solid fa-link","fa-solid fa-bell","fa-solid fa-star","fa-solid fa-heart","fa-solid fa-lock","fa-solid fa-unlock","fa-solid fa-pen","fa-solid fa-trash","fa-solid fa-plus","fa-solid fa-minus"],m="members_am_view_state";function l(){try{localStorage.setItem(m,JSON.stringify({activeRoleSlugs:P.activeRoleSlugs,carouselPage:P.carouselPage}))}catch(e){}}function c(e){return JSON.parse(JSON.stringify(e))}var d=null;function h(){d=c(P.settings),u()}function u(){var e=I("#members-am-undo");if(e.length){var r=!!d;e.prop("disabled",!r).attr("aria-disabled",r?"false":"true")}}function b(){return membersAdminMenus.roles||[]}function v(){P.settings._meta&&!Array.isArray(P.settings._meta)||(P.settings._meta={version:3,admin_editable:!1}),P.settings.roles&&!Array.isArray(P.settings.roles)||(P.settings.roles={}),P.settings.users&&!Array.isArray(P.settings.users)||(P.settings.users={}),Array.isArray(P.settings.custom_items)||(P.settings.custom_items=[]),P.settings.capabilities&&!Array.isArray(P.settings.capabilities)||(P.settings.capabilities={})}function E(e){v(),P.settings.roles[e]||(P.settings.roles[e]={hidden:[],order:[],submenu_order:{},overrides:{}});var r=P.settings.roles[e];return r.hidden&&Array.isArray(r.hidden)||(r.hidden=[]),r.order&&Array.isArray(r.order)||(r.order=[]),r.submenu_order&&!Array.isArray(r.submenu_order)||(r.submenu_order={}),r.overrides&&!Array.isArray(r.overrides)||(r.overrides={}),r}function S(e){v(),P.settings.users[e]||(P.settings.users[e]={});var r=P.settings.users[e];return r.hidden&&Array.isArray(r.hidden)||(r.hidden=[]),r.order&&Array.isArray(r.order)||(r.order=[]),r.overrides&&!Array.isArray(r.overrides)||(r.overrides={}),r.submenu_order&&!Array.isArray(r.submenu_order)||(r.submenu_order={}),r}function M(e,r){var n=function(e,r){for(var n=(e||[]).slice().sort(),a=null,t=0;t=t.length||(h(),t.splice(p,1),t.splice(f,0,o?u:r))}}function y(e){var r=e.id||"c";return"members-am-"+String(r).replace(/[^a-z0-9_-]/gi,"-").toLowerCase()}function k(e){return!!e&&0===(-1!==e.indexOf("::")?e.split("::").pop():e).indexOf("members-am-")}function _(e,r){if(!e||!r)return null;for(var n=0;nt&&(P.carouselPage=t))}}P.activeRoleSlugs=r.filter(function(e){return"administrator"!==e||n}),P.activeRoleSlugs.length||(P.activeRoleSlugs=["subscriber"])}function me(){var a=I("#members-am-role-chips").empty();b().forEach(function(e){if("administrator"!==e.slug||P.settings._meta.admin_editable){var r=-1!==P.activeRoleSlugs.indexOf(e.slug),n=I(' ').text(e.label).attr("data-role",e.slug).toggleClass("is-active",r);a.append(n)}})}function le(s,i,e,o,m){(function(e,r,n,a,t){t=t||0;var s=r.id,i=J(e,s),o=!B(e,r.cap),m=E(e).overrides[s]||{},l=m.label||r.title||s,c=I('
').attr("data-id",s).attr("data-menu-parent",n||"").toggleClass("is-hidden",i).toggleClass("is-no-cap",o).toggleClass("is-selected",P.selectedId===s).toggleClass("is-sub",0 ');if(p){$(d);var b=!!P.collapsedParents[d][s],h=u.expandSubmenus||"Expand submenu items",v=u.collapseSubmenus||"Collapse submenu items";I(' ').attr("aria-expanded",!b).attr("aria-label",(b?h:v)+": "+l).append(I(' ').addClass(b?"dashicons-arrow-right-alt2":"dashicons-arrow-down-alt2")).on("click",function(e){e.stopPropagation(),$(d),P.collapsedParents[d][s]=!P.collapsedParents[d][s],he()}).appendTo(f),c.toggleClass("is-collapse-collapsed",b)}else f.append(I(' '));c.append(f);var g=u.bulkCheckboxAria||"Include in bulk actions",x=I(' '),y=I(' ').prop("checked",!!P.columnBulkSelection[d].ids[s]).attr("aria-label",g+": "+l).on("click",function(e){e.stopPropagation()}).on("change",function(e){e.stopPropagation(),Q(d,s,I(this).prop("checked")),he()});x.append(y),c.append(x);var k=I('
');if(0===t){var _=m.icon||r.icon,w=z(_,m.icon_type||r.icon_type);if("fontawesome"===w&&_)k.append(I(' '));else if("svg"!==w&&"image"!==w&&"custom"!==w||!_){var A=_&&0===_.indexOf("dashicons-")?_:"dashicons-admin-generic";k.append(I(' '))}else k.append(I(" ").attr("src",_).css({width:"20px",height:"20px",display:"inline-block",verticalAlign:"middle",objectFit:"contain",filter:"none"}))}r.custom&&k.append(I('custom '));m.label&&k.append(I('edit '));if(k.append(I(' ').text(l)),m.badge){var O=m.badge_bg||"#d63638";k.append(I(' ').text(m.badge).css({backgroundColor:O,color:"#fff",fontSize:"9px",padding:"1px 5px",borderRadius:"2px",marginLeft:"4px",whiteSpace:"nowrap"}))}if(o){var S=membersAdminMenus.i18n||{},M=S.noAccessTitlePattern&&S.noAccessTitlePattern.replace("%s",r.cap||"read")||"This role does not have the '"+(r.cap||"read")+"' capability on this role object. Users with multiple roles may still access the screen. Manage capabilities in Members → Roles.";k.append(I(' ').attr("title",M).html("🔒 no access"))}c.append(k),m.color_bg&&c.css("background-color",m.color_bg);m.color_text&&c.find(".members-am-item-label").css("color",m.color_text);m.color_icon&&(c.find(".dashicons").css("color",m.color_icon),c.find(".members-am-fa-icon i").css("color",m.color_icon),c.find("img").css("filter","none"));var C=I('
');C.append(I(' ').text("◉"),I(' ').text("↑"),I(' ').text("↓")),c.append(C),a.append(c)})(s,i,e,o,m=m||0),i.children&&i.children.length&&N(s,i.id).forEach(function(e){var r,n,a,t=(r=s,n=i.id,A(F(n,a=e))||(-1===a.indexOf("::")&&(E(r).overrides[a]||{}).parent===n?A(a):null));t&&"__promote__"!==(E(s).overrides[t.id]||{}).parent&&le(s,t,i.id,o,m+1)})}function ce(n,a,e,t,s,i){i=i||0,s.append(function(r,e,n,a){a=a||0;var t=M(n,r.id),s=t.label||r.title,i=function(e,r){var n=S(e);if(-1!==n.hidden.indexOf(r))return!0;var a=R(r,e);return!(!a||-1===n.hidden.indexOf(a))}(n,r.id),o=!function(e){if(!e||"read"===e)return 1;for(var r=P.previewUserRoles||[],n=0;n").addClass(l).attr("data-id",r.id).attr("data-menu-parent",e||""),d="u:"+n;V(d);var u=membersAdminMenus.i18n||{},p=r.children&&r.children.length,f=I(' ');if(p){$(d);var b=!!P.collapsedParents[d][r.id],h=u.expandSubmenus||"Expand submenu items",v=u.collapseSubmenus||"Collapse submenu items";I(' ').attr("aria-expanded",!b).attr("aria-label",(b?h:v)+": "+s).append(I(' ').addClass(b?"dashicons-arrow-right-alt2":"dashicons-arrow-down-alt2")).on("click",function(e){e.stopPropagation(),$(d),P.collapsedParents[d][r.id]=!P.collapsedParents[d][r.id],he()}).appendTo(f),c.toggleClass("is-collapse-collapsed",b)}else f.append(I(' '));c.append(f);var g=u.bulkCheckboxAria||"Include in bulk actions",x=I(' '),y=I(' ').prop("checked",!!P.columnBulkSelection[d].ids[r.id]).attr("aria-label",g+": "+s).on("click",function(e){e.stopPropagation()}).on("change",function(e){e.stopPropagation(),Q(d,r.id,I(this).prop("checked")),he()});x.append(y),c.append(x);var k=I('
');if(0===a){var _=t.icon||r.icon,w=z(_,t.icon_type||r.icon_type);"fontawesome"===w&&_?k.append(I(' ')):"svg"!==w&&"image"!==w&&"custom"!==w||!_?_&&0===_.indexOf("dashicons-")?k.append(I(' ')):k.append(I(' ')):k.append(I(" ").attr("src",_).css({width:"20px",height:"20px",display:"inline-block",verticalAlign:"middle",objectFit:"contain",filter:"none"}))}r.custom&&k.append(I('custom '));t.label&&k.append(I('edit '));if(k.append(I(' ').text(s)),t.badge){var A=t.badge_bg||"#d63638";k.append(I(' ').text(t.badge).css({backgroundColor:A,color:"#fff",fontSize:"9px",padding:"1px 5px",borderRadius:"2px",marginLeft:"4px",whiteSpace:"nowrap"}))}o&&k.append(I('🔒 no access "));c.append(k),t.color_bg&&c.css("background-color",t.color_bg);t.color_text&&c.find(".members-am-item-label").css("color",t.color_text);t.color_icon&&(c.find(".dashicons").css("color",t.color_icon),c.find(".members-am-fa-icon i").css("color",t.color_icon));var O=I('
');return O.append(I(' ').text(i?"◯":"◉"),I(' ').text("↑"),I(' ').text("↓")),c.append(O),c.on("click",function(e){I(e.target).closest("button, .members-am-item-cb, .members-am-collapse-toggle").length||(P.selectedId=r.id,Ee())}),c}(a,e,n,i)),a.children&&a.children.length&&function(e,r){var n=j(r),a=S(e);P.tree.forEach(function(e){e&&e.id&&-1===e.id.indexOf("::")&&(a.overrides&&a.overrides[e.id]||{}).parent===r&&-1===n.indexOf(e.id)&&n.push(e.id)});var t=a.submenu_order&&a.submenu_order[r];if(!t||!t.length)return n.slice();var s=t.filter(function(e){return-1!==n.indexOf(e)});return n.forEach(function(e){-1===s.indexOf(e)&&s.push(e)}),s}(n,a.id).forEach(function(e){var r=function(e,r,n){var a=A(F(r,n));if(a)return a;if(-1===n.indexOf("::")){var t=S(e);if((t.overrides&&t.overrides[n]||{}).parent===r)return A(n)}return null}(n,a.id,e);r&&"__promote__"!==(t.overrides&&t.overrides[r.id]||{}).parent&&ce(n,r,a.id,t,s,i+1)})}function de(e,r){var t=(r||"").trim().toLowerCase(),n=e.children(".members-am-item");if(!t)return n.removeClass("members-am-filter-hidden"),void e.children(".members-am-sep").removeClass("members-am-filter-hidden");var i={};n.each(function(){var e=I(this),r=e.attr("data-id"),n=(e.find(".members-am-item-label").first().text()||"").toLowerCase(),a=(r||"").toLowerCase();i[r]=-1!==n.indexOf(t)||-1!==a.indexOf(t)});var o={};n.each(function(){var e=I(this).attr("data-id"),r=I(this).attr("data-menu-parent")||"";o[r]||(o[r]=[]),o[r].push(e)});var m={};function l(e){var r,n=i[e],a=o[e]||[],t=!1;for(r=0;r '),o=I(' ').attr("placeholder",t).attr("aria-label",s).val(a);i.append(o),e.find(".members-am-sidebar-head").first().after(i),o.on("input",function(){P.columnFilters[n]=I(this).val(),de(r,I(this).val())}),de(r,a)}function pe(e,r){var s=0===String(r).indexOf("u:"),i=s?parseInt(r.replace(/^u:/,""),10):0,o=s?null:r,m=r,l=membersAdminMenus.i18n||{},n=I('
').attr("data-column-key",m),a=I('
');a.append(I(' ').text(l.bulkSelectVisible||"Select visible"),I(' ').text(l.bulkClearSelection||"Clear selection"));var t=I('
');t.append(I(' ').text(l.collapseAllMenus||"Collapse all"),I(' ').text(l.expandAllMenus||"Expand all"));var c=I(' ').attr("aria-label",l.bulkVisibilityLabel||"Menu visibility for this column");c.append(I(' ').text(l.bulkActionsPlaceholder||"Choose visibility…"));var d=I(" ").attr("label",l.bulkGroupWholeColumn||"Whole column");d.append(I(' ').text(l.bulkShowAllItems||"Show every menu item"),I(' ').text(l.bulkHideAllItems||"Hide every menu item"));var u=I(" ").attr("label",l.bulkGroupCheckedRows||"Checked rows");u.append(I(' ').text(l.bulkKeepOnlyCheckedVisible||"Keep only checked visible"),I(' ').text(l.bulkHideCheckedItems||"Hide checked items"),I(' ').text(l.bulkShowCheckedItems||"Show checked items")),c.append(d,u),n.append(a,t,c);var p=e.find(".members-am-col-filter").first();p.length?p.after(n):e.find(".members-am-sidebar-head").first().after(n),c.on("change",function(){var e=I(this).val();if(I(this).val(""),e)if(!("keep-only-checked"===e||"hide-checked"===e||"show-checked"===e)||K(m).length){if("keep-only-checked"===e){if(!window.confirm(l.bulkConfirmKeepOnlyChecked||"Hide all items except checked items and their parent menus?"))return}else if("hide-all"===e){if(!window.confirm(l.bulkConfirmHideAll||"Hide every menu item in this column?"))return}else if("hide-checked"===e&&!window.confirm(l.bulkConfirmHideChecked||"Hide the checked items (and their submenus where applicable)?"))return;var r,n,a,t;h(),s?"show-all"===e?S(i).hidden=[]:"hide-all"===e?(a=i,t=W(),S(a).hidden=t.slice()):"keep-only-checked"===e?function(e,n){var r=K(e);if(r.length){var a={};r.forEach(function(e){for(var r=e;r;)a[r]=!0,r=R(r,n)});var t=W(),s=S(n).hidden;s.length=0,t.forEach(function(e){a[e]||s.push(e)})}}(m,i):"hide-checked"===e?re(m,i):"show-checked"===e&&ne(m,i):"show-all"===e?E(o).hidden=[]:"hide-all"===e?(r=o,n=W(),E(r).hidden=n.slice()):"keep-only-checked"===e?function(e,n){var r=K(e);if(r.length){var a={};r.forEach(function(e){for(var r=e;r;)a[r]=!0,r=C(r,n)});var t=W(),s=E(n).hidden;s.length=0,t.forEach(function(e){a[e]||s.push(e)})}}(m,o):"hide-checked"===e?Z(m,o):"show-checked"===e&&ee(m,o),Ee()}else f("warning",l.bulkSelectCheckedFirst||"Check one or more menu items first.")})}function fe(e){return-1!==e.indexOf("::")?e.split("::").pop():e}function be(){I.fn.sortable&&I("#members-am-columns .members-am-sidebar-list").each(function(){var e=I(this);e.data("ui-sortable")&&e.sortable("destroy");var r=e.closest(".members-am-column"),n=r.data("role"),a=r.data("user");e.sortable({axis:"y",distance:6,items:"> .members-am-item, > .members-am-sep",cancel:".members-am-item-actions button, .members-am-item-cb, .members-am-item-cb-wrap, .members-am-collapse-toggle",placeholder:"members-am-sort-placeholder",forcePlaceholderSize:!0,tolerance:"pointer",start:function(){h()},update:function(){a?function(e,r){var t=[],s={};e.children().each(function(){var e=I(this);if(e.hasClass("members-am-sep")){var r=e.attr("data-sep-id");r&&t.push(r)}else if(e.hasClass("members-am-item")){var n=e.attr("data-id");if(n){var a=e.attr("data-menu-parent");void 0===a||""===a?t.push(n):(s[a]||(s[a]=[]),s[a].push(fe(n)))}}});var n=S(r);n.order=t,n.submenu_order=s}(e,a):n&&function(e,r){var t=[],s={};e.children().each(function(){var e=I(this);if(e.hasClass("members-am-sep")){var r=e.attr("data-sep-id");r&&t.push(r)}else if(e.hasClass("members-am-item")){var n=e.attr("data-id");if(n){var a=e.attr("data-menu-parent");void 0===a||""===a?t.push(n):(s[a]||(s[a]=[]),s[a].push(fe(n)))}}});var n=E(r);n.order=t,n.submenu_order=s}(e,n),ve()}})})}function he(){var n=I("#members-am-columns"),a={};n.find(".members-am-column").each(function(){var e=I(this).data("role");if(e){var r=I(this).find(".members-am-sidebar-list");r.length&&(a[e]=r.scrollTop())}}),n.empty();var e=P.carouselPage*P.columnsPerPage;if(P.activeRoleSlugs.slice(e,e+P.columnsPerPage).forEach(function(e){var r=I('
');!function(n,e){e.empty();var r=I(''),a=(b().filter(function(e){return e.slug===n})[0]||{}).label||n;r.append(I('').text(a)),r.append(I(' ').append(I(' ').text("◀"),I(' ').text("▶"))),e.append(r);var t=I('');L(n).forEach(function(e){if(0!==e.indexOf("sep-")){var r=A(e);r&&le(n,r,null,t,0)}else t.append(I('
').attr("data-sep-id",e).text("—"))}),e.append(t),X(t,n),ue(e,t,n),pe(e,n)}(e,r),n.append(r),a[e]&&r.find(".members-am-sidebar-list").scrollTop(a[e])}),P.previewUserId){var t=P.previewUserId,r=I('
'),s=I('');s.append(I(" ").text(P.previewUserLabel||"User #"+t)),s.append(I('× ').on("click",function(){P.previewUserId=null,P.previewUserLabel=null,P.previewUserRoles=[],Ee()})),r.append(s);var i=I(''),o=S(t);g(t).forEach(function(e){if(0!==e.indexOf("sep-")){var r=A(e);r&&ce(t,r,null,o,i,0)}else i.append(I('
').attr("data-sep-id",e).text("——"))}),r.append(i),X(i,"u:"+t),ue(r,i,"u:"+t),pe(r,"u:"+t),n.append(r)}if(P.syncScroll){var m=n.find(".members-am-sidebar-list"),l=!1;m.on("scroll",function(){if(!l){l=!0;var e=I(this).scrollTop();m.not(this).scrollTop(e),l=!1}})}!function(){var e=Math.max(1,Math.ceil(P.activeRoleSlugs.length/P.columnsPerPage)),r=(Math.min(P.carouselPage+1,e),P.carouselPage*P.columnsPerPage+1),n=Math.min((P.carouselPage+1)*P.columnsPerPage,P.activeRoleSlugs.length);I("#members-am-carousel-status").text(r+"–"+n+" "+membersAdminMenus.i18n.of+" "+P.activeRoleSlugs.length);for(var a=I("#members-am-carousel-dots").empty(),t=0;t ').toggleClass("is-active",t===P.carouselPage))}(),be()}function ve(){if(P.selectedId){I("#members-am-edit-panel").removeAttr("hidden");var e=A(P.selectedId),r=se()||{};I("#members-am-edit-title").text(e?e.title:P.selectedId),I("#members-am-edit-label").val(r.label||e&&e.title||"");var n=k(P.selectedId);I("#members-am-edit-url-wrap").toggle(n),I("#members-am-edit-url").attr("placeholder","Override URL (leave empty for default)").val(n&&(r.url||e&&e.url)||"").data("default-url",e&&e.url||""),I("#members-am-icon-type").val(r.icon_type||"dashicon"),I("#members-am-icon-value").val(r.icon||e&&e.icon||"");var a=r.icon||e&&e.icon||"",t=z(a,r.icon_type||e&&e.icon_type||"");"image"!==t&&"custom"!==t&&"svg"!==t||!a?I("#members-am-icon-preview").hide():I("#members-am-icon-preview").show().attr("src",a),I("#members-am-color-bg").val(r.color_bg||""),I("#members-am-color-text").val(r.color_text||""),I("#members-am-color-icon").val(r.color_icon||""),I("#members-am-badge-text").val(r.badge||""),I("#members-am-badge-bg").val(r.badge_bg||""),I("#members-am-item-cap").attr("placeholder",e&&e.cap?e.cap+" (default)":"").val(P.settings.capabilities[P.selectedId]||"");var s=e&&e.custom,i=I("#members-am-remove-custom");s?i.removeAttr("hidden"):i.attr("hidden","hidden"),I("#members-am-visibility-toggles").empty();var o=H(P.settings.capabilities[P.selectedId]||"")||H(e&&e.cap||"")||"read",m=[];if(b().forEach(function(e){"administrator"===e.slug&&!P.settings._meta.admin_editable||m.push(e)}),10<=m.length){var l=membersAdminMenus.i18n&&membersAdminMenus.i18n.filterRolesVisibility||"Filter roles…",c=membersAdminMenus.i18n&&membersAdminMenus.i18n.filterRolesVisibilityLabel||"Filter roles in this list",d=I('
'),u=I(' ').attr("placeholder",l).attr("aria-label",c);d.append(u),I("#members-am-visibility-toggles").append(d),u.on("input",function(){var t=(I(this).val()||"").trim().toLowerCase();I("#members-am-visibility-toggles .members-am-vis-row").each(function(){var e=I(this),r=(e.find("span").first().text()||"").toLowerCase(),n=String(e.find(".members-am-vis-cb").data("role")||"").toLowerCase(),a=!t||-1!==r.indexOf(t)||-1!==n.indexOf(t);e.toggleClass("members-am-vis-filter-hidden",!a)})})}m.forEach(function(e){var r=J(e.slug,P.selectedId),n=B(e.slug,o),a=I(' ').attr("data-role",e.slug).prop("checked",!r&&n);n||a.prop("disabled",!0);var t=I(' ').append(a,I(" ").text(e.label));n||(t.append(I(" ").text(" — no capability").css({color:"#999",fontStyle:"italic",marginLeft:"4px"})),t.css("opacity","0.5")),I("#members-am-visibility-toggles").append(t)}),I(".members-am-color").each(function(){I(this).data("wpWpColorPicker")&&I(this).wpColorPicker("destroy")}),I(".members-am-color").wpColorPicker({change:function(){p||setTimeout(function(){ye()},20)},clear:function(){p||setTimeout(function(){ye()},20)}}),p=!0,I(".members-am-color").each(function(){var e=I(this),r=String(e.val()||"").trim();if(r&&"#"!==r&&e.data("wpWpColorPicker"))try{e.wpColorPicker("color",r)}catch(e){}}),p=!1,ke(),function(){var e=I(".members-am-demote-wrap"),n=I("#members-am-demote-parent"),r=I("#members-am-demote");if(!P.selectedId)return e.attr("hidden",!0);if(O(P.selectedId))return e.attr("hidden",!0);var a=ae()[0]||P.activeRoleSlugs[0];if(a&&U(a,P.selectedId))return e.attr("hidden",!0);e.removeAttr("hidden");var t=P.selectedId,s=membersAdminMenus.i18n&&membersAdminMenus.i18n.selectParentMenu||"";n.empty().append(I(" ").val("").text(s));var i=0;P.tree.forEach(function(e){if(e&&e.id&&e.id!==t){var r=e.title&&String(e.title).trim()?e.title:e.id;n.append(I(" ").val(e.id).text(r)),i++}});var o=0 ');"dashicons"===n?r.append(I(' ')):r.append(I(' ')),r.on("click",function(){I("#members-am-icon-value").val(e),I("#members-am-icon-type").val("dashicons"===n?"dashicon":"fontawesome"),ye()}),t.append(r)}})}function _e(e,r){var n=P.activeRoleSlugs.indexOf(e);if(-1!==n){var a=n+r;if(!(a<0||a>=P.activeRoleSlugs.length)){h();var t=P.activeRoleSlugs[n];P.activeRoleSlugs[n]=P.activeRoleSlugs[a],P.activeRoleSlugs[a]=t,l(),Ee()}}}function we(e,r,n){var a,t,s,i=E(e).overrides[r]||{},o=null;if("__promote__"===i.parent?o=null:-1!==r.indexOf("::")?o=O(r):i.parent&&"__promote__"!==i.parent&&(o=i.parent),o){var m=E(e).submenu_order;m[o]||(m[o]=(a=e,s=j(t=o),P.tree.forEach(function(e){e&&e.id&&-1===e.id.indexOf("::")&&(E(a).overrides[e.id]||{}).parent===t&&-1===s.indexOf(e.id)&&s.push(e.id)}),s));var l=m[o],c=-1!==r.indexOf("::")?r.split("::").pop():r;if(-1===(u=l.indexOf(c)))return;if((p=u+n)<0||p>=l.length)return;h();var d=l[u];l[u]=l[p],l[p]=d}else{E(e).order&&E(e).order.length||(E(e).order=T());var u,p,f=E(e).order;if(-1===(u=f.indexOf(r)))return;if((p=u+n)<0||p>=f.length)return;h();var b=f[u];f[u]=f[p],f[p]=b}Ee()}function Ae(){var e=ae();if(e.length){h();var a="sep-"+Date.now();e.forEach(function(e){E(e).order&&E(e).order.length||(E(e).order=T());var r=E(e).order,n=P.selectedId?r.indexOf(P.selectedId):r.length-1;n<0&&(n=r.length),r.splice(n+1,0,a)}),Ee()}}function Oe(e){var r=I("#members-am-toolbar-loading");r.removeAttr("hidden"),r.find(".spinner").addClass("is-active"),r.find(".members-am-loading-text").text(e||""),I("#members-am-save, #members-am-reset, #members-am-import, #members-am-copy-apply, #members-am-undo").prop("disabled",!0)}function Se(){var e=I("#members-am-toolbar-loading");e.attr("hidden",!0),e.find(".spinner").removeClass("is-active"),e.find(".members-am-loading-text").text(""),I("#members-am-save, #members-am-reset, #members-am-import, #members-am-copy-apply").prop("disabled",!1),u()}function Me(e){Oe(e||membersAdminMenus.i18n&&membersAdminMenus.i18n.saving||"Saving…");var t=membersAdminMenus.i18n&&membersAdminMenus.i18n.networkError||"Could not save settings. Check your connection and try again.";I.ajax({url:membersAdminMenus.ajaxUrl,type:"POST",dataType:"json",timeout:6e4,data:{action:"members_admin_menus_save",nonce:membersAdminMenus.nonce,settings:JSON.stringify(P.settings)}}).done(function(e){if(e&&void 0!==e.success){if(e.success)return a=s(),d=null,u(),void f("success",e.data&&e.data.message||membersAdminMenus.i18n&&membersAdminMenus.i18n.saved||"Settings saved.");f("error",e.data&&e.data.message?e.data.message:"Error")}else f("error",t)}).fail(function(e,r){if("abort"!==r){var n=t;if(e&&e.responseJSON&&void 0!==e.responseJSON.data){var a=e.responseJSON.data;"string"==typeof a&&a?n=a:a&&"string"==typeof a.message&&a.message&&(n=a.message)}f("error",n)}}).always(function(){Se()})}function Ce(e,r){var n,a=membersAdminMenus.i18n||{};if(n="role"===e&&"administrator"===r?a.confirmResetAdministrator||"Reset all menu settings for the Administrator role? This cannot be undone.":"all"!==e&&"role"===e&&r?a.confirmResetRole||"Reset all settings for this role? This cannot be undone.":a.confirmResetAllRoles||"Reset ALL menu settings for every role? This cannot be undone.",confirm(n)){Oe(membersAdminMenus.i18n&&membersAdminMenus.i18n.resetting||"Resetting…");var t=!1;I.post(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_reset",nonce:membersAdminMenus.nonce,scope:e||"all",role:r||""}).done(function(e){if(e.success)return o("success",e.data&&e.data.message||membersAdminMenus.i18n&&membersAdminMenus.i18n.resetComplete||"Reset complete."),P.allowUnload=!0,t=!0,void location.reload();f("error",e.data&&e.data.message?e.data.message:membersAdminMenus.i18n&&membersAdminMenus.i18n.resetFailed||"Reset failed.")}).fail(function(){f("error",membersAdminMenus.i18n&&membersAdminMenus.i18n.resetNetworkError||membersAdminMenus.i18n.networkError||"Could not reset settings. Check your connection and try again.")}).always(function(){t||Se()})}}function Ie(e){I.getJSON(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_user_search",nonce:membersAdminMenus.nonce,term:e},function(e){e.success&&e.data&&e.data.length?function(e){I(".members-am-user-suggestions").remove();var r=I("#members-am-user-search").parent();r.css("position","relative");var n=I('
');e.forEach(function(e){n.append(I('
').text(e.label).data("userId",e.id).on("click",function(){!function(e,r,n){P.previewUserId=e,P.previewUserLabel=r||"User #"+e,P.previewUserRoles=n||[],v(),P.settings.users[e]||(P.settings.users[e]={});Ee()}(e.id,e.label,e.roles),I(".members-am-user-suggestions").remove(),I("#members-am-user-search").val("")}))}),r.append(n),setTimeout(function(){I(document).one("click",function(){I(".members-am-user-suggestions").remove()})},0)}(e.data):I(".members-am-user-suggestions").remove()})}function Pe(){I(document).on("click","#members-am-role-chips .members-am-chip",function(){var e=I(this).data("role"),r=P.activeRoleSlugs.indexOf(e);-1===r?P.activeRoleSlugs.push(e):1 ');if(s.append(I('
').text(n.resetSettingsLabel||"Reset Settings")),t){var i=I(' ');i.append(I(' ')),i.append(I(' ').append(I(" ").text(n.resetAdministrator||"Reset Administrator"),I(" ").text(n.resetAdministratorHelp||"Clear all menu settings for the Administrator role only."))),i.on("click",function(e){e.preventDefault(),e.stopPropagation(),I(".members-am-reset-dropdown").remove(),Ce("role",a)}),s.append(i)}var o=I(' ');o.append(I(' ')),o.append(I(' ').append(I(" ").text(n.resetAll||"Reset all roles"),I(" ").text(n.resetAllRolesHelp||"Clear all menu settings for every role."))),o.on("click",function(e){e.preventDefault(),e.stopPropagation(),I(".members-am-reset-dropdown").remove(),Ce("all")}),s.append(o),s.insertAfter(r),setTimeout(function(){I(document).one("click",function(){I(".members-am-reset-dropdown").remove()})},0)}),I("#members-am-export").on("click",function(e){e.preventDefault(),window.location.href=membersAdminMenus.exportUrl}),I("#members-am-import").on("click",function(){I("#members-am-import-file").trigger("click")}),I("#members-am-import-file").on("change",function(){var e=this.files&&this.files[0];e&&function(e){Oe(membersAdminMenus.i18n&&membersAdminMenus.i18n.importing||"Importing…");var n=new FileReader;n.onerror=function(){Se(),f("error",membersAdminMenus.i18n&&membersAdminMenus.i18n.readFileFailed||"Could not read the file.")},n.onload=function(){try{var e=JSON.parse(n.result),r=!1;I.post(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_import",nonce:membersAdminMenus.nonce,settings:JSON.stringify(e)}).done(function(e){if(e.success)return o("success",e.data&&e.data.message||membersAdminMenus.i18n&&membersAdminMenus.i18n.imported||"Settings imported."),P.allowUnload=!0,r=!0,void location.reload();f("error",e.data&&e.data.message?e.data.message:"Error")}).fail(function(){f("error",membersAdminMenus.i18n&&membersAdminMenus.i18n.importNetworkError||membersAdminMenus.i18n.networkError||"Could not import settings. Check your connection and try again.")}).always(function(){r||Se()})}catch(e){Se(),f("error",membersAdminMenus.i18n&&membersAdminMenus.i18n.invalidJson||"Invalid JSON.")}},n.readAsText(e)}(e)}),I("#members-am-copy-apply").on("click",function(){var n=I("#members-am-copy-from").val(),r=I("#members-am-copy-to").val();if(n&&r)if(n!==r){var a="",t="";if(b().forEach(function(e){e.slug===n&&(a=e.label),e.slug===r&&(t=e.label)}),confirm('Copy menu settings from "'+a+'" to "'+t+'"?\nThis will overwrite "'+t+'" menu configuration.\n\nNote: This copies menu order, labels, icons, and colors. Items the source role cannot access (no-access in its column) are stored as hidden on the target so a higher-capability role does not gain those screens.\nIt does not change WordPress role capabilities (lock icon).')){h();var e=E(n),s={hidden:D(n),order:[],submenu_order:{},overrides:{}},i=L(n);s.order=i.slice(),P.tree.forEach(function(e){if(e.children&&e.children.length){var r=N(n,e.id);r&&r.length&&(s.submenu_order[e.id]=r.slice())}}),e.overrides&&"object"==typeof e.overrides&&(s.overrides=JSON.parse(JSON.stringify(e.overrides))),P.settings.roles[r]=s,-1===P.activeRoleSlugs.indexOf(r)&&(P.activeRoleSlugs.push(r),l(),me()),Ee(),Me(membersAdminMenus.i18n&&membersAdminMenus.i18n.copying||"Copying…")}}else f("error",membersAdminMenus.i18n&&membersAdminMenus.i18n.rolesMustDiffer||"Source and target roles must be different.")}),I("#members-am-admin-editable").on("change",function(){var e=!0;I(this).is(":checked")&&(e=window.confirm(membersAdminMenus.i18n.adminEditableWarn)),e?(P.settings._meta.admin_editable=I(this).is(":checked"),oe(),me(),l(),Ee()):I(this).prop("checked",!1)}),I("#members-am-sync-scroll").prop("checked",!1!==P.syncScroll),I("#members-am-sync-scroll").on("change",function(){P.syncScroll=I(this).is(":checked");try{localStorage.setItem("members_am_sync_scroll",P.syncScroll?"1":"0")}catch(e){}he()});var t="members_am_more_tools";function e(e){var r=I("#members-am-toolbar-extra"),n=I("#members-am-more-tools");if(r.length&&n.length){r.prop("hidden",!e),n.attr("aria-expanded",e?"true":"false").toggleClass("is-open",!!e);var a=membersAdminMenus.i18n||{};e&&a.moreToolsHideAria?n.attr("aria-label",a.moreToolsHideAria):!e&&a.moreToolsShowAria?n.attr("aria-label",a.moreToolsShowAria):n.removeAttr("aria-label");try{sessionStorage.setItem(t,e?"1":"0")}catch(e){}}}var r,n=!1;try{n="1"===sessionStorage.getItem(t)}catch(e){}e(n),I("#members-am-more-tools").on("click",function(){e(I("#members-am-toolbar-extra").prop("hidden"))}),I("#members-am-add-item").on("click",function(){h();var e="c"+Date.now();P.settings.custom_items.push({id:e,label:"Custom link",url:window.location.origin+"/wp-admin/",icon_type:"dashicon",icon:"dashicons-admin-generic",parent:"",position:99,cap:"read"}),P.tree=w(),P.selectedId=y({id:e}),Ee(),ve()}),I("#members-am-remove-custom").on("click",function(){var e=A(P.selectedId),r=e&&e.customId?String(e.customId):"";if(!r&&e&&e.custom&&P.selectedId){var n=-1!==P.selectedId.indexOf("::")?P.selectedId.split("::").pop():P.selectedId;0===n.indexOf("members-am-")&&(P.settings.custom_items||[]).forEach(function(e){e&&e.id&&y(e)===n&&(r=String(e.id))})}e&&r&&(h(),P.settings.custom_items=(P.settings.custom_items||[]).filter(function(e){return!e||String(e.id)!==r}),P.selectedId=null,P.tree=w(),Ee(),I("#members-am-edit-panel").attr("hidden",!0))}),I("#members-am-edit-close").on("click",function(){P.selectedId=null,I("#members-am-edit-panel").attr("hidden",!0),Ee()}),I("#members-am-edit-target-role").on("change",ve),I("#members-am-colors-readable").on("click",function(e){e.preventDefault();var r=String(I("#members-am-color-bg").val()||"").trim();if(r&&"#"!==r){var n=.45 ").val("__all__").text("All roles")),P.activeRoleSlugs.forEach(function(r){var e=(b().filter(function(e){return e.slug===r})[0]||{}).label||r;n.append(I(" ").val(r).text(e))}),P.previewUserId&&n.append(I(" ").val("__user__"+P.previewUserId).text(P.previewUserLabel||"User #"+P.previewUserId)),P.selectedId&&ve()}I(function(){var r,n,e;!function(){try{var e=sessionStorage.getItem(i);if(!e)return;sessionStorage.removeItem(i);var r=JSON.parse(e);r&&r.message&&f(r.type,r.message)}catch(e){}}(),v(),P.tree=w(),oe(),I("#members-am-admin-editable").prop("checked",!!P.settings._meta.admin_editable),r=I("#members-am-copy-from").empty(),n=I("#members-am-copy-to").empty(),(e=b()).forEach(function(e){r.append(I(" ").val(e.slug).text(e.label)),n.append(I(" ").val(e.slug).text(e.label))}),1
Date: Fri, 24 Apr 2026 21:31:48 +0300
Subject: [PATCH 48/73] feat(admin): implement submenu relocation and enhance
menu item handling logic
---
addons/members-admin-menus/app/functions.php | 190 ++++++++++++++++++-
js/admin-menus.js | 185 ++++++++++++++----
js/admin-menus.min.js | 2 +-
3 files changed, 336 insertions(+), 41 deletions(-)
diff --git a/addons/members-admin-menus/app/functions.php b/addons/members-admin-menus/app/functions.php
index 2768c83..0d8810d 100644
--- a/addons/members-admin-menus/app/functions.php
+++ b/addons/members-admin-menus/app/functions.php
@@ -174,13 +174,16 @@ function apply_menu_modifications() {
}
}
- // Phase 2: label, icon, URL, colors.
+ // Phase 2: structural moves, then labels/icons/URLs, then colors (see order note below).
if ( ! empty( $cfg['overrides'] ) && is_array( $cfg['overrides'] ) ) {
- // Colors must run before apply_menu_overrides(): custom items replace $menu[ $k ][2] with the
- // external URL while overrides stay keyed by members-am-* — otherwise CSS rules never match.
- apply_color_overrides( $cfg['overrides'] );
- apply_menu_overrides( $cfg['overrides'] );
+ // apply_level_moves() must run before apply_menu_overrides(): for Members custom items,
+ // apply_menu_overrides() replaces $menu / $submenu [2] with the external URL while overrides
+ // stay keyed by members-am-*. Demote / relocate logic matches rows by the canonical slug in [2];
+ // if the URL is applied first, the row is never found and "Move to submenu" has no effect on $menu.
apply_level_moves( $cfg['overrides'] );
+ apply_menu_overrides( $cfg['overrides'] );
+ // Run after URL/slug mutations so submenu color selectors can use the final href in $submenu[...][2].
+ apply_color_overrides( $cfg['overrides'] );
}
// Phase 3: capability-based hiding (independent of role hidden lists).
@@ -592,10 +595,179 @@ function merge_demoted_submenu_into_parent( $target_parent, $demoted_slug, $nest
}
}
+/**
+ * Copy every callback from one admin hook to another (same signature as core add_action).
+ *
+ * Used after relocating a submenu so {@see get_plugin_page_hook()} finds handlers on the
+ * parent-specific hook name WordPress derives from the new flyout.
+ *
+ * @param string $old_hook Prior hook suffix (e.g. tools_page_site-health).
+ * @param string $new_hook New hook suffix (e.g. index_page_site-health).
+ * @return void
+ */
+function members_am_clone_admin_hook_to( $old_hook, $new_hook ) {
+ $old_hook = (string) $old_hook;
+ $new_hook = (string) $new_hook;
+ if ( '' === $old_hook || '' === $new_hook || $old_hook === $new_hook ) {
+ return;
+ }
+ if ( ! \has_action( $old_hook ) ) {
+ return;
+ }
+ global $wp_filter;
+ if ( ! isset( $wp_filter[ $old_hook ] ) || ! ( $wp_filter[ $old_hook ] instanceof \WP_Hook ) ) {
+ return;
+ }
+ $src = $wp_filter[ $old_hook ];
+ foreach ( $src->callbacks as $priority => $callbacks ) {
+ foreach ( $callbacks as $cb ) {
+ if ( isset( $cb['function'], $cb['accepted_args'] ) ) {
+ \add_action( $new_hook, $cb['function'], (int) $priority, (int) $cb['accepted_args'] );
+ }
+ }
+ }
+}
+
+/**
+ * Register $_registered_pages and clone load/callback hooks after a submenu row moves to a new parent.
+ *
+ * Core {@see add_submenu_page()} registers a parent-specific hook name; {@see user_can_access_admin_page()}
+ * and {@see get_plugin_page_hook()} require the hook for the *new* parent once $submenu / $_parent_pages match it.
+ *
+ * @param string $old_parent Old parent basename (plugin_basename).
+ * @param string $new_parent New parent basename.
+ * @param string $child_pb Child menu slug basename (item[2]).
+ * @return void
+ */
+function members_am_rebind_relocated_submenu_hooks( $old_parent, $new_parent, $child_pb ) {
+ global $_registered_pages;
+
+ $old_parent = plugin_basename( (string) $old_parent );
+ $new_parent = plugin_basename( (string) $new_parent );
+ $child_pb = plugin_basename( (string) $child_pb );
+
+ if ( '' === $child_pb || ! function_exists( 'get_plugin_page_hookname' ) ) {
+ return;
+ }
+
+ $old_primary = \get_plugin_page_hookname( $child_pb, $old_parent );
+ $new_primary = \get_plugin_page_hookname( $child_pb, $new_parent );
+
+ $had_old_registration = false;
+ if ( isset( $_registered_pages ) && is_array( $_registered_pages ) && $old_primary && ! empty( $_registered_pages[ $old_primary ] ) ) {
+ $had_old_registration = true;
+ }
+ if ( 'tools.php' === $old_parent && isset( $_registered_pages ) && is_array( $_registered_pages ) ) {
+ $compat = \get_plugin_page_hookname( $child_pb, 'edit.php' );
+ if ( $compat && ! empty( $_registered_pages[ $compat ] ) ) {
+ $had_old_registration = true;
+ }
+ }
+
+ if ( ! $had_old_registration && $old_primary && \has_action( $old_primary ) ) {
+ $had_old_registration = true;
+ }
+
+ if ( ! $had_old_registration ) {
+ return;
+ }
+
+ $new_hooknames = array();
+ if ( $new_primary ) {
+ $new_hooknames[] = $new_primary;
+ }
+ if ( 'tools.php' === $new_parent ) {
+ $edit_compat = \get_plugin_page_hookname( $child_pb, 'edit.php' );
+ if ( $edit_compat ) {
+ $new_hooknames[] = $edit_compat;
+ }
+ }
+ $new_hooknames = array_unique( array_filter( $new_hooknames ) );
+
+ if ( isset( $_registered_pages ) && is_array( $_registered_pages ) ) {
+ foreach ( $new_hooknames as $nh ) {
+ $_registered_pages[ $nh ] = true;
+ }
+ }
+
+ if ( $old_primary && $new_primary && \has_action( $old_primary ) ) {
+ members_am_clone_admin_hook_to( $old_primary, $new_primary );
+ }
+}
+
+/**
+ * Move an existing submenu row from one parent file to another (same child hook).
+ *
+ * Used when overrides use a composite key parent::child with parent set to a different top-level slug.
+ *
+ * @param string $old_parent Parent file slug the row currently belongs to.
+ * @param string $child_slug Child hook (submenu item[2]); may be a .php file or members-am-*.
+ * @param string $new_parent Target parent file slug.
+ * @return bool True if the row was removed from the old parent and inserted under the new one.
+ */
+function relocate_submenu_row( $old_parent, $child_slug, $new_parent ) {
+ global $submenu, $_parent_pages;
+
+ $old_parent = plugin_basename( (string) $old_parent );
+ $new_parent = plugin_basename( (string) $new_parent );
+ $child_pb = plugin_basename( (string) $child_slug );
+
+ if ( '' === $child_pb || '' === $new_parent || $old_parent === $new_parent ) {
+ return false;
+ }
+
+ if ( empty( $submenu[ $old_parent ] ) || ! is_array( $submenu[ $old_parent ] ) ) {
+ return false;
+ }
+
+ // Already registered under the target parent — nothing to do (avoid orphaning the row).
+ if ( ! empty( $submenu[ $new_parent ] ) && is_array( $submenu[ $new_parent ] ) ) {
+ foreach ( $submenu[ $new_parent ] as $ex ) {
+ if ( ! empty( $ex[2] ) && plugin_basename( (string) $ex[2] ) === $child_pb ) {
+ return false;
+ }
+ }
+ }
+
+ $row = null;
+ $idx_rm = null;
+ foreach ( $submenu[ $old_parent ] as $idx => $sub ) {
+ if ( empty( $sub[2] ) ) {
+ continue;
+ }
+ if ( plugin_basename( (string) $sub[2] ) === $child_pb ) {
+ $row = $sub;
+ $idx_rm = $idx;
+ break;
+ }
+ }
+ if ( null === $row || null === $idx_rm ) {
+ return false;
+ }
+
+ unset( $submenu[ $old_parent ][ $idx_rm ] );
+ $submenu[ $old_parent ] = array_values( $submenu[ $old_parent ] );
+
+ if ( empty( $submenu[ $new_parent ] ) || ! is_array( $submenu[ $new_parent ] ) ) {
+ $submenu[ $new_parent ] = array();
+ }
+ $submenu[ $new_parent ][] = $row;
+ $submenu[ $new_parent ] = array_values( $submenu[ $new_parent ] );
+
+ if ( isset( $_parent_pages ) && is_array( $_parent_pages ) ) {
+ $_parent_pages[ $child_pb ] = $new_parent;
+ }
+
+ members_am_rebind_relocated_submenu_hooks( $old_parent, $new_parent, $child_pb );
+
+ return true;
+}
+
/**
* Move items between menu levels based on 'parent' override field.
*
* - If a submenu item has parent = '__promote__', promote it to top-level.
+ * - If a submenu item has parent = a top-level file slug (not __promote__), move it under that parent's submenu.
* - If a top-level item has a parent slug set, demote it to a submenu of that parent.
*
* @param array $overrides Overrides keyed by canonical slug.
@@ -687,6 +859,14 @@ function apply_level_moves( $overrides ) {
if ( ! empty( $nested_submenu ) ) {
merge_demoted_submenu_into_parent( $target_parent, $slug, $nested_submenu );
}
+ } elseif ( $is_submenu && is_string( $target_parent ) && '' !== $target_parent && '__promote__' !== $target_parent ) {
+ $parts = explode( '::', $slug, 2 );
+ if ( count( $parts ) !== 2 ) {
+ continue;
+ }
+ $old_parent = $parts[0];
+ $child_slug = $parts[1];
+ relocate_submenu_row( $old_parent, $child_slug, $target_parent );
}
}
}
diff --git a/js/admin-menus.js b/js/admin-menus.js
index 93851a9..19d388b 100644
--- a/js/admin-menus.js
+++ b/js/admin-menus.js
@@ -326,17 +326,8 @@
}
function getChildOrderForUser(uid, parentId) {
- var def = defaultChildSlugs(parentId);
+ var def = getChildSlugsDefaultForUser(uid, parentId);
var ucfg = getUserConfig(uid);
- state.tree.forEach(function (n) {
- if (!n || !n.id || n.id.indexOf('::') !== -1) {
- return;
- }
- var ovv = (ucfg.overrides && ucfg.overrides[n.id]) || {};
- if (ovv.parent === parentId && def.indexOf(n.id) === -1) {
- def.push(n.id);
- }
- });
var so = ucfg.submenu_order && ucfg.submenu_order[parentId];
if (!so || !so.length) {
return def.slice();
@@ -394,6 +385,7 @@
def.push(n.id);
}
});
+ appendRelocatedSubmenuCompositeIdsForUser(uid, parentId, def);
return def;
}
@@ -405,7 +397,7 @@
effectiveParent = ov.parent;
}
var arr;
- var slugForOrder = itemId.indexOf('::') !== -1 ? itemId.split('::').pop() : itemId;
+ var slugForOrder = submenuOrderTokenForItem(itemId, effectiveParent);
if (effectiveParent) {
if (!ucfg.submenu_order[effectiveParent]) {
ucfg.submenu_order[effectiveParent] = getChildSlugsDefaultForUser(uid, effectiveParent);
@@ -507,6 +499,23 @@
if (subNode) {
subNode.custom = true;
subNode.customId = item.id;
+ return;
+ }
+ var pNode = findNodeInTree(base, parentSlug);
+ if (pNode) {
+ if (!pNode.children) {
+ pNode.children = [];
+ }
+ pNode.children.push({
+ id: fullId,
+ title: item.label || 'Custom',
+ url: item.url || '',
+ type: 'sub',
+ cap: item.cap || 'read',
+ custom: true,
+ customId: item.id,
+ children: []
+ });
}
return;
}
@@ -563,10 +572,16 @@
if (!itemId) {
return null;
}
+ var ov = getRoleConfig(role).overrides[itemId] || {};
if (itemId.indexOf('::') !== -1) {
+ if (ov.parent === '__promote__') {
+ return null;
+ }
+ if (ov.parent && ov.parent !== '__promote__') {
+ return ov.parent;
+ }
return findParentIdInTree(itemId);
}
- var ov = getRoleConfig(role).overrides[itemId] || {};
if (ov.parent && ov.parent !== '__promote__') {
return ov.parent;
}
@@ -584,13 +599,18 @@
if (!itemId) {
return null;
}
+ var eff = getEffectiveOverrideForUserItem(uid, itemId);
if (itemId.indexOf('::') !== -1) {
+ if (eff.parent === '__promote__') {
+ return null;
+ }
+ if (eff.parent && eff.parent !== '__promote__') {
+ return eff.parent;
+ }
return findParentIdInTree(itemId);
}
- var ucfg = getUserConfig(uid);
- var ov = (ucfg.overrides && ucfg.overrides[itemId]) || {};
- if (ov.parent && ov.parent !== '__promote__') {
- return ov.parent;
+ if (eff.parent && eff.parent !== '__promote__') {
+ return eff.parent;
}
return null;
}
@@ -628,6 +648,74 @@
});
}
+ function walkMenuTree(nodes, visitor) {
+ (nodes || []).forEach(function (n) {
+ visitor(n);
+ walkMenuTree(n.children, visitor);
+ });
+ }
+
+ /** Submenu rows moved under another top-level parent (override.parent) still use their snapshot composite id. */
+ function appendRelocatedSubmenuCompositeIds(role, parentId, def) {
+ walkMenuTree(state.tree, function (n) {
+ var id = n.id;
+ if (!id || id.indexOf('::') === -1) {
+ return;
+ }
+ if (findParentIdInTree(id) === parentId) {
+ return;
+ }
+ if (getEffectiveParentId(id, role) !== parentId) {
+ return;
+ }
+ if (def.indexOf(id) === -1) {
+ def.push(id);
+ }
+ });
+ }
+
+ function appendRelocatedSubmenuCompositeIdsForUser(uid, parentId, def) {
+ walkMenuTree(state.tree, function (n) {
+ var id = n.id;
+ if (!id || id.indexOf('::') === -1) {
+ return;
+ }
+ if (findParentIdInTree(id) === parentId) {
+ return;
+ }
+ if (getEffectiveParentIdForUser(id, uid) !== parentId) {
+ return;
+ }
+ if (def.indexOf(id) === -1) {
+ def.push(id);
+ }
+ });
+ }
+
+ function removeSubmenuOrderSlugForConfig(cfg, parentKey, itemId) {
+ if (!cfg || !cfg.submenu_order || !parentKey || !cfg.submenu_order[parentKey]) {
+ return;
+ }
+ var arr = cfg.submenu_order[parentKey];
+ var short = itemId.indexOf('::') !== -1 ? itemId.split('::').pop() : itemId;
+ for (var i = arr.length - 1; i >= 0; i--) {
+ if (arr[i] === itemId || arr[i] === short) {
+ arr.splice(i, 1);
+ }
+ }
+ }
+
+ function submenuOrderTokenForItem(itemId, effectiveParent) {
+ if (!effectiveParent || itemId.indexOf('::') === -1) {
+ return itemId.indexOf('::') !== -1 ? itemId.split('::').pop() : itemId;
+ }
+ var treeP = findParentIdInTree(itemId);
+ if (treeP === effectiveParent) {
+ return itemId.split('::').pop();
+ }
+ return itemId;
+ }
+
function getTopOrder(role) {
var def = defaultTopOrder();
var o = getRoleConfig(role).order;
@@ -662,16 +750,7 @@
}
function getChildOrder(role, parentId) {
- var def = defaultChildSlugs(parentId);
- state.tree.forEach(function (n) {
- if (!n || !n.id || n.id.indexOf('::') !== -1) {
- return;
- }
- var ov = getRoleConfig(role).overrides[n.id] || {};
- if (ov.parent === parentId && def.indexOf(n.id) === -1) {
- def.push(n.id);
- }
- });
+ var def = getChildSlugsDefaultForRole(role, parentId);
var so = getRoleConfig(role).submenu_order[parentId];
if (!so || !so.length) {
return def.slice();
@@ -699,10 +778,18 @@
def.push(n.id);
}
});
+ appendRelocatedSubmenuCompositeIds(role, parentId, def);
return def;
}
function resolveChildNodeForRole(role, parentId, cslug) {
+ if (cslug.indexOf('::') !== -1) {
+ var byComp = findNode(cslug);
+ if (byComp && getEffectiveParentId(cslug, role) === parentId) {
+ return byComp;
+ }
+ return null;
+ }
var cid = childFullId(parentId, cslug);
var child = findNode(cid);
if (child) {
@@ -718,6 +805,13 @@
}
function resolveChildNodeForUser(uid, parentId, cslug) {
+ if (cslug.indexOf('::') !== -1) {
+ var byCompU = findNode(cslug);
+ if (byCompU && getEffectiveParentIdForUser(cslug, uid) === parentId) {
+ return byCompU;
+ }
+ return null;
+ }
var cid = childFullId(parentId, cslug);
var child = findNode(cid);
if (child) {
@@ -1372,8 +1466,7 @@
if (!child) {
return;
}
- var childOv = getRoleConfig(role).overrides[child.id] || {};
- if (childOv.parent === '__promote__') {
+ if (getEffectiveParentId(child.id, role) !== node.id) {
return;
}
renderRoleBranch(role, child, node.id, $container, depth + 1);
@@ -1392,8 +1485,7 @@
if (!child) {
return;
}
- var childOv = (ucfg.overrides && ucfg.overrides[child.id]) || {};
- if (childOv.parent === '__promote__') {
+ if (getEffectiveParentIdForUser(child.id, uid) !== node.id) {
return;
}
renderUserBranch(uid, child, node.id, ucfg, $list, depth + 1);
@@ -2223,11 +2315,6 @@
$wrap.attr('hidden', true);
return;
}
- // PHP apply_level_moves() only demotes true top-level items (slug has no ::).
- if (findParentIdInTree(state.selectedId)) {
- $wrap.attr('hidden', true);
- return;
- }
var roleForUi = getTargetRoles()[0] || state.activeRoleSlugs[0];
if (roleForUi && isDemotedToSubmenu(roleForUi, state.selectedId)) {
$wrap.attr('hidden', true);
@@ -2235,6 +2322,7 @@
}
$wrap.removeAttr('hidden');
var sid = state.selectedId;
+ var curEff = roleForUi ? getEffectiveParentId(sid, roleForUi) : null;
var placeholder = (membersAdminMenus.i18n && membersAdminMenus.i18n.selectParentMenu) || '';
$sel.empty().append($(' ').val('').text(placeholder));
var count = 0;
@@ -2245,6 +2333,9 @@
if (node.id === sid) {
return;
}
+ if (curEff && node.id === curEff) {
+ return;
+ }
var label = (node.title && String(node.title).trim()) ? node.title : node.id;
$sel.append($(' ').val(node.id).text(label));
count++;
@@ -3302,6 +3393,18 @@
return;
}
+ if (sid.indexOf('::') !== -1 && ov0.parent && ov0.parent !== '__promote__') {
+ var relocParent = ov0.parent;
+ var tuPr = getTargetUserId();
+ if (tuPr) {
+ removeSubmenuOrderSlugForConfig(getUserConfig(tuPr), relocParent, sid);
+ } else {
+ getTargetRoles().forEach(function (role) {
+ removeSubmenuOrderSlugForConfig(getRoleConfig(role), relocParent, sid);
+ });
+ }
+ }
+
setOverrideField('parent', '__promote__');
// Add the promoted item to the top-level order right after its original parent.
@@ -3341,6 +3444,18 @@
return;
}
pushUndoSnapshot();
+ var sidDm = state.selectedId;
+ if (sidDm.indexOf('::') !== -1) {
+ var treePDm = findParentIdInTree(sidDm);
+ var tuDm = getTargetUserId();
+ if (tuDm) {
+ removeSubmenuOrderSlugForConfig(getUserConfig(tuDm), treePDm, sidDm);
+ } else {
+ getTargetRoles().forEach(function (role) {
+ removeSubmenuOrderSlugForConfig(getRoleConfig(role), treePDm, sidDm);
+ });
+ }
+ }
setOverrideField('parent', p);
pushOverridesFromForm();
openEditPanel();
diff --git a/js/admin-menus.min.js b/js/admin-menus.min.js
index a90a2eb..3c4102a 100644
--- a/js/admin-menus.min.js
+++ b/js/admin-menus.min.js
@@ -1 +1 @@
-!function(I){"use strict";var P={settings:I.extend(!0,{},membersAdminMenus.settings),tree:[],activeRoleSlugs:[],carouselPage:0,columnsPerPage:3,selectedId:null,iconTab:"dashicons",previewUserId:null,previewUserRoles:[],userSuggestions:[],mediaFrame:null,allowUnload:!1,syncScroll:function(){try{return"0"!==localStorage.getItem("members_am_sync_scroll")}catch(e){return!0}}(),columnFilters:{},columnBulkSelection:{},collapsedParents:{}},a="",p=!1;function s(){return function r(n){if(null===n)return"null";var e=typeof n;return"string"==e||"number"==e||"boolean"==e?JSON.stringify(n):"undefined"==e?"null":Array.isArray(n)?"["+n.map(function(e){return r(e)}).join(",")+"]":"object"!=e?JSON.stringify(n):"{"+Object.keys(n).sort().map(function(e){return JSON.stringify(e)+":"+r(n[e])}).join(",")+"}"}(P.settings)}function t(){if(!P.allowUnload&&s()!==a)return membersAdminMenus.i18n&&membersAdminMenus.i18n.unsavedChanges||""}var i="members_am_notice";function f(e,r){if(r){var n=I("#members-am-notices");n.length||(I(".members-admin-menus-wrap h1").first().after('
'),n=I("#members-am-notices"));var a=I("
",{class:"notice is-dismissible"}).addClass("notice-"+(e||"info"));a.append(I("
").text(r)),n.prepend(a),I(document).trigger("wp-notice-added")}}function o(e,r){try{sessionStorage.setItem(i,JSON.stringify({type:e||"success",message:r}))}catch(e){}}var e=["dashicons-menu","dashicons-admin-dashboard","dashicons-admin-post","dashicons-admin-page","dashicons-admin-media","dashicons-admin-comments","dashicons-admin-appearance","dashicons-admin-plugins","dashicons-admin-users","dashicons-admin-tools","dashicons-admin-settings","dashicons-admin-generic","dashicons-edit","dashicons-plus","dashicons-chart-bar","dashicons-cart","dashicons-products","dashicons-email","dashicons-groups","dashicons-heart","dashicons-star-filled","dashicons-smiley","dashicons-info","dashicons-lock","dashicons-unlock","dashicons-visibility","dashicons-hidden","dashicons-arrow-up","dashicons-arrow-down","dashicons-admin-network","dashicons-performance"],r=["fa-solid fa-house","fa-solid fa-user","fa-solid fa-gear","fa-solid fa-file","fa-solid fa-image","fa-solid fa-cart-shopping","fa-solid fa-chart-line","fa-solid fa-envelope","fa-solid fa-book","fa-solid fa-link","fa-solid fa-bell","fa-solid fa-star","fa-solid fa-heart","fa-solid fa-lock","fa-solid fa-unlock","fa-solid fa-pen","fa-solid fa-trash","fa-solid fa-plus","fa-solid fa-minus"],m="members_am_view_state";function l(){try{localStorage.setItem(m,JSON.stringify({activeRoleSlugs:P.activeRoleSlugs,carouselPage:P.carouselPage}))}catch(e){}}function c(e){return JSON.parse(JSON.stringify(e))}var d=null;function h(){d=c(P.settings),u()}function u(){var e=I("#members-am-undo");if(e.length){var r=!!d;e.prop("disabled",!r).attr("aria-disabled",r?"false":"true")}}function b(){return membersAdminMenus.roles||[]}function v(){P.settings._meta&&!Array.isArray(P.settings._meta)||(P.settings._meta={version:3,admin_editable:!1}),P.settings.roles&&!Array.isArray(P.settings.roles)||(P.settings.roles={}),P.settings.users&&!Array.isArray(P.settings.users)||(P.settings.users={}),Array.isArray(P.settings.custom_items)||(P.settings.custom_items=[]),P.settings.capabilities&&!Array.isArray(P.settings.capabilities)||(P.settings.capabilities={})}function E(e){v(),P.settings.roles[e]||(P.settings.roles[e]={hidden:[],order:[],submenu_order:{},overrides:{}});var r=P.settings.roles[e];return r.hidden&&Array.isArray(r.hidden)||(r.hidden=[]),r.order&&Array.isArray(r.order)||(r.order=[]),r.submenu_order&&!Array.isArray(r.submenu_order)||(r.submenu_order={}),r.overrides&&!Array.isArray(r.overrides)||(r.overrides={}),r}function S(e){v(),P.settings.users[e]||(P.settings.users[e]={});var r=P.settings.users[e];return r.hidden&&Array.isArray(r.hidden)||(r.hidden=[]),r.order&&Array.isArray(r.order)||(r.order=[]),r.overrides&&!Array.isArray(r.overrides)||(r.overrides={}),r.submenu_order&&!Array.isArray(r.submenu_order)||(r.submenu_order={}),r}function M(e,r){var n=function(e,r){for(var n=(e||[]).slice().sort(),a=null,t=0;t=t.length||(h(),t.splice(p,1),t.splice(f,0,o?u:r))}}function y(e){var r=e.id||"c";return"members-am-"+String(r).replace(/[^a-z0-9_-]/gi,"-").toLowerCase()}function k(e){return!!e&&0===(-1!==e.indexOf("::")?e.split("::").pop():e).indexOf("members-am-")}function _(e,r){if(!e||!r)return null;for(var n=0;nt&&(P.carouselPage=t))}}P.activeRoleSlugs=r.filter(function(e){return"administrator"!==e||n}),P.activeRoleSlugs.length||(P.activeRoleSlugs=["subscriber"])}function me(){var a=I("#members-am-role-chips").empty();b().forEach(function(e){if("administrator"!==e.slug||P.settings._meta.admin_editable){var r=-1!==P.activeRoleSlugs.indexOf(e.slug),n=I(' ').text(e.label).attr("data-role",e.slug).toggleClass("is-active",r);a.append(n)}})}function le(s,i,e,o,m){(function(e,r,n,a,t){t=t||0;var s=r.id,i=J(e,s),o=!B(e,r.cap),m=E(e).overrides[s]||{},l=m.label||r.title||s,c=I('
').attr("data-id",s).attr("data-menu-parent",n||"").toggleClass("is-hidden",i).toggleClass("is-no-cap",o).toggleClass("is-selected",P.selectedId===s).toggleClass("is-sub",0 ');if(p){$(d);var b=!!P.collapsedParents[d][s],h=u.expandSubmenus||"Expand submenu items",v=u.collapseSubmenus||"Collapse submenu items";I(' ').attr("aria-expanded",!b).attr("aria-label",(b?h:v)+": "+l).append(I(' ').addClass(b?"dashicons-arrow-right-alt2":"dashicons-arrow-down-alt2")).on("click",function(e){e.stopPropagation(),$(d),P.collapsedParents[d][s]=!P.collapsedParents[d][s],he()}).appendTo(f),c.toggleClass("is-collapse-collapsed",b)}else f.append(I(' '));c.append(f);var g=u.bulkCheckboxAria||"Include in bulk actions",x=I(' '),y=I(' ').prop("checked",!!P.columnBulkSelection[d].ids[s]).attr("aria-label",g+": "+l).on("click",function(e){e.stopPropagation()}).on("change",function(e){e.stopPropagation(),Q(d,s,I(this).prop("checked")),he()});x.append(y),c.append(x);var k=I('
');if(0===t){var _=m.icon||r.icon,w=z(_,m.icon_type||r.icon_type);if("fontawesome"===w&&_)k.append(I(' '));else if("svg"!==w&&"image"!==w&&"custom"!==w||!_){var A=_&&0===_.indexOf("dashicons-")?_:"dashicons-admin-generic";k.append(I(' '))}else k.append(I(" ").attr("src",_).css({width:"20px",height:"20px",display:"inline-block",verticalAlign:"middle",objectFit:"contain",filter:"none"}))}r.custom&&k.append(I('custom '));m.label&&k.append(I('edit '));if(k.append(I(' ').text(l)),m.badge){var O=m.badge_bg||"#d63638";k.append(I(' ').text(m.badge).css({backgroundColor:O,color:"#fff",fontSize:"9px",padding:"1px 5px",borderRadius:"2px",marginLeft:"4px",whiteSpace:"nowrap"}))}if(o){var S=membersAdminMenus.i18n||{},M=S.noAccessTitlePattern&&S.noAccessTitlePattern.replace("%s",r.cap||"read")||"This role does not have the '"+(r.cap||"read")+"' capability on this role object. Users with multiple roles may still access the screen. Manage capabilities in Members → Roles.";k.append(I(' ').attr("title",M).html("🔒 no access"))}c.append(k),m.color_bg&&c.css("background-color",m.color_bg);m.color_text&&c.find(".members-am-item-label").css("color",m.color_text);m.color_icon&&(c.find(".dashicons").css("color",m.color_icon),c.find(".members-am-fa-icon i").css("color",m.color_icon),c.find("img").css("filter","none"));var C=I('
');C.append(I(' ').text("◉"),I(' ').text("↑"),I(' ').text("↓")),c.append(C),a.append(c)})(s,i,e,o,m=m||0),i.children&&i.children.length&&N(s,i.id).forEach(function(e){var r,n,a,t=(r=s,n=i.id,A(F(n,a=e))||(-1===a.indexOf("::")&&(E(r).overrides[a]||{}).parent===n?A(a):null));t&&"__promote__"!==(E(s).overrides[t.id]||{}).parent&&le(s,t,i.id,o,m+1)})}function ce(n,a,e,t,s,i){i=i||0,s.append(function(r,e,n,a){a=a||0;var t=M(n,r.id),s=t.label||r.title,i=function(e,r){var n=S(e);if(-1!==n.hidden.indexOf(r))return!0;var a=R(r,e);return!(!a||-1===n.hidden.indexOf(a))}(n,r.id),o=!function(e){if(!e||"read"===e)return 1;for(var r=P.previewUserRoles||[],n=0;n").addClass(l).attr("data-id",r.id).attr("data-menu-parent",e||""),d="u:"+n;V(d);var u=membersAdminMenus.i18n||{},p=r.children&&r.children.length,f=I(' ');if(p){$(d);var b=!!P.collapsedParents[d][r.id],h=u.expandSubmenus||"Expand submenu items",v=u.collapseSubmenus||"Collapse submenu items";I(' ').attr("aria-expanded",!b).attr("aria-label",(b?h:v)+": "+s).append(I(' ').addClass(b?"dashicons-arrow-right-alt2":"dashicons-arrow-down-alt2")).on("click",function(e){e.stopPropagation(),$(d),P.collapsedParents[d][r.id]=!P.collapsedParents[d][r.id],he()}).appendTo(f),c.toggleClass("is-collapse-collapsed",b)}else f.append(I(' '));c.append(f);var g=u.bulkCheckboxAria||"Include in bulk actions",x=I(' '),y=I(' ').prop("checked",!!P.columnBulkSelection[d].ids[r.id]).attr("aria-label",g+": "+s).on("click",function(e){e.stopPropagation()}).on("change",function(e){e.stopPropagation(),Q(d,r.id,I(this).prop("checked")),he()});x.append(y),c.append(x);var k=I('
');if(0===a){var _=t.icon||r.icon,w=z(_,t.icon_type||r.icon_type);"fontawesome"===w&&_?k.append(I(' ')):"svg"!==w&&"image"!==w&&"custom"!==w||!_?_&&0===_.indexOf("dashicons-")?k.append(I(' ')):k.append(I(' ')):k.append(I(" ").attr("src",_).css({width:"20px",height:"20px",display:"inline-block",verticalAlign:"middle",objectFit:"contain",filter:"none"}))}r.custom&&k.append(I('custom '));t.label&&k.append(I('edit '));if(k.append(I(' ').text(s)),t.badge){var A=t.badge_bg||"#d63638";k.append(I(' ').text(t.badge).css({backgroundColor:A,color:"#fff",fontSize:"9px",padding:"1px 5px",borderRadius:"2px",marginLeft:"4px",whiteSpace:"nowrap"}))}o&&k.append(I('🔒 no access "));c.append(k),t.color_bg&&c.css("background-color",t.color_bg);t.color_text&&c.find(".members-am-item-label").css("color",t.color_text);t.color_icon&&(c.find(".dashicons").css("color",t.color_icon),c.find(".members-am-fa-icon i").css("color",t.color_icon));var O=I('
');return O.append(I(' ').text(i?"◯":"◉"),I(' ').text("↑"),I(' ').text("↓")),c.append(O),c.on("click",function(e){I(e.target).closest("button, .members-am-item-cb, .members-am-collapse-toggle").length||(P.selectedId=r.id,Ee())}),c}(a,e,n,i)),a.children&&a.children.length&&function(e,r){var n=j(r),a=S(e);P.tree.forEach(function(e){e&&e.id&&-1===e.id.indexOf("::")&&(a.overrides&&a.overrides[e.id]||{}).parent===r&&-1===n.indexOf(e.id)&&n.push(e.id)});var t=a.submenu_order&&a.submenu_order[r];if(!t||!t.length)return n.slice();var s=t.filter(function(e){return-1!==n.indexOf(e)});return n.forEach(function(e){-1===s.indexOf(e)&&s.push(e)}),s}(n,a.id).forEach(function(e){var r=function(e,r,n){var a=A(F(r,n));if(a)return a;if(-1===n.indexOf("::")){var t=S(e);if((t.overrides&&t.overrides[n]||{}).parent===r)return A(n)}return null}(n,a.id,e);r&&"__promote__"!==(t.overrides&&t.overrides[r.id]||{}).parent&&ce(n,r,a.id,t,s,i+1)})}function de(e,r){var t=(r||"").trim().toLowerCase(),n=e.children(".members-am-item");if(!t)return n.removeClass("members-am-filter-hidden"),void e.children(".members-am-sep").removeClass("members-am-filter-hidden");var i={};n.each(function(){var e=I(this),r=e.attr("data-id"),n=(e.find(".members-am-item-label").first().text()||"").toLowerCase(),a=(r||"").toLowerCase();i[r]=-1!==n.indexOf(t)||-1!==a.indexOf(t)});var o={};n.each(function(){var e=I(this).attr("data-id"),r=I(this).attr("data-menu-parent")||"";o[r]||(o[r]=[]),o[r].push(e)});var m={};function l(e){var r,n=i[e],a=o[e]||[],t=!1;for(r=0;r '),o=I(' ').attr("placeholder",t).attr("aria-label",s).val(a);i.append(o),e.find(".members-am-sidebar-head").first().after(i),o.on("input",function(){P.columnFilters[n]=I(this).val(),de(r,I(this).val())}),de(r,a)}function pe(e,r){var s=0===String(r).indexOf("u:"),i=s?parseInt(r.replace(/^u:/,""),10):0,o=s?null:r,m=r,l=membersAdminMenus.i18n||{},n=I('
').attr("data-column-key",m),a=I('
');a.append(I(' ').text(l.bulkSelectVisible||"Select visible"),I(' ').text(l.bulkClearSelection||"Clear selection"));var t=I('
');t.append(I(' ').text(l.collapseAllMenus||"Collapse all"),I(' ').text(l.expandAllMenus||"Expand all"));var c=I(' ').attr("aria-label",l.bulkVisibilityLabel||"Menu visibility for this column");c.append(I(' ').text(l.bulkActionsPlaceholder||"Choose visibility…"));var d=I(" ").attr("label",l.bulkGroupWholeColumn||"Whole column");d.append(I(' ').text(l.bulkShowAllItems||"Show every menu item"),I(' ').text(l.bulkHideAllItems||"Hide every menu item"));var u=I(" ").attr("label",l.bulkGroupCheckedRows||"Checked rows");u.append(I(' ').text(l.bulkKeepOnlyCheckedVisible||"Keep only checked visible"),I(' ').text(l.bulkHideCheckedItems||"Hide checked items"),I(' ').text(l.bulkShowCheckedItems||"Show checked items")),c.append(d,u),n.append(a,t,c);var p=e.find(".members-am-col-filter").first();p.length?p.after(n):e.find(".members-am-sidebar-head").first().after(n),c.on("change",function(){var e=I(this).val();if(I(this).val(""),e)if(!("keep-only-checked"===e||"hide-checked"===e||"show-checked"===e)||K(m).length){if("keep-only-checked"===e){if(!window.confirm(l.bulkConfirmKeepOnlyChecked||"Hide all items except checked items and their parent menus?"))return}else if("hide-all"===e){if(!window.confirm(l.bulkConfirmHideAll||"Hide every menu item in this column?"))return}else if("hide-checked"===e&&!window.confirm(l.bulkConfirmHideChecked||"Hide the checked items (and their submenus where applicable)?"))return;var r,n,a,t;h(),s?"show-all"===e?S(i).hidden=[]:"hide-all"===e?(a=i,t=W(),S(a).hidden=t.slice()):"keep-only-checked"===e?function(e,n){var r=K(e);if(r.length){var a={};r.forEach(function(e){for(var r=e;r;)a[r]=!0,r=R(r,n)});var t=W(),s=S(n).hidden;s.length=0,t.forEach(function(e){a[e]||s.push(e)})}}(m,i):"hide-checked"===e?re(m,i):"show-checked"===e&&ne(m,i):"show-all"===e?E(o).hidden=[]:"hide-all"===e?(r=o,n=W(),E(r).hidden=n.slice()):"keep-only-checked"===e?function(e,n){var r=K(e);if(r.length){var a={};r.forEach(function(e){for(var r=e;r;)a[r]=!0,r=C(r,n)});var t=W(),s=E(n).hidden;s.length=0,t.forEach(function(e){a[e]||s.push(e)})}}(m,o):"hide-checked"===e?Z(m,o):"show-checked"===e&&ee(m,o),Ee()}else f("warning",l.bulkSelectCheckedFirst||"Check one or more menu items first.")})}function fe(e){return-1!==e.indexOf("::")?e.split("::").pop():e}function be(){I.fn.sortable&&I("#members-am-columns .members-am-sidebar-list").each(function(){var e=I(this);e.data("ui-sortable")&&e.sortable("destroy");var r=e.closest(".members-am-column"),n=r.data("role"),a=r.data("user");e.sortable({axis:"y",distance:6,items:"> .members-am-item, > .members-am-sep",cancel:".members-am-item-actions button, .members-am-item-cb, .members-am-item-cb-wrap, .members-am-collapse-toggle",placeholder:"members-am-sort-placeholder",forcePlaceholderSize:!0,tolerance:"pointer",start:function(){h()},update:function(){a?function(e,r){var t=[],s={};e.children().each(function(){var e=I(this);if(e.hasClass("members-am-sep")){var r=e.attr("data-sep-id");r&&t.push(r)}else if(e.hasClass("members-am-item")){var n=e.attr("data-id");if(n){var a=e.attr("data-menu-parent");void 0===a||""===a?t.push(n):(s[a]||(s[a]=[]),s[a].push(fe(n)))}}});var n=S(r);n.order=t,n.submenu_order=s}(e,a):n&&function(e,r){var t=[],s={};e.children().each(function(){var e=I(this);if(e.hasClass("members-am-sep")){var r=e.attr("data-sep-id");r&&t.push(r)}else if(e.hasClass("members-am-item")){var n=e.attr("data-id");if(n){var a=e.attr("data-menu-parent");void 0===a||""===a?t.push(n):(s[a]||(s[a]=[]),s[a].push(fe(n)))}}});var n=E(r);n.order=t,n.submenu_order=s}(e,n),ve()}})})}function he(){var n=I("#members-am-columns"),a={};n.find(".members-am-column").each(function(){var e=I(this).data("role");if(e){var r=I(this).find(".members-am-sidebar-list");r.length&&(a[e]=r.scrollTop())}}),n.empty();var e=P.carouselPage*P.columnsPerPage;if(P.activeRoleSlugs.slice(e,e+P.columnsPerPage).forEach(function(e){var r=I('
');!function(n,e){e.empty();var r=I(''),a=(b().filter(function(e){return e.slug===n})[0]||{}).label||n;r.append(I('').text(a)),r.append(I(' ').append(I(' ').text("◀"),I(' ').text("▶"))),e.append(r);var t=I('');L(n).forEach(function(e){if(0!==e.indexOf("sep-")){var r=A(e);r&&le(n,r,null,t,0)}else t.append(I('
').attr("data-sep-id",e).text("—"))}),e.append(t),X(t,n),ue(e,t,n),pe(e,n)}(e,r),n.append(r),a[e]&&r.find(".members-am-sidebar-list").scrollTop(a[e])}),P.previewUserId){var t=P.previewUserId,r=I('
'),s=I('');s.append(I(" ").text(P.previewUserLabel||"User #"+t)),s.append(I('× ').on("click",function(){P.previewUserId=null,P.previewUserLabel=null,P.previewUserRoles=[],Ee()})),r.append(s);var i=I(''),o=S(t);g(t).forEach(function(e){if(0!==e.indexOf("sep-")){var r=A(e);r&&ce(t,r,null,o,i,0)}else i.append(I('
').attr("data-sep-id",e).text("——"))}),r.append(i),X(i,"u:"+t),ue(r,i,"u:"+t),pe(r,"u:"+t),n.append(r)}if(P.syncScroll){var m=n.find(".members-am-sidebar-list"),l=!1;m.on("scroll",function(){if(!l){l=!0;var e=I(this).scrollTop();m.not(this).scrollTop(e),l=!1}})}!function(){var e=Math.max(1,Math.ceil(P.activeRoleSlugs.length/P.columnsPerPage)),r=(Math.min(P.carouselPage+1,e),P.carouselPage*P.columnsPerPage+1),n=Math.min((P.carouselPage+1)*P.columnsPerPage,P.activeRoleSlugs.length);I("#members-am-carousel-status").text(r+"–"+n+" "+membersAdminMenus.i18n.of+" "+P.activeRoleSlugs.length);for(var a=I("#members-am-carousel-dots").empty(),t=0;t ').toggleClass("is-active",t===P.carouselPage))}(),be()}function ve(){if(P.selectedId){I("#members-am-edit-panel").removeAttr("hidden");var e=A(P.selectedId),r=se()||{};I("#members-am-edit-title").text(e?e.title:P.selectedId),I("#members-am-edit-label").val(r.label||e&&e.title||"");var n=k(P.selectedId);I("#members-am-edit-url-wrap").toggle(n),I("#members-am-edit-url").attr("placeholder","Override URL (leave empty for default)").val(n&&(r.url||e&&e.url)||"").data("default-url",e&&e.url||""),I("#members-am-icon-type").val(r.icon_type||"dashicon"),I("#members-am-icon-value").val(r.icon||e&&e.icon||"");var a=r.icon||e&&e.icon||"",t=z(a,r.icon_type||e&&e.icon_type||"");"image"!==t&&"custom"!==t&&"svg"!==t||!a?I("#members-am-icon-preview").hide():I("#members-am-icon-preview").show().attr("src",a),I("#members-am-color-bg").val(r.color_bg||""),I("#members-am-color-text").val(r.color_text||""),I("#members-am-color-icon").val(r.color_icon||""),I("#members-am-badge-text").val(r.badge||""),I("#members-am-badge-bg").val(r.badge_bg||""),I("#members-am-item-cap").attr("placeholder",e&&e.cap?e.cap+" (default)":"").val(P.settings.capabilities[P.selectedId]||"");var s=e&&e.custom,i=I("#members-am-remove-custom");s?i.removeAttr("hidden"):i.attr("hidden","hidden"),I("#members-am-visibility-toggles").empty();var o=H(P.settings.capabilities[P.selectedId]||"")||H(e&&e.cap||"")||"read",m=[];if(b().forEach(function(e){"administrator"===e.slug&&!P.settings._meta.admin_editable||m.push(e)}),10<=m.length){var l=membersAdminMenus.i18n&&membersAdminMenus.i18n.filterRolesVisibility||"Filter roles…",c=membersAdminMenus.i18n&&membersAdminMenus.i18n.filterRolesVisibilityLabel||"Filter roles in this list",d=I('
'),u=I(' ').attr("placeholder",l).attr("aria-label",c);d.append(u),I("#members-am-visibility-toggles").append(d),u.on("input",function(){var t=(I(this).val()||"").trim().toLowerCase();I("#members-am-visibility-toggles .members-am-vis-row").each(function(){var e=I(this),r=(e.find("span").first().text()||"").toLowerCase(),n=String(e.find(".members-am-vis-cb").data("role")||"").toLowerCase(),a=!t||-1!==r.indexOf(t)||-1!==n.indexOf(t);e.toggleClass("members-am-vis-filter-hidden",!a)})})}m.forEach(function(e){var r=J(e.slug,P.selectedId),n=B(e.slug,o),a=I(' ').attr("data-role",e.slug).prop("checked",!r&&n);n||a.prop("disabled",!0);var t=I(' ').append(a,I(" ").text(e.label));n||(t.append(I(" ").text(" — no capability").css({color:"#999",fontStyle:"italic",marginLeft:"4px"})),t.css("opacity","0.5")),I("#members-am-visibility-toggles").append(t)}),I(".members-am-color").each(function(){I(this).data("wpWpColorPicker")&&I(this).wpColorPicker("destroy")}),I(".members-am-color").wpColorPicker({change:function(){p||setTimeout(function(){ye()},20)},clear:function(){p||setTimeout(function(){ye()},20)}}),p=!0,I(".members-am-color").each(function(){var e=I(this),r=String(e.val()||"").trim();if(r&&"#"!==r&&e.data("wpWpColorPicker"))try{e.wpColorPicker("color",r)}catch(e){}}),p=!1,ke(),function(){var e=I(".members-am-demote-wrap"),n=I("#members-am-demote-parent"),r=I("#members-am-demote");if(!P.selectedId)return e.attr("hidden",!0);if(O(P.selectedId))return e.attr("hidden",!0);var a=ae()[0]||P.activeRoleSlugs[0];if(a&&U(a,P.selectedId))return e.attr("hidden",!0);e.removeAttr("hidden");var t=P.selectedId,s=membersAdminMenus.i18n&&membersAdminMenus.i18n.selectParentMenu||"";n.empty().append(I(" ").val("").text(s));var i=0;P.tree.forEach(function(e){if(e&&e.id&&e.id!==t){var r=e.title&&String(e.title).trim()?e.title:e.id;n.append(I(" ").val(e.id).text(r)),i++}});var o=0 ');"dashicons"===n?r.append(I(' ')):r.append(I(' ')),r.on("click",function(){I("#members-am-icon-value").val(e),I("#members-am-icon-type").val("dashicons"===n?"dashicon":"fontawesome"),ye()}),t.append(r)}})}function _e(e,r){var n=P.activeRoleSlugs.indexOf(e);if(-1!==n){var a=n+r;if(!(a<0||a>=P.activeRoleSlugs.length)){h();var t=P.activeRoleSlugs[n];P.activeRoleSlugs[n]=P.activeRoleSlugs[a],P.activeRoleSlugs[a]=t,l(),Ee()}}}function we(e,r,n){var a,t,s,i=E(e).overrides[r]||{},o=null;if("__promote__"===i.parent?o=null:-1!==r.indexOf("::")?o=O(r):i.parent&&"__promote__"!==i.parent&&(o=i.parent),o){var m=E(e).submenu_order;m[o]||(m[o]=(a=e,s=j(t=o),P.tree.forEach(function(e){e&&e.id&&-1===e.id.indexOf("::")&&(E(a).overrides[e.id]||{}).parent===t&&-1===s.indexOf(e.id)&&s.push(e.id)}),s));var l=m[o],c=-1!==r.indexOf("::")?r.split("::").pop():r;if(-1===(u=l.indexOf(c)))return;if((p=u+n)<0||p>=l.length)return;h();var d=l[u];l[u]=l[p],l[p]=d}else{E(e).order&&E(e).order.length||(E(e).order=T());var u,p,f=E(e).order;if(-1===(u=f.indexOf(r)))return;if((p=u+n)<0||p>=f.length)return;h();var b=f[u];f[u]=f[p],f[p]=b}Ee()}function Ae(){var e=ae();if(e.length){h();var a="sep-"+Date.now();e.forEach(function(e){E(e).order&&E(e).order.length||(E(e).order=T());var r=E(e).order,n=P.selectedId?r.indexOf(P.selectedId):r.length-1;n<0&&(n=r.length),r.splice(n+1,0,a)}),Ee()}}function Oe(e){var r=I("#members-am-toolbar-loading");r.removeAttr("hidden"),r.find(".spinner").addClass("is-active"),r.find(".members-am-loading-text").text(e||""),I("#members-am-save, #members-am-reset, #members-am-import, #members-am-copy-apply, #members-am-undo").prop("disabled",!0)}function Se(){var e=I("#members-am-toolbar-loading");e.attr("hidden",!0),e.find(".spinner").removeClass("is-active"),e.find(".members-am-loading-text").text(""),I("#members-am-save, #members-am-reset, #members-am-import, #members-am-copy-apply").prop("disabled",!1),u()}function Me(e){Oe(e||membersAdminMenus.i18n&&membersAdminMenus.i18n.saving||"Saving…");var t=membersAdminMenus.i18n&&membersAdminMenus.i18n.networkError||"Could not save settings. Check your connection and try again.";I.ajax({url:membersAdminMenus.ajaxUrl,type:"POST",dataType:"json",timeout:6e4,data:{action:"members_admin_menus_save",nonce:membersAdminMenus.nonce,settings:JSON.stringify(P.settings)}}).done(function(e){if(e&&void 0!==e.success){if(e.success)return a=s(),d=null,u(),void f("success",e.data&&e.data.message||membersAdminMenus.i18n&&membersAdminMenus.i18n.saved||"Settings saved.");f("error",e.data&&e.data.message?e.data.message:"Error")}else f("error",t)}).fail(function(e,r){if("abort"!==r){var n=t;if(e&&e.responseJSON&&void 0!==e.responseJSON.data){var a=e.responseJSON.data;"string"==typeof a&&a?n=a:a&&"string"==typeof a.message&&a.message&&(n=a.message)}f("error",n)}}).always(function(){Se()})}function Ce(e,r){var n,a=membersAdminMenus.i18n||{};if(n="role"===e&&"administrator"===r?a.confirmResetAdministrator||"Reset all menu settings for the Administrator role? This cannot be undone.":"all"!==e&&"role"===e&&r?a.confirmResetRole||"Reset all settings for this role? This cannot be undone.":a.confirmResetAllRoles||"Reset ALL menu settings for every role? This cannot be undone.",confirm(n)){Oe(membersAdminMenus.i18n&&membersAdminMenus.i18n.resetting||"Resetting…");var t=!1;I.post(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_reset",nonce:membersAdminMenus.nonce,scope:e||"all",role:r||""}).done(function(e){if(e.success)return o("success",e.data&&e.data.message||membersAdminMenus.i18n&&membersAdminMenus.i18n.resetComplete||"Reset complete."),P.allowUnload=!0,t=!0,void location.reload();f("error",e.data&&e.data.message?e.data.message:membersAdminMenus.i18n&&membersAdminMenus.i18n.resetFailed||"Reset failed.")}).fail(function(){f("error",membersAdminMenus.i18n&&membersAdminMenus.i18n.resetNetworkError||membersAdminMenus.i18n.networkError||"Could not reset settings. Check your connection and try again.")}).always(function(){t||Se()})}}function Ie(e){I.getJSON(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_user_search",nonce:membersAdminMenus.nonce,term:e},function(e){e.success&&e.data&&e.data.length?function(e){I(".members-am-user-suggestions").remove();var r=I("#members-am-user-search").parent();r.css("position","relative");var n=I('
');e.forEach(function(e){n.append(I('
').text(e.label).data("userId",e.id).on("click",function(){!function(e,r,n){P.previewUserId=e,P.previewUserLabel=r||"User #"+e,P.previewUserRoles=n||[],v(),P.settings.users[e]||(P.settings.users[e]={});Ee()}(e.id,e.label,e.roles),I(".members-am-user-suggestions").remove(),I("#members-am-user-search").val("")}))}),r.append(n),setTimeout(function(){I(document).one("click",function(){I(".members-am-user-suggestions").remove()})},0)}(e.data):I(".members-am-user-suggestions").remove()})}function Pe(){I(document).on("click","#members-am-role-chips .members-am-chip",function(){var e=I(this).data("role"),r=P.activeRoleSlugs.indexOf(e);-1===r?P.activeRoleSlugs.push(e):1 ');if(s.append(I('
').text(n.resetSettingsLabel||"Reset Settings")),t){var i=I(' ');i.append(I(' ')),i.append(I(' ').append(I(" ").text(n.resetAdministrator||"Reset Administrator"),I(" ").text(n.resetAdministratorHelp||"Clear all menu settings for the Administrator role only."))),i.on("click",function(e){e.preventDefault(),e.stopPropagation(),I(".members-am-reset-dropdown").remove(),Ce("role",a)}),s.append(i)}var o=I(' ');o.append(I(' ')),o.append(I(' ').append(I(" ").text(n.resetAll||"Reset all roles"),I(" ").text(n.resetAllRolesHelp||"Clear all menu settings for every role."))),o.on("click",function(e){e.preventDefault(),e.stopPropagation(),I(".members-am-reset-dropdown").remove(),Ce("all")}),s.append(o),s.insertAfter(r),setTimeout(function(){I(document).one("click",function(){I(".members-am-reset-dropdown").remove()})},0)}),I("#members-am-export").on("click",function(e){e.preventDefault(),window.location.href=membersAdminMenus.exportUrl}),I("#members-am-import").on("click",function(){I("#members-am-import-file").trigger("click")}),I("#members-am-import-file").on("change",function(){var e=this.files&&this.files[0];e&&function(e){Oe(membersAdminMenus.i18n&&membersAdminMenus.i18n.importing||"Importing…");var n=new FileReader;n.onerror=function(){Se(),f("error",membersAdminMenus.i18n&&membersAdminMenus.i18n.readFileFailed||"Could not read the file.")},n.onload=function(){try{var e=JSON.parse(n.result),r=!1;I.post(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_import",nonce:membersAdminMenus.nonce,settings:JSON.stringify(e)}).done(function(e){if(e.success)return o("success",e.data&&e.data.message||membersAdminMenus.i18n&&membersAdminMenus.i18n.imported||"Settings imported."),P.allowUnload=!0,r=!0,void location.reload();f("error",e.data&&e.data.message?e.data.message:"Error")}).fail(function(){f("error",membersAdminMenus.i18n&&membersAdminMenus.i18n.importNetworkError||membersAdminMenus.i18n.networkError||"Could not import settings. Check your connection and try again.")}).always(function(){r||Se()})}catch(e){Se(),f("error",membersAdminMenus.i18n&&membersAdminMenus.i18n.invalidJson||"Invalid JSON.")}},n.readAsText(e)}(e)}),I("#members-am-copy-apply").on("click",function(){var n=I("#members-am-copy-from").val(),r=I("#members-am-copy-to").val();if(n&&r)if(n!==r){var a="",t="";if(b().forEach(function(e){e.slug===n&&(a=e.label),e.slug===r&&(t=e.label)}),confirm('Copy menu settings from "'+a+'" to "'+t+'"?\nThis will overwrite "'+t+'" menu configuration.\n\nNote: This copies menu order, labels, icons, and colors. Items the source role cannot access (no-access in its column) are stored as hidden on the target so a higher-capability role does not gain those screens.\nIt does not change WordPress role capabilities (lock icon).')){h();var e=E(n),s={hidden:D(n),order:[],submenu_order:{},overrides:{}},i=L(n);s.order=i.slice(),P.tree.forEach(function(e){if(e.children&&e.children.length){var r=N(n,e.id);r&&r.length&&(s.submenu_order[e.id]=r.slice())}}),e.overrides&&"object"==typeof e.overrides&&(s.overrides=JSON.parse(JSON.stringify(e.overrides))),P.settings.roles[r]=s,-1===P.activeRoleSlugs.indexOf(r)&&(P.activeRoleSlugs.push(r),l(),me()),Ee(),Me(membersAdminMenus.i18n&&membersAdminMenus.i18n.copying||"Copying…")}}else f("error",membersAdminMenus.i18n&&membersAdminMenus.i18n.rolesMustDiffer||"Source and target roles must be different.")}),I("#members-am-admin-editable").on("change",function(){var e=!0;I(this).is(":checked")&&(e=window.confirm(membersAdminMenus.i18n.adminEditableWarn)),e?(P.settings._meta.admin_editable=I(this).is(":checked"),oe(),me(),l(),Ee()):I(this).prop("checked",!1)}),I("#members-am-sync-scroll").prop("checked",!1!==P.syncScroll),I("#members-am-sync-scroll").on("change",function(){P.syncScroll=I(this).is(":checked");try{localStorage.setItem("members_am_sync_scroll",P.syncScroll?"1":"0")}catch(e){}he()});var t="members_am_more_tools";function e(e){var r=I("#members-am-toolbar-extra"),n=I("#members-am-more-tools");if(r.length&&n.length){r.prop("hidden",!e),n.attr("aria-expanded",e?"true":"false").toggleClass("is-open",!!e);var a=membersAdminMenus.i18n||{};e&&a.moreToolsHideAria?n.attr("aria-label",a.moreToolsHideAria):!e&&a.moreToolsShowAria?n.attr("aria-label",a.moreToolsShowAria):n.removeAttr("aria-label");try{sessionStorage.setItem(t,e?"1":"0")}catch(e){}}}var r,n=!1;try{n="1"===sessionStorage.getItem(t)}catch(e){}e(n),I("#members-am-more-tools").on("click",function(){e(I("#members-am-toolbar-extra").prop("hidden"))}),I("#members-am-add-item").on("click",function(){h();var e="c"+Date.now();P.settings.custom_items.push({id:e,label:"Custom link",url:window.location.origin+"/wp-admin/",icon_type:"dashicon",icon:"dashicons-admin-generic",parent:"",position:99,cap:"read"}),P.tree=w(),P.selectedId=y({id:e}),Ee(),ve()}),I("#members-am-remove-custom").on("click",function(){var e=A(P.selectedId),r=e&&e.customId?String(e.customId):"";if(!r&&e&&e.custom&&P.selectedId){var n=-1!==P.selectedId.indexOf("::")?P.selectedId.split("::").pop():P.selectedId;0===n.indexOf("members-am-")&&(P.settings.custom_items||[]).forEach(function(e){e&&e.id&&y(e)===n&&(r=String(e.id))})}e&&r&&(h(),P.settings.custom_items=(P.settings.custom_items||[]).filter(function(e){return!e||String(e.id)!==r}),P.selectedId=null,P.tree=w(),Ee(),I("#members-am-edit-panel").attr("hidden",!0))}),I("#members-am-edit-close").on("click",function(){P.selectedId=null,I("#members-am-edit-panel").attr("hidden",!0),Ee()}),I("#members-am-edit-target-role").on("change",ve),I("#members-am-colors-readable").on("click",function(e){e.preventDefault();var r=String(I("#members-am-color-bg").val()||"").trim();if(r&&"#"!==r){var n=.45 ").val("__all__").text("All roles")),P.activeRoleSlugs.forEach(function(r){var e=(b().filter(function(e){return e.slug===r})[0]||{}).label||r;n.append(I(" ").val(r).text(e))}),P.previewUserId&&n.append(I(" ").val("__user__"+P.previewUserId).text(P.previewUserLabel||"User #"+P.previewUserId)),P.selectedId&&ve()}I(function(){var r,n,e;!function(){try{var e=sessionStorage.getItem(i);if(!e)return;sessionStorage.removeItem(i);var r=JSON.parse(e);r&&r.message&&f(r.type,r.message)}catch(e){}}(),v(),P.tree=w(),oe(),I("#members-am-admin-editable").prop("checked",!!P.settings._meta.admin_editable),r=I("#members-am-copy-from").empty(),n=I("#members-am-copy-to").empty(),(e=b()).forEach(function(e){r.append(I(" ").val(e.slug).text(e.label)),n.append(I(" ").val(e.slug).text(e.label))}),1'),n=I("#members-am-notices"));var t=I("
",{class:"notice is-dismissible"}).addClass("notice-"+(e||"info"));t.append(I("
").text(r)),n.prepend(t),I(document).trigger("wp-notice-added")}}function o(e,r){try{sessionStorage.setItem(i,JSON.stringify({type:e||"success",message:r}))}catch(e){}}var e=["dashicons-menu","dashicons-admin-dashboard","dashicons-admin-post","dashicons-admin-page","dashicons-admin-media","dashicons-admin-comments","dashicons-admin-appearance","dashicons-admin-plugins","dashicons-admin-users","dashicons-admin-tools","dashicons-admin-settings","dashicons-admin-generic","dashicons-edit","dashicons-plus","dashicons-chart-bar","dashicons-cart","dashicons-products","dashicons-email","dashicons-groups","dashicons-heart","dashicons-star-filled","dashicons-smiley","dashicons-info","dashicons-lock","dashicons-unlock","dashicons-visibility","dashicons-hidden","dashicons-arrow-up","dashicons-arrow-down","dashicons-admin-network","dashicons-performance"],r=["fa-solid fa-house","fa-solid fa-user","fa-solid fa-gear","fa-solid fa-file","fa-solid fa-image","fa-solid fa-cart-shopping","fa-solid fa-chart-line","fa-solid fa-envelope","fa-solid fa-book","fa-solid fa-link","fa-solid fa-bell","fa-solid fa-star","fa-solid fa-heart","fa-solid fa-lock","fa-solid fa-unlock","fa-solid fa-pen","fa-solid fa-trash","fa-solid fa-plus","fa-solid fa-minus"],l="members_am_view_state";function m(){try{localStorage.setItem(l,JSON.stringify({activeRoleSlugs:P.activeRoleSlugs,carouselPage:P.carouselPage}))}catch(e){}}function c(e){return JSON.parse(JSON.stringify(e))}var d=null;function b(){d=c(P.settings),u()}function u(){var e=I("#members-am-undo");if(e.length){var r=!!d;e.prop("disabled",!r).attr("aria-disabled",r?"false":"true")}}function h(){return membersAdminMenus.roles||[]}function v(){P.settings._meta&&!Array.isArray(P.settings._meta)||(P.settings._meta={version:3,admin_editable:!1}),P.settings.roles&&!Array.isArray(P.settings.roles)||(P.settings.roles={}),P.settings.users&&!Array.isArray(P.settings.users)||(P.settings.users={}),Array.isArray(P.settings.custom_items)||(P.settings.custom_items=[]),P.settings.capabilities&&!Array.isArray(P.settings.capabilities)||(P.settings.capabilities={})}function E(e){v(),P.settings.roles[e]||(P.settings.roles[e]={hidden:[],order:[],submenu_order:{},overrides:{}});var r=P.settings.roles[e];return r.hidden&&Array.isArray(r.hidden)||(r.hidden=[]),r.order&&Array.isArray(r.order)||(r.order=[]),r.submenu_order&&!Array.isArray(r.submenu_order)||(r.submenu_order={}),r.overrides&&!Array.isArray(r.overrides)||(r.overrides={}),r}function S(e){v(),P.settings.users[e]||(P.settings.users[e]={});var r=P.settings.users[e];return r.hidden&&Array.isArray(r.hidden)||(r.hidden=[]),r.order&&Array.isArray(r.order)||(r.order=[]),r.overrides&&!Array.isArray(r.overrides)||(r.overrides={}),r.submenu_order&&!Array.isArray(r.submenu_order)||(r.submenu_order={}),r}function M(e,r){var n=function(e,r){for(var n=(e||[]).slice().sort(),t=null,a=0;a=a.length||(b(),a.splice(d,1),a.splice(u,0,o?c:r))}}function _(e){var r=e.id||"c";return"members-am-"+String(r).replace(/[^a-z0-9_-]/gi,"-").toLowerCase()}function k(e){return!!e&&0===(-1!==e.indexOf("::")?e.split("::").pop():e).indexOf("members-am-")}function w(e,r){if(!e||!r)return null;for(var n=0;na&&(P.carouselPage=a))}}P.activeRoleSlugs=r.filter(function(e){return"administrator"!==e||n}),P.activeRoleSlugs.length||(P.activeRoleSlugs=["subscriber"])}function ue(){var t=I("#members-am-role-chips").empty();h().forEach(function(e){if("administrator"!==e.slug||P.settings._meta.admin_editable){var r=-1!==P.activeRoleSlugs.indexOf(e.slug),n=I(' ').text(e.label).attr("data-role",e.slug).toggleClass("is-active",r);t.append(n)}})}function pe(n,t,e,a,s){(function(e,r,n,t,a){a=a||0;var s=r.id,i=z(e,s),o=!K(e,r.cap),l=E(e).overrides[s]||{},m=l.label||r.title||s,c=I('
').attr("data-id",s).attr("data-menu-parent",n||"").toggleClass("is-hidden",i).toggleClass("is-no-cap",o).toggleClass("is-selected",P.selectedId===s).toggleClass("is-sub",0 ');if(p){Z(d);var b=!!P.collapsedParents[d][s],h=u.expandSubmenus||"Expand submenu items",v=u.collapseSubmenus||"Collapse submenu items";I(' ').attr("aria-expanded",!b).attr("aria-label",(b?h:v)+": "+m).append(I(' ').addClass(b?"dashicons-arrow-right-alt2":"dashicons-arrow-down-alt2")).on("click",function(e){e.stopPropagation(),Z(d),P.collapsedParents[d][s]=!P.collapsedParents[d][s],ye()}).appendTo(f),c.toggleClass("is-collapse-collapsed",b)}else f.append(I(' '));c.append(f);var g=u.bulkCheckboxAria||"Include in bulk actions",x=I(' '),y=I(' ').prop("checked",!!P.columnBulkSelection[d].ids[s]).attr("aria-label",g+": "+m).on("click",function(e){e.stopPropagation()}).on("change",function(e){e.stopPropagation(),Y(d,s,I(this).prop("checked")),ye()});x.append(y),c.append(x);var _=I('
');if(0===a){var k=l.icon||r.icon,w=G(k,l.icon_type||r.icon_type);if("fontawesome"===w&&k)_.append(I(' '));else if("svg"!==w&&"image"!==w&&"custom"!==w||!k){var A=k&&0===k.indexOf("dashicons-")?k:"dashicons-admin-generic";_.append(I(' '))}else _.append(I(" ").attr("src",k).css({width:"20px",height:"20px",display:"inline-block",verticalAlign:"middle",objectFit:"contain",filter:"none"}))}r.custom&&_.append(I('custom '));l.label&&_.append(I('edit '));if(_.append(I(' ').text(m)),l.badge){var O=l.badge_bg||"#d63638";_.append(I(' ').text(l.badge).css({backgroundColor:O,color:"#fff",fontSize:"9px",padding:"1px 5px",borderRadius:"2px",marginLeft:"4px",whiteSpace:"nowrap"}))}if(o){var S=membersAdminMenus.i18n||{},M=S.noAccessTitlePattern&&S.noAccessTitlePattern.replace("%s",r.cap||"read")||"This role does not have the '"+(r.cap||"read")+"' capability on this role object. Users with multiple roles may still access the screen. Manage capabilities in Members → Roles.";_.append(I(' ').attr("title",M).html("🔒 no access"))}c.append(_),l.color_bg&&c.css("background-color",l.color_bg);l.color_text&&c.find(".members-am-item-label").css("color",l.color_text);l.color_icon&&(c.find(".dashicons").css("color",l.color_icon),c.find(".members-am-fa-icon i").css("color",l.color_icon),c.find("img").css("filter","none"));var C=I('
');C.append(I(' ').text("◉"),I(' ').text("↑"),I(' ').text("↓")),c.append(C),t.append(c)})(n,t,e,a,s=s||0),t.children&&t.children.length&&D(n,t.id).forEach(function(e){var r=function(e,r,n){if(-1!==n.indexOf("::")){var t=O(n);return t&&R(n,e)===r?t:null}var a=O(B(r,n));return a||(-1===n.indexOf("::")&&(E(e).overrides[n]||{}).parent===r?O(n):null)}(n,t.id,e);r&&R(r.id,n)===t.id&&pe(n,r,t.id,a,s+1)})}function fe(n,t,e,a,s,i){i=i||0,s.append(function(r,e,n,t){t=t||0;var a=M(n,r.id),s=a.label||r.title,i=function(e,r){var n=S(e);if(-1!==n.hidden.indexOf(r))return!0;var t=U(r,e);return!(!t||-1===n.hidden.indexOf(t))}(n,r.id),o=!function(e){if(!e||"read"===e)return 1;for(var r=P.previewUserRoles||[],n=0;n").addClass(m).attr("data-id",r.id).attr("data-menu-parent",e||""),d="u:"+n;$(d);var u=membersAdminMenus.i18n||{},p=r.children&&r.children.length,f=I(' ');if(p){Z(d);var b=!!P.collapsedParents[d][r.id],h=u.expandSubmenus||"Expand submenu items",v=u.collapseSubmenus||"Collapse submenu items";I(' ').attr("aria-expanded",!b).attr("aria-label",(b?h:v)+": "+s).append(I(' ').addClass(b?"dashicons-arrow-right-alt2":"dashicons-arrow-down-alt2")).on("click",function(e){e.stopPropagation(),Z(d),P.collapsedParents[d][r.id]=!P.collapsedParents[d][r.id],ye()}).appendTo(f),c.toggleClass("is-collapse-collapsed",b)}else f.append(I(' '));c.append(f);var g=u.bulkCheckboxAria||"Include in bulk actions",x=I(' '),y=I(' ').prop("checked",!!P.columnBulkSelection[d].ids[r.id]).attr("aria-label",g+": "+s).on("click",function(e){e.stopPropagation()}).on("change",function(e){e.stopPropagation(),Y(d,r.id,I(this).prop("checked")),ye()});x.append(y),c.append(x);var _=I('
');if(0===t){var k=a.icon||r.icon,w=G(k,a.icon_type||r.icon_type);"fontawesome"===w&&k?_.append(I(' ')):"svg"!==w&&"image"!==w&&"custom"!==w||!k?k&&0===k.indexOf("dashicons-")?_.append(I(' ')):_.append(I(' ')):_.append(I(" ").attr("src",k).css({width:"20px",height:"20px",display:"inline-block",verticalAlign:"middle",objectFit:"contain",filter:"none"}))}r.custom&&_.append(I('custom '));a.label&&_.append(I('edit '));if(_.append(I(' ').text(s)),a.badge){var A=a.badge_bg||"#d63638";_.append(I(' ').text(a.badge).css({backgroundColor:A,color:"#fff",fontSize:"9px",padding:"1px 5px",borderRadius:"2px",marginLeft:"4px",whiteSpace:"nowrap"}))}o&&_.append(I('🔒 no access "));c.append(_),a.color_bg&&c.css("background-color",a.color_bg);a.color_text&&c.find(".members-am-item-label").css("color",a.color_text);a.color_icon&&(c.find(".dashicons").css("color",a.color_icon),c.find(".members-am-fa-icon i").css("color",a.color_icon));var O=I('
');return O.append(I(' ').text(i?"◯":"◉"),I(' ').text("↑"),I(' ').text("↓")),c.append(O),c.on("click",function(e){I(e.target).closest("button, .members-am-item-cb, .members-am-collapse-toggle").length||(P.selectedId=r.id,je())}),c}(t,e,n,i)),t.children&&t.children.length&&function(e,r){var n=x(e,r),t=S(e),a=t.submenu_order&&t.submenu_order[r];if(!a||!a.length)return n.slice();var s=a.filter(function(e){return-1!==n.indexOf(e)});return n.forEach(function(e){-1===s.indexOf(e)&&s.push(e)}),s}(n,t.id).forEach(function(e){var r=function(e,r,n){if(-1!==n.indexOf("::")){var t=O(n);return t&&U(n,e)===r?t:null}var a=O(B(r,n));if(a)return a;if(-1===n.indexOf("::")){var s=S(e);if((s.overrides&&s.overrides[n]||{}).parent===r)return O(n)}return null}(n,t.id,e);r&&U(r.id,n)===t.id&&fe(n,r,t.id,a,s,i+1)})}function be(e,r){var a=(r||"").trim().toLowerCase(),n=e.children(".members-am-item");if(!a)return n.removeClass("members-am-filter-hidden"),void e.children(".members-am-sep").removeClass("members-am-filter-hidden");var i={};n.each(function(){var e=I(this),r=e.attr("data-id"),n=(e.find(".members-am-item-label").first().text()||"").toLowerCase(),t=(r||"").toLowerCase();i[r]=-1!==n.indexOf(a)||-1!==t.indexOf(a)});var o={};n.each(function(){var e=I(this).attr("data-id"),r=I(this).attr("data-menu-parent")||"";o[r]||(o[r]=[]),o[r].push(e)});var l={};function m(e){var r,n=i[e],t=o[e]||[],a=!1;for(r=0;r '),o=I(' ').attr("placeholder",a).attr("aria-label",s).val(t);i.append(o),e.find(".members-am-sidebar-head").first().after(i),o.on("input",function(){P.columnFilters[n]=I(this).val(),be(r,I(this).val())}),be(r,t)}function ve(e,r){var s=0===String(r).indexOf("u:"),i=s?parseInt(r.replace(/^u:/,""),10):0,o=s?null:r,l=r,m=membersAdminMenus.i18n||{},n=I('
').attr("data-column-key",l),t=I('
');t.append(I(' ').text(m.bulkSelectVisible||"Select visible"),I(' ').text(m.bulkClearSelection||"Clear selection"));var a=I('
');a.append(I(' ').text(m.collapseAllMenus||"Collapse all"),I(' ').text(m.expandAllMenus||"Expand all"));var c=I(' ').attr("aria-label",m.bulkVisibilityLabel||"Menu visibility for this column");c.append(I(' ').text(m.bulkActionsPlaceholder||"Choose visibility…"));var d=I(" ").attr("label",m.bulkGroupWholeColumn||"Whole column");d.append(I(' ').text(m.bulkShowAllItems||"Show every menu item"),I(' ').text(m.bulkHideAllItems||"Hide every menu item"));var u=I(" ").attr("label",m.bulkGroupCheckedRows||"Checked rows");u.append(I(' ').text(m.bulkKeepOnlyCheckedVisible||"Keep only checked visible"),I(' ').text(m.bulkHideCheckedItems||"Hide checked items"),I(' ').text(m.bulkShowCheckedItems||"Show checked items")),c.append(d,u),n.append(t,a,c);var p=e.find(".members-am-col-filter").first();p.length?p.after(n):e.find(".members-am-sidebar-head").first().after(n),c.on("change",function(){var e=I(this).val();if(I(this).val(""),e)if(!("keep-only-checked"===e||"hide-checked"===e||"show-checked"===e)||q(l).length){if("keep-only-checked"===e){if(!window.confirm(m.bulkConfirmKeepOnlyChecked||"Hide all items except checked items and their parent menus?"))return}else if("hide-all"===e){if(!window.confirm(m.bulkConfirmHideAll||"Hide every menu item in this column?"))return}else if("hide-checked"===e&&!window.confirm(m.bulkConfirmHideChecked||"Hide the checked items (and their submenus where applicable)?"))return;var r,n,t,a;b(),s?"show-all"===e?S(i).hidden=[]:"hide-all"===e?(t=i,a=Q(),S(t).hidden=a.slice()):"keep-only-checked"===e?function(e,n){var r=q(e);if(r.length){var t={};r.forEach(function(e){for(var r=e;r;)t[r]=!0,r=U(r,n)});var a=Q(),s=S(n).hidden;s.length=0,a.forEach(function(e){t[e]||s.push(e)})}}(l,i):"hide-checked"===e?se(l,i):"show-checked"===e&&ie(l,i):"show-all"===e?E(o).hidden=[]:"hide-all"===e?(r=o,n=Q(),E(r).hidden=n.slice()):"keep-only-checked"===e?function(e,n){var r=q(e);if(r.length){var t={};r.forEach(function(e){for(var r=e;r;)t[r]=!0,r=R(r,n)});var a=Q(),s=E(n).hidden;s.length=0,a.forEach(function(e){t[e]||s.push(e)})}}(l,o):"hide-checked"===e?te(l,o):"show-checked"===e&&ae(l,o),je()}else f("warning",m.bulkSelectCheckedFirst||"Check one or more menu items first.")})}function ge(e){return-1!==e.indexOf("::")?e.split("::").pop():e}function xe(){I.fn.sortable&&I("#members-am-columns .members-am-sidebar-list").each(function(){var e=I(this);e.data("ui-sortable")&&e.sortable("destroy");var r=e.closest(".members-am-column"),n=r.data("role"),t=r.data("user");e.sortable({axis:"y",distance:6,items:"> .members-am-item, > .members-am-sep",cancel:".members-am-item-actions button, .members-am-item-cb, .members-am-item-cb-wrap, .members-am-collapse-toggle",placeholder:"members-am-sort-placeholder",forcePlaceholderSize:!0,tolerance:"pointer",start:function(){b()},update:function(){t?function(e,r){var a=[],s={};e.children().each(function(){var e=I(this);if(e.hasClass("members-am-sep")){var r=e.attr("data-sep-id");r&&a.push(r)}else if(e.hasClass("members-am-item")){var n=e.attr("data-id");if(n){var t=e.attr("data-menu-parent");void 0===t||""===t?a.push(n):(s[t]||(s[t]=[]),s[t].push(ge(n)))}}});var n=S(r);n.order=a,n.submenu_order=s}(e,t):n&&function(e,r){var a=[],s={};e.children().each(function(){var e=I(this);if(e.hasClass("members-am-sep")){var r=e.attr("data-sep-id");r&&a.push(r)}else if(e.hasClass("members-am-item")){var n=e.attr("data-id");if(n){var t=e.attr("data-menu-parent");void 0===t||""===t?a.push(n):(s[t]||(s[t]=[]),s[t].push(ge(n)))}}});var n=E(r);n.order=a,n.submenu_order=s}(e,n),_e()}})})}function ye(){var n=I("#members-am-columns"),t={};n.find(".members-am-column").each(function(){var e=I(this).data("role");if(e){var r=I(this).find(".members-am-sidebar-list");r.length&&(t[e]=r.scrollTop())}}),n.empty();var e=P.carouselPage*P.columnsPerPage;if(P.activeRoleSlugs.slice(e,e+P.columnsPerPage).forEach(function(e){var r=I('
');!function(n,e){e.empty();var r=I(''),t=(h().filter(function(e){return e.slug===n})[0]||{}).label||n;r.append(I('').text(t)),r.append(I(' ').append(I(' ').text("◀"),I(' ').text("▶"))),e.append(r);var a=I('');J(n).forEach(function(e){if(0!==e.indexOf("sep-")){var r=O(e);r&&pe(n,r,null,a,0)}else a.append(I('
').attr("data-sep-id",e).text("—"))}),e.append(a),re(a,n),he(e,a,n),ve(e,n)}(e,r),n.append(r),t[e]&&r.find(".members-am-sidebar-list").scrollTop(t[e])}),P.previewUserId){var a=P.previewUserId,r=I('
'),s=I('');s.append(I(" ").text(P.previewUserLabel||"User #"+a)),s.append(I('× ').on("click",function(){P.previewUserId=null,P.previewUserLabel=null,P.previewUserRoles=[],je()})),r.append(s);var i=I(''),o=S(a);g(a).forEach(function(e){if(0!==e.indexOf("sep-")){var r=O(e);r&&fe(a,r,null,o,i,0)}else i.append(I('
').attr("data-sep-id",e).text("——"))}),r.append(i),re(i,"u:"+a),he(r,i,"u:"+a),ve(r,"u:"+a),n.append(r)}if(P.syncScroll){var l=n.find(".members-am-sidebar-list"),m=!1;l.on("scroll",function(){if(!m){m=!0;var e=I(this).scrollTop();l.not(this).scrollTop(e),m=!1}})}!function(){var e=Math.max(1,Math.ceil(P.activeRoleSlugs.length/P.columnsPerPage)),r=(Math.min(P.carouselPage+1,e),P.carouselPage*P.columnsPerPage+1),n=Math.min((P.carouselPage+1)*P.columnsPerPage,P.activeRoleSlugs.length);I("#members-am-carousel-status").text(r+"–"+n+" "+membersAdminMenus.i18n.of+" "+P.activeRoleSlugs.length);for(var t=I("#members-am-carousel-dots").empty(),a=0;a ').toggleClass("is-active",a===P.carouselPage))}(),xe()}function _e(){if(P.selectedId){I("#members-am-edit-panel").removeAttr("hidden");var e=O(P.selectedId),r=me()||{};I("#members-am-edit-title").text(e?e.title:P.selectedId),I("#members-am-edit-label").val(r.label||e&&e.title||"");var n=k(P.selectedId);I("#members-am-edit-url-wrap").toggle(n),I("#members-am-edit-url").attr("placeholder","Override URL (leave empty for default)").val(n&&(r.url||e&&e.url)||"").data("default-url",e&&e.url||""),I("#members-am-icon-type").val(r.icon_type||"dashicon"),I("#members-am-icon-value").val(r.icon||e&&e.icon||"");var t=r.icon||e&&e.icon||"",a=G(t,r.icon_type||e&&e.icon_type||"");"image"!==a&&"custom"!==a&&"svg"!==a||!t?I("#members-am-icon-preview").hide():I("#members-am-icon-preview").show().attr("src",t),I("#members-am-color-bg").val(r.color_bg||""),I("#members-am-color-text").val(r.color_text||""),I("#members-am-color-icon").val(r.color_icon||""),I("#members-am-badge-text").val(r.badge||""),I("#members-am-badge-bg").val(r.badge_bg||""),I("#members-am-item-cap").attr("placeholder",e&&e.cap?e.cap+" (default)":"").val(P.settings.capabilities[P.selectedId]||"");var s=e&&e.custom,i=I("#members-am-remove-custom");s?i.removeAttr("hidden"):i.attr("hidden","hidden"),I("#members-am-visibility-toggles").empty();var o=V(P.settings.capabilities[P.selectedId]||"")||V(e&&e.cap||"")||"read",l=[];if(h().forEach(function(e){"administrator"===e.slug&&!P.settings._meta.admin_editable||l.push(e)}),10<=l.length){var m=membersAdminMenus.i18n&&membersAdminMenus.i18n.filterRolesVisibility||"Filter roles…",c=membersAdminMenus.i18n&&membersAdminMenus.i18n.filterRolesVisibilityLabel||"Filter roles in this list",d=I('
'),u=I(' ').attr("placeholder",m).attr("aria-label",c);d.append(u),I("#members-am-visibility-toggles").append(d),u.on("input",function(){var a=(I(this).val()||"").trim().toLowerCase();I("#members-am-visibility-toggles .members-am-vis-row").each(function(){var e=I(this),r=(e.find("span").first().text()||"").toLowerCase(),n=String(e.find(".members-am-vis-cb").data("role")||"").toLowerCase(),t=!a||-1!==r.indexOf(a)||-1!==n.indexOf(a);e.toggleClass("members-am-vis-filter-hidden",!t)})})}l.forEach(function(e){var r=z(e.slug,P.selectedId),n=K(e.slug,o),t=I(' ').attr("data-role",e.slug).prop("checked",!r&&n);n||t.prop("disabled",!0);var a=I(' ').append(t,I(" ").text(e.label));n||(a.append(I(" ").text(" — no capability").css({color:"#999",fontStyle:"italic",marginLeft:"4px"})),a.css("opacity","0.5")),I("#members-am-visibility-toggles").append(a)}),I(".members-am-color").each(function(){I(this).data("wpWpColorPicker")&&I(this).wpColorPicker("destroy")}),I(".members-am-color").wpColorPicker({change:function(){p||setTimeout(function(){Ae()},20)},clear:function(){p||setTimeout(function(){Ae()},20)}}),p=!0,I(".members-am-color").each(function(){var e=I(this),r=String(e.val()||"").trim();if(r&&"#"!==r&&e.data("wpWpColorPicker"))try{e.wpColorPicker("color",r)}catch(e){}}),p=!1,Oe(),function(){var e=I(".members-am-demote-wrap"),n=I("#members-am-demote-parent"),r=I("#members-am-demote");if(!P.selectedId)return e.attr("hidden",!0);var t=oe()[0]||P.activeRoleSlugs[0];if(t&&T(t,P.selectedId))return e.attr("hidden",!0);e.removeAttr("hidden");var a=P.selectedId,s=t?R(a,t):null,i=membersAdminMenus.i18n&&membersAdminMenus.i18n.selectParentMenu||"";n.empty().append(I(" ").val("").text(i));var o=0;P.tree.forEach(function(e){if(e&&e.id&&e.id!==a&&(!s||e.id!==s)){var r=e.title&&String(e.title).trim()?e.title:e.id;n.append(I(" ").val(e.id).text(r)),o++}});var l=0 ');"dashicons"===n?r.append(I(' ')):r.append(I(' ')),r.on("click",function(){I("#members-am-icon-value").val(e),I("#members-am-icon-type").val("dashicons"===n?"dashicon":"fontawesome"),Ae()}),a.append(r)}})}function Se(e,r){var n=P.activeRoleSlugs.indexOf(e);if(-1!==n){var t=n+r;if(!(t<0||t>=P.activeRoleSlugs.length)){b();var a=P.activeRoleSlugs[n];P.activeRoleSlugs[n]=P.activeRoleSlugs[t],P.activeRoleSlugs[t]=a,m(),je()}}}function Me(e,r,n){var t=E(e).overrides[r]||{},a=null;if("__promote__"===t.parent?a=null:-1!==r.indexOf("::")?a=C(r):t.parent&&"__promote__"!==t.parent&&(a=t.parent),a){var s=E(e).submenu_order;s[a]||(s[a]=H(e,a));var i=s[a],o=-1!==r.indexOf("::")?r.split("::").pop():r;if(-1===(m=i.indexOf(o)))return;if((c=m+n)<0||c>=i.length)return;b();var l=i[m];i[m]=i[c],i[c]=l}else{E(e).order&&E(e).order.length||(E(e).order=j());var m,c,d=E(e).order;if(-1===(m=d.indexOf(r)))return;if((c=m+n)<0||c>=d.length)return;b();var u=d[m];d[m]=d[c],d[c]=u}je()}function Ce(){var e=oe();if(e.length){b();var t="sep-"+Date.now();e.forEach(function(e){E(e).order&&E(e).order.length||(E(e).order=j());var r=E(e).order,n=P.selectedId?r.indexOf(P.selectedId):r.length-1;n<0&&(n=r.length),r.splice(n+1,0,t)}),je()}}function Ie(e){var r=I("#members-am-toolbar-loading");r.removeAttr("hidden"),r.find(".spinner").addClass("is-active"),r.find(".members-am-loading-text").text(e||""),I("#members-am-save, #members-am-reset, #members-am-import, #members-am-copy-apply, #members-am-undo").prop("disabled",!0)}function Pe(){var e=I("#members-am-toolbar-loading");e.attr("hidden",!0),e.find(".spinner").removeClass("is-active"),e.find(".members-am-loading-text").text(""),I("#members-am-save, #members-am-reset, #members-am-import, #members-am-copy-apply").prop("disabled",!1),u()}function Ee(e){Ie(e||membersAdminMenus.i18n&&membersAdminMenus.i18n.saving||"Saving…");var a=membersAdminMenus.i18n&&membersAdminMenus.i18n.networkError||"Could not save settings. Check your connection and try again.";I.ajax({url:membersAdminMenus.ajaxUrl,type:"POST",dataType:"json",timeout:6e4,data:{action:"members_admin_menus_save",nonce:membersAdminMenus.nonce,settings:JSON.stringify(P.settings)}}).done(function(e){if(e&&void 0!==e.success){if(e.success)return t=s(),d=null,u(),void f("success",e.data&&e.data.message||membersAdminMenus.i18n&&membersAdminMenus.i18n.saved||"Settings saved.");f("error",e.data&&e.data.message?e.data.message:"Error")}else f("error",a)}).fail(function(e,r){if("abort"!==r){var n=a;if(e&&e.responseJSON&&void 0!==e.responseJSON.data){var t=e.responseJSON.data;"string"==typeof t&&t?n=t:t&&"string"==typeof t.message&&t.message&&(n=t.message)}f("error",n)}}).always(function(){Pe()})}function Re(e,r){var n,t=membersAdminMenus.i18n||{};if(n="role"===e&&"administrator"===r?t.confirmResetAdministrator||"Reset all menu settings for the Administrator role? This cannot be undone.":"all"!==e&&"role"===e&&r?t.confirmResetRole||"Reset all settings for this role? This cannot be undone.":t.confirmResetAllRoles||"Reset ALL menu settings for every role? This cannot be undone.",confirm(n)){Ie(membersAdminMenus.i18n&&membersAdminMenus.i18n.resetting||"Resetting…");var a=!1;I.post(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_reset",nonce:membersAdminMenus.nonce,scope:e||"all",role:r||""}).done(function(e){if(e.success)return o("success",e.data&&e.data.message||membersAdminMenus.i18n&&membersAdminMenus.i18n.resetComplete||"Reset complete."),P.allowUnload=!0,a=!0,void location.reload();f("error",e.data&&e.data.message?e.data.message:membersAdminMenus.i18n&&membersAdminMenus.i18n.resetFailed||"Reset failed.")}).fail(function(){f("error",membersAdminMenus.i18n&&membersAdminMenus.i18n.resetNetworkError||membersAdminMenus.i18n.networkError||"Could not reset settings. Check your connection and try again.")}).always(function(){a||Pe()})}}function Ue(e){I.getJSON(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_user_search",nonce:membersAdminMenus.nonce,term:e},function(e){e.success&&e.data&&e.data.length?function(e){I(".members-am-user-suggestions").remove();var r=I("#members-am-user-search").parent();r.css("position","relative");var n=I('
');e.forEach(function(e){n.append(I('
').text(e.label).data("userId",e.id).on("click",function(){!function(e,r,n){P.previewUserId=e,P.previewUserLabel=r||"User #"+e,P.previewUserRoles=n||[],v(),P.settings.users[e]||(P.settings.users[e]={});je()}(e.id,e.label,e.roles),I(".members-am-user-suggestions").remove(),I("#members-am-user-search").val("")}))}),r.append(n),setTimeout(function(){I(document).one("click",function(){I(".members-am-user-suggestions").remove()})},0)}(e.data):I(".members-am-user-suggestions").remove()})}function Te(){I(document).on("click","#members-am-role-chips .members-am-chip",function(){var e=I(this).data("role"),r=P.activeRoleSlugs.indexOf(e);-1===r?P.activeRoleSlugs.push(e):1 ');if(s.append(I('
').text(n.resetSettingsLabel||"Reset Settings")),a){var i=I(' ');i.append(I(' ')),i.append(I(' ').append(I(" ").text(n.resetAdministrator||"Reset Administrator"),I(" ").text(n.resetAdministratorHelp||"Clear all menu settings for the Administrator role only."))),i.on("click",function(e){e.preventDefault(),e.stopPropagation(),I(".members-am-reset-dropdown").remove(),Re("role",t)}),s.append(i)}var o=I(' ');o.append(I(' ')),o.append(I(' ').append(I(" ").text(n.resetAll||"Reset all roles"),I(" ").text(n.resetAllRolesHelp||"Clear all menu settings for every role."))),o.on("click",function(e){e.preventDefault(),e.stopPropagation(),I(".members-am-reset-dropdown").remove(),Re("all")}),s.append(o),s.insertAfter(r),setTimeout(function(){I(document).one("click",function(){I(".members-am-reset-dropdown").remove()})},0)}),I("#members-am-export").on("click",function(e){e.preventDefault(),window.location.href=membersAdminMenus.exportUrl}),I("#members-am-import").on("click",function(){I("#members-am-import-file").trigger("click")}),I("#members-am-import-file").on("change",function(){var e=this.files&&this.files[0];e&&function(e){Ie(membersAdminMenus.i18n&&membersAdminMenus.i18n.importing||"Importing…");var n=new FileReader;n.onerror=function(){Pe(),f("error",membersAdminMenus.i18n&&membersAdminMenus.i18n.readFileFailed||"Could not read the file.")},n.onload=function(){try{var e=JSON.parse(n.result),r=!1;I.post(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_import",nonce:membersAdminMenus.nonce,settings:JSON.stringify(e)}).done(function(e){if(e.success)return o("success",e.data&&e.data.message||membersAdminMenus.i18n&&membersAdminMenus.i18n.imported||"Settings imported."),P.allowUnload=!0,r=!0,void location.reload();f("error",e.data&&e.data.message?e.data.message:"Error")}).fail(function(){f("error",membersAdminMenus.i18n&&membersAdminMenus.i18n.importNetworkError||membersAdminMenus.i18n.networkError||"Could not import settings. Check your connection and try again.")}).always(function(){r||Pe()})}catch(e){Pe(),f("error",membersAdminMenus.i18n&&membersAdminMenus.i18n.invalidJson||"Invalid JSON.")}},n.readAsText(e)}(e)}),I("#members-am-copy-apply").on("click",function(){var n=I("#members-am-copy-from").val(),r=I("#members-am-copy-to").val();if(n&&r)if(n!==r){var t="",a="";if(h().forEach(function(e){e.slug===n&&(t=e.label),e.slug===r&&(a=e.label)}),confirm('Copy menu settings from "'+t+'" to "'+a+'"?\nThis will overwrite "'+a+'" menu configuration.\n\nNote: This copies menu order, labels, icons, and colors. Items the source role cannot access (no-access in its column) are stored as hidden on the target so a higher-capability role does not gain those screens.\nIt does not change WordPress role capabilities (lock icon).')){b();var e=E(n),s={hidden:W(n),order:[],submenu_order:{},overrides:{}},i=J(n);s.order=i.slice(),P.tree.forEach(function(e){if(e.children&&e.children.length){var r=D(n,e.id);r&&r.length&&(s.submenu_order[e.id]=r.slice())}}),e.overrides&&"object"==typeof e.overrides&&(s.overrides=JSON.parse(JSON.stringify(e.overrides))),P.settings.roles[r]=s,-1===P.activeRoleSlugs.indexOf(r)&&(P.activeRoleSlugs.push(r),m(),ue()),je(),Ee(membersAdminMenus.i18n&&membersAdminMenus.i18n.copying||"Copying…")}}else f("error",membersAdminMenus.i18n&&membersAdminMenus.i18n.rolesMustDiffer||"Source and target roles must be different.")}),I("#members-am-admin-editable").on("change",function(){var e=!0;I(this).is(":checked")&&(e=window.confirm(membersAdminMenus.i18n.adminEditableWarn)),e?(P.settings._meta.admin_editable=I(this).is(":checked"),de(),ue(),m(),je()):I(this).prop("checked",!1)}),I("#members-am-sync-scroll").prop("checked",!1!==P.syncScroll),I("#members-am-sync-scroll").on("change",function(){P.syncScroll=I(this).is(":checked");try{localStorage.setItem("members_am_sync_scroll",P.syncScroll?"1":"0")}catch(e){}ye()});var a="members_am_more_tools";function e(e){var r=I("#members-am-toolbar-extra"),n=I("#members-am-more-tools");if(r.length&&n.length){r.prop("hidden",!e),n.attr("aria-expanded",e?"true":"false").toggleClass("is-open",!!e);var t=membersAdminMenus.i18n||{};e&&t.moreToolsHideAria?n.attr("aria-label",t.moreToolsHideAria):!e&&t.moreToolsShowAria?n.attr("aria-label",t.moreToolsShowAria):n.removeAttr("aria-label");try{sessionStorage.setItem(a,e?"1":"0")}catch(e){}}}var r,n=!1;try{n="1"===sessionStorage.getItem(a)}catch(e){}e(n),I("#members-am-more-tools").on("click",function(){e(I("#members-am-toolbar-extra").prop("hidden"))}),I("#members-am-add-item").on("click",function(){b();var e="c"+Date.now();P.settings.custom_items.push({id:e,label:"Custom link",url:window.location.origin+"/wp-admin/",icon_type:"dashicon",icon:"dashicons-admin-generic",parent:"",position:99,cap:"read"}),P.tree=A(),P.selectedId=_({id:e}),je(),_e()}),I("#members-am-remove-custom").on("click",function(){var e=O(P.selectedId),r=e&&e.customId?String(e.customId):"";if(!r&&e&&e.custom&&P.selectedId){var n=-1!==P.selectedId.indexOf("::")?P.selectedId.split("::").pop():P.selectedId;0===n.indexOf("members-am-")&&(P.settings.custom_items||[]).forEach(function(e){e&&e.id&&_(e)===n&&(r=String(e.id))})}e&&r&&(b(),P.settings.custom_items=(P.settings.custom_items||[]).filter(function(e){return!e||String(e.id)!==r}),P.selectedId=null,P.tree=A(),je(),I("#members-am-edit-panel").attr("hidden",!0))}),I("#members-am-edit-close").on("click",function(){P.selectedId=null,I("#members-am-edit-panel").attr("hidden",!0),je()}),I("#members-am-edit-target-role").on("change",_e),I("#members-am-colors-readable").on("click",function(e){e.preventDefault();var r=String(I("#members-am-color-bg").val()||"").trim();if(r&&"#"!==r){var n=.45 ").val("__all__").text("All roles")),P.activeRoleSlugs.forEach(function(r){var e=(h().filter(function(e){return e.slug===r})[0]||{}).label||r;n.append(I(" ").val(r).text(e))}),P.previewUserId&&n.append(I(" ").val("__user__"+P.previewUserId).text(P.previewUserLabel||"User #"+P.previewUserId)),P.selectedId&&_e()}I(function(){var r,n,e;!function(){try{var e=sessionStorage.getItem(i);if(!e)return;sessionStorage.removeItem(i);var r=JSON.parse(e);r&&r.message&&f(r.type,r.message)}catch(e){}}(),v(),P.tree=A(),de(),I("#members-am-admin-editable").prop("checked",!!P.settings._meta.admin_editable),r=I("#members-am-copy-from").empty(),n=I("#members-am-copy-to").empty(),(e=h()).forEach(function(e){r.append(I(" ").val(e.slug).text(e.label)),n.append(I(" ").val(e.slug).text(e.label))}),1
Date: Fri, 24 Apr 2026 22:52:44 +0300
Subject: [PATCH 49/73] feat(admin): add JSON payload size and depth limits,
enhance Font Awesome and Dashicons validation functions
---
addons/members-admin-menus/app/defaults.php | 10 +
.../app/functions-admin.php | 216 ++++++++++++++--
addons/members-admin-menus/app/functions.php | 50 ++--
.../src/functions-filters.php | 20 +-
js/admin-menus.js | 235 +++++++++++++++---
js/admin-menus.min.js | 2 +-
6 files changed, 447 insertions(+), 86 deletions(-)
diff --git a/addons/members-admin-menus/app/defaults.php b/addons/members-admin-menus/app/defaults.php
index 34dd177..1b10b46 100644
--- a/addons/members-admin-menus/app/defaults.php
+++ b/addons/members-admin-menus/app/defaults.php
@@ -17,6 +17,16 @@
*/
const SETTINGS_SCHEMA_VERSION = 3;
+/**
+ * Maximum JSON payload size for save/import (bytes).
+ */
+const SETTINGS_JSON_MAX_BYTES = 2097152;
+
+/**
+ * Maximum nesting depth for json_decode on save/import.
+ */
+const SETTINGS_JSON_MAX_DEPTH = 128;
+
/**
* Default option array for members_admin_menus_settings.
*
diff --git a/addons/members-admin-menus/app/functions-admin.php b/addons/members-admin-menus/app/functions-admin.php
index eac0cf0..2ae4093 100644
--- a/addons/members-admin-menus/app/functions-admin.php
+++ b/addons/members-admin-menus/app/functions-admin.php
@@ -77,6 +77,133 @@ function load_admin_menus_page() {
// Any load-time actions can go here.
}
+/**
+ * Whether a single Font Awesome class token is allowed (FA5/FA6 + common utilities).
+ *
+ * @param string $t Token.
+ * @return bool
+ */
+function members_am_is_valid_fa_token( $t ) {
+ $t = is_string( $t ) ? trim( $t ) : '';
+ if ( '' === $t ) {
+ return false;
+ }
+ if ( preg_match( '/^(fa-solid|fa-regular|fa-brands|fa-light|fa-thin|fas|far|fab|fal|fad|fat|fa-fw|fa-spin|fa-pulse|fa-inverse|fa-lg|fa-xs|fa-sm|fa-xl|fa-2xs|fa-2xl|fa-(1x|2x|3x|4x|5x|6x|7x|8x|9x|10x))$/i', $t ) ) {
+ return true;
+ }
+ return (bool) preg_match( '/^fa-[a-z0-9-]{1,64}$/i', $t );
+}
+
+/**
+ * Sanitize a space-separated Font Awesome class list; returns '' if any token is invalid.
+ *
+ * @param string $icon Raw classes.
+ * @return string
+ */
+function members_am_sanitize_fa_icon_classes( $icon ) {
+ if ( ! is_string( $icon ) ) {
+ return '';
+ }
+ $parts = preg_split( '/\s+/', trim( $icon ), -1, PREG_SPLIT_NO_EMPTY );
+ if ( empty( $parts ) ) {
+ return '';
+ }
+ foreach ( $parts as $p ) {
+ if ( ! members_am_is_valid_fa_token( $p ) ) {
+ return '';
+ }
+ }
+ return implode( ' ', $parts );
+}
+
+/**
+ * Allow a single Dashicons class token.
+ *
+ * @param string $icon Raw class.
+ * @return string Safe class or ''.
+ */
+function members_am_sanitize_dashicon_class( $icon ) {
+ $icon = is_string( $icon ) ? trim( $icon ) : '';
+ if ( '' === $icon ) {
+ return '';
+ }
+ return preg_match( '/^dashicons-[a-z0-9_-]{1,100}$/i', $icon ) ? $icon : '';
+}
+
+/**
+ * Safe image URL or data URI for stored menu icons.
+ *
+ * @param string $raw Raw value.
+ * @return string
+ */
+function members_am_sanitize_icon_image_value( $raw ) {
+ $raw = is_string( $raw ) ? trim( $raw ) : '';
+ if ( '' === $raw ) {
+ return '';
+ }
+ if ( 0 === strpos( $raw, 'data:image/' ) ) {
+ if ( strlen( $raw ) > 200000 ) {
+ return '';
+ }
+ if ( ! preg_match( '/^data:image\/(png|jpeg|jpg|gif|webp|svg\+xml);base64,[A-Za-z0-9+\/=\s]+$/i', $raw ) ) {
+ return '';
+ }
+ return $raw;
+ }
+ $url = esc_url_raw( $raw );
+ if ( $url && preg_match( '#^https?://#i', $url ) ) {
+ return $url;
+ }
+ if ( 0 === strpos( $raw, '//' ) ) {
+ $url = esc_url_raw( 'https:' . $raw );
+ if ( $url && preg_match( '#^https://#i', $url ) ) {
+ return $url;
+ }
+ }
+ return '';
+}
+
+/**
+ * Normalize icon_type + icon for persistence (matches Admin Menus JS validation).
+ *
+ * @param string $icon_type Stored type (dashicon, fontawesome, image, svg, custom, …).
+ * @param string $icon Raw icon string.
+ * @return array{icon_type:string,icon:string}
+ */
+function members_am_sanitize_stored_icon( $icon_type, $icon ) {
+ $icon_type = sanitize_key( $icon_type );
+ $icon = is_string( $icon ) ? $icon : '';
+
+ if ( '' === trim( $icon ) ) {
+ return array(
+ 'icon_type' => 'dashicon',
+ 'icon' => '',
+ );
+ }
+
+ if ( preg_match( '/^(https?:)?\/\//i', $icon ) || 0 === strpos( $icon, 'data:image/' ) ) {
+ $img = members_am_sanitize_icon_image_value( $icon );
+ return array(
+ 'icon_type' => $img ? 'image' : 'dashicon',
+ 'icon' => $img,
+ );
+ }
+
+ if ( 'fontawesome' === $icon_type || false !== strpos( $icon, 'fa-' ) || preg_match( '/^(fa|fas|far|fab|fal)\s/i', $icon ) ) {
+ $fa = members_am_sanitize_fa_icon_classes( $icon );
+ return array(
+ 'icon_type' => $fa ? 'fontawesome' : 'dashicon',
+ 'icon' => $fa,
+ );
+ }
+
+ $d = members_am_sanitize_dashicon_class( $icon );
+ return array(
+ 'icon_type' => 'dashicon',
+ 'icon' => $d,
+ );
+}
+
/**
* Ensure associative-array keys are stdClass objects so json_encode
* produces {} instead of [] for empty collections.
@@ -386,13 +513,7 @@ function enqueue_admin_menus_assets() {
$settings = get_settings();
$tree = build_menu_tree_for_js();
- if ( empty( $settings['_defaults']['captured'] ) && ! empty( $tree ) ) {
- $settings['_defaults'] = array(
- 'captured' => true,
- 'tree' => $tree,
- );
- update_option( OPTION_KEY, $settings );
- }
+ // Do not persist on GET: live menuTree is localized below; baseline snapshot is saved on explicit Save only.
$roles = array();
foreach ( \members_get_roles() as $role_obj ) {
@@ -506,6 +627,7 @@ function enqueue_admin_menus_assets() {
'moreToolsHideAria' => __( 'Hide additional tools', 'members' ),
'colorsReadableNeedBg' => __( 'Choose a background color first.', 'members' ),
'noAccessTitlePattern' => __( 'This role does not have the stored capability “%s”. Users with multiple roles may still reach the screen if another role grants it. Tags use manage_post_tags when Category & Tag Caps is active (Members → Roles, Taxonomy).', 'members' ),
+ 'multiRoleMergeHelp' => __( 'Users with multiple roles: a menu item is hidden if any of their roles hides it. When two roles define different labels, icons, or colors for the same item, the first role in the user’s role list wins.', 'members' ),
),
)
);
@@ -580,6 +702,7 @@ function render_admin_menus_page() {
🔒 no access
+
@@ -780,6 +903,30 @@ function build_menu_tree_for_js() {
return $tree;
}
+/**
+ * Decode JSON settings payload with size and depth limits.
+ *
+ * @param mixed $raw Raw POST value (string or array).
+ * @param string $too_large_message Message when payload exceeds byte limit.
+ * @return array|\WP_Error Decoded array or error.
+ */
+function members_am_decode_settings_json( $raw, $too_large_message ) {
+ if ( is_array( $raw ) ) {
+ return $raw;
+ }
+ if ( ! is_string( $raw ) ) {
+ return new \WP_Error( 'members_am_invalid_json', __( 'Invalid data.', 'members' ) );
+ }
+ if ( strlen( $raw ) > SETTINGS_JSON_MAX_BYTES ) {
+ return new \WP_Error( 'members_am_payload_too_large', $too_large_message );
+ }
+ $data = json_decode( $raw, true, SETTINGS_JSON_MAX_DEPTH );
+ if ( JSON_ERROR_NONE !== json_last_error() || ! is_array( $data ) ) {
+ return new \WP_Error( 'members_am_json_error', __( 'Invalid JSON.', 'members' ) );
+ }
+ return $data;
+}
+
/**
* AJAX: save full settings JSON.
*
@@ -792,17 +939,17 @@ function ajax_save_settings() {
if ( ! current_user_can( get_members_settings_capability() ) ) {
wp_send_json_error( array( 'message' => __( 'Permission denied.', 'members' ) ), 403 );
}
- $raw = isset( $_POST['settings'] ) ? wp_unslash( $_POST['settings'] ) : '';
- if ( is_string( $raw ) ) {
- $data = json_decode( $raw, true );
- } else {
- $data = $raw;
- }
- if ( ! is_array( $data ) ) {
- wp_send_json_error( array( 'message' => __( 'Invalid data.', 'members' ) ), 400 );
+ $raw = isset( $_POST['settings'] ) ? wp_unslash( $_POST['settings'] ) : '';
+ $data = members_am_decode_settings_json(
+ $raw,
+ __( 'Settings payload is too large.', 'members' )
+ );
+ if ( is_wp_error( $data ) ) {
+ wp_send_json_error( array( 'message' => $data->get_error_message() ), 400 );
}
$sanitized = sanitize_settings_payload( $data );
update_option( OPTION_KEY, $sanitized );
+ members_am_invalidate_settings_cache();
wp_send_json_success( array( 'message' => __( 'Settings saved.', 'members' ) ) );
}
@@ -834,13 +981,11 @@ function sanitize_settings_payload( $data ) {
);
if ( isset( $out['_defaults'] ) && is_array( $out['_defaults'] ) ) {
- $d = $out['_defaults'];
+ $d = $out['_defaults'];
$out['_defaults'] = array(
'captured' => ! empty( $d['captured'] ),
);
- if ( isset( $d['tree'] ) && is_array( $d['tree'] ) ) {
- $out['_defaults']['tree'] = $d['tree'];
- }
+ // Never persist imported menu trees (size, shape, and trust boundary).
}
if ( isset( $out['roles'] ) && is_array( $out['roles'] ) ) {
@@ -927,10 +1072,14 @@ function sanitize_role_config( $cfg ) {
if ( ! $s || ! is_array( $ov ) ) {
continue;
}
+ $icon_raw = isset( $ov['icon'] ) ? $ov['icon'] : '';
+ $icon_type0 = isset( $ov['icon_type'] ) ? sanitize_key( $ov['icon_type'] ) : '';
+ $icon_san = members_am_sanitize_stored_icon( $icon_type0, is_string( $icon_raw ) ? $icon_raw : '' );
+
$entry = array(
'label' => isset( $ov['label'] ) ? sanitize_text_field( $ov['label'] ) : '',
- 'icon_type' => isset( $ov['icon_type'] ) ? sanitize_key( $ov['icon_type'] ) : '',
- 'icon' => isset( $ov['icon'] ) ? sanitize_text_field( $ov['icon'] ) : '',
+ 'icon_type' => $icon_san['icon_type'],
+ 'icon' => $icon_san['icon'],
'url' => isset( $ov['url'] ) ? esc_url_raw( $ov['url'] ) : '',
'color_bg' => isset( $ov['color_bg'] ) ? sanitize_hex_color( $ov['color_bg'] ) : '',
'color_text' => isset( $ov['color_text'] ) ? sanitize_hex_color( $ov['color_text'] ) : '',
@@ -958,12 +1107,20 @@ function sanitize_custom_item( $item ) {
if ( ! is_array( $item ) ) {
return array();
}
+ $icon_san = members_am_sanitize_stored_icon(
+ isset( $item['icon_type'] ) ? sanitize_key( $item['icon_type'] ) : 'dashicon',
+ isset( $item['icon'] ) && is_string( $item['icon'] ) ? $item['icon'] : ''
+ );
+ $icon_out = $icon_san['icon'];
+ if ( 'dashicon' === $icon_san['icon_type'] && '' === $icon_out ) {
+ $icon_out = 'dashicons-admin-generic';
+ }
return array(
'id' => isset( $item['id'] ) ? sanitize_key( $item['id'] ) : wp_unique_id( 'c' ),
'label' => isset( $item['label'] ) ? sanitize_text_field( $item['label'] ) : '',
'url' => isset( $item['url'] ) ? esc_url_raw( $item['url'] ) : '',
- 'icon_type' => isset( $item['icon_type'] ) ? sanitize_key( $item['icon_type'] ) : 'dashicon',
- 'icon' => isset( $item['icon'] ) ? sanitize_text_field( $item['icon'] ) : 'dashicons-admin-generic',
+ 'icon_type' => $icon_san['icon_type'],
+ 'icon' => $icon_out,
'parent' => isset( $item['parent'] ) ? sanitize_text_field( $item['parent'] ) : '',
'position' => isset( $item['position'] ) ? absint( $item['position'] ) : 99,
'cap' => isset( $item['cap'] ) ? sanitize_key( $item['cap'] ) : 'read',
@@ -994,6 +1151,7 @@ function ajax_reset_settings() {
$settings['capabilities'] = array();
}
update_option( OPTION_KEY, $settings );
+ members_am_invalidate_settings_cache();
wp_send_json_success( array( 'message' => __( 'Reset complete.', 'members' ) ) );
}
@@ -1031,12 +1189,16 @@ function ajax_import_settings() {
if ( ! current_user_can( get_members_settings_capability() ) ) {
wp_send_json_error( array( 'message' => __( 'Permission denied.', 'members' ) ), 403 );
}
- $raw = isset( $_POST['settings'] ) ? wp_unslash( $_POST['settings'] ) : '';
- $data = json_decode( $raw, true );
- if ( ! is_array( $data ) ) {
- wp_send_json_error( array( 'message' => __( 'Invalid JSON.', 'members' ) ), 400 );
+ $raw = isset( $_POST['settings'] ) ? wp_unslash( $_POST['settings'] ) : '';
+ $data = members_am_decode_settings_json(
+ $raw,
+ __( 'Import payload is too large.', 'members' )
+ );
+ if ( is_wp_error( $data ) ) {
+ wp_send_json_error( array( 'message' => $data->get_error_message() ), 400 );
}
update_option( OPTION_KEY, sanitize_settings_payload( $data ) );
+ members_am_invalidate_settings_cache();
wp_send_json_success( array( 'message' => __( 'Settings imported.', 'members' ) ) );
}
diff --git a/addons/members-admin-menus/app/functions.php b/addons/members-admin-menus/app/functions.php
index 0d8810d..55d83d5 100644
--- a/addons/members-admin-menus/app/functions.php
+++ b/addons/members-admin-menus/app/functions.php
@@ -1373,16 +1373,24 @@ function get_default_settings() {
* @return array
*/
function get_settings() {
- static $cache = null;
- if ( null !== $cache ) {
- return $cache;
+ if ( isset( $GLOBALS['members_am_settings_runtime_cache'] ) && is_array( $GLOBALS['members_am_settings_runtime_cache'] ) ) {
+ return $GLOBALS['members_am_settings_runtime_cache'];
}
$settings = get_option( OPTION_KEY, array() );
if ( ! is_array( $settings ) ) {
$settings = array();
}
- $cache = wp_parse_args( $settings, get_default_settings() );
- return $cache;
+ $GLOBALS['members_am_settings_runtime_cache'] = wp_parse_args( $settings, get_default_settings() );
+ return $GLOBALS['members_am_settings_runtime_cache'];
+}
+
+/**
+ * Clear the in-request settings cache after option updates.
+ *
+ * @return void
+ */
+function members_am_invalidate_settings_cache() {
+ unset( $GLOBALS['members_am_settings_runtime_cache'] );
}
/**
@@ -1434,8 +1442,8 @@ function get_resolved_config_for_user( $user_id ) {
return array();
}
- $roles = (array) $user->roles;
- sort( $roles );
+ // Preserve role order from the user object (deterministic merge; first role wins override conflicts).
+ $roles = array_values( array_unique( array_filter( (array) $user->roles ) ) );
$base = get_resolved_config_for_user_from_roles_only( $settings, $roles );
@@ -1478,21 +1486,22 @@ function get_resolved_config_for_user( $user_id ) {
* @return array
*/
function get_resolved_config_for_user_from_roles_only( $settings, $roles ) {
- sort( $roles );
+ $roles = is_array( $roles ) ? array_values( array_filter( $roles ) ) : array();
+
+ // Union: if any role hides a menu slug, the combined user view treats it as hidden (matches deny-by-any-role).
$merged_hidden = array();
- $first = true;
foreach ( $roles as $role ) {
$rh = isset( $settings['roles'][ $role ]['hidden'] ) ? (array) $settings['roles'][ $role ]['hidden'] : array();
- if ( $first ) {
- $merged_hidden = $rh;
- $first = false;
- } else {
- $merged_hidden = array_values( array_intersect( $merged_hidden, $rh ) );
+ foreach ( $rh as $h ) {
+ $h = sanitize_text_field( $h );
+ if ( $h && ! in_array( $h, $merged_hidden, true ) ) {
+ $merged_hidden[] = $h;
+ }
}
}
- $order = array();
- $submenu_order = array();
- $overrides = array();
+
+ $order = array();
+ $submenu_order = array();
foreach ( $roles as $role ) {
if ( empty( $settings['roles'][ $role ] ) ) {
continue;
@@ -1505,9 +1514,12 @@ function get_resolved_config_for_user_from_roles_only( $settings, $roles ) {
$submenu_order = (array) $r['submenu_order'];
}
}
- foreach ( $roles as $role ) {
+
+ // First role in $roles wins per slug: merge from last role toward first so earlier roles overwrite later ones on conflicts.
+ $overrides = array();
+ foreach ( array_reverse( $roles ) as $role ) {
if ( ! empty( $settings['roles'][ $role ]['overrides'] ) ) {
- $overrides = array_merge( $overrides, (array) $settings['roles'][ $role ]['overrides'] );
+ $overrides = array_merge( (array) $settings['roles'][ $role ]['overrides'], $overrides );
}
}
return array(
diff --git a/addons/members-category-and-tag-caps/src/functions-filters.php b/addons/members-category-and-tag-caps/src/functions-filters.php
index b7c7c8f..b9ccf91 100644
--- a/addons/members-category-and-tag-caps/src/functions-filters.php
+++ b/addons/members-category-and-tag-caps/src/functions-filters.php
@@ -108,10 +108,26 @@
* new primitives) still had `manage_categories` only — Admin Menus then showed "no access"
* for Tags while `current_user_can()` could still pass if another role granted the tag caps.
*
+ * Sites that need least-privilege (category management without automatic tag caps) can disable
+ * the sync with {@see 'members_ctc_sync_post_tag_caps_for_manage_categories_roles'}.
+ *
* @since 1.0.1
* @return void
*/
function sync_post_tag_caps_for_roles_with_manage_categories() {
+ /**
+ * Whether to grant granular post_tag capabilities to every role that has `manage_categories`.
+ *
+ * Default true keeps compatibility with earlier add-on releases. Return false to skip the
+ * automatic grant (use custom role/cap management instead).
+ *
+ * @since 1.0.2
+ * @param bool $sync Whether to add tag caps to qualifying roles.
+ */
+ if ( ! apply_filters( 'members_ctc_sync_post_tag_caps_for_manage_categories_roles', true ) ) {
+ return;
+ }
+
$tag_caps = array( 'manage_post_tags', 'assign_post_tags', 'edit_post_tags', 'delete_post_tags' );
foreach ( wp_roles()->roles as $slug => $_role_info ) {
$role = get_role( $slug );
@@ -134,7 +150,9 @@ function maybe_sync_post_tag_caps_roles_migration() {
if ( '1' === get_option( 'members_ctc_sync_post_tag_caps_roles_v1', '' ) ) {
return;
}
- sync_post_tag_caps_for_roles_with_manage_categories();
+ if ( apply_filters( 'members_ctc_sync_post_tag_caps_for_manage_categories_roles', true ) ) {
+ sync_post_tag_caps_for_roles_with_manage_categories();
+ }
update_option( 'members_ctc_sync_post_tag_caps_roles_v1', '1', true );
}
diff --git a/js/admin-menus.js b/js/admin-menus.js
index 19d388b..e0f9960 100644
--- a/js/admin-menus.js
+++ b/js/admin-menus.js
@@ -267,22 +267,22 @@
}
/**
- * Merged role override for one menu id (matches PHP array_merge across sorted roles: last role wins the row).
+ * Merged role override for one menu id (matches PHP: first role in the user's role list wins per field).
*
* @param {string[]} roles
* @param {string} itemId
* @return {Object}
*/
function getRoleMergedOverrideForItem(roles, itemId) {
- var sorted = (roles || []).slice().sort();
- var out = null;
- for (var i = 0; i < sorted.length; i++) {
- var o = getRoleConfig(sorted[i]).overrides[itemId];
+ var list = (roles || []).slice().reverse();
+ var merged = {};
+ for (var i = 0; i < list.length; i++) {
+ var o = getRoleConfig(list[i]).overrides[itemId];
if (o && typeof o === 'object') {
- out = o;
+ merged = $.extend(true, {}, o, merged);
}
}
- return out ? $.extend(true, {}, out) : {};
+ return $.extend(true, {}, merged);
}
/**
@@ -345,9 +345,33 @@
function isUserHidden(uid, itemId) {
var ucfg = getUserConfig(uid);
- if (ucfg.hidden.indexOf(itemId) !== -1) return true;
+ if (ucfg.hidden.indexOf(itemId) !== -1) {
+ return true;
+ }
+ // Preview column: match PHP — hidden if any preview role hides the item (union).
+ if (uid === state.previewUserId && state.previewUserRoles && state.previewUserRoles.length) {
+ var pr = state.previewUserRoles;
+ var ri;
+ for (ri = 0; ri < pr.length; ri++) {
+ if (isHidden(pr[ri], itemId)) {
+ return true;
+ }
+ }
+ }
var parentId = getEffectiveParentIdForUser(itemId, uid);
- if (parentId && ucfg.hidden.indexOf(parentId) !== -1) return true;
+ if (!parentId) {
+ return false;
+ }
+ if (ucfg.hidden.indexOf(parentId) !== -1) {
+ return true;
+ }
+ if (uid === state.previewUserId && state.previewUserRoles && state.previewUserRoles.length) {
+ for (var rj = 0; rj < state.previewUserRoles.length; rj++) {
+ if (isHidden(state.previewUserRoles[rj], parentId)) {
+ return true;
+ }
+ }
+ }
return false;
}
@@ -942,6 +966,143 @@
return declaredType || 'dashicon';
}
+ var DASHICON_CLASS_RE = /^dashicons-[a-z0-9_-]{1,100}$/i;
+
+ /**
+ * Allow only a single Dashicons class token (prevents attribute breakout / XSS).
+ *
+ * @param {string} icon Raw icon string.
+ * @return {string} Safe class or ''.
+ */
+ function sanitizeDashiconClass(icon) {
+ if (!icon || typeof icon !== 'string') {
+ return '';
+ }
+ var s = icon.trim();
+ return DASHICON_CLASS_RE.test(s) ? s : '';
+ }
+
+ /**
+ * Font Awesome token allowlist (FA5/FA6 style + common utility classes).
+ *
+ * @param {string} t Single class token.
+ * @return {boolean}
+ */
+ function isValidFaToken(t) {
+ if (!t || typeof t !== 'string') {
+ return false;
+ }
+ var s = t.trim();
+ if (!s) {
+ return false;
+ }
+ if (/^(fa-solid|fa-regular|fa-brands|fa-light|fa-thin|fas|far|fab|fal|fad|fat|fa-fw|fa-spin|fa-pulse|fa-inverse|fa-lg|fa-xs|fa-sm|fa-xl|fa-2xs|fa-2xl|fa-(1x|2x|3x|4x|5x|6x|7x|8x|9x|10x))$/i.test(s)) {
+ return true;
+ }
+ return /^fa-[a-z0-9-]{1,64}$/i.test(s);
+ }
+
+ /**
+ * Return a space-separated FA class string or '' if any token is invalid.
+ *
+ * @param {string} icon Raw classes.
+ * @return {string}
+ */
+ function sanitizeFaIconClasses(icon) {
+ if (!icon || typeof icon !== 'string') {
+ return '';
+ }
+ var parts = icon.trim().split(/\s+/).filter(Boolean);
+ if (!parts.length) {
+ return '';
+ }
+ var i;
+ for (i = 0; i < parts.length; i++) {
+ if (!isValidFaToken(parts[i])) {
+ return '';
+ }
+ }
+ return parts.join(' ');
+ }
+
+ /**
+ * Safe URL/data-URI for in the Admin Menus UI.
+ *
+ * @param {string} src Raw src.
+ * @return {string} Safe src or ''.
+ */
+ function sanitizeIconImgSrc(src) {
+ if (!src || typeof src !== 'string') {
+ return '';
+ }
+ var s = src.trim();
+ if (!s) {
+ return '';
+ }
+ if (s.indexOf('data:image/') === 0) {
+ if (s.length > 200000) {
+ return '';
+ }
+ if (!/^data:image\/(png|jpeg|jpg|gif|webp|svg\+xml);base64,/i.test(s)) {
+ return '';
+ }
+ return s;
+ }
+ if (/^https?:\/\/[^\s"'<>]+$/i.test(s)) {
+ return s;
+ }
+ if (s.indexOf('//') === 0 && /^\/\/[a-z0-9.-]+\/?/i.test(s)) {
+ return 'https:' + s;
+ }
+ return '';
+ }
+
+ /**
+ * Append a menu-row icon using DOM APIs only (no HTML string concatenation).
+ *
+ * @param {jQuery} $main .members-am-item-main
+ * @param {string} icon Raw icon value.
+ * @param {string} declaredType Stored icon_type.
+ */
+ function appendSafeMenuRowIcon($main, icon, declaredType) {
+ var itype = effectiveIconType(icon, declaredType);
+ if (itype === 'fontawesome' && icon) {
+ var fa = sanitizeFaIconClasses(icon);
+ if (fa) {
+ var $wrap = $(' ', { class: 'members-am-fa-icon' });
+ var $i = $(' ', { 'aria-hidden': 'true' });
+ fa.split(/\s+/).forEach(function (c) {
+ $i.addClass(c);
+ });
+ $wrap.append($i);
+ $main.append($wrap);
+ } else {
+ $main.append($(' ', { class: 'dashicons dashicons-admin-generic' }));
+ }
+ return;
+ }
+ if ((itype === 'svg' || itype === 'image' || itype === 'custom') && icon) {
+ var imgSrc = sanitizeIconImgSrc(icon);
+ if (imgSrc) {
+ $main.append(
+ $(' ', { src: imgSrc, alt: '' }).css({
+ width: '20px',
+ height: '20px',
+ display: 'inline-block',
+ verticalAlign: 'middle',
+ objectFit: 'contain',
+ filter: 'none',
+ })
+ );
+ } else {
+ $main.append($(' ', { class: 'dashicons dashicons-admin-generic' }));
+ }
+ return;
+ }
+ var dcls = sanitizeDashiconClass(icon);
+ $main.append($(' ', { class: 'dashicons ' + (dcls || 'dashicons-admin-generic') }));
+ }
+
function toggleHidden(role, itemId) {
var h = getRoleConfig(role).hidden;
var i = h.indexOf(itemId);
@@ -1812,16 +1973,7 @@
$row.append($cbWrap);
var $main = $('
');
if (depth === 0) {
- var icon = ov.icon || node.icon;
- var itype = effectiveIconType(icon, ov.icon_type || node.icon_type);
- if (itype === 'fontawesome' && icon) {
- $main.append($(' '));
- } else if ((itype === 'svg' || itype === 'image' || itype === 'custom') && icon) {
- $main.append($(' ').attr('src', icon).css({ width: '20px', height: '20px', display: 'inline-block', verticalAlign: 'middle', objectFit: 'contain', filter: 'none' }));
- } else {
- var cls = (icon && icon.indexOf('dashicons-') === 0) ? icon : 'dashicons-admin-generic';
- $main.append($(' '));
- }
+ appendSafeMenuRowIcon($main, ov.icon || node.icon, ov.icon_type || node.icon_type);
}
if (node.custom) {
$main.append($('custom '));
@@ -1844,7 +1996,7 @@
$main.append(
$(' ')
.attr('title', nocapTitle)
- .html('🔒 no access')
+ .text('\uD83D\uDD12 no access')
);
}
$row.append($main);
@@ -1936,17 +2088,7 @@
var $main = $('
');
if (depth === 0) {
- var icon = ov.icon || node.icon;
- var itype = effectiveIconType(icon, ov.icon_type || node.icon_type);
- if (itype === 'fontawesome' && icon) {
- $main.append($(' '));
- } else if ((itype === 'svg' || itype === 'image' || itype === 'custom') && icon) {
- $main.append($(' ').attr('src', icon).css({ width: '20px', height: '20px', display: 'inline-block', verticalAlign: 'middle', objectFit: 'contain', filter: 'none' }));
- } else if (icon && icon.indexOf('dashicons-') === 0) {
- $main.append($(' '));
- } else {
- $main.append($(' '));
- }
+ appendSafeMenuRowIcon($main, ov.icon || node.icon, ov.icon_type || node.icon_type);
}
if (node.custom) {
@@ -1961,7 +2103,15 @@
$main.append($(' ').text(ov.badge).css({ backgroundColor: badgeBg, color: '#fff', fontSize: '9px', padding: '1px 5px', borderRadius: '2px', marginLeft: '4px', whiteSpace: 'nowrap' }));
}
if (noCap) {
- $main.append($('🔒 no access '));
+ var i18nUN = membersAdminMenus.i18n || {};
+ var userNocapTitle =
+ (i18nUN.noAccessTitlePattern && i18nUN.noAccessTitlePattern.replace('%s', node.cap || 'read')) ||
+ 'This user does not have the \'' + (node.cap || 'read') + '\' capability.';
+ $main.append(
+ $(' ')
+ .attr('title', userNocapTitle)
+ .text('\uD83D\uDD12 no access')
+ );
}
$row.append($main);
@@ -2118,7 +2268,7 @@
var start = state.carouselPage * state.columnsPerPage;
var slice = state.activeRoleSlugs.slice(start, start + state.columnsPerPage);
slice.forEach(function (role) {
- var $c = $('
');
+ var $c = $('
', { class: 'members-am-column' }).attr('data-role', role);
renderSidebar(role, $c);
$cols.append($c);
// Restore scroll position.
@@ -2128,7 +2278,7 @@
});
if (state.previewUserId) {
var uid = state.previewUserId;
- var $uc = $('
');
+ var $uc = $('
', { class: 'members-am-column members-am-user-column' }).attr('data-user', String(uid));
var $head = $('');
$head.append($(' ').text(state.previewUserLabel || ('User #' + uid)));
$head.append(
@@ -2227,9 +2377,14 @@
var iconPreviewUrl = ov.icon || (node && node.icon) || '';
var iconPreviewType = effectiveIconType(iconPreviewUrl, ov.icon_type || (node && node.icon_type) || '');
if ((iconPreviewType === 'image' || iconPreviewType === 'custom' || iconPreviewType === 'svg') && iconPreviewUrl) {
- $('#members-am-icon-preview').show().attr('src', iconPreviewUrl);
+ var safePreviewSrc = sanitizeIconImgSrc(iconPreviewUrl);
+ if (safePreviewSrc) {
+ $('#members-am-icon-preview').show().attr('src', safePreviewSrc);
+ } else {
+ $('#members-am-icon-preview').hide().removeAttr('src');
+ }
} else {
- $('#members-am-icon-preview').hide();
+ $('#members-am-icon-preview').hide().removeAttr('src');
}
$('#members-am-color-bg').val(ov.color_bg || '');
$('#members-am-color-text').val(ov.color_text || '');
@@ -2485,9 +2640,13 @@
}
var $b = $(' ');
if (tab === 'dashicons') {
- $b.append($(' '));
+ $b.append($(' ', { class: 'dashicons ' + ic }));
} else {
- $b.append($(' '));
+ var $fi = $(' ', { 'aria-hidden': 'true' });
+ ic.split(/\s+/).forEach(function (tok) {
+ $fi.addClass(tok);
+ });
+ $b.append($fi);
}
$b.on('click', function () {
$('#members-am-icon-value').val(ic);
diff --git a/js/admin-menus.min.js b/js/admin-menus.min.js
index 3c4102a..466c3eb 100644
--- a/js/admin-menus.min.js
+++ b/js/admin-menus.min.js
@@ -1 +1 @@
-!function(I){"use strict";var P={settings:I.extend(!0,{},membersAdminMenus.settings),tree:[],activeRoleSlugs:[],carouselPage:0,columnsPerPage:3,selectedId:null,iconTab:"dashicons",previewUserId:null,previewUserRoles:[],userSuggestions:[],mediaFrame:null,allowUnload:!1,syncScroll:function(){try{return"0"!==localStorage.getItem("members_am_sync_scroll")}catch(e){return!0}}(),columnFilters:{},columnBulkSelection:{},collapsedParents:{}},t="",p=!1;function s(){return function r(n){if(null===n)return"null";var e=typeof n;return"string"==e||"number"==e||"boolean"==e?JSON.stringify(n):"undefined"==e?"null":Array.isArray(n)?"["+n.map(function(e){return r(e)}).join(",")+"]":"object"!=e?JSON.stringify(n):"{"+Object.keys(n).sort().map(function(e){return JSON.stringify(e)+":"+r(n[e])}).join(",")+"}"}(P.settings)}function a(){if(!P.allowUnload&&s()!==t)return membersAdminMenus.i18n&&membersAdminMenus.i18n.unsavedChanges||""}var i="members_am_notice";function f(e,r){if(r){var n=I("#members-am-notices");n.length||(I(".members-admin-menus-wrap h1").first().after('
'),n=I("#members-am-notices"));var t=I("
",{class:"notice is-dismissible"}).addClass("notice-"+(e||"info"));t.append(I("
").text(r)),n.prepend(t),I(document).trigger("wp-notice-added")}}function o(e,r){try{sessionStorage.setItem(i,JSON.stringify({type:e||"success",message:r}))}catch(e){}}var e=["dashicons-menu","dashicons-admin-dashboard","dashicons-admin-post","dashicons-admin-page","dashicons-admin-media","dashicons-admin-comments","dashicons-admin-appearance","dashicons-admin-plugins","dashicons-admin-users","dashicons-admin-tools","dashicons-admin-settings","dashicons-admin-generic","dashicons-edit","dashicons-plus","dashicons-chart-bar","dashicons-cart","dashicons-products","dashicons-email","dashicons-groups","dashicons-heart","dashicons-star-filled","dashicons-smiley","dashicons-info","dashicons-lock","dashicons-unlock","dashicons-visibility","dashicons-hidden","dashicons-arrow-up","dashicons-arrow-down","dashicons-admin-network","dashicons-performance"],r=["fa-solid fa-house","fa-solid fa-user","fa-solid fa-gear","fa-solid fa-file","fa-solid fa-image","fa-solid fa-cart-shopping","fa-solid fa-chart-line","fa-solid fa-envelope","fa-solid fa-book","fa-solid fa-link","fa-solid fa-bell","fa-solid fa-star","fa-solid fa-heart","fa-solid fa-lock","fa-solid fa-unlock","fa-solid fa-pen","fa-solid fa-trash","fa-solid fa-plus","fa-solid fa-minus"],l="members_am_view_state";function m(){try{localStorage.setItem(l,JSON.stringify({activeRoleSlugs:P.activeRoleSlugs,carouselPage:P.carouselPage}))}catch(e){}}function c(e){return JSON.parse(JSON.stringify(e))}var d=null;function b(){d=c(P.settings),u()}function u(){var e=I("#members-am-undo");if(e.length){var r=!!d;e.prop("disabled",!r).attr("aria-disabled",r?"false":"true")}}function h(){return membersAdminMenus.roles||[]}function v(){P.settings._meta&&!Array.isArray(P.settings._meta)||(P.settings._meta={version:3,admin_editable:!1}),P.settings.roles&&!Array.isArray(P.settings.roles)||(P.settings.roles={}),P.settings.users&&!Array.isArray(P.settings.users)||(P.settings.users={}),Array.isArray(P.settings.custom_items)||(P.settings.custom_items=[]),P.settings.capabilities&&!Array.isArray(P.settings.capabilities)||(P.settings.capabilities={})}function E(e){v(),P.settings.roles[e]||(P.settings.roles[e]={hidden:[],order:[],submenu_order:{},overrides:{}});var r=P.settings.roles[e];return r.hidden&&Array.isArray(r.hidden)||(r.hidden=[]),r.order&&Array.isArray(r.order)||(r.order=[]),r.submenu_order&&!Array.isArray(r.submenu_order)||(r.submenu_order={}),r.overrides&&!Array.isArray(r.overrides)||(r.overrides={}),r}function S(e){v(),P.settings.users[e]||(P.settings.users[e]={});var r=P.settings.users[e];return r.hidden&&Array.isArray(r.hidden)||(r.hidden=[]),r.order&&Array.isArray(r.order)||(r.order=[]),r.overrides&&!Array.isArray(r.overrides)||(r.overrides={}),r.submenu_order&&!Array.isArray(r.submenu_order)||(r.submenu_order={}),r}function M(e,r){var n=function(e,r){for(var n=(e||[]).slice().sort(),t=null,a=0;a=a.length||(b(),a.splice(d,1),a.splice(u,0,o?c:r))}}function _(e){var r=e.id||"c";return"members-am-"+String(r).replace(/[^a-z0-9_-]/gi,"-").toLowerCase()}function k(e){return!!e&&0===(-1!==e.indexOf("::")?e.split("::").pop():e).indexOf("members-am-")}function w(e,r){if(!e||!r)return null;for(var n=0;na&&(P.carouselPage=a))}}P.activeRoleSlugs=r.filter(function(e){return"administrator"!==e||n}),P.activeRoleSlugs.length||(P.activeRoleSlugs=["subscriber"])}function ue(){var t=I("#members-am-role-chips").empty();h().forEach(function(e){if("administrator"!==e.slug||P.settings._meta.admin_editable){var r=-1!==P.activeRoleSlugs.indexOf(e.slug),n=I(' ').text(e.label).attr("data-role",e.slug).toggleClass("is-active",r);t.append(n)}})}function pe(n,t,e,a,s){(function(e,r,n,t,a){a=a||0;var s=r.id,i=z(e,s),o=!K(e,r.cap),l=E(e).overrides[s]||{},m=l.label||r.title||s,c=I('
').attr("data-id",s).attr("data-menu-parent",n||"").toggleClass("is-hidden",i).toggleClass("is-no-cap",o).toggleClass("is-selected",P.selectedId===s).toggleClass("is-sub",0 ');if(p){Z(d);var b=!!P.collapsedParents[d][s],h=u.expandSubmenus||"Expand submenu items",v=u.collapseSubmenus||"Collapse submenu items";I(' ').attr("aria-expanded",!b).attr("aria-label",(b?h:v)+": "+m).append(I(' ').addClass(b?"dashicons-arrow-right-alt2":"dashicons-arrow-down-alt2")).on("click",function(e){e.stopPropagation(),Z(d),P.collapsedParents[d][s]=!P.collapsedParents[d][s],ye()}).appendTo(f),c.toggleClass("is-collapse-collapsed",b)}else f.append(I(' '));c.append(f);var g=u.bulkCheckboxAria||"Include in bulk actions",x=I(' '),y=I(' ').prop("checked",!!P.columnBulkSelection[d].ids[s]).attr("aria-label",g+": "+m).on("click",function(e){e.stopPropagation()}).on("change",function(e){e.stopPropagation(),Y(d,s,I(this).prop("checked")),ye()});x.append(y),c.append(x);var _=I('
');if(0===a){var k=l.icon||r.icon,w=G(k,l.icon_type||r.icon_type);if("fontawesome"===w&&k)_.append(I(' '));else if("svg"!==w&&"image"!==w&&"custom"!==w||!k){var A=k&&0===k.indexOf("dashicons-")?k:"dashicons-admin-generic";_.append(I(' '))}else _.append(I(" ").attr("src",k).css({width:"20px",height:"20px",display:"inline-block",verticalAlign:"middle",objectFit:"contain",filter:"none"}))}r.custom&&_.append(I('custom '));l.label&&_.append(I('edit '));if(_.append(I(' ').text(m)),l.badge){var O=l.badge_bg||"#d63638";_.append(I(' ').text(l.badge).css({backgroundColor:O,color:"#fff",fontSize:"9px",padding:"1px 5px",borderRadius:"2px",marginLeft:"4px",whiteSpace:"nowrap"}))}if(o){var S=membersAdminMenus.i18n||{},M=S.noAccessTitlePattern&&S.noAccessTitlePattern.replace("%s",r.cap||"read")||"This role does not have the '"+(r.cap||"read")+"' capability on this role object. Users with multiple roles may still access the screen. Manage capabilities in Members → Roles.";_.append(I(' ').attr("title",M).html("🔒 no access"))}c.append(_),l.color_bg&&c.css("background-color",l.color_bg);l.color_text&&c.find(".members-am-item-label").css("color",l.color_text);l.color_icon&&(c.find(".dashicons").css("color",l.color_icon),c.find(".members-am-fa-icon i").css("color",l.color_icon),c.find("img").css("filter","none"));var C=I('
');C.append(I(' ').text("◉"),I(' ').text("↑"),I(' ').text("↓")),c.append(C),t.append(c)})(n,t,e,a,s=s||0),t.children&&t.children.length&&D(n,t.id).forEach(function(e){var r=function(e,r,n){if(-1!==n.indexOf("::")){var t=O(n);return t&&R(n,e)===r?t:null}var a=O(B(r,n));return a||(-1===n.indexOf("::")&&(E(e).overrides[n]||{}).parent===r?O(n):null)}(n,t.id,e);r&&R(r.id,n)===t.id&&pe(n,r,t.id,a,s+1)})}function fe(n,t,e,a,s,i){i=i||0,s.append(function(r,e,n,t){t=t||0;var a=M(n,r.id),s=a.label||r.title,i=function(e,r){var n=S(e);if(-1!==n.hidden.indexOf(r))return!0;var t=U(r,e);return!(!t||-1===n.hidden.indexOf(t))}(n,r.id),o=!function(e){if(!e||"read"===e)return 1;for(var r=P.previewUserRoles||[],n=0;n").addClass(m).attr("data-id",r.id).attr("data-menu-parent",e||""),d="u:"+n;$(d);var u=membersAdminMenus.i18n||{},p=r.children&&r.children.length,f=I(' ');if(p){Z(d);var b=!!P.collapsedParents[d][r.id],h=u.expandSubmenus||"Expand submenu items",v=u.collapseSubmenus||"Collapse submenu items";I(' ').attr("aria-expanded",!b).attr("aria-label",(b?h:v)+": "+s).append(I(' ').addClass(b?"dashicons-arrow-right-alt2":"dashicons-arrow-down-alt2")).on("click",function(e){e.stopPropagation(),Z(d),P.collapsedParents[d][r.id]=!P.collapsedParents[d][r.id],ye()}).appendTo(f),c.toggleClass("is-collapse-collapsed",b)}else f.append(I(' '));c.append(f);var g=u.bulkCheckboxAria||"Include in bulk actions",x=I(' '),y=I(' ').prop("checked",!!P.columnBulkSelection[d].ids[r.id]).attr("aria-label",g+": "+s).on("click",function(e){e.stopPropagation()}).on("change",function(e){e.stopPropagation(),Y(d,r.id,I(this).prop("checked")),ye()});x.append(y),c.append(x);var _=I('
');if(0===t){var k=a.icon||r.icon,w=G(k,a.icon_type||r.icon_type);"fontawesome"===w&&k?_.append(I(' ')):"svg"!==w&&"image"!==w&&"custom"!==w||!k?k&&0===k.indexOf("dashicons-")?_.append(I(' ')):_.append(I(' ')):_.append(I(" ").attr("src",k).css({width:"20px",height:"20px",display:"inline-block",verticalAlign:"middle",objectFit:"contain",filter:"none"}))}r.custom&&_.append(I('custom '));a.label&&_.append(I('edit '));if(_.append(I(' ').text(s)),a.badge){var A=a.badge_bg||"#d63638";_.append(I(' ').text(a.badge).css({backgroundColor:A,color:"#fff",fontSize:"9px",padding:"1px 5px",borderRadius:"2px",marginLeft:"4px",whiteSpace:"nowrap"}))}o&&_.append(I('🔒 no access "));c.append(_),a.color_bg&&c.css("background-color",a.color_bg);a.color_text&&c.find(".members-am-item-label").css("color",a.color_text);a.color_icon&&(c.find(".dashicons").css("color",a.color_icon),c.find(".members-am-fa-icon i").css("color",a.color_icon));var O=I('
');return O.append(I(' ').text(i?"◯":"◉"),I(' ').text("↑"),I(' ').text("↓")),c.append(O),c.on("click",function(e){I(e.target).closest("button, .members-am-item-cb, .members-am-collapse-toggle").length||(P.selectedId=r.id,je())}),c}(t,e,n,i)),t.children&&t.children.length&&function(e,r){var n=x(e,r),t=S(e),a=t.submenu_order&&t.submenu_order[r];if(!a||!a.length)return n.slice();var s=a.filter(function(e){return-1!==n.indexOf(e)});return n.forEach(function(e){-1===s.indexOf(e)&&s.push(e)}),s}(n,t.id).forEach(function(e){var r=function(e,r,n){if(-1!==n.indexOf("::")){var t=O(n);return t&&U(n,e)===r?t:null}var a=O(B(r,n));if(a)return a;if(-1===n.indexOf("::")){var s=S(e);if((s.overrides&&s.overrides[n]||{}).parent===r)return O(n)}return null}(n,t.id,e);r&&U(r.id,n)===t.id&&fe(n,r,t.id,a,s,i+1)})}function be(e,r){var a=(r||"").trim().toLowerCase(),n=e.children(".members-am-item");if(!a)return n.removeClass("members-am-filter-hidden"),void e.children(".members-am-sep").removeClass("members-am-filter-hidden");var i={};n.each(function(){var e=I(this),r=e.attr("data-id"),n=(e.find(".members-am-item-label").first().text()||"").toLowerCase(),t=(r||"").toLowerCase();i[r]=-1!==n.indexOf(a)||-1!==t.indexOf(a)});var o={};n.each(function(){var e=I(this).attr("data-id"),r=I(this).attr("data-menu-parent")||"";o[r]||(o[r]=[]),o[r].push(e)});var l={};function m(e){var r,n=i[e],t=o[e]||[],a=!1;for(r=0;r '),o=I(' ').attr("placeholder",a).attr("aria-label",s).val(t);i.append(o),e.find(".members-am-sidebar-head").first().after(i),o.on("input",function(){P.columnFilters[n]=I(this).val(),be(r,I(this).val())}),be(r,t)}function ve(e,r){var s=0===String(r).indexOf("u:"),i=s?parseInt(r.replace(/^u:/,""),10):0,o=s?null:r,l=r,m=membersAdminMenus.i18n||{},n=I('
').attr("data-column-key",l),t=I('
');t.append(I(' ').text(m.bulkSelectVisible||"Select visible"),I(' ').text(m.bulkClearSelection||"Clear selection"));var a=I('
');a.append(I(' ').text(m.collapseAllMenus||"Collapse all"),I(' ').text(m.expandAllMenus||"Expand all"));var c=I(' ').attr("aria-label",m.bulkVisibilityLabel||"Menu visibility for this column");c.append(I(' ').text(m.bulkActionsPlaceholder||"Choose visibility…"));var d=I(" ").attr("label",m.bulkGroupWholeColumn||"Whole column");d.append(I(' ').text(m.bulkShowAllItems||"Show every menu item"),I(' ').text(m.bulkHideAllItems||"Hide every menu item"));var u=I(" ").attr("label",m.bulkGroupCheckedRows||"Checked rows");u.append(I(' ').text(m.bulkKeepOnlyCheckedVisible||"Keep only checked visible"),I(' ').text(m.bulkHideCheckedItems||"Hide checked items"),I(' ').text(m.bulkShowCheckedItems||"Show checked items")),c.append(d,u),n.append(t,a,c);var p=e.find(".members-am-col-filter").first();p.length?p.after(n):e.find(".members-am-sidebar-head").first().after(n),c.on("change",function(){var e=I(this).val();if(I(this).val(""),e)if(!("keep-only-checked"===e||"hide-checked"===e||"show-checked"===e)||q(l).length){if("keep-only-checked"===e){if(!window.confirm(m.bulkConfirmKeepOnlyChecked||"Hide all items except checked items and their parent menus?"))return}else if("hide-all"===e){if(!window.confirm(m.bulkConfirmHideAll||"Hide every menu item in this column?"))return}else if("hide-checked"===e&&!window.confirm(m.bulkConfirmHideChecked||"Hide the checked items (and their submenus where applicable)?"))return;var r,n,t,a;b(),s?"show-all"===e?S(i).hidden=[]:"hide-all"===e?(t=i,a=Q(),S(t).hidden=a.slice()):"keep-only-checked"===e?function(e,n){var r=q(e);if(r.length){var t={};r.forEach(function(e){for(var r=e;r;)t[r]=!0,r=U(r,n)});var a=Q(),s=S(n).hidden;s.length=0,a.forEach(function(e){t[e]||s.push(e)})}}(l,i):"hide-checked"===e?se(l,i):"show-checked"===e&&ie(l,i):"show-all"===e?E(o).hidden=[]:"hide-all"===e?(r=o,n=Q(),E(r).hidden=n.slice()):"keep-only-checked"===e?function(e,n){var r=q(e);if(r.length){var t={};r.forEach(function(e){for(var r=e;r;)t[r]=!0,r=R(r,n)});var a=Q(),s=E(n).hidden;s.length=0,a.forEach(function(e){t[e]||s.push(e)})}}(l,o):"hide-checked"===e?te(l,o):"show-checked"===e&&ae(l,o),je()}else f("warning",m.bulkSelectCheckedFirst||"Check one or more menu items first.")})}function ge(e){return-1!==e.indexOf("::")?e.split("::").pop():e}function xe(){I.fn.sortable&&I("#members-am-columns .members-am-sidebar-list").each(function(){var e=I(this);e.data("ui-sortable")&&e.sortable("destroy");var r=e.closest(".members-am-column"),n=r.data("role"),t=r.data("user");e.sortable({axis:"y",distance:6,items:"> .members-am-item, > .members-am-sep",cancel:".members-am-item-actions button, .members-am-item-cb, .members-am-item-cb-wrap, .members-am-collapse-toggle",placeholder:"members-am-sort-placeholder",forcePlaceholderSize:!0,tolerance:"pointer",start:function(){b()},update:function(){t?function(e,r){var a=[],s={};e.children().each(function(){var e=I(this);if(e.hasClass("members-am-sep")){var r=e.attr("data-sep-id");r&&a.push(r)}else if(e.hasClass("members-am-item")){var n=e.attr("data-id");if(n){var t=e.attr("data-menu-parent");void 0===t||""===t?a.push(n):(s[t]||(s[t]=[]),s[t].push(ge(n)))}}});var n=S(r);n.order=a,n.submenu_order=s}(e,t):n&&function(e,r){var a=[],s={};e.children().each(function(){var e=I(this);if(e.hasClass("members-am-sep")){var r=e.attr("data-sep-id");r&&a.push(r)}else if(e.hasClass("members-am-item")){var n=e.attr("data-id");if(n){var t=e.attr("data-menu-parent");void 0===t||""===t?a.push(n):(s[t]||(s[t]=[]),s[t].push(ge(n)))}}});var n=E(r);n.order=a,n.submenu_order=s}(e,n),_e()}})})}function ye(){var n=I("#members-am-columns"),t={};n.find(".members-am-column").each(function(){var e=I(this).data("role");if(e){var r=I(this).find(".members-am-sidebar-list");r.length&&(t[e]=r.scrollTop())}}),n.empty();var e=P.carouselPage*P.columnsPerPage;if(P.activeRoleSlugs.slice(e,e+P.columnsPerPage).forEach(function(e){var r=I('
');!function(n,e){e.empty();var r=I(''),t=(h().filter(function(e){return e.slug===n})[0]||{}).label||n;r.append(I('').text(t)),r.append(I(' ').append(I(' ').text("◀"),I(' ').text("▶"))),e.append(r);var a=I('');J(n).forEach(function(e){if(0!==e.indexOf("sep-")){var r=O(e);r&&pe(n,r,null,a,0)}else a.append(I('
').attr("data-sep-id",e).text("—"))}),e.append(a),re(a,n),he(e,a,n),ve(e,n)}(e,r),n.append(r),t[e]&&r.find(".members-am-sidebar-list").scrollTop(t[e])}),P.previewUserId){var a=P.previewUserId,r=I('
'),s=I('');s.append(I(" ").text(P.previewUserLabel||"User #"+a)),s.append(I('× ').on("click",function(){P.previewUserId=null,P.previewUserLabel=null,P.previewUserRoles=[],je()})),r.append(s);var i=I(''),o=S(a);g(a).forEach(function(e){if(0!==e.indexOf("sep-")){var r=O(e);r&&fe(a,r,null,o,i,0)}else i.append(I('
').attr("data-sep-id",e).text("——"))}),r.append(i),re(i,"u:"+a),he(r,i,"u:"+a),ve(r,"u:"+a),n.append(r)}if(P.syncScroll){var l=n.find(".members-am-sidebar-list"),m=!1;l.on("scroll",function(){if(!m){m=!0;var e=I(this).scrollTop();l.not(this).scrollTop(e),m=!1}})}!function(){var e=Math.max(1,Math.ceil(P.activeRoleSlugs.length/P.columnsPerPage)),r=(Math.min(P.carouselPage+1,e),P.carouselPage*P.columnsPerPage+1),n=Math.min((P.carouselPage+1)*P.columnsPerPage,P.activeRoleSlugs.length);I("#members-am-carousel-status").text(r+"–"+n+" "+membersAdminMenus.i18n.of+" "+P.activeRoleSlugs.length);for(var t=I("#members-am-carousel-dots").empty(),a=0;a ').toggleClass("is-active",a===P.carouselPage))}(),xe()}function _e(){if(P.selectedId){I("#members-am-edit-panel").removeAttr("hidden");var e=O(P.selectedId),r=me()||{};I("#members-am-edit-title").text(e?e.title:P.selectedId),I("#members-am-edit-label").val(r.label||e&&e.title||"");var n=k(P.selectedId);I("#members-am-edit-url-wrap").toggle(n),I("#members-am-edit-url").attr("placeholder","Override URL (leave empty for default)").val(n&&(r.url||e&&e.url)||"").data("default-url",e&&e.url||""),I("#members-am-icon-type").val(r.icon_type||"dashicon"),I("#members-am-icon-value").val(r.icon||e&&e.icon||"");var t=r.icon||e&&e.icon||"",a=G(t,r.icon_type||e&&e.icon_type||"");"image"!==a&&"custom"!==a&&"svg"!==a||!t?I("#members-am-icon-preview").hide():I("#members-am-icon-preview").show().attr("src",t),I("#members-am-color-bg").val(r.color_bg||""),I("#members-am-color-text").val(r.color_text||""),I("#members-am-color-icon").val(r.color_icon||""),I("#members-am-badge-text").val(r.badge||""),I("#members-am-badge-bg").val(r.badge_bg||""),I("#members-am-item-cap").attr("placeholder",e&&e.cap?e.cap+" (default)":"").val(P.settings.capabilities[P.selectedId]||"");var s=e&&e.custom,i=I("#members-am-remove-custom");s?i.removeAttr("hidden"):i.attr("hidden","hidden"),I("#members-am-visibility-toggles").empty();var o=V(P.settings.capabilities[P.selectedId]||"")||V(e&&e.cap||"")||"read",l=[];if(h().forEach(function(e){"administrator"===e.slug&&!P.settings._meta.admin_editable||l.push(e)}),10<=l.length){var m=membersAdminMenus.i18n&&membersAdminMenus.i18n.filterRolesVisibility||"Filter roles…",c=membersAdminMenus.i18n&&membersAdminMenus.i18n.filterRolesVisibilityLabel||"Filter roles in this list",d=I('
'),u=I(' ').attr("placeholder",m).attr("aria-label",c);d.append(u),I("#members-am-visibility-toggles").append(d),u.on("input",function(){var a=(I(this).val()||"").trim().toLowerCase();I("#members-am-visibility-toggles .members-am-vis-row").each(function(){var e=I(this),r=(e.find("span").first().text()||"").toLowerCase(),n=String(e.find(".members-am-vis-cb").data("role")||"").toLowerCase(),t=!a||-1!==r.indexOf(a)||-1!==n.indexOf(a);e.toggleClass("members-am-vis-filter-hidden",!t)})})}l.forEach(function(e){var r=z(e.slug,P.selectedId),n=K(e.slug,o),t=I(' ').attr("data-role",e.slug).prop("checked",!r&&n);n||t.prop("disabled",!0);var a=I(' ').append(t,I(" ").text(e.label));n||(a.append(I(" ").text(" — no capability").css({color:"#999",fontStyle:"italic",marginLeft:"4px"})),a.css("opacity","0.5")),I("#members-am-visibility-toggles").append(a)}),I(".members-am-color").each(function(){I(this).data("wpWpColorPicker")&&I(this).wpColorPicker("destroy")}),I(".members-am-color").wpColorPicker({change:function(){p||setTimeout(function(){Ae()},20)},clear:function(){p||setTimeout(function(){Ae()},20)}}),p=!0,I(".members-am-color").each(function(){var e=I(this),r=String(e.val()||"").trim();if(r&&"#"!==r&&e.data("wpWpColorPicker"))try{e.wpColorPicker("color",r)}catch(e){}}),p=!1,Oe(),function(){var e=I(".members-am-demote-wrap"),n=I("#members-am-demote-parent"),r=I("#members-am-demote");if(!P.selectedId)return e.attr("hidden",!0);var t=oe()[0]||P.activeRoleSlugs[0];if(t&&T(t,P.selectedId))return e.attr("hidden",!0);e.removeAttr("hidden");var a=P.selectedId,s=t?R(a,t):null,i=membersAdminMenus.i18n&&membersAdminMenus.i18n.selectParentMenu||"";n.empty().append(I(" ").val("").text(i));var o=0;P.tree.forEach(function(e){if(e&&e.id&&e.id!==a&&(!s||e.id!==s)){var r=e.title&&String(e.title).trim()?e.title:e.id;n.append(I(" ").val(e.id).text(r)),o++}});var l=0 ');"dashicons"===n?r.append(I(' ')):r.append(I(' ')),r.on("click",function(){I("#members-am-icon-value").val(e),I("#members-am-icon-type").val("dashicons"===n?"dashicon":"fontawesome"),Ae()}),a.append(r)}})}function Se(e,r){var n=P.activeRoleSlugs.indexOf(e);if(-1!==n){var t=n+r;if(!(t<0||t>=P.activeRoleSlugs.length)){b();var a=P.activeRoleSlugs[n];P.activeRoleSlugs[n]=P.activeRoleSlugs[t],P.activeRoleSlugs[t]=a,m(),je()}}}function Me(e,r,n){var t=E(e).overrides[r]||{},a=null;if("__promote__"===t.parent?a=null:-1!==r.indexOf("::")?a=C(r):t.parent&&"__promote__"!==t.parent&&(a=t.parent),a){var s=E(e).submenu_order;s[a]||(s[a]=H(e,a));var i=s[a],o=-1!==r.indexOf("::")?r.split("::").pop():r;if(-1===(m=i.indexOf(o)))return;if((c=m+n)<0||c>=i.length)return;b();var l=i[m];i[m]=i[c],i[c]=l}else{E(e).order&&E(e).order.length||(E(e).order=j());var m,c,d=E(e).order;if(-1===(m=d.indexOf(r)))return;if((c=m+n)<0||c>=d.length)return;b();var u=d[m];d[m]=d[c],d[c]=u}je()}function Ce(){var e=oe();if(e.length){b();var t="sep-"+Date.now();e.forEach(function(e){E(e).order&&E(e).order.length||(E(e).order=j());var r=E(e).order,n=P.selectedId?r.indexOf(P.selectedId):r.length-1;n<0&&(n=r.length),r.splice(n+1,0,t)}),je()}}function Ie(e){var r=I("#members-am-toolbar-loading");r.removeAttr("hidden"),r.find(".spinner").addClass("is-active"),r.find(".members-am-loading-text").text(e||""),I("#members-am-save, #members-am-reset, #members-am-import, #members-am-copy-apply, #members-am-undo").prop("disabled",!0)}function Pe(){var e=I("#members-am-toolbar-loading");e.attr("hidden",!0),e.find(".spinner").removeClass("is-active"),e.find(".members-am-loading-text").text(""),I("#members-am-save, #members-am-reset, #members-am-import, #members-am-copy-apply").prop("disabled",!1),u()}function Ee(e){Ie(e||membersAdminMenus.i18n&&membersAdminMenus.i18n.saving||"Saving…");var a=membersAdminMenus.i18n&&membersAdminMenus.i18n.networkError||"Could not save settings. Check your connection and try again.";I.ajax({url:membersAdminMenus.ajaxUrl,type:"POST",dataType:"json",timeout:6e4,data:{action:"members_admin_menus_save",nonce:membersAdminMenus.nonce,settings:JSON.stringify(P.settings)}}).done(function(e){if(e&&void 0!==e.success){if(e.success)return t=s(),d=null,u(),void f("success",e.data&&e.data.message||membersAdminMenus.i18n&&membersAdminMenus.i18n.saved||"Settings saved.");f("error",e.data&&e.data.message?e.data.message:"Error")}else f("error",a)}).fail(function(e,r){if("abort"!==r){var n=a;if(e&&e.responseJSON&&void 0!==e.responseJSON.data){var t=e.responseJSON.data;"string"==typeof t&&t?n=t:t&&"string"==typeof t.message&&t.message&&(n=t.message)}f("error",n)}}).always(function(){Pe()})}function Re(e,r){var n,t=membersAdminMenus.i18n||{};if(n="role"===e&&"administrator"===r?t.confirmResetAdministrator||"Reset all menu settings for the Administrator role? This cannot be undone.":"all"!==e&&"role"===e&&r?t.confirmResetRole||"Reset all settings for this role? This cannot be undone.":t.confirmResetAllRoles||"Reset ALL menu settings for every role? This cannot be undone.",confirm(n)){Ie(membersAdminMenus.i18n&&membersAdminMenus.i18n.resetting||"Resetting…");var a=!1;I.post(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_reset",nonce:membersAdminMenus.nonce,scope:e||"all",role:r||""}).done(function(e){if(e.success)return o("success",e.data&&e.data.message||membersAdminMenus.i18n&&membersAdminMenus.i18n.resetComplete||"Reset complete."),P.allowUnload=!0,a=!0,void location.reload();f("error",e.data&&e.data.message?e.data.message:membersAdminMenus.i18n&&membersAdminMenus.i18n.resetFailed||"Reset failed.")}).fail(function(){f("error",membersAdminMenus.i18n&&membersAdminMenus.i18n.resetNetworkError||membersAdminMenus.i18n.networkError||"Could not reset settings. Check your connection and try again.")}).always(function(){a||Pe()})}}function Ue(e){I.getJSON(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_user_search",nonce:membersAdminMenus.nonce,term:e},function(e){e.success&&e.data&&e.data.length?function(e){I(".members-am-user-suggestions").remove();var r=I("#members-am-user-search").parent();r.css("position","relative");var n=I('
');e.forEach(function(e){n.append(I('
').text(e.label).data("userId",e.id).on("click",function(){!function(e,r,n){P.previewUserId=e,P.previewUserLabel=r||"User #"+e,P.previewUserRoles=n||[],v(),P.settings.users[e]||(P.settings.users[e]={});je()}(e.id,e.label,e.roles),I(".members-am-user-suggestions").remove(),I("#members-am-user-search").val("")}))}),r.append(n),setTimeout(function(){I(document).one("click",function(){I(".members-am-user-suggestions").remove()})},0)}(e.data):I(".members-am-user-suggestions").remove()})}function Te(){I(document).on("click","#members-am-role-chips .members-am-chip",function(){var e=I(this).data("role"),r=P.activeRoleSlugs.indexOf(e);-1===r?P.activeRoleSlugs.push(e):1 ');if(s.append(I('
').text(n.resetSettingsLabel||"Reset Settings")),a){var i=I(' ');i.append(I(' ')),i.append(I(' ').append(I(" ").text(n.resetAdministrator||"Reset Administrator"),I(" ").text(n.resetAdministratorHelp||"Clear all menu settings for the Administrator role only."))),i.on("click",function(e){e.preventDefault(),e.stopPropagation(),I(".members-am-reset-dropdown").remove(),Re("role",t)}),s.append(i)}var o=I(' ');o.append(I(' ')),o.append(I(' ').append(I(" ").text(n.resetAll||"Reset all roles"),I(" ").text(n.resetAllRolesHelp||"Clear all menu settings for every role."))),o.on("click",function(e){e.preventDefault(),e.stopPropagation(),I(".members-am-reset-dropdown").remove(),Re("all")}),s.append(o),s.insertAfter(r),setTimeout(function(){I(document).one("click",function(){I(".members-am-reset-dropdown").remove()})},0)}),I("#members-am-export").on("click",function(e){e.preventDefault(),window.location.href=membersAdminMenus.exportUrl}),I("#members-am-import").on("click",function(){I("#members-am-import-file").trigger("click")}),I("#members-am-import-file").on("change",function(){var e=this.files&&this.files[0];e&&function(e){Ie(membersAdminMenus.i18n&&membersAdminMenus.i18n.importing||"Importing…");var n=new FileReader;n.onerror=function(){Pe(),f("error",membersAdminMenus.i18n&&membersAdminMenus.i18n.readFileFailed||"Could not read the file.")},n.onload=function(){try{var e=JSON.parse(n.result),r=!1;I.post(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_import",nonce:membersAdminMenus.nonce,settings:JSON.stringify(e)}).done(function(e){if(e.success)return o("success",e.data&&e.data.message||membersAdminMenus.i18n&&membersAdminMenus.i18n.imported||"Settings imported."),P.allowUnload=!0,r=!0,void location.reload();f("error",e.data&&e.data.message?e.data.message:"Error")}).fail(function(){f("error",membersAdminMenus.i18n&&membersAdminMenus.i18n.importNetworkError||membersAdminMenus.i18n.networkError||"Could not import settings. Check your connection and try again.")}).always(function(){r||Pe()})}catch(e){Pe(),f("error",membersAdminMenus.i18n&&membersAdminMenus.i18n.invalidJson||"Invalid JSON.")}},n.readAsText(e)}(e)}),I("#members-am-copy-apply").on("click",function(){var n=I("#members-am-copy-from").val(),r=I("#members-am-copy-to").val();if(n&&r)if(n!==r){var t="",a="";if(h().forEach(function(e){e.slug===n&&(t=e.label),e.slug===r&&(a=e.label)}),confirm('Copy menu settings from "'+t+'" to "'+a+'"?\nThis will overwrite "'+a+'" menu configuration.\n\nNote: This copies menu order, labels, icons, and colors. Items the source role cannot access (no-access in its column) are stored as hidden on the target so a higher-capability role does not gain those screens.\nIt does not change WordPress role capabilities (lock icon).')){b();var e=E(n),s={hidden:W(n),order:[],submenu_order:{},overrides:{}},i=J(n);s.order=i.slice(),P.tree.forEach(function(e){if(e.children&&e.children.length){var r=D(n,e.id);r&&r.length&&(s.submenu_order[e.id]=r.slice())}}),e.overrides&&"object"==typeof e.overrides&&(s.overrides=JSON.parse(JSON.stringify(e.overrides))),P.settings.roles[r]=s,-1===P.activeRoleSlugs.indexOf(r)&&(P.activeRoleSlugs.push(r),m(),ue()),je(),Ee(membersAdminMenus.i18n&&membersAdminMenus.i18n.copying||"Copying…")}}else f("error",membersAdminMenus.i18n&&membersAdminMenus.i18n.rolesMustDiffer||"Source and target roles must be different.")}),I("#members-am-admin-editable").on("change",function(){var e=!0;I(this).is(":checked")&&(e=window.confirm(membersAdminMenus.i18n.adminEditableWarn)),e?(P.settings._meta.admin_editable=I(this).is(":checked"),de(),ue(),m(),je()):I(this).prop("checked",!1)}),I("#members-am-sync-scroll").prop("checked",!1!==P.syncScroll),I("#members-am-sync-scroll").on("change",function(){P.syncScroll=I(this).is(":checked");try{localStorage.setItem("members_am_sync_scroll",P.syncScroll?"1":"0")}catch(e){}ye()});var a="members_am_more_tools";function e(e){var r=I("#members-am-toolbar-extra"),n=I("#members-am-more-tools");if(r.length&&n.length){r.prop("hidden",!e),n.attr("aria-expanded",e?"true":"false").toggleClass("is-open",!!e);var t=membersAdminMenus.i18n||{};e&&t.moreToolsHideAria?n.attr("aria-label",t.moreToolsHideAria):!e&&t.moreToolsShowAria?n.attr("aria-label",t.moreToolsShowAria):n.removeAttr("aria-label");try{sessionStorage.setItem(a,e?"1":"0")}catch(e){}}}var r,n=!1;try{n="1"===sessionStorage.getItem(a)}catch(e){}e(n),I("#members-am-more-tools").on("click",function(){e(I("#members-am-toolbar-extra").prop("hidden"))}),I("#members-am-add-item").on("click",function(){b();var e="c"+Date.now();P.settings.custom_items.push({id:e,label:"Custom link",url:window.location.origin+"/wp-admin/",icon_type:"dashicon",icon:"dashicons-admin-generic",parent:"",position:99,cap:"read"}),P.tree=A(),P.selectedId=_({id:e}),je(),_e()}),I("#members-am-remove-custom").on("click",function(){var e=O(P.selectedId),r=e&&e.customId?String(e.customId):"";if(!r&&e&&e.custom&&P.selectedId){var n=-1!==P.selectedId.indexOf("::")?P.selectedId.split("::").pop():P.selectedId;0===n.indexOf("members-am-")&&(P.settings.custom_items||[]).forEach(function(e){e&&e.id&&_(e)===n&&(r=String(e.id))})}e&&r&&(b(),P.settings.custom_items=(P.settings.custom_items||[]).filter(function(e){return!e||String(e.id)!==r}),P.selectedId=null,P.tree=A(),je(),I("#members-am-edit-panel").attr("hidden",!0))}),I("#members-am-edit-close").on("click",function(){P.selectedId=null,I("#members-am-edit-panel").attr("hidden",!0),je()}),I("#members-am-edit-target-role").on("change",_e),I("#members-am-colors-readable").on("click",function(e){e.preventDefault();var r=String(I("#members-am-color-bg").val()||"").trim();if(r&&"#"!==r){var n=.45 ").val("__all__").text("All roles")),P.activeRoleSlugs.forEach(function(r){var e=(h().filter(function(e){return e.slug===r})[0]||{}).label||r;n.append(I(" ").val(r).text(e))}),P.previewUserId&&n.append(I(" ").val("__user__"+P.previewUserId).text(P.previewUserLabel||"User #"+P.previewUserId)),P.selectedId&&_e()}I(function(){var r,n,e;!function(){try{var e=sessionStorage.getItem(i);if(!e)return;sessionStorage.removeItem(i);var r=JSON.parse(e);r&&r.message&&f(r.type,r.message)}catch(e){}}(),v(),P.tree=A(),de(),I("#members-am-admin-editable").prop("checked",!!P.settings._meta.admin_editable),r=I("#members-am-copy-from").empty(),n=I("#members-am-copy-to").empty(),(e=h()).forEach(function(e){r.append(I(" ").val(e.slug).text(e.label)),n.append(I(" ").val(e.slug).text(e.label))}),1'),n=S("#members-am-notices"));var t=S("
",{class:"notice is-dismissible"}).addClass("notice-"+(e||"info"));t.append(S("
").text(r)),n.prepend(t),S(document).trigger("wp-notice-added")}}function o(e,r){try{sessionStorage.setItem(i,JSON.stringify({type:e||"success",message:r}))}catch(e){}}var e=["dashicons-menu","dashicons-admin-dashboard","dashicons-admin-post","dashicons-admin-page","dashicons-admin-media","dashicons-admin-comments","dashicons-admin-appearance","dashicons-admin-plugins","dashicons-admin-users","dashicons-admin-tools","dashicons-admin-settings","dashicons-admin-generic","dashicons-edit","dashicons-plus","dashicons-chart-bar","dashicons-cart","dashicons-products","dashicons-email","dashicons-groups","dashicons-heart","dashicons-star-filled","dashicons-smiley","dashicons-info","dashicons-lock","dashicons-unlock","dashicons-visibility","dashicons-hidden","dashicons-arrow-up","dashicons-arrow-down","dashicons-admin-network","dashicons-performance"],r=["fa-solid fa-house","fa-solid fa-user","fa-solid fa-gear","fa-solid fa-file","fa-solid fa-image","fa-solid fa-cart-shopping","fa-solid fa-chart-line","fa-solid fa-envelope","fa-solid fa-book","fa-solid fa-link","fa-solid fa-bell","fa-solid fa-star","fa-solid fa-heart","fa-solid fa-lock","fa-solid fa-unlock","fa-solid fa-pen","fa-solid fa-trash","fa-solid fa-plus","fa-solid fa-minus"],l="members_am_view_state";function m(){try{localStorage.setItem(l,JSON.stringify({activeRoleSlugs:M.activeRoleSlugs,carouselPage:M.carouselPage}))}catch(e){}}function c(e){return JSON.parse(JSON.stringify(e))}var d=null;function h(){d=c(M.settings),u()}function u(){var e=S("#members-am-undo");if(e.length){var r=!!d;e.prop("disabled",!r).attr("aria-disabled",r?"false":"true")}}function v(){return membersAdminMenus.roles||[]}function f(){M.settings._meta&&!Array.isArray(M.settings._meta)||(M.settings._meta={version:3,admin_editable:!1}),M.settings.roles&&!Array.isArray(M.settings.roles)||(M.settings.roles={}),M.settings.users&&!Array.isArray(M.settings.users)||(M.settings.users={}),Array.isArray(M.settings.custom_items)||(M.settings.custom_items=[]),M.settings.capabilities&&!Array.isArray(M.settings.capabilities)||(M.settings.capabilities={})}function C(e){f(),M.settings.roles[e]||(M.settings.roles[e]={hidden:[],order:[],submenu_order:{},overrides:{}});var r=M.settings.roles[e];return r.hidden&&Array.isArray(r.hidden)||(r.hidden=[]),r.order&&Array.isArray(r.order)||(r.order=[]),r.submenu_order&&!Array.isArray(r.submenu_order)||(r.submenu_order={}),r.overrides&&!Array.isArray(r.overrides)||(r.overrides={}),r}function I(e){f(),M.settings.users[e]||(M.settings.users[e]={});var r=M.settings.users[e];return r.hidden&&Array.isArray(r.hidden)||(r.hidden=[]),r.order&&Array.isArray(r.order)||(r.order=[]),r.overrides&&!Array.isArray(r.overrides)||(r.overrides={}),r.submenu_order&&!Array.isArray(r.submenu_order)||(r.submenu_order={}),r}function P(e,r){var n=function(e,r){for(var n=(e||[]).slice().reverse(),t={},a=0;a=a.length||(h(),a.splice(d,1),a.splice(u,0,o?c:r))}}function _(e){var r=e.id||"c";return"members-am-"+String(r).replace(/[^a-z0-9_-]/gi,"-").toLowerCase()}function k(e){return!!e&&0===(-1!==e.indexOf("::")?e.split("::").pop():e).indexOf("members-am-")}function w(e,r){if(!e||!r)return null;for(var n=0;n]+$/i.test(r)?r:0===r.indexOf("//")&&/^\/\/[a-z0-9.-]+\/?/i.test(r)?"https:"+r:"":""}function X(e,r,n){var t=K(r,n);if("fontawesome"===t&&r){var a=function(e){if(!e||"string"!=typeof e)return"";var r,n=e.trim().split(/\s+/).filter(Boolean);if(!n.length)return"";for(r=0;r",{class:"members-am-fa-icon"}),i=S(" ",{"aria-hidden":"true"});a.split(/\s+/).forEach(function(e){i.addClass(e)}),s.append(i),e.append(s)}else e.append(S(" ",{class:"dashicons dashicons-admin-generic"}))}else if("svg"!==t&&"image"!==t&&"custom"!==t||!r){var o=function(e){if(!e||"string"!=typeof e)return"";var r=e.trim();return G.test(r)?r:""}(r);e.append(S(" ",{class:"dashicons "+(o||"dashicons-admin-generic")}))}else{var l=q(r);l?e.append(S(" ",{src:l,alt:""}).css({width:"20px",height:"20px",display:"inline-block",verticalAlign:"middle",objectFit:"contain",filter:"none"})):e.append(S(" ",{class:"dashicons dashicons-admin-generic"}))}}function Y(){var t=[];return function e(r){var n;for(n=0;na&&(M.carouselPage=a))}}M.activeRoleSlugs=r.filter(function(e){return"administrator"!==e||n}),M.activeRoleSlugs.length||(M.activeRoleSlugs=["subscriber"])}function he(){var t=S("#members-am-role-chips").empty();v().forEach(function(e){if("administrator"!==e.slug||M.settings._meta.admin_editable){var r=-1!==M.activeRoleSlugs.indexOf(e.slug),n=S(' ').text(e.label).attr("data-role",e.slug).toggleClass("is-active",r);t.append(n)}})}function ve(n,t,e,a,s){(function(e,r,n,t,a){a=a||0;var s=r.id,i=z(e,s),o=!$(e,r.cap),l=C(e).overrides[s]||{},m=l.label||r.title||s,c=S('
').attr("data-id",s).attr("data-menu-parent",n||"").toggleClass("is-hidden",i).toggleClass("is-no-cap",o).toggleClass("is-selected",M.selectedId===s).toggleClass("is-sub",0 ');if(f){te(d);var b=!!M.collapsedParents[d][s],h=u.expandSubmenus||"Expand submenu items",v=u.collapseSubmenus||"Collapse submenu items";S(' ').attr("aria-expanded",!b).attr("aria-label",(b?h:v)+": "+m).append(S(' ').addClass(b?"dashicons-arrow-right-alt2":"dashicons-arrow-down-alt2")).on("click",function(e){e.stopPropagation(),te(d),M.collapsedParents[d][s]=!M.collapsedParents[d][s],Ae()}).appendTo(p),c.toggleClass("is-collapse-collapsed",b)}else p.append(S(' '));c.append(p);var g=u.bulkCheckboxAria||"Include in bulk actions",x=S(' '),y=S(' ').prop("checked",!!M.columnBulkSelection[d].ids[s]).attr("aria-label",g+": "+m).on("click",function(e){e.stopPropagation()}).on("change",function(e){e.stopPropagation(),ne(d,s,S(this).prop("checked")),Ae()});x.append(y),c.append(x);var _=S('
');0===a&&X(_,l.icon||r.icon,l.icon_type||r.icon_type);r.custom&&_.append(S('custom '));l.label&&_.append(S('edit '));if(_.append(S(' ').text(m)),l.badge){var k=l.badge_bg||"#d63638";_.append(S(' ').text(l.badge).css({backgroundColor:k,color:"#fff",fontSize:"9px",padding:"1px 5px",borderRadius:"2px",marginLeft:"4px",whiteSpace:"nowrap"}))}if(o){var w=membersAdminMenus.i18n||{},A=w.noAccessTitlePattern&&w.noAccessTitlePattern.replace("%s",r.cap||"read")||"This role does not have the '"+(r.cap||"read")+"' capability on this role object. Users with multiple roles may still access the screen. Manage capabilities in Members → Roles.";_.append(S(' ').attr("title",A).text("🔒 no access"))}c.append(_),l.color_bg&&c.css("background-color",l.color_bg);l.color_text&&c.find(".members-am-item-label").css("color",l.color_text);l.color_icon&&(c.find(".dashicons").css("color",l.color_icon),c.find(".members-am-fa-icon i").css("color",l.color_icon),c.find("img").css("filter","none"));var O=S('
');O.append(S(' ').text("◉"),S(' ').text("↑"),S(' ').text("↓")),c.append(O),t.append(c)})(n,t,e,a,s=s||0),t.children&&t.children.length&&D(n,t.id).forEach(function(e){var r=function(e,r,n){if(-1!==n.indexOf("::")){var t=O(n);return t&&R(n,e)===r?t:null}var a=O(H(r,n));return a||(-1===n.indexOf("::")&&(C(e).overrides[n]||{}).parent===r?O(n):null)}(n,t.id,e);r&&R(r.id,n)===t.id&&ve(n,r,t.id,a,s+1)})}function ge(n,t,e,a,s,i){i=i||0,s.append(function(r,e,n,t){t=t||0;var a=P(n,r.id),s=a.label||r.title,i=function(e,r){var n=I(e);if(-1!==n.hidden.indexOf(r))return!0;if(e===M.previewUserId&&M.previewUserRoles&&M.previewUserRoles.length){var t,a=M.previewUserRoles;for(t=0;t").addClass(m).attr("data-id",r.id).attr("data-menu-parent",e||""),d="u:"+n;Z(d);var u=membersAdminMenus.i18n||{},f=r.children&&r.children.length,p=S(' ');if(f){te(d);var b=!!M.collapsedParents[d][r.id],h=u.expandSubmenus||"Expand submenu items",v=u.collapseSubmenus||"Collapse submenu items";S(' ').attr("aria-expanded",!b).attr("aria-label",(b?h:v)+": "+s).append(S(' ').addClass(b?"dashicons-arrow-right-alt2":"dashicons-arrow-down-alt2")).on("click",function(e){e.stopPropagation(),te(d),M.collapsedParents[d][r.id]=!M.collapsedParents[d][r.id],Ae()}).appendTo(p),c.toggleClass("is-collapse-collapsed",b)}else p.append(S(' '));c.append(p);var g=u.bulkCheckboxAria||"Include in bulk actions",x=S(' '),y=S(' ').prop("checked",!!M.columnBulkSelection[d].ids[r.id]).attr("aria-label",g+": "+s).on("click",function(e){e.stopPropagation()}).on("change",function(e){e.stopPropagation(),ne(d,r.id,S(this).prop("checked")),Ae()});x.append(y),c.append(x);var _=S('
');0===t&&X(_,a.icon||r.icon,a.icon_type||r.icon_type);r.custom&&_.append(S('custom '));a.label&&_.append(S('edit '));if(_.append(S(' ').text(s)),a.badge){var k=a.badge_bg||"#d63638";_.append(S(' ').text(a.badge).css({backgroundColor:k,color:"#fff",fontSize:"9px",padding:"1px 5px",borderRadius:"2px",marginLeft:"4px",whiteSpace:"nowrap"}))}if(o){var w=membersAdminMenus.i18n||{},A=w.noAccessTitlePattern&&w.noAccessTitlePattern.replace("%s",r.cap||"read")||"This user does not have the '"+(r.cap||"read")+"' capability.";_.append(S(' ').attr("title",A).text("🔒 no access"))}c.append(_),a.color_bg&&c.css("background-color",a.color_bg);a.color_text&&c.find(".members-am-item-label").css("color",a.color_text);a.color_icon&&(c.find(".dashicons").css("color",a.color_icon),c.find(".members-am-fa-icon i").css("color",a.color_icon));var O=S('
');return O.append(S(' ').text(i?"◯":"◉"),S(' ').text("↑"),S(' ').text("↓")),c.append(O),c.on("click",function(e){S(e.target).closest("button, .members-am-item-cb, .members-am-collapse-toggle").length||(M.selectedId=r.id,Je())}),c}(t,e,n,i)),t.children&&t.children.length&&function(e,r){var n=x(e,r),t=I(e),a=t.submenu_order&&t.submenu_order[r];if(!a||!a.length)return n.slice();var s=a.filter(function(e){return-1!==n.indexOf(e)});return n.forEach(function(e){-1===s.indexOf(e)&&s.push(e)}),s}(n,t.id).forEach(function(e){var r=function(e,r,n){if(-1!==n.indexOf("::")){var t=O(n);return t&&U(n,e)===r?t:null}var a=O(H(r,n));if(a)return a;if(-1===n.indexOf("::")){var s=I(e);if((s.overrides&&s.overrides[n]||{}).parent===r)return O(n)}return null}(n,t.id,e);r&&U(r.id,n)===t.id&&ge(n,r,t.id,a,s,i+1)})}function xe(e,r){var a=(r||"").trim().toLowerCase(),n=e.children(".members-am-item");if(!a)return n.removeClass("members-am-filter-hidden"),void e.children(".members-am-sep").removeClass("members-am-filter-hidden");var i={};n.each(function(){var e=S(this),r=e.attr("data-id"),n=(e.find(".members-am-item-label").first().text()||"").toLowerCase(),t=(r||"").toLowerCase();i[r]=-1!==n.indexOf(a)||-1!==t.indexOf(a)});var o={};n.each(function(){var e=S(this).attr("data-id"),r=S(this).attr("data-menu-parent")||"";o[r]||(o[r]=[]),o[r].push(e)});var l={};function m(e){var r,n=i[e],t=o[e]||[],a=!1;for(r=0;r '),o=S(' ').attr("placeholder",a).attr("aria-label",s).val(t);i.append(o),e.find(".members-am-sidebar-head").first().after(i),o.on("input",function(){M.columnFilters[n]=S(this).val(),xe(r,S(this).val())}),xe(r,t)}function _e(e,r){var s=0===String(r).indexOf("u:"),i=s?parseInt(r.replace(/^u:/,""),10):0,o=s?null:r,l=r,m=membersAdminMenus.i18n||{},n=S('
').attr("data-column-key",l),t=S('
');t.append(S(' ').text(m.bulkSelectVisible||"Select visible"),S(' ').text(m.bulkClearSelection||"Clear selection"));var a=S('
');a.append(S(' ').text(m.collapseAllMenus||"Collapse all"),S(' ').text(m.expandAllMenus||"Expand all"));var c=S(' ').attr("aria-label",m.bulkVisibilityLabel||"Menu visibility for this column");c.append(S(' ').text(m.bulkActionsPlaceholder||"Choose visibility…"));var d=S(" ").attr("label",m.bulkGroupWholeColumn||"Whole column");d.append(S(' ').text(m.bulkShowAllItems||"Show every menu item"),S(' ').text(m.bulkHideAllItems||"Hide every menu item"));var u=S(" ").attr("label",m.bulkGroupCheckedRows||"Checked rows");u.append(S(' ').text(m.bulkKeepOnlyCheckedVisible||"Keep only checked visible"),S(' ').text(m.bulkHideCheckedItems||"Hide checked items"),S(' ').text(m.bulkShowCheckedItems||"Show checked items")),c.append(d,u),n.append(t,a,c);var f=e.find(".members-am-col-filter").first();f.length?f.after(n):e.find(".members-am-sidebar-head").first().after(n),c.on("change",function(){var e=S(this).val();if(S(this).val(""),e)if(!("keep-only-checked"===e||"hide-checked"===e||"show-checked"===e)||ee(l).length){if("keep-only-checked"===e){if(!window.confirm(m.bulkConfirmKeepOnlyChecked||"Hide all items except checked items and their parent menus?"))return}else if("hide-all"===e){if(!window.confirm(m.bulkConfirmHideAll||"Hide every menu item in this column?"))return}else if("hide-checked"===e&&!window.confirm(m.bulkConfirmHideChecked||"Hide the checked items (and their submenus where applicable)?"))return;var r,n,t,a;h(),s?"show-all"===e?I(i).hidden=[]:"hide-all"===e?(t=i,a=Y(),I(t).hidden=a.slice()):"keep-only-checked"===e?function(e,n){var r=ee(e);if(r.length){var t={};r.forEach(function(e){for(var r=e;r;)t[r]=!0,r=U(r,n)});var a=Y(),s=I(n).hidden;s.length=0,a.forEach(function(e){t[e]||s.push(e)})}}(l,i):"hide-checked"===e?me(l,i):"show-checked"===e&&ce(l,i):"show-all"===e?C(o).hidden=[]:"hide-all"===e?(r=o,n=Y(),C(r).hidden=n.slice()):"keep-only-checked"===e?function(e,n){var r=ee(e);if(r.length){var t={};r.forEach(function(e){for(var r=e;r;)t[r]=!0,r=R(r,n)});var a=Y(),s=C(n).hidden;s.length=0,a.forEach(function(e){t[e]||s.push(e)})}}(l,o):"hide-checked"===e?oe(l,o):"show-checked"===e&&le(l,o),Je()}else b("warning",m.bulkSelectCheckedFirst||"Check one or more menu items first.")})}function ke(e){return-1!==e.indexOf("::")?e.split("::").pop():e}function we(){S.fn.sortable&&S("#members-am-columns .members-am-sidebar-list").each(function(){var e=S(this);e.data("ui-sortable")&&e.sortable("destroy");var r=e.closest(".members-am-column"),n=r.data("role"),t=r.data("user");e.sortable({axis:"y",distance:6,items:"> .members-am-item, > .members-am-sep",cancel:".members-am-item-actions button, .members-am-item-cb, .members-am-item-cb-wrap, .members-am-collapse-toggle",placeholder:"members-am-sort-placeholder",forcePlaceholderSize:!0,tolerance:"pointer",start:function(){h()},update:function(){t?function(e,r){var a=[],s={};e.children().each(function(){var e=S(this);if(e.hasClass("members-am-sep")){var r=e.attr("data-sep-id");r&&a.push(r)}else if(e.hasClass("members-am-item")){var n=e.attr("data-id");if(n){var t=e.attr("data-menu-parent");void 0===t||""===t?a.push(n):(s[t]||(s[t]=[]),s[t].push(ke(n)))}}});var n=I(r);n.order=a,n.submenu_order=s}(e,t):n&&function(e,r){var a=[],s={};e.children().each(function(){var e=S(this);if(e.hasClass("members-am-sep")){var r=e.attr("data-sep-id");r&&a.push(r)}else if(e.hasClass("members-am-item")){var n=e.attr("data-id");if(n){var t=e.attr("data-menu-parent");void 0===t||""===t?a.push(n):(s[t]||(s[t]=[]),s[t].push(ke(n)))}}});var n=C(r);n.order=a,n.submenu_order=s}(e,n),Oe()}})})}function Ae(){var n=S("#members-am-columns"),t={};n.find(".members-am-column").each(function(){var e=S(this).data("role");if(e){var r=S(this).find(".members-am-sidebar-list");r.length&&(t[e]=r.scrollTop())}}),n.empty();var e=M.carouselPage*M.columnsPerPage;if(M.activeRoleSlugs.slice(e,e+M.columnsPerPage).forEach(function(e){var r=S("
",{class:"members-am-column"}).attr("data-role",e);!function(n,e){e.empty();var r=S(''),t=(v().filter(function(e){return e.slug===n})[0]||{}).label||n;r.append(S('').text(t)),r.append(S(' ').append(S(' ').text("◀"),S(' ').text("▶"))),e.append(r);var a=S('');J(n).forEach(function(e){if(0!==e.indexOf("sep-")){var r=O(e);r&&ve(n,r,null,a,0)}else a.append(S('
').attr("data-sep-id",e).text("—"))}),e.append(a),se(a,n),ye(e,a,n),_e(e,n)}(e,r),n.append(r),t[e]&&r.find(".members-am-sidebar-list").scrollTop(t[e])}),M.previewUserId){var a=M.previewUserId,r=S("
",{class:"members-am-column members-am-user-column"}).attr("data-user",String(a)),s=S('');s.append(S(" ").text(M.previewUserLabel||"User #"+a)),s.append(S('× ').on("click",function(){M.previewUserId=null,M.previewUserLabel=null,M.previewUserRoles=[],Je()})),r.append(s);var i=S(''),o=I(a);g(a).forEach(function(e){if(0!==e.indexOf("sep-")){var r=O(e);r&&ge(a,r,null,o,i,0)}else i.append(S('
').attr("data-sep-id",e).text("——"))}),r.append(i),se(i,"u:"+a),ye(r,i,"u:"+a),_e(r,"u:"+a),n.append(r)}if(M.syncScroll){var l=n.find(".members-am-sidebar-list"),m=!1;l.on("scroll",function(){if(!m){m=!0;var e=S(this).scrollTop();l.not(this).scrollTop(e),m=!1}})}!function(){var e=Math.max(1,Math.ceil(M.activeRoleSlugs.length/M.columnsPerPage)),r=(Math.min(M.carouselPage+1,e),M.carouselPage*M.columnsPerPage+1),n=Math.min((M.carouselPage+1)*M.columnsPerPage,M.activeRoleSlugs.length);S("#members-am-carousel-status").text(r+"–"+n+" "+membersAdminMenus.i18n.of+" "+M.activeRoleSlugs.length);for(var t=S("#members-am-carousel-dots").empty(),a=0;a ').toggleClass("is-active",a===M.carouselPage))}(),we()}function Oe(){if(M.selectedId){S("#members-am-edit-panel").removeAttr("hidden");var e=O(M.selectedId),r=fe()||{};S("#members-am-edit-title").text(e?e.title:M.selectedId),S("#members-am-edit-label").val(r.label||e&&e.title||"");var n=k(M.selectedId);S("#members-am-edit-url-wrap").toggle(n),S("#members-am-edit-url").attr("placeholder","Override URL (leave empty for default)").val(n&&(r.url||e&&e.url)||"").data("default-url",e&&e.url||""),S("#members-am-icon-type").val(r.icon_type||"dashicon"),S("#members-am-icon-value").val(r.icon||e&&e.icon||"");var t=r.icon||e&&e.icon||"",a=K(t,r.icon_type||e&&e.icon_type||"");if("image"!==a&&"custom"!==a&&"svg"!==a||!t)S("#members-am-icon-preview").hide().removeAttr("src");else{var s=q(t);s?S("#members-am-icon-preview").show().attr("src",s):S("#members-am-icon-preview").hide().removeAttr("src")}S("#members-am-color-bg").val(r.color_bg||""),S("#members-am-color-text").val(r.color_text||""),S("#members-am-color-icon").val(r.color_icon||""),S("#members-am-badge-text").val(r.badge||""),S("#members-am-badge-bg").val(r.badge_bg||""),S("#members-am-item-cap").attr("placeholder",e&&e.cap?e.cap+" (default)":"").val(M.settings.capabilities[M.selectedId]||"");var i=e&&e.custom,o=S("#members-am-remove-custom");i?o.removeAttr("hidden"):o.attr("hidden","hidden"),S("#members-am-visibility-toggles").empty();var l=V(M.settings.capabilities[M.selectedId]||"")||V(e&&e.cap||"")||"read",m=[];if(v().forEach(function(e){"administrator"===e.slug&&!M.settings._meta.admin_editable||m.push(e)}),10<=m.length){var c=membersAdminMenus.i18n&&membersAdminMenus.i18n.filterRolesVisibility||"Filter roles…",d=membersAdminMenus.i18n&&membersAdminMenus.i18n.filterRolesVisibilityLabel||"Filter roles in this list",u=S('
'),f=S(' ').attr("placeholder",c).attr("aria-label",d);u.append(f),S("#members-am-visibility-toggles").append(u),f.on("input",function(){var a=(S(this).val()||"").trim().toLowerCase();S("#members-am-visibility-toggles .members-am-vis-row").each(function(){var e=S(this),r=(e.find("span").first().text()||"").toLowerCase(),n=String(e.find(".members-am-vis-cb").data("role")||"").toLowerCase(),t=!a||-1!==r.indexOf(a)||-1!==n.indexOf(a);e.toggleClass("members-am-vis-filter-hidden",!t)})})}m.forEach(function(e){var r=z(e.slug,M.selectedId),n=$(e.slug,l),t=S(' ').attr("data-role",e.slug).prop("checked",!r&&n);n||t.prop("disabled",!0);var a=S(' ').append(t,S(" ").text(e.label));n||(a.append(S(" ").text(" — no capability").css({color:"#999",fontStyle:"italic",marginLeft:"4px"})),a.css("opacity","0.5")),S("#members-am-visibility-toggles").append(a)}),S(".members-am-color").each(function(){S(this).data("wpWpColorPicker")&&S(this).wpColorPicker("destroy")}),S(".members-am-color").wpColorPicker({change:function(){p||setTimeout(function(){Ce()},20)},clear:function(){p||setTimeout(function(){Ce()},20)}}),p=!0,S(".members-am-color").each(function(){var e=S(this),r=String(e.val()||"").trim();if(r&&"#"!==r&&e.data("wpWpColorPicker"))try{e.wpColorPicker("color",r)}catch(e){}}),p=!1,Ie(),function(){var e=S(".members-am-demote-wrap"),n=S("#members-am-demote-parent"),r=S("#members-am-demote");if(!M.selectedId)return e.attr("hidden",!0);var t=de()[0]||M.activeRoleSlugs[0];if(t&&T(t,M.selectedId))return e.attr("hidden",!0);e.removeAttr("hidden");var a=M.selectedId,s=t?R(a,t):null,i=membersAdminMenus.i18n&&membersAdminMenus.i18n.selectParentMenu||"";n.empty().append(S(" ").val("").text(i));var o=0;M.tree.forEach(function(e){if(e&&e.id&&e.id!==a&&(!s||e.id!==s)){var r=e.title&&String(e.title).trim()?e.title:e.id;n.append(S(" ").val(e.id).text(r)),o++}});var l=0 ');if("dashicons"===t)r.append(S(" ",{class:"dashicons "+e}));else{var n=S(" ",{"aria-hidden":"true"});e.split(/\s+/).forEach(function(e){n.addClass(e)}),r.append(n)}r.on("click",function(){S("#members-am-icon-value").val(e),S("#members-am-icon-type").val("dashicons"===t?"dashicon":"fontawesome"),Ce()}),s.append(r)}})}function Pe(e,r){var n=M.activeRoleSlugs.indexOf(e);if(-1!==n){var t=n+r;if(!(t<0||t>=M.activeRoleSlugs.length)){h();var a=M.activeRoleSlugs[n];M.activeRoleSlugs[n]=M.activeRoleSlugs[t],M.activeRoleSlugs[t]=a,m(),Je()}}}function Ee(e,r,n){var t=C(e).overrides[r]||{},a=null;if("__promote__"===t.parent?a=null:-1!==r.indexOf("::")?a=E(r):t.parent&&"__promote__"!==t.parent&&(a=t.parent),a){var s=C(e).submenu_order;s[a]||(s[a]=B(e,a));var i=s[a],o=-1!==r.indexOf("::")?r.split("::").pop():r;if(-1===(m=i.indexOf(o)))return;if((c=m+n)<0||c>=i.length)return;h();var l=i[m];i[m]=i[c],i[c]=l}else{C(e).order&&C(e).order.length||(C(e).order=j());var m,c,d=C(e).order;if(-1===(m=d.indexOf(r)))return;if((c=m+n)<0||c>=d.length)return;h();var u=d[m];d[m]=d[c],d[c]=u}Je()}function Re(){var e=de();if(e.length){h();var t="sep-"+Date.now();e.forEach(function(e){C(e).order&&C(e).order.length||(C(e).order=j());var r=C(e).order,n=M.selectedId?r.indexOf(M.selectedId):r.length-1;n<0&&(n=r.length),r.splice(n+1,0,t)}),Je()}}function Ue(e){var r=S("#members-am-toolbar-loading");r.removeAttr("hidden"),r.find(".spinner").addClass("is-active"),r.find(".members-am-loading-text").text(e||""),S("#members-am-save, #members-am-reset, #members-am-import, #members-am-copy-apply, #members-am-undo").prop("disabled",!0)}function Te(){var e=S("#members-am-toolbar-loading");e.attr("hidden",!0),e.find(".spinner").removeClass("is-active"),e.find(".members-am-loading-text").text(""),S("#members-am-save, #members-am-reset, #members-am-import, #members-am-copy-apply").prop("disabled",!1),u()}function je(e){Ue(e||membersAdminMenus.i18n&&membersAdminMenus.i18n.saving||"Saving…");var a=membersAdminMenus.i18n&&membersAdminMenus.i18n.networkError||"Could not save settings. Check your connection and try again.";S.ajax({url:membersAdminMenus.ajaxUrl,type:"POST",dataType:"json",timeout:6e4,data:{action:"members_admin_menus_save",nonce:membersAdminMenus.nonce,settings:JSON.stringify(M.settings)}}).done(function(e){if(e&&void 0!==e.success){if(e.success)return t=s(),d=null,u(),void b("success",e.data&&e.data.message||membersAdminMenus.i18n&&membersAdminMenus.i18n.saved||"Settings saved.");b("error",e.data&&e.data.message?e.data.message:"Error")}else b("error",a)}).fail(function(e,r){if("abort"!==r){var n=a;if(e&&e.responseJSON&&void 0!==e.responseJSON.data){var t=e.responseJSON.data;"string"==typeof t&&t?n=t:t&&"string"==typeof t.message&&t.message&&(n=t.message)}b("error",n)}}).always(function(){Te()})}function Le(e,r){var n,t=membersAdminMenus.i18n||{};if(n="role"===e&&"administrator"===r?t.confirmResetAdministrator||"Reset all menu settings for the Administrator role? This cannot be undone.":"all"!==e&&"role"===e&&r?t.confirmResetRole||"Reset all settings for this role? This cannot be undone.":t.confirmResetAllRoles||"Reset ALL menu settings for every role? This cannot be undone.",confirm(n)){Ue(membersAdminMenus.i18n&&membersAdminMenus.i18n.resetting||"Resetting…");var a=!1;S.post(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_reset",nonce:membersAdminMenus.nonce,scope:e||"all",role:r||""}).done(function(e){if(e.success)return o("success",e.data&&e.data.message||membersAdminMenus.i18n&&membersAdminMenus.i18n.resetComplete||"Reset complete."),M.allowUnload=!0,a=!0,void location.reload();b("error",e.data&&e.data.message?e.data.message:membersAdminMenus.i18n&&membersAdminMenus.i18n.resetFailed||"Reset failed.")}).fail(function(){b("error",membersAdminMenus.i18n&&membersAdminMenus.i18n.resetNetworkError||membersAdminMenus.i18n.networkError||"Could not reset settings. Check your connection and try again.")}).always(function(){a||Te()})}}function Ne(e){S.getJSON(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_user_search",nonce:membersAdminMenus.nonce,term:e},function(e){e.success&&e.data&&e.data.length?function(e){S(".members-am-user-suggestions").remove();var r=S("#members-am-user-search").parent();r.css("position","relative");var n=S('
');e.forEach(function(e){n.append(S('
').text(e.label).data("userId",e.id).on("click",function(){!function(e,r,n){M.previewUserId=e,M.previewUserLabel=r||"User #"+e,M.previewUserRoles=n||[],f(),M.settings.users[e]||(M.settings.users[e]={});Je()}(e.id,e.label,e.roles),S(".members-am-user-suggestions").remove(),S("#members-am-user-search").val("")}))}),r.append(n),setTimeout(function(){S(document).one("click",function(){S(".members-am-user-suggestions").remove()})},0)}(e.data):S(".members-am-user-suggestions").remove()})}function Fe(){S(document).on("click","#members-am-role-chips .members-am-chip",function(){var e=S(this).data("role"),r=M.activeRoleSlugs.indexOf(e);-1===r?M.activeRoleSlugs.push(e):1 ');if(s.append(S('
').text(n.resetSettingsLabel||"Reset Settings")),a){var i=S(' ');i.append(S(' ')),i.append(S(' ').append(S(" ").text(n.resetAdministrator||"Reset Administrator"),S(" ").text(n.resetAdministratorHelp||"Clear all menu settings for the Administrator role only."))),i.on("click",function(e){e.preventDefault(),e.stopPropagation(),S(".members-am-reset-dropdown").remove(),Le("role",t)}),s.append(i)}var o=S(' ');o.append(S(' ')),o.append(S(' ').append(S(" ").text(n.resetAll||"Reset all roles"),S(" ").text(n.resetAllRolesHelp||"Clear all menu settings for every role."))),o.on("click",function(e){e.preventDefault(),e.stopPropagation(),S(".members-am-reset-dropdown").remove(),Le("all")}),s.append(o),s.insertAfter(r),setTimeout(function(){S(document).one("click",function(){S(".members-am-reset-dropdown").remove()})},0)}),S("#members-am-export").on("click",function(e){e.preventDefault(),window.location.href=membersAdminMenus.exportUrl}),S("#members-am-import").on("click",function(){S("#members-am-import-file").trigger("click")}),S("#members-am-import-file").on("change",function(){var e=this.files&&this.files[0];e&&function(e){Ue(membersAdminMenus.i18n&&membersAdminMenus.i18n.importing||"Importing…");var n=new FileReader;n.onerror=function(){Te(),b("error",membersAdminMenus.i18n&&membersAdminMenus.i18n.readFileFailed||"Could not read the file.")},n.onload=function(){try{var e=JSON.parse(n.result),r=!1;S.post(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_import",nonce:membersAdminMenus.nonce,settings:JSON.stringify(e)}).done(function(e){if(e.success)return o("success",e.data&&e.data.message||membersAdminMenus.i18n&&membersAdminMenus.i18n.imported||"Settings imported."),M.allowUnload=!0,r=!0,void location.reload();b("error",e.data&&e.data.message?e.data.message:"Error")}).fail(function(){b("error",membersAdminMenus.i18n&&membersAdminMenus.i18n.importNetworkError||membersAdminMenus.i18n.networkError||"Could not import settings. Check your connection and try again.")}).always(function(){r||Te()})}catch(e){Te(),b("error",membersAdminMenus.i18n&&membersAdminMenus.i18n.invalidJson||"Invalid JSON.")}},n.readAsText(e)}(e)}),S("#members-am-copy-apply").on("click",function(){var n=S("#members-am-copy-from").val(),r=S("#members-am-copy-to").val();if(n&&r)if(n!==r){var t="",a="";if(v().forEach(function(e){e.slug===n&&(t=e.label),e.slug===r&&(a=e.label)}),confirm('Copy menu settings from "'+t+'" to "'+a+'"?\nThis will overwrite "'+a+'" menu configuration.\n\nNote: This copies menu order, labels, icons, and colors. Items the source role cannot access (no-access in its column) are stored as hidden on the target so a higher-capability role does not gain those screens.\nIt does not change WordPress role capabilities (lock icon).')){h();var e=C(n),s={hidden:W(n),order:[],submenu_order:{},overrides:{}},i=J(n);s.order=i.slice(),M.tree.forEach(function(e){if(e.children&&e.children.length){var r=D(n,e.id);r&&r.length&&(s.submenu_order[e.id]=r.slice())}}),e.overrides&&"object"==typeof e.overrides&&(s.overrides=JSON.parse(JSON.stringify(e.overrides))),M.settings.roles[r]=s,-1===M.activeRoleSlugs.indexOf(r)&&(M.activeRoleSlugs.push(r),m(),he()),Je(),je(membersAdminMenus.i18n&&membersAdminMenus.i18n.copying||"Copying…")}}else b("error",membersAdminMenus.i18n&&membersAdminMenus.i18n.rolesMustDiffer||"Source and target roles must be different.")}),S("#members-am-admin-editable").on("change",function(){var e=!0;S(this).is(":checked")&&(e=window.confirm(membersAdminMenus.i18n.adminEditableWarn)),e?(M.settings._meta.admin_editable=S(this).is(":checked"),be(),he(),m(),Je()):S(this).prop("checked",!1)}),S("#members-am-sync-scroll").prop("checked",!1!==M.syncScroll),S("#members-am-sync-scroll").on("change",function(){M.syncScroll=S(this).is(":checked");try{localStorage.setItem("members_am_sync_scroll",M.syncScroll?"1":"0")}catch(e){}Ae()});var a="members_am_more_tools";function e(e){var r=S("#members-am-toolbar-extra"),n=S("#members-am-more-tools");if(r.length&&n.length){r.prop("hidden",!e),n.attr("aria-expanded",e?"true":"false").toggleClass("is-open",!!e);var t=membersAdminMenus.i18n||{};e&&t.moreToolsHideAria?n.attr("aria-label",t.moreToolsHideAria):!e&&t.moreToolsShowAria?n.attr("aria-label",t.moreToolsShowAria):n.removeAttr("aria-label");try{sessionStorage.setItem(a,e?"1":"0")}catch(e){}}}var r,n=!1;try{n="1"===sessionStorage.getItem(a)}catch(e){}e(n),S("#members-am-more-tools").on("click",function(){e(S("#members-am-toolbar-extra").prop("hidden"))}),S("#members-am-add-item").on("click",function(){h();var e="c"+Date.now();M.settings.custom_items.push({id:e,label:"Custom link",url:window.location.origin+"/wp-admin/",icon_type:"dashicon",icon:"dashicons-admin-generic",parent:"",position:99,cap:"read"}),M.tree=A(),M.selectedId=_({id:e}),Je(),Oe()}),S("#members-am-remove-custom").on("click",function(){var e=O(M.selectedId),r=e&&e.customId?String(e.customId):"";if(!r&&e&&e.custom&&M.selectedId){var n=-1!==M.selectedId.indexOf("::")?M.selectedId.split("::").pop():M.selectedId;0===n.indexOf("members-am-")&&(M.settings.custom_items||[]).forEach(function(e){e&&e.id&&_(e)===n&&(r=String(e.id))})}e&&r&&(h(),M.settings.custom_items=(M.settings.custom_items||[]).filter(function(e){return!e||String(e.id)!==r}),M.selectedId=null,M.tree=A(),Je(),S("#members-am-edit-panel").attr("hidden",!0))}),S("#members-am-edit-close").on("click",function(){M.selectedId=null,S("#members-am-edit-panel").attr("hidden",!0),Je()}),S("#members-am-edit-target-role").on("change",Oe),S("#members-am-colors-readable").on("click",function(e){e.preventDefault();var r=String(S("#members-am-color-bg").val()||"").trim();if(r&&"#"!==r){var n=.45 ").val("__all__").text("All roles")),M.activeRoleSlugs.forEach(function(r){var e=(v().filter(function(e){return e.slug===r})[0]||{}).label||r;n.append(S(" ").val(r).text(e))}),M.previewUserId&&n.append(S(" ").val("__user__"+M.previewUserId).text(M.previewUserLabel||"User #"+M.previewUserId)),M.selectedId&&Oe()}S(function(){var r,n,e;!function(){try{var e=sessionStorage.getItem(i);if(!e)return;sessionStorage.removeItem(i);var r=JSON.parse(e);r&&r.message&&b(r.type,r.message)}catch(e){}}(),f(),M.tree=A(),be(),S("#members-am-admin-editable").prop("checked",!!M.settings._meta.admin_editable),r=S("#members-am-copy-from").empty(),n=S("#members-am-copy-to").empty(),(e=v()).forEach(function(e){r.append(S(" ").val(e.slug).text(e.label)),n.append(S(" ").val(e.slug).text(e.label))}),1
Date: Fri, 24 Apr 2026 23:44:32 +0300
Subject: [PATCH 50/73] feat(admin): implement exempt administrator user
management in admin menus, including UI for adding/removing exempt users and
related functionality
---
addons/members-admin-menus/app/defaults.php | 10 +-
.../app/functions-admin.php | 130 +++++++++++-
addons/members-admin-menus/app/functions.php | 15 +-
css/admin.css | 45 +++-
css/admin.min.css | 2 +-
js/admin-menus.js | 196 +++++++++++++++++-
js/admin-menus.min.js | 2 +-
7 files changed, 381 insertions(+), 19 deletions(-)
diff --git a/addons/members-admin-menus/app/defaults.php b/addons/members-admin-menus/app/defaults.php
index 1b10b46..5013e21 100644
--- a/addons/members-admin-menus/app/defaults.php
+++ b/addons/members-admin-menus/app/defaults.php
@@ -27,6 +27,11 @@
*/
const SETTINGS_JSON_MAX_DEPTH = 128;
+/**
+ * Maximum administrator user IDs stored as exempt from Admin Menus when admin_editable is on.
+ */
+const ADMIN_MENU_EXEMPT_USER_IDS_MAX = 20;
+
/**
* Default option array for members_admin_menus_settings.
*
@@ -35,8 +40,9 @@
function members_admin_menus_default_settings_data() {
return array(
'_meta' => array(
- 'version' => SETTINGS_SCHEMA_VERSION,
- 'admin_editable' => false,
+ 'version' => SETTINGS_SCHEMA_VERSION,
+ 'admin_editable' => false,
+ 'admin_menu_exempt_user_ids' => array(),
),
'roles' => array(),
'users' => array(),
diff --git a/addons/members-admin-menus/app/functions-admin.php b/addons/members-admin-menus/app/functions-admin.php
index 2ae4093..27a49d5 100644
--- a/addons/members-admin-menus/app/functions-admin.php
+++ b/addons/members-admin-menus/app/functions-admin.php
@@ -536,6 +536,25 @@ function enqueue_admin_menus_assets() {
$menu_caps = merge_menu_capabilities_from_settings( collect_capability_names_from_menu_tree( $tree ), $settings );
$role_cap_matrix = build_role_cap_matrix_for_js( $menu_caps );
+ $exempt_ids = array();
+ if ( ! empty( $settings['_meta']['admin_menu_exempt_user_ids'] ) && is_array( $settings['_meta']['admin_menu_exempt_user_ids'] ) ) {
+ $exempt_ids = array_map( 'absint', $settings['_meta']['admin_menu_exempt_user_ids'] );
+ }
+ $current_wp_user = wp_get_current_user();
+ $current_is_administrator = $current_wp_user && $current_wp_user->exists() && in_array( 'administrator', (array) $current_wp_user->roles, true );
+ $exempt_user_labels = members_am_exempt_administrator_user_labels( $exempt_ids );
+ if ( $current_is_administrator && $current_wp_user->ID ) {
+ $cid = (string) (int) $current_wp_user->ID;
+ if ( '' === ( $exempt_user_labels[ $cid ] ?? '' ) ) {
+ $exempt_user_labels[ $cid ] = sprintf(
+ /* translators: 1: display name, 2: user_login */
+ __( '%1$s (%2$s)', 'members' ),
+ $current_wp_user->display_name ? $current_wp_user->display_name : $current_wp_user->user_login,
+ $current_wp_user->user_login
+ );
+ }
+ }
+
wp_localize_script(
'members-admin-menus',
'membersAdminMenus',
@@ -546,6 +565,9 @@ function enqueue_admin_menus_assets() {
'roleCaps' => $role_caps,
'roleCapMatrix' => $role_cap_matrix,
'adminEditable' => ! empty( $settings['_meta']['admin_editable'] ),
+ 'currentUserId' => get_current_user_id(),
+ 'currentUserIsAdministrator' => $current_is_administrator,
+ 'exemptUserLabels' => $exempt_user_labels,
'nonce' => wp_create_nonce( 'members_admin_menus' ),
'ajaxUrl' => admin_url( 'admin-ajax.php' ),
'exportUrl' => add_query_arg(
@@ -603,16 +625,16 @@ function enqueue_admin_menus_assets() {
'bulkGroupCheckedRows' => __( 'Checked rows', 'members' ),
'bulkShowAllItems' => __( 'Show every menu item', 'members' ),
'bulkHideAllItems' => __( 'Hide every menu item', 'members' ),
- 'bulkKeepOnlyCheckedVisible' => __( 'Keep only checked visible', 'members' ),
+ 'bulkKeepOnlyCheckedVisible' => __( 'Hide everything except selected (and parents)', 'members' ),
'bulkHideCheckedItems' => __( 'Hide checked items', 'members' ),
- 'bulkShowCheckedItems' => __( 'Show checked items', 'members' ),
+ 'bulkShowCheckedItems' => __( 'Show selected items', 'members' ),
'bulkSelectVisible' => __( 'Select visible', 'members' ),
'bulkClearSelection' => __( 'Clear selection', 'members' ),
'bulkCheckboxAria' => __( 'Include in bulk actions', 'members' ),
'bulkSelectCheckedFirst' => __( 'Check one or more menu items first.', 'members' ),
'bulkSelectItemFirst' => __( 'Select a menu item in the list first.', 'members' ),
'bulkConfirmHideAll' => __( 'Hide every menu item in this column? You can use “Show every menu item” to undo before saving.', 'members' ),
- 'bulkConfirmKeepOnlyChecked' => __( 'Hide all items except checked items and their parent menus?', 'members' ),
+ 'bulkConfirmKeepOnlyChecked' => __( 'Hide all menu items except the selected ones and their parent menus?', 'members' ),
'bulkConfirmHideChecked' => __( 'Hide the checked items (and their submenus where applicable)?', 'members' ),
'collapseSubmenus' => __( 'Collapse submenu items', 'members' ),
'expandSubmenus' => __( 'Expand submenu items', 'members' ),
@@ -628,6 +650,9 @@ function enqueue_admin_menus_assets() {
'colorsReadableNeedBg' => __( 'Choose a background color first.', 'members' ),
'noAccessTitlePattern' => __( 'This role does not have the stored capability “%s”. Users with multiple roles may still reach the screen if another role grants it. Tags use manage_post_tags when Category & Tag Caps is active (Members → Roles, Taxonomy).', 'members' ),
'multiRoleMergeHelp' => __( 'Users with multiple roles: a menu item is hidden if any of their roles hides it. When two roles define different labels, icons, or colors for the same item, the first role in the user’s role list wins.', 'members' ),
+ 'exemptLastAdministrator' => __( 'Keep at least one exempt administrator while this option is enabled.', 'members' ),
+ 'exemptRemove' => __( 'Remove', 'members' ),
+ 'exemptSaveRequiresAdministrator' => __( 'When administrator menu editing is enabled, at least one exempt administrator is required. Sign in as an administrator or add one using the search field.', 'members' ),
),
)
);
@@ -695,6 +720,16 @@ function render_admin_menus_page() {
+
@@ -927,6 +962,69 @@ function members_am_decode_settings_json( $raw, $too_large_message ) {
return $data;
}
+/**
+ * Normalize stored exempt administrator user IDs when "Allow editing administrator menus" is enabled.
+ *
+ * @param mixed $raw_ids Client-supplied list (may be non-array).
+ * @param bool $admin_editable Whether administrator menu editing is enabled.
+ * @return int[] Unique administrator user IDs (empty when $admin_editable is false).
+ */
+function members_am_normalize_administrator_exempt_user_ids( $raw_ids, $admin_editable ) {
+ if ( ! $admin_editable ) {
+ return array();
+ }
+ $out = array();
+ if ( is_array( $raw_ids ) ) {
+ foreach ( $raw_ids as $id ) {
+ $id = absint( $id );
+ if ( $id < 1 || count( $out ) >= ADMIN_MENU_EXEMPT_USER_IDS_MAX ) {
+ continue;
+ }
+ $user = get_userdata( $id );
+ if ( ! $user || ! in_array( 'administrator', (array) $user->roles, true ) ) {
+ continue;
+ }
+ $out[] = $id;
+ }
+ $out = array_values( array_unique( $out ) );
+ }
+ if ( empty( $out ) ) {
+ $uid = get_current_user_id();
+ $user = $uid ? get_userdata( $uid ) : false;
+ if ( $user && in_array( 'administrator', (array) $user->roles, true ) ) {
+ return array( $uid );
+ }
+ }
+ return $out;
+}
+
+/**
+ * Display labels for exempt administrator IDs (localized script data).
+ *
+ * @param int[] $ids User IDs.
+ * @return array Map of string user ID to label.
+ */
+function members_am_exempt_administrator_user_labels( array $ids ) {
+ $labels = array();
+ foreach ( $ids as $id ) {
+ $id = absint( $id );
+ if ( $id < 1 ) {
+ continue;
+ }
+ $user = get_userdata( $id );
+ if ( ! $user || ! in_array( 'administrator', (array) $user->roles, true ) ) {
+ continue;
+ }
+ $labels[ (string) $id ] = sprintf(
+ /* translators: 1: display name, 2: user_login */
+ __( '%1$s (%2$s)', 'members' ),
+ $user->display_name ? $user->display_name : $user->user_login,
+ $user->user_login
+ );
+ }
+ return $labels;
+}
+
/**
* AJAX: save full settings JSON.
*
@@ -948,6 +1046,19 @@ function ajax_save_settings() {
wp_send_json_error( array( 'message' => $data->get_error_message() ), 400 );
}
$sanitized = sanitize_settings_payload( $data );
+ if ( ! empty( $sanitized['_meta']['admin_editable'] ) ) {
+ $exempt = isset( $sanitized['_meta']['admin_menu_exempt_user_ids'] ) && is_array( $sanitized['_meta']['admin_menu_exempt_user_ids'] )
+ ? $sanitized['_meta']['admin_menu_exempt_user_ids']
+ : array();
+ if ( empty( $exempt ) ) {
+ wp_send_json_error(
+ array(
+ 'message' => __( 'When administrator menu editing is enabled, at least one exempt administrator is required. Sign in as an administrator or add one using the search field.', 'members' ),
+ ),
+ 400
+ );
+ }
+ }
update_option( OPTION_KEY, $sanitized );
members_am_invalidate_settings_cache();
wp_send_json_success( array( 'message' => __( 'Settings saved.', 'members' ) ) );
@@ -975,9 +1086,18 @@ function sanitize_settings_payload( $data ) {
$out = wp_parse_args( $filtered, $defaults );
+ $admin_editable = ! empty( $out['_meta']['admin_editable'] );
+ $raw_exempt = array();
+ if ( isset( $data['_meta'] ) && is_array( $data['_meta'] ) && isset( $data['_meta']['admin_menu_exempt_user_ids'] ) ) {
+ $raw_exempt = $data['_meta']['admin_menu_exempt_user_ids'];
+ } elseif ( isset( $out['_meta']['admin_menu_exempt_user_ids'] ) ) {
+ $raw_exempt = $out['_meta']['admin_menu_exempt_user_ids'];
+ }
+
$out['_meta'] = array(
- 'version' => isset( $out['_meta']['version'] ) ? absint( $out['_meta']['version'] ) : 3,
- 'admin_editable' => ! empty( $out['_meta']['admin_editable'] ),
+ 'version' => isset( $out['_meta']['version'] ) ? absint( $out['_meta']['version'] ) : 3,
+ 'admin_editable' => $admin_editable,
+ 'admin_menu_exempt_user_ids' => members_am_normalize_administrator_exempt_user_ids( $raw_exempt, $admin_editable ),
);
if ( isset( $out['_defaults'] ) && is_array( $out['_defaults'] ) ) {
diff --git a/addons/members-admin-menus/app/functions.php b/addons/members-admin-menus/app/functions.php
index 55d83d5..95ac59d 100644
--- a/addons/members-admin-menus/app/functions.php
+++ b/addons/members-admin-menus/app/functions.php
@@ -1408,13 +1408,26 @@ function is_user_exempt( $user_id ) {
return true;
}
- $meta = get_settings();
+ $meta = get_settings();
$admin_editable = ! empty( $meta['_meta']['admin_editable'] );
if ( in_array( 'administrator', (array) $user->roles, true ) && ! $admin_editable ) {
return true;
}
+ if ( $admin_editable && in_array( 'administrator', (array) $user->roles, true ) ) {
+ $exempt_ids = array();
+ if ( ! empty( $meta['_meta']['admin_menu_exempt_user_ids'] ) && is_array( $meta['_meta']['admin_menu_exempt_user_ids'] ) ) {
+ $exempt_ids = array_map( 'absint', $meta['_meta']['admin_menu_exempt_user_ids'] );
+ }
+ // Legacy or pre-migration: empty list would lock out every administrator — fail open until settings are saved again.
+ if ( empty( $exempt_ids ) ) {
+ return (bool) apply_filters( app()->namespace . '/is_user_exempt', true, $user_id );
+ }
+ $is_exempt = in_array( (int) $user_id, $exempt_ids, true );
+ return (bool) apply_filters( app()->namespace . '/is_user_exempt', $is_exempt, $user_id );
+ }
+
return (bool) apply_filters( app()->namespace . '/is_user_exempt', false, $user_id );
}
diff --git a/css/admin.css b/css/admin.css
index 93c1c1b..b520db7 100644
--- a/css/admin.css
+++ b/css/admin.css
@@ -1690,6 +1690,39 @@ body.admin_page_members-about #wpbody-content {
border-left: 1px solid var(--members-am-chrome-border, #c3c4c7);
}
+.members-am-toolbar-row--exempt {
+ flex-basis: 100%;
+ width: 100%;
+ margin-top: 8px;
+ padding-top: 10px;
+ border-top: 1px solid var(--members-am-chrome-border, #c3c4c7);
+}
+
+.members-am-exempt-wrap .members-am-exempt-chips {
+ display: flex;
+ flex-wrap: wrap;
+ align-items: center;
+ gap: 8px;
+ margin: 8px 0;
+}
+
+.members-am-exempt-chip {
+ display: inline-flex;
+ align-items: center;
+ gap: 4px;
+ padding: 2px 8px;
+ border: 1px solid var(--members-am-chrome-border, #c3c4c7);
+ border-radius: 4px;
+ background: var(--wp-components-color-background, #fff);
+ font-size: 13px;
+}
+
+.members-am-exempt-chip .members-am-exempt-remove {
+ padding: 0 2px;
+ min-height: 0;
+ line-height: 1.3;
+}
+
/* Override core .button-link underline (it can fragment and appear only under the SVG chevron). */
.members-am-more-tools,
.members-am-more-tools:hover,
@@ -2457,7 +2490,8 @@ body.admin_page_members-about #wpbody-content {
}
}
-.members-am-user-suggestions {
+.members-am-user-suggestions,
+.members-am-exempt-suggestions {
position: absolute;
z-index: 100;
background: var(--wp-components-color-background, #fff);
@@ -2471,18 +2505,21 @@ body.admin_page_members-about #wpbody-content {
left: 0;
}
-.members-am-user-suggestion {
+.members-am-user-suggestion,
+.members-am-exempt-suggestion {
padding: 8px 12px;
cursor: pointer;
font-size: 13px;
border-bottom: 1px solid var(--wp-components-color-gray-200, #f0f0f0);
}
-.members-am-user-suggestion:hover {
+.members-am-user-suggestion:hover,
+.members-am-exempt-suggestion:hover {
background: color-mix(in srgb, var(--members-am-accent-use) 8%, var(--wp-components-color-background, #fff));
}
-.members-am-user-suggestion:last-child {
+.members-am-user-suggestion:last-child,
+.members-am-exempt-suggestion:last-child {
border-bottom: none;
}
diff --git a/css/admin.min.css b/css/admin.min.css
index 962300f..24da8a8 100644
--- a/css/admin.min.css
+++ b/css/admin.min.css
@@ -1 +1 @@
-#members-cp h2.hndle,#members-cp-side h2.hndle{border-bottom:none !important;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}#members-cp h2.hndle:before,#members-cp-side h2.hndle:before{content:url("data:image/svg+xml,%3Csvg width='15px' aria-hidden='true' focusable='false' data-prefix='fas' data-icon='users-cog' class='svg-inline--fa fa-users-cog fa-w-20' role='img' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 640 512'%3E%3Cpath fill='currentColor' d='M610.5 341.3c2.6-14.1 2.6-28.5 0-42.6l25.8-14.9c3-1.7 4.3-5.2 3.3-8.5-6.7-21.6-18.2-41.2-33.2-57.4-2.3-2.5-6-3.1-9-1.4l-25.8 14.9c-10.9-9.3-23.4-16.5-36.9-21.3v-29.8c0-3.4-2.4-6.4-5.7-7.1-22.3-5-45-4.8-66.2 0-3.3.7-5.7 3.7-5.7 7.1v29.8c-13.5 4.8-26 12-36.9 21.3l-25.8-14.9c-2.9-1.7-6.7-1.1-9 1.4-15 16.2-26.5 35.8-33.2 57.4-1 3.3.4 6.8 3.3 8.5l25.8 14.9c-2.6 14.1-2.6 28.5 0 42.6l-25.8 14.9c-3 1.7-4.3 5.2-3.3 8.5 6.7 21.6 18.2 41.1 33.2 57.4 2.3 2.5 6 3.1 9 1.4l25.8-14.9c10.9 9.3 23.4 16.5 36.9 21.3v29.8c0 3.4 2.4 6.4 5.7 7.1 22.3 5 45 4.8 66.2 0 3.3-.7 5.7-3.7 5.7-7.1v-29.8c13.5-4.8 26-12 36.9-21.3l25.8 14.9c2.9 1.7 6.7 1.1 9-1.4 15-16.2 26.5-35.8 33.2-57.4 1-3.3-.4-6.8-3.3-8.5l-25.8-14.9zM496 368.5c-26.8 0-48.5-21.8-48.5-48.5s21.8-48.5 48.5-48.5 48.5 21.8 48.5 48.5-21.7 48.5-48.5 48.5zM96 224c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm224 32c1.9 0 3.7-.5 5.6-.6 8.3-21.7 20.5-42.1 36.3-59.2 7.4-8 17.9-12.6 28.9-12.6 6.9 0 13.7 1.8 19.6 5.3l7.9 4.6c.8-.5 1.6-.9 2.4-1.4 7-14.6 11.2-30.8 11.2-48 0-61.9-50.1-112-112-112S208 82.1 208 144c0 61.9 50.1 112 112 112zm105.2 194.5c-2.3-1.2-4.6-2.6-6.8-3.9-8.2 4.8-15.3 9.8-27.5 9.8-10.9 0-21.4-4.6-28.9-12.6-18.3-19.8-32.3-43.9-40.2-69.6-10.7-34.5 24.9-49.7 25.8-50.3-.1-2.6-.1-5.2 0-7.8l-7.9-4.6c-3.8-2.2-7-5-9.8-8.1-3.3.2-6.5.6-9.8.6-24.6 0-47.6-6-68.5-16h-8.3C179.6 288 128 339.6 128 403.2V432c0 26.5 21.5 48 48 48h255.4c-3.7-6-6.2-12.8-6.2-20.3v-9.2zM173.1 274.6C161.5 263.1 145.6 256 128 256H64c-35.3 0-64 28.7-64 64v32c0 17.7 14.3 32 32 32h65.9c6.3-47.4 34.9-87.3 75.2-109.4z'%3E%3C/path%3E%3C/svg%3E");margin-right:5px}#members-cp-side .postbox-header{border-bottom:none !important}#members-cp-side .handle-actions .handle-order-higher,#members-cp-side .handle-actions .handle-order-lower{display:none}#members-cp-side .handle-actions .handlediv{position:absolute;right:5px}.members-upgrade-header{text-align:center;padding:5px}.members-upgrade-header a{color:#f59431}.memberpress-paid-memberships{background-color:#f5f5f5;padding:50px 10px;text-align:center}.memberpress-paid-memberships a{background-color:#0e4598;display:inline-block;padding:10px 20px;border-radius:300px;color:#fff;text-decoration:none;margin-top:20px}#members-cp-side .members-tabs{position:relative}#members-cp-side .members-tab-nav{background-color:transparent;margin-bottom:20px;border-right:none !important}#members-cp-side .members-tab-nav .members-tab-title{width:33.333%;height:50px;border-right:none !important}#members-cp-side .members-tab-nav .members-tab-title a{border:0}#members-cp-side .members-tab-content h3{font-weight:bold;font-size:15px;margin-top:0;color:#000;margin-bottom:10px}#members-cp-side .members-tab-content .memberpress-paid-memberships{text-align:left;padding:20px}#members-cp-side .members-tab-content .memberpress-paid-memberships a{display:block;text-align:center}#members-cp-side .members-tabs .members-tab-nav li a,#members-cp-side .members-tabs .members-tab-nav li[aria-selected="false"] a i{color:#555}#members-cp-side .members-tabs .members-tab-nav li a svg,#members-cp-side .members-tabs .members-tab-nav li[aria-selected="false"] a svg{fill:#555}#members-cp-side .members-tabs .members-tab-nav li[aria-selected="true"] a{background-color:transparent;border-bottom:2px solid #3582ae}#members-cp-side .members-tabs .members-tab-nav li[aria-selected="true"] a i{color:#3582ae}#members-cp-side .members-tabs .members-tab-nav li[aria-selected="true"] a svg{fill:#3582ae}.members-tab-title svg,.members-tab-title[aria-selected="false"] svg{fill:#0073aa}.members-tab-title[aria-selected="true"] svg{fill:#555}#wpcontent #members-admin-header{margin-left:-20px;padding:0 28px 0 22px;background-color:#0b1220;background-image:radial-gradient(circle at 12% 35%,rgba(14,69,152,0.45),transparent 55%),radial-gradient(circle at 90% 85%,rgba(245,148,49,0.14),transparent 60%);background-repeat:no-repeat;min-height:56px;position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}#wpcontent #members-admin-header img.members-logo{height:42px;display:block}#wpcontent #members-admin-header .members-by-mp{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:12px;margin-left:auto;text-decoration:none;-webkit-box-shadow:none;box-shadow:none;-webkit-transition:opacity .15s ease;transition:opacity .15s ease}#wpcontent #members-admin-header .members-by-mp:hover,#wpcontent #members-admin-header .members-by-mp:focus{opacity:.75;text-decoration:none;-webkit-box-shadow:none;box-shadow:none}#wpcontent #members-admin-header .members-by-label{color:#94a3b8;font-size:12px;font-weight:500}#wpcontent #members-admin-header img.members-mp-logo{height:18px;display:block}#wpcontent #members-admin-header #membersAdminHeaderNotifications{position:relative;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:36px;height:36px;padding:0;margin:0 0 0 18px;background:rgba(255,255,255,0.06);border:1px solid rgba(255,255,255,0.12);border-radius:8px;color:#fff;cursor:pointer;-webkit-box-shadow:none;box-shadow:none;-webkit-transition:background .15s ease,border-color .15s ease;transition:background .15s ease,border-color .15s ease;line-height:1;vertical-align:middle;min-height:0;text-decoration:none}#wpcontent #members-admin-header #membersAdminHeaderNotifications:hover,#wpcontent #members-admin-header #membersAdminHeaderNotifications:focus{background:rgba(255,255,255,0.12);border-color:rgba(255,255,255,0.24);color:#fff;-webkit-box-shadow:none;box-shadow:none;outline:0}#wpcontent #members-admin-header #membersAdminHeaderNotifications svg{width:16px;height:auto;display:block}#wpcontent #members-admin-header #membersAdminHeaderNotifications svg path{fill:#e2e8f0}#wpcontent #members-admin-header #membersAdminHeaderNotifications .members-notifications-count{position:absolute;top:-4px;right:-4px;min-width:16px;height:16px;padding:0 4px;border-radius:999px;background:#f59431;color:#0b1220;font-size:10px;font-weight:700;line-height:16px;text-align:center;border:1.5px solid #0b1220;-webkit-box-sizing:content-box;box-sizing:content-box}.members-upgrade-header #close-members-upgrade-header{position:absolute;right:20px;top:3px}.members-upgrade-header #close-members-upgrade-header:hover{cursor:pointer}.memberpress-welcome-panel.welcome-panel{margin-top:20px;padding:20px 28px;background:#fff;border-radius:10px;min-height:0}.memberpress-welcome-panel.welcome-panel .welcome-panel-content{min-height:0;height:auto}.members-about{--ink:#0f172a;--ink-soft:#334155;--ink-muted:#64748b;--mp-blue:#0e4598;--mp-teal:#3582ae;--mp-orange:#f59431;--rule:#e5e7eb;--paper:#fbfaf7;--paper-soft:#f3efe6;--paper-line:#e8e3d5;--display-font:"Inter",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;--sans-font:"Inter",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif}body.members_page_members-about #wpbody-content,body.toplevel_page_members-about #wpbody-content,body.admin_page_members-about #wpbody-content{background:var(--paper)}.members-about.wrap{max-width:1120px;margin:0 auto;padding:48px 24px 80px;color:var(--ink);font-family:var(--sans-font)}.members-about__hero{display:grid;grid-template-columns:minmax(0,1fr) 200px;grid-template-areas:"head mark" "body mark";gap:32px 56px;-webkit-box-align:start;-ms-flex-align:start;align-items:start;padding-bottom:64px;border-bottom:1px solid var(--paper-line)}.members-about__hero-head{grid-area:head}.members-about__body{grid-area:body}.members-about__mark{grid-area:mark;align-self:start}.members-about__eyebrow{display:inline-block;font-family:var(--sans-font);font-size:12px;font-weight:600;letter-spacing:.18em;text-transform:uppercase;color:var(--ink-muted);padding-bottom:18px}.members-about__title{font-family:var(--display-font);font-weight:900;font-size:clamp(40px,5.5vw,64px);line-height:1;letter-spacing:-0.035em;color:var(--ink);margin:0}.members-about__title em{font-style:normal;font-weight:900;color:var(--mp-blue)}.members-about__title-dot{color:var(--mp-blue);font-style:normal;font-weight:900}.members-about__body{max-width:60ch;font-size:15.5px;line-height:1.62;color:var(--ink-soft)}.members-about__body p{margin:0 0 14px}.members-about__body p:last-child{margin-bottom:0}.members-about__lead{font-family:var(--sans-font);font-weight:500;font-size:17px;line-height:1.5;color:var(--ink);margin-bottom:24px !important;padding-left:18px;border-left:2px solid var(--mp-blue)}.members-about__body a,.members-about__lead a{color:var(--mp-blue);text-decoration:none;background-image:-webkit-gradient(linear,left top,left bottom,from(currentColor),to(currentColor));background-image:linear-gradient(currentColor,currentColor);background-size:100% 1px;background-position:0 100%;background-repeat:no-repeat;padding-bottom:1px;-webkit-transition:color .2s ease,background-size .2s ease;transition:color .2s ease,background-size .2s ease}.members-about__body a:hover,.members-about__lead a:hover{color:var(--mp-orange)}.members-about__body em,.members-about__lead em{font-style:normal;font-weight:700;color:var(--mp-blue)}.members-about__mark{padding:24px;background:#fff;border:1px solid var(--paper-line);border-radius:4px;-webkit-box-shadow:0 1px 2px rgba(15,23,42,0.03);box-shadow:0 1px 2px rgba(15,23,42,0.03);-webkit-transition:-webkit-transform .25s ease,-webkit-box-shadow .25s ease;transition:-webkit-transform .25s ease,-webkit-box-shadow .25s ease;transition:transform .25s ease,box-shadow .25s ease;transition:transform .25s ease,box-shadow .25s ease,-webkit-transform .25s ease,-webkit-box-shadow .25s ease}.members-about__mark:hover{-webkit-transform:translateY(-2px);transform:translateY(-2px);-webkit-box-shadow:0 8px 20px rgba(15,23,42,0.08);box-shadow:0 8px 20px rgba(15,23,42,0.08)}.members-about__mark a{display:block;-webkit-box-shadow:none !important;box-shadow:none !important;text-decoration:none}.members-about__mark img{display:block;width:100%;height:auto;max-width:160px;margin:0 auto}.members-about__products{padding-top:56px}.members-about__products-head{margin-bottom:28px;text-align:center}.members-about__products-head h3{font-family:var(--display-font);font-weight:700;font-size:15px;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-muted);margin:0}.members-about__grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px}.members-about__card{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;padding:24px;background:#fff;border:1px solid var(--paper-line);border-radius:6px;-webkit-transition:border-color .25s ease,-webkit-transform .25s ease,-webkit-box-shadow .25s ease;transition:border-color .25s ease,-webkit-transform .25s ease,-webkit-box-shadow .25s ease;transition:transform .25s ease,box-shadow .25s ease,border-color .25s ease;transition:transform .25s ease,box-shadow .25s ease,border-color .25s ease,-webkit-transform .25s ease,-webkit-box-shadow .25s ease}.members-about__card:hover{-webkit-transform:translateY(-3px);transform:translateY(-3px);-webkit-box-shadow:0 12px 28px rgba(15,23,42,0.08);box-shadow:0 12px 28px rgba(15,23,42,0.08);border-color:rgba(14,69,152,0.2)}.members-about__card-head{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:14px;margin-bottom:14px}.members-about__card-icon{-webkit-box-flex:0;-ms-flex:0 0 44px;flex:0 0 44px;width:44px;height:44px;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;background:var(--paper-soft);border-radius:10px;overflow:hidden}.members-about__card-icon img{display:block;max-width:32px;max-height:32px;width:auto;height:auto}.members-about__card-title{margin:0;font-family:var(--display-font);font-weight:700;font-size:17px;line-height:1.2;letter-spacing:-0.01em;color:var(--ink)}.members-about__card-title a{color:inherit;text-decoration:none;-webkit-box-shadow:none;box-shadow:none}.members-about__card-title a:hover{color:var(--mp-blue)}.members-about__card-desc{-webkit-box-flex:1;-ms-flex:1;flex:1;margin:0 0 24px;font-size:14px;line-height:1.55;color:var(--ink-soft)}.members-about__card-foot{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;gap:16px;padding-top:16px;border-top:1px solid var(--paper-line)}.members-about__status{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;font-size:12px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-muted)}.members-about__status::before{content:"";width:7px;height:7px;border-radius:50%;background:currentColor}.members-about__status.is-active{color:#10b981}.members-about__status.is-inactive{color:var(--mp-orange)}.members-about__status.is-missing{color:var(--ink-muted)}.members-about__cta{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;padding:8px 14px;font-size:13px;font-weight:600;letter-spacing:.01em;border-radius:4px;text-decoration:none;border:1px solid transparent;-webkit-transition:background .2s ease,border-color .2s ease,color .2s ease,-webkit-transform .15s ease;transition:background .2s ease,border-color .2s ease,color .2s ease,-webkit-transform .15s ease;transition:background .2s ease,border-color .2s ease,color .2s ease,transform .15s ease;transition:background .2s ease,border-color .2s ease,color .2s ease,transform .15s ease,-webkit-transform .15s ease;-webkit-box-shadow:none;box-shadow:none}.members-about__cta:focus,.members-about__cta:focus-visible{outline:2px solid var(--mp-blue);outline-offset:2px;-webkit-box-shadow:none;box-shadow:none}.members-about__cta.is-primary{background:var(--mp-blue);color:#fff}.members-about__cta.is-primary:hover{background:#093374;color:#fff;-webkit-transform:translateY(-1px);transform:translateY(-1px)}.members-about__cta.is-secondary{background:transparent;color:var(--ink);border-color:var(--rule)}.members-about__cta.is-secondary:hover{border-color:var(--ink);background:#fff;color:var(--ink)}.members-about__cta svg{-webkit-transition:-webkit-transform .2s ease;transition:-webkit-transform .2s ease;transition:transform .2s ease;transition:transform .2s ease,-webkit-transform .2s ease}.members-about__cta:hover svg{-webkit-transform:translate(1px,-1px);transform:translate(1px,-1px)}@media(max-width:900px){.members-about__hero{grid-template-columns:1fr;grid-template-areas:"head" "body" "mark";gap:24px}.members-about__mark{max-width:160px}.members-about__grid{grid-template-columns:1fr}}.memberpress-welcome-panel.welcome-panel:before{background:0}.memberpress-welcome-panel.welcome-panel .about-description{margin:20px 0}.memberpress-welcome-panel.welcome-panel-content{margin:0}.memberpress-welcome-panel.welcome-panel-content .mp-logo-wrap>a{display:block}@media screen and (min-width:870px){.members_page_members-settings .members-short-p{max-width:612px;margin-left:auto;margin-right:auto}.members_page_members-settings .welcome-panel-content{text-align:center}}.members_page_members-settings .welcome-panel .button.button-hero{margin-left:auto;margin-right:auto}.members_page_members-settings .members-svg-wrap{display:inline-block;margin:0 auto 20px}@media screen and (max-width:870px){.members_page_members-settings .welcome-panel{padding:20px}.members_page_members-settings .members-svg-wrap{float:left;margin-right:28px}.admin_page_members-settings.rtl .members-svg-wrap{float:right;margin-right:0;margin-left:28px}}.members_page_members-settings .members-svg-link{display:table-cell;text-align:center;width:128px;height:128px;background:#363b3f;color:#fff;padding:24px 16px 16px;border-radius:50%;-webkit-box-sizing:border-box;box-sizing:border-box;border:4px solid #fff;-webkit-box-shadow:0 0 0 4px #363b3f;box-shadow:0 0 0 4px #363b3f}.members_page_members-settings .members-svg-link svg{max-width:84px;max-height:64px;width:auto;height:auto}.members-addons{display:grid;grid-template-columns:1fr 1fr;grid-row-gap:20px;grid-column-gap:20px}.members-addons .plugin-card{margin:0}.members-addons .plugin-card-top{width:100%}.members-addon{width:100%;position:relative;float:none;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.members-addon .desc{margin-bottom:80px}.addon-activate{text-align:center;border:1px solid #ddd;border-radius:3px;padding:5px 10px 10px;display:inline-block;width:100px;position:absolute;right:20px;bottom:20px}.activate-toggle:hover{cursor:pointer}.activate-toggle svg{max-width:20px;position:relative;top:5px}.activate-toggle svg{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.activate-toggle svg.active{-webkit-transform:rotate(0);transform:rotate(0)}.activate-toggle svg path{fill:#ccc}.activate-toggle svg.active path{fill:#8cbd5a}.activate-toggle.processing{cursor:not-allowed;pointer-events:none;opacity:.5}.activate-toggle .action-label{display:inline-block;width:50px;text-align:left}.mepr_dummy_txns{-webkit-filter:blur(3px);filter:blur(3px);position:absolute;top:0;left:0;width:100%;z-index:5;pointer-events:none}.mepr_dummy_txns::after{background-color:rgba(0,0,0,.2);position:absolute;top:0;left:0;width:100%;height:100%;z-index:6}.mepr-upgrade-table{position:relative}.mepr-upgrade-table .mepr-upgrade{position:relative;top:100px;z-index:10;background:rgba(0,0,0,.2);width:100%;height:100%;max-width:600px;margin:0 auto;-webkit-box-shadow:0 0 30px #ccc;box-shadow:0 0 30px #ccc}.mepr-upgrade-content{background-color:#fff;padding:20px;text-align:center}.mepr-upgrade-content h2{font-size:24px}.mepr-upgrade-content h4{font-size:18px}.mepr-upgrade-content .features{display:grid;grid-template-columns:1fr 1fr;grid-column-gap:30px;grid-row-gap:10px;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;text-align:left;padding:10px}.features li:before{content:"\f147";font-family:dashicons;color:green;font-size:20px;position:relative;top:4px;margin-right:10px}.mepr-upgrade-cta{text-align:center;background-color:#f2f2f2;padding:20px}.mepr-upgrade-cta .mepr-cta-button{display:block;max-width:300px;margin:0 auto 20px;background-color:#fd9c27;color:#fff;padding:15px;font-size:18px;font-weight:bold;text-decoration:none;border-radius:300px}.members-plugin-card.plugin-card:nth-child(even){margin-right:inherit}.members-plugin-card.plugin-card:nth-child(odd){clear:none;margin-left:inherit}.members-plugin-card.plugin-card .plugin-card-top{min-height:0;padding:30px 20px}.members-plugin-card.plugin-card .plugin-icon{top:30px}.members-plugin-card.plugin-card .plugin-card-bottom .column-status{font-weight:bold}.members-plugin-card.plugin-card .plugin-card-bottom .column-status .active{color:#8cbd5a}.members-plugin-card.plugin-card .plugin-card-bottom .column-status .inactive{color:red}.members-plugin-card.plugin-card .plugin-icon{width:64px;height:auto}.plugin-icon-small{width:32px;height:auto}.members-plugin-card.plugin-card .name,.members-plugin-card.plugin-card .desc{margin-right:0;margin-left:84px}.members-addons .plugin-card .name,.members-addons .plugin-card .desc p{margin-right:0}@media screen and (max-width:1100px){.members-addons{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}}@media screen and (max-width:600px){.members_page_members-settings .members-svg-link{width:64px;height:64px}.members_page_members-settings .members-svg-link svg{position:absolute;top:14px;left:15px;max-width:30px;max-height:30px}.members_page_members-settings .plugin-card-members-edd-integration .members-svg-link svg,.members_page_members-settings .plugin-card-members-acf-integration .members-svg-link svg,.members_page_members-settings .plugin-card-members-givewp-integration .members-svg-link svg,.members_page_members-settings .plugin-card-members-meta-box-integration .members-svg-link svg,.members_page_members-settings .plugin-card-members-woocommerce-integration .members-svg-link svg{top:10px;left:8px;max-width:40px;max-height:40px}.members_page_members-settings .plugin-card-members-block-permissions .members-svg-link svg,.members_page_members-settings .plugin-card-members-role-hierarchy .members-svg-link svg{left:14px}.members-addons .plugin-card .desc>p,.members-addons .plugin-card .name{margin-left:84px}}.memberpress-about .welcome-panel-column-container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:40px;padding:0;margin:0}.memberpress-about .mp-desc p{font-size:13px;line-height:1.6;color:#334155;margin:0 0 12px}.memberpress-about .mp-desc p:first-child{font-size:15px;font-weight:600;color:#0f172a;margin-top:0;margin-bottom:14px}.memberpress-about .mp-desc p:last-child{margin-bottom:0}.memberpress-about .mp-logo-wrap{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.memberpress-about .mp-logo{display:block;max-width:220px;height:auto;margin:0}.members-about-addons{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-column-gap:20px}.members-about-addons .members-plugin-card{margin:0;width:100%}.members-about-addons .members-plugin-card .plugin-icon{position:static;width:auto;height:28px;max-width:40px;-o-object-fit:contain;object-fit:contain;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;display:block}.members-about-addons .members-plugin-card .name,.members-about-addons .members-plugin-card .desc{margin-left:0}.members-about-addons .members-plugin-card .plugin-card-top{padding:20px}.members-about-addons .members-plugin-card .name h3{margin:0 0 10px;min-height:0;height:auto;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:10px;line-height:1.2}.members-about-addons .members-plugin-card .name h3 a{text-decoration:none;line-height:1.2}.members-about-addons .members-plugin-card .plugin-card-bottom{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}@media only screen and (max-width:1099px){.members-about-addons{grid-template-columns:1fr;grid-row-gap:20px}}@media screen and (min-width:1100px) and (max-width:1600px){.members-about-addons .members-plugin-card{float:none;width:auto;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.members-plugin-card.plugin-card .desc{margin-left:0;margin-top:50px}.members-plugin-card.plugin-card .desc p{margin-left:0;margin-right:0}.members-plugin-card.plugin-card .plugin-card-bottom .column-status{float:none}.members-plugin-card.plugin-card .plugin-card-bottom .column-updated{float:none;width:auto}}@media screen and (max-width:1200px){.welcome-panel .welcome-panel-column-container{-webkit-box-orient:vertical;-webkit-box-direction:reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse;gap:0;padding:0}.memberpress-about .mp-logo{margin:0 0 20px}}.members-plugin-card.plugin-card .desc p{margin-left:0;margin-right:0}@media only screen and (min-width:783px){.members_page_roles .column-users,.members_page_roles .column-granted_caps,.members_page_roles .column-denied_caps{width:100px;text-align:center}}.members-title-div #titlewrap input{padding:0 8px;font-size:1.7em;line-height:normal;height:1.7em;width:100%;outline:0;margin:0 0 3px;background-color:#fff}.members-title-div input[name="role"]{font-size:13px;height:22px;margin:0;width:16em}#tabcapsdiv{margin-top:1em}#tabcapsdiv>.hndle{padding:10px;border-bottom:1px solid #eee}#tabcapsdiv .inside,#members-cp .inside{margin:0;padding:0}.members-cap-tabs,.members-tabs{overflow:hidden;background:#fff;background:-webkit-gradient(linear,left top,right top,from(#fafafa),color-stop(20%,#fafafa),color-stop(20%,#fff),to(#fff));background:linear-gradient(90deg,#fafafa 0,#fafafa 20%,#fff 20%,#fff 100%)}@media only screen and (max-width:782px){.members-cap-tabs,.members-tabs{background:linear-gradient(90deg,#fafafa 0,#fafafa 48px,#fff 48px,#fff 100%)}}.members-cap-tabs .members-tab-nav,.members-tabs .members-tab-nav{position:relative;float:left;list-style:none;width:20%;line-height:1em;margin:0 0 -1px 0;padding:0;background-color:#fafafa;border-right:1px solid #eee;-webkit-box-sizing:border-box;box-sizing:border-box}.members-cap-tabs .members-tab-nav li,.members-tabs .members-tab-nav li{display:block;position:relative;margin:0;padding:0;line-height:20px}.members-cap-tabs .members-tab-nav li a,.members-tabs .members-tab-nav li a{display:block;margin:0;padding:10px;line-height:20px !important;text-decoration:none;border-bottom:1px solid #eee;-webkit-box-shadow:none;box-shadow:none}.members-cap-tabs .members-tab-nav li a .dashicons,.members-tabs .members-tab-nav li a .dashicons{line-height:20px;margin-right:3px}.members-cap-tabs .members-tab-nav li[aria-selected="true"] a,.members-tabs .members-tab-nav li[aria-selected="true"] a{position:relative;font-weight:bold;color:#555;background-color:#e0e0e0}@media only screen and (max-width:782px){.members-cap-tabs .members-tab-nav,.members-tabs .members-tab-nav{width:48px}.members-cap-tabs .members-tab-nav li a .dashicons,.members-tabs .members-tab-nav li a .dashicons{width:24px;height:24px;font-size:24px;line-height:24px}.members-tab-nav li .dashicons::before,.members-tab-nav li .dashicons::before{width:24px;height:24px}.members-tab-nav li .label{overflow:hidden;position:absolute;top:-1000em;left:-1000em;width:1px;height:1px}}.members-cap-tabs .members-tab-wrap,.members-tabs .members-tab-wrap{float:left;width:80%;margin-left:-1px}@media only screen and (max-width:782px){.members-cap-tabs .members-tab-wrap,.members-tabs .members-tab-wrap{width:calc(100% - 48px)}}#members-cp .members-tab-content{padding:10px;border-left:1px solid #e5e5e5}.members-roles-select th,.members-roles-select td{width:190px;overflow:hidden}.members-roles-select .check-all-th{text-align:center}.members-roles-select .check-all-th label{padding-left:5px}@media only screen and (min-width:850px){#side-sortables .members-tabs{background:#fff}#side-sortables .members-tabs .members-tab-wrap{width:100%}#side-sortables .members-tabs .members-tab-nav{display:table;width:100%}#side-sortables .members-tabs .members-tab-nav li{display:table-cell;text-align:center;border-right:1px solid #eee}#side-sortables .members-tabs .members-tab-nav li:last-of-type{border-right:0}#side-sortables .members-tabs .members-tab-nav li a{padding:10px 0}#side-sortables .members-tabs .members-tab-nav .dashicons{width:24px;height:24px;font-size:24px;line-height:24px}#side-sortables .members-tabs .members-tab-nav .dashicons::before{width:24px;height:24px}#side-sortables .members-tabs .members-tab-nav .label{overflow:hidden;position:absolute;top:-1000em;left:-1000em;width:1px;height:1px}}.members-tabs .members-tabs-label{display:block !important;font-weight:bold;display:inline-block;margin-bottom:4px}.members-tabs .butterbean-control-checkbox .members-tabs-label{display:inline !important}.members-tabs .members-tabs-description{display:block;font-style:italic;margin-top:4px}.members-tabs .members-tabs-label+.members-tabs-description{margin-top:0;margin-bottom:4px}#tabcapsdiv table{border-right:0;border-top:0;border-bottom:0}#tabcapsdiv table td,#tabcapsdiv table th{padding:10px;padding-bottom:10px;border-bottom:1px solid #eee;font-size:13px;line-height:20px}#tabcapsdiv table td{padding:9px}#tabcapsdiv tbody tr:last-of-type td{border-bottom:0}#tabcapsdiv tfoot th{border-color:#eee}@media only screen and (max-width:782px){#tabcapsdiv table td,#tabcapsdiv table th{line-height:24px}}.members-roles-select .column-grant,.members-roles-select .column-deny{width:70px !important;text-align:left;display:table-cell !important;clear:none !important}.members-roles-select thead th,.members-roles-select tfoot th{padding:9px !important}.members-roles-select .column-grant input,.members-roles-select .column-deny input{margin:0 5px 0 0;vertical-align:middle}.members-roles-select tbody tr:nth-child(even){background:#f2f2f2}.members-cap-tabs button{display:inline;margin:-4px;line-height:inherit;padding:4px 8px;border:1px solid transparent;background:transparent;border-radius:0;outline:0;-webkit-transition:all .25s ease-out;transition:all .25s ease-out}.members-cap-tabs button:hover,.members-cap-tabs button:focus{border-color:#eee;background:#fafafa;cursor:pointer}.members-cap-tabs button:active{color:#0073aa;border-color:#0073aa}.members-cap-tabs button+.dashicons{display:none;margin-top:1px;margin-bottom:-1px;line-height:inherit}.members-cap-tabs button:hover+.dashicons,.members-cap-tabs button:focus+.dashicons{display:inline-block}.members-tab-content .members-highlight{background-color:rgba(0,115,170,0.05)}.members-tab-content tbody{-webkit-transition:all 2s ease-in-out;transition:all 2s ease-in-out}.members-cp-role-list-wrap{overflow:auto;min-height:42px;max-height:200px;padding:0 .9em;border:solid 1px #dfdfdf;background-color:#fdfdfd}#wpbody-content{padding-bottom:200px}.members-footer-promotion{text-align:center;font-weight:400;font-size:13px;line-height:16px;color:#787c82;padding:20px 0 30px 0;margin-bottom:20px}.members-footer-promotion p{font-weight:600}.members-footer-promotion-links,.members-footer-promotion-social{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.members-footer-promotion-links{margin:9px 0 0}.members-footer-promotion-links span{color:#c3c4c7;padding:0 7px}.members-footer-promotion-social{margin:10px 0 0 0;gap:10px}.members-footer-promotion-social li{margin-bottom:0}.members-footer-promotion-social a{display:block;height:16px}.members_page_members-settings.rtl{.addon-activate{left:20px;right:unset}.members-addons .plugin-card{.name,.desc p{margin-left:0;margin-right:148px}}}.button.button-warning{background:#dc3232;border-color:#dc3232;color:#fff}.button.button-warning:hover,.button.button-warning:focus{background:#c92424;border-color:#c92424;color:#fff}.members-reset-spinner{float:none;margin-top:0;vertical-align:middle}.members-admin-menus-wrap{max-width:1400px;--members-am-accent-use:var(--members-am-accent,var(--wp-admin-theme-color,#2271b1));--members-am-surface-use:var(--members-am-surface,color-mix(in srgb,var(--members-am-base,#1d2327) 88%,#fff 12%));--members-am-border-on-base-fallback:color-mix(in srgb,var(--members-am-base,#1d2327) 62%,#fff 38%);--members-am-chrome-bg:var(--wp-components-color-gray-100,#f6f7f7);--members-am-chrome-border:var(--wp-components-color-gray-400,#c3c4c7);--members-am-muted:var(--wp-components-color-gray-600,#646970)}.members-am-notices{margin:0 0 12px}.members-am-notices .notice{margin:0 0 8px}.members-admin-menus-toolbar{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;gap:0;margin-bottom:16px;border:1px solid var(--members-am-chrome-border,#c3c4c7);border-radius:2px;background:var(--wp-components-color-background,#fff);overflow:visible}.members-am-toolbar-row{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px}.members-am-toolbar-row--primary{padding:10px 12px;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;row-gap:10px}.members-am-toolbar-group{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px}.members-am-toolbar-group--document{position:relative;z-index:5;padding-right:12px;border-right:1px solid var(--members-am-chrome-border,#c3c4c7)}.members-am-toolbar-row--primary .members-am-toolbar-primary-user{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px;margin-left:8px;-webkit-box-flex:0;-ms-flex:0 1 auto;flex:0 1 auto;min-width:0}.members-am-toolbar-row--primary .members-am-toolbar-primary-user #members-am-user-search.members-am-user-search-input{width:168px;max-width:100%;min-width:0}.members-am-toolbar-group--view{margin-left:auto;-ms-flex-wrap:nowrap;flex-wrap:nowrap}.members-am-toolbar-extra{background:var(--members-am-chrome-bg,#f6f7f7);border-top:1px solid var(--members-am-chrome-border,#c3c4c7);padding:10px 12px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:10px}.members-am-toolbar-extra[hidden]{display:none !important}.members-am-toolbar-row--extra-tools{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-wrap:wrap;flex-wrap:wrap;row-gap:10px}.members-am-toolbar-row--extra-tools .members-am-copy-wrap{margin-left:4px;padding-left:12px;border-left:1px solid var(--members-am-chrome-border,#c3c4c7)}.members-am-toolbar-row--extra-tools .members-am-toolbar-group--io{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;margin-left:8px;padding-left:12px;border-left:1px solid var(--members-am-chrome-border,#c3c4c7)}.members-am-more-tools,.members-am-more-tools:hover,.members-am-more-tools:focus,.members-am-more-tools:focus-visible,.members-am-more-tools:active{text-decoration:none !important}.members-am-more-tools{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:4px;white-space:nowrap;padding:2px 2px 2px 4px;vertical-align:middle;line-height:1.4}.members-am-more-tools .members-am-more-tools-text,.members-am-more-tools:hover .members-am-more-tools-text,.members-am-more-tools:focus .members-am-more-tools-text,.members-am-more-tools:focus-visible .members-am-more-tools-text,.members-am-more-tools:active .members-am-more-tools-text,.members-am-more-tools .members-am-more-tools-chevron,.members-am-more-tools:hover .members-am-more-tools-chevron,.members-am-more-tools:focus .members-am-more-tools-chevron,.members-am-more-tools:focus-visible .members-am-more-tools-chevron,.members-am-more-tools:active .members-am-more-tools-chevron,.members-am-more-tools .members-am-more-tools-chevron-svg,.members-am-more-tools:hover .members-am-more-tools-chevron-svg,.members-am-more-tools:focus .members-am-more-tools-chevron-svg,.members-am-more-tools:focus-visible .members-am-more-tools-chevron-svg,.members-am-more-tools:active .members-am-more-tools-chevron-svg{text-decoration:none !important}.members-am-more-tools .members-am-more-tools-text{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;line-height:1.4}.members-am-more-tools .members-am-more-tools-chevron{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-ms-flex-negative:0;flex-shrink:0;line-height:0;opacity:.88}.members-am-more-tools .members-am-more-tools-chevron-svg{display:block;overflow:visible;-webkit-transition:-webkit-transform .15s ease;transition:-webkit-transform .15s ease;transition:transform .15s ease;transition:transform .15s ease,-webkit-transform .15s ease;-webkit-transform-origin:50% 50%;transform-origin:50% 50%;shape-rendering:geometricPrecision}.members-am-more-tools .members-am-more-tools-chevron-svg polygon{stroke:none}.members-am-more-tools.is-open .members-am-more-tools-chevron-svg{-webkit-transform:rotate(180deg);transform:rotate(180deg)}@media(prefers-reduced-motion:reduce){.members-am-more-tools .members-am-more-tools-chevron-svg{-webkit-transition:none;transition:none}}@media screen and (max-width:782px){.members-am-toolbar-group--document{border-right:0;padding-right:0;border-bottom:1px solid var(--members-am-chrome-border,#c3c4c7);padding-bottom:10px;width:100%}.members-am-toolbar-group--view{margin-left:0;width:100%;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.members-am-toolbar-row--primary .members-am-toolbar-primary-user{margin-left:0;padding-left:0;border-left:0;padding-top:8px;border-top:1px solid var(--members-am-chrome-border,#c3c4c7);width:100%;max-width:none}.members-am-toolbar-row--primary .members-am-toolbar-primary-user #members-am-user-search.members-am-user-search-input{width:100%;max-width:100%}.members-am-toolbar-row--extra-tools .members-am-admin-editable{width:100%}.members-am-toolbar-row--extra-tools .members-am-copy-wrap{margin-left:0;padding-left:0;border-left:0;padding-top:8px;border-top:1px solid var(--members-am-chrome-border,#c3c4c7);width:100%}.members-am-toolbar-row--extra-tools .members-am-toolbar-group--io{margin-left:0;padding-left:0;border-left:0;padding-top:8px;border-top:1px solid var(--members-am-chrome-border,#c3c4c7);width:100%}}.members-am-toolbar-loading{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;margin-left:4px;color:var(--members-am-muted,#646970);font-size:13px;line-height:1}.members-am-toolbar-loading .spinner{float:none;margin:0}.members-am-toolbar-loading[hidden]{display:none !important}.members-am-copy-wrap label{margin-right:8px}.members-am-chips{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:8px;margin-bottom:12px}.members-am-chip{border-radius:999px;padding:4px 12px;border:1px solid var(--members-am-chrome-border,#c3c4c7);background:var(--members-am-chrome-bg,#f6f7f7);cursor:pointer}.members-am-chip.is-active{background:var(--members-am-accent-use);border-color:var(--members-am-accent-use);color:var(--wp-components-color-accent-inverted,#fff)}.members-am-carousel-wrap{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;gap:8px;margin-bottom:8px}.members-am-carousel-prev,.members-am-carousel-next{-ms-flex-item-align:center;align-self:center;width:36px;height:36px;border-radius:50%;border:1px solid var(--members-am-chrome-border,#c3c4c7);background:var(--wp-components-color-background,#fff);cursor:pointer}.members-am-columns{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-ms-flex:1;flex:1;gap:12px;min-height:320px;overflow:hidden}.members-am-column{-webkit-box-flex:1;-ms-flex:1;flex:1;min-width:0;background:var(--members-am-base,#1d2327);border-radius:4px;color:var(--members-am-fg-on-base,#f0f0f1);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.members-am-user-column{border:2px dashed var(--wp-components-color-gray-700,#8c8f94)}.members-am-sidebar-head{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:8px 10px;background:var(--members-am-surface-use);border-radius:4px 4px 0 0;font-weight:600;font-size:12px;text-transform:uppercase;letter-spacing:.04em;color:var(--members-am-fg-on-surface,var(--members-am-fg-on-base,#f0f0f1))}.members-am-col-filter{padding:6px 8px 8px;border-bottom:1px solid var(--members-am-border-on-base,var(--members-am-border-on-base-fallback));-ms-flex-negative:0;flex-shrink:0}.members-am-col-filter-input{width:100%;max-width:100%;-webkit-box-sizing:border-box;box-sizing:border-box;font-size:12px;line-height:1.4;padding:4px 8px;border-radius:2px;border:1px solid var(--members-am-border-on-base,var(--members-am-border-on-base-fallback));background:var(--members-am-base,#1d2327);color:var(--members-am-fg-on-base,#f0f0f1)}.members-am-col-filter-input::-webkit-input-placeholder{color:var(--members-am-fg-muted-on-base,var(--wp-components-color-gray-700,#8c8f94));opacity:1}.members-am-col-filter-input::-moz-placeholder{color:var(--members-am-fg-muted-on-base,var(--wp-components-color-gray-700,#8c8f94));opacity:1}.members-am-col-filter-input:-ms-input-placeholder{color:var(--members-am-fg-muted-on-base,var(--wp-components-color-gray-700,#8c8f94));opacity:1}.members-am-col-filter-input::-ms-input-placeholder{color:var(--members-am-fg-muted-on-base,var(--wp-components-color-gray-700,#8c8f94));opacity:1}.members-am-col-filter-input::placeholder{color:var(--members-am-fg-muted-on-base,var(--wp-components-color-gray-700,#8c8f94));opacity:1}.members-am-col-filter-input:focus{border-color:var(--members-am-accent-use);outline:1px solid transparent;-webkit-box-shadow:0 0 0 var(--wp-admin-border-width-focus,1px) var(--members-am-accent-use);box-shadow:0 0 0 var(--wp-admin-border-width-focus,1px) var(--members-am-accent-use)}.members-am-col-bulk{padding:0 8px 8px;border-bottom:1px solid var(--members-am-border-on-base,var(--members-am-border-on-base-fallback));-ms-flex-negative:0;flex-shrink:0}.members-am-col-bulk-toolbar,.members-am-col-collapse-toolbar{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:6px;margin-bottom:6px;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.members-am-col-bulk-toolbar .button.button-small,.members-am-col-collapse-toolbar .button.button-small{font-size:11px;min-height:26px;line-height:24px;padding:0 8px;background:var(--members-am-surface-use);border-color:var(--members-am-border-on-surface,var(--members-am-border-on-base,var(--members-am-border-on-base-fallback)));color:var(--members-am-fg-on-surface,var(--members-am-fg-on-base,#f0f0f1))}.members-am-col-bulk-toolbar .button.button-small:hover,.members-am-col-collapse-toolbar .button.button-small:hover{background:color-mix(in srgb,var(--members-am-surface-use) 85%,#fff 15%);border-color:var(--wp-components-color-gray-700,#8c8f94);color:var(--members-am-fg-on-surface,var(--members-am-fg-on-base,#f0f0f1))}.members-am-item-lead{-ms-flex-negative:0;flex-shrink:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:22px;padding:2px 0 0}.members-am-collapse-spacer{display:block;width:20px;height:20px;-ms-flex-negative:0;flex-shrink:0}.members-am-collapse-toggle{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:22px;height:22px;margin:0;padding:0;border:0;background:transparent;color:var(--members-am-fg-muted-on-base,var(--members-am-chrome-border,#c3c4c7));border-radius:2px;cursor:pointer;-ms-flex-negative:0;flex-shrink:0}.members-am-collapse-toggle:hover,.members-am-collapse-toggle:focus{color:var(--members-am-fg-on-base,#f0f0f1);background:color-mix(in srgb,var(--members-am-fg-on-base,#f0f0f1) 12%,transparent);outline:0}.members-am-collapse-toggle .dashicons{font-size:18px;width:18px;height:18px}.members-am-item-cb-wrap{-ms-flex-negative:0;flex-shrink:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;padding:2px 4px 0 0}.members-am-item-cb{margin:0;width:16px;height:16px;-ms-flex-negative:0;flex-shrink:0}.members-am-bulk-select{width:100%;max-width:100%;-webkit-box-sizing:border-box;box-sizing:border-box;font-size:12px;line-height:1.4;padding:4px 8px;border-radius:2px;border:1px solid var(--members-am-border-on-base,var(--members-am-border-on-base-fallback));background:var(--members-am-base,#1d2327);color:var(--members-am-fg-on-base,#f0f0f1)}.members-am-bulk-select:focus{border-color:var(--members-am-accent-use);outline:1px solid transparent;-webkit-box-shadow:0 0 0 var(--wp-admin-border-width-focus,1px) var(--members-am-accent-use);box-shadow:0 0 0 var(--wp-admin-border-width-focus,1px) var(--members-am-accent-use)}.members-am-item.members-am-filter-hidden,.members-am-sep.members-am-filter-hidden,.members-am-item.members-am-collapse-hidden{display:none !important}.members-am-col-move button{margin-left:4px;padding:0 6px;min-height:24px;line-height:22px;font-size:11px}.members-am-sidebar-list{padding:6px 0 12px;overflow-y:auto;max-height:480px}.members-am-item{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;gap:4px;padding:6px 10px 6px 6px;cursor:pointer;border-left:3px solid transparent;font-size:13px}.members-am-item.is-sub{padding-left:22px;font-size:12px;opacity:.95}.members-am-item.is-sub-deep{padding-left:36px}.members-am-sidebar-list .members-am-item{cursor:-webkit-grab;cursor:grab}.members-am-sidebar-list .members-am-item:active{cursor:-webkit-grabbing;cursor:grabbing}.members-am-sort-placeholder{-webkit-box-sizing:border-box;box-sizing:border-box;min-height:36px;margin:2px 0;background:color-mix(in srgb,var(--members-am-accent-use) 8%,transparent);border:1px dashed var(--members-am-accent-use);border-radius:2px}.members-am-item.is-hidden{opacity:.18}.members-am-item.is-no-cap{opacity:.35}.members-am-item.is-no-cap.is-hidden{opacity:.15}.members-am-item.is-selected{border-left-color:var(--members-am-accent-use);background:color-mix(in srgb,var(--members-am-accent-use) 15%,transparent)}.members-am-item-main{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;min-width:0}.members-am-item-main .dashicons{font-size:18px;width:18px;height:18px}.members-am-item-label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.members-am-item-actions{display:none;gap:2px}.members-am-item:hover .members-am-item-actions{display:-webkit-box;display:-ms-flexbox;display:flex}.members-am-item-actions button{min-height:22px;padding:0 4px;line-height:20px;font-size:11px}.members-am-sep{text-align:center;opacity:.35;font-size:11px;padding:4px 0}.members-am-carousel-dots{text-align:center;margin-bottom:4px}.members-am-dot{width:8px;height:8px;border-radius:50%;border:0;margin:0 4px;padding:0;background:var(--members-am-chrome-border,#c3c4c7);cursor:pointer}.members-am-dot.is-active{background:var(--members-am-accent-use)}.members-am-carousel-status{text-align:center;color:var(--members-am-muted,#646970);font-size:12px;margin-top:0}.members-am-badge{font-size:9px;text-transform:uppercase;padding:1px 4px;border-radius:2px;margin-right:4px;vertical-align:middle}.members-am-badge-new{background:var(--members-am-accent-use);color:var(--wp-components-color-accent-inverted,#fff)}.members-am-badge-edit{background:#dba617;color:var(--members-am-base,#1d2327)}.members-am-badge-nocap{background:var(--wp-components-color-gray-700,#8c8f94);color:var(--wp-components-color-accent-inverted,#fff)}.members-am-legend{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:16px;margin:0 0 8px;padding:0;font-size:12px;color:var(--members-am-muted,#646970)}.members-am-legend-item{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:4px}.members-am-edit-panel{margin-top:20px;padding:16px;border:1px solid var(--members-am-chrome-border,#c3c4c7);background:var(--wp-components-color-background,#fff);border-radius:4px}.members-am-edit-panel-header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:12px}.members-am-edit-panel-header h2{margin:0;font-size:16px}.members-am-edit-toolbar{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:12px;margin-bottom:12px}.members-am-edit-target-wrap select{margin-left:8px}.members-am-level-actions .button{margin-right:6px}.members-am-demote-wrap{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:6px}.members-am-demote-wrap .members-am-demote-select{min-width:200px;max-width:min(320px,100%)}.members-am-edit-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:16px}.members-am-edit-col label{display:block;font-weight:600;margin-bottom:4px}.members-am-colors-hint{margin:0 0 10px}.members-am-colors-readable-wrap{margin:8px 0 0}.members-am-icon-tabs{margin-bottom:8px}.members-am-icon-tabs .button{margin-right:4px;margin-bottom:4px}.members-am-icon-tabs .button.is-active{background:var(--members-am-accent-use);border-color:var(--members-am-accent-use);color:var(--wp-components-color-accent-inverted,#fff)}.members-am-icon-grid{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:4px;max-height:160px;overflow-y:auto;border:1px solid var(--wp-components-color-gray-200,#dcdcde);padding:8px;background:var(--members-am-chrome-bg,#f6f7f7);margin-bottom:8px}.members-am-icon-pick{width:36px;height:36px;padding:0;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;border:1px solid var(--members-am-chrome-border,#c3c4c7);background:var(--wp-components-color-background,#fff);cursor:pointer}.members-am-bulk-visibility-hint{margin:0 0 8px;font-size:12px;color:var(--members-am-fg-muted-on-base,#646970)}.members-am-vis-role-filter-wrap{margin-bottom:8px}.members-am-vis-row.members-am-vis-filter-hidden{display:none}.members-am-vis-row{display:block;margin-bottom:6px;font-weight:normal}.members-am-reset-dropdown{position:absolute;z-index:100000;background:var(--wp-components-color-background,#fff);border:1px solid var(--members-am-chrome-border,#c3c4c7);border-radius:6px;padding:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-shadow:0 4px 12px rgba(0,0,0,0.15);box-shadow:0 4px 12px rgba(0,0,0,0.15);min-width:280px;top:100%;left:0;margin-top:4px;overflow:hidden}.members-am-reset-title{padding:10px 14px;font-weight:600;font-size:13px;border-bottom:1px solid var(--wp-components-color-gray-200,#f0f0f0);color:var(--wp-components-color-foreground,#1d2327)}.members-am-reset-dropdown>.members-am-reset-option:last-of-type{border-bottom:0}.members-am-reset-option{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;gap:10px;padding:12px 14px;border:0;background:0;cursor:pointer;text-align:left;width:100%;border-bottom:1px solid var(--wp-components-color-gray-200,#f0f0f0);-webkit-transition:background .15s;transition:background .15s}.members-am-reset-option:hover{background:var(--members-am-chrome-bg,#f6f7f7)}.members-am-reset-option .dashicons{margin-top:2px;color:var(--members-am-muted,#646970)}.members-am-reset-option-text{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:2px}.members-am-reset-option-text strong{font-size:13px;color:var(--wp-components-color-foreground,#1d2327)}.members-am-reset-option-text small{font-size:12px;color:var(--members-am-muted,#646970)}.members-am-reset-danger:hover{background:#fcf0f1}.members-am-reset-danger .dashicons{color:#d63638}.members-am-reset-danger:hover strong{color:#d63638}@media screen and (max-width:782px){.members-am-columns{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}}.members-am-user-suggestions{position:absolute;z-index:100;background:var(--wp-components-color-background,#fff);border:1px solid var(--members-am-chrome-border,#c3c4c7);border-radius:4px;max-height:200px;overflow-y:auto;width:100%;-webkit-box-shadow:0 2px 6px rgba(0,0,0,0.15);box-shadow:0 2px 6px rgba(0,0,0,0.15);top:100%;left:0}.members-am-user-suggestion{padding:8px 12px;cursor:pointer;font-size:13px;border-bottom:1px solid var(--wp-components-color-gray-200,#f0f0f0)}.members-am-user-suggestion:hover{background:color-mix(in srgb,var(--members-am-accent-use) 8%,var(--wp-components-color-background,#fff))}.members-am-user-suggestion:last-child{border-bottom:0}#members-am-import-file.members-am-import-file-hidden{display:none}.members-am-user-search-wrap{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px}#members-am-user-search.members-am-user-search-input{width:168px;max-width:100%}.members-am-legend-visibility-icon{font-size:14px;width:14px;height:14px;vertical-align:middle}.members-am-legend-nocap-badge{display:inline-block;background:#8c8f94;color:#fff;font-size:9px;padding:1px 4px;border-radius:2px;vertical-align:middle}#members-am-icon-preview.members-am-icon-preview{display:none;width:32px;height:32px;-o-object-fit:contain;object-fit:contain;margin-bottom:6px;border:1px solid #ddd;border-radius:3px;padding:2px;background:#f0f0f1}.members-am-icons .members-am-icon-upload-desc{margin-top:4px}#adminmenu .members-am-menu-badge{display:inline-block;color:#fff;font-size:9px;padding:1px 5px;border-radius:2px;line-height:1.4;vertical-align:middle}
\ No newline at end of file
+#members-cp h2.hndle,#members-cp-side h2.hndle{border-bottom:none !important;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}#members-cp h2.hndle:before,#members-cp-side h2.hndle:before{content:url("data:image/svg+xml,%3Csvg width='15px' aria-hidden='true' focusable='false' data-prefix='fas' data-icon='users-cog' class='svg-inline--fa fa-users-cog fa-w-20' role='img' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 640 512'%3E%3Cpath fill='currentColor' d='M610.5 341.3c2.6-14.1 2.6-28.5 0-42.6l25.8-14.9c3-1.7 4.3-5.2 3.3-8.5-6.7-21.6-18.2-41.2-33.2-57.4-2.3-2.5-6-3.1-9-1.4l-25.8 14.9c-10.9-9.3-23.4-16.5-36.9-21.3v-29.8c0-3.4-2.4-6.4-5.7-7.1-22.3-5-45-4.8-66.2 0-3.3.7-5.7 3.7-5.7 7.1v29.8c-13.5 4.8-26 12-36.9 21.3l-25.8-14.9c-2.9-1.7-6.7-1.1-9 1.4-15 16.2-26.5 35.8-33.2 57.4-1 3.3.4 6.8 3.3 8.5l25.8 14.9c-2.6 14.1-2.6 28.5 0 42.6l-25.8 14.9c-3 1.7-4.3 5.2-3.3 8.5 6.7 21.6 18.2 41.1 33.2 57.4 2.3 2.5 6 3.1 9 1.4l25.8-14.9c10.9 9.3 23.4 16.5 36.9 21.3v29.8c0 3.4 2.4 6.4 5.7 7.1 22.3 5 45 4.8 66.2 0 3.3-.7 5.7-3.7 5.7-7.1v-29.8c13.5-4.8 26-12 36.9-21.3l25.8 14.9c2.9 1.7 6.7 1.1 9-1.4 15-16.2 26.5-35.8 33.2-57.4 1-3.3-.4-6.8-3.3-8.5l-25.8-14.9zM496 368.5c-26.8 0-48.5-21.8-48.5-48.5s21.8-48.5 48.5-48.5 48.5 21.8 48.5 48.5-21.7 48.5-48.5 48.5zM96 224c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm224 32c1.9 0 3.7-.5 5.6-.6 8.3-21.7 20.5-42.1 36.3-59.2 7.4-8 17.9-12.6 28.9-12.6 6.9 0 13.7 1.8 19.6 5.3l7.9 4.6c.8-.5 1.6-.9 2.4-1.4 7-14.6 11.2-30.8 11.2-48 0-61.9-50.1-112-112-112S208 82.1 208 144c0 61.9 50.1 112 112 112zm105.2 194.5c-2.3-1.2-4.6-2.6-6.8-3.9-8.2 4.8-15.3 9.8-27.5 9.8-10.9 0-21.4-4.6-28.9-12.6-18.3-19.8-32.3-43.9-40.2-69.6-10.7-34.5 24.9-49.7 25.8-50.3-.1-2.6-.1-5.2 0-7.8l-7.9-4.6c-3.8-2.2-7-5-9.8-8.1-3.3.2-6.5.6-9.8.6-24.6 0-47.6-6-68.5-16h-8.3C179.6 288 128 339.6 128 403.2V432c0 26.5 21.5 48 48 48h255.4c-3.7-6-6.2-12.8-6.2-20.3v-9.2zM173.1 274.6C161.5 263.1 145.6 256 128 256H64c-35.3 0-64 28.7-64 64v32c0 17.7 14.3 32 32 32h65.9c6.3-47.4 34.9-87.3 75.2-109.4z'%3E%3C/path%3E%3C/svg%3E");margin-right:5px}#members-cp-side .postbox-header{border-bottom:none !important}#members-cp-side .handle-actions .handle-order-higher,#members-cp-side .handle-actions .handle-order-lower{display:none}#members-cp-side .handle-actions .handlediv{position:absolute;right:5px}.members-upgrade-header{text-align:center;padding:5px}.members-upgrade-header a{color:#f59431}.memberpress-paid-memberships{background-color:#f5f5f5;padding:50px 10px;text-align:center}.memberpress-paid-memberships a{background-color:#0e4598;display:inline-block;padding:10px 20px;border-radius:300px;color:#fff;text-decoration:none;margin-top:20px}#members-cp-side .members-tabs{position:relative}#members-cp-side .members-tab-nav{background-color:transparent;margin-bottom:20px;border-right:none !important}#members-cp-side .members-tab-nav .members-tab-title{width:33.333%;height:50px;border-right:none !important}#members-cp-side .members-tab-nav .members-tab-title a{border:0}#members-cp-side .members-tab-content h3{font-weight:bold;font-size:15px;margin-top:0;color:#000;margin-bottom:10px}#members-cp-side .members-tab-content .memberpress-paid-memberships{text-align:left;padding:20px}#members-cp-side .members-tab-content .memberpress-paid-memberships a{display:block;text-align:center}#members-cp-side .members-tabs .members-tab-nav li a,#members-cp-side .members-tabs .members-tab-nav li[aria-selected="false"] a i{color:#555}#members-cp-side .members-tabs .members-tab-nav li a svg,#members-cp-side .members-tabs .members-tab-nav li[aria-selected="false"] a svg{fill:#555}#members-cp-side .members-tabs .members-tab-nav li[aria-selected="true"] a{background-color:transparent;border-bottom:2px solid #3582ae}#members-cp-side .members-tabs .members-tab-nav li[aria-selected="true"] a i{color:#3582ae}#members-cp-side .members-tabs .members-tab-nav li[aria-selected="true"] a svg{fill:#3582ae}.members-tab-title svg,.members-tab-title[aria-selected="false"] svg{fill:#0073aa}.members-tab-title[aria-selected="true"] svg{fill:#555}#wpcontent #members-admin-header{margin-left:-20px;padding:0 28px 0 22px;background-color:#0b1220;background-image:radial-gradient(circle at 12% 35%,rgba(14,69,152,0.45),transparent 55%),radial-gradient(circle at 90% 85%,rgba(245,148,49,0.14),transparent 60%);background-repeat:no-repeat;min-height:56px;position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}#wpcontent #members-admin-header img.members-logo{height:42px;display:block}#wpcontent #members-admin-header .members-by-mp{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:12px;margin-left:auto;text-decoration:none;-webkit-box-shadow:none;box-shadow:none;-webkit-transition:opacity .15s ease;transition:opacity .15s ease}#wpcontent #members-admin-header .members-by-mp:hover,#wpcontent #members-admin-header .members-by-mp:focus{opacity:.75;text-decoration:none;-webkit-box-shadow:none;box-shadow:none}#wpcontent #members-admin-header .members-by-label{color:#94a3b8;font-size:12px;font-weight:500}#wpcontent #members-admin-header img.members-mp-logo{height:18px;display:block}#wpcontent #members-admin-header #membersAdminHeaderNotifications{position:relative;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:36px;height:36px;padding:0;margin:0 0 0 18px;background:rgba(255,255,255,0.06);border:1px solid rgba(255,255,255,0.12);border-radius:8px;color:#fff;cursor:pointer;-webkit-box-shadow:none;box-shadow:none;-webkit-transition:background .15s ease,border-color .15s ease;transition:background .15s ease,border-color .15s ease;line-height:1;vertical-align:middle;min-height:0;text-decoration:none}#wpcontent #members-admin-header #membersAdminHeaderNotifications:hover,#wpcontent #members-admin-header #membersAdminHeaderNotifications:focus{background:rgba(255,255,255,0.12);border-color:rgba(255,255,255,0.24);color:#fff;-webkit-box-shadow:none;box-shadow:none;outline:0}#wpcontent #members-admin-header #membersAdminHeaderNotifications svg{width:16px;height:auto;display:block}#wpcontent #members-admin-header #membersAdminHeaderNotifications svg path{fill:#e2e8f0}#wpcontent #members-admin-header #membersAdminHeaderNotifications .members-notifications-count{position:absolute;top:-4px;right:-4px;min-width:16px;height:16px;padding:0 4px;border-radius:999px;background:#f59431;color:#0b1220;font-size:10px;font-weight:700;line-height:16px;text-align:center;border:1.5px solid #0b1220;-webkit-box-sizing:content-box;box-sizing:content-box}.members-upgrade-header #close-members-upgrade-header{position:absolute;right:20px;top:3px}.members-upgrade-header #close-members-upgrade-header:hover{cursor:pointer}.memberpress-welcome-panel.welcome-panel{margin-top:20px;padding:20px 28px;background:#fff;border-radius:10px;min-height:0}.memberpress-welcome-panel.welcome-panel .welcome-panel-content{min-height:0;height:auto}.members-about{--ink:#0f172a;--ink-soft:#334155;--ink-muted:#64748b;--mp-blue:#0e4598;--mp-teal:#3582ae;--mp-orange:#f59431;--rule:#e5e7eb;--paper:#fbfaf7;--paper-soft:#f3efe6;--paper-line:#e8e3d5;--display-font:"Inter",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;--sans-font:"Inter",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif}body.members_page_members-about #wpbody-content,body.toplevel_page_members-about #wpbody-content,body.admin_page_members-about #wpbody-content{background:var(--paper)}.members-about.wrap{max-width:1120px;margin:0 auto;padding:48px 24px 80px;color:var(--ink);font-family:var(--sans-font)}.members-about__hero{display:grid;grid-template-columns:minmax(0,1fr) 200px;grid-template-areas:"head mark" "body mark";gap:32px 56px;-webkit-box-align:start;-ms-flex-align:start;align-items:start;padding-bottom:64px;border-bottom:1px solid var(--paper-line)}.members-about__hero-head{grid-area:head}.members-about__body{grid-area:body}.members-about__mark{grid-area:mark;align-self:start}.members-about__eyebrow{display:inline-block;font-family:var(--sans-font);font-size:12px;font-weight:600;letter-spacing:.18em;text-transform:uppercase;color:var(--ink-muted);padding-bottom:18px}.members-about__title{font-family:var(--display-font);font-weight:900;font-size:clamp(40px,5.5vw,64px);line-height:1;letter-spacing:-0.035em;color:var(--ink);margin:0}.members-about__title em{font-style:normal;font-weight:900;color:var(--mp-blue)}.members-about__title-dot{color:var(--mp-blue);font-style:normal;font-weight:900}.members-about__body{max-width:60ch;font-size:15.5px;line-height:1.62;color:var(--ink-soft)}.members-about__body p{margin:0 0 14px}.members-about__body p:last-child{margin-bottom:0}.members-about__lead{font-family:var(--sans-font);font-weight:500;font-size:17px;line-height:1.5;color:var(--ink);margin-bottom:24px !important;padding-left:18px;border-left:2px solid var(--mp-blue)}.members-about__body a,.members-about__lead a{color:var(--mp-blue);text-decoration:none;background-image:-webkit-gradient(linear,left top,left bottom,from(currentColor),to(currentColor));background-image:linear-gradient(currentColor,currentColor);background-size:100% 1px;background-position:0 100%;background-repeat:no-repeat;padding-bottom:1px;-webkit-transition:color .2s ease,background-size .2s ease;transition:color .2s ease,background-size .2s ease}.members-about__body a:hover,.members-about__lead a:hover{color:var(--mp-orange)}.members-about__body em,.members-about__lead em{font-style:normal;font-weight:700;color:var(--mp-blue)}.members-about__mark{padding:24px;background:#fff;border:1px solid var(--paper-line);border-radius:4px;-webkit-box-shadow:0 1px 2px rgba(15,23,42,0.03);box-shadow:0 1px 2px rgba(15,23,42,0.03);-webkit-transition:-webkit-transform .25s ease,-webkit-box-shadow .25s ease;transition:-webkit-transform .25s ease,-webkit-box-shadow .25s ease;transition:transform .25s ease,box-shadow .25s ease;transition:transform .25s ease,box-shadow .25s ease,-webkit-transform .25s ease,-webkit-box-shadow .25s ease}.members-about__mark:hover{-webkit-transform:translateY(-2px);transform:translateY(-2px);-webkit-box-shadow:0 8px 20px rgba(15,23,42,0.08);box-shadow:0 8px 20px rgba(15,23,42,0.08)}.members-about__mark a{display:block;-webkit-box-shadow:none !important;box-shadow:none !important;text-decoration:none}.members-about__mark img{display:block;width:100%;height:auto;max-width:160px;margin:0 auto}.members-about__products{padding-top:56px}.members-about__products-head{margin-bottom:28px;text-align:center}.members-about__products-head h3{font-family:var(--display-font);font-weight:700;font-size:15px;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-muted);margin:0}.members-about__grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px}.members-about__card{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;padding:24px;background:#fff;border:1px solid var(--paper-line);border-radius:6px;-webkit-transition:border-color .25s ease,-webkit-transform .25s ease,-webkit-box-shadow .25s ease;transition:border-color .25s ease,-webkit-transform .25s ease,-webkit-box-shadow .25s ease;transition:transform .25s ease,box-shadow .25s ease,border-color .25s ease;transition:transform .25s ease,box-shadow .25s ease,border-color .25s ease,-webkit-transform .25s ease,-webkit-box-shadow .25s ease}.members-about__card:hover{-webkit-transform:translateY(-3px);transform:translateY(-3px);-webkit-box-shadow:0 12px 28px rgba(15,23,42,0.08);box-shadow:0 12px 28px rgba(15,23,42,0.08);border-color:rgba(14,69,152,0.2)}.members-about__card-head{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:14px;margin-bottom:14px}.members-about__card-icon{-webkit-box-flex:0;-ms-flex:0 0 44px;flex:0 0 44px;width:44px;height:44px;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;background:var(--paper-soft);border-radius:10px;overflow:hidden}.members-about__card-icon img{display:block;max-width:32px;max-height:32px;width:auto;height:auto}.members-about__card-title{margin:0;font-family:var(--display-font);font-weight:700;font-size:17px;line-height:1.2;letter-spacing:-0.01em;color:var(--ink)}.members-about__card-title a{color:inherit;text-decoration:none;-webkit-box-shadow:none;box-shadow:none}.members-about__card-title a:hover{color:var(--mp-blue)}.members-about__card-desc{-webkit-box-flex:1;-ms-flex:1;flex:1;margin:0 0 24px;font-size:14px;line-height:1.55;color:var(--ink-soft)}.members-about__card-foot{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;gap:16px;padding-top:16px;border-top:1px solid var(--paper-line)}.members-about__status{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;font-size:12px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-muted)}.members-about__status::before{content:"";width:7px;height:7px;border-radius:50%;background:currentColor}.members-about__status.is-active{color:#10b981}.members-about__status.is-inactive{color:var(--mp-orange)}.members-about__status.is-missing{color:var(--ink-muted)}.members-about__cta{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;padding:8px 14px;font-size:13px;font-weight:600;letter-spacing:.01em;border-radius:4px;text-decoration:none;border:1px solid transparent;-webkit-transition:background .2s ease,border-color .2s ease,color .2s ease,-webkit-transform .15s ease;transition:background .2s ease,border-color .2s ease,color .2s ease,-webkit-transform .15s ease;transition:background .2s ease,border-color .2s ease,color .2s ease,transform .15s ease;transition:background .2s ease,border-color .2s ease,color .2s ease,transform .15s ease,-webkit-transform .15s ease;-webkit-box-shadow:none;box-shadow:none}.members-about__cta:focus,.members-about__cta:focus-visible{outline:2px solid var(--mp-blue);outline-offset:2px;-webkit-box-shadow:none;box-shadow:none}.members-about__cta.is-primary{background:var(--mp-blue);color:#fff}.members-about__cta.is-primary:hover{background:#093374;color:#fff;-webkit-transform:translateY(-1px);transform:translateY(-1px)}.members-about__cta.is-secondary{background:transparent;color:var(--ink);border-color:var(--rule)}.members-about__cta.is-secondary:hover{border-color:var(--ink);background:#fff;color:var(--ink)}.members-about__cta svg{-webkit-transition:-webkit-transform .2s ease;transition:-webkit-transform .2s ease;transition:transform .2s ease;transition:transform .2s ease,-webkit-transform .2s ease}.members-about__cta:hover svg{-webkit-transform:translate(1px,-1px);transform:translate(1px,-1px)}@media(max-width:900px){.members-about__hero{grid-template-columns:1fr;grid-template-areas:"head" "body" "mark";gap:24px}.members-about__mark{max-width:160px}.members-about__grid{grid-template-columns:1fr}}.memberpress-welcome-panel.welcome-panel:before{background:0}.memberpress-welcome-panel.welcome-panel .about-description{margin:20px 0}.memberpress-welcome-panel.welcome-panel-content{margin:0}.memberpress-welcome-panel.welcome-panel-content .mp-logo-wrap>a{display:block}@media screen and (min-width:870px){.members_page_members-settings .members-short-p{max-width:612px;margin-left:auto;margin-right:auto}.members_page_members-settings .welcome-panel-content{text-align:center}}.members_page_members-settings .welcome-panel .button.button-hero{margin-left:auto;margin-right:auto}.members_page_members-settings .members-svg-wrap{display:inline-block;margin:0 auto 20px}@media screen and (max-width:870px){.members_page_members-settings .welcome-panel{padding:20px}.members_page_members-settings .members-svg-wrap{float:left;margin-right:28px}.admin_page_members-settings.rtl .members-svg-wrap{float:right;margin-right:0;margin-left:28px}}.members_page_members-settings .members-svg-link{display:table-cell;text-align:center;width:128px;height:128px;background:#363b3f;color:#fff;padding:24px 16px 16px;border-radius:50%;-webkit-box-sizing:border-box;box-sizing:border-box;border:4px solid #fff;-webkit-box-shadow:0 0 0 4px #363b3f;box-shadow:0 0 0 4px #363b3f}.members_page_members-settings .members-svg-link svg{max-width:84px;max-height:64px;width:auto;height:auto}.members-addons{display:grid;grid-template-columns:1fr 1fr;grid-row-gap:20px;grid-column-gap:20px}.members-addons .plugin-card{margin:0}.members-addons .plugin-card-top{width:100%}.members-addon{width:100%;position:relative;float:none;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.members-addon .desc{margin-bottom:80px}.addon-activate{text-align:center;border:1px solid #ddd;border-radius:3px;padding:5px 10px 10px;display:inline-block;width:100px;position:absolute;right:20px;bottom:20px}.activate-toggle:hover{cursor:pointer}.activate-toggle svg{max-width:20px;position:relative;top:5px}.activate-toggle svg{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.activate-toggle svg.active{-webkit-transform:rotate(0);transform:rotate(0)}.activate-toggle svg path{fill:#ccc}.activate-toggle svg.active path{fill:#8cbd5a}.activate-toggle.processing{cursor:not-allowed;pointer-events:none;opacity:.5}.activate-toggle .action-label{display:inline-block;width:50px;text-align:left}.mepr_dummy_txns{-webkit-filter:blur(3px);filter:blur(3px);position:absolute;top:0;left:0;width:100%;z-index:5;pointer-events:none}.mepr_dummy_txns::after{background-color:rgba(0,0,0,.2);position:absolute;top:0;left:0;width:100%;height:100%;z-index:6}.mepr-upgrade-table{position:relative}.mepr-upgrade-table .mepr-upgrade{position:relative;top:100px;z-index:10;background:rgba(0,0,0,.2);width:100%;height:100%;max-width:600px;margin:0 auto;-webkit-box-shadow:0 0 30px #ccc;box-shadow:0 0 30px #ccc}.mepr-upgrade-content{background-color:#fff;padding:20px;text-align:center}.mepr-upgrade-content h2{font-size:24px}.mepr-upgrade-content h4{font-size:18px}.mepr-upgrade-content .features{display:grid;grid-template-columns:1fr 1fr;grid-column-gap:30px;grid-row-gap:10px;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;text-align:left;padding:10px}.features li:before{content:"\f147";font-family:dashicons;color:green;font-size:20px;position:relative;top:4px;margin-right:10px}.mepr-upgrade-cta{text-align:center;background-color:#f2f2f2;padding:20px}.mepr-upgrade-cta .mepr-cta-button{display:block;max-width:300px;margin:0 auto 20px;background-color:#fd9c27;color:#fff;padding:15px;font-size:18px;font-weight:bold;text-decoration:none;border-radius:300px}.members-plugin-card.plugin-card:nth-child(even){margin-right:inherit}.members-plugin-card.plugin-card:nth-child(odd){clear:none;margin-left:inherit}.members-plugin-card.plugin-card .plugin-card-top{min-height:0;padding:30px 20px}.members-plugin-card.plugin-card .plugin-icon{top:30px}.members-plugin-card.plugin-card .plugin-card-bottom .column-status{font-weight:bold}.members-plugin-card.plugin-card .plugin-card-bottom .column-status .active{color:#8cbd5a}.members-plugin-card.plugin-card .plugin-card-bottom .column-status .inactive{color:red}.members-plugin-card.plugin-card .plugin-icon{width:64px;height:auto}.plugin-icon-small{width:32px;height:auto}.members-plugin-card.plugin-card .name,.members-plugin-card.plugin-card .desc{margin-right:0;margin-left:84px}.members-addons .plugin-card .name,.members-addons .plugin-card .desc p{margin-right:0}@media screen and (max-width:1100px){.members-addons{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}}@media screen and (max-width:600px){.members_page_members-settings .members-svg-link{width:64px;height:64px}.members_page_members-settings .members-svg-link svg{position:absolute;top:14px;left:15px;max-width:30px;max-height:30px}.members_page_members-settings .plugin-card-members-edd-integration .members-svg-link svg,.members_page_members-settings .plugin-card-members-acf-integration .members-svg-link svg,.members_page_members-settings .plugin-card-members-givewp-integration .members-svg-link svg,.members_page_members-settings .plugin-card-members-meta-box-integration .members-svg-link svg,.members_page_members-settings .plugin-card-members-woocommerce-integration .members-svg-link svg{top:10px;left:8px;max-width:40px;max-height:40px}.members_page_members-settings .plugin-card-members-block-permissions .members-svg-link svg,.members_page_members-settings .plugin-card-members-role-hierarchy .members-svg-link svg{left:14px}.members-addons .plugin-card .desc>p,.members-addons .plugin-card .name{margin-left:84px}}.memberpress-about .welcome-panel-column-container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:40px;padding:0;margin:0}.memberpress-about .mp-desc p{font-size:13px;line-height:1.6;color:#334155;margin:0 0 12px}.memberpress-about .mp-desc p:first-child{font-size:15px;font-weight:600;color:#0f172a;margin-top:0;margin-bottom:14px}.memberpress-about .mp-desc p:last-child{margin-bottom:0}.memberpress-about .mp-logo-wrap{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.memberpress-about .mp-logo{display:block;max-width:220px;height:auto;margin:0}.members-about-addons{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-column-gap:20px}.members-about-addons .members-plugin-card{margin:0;width:100%}.members-about-addons .members-plugin-card .plugin-icon{position:static;width:auto;height:28px;max-width:40px;-o-object-fit:contain;object-fit:contain;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;display:block}.members-about-addons .members-plugin-card .name,.members-about-addons .members-plugin-card .desc{margin-left:0}.members-about-addons .members-plugin-card .plugin-card-top{padding:20px}.members-about-addons .members-plugin-card .name h3{margin:0 0 10px;min-height:0;height:auto;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:10px;line-height:1.2}.members-about-addons .members-plugin-card .name h3 a{text-decoration:none;line-height:1.2}.members-about-addons .members-plugin-card .plugin-card-bottom{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}@media only screen and (max-width:1099px){.members-about-addons{grid-template-columns:1fr;grid-row-gap:20px}}@media screen and (min-width:1100px) and (max-width:1600px){.members-about-addons .members-plugin-card{float:none;width:auto;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.members-plugin-card.plugin-card .desc{margin-left:0;margin-top:50px}.members-plugin-card.plugin-card .desc p{margin-left:0;margin-right:0}.members-plugin-card.plugin-card .plugin-card-bottom .column-status{float:none}.members-plugin-card.plugin-card .plugin-card-bottom .column-updated{float:none;width:auto}}@media screen and (max-width:1200px){.welcome-panel .welcome-panel-column-container{-webkit-box-orient:vertical;-webkit-box-direction:reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse;gap:0;padding:0}.memberpress-about .mp-logo{margin:0 0 20px}}.members-plugin-card.plugin-card .desc p{margin-left:0;margin-right:0}@media only screen and (min-width:783px){.members_page_roles .column-users,.members_page_roles .column-granted_caps,.members_page_roles .column-denied_caps{width:100px;text-align:center}}.members-title-div #titlewrap input{padding:0 8px;font-size:1.7em;line-height:normal;height:1.7em;width:100%;outline:0;margin:0 0 3px;background-color:#fff}.members-title-div input[name="role"]{font-size:13px;height:22px;margin:0;width:16em}#tabcapsdiv{margin-top:1em}#tabcapsdiv>.hndle{padding:10px;border-bottom:1px solid #eee}#tabcapsdiv .inside,#members-cp .inside{margin:0;padding:0}.members-cap-tabs,.members-tabs{overflow:hidden;background:#fff;background:-webkit-gradient(linear,left top,right top,from(#fafafa),color-stop(20%,#fafafa),color-stop(20%,#fff),to(#fff));background:linear-gradient(90deg,#fafafa 0,#fafafa 20%,#fff 20%,#fff 100%)}@media only screen and (max-width:782px){.members-cap-tabs,.members-tabs{background:linear-gradient(90deg,#fafafa 0,#fafafa 48px,#fff 48px,#fff 100%)}}.members-cap-tabs .members-tab-nav,.members-tabs .members-tab-nav{position:relative;float:left;list-style:none;width:20%;line-height:1em;margin:0 0 -1px 0;padding:0;background-color:#fafafa;border-right:1px solid #eee;-webkit-box-sizing:border-box;box-sizing:border-box}.members-cap-tabs .members-tab-nav li,.members-tabs .members-tab-nav li{display:block;position:relative;margin:0;padding:0;line-height:20px}.members-cap-tabs .members-tab-nav li a,.members-tabs .members-tab-nav li a{display:block;margin:0;padding:10px;line-height:20px !important;text-decoration:none;border-bottom:1px solid #eee;-webkit-box-shadow:none;box-shadow:none}.members-cap-tabs .members-tab-nav li a .dashicons,.members-tabs .members-tab-nav li a .dashicons{line-height:20px;margin-right:3px}.members-cap-tabs .members-tab-nav li[aria-selected="true"] a,.members-tabs .members-tab-nav li[aria-selected="true"] a{position:relative;font-weight:bold;color:#555;background-color:#e0e0e0}@media only screen and (max-width:782px){.members-cap-tabs .members-tab-nav,.members-tabs .members-tab-nav{width:48px}.members-cap-tabs .members-tab-nav li a .dashicons,.members-tabs .members-tab-nav li a .dashicons{width:24px;height:24px;font-size:24px;line-height:24px}.members-tab-nav li .dashicons::before,.members-tab-nav li .dashicons::before{width:24px;height:24px}.members-tab-nav li .label{overflow:hidden;position:absolute;top:-1000em;left:-1000em;width:1px;height:1px}}.members-cap-tabs .members-tab-wrap,.members-tabs .members-tab-wrap{float:left;width:80%;margin-left:-1px}@media only screen and (max-width:782px){.members-cap-tabs .members-tab-wrap,.members-tabs .members-tab-wrap{width:calc(100% - 48px)}}#members-cp .members-tab-content{padding:10px;border-left:1px solid #e5e5e5}.members-roles-select th,.members-roles-select td{width:190px;overflow:hidden}.members-roles-select .check-all-th{text-align:center}.members-roles-select .check-all-th label{padding-left:5px}@media only screen and (min-width:850px){#side-sortables .members-tabs{background:#fff}#side-sortables .members-tabs .members-tab-wrap{width:100%}#side-sortables .members-tabs .members-tab-nav{display:table;width:100%}#side-sortables .members-tabs .members-tab-nav li{display:table-cell;text-align:center;border-right:1px solid #eee}#side-sortables .members-tabs .members-tab-nav li:last-of-type{border-right:0}#side-sortables .members-tabs .members-tab-nav li a{padding:10px 0}#side-sortables .members-tabs .members-tab-nav .dashicons{width:24px;height:24px;font-size:24px;line-height:24px}#side-sortables .members-tabs .members-tab-nav .dashicons::before{width:24px;height:24px}#side-sortables .members-tabs .members-tab-nav .label{overflow:hidden;position:absolute;top:-1000em;left:-1000em;width:1px;height:1px}}.members-tabs .members-tabs-label{display:block !important;font-weight:bold;display:inline-block;margin-bottom:4px}.members-tabs .butterbean-control-checkbox .members-tabs-label{display:inline !important}.members-tabs .members-tabs-description{display:block;font-style:italic;margin-top:4px}.members-tabs .members-tabs-label+.members-tabs-description{margin-top:0;margin-bottom:4px}#tabcapsdiv table{border-right:0;border-top:0;border-bottom:0}#tabcapsdiv table td,#tabcapsdiv table th{padding:10px;padding-bottom:10px;border-bottom:1px solid #eee;font-size:13px;line-height:20px}#tabcapsdiv table td{padding:9px}#tabcapsdiv tbody tr:last-of-type td{border-bottom:0}#tabcapsdiv tfoot th{border-color:#eee}@media only screen and (max-width:782px){#tabcapsdiv table td,#tabcapsdiv table th{line-height:24px}}.members-roles-select .column-grant,.members-roles-select .column-deny{width:70px !important;text-align:left;display:table-cell !important;clear:none !important}.members-roles-select thead th,.members-roles-select tfoot th{padding:9px !important}.members-roles-select .column-grant input,.members-roles-select .column-deny input{margin:0 5px 0 0;vertical-align:middle}.members-roles-select tbody tr:nth-child(even){background:#f2f2f2}.members-cap-tabs button{display:inline;margin:-4px;line-height:inherit;padding:4px 8px;border:1px solid transparent;background:transparent;border-radius:0;outline:0;-webkit-transition:all .25s ease-out;transition:all .25s ease-out}.members-cap-tabs button:hover,.members-cap-tabs button:focus{border-color:#eee;background:#fafafa;cursor:pointer}.members-cap-tabs button:active{color:#0073aa;border-color:#0073aa}.members-cap-tabs button+.dashicons{display:none;margin-top:1px;margin-bottom:-1px;line-height:inherit}.members-cap-tabs button:hover+.dashicons,.members-cap-tabs button:focus+.dashicons{display:inline-block}.members-tab-content .members-highlight{background-color:rgba(0,115,170,0.05)}.members-tab-content tbody{-webkit-transition:all 2s ease-in-out;transition:all 2s ease-in-out}.members-cp-role-list-wrap{overflow:auto;min-height:42px;max-height:200px;padding:0 .9em;border:solid 1px #dfdfdf;background-color:#fdfdfd}#wpbody-content{padding-bottom:200px}.members-footer-promotion{text-align:center;font-weight:400;font-size:13px;line-height:16px;color:#787c82;padding:20px 0 30px 0;margin-bottom:20px}.members-footer-promotion p{font-weight:600}.members-footer-promotion-links,.members-footer-promotion-social{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.members-footer-promotion-links{margin:9px 0 0}.members-footer-promotion-links span{color:#c3c4c7;padding:0 7px}.members-footer-promotion-social{margin:10px 0 0 0;gap:10px}.members-footer-promotion-social li{margin-bottom:0}.members-footer-promotion-social a{display:block;height:16px}.members_page_members-settings.rtl{.addon-activate{left:20px;right:unset}.members-addons .plugin-card{.name,.desc p{margin-left:0;margin-right:148px}}}.button.button-warning{background:#dc3232;border-color:#dc3232;color:#fff}.button.button-warning:hover,.button.button-warning:focus{background:#c92424;border-color:#c92424;color:#fff}.members-reset-spinner{float:none;margin-top:0;vertical-align:middle}.members-admin-menus-wrap{max-width:1400px;--members-am-accent-use:var(--members-am-accent,var(--wp-admin-theme-color,#2271b1));--members-am-surface-use:var(--members-am-surface,color-mix(in srgb,var(--members-am-base,#1d2327) 88%,#fff 12%));--members-am-border-on-base-fallback:color-mix(in srgb,var(--members-am-base,#1d2327) 62%,#fff 38%);--members-am-chrome-bg:var(--wp-components-color-gray-100,#f6f7f7);--members-am-chrome-border:var(--wp-components-color-gray-400,#c3c4c7);--members-am-muted:var(--wp-components-color-gray-600,#646970)}.members-am-notices{margin:0 0 12px}.members-am-notices .notice{margin:0 0 8px}.members-admin-menus-toolbar{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;gap:0;margin-bottom:16px;border:1px solid var(--members-am-chrome-border,#c3c4c7);border-radius:2px;background:var(--wp-components-color-background,#fff);overflow:visible}.members-am-toolbar-row{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px}.members-am-toolbar-row--primary{padding:10px 12px;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;row-gap:10px}.members-am-toolbar-group{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px}.members-am-toolbar-group--document{position:relative;z-index:5;padding-right:12px;border-right:1px solid var(--members-am-chrome-border,#c3c4c7)}.members-am-toolbar-row--primary .members-am-toolbar-primary-user{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px;margin-left:8px;-webkit-box-flex:0;-ms-flex:0 1 auto;flex:0 1 auto;min-width:0}.members-am-toolbar-row--primary .members-am-toolbar-primary-user #members-am-user-search.members-am-user-search-input{width:168px;max-width:100%;min-width:0}.members-am-toolbar-group--view{margin-left:auto;-ms-flex-wrap:nowrap;flex-wrap:nowrap}.members-am-toolbar-extra{background:var(--members-am-chrome-bg,#f6f7f7);border-top:1px solid var(--members-am-chrome-border,#c3c4c7);padding:10px 12px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:10px}.members-am-toolbar-extra[hidden]{display:none !important}.members-am-toolbar-row--extra-tools{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-wrap:wrap;flex-wrap:wrap;row-gap:10px}.members-am-toolbar-row--extra-tools .members-am-copy-wrap{margin-left:4px;padding-left:12px;border-left:1px solid var(--members-am-chrome-border,#c3c4c7)}.members-am-toolbar-row--extra-tools .members-am-toolbar-group--io{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;margin-left:8px;padding-left:12px;border-left:1px solid var(--members-am-chrome-border,#c3c4c7)}.members-am-toolbar-row--exempt{-ms-flex-preferred-size:100%;flex-basis:100%;width:100%;margin-top:8px;padding-top:10px;border-top:1px solid var(--members-am-chrome-border,#c3c4c7)}.members-am-exempt-wrap .members-am-exempt-chips{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;margin:8px 0}.members-am-exempt-chip{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:4px;padding:2px 8px;border:1px solid var(--members-am-chrome-border,#c3c4c7);border-radius:4px;background:var(--wp-components-color-background,#fff);font-size:13px}.members-am-exempt-chip .members-am-exempt-remove{padding:0 2px;min-height:0;line-height:1.3}.members-am-more-tools,.members-am-more-tools:hover,.members-am-more-tools:focus,.members-am-more-tools:focus-visible,.members-am-more-tools:active{text-decoration:none !important}.members-am-more-tools{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:4px;white-space:nowrap;padding:2px 2px 2px 4px;vertical-align:middle;line-height:1.4}.members-am-more-tools .members-am-more-tools-text,.members-am-more-tools:hover .members-am-more-tools-text,.members-am-more-tools:focus .members-am-more-tools-text,.members-am-more-tools:focus-visible .members-am-more-tools-text,.members-am-more-tools:active .members-am-more-tools-text,.members-am-more-tools .members-am-more-tools-chevron,.members-am-more-tools:hover .members-am-more-tools-chevron,.members-am-more-tools:focus .members-am-more-tools-chevron,.members-am-more-tools:focus-visible .members-am-more-tools-chevron,.members-am-more-tools:active .members-am-more-tools-chevron,.members-am-more-tools .members-am-more-tools-chevron-svg,.members-am-more-tools:hover .members-am-more-tools-chevron-svg,.members-am-more-tools:focus .members-am-more-tools-chevron-svg,.members-am-more-tools:focus-visible .members-am-more-tools-chevron-svg,.members-am-more-tools:active .members-am-more-tools-chevron-svg{text-decoration:none !important}.members-am-more-tools .members-am-more-tools-text{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;line-height:1.4}.members-am-more-tools .members-am-more-tools-chevron{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-ms-flex-negative:0;flex-shrink:0;line-height:0;opacity:.88}.members-am-more-tools .members-am-more-tools-chevron-svg{display:block;overflow:visible;-webkit-transition:-webkit-transform .15s ease;transition:-webkit-transform .15s ease;transition:transform .15s ease;transition:transform .15s ease,-webkit-transform .15s ease;-webkit-transform-origin:50% 50%;transform-origin:50% 50%;shape-rendering:geometricPrecision}.members-am-more-tools .members-am-more-tools-chevron-svg polygon{stroke:none}.members-am-more-tools.is-open .members-am-more-tools-chevron-svg{-webkit-transform:rotate(180deg);transform:rotate(180deg)}@media(prefers-reduced-motion:reduce){.members-am-more-tools .members-am-more-tools-chevron-svg{-webkit-transition:none;transition:none}}@media screen and (max-width:782px){.members-am-toolbar-group--document{border-right:0;padding-right:0;border-bottom:1px solid var(--members-am-chrome-border,#c3c4c7);padding-bottom:10px;width:100%}.members-am-toolbar-group--view{margin-left:0;width:100%;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.members-am-toolbar-row--primary .members-am-toolbar-primary-user{margin-left:0;padding-left:0;border-left:0;padding-top:8px;border-top:1px solid var(--members-am-chrome-border,#c3c4c7);width:100%;max-width:none}.members-am-toolbar-row--primary .members-am-toolbar-primary-user #members-am-user-search.members-am-user-search-input{width:100%;max-width:100%}.members-am-toolbar-row--extra-tools .members-am-admin-editable{width:100%}.members-am-toolbar-row--extra-tools .members-am-copy-wrap{margin-left:0;padding-left:0;border-left:0;padding-top:8px;border-top:1px solid var(--members-am-chrome-border,#c3c4c7);width:100%}.members-am-toolbar-row--extra-tools .members-am-toolbar-group--io{margin-left:0;padding-left:0;border-left:0;padding-top:8px;border-top:1px solid var(--members-am-chrome-border,#c3c4c7);width:100%}}.members-am-toolbar-loading{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;margin-left:4px;color:var(--members-am-muted,#646970);font-size:13px;line-height:1}.members-am-toolbar-loading .spinner{float:none;margin:0}.members-am-toolbar-loading[hidden]{display:none !important}.members-am-copy-wrap label{margin-right:8px}.members-am-chips{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:8px;margin-bottom:12px}.members-am-chip{border-radius:999px;padding:4px 12px;border:1px solid var(--members-am-chrome-border,#c3c4c7);background:var(--members-am-chrome-bg,#f6f7f7);cursor:pointer}.members-am-chip.is-active{background:var(--members-am-accent-use);border-color:var(--members-am-accent-use);color:var(--wp-components-color-accent-inverted,#fff)}.members-am-carousel-wrap{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;gap:8px;margin-bottom:8px}.members-am-carousel-prev,.members-am-carousel-next{-ms-flex-item-align:center;align-self:center;width:36px;height:36px;border-radius:50%;border:1px solid var(--members-am-chrome-border,#c3c4c7);background:var(--wp-components-color-background,#fff);cursor:pointer}.members-am-columns{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-ms-flex:1;flex:1;gap:12px;min-height:320px;overflow:hidden}.members-am-column{-webkit-box-flex:1;-ms-flex:1;flex:1;min-width:0;background:var(--members-am-base,#1d2327);border-radius:4px;color:var(--members-am-fg-on-base,#f0f0f1);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.members-am-user-column{border:2px dashed var(--wp-components-color-gray-700,#8c8f94)}.members-am-sidebar-head{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:8px 10px;background:var(--members-am-surface-use);border-radius:4px 4px 0 0;font-weight:600;font-size:12px;text-transform:uppercase;letter-spacing:.04em;color:var(--members-am-fg-on-surface,var(--members-am-fg-on-base,#f0f0f1))}.members-am-col-filter{padding:6px 8px 8px;border-bottom:1px solid var(--members-am-border-on-base,var(--members-am-border-on-base-fallback));-ms-flex-negative:0;flex-shrink:0}.members-am-col-filter-input{width:100%;max-width:100%;-webkit-box-sizing:border-box;box-sizing:border-box;font-size:12px;line-height:1.4;padding:4px 8px;border-radius:2px;border:1px solid var(--members-am-border-on-base,var(--members-am-border-on-base-fallback));background:var(--members-am-base,#1d2327);color:var(--members-am-fg-on-base,#f0f0f1)}.members-am-col-filter-input::-webkit-input-placeholder{color:var(--members-am-fg-muted-on-base,var(--wp-components-color-gray-700,#8c8f94));opacity:1}.members-am-col-filter-input::-moz-placeholder{color:var(--members-am-fg-muted-on-base,var(--wp-components-color-gray-700,#8c8f94));opacity:1}.members-am-col-filter-input:-ms-input-placeholder{color:var(--members-am-fg-muted-on-base,var(--wp-components-color-gray-700,#8c8f94));opacity:1}.members-am-col-filter-input::-ms-input-placeholder{color:var(--members-am-fg-muted-on-base,var(--wp-components-color-gray-700,#8c8f94));opacity:1}.members-am-col-filter-input::placeholder{color:var(--members-am-fg-muted-on-base,var(--wp-components-color-gray-700,#8c8f94));opacity:1}.members-am-col-filter-input:focus{border-color:var(--members-am-accent-use);outline:1px solid transparent;-webkit-box-shadow:0 0 0 var(--wp-admin-border-width-focus,1px) var(--members-am-accent-use);box-shadow:0 0 0 var(--wp-admin-border-width-focus,1px) var(--members-am-accent-use)}.members-am-col-bulk{padding:0 8px 8px;border-bottom:1px solid var(--members-am-border-on-base,var(--members-am-border-on-base-fallback));-ms-flex-negative:0;flex-shrink:0}.members-am-col-bulk-toolbar,.members-am-col-collapse-toolbar{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:6px;margin-bottom:6px;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.members-am-col-bulk-toolbar .button.button-small,.members-am-col-collapse-toolbar .button.button-small{font-size:11px;min-height:26px;line-height:24px;padding:0 8px;background:var(--members-am-surface-use);border-color:var(--members-am-border-on-surface,var(--members-am-border-on-base,var(--members-am-border-on-base-fallback)));color:var(--members-am-fg-on-surface,var(--members-am-fg-on-base,#f0f0f1))}.members-am-col-bulk-toolbar .button.button-small:hover,.members-am-col-collapse-toolbar .button.button-small:hover{background:color-mix(in srgb,var(--members-am-surface-use) 85%,#fff 15%);border-color:var(--wp-components-color-gray-700,#8c8f94);color:var(--members-am-fg-on-surface,var(--members-am-fg-on-base,#f0f0f1))}.members-am-item-lead{-ms-flex-negative:0;flex-shrink:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:22px;padding:2px 0 0}.members-am-collapse-spacer{display:block;width:20px;height:20px;-ms-flex-negative:0;flex-shrink:0}.members-am-collapse-toggle{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:22px;height:22px;margin:0;padding:0;border:0;background:transparent;color:var(--members-am-fg-muted-on-base,var(--members-am-chrome-border,#c3c4c7));border-radius:2px;cursor:pointer;-ms-flex-negative:0;flex-shrink:0}.members-am-collapse-toggle:hover,.members-am-collapse-toggle:focus{color:var(--members-am-fg-on-base,#f0f0f1);background:color-mix(in srgb,var(--members-am-fg-on-base,#f0f0f1) 12%,transparent);outline:0}.members-am-collapse-toggle .dashicons{font-size:18px;width:18px;height:18px}.members-am-item-cb-wrap{-ms-flex-negative:0;flex-shrink:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;padding:2px 4px 0 0}.members-am-item-cb{margin:0;width:16px;height:16px;-ms-flex-negative:0;flex-shrink:0}.members-am-bulk-select{width:100%;max-width:100%;-webkit-box-sizing:border-box;box-sizing:border-box;font-size:12px;line-height:1.4;padding:4px 8px;border-radius:2px;border:1px solid var(--members-am-border-on-base,var(--members-am-border-on-base-fallback));background:var(--members-am-base,#1d2327);color:var(--members-am-fg-on-base,#f0f0f1)}.members-am-bulk-select:focus{border-color:var(--members-am-accent-use);outline:1px solid transparent;-webkit-box-shadow:0 0 0 var(--wp-admin-border-width-focus,1px) var(--members-am-accent-use);box-shadow:0 0 0 var(--wp-admin-border-width-focus,1px) var(--members-am-accent-use)}.members-am-item.members-am-filter-hidden,.members-am-sep.members-am-filter-hidden,.members-am-item.members-am-collapse-hidden{display:none !important}.members-am-col-move button{margin-left:4px;padding:0 6px;min-height:24px;line-height:22px;font-size:11px}.members-am-sidebar-list{padding:6px 0 12px;overflow-y:auto;max-height:480px}.members-am-item{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;gap:4px;padding:6px 10px 6px 6px;cursor:pointer;border-left:3px solid transparent;font-size:13px}.members-am-item.is-sub{padding-left:22px;font-size:12px;opacity:.95}.members-am-item.is-sub-deep{padding-left:36px}.members-am-sidebar-list .members-am-item{cursor:-webkit-grab;cursor:grab}.members-am-sidebar-list .members-am-item:active{cursor:-webkit-grabbing;cursor:grabbing}.members-am-sort-placeholder{-webkit-box-sizing:border-box;box-sizing:border-box;min-height:36px;margin:2px 0;background:color-mix(in srgb,var(--members-am-accent-use) 8%,transparent);border:1px dashed var(--members-am-accent-use);border-radius:2px}.members-am-item.is-hidden{opacity:.18}.members-am-item.is-no-cap{opacity:.35}.members-am-item.is-no-cap.is-hidden{opacity:.15}.members-am-item.is-selected{border-left-color:var(--members-am-accent-use);background:color-mix(in srgb,var(--members-am-accent-use) 15%,transparent)}.members-am-item-main{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;min-width:0}.members-am-item-main .dashicons{font-size:18px;width:18px;height:18px}.members-am-item-label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.members-am-item-actions{display:none;gap:2px}.members-am-item:hover .members-am-item-actions{display:-webkit-box;display:-ms-flexbox;display:flex}.members-am-item-actions button{min-height:22px;padding:0 4px;line-height:20px;font-size:11px}.members-am-sep{text-align:center;opacity:.35;font-size:11px;padding:4px 0}.members-am-carousel-dots{text-align:center;margin-bottom:4px}.members-am-dot{width:8px;height:8px;border-radius:50%;border:0;margin:0 4px;padding:0;background:var(--members-am-chrome-border,#c3c4c7);cursor:pointer}.members-am-dot.is-active{background:var(--members-am-accent-use)}.members-am-carousel-status{text-align:center;color:var(--members-am-muted,#646970);font-size:12px;margin-top:0}.members-am-badge{font-size:9px;text-transform:uppercase;padding:1px 4px;border-radius:2px;margin-right:4px;vertical-align:middle}.members-am-badge-new{background:var(--members-am-accent-use);color:var(--wp-components-color-accent-inverted,#fff)}.members-am-badge-edit{background:#dba617;color:var(--members-am-base,#1d2327)}.members-am-badge-nocap{background:var(--wp-components-color-gray-700,#8c8f94);color:var(--wp-components-color-accent-inverted,#fff)}.members-am-legend{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:16px;margin:0 0 8px;padding:0;font-size:12px;color:var(--members-am-muted,#646970)}.members-am-legend-item{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:4px}.members-am-edit-panel{margin-top:20px;padding:16px;border:1px solid var(--members-am-chrome-border,#c3c4c7);background:var(--wp-components-color-background,#fff);border-radius:4px}.members-am-edit-panel-header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:12px}.members-am-edit-panel-header h2{margin:0;font-size:16px}.members-am-edit-toolbar{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:12px;margin-bottom:12px}.members-am-edit-target-wrap select{margin-left:8px}.members-am-level-actions .button{margin-right:6px}.members-am-demote-wrap{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:6px}.members-am-demote-wrap .members-am-demote-select{min-width:200px;max-width:min(320px,100%)}.members-am-edit-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:16px}.members-am-edit-col label{display:block;font-weight:600;margin-bottom:4px}.members-am-colors-hint{margin:0 0 10px}.members-am-colors-readable-wrap{margin:8px 0 0}.members-am-icon-tabs{margin-bottom:8px}.members-am-icon-tabs .button{margin-right:4px;margin-bottom:4px}.members-am-icon-tabs .button.is-active{background:var(--members-am-accent-use);border-color:var(--members-am-accent-use);color:var(--wp-components-color-accent-inverted,#fff)}.members-am-icon-grid{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:4px;max-height:160px;overflow-y:auto;border:1px solid var(--wp-components-color-gray-200,#dcdcde);padding:8px;background:var(--members-am-chrome-bg,#f6f7f7);margin-bottom:8px}.members-am-icon-pick{width:36px;height:36px;padding:0;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;border:1px solid var(--members-am-chrome-border,#c3c4c7);background:var(--wp-components-color-background,#fff);cursor:pointer}.members-am-bulk-visibility-hint{margin:0 0 8px;font-size:12px;color:var(--members-am-fg-muted-on-base,#646970)}.members-am-vis-role-filter-wrap{margin-bottom:8px}.members-am-vis-row.members-am-vis-filter-hidden{display:none}.members-am-vis-row{display:block;margin-bottom:6px;font-weight:normal}.members-am-reset-dropdown{position:absolute;z-index:100000;background:var(--wp-components-color-background,#fff);border:1px solid var(--members-am-chrome-border,#c3c4c7);border-radius:6px;padding:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-shadow:0 4px 12px rgba(0,0,0,0.15);box-shadow:0 4px 12px rgba(0,0,0,0.15);min-width:280px;top:100%;left:0;margin-top:4px;overflow:hidden}.members-am-reset-title{padding:10px 14px;font-weight:600;font-size:13px;border-bottom:1px solid var(--wp-components-color-gray-200,#f0f0f0);color:var(--wp-components-color-foreground,#1d2327)}.members-am-reset-dropdown>.members-am-reset-option:last-of-type{border-bottom:0}.members-am-reset-option{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;gap:10px;padding:12px 14px;border:0;background:0;cursor:pointer;text-align:left;width:100%;border-bottom:1px solid var(--wp-components-color-gray-200,#f0f0f0);-webkit-transition:background .15s;transition:background .15s}.members-am-reset-option:hover{background:var(--members-am-chrome-bg,#f6f7f7)}.members-am-reset-option .dashicons{margin-top:2px;color:var(--members-am-muted,#646970)}.members-am-reset-option-text{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:2px}.members-am-reset-option-text strong{font-size:13px;color:var(--wp-components-color-foreground,#1d2327)}.members-am-reset-option-text small{font-size:12px;color:var(--members-am-muted,#646970)}.members-am-reset-danger:hover{background:#fcf0f1}.members-am-reset-danger .dashicons{color:#d63638}.members-am-reset-danger:hover strong{color:#d63638}@media screen and (max-width:782px){.members-am-columns{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}}.members-am-user-suggestions,.members-am-exempt-suggestions{position:absolute;z-index:100;background:var(--wp-components-color-background,#fff);border:1px solid var(--members-am-chrome-border,#c3c4c7);border-radius:4px;max-height:200px;overflow-y:auto;width:100%;-webkit-box-shadow:0 2px 6px rgba(0,0,0,0.15);box-shadow:0 2px 6px rgba(0,0,0,0.15);top:100%;left:0}.members-am-user-suggestion,.members-am-exempt-suggestion{padding:8px 12px;cursor:pointer;font-size:13px;border-bottom:1px solid var(--wp-components-color-gray-200,#f0f0f0)}.members-am-user-suggestion:hover,.members-am-exempt-suggestion:hover{background:color-mix(in srgb,var(--members-am-accent-use) 8%,var(--wp-components-color-background,#fff))}.members-am-user-suggestion:last-child,.members-am-exempt-suggestion:last-child{border-bottom:0}#members-am-import-file.members-am-import-file-hidden{display:none}.members-am-user-search-wrap{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px}#members-am-user-search.members-am-user-search-input{width:168px;max-width:100%}.members-am-legend-visibility-icon{font-size:14px;width:14px;height:14px;vertical-align:middle}.members-am-legend-nocap-badge{display:inline-block;background:#8c8f94;color:#fff;font-size:9px;padding:1px 4px;border-radius:2px;vertical-align:middle}#members-am-icon-preview.members-am-icon-preview{display:none;width:32px;height:32px;-o-object-fit:contain;object-fit:contain;margin-bottom:6px;border:1px solid #ddd;border-radius:3px;padding:2px;background:#f0f0f1}.members-am-icons .members-am-icon-upload-desc{margin-top:4px}#adminmenu .members-am-menu-badge{display:inline-block;color:#fff;font-size:9px;padding:1px 5px;border-radius:2px;line-height:1.4;vertical-align:middle}
\ No newline at end of file
diff --git a/js/admin-menus.js b/js/admin-menus.js
index e0f9960..0bc5ecf 100644
--- a/js/admin-menus.js
+++ b/js/admin-menus.js
@@ -26,6 +26,8 @@
columnBulkSelection: {},
/** Per-column collapsed parent ids: key -> { [parentItemId]: true } when children are folded away. */
collapsedParents: {},
+ /** Display labels for exempt administrator IDs (string keys). */
+ exemptUserLabels: {},
};
/** Snapshot of persisted settings for unsaved-change detection (object key order–independent). */
@@ -201,6 +203,7 @@
state.settings = deepClone(undoSettingsSnapshot);
undoSettingsSnapshot = null;
ensureSettings();
+ syncExemptUserLabels();
state.tree = buildTreeWithCustoms();
updateUndoButton();
renderAll();
@@ -216,7 +219,14 @@
function ensureSettings() {
if (!state.settings._meta || Array.isArray(state.settings._meta)) {
- state.settings._meta = { version: 3, admin_editable: false };
+ state.settings._meta = {
+ version: 3,
+ admin_editable: false,
+ admin_menu_exempt_user_ids: [],
+ };
+ }
+ if (!Array.isArray(state.settings._meta.admin_menu_exempt_user_ids)) {
+ state.settings._meta.admin_menu_exempt_user_ids = [];
}
if (!state.settings.roles || Array.isArray(state.settings.roles)) {
state.settings.roles = {};
@@ -232,6 +242,126 @@
}
}
+ function getExemptUserIds() {
+ ensureSettings();
+ var m = state.settings._meta.admin_menu_exempt_user_ids;
+ if (!Array.isArray(m)) {
+ return [];
+ }
+ return m
+ .map(function (x) {
+ return parseInt(x, 10);
+ })
+ .filter(function (n) {
+ return n > 0;
+ });
+ }
+
+ function syncExemptUserLabels() {
+ var base = membersAdminMenus.exemptUserLabels || {};
+ getExemptUserIds().forEach(function (id) {
+ var sk = String(id);
+ if (!state.exemptUserLabels[sk]) {
+ state.exemptUserLabels[sk] = base[sk] || 'User #' + id;
+ }
+ });
+ Object.keys(state.exemptUserLabels).forEach(function (sk) {
+ if (getExemptUserIds().indexOf(parseInt(sk, 10)) === -1) {
+ delete state.exemptUserLabels[sk];
+ }
+ });
+ }
+
+ function renderExemptUi() {
+ var on = !!state.settings._meta.admin_editable;
+ var $row = $('#members-am-exempt-row');
+ if (!$row.length) {
+ return;
+ }
+ $row.prop('hidden', !on);
+ if (!on) {
+ return;
+ }
+ var i18n = membersAdminMenus.i18n || {};
+ var $chips = $('#members-am-exempt-chips').empty();
+ var ids = getExemptUserIds();
+ var lastOne = ids.length <= 1;
+ ids.forEach(function (id) {
+ var sk = String(id);
+ var label = state.exemptUserLabels[sk] || 'User #' + id;
+ var $chip = $(' ');
+ $chip.append($(' ').text(label));
+ var $rm = $(' ')
+ .attr('aria-label', i18n.exemptRemove || 'Remove')
+ .text(i18n.exemptRemove || 'Remove');
+ if (lastOne) {
+ $rm.prop('disabled', true).attr('aria-disabled', 'true');
+ } else {
+ $rm.data('userId', id);
+ }
+ $chip.append($rm);
+ $chips.append($chip);
+ });
+ }
+
+ function showExemptSuggestions(list) {
+ $('.members-am-exempt-suggestions').remove();
+ var $input = $('#members-am-exempt-search');
+ if (!$input.length) {
+ return;
+ }
+ var $wrap = $input.parent();
+ $wrap.css('position', 'relative');
+ var $dd = $('
');
+ list.forEach(function (u) {
+ $dd.append(
+ $('
')
+ .text(u.label)
+ .on('click', function () {
+ var id = parseInt(u.id, 10);
+ if (getExemptUserIds().indexOf(id) !== -1) {
+ $('.members-am-exempt-suggestions').remove();
+ $input.val('');
+ return;
+ }
+ pushUndoSnapshot();
+ state.settings._meta.admin_menu_exempt_user_ids = getExemptUserIds().concat([id]);
+ state.exemptUserLabels[String(id)] = u.label;
+ $('.members-am-exempt-suggestions').remove();
+ $input.val('');
+ renderExemptUi();
+ })
+ );
+ });
+ $wrap.append($dd);
+ setTimeout(function () {
+ $(document).one('click', function () {
+ $('.members-am-exempt-suggestions').remove();
+ });
+ }, 0);
+ }
+
+ function searchExemptUsers(term) {
+ $.getJSON(membersAdminMenus.ajaxUrl, {
+ action: 'members_admin_menus_user_search',
+ nonce: membersAdminMenus.nonce,
+ term: term,
+ }, function (res) {
+ if (!res.success || !res.data || !res.data.length) {
+ $('.members-am-exempt-suggestions').remove();
+ return;
+ }
+ var admins = res.data.filter(function (u) {
+ return u.roles && u.roles.indexOf('administrator') !== -1;
+ });
+ if (!admins.length) {
+ $('.members-am-exempt-suggestions').remove();
+ return;
+ }
+ showExemptSuggestions(admins);
+ });
+ }
+
function getRoleConfig(role) {
ensureSettings();
if (!state.settings.roles[role]) {
@@ -1788,13 +1918,13 @@
);
$ogChecked.append(
$(' ').text(
- i18n.bulkKeepOnlyCheckedVisible || 'Keep only checked visible'
+ i18n.bulkKeepOnlyCheckedVisible || 'Hide everything except selected (and parents)'
),
$(' ').text(
i18n.bulkHideCheckedItems || 'Hide checked items'
),
$(' ').text(
- i18n.bulkShowCheckedItems || 'Show checked items'
+ i18n.bulkShowCheckedItems || 'Show selected items'
)
);
$sel.append($ogWhole, $ogChecked);
@@ -1824,7 +1954,7 @@
if (
!window.confirm(
i18n.bulkConfirmKeepOnlyChecked ||
- 'Hide all items except checked items and their parent menus?'
+ 'Hide all menu items except the selected ones and their parent menus?'
)
) {
return;
@@ -3300,20 +3430,72 @@
$('#members-am-admin-editable').on('change', function () {
var ok = true;
+ var i18n = membersAdminMenus.i18n || {};
if ($(this).is(':checked')) {
- ok = window.confirm(membersAdminMenus.i18n.adminEditableWarn);
+ ok = window.confirm(i18n.adminEditableWarn);
}
if (!ok) {
$(this).prop('checked', false);
return;
}
+ pushUndoSnapshot();
state.settings._meta.admin_editable = $(this).is(':checked');
+ if (state.settings._meta.admin_editable && membersAdminMenus.currentUserIsAdministrator && membersAdminMenus.currentUserId) {
+ var cur = parseInt(membersAdminMenus.currentUserId, 10);
+ if (getExemptUserIds().length === 0) {
+ state.settings._meta.admin_menu_exempt_user_ids = [cur];
+ var sk = String(cur);
+ var base = membersAdminMenus.exemptUserLabels || {};
+ state.exemptUserLabels[sk] = base[sk] || 'User #' + cur;
+ }
+ }
+ if (!state.settings._meta.admin_editable) {
+ state.settings._meta.admin_menu_exempt_user_ids = [];
+ state.exemptUserLabels = $.extend({}, membersAdminMenus.exemptUserLabels || {});
+ }
+ syncExemptUserLabels();
initActiveRoles();
renderChips();
saveViewState();
+ renderExemptUi();
renderAll();
});
+ $('#members-am-exempt-chips').on('click', '.members-am-exempt-remove', function () {
+ var id = $(this).data('userId');
+ if (!id) {
+ return;
+ }
+ var ids = getExemptUserIds();
+ if (ids.length <= 1) {
+ showMembersAmNotice(
+ 'warning',
+ (membersAdminMenus.i18n && membersAdminMenus.i18n.exemptLastAdministrator) ||
+ 'Keep at least one exempt administrator while this option is enabled.'
+ );
+ return;
+ }
+ pushUndoSnapshot();
+ state.settings._meta.admin_menu_exempt_user_ids = ids.filter(function (x) {
+ return x !== id;
+ });
+ delete state.exemptUserLabels[String(id)];
+ renderExemptUi();
+ });
+
+ var exemptSearchTimer;
+ $('#members-am-exempt-search').on('input', function () {
+ var t = $(this).val();
+ clearTimeout(exemptSearchTimer);
+ exemptSearchTimer = setTimeout(function () {
+ if (t.length > 1) {
+ searchExemptUsers(t);
+ } else {
+ $('.members-am-exempt-suggestions').remove();
+ }
+ }, 300);
+ });
+
$('#members-am-sync-scroll').prop('checked', state.syncScroll !== false);
$('#members-am-sync-scroll').on('change', function () {
state.syncScroll = $(this).is(':checked');
@@ -3635,6 +3817,7 @@
function renderAll() {
renderColumns();
renderEditTargetRoles();
+ renderExemptUi();
if (state.selectedId) {
openEditPanel();
}
@@ -3643,9 +3826,12 @@
function init() {
consumeFlashNotice();
ensureSettings();
+ state.exemptUserLabels = $.extend({}, membersAdminMenus.exemptUserLabels || {});
+ syncExemptUserLabels();
state.tree = buildTreeWithCustoms();
initActiveRoles();
$('#members-am-admin-editable').prop('checked', !!state.settings._meta.admin_editable);
+ renderExemptUi();
renderCopySelect();
renderChips();
bind();
diff --git a/js/admin-menus.min.js b/js/admin-menus.min.js
index 466c3eb..dc4da4c 100644
--- a/js/admin-menus.min.js
+++ b/js/admin-menus.min.js
@@ -1 +1 @@
-!function(S){"use strict";var M={settings:S.extend(!0,{},membersAdminMenus.settings),tree:[],activeRoleSlugs:[],carouselPage:0,columnsPerPage:3,selectedId:null,iconTab:"dashicons",previewUserId:null,previewUserRoles:[],userSuggestions:[],mediaFrame:null,allowUnload:!1,syncScroll:function(){try{return"0"!==localStorage.getItem("members_am_sync_scroll")}catch(e){return!0}}(),columnFilters:{},columnBulkSelection:{},collapsedParents:{}},t="",p=!1;function s(){return function r(n){if(null===n)return"null";var e=typeof n;return"string"==e||"number"==e||"boolean"==e?JSON.stringify(n):"undefined"==e?"null":Array.isArray(n)?"["+n.map(function(e){return r(e)}).join(",")+"]":"object"!=e?JSON.stringify(n):"{"+Object.keys(n).sort().map(function(e){return JSON.stringify(e)+":"+r(n[e])}).join(",")+"}"}(M.settings)}function a(){if(!M.allowUnload&&s()!==t)return membersAdminMenus.i18n&&membersAdminMenus.i18n.unsavedChanges||""}var i="members_am_notice";function b(e,r){if(r){var n=S("#members-am-notices");n.length||(S(".members-admin-menus-wrap h1").first().after('
'),n=S("#members-am-notices"));var t=S("
",{class:"notice is-dismissible"}).addClass("notice-"+(e||"info"));t.append(S("
").text(r)),n.prepend(t),S(document).trigger("wp-notice-added")}}function o(e,r){try{sessionStorage.setItem(i,JSON.stringify({type:e||"success",message:r}))}catch(e){}}var e=["dashicons-menu","dashicons-admin-dashboard","dashicons-admin-post","dashicons-admin-page","dashicons-admin-media","dashicons-admin-comments","dashicons-admin-appearance","dashicons-admin-plugins","dashicons-admin-users","dashicons-admin-tools","dashicons-admin-settings","dashicons-admin-generic","dashicons-edit","dashicons-plus","dashicons-chart-bar","dashicons-cart","dashicons-products","dashicons-email","dashicons-groups","dashicons-heart","dashicons-star-filled","dashicons-smiley","dashicons-info","dashicons-lock","dashicons-unlock","dashicons-visibility","dashicons-hidden","dashicons-arrow-up","dashicons-arrow-down","dashicons-admin-network","dashicons-performance"],r=["fa-solid fa-house","fa-solid fa-user","fa-solid fa-gear","fa-solid fa-file","fa-solid fa-image","fa-solid fa-cart-shopping","fa-solid fa-chart-line","fa-solid fa-envelope","fa-solid fa-book","fa-solid fa-link","fa-solid fa-bell","fa-solid fa-star","fa-solid fa-heart","fa-solid fa-lock","fa-solid fa-unlock","fa-solid fa-pen","fa-solid fa-trash","fa-solid fa-plus","fa-solid fa-minus"],l="members_am_view_state";function m(){try{localStorage.setItem(l,JSON.stringify({activeRoleSlugs:M.activeRoleSlugs,carouselPage:M.carouselPage}))}catch(e){}}function c(e){return JSON.parse(JSON.stringify(e))}var d=null;function h(){d=c(M.settings),u()}function u(){var e=S("#members-am-undo");if(e.length){var r=!!d;e.prop("disabled",!r).attr("aria-disabled",r?"false":"true")}}function v(){return membersAdminMenus.roles||[]}function f(){M.settings._meta&&!Array.isArray(M.settings._meta)||(M.settings._meta={version:3,admin_editable:!1}),M.settings.roles&&!Array.isArray(M.settings.roles)||(M.settings.roles={}),M.settings.users&&!Array.isArray(M.settings.users)||(M.settings.users={}),Array.isArray(M.settings.custom_items)||(M.settings.custom_items=[]),M.settings.capabilities&&!Array.isArray(M.settings.capabilities)||(M.settings.capabilities={})}function C(e){f(),M.settings.roles[e]||(M.settings.roles[e]={hidden:[],order:[],submenu_order:{},overrides:{}});var r=M.settings.roles[e];return r.hidden&&Array.isArray(r.hidden)||(r.hidden=[]),r.order&&Array.isArray(r.order)||(r.order=[]),r.submenu_order&&!Array.isArray(r.submenu_order)||(r.submenu_order={}),r.overrides&&!Array.isArray(r.overrides)||(r.overrides={}),r}function I(e){f(),M.settings.users[e]||(M.settings.users[e]={});var r=M.settings.users[e];return r.hidden&&Array.isArray(r.hidden)||(r.hidden=[]),r.order&&Array.isArray(r.order)||(r.order=[]),r.overrides&&!Array.isArray(r.overrides)||(r.overrides={}),r.submenu_order&&!Array.isArray(r.submenu_order)||(r.submenu_order={}),r}function P(e,r){var n=function(e,r){for(var n=(e||[]).slice().reverse(),t={},a=0;a=a.length||(h(),a.splice(d,1),a.splice(u,0,o?c:r))}}function _(e){var r=e.id||"c";return"members-am-"+String(r).replace(/[^a-z0-9_-]/gi,"-").toLowerCase()}function k(e){return!!e&&0===(-1!==e.indexOf("::")?e.split("::").pop():e).indexOf("members-am-")}function w(e,r){if(!e||!r)return null;for(var n=0;n]+$/i.test(r)?r:0===r.indexOf("//")&&/^\/\/[a-z0-9.-]+\/?/i.test(r)?"https:"+r:"":""}function X(e,r,n){var t=K(r,n);if("fontawesome"===t&&r){var a=function(e){if(!e||"string"!=typeof e)return"";var r,n=e.trim().split(/\s+/).filter(Boolean);if(!n.length)return"";for(r=0;r",{class:"members-am-fa-icon"}),i=S(" ",{"aria-hidden":"true"});a.split(/\s+/).forEach(function(e){i.addClass(e)}),s.append(i),e.append(s)}else e.append(S(" ",{class:"dashicons dashicons-admin-generic"}))}else if("svg"!==t&&"image"!==t&&"custom"!==t||!r){var o=function(e){if(!e||"string"!=typeof e)return"";var r=e.trim();return G.test(r)?r:""}(r);e.append(S(" ",{class:"dashicons "+(o||"dashicons-admin-generic")}))}else{var l=q(r);l?e.append(S(" ",{src:l,alt:""}).css({width:"20px",height:"20px",display:"inline-block",verticalAlign:"middle",objectFit:"contain",filter:"none"})):e.append(S(" ",{class:"dashicons dashicons-admin-generic"}))}}function Y(){var t=[];return function e(r){var n;for(n=0;na&&(M.carouselPage=a))}}M.activeRoleSlugs=r.filter(function(e){return"administrator"!==e||n}),M.activeRoleSlugs.length||(M.activeRoleSlugs=["subscriber"])}function he(){var t=S("#members-am-role-chips").empty();v().forEach(function(e){if("administrator"!==e.slug||M.settings._meta.admin_editable){var r=-1!==M.activeRoleSlugs.indexOf(e.slug),n=S(' ').text(e.label).attr("data-role",e.slug).toggleClass("is-active",r);t.append(n)}})}function ve(n,t,e,a,s){(function(e,r,n,t,a){a=a||0;var s=r.id,i=z(e,s),o=!$(e,r.cap),l=C(e).overrides[s]||{},m=l.label||r.title||s,c=S('
').attr("data-id",s).attr("data-menu-parent",n||"").toggleClass("is-hidden",i).toggleClass("is-no-cap",o).toggleClass("is-selected",M.selectedId===s).toggleClass("is-sub",0 ');if(f){te(d);var b=!!M.collapsedParents[d][s],h=u.expandSubmenus||"Expand submenu items",v=u.collapseSubmenus||"Collapse submenu items";S(' ').attr("aria-expanded",!b).attr("aria-label",(b?h:v)+": "+m).append(S(' ').addClass(b?"dashicons-arrow-right-alt2":"dashicons-arrow-down-alt2")).on("click",function(e){e.stopPropagation(),te(d),M.collapsedParents[d][s]=!M.collapsedParents[d][s],Ae()}).appendTo(p),c.toggleClass("is-collapse-collapsed",b)}else p.append(S(' '));c.append(p);var g=u.bulkCheckboxAria||"Include in bulk actions",x=S(' '),y=S(' ').prop("checked",!!M.columnBulkSelection[d].ids[s]).attr("aria-label",g+": "+m).on("click",function(e){e.stopPropagation()}).on("change",function(e){e.stopPropagation(),ne(d,s,S(this).prop("checked")),Ae()});x.append(y),c.append(x);var _=S('
');0===a&&X(_,l.icon||r.icon,l.icon_type||r.icon_type);r.custom&&_.append(S('custom '));l.label&&_.append(S('edit '));if(_.append(S(' ').text(m)),l.badge){var k=l.badge_bg||"#d63638";_.append(S(' ').text(l.badge).css({backgroundColor:k,color:"#fff",fontSize:"9px",padding:"1px 5px",borderRadius:"2px",marginLeft:"4px",whiteSpace:"nowrap"}))}if(o){var w=membersAdminMenus.i18n||{},A=w.noAccessTitlePattern&&w.noAccessTitlePattern.replace("%s",r.cap||"read")||"This role does not have the '"+(r.cap||"read")+"' capability on this role object. Users with multiple roles may still access the screen. Manage capabilities in Members → Roles.";_.append(S(' ').attr("title",A).text("🔒 no access"))}c.append(_),l.color_bg&&c.css("background-color",l.color_bg);l.color_text&&c.find(".members-am-item-label").css("color",l.color_text);l.color_icon&&(c.find(".dashicons").css("color",l.color_icon),c.find(".members-am-fa-icon i").css("color",l.color_icon),c.find("img").css("filter","none"));var O=S('
');O.append(S(' ').text("◉"),S(' ').text("↑"),S(' ').text("↓")),c.append(O),t.append(c)})(n,t,e,a,s=s||0),t.children&&t.children.length&&D(n,t.id).forEach(function(e){var r=function(e,r,n){if(-1!==n.indexOf("::")){var t=O(n);return t&&R(n,e)===r?t:null}var a=O(H(r,n));return a||(-1===n.indexOf("::")&&(C(e).overrides[n]||{}).parent===r?O(n):null)}(n,t.id,e);r&&R(r.id,n)===t.id&&ve(n,r,t.id,a,s+1)})}function ge(n,t,e,a,s,i){i=i||0,s.append(function(r,e,n,t){t=t||0;var a=P(n,r.id),s=a.label||r.title,i=function(e,r){var n=I(e);if(-1!==n.hidden.indexOf(r))return!0;if(e===M.previewUserId&&M.previewUserRoles&&M.previewUserRoles.length){var t,a=M.previewUserRoles;for(t=0;t").addClass(m).attr("data-id",r.id).attr("data-menu-parent",e||""),d="u:"+n;Z(d);var u=membersAdminMenus.i18n||{},f=r.children&&r.children.length,p=S(' ');if(f){te(d);var b=!!M.collapsedParents[d][r.id],h=u.expandSubmenus||"Expand submenu items",v=u.collapseSubmenus||"Collapse submenu items";S(' ').attr("aria-expanded",!b).attr("aria-label",(b?h:v)+": "+s).append(S(' ').addClass(b?"dashicons-arrow-right-alt2":"dashicons-arrow-down-alt2")).on("click",function(e){e.stopPropagation(),te(d),M.collapsedParents[d][r.id]=!M.collapsedParents[d][r.id],Ae()}).appendTo(p),c.toggleClass("is-collapse-collapsed",b)}else p.append(S(' '));c.append(p);var g=u.bulkCheckboxAria||"Include in bulk actions",x=S(' '),y=S(' ').prop("checked",!!M.columnBulkSelection[d].ids[r.id]).attr("aria-label",g+": "+s).on("click",function(e){e.stopPropagation()}).on("change",function(e){e.stopPropagation(),ne(d,r.id,S(this).prop("checked")),Ae()});x.append(y),c.append(x);var _=S('
');0===t&&X(_,a.icon||r.icon,a.icon_type||r.icon_type);r.custom&&_.append(S('custom '));a.label&&_.append(S('edit '));if(_.append(S(' ').text(s)),a.badge){var k=a.badge_bg||"#d63638";_.append(S(' ').text(a.badge).css({backgroundColor:k,color:"#fff",fontSize:"9px",padding:"1px 5px",borderRadius:"2px",marginLeft:"4px",whiteSpace:"nowrap"}))}if(o){var w=membersAdminMenus.i18n||{},A=w.noAccessTitlePattern&&w.noAccessTitlePattern.replace("%s",r.cap||"read")||"This user does not have the '"+(r.cap||"read")+"' capability.";_.append(S(' ').attr("title",A).text("🔒 no access"))}c.append(_),a.color_bg&&c.css("background-color",a.color_bg);a.color_text&&c.find(".members-am-item-label").css("color",a.color_text);a.color_icon&&(c.find(".dashicons").css("color",a.color_icon),c.find(".members-am-fa-icon i").css("color",a.color_icon));var O=S('
');return O.append(S(' ').text(i?"◯":"◉"),S(' ').text("↑"),S(' ').text("↓")),c.append(O),c.on("click",function(e){S(e.target).closest("button, .members-am-item-cb, .members-am-collapse-toggle").length||(M.selectedId=r.id,Je())}),c}(t,e,n,i)),t.children&&t.children.length&&function(e,r){var n=x(e,r),t=I(e),a=t.submenu_order&&t.submenu_order[r];if(!a||!a.length)return n.slice();var s=a.filter(function(e){return-1!==n.indexOf(e)});return n.forEach(function(e){-1===s.indexOf(e)&&s.push(e)}),s}(n,t.id).forEach(function(e){var r=function(e,r,n){if(-1!==n.indexOf("::")){var t=O(n);return t&&U(n,e)===r?t:null}var a=O(H(r,n));if(a)return a;if(-1===n.indexOf("::")){var s=I(e);if((s.overrides&&s.overrides[n]||{}).parent===r)return O(n)}return null}(n,t.id,e);r&&U(r.id,n)===t.id&&ge(n,r,t.id,a,s,i+1)})}function xe(e,r){var a=(r||"").trim().toLowerCase(),n=e.children(".members-am-item");if(!a)return n.removeClass("members-am-filter-hidden"),void e.children(".members-am-sep").removeClass("members-am-filter-hidden");var i={};n.each(function(){var e=S(this),r=e.attr("data-id"),n=(e.find(".members-am-item-label").first().text()||"").toLowerCase(),t=(r||"").toLowerCase();i[r]=-1!==n.indexOf(a)||-1!==t.indexOf(a)});var o={};n.each(function(){var e=S(this).attr("data-id"),r=S(this).attr("data-menu-parent")||"";o[r]||(o[r]=[]),o[r].push(e)});var l={};function m(e){var r,n=i[e],t=o[e]||[],a=!1;for(r=0;r '),o=S(' ').attr("placeholder",a).attr("aria-label",s).val(t);i.append(o),e.find(".members-am-sidebar-head").first().after(i),o.on("input",function(){M.columnFilters[n]=S(this).val(),xe(r,S(this).val())}),xe(r,t)}function _e(e,r){var s=0===String(r).indexOf("u:"),i=s?parseInt(r.replace(/^u:/,""),10):0,o=s?null:r,l=r,m=membersAdminMenus.i18n||{},n=S('
').attr("data-column-key",l),t=S('
');t.append(S(' ').text(m.bulkSelectVisible||"Select visible"),S(' ').text(m.bulkClearSelection||"Clear selection"));var a=S('
');a.append(S(' ').text(m.collapseAllMenus||"Collapse all"),S(' ').text(m.expandAllMenus||"Expand all"));var c=S(' ').attr("aria-label",m.bulkVisibilityLabel||"Menu visibility for this column");c.append(S(' ').text(m.bulkActionsPlaceholder||"Choose visibility…"));var d=S(" ").attr("label",m.bulkGroupWholeColumn||"Whole column");d.append(S(' ').text(m.bulkShowAllItems||"Show every menu item"),S(' ').text(m.bulkHideAllItems||"Hide every menu item"));var u=S(" ").attr("label",m.bulkGroupCheckedRows||"Checked rows");u.append(S(' ').text(m.bulkKeepOnlyCheckedVisible||"Keep only checked visible"),S(' ').text(m.bulkHideCheckedItems||"Hide checked items"),S(' ').text(m.bulkShowCheckedItems||"Show checked items")),c.append(d,u),n.append(t,a,c);var f=e.find(".members-am-col-filter").first();f.length?f.after(n):e.find(".members-am-sidebar-head").first().after(n),c.on("change",function(){var e=S(this).val();if(S(this).val(""),e)if(!("keep-only-checked"===e||"hide-checked"===e||"show-checked"===e)||ee(l).length){if("keep-only-checked"===e){if(!window.confirm(m.bulkConfirmKeepOnlyChecked||"Hide all items except checked items and their parent menus?"))return}else if("hide-all"===e){if(!window.confirm(m.bulkConfirmHideAll||"Hide every menu item in this column?"))return}else if("hide-checked"===e&&!window.confirm(m.bulkConfirmHideChecked||"Hide the checked items (and their submenus where applicable)?"))return;var r,n,t,a;h(),s?"show-all"===e?I(i).hidden=[]:"hide-all"===e?(t=i,a=Y(),I(t).hidden=a.slice()):"keep-only-checked"===e?function(e,n){var r=ee(e);if(r.length){var t={};r.forEach(function(e){for(var r=e;r;)t[r]=!0,r=U(r,n)});var a=Y(),s=I(n).hidden;s.length=0,a.forEach(function(e){t[e]||s.push(e)})}}(l,i):"hide-checked"===e?me(l,i):"show-checked"===e&&ce(l,i):"show-all"===e?C(o).hidden=[]:"hide-all"===e?(r=o,n=Y(),C(r).hidden=n.slice()):"keep-only-checked"===e?function(e,n){var r=ee(e);if(r.length){var t={};r.forEach(function(e){for(var r=e;r;)t[r]=!0,r=R(r,n)});var a=Y(),s=C(n).hidden;s.length=0,a.forEach(function(e){t[e]||s.push(e)})}}(l,o):"hide-checked"===e?oe(l,o):"show-checked"===e&&le(l,o),Je()}else b("warning",m.bulkSelectCheckedFirst||"Check one or more menu items first.")})}function ke(e){return-1!==e.indexOf("::")?e.split("::").pop():e}function we(){S.fn.sortable&&S("#members-am-columns .members-am-sidebar-list").each(function(){var e=S(this);e.data("ui-sortable")&&e.sortable("destroy");var r=e.closest(".members-am-column"),n=r.data("role"),t=r.data("user");e.sortable({axis:"y",distance:6,items:"> .members-am-item, > .members-am-sep",cancel:".members-am-item-actions button, .members-am-item-cb, .members-am-item-cb-wrap, .members-am-collapse-toggle",placeholder:"members-am-sort-placeholder",forcePlaceholderSize:!0,tolerance:"pointer",start:function(){h()},update:function(){t?function(e,r){var a=[],s={};e.children().each(function(){var e=S(this);if(e.hasClass("members-am-sep")){var r=e.attr("data-sep-id");r&&a.push(r)}else if(e.hasClass("members-am-item")){var n=e.attr("data-id");if(n){var t=e.attr("data-menu-parent");void 0===t||""===t?a.push(n):(s[t]||(s[t]=[]),s[t].push(ke(n)))}}});var n=I(r);n.order=a,n.submenu_order=s}(e,t):n&&function(e,r){var a=[],s={};e.children().each(function(){var e=S(this);if(e.hasClass("members-am-sep")){var r=e.attr("data-sep-id");r&&a.push(r)}else if(e.hasClass("members-am-item")){var n=e.attr("data-id");if(n){var t=e.attr("data-menu-parent");void 0===t||""===t?a.push(n):(s[t]||(s[t]=[]),s[t].push(ke(n)))}}});var n=C(r);n.order=a,n.submenu_order=s}(e,n),Oe()}})})}function Ae(){var n=S("#members-am-columns"),t={};n.find(".members-am-column").each(function(){var e=S(this).data("role");if(e){var r=S(this).find(".members-am-sidebar-list");r.length&&(t[e]=r.scrollTop())}}),n.empty();var e=M.carouselPage*M.columnsPerPage;if(M.activeRoleSlugs.slice(e,e+M.columnsPerPage).forEach(function(e){var r=S("
",{class:"members-am-column"}).attr("data-role",e);!function(n,e){e.empty();var r=S(''),t=(v().filter(function(e){return e.slug===n})[0]||{}).label||n;r.append(S('').text(t)),r.append(S(' ').append(S(' ').text("◀"),S(' ').text("▶"))),e.append(r);var a=S('');J(n).forEach(function(e){if(0!==e.indexOf("sep-")){var r=O(e);r&&ve(n,r,null,a,0)}else a.append(S('
').attr("data-sep-id",e).text("—"))}),e.append(a),se(a,n),ye(e,a,n),_e(e,n)}(e,r),n.append(r),t[e]&&r.find(".members-am-sidebar-list").scrollTop(t[e])}),M.previewUserId){var a=M.previewUserId,r=S("
",{class:"members-am-column members-am-user-column"}).attr("data-user",String(a)),s=S('');s.append(S(" ").text(M.previewUserLabel||"User #"+a)),s.append(S('× ').on("click",function(){M.previewUserId=null,M.previewUserLabel=null,M.previewUserRoles=[],Je()})),r.append(s);var i=S(''),o=I(a);g(a).forEach(function(e){if(0!==e.indexOf("sep-")){var r=O(e);r&&ge(a,r,null,o,i,0)}else i.append(S('
').attr("data-sep-id",e).text("——"))}),r.append(i),se(i,"u:"+a),ye(r,i,"u:"+a),_e(r,"u:"+a),n.append(r)}if(M.syncScroll){var l=n.find(".members-am-sidebar-list"),m=!1;l.on("scroll",function(){if(!m){m=!0;var e=S(this).scrollTop();l.not(this).scrollTop(e),m=!1}})}!function(){var e=Math.max(1,Math.ceil(M.activeRoleSlugs.length/M.columnsPerPage)),r=(Math.min(M.carouselPage+1,e),M.carouselPage*M.columnsPerPage+1),n=Math.min((M.carouselPage+1)*M.columnsPerPage,M.activeRoleSlugs.length);S("#members-am-carousel-status").text(r+"–"+n+" "+membersAdminMenus.i18n.of+" "+M.activeRoleSlugs.length);for(var t=S("#members-am-carousel-dots").empty(),a=0;a ').toggleClass("is-active",a===M.carouselPage))}(),we()}function Oe(){if(M.selectedId){S("#members-am-edit-panel").removeAttr("hidden");var e=O(M.selectedId),r=fe()||{};S("#members-am-edit-title").text(e?e.title:M.selectedId),S("#members-am-edit-label").val(r.label||e&&e.title||"");var n=k(M.selectedId);S("#members-am-edit-url-wrap").toggle(n),S("#members-am-edit-url").attr("placeholder","Override URL (leave empty for default)").val(n&&(r.url||e&&e.url)||"").data("default-url",e&&e.url||""),S("#members-am-icon-type").val(r.icon_type||"dashicon"),S("#members-am-icon-value").val(r.icon||e&&e.icon||"");var t=r.icon||e&&e.icon||"",a=K(t,r.icon_type||e&&e.icon_type||"");if("image"!==a&&"custom"!==a&&"svg"!==a||!t)S("#members-am-icon-preview").hide().removeAttr("src");else{var s=q(t);s?S("#members-am-icon-preview").show().attr("src",s):S("#members-am-icon-preview").hide().removeAttr("src")}S("#members-am-color-bg").val(r.color_bg||""),S("#members-am-color-text").val(r.color_text||""),S("#members-am-color-icon").val(r.color_icon||""),S("#members-am-badge-text").val(r.badge||""),S("#members-am-badge-bg").val(r.badge_bg||""),S("#members-am-item-cap").attr("placeholder",e&&e.cap?e.cap+" (default)":"").val(M.settings.capabilities[M.selectedId]||"");var i=e&&e.custom,o=S("#members-am-remove-custom");i?o.removeAttr("hidden"):o.attr("hidden","hidden"),S("#members-am-visibility-toggles").empty();var l=V(M.settings.capabilities[M.selectedId]||"")||V(e&&e.cap||"")||"read",m=[];if(v().forEach(function(e){"administrator"===e.slug&&!M.settings._meta.admin_editable||m.push(e)}),10<=m.length){var c=membersAdminMenus.i18n&&membersAdminMenus.i18n.filterRolesVisibility||"Filter roles…",d=membersAdminMenus.i18n&&membersAdminMenus.i18n.filterRolesVisibilityLabel||"Filter roles in this list",u=S('
'),f=S(' ').attr("placeholder",c).attr("aria-label",d);u.append(f),S("#members-am-visibility-toggles").append(u),f.on("input",function(){var a=(S(this).val()||"").trim().toLowerCase();S("#members-am-visibility-toggles .members-am-vis-row").each(function(){var e=S(this),r=(e.find("span").first().text()||"").toLowerCase(),n=String(e.find(".members-am-vis-cb").data("role")||"").toLowerCase(),t=!a||-1!==r.indexOf(a)||-1!==n.indexOf(a);e.toggleClass("members-am-vis-filter-hidden",!t)})})}m.forEach(function(e){var r=z(e.slug,M.selectedId),n=$(e.slug,l),t=S(' ').attr("data-role",e.slug).prop("checked",!r&&n);n||t.prop("disabled",!0);var a=S(' ').append(t,S(" ").text(e.label));n||(a.append(S(" ").text(" — no capability").css({color:"#999",fontStyle:"italic",marginLeft:"4px"})),a.css("opacity","0.5")),S("#members-am-visibility-toggles").append(a)}),S(".members-am-color").each(function(){S(this).data("wpWpColorPicker")&&S(this).wpColorPicker("destroy")}),S(".members-am-color").wpColorPicker({change:function(){p||setTimeout(function(){Ce()},20)},clear:function(){p||setTimeout(function(){Ce()},20)}}),p=!0,S(".members-am-color").each(function(){var e=S(this),r=String(e.val()||"").trim();if(r&&"#"!==r&&e.data("wpWpColorPicker"))try{e.wpColorPicker("color",r)}catch(e){}}),p=!1,Ie(),function(){var e=S(".members-am-demote-wrap"),n=S("#members-am-demote-parent"),r=S("#members-am-demote");if(!M.selectedId)return e.attr("hidden",!0);var t=de()[0]||M.activeRoleSlugs[0];if(t&&T(t,M.selectedId))return e.attr("hidden",!0);e.removeAttr("hidden");var a=M.selectedId,s=t?R(a,t):null,i=membersAdminMenus.i18n&&membersAdminMenus.i18n.selectParentMenu||"";n.empty().append(S(" ").val("").text(i));var o=0;M.tree.forEach(function(e){if(e&&e.id&&e.id!==a&&(!s||e.id!==s)){var r=e.title&&String(e.title).trim()?e.title:e.id;n.append(S(" ").val(e.id).text(r)),o++}});var l=0 ');if("dashicons"===t)r.append(S(" ",{class:"dashicons "+e}));else{var n=S(" ",{"aria-hidden":"true"});e.split(/\s+/).forEach(function(e){n.addClass(e)}),r.append(n)}r.on("click",function(){S("#members-am-icon-value").val(e),S("#members-am-icon-type").val("dashicons"===t?"dashicon":"fontawesome"),Ce()}),s.append(r)}})}function Pe(e,r){var n=M.activeRoleSlugs.indexOf(e);if(-1!==n){var t=n+r;if(!(t<0||t>=M.activeRoleSlugs.length)){h();var a=M.activeRoleSlugs[n];M.activeRoleSlugs[n]=M.activeRoleSlugs[t],M.activeRoleSlugs[t]=a,m(),Je()}}}function Ee(e,r,n){var t=C(e).overrides[r]||{},a=null;if("__promote__"===t.parent?a=null:-1!==r.indexOf("::")?a=E(r):t.parent&&"__promote__"!==t.parent&&(a=t.parent),a){var s=C(e).submenu_order;s[a]||(s[a]=B(e,a));var i=s[a],o=-1!==r.indexOf("::")?r.split("::").pop():r;if(-1===(m=i.indexOf(o)))return;if((c=m+n)<0||c>=i.length)return;h();var l=i[m];i[m]=i[c],i[c]=l}else{C(e).order&&C(e).order.length||(C(e).order=j());var m,c,d=C(e).order;if(-1===(m=d.indexOf(r)))return;if((c=m+n)<0||c>=d.length)return;h();var u=d[m];d[m]=d[c],d[c]=u}Je()}function Re(){var e=de();if(e.length){h();var t="sep-"+Date.now();e.forEach(function(e){C(e).order&&C(e).order.length||(C(e).order=j());var r=C(e).order,n=M.selectedId?r.indexOf(M.selectedId):r.length-1;n<0&&(n=r.length),r.splice(n+1,0,t)}),Je()}}function Ue(e){var r=S("#members-am-toolbar-loading");r.removeAttr("hidden"),r.find(".spinner").addClass("is-active"),r.find(".members-am-loading-text").text(e||""),S("#members-am-save, #members-am-reset, #members-am-import, #members-am-copy-apply, #members-am-undo").prop("disabled",!0)}function Te(){var e=S("#members-am-toolbar-loading");e.attr("hidden",!0),e.find(".spinner").removeClass("is-active"),e.find(".members-am-loading-text").text(""),S("#members-am-save, #members-am-reset, #members-am-import, #members-am-copy-apply").prop("disabled",!1),u()}function je(e){Ue(e||membersAdminMenus.i18n&&membersAdminMenus.i18n.saving||"Saving…");var a=membersAdminMenus.i18n&&membersAdminMenus.i18n.networkError||"Could not save settings. Check your connection and try again.";S.ajax({url:membersAdminMenus.ajaxUrl,type:"POST",dataType:"json",timeout:6e4,data:{action:"members_admin_menus_save",nonce:membersAdminMenus.nonce,settings:JSON.stringify(M.settings)}}).done(function(e){if(e&&void 0!==e.success){if(e.success)return t=s(),d=null,u(),void b("success",e.data&&e.data.message||membersAdminMenus.i18n&&membersAdminMenus.i18n.saved||"Settings saved.");b("error",e.data&&e.data.message?e.data.message:"Error")}else b("error",a)}).fail(function(e,r){if("abort"!==r){var n=a;if(e&&e.responseJSON&&void 0!==e.responseJSON.data){var t=e.responseJSON.data;"string"==typeof t&&t?n=t:t&&"string"==typeof t.message&&t.message&&(n=t.message)}b("error",n)}}).always(function(){Te()})}function Le(e,r){var n,t=membersAdminMenus.i18n||{};if(n="role"===e&&"administrator"===r?t.confirmResetAdministrator||"Reset all menu settings for the Administrator role? This cannot be undone.":"all"!==e&&"role"===e&&r?t.confirmResetRole||"Reset all settings for this role? This cannot be undone.":t.confirmResetAllRoles||"Reset ALL menu settings for every role? This cannot be undone.",confirm(n)){Ue(membersAdminMenus.i18n&&membersAdminMenus.i18n.resetting||"Resetting…");var a=!1;S.post(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_reset",nonce:membersAdminMenus.nonce,scope:e||"all",role:r||""}).done(function(e){if(e.success)return o("success",e.data&&e.data.message||membersAdminMenus.i18n&&membersAdminMenus.i18n.resetComplete||"Reset complete."),M.allowUnload=!0,a=!0,void location.reload();b("error",e.data&&e.data.message?e.data.message:membersAdminMenus.i18n&&membersAdminMenus.i18n.resetFailed||"Reset failed.")}).fail(function(){b("error",membersAdminMenus.i18n&&membersAdminMenus.i18n.resetNetworkError||membersAdminMenus.i18n.networkError||"Could not reset settings. Check your connection and try again.")}).always(function(){a||Te()})}}function Ne(e){S.getJSON(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_user_search",nonce:membersAdminMenus.nonce,term:e},function(e){e.success&&e.data&&e.data.length?function(e){S(".members-am-user-suggestions").remove();var r=S("#members-am-user-search").parent();r.css("position","relative");var n=S('
');e.forEach(function(e){n.append(S('
').text(e.label).data("userId",e.id).on("click",function(){!function(e,r,n){M.previewUserId=e,M.previewUserLabel=r||"User #"+e,M.previewUserRoles=n||[],f(),M.settings.users[e]||(M.settings.users[e]={});Je()}(e.id,e.label,e.roles),S(".members-am-user-suggestions").remove(),S("#members-am-user-search").val("")}))}),r.append(n),setTimeout(function(){S(document).one("click",function(){S(".members-am-user-suggestions").remove()})},0)}(e.data):S(".members-am-user-suggestions").remove()})}function Fe(){S(document).on("click","#members-am-role-chips .members-am-chip",function(){var e=S(this).data("role"),r=M.activeRoleSlugs.indexOf(e);-1===r?M.activeRoleSlugs.push(e):1 ');if(s.append(S('
').text(n.resetSettingsLabel||"Reset Settings")),a){var i=S(' ');i.append(S(' ')),i.append(S(' ').append(S(" ").text(n.resetAdministrator||"Reset Administrator"),S(" ").text(n.resetAdministratorHelp||"Clear all menu settings for the Administrator role only."))),i.on("click",function(e){e.preventDefault(),e.stopPropagation(),S(".members-am-reset-dropdown").remove(),Le("role",t)}),s.append(i)}var o=S(' ');o.append(S(' ')),o.append(S(' ').append(S(" ").text(n.resetAll||"Reset all roles"),S(" ").text(n.resetAllRolesHelp||"Clear all menu settings for every role."))),o.on("click",function(e){e.preventDefault(),e.stopPropagation(),S(".members-am-reset-dropdown").remove(),Le("all")}),s.append(o),s.insertAfter(r),setTimeout(function(){S(document).one("click",function(){S(".members-am-reset-dropdown").remove()})},0)}),S("#members-am-export").on("click",function(e){e.preventDefault(),window.location.href=membersAdminMenus.exportUrl}),S("#members-am-import").on("click",function(){S("#members-am-import-file").trigger("click")}),S("#members-am-import-file").on("change",function(){var e=this.files&&this.files[0];e&&function(e){Ue(membersAdminMenus.i18n&&membersAdminMenus.i18n.importing||"Importing…");var n=new FileReader;n.onerror=function(){Te(),b("error",membersAdminMenus.i18n&&membersAdminMenus.i18n.readFileFailed||"Could not read the file.")},n.onload=function(){try{var e=JSON.parse(n.result),r=!1;S.post(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_import",nonce:membersAdminMenus.nonce,settings:JSON.stringify(e)}).done(function(e){if(e.success)return o("success",e.data&&e.data.message||membersAdminMenus.i18n&&membersAdminMenus.i18n.imported||"Settings imported."),M.allowUnload=!0,r=!0,void location.reload();b("error",e.data&&e.data.message?e.data.message:"Error")}).fail(function(){b("error",membersAdminMenus.i18n&&membersAdminMenus.i18n.importNetworkError||membersAdminMenus.i18n.networkError||"Could not import settings. Check your connection and try again.")}).always(function(){r||Te()})}catch(e){Te(),b("error",membersAdminMenus.i18n&&membersAdminMenus.i18n.invalidJson||"Invalid JSON.")}},n.readAsText(e)}(e)}),S("#members-am-copy-apply").on("click",function(){var n=S("#members-am-copy-from").val(),r=S("#members-am-copy-to").val();if(n&&r)if(n!==r){var t="",a="";if(v().forEach(function(e){e.slug===n&&(t=e.label),e.slug===r&&(a=e.label)}),confirm('Copy menu settings from "'+t+'" to "'+a+'"?\nThis will overwrite "'+a+'" menu configuration.\n\nNote: This copies menu order, labels, icons, and colors. Items the source role cannot access (no-access in its column) are stored as hidden on the target so a higher-capability role does not gain those screens.\nIt does not change WordPress role capabilities (lock icon).')){h();var e=C(n),s={hidden:W(n),order:[],submenu_order:{},overrides:{}},i=J(n);s.order=i.slice(),M.tree.forEach(function(e){if(e.children&&e.children.length){var r=D(n,e.id);r&&r.length&&(s.submenu_order[e.id]=r.slice())}}),e.overrides&&"object"==typeof e.overrides&&(s.overrides=JSON.parse(JSON.stringify(e.overrides))),M.settings.roles[r]=s,-1===M.activeRoleSlugs.indexOf(r)&&(M.activeRoleSlugs.push(r),m(),he()),Je(),je(membersAdminMenus.i18n&&membersAdminMenus.i18n.copying||"Copying…")}}else b("error",membersAdminMenus.i18n&&membersAdminMenus.i18n.rolesMustDiffer||"Source and target roles must be different.")}),S("#members-am-admin-editable").on("change",function(){var e=!0;S(this).is(":checked")&&(e=window.confirm(membersAdminMenus.i18n.adminEditableWarn)),e?(M.settings._meta.admin_editable=S(this).is(":checked"),be(),he(),m(),Je()):S(this).prop("checked",!1)}),S("#members-am-sync-scroll").prop("checked",!1!==M.syncScroll),S("#members-am-sync-scroll").on("change",function(){M.syncScroll=S(this).is(":checked");try{localStorage.setItem("members_am_sync_scroll",M.syncScroll?"1":"0")}catch(e){}Ae()});var a="members_am_more_tools";function e(e){var r=S("#members-am-toolbar-extra"),n=S("#members-am-more-tools");if(r.length&&n.length){r.prop("hidden",!e),n.attr("aria-expanded",e?"true":"false").toggleClass("is-open",!!e);var t=membersAdminMenus.i18n||{};e&&t.moreToolsHideAria?n.attr("aria-label",t.moreToolsHideAria):!e&&t.moreToolsShowAria?n.attr("aria-label",t.moreToolsShowAria):n.removeAttr("aria-label");try{sessionStorage.setItem(a,e?"1":"0")}catch(e){}}}var r,n=!1;try{n="1"===sessionStorage.getItem(a)}catch(e){}e(n),S("#members-am-more-tools").on("click",function(){e(S("#members-am-toolbar-extra").prop("hidden"))}),S("#members-am-add-item").on("click",function(){h();var e="c"+Date.now();M.settings.custom_items.push({id:e,label:"Custom link",url:window.location.origin+"/wp-admin/",icon_type:"dashicon",icon:"dashicons-admin-generic",parent:"",position:99,cap:"read"}),M.tree=A(),M.selectedId=_({id:e}),Je(),Oe()}),S("#members-am-remove-custom").on("click",function(){var e=O(M.selectedId),r=e&&e.customId?String(e.customId):"";if(!r&&e&&e.custom&&M.selectedId){var n=-1!==M.selectedId.indexOf("::")?M.selectedId.split("::").pop():M.selectedId;0===n.indexOf("members-am-")&&(M.settings.custom_items||[]).forEach(function(e){e&&e.id&&_(e)===n&&(r=String(e.id))})}e&&r&&(h(),M.settings.custom_items=(M.settings.custom_items||[]).filter(function(e){return!e||String(e.id)!==r}),M.selectedId=null,M.tree=A(),Je(),S("#members-am-edit-panel").attr("hidden",!0))}),S("#members-am-edit-close").on("click",function(){M.selectedId=null,S("#members-am-edit-panel").attr("hidden",!0),Je()}),S("#members-am-edit-target-role").on("change",Oe),S("#members-am-colors-readable").on("click",function(e){e.preventDefault();var r=String(S("#members-am-color-bg").val()||"").trim();if(r&&"#"!==r){var n=.45 ").val("__all__").text("All roles")),M.activeRoleSlugs.forEach(function(r){var e=(v().filter(function(e){return e.slug===r})[0]||{}).label||r;n.append(S(" ").val(r).text(e))}),M.previewUserId&&n.append(S(" ").val("__user__"+M.previewUserId).text(M.previewUserLabel||"User #"+M.previewUserId)),M.selectedId&&Oe()}S(function(){var r,n,e;!function(){try{var e=sessionStorage.getItem(i);if(!e)return;sessionStorage.removeItem(i);var r=JSON.parse(e);r&&r.message&&b(r.type,r.message)}catch(e){}}(),f(),M.tree=A(),be(),S("#members-am-admin-editable").prop("checked",!!M.settings._meta.admin_editable),r=S("#members-am-copy-from").empty(),n=S("#members-am-copy-to").empty(),(e=v()).forEach(function(e){r.append(S(" ").val(e.slug).text(e.label)),n.append(S(" ").val(e.slug).text(e.label))}),1'),n=S("#members-am-notices"));var t=S("
",{class:"notice is-dismissible"}).addClass("notice-"+(e||"info"));t.append(S("
").text(r)),n.prepend(t),S(document).trigger("wp-notice-added")}}function o(e,r){try{sessionStorage.setItem(i,JSON.stringify({type:e||"success",message:r}))}catch(e){}}var e=["dashicons-menu","dashicons-admin-dashboard","dashicons-admin-post","dashicons-admin-page","dashicons-admin-media","dashicons-admin-comments","dashicons-admin-appearance","dashicons-admin-plugins","dashicons-admin-users","dashicons-admin-tools","dashicons-admin-settings","dashicons-admin-generic","dashicons-edit","dashicons-plus","dashicons-chart-bar","dashicons-cart","dashicons-products","dashicons-email","dashicons-groups","dashicons-heart","dashicons-star-filled","dashicons-smiley","dashicons-info","dashicons-lock","dashicons-unlock","dashicons-visibility","dashicons-hidden","dashicons-arrow-up","dashicons-arrow-down","dashicons-admin-network","dashicons-performance"],r=["fa-solid fa-house","fa-solid fa-user","fa-solid fa-gear","fa-solid fa-file","fa-solid fa-image","fa-solid fa-cart-shopping","fa-solid fa-chart-line","fa-solid fa-envelope","fa-solid fa-book","fa-solid fa-link","fa-solid fa-bell","fa-solid fa-star","fa-solid fa-heart","fa-solid fa-lock","fa-solid fa-unlock","fa-solid fa-pen","fa-solid fa-trash","fa-solid fa-plus","fa-solid fa-minus"],m="members_am_view_state";function l(){try{localStorage.setItem(m,JSON.stringify({activeRoleSlugs:M.activeRoleSlugs,carouselPage:M.carouselPage}))}catch(e){}}function c(e){return JSON.parse(JSON.stringify(e))}var d=null;function h(){d=c(M.settings),u()}function u(){var e=S("#members-am-undo");if(e.length){var r=!!d;e.prop("disabled",!r).attr("aria-disabled",r?"false":"true")}}function v(){return membersAdminMenus.roles||[]}function p(){M.settings._meta&&!Array.isArray(M.settings._meta)||(M.settings._meta={version:3,admin_editable:!1,admin_menu_exempt_user_ids:[]}),Array.isArray(M.settings._meta.admin_menu_exempt_user_ids)||(M.settings._meta.admin_menu_exempt_user_ids=[]),M.settings.roles&&!Array.isArray(M.settings.roles)||(M.settings.roles={}),M.settings.users&&!Array.isArray(M.settings.users)||(M.settings.users={}),Array.isArray(M.settings.custom_items)||(M.settings.custom_items=[]),M.settings.capabilities&&!Array.isArray(M.settings.capabilities)||(M.settings.capabilities={})}function g(){p();var e=M.settings._meta.admin_menu_exempt_user_ids;return Array.isArray(e)?e.map(function(e){return parseInt(e,10)}).filter(function(e){return 0 ');t.append(S(' ').text(n));var s=S(' ').attr("aria-label",a.exemptRemove||"Remove").text(a.exemptRemove||"Remove");o?s.prop("disabled",!0).attr("aria-disabled","true"):s.data("userId",e),t.append(s),i.append(t)})}}function y(e){S.getJSON(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_user_search",nonce:membersAdminMenus.nonce,term:e},function(e){if(e.success&&e.data&&e.data.length){var r=e.data.filter(function(e){return e.roles&&-1!==e.roles.indexOf("administrator")});r.length?function(e){S(".members-am-exempt-suggestions").remove();var n=S("#members-am-exempt-search");if(n.length){var r=n.parent();r.css("position","relative");var t=S('
');e.forEach(function(r){t.append(S('
').text(r.label).on("click",function(){var e=parseInt(r.id,10);if(-1!==g().indexOf(e))return S(".members-am-exempt-suggestions").remove(),void n.val("");h(),M.settings._meta.admin_menu_exempt_user_ids=g().concat([e]),M.exemptUserLabels[String(e)]=r.label,S(".members-am-exempt-suggestions").remove(),n.val(""),_()}))}),r.append(t),setTimeout(function(){S(document).one("click",function(){S(".members-am-exempt-suggestions").remove()})},0)}}(r):S(".members-am-exempt-suggestions").remove()}else S(".members-am-exempt-suggestions").remove()})}function I(e){p(),M.settings.roles[e]||(M.settings.roles[e]={hidden:[],order:[],submenu_order:{},overrides:{}});var r=M.settings.roles[e];return r.hidden&&Array.isArray(r.hidden)||(r.hidden=[]),r.order&&Array.isArray(r.order)||(r.order=[]),r.submenu_order&&!Array.isArray(r.submenu_order)||(r.submenu_order={}),r.overrides&&!Array.isArray(r.overrides)||(r.overrides={}),r}function C(e){p(),M.settings.users[e]||(M.settings.users[e]={});var r=M.settings.users[e];return r.hidden&&Array.isArray(r.hidden)||(r.hidden=[]),r.order&&Array.isArray(r.order)||(r.order=[]),r.overrides&&!Array.isArray(r.overrides)||(r.overrides={}),r.submenu_order&&!Array.isArray(r.submenu_order)||(r.submenu_order={}),r}function P(e,r){var n=function(e,r){for(var n=(e||[]).slice().reverse(),t={},s=0;s=s.length||(h(),s.splice(d,1),s.splice(u,0,o?c:r))}}function O(e){var r=e.id||"c";return"members-am-"+String(r).replace(/[^a-z0-9_-]/gi,"-").toLowerCase()}function E(e){return!!e&&0===(-1!==e.indexOf("::")?e.split("::").pop():e).indexOf("members-am-")}function R(e,r){if(!e||!r)return null;for(var n=0;n]+$/i.test(r)?r:0===r.indexOf("//")&&/^\/\/[a-z0-9.-]+\/?/i.test(r)?"https:"+r:"":""}function re(e,r,n){var t=X(r,n);if("fontawesome"===t&&r){var s=function(e){if(!e||"string"!=typeof e)return"";var r,n=e.trim().split(/\s+/).filter(Boolean);if(!n.length)return"";for(r=0;r",{class:"members-am-fa-icon"}),i=S(" ",{"aria-hidden":"true"});s.split(/\s+/).forEach(function(e){i.addClass(e)}),a.append(i),e.append(a)}else e.append(S(" ",{class:"dashicons dashicons-admin-generic"}))}else if("svg"!==t&&"image"!==t&&"custom"!==t||!r){var o=function(e){if(!e||"string"!=typeof e)return"";var r=e.trim();return Y.test(r)?r:""}(r);e.append(S(" ",{class:"dashicons "+(o||"dashicons-admin-generic")}))}else{var m=ee(r);m?e.append(S(" ",{src:m,alt:""}).css({width:"20px",height:"20px",display:"inline-block",verticalAlign:"middle",objectFit:"contain",filter:"none"})):e.append(S(" ",{class:"dashicons dashicons-admin-generic"}))}}function ne(){var t=[];return function e(r){var n;for(n=0;ns&&(M.carouselPage=s))}}M.activeRoleSlugs=r.filter(function(e){return"administrator"!==e||n}),M.activeRoleSlugs.length||(M.activeRoleSlugs=["subscriber"])}function _e(){var t=S("#members-am-role-chips").empty();v().forEach(function(e){if("administrator"!==e.slug||M.settings._meta.admin_editable){var r=-1!==M.activeRoleSlugs.indexOf(e.slug),n=S(' ').text(e.label).attr("data-role",e.slug).toggleClass("is-active",r);t.append(n)}})}function ye(n,t,e,s,a){(function(e,r,n,t,s){s=s||0;var a=r.id,i=K(e,a),o=!q(e,r.cap),m=I(e).overrides[a]||{},l=m.label||r.title||a,c=S('
').attr("data-id",a).attr("data-menu-parent",n||"").toggleClass("is-hidden",i).toggleClass("is-no-cap",o).toggleClass("is-selected",M.selectedId===a).toggleClass("is-sub",0 ');if(p){oe(d);var b=!!M.collapsedParents[d][a],h=u.expandSubmenus||"Expand submenu items",v=u.collapseSubmenus||"Collapse submenu items";S(' ').attr("aria-expanded",!b).attr("aria-label",(b?h:v)+": "+l).append(S(' ').addClass(b?"dashicons-arrow-right-alt2":"dashicons-arrow-down-alt2")).on("click",function(e){e.stopPropagation(),oe(d),M.collapsedParents[d][a]=!M.collapsedParents[d][a],Ie()}).appendTo(f),c.toggleClass("is-collapse-collapsed",b)}else f.append(S(' '));c.append(f);var g=u.bulkCheckboxAria||"Include in bulk actions",x=S(' '),_=S(' ').prop("checked",!!M.columnBulkSelection[d].ids[a]).attr("aria-label",g+": "+l).on("click",function(e){e.stopPropagation()}).on("change",function(e){e.stopPropagation(),ie(d,a,S(this).prop("checked")),Ie()});x.append(_),c.append(x);var y=S('
');0===s&&re(y,m.icon||r.icon,m.icon_type||r.icon_type);r.custom&&y.append(S('custom '));m.label&&y.append(S('edit '));if(y.append(S(' ').text(l)),m.badge){var k=m.badge_bg||"#d63638";y.append(S(' ').text(m.badge).css({backgroundColor:k,color:"#fff",fontSize:"9px",padding:"1px 5px",borderRadius:"2px",marginLeft:"4px",whiteSpace:"nowrap"}))}if(o){var A=membersAdminMenus.i18n||{},w=A.noAccessTitlePattern&&A.noAccessTitlePattern.replace("%s",r.cap||"read")||"This role does not have the '"+(r.cap||"read")+"' capability on this role object. Users with multiple roles may still access the screen. Manage capabilities in Members → Roles.";y.append(S(' ').attr("title",w).text("🔒 no access"))}c.append(y),m.color_bg&&c.css("background-color",m.color_bg);m.color_text&&c.find(".members-am-item-label").css("color",m.color_text);m.color_icon&&(c.find(".dashicons").css("color",m.color_icon),c.find(".members-am-fa-icon i").css("color",m.color_icon),c.find("img").css("filter","none"));var O=S('
');O.append(S(' ').text("◉"),S(' ').text("↑"),S(' ').text("↓")),c.append(O),t.append(c)})(n,t,e,s,a=a||0),t.children&&t.children.length&&W(n,t.id).forEach(function(e){var r=function(e,r,n){if(-1!==n.indexOf("::")){var t=L(n);return t&&j(n,e)===r?t:null}var s=L($(r,n));return s||(-1===n.indexOf("::")&&(I(e).overrides[n]||{}).parent===r?L(n):null)}(n,t.id,e);r&&j(r.id,n)===t.id&&ye(n,r,t.id,s,a+1)})}function ke(n,t,e,s,a,i){i=i||0,a.append(function(r,e,n,t){t=t||0;var s=P(n,r.id),a=s.label||r.title,i=function(e,r){var n=C(e);if(-1!==n.hidden.indexOf(r))return!0;if(e===M.previewUserId&&M.previewUserRoles&&M.previewUserRoles.length){var t,s=M.previewUserRoles;for(t=0;t").addClass(l).attr("data-id",r.id).attr("data-menu-parent",e||""),d="u:"+n;te(d);var u=membersAdminMenus.i18n||{},p=r.children&&r.children.length,f=S(' ');if(p){oe(d);var b=!!M.collapsedParents[d][r.id],h=u.expandSubmenus||"Expand submenu items",v=u.collapseSubmenus||"Collapse submenu items";S(' ').attr("aria-expanded",!b).attr("aria-label",(b?h:v)+": "+a).append(S(' ').addClass(b?"dashicons-arrow-right-alt2":"dashicons-arrow-down-alt2")).on("click",function(e){e.stopPropagation(),oe(d),M.collapsedParents[d][r.id]=!M.collapsedParents[d][r.id],Ie()}).appendTo(f),c.toggleClass("is-collapse-collapsed",b)}else f.append(S(' '));c.append(f);var g=u.bulkCheckboxAria||"Include in bulk actions",x=S(' '),_=S(' ').prop("checked",!!M.columnBulkSelection[d].ids[r.id]).attr("aria-label",g+": "+a).on("click",function(e){e.stopPropagation()}).on("change",function(e){e.stopPropagation(),ie(d,r.id,S(this).prop("checked")),Ie()});x.append(_),c.append(x);var y=S('
');0===t&&re(y,s.icon||r.icon,s.icon_type||r.icon_type);r.custom&&y.append(S('custom '));s.label&&y.append(S('edit '));if(y.append(S(' ').text(a)),s.badge){var k=s.badge_bg||"#d63638";y.append(S(' ').text(s.badge).css({backgroundColor:k,color:"#fff",fontSize:"9px",padding:"1px 5px",borderRadius:"2px",marginLeft:"4px",whiteSpace:"nowrap"}))}if(o){var A=membersAdminMenus.i18n||{},w=A.noAccessTitlePattern&&A.noAccessTitlePattern.replace("%s",r.cap||"read")||"This user does not have the '"+(r.cap||"read")+"' capability.";y.append(S(' ').attr("title",w).text("🔒 no access"))}c.append(y),s.color_bg&&c.css("background-color",s.color_bg);s.color_text&&c.find(".members-am-item-label").css("color",s.color_text);s.color_icon&&(c.find(".dashicons").css("color",s.color_icon),c.find(".members-am-fa-icon i").css("color",s.color_icon));var O=S('
');return O.append(S(' ').text(i?"◯":"◉"),S(' ').text("↑"),S(' ').text("↓")),c.append(O),c.on("click",function(e){S(e.target).closest("button, .members-am-item-cb, .members-am-collapse-toggle").length||(M.selectedId=r.id,ze())}),c}(t,e,n,i)),t.children&&t.children.length&&function(e,r){var n=A(e,r),t=C(e),s=t.submenu_order&&t.submenu_order[r];if(!s||!s.length)return n.slice();var a=s.filter(function(e){return-1!==n.indexOf(e)});return n.forEach(function(e){-1===a.indexOf(e)&&a.push(e)}),a}(n,t.id).forEach(function(e){var r=function(e,r,n){if(-1!==n.indexOf("::")){var t=L(n);return t&&N(n,e)===r?t:null}var s=L($(r,n));if(s)return s;if(-1===n.indexOf("::")){var a=C(e);if((a.overrides&&a.overrides[n]||{}).parent===r)return L(n)}return null}(n,t.id,e);r&&N(r.id,n)===t.id&&ke(n,r,t.id,s,a,i+1)})}function Ae(e,r){var s=(r||"").trim().toLowerCase(),n=e.children(".members-am-item");if(!s)return n.removeClass("members-am-filter-hidden"),void e.children(".members-am-sep").removeClass("members-am-filter-hidden");var i={};n.each(function(){var e=S(this),r=e.attr("data-id"),n=(e.find(".members-am-item-label").first().text()||"").toLowerCase(),t=(r||"").toLowerCase();i[r]=-1!==n.indexOf(s)||-1!==t.indexOf(s)});var o={};n.each(function(){var e=S(this).attr("data-id"),r=S(this).attr("data-menu-parent")||"";o[r]||(o[r]=[]),o[r].push(e)});var m={};function l(e){var r,n=i[e],t=o[e]||[],s=!1;for(r=0;r '),o=S(' ').attr("placeholder",s).attr("aria-label",a).val(t);i.append(o),e.find(".members-am-sidebar-head").first().after(i),o.on("input",function(){M.columnFilters[n]=S(this).val(),Ae(r,S(this).val())}),Ae(r,t)}function Oe(e,r){var a=0===String(r).indexOf("u:"),i=a?parseInt(r.replace(/^u:/,""),10):0,o=a?null:r,m=r,l=membersAdminMenus.i18n||{},n=S('
').attr("data-column-key",m),t=S('
');t.append(S(' ').text(l.bulkSelectVisible||"Select visible"),S(' ').text(l.bulkClearSelection||"Clear selection"));var s=S('
');s.append(S(' ').text(l.collapseAllMenus||"Collapse all"),S(' ').text(l.expandAllMenus||"Expand all"));var c=S(' ').attr("aria-label",l.bulkVisibilityLabel||"Menu visibility for this column");c.append(S(' ').text(l.bulkActionsPlaceholder||"Choose visibility…"));var d=S(" ").attr("label",l.bulkGroupWholeColumn||"Whole column");d.append(S(' ').text(l.bulkShowAllItems||"Show every menu item"),S(' ').text(l.bulkHideAllItems||"Hide every menu item"));var u=S(" ").attr("label",l.bulkGroupCheckedRows||"Checked rows");u.append(S(' ').text(l.bulkKeepOnlyCheckedVisible||"Hide everything except selected (and parents)"),S(' ').text(l.bulkHideCheckedItems||"Hide checked items"),S(' ').text(l.bulkShowCheckedItems||"Show selected items")),c.append(d,u),n.append(t,s,c);var p=e.find(".members-am-col-filter").first();p.length?p.after(n):e.find(".members-am-sidebar-head").first().after(n),c.on("change",function(){var e=S(this).val();if(S(this).val(""),e)if(!("keep-only-checked"===e||"hide-checked"===e||"show-checked"===e)||se(m).length){if("keep-only-checked"===e){if(!window.confirm(l.bulkConfirmKeepOnlyChecked||"Hide all menu items except the selected ones and their parent menus?"))return}else if("hide-all"===e){if(!window.confirm(l.bulkConfirmHideAll||"Hide every menu item in this column?"))return}else if("hide-checked"===e&&!window.confirm(l.bulkConfirmHideChecked||"Hide the checked items (and their submenus where applicable)?"))return;var r,n,t,s;h(),a?"show-all"===e?C(i).hidden=[]:"hide-all"===e?(t=i,s=ne(),C(t).hidden=s.slice()):"keep-only-checked"===e?function(e,n){var r=se(e);if(r.length){var t={};r.forEach(function(e){for(var r=e;r;)t[r]=!0,r=N(r,n)});var s=ne(),a=C(n).hidden;a.length=0,s.forEach(function(e){t[e]||a.push(e)})}}(m,i):"hide-checked"===e?pe(m,i):"show-checked"===e&&fe(m,i):"show-all"===e?I(o).hidden=[]:"hide-all"===e?(r=o,n=ne(),I(r).hidden=n.slice()):"keep-only-checked"===e?function(e,n){var r=se(e);if(r.length){var t={};r.forEach(function(e){for(var r=e;r;)t[r]=!0,r=j(r,n)});var s=ne(),a=I(n).hidden;a.length=0,s.forEach(function(e){t[e]||a.push(e)})}}(m,o):"hide-checked"===e?de(m,o):"show-checked"===e&&ue(m,o),ze()}else b("warning",l.bulkSelectCheckedFirst||"Check one or more menu items first.")})}function Se(e){return-1!==e.indexOf("::")?e.split("::").pop():e}function Me(){S.fn.sortable&&S("#members-am-columns .members-am-sidebar-list").each(function(){var e=S(this);e.data("ui-sortable")&&e.sortable("destroy");var r=e.closest(".members-am-column"),n=r.data("role"),t=r.data("user");e.sortable({axis:"y",distance:6,items:"> .members-am-item, > .members-am-sep",cancel:".members-am-item-actions button, .members-am-item-cb, .members-am-item-cb-wrap, .members-am-collapse-toggle",placeholder:"members-am-sort-placeholder",forcePlaceholderSize:!0,tolerance:"pointer",start:function(){h()},update:function(){t?function(e,r){var s=[],a={};e.children().each(function(){var e=S(this);if(e.hasClass("members-am-sep")){var r=e.attr("data-sep-id");r&&s.push(r)}else if(e.hasClass("members-am-item")){var n=e.attr("data-id");if(n){var t=e.attr("data-menu-parent");void 0===t||""===t?s.push(n):(a[t]||(a[t]=[]),a[t].push(Se(n)))}}});var n=C(r);n.order=s,n.submenu_order=a}(e,t):n&&function(e,r){var s=[],a={};e.children().each(function(){var e=S(this);if(e.hasClass("members-am-sep")){var r=e.attr("data-sep-id");r&&s.push(r)}else if(e.hasClass("members-am-item")){var n=e.attr("data-id");if(n){var t=e.attr("data-menu-parent");void 0===t||""===t?s.push(n):(a[t]||(a[t]=[]),a[t].push(Se(n)))}}});var n=I(r);n.order=s,n.submenu_order=a}(e,n),Ce()}})})}function Ie(){var n=S("#members-am-columns"),t={};n.find(".members-am-column").each(function(){var e=S(this).data("role");if(e){var r=S(this).find(".members-am-sidebar-list");r.length&&(t[e]=r.scrollTop())}}),n.empty();var e=M.carouselPage*M.columnsPerPage;if(M.activeRoleSlugs.slice(e,e+M.columnsPerPage).forEach(function(e){var r=S("
",{class:"members-am-column"}).attr("data-role",e);!function(n,e){e.empty();var r=S(''),t=(v().filter(function(e){return e.slug===n})[0]||{}).label||n;r.append(S('').text(t)),r.append(S(' ').append(S(' ').text("◀"),S(' ').text("▶"))),e.append(r);var s=S('');z(n).forEach(function(e){if(0!==e.indexOf("sep-")){var r=L(e);r&&ye(n,r,null,s,0)}else s.append(S('
').attr("data-sep-id",e).text("—"))}),e.append(s),le(s,n),we(e,s,n),Oe(e,n)}(e,r),n.append(r),t[e]&&r.find(".members-am-sidebar-list").scrollTop(t[e])}),M.previewUserId){var s=M.previewUserId,r=S("
",{class:"members-am-column members-am-user-column"}).attr("data-user",String(s)),a=S('');a.append(S(" ").text(M.previewUserLabel||"User #"+s)),a.append(S('× ').on("click",function(){M.previewUserId=null,M.previewUserLabel=null,M.previewUserRoles=[],ze()})),r.append(a);var i=S(''),o=C(s);k(s).forEach(function(e){if(0!==e.indexOf("sep-")){var r=L(e);r&&ke(s,r,null,o,i,0)}else i.append(S('
').attr("data-sep-id",e).text("——"))}),r.append(i),le(i,"u:"+s),we(r,i,"u:"+s),Oe(r,"u:"+s),n.append(r)}if(M.syncScroll){var m=n.find(".members-am-sidebar-list"),l=!1;m.on("scroll",function(){if(!l){l=!0;var e=S(this).scrollTop();m.not(this).scrollTop(e),l=!1}})}!function(){var e=Math.max(1,Math.ceil(M.activeRoleSlugs.length/M.columnsPerPage)),r=(Math.min(M.carouselPage+1,e),M.carouselPage*M.columnsPerPage+1),n=Math.min((M.carouselPage+1)*M.columnsPerPage,M.activeRoleSlugs.length);S("#members-am-carousel-status").text(r+"–"+n+" "+membersAdminMenus.i18n.of+" "+M.activeRoleSlugs.length);for(var t=S("#members-am-carousel-dots").empty(),s=0;s ').toggleClass("is-active",s===M.carouselPage))}(),Me()}function Ce(){if(M.selectedId){S("#members-am-edit-panel").removeAttr("hidden");var e=L(M.selectedId),r=ve()||{};S("#members-am-edit-title").text(e?e.title:M.selectedId),S("#members-am-edit-label").val(r.label||e&&e.title||"");var n=E(M.selectedId);S("#members-am-edit-url-wrap").toggle(n),S("#members-am-edit-url").attr("placeholder","Override URL (leave empty for default)").val(n&&(r.url||e&&e.url)||"").data("default-url",e&&e.url||""),S("#members-am-icon-type").val(r.icon_type||"dashicon"),S("#members-am-icon-value").val(r.icon||e&&e.icon||"");var t=r.icon||e&&e.icon||"",s=X(t,r.icon_type||e&&e.icon_type||"");if("image"!==s&&"custom"!==s&&"svg"!==s||!t)S("#members-am-icon-preview").hide().removeAttr("src");else{var a=ee(t);a?S("#members-am-icon-preview").show().attr("src",a):S("#members-am-icon-preview").hide().removeAttr("src")}S("#members-am-color-bg").val(r.color_bg||""),S("#members-am-color-text").val(r.color_text||""),S("#members-am-color-icon").val(r.color_icon||""),S("#members-am-badge-text").val(r.badge||""),S("#members-am-badge-bg").val(r.badge_bg||""),S("#members-am-item-cap").attr("placeholder",e&&e.cap?e.cap+" (default)":"").val(M.settings.capabilities[M.selectedId]||"");var i=e&&e.custom,o=S("#members-am-remove-custom");i?o.removeAttr("hidden"):o.attr("hidden","hidden"),S("#members-am-visibility-toggles").empty();var m=Q(M.settings.capabilities[M.selectedId]||"")||Q(e&&e.cap||"")||"read",l=[];if(v().forEach(function(e){"administrator"===e.slug&&!M.settings._meta.admin_editable||l.push(e)}),10<=l.length){var c=membersAdminMenus.i18n&&membersAdminMenus.i18n.filterRolesVisibility||"Filter roles…",d=membersAdminMenus.i18n&&membersAdminMenus.i18n.filterRolesVisibilityLabel||"Filter roles in this list",u=S('
'),p=S(' ').attr("placeholder",c).attr("aria-label",d);u.append(p),S("#members-am-visibility-toggles").append(u),p.on("input",function(){var s=(S(this).val()||"").trim().toLowerCase();S("#members-am-visibility-toggles .members-am-vis-row").each(function(){var e=S(this),r=(e.find("span").first().text()||"").toLowerCase(),n=String(e.find(".members-am-vis-cb").data("role")||"").toLowerCase(),t=!s||-1!==r.indexOf(s)||-1!==n.indexOf(s);e.toggleClass("members-am-vis-filter-hidden",!t)})})}l.forEach(function(e){var r=K(e.slug,M.selectedId),n=q(e.slug,m),t=S(' ').attr("data-role",e.slug).prop("checked",!r&&n);n||t.prop("disabled",!0);var s=S(' ').append(t,S(" ").text(e.label));n||(s.append(S(" ").text(" — no capability").css({color:"#999",fontStyle:"italic",marginLeft:"4px"})),s.css("opacity","0.5")),S("#members-am-visibility-toggles").append(s)}),S(".members-am-color").each(function(){S(this).data("wpWpColorPicker")&&S(this).wpColorPicker("destroy")}),S(".members-am-color").wpColorPicker({change:function(){f||setTimeout(function(){Re()},20)},clear:function(){f||setTimeout(function(){Re()},20)}}),f=!0,S(".members-am-color").each(function(){var e=S(this),r=String(e.val()||"").trim();if(r&&"#"!==r&&e.data("wpWpColorPicker"))try{e.wpColorPicker("color",r)}catch(e){}}),f=!1,Ue(),function(){var e=S(".members-am-demote-wrap"),n=S("#members-am-demote-parent"),r=S("#members-am-demote");if(!M.selectedId)return e.attr("hidden",!0);var t=be()[0]||M.activeRoleSlugs[0];if(t&&J(t,M.selectedId))return e.attr("hidden",!0);e.removeAttr("hidden");var s=M.selectedId,a=t?j(s,t):null,i=membersAdminMenus.i18n&&membersAdminMenus.i18n.selectParentMenu||"";n.empty().append(S(" ").val("").text(i));var o=0;M.tree.forEach(function(e){if(e&&e.id&&e.id!==s&&(!a||e.id!==a)){var r=e.title&&String(e.title).trim()?e.title:e.id;n.append(S(" ").val(e.id).text(r)),o++}});var m=0 ');if("dashicons"===t)r.append(S(" ",{class:"dashicons "+e}));else{var n=S(" ",{"aria-hidden":"true"});e.split(/\s+/).forEach(function(e){n.addClass(e)}),r.append(n)}r.on("click",function(){S("#members-am-icon-value").val(e),S("#members-am-icon-type").val("dashicons"===t?"dashicon":"fontawesome"),Re()}),a.append(r)}})}function Le(e,r){var n=M.activeRoleSlugs.indexOf(e);if(-1!==n){var t=n+r;if(!(t<0||t>=M.activeRoleSlugs.length)){h();var s=M.activeRoleSlugs[n];M.activeRoleSlugs[n]=M.activeRoleSlugs[t],M.activeRoleSlugs[t]=s,l(),ze()}}}function Te(e,r,n){var t=I(e).overrides[r]||{},s=null;if("__promote__"===t.parent?s=null:-1!==r.indexOf("::")?s=T(r):t.parent&&"__promote__"!==t.parent&&(s=t.parent),s){var a=I(e).submenu_order;a[s]||(a[s]=V(e,s));var i=a[s],o=-1!==r.indexOf("::")?r.split("::").pop():r;if(-1===(l=i.indexOf(o)))return;if((c=l+n)<0||c>=i.length)return;h();var m=i[l];i[l]=i[c],i[c]=m}else{I(e).order&&I(e).order.length||(I(e).order=F());var l,c,d=I(e).order;if(-1===(l=d.indexOf(r)))return;if((c=l+n)<0||c>=d.length)return;h();var u=d[l];d[l]=d[c],d[c]=u}ze()}function je(){var e=be();if(e.length){h();var t="sep-"+Date.now();e.forEach(function(e){I(e).order&&I(e).order.length||(I(e).order=F());var r=I(e).order,n=M.selectedId?r.indexOf(M.selectedId):r.length-1;n<0&&(n=r.length),r.splice(n+1,0,t)}),ze()}}function Ne(e){var r=S("#members-am-toolbar-loading");r.removeAttr("hidden"),r.find(".spinner").addClass("is-active"),r.find(".members-am-loading-text").text(e||""),S("#members-am-save, #members-am-reset, #members-am-import, #members-am-copy-apply, #members-am-undo").prop("disabled",!0)}function Je(){var e=S("#members-am-toolbar-loading");e.attr("hidden",!0),e.find(".spinner").removeClass("is-active"),e.find(".members-am-loading-text").text(""),S("#members-am-save, #members-am-reset, #members-am-import, #members-am-copy-apply").prop("disabled",!1),u()}function Fe(e){Ne(e||membersAdminMenus.i18n&&membersAdminMenus.i18n.saving||"Saving…");var s=membersAdminMenus.i18n&&membersAdminMenus.i18n.networkError||"Could not save settings. Check your connection and try again.";S.ajax({url:membersAdminMenus.ajaxUrl,type:"POST",dataType:"json",timeout:6e4,data:{action:"members_admin_menus_save",nonce:membersAdminMenus.nonce,settings:JSON.stringify(M.settings)}}).done(function(e){if(e&&void 0!==e.success){if(e.success)return t=a(),d=null,u(),void b("success",e.data&&e.data.message||membersAdminMenus.i18n&&membersAdminMenus.i18n.saved||"Settings saved.");b("error",e.data&&e.data.message?e.data.message:"Error")}else b("error",s)}).fail(function(e,r){if("abort"!==r){var n=s;if(e&&e.responseJSON&&void 0!==e.responseJSON.data){var t=e.responseJSON.data;"string"==typeof t&&t?n=t:t&&"string"==typeof t.message&&t.message&&(n=t.message)}b("error",n)}}).always(function(){Je()})}function De(e,r){var n,t=membersAdminMenus.i18n||{};if(n="role"===e&&"administrator"===r?t.confirmResetAdministrator||"Reset all menu settings for the Administrator role? This cannot be undone.":"all"!==e&&"role"===e&&r?t.confirmResetRole||"Reset all settings for this role? This cannot be undone.":t.confirmResetAllRoles||"Reset ALL menu settings for every role? This cannot be undone.",confirm(n)){Ne(membersAdminMenus.i18n&&membersAdminMenus.i18n.resetting||"Resetting…");var s=!1;S.post(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_reset",nonce:membersAdminMenus.nonce,scope:e||"all",role:r||""}).done(function(e){if(e.success)return o("success",e.data&&e.data.message||membersAdminMenus.i18n&&membersAdminMenus.i18n.resetComplete||"Reset complete."),M.allowUnload=!0,s=!0,void location.reload();b("error",e.data&&e.data.message?e.data.message:membersAdminMenus.i18n&&membersAdminMenus.i18n.resetFailed||"Reset failed.")}).fail(function(){b("error",membersAdminMenus.i18n&&membersAdminMenus.i18n.resetNetworkError||membersAdminMenus.i18n.networkError||"Could not reset settings. Check your connection and try again.")}).always(function(){s||Je()})}}function He(e){S.getJSON(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_user_search",nonce:membersAdminMenus.nonce,term:e},function(e){e.success&&e.data&&e.data.length?function(e){S(".members-am-user-suggestions").remove();var r=S("#members-am-user-search").parent();r.css("position","relative");var n=S('
');e.forEach(function(e){n.append(S('
').text(e.label).data("userId",e.id).on("click",function(){!function(e,r,n){M.previewUserId=e,M.previewUserLabel=r||"User #"+e,M.previewUserRoles=n||[],p(),M.settings.users[e]||(M.settings.users[e]={});ze()}(e.id,e.label,e.roles),S(".members-am-user-suggestions").remove(),S("#members-am-user-search").val("")}))}),r.append(n),setTimeout(function(){S(document).one("click",function(){S(".members-am-user-suggestions").remove()})},0)}(e.data):S(".members-am-user-suggestions").remove()})}function Be(){var r;S(document).on("click","#members-am-role-chips .members-am-chip",function(){var e=S(this).data("role"),r=M.activeRoleSlugs.indexOf(e);-1===r?M.activeRoleSlugs.push(e):1 ');if(a.append(S('
').text(n.resetSettingsLabel||"Reset Settings")),s){var i=S(' ');i.append(S(' ')),i.append(S(' ').append(S(" ").text(n.resetAdministrator||"Reset Administrator"),S(" ").text(n.resetAdministratorHelp||"Clear all menu settings for the Administrator role only."))),i.on("click",function(e){e.preventDefault(),e.stopPropagation(),S(".members-am-reset-dropdown").remove(),De("role",t)}),a.append(i)}var o=S(' ');o.append(S(' ')),o.append(S(' ').append(S(" ").text(n.resetAll||"Reset all roles"),S(" ").text(n.resetAllRolesHelp||"Clear all menu settings for every role."))),o.on("click",function(e){e.preventDefault(),e.stopPropagation(),S(".members-am-reset-dropdown").remove(),De("all")}),a.append(o),a.insertAfter(r),setTimeout(function(){S(document).one("click",function(){S(".members-am-reset-dropdown").remove()})},0)}),S("#members-am-export").on("click",function(e){e.preventDefault(),window.location.href=membersAdminMenus.exportUrl}),S("#members-am-import").on("click",function(){S("#members-am-import-file").trigger("click")}),S("#members-am-import-file").on("change",function(){var e=this.files&&this.files[0];e&&function(e){Ne(membersAdminMenus.i18n&&membersAdminMenus.i18n.importing||"Importing…");var n=new FileReader;n.onerror=function(){Je(),b("error",membersAdminMenus.i18n&&membersAdminMenus.i18n.readFileFailed||"Could not read the file.")},n.onload=function(){try{var e=JSON.parse(n.result),r=!1;S.post(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_import",nonce:membersAdminMenus.nonce,settings:JSON.stringify(e)}).done(function(e){if(e.success)return o("success",e.data&&e.data.message||membersAdminMenus.i18n&&membersAdminMenus.i18n.imported||"Settings imported."),M.allowUnload=!0,r=!0,void location.reload();b("error",e.data&&e.data.message?e.data.message:"Error")}).fail(function(){b("error",membersAdminMenus.i18n&&membersAdminMenus.i18n.importNetworkError||membersAdminMenus.i18n.networkError||"Could not import settings. Check your connection and try again.")}).always(function(){r||Je()})}catch(e){Je(),b("error",membersAdminMenus.i18n&&membersAdminMenus.i18n.invalidJson||"Invalid JSON.")}},n.readAsText(e)}(e)}),S("#members-am-copy-apply").on("click",function(){var n=S("#members-am-copy-from").val(),r=S("#members-am-copy-to").val();if(n&&r)if(n!==r){var t="",s="";if(v().forEach(function(e){e.slug===n&&(t=e.label),e.slug===r&&(s=e.label)}),confirm('Copy menu settings from "'+t+'" to "'+s+'"?\nThis will overwrite "'+s+'" menu configuration.\n\nNote: This copies menu order, labels, icons, and colors. Items the source role cannot access (no-access in its column) are stored as hidden on the target so a higher-capability role does not gain those screens.\nIt does not change WordPress role capabilities (lock icon).')){h();var e=I(n),a={hidden:G(n),order:[],submenu_order:{},overrides:{}},i=z(n);a.order=i.slice(),M.tree.forEach(function(e){if(e.children&&e.children.length){var r=W(n,e.id);r&&r.length&&(a.submenu_order[e.id]=r.slice())}}),e.overrides&&"object"==typeof e.overrides&&(a.overrides=JSON.parse(JSON.stringify(e.overrides))),M.settings.roles[r]=a,-1===M.activeRoleSlugs.indexOf(r)&&(M.activeRoleSlugs.push(r),l(),_e()),ze(),Fe(membersAdminMenus.i18n&&membersAdminMenus.i18n.copying||"Copying…")}}else b("error",membersAdminMenus.i18n&&membersAdminMenus.i18n.rolesMustDiffer||"Source and target roles must be different.")}),S("#members-am-admin-editable").on("change",function(){var e=!0,r=membersAdminMenus.i18n||{};if(S(this).is(":checked")&&(e=window.confirm(r.adminEditableWarn)),e){if(h(),M.settings._meta.admin_editable=S(this).is(":checked"),M.settings._meta.admin_editable&&membersAdminMenus.currentUserIsAdministrator&&membersAdminMenus.currentUserId){var n=parseInt(membersAdminMenus.currentUserId,10);if(0===g().length){M.settings._meta.admin_menu_exempt_user_ids=[n];var t=String(n),s=membersAdminMenus.exemptUserLabels||{};M.exemptUserLabels[t]=s[t]||"User #"+n}}M.settings._meta.admin_editable||(M.settings._meta.admin_menu_exempt_user_ids=[],M.exemptUserLabels=S.extend({},membersAdminMenus.exemptUserLabels||{})),x(),xe(),_e(),l(),_(),ze()}else S(this).prop("checked",!1)}),S("#members-am-exempt-chips").on("click",".members-am-exempt-remove",function(){var r=S(this).data("userId");if(r){var e=g();e.length<=1?b("warning",membersAdminMenus.i18n&&membersAdminMenus.i18n.exemptLastAdministrator||"Keep at least one exempt administrator while this option is enabled."):(h(),M.settings._meta.admin_menu_exempt_user_ids=e.filter(function(e){return e!==r}),delete M.exemptUserLabels[String(r)],_())}}),S("#members-am-exempt-search").on("input",function(){var e=S(this).val();clearTimeout(r),r=setTimeout(function(){1 ").val("__all__").text("All roles")),M.activeRoleSlugs.forEach(function(r){var e=(v().filter(function(e){return e.slug===r})[0]||{}).label||r;n.append(S(" ").val(r).text(e))}),M.previewUserId&&n.append(S(" ").val("__user__"+M.previewUserId).text(M.previewUserLabel||"User #"+M.previewUserId)),_(),M.selectedId&&Ce()}S(function(){var r,n,e;!function(){try{var e=sessionStorage.getItem(i);if(!e)return;sessionStorage.removeItem(i);var r=JSON.parse(e);r&&r.message&&b(r.type,r.message)}catch(e){}}(),p(),M.exemptUserLabels=S.extend({},membersAdminMenus.exemptUserLabels||{}),x(),M.tree=U(),xe(),S("#members-am-admin-editable").prop("checked",!!M.settings._meta.admin_editable),_(),r=S("#members-am-copy-from").empty(),n=S("#members-am-copy-to").empty(),(e=v()).forEach(function(e){r.append(S(" ").val(e.slug).text(e.label)),n.append(S(" ").val(e.slug).text(e.label))}),1
Date: Tue, 28 Apr 2026 15:07:21 +0300
Subject: [PATCH 51/73] feat(admin): enhance admin menus with new UI elements,
improved role management features, and responsive design adjustments
---
.../app/functions-admin.php | 280 +++--
admin/functions-admin.php | 4 +-
css/admin.css | 977 +++++++++++++++---
css/admin.min.css | 2 +-
js/admin-menus.js | 727 ++++++++++---
js/admin-menus.min.js | 2 +-
6 files changed, 1627 insertions(+), 365 deletions(-)
diff --git a/addons/members-admin-menus/app/functions-admin.php b/addons/members-admin-menus/app/functions-admin.php
index 27a49d5..7617611 100644
--- a/addons/members-admin-menus/app/functions-admin.php
+++ b/addons/members-admin-menus/app/functions-admin.php
@@ -645,14 +645,56 @@ function enqueue_admin_menus_assets() {
'bulkVisibilityHint' => __( 'For bulk visibility (whole column or checked rows), use the tools above each role column.', 'members' ),
'filterRolesVisibility' => __( 'Filter roles…', 'members' ),
'filterRolesVisibilityLabel' => __( 'Filter roles in this list', 'members' ),
- 'moreToolsShowAria' => __( 'Show additional tools: copy between roles, import and export', 'members' ),
+ 'moreToolsShowAria' => __( 'Show additional tools', 'members' ),
'moreToolsHideAria' => __( 'Hide additional tools', 'members' ),
- 'colorsReadableNeedBg' => __( 'Choose a background color first.', 'members' ),
+ 'moreToolsPanelHint' => __( 'Administrator editing, copy between roles, exempt administrators, and import/export.', 'members' ),
+ 'searchUsersToOverride' => __( 'Search users to override…', 'members' ),
+ 'rowBadgeHidden' => __( 'HIDDEN', 'members' ),
+ 'rowBadgeNoAccess' => __( 'NO ACCESS', 'members' ),
'noAccessTitlePattern' => __( 'This role does not have the stored capability “%s”. Users with multiple roles may still reach the screen if another role grants it. Tags use manage_post_tags when Category & Tag Caps is active (Members → Roles, Taxonomy).', 'members' ),
'multiRoleMergeHelp' => __( 'Users with multiple roles: a menu item is hidden if any of their roles hides it. When two roles define different labels, icons, or colors for the same item, the first role in the user’s role list wins.', 'members' ),
'exemptLastAdministrator' => __( 'Keep at least one exempt administrator while this option is enabled.', 'members' ),
'exemptRemove' => __( 'Remove', 'members' ),
'exemptSaveRequiresAdministrator' => __( 'When administrator menu editing is enabled, at least one exempt administrator is required. Sign in as an administrator or add one using the search field.', 'members' ),
+ 'columnsAllHidden' => __( 'All role columns are hidden. Use the role chips above to show at least one role.', 'members' ),
+ 'showRoleColumn' => __( 'Show role column', 'members' ),
+ 'hideRoleColumn' => __( 'Hide role column', 'members' ),
+ 'moveColumnLeft' => __( 'Move column left', 'members' ),
+ 'moveColumnRight' => __( 'Move column right', 'members' ),
+ 'closeUserColumn' => __( 'Close user preview column', 'members' ),
+ 'showAllRoles' => __( 'Show all', 'members' ),
+ 'hideAllRoles' => __( 'Hide all', 'members' ),
+ 'setOverride' => __( 'Set override', 'members' ),
+ 'setOverridePhase2' => __( 'Per-user override editing is planned for a future update.', 'members' ),
+ 'popoverPhase1Body' => __( 'Detailed item editing (rename, URL, icons, and colors) is coming in the next update. Use the row controls in each column for visibility and ordering.', 'members' ),
+ 'copyConfirm' => __( 'Copy menu settings from “%1$s” to “%2$s”? This overwrites the target role’s configuration.', 'members' ),
+ 'copyConfirmYes' => __( 'Confirm copy', 'members' ),
+ 'copyConfirmNo' => __( 'Cancel', 'members' ),
+ 'addItemModalTitle' => __( 'Add custom menu item', 'members' ),
+ 'addItemModalIntro' => __( 'Add a link to the admin menu. Nothing is saved until you click “Save changes”.', 'members' ),
+ 'addItemSubmit' => __( 'Add to menu', 'members' ),
+ 'addItemCancel' => __( 'Cancel', 'members' ),
+ 'positionTopEnd' => __( 'Top of menu', 'members' ),
+ 'positionTopStart' => __( 'Bottom of menu', 'members' ),
+ 'positionSubmenuOf' => __( 'Submenu of…', 'members' ),
+ 'applyToAllRoles' => __( 'All roles', 'members' ),
+ 'applyToLabel' => __( 'Apply to:', 'members' ),
+ 'customTitle' => __( 'Custom title', 'members' ),
+ 'urlOverride' => __( 'URL override', 'members' ),
+ 'urlDefaultPlaceholder' => __( 'Default', 'members' ),
+ 'sectionIcon' => __( 'Icon', 'members' ),
+ 'sectionBadge' => __( 'Badge', 'members' ),
+ 'sectionColors' => __( 'Colors', 'members' ),
+ 'sectionVisibility' => __( 'Visibility per role', 'members' ),
+ 'selectParentMenuButton' => __( 'Select parent menu', 'members' ),
+ 'removeMenuItem' => __( 'Remove', 'members' ),
+ 'badgePreviewLabel' => __( 'Preview', 'members' ),
+ 'badgeTextFieldLabel' => __( 'Badge text', 'members' ),
+ 'badgeColorFieldLabel' => __( 'Badge color', 'members' ),
+ 'colorsApplyFooterNote' => __( 'Colors apply to the “Apply to” target. Each role column shows its own overrides.', 'members' ),
+ 'popoverCloseAria' => __( 'Close advanced menu', 'members' ),
+ 'labelUrlSection' => __( 'Label & URL', 'members' ),
+ 'editPopoverDone' => __( 'Close', 'members' ),
),
)
);
@@ -678,7 +720,8 @@ function render_admin_menus_page() {
-
+
+
@@ -698,29 +741,31 @@ function render_admin_menus_page() {
diff --git a/css/admin.css b/css/admin.css
index c384275..f9c8099 100644
--- a/css/admin.css
+++ b/css/admin.css
@@ -3109,6 +3109,98 @@ body.admin_page_members-about #wpbody-content {
margin: 0 0 10px;
}
+/* Expandable edit sections (native ) — Admin Menus popover */
+.members-am-expand-details {
+ border: 1px solid var(--wp-components-color-gray-200, #dcdcde);
+ border-radius: 4px;
+ background: var(--wp-components-color-background, #fff);
+ margin: 0;
+}
+
+.members-am-expand-details-summary {
+ cursor: pointer;
+ list-style: none;
+ display: flex;
+ align-items: flex-start;
+ gap: 8px;
+ padding: 10px 12px;
+ margin: 0;
+ font-weight: normal;
+}
+
+.members-am-expand-details-summary::-webkit-details-marker,
+.members-am-expand-details-summary::marker {
+ display: none;
+}
+
+.members-am-expand-details-summary::before {
+ content: '';
+ flex-shrink: 0;
+ width: 0;
+ height: 0;
+ margin-top: 5px;
+ border-top: 5px solid transparent;
+ border-bottom: 5px solid transparent;
+ border-left: 6px solid var(--members-am-muted, #646970);
+ transform: rotate(0deg);
+ transition: transform 0.12s ease;
+}
+
+.members-am-expand-details[open] > .members-am-expand-details-summary::before {
+ transform: rotate(90deg);
+}
+
+.members-am-expand-summary-text {
+ display: flex;
+ flex-direction: column;
+ gap: 4px;
+ min-width: 0;
+ flex: 1;
+}
+
+.members-am-expand-details-summary .members-am-edit-section-title {
+ margin: 0;
+ font-size: 14px;
+}
+
+.members-am-expand-current-summary {
+ margin: 0;
+ font-size: 13px;
+ line-height: 1.4;
+ color: var(--members-am-fg-muted-on-base, #646970);
+}
+
+.members-am-expand-details[open] > .members-am-expand-panel {
+ border-top: 1px solid var(--wp-components-color-gray-200, #dcdcde);
+}
+
+.members-am-expand-panel {
+ padding: 12px;
+ margin: 0;
+}
+
+.members-am-icon-heading-row {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ gap: 8px;
+ flex-wrap: wrap;
+ margin-bottom: 4px;
+}
+
+.members-am-icon-heading-row .members-am-edit-section-title {
+ margin: 0;
+}
+
+.members-am-icon-current-summary {
+ margin: 0 0 12px;
+ font-size: 13px;
+}
+
+.members-am-icon-panel > .members-am-icon-tabs {
+ margin-top: 0;
+}
+
.members-am-icon-tabs {
margin-bottom: 8px;
}
diff --git a/css/admin.min.css b/css/admin.min.css
index 110f183..2f58fbb 100644
--- a/css/admin.min.css
+++ b/css/admin.min.css
@@ -1 +1 @@
-#members-cp h2.hndle,#members-cp-side h2.hndle{border-bottom:none !important;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}#members-cp h2.hndle:before,#members-cp-side h2.hndle:before{content:url("data:image/svg+xml,%3Csvg width='15px' aria-hidden='true' focusable='false' data-prefix='fas' data-icon='users-cog' class='svg-inline--fa fa-users-cog fa-w-20' role='img' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 640 512'%3E%3Cpath fill='currentColor' d='M610.5 341.3c2.6-14.1 2.6-28.5 0-42.6l25.8-14.9c3-1.7 4.3-5.2 3.3-8.5-6.7-21.6-18.2-41.2-33.2-57.4-2.3-2.5-6-3.1-9-1.4l-25.8 14.9c-10.9-9.3-23.4-16.5-36.9-21.3v-29.8c0-3.4-2.4-6.4-5.7-7.1-22.3-5-45-4.8-66.2 0-3.3.7-5.7 3.7-5.7 7.1v29.8c-13.5 4.8-26 12-36.9 21.3l-25.8-14.9c-2.9-1.7-6.7-1.1-9 1.4-15 16.2-26.5 35.8-33.2 57.4-1 3.3.4 6.8 3.3 8.5l25.8 14.9c-2.6 14.1-2.6 28.5 0 42.6l-25.8 14.9c-3 1.7-4.3 5.2-3.3 8.5 6.7 21.6 18.2 41.1 33.2 57.4 2.3 2.5 6 3.1 9 1.4l25.8-14.9c10.9 9.3 23.4 16.5 36.9 21.3v29.8c0 3.4 2.4 6.4 5.7 7.1 22.3 5 45 4.8 66.2 0 3.3-.7 5.7-3.7 5.7-7.1v-29.8c13.5-4.8 26-12 36.9-21.3l25.8 14.9c2.9 1.7 6.7 1.1 9-1.4 15-16.2 26.5-35.8 33.2-57.4 1-3.3-.4-6.8-3.3-8.5l-25.8-14.9zM496 368.5c-26.8 0-48.5-21.8-48.5-48.5s21.8-48.5 48.5-48.5 48.5 21.8 48.5 48.5-21.7 48.5-48.5 48.5zM96 224c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm224 32c1.9 0 3.7-.5 5.6-.6 8.3-21.7 20.5-42.1 36.3-59.2 7.4-8 17.9-12.6 28.9-12.6 6.9 0 13.7 1.8 19.6 5.3l7.9 4.6c.8-.5 1.6-.9 2.4-1.4 7-14.6 11.2-30.8 11.2-48 0-61.9-50.1-112-112-112S208 82.1 208 144c0 61.9 50.1 112 112 112zm105.2 194.5c-2.3-1.2-4.6-2.6-6.8-3.9-8.2 4.8-15.3 9.8-27.5 9.8-10.9 0-21.4-4.6-28.9-12.6-18.3-19.8-32.3-43.9-40.2-69.6-10.7-34.5 24.9-49.7 25.8-50.3-.1-2.6-.1-5.2 0-7.8l-7.9-4.6c-3.8-2.2-7-5-9.8-8.1-3.3.2-6.5.6-9.8.6-24.6 0-47.6-6-68.5-16h-8.3C179.6 288 128 339.6 128 403.2V432c0 26.5 21.5 48 48 48h255.4c-3.7-6-6.2-12.8-6.2-20.3v-9.2zM173.1 274.6C161.5 263.1 145.6 256 128 256H64c-35.3 0-64 28.7-64 64v32c0 17.7 14.3 32 32 32h65.9c6.3-47.4 34.9-87.3 75.2-109.4z'%3E%3C/path%3E%3C/svg%3E");margin-right:5px}#members-cp-side .postbox-header{border-bottom:none !important}#members-cp-side .handle-actions .handle-order-higher,#members-cp-side .handle-actions .handle-order-lower{display:none}#members-cp-side .handle-actions .handlediv{position:absolute;right:5px}.members-upgrade-header{text-align:center;padding:5px}.members-upgrade-header a{color:#f59431}.memberpress-paid-memberships{background-color:#f5f5f5;padding:50px 10px;text-align:center}.memberpress-paid-memberships a{background-color:#0e4598;display:inline-block;padding:10px 20px;border-radius:300px;color:#fff;text-decoration:none;margin-top:20px}#members-cp-side .members-tabs{position:relative}#members-cp-side .members-tab-nav{background-color:transparent;margin-bottom:20px;border-right:none !important}#members-cp-side .members-tab-nav .members-tab-title{width:33.333%;height:50px;border-right:none !important}#members-cp-side .members-tab-nav .members-tab-title a{border:0}#members-cp-side .members-tab-content h3{font-weight:bold;font-size:15px;margin-top:0;color:#000;margin-bottom:10px}#members-cp-side .members-tab-content .memberpress-paid-memberships{text-align:left;padding:20px}#members-cp-side .members-tab-content .memberpress-paid-memberships a{display:block;text-align:center}#members-cp-side .members-tabs .members-tab-nav li a,#members-cp-side .members-tabs .members-tab-nav li[aria-selected="false"] a i{color:#555}#members-cp-side .members-tabs .members-tab-nav li a svg,#members-cp-side .members-tabs .members-tab-nav li[aria-selected="false"] a svg{fill:#555}#members-cp-side .members-tabs .members-tab-nav li[aria-selected="true"] a{background-color:transparent;border-bottom:2px solid #3582ae}#members-cp-side .members-tabs .members-tab-nav li[aria-selected="true"] a i{color:#3582ae}#members-cp-side .members-tabs .members-tab-nav li[aria-selected="true"] a svg{fill:#3582ae}.members-tab-title svg,.members-tab-title[aria-selected="false"] svg{fill:#0073aa}.members-tab-title[aria-selected="true"] svg{fill:#555}#wpcontent #members-admin-header{margin-left:-20px;padding:0 28px 0 22px;background-color:#0b1220;background-image:radial-gradient(circle at 12% 35%,rgba(14,69,152,0.45),transparent 55%),radial-gradient(circle at 90% 85%,rgba(245,148,49,0.14),transparent 60%);background-repeat:no-repeat;min-height:56px;position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}#wpcontent #members-admin-header img.members-logo{height:42px;display:block}#wpcontent #members-admin-header .members-by-mp{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:12px;margin-left:auto;text-decoration:none;-webkit-box-shadow:none;box-shadow:none;-webkit-transition:opacity .15s ease;transition:opacity .15s ease}#wpcontent #members-admin-header .members-by-mp:hover,#wpcontent #members-admin-header .members-by-mp:focus{opacity:.75;text-decoration:none;-webkit-box-shadow:none;box-shadow:none}#wpcontent #members-admin-header .members-by-label{color:#94a3b8;font-size:12px;font-weight:500}#wpcontent #members-admin-header img.members-mp-logo{height:18px;display:block}#wpcontent #members-admin-header #membersAdminHeaderNotifications{position:relative;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:36px;height:36px;padding:0;margin:0 0 0 18px;background:rgba(255,255,255,0.06);border:1px solid rgba(255,255,255,0.12);border-radius:8px;color:#fff;cursor:pointer;-webkit-box-shadow:none;box-shadow:none;-webkit-transition:background .15s ease,border-color .15s ease;transition:background .15s ease,border-color .15s ease;line-height:1;vertical-align:middle;min-height:0;text-decoration:none}#wpcontent #members-admin-header #membersAdminHeaderNotifications:hover,#wpcontent #members-admin-header #membersAdminHeaderNotifications:focus{background:rgba(255,255,255,0.12);border-color:rgba(255,255,255,0.24);color:#fff;-webkit-box-shadow:none;box-shadow:none;outline:0}#wpcontent #members-admin-header #membersAdminHeaderNotifications svg{width:16px;height:auto;display:block}#wpcontent #members-admin-header #membersAdminHeaderNotifications svg path{fill:#e2e8f0}#wpcontent #members-admin-header #membersAdminHeaderNotifications .members-notifications-count{position:absolute;top:-4px;right:-4px;min-width:16px;height:16px;padding:0 4px;border-radius:999px;background:#f59431;color:#0b1220;font-size:10px;font-weight:700;line-height:16px;text-align:center;border:1.5px solid #0b1220;-webkit-box-sizing:content-box;box-sizing:content-box}.members-upgrade-header #close-members-upgrade-header{position:absolute;right:20px;top:3px}.members-upgrade-header #close-members-upgrade-header:hover{cursor:pointer}.memberpress-welcome-panel.welcome-panel{margin-top:20px;padding:20px 28px;background:#fff;border-radius:10px;min-height:0}.memberpress-welcome-panel.welcome-panel .welcome-panel-content{min-height:0;height:auto}.members-about{--ink:#0f172a;--ink-soft:#334155;--ink-muted:#64748b;--mp-blue:#0e4598;--mp-teal:#3582ae;--mp-orange:#f59431;--rule:#e5e7eb;--paper:#fbfaf7;--paper-soft:#f3efe6;--paper-line:#e8e3d5;--display-font:"Inter",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;--sans-font:"Inter",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif}body.members_page_members-about #wpbody-content,body.toplevel_page_members-about #wpbody-content,body.admin_page_members-about #wpbody-content{background:var(--paper)}.members-about.wrap{max-width:1120px;margin:0 auto;padding:48px 24px 80px;color:var(--ink);font-family:var(--sans-font)}.members-about__hero{display:grid;grid-template-columns:minmax(0,1fr) 200px;grid-template-areas:"head mark" "body mark";gap:32px 56px;-webkit-box-align:start;-ms-flex-align:start;align-items:start;padding-bottom:64px;border-bottom:1px solid var(--paper-line)}.members-about__hero-head{grid-area:head}.members-about__body{grid-area:body}.members-about__mark{grid-area:mark;align-self:start}.members-about__eyebrow{display:inline-block;font-family:var(--sans-font);font-size:12px;font-weight:600;letter-spacing:.18em;text-transform:uppercase;color:var(--ink-muted);padding-bottom:18px}.members-about__title{font-family:var(--display-font);font-weight:900;font-size:clamp(40px,5.5vw,64px);line-height:1;letter-spacing:-0.035em;color:var(--ink);margin:0}.members-about__title em{font-style:normal;font-weight:900;color:var(--mp-blue)}.members-about__title-dot{color:var(--mp-blue);font-style:normal;font-weight:900}.members-about__body{max-width:60ch;font-size:15.5px;line-height:1.62;color:var(--ink-soft)}.members-about__body p{margin:0 0 14px}.members-about__body p:last-child{margin-bottom:0}.members-about__lead{font-family:var(--sans-font);font-weight:500;font-size:17px;line-height:1.5;color:var(--ink);margin-bottom:24px !important;padding-left:18px;border-left:2px solid var(--mp-blue)}.members-about__body a,.members-about__lead a{color:var(--mp-blue);text-decoration:none;background-image:-webkit-gradient(linear,left top,left bottom,from(currentColor),to(currentColor));background-image:linear-gradient(currentColor,currentColor);background-size:100% 1px;background-position:0 100%;background-repeat:no-repeat;padding-bottom:1px;-webkit-transition:color .2s ease,background-size .2s ease;transition:color .2s ease,background-size .2s ease}.members-about__body a:hover,.members-about__lead a:hover{color:var(--mp-orange)}.members-about__body em,.members-about__lead em{font-style:normal;font-weight:700;color:var(--mp-blue)}.members-about__mark{padding:24px;background:#fff;border:1px solid var(--paper-line);border-radius:4px;-webkit-box-shadow:0 1px 2px rgba(15,23,42,0.03);box-shadow:0 1px 2px rgba(15,23,42,0.03);-webkit-transition:-webkit-transform .25s ease,-webkit-box-shadow .25s ease;transition:-webkit-transform .25s ease,-webkit-box-shadow .25s ease;transition:transform .25s ease,box-shadow .25s ease;transition:transform .25s ease,box-shadow .25s ease,-webkit-transform .25s ease,-webkit-box-shadow .25s ease}.members-about__mark:hover{-webkit-transform:translateY(-2px);transform:translateY(-2px);-webkit-box-shadow:0 8px 20px rgba(15,23,42,0.08);box-shadow:0 8px 20px rgba(15,23,42,0.08)}.members-about__mark a{display:block;-webkit-box-shadow:none !important;box-shadow:none !important;text-decoration:none}.members-about__mark img{display:block;width:100%;height:auto;max-width:160px;margin:0 auto}.members-about__products{padding-top:56px}.members-about__products-head{margin-bottom:28px;text-align:center}.members-about__products-head h3{font-family:var(--display-font);font-weight:700;font-size:15px;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-muted);margin:0}.members-about__grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px}.members-about__card{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;padding:24px;background:#fff;border:1px solid var(--paper-line);border-radius:6px;-webkit-transition:border-color .25s ease,-webkit-transform .25s ease,-webkit-box-shadow .25s ease;transition:border-color .25s ease,-webkit-transform .25s ease,-webkit-box-shadow .25s ease;transition:transform .25s ease,box-shadow .25s ease,border-color .25s ease;transition:transform .25s ease,box-shadow .25s ease,border-color .25s ease,-webkit-transform .25s ease,-webkit-box-shadow .25s ease}.members-about__card:hover{-webkit-transform:translateY(-3px);transform:translateY(-3px);-webkit-box-shadow:0 12px 28px rgba(15,23,42,0.08);box-shadow:0 12px 28px rgba(15,23,42,0.08);border-color:rgba(14,69,152,0.2)}.members-about__card-head{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:14px;margin-bottom:14px}.members-about__card-icon{-webkit-box-flex:0;-ms-flex:0 0 44px;flex:0 0 44px;width:44px;height:44px;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;background:var(--paper-soft);border-radius:10px;overflow:hidden}.members-about__card-icon img{display:block;max-width:32px;max-height:32px;width:auto;height:auto}.members-about__card-title{margin:0;font-family:var(--display-font);font-weight:700;font-size:17px;line-height:1.2;letter-spacing:-0.01em;color:var(--ink)}.members-about__card-title a{color:inherit;text-decoration:none;-webkit-box-shadow:none;box-shadow:none}.members-about__card-title a:hover{color:var(--mp-blue)}.members-about__card-desc{-webkit-box-flex:1;-ms-flex:1;flex:1;margin:0 0 24px;font-size:14px;line-height:1.55;color:var(--ink-soft)}.members-about__card-foot{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;gap:16px;padding-top:16px;border-top:1px solid var(--paper-line)}.members-about__status{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;font-size:12px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-muted)}.members-about__status::before{content:"";width:7px;height:7px;border-radius:50%;background:currentColor}.members-about__status.is-active{color:#10b981}.members-about__status.is-inactive{color:var(--mp-orange)}.members-about__status.is-missing{color:var(--ink-muted)}.members-about__cta{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;padding:8px 14px;font-size:13px;font-weight:600;letter-spacing:.01em;border-radius:4px;text-decoration:none;border:1px solid transparent;-webkit-transition:background .2s ease,border-color .2s ease,color .2s ease,-webkit-transform .15s ease;transition:background .2s ease,border-color .2s ease,color .2s ease,-webkit-transform .15s ease;transition:background .2s ease,border-color .2s ease,color .2s ease,transform .15s ease;transition:background .2s ease,border-color .2s ease,color .2s ease,transform .15s ease,-webkit-transform .15s ease;-webkit-box-shadow:none;box-shadow:none}.members-about__cta:focus,.members-about__cta:focus-visible{outline:2px solid var(--mp-blue);outline-offset:2px;-webkit-box-shadow:none;box-shadow:none}.members-about__cta.is-primary{background:var(--mp-blue);color:#fff}.members-about__cta.is-primary:hover{background:#093374;color:#fff;-webkit-transform:translateY(-1px);transform:translateY(-1px)}.members-about__cta.is-secondary{background:transparent;color:var(--ink);border-color:var(--rule)}.members-about__cta.is-secondary:hover{border-color:var(--ink);background:#fff;color:var(--ink)}.members-about__cta svg{-webkit-transition:-webkit-transform .2s ease;transition:-webkit-transform .2s ease;transition:transform .2s ease;transition:transform .2s ease,-webkit-transform .2s ease}.members-about__cta:hover svg{-webkit-transform:translate(1px,-1px);transform:translate(1px,-1px)}@media(max-width:900px){.members-about__hero{grid-template-columns:1fr;grid-template-areas:"head" "body" "mark";gap:24px}.members-about__mark{max-width:160px}.members-about__grid{grid-template-columns:1fr}}.memberpress-welcome-panel.welcome-panel:before{background:0}.memberpress-welcome-panel.welcome-panel .about-description{margin:20px 0}.memberpress-welcome-panel.welcome-panel-content{margin:0}.memberpress-welcome-panel.welcome-panel-content .mp-logo-wrap>a{display:block}@media screen and (min-width:870px){.members_page_members-settings .members-short-p{max-width:612px;margin-left:auto;margin-right:auto}.members_page_members-settings .welcome-panel-content{text-align:center}}.members_page_members-settings .welcome-panel .button.button-hero{margin-left:auto;margin-right:auto}.members_page_members-settings .members-svg-wrap{display:inline-block;margin:0 auto 20px}@media screen and (max-width:870px){.members_page_members-settings .welcome-panel{padding:20px}.members_page_members-settings .members-svg-wrap{float:left;margin-right:28px}.admin_page_members-settings.rtl .members-svg-wrap{float:right;margin-right:0;margin-left:28px}}.members_page_members-settings .members-svg-link{display:table-cell;text-align:center;width:128px;height:128px;background:#363b3f;color:#fff;padding:24px 16px 16px;border-radius:50%;-webkit-box-sizing:border-box;box-sizing:border-box;border:4px solid #fff;-webkit-box-shadow:0 0 0 4px #363b3f;box-shadow:0 0 0 4px #363b3f}.members_page_members-settings .members-svg-link svg{max-width:84px;max-height:64px;width:auto;height:auto}.members-addons{display:grid;grid-template-columns:1fr 1fr;grid-row-gap:20px;grid-column-gap:20px}.members-addons .plugin-card{margin:0}.members-addons .plugin-card-top{width:100%}.members-addon{width:100%;position:relative;float:none;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.members-addon .desc{margin-bottom:80px}.addon-activate{text-align:center;border:1px solid #ddd;border-radius:3px;padding:5px 10px 10px;display:inline-block;width:100px;position:absolute;right:20px;bottom:20px}.activate-toggle:hover{cursor:pointer}.activate-toggle svg{max-width:20px;position:relative;top:5px}.activate-toggle svg{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.activate-toggle svg.active{-webkit-transform:rotate(0);transform:rotate(0)}.activate-toggle svg path{fill:#ccc}.activate-toggle svg.active path{fill:#8cbd5a}.activate-toggle.processing{cursor:not-allowed;pointer-events:none;opacity:.5}.activate-toggle .action-label{display:inline-block;width:50px;text-align:left}.mepr_dummy_txns{-webkit-filter:blur(3px);filter:blur(3px);position:absolute;top:0;left:0;width:100%;z-index:5;pointer-events:none}.mepr_dummy_txns::after{background-color:rgba(0,0,0,.2);position:absolute;top:0;left:0;width:100%;height:100%;z-index:6}.mepr-upgrade-table{position:relative}.mepr-upgrade-table .mepr-upgrade{position:relative;top:100px;z-index:10;background:rgba(0,0,0,.2);width:100%;height:100%;max-width:600px;margin:0 auto;-webkit-box-shadow:0 0 30px #ccc;box-shadow:0 0 30px #ccc}.mepr-upgrade-content{background-color:#fff;padding:20px;text-align:center}.mepr-upgrade-content h2{font-size:24px}.mepr-upgrade-content h4{font-size:18px}.mepr-upgrade-content .features{display:grid;grid-template-columns:1fr 1fr;grid-column-gap:30px;grid-row-gap:10px;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;text-align:left;padding:10px}.features li:before{content:"\f147";font-family:dashicons;color:green;font-size:20px;position:relative;top:4px;margin-right:10px}.mepr-upgrade-cta{text-align:center;background-color:#f2f2f2;padding:20px}.mepr-upgrade-cta .mepr-cta-button{display:block;max-width:300px;margin:0 auto 20px;background-color:#fd9c27;color:#fff;padding:15px;font-size:18px;font-weight:bold;text-decoration:none;border-radius:300px}.members-plugin-card.plugin-card:nth-child(even){margin-right:inherit}.members-plugin-card.plugin-card:nth-child(odd){clear:none;margin-left:inherit}.members-plugin-card.plugin-card .plugin-card-top{min-height:0;padding:30px 20px}.members-plugin-card.plugin-card .plugin-icon{top:30px}.members-plugin-card.plugin-card .plugin-card-bottom .column-status{font-weight:bold}.members-plugin-card.plugin-card .plugin-card-bottom .column-status .active{color:#8cbd5a}.members-plugin-card.plugin-card .plugin-card-bottom .column-status .inactive{color:red}.members-plugin-card.plugin-card .plugin-icon{width:64px;height:auto}.plugin-icon-small{width:32px;height:auto}.members-plugin-card.plugin-card .name,.members-plugin-card.plugin-card .desc{margin-right:0;margin-left:84px}.members-addons .plugin-card .name,.members-addons .plugin-card .desc p{margin-right:0}@media screen and (max-width:1100px){.members-addons{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}}@media screen and (max-width:600px){.members_page_members-settings .members-svg-link{width:64px;height:64px}.members_page_members-settings .members-svg-link svg{position:absolute;top:14px;left:15px;max-width:30px;max-height:30px}.members_page_members-settings .plugin-card-members-edd-integration .members-svg-link svg,.members_page_members-settings .plugin-card-members-acf-integration .members-svg-link svg,.members_page_members-settings .plugin-card-members-givewp-integration .members-svg-link svg,.members_page_members-settings .plugin-card-members-meta-box-integration .members-svg-link svg,.members_page_members-settings .plugin-card-members-woocommerce-integration .members-svg-link svg{top:10px;left:8px;max-width:40px;max-height:40px}.members_page_members-settings .plugin-card-members-block-permissions .members-svg-link svg,.members_page_members-settings .plugin-card-members-role-hierarchy .members-svg-link svg{left:14px}.members-addons .plugin-card .desc>p,.members-addons .plugin-card .name{margin-left:84px}}.memberpress-about .welcome-panel-column-container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:40px;padding:0;margin:0}.memberpress-about .mp-desc p{font-size:13px;line-height:1.6;color:#334155;margin:0 0 12px}.memberpress-about .mp-desc p:first-child{font-size:15px;font-weight:600;color:#0f172a;margin-top:0;margin-bottom:14px}.memberpress-about .mp-desc p:last-child{margin-bottom:0}.memberpress-about .mp-logo-wrap{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.memberpress-about .mp-logo{display:block;max-width:220px;height:auto;margin:0}.members-about-addons{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-column-gap:20px}.members-about-addons .members-plugin-card{margin:0;width:100%}.members-about-addons .members-plugin-card .plugin-icon{position:static;width:auto;height:28px;max-width:40px;-o-object-fit:contain;object-fit:contain;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;display:block}.members-about-addons .members-plugin-card .name,.members-about-addons .members-plugin-card .desc{margin-left:0}.members-about-addons .members-plugin-card .plugin-card-top{padding:20px}.members-about-addons .members-plugin-card .name h3{margin:0 0 10px;min-height:0;height:auto;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:10px;line-height:1.2}.members-about-addons .members-plugin-card .name h3 a{text-decoration:none;line-height:1.2}.members-about-addons .members-plugin-card .plugin-card-bottom{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}@media only screen and (max-width:1099px){.members-about-addons{grid-template-columns:1fr;grid-row-gap:20px}}@media screen and (min-width:1100px) and (max-width:1600px){.members-about-addons .members-plugin-card{float:none;width:auto;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.members-plugin-card.plugin-card .desc{margin-left:0;margin-top:50px}.members-plugin-card.plugin-card .desc p{margin-left:0;margin-right:0}.members-plugin-card.plugin-card .plugin-card-bottom .column-status{float:none}.members-plugin-card.plugin-card .plugin-card-bottom .column-updated{float:none;width:auto}}@media screen and (max-width:1200px){.welcome-panel .welcome-panel-column-container{-webkit-box-orient:vertical;-webkit-box-direction:reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse;gap:0;padding:0}.memberpress-about .mp-logo{margin:0 0 20px}}.members-plugin-card.plugin-card .desc p{margin-left:0;margin-right:0}@media only screen and (min-width:783px){.members_page_roles .column-users,.members_page_roles .column-granted_caps,.members_page_roles .column-denied_caps{width:100px;text-align:center}}.members-title-div #titlewrap input{padding:0 8px;font-size:1.7em;line-height:normal;height:1.7em;width:100%;outline:0;margin:0 0 3px;background-color:#fff}.members-title-div input[name="role"]{font-size:13px;height:22px;margin:0;width:16em}#tabcapsdiv{margin-top:1em}#tabcapsdiv>.hndle{padding:10px;border-bottom:1px solid #eee}#tabcapsdiv .inside,#members-cp .inside{margin:0;padding:0}.members-cap-tabs,.members-tabs{overflow:hidden;background:#fff;background:-webkit-gradient(linear,left top,right top,from(#fafafa),color-stop(20%,#fafafa),color-stop(20%,#fff),to(#fff));background:linear-gradient(90deg,#fafafa 0,#fafafa 20%,#fff 20%,#fff 100%)}@media only screen and (max-width:782px){.members-cap-tabs,.members-tabs{background:linear-gradient(90deg,#fafafa 0,#fafafa 48px,#fff 48px,#fff 100%)}}.members-cap-tabs .members-tab-nav,.members-tabs .members-tab-nav{position:relative;float:left;list-style:none;width:20%;line-height:1em;margin:0 0 -1px 0;padding:0;background-color:#fafafa;border-right:1px solid #eee;-webkit-box-sizing:border-box;box-sizing:border-box}.members-cap-tabs .members-tab-nav li,.members-tabs .members-tab-nav li{display:block;position:relative;margin:0;padding:0;line-height:20px}.members-cap-tabs .members-tab-nav li a,.members-tabs .members-tab-nav li a{display:block;margin:0;padding:10px;line-height:20px !important;text-decoration:none;border-bottom:1px solid #eee;-webkit-box-shadow:none;box-shadow:none}.members-cap-tabs .members-tab-nav li a .dashicons,.members-tabs .members-tab-nav li a .dashicons{line-height:20px;margin-right:3px}.members-cap-tabs .members-tab-nav li[aria-selected="true"] a,.members-tabs .members-tab-nav li[aria-selected="true"] a{position:relative;font-weight:bold;color:#555;background-color:#e0e0e0}@media only screen and (max-width:782px){.members-cap-tabs .members-tab-nav,.members-tabs .members-tab-nav{width:48px}.members-cap-tabs .members-tab-nav li a .dashicons,.members-tabs .members-tab-nav li a .dashicons{width:24px;height:24px;font-size:24px;line-height:24px}.members-tab-nav li .dashicons::before,.members-tab-nav li .dashicons::before{width:24px;height:24px}.members-tab-nav li .label{overflow:hidden;position:absolute;top:-1000em;left:-1000em;width:1px;height:1px}}.members-cap-tabs .members-tab-wrap,.members-tabs .members-tab-wrap{float:left;width:80%;margin-left:-1px}@media only screen and (max-width:782px){.members-cap-tabs .members-tab-wrap,.members-tabs .members-tab-wrap{width:calc(100% - 48px)}}#members-cp .members-tab-content{padding:10px;border-left:1px solid #e5e5e5}.members-roles-select th,.members-roles-select td{width:190px;overflow:hidden}.members-roles-select .check-all-th{text-align:center}.members-roles-select .check-all-th label{padding-left:5px}@media only screen and (min-width:850px){#side-sortables .members-tabs{background:#fff}#side-sortables .members-tabs .members-tab-wrap{width:100%}#side-sortables .members-tabs .members-tab-nav{display:table;width:100%}#side-sortables .members-tabs .members-tab-nav li{display:table-cell;text-align:center;border-right:1px solid #eee}#side-sortables .members-tabs .members-tab-nav li:last-of-type{border-right:0}#side-sortables .members-tabs .members-tab-nav li a{padding:10px 0}#side-sortables .members-tabs .members-tab-nav .dashicons{width:24px;height:24px;font-size:24px;line-height:24px}#side-sortables .members-tabs .members-tab-nav .dashicons::before{width:24px;height:24px}#side-sortables .members-tabs .members-tab-nav .label{overflow:hidden;position:absolute;top:-1000em;left:-1000em;width:1px;height:1px}}.members-tabs .members-tabs-label{display:block !important;font-weight:bold;display:inline-block;margin-bottom:4px}.members-tabs .butterbean-control-checkbox .members-tabs-label{display:inline !important}.members-tabs .members-tabs-description{display:block;font-style:italic;margin-top:4px}.members-tabs .members-tabs-label+.members-tabs-description{margin-top:0;margin-bottom:4px}#tabcapsdiv table{border-right:0;border-top:0;border-bottom:0}#tabcapsdiv table td,#tabcapsdiv table th{padding:10px;padding-bottom:10px;border-bottom:1px solid #eee;font-size:13px;line-height:20px}#tabcapsdiv table td{padding:9px}#tabcapsdiv tbody tr:last-of-type td{border-bottom:0}#tabcapsdiv tfoot th{border-color:#eee}@media only screen and (max-width:782px){#tabcapsdiv table td,#tabcapsdiv table th{line-height:24px}}.members-roles-select .column-grant,.members-roles-select .column-deny{width:70px !important;text-align:left;display:table-cell !important;clear:none !important}.members-roles-select thead th,.members-roles-select tfoot th{padding:9px !important}.members-roles-select .column-grant input,.members-roles-select .column-deny input{margin:0 5px 0 0;vertical-align:middle}.members-roles-select tbody tr:nth-child(even){background:#f2f2f2}.members-cap-tabs button{display:inline;margin:-4px;line-height:inherit;padding:4px 8px;border:1px solid transparent;background:transparent;border-radius:0;outline:0;-webkit-transition:all .25s ease-out;transition:all .25s ease-out}.members-cap-tabs button:hover,.members-cap-tabs button:focus{border-color:#eee;background:#fafafa;cursor:pointer}.members-cap-tabs button:active{color:#0073aa;border-color:#0073aa}.members-cap-tabs button+.dashicons{display:none;margin-top:1px;margin-bottom:-1px;line-height:inherit}.members-cap-tabs button:hover+.dashicons,.members-cap-tabs button:focus+.dashicons{display:inline-block}.members-tab-content .members-highlight{background-color:rgba(0,115,170,0.05)}.members-tab-content tbody{-webkit-transition:all 2s ease-in-out;transition:all 2s ease-in-out}.members-cp-role-list-wrap{overflow:auto;min-height:42px;max-height:200px;padding:0 .9em;border:solid 1px #dfdfdf;background-color:#fdfdfd}#wpbody-content{padding-bottom:200px}.members-footer-promotion{text-align:center;font-weight:400;font-size:13px;line-height:16px;color:#787c82;padding:20px 0 30px 0;margin-bottom:20px}.members-footer-promotion p{font-weight:600}.members-footer-promotion-links,.members-footer-promotion-social{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.members-footer-promotion-links{margin:9px 0 0}.members-footer-promotion-links span{color:#c3c4c7;padding:0 7px}.members-footer-promotion-social{margin:10px 0 0 0;gap:10px}.members-footer-promotion-social li{margin-bottom:0}.members-footer-promotion-social a{display:block;height:16px}.members_page_members-settings.rtl{.addon-activate{left:20px;right:unset}.members-addons .plugin-card{.name,.desc p{margin-left:0;margin-right:148px}}}.button.button-warning{background:#dc3232;border-color:#dc3232;color:#fff}.button.button-warning:hover,.button.button-warning:focus{background:#c92424;border-color:#c92424;color:#fff}.members-reset-spinner{float:none;margin-top:0;vertical-align:middle}.members-admin-menus-wrap{max-width:none;--members-am-accent-use:var(--members-am-accent,var(--wp-admin-theme-color,#2271b1));--members-am-surface-use:var(--members-am-surface,color-mix(in srgb,var(--members-am-base,#1d2327) 88%,#fff 12%));--members-am-border-on-base-fallback:color-mix(in srgb,var(--members-am-base,#1d2327) 62%,#fff 38%);--members-am-chrome-bg:var(--wp-components-color-gray-100,#f6f7f7);--members-am-chrome-border:var(--wp-components-color-gray-400,#c3c4c7);--members-am-muted:var(--wp-components-color-gray-600,#646970)}.members-am-notices{margin:0 0 12px}.members-am-notices .notice{margin:0 0 8px}.members-admin-menus-toolbar{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;gap:0;margin-bottom:16px;border:1px solid var(--members-am-chrome-border,#c3c4c7);border-radius:2px;background:var(--wp-components-color-background,#fff);overflow:visible}.members-am-toolbar-row{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px}.members-am-toolbar-row--primary{padding:10px 12px;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;row-gap:10px}.members-am-toolbar-group{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px}.members-am-toolbar-group--document{position:relative;z-index:5;padding-right:12px;border-right:1px solid var(--members-am-chrome-border,#c3c4c7)}.members-am-toolbar-row--primary .members-am-toolbar-primary-user{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px;-webkit-box-flex:0;-ms-flex:0 1 auto;flex:0 1 auto;min-width:0}.members-am-toolbar-row--primary .members-am-toolbar-primary-user #members-am-user-search.members-am-user-search-input{width:11rem;max-width:100%;min-width:0;-webkit-box-sizing:border-box;box-sizing:border-box}.members-am-toolbar-extra-row{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:10px 16px}.members-am-toolbar-extra .members-am-toolbar-extra-io{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;margin-left:auto;padding-left:12px;border-left:1px solid var(--members-am-chrome-border,#c3c4c7)}.members-am-toolbar-group--view{margin-left:auto;-ms-flex-wrap:nowrap;flex-wrap:nowrap}.members-am-toolbar-extra{background:var(--members-am-chrome-bg,#f6f7f7);border-top:1px solid var(--members-am-chrome-border,#c3c4c7);padding:10px 12px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:10px}.members-am-toolbar-extra[hidden]{display:none !important}.members-am-toolbar-extra-hint{margin:0 0 8px;max-width:52rem}.members-am-toolbar-admin-editable-inline{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px;-webkit-box-flex:0;-ms-flex:0 1 auto;flex:0 1 auto;white-space:normal;max-width:min(100%,22rem)}.members-am-toolbar-extra .members-am-toolbar-admin-editable-inline{max-width:min(100%,26rem)}.members-am-toolbar-row--extra-tools{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-wrap:wrap;flex-wrap:wrap;row-gap:10px}.members-am-toolbar-row--extra-tools .members-am-copy-wrap{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;margin-left:4px;padding-left:12px;border-left:1px solid var(--members-am-chrome-border,#c3c4c7)}.members-am-toolbar-extra-row .members-am-copy-wrap--extra-inline{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px 8px;-webkit-box-flex:0;-ms-flex:0 1 auto;flex:0 1 auto;min-width:0;margin-left:8px;padding-left:12px;border-left:1px solid var(--members-am-chrome-border,#c3c4c7)}.members-am-toolbar-extra-row .members-am-copy-wrap--extra-inline .members-am-copy-confirm-area{-ms-flex-preferred-size:100%;flex-basis:100%;width:100%}.members-am-toolbar-extra .members-am-copy-select{width:11rem;max-width:100%;min-width:0;-webkit-box-sizing:border-box;box-sizing:border-box}.members-am-toolbar-row--exempt{-ms-flex-preferred-size:100%;flex-basis:100%;width:100%;margin-top:0;padding-top:10px;border-top:1px solid var(--members-am-chrome-border,#c3c4c7)}.members-am-toolbar-extra .members-am-toolbar-row--exempt{margin-top:4px;padding-top:12px}.members-am-toolbar-extra .members-am-exempt-wrap{width:100%;max-width:100%;-webkit-box-sizing:border-box;box-sizing:border-box}.members-am-toolbar-extra .members-am-exempt-search{width:min(22rem,100%);max-width:100%;-webkit-box-sizing:border-box;box-sizing:border-box}.members-am-exempt-wrap .members-am-exempt-chips{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;margin:8px 0}.members-am-exempt-chip{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:4px;padding:2px 8px;border:1px solid var(--members-am-chrome-border,#c3c4c7);border-radius:4px;background:var(--wp-components-color-background,#fff);font-size:13px}.members-am-exempt-chip .members-am-exempt-remove{padding:0 2px;min-height:0;line-height:1.3}.members-am-more-tools,.members-am-more-tools:hover,.members-am-more-tools:focus,.members-am-more-tools:focus-visible,.members-am-more-tools:active{text-decoration:none !important}.members-am-more-tools{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:4px;white-space:nowrap;padding:2px 2px 2px 4px;vertical-align:middle;line-height:1.4}.members-am-more-tools .members-am-more-tools-text,.members-am-more-tools:hover .members-am-more-tools-text,.members-am-more-tools:focus .members-am-more-tools-text,.members-am-more-tools:focus-visible .members-am-more-tools-text,.members-am-more-tools:active .members-am-more-tools-text,.members-am-more-tools .members-am-more-tools-chevron,.members-am-more-tools:hover .members-am-more-tools-chevron,.members-am-more-tools:focus .members-am-more-tools-chevron,.members-am-more-tools:focus-visible .members-am-more-tools-chevron,.members-am-more-tools:active .members-am-more-tools-chevron,.members-am-more-tools .members-am-more-tools-chevron-svg,.members-am-more-tools:hover .members-am-more-tools-chevron-svg,.members-am-more-tools:focus .members-am-more-tools-chevron-svg,.members-am-more-tools:focus-visible .members-am-more-tools-chevron-svg,.members-am-more-tools:active .members-am-more-tools-chevron-svg{text-decoration:none !important}.members-am-more-tools .members-am-more-tools-text{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;line-height:1.4}.members-am-more-tools .members-am-more-tools-chevron{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-ms-flex-negative:0;flex-shrink:0;line-height:0;opacity:.88}.members-am-more-tools .members-am-more-tools-chevron-svg{display:block;overflow:visible;-webkit-transition:-webkit-transform .15s ease;transition:-webkit-transform .15s ease;transition:transform .15s ease;transition:transform .15s ease,-webkit-transform .15s ease;-webkit-transform-origin:50% 50%;transform-origin:50% 50%;shape-rendering:geometricPrecision}.members-am-more-tools .members-am-more-tools-chevron-svg polygon{stroke:none}.members-am-more-tools.is-open .members-am-more-tools-chevron-svg{-webkit-transform:rotate(180deg);transform:rotate(180deg)}@media(prefers-reduced-motion:reduce){.members-am-more-tools .members-am-more-tools-chevron-svg{-webkit-transition:none;transition:none}}@media screen and (max-width:782px){.members-am-toolbar-group--document{border-right:0;padding-right:0;border-bottom:1px solid var(--members-am-chrome-border,#c3c4c7);padding-bottom:10px;width:100%}.members-am-toolbar-group--view{margin-left:0;width:100%;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.members-am-toolbar-row--primary .members-am-toolbar-primary-user{-webkit-box-flex:1;-ms-flex:1 1 100%;flex:1 1 100%;width:100%;padding-top:8px;border-top:1px solid var(--members-am-chrome-border,#c3c4c7)}.members-am-toolbar-row--primary .members-am-toolbar-primary-user #members-am-user-search.members-am-user-search-input{width:100%;max-width:100%}.members-am-toolbar-extra .members-am-copy-select{width:100%;max-width:100%}.members-am-toolbar-extra .members-am-toolbar-admin-editable-inline{width:100%;max-width:none}.members-am-toolbar-extra .members-am-toolbar-extra-io{margin-left:0;padding-left:0;border-left:0;padding-top:8px;border-top:1px solid var(--members-am-chrome-border,#dcdcde);width:100%}.members-am-toolbar-extra-row .members-am-copy-wrap--extra-inline{-webkit-box-flex:1;-ms-flex:1 1 100%;flex:1 1 100%;width:100%;margin-left:0;padding-left:0;border-left:0;padding-top:8px;border-top:1px solid var(--members-am-chrome-border,#dcdcde)}}.members-am-toolbar-loading{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;margin-left:4px;color:var(--members-am-muted,#646970);font-size:13px;line-height:1}.members-am-toolbar-loading .spinner{float:none;margin:0}.members-am-toolbar-loading[hidden]{display:none !important}.members-am-copy-wrap label{margin-right:8px}.members-am-copy-confirm-area{margin-top:8px;width:100%;-ms-flex-preferred-size:100%;flex-basis:100%}.members-am-inline-copy-notice{margin:0}.members-am-info-bar{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;gap:8px;margin:0 0 12px;padding:10px 12px;background:#fcf9e8;border:1px solid #dba617;border-radius:2px;font-size:12px;color:var(--wp-components-color-foreground,#1d2327);-webkit-box-sizing:border-box;box-sizing:border-box}.members-am-info-bar-legends{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-ms-flex-wrap:nowrap;flex-wrap:nowrap;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;gap:12px 20px;min-width:0}.members-am-info-bar-legends .members-am-info-item{-webkit-box-flex:0;-ms-flex:0 1 auto;flex:0 1 auto;min-width:0;max-width:none;overflow-wrap:break-word}.members-am-info-item--note{width:100%;-webkit-box-sizing:border-box;box-sizing:border-box;font-style:italic;color:var(--wp-components-color-gray-700,#50575e)}.members-am-info-icon{margin-right:4px;vertical-align:text-bottom}.members-am-legend-hidden-mark{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;margin-right:6px;padding:2px 5px;border-radius:2px;vertical-align:text-bottom;background:#d63638;color:#fff}.members-am-legend-hidden-mark .dashicons{font-size:14px;width:14px;height:14px;line-height:1}.members-am-chips-wrap{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:10px;margin-bottom:12px}.members-am-chips-actions{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:6px;-ms-flex-negative:0;flex-shrink:0}.members-am-chips,.members-am-chips-inner{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:8px;-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;min-width:0}.members-am-columns-empty{margin:0;padding:24px 12px;text-align:center;font-size:13px;color:var(--members-am-muted,#646970);-webkit-box-flex:1;-ms-flex:1 1 100%;flex:1 1 100%;-ms-flex-item-align:center;align-self:center}.members-am-phase1-placeholder{margin:0 0 12px;padding:12px;background:var(--members-am-chrome-bg,#f6f7f7);border:1px dashed var(--members-am-chrome-border,#c3c4c7);border-radius:2px}.members-am-phase1-placeholder-text{margin:0;font-size:13px}.members-am-edit-popover-root:not([hidden]){position:fixed;inset:0;z-index:100001;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;padding:min(24px,4vw);-webkit-box-sizing:border-box;box-sizing:border-box}.members-am-edit-popover-root[hidden]{display:none !important}.members-am-edit-popover-overlay{position:absolute;inset:0;z-index:0;background:rgba(20,24,28,0.42)}.members-am-edit-popover-dialog{position:relative;z-index:1;-webkit-box-flex:0;-ms-flex:0 1 auto;flex:0 1 auto;width:min(680px,calc(100vw - 32px));max-width:100%;max-height:min(92vh,calc(100vh - 32px));overflow:hidden;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;min-height:0;background:var(--wp-components-color-background,#fff);border:1px solid var(--members-am-chrome-border,#c3c4c7);border-radius:8px;-webkit-box-shadow:0 4px 6px rgba(0,0,0,0.06),0 16px 48px rgba(0,0,0,0.18),0 0 0 1px rgba(0,0,0,0.04);box-shadow:0 4px 6px rgba(0,0,0,0.06),0 16px 48px rgba(0,0,0,0.18),0 0 0 1px rgba(0,0,0,0.04)}.members-am-edit-popover-arrow{display:none}.members-am-edit-popover-header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;gap:12px;padding:12px 16px;background:var(--members-am-base,#1d2327);color:var(--members-am-fg-on-base,#f0f0f1);-ms-flex-negative:0;flex-shrink:0}.members-am-edit-popover-heading{min-width:0;-webkit-box-flex:1;-ms-flex:1;flex:1}.members-am-edit-popover-title{margin:0;font-size:16px;font-weight:600;line-height:1.3;color:inherit}.members-am-edit-popover-subtitle{margin:3px 0 0;font-size:11px;font-weight:400;opacity:.65;color:inherit}.members-am-edit-popover-close{color:color-mix(in srgb,currentColor 62%,transparent) !important;font-size:18px;line-height:1;padding:0 4px !important;text-decoration:none !important}.members-am-edit-popover-close:hover,.members-am-edit-popover-close:focus{color:inherit !important}.members-am-edit-popover-placeholder{margin:0 12px 12px}.members-am-edit-popover-chrome.members-am-edit-toolbar{display:block;margin:0}.members-am-edit-popover-scope{padding:10px 16px;border-bottom:1px solid var(--members-am-chrome-border,#dcdcde);background:var(--members-am-chrome-bg,#f6f7f7);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:10px;-ms-flex-wrap:wrap;flex-wrap:wrap;font-size:12px;color:var(--members-am-muted,#646970);-ms-flex-negative:0;flex-shrink:0}.members-am-edit-popover-body{padding:16px 18px;overflow-y:auto;-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;min-height:0;-ms-scroll-chaining:none;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}.members-am-edit-popover-footer{padding:12px 16px;border-top:1px solid var(--members-am-chrome-border,#dcdcde);background:var(--members-am-chrome-bg,#f6f7f7);display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:8px;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;-ms-flex-negative:0;flex-shrink:0}.members-am-edit-target-wrap{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px;white-space:nowrap}.members-am-edit-target-label{font-weight:600}.members-am-edit-target-select{-webkit-box-flex:1;-ms-flex:1 1 200px;flex:1 1 200px;min-width:min(200px,100%);max-width:100%;font-size:13px;padding:4px 8px;min-height:30px}.members-am-edit-section-label{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--members-am-muted,#646970);margin:0 0 6px;padding-bottom:4px;border-bottom:1px solid var(--members-am-chrome-border,#dcdcde)}.members-am-edit-popover-actions{padding:10px 16px;border-bottom:1px solid var(--members-am-chrome-border,#dcdcde);background:var(--members-am-chrome-bg,#f6f7f7);display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;-ms-flex-negative:0;flex-shrink:0}.members-am-btn-danger{color:#b32d2e !important;border-color:#d63638 !important;-webkit-box-shadow:none !important;box-shadow:none !important}#members-am-remove-custom[hidden]{display:none !important}.members-am-btn-danger:hover{color:#fff !important;background:#d63638 !important;border-color:#d63638 !important}.members-am-demote-parent-label{font-size:13px;margin-right:4px}.members-am-edit-row-title-url{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin-bottom:12px}.members-am-edit-field label{display:block;font-weight:600;margin-bottom:4px}.members-am-edit-section{margin:0;padding:0;border:0}.members-am-edit-section-title{margin:0 0 10px;font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--members-am-muted,#646970)}.members-am-edit-badge-row{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin-bottom:12px}.members-am-badge-preview-row{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:10px}.members-am-badge-preview-label{font-size:12px;color:var(--members-am-muted,#646970)}.members-am-badge-preview{display:inline-block;min-width:48px;padding:3px 10px;border-radius:3px;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.02em}.members-am-edit-colors-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px 32px}.members-am-edit-color-field{margin:0}.members-am-edit-color-field label{display:block;margin:0 0 6px}.members-am-edit-color-field .wp-picker-container{display:inline-block;max-width:100%}.members-am-edit-cap-field{margin-top:12px}.members-am-edit-cap-field label{display:block;font-weight:600;margin-bottom:4px}@media screen and (max-width:600px){.members-am-edit-row-title-url,.members-am-edit-badge-row,.members-am-edit-colors-grid{grid-template-columns:1fr}}.members-am-modal[hidden]{display:none !important}.members-am-modal:not([hidden]){position:fixed;inset:0;z-index:100000;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;padding:24px 12px;-webkit-box-sizing:border-box;box-sizing:border-box}.members-am-modal-backdrop{position:absolute;inset:0;background:rgba(0,0,0,0.45)}.members-am-modal-dialog{position:relative;z-index:1;width:100%;max-width:480px;max-height:90vh;overflow:auto;background:var(--wp-components-color-background,#fff);border-radius:4px;-webkit-box-shadow:0 4px 24px rgba(0,0,0,0.2);box-shadow:0 4px 24px rgba(0,0,0,0.2)}.members-am-modal-header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:12px 16px;border-bottom:1px solid var(--members-am-chrome-border,#c3c4c7)}.members-am-modal-header h2{margin:0;font-size:16px}.members-am-modal-body{padding:12px 16px}.members-am-modal-footer{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;gap:8px;padding:12px 16px;border-top:1px solid var(--members-am-chrome-border,#c3c4c7)}.members-am-chip{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;border-radius:999px;padding:4px 12px 4px 8px;border:1px solid var(--members-am-chrome-border,#c3c4c7);background:var(--wp-components-color-background,#fff);cursor:pointer}.members-am-chip-mark{width:14px;height:14px;border-radius:3px;border:2px solid var(--members-am-role-accent,#8c8f94);background:var(--wp-components-color-background,#fff);-ms-flex-negative:0;flex-shrink:0;-webkit-box-sizing:border-box;box-sizing:border-box}.members-am-chip.is-active{background:color-mix(in srgb,var(--members-am-role-accent,var(--members-am-accent-use)) 12%,var(--wp-components-color-background,#fff));border-color:var(--members-am-role-accent,var(--members-am-accent-use));color:var(--members-am-base,#1d2327)}.members-am-chip.is-active .members-am-chip-mark{background:var(--members-am-role-accent,var(--members-am-accent-use));border-color:var(--members-am-role-accent,var(--members-am-accent-use));-webkit-box-shadow:inset 0 0 0 2px var(--wp-components-color-background,#fff);box-shadow:inset 0 0 0 2px var(--wp-components-color-background,#fff)}.members-am-chip-label{font-size:13px;line-height:1.2}.members-am-cols-host{margin-bottom:12px}.members-am-cols-wrap{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:safe center;-ms-flex-pack:safe center;justify-content:safe center;overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch;padding-bottom:6px;scroll-behavior:smooth}.members-am-cols-inner{display:block;-webkit-box-flex:0;-ms-flex:0 1 auto;flex:0 1 auto;min-width:0;max-width:100%}.members-am-columns{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-ms-flex-wrap:nowrap;flex-wrap:nowrap;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;gap:14px;width:-webkit-max-content;width:-moz-max-content;width:max-content;min-height:320px;margin:0 auto}.members-am-column{-webkit-box-flex:0;-ms-flex:0 0 350px;flex:0 0 350px;width:350px;min-width:350px;max-width:350px;-ms-flex-negative:0;flex-shrink:0;background:var(--members-am-base,#1d2327);border:1px solid var(--members-am-border-on-base,var(--members-am-border-on-base-fallback));border-radius:4px;color:var(--members-am-fg-on-base,#f0f0f1);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-sizing:border-box;box-sizing:border-box}.members-am-role-chip-wrap{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;vertical-align:middle}.members-am-role-chip-cb{margin:0;-ms-flex-negative:0;flex-shrink:0;-ms-flex-item-align:center;align-self:center;accent-color:var(--members-am-role-accent,var(--members-am-accent-use))}.members-am-chip-pill{padding:4px 10px 4px 8px;border-radius:999px;border:1px solid transparent;gap:6px}.members-am-chip-pill.is-active{background:var(--members-am-role-accent,var(--members-am-accent-use));border-color:var(--members-am-role-accent,var(--members-am-accent-use));color:#fff}.members-am-chip-pill.is-active .members-am-role-chip-cb{accent-color:#fff}.members-am-chip-pill.members-am-chip--inactive{opacity:.45;background:var(--wp-components-color-background,#fff);border-color:var(--members-am-chrome-border,#c3c4c7);color:var(--members-am-base,#1d2327)}.members-am-chip-pill.members-am-chip--inactive .members-am-chip-pill-action{text-decoration:line-through}.members-am-chip-pill-action{border:0;background:transparent;padding:0;margin:0;font:inherit;font-size:13px;line-height:1.2;color:inherit;cursor:pointer;text-align:left;min-width:0;-webkit-box-shadow:none;box-shadow:none}.members-am-chip-pill-action:hover,.members-am-chip-pill-action:focus{color:inherit}.members-am-chip-pill-action:focus-visible{outline:2px solid currentColor;outline-offset:2px}.members-am-user-column{border:2px dashed var(--wp-components-color-gray-700,#8c8f94)}.members-am-sidebar-head{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;padding:9px 10px;background:-webkit-gradient(linear,left top,left bottom,from(var(--members-am-surface-use)),to(var(--members-am-base,#1d2327)));background:linear-gradient(180deg,var(--members-am-surface-use) 0,var(--members-am-base,#1d2327) 100%);border-radius:4px 4px 0 0;border-bottom:1px solid var(--members-am-border-on-base,var(--members-am-border-on-base-fallback));font-weight:600;font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:var(--members-am-fg-on-base,#f0f0f1)}.members-am-sidebar-head-titles{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;min-width:0;-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto}.members-am-sidebar-role-dot{width:8px;height:8px;border-radius:50%;-ms-flex-negative:0;flex-shrink:0;background:var(--members-am-accent-use)}.members-am-sidebar-role-dot--user{background:#a7aaad}.members-am-sidebar-head .members-am-sidebar-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.members-am-col-filter{padding:6px 8px 8px;border-bottom:1px solid var(--members-am-border-on-base,var(--members-am-border-on-base-fallback));-ms-flex-negative:0;flex-shrink:0}.members-am-col-filter-input{width:100%;max-width:100%;-webkit-box-sizing:border-box;box-sizing:border-box;font-size:12px;line-height:1.4;padding:4px 8px;border-radius:2px;border:1px solid var(--members-am-border-on-base,var(--members-am-border-on-base-fallback));background:var(--members-am-base,#1d2327);color:var(--members-am-fg-on-base,#f0f0f1)}.members-am-col-filter-input::-webkit-input-placeholder{color:var(--members-am-fg-muted-on-base,var(--wp-components-color-gray-700,#8c8f94));opacity:1}.members-am-col-filter-input::-moz-placeholder{color:var(--members-am-fg-muted-on-base,var(--wp-components-color-gray-700,#8c8f94));opacity:1}.members-am-col-filter-input:-ms-input-placeholder{color:var(--members-am-fg-muted-on-base,var(--wp-components-color-gray-700,#8c8f94));opacity:1}.members-am-col-filter-input::-ms-input-placeholder{color:var(--members-am-fg-muted-on-base,var(--wp-components-color-gray-700,#8c8f94));opacity:1}.members-am-col-filter-input::placeholder{color:var(--members-am-fg-muted-on-base,var(--wp-components-color-gray-700,#8c8f94));opacity:1}.members-am-col-filter-input:focus{border-color:var(--members-am-accent-use);outline:1px solid transparent;-webkit-box-shadow:0 0 0 var(--wp-admin-border-width-focus,1px) var(--members-am-accent-use);box-shadow:0 0 0 var(--wp-admin-border-width-focus,1px) var(--members-am-accent-use)}.members-am-col-bulk{padding:8px 8px 10px;border-bottom:1px solid var(--members-am-border-on-base,var(--members-am-border-on-base-fallback));-ms-flex-negative:0;flex-shrink:0;background:rgba(0,0,0,0.12)}.members-am-col-bulk-toolbar{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:6px;margin-bottom:0;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch}.members-am-col-bulk-toolbar--grid{display:grid;grid-template-columns:1fr 1fr;gap:5px;margin-bottom:8px}.members-am-col-bulk-toolbar--grid .button.button-small{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:100%;text-align:center;white-space:normal;line-height:1.25;padding:5px 6px;min-height:0}.members-am-col-bulk-toolbar .button.button-small{font-size:11px;min-height:26px;line-height:24px;padding:0 8px;background:var(--members-am-surface-use);border-color:var(--members-am-border-on-surface,var(--members-am-border-on-base,var(--members-am-border-on-base-fallback)));color:var(--members-am-fg-on-surface,var(--members-am-fg-on-base,#f0f0f1))}.members-am-col-bulk-toolbar .button.button-small:hover{background:color-mix(in srgb,var(--members-am-surface-use) 85%,#fff 15%);border-color:var(--wp-components-color-gray-700,#8c8f94);color:var(--members-am-fg-on-surface,var(--members-am-fg-on-base,#f0f0f1))}.members-am-item-lead{-ms-flex-negative:0;flex-shrink:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:22px;padding:2px 0 0}.members-am-collapse-spacer{display:block;width:20px;height:20px;-ms-flex-negative:0;flex-shrink:0}.members-am-collapse-toggle{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:22px;height:22px;margin:0;padding:0;border:0;background:transparent;color:var(--members-am-fg-muted-on-base,var(--members-am-chrome-border,#c3c4c7));border-radius:2px;cursor:pointer;-ms-flex-negative:0;flex-shrink:0}.members-am-collapse-toggle:hover,.members-am-collapse-toggle:focus{color:var(--members-am-fg-on-base,#f0f0f1);background:color-mix(in srgb,var(--members-am-fg-on-base,#f0f0f1) 12%,transparent);outline:0}.members-am-collapse-toggle .dashicons{font-size:18px;width:18px;height:18px}.members-am-item-cb-wrap{-ms-flex-negative:0;flex-shrink:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;padding:2px 4px 0 0}.members-am-item-cb{margin:0;width:16px;height:16px;-ms-flex-negative:0;flex-shrink:0}.members-am-bulk-select{width:100%;max-width:100%;-webkit-box-sizing:border-box;box-sizing:border-box;font-size:12px;line-height:1.4;padding:4px 8px;border-radius:2px;border:1px solid var(--members-am-border-on-base,var(--members-am-border-on-base-fallback));background:var(--members-am-base,#1d2327);color:var(--members-am-fg-on-base,#f0f0f1)}.members-am-bulk-select:focus{border-color:var(--members-am-accent-use);outline:1px solid transparent;-webkit-box-shadow:0 0 0 var(--wp-admin-border-width-focus,1px) var(--members-am-accent-use);box-shadow:0 0 0 var(--wp-admin-border-width-focus,1px) var(--members-am-accent-use)}.members-am-bulk-select optgroup{font-weight:600;color:#a7aaad;background:var(--members-am-base,#1d2327)}.members-am-bulk-select option{color:var(--members-am-fg-on-base,#f0f0f1);background:var(--members-am-base,#1d2327)}.members-am-item.members-am-filter-hidden,.members-am-sep.members-am-filter-hidden,.members-am-item.members-am-collapse-hidden{display:none !important}.members-am-col-move{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:3px;-ms-flex-negative:0;flex-shrink:0}.members-am-sidebar-head .members-am-col-move-btn{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:28px;height:28px;min-height:28px;padding:0 !important;margin:0;line-height:1;background:color-mix(in srgb,currentColor 8%,transparent);border:1px solid color-mix(in srgb,currentColor 24%,transparent);color:inherit;border-radius:3px}.members-am-sidebar-head .members-am-col-move-btn .dashicons{width:18px;height:18px;font-size:18px;line-height:1;opacity:.92}.members-am-sidebar-head .members-am-col-move-btn:hover,.members-am-sidebar-head .members-am-col-move-btn:focus{background:color-mix(in srgb,currentColor 16%,transparent);border-color:color-mix(in srgb,currentColor 42%,transparent);color:inherit}.members-am-sidebar-head .members-am-user-col-close{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:28px;height:28px;min-height:28px;padding:0 !important;margin:0;background:color-mix(in srgb,currentColor 8%,transparent);border:1px solid color-mix(in srgb,currentColor 24%,transparent);color:inherit;border-radius:3px}.members-am-sidebar-head .members-am-user-col-close .dashicons{width:18px;height:18px;font-size:18px;line-height:1}.members-am-sidebar-head .members-am-user-col-close:hover,.members-am-sidebar-head .members-am-user-col-close:focus{background:rgba(214,54,56,0.35);border-color:rgba(214,54,56,0.65);color:#fff}.members-am-sidebar-list{padding:6px 0 12px;overflow-y:auto;max-height:560px}.members-am-item{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;gap:4px;padding:6px 10px 6px 6px;cursor:pointer;border-left:3px solid transparent;font-size:13px}.members-am-item.is-sub{padding-left:22px;font-size:12px;opacity:.95}.members-am-item.is-sub-deep{padding-left:36px}.members-am-sidebar-list .members-am-item{cursor:-webkit-grab;cursor:grab}.members-am-sidebar-list .members-am-item:active{cursor:-webkit-grabbing;cursor:grabbing}.members-am-sort-placeholder{-webkit-box-sizing:border-box;box-sizing:border-box;width:100%;min-height:36px;margin:2px 0;background:color-mix(in srgb,var(--members-am-accent-use) 8%,transparent);border:1px dashed var(--members-am-accent-use);border-radius:2px}.members-am-sidebar-list>.ui-sortable-helper{-webkit-box-sizing:border-box;box-sizing:border-box;width:100% !important;max-width:100%}.members-am-item.is-hidden{opacity:.72}.members-am-item.is-no-cap{opacity:.55}.members-am-item.is-no-cap.is-hidden{opacity:.5}.members-am-item.is-selected{border-left-color:var(--members-am-accent-use);background:color-mix(in srgb,var(--members-am-accent-use) 15%,transparent)}.members-am-item-main{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;min-width:0}.members-am-item-main .dashicons{font-size:18px;width:18px;height:18px}.members-am-item-label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.members-am-item-actions{display:none;gap:2px}.members-am-item:hover .members-am-item-actions{display:-webkit-box;display:-ms-flexbox;display:flex}.members-am-item-actions button{min-height:22px;padding:0 4px;line-height:20px;font-size:11px}.members-am-item-actions button.members-am-eye,.members-am-item-actions button.members-am-user-eye{padding:0 2px}.members-am-item-actions button.members-am-eye .dashicons,.members-am-item-actions button.members-am-user-eye .dashicons{font-size:16px;width:16px;height:16px;line-height:1.2}.members-am-sep{text-align:center;opacity:.35;font-size:11px;padding:4px 0}.members-am-badge{font-size:9px;text-transform:uppercase;padding:1px 4px;border-radius:2px;margin-right:4px;vertical-align:middle}.members-am-badge-new{background:var(--members-am-accent-use);color:var(--wp-components-color-accent-inverted,#fff)}.members-am-badge-edit{background:#dba617;color:var(--members-am-base,#1d2327)}.members-am-badge-nocap{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;background:#dba617;color:var(--members-am-base,#1d2327);padding:2px 5px;border-radius:2px}.members-am-badge-nocap-icon{font-size:14px;width:14px;height:14px;line-height:1}.members-am-badge-hidden{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;background:#d63638;color:#fff;padding:2px 5px;border-radius:2px}.members-am-badge-hidden-icon{font-size:14px;width:14px;height:14px;line-height:1}.members-am-badge-hidden .members-am-badge-hidden-icon,.members-am-badge-nocap .members-am-badge-nocap-icon{color:inherit !important}.members-am-legend{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:16px;margin:0 0 8px;padding:0;font-size:12px;color:var(--members-am-muted,#646970)}.members-am-legend-item{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:4px}.members-am-edit-toolbar{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:12px;margin-bottom:12px}.members-am-level-actions .button{margin-right:6px}.members-am-demote-wrap{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:6px}.members-am-demote-wrap .members-am-demote-select{min-width:200px;max-width:min(420px,100%);font-size:13px}.members-am-edit-grid{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:24px}.members-am-edit-col label{display:block;font-weight:600;margin-bottom:4px}.members-am-colors-hint{margin:0 0 10px}.members-am-icon-tabs{margin-bottom:8px}.members-am-icon-tabs .button{margin-right:4px;margin-bottom:4px}.members-am-icon-tabs .button.is-active{background:var(--members-am-accent-use);border-color:var(--members-am-accent-use);color:var(--wp-components-color-accent-inverted,#fff)}.members-am-icon-grid{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:5px;max-height:min(240px,38vh);overflow-y:auto;border:1px solid var(--wp-components-color-gray-200,#dcdcde);border-radius:4px;padding:10px;background:var(--members-am-chrome-bg,#f6f7f7);margin-bottom:10px}.members-am-icon-pick{width:36px;height:36px;padding:0;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;border:1px solid var(--members-am-chrome-border,#c3c4c7);background:var(--wp-components-color-background,#fff);cursor:pointer}.members-am-bulk-visibility-hint{margin:0 0 8px;font-size:12px;color:var(--members-am-fg-muted-on-base,#646970)}.members-am-vis-role-filter-wrap{margin-bottom:8px}.members-am-vis-row.members-am-vis-filter-hidden{display:none}.members-am-vis-row{display:block;margin-bottom:6px;font-weight:normal}.members-am-reset-dropdown{position:absolute;z-index:100000;background:var(--wp-components-color-background,#fff);border:1px solid var(--members-am-chrome-border,#c3c4c7);border-radius:6px;padding:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-shadow:0 4px 12px rgba(0,0,0,0.15);box-shadow:0 4px 12px rgba(0,0,0,0.15);min-width:280px;top:100%;left:0;margin-top:4px;overflow:hidden}.members-am-reset-title{padding:10px 14px;font-weight:600;font-size:13px;border-bottom:1px solid var(--wp-components-color-gray-200,#f0f0f0);color:var(--wp-components-color-foreground,#1d2327)}.members-am-reset-dropdown>.members-am-reset-option:last-of-type{border-bottom:0}.members-am-reset-option{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;gap:10px;padding:12px 14px;border:0;background:0;cursor:pointer;text-align:left;width:100%;border-bottom:1px solid var(--wp-components-color-gray-200,#f0f0f0);-webkit-transition:background .15s;transition:background .15s}.members-am-reset-option:hover{background:var(--members-am-chrome-bg,#f6f7f7)}.members-am-reset-option .dashicons{margin-top:2px;color:var(--members-am-muted,#646970)}.members-am-reset-option-text{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:2px}.members-am-reset-option-text strong{font-size:13px;color:var(--wp-components-color-foreground,#1d2327)}.members-am-reset-option-text small{font-size:12px;color:var(--members-am-muted,#646970)}.members-am-reset-danger:hover{background:#fcf0f1}.members-am-reset-danger .dashicons{color:#d63638}.members-am-reset-danger:hover strong{color:#d63638}@media screen and (max-width:782px){.members-am-columns{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}}.members-am-user-suggestions,.members-am-exempt-suggestions{position:absolute;z-index:100;background:var(--wp-components-color-background,#fff);border:1px solid var(--members-am-chrome-border,#c3c4c7);border-radius:4px;max-height:200px;overflow-y:auto;width:100%;-webkit-box-shadow:0 2px 6px rgba(0,0,0,0.15);box-shadow:0 2px 6px rgba(0,0,0,0.15);top:100%;left:0}.members-am-user-suggestion,.members-am-exempt-suggestion{padding:8px 12px;cursor:pointer;font-size:13px;border-bottom:1px solid var(--wp-components-color-gray-200,#f0f0f0)}.members-am-user-suggestion:hover,.members-am-exempt-suggestion:hover{background:color-mix(in srgb,var(--members-am-accent-use) 8%,var(--wp-components-color-background,#fff))}.members-am-user-suggestion:last-child,.members-am-exempt-suggestion:last-child{border-bottom:0}#members-am-import-file.members-am-import-file-hidden{display:none}.members-am-user-search-wrap{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px}#members-am-user-search.members-am-user-search-input{width:168px;max-width:100%}.members-am-legend-visibility-icon{font-size:14px;width:14px;height:14px;vertical-align:middle}.members-am-legend-nocap-badge{display:inline-block;background:#8c8f94;color:#fff;font-size:9px;padding:1px 4px;border-radius:2px;vertical-align:middle}#members-am-icon-preview.members-am-icon-preview{display:none;width:32px;height:32px;-o-object-fit:contain;object-fit:contain;margin-bottom:6px;border:1px solid #ddd;border-radius:3px;padding:2px;background:#f0f0f1}.members-am-icons .members-am-icon-upload-desc{margin-top:4px}#adminmenu .members-am-menu-badge{display:inline-block;color:#fff;font-size:9px;padding:1px 5px;border-radius:2px;line-height:1.4;vertical-align:middle}
\ No newline at end of file
+#members-cp h2.hndle,#members-cp-side h2.hndle{border-bottom:none !important;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}#members-cp h2.hndle:before,#members-cp-side h2.hndle:before{content:url("data:image/svg+xml,%3Csvg width='15px' aria-hidden='true' focusable='false' data-prefix='fas' data-icon='users-cog' class='svg-inline--fa fa-users-cog fa-w-20' role='img' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 640 512'%3E%3Cpath fill='currentColor' d='M610.5 341.3c2.6-14.1 2.6-28.5 0-42.6l25.8-14.9c3-1.7 4.3-5.2 3.3-8.5-6.7-21.6-18.2-41.2-33.2-57.4-2.3-2.5-6-3.1-9-1.4l-25.8 14.9c-10.9-9.3-23.4-16.5-36.9-21.3v-29.8c0-3.4-2.4-6.4-5.7-7.1-22.3-5-45-4.8-66.2 0-3.3.7-5.7 3.7-5.7 7.1v29.8c-13.5 4.8-26 12-36.9 21.3l-25.8-14.9c-2.9-1.7-6.7-1.1-9 1.4-15 16.2-26.5 35.8-33.2 57.4-1 3.3.4 6.8 3.3 8.5l25.8 14.9c-2.6 14.1-2.6 28.5 0 42.6l-25.8 14.9c-3 1.7-4.3 5.2-3.3 8.5 6.7 21.6 18.2 41.1 33.2 57.4 2.3 2.5 6 3.1 9 1.4l25.8-14.9c10.9 9.3 23.4 16.5 36.9 21.3v29.8c0 3.4 2.4 6.4 5.7 7.1 22.3 5 45 4.8 66.2 0 3.3-.7 5.7-3.7 5.7-7.1v-29.8c13.5-4.8 26-12 36.9-21.3l25.8 14.9c2.9 1.7 6.7 1.1 9-1.4 15-16.2 26.5-35.8 33.2-57.4 1-3.3-.4-6.8-3.3-8.5l-25.8-14.9zM496 368.5c-26.8 0-48.5-21.8-48.5-48.5s21.8-48.5 48.5-48.5 48.5 21.8 48.5 48.5-21.7 48.5-48.5 48.5zM96 224c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm224 32c1.9 0 3.7-.5 5.6-.6 8.3-21.7 20.5-42.1 36.3-59.2 7.4-8 17.9-12.6 28.9-12.6 6.9 0 13.7 1.8 19.6 5.3l7.9 4.6c.8-.5 1.6-.9 2.4-1.4 7-14.6 11.2-30.8 11.2-48 0-61.9-50.1-112-112-112S208 82.1 208 144c0 61.9 50.1 112 112 112zm105.2 194.5c-2.3-1.2-4.6-2.6-6.8-3.9-8.2 4.8-15.3 9.8-27.5 9.8-10.9 0-21.4-4.6-28.9-12.6-18.3-19.8-32.3-43.9-40.2-69.6-10.7-34.5 24.9-49.7 25.8-50.3-.1-2.6-.1-5.2 0-7.8l-7.9-4.6c-3.8-2.2-7-5-9.8-8.1-3.3.2-6.5.6-9.8.6-24.6 0-47.6-6-68.5-16h-8.3C179.6 288 128 339.6 128 403.2V432c0 26.5 21.5 48 48 48h255.4c-3.7-6-6.2-12.8-6.2-20.3v-9.2zM173.1 274.6C161.5 263.1 145.6 256 128 256H64c-35.3 0-64 28.7-64 64v32c0 17.7 14.3 32 32 32h65.9c6.3-47.4 34.9-87.3 75.2-109.4z'%3E%3C/path%3E%3C/svg%3E");margin-right:5px}#members-cp-side .postbox-header{border-bottom:none !important}#members-cp-side .handle-actions .handle-order-higher,#members-cp-side .handle-actions .handle-order-lower{display:none}#members-cp-side .handle-actions .handlediv{position:absolute;right:5px}.members-upgrade-header{text-align:center;padding:5px}.members-upgrade-header a{color:#f59431}.memberpress-paid-memberships{background-color:#f5f5f5;padding:50px 10px;text-align:center}.memberpress-paid-memberships a{background-color:#0e4598;display:inline-block;padding:10px 20px;border-radius:300px;color:#fff;text-decoration:none;margin-top:20px}#members-cp-side .members-tabs{position:relative}#members-cp-side .members-tab-nav{background-color:transparent;margin-bottom:20px;border-right:none !important}#members-cp-side .members-tab-nav .members-tab-title{width:33.333%;height:50px;border-right:none !important}#members-cp-side .members-tab-nav .members-tab-title a{border:0}#members-cp-side .members-tab-content h3{font-weight:bold;font-size:15px;margin-top:0;color:#000;margin-bottom:10px}#members-cp-side .members-tab-content .memberpress-paid-memberships{text-align:left;padding:20px}#members-cp-side .members-tab-content .memberpress-paid-memberships a{display:block;text-align:center}#members-cp-side .members-tabs .members-tab-nav li a,#members-cp-side .members-tabs .members-tab-nav li[aria-selected="false"] a i{color:#555}#members-cp-side .members-tabs .members-tab-nav li a svg,#members-cp-side .members-tabs .members-tab-nav li[aria-selected="false"] a svg{fill:#555}#members-cp-side .members-tabs .members-tab-nav li[aria-selected="true"] a{background-color:transparent;border-bottom:2px solid #3582ae}#members-cp-side .members-tabs .members-tab-nav li[aria-selected="true"] a i{color:#3582ae}#members-cp-side .members-tabs .members-tab-nav li[aria-selected="true"] a svg{fill:#3582ae}.members-tab-title svg,.members-tab-title[aria-selected="false"] svg{fill:#0073aa}.members-tab-title[aria-selected="true"] svg{fill:#555}#wpcontent #members-admin-header{margin-left:-20px;padding:0 28px 0 22px;background-color:#0b1220;background-image:radial-gradient(circle at 12% 35%,rgba(14,69,152,0.45),transparent 55%),radial-gradient(circle at 90% 85%,rgba(245,148,49,0.14),transparent 60%);background-repeat:no-repeat;min-height:56px;position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}#wpcontent #members-admin-header img.members-logo{height:42px;display:block}#wpcontent #members-admin-header .members-by-mp{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:12px;margin-left:auto;text-decoration:none;-webkit-box-shadow:none;box-shadow:none;-webkit-transition:opacity .15s ease;transition:opacity .15s ease}#wpcontent #members-admin-header .members-by-mp:hover,#wpcontent #members-admin-header .members-by-mp:focus{opacity:.75;text-decoration:none;-webkit-box-shadow:none;box-shadow:none}#wpcontent #members-admin-header .members-by-label{color:#94a3b8;font-size:12px;font-weight:500}#wpcontent #members-admin-header img.members-mp-logo{height:18px;display:block}#wpcontent #members-admin-header #membersAdminHeaderNotifications{position:relative;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:36px;height:36px;padding:0;margin:0 0 0 18px;background:rgba(255,255,255,0.06);border:1px solid rgba(255,255,255,0.12);border-radius:8px;color:#fff;cursor:pointer;-webkit-box-shadow:none;box-shadow:none;-webkit-transition:background .15s ease,border-color .15s ease;transition:background .15s ease,border-color .15s ease;line-height:1;vertical-align:middle;min-height:0;text-decoration:none}#wpcontent #members-admin-header #membersAdminHeaderNotifications:hover,#wpcontent #members-admin-header #membersAdminHeaderNotifications:focus{background:rgba(255,255,255,0.12);border-color:rgba(255,255,255,0.24);color:#fff;-webkit-box-shadow:none;box-shadow:none;outline:0}#wpcontent #members-admin-header #membersAdminHeaderNotifications svg{width:16px;height:auto;display:block}#wpcontent #members-admin-header #membersAdminHeaderNotifications svg path{fill:#e2e8f0}#wpcontent #members-admin-header #membersAdminHeaderNotifications .members-notifications-count{position:absolute;top:-4px;right:-4px;min-width:16px;height:16px;padding:0 4px;border-radius:999px;background:#f59431;color:#0b1220;font-size:10px;font-weight:700;line-height:16px;text-align:center;border:1.5px solid #0b1220;-webkit-box-sizing:content-box;box-sizing:content-box}.members-upgrade-header #close-members-upgrade-header{position:absolute;right:20px;top:3px}.members-upgrade-header #close-members-upgrade-header:hover{cursor:pointer}.memberpress-welcome-panel.welcome-panel{margin-top:20px;padding:20px 28px;background:#fff;border-radius:10px;min-height:0}.memberpress-welcome-panel.welcome-panel .welcome-panel-content{min-height:0;height:auto}.members-about{--ink:#0f172a;--ink-soft:#334155;--ink-muted:#64748b;--mp-blue:#0e4598;--mp-teal:#3582ae;--mp-orange:#f59431;--rule:#e5e7eb;--paper:#fbfaf7;--paper-soft:#f3efe6;--paper-line:#e8e3d5;--display-font:"Inter",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;--sans-font:"Inter",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif}body.members_page_members-about #wpbody-content,body.toplevel_page_members-about #wpbody-content,body.admin_page_members-about #wpbody-content{background:var(--paper)}.members-about.wrap{max-width:1120px;margin:0 auto;padding:48px 24px 80px;color:var(--ink);font-family:var(--sans-font)}.members-about__hero{display:grid;grid-template-columns:minmax(0,1fr) 200px;grid-template-areas:"head mark" "body mark";gap:32px 56px;-webkit-box-align:start;-ms-flex-align:start;align-items:start;padding-bottom:64px;border-bottom:1px solid var(--paper-line)}.members-about__hero-head{grid-area:head}.members-about__body{grid-area:body}.members-about__mark{grid-area:mark;align-self:start}.members-about__eyebrow{display:inline-block;font-family:var(--sans-font);font-size:12px;font-weight:600;letter-spacing:.18em;text-transform:uppercase;color:var(--ink-muted);padding-bottom:18px}.members-about__title{font-family:var(--display-font);font-weight:900;font-size:clamp(40px,5.5vw,64px);line-height:1;letter-spacing:-0.035em;color:var(--ink);margin:0}.members-about__title em{font-style:normal;font-weight:900;color:var(--mp-blue)}.members-about__title-dot{color:var(--mp-blue);font-style:normal;font-weight:900}.members-about__body{max-width:60ch;font-size:15.5px;line-height:1.62;color:var(--ink-soft)}.members-about__body p{margin:0 0 14px}.members-about__body p:last-child{margin-bottom:0}.members-about__lead{font-family:var(--sans-font);font-weight:500;font-size:17px;line-height:1.5;color:var(--ink);margin-bottom:24px !important;padding-left:18px;border-left:2px solid var(--mp-blue)}.members-about__body a,.members-about__lead a{color:var(--mp-blue);text-decoration:none;background-image:-webkit-gradient(linear,left top,left bottom,from(currentColor),to(currentColor));background-image:linear-gradient(currentColor,currentColor);background-size:100% 1px;background-position:0 100%;background-repeat:no-repeat;padding-bottom:1px;-webkit-transition:color .2s ease,background-size .2s ease;transition:color .2s ease,background-size .2s ease}.members-about__body a:hover,.members-about__lead a:hover{color:var(--mp-orange)}.members-about__body em,.members-about__lead em{font-style:normal;font-weight:700;color:var(--mp-blue)}.members-about__mark{padding:24px;background:#fff;border:1px solid var(--paper-line);border-radius:4px;-webkit-box-shadow:0 1px 2px rgba(15,23,42,0.03);box-shadow:0 1px 2px rgba(15,23,42,0.03);-webkit-transition:-webkit-transform .25s ease,-webkit-box-shadow .25s ease;transition:-webkit-transform .25s ease,-webkit-box-shadow .25s ease;transition:transform .25s ease,box-shadow .25s ease;transition:transform .25s ease,box-shadow .25s ease,-webkit-transform .25s ease,-webkit-box-shadow .25s ease}.members-about__mark:hover{-webkit-transform:translateY(-2px);transform:translateY(-2px);-webkit-box-shadow:0 8px 20px rgba(15,23,42,0.08);box-shadow:0 8px 20px rgba(15,23,42,0.08)}.members-about__mark a{display:block;-webkit-box-shadow:none !important;box-shadow:none !important;text-decoration:none}.members-about__mark img{display:block;width:100%;height:auto;max-width:160px;margin:0 auto}.members-about__products{padding-top:56px}.members-about__products-head{margin-bottom:28px;text-align:center}.members-about__products-head h3{font-family:var(--display-font);font-weight:700;font-size:15px;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-muted);margin:0}.members-about__grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px}.members-about__card{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;padding:24px;background:#fff;border:1px solid var(--paper-line);border-radius:6px;-webkit-transition:border-color .25s ease,-webkit-transform .25s ease,-webkit-box-shadow .25s ease;transition:border-color .25s ease,-webkit-transform .25s ease,-webkit-box-shadow .25s ease;transition:transform .25s ease,box-shadow .25s ease,border-color .25s ease;transition:transform .25s ease,box-shadow .25s ease,border-color .25s ease,-webkit-transform .25s ease,-webkit-box-shadow .25s ease}.members-about__card:hover{-webkit-transform:translateY(-3px);transform:translateY(-3px);-webkit-box-shadow:0 12px 28px rgba(15,23,42,0.08);box-shadow:0 12px 28px rgba(15,23,42,0.08);border-color:rgba(14,69,152,0.2)}.members-about__card-head{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:14px;margin-bottom:14px}.members-about__card-icon{-webkit-box-flex:0;-ms-flex:0 0 44px;flex:0 0 44px;width:44px;height:44px;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;background:var(--paper-soft);border-radius:10px;overflow:hidden}.members-about__card-icon img{display:block;max-width:32px;max-height:32px;width:auto;height:auto}.members-about__card-title{margin:0;font-family:var(--display-font);font-weight:700;font-size:17px;line-height:1.2;letter-spacing:-0.01em;color:var(--ink)}.members-about__card-title a{color:inherit;text-decoration:none;-webkit-box-shadow:none;box-shadow:none}.members-about__card-title a:hover{color:var(--mp-blue)}.members-about__card-desc{-webkit-box-flex:1;-ms-flex:1;flex:1;margin:0 0 24px;font-size:14px;line-height:1.55;color:var(--ink-soft)}.members-about__card-foot{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;gap:16px;padding-top:16px;border-top:1px solid var(--paper-line)}.members-about__status{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;font-size:12px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-muted)}.members-about__status::before{content:"";width:7px;height:7px;border-radius:50%;background:currentColor}.members-about__status.is-active{color:#10b981}.members-about__status.is-inactive{color:var(--mp-orange)}.members-about__status.is-missing{color:var(--ink-muted)}.members-about__cta{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;padding:8px 14px;font-size:13px;font-weight:600;letter-spacing:.01em;border-radius:4px;text-decoration:none;border:1px solid transparent;-webkit-transition:background .2s ease,border-color .2s ease,color .2s ease,-webkit-transform .15s ease;transition:background .2s ease,border-color .2s ease,color .2s ease,-webkit-transform .15s ease;transition:background .2s ease,border-color .2s ease,color .2s ease,transform .15s ease;transition:background .2s ease,border-color .2s ease,color .2s ease,transform .15s ease,-webkit-transform .15s ease;-webkit-box-shadow:none;box-shadow:none}.members-about__cta:focus,.members-about__cta:focus-visible{outline:2px solid var(--mp-blue);outline-offset:2px;-webkit-box-shadow:none;box-shadow:none}.members-about__cta.is-primary{background:var(--mp-blue);color:#fff}.members-about__cta.is-primary:hover{background:#093374;color:#fff;-webkit-transform:translateY(-1px);transform:translateY(-1px)}.members-about__cta.is-secondary{background:transparent;color:var(--ink);border-color:var(--rule)}.members-about__cta.is-secondary:hover{border-color:var(--ink);background:#fff;color:var(--ink)}.members-about__cta svg{-webkit-transition:-webkit-transform .2s ease;transition:-webkit-transform .2s ease;transition:transform .2s ease;transition:transform .2s ease,-webkit-transform .2s ease}.members-about__cta:hover svg{-webkit-transform:translate(1px,-1px);transform:translate(1px,-1px)}@media(max-width:900px){.members-about__hero{grid-template-columns:1fr;grid-template-areas:"head" "body" "mark";gap:24px}.members-about__mark{max-width:160px}.members-about__grid{grid-template-columns:1fr}}.memberpress-welcome-panel.welcome-panel:before{background:0}.memberpress-welcome-panel.welcome-panel .about-description{margin:20px 0}.memberpress-welcome-panel.welcome-panel-content{margin:0}.memberpress-welcome-panel.welcome-panel-content .mp-logo-wrap>a{display:block}@media screen and (min-width:870px){.members_page_members-settings .members-short-p{max-width:612px;margin-left:auto;margin-right:auto}.members_page_members-settings .welcome-panel-content{text-align:center}}.members_page_members-settings .welcome-panel .button.button-hero{margin-left:auto;margin-right:auto}.members_page_members-settings .members-svg-wrap{display:inline-block;margin:0 auto 20px}@media screen and (max-width:870px){.members_page_members-settings .welcome-panel{padding:20px}.members_page_members-settings .members-svg-wrap{float:left;margin-right:28px}.admin_page_members-settings.rtl .members-svg-wrap{float:right;margin-right:0;margin-left:28px}}.members_page_members-settings .members-svg-link{display:table-cell;text-align:center;width:128px;height:128px;background:#363b3f;color:#fff;padding:24px 16px 16px;border-radius:50%;-webkit-box-sizing:border-box;box-sizing:border-box;border:4px solid #fff;-webkit-box-shadow:0 0 0 4px #363b3f;box-shadow:0 0 0 4px #363b3f}.members_page_members-settings .members-svg-link svg{max-width:84px;max-height:64px;width:auto;height:auto}.members-addons{display:grid;grid-template-columns:1fr 1fr;grid-row-gap:20px;grid-column-gap:20px}.members-addons .plugin-card{margin:0}.members-addons .plugin-card-top{width:100%}.members-addon{width:100%;position:relative;float:none;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.members-addon .desc{margin-bottom:80px}.addon-activate{text-align:center;border:1px solid #ddd;border-radius:3px;padding:5px 10px 10px;display:inline-block;width:100px;position:absolute;right:20px;bottom:20px}.activate-toggle:hover{cursor:pointer}.activate-toggle svg{max-width:20px;position:relative;top:5px}.activate-toggle svg{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.activate-toggle svg.active{-webkit-transform:rotate(0);transform:rotate(0)}.activate-toggle svg path{fill:#ccc}.activate-toggle svg.active path{fill:#8cbd5a}.activate-toggle.processing{cursor:not-allowed;pointer-events:none;opacity:.5}.activate-toggle .action-label{display:inline-block;width:50px;text-align:left}.mepr_dummy_txns{-webkit-filter:blur(3px);filter:blur(3px);position:absolute;top:0;left:0;width:100%;z-index:5;pointer-events:none}.mepr_dummy_txns::after{background-color:rgba(0,0,0,.2);position:absolute;top:0;left:0;width:100%;height:100%;z-index:6}.mepr-upgrade-table{position:relative}.mepr-upgrade-table .mepr-upgrade{position:relative;top:100px;z-index:10;background:rgba(0,0,0,.2);width:100%;height:100%;max-width:600px;margin:0 auto;-webkit-box-shadow:0 0 30px #ccc;box-shadow:0 0 30px #ccc}.mepr-upgrade-content{background-color:#fff;padding:20px;text-align:center}.mepr-upgrade-content h2{font-size:24px}.mepr-upgrade-content h4{font-size:18px}.mepr-upgrade-content .features{display:grid;grid-template-columns:1fr 1fr;grid-column-gap:30px;grid-row-gap:10px;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;text-align:left;padding:10px}.features li:before{content:"\f147";font-family:dashicons;color:green;font-size:20px;position:relative;top:4px;margin-right:10px}.mepr-upgrade-cta{text-align:center;background-color:#f2f2f2;padding:20px}.mepr-upgrade-cta .mepr-cta-button{display:block;max-width:300px;margin:0 auto 20px;background-color:#fd9c27;color:#fff;padding:15px;font-size:18px;font-weight:bold;text-decoration:none;border-radius:300px}.members-plugin-card.plugin-card:nth-child(even){margin-right:inherit}.members-plugin-card.plugin-card:nth-child(odd){clear:none;margin-left:inherit}.members-plugin-card.plugin-card .plugin-card-top{min-height:0;padding:30px 20px}.members-plugin-card.plugin-card .plugin-icon{top:30px}.members-plugin-card.plugin-card .plugin-card-bottom .column-status{font-weight:bold}.members-plugin-card.plugin-card .plugin-card-bottom .column-status .active{color:#8cbd5a}.members-plugin-card.plugin-card .plugin-card-bottom .column-status .inactive{color:red}.members-plugin-card.plugin-card .plugin-icon{width:64px;height:auto}.plugin-icon-small{width:32px;height:auto}.members-plugin-card.plugin-card .name,.members-plugin-card.plugin-card .desc{margin-right:0;margin-left:84px}.members-addons .plugin-card .name,.members-addons .plugin-card .desc p{margin-right:0}@media screen and (max-width:1100px){.members-addons{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}}@media screen and (max-width:600px){.members_page_members-settings .members-svg-link{width:64px;height:64px}.members_page_members-settings .members-svg-link svg{position:absolute;top:14px;left:15px;max-width:30px;max-height:30px}.members_page_members-settings .plugin-card-members-edd-integration .members-svg-link svg,.members_page_members-settings .plugin-card-members-acf-integration .members-svg-link svg,.members_page_members-settings .plugin-card-members-givewp-integration .members-svg-link svg,.members_page_members-settings .plugin-card-members-meta-box-integration .members-svg-link svg,.members_page_members-settings .plugin-card-members-woocommerce-integration .members-svg-link svg{top:10px;left:8px;max-width:40px;max-height:40px}.members_page_members-settings .plugin-card-members-block-permissions .members-svg-link svg,.members_page_members-settings .plugin-card-members-role-hierarchy .members-svg-link svg{left:14px}.members-addons .plugin-card .desc>p,.members-addons .plugin-card .name{margin-left:84px}}.memberpress-about .welcome-panel-column-container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:40px;padding:0;margin:0}.memberpress-about .mp-desc p{font-size:13px;line-height:1.6;color:#334155;margin:0 0 12px}.memberpress-about .mp-desc p:first-child{font-size:15px;font-weight:600;color:#0f172a;margin-top:0;margin-bottom:14px}.memberpress-about .mp-desc p:last-child{margin-bottom:0}.memberpress-about .mp-logo-wrap{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.memberpress-about .mp-logo{display:block;max-width:220px;height:auto;margin:0}.members-about-addons{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-column-gap:20px}.members-about-addons .members-plugin-card{margin:0;width:100%}.members-about-addons .members-plugin-card .plugin-icon{position:static;width:auto;height:28px;max-width:40px;-o-object-fit:contain;object-fit:contain;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;display:block}.members-about-addons .members-plugin-card .name,.members-about-addons .members-plugin-card .desc{margin-left:0}.members-about-addons .members-plugin-card .plugin-card-top{padding:20px}.members-about-addons .members-plugin-card .name h3{margin:0 0 10px;min-height:0;height:auto;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:10px;line-height:1.2}.members-about-addons .members-plugin-card .name h3 a{text-decoration:none;line-height:1.2}.members-about-addons .members-plugin-card .plugin-card-bottom{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}@media only screen and (max-width:1099px){.members-about-addons{grid-template-columns:1fr;grid-row-gap:20px}}@media screen and (min-width:1100px) and (max-width:1600px){.members-about-addons .members-plugin-card{float:none;width:auto;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.members-plugin-card.plugin-card .desc{margin-left:0;margin-top:50px}.members-plugin-card.plugin-card .desc p{margin-left:0;margin-right:0}.members-plugin-card.plugin-card .plugin-card-bottom .column-status{float:none}.members-plugin-card.plugin-card .plugin-card-bottom .column-updated{float:none;width:auto}}@media screen and (max-width:1200px){.welcome-panel .welcome-panel-column-container{-webkit-box-orient:vertical;-webkit-box-direction:reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse;gap:0;padding:0}.memberpress-about .mp-logo{margin:0 0 20px}}.members-plugin-card.plugin-card .desc p{margin-left:0;margin-right:0}@media only screen and (min-width:783px){.members_page_roles .column-users,.members_page_roles .column-granted_caps,.members_page_roles .column-denied_caps{width:100px;text-align:center}}.members-title-div #titlewrap input{padding:0 8px;font-size:1.7em;line-height:normal;height:1.7em;width:100%;outline:0;margin:0 0 3px;background-color:#fff}.members-title-div input[name="role"]{font-size:13px;height:22px;margin:0;width:16em}#tabcapsdiv{margin-top:1em}#tabcapsdiv>.hndle{padding:10px;border-bottom:1px solid #eee}#tabcapsdiv .inside,#members-cp .inside{margin:0;padding:0}.members-cap-tabs,.members-tabs{overflow:hidden;background:#fff;background:-webkit-gradient(linear,left top,right top,from(#fafafa),color-stop(20%,#fafafa),color-stop(20%,#fff),to(#fff));background:linear-gradient(90deg,#fafafa 0,#fafafa 20%,#fff 20%,#fff 100%)}@media only screen and (max-width:782px){.members-cap-tabs,.members-tabs{background:linear-gradient(90deg,#fafafa 0,#fafafa 48px,#fff 48px,#fff 100%)}}.members-cap-tabs .members-tab-nav,.members-tabs .members-tab-nav{position:relative;float:left;list-style:none;width:20%;line-height:1em;margin:0 0 -1px 0;padding:0;background-color:#fafafa;border-right:1px solid #eee;-webkit-box-sizing:border-box;box-sizing:border-box}.members-cap-tabs .members-tab-nav li,.members-tabs .members-tab-nav li{display:block;position:relative;margin:0;padding:0;line-height:20px}.members-cap-tabs .members-tab-nav li a,.members-tabs .members-tab-nav li a{display:block;margin:0;padding:10px;line-height:20px !important;text-decoration:none;border-bottom:1px solid #eee;-webkit-box-shadow:none;box-shadow:none}.members-cap-tabs .members-tab-nav li a .dashicons,.members-tabs .members-tab-nav li a .dashicons{line-height:20px;margin-right:3px}.members-cap-tabs .members-tab-nav li[aria-selected="true"] a,.members-tabs .members-tab-nav li[aria-selected="true"] a{position:relative;font-weight:bold;color:#555;background-color:#e0e0e0}@media only screen and (max-width:782px){.members-cap-tabs .members-tab-nav,.members-tabs .members-tab-nav{width:48px}.members-cap-tabs .members-tab-nav li a .dashicons,.members-tabs .members-tab-nav li a .dashicons{width:24px;height:24px;font-size:24px;line-height:24px}.members-tab-nav li .dashicons::before,.members-tab-nav li .dashicons::before{width:24px;height:24px}.members-tab-nav li .label{overflow:hidden;position:absolute;top:-1000em;left:-1000em;width:1px;height:1px}}.members-cap-tabs .members-tab-wrap,.members-tabs .members-tab-wrap{float:left;width:80%;margin-left:-1px}@media only screen and (max-width:782px){.members-cap-tabs .members-tab-wrap,.members-tabs .members-tab-wrap{width:calc(100% - 48px)}}#members-cp .members-tab-content{padding:10px;border-left:1px solid #e5e5e5}.members-roles-select th,.members-roles-select td{width:190px;overflow:hidden}.members-roles-select .check-all-th{text-align:center}.members-roles-select .check-all-th label{padding-left:5px}@media only screen and (min-width:850px){#side-sortables .members-tabs{background:#fff}#side-sortables .members-tabs .members-tab-wrap{width:100%}#side-sortables .members-tabs .members-tab-nav{display:table;width:100%}#side-sortables .members-tabs .members-tab-nav li{display:table-cell;text-align:center;border-right:1px solid #eee}#side-sortables .members-tabs .members-tab-nav li:last-of-type{border-right:0}#side-sortables .members-tabs .members-tab-nav li a{padding:10px 0}#side-sortables .members-tabs .members-tab-nav .dashicons{width:24px;height:24px;font-size:24px;line-height:24px}#side-sortables .members-tabs .members-tab-nav .dashicons::before{width:24px;height:24px}#side-sortables .members-tabs .members-tab-nav .label{overflow:hidden;position:absolute;top:-1000em;left:-1000em;width:1px;height:1px}}.members-tabs .members-tabs-label{display:block !important;font-weight:bold;display:inline-block;margin-bottom:4px}.members-tabs .butterbean-control-checkbox .members-tabs-label{display:inline !important}.members-tabs .members-tabs-description{display:block;font-style:italic;margin-top:4px}.members-tabs .members-tabs-label+.members-tabs-description{margin-top:0;margin-bottom:4px}#tabcapsdiv table{border-right:0;border-top:0;border-bottom:0}#tabcapsdiv table td,#tabcapsdiv table th{padding:10px;padding-bottom:10px;border-bottom:1px solid #eee;font-size:13px;line-height:20px}#tabcapsdiv table td{padding:9px}#tabcapsdiv tbody tr:last-of-type td{border-bottom:0}#tabcapsdiv tfoot th{border-color:#eee}@media only screen and (max-width:782px){#tabcapsdiv table td,#tabcapsdiv table th{line-height:24px}}.members-roles-select .column-grant,.members-roles-select .column-deny{width:70px !important;text-align:left;display:table-cell !important;clear:none !important}.members-roles-select thead th,.members-roles-select tfoot th{padding:9px !important}.members-roles-select .column-grant input,.members-roles-select .column-deny input{margin:0 5px 0 0;vertical-align:middle}.members-roles-select tbody tr:nth-child(even){background:#f2f2f2}.members-cap-tabs button{display:inline;margin:-4px;line-height:inherit;padding:4px 8px;border:1px solid transparent;background:transparent;border-radius:0;outline:0;-webkit-transition:all .25s ease-out;transition:all .25s ease-out}.members-cap-tabs button:hover,.members-cap-tabs button:focus{border-color:#eee;background:#fafafa;cursor:pointer}.members-cap-tabs button:active{color:#0073aa;border-color:#0073aa}.members-cap-tabs button+.dashicons{display:none;margin-top:1px;margin-bottom:-1px;line-height:inherit}.members-cap-tabs button:hover+.dashicons,.members-cap-tabs button:focus+.dashicons{display:inline-block}.members-tab-content .members-highlight{background-color:rgba(0,115,170,0.05)}.members-tab-content tbody{-webkit-transition:all 2s ease-in-out;transition:all 2s ease-in-out}.members-cp-role-list-wrap{overflow:auto;min-height:42px;max-height:200px;padding:0 .9em;border:solid 1px #dfdfdf;background-color:#fdfdfd}#wpbody-content{padding-bottom:200px}.members-footer-promotion{text-align:center;font-weight:400;font-size:13px;line-height:16px;color:#787c82;padding:20px 0 30px 0;margin-bottom:20px}.members-footer-promotion p{font-weight:600}.members-footer-promotion-links,.members-footer-promotion-social{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.members-footer-promotion-links{margin:9px 0 0}.members-footer-promotion-links span{color:#c3c4c7;padding:0 7px}.members-footer-promotion-social{margin:10px 0 0 0;gap:10px}.members-footer-promotion-social li{margin-bottom:0}.members-footer-promotion-social a{display:block;height:16px}.members_page_members-settings.rtl{.addon-activate{left:20px;right:unset}.members-addons .plugin-card{.name,.desc p{margin-left:0;margin-right:148px}}}.button.button-warning{background:#dc3232;border-color:#dc3232;color:#fff}.button.button-warning:hover,.button.button-warning:focus{background:#c92424;border-color:#c92424;color:#fff}.members-reset-spinner{float:none;margin-top:0;vertical-align:middle}.members-admin-menus-wrap{max-width:none;--members-am-accent-use:var(--members-am-accent,var(--wp-admin-theme-color,#2271b1));--members-am-surface-use:var(--members-am-surface,color-mix(in srgb,var(--members-am-base,#1d2327) 88%,#fff 12%));--members-am-border-on-base-fallback:color-mix(in srgb,var(--members-am-base,#1d2327) 62%,#fff 38%);--members-am-chrome-bg:var(--wp-components-color-gray-100,#f6f7f7);--members-am-chrome-border:var(--wp-components-color-gray-400,#c3c4c7);--members-am-muted:var(--wp-components-color-gray-600,#646970)}.members-am-notices{margin:0 0 12px}.members-am-notices .notice{margin:0 0 8px}.members-admin-menus-toolbar{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;gap:0;margin-bottom:16px;border:1px solid var(--members-am-chrome-border,#c3c4c7);border-radius:2px;background:var(--wp-components-color-background,#fff);overflow:visible}.members-am-toolbar-row{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px}.members-am-toolbar-row--primary{padding:10px 12px;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;row-gap:10px}.members-am-toolbar-group{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px}.members-am-toolbar-group--document{position:relative;z-index:5;padding-right:12px;border-right:1px solid var(--members-am-chrome-border,#c3c4c7)}.members-am-toolbar-row--primary .members-am-toolbar-primary-user{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px;-webkit-box-flex:0;-ms-flex:0 1 auto;flex:0 1 auto;min-width:0}.members-am-toolbar-row--primary .members-am-toolbar-primary-user #members-am-user-search.members-am-user-search-input{width:11rem;max-width:100%;min-width:0;-webkit-box-sizing:border-box;box-sizing:border-box}.members-am-toolbar-extra-row{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:10px 16px}.members-am-toolbar-extra .members-am-toolbar-extra-io{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;margin-left:auto;padding-left:12px;border-left:1px solid var(--members-am-chrome-border,#c3c4c7)}.members-am-toolbar-group--view{margin-left:auto;-ms-flex-wrap:nowrap;flex-wrap:nowrap}.members-am-toolbar-extra{background:var(--members-am-chrome-bg,#f6f7f7);border-top:1px solid var(--members-am-chrome-border,#c3c4c7);padding:10px 12px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:10px}.members-am-toolbar-extra[hidden]{display:none !important}.members-am-toolbar-extra-hint{margin:0 0 8px;max-width:52rem}.members-am-toolbar-admin-editable-inline{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px;-webkit-box-flex:0;-ms-flex:0 1 auto;flex:0 1 auto;white-space:normal;max-width:min(100%,22rem)}.members-am-toolbar-extra .members-am-toolbar-admin-editable-inline{max-width:min(100%,26rem)}.members-am-toolbar-row--extra-tools{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-wrap:wrap;flex-wrap:wrap;row-gap:10px}.members-am-toolbar-row--extra-tools .members-am-copy-wrap{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;margin-left:4px;padding-left:12px;border-left:1px solid var(--members-am-chrome-border,#c3c4c7)}.members-am-toolbar-extra-row .members-am-copy-wrap--extra-inline{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px 8px;-webkit-box-flex:0;-ms-flex:0 1 auto;flex:0 1 auto;min-width:0;margin-left:8px;padding-left:12px;border-left:1px solid var(--members-am-chrome-border,#c3c4c7)}.members-am-toolbar-extra-row .members-am-copy-wrap--extra-inline .members-am-copy-confirm-area{-ms-flex-preferred-size:100%;flex-basis:100%;width:100%}.members-am-toolbar-extra .members-am-copy-select{width:11rem;max-width:100%;min-width:0;-webkit-box-sizing:border-box;box-sizing:border-box}.members-am-toolbar-row--exempt{-ms-flex-preferred-size:100%;flex-basis:100%;width:100%;margin-top:0;padding-top:10px;border-top:1px solid var(--members-am-chrome-border,#c3c4c7)}.members-am-toolbar-extra .members-am-toolbar-row--exempt{margin-top:4px;padding-top:12px}.members-am-toolbar-extra .members-am-exempt-wrap{width:100%;max-width:100%;-webkit-box-sizing:border-box;box-sizing:border-box}.members-am-toolbar-extra .members-am-exempt-search{width:min(22rem,100%);max-width:100%;-webkit-box-sizing:border-box;box-sizing:border-box}.members-am-exempt-wrap .members-am-exempt-chips{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;margin:8px 0}.members-am-exempt-chip{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:4px;padding:2px 8px;border:1px solid var(--members-am-chrome-border,#c3c4c7);border-radius:4px;background:var(--wp-components-color-background,#fff);font-size:13px}.members-am-exempt-chip .members-am-exempt-remove{padding:0 2px;min-height:0;line-height:1.3}.members-am-more-tools,.members-am-more-tools:hover,.members-am-more-tools:focus,.members-am-more-tools:focus-visible,.members-am-more-tools:active{text-decoration:none !important}.members-am-more-tools{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:4px;white-space:nowrap;padding:2px 2px 2px 4px;vertical-align:middle;line-height:1.4}.members-am-more-tools .members-am-more-tools-text,.members-am-more-tools:hover .members-am-more-tools-text,.members-am-more-tools:focus .members-am-more-tools-text,.members-am-more-tools:focus-visible .members-am-more-tools-text,.members-am-more-tools:active .members-am-more-tools-text,.members-am-more-tools .members-am-more-tools-chevron,.members-am-more-tools:hover .members-am-more-tools-chevron,.members-am-more-tools:focus .members-am-more-tools-chevron,.members-am-more-tools:focus-visible .members-am-more-tools-chevron,.members-am-more-tools:active .members-am-more-tools-chevron,.members-am-more-tools .members-am-more-tools-chevron-svg,.members-am-more-tools:hover .members-am-more-tools-chevron-svg,.members-am-more-tools:focus .members-am-more-tools-chevron-svg,.members-am-more-tools:focus-visible .members-am-more-tools-chevron-svg,.members-am-more-tools:active .members-am-more-tools-chevron-svg{text-decoration:none !important}.members-am-more-tools .members-am-more-tools-text{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;line-height:1.4}.members-am-more-tools .members-am-more-tools-chevron{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-ms-flex-negative:0;flex-shrink:0;line-height:0;opacity:.88}.members-am-more-tools .members-am-more-tools-chevron-svg{display:block;overflow:visible;-webkit-transition:-webkit-transform .15s ease;transition:-webkit-transform .15s ease;transition:transform .15s ease;transition:transform .15s ease,-webkit-transform .15s ease;-webkit-transform-origin:50% 50%;transform-origin:50% 50%;shape-rendering:geometricPrecision}.members-am-more-tools .members-am-more-tools-chevron-svg polygon{stroke:none}.members-am-more-tools.is-open .members-am-more-tools-chevron-svg{-webkit-transform:rotate(180deg);transform:rotate(180deg)}@media(prefers-reduced-motion:reduce){.members-am-more-tools .members-am-more-tools-chevron-svg{-webkit-transition:none;transition:none}}@media screen and (max-width:782px){.members-am-toolbar-group--document{border-right:0;padding-right:0;border-bottom:1px solid var(--members-am-chrome-border,#c3c4c7);padding-bottom:10px;width:100%}.members-am-toolbar-group--view{margin-left:0;width:100%;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.members-am-toolbar-row--primary .members-am-toolbar-primary-user{-webkit-box-flex:1;-ms-flex:1 1 100%;flex:1 1 100%;width:100%;padding-top:8px;border-top:1px solid var(--members-am-chrome-border,#c3c4c7)}.members-am-toolbar-row--primary .members-am-toolbar-primary-user #members-am-user-search.members-am-user-search-input{width:100%;max-width:100%}.members-am-toolbar-extra .members-am-copy-select{width:100%;max-width:100%}.members-am-toolbar-extra .members-am-toolbar-admin-editable-inline{width:100%;max-width:none}.members-am-toolbar-extra .members-am-toolbar-extra-io{margin-left:0;padding-left:0;border-left:0;padding-top:8px;border-top:1px solid var(--members-am-chrome-border,#dcdcde);width:100%}.members-am-toolbar-extra-row .members-am-copy-wrap--extra-inline{-webkit-box-flex:1;-ms-flex:1 1 100%;flex:1 1 100%;width:100%;margin-left:0;padding-left:0;border-left:0;padding-top:8px;border-top:1px solid var(--members-am-chrome-border,#dcdcde)}}.members-am-toolbar-loading{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;margin-left:4px;color:var(--members-am-muted,#646970);font-size:13px;line-height:1}.members-am-toolbar-loading .spinner{float:none;margin:0}.members-am-toolbar-loading[hidden]{display:none !important}.members-am-copy-wrap label{margin-right:8px}.members-am-copy-confirm-area{margin-top:8px;width:100%;-ms-flex-preferred-size:100%;flex-basis:100%}.members-am-inline-copy-notice{margin:0}.members-am-info-bar{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;gap:8px;margin:0 0 12px;padding:10px 12px;background:#fcf9e8;border:1px solid #dba617;border-radius:2px;font-size:12px;color:var(--wp-components-color-foreground,#1d2327);-webkit-box-sizing:border-box;box-sizing:border-box}.members-am-info-bar-legends{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-ms-flex-wrap:nowrap;flex-wrap:nowrap;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;gap:12px 20px;min-width:0}.members-am-info-bar-legends .members-am-info-item{-webkit-box-flex:0;-ms-flex:0 1 auto;flex:0 1 auto;min-width:0;max-width:none;overflow-wrap:break-word}.members-am-info-item--note{width:100%;-webkit-box-sizing:border-box;box-sizing:border-box;font-style:italic;color:var(--wp-components-color-gray-700,#50575e)}.members-am-info-icon{margin-right:4px;vertical-align:text-bottom}.members-am-legend-hidden-mark{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;margin-right:6px;padding:2px 5px;border-radius:2px;vertical-align:text-bottom;background:#d63638;color:#fff}.members-am-legend-hidden-mark .dashicons{font-size:14px;width:14px;height:14px;line-height:1}.members-am-chips-wrap{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:10px;margin-bottom:12px}.members-am-chips-actions{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:6px;-ms-flex-negative:0;flex-shrink:0}.members-am-chips,.members-am-chips-inner{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:8px;-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;min-width:0}.members-am-columns-empty{margin:0;padding:24px 12px;text-align:center;font-size:13px;color:var(--members-am-muted,#646970);-webkit-box-flex:1;-ms-flex:1 1 100%;flex:1 1 100%;-ms-flex-item-align:center;align-self:center}.members-am-phase1-placeholder{margin:0 0 12px;padding:12px;background:var(--members-am-chrome-bg,#f6f7f7);border:1px dashed var(--members-am-chrome-border,#c3c4c7);border-radius:2px}.members-am-phase1-placeholder-text{margin:0;font-size:13px}.members-am-edit-popover-root:not([hidden]){position:fixed;inset:0;z-index:100001;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;padding:min(24px,4vw);-webkit-box-sizing:border-box;box-sizing:border-box}.members-am-edit-popover-root[hidden]{display:none !important}.members-am-edit-popover-overlay{position:absolute;inset:0;z-index:0;background:rgba(20,24,28,0.42)}.members-am-edit-popover-dialog{position:relative;z-index:1;-webkit-box-flex:0;-ms-flex:0 1 auto;flex:0 1 auto;width:min(680px,calc(100vw - 32px));max-width:100%;max-height:min(92vh,calc(100vh - 32px));overflow:hidden;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;min-height:0;background:var(--wp-components-color-background,#fff);border:1px solid var(--members-am-chrome-border,#c3c4c7);border-radius:8px;-webkit-box-shadow:0 4px 6px rgba(0,0,0,0.06),0 16px 48px rgba(0,0,0,0.18),0 0 0 1px rgba(0,0,0,0.04);box-shadow:0 4px 6px rgba(0,0,0,0.06),0 16px 48px rgba(0,0,0,0.18),0 0 0 1px rgba(0,0,0,0.04)}.members-am-edit-popover-arrow{display:none}.members-am-edit-popover-header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;gap:12px;padding:12px 16px;background:var(--members-am-base,#1d2327);color:var(--members-am-fg-on-base,#f0f0f1);-ms-flex-negative:0;flex-shrink:0}.members-am-edit-popover-heading{min-width:0;-webkit-box-flex:1;-ms-flex:1;flex:1}.members-am-edit-popover-title{margin:0;font-size:16px;font-weight:600;line-height:1.3;color:inherit}.members-am-edit-popover-subtitle{margin:3px 0 0;font-size:11px;font-weight:400;opacity:.65;color:inherit}.members-am-edit-popover-close{color:color-mix(in srgb,currentColor 62%,transparent) !important;font-size:18px;line-height:1;padding:0 4px !important;text-decoration:none !important}.members-am-edit-popover-close:hover,.members-am-edit-popover-close:focus{color:inherit !important}.members-am-edit-popover-placeholder{margin:0 12px 12px}.members-am-edit-popover-chrome.members-am-edit-toolbar{display:block;margin:0}.members-am-edit-popover-scope{padding:10px 16px;border-bottom:1px solid var(--members-am-chrome-border,#dcdcde);background:var(--members-am-chrome-bg,#f6f7f7);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:10px;-ms-flex-wrap:wrap;flex-wrap:wrap;font-size:12px;color:var(--members-am-muted,#646970);-ms-flex-negative:0;flex-shrink:0}.members-am-edit-popover-body{padding:16px 18px;overflow-y:auto;-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;min-height:0;-ms-scroll-chaining:none;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}.members-am-edit-popover-footer{padding:12px 16px;border-top:1px solid var(--members-am-chrome-border,#dcdcde);background:var(--members-am-chrome-bg,#f6f7f7);display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:8px;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;-ms-flex-negative:0;flex-shrink:0}.members-am-edit-target-wrap{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px;white-space:nowrap}.members-am-edit-target-label{font-weight:600}.members-am-edit-target-select{-webkit-box-flex:1;-ms-flex:1 1 200px;flex:1 1 200px;min-width:min(200px,100%);max-width:100%;font-size:13px;padding:4px 8px;min-height:30px}.members-am-edit-section-label{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--members-am-muted,#646970);margin:0 0 6px;padding-bottom:4px;border-bottom:1px solid var(--members-am-chrome-border,#dcdcde)}.members-am-edit-popover-actions{padding:10px 16px;border-bottom:1px solid var(--members-am-chrome-border,#dcdcde);background:var(--members-am-chrome-bg,#f6f7f7);display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;-ms-flex-negative:0;flex-shrink:0}.members-am-btn-danger{color:#b32d2e !important;border-color:#d63638 !important;-webkit-box-shadow:none !important;box-shadow:none !important}#members-am-remove-custom[hidden]{display:none !important}.members-am-btn-danger:hover{color:#fff !important;background:#d63638 !important;border-color:#d63638 !important}.members-am-demote-parent-label{font-size:13px;margin-right:4px}.members-am-edit-row-title-url{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin-bottom:12px}.members-am-edit-field label{display:block;font-weight:600;margin-bottom:4px}.members-am-edit-section{margin:0;padding:0;border:0}.members-am-edit-section-title{margin:0 0 10px;font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--members-am-muted,#646970)}.members-am-edit-badge-row{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin-bottom:12px}.members-am-badge-preview-row{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:10px}.members-am-badge-preview-label{font-size:12px;color:var(--members-am-muted,#646970)}.members-am-badge-preview{display:inline-block;min-width:48px;padding:3px 10px;border-radius:3px;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.02em}.members-am-edit-colors-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px 32px}.members-am-edit-color-field{margin:0}.members-am-edit-color-field label{display:block;margin:0 0 6px}.members-am-edit-color-field .wp-picker-container{display:inline-block;max-width:100%}.members-am-edit-cap-field{margin-top:12px}.members-am-edit-cap-field label{display:block;font-weight:600;margin-bottom:4px}@media screen and (max-width:600px){.members-am-edit-row-title-url,.members-am-edit-badge-row,.members-am-edit-colors-grid{grid-template-columns:1fr}}.members-am-modal[hidden]{display:none !important}.members-am-modal:not([hidden]){position:fixed;inset:0;z-index:100000;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;padding:24px 12px;-webkit-box-sizing:border-box;box-sizing:border-box}.members-am-modal-backdrop{position:absolute;inset:0;background:rgba(0,0,0,0.45)}.members-am-modal-dialog{position:relative;z-index:1;width:100%;max-width:480px;max-height:90vh;overflow:auto;background:var(--wp-components-color-background,#fff);border-radius:4px;-webkit-box-shadow:0 4px 24px rgba(0,0,0,0.2);box-shadow:0 4px 24px rgba(0,0,0,0.2)}.members-am-modal-header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:12px 16px;border-bottom:1px solid var(--members-am-chrome-border,#c3c4c7)}.members-am-modal-header h2{margin:0;font-size:16px}.members-am-modal-body{padding:12px 16px}.members-am-modal-footer{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;gap:8px;padding:12px 16px;border-top:1px solid var(--members-am-chrome-border,#c3c4c7)}.members-am-chip{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;border-radius:999px;padding:4px 12px 4px 8px;border:1px solid var(--members-am-chrome-border,#c3c4c7);background:var(--wp-components-color-background,#fff);cursor:pointer}.members-am-chip-mark{width:14px;height:14px;border-radius:3px;border:2px solid var(--members-am-role-accent,#8c8f94);background:var(--wp-components-color-background,#fff);-ms-flex-negative:0;flex-shrink:0;-webkit-box-sizing:border-box;box-sizing:border-box}.members-am-chip.is-active{background:color-mix(in srgb,var(--members-am-role-accent,var(--members-am-accent-use)) 12%,var(--wp-components-color-background,#fff));border-color:var(--members-am-role-accent,var(--members-am-accent-use));color:var(--members-am-base,#1d2327)}.members-am-chip.is-active .members-am-chip-mark{background:var(--members-am-role-accent,var(--members-am-accent-use));border-color:var(--members-am-role-accent,var(--members-am-accent-use));-webkit-box-shadow:inset 0 0 0 2px var(--wp-components-color-background,#fff);box-shadow:inset 0 0 0 2px var(--wp-components-color-background,#fff)}.members-am-chip-label{font-size:13px;line-height:1.2}.members-am-cols-host{margin-bottom:12px}.members-am-cols-wrap{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:safe center;-ms-flex-pack:safe center;justify-content:safe center;overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch;padding-bottom:6px;scroll-behavior:smooth}.members-am-cols-inner{display:block;-webkit-box-flex:0;-ms-flex:0 1 auto;flex:0 1 auto;min-width:0;max-width:100%}.members-am-columns{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-ms-flex-wrap:nowrap;flex-wrap:nowrap;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;gap:14px;width:-webkit-max-content;width:-moz-max-content;width:max-content;min-height:320px;margin:0 auto}.members-am-column{-webkit-box-flex:0;-ms-flex:0 0 350px;flex:0 0 350px;width:350px;min-width:350px;max-width:350px;-ms-flex-negative:0;flex-shrink:0;background:var(--members-am-base,#1d2327);border:1px solid var(--members-am-border-on-base,var(--members-am-border-on-base-fallback));border-radius:4px;color:var(--members-am-fg-on-base,#f0f0f1);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-sizing:border-box;box-sizing:border-box}.members-am-role-chip-wrap{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;vertical-align:middle}.members-am-role-chip-cb{margin:0;-ms-flex-negative:0;flex-shrink:0;-ms-flex-item-align:center;align-self:center;accent-color:var(--members-am-role-accent,var(--members-am-accent-use))}.members-am-chip-pill{padding:4px 10px 4px 8px;border-radius:999px;border:1px solid transparent;gap:6px}.members-am-chip-pill.is-active{background:var(--members-am-role-accent,var(--members-am-accent-use));border-color:var(--members-am-role-accent,var(--members-am-accent-use));color:#fff}.members-am-chip-pill.is-active .members-am-role-chip-cb{accent-color:#fff}.members-am-chip-pill.members-am-chip--inactive{opacity:.45;background:var(--wp-components-color-background,#fff);border-color:var(--members-am-chrome-border,#c3c4c7);color:var(--members-am-base,#1d2327)}.members-am-chip-pill.members-am-chip--inactive .members-am-chip-pill-action{text-decoration:line-through}.members-am-chip-pill-action{border:0;background:transparent;padding:0;margin:0;font:inherit;font-size:13px;line-height:1.2;color:inherit;cursor:pointer;text-align:left;min-width:0;-webkit-box-shadow:none;box-shadow:none}.members-am-chip-pill-action:hover,.members-am-chip-pill-action:focus{color:inherit}.members-am-chip-pill-action:focus-visible{outline:2px solid currentColor;outline-offset:2px}.members-am-user-column{border:2px dashed var(--wp-components-color-gray-700,#8c8f94)}.members-am-sidebar-head{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;padding:9px 10px;background:-webkit-gradient(linear,left top,left bottom,from(var(--members-am-surface-use)),to(var(--members-am-base,#1d2327)));background:linear-gradient(180deg,var(--members-am-surface-use) 0,var(--members-am-base,#1d2327) 100%);border-radius:4px 4px 0 0;border-bottom:1px solid var(--members-am-border-on-base,var(--members-am-border-on-base-fallback));font-weight:600;font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:var(--members-am-fg-on-base,#f0f0f1)}.members-am-sidebar-head-titles{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;min-width:0;-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto}.members-am-sidebar-role-dot{width:8px;height:8px;border-radius:50%;-ms-flex-negative:0;flex-shrink:0;background:var(--members-am-accent-use)}.members-am-sidebar-role-dot--user{background:#a7aaad}.members-am-sidebar-head .members-am-sidebar-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.members-am-col-filter{padding:6px 8px 8px;border-bottom:1px solid var(--members-am-border-on-base,var(--members-am-border-on-base-fallback));-ms-flex-negative:0;flex-shrink:0}.members-am-col-filter-input{width:100%;max-width:100%;-webkit-box-sizing:border-box;box-sizing:border-box;font-size:12px;line-height:1.4;padding:4px 8px;border-radius:2px;border:1px solid var(--members-am-border-on-base,var(--members-am-border-on-base-fallback));background:var(--members-am-base,#1d2327);color:var(--members-am-fg-on-base,#f0f0f1)}.members-am-col-filter-input::-webkit-input-placeholder{color:var(--members-am-fg-muted-on-base,var(--wp-components-color-gray-700,#8c8f94));opacity:1}.members-am-col-filter-input::-moz-placeholder{color:var(--members-am-fg-muted-on-base,var(--wp-components-color-gray-700,#8c8f94));opacity:1}.members-am-col-filter-input:-ms-input-placeholder{color:var(--members-am-fg-muted-on-base,var(--wp-components-color-gray-700,#8c8f94));opacity:1}.members-am-col-filter-input::-ms-input-placeholder{color:var(--members-am-fg-muted-on-base,var(--wp-components-color-gray-700,#8c8f94));opacity:1}.members-am-col-filter-input::placeholder{color:var(--members-am-fg-muted-on-base,var(--wp-components-color-gray-700,#8c8f94));opacity:1}.members-am-col-filter-input:focus{border-color:var(--members-am-accent-use);outline:1px solid transparent;-webkit-box-shadow:0 0 0 var(--wp-admin-border-width-focus,1px) var(--members-am-accent-use);box-shadow:0 0 0 var(--wp-admin-border-width-focus,1px) var(--members-am-accent-use)}.members-am-col-bulk{padding:8px 8px 10px;border-bottom:1px solid var(--members-am-border-on-base,var(--members-am-border-on-base-fallback));-ms-flex-negative:0;flex-shrink:0;background:rgba(0,0,0,0.12)}.members-am-col-bulk-toolbar{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:6px;margin-bottom:0;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch}.members-am-col-bulk-toolbar--grid{display:grid;grid-template-columns:1fr 1fr;gap:5px;margin-bottom:8px}.members-am-col-bulk-toolbar--grid .button.button-small{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:100%;text-align:center;white-space:normal;line-height:1.25;padding:5px 6px;min-height:0}.members-am-col-bulk-toolbar .button.button-small{font-size:11px;min-height:26px;line-height:24px;padding:0 8px;background:var(--members-am-surface-use);border-color:var(--members-am-border-on-surface,var(--members-am-border-on-base,var(--members-am-border-on-base-fallback)));color:var(--members-am-fg-on-surface,var(--members-am-fg-on-base,#f0f0f1))}.members-am-col-bulk-toolbar .button.button-small:hover{background:color-mix(in srgb,var(--members-am-surface-use) 85%,#fff 15%);border-color:var(--wp-components-color-gray-700,#8c8f94);color:var(--members-am-fg-on-surface,var(--members-am-fg-on-base,#f0f0f1))}.members-am-item-lead{-ms-flex-negative:0;flex-shrink:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:22px;padding:2px 0 0}.members-am-collapse-spacer{display:block;width:20px;height:20px;-ms-flex-negative:0;flex-shrink:0}.members-am-collapse-toggle{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:22px;height:22px;margin:0;padding:0;border:0;background:transparent;color:var(--members-am-fg-muted-on-base,var(--members-am-chrome-border,#c3c4c7));border-radius:2px;cursor:pointer;-ms-flex-negative:0;flex-shrink:0}.members-am-collapse-toggle:hover,.members-am-collapse-toggle:focus{color:var(--members-am-fg-on-base,#f0f0f1);background:color-mix(in srgb,var(--members-am-fg-on-base,#f0f0f1) 12%,transparent);outline:0}.members-am-collapse-toggle .dashicons{font-size:18px;width:18px;height:18px}.members-am-item-cb-wrap{-ms-flex-negative:0;flex-shrink:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;padding:2px 4px 0 0}.members-am-item-cb{margin:0;width:16px;height:16px;-ms-flex-negative:0;flex-shrink:0}.members-am-bulk-select{width:100%;max-width:100%;-webkit-box-sizing:border-box;box-sizing:border-box;font-size:12px;line-height:1.4;padding:4px 8px;border-radius:2px;border:1px solid var(--members-am-border-on-base,var(--members-am-border-on-base-fallback));background:var(--members-am-base,#1d2327);color:var(--members-am-fg-on-base,#f0f0f1)}.members-am-bulk-select:focus{border-color:var(--members-am-accent-use);outline:1px solid transparent;-webkit-box-shadow:0 0 0 var(--wp-admin-border-width-focus,1px) var(--members-am-accent-use);box-shadow:0 0 0 var(--wp-admin-border-width-focus,1px) var(--members-am-accent-use)}.members-am-bulk-select optgroup{font-weight:600;color:#a7aaad;background:var(--members-am-base,#1d2327)}.members-am-bulk-select option{color:var(--members-am-fg-on-base,#f0f0f1);background:var(--members-am-base,#1d2327)}.members-am-item.members-am-filter-hidden,.members-am-sep.members-am-filter-hidden,.members-am-item.members-am-collapse-hidden{display:none !important}.members-am-col-move{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:3px;-ms-flex-negative:0;flex-shrink:0}.members-am-sidebar-head .members-am-col-move-btn{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:28px;height:28px;min-height:28px;padding:0 !important;margin:0;line-height:1;background:color-mix(in srgb,currentColor 8%,transparent);border:1px solid color-mix(in srgb,currentColor 24%,transparent);color:inherit;border-radius:3px}.members-am-sidebar-head .members-am-col-move-btn .dashicons{width:18px;height:18px;font-size:18px;line-height:1;opacity:.92}.members-am-sidebar-head .members-am-col-move-btn:hover,.members-am-sidebar-head .members-am-col-move-btn:focus{background:color-mix(in srgb,currentColor 16%,transparent);border-color:color-mix(in srgb,currentColor 42%,transparent);color:inherit}.members-am-sidebar-head .members-am-user-col-close{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:28px;height:28px;min-height:28px;padding:0 !important;margin:0;background:color-mix(in srgb,currentColor 8%,transparent);border:1px solid color-mix(in srgb,currentColor 24%,transparent);color:inherit;border-radius:3px}.members-am-sidebar-head .members-am-user-col-close .dashicons{width:18px;height:18px;font-size:18px;line-height:1}.members-am-sidebar-head .members-am-user-col-close:hover,.members-am-sidebar-head .members-am-user-col-close:focus{background:rgba(214,54,56,0.35);border-color:rgba(214,54,56,0.65);color:#fff}.members-am-sidebar-list{padding:6px 0 12px;overflow-y:auto;max-height:560px}.members-am-item{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;gap:4px;padding:6px 10px 6px 6px;cursor:pointer;border-left:3px solid transparent;font-size:13px}.members-am-item.is-sub{padding-left:22px;font-size:12px;opacity:.95}.members-am-item.is-sub-deep{padding-left:36px}.members-am-sidebar-list .members-am-item{cursor:-webkit-grab;cursor:grab}.members-am-sidebar-list .members-am-item:active{cursor:-webkit-grabbing;cursor:grabbing}.members-am-sort-placeholder{-webkit-box-sizing:border-box;box-sizing:border-box;width:100%;min-height:36px;margin:2px 0;background:color-mix(in srgb,var(--members-am-accent-use) 8%,transparent);border:1px dashed var(--members-am-accent-use);border-radius:2px}.members-am-sidebar-list>.ui-sortable-helper{-webkit-box-sizing:border-box;box-sizing:border-box;width:100% !important;max-width:100%}.members-am-item.is-hidden{opacity:.72}.members-am-item.is-no-cap{opacity:.55}.members-am-item.is-no-cap.is-hidden{opacity:.5}.members-am-item.is-selected{border-left-color:var(--members-am-accent-use);background:color-mix(in srgb,var(--members-am-accent-use) 15%,transparent)}.members-am-item-main{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;min-width:0}.members-am-item-main .dashicons{font-size:18px;width:18px;height:18px}.members-am-item-label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.members-am-item-actions{display:none;gap:2px}.members-am-item:hover .members-am-item-actions{display:-webkit-box;display:-ms-flexbox;display:flex}.members-am-item-actions button{min-height:22px;padding:0 4px;line-height:20px;font-size:11px}.members-am-item-actions button.members-am-eye,.members-am-item-actions button.members-am-user-eye{padding:0 2px}.members-am-item-actions button.members-am-eye .dashicons,.members-am-item-actions button.members-am-user-eye .dashicons{font-size:16px;width:16px;height:16px;line-height:1.2}.members-am-sep{text-align:center;opacity:.35;font-size:11px;padding:4px 0}.members-am-badge{font-size:9px;text-transform:uppercase;padding:1px 4px;border-radius:2px;margin-right:4px;vertical-align:middle}.members-am-badge-new{background:var(--members-am-accent-use);color:var(--wp-components-color-accent-inverted,#fff)}.members-am-badge-edit{background:#dba617;color:var(--members-am-base,#1d2327)}.members-am-badge-nocap{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;background:#dba617;color:var(--members-am-base,#1d2327);padding:2px 5px;border-radius:2px}.members-am-badge-nocap-icon{font-size:14px;width:14px;height:14px;line-height:1}.members-am-badge-hidden{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;background:#d63638;color:#fff;padding:2px 5px;border-radius:2px}.members-am-badge-hidden-icon{font-size:14px;width:14px;height:14px;line-height:1}.members-am-badge-hidden .members-am-badge-hidden-icon,.members-am-badge-nocap .members-am-badge-nocap-icon{color:inherit !important}.members-am-legend{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:16px;margin:0 0 8px;padding:0;font-size:12px;color:var(--members-am-muted,#646970)}.members-am-legend-item{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:4px}.members-am-edit-toolbar{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:12px;margin-bottom:12px}.members-am-level-actions .button{margin-right:6px}.members-am-demote-wrap{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:6px}.members-am-demote-wrap .members-am-demote-select{min-width:200px;max-width:min(420px,100%);font-size:13px}.members-am-edit-grid{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:24px}.members-am-edit-col label{display:block;font-weight:600;margin-bottom:4px}.members-am-colors-hint{margin:0 0 10px}.members-am-icon-details{border:1px solid var(--wp-components-color-gray-200,#dcdcde);border-radius:4px;background:var(--wp-components-color-background,#fff);margin:0}.members-am-icon-details-summary{cursor:pointer;list-style:none;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;gap:8px;padding:10px 12px;margin:0;font-weight:normal}.members-am-icon-details-summary::-webkit-details-marker,.members-am-icon-details-summary::marker{display:none}.members-am-icon-details-summary::before{content:'';-ms-flex-negative:0;flex-shrink:0;width:0;height:0;margin-top:5px;border-top:5px solid transparent;border-bottom:5px solid transparent;border-left:6px solid var(--members-am-muted,#646970);-webkit-transform:rotate(0);transform:rotate(0);-webkit-transition:-webkit-transform .12s ease;transition:-webkit-transform .12s ease;transition:transform .12s ease;transition:transform .12s ease,-webkit-transform .12s ease}.members-am-icon-details[open]>.members-am-icon-details-summary::before{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.members-am-icon-summary-text{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:4px;min-width:0;-webkit-box-flex:1;-ms-flex:1;flex:1}.members-am-icon-details-summary .members-am-edit-section-title{margin:0;font-size:14px}.members-am-icon-current-summary{margin:0;font-size:13px;line-height:1.4;color:var(--members-am-fg-muted-on-base,#646970)}.members-am-icon-details[open]>.members-am-icon-panel{border-top:1px solid var(--wp-components-color-gray-200,#dcdcde)}.members-am-icon-panel{padding:12px;margin:0}.members-am-icon-panel>.members-am-icon-tabs{margin-top:0}.members-am-icon-tabs{margin-bottom:8px}.members-am-icon-tabs .button{margin-right:4px;margin-bottom:4px}.members-am-icon-tabs .button.is-active{background:var(--members-am-accent-use);border-color:var(--members-am-accent-use);color:var(--wp-components-color-accent-inverted,#fff)}.members-am-icon-grid{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:5px;max-height:min(240px,38vh);overflow-y:auto;border:1px solid var(--wp-components-color-gray-200,#dcdcde);border-radius:4px;padding:10px;background:var(--members-am-chrome-bg,#f6f7f7);margin-bottom:10px}.members-am-icon-pick{width:36px;height:36px;padding:0;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;border:1px solid var(--members-am-chrome-border,#c3c4c7);background:var(--wp-components-color-background,#fff);cursor:pointer}.members-am-bulk-visibility-hint{margin:0 0 8px;font-size:12px;color:var(--members-am-fg-muted-on-base,#646970)}.members-am-vis-role-filter-wrap{margin-bottom:8px}.members-am-vis-row.members-am-vis-filter-hidden{display:none}.members-am-vis-row{display:block;margin-bottom:6px;font-weight:normal}.members-am-reset-dropdown{position:absolute;z-index:100000;background:var(--wp-components-color-background,#fff);border:1px solid var(--members-am-chrome-border,#c3c4c7);border-radius:6px;padding:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-shadow:0 4px 12px rgba(0,0,0,0.15);box-shadow:0 4px 12px rgba(0,0,0,0.15);min-width:280px;top:100%;left:0;margin-top:4px;overflow:hidden}.members-am-reset-title{padding:10px 14px;font-weight:600;font-size:13px;border-bottom:1px solid var(--wp-components-color-gray-200,#f0f0f0);color:var(--wp-components-color-foreground,#1d2327)}.members-am-reset-dropdown>.members-am-reset-option:last-of-type{border-bottom:0}.members-am-reset-option{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;gap:10px;padding:12px 14px;border:0;background:0;cursor:pointer;text-align:left;width:100%;border-bottom:1px solid var(--wp-components-color-gray-200,#f0f0f0);-webkit-transition:background .15s;transition:background .15s}.members-am-reset-option:hover{background:var(--members-am-chrome-bg,#f6f7f7)}.members-am-reset-option .dashicons{margin-top:2px;color:var(--members-am-muted,#646970)}.members-am-reset-option-text{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:2px}.members-am-reset-option-text strong{font-size:13px;color:var(--wp-components-color-foreground,#1d2327)}.members-am-reset-option-text small{font-size:12px;color:var(--members-am-muted,#646970)}.members-am-reset-danger:hover{background:#fcf0f1}.members-am-reset-danger .dashicons{color:#d63638}.members-am-reset-danger:hover strong{color:#d63638}@media screen and (max-width:782px){.members-am-columns{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}}.members-am-user-suggestions,.members-am-exempt-suggestions{position:absolute;z-index:100;background:var(--wp-components-color-background,#fff);border:1px solid var(--members-am-chrome-border,#c3c4c7);border-radius:4px;max-height:200px;overflow-y:auto;width:100%;-webkit-box-shadow:0 2px 6px rgba(0,0,0,0.15);box-shadow:0 2px 6px rgba(0,0,0,0.15);top:100%;left:0}.members-am-user-suggestion,.members-am-exempt-suggestion{padding:8px 12px;cursor:pointer;font-size:13px;border-bottom:1px solid var(--wp-components-color-gray-200,#f0f0f0)}.members-am-user-suggestion:hover,.members-am-exempt-suggestion:hover{background:color-mix(in srgb,var(--members-am-accent-use) 8%,var(--wp-components-color-background,#fff))}.members-am-user-suggestion:last-child,.members-am-exempt-suggestion:last-child{border-bottom:0}#members-am-import-file.members-am-import-file-hidden{display:none}.members-am-user-search-wrap{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px}#members-am-user-search.members-am-user-search-input{width:168px;max-width:100%}.members-am-legend-visibility-icon{font-size:14px;width:14px;height:14px;vertical-align:middle}.members-am-legend-nocap-badge{display:inline-block;background:#8c8f94;color:#fff;font-size:9px;padding:1px 4px;border-radius:2px;vertical-align:middle}#members-am-icon-preview.members-am-icon-preview{display:none;width:32px;height:32px;-o-object-fit:contain;object-fit:contain;margin-bottom:6px;border:1px solid #ddd;border-radius:3px;padding:2px;background:#f0f0f1}.members-am-icons .members-am-icon-upload-desc{margin-top:4px}#adminmenu .members-am-menu-badge{display:inline-block;color:#fff;font-size:9px;padding:1px 5px;border-radius:2px;line-height:1.4;vertical-align:middle}
\ No newline at end of file
diff --git a/js/admin-menus.js b/js/admin-menus.js
index 8ee8e8c..d117b16 100644
--- a/js/admin-menus.js
+++ b/js/admin-menus.js
@@ -31,6 +31,8 @@
* { type: 'role', slug: string } | { type: 'user', id: number } — consumed once in openEditPanel().
*/
pendingEditApplyTarget: null,
+ /** Last menu item id the visibility expand panel was opened for (collapse when selection changes). */
+ visibilityDetailsAnchor: null,
};
/** Phase 1: item panel shows placeholder copy only; full field editor remains in markup for later phases. */
@@ -2839,6 +2841,7 @@
function openEditPanel() {
if (!state.selectedId) {
+ state.visibilityDetailsAnchor = null;
$('#members-am-edit-panel').attr('hidden', true);
$('#members-am-phase1-placeholder').attr('hidden', true);
$('#members-am-edit-grid').removeAttr('hidden');
@@ -2919,6 +2922,8 @@
var $rmCustom = $('#members-am-remove-custom');
$rmCustom.prop('hidden', !removableCustom);
+ var visibilityAnchorChanged = state.visibilityDetailsAnchor !== state.selectedId;
+
$('#members-am-visibility-toggles').empty();
var capFromSettings = normalizeCapForCheck(state.settings.capabilities[state.selectedId] || '');
var itemCap = capFromSettings || normalizeCapForCheck((node && node.cap) || '') || 'read';
@@ -2970,8 +2975,17 @@
$('#members-am-visibility-toggles').append($l);
});
+ updateVisibilityCurrentSummary();
+ state.visibilityDetailsAnchor = state.selectedId;
+ if (visibilityAnchorChanged) {
+ setVisibilityDetailsOpen(false);
+ }
+
initColorPickers();
+ syncIconTabFromFields();
renderIconGrid();
+ updateIconCurrentSummary();
+ setIconPickerExpanded(false);
updateDemoteParentSelect();
updatePromoteButtonState();
updateEditPopoverSubtitle();
@@ -3198,9 +3212,139 @@
state.settings.capabilities[state.selectedId] = $('#members-am-item-cap').val() || '';
renderColumns();
updateBadgePreview();
+ updateIconCurrentSummary();
+ updateVisibilityCurrentSummary();
+ }
+
+ /**
+ * Map stored/effective icon type to picker tab id.
+ *
+ * @param {string} eff effectiveIconType result.
+ * @return {'dashicons'|'fontawesome'|'upload'}
+ */
+ function iconTypeToTab(eff) {
+ if (eff === 'image' || eff === 'custom' || eff === 'svg') {
+ return 'upload';
+ }
+ if (eff === 'fontawesome') {
+ return 'fontawesome';
+ }
+ return 'dashicons';
+ }
+
+ /**
+ * Align tab buttons + state.iconTab with current field values.
+ */
+ function syncIconTabFromFields() {
+ var val = $('#members-am-icon-value').val() || '';
+ var decl = $('#members-am-icon-type').val() || 'dashicon';
+ state.iconTab = iconTypeToTab(effectiveIconType(val, decl));
+ $('.members-am-icon-tabs .button').each(function () {
+ var t = $(this).data('tab');
+ var active =
+ (t === 'dashicons' && state.iconTab === 'dashicons') ||
+ (t === 'fontawesome' && state.iconTab === 'fontawesome') ||
+ (t === 'upload' && state.iconTab === 'upload');
+ $(this).toggleClass('is-active', active);
+ });
+ }
+
+ function applyIconTabPanelLayout() {
+ var isUpload = state.iconTab === 'upload';
+ $('#members-am-icon-search').toggle(!isUpload);
+ $('#members-am-icon-grid').toggle(!isUpload);
+ $('#members-am-media-upload, .members-am-icon-upload-desc').toggle(isUpload);
+ }
+
+ function updateIconCurrentSummary() {
+ var i18n = membersAdminMenus.i18n || {};
+ var val = ($('#members-am-icon-value').val() || '').trim();
+ var decl = $('#members-am-icon-type').val() || 'dashicon';
+ var eff = effectiveIconType(val, decl);
+ var $el = $('#members-am-icon-current-summary');
+ if (!val) {
+ $el.text(i18n.iconSummaryDefault || 'No custom icon; the menu default is used.');
+ return;
+ }
+ var display = val;
+ if ((eff === 'image' || eff === 'custom' || eff === 'svg') && val.length > 60) {
+ display = val.slice(0, 28) + '…' + val.slice(-24);
+ }
+ var fmt;
+ if (eff === 'image' || eff === 'custom' || eff === 'svg') {
+ fmt = i18n.iconSummaryImage || 'Custom image: %s';
+ } else if (eff === 'fontawesome') {
+ fmt = i18n.iconSummaryFontAwesome || 'Font Awesome: %s';
+ } else {
+ fmt = i18n.iconSummaryDashicon || 'Dashicon: %s';
+ }
+ $el.text(fmt.replace('%s', display));
+ }
+
+ function setVisibilityDetailsOpen(open) {
+ var el = document.getElementById('members-am-visibility-details');
+ if (el) {
+ el.open = open;
+ }
+ }
+
+ /**
+ * One-line summary for the visibility expand control (checked vs total role rows).
+ */
+ function updateVisibilityCurrentSummary() {
+ var i18n = membersAdminMenus.i18n || {};
+ var $out = $('#members-am-visibility-current-summary');
+ var $rows = $('#members-am-visibility-toggles .members-am-vis-row');
+ if (!$out.length) {
+ return;
+ }
+ if (!$rows.length) {
+ $out.text('');
+ return;
+ }
+ var visible = 0;
+ var total = 0;
+ $rows.each(function () {
+ total++;
+ if ($(this).find('.members-am-vis-cb').is(':checked')) {
+ visible++;
+ }
+ });
+ if (total === 0) {
+ $out.text('');
+ return;
+ }
+ if (visible === total) {
+ $out.text(i18n.visibilitySummaryAllVisible || 'All listed roles show this item.');
+ } else if (visible === 0) {
+ $out.text(i18n.visibilitySummaryNoneVisible || 'Hidden for all listed roles.');
+ } else {
+ var fmt = i18n.visibilitySummaryPartial || '%1$d of %2$d roles show this item.';
+ $out.text(
+ fmt.replace('%1$d', String(visible)).replace('%2$d', String(total))
+ );
+ }
+ }
+
+ function setIconPickerExpanded(expanded) {
+ var i18n = membersAdminMenus.i18n || {};
+ var $panel = $('#members-am-icon-panel');
+ var $btn = $('#members-am-icon-panel-toggle');
+ if (expanded) {
+ $panel.removeAttr('hidden');
+ $btn.attr('aria-expanded', 'true').text(i18n.iconPickerHide || 'Hide icon options');
+ } else {
+ $panel.attr('hidden', 'hidden');
+ $btn.attr('aria-expanded', 'false').text(i18n.iconPickerShow || 'Browse icons…');
+ }
}
function renderIconGrid() {
+ applyIconTabPanelLayout();
+ if (state.iconTab === 'upload') {
+ $('#members-am-icon-grid').empty();
+ return;
+ }
var tab = state.iconTab;
var q = ($('#members-am-icon-search').val() || '').toLowerCase();
var $g = $('#members-am-icon-grid').empty();
@@ -4200,6 +4344,16 @@
renderIconGrid();
});
+ $('#members-am-icon-panel-toggle').on('click', function () {
+ var panel = document.getElementById('members-am-icon-panel');
+ var willExpand = panel && panel.hasAttribute('hidden');
+ setIconPickerExpanded(willExpand);
+ if (willExpand) {
+ syncIconTabFromFields();
+ renderIconGrid();
+ }
+ });
+
$('#members-am-icon-search').on('input', renderIconGrid);
$('#members-am-media-upload').on('click', function (e) {
diff --git a/js/admin-menus.min.js b/js/admin-menus.min.js
index 95fb329..24d86c5 100644
--- a/js/admin-menus.min.js
+++ b/js/admin-menus.min.js
@@ -1 +1 @@
-!function(C){"use strict";var E={settings:C.extend(!0,{},membersAdminMenus.settings),tree:[],activeRoleSlugs:[],selectedId:null,iconTab:"dashicons",previewUserId:null,previewUserRoles:[],userSuggestions:[],mediaFrame:null,allowUnload:!1,syncScroll:function(){try{return"0"!==localStorage.getItem("members_am_sync_scroll")}catch(e){return!0}}(),columnFilters:{},columnBulkSelection:{},collapsedParents:{},exemptUserLabels:{},pendingEditApplyTarget:null},v=!1,n=["#2271b1","#1d4ed8","#0369a1","#0e7490","#0f766e","#15803d","#4d7c0f","#a16207","#c2410c","#ea580c","#b91c1c","#be185d","#db2777","#c026d3","#9333ea","#7c3aed","#6d28d9","#4338ca","#312e81","#92400e","#854d0e","#57534e","#475569","#7c2d12"];function f(e){e=String(e||"");for(var r=2166136261,t=0;t>>0;return n[r%n.length]}var i="",g=!1;function s(){return function r(t){if(null===t)return"null";var e=typeof t;return"string"==e||"number"==e||"boolean"==e?JSON.stringify(t):"undefined"==e?"null":Array.isArray(t)?"["+t.map(function(e){return r(e)}).join(",")+"]":"object"!=e?JSON.stringify(t):"{"+Object.keys(t).sort().map(function(e){return JSON.stringify(e)+":"+r(t[e])}).join(",")+"}"}(E.settings)}function a(){if(!E.allowUnload&&s()!==i)return membersAdminMenus.i18n&&membersAdminMenus.i18n.unsavedChanges||""}var o="members_am_notice",m=5e3;function p(e,r){if(r){var t=C("#members-am-notices");t.length||(C(".members-admin-menus-wrap h1").first().after('
'),t=C("#members-am-notices"));var n,a=C("
",{class:"notice is-dismissible"}).addClass("notice-"+(e||"info"));a.append(C("
").text(r)),t.prepend(a),C(document).trigger("wp-notice-added"),"success"===e&&(n=a,!m||m<1||window.setTimeout(function(){if(n&&n.length&&n.closest("body").length){var e=n.find(".notice-dismiss");e.length?e.trigger("click"):n.fadeTo(200,0,function(){n.slideUp(200,function(){n.remove()})})}},m))}}function l(e,r){try{sessionStorage.setItem(o,JSON.stringify({type:e||"success",message:r}))}catch(e){}}var e=["dashicons-menu","dashicons-admin-dashboard","dashicons-admin-post","dashicons-admin-page","dashicons-admin-media","dashicons-admin-comments","dashicons-admin-appearance","dashicons-admin-plugins","dashicons-admin-users","dashicons-admin-tools","dashicons-admin-settings","dashicons-admin-generic","dashicons-edit","dashicons-plus","dashicons-chart-bar","dashicons-cart","dashicons-products","dashicons-email","dashicons-groups","dashicons-heart","dashicons-star-filled","dashicons-smiley","dashicons-info","dashicons-lock","dashicons-unlock","dashicons-visibility","dashicons-hidden","dashicons-arrow-up","dashicons-arrow-down","dashicons-admin-network","dashicons-performance"],r=["fa-solid fa-house","fa-solid fa-user","fa-solid fa-gear","fa-solid fa-file","fa-solid fa-image","fa-solid fa-cart-shopping","fa-solid fa-chart-line","fa-solid fa-envelope","fa-solid fa-book","fa-solid fa-link","fa-solid fa-bell","fa-solid fa-star","fa-solid fa-heart","fa-solid fa-lock","fa-solid fa-unlock","fa-solid fa-pen","fa-solid fa-trash","fa-solid fa-plus","fa-solid fa-minus"],d="members_am_view_state";function c(){try{localStorage.setItem(d,JSON.stringify({activeRoleSlugs:E.activeRoleSlugs}))}catch(e){}}function u(e){return JSON.parse(JSON.stringify(e))}var b=null;function h(){b=u(E.settings),x()}function x(){var e=C("#members-am-undo");if(e.length){var r=!!b;e.prop("disabled",!r).attr("aria-disabled",r?"false":"true")}}function _(){return membersAdminMenus.roles||[]}function y(){E.settings._meta&&!Array.isArray(E.settings._meta)||(E.settings._meta={version:3,admin_editable:!1,admin_menu_exempt_user_ids:[]}),Array.isArray(E.settings._meta.admin_menu_exempt_user_ids)||(E.settings._meta.admin_menu_exempt_user_ids=[]),E.settings.roles&&!Array.isArray(E.settings.roles)||(E.settings.roles={}),E.settings.users&&!Array.isArray(E.settings.users)||(E.settings.users={}),Array.isArray(E.settings.custom_items)||(E.settings.custom_items=[]),E.settings.capabilities&&!Array.isArray(E.settings.capabilities)||(E.settings.capabilities={})}function A(){y();var e=E.settings._meta.admin_menu_exempt_user_ids;return Array.isArray(e)?e.map(function(e){return parseInt(e,10)}).filter(function(e){return 0 ');n.append(C(' ').text(t));var a=C(' ').attr("aria-label",i.exemptRemove||"Remove").text(i.exemptRemove||"Remove");o?a.prop("disabled",!0).attr("aria-disabled","true"):a.data("userId",e),n.append(a),s.append(n)})}}function O(e){C.getJSON(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_user_search",nonce:membersAdminMenus.nonce,term:e},function(e){if(e.success&&e.data&&e.data.length){var r=e.data.filter(function(e){return e.roles&&-1!==e.roles.indexOf("administrator")});r.length?function(e){C(".members-am-exempt-suggestions").remove();var t=C("#members-am-exempt-search");if(t.length){var r=t.parent();r.css("position","relative");var n=C('
');e.forEach(function(r){n.append(C('
').text(r.label).on("click",function(){var e=parseInt(r.id,10);if(-1!==A().indexOf(e))return C(".members-am-exempt-suggestions").remove(),void t.val("");h(),E.settings._meta.admin_menu_exempt_user_ids=A().concat([e]),E.exemptUserLabels[String(e)]=r.label,C(".members-am-exempt-suggestions").remove(),t.val(""),w()}))}),r.append(n),setTimeout(function(){C(document).one("click",function(){C(".members-am-exempt-suggestions").remove()})},0)}}(r):C(".members-am-exempt-suggestions").remove()}else C(".members-am-exempt-suggestions").remove()})}function R(e){y(),E.settings.roles[e]||(E.settings.roles[e]={hidden:[],order:[],submenu_order:{},overrides:{}});var r=E.settings.roles[e];return r.hidden&&Array.isArray(r.hidden)||(r.hidden=[]),r.order&&Array.isArray(r.order)||(r.order=[]),r.submenu_order&&!Array.isArray(r.submenu_order)||(r.submenu_order={}),r.overrides&&!Array.isArray(r.overrides)||(r.overrides={}),r}function U(e){y(),E.settings.users[e]||(E.settings.users[e]={});var r=E.settings.users[e];return r.hidden&&Array.isArray(r.hidden)||(r.hidden=[]),r.order&&Array.isArray(r.order)||(r.order=[]),r.overrides&&!Array.isArray(r.overrides)||(r.overrides={}),r.submenu_order&&!Array.isArray(r.submenu_order)||(r.submenu_order={}),r}function T(e,r){var t=function(e,r){for(var t=(e||[]).slice().reverse(),n={},a=0;a=a.length||(h(),a.splice(c,1),a.splice(u,0,o?d:r))}}function P(e){var r=e.id||"c";return"members-am-"+String(r).replace(/[^a-z0-9_-]/gi,"-").toLowerCase()}function L(e){return!!e&&0===(-1!==e.indexOf("::")?e.split("::").pop():e).indexOf("members-am-")}function D(e,r){if(!e||!r)return null;for(var t=0;t]+$/i.test(r)?r:0===r.indexOf("//")&&/^\/\/[a-z0-9.-]+\/?/i.test(r)?"https:"+r:"":""}function ie(e,r,t){var n=re(r,t);if("fontawesome"===n&&r){var a=function(e){if(!e||"string"!=typeof e)return"";var r,t=e.trim().split(/\s+/).filter(Boolean);if(!t.length)return"";for(r=0;r",{class:"members-am-fa-icon"}),s=C(" ",{"aria-hidden":"true"});a.split(/\s+/).forEach(function(e){s.addClass(e)}),i.append(s),e.append(i)}else e.append(C(" ",{class:"dashicons dashicons-admin-generic"}))}else if("svg"!==n&&"image"!==n&&"custom"!==n||!r){var o=function(e){if(!e||"string"!=typeof e)return"";var r=e.trim();return te.test(r)?r:""}(r);e.append(C(" ",{class:"dashicons "+(o||"dashicons-admin-generic")}))}else{var m=ae(r);m?e.append(C(" ",{src:m,alt:""}).css({width:"20px",height:"20px",display:"inline-block",verticalAlign:"middle",objectFit:"contain",filter:"none"})):e.append(C(" ",{class:"dashicons dashicons-admin-generic"}))}}function se(){var n=[];return function e(r){var t;for(t=0;t ').attr("data-role",e.slug),i=C(' ').prop("checked",r).attr("title",n).attr("aria-label",n+": "+e.label),s=C(' ').attr("data-role",e.slug).css("--members-am-role-accent",t).toggleClass("is-active",r).toggleClass("members-am-chip--inactive",!r),o=C(' ').attr("data-role",e.slug).append(C(' ').text(e.label));s.append(i,o),a.append(s),m.append(a)}})}function Se(t,n,e,a,i){(function(e,r,t,n,a){a=a||0;var i=r.id,s=q(e,i),o=!ee(e,r.cap),m=R(e).overrides[i]||{},l=m.label||r.title||i,d=C('
').attr("data-id",i).attr("data-menu-parent",t||"").toggleClass("is-hidden",s).toggleClass("is-no-cap",o).toggleClass("is-selected",E.selectedId===i).toggleClass("is-sub",0 ');if(p){ce(c);var b=!!E.collapsedParents[c][i],h=u.expandSubmenus||"Expand submenu items",v=u.collapseSubmenus||"Collapse submenu items";C(' ').attr("aria-expanded",!b).attr("aria-label",(b?h:v)+": "+l).append(C(' ').addClass(b?"dashicons-arrow-right-alt2":"dashicons-arrow-down-alt2")).on("click",function(e){e.stopPropagation(),ce(c),E.collapsedParents[c][i]=!E.collapsedParents[c][i],Pe()}).appendTo(f),d.toggleClass("is-collapse-collapsed",b)}else f.append(C(' '));d.append(f);var g=u.bulkCheckboxAria||"Include in bulk actions",x=C(' '),_=C(' ').prop("checked",!!E.columnBulkSelection[c].ids[i]).attr("aria-label",g+": "+l).on("click",function(e){e.stopPropagation()}).on("change",function(e){e.stopPropagation(),de(c,i,C(this).prop("checked")),Pe()});x.append(_),d.append(x);var y=C('
');0===a&&ie(y,m.icon||r.icon,m.icon_type||r.icon_type);r.custom&&y.append(C('custom '));m.label&&y.append(C('edit '));if(y.append(C(' ').text(l)),m.badge){var A=m.badge_bg||"#d63638";y.append(C(' ').text(m.badge).css({backgroundColor:A,color:"#fff",fontSize:"9px",padding:"1px 5px",borderRadius:"2px",marginLeft:"4px",whiteSpace:"nowrap"}))}if(s){var k=u.rowBadgeHidden||"HIDDEN",w=u.rowBadgeHiddenDetail||"Item manually hidden for this role.";y.append(C(' ').attr("title",w).attr("role","img").attr("aria-label",k+". "+w).append(C(' ')))}if(o){var O=membersAdminMenus.i18n||{},S=O.noAccessTitlePattern&&O.noAccessTitlePattern.replace("%s",r.cap||"read")||"This role does not have the '"+(r.cap||"read")+"' capability on this role object. Users with multiple roles may still access the screen. Manage capabilities in Members → Roles.",I=O.rowBadgeNoAccess||"NO ACCESS";y.append(C(' ').attr("title",S).attr("role","img").attr("aria-label",I+". "+S).append(C(' ')))}d.append(y),m.color_bg&&d.css("background-color",m.color_bg);m.color_text&&d.find(".members-am-item-label").css("color",m.color_text);m.color_icon&&(d.find(".dashicons").css("color",m.color_icon),d.find(".members-am-fa-icon i").css("color",m.color_icon),d.find("img").css("filter","none"));var M=C('
');M.append(Re(s,l,"members-am-eye"),C(' ').text("↑"),C(' ').text("↓")),d.append(M),n.append(d)})(t,n,e,a,i=i||0),n.children&&n.children.length&&G(t,n.id).forEach(function(e){var r=function(e,r,t){if(-1!==t.indexOf("::")){var n=j(t);return n&&H(t,e)===r?n:null}var a=j(Y(r,t));return a||(-1===t.indexOf("::")&&(R(e).overrides[t]||{}).parent===r?j(t):null)}(t,n.id,e);r&&H(r.id,t)===n.id&&Se(t,r,n.id,a,i+1)})}function Ie(t,n,e,a,i,s){s=s||0,i.append(function(r,e,t,n){n=n||0;var a=T(t,r.id),i=a.label||r.title,s=function(e,r){var t=U(e);if(-1!==t.hidden.indexOf(r))return!0;if(e===E.previewUserId&&E.previewUserRoles&&E.previewUserRoles.length){var n,a=E.previewUserRoles;for(n=0;n").addClass(l).attr("data-id",r.id).attr("data-menu-parent",e||""),c="u:"+t;oe(c);var u=membersAdminMenus.i18n||{},p=r.children&&r.children.length,f=C(' ');if(p){ce(c);var b=!!E.collapsedParents[c][r.id],h=u.expandSubmenus||"Expand submenu items",v=u.collapseSubmenus||"Collapse submenu items";C(' ').attr("aria-expanded",!b).attr("aria-label",(b?h:v)+": "+i).append(C(' ').addClass(b?"dashicons-arrow-right-alt2":"dashicons-arrow-down-alt2")).on("click",function(e){e.stopPropagation(),ce(c),E.collapsedParents[c][r.id]=!E.collapsedParents[c][r.id],Pe()}).appendTo(f),d.toggleClass("is-collapse-collapsed",b)}else f.append(C(' '));d.append(f);var g=u.bulkCheckboxAria||"Include in bulk actions",x=C(' '),_=C(' ').prop("checked",!!E.columnBulkSelection[c].ids[r.id]).attr("aria-label",g+": "+i).on("click",function(e){e.stopPropagation()}).on("change",function(e){e.stopPropagation(),de(c,r.id,C(this).prop("checked")),Pe()});x.append(_),d.append(x);var y=C('
');0===n&&ie(y,a.icon||r.icon,a.icon_type||r.icon_type);r.custom&&y.append(C('custom '));a.label&&y.append(C('edit '));if(y.append(C(' ').text(i)),a.badge){var A=a.badge_bg||"#d63638";y.append(C(' ').text(a.badge).css({backgroundColor:A,color:"#fff",fontSize:"9px",padding:"1px 5px",borderRadius:"2px",marginLeft:"4px",whiteSpace:"nowrap"}))}if(s){var k=u.rowBadgeHidden||"HIDDEN",w=u.rowBadgeHiddenDetail||"Item manually hidden for this role.";y.append(C(' ').attr("title",w).attr("role","img").attr("aria-label",k+". "+w).append(C(' ')))}if(o){var O=membersAdminMenus.i18n||{},S=O.noAccessTitlePattern&&O.noAccessTitlePattern.replace("%s",r.cap||"read")||"This user does not have the '"+(r.cap||"read")+"' capability.",I=O.rowBadgeNoAccess||"NO ACCESS";y.append(C(' ').attr("title",S).attr("role","img").attr("aria-label",I+". "+S).append(C(' ')))}d.append(y),a.color_bg&&d.css("background-color",a.color_bg);a.color_text&&d.find(".members-am-item-label").css("color",a.color_text);a.color_icon&&(d.find(".dashicons").css("color",a.color_icon),d.find(".members-am-fa-icon i").css("color",a.color_icon));var M=C('
');return M.append(Re(s,i,"members-am-user-eye"),C(' ').text("↑"),C(' ').text("↓")),d.append(M),d.on("click",function(e){C(e.target).closest("button, .members-am-item-cb, .members-am-collapse-toggle").length||(E.selectedId=r.id,Ze())}),d}(n,e,t,s)),n.children&&n.children.length&&function(e,r){var t=I(e,r),n=U(e),a=n.submenu_order&&n.submenu_order[r];if(!a||!a.length)return t.slice();var i=a.filter(function(e){return-1!==t.indexOf(e)});return t.forEach(function(e){-1===i.indexOf(e)&&i.push(e)}),i}(t,n.id).forEach(function(e){var r=function(e,r,t){if(-1!==t.indexOf("::")){var n=j(t);return n&&J(t,e)===r?n:null}var a=j(Y(r,t));if(a)return a;if(-1===t.indexOf("::")){var i=U(e);if((i.overrides&&i.overrides[t]||{}).parent===r)return j(t)}return null}(t,n.id,e);r&&J(r.id,t)===n.id&&Ie(t,r,n.id,a,i,s+1)})}function Me(e,r){var a=(r||"").trim().toLowerCase(),t=e.children(".members-am-item");if(!a)return t.removeClass("members-am-filter-hidden"),void e.children(".members-am-sep").removeClass("members-am-filter-hidden");var s={};t.each(function(){var e=C(this),r=e.attr("data-id"),t=(e.find(".members-am-item-label").first().text()||"").toLowerCase(),n=(r||"").toLowerCase();s[r]=-1!==t.indexOf(a)||-1!==n.indexOf(a)});var o={};t.each(function(){var e=C(this).attr("data-id"),r=C(this).attr("data-menu-parent")||"";o[r]||(o[r]=[]),o[r].push(e)});var m={};function l(e){var r,t=s[e],n=o[e]||[],a=!1;for(r=0;r '),o=C(' ').attr("placeholder",a).attr("aria-label",i).val(n);s.append(o),e.find(".members-am-sidebar-head").first().after(s),o.on("input",function(){E.columnFilters[t]=C(this).val(),Me(r,C(this).val())}),Me(r,n)}function Ee(e,r){var i=0===String(r).indexOf("u:"),s=i?parseInt(r.replace(/^u:/,""),10):0,o=i?null:r,m=r,l=membersAdminMenus.i18n||{},t=C('
').attr("data-column-key",m),n=C('
');n.append(C(' ').text(l.bulkSelectVisible||"Select visible"),C(' ').text(l.bulkClearSelection||"Clear selection"),C(' ').text(l.collapseAllMenus||"Collapse submenus"),C(' ').text(l.expandAllMenus||"Expand submenus"));var a=C(' ').attr("aria-label",l.bulkVisibilityLabel||"Menu visibility for this column");a.append(C(' ').text(l.bulkActionsPlaceholder||"Choose visibility…"));var d=C(" ").attr("label",l.bulkGroupWholeColumn||"Whole column");d.append(C(' ').text(l.bulkShowAllItems||"Show every menu item"),C(' ').text(l.bulkHideAllItems||"Hide every menu item"));var c=C(" ").attr("label",l.bulkGroupCheckedRows||"Checked rows");c.append(C(' ').text(l.bulkKeepOnlyCheckedVisible||"Hide everything except selected (and parents)"),C(' ').text(l.bulkHideCheckedItems||"Hide checked items"),C(' ').text(l.bulkShowCheckedItems||"Show selected items")),a.append(d,c),t.append(n,a);var u=e.find(".members-am-col-filter").first();u.length?u.after(t):e.find(".members-am-sidebar-head").first().after(t),a.on("change",function(){var e=C(this).val();if(C(this).val(""),e)if(!("keep-only-checked"===e||"hide-checked"===e||"show-checked"===e)||me(m).length){if("keep-only-checked"===e){if(!window.confirm(l.bulkConfirmKeepOnlyChecked||"Hide all menu items except the selected ones and their parent menus?"))return}else if("hide-all"===e){if(!window.confirm(l.bulkConfirmHideAll||"Hide every menu item in this column?"))return}else if("hide-checked"===e&&!window.confirm(l.bulkConfirmHideChecked||"Hide the checked items (and their submenus where applicable)?"))return;var r,t,n,a;h(),i?"show-all"===e?U(s).hidden=[]:"hide-all"===e?(n=s,a=se(),U(n).hidden=a.slice()):"keep-only-checked"===e?function(e,t){var r=me(e);if(r.length){var n={};r.forEach(function(e){for(var r=e;r;)n[r]=!0,r=J(r,t)});var a=se(),i=U(t).hidden;i.length=0,a.forEach(function(e){n[e]||i.push(e)})}}(m,s):"hide-checked"===e?ve(m,s):"show-checked"===e&&ge(m,s):"show-all"===e?R(o).hidden=[]:"hide-all"===e?(r=o,t=se(),R(r).hidden=t.slice()):"keep-only-checked"===e?function(e,t){var r=me(e);if(r.length){var n={};r.forEach(function(e){for(var r=e;r;)n[r]=!0,r=H(r,t)});var a=se(),i=R(t).hidden;i.length=0,a.forEach(function(e){n[e]||i.push(e)})}}(m,o):"hide-checked"===e?be(m,o):"show-checked"===e&&he(m,o),Ze()}else p("warning",l.bulkSelectCheckedFirst||"Check one or more menu items first.")})}function Re(e,r,t){var n=membersAdminMenus.i18n||{},a=e?n.showInMenu||"Show in menu":n.hideFromMenu||"Hide from menu";return C(' ').addClass(t||"members-am-eye").attr("title",a).attr("aria-label",a+": "+r).attr("aria-pressed",e?"true":"false").append(C(' ').addClass(e?"dashicons-hidden":"dashicons-visibility"))}function Ue(e,r){return r&&-1!==r.indexOf("::")&&F(r)===e?-1!==(t=r).indexOf("::")?t.split("::").pop():t:r;var t}function Te(){C.fn.sortable&&C("#members-am-columns .members-am-sidebar-list").each(function(){var e=C(this);e.data("ui-sortable")&&e.sortable("destroy");var r=e.closest(".members-am-column"),t=r.data("role"),n=r.data("user");e.sortable({axis:"y",distance:6,items:"> .members-am-item, > .members-am-sep",cancel:".members-am-item-actions button, .members-am-item-cb, .members-am-item-cb-wrap, .members-am-collapse-toggle",placeholder:"members-am-sort-placeholder",forcePlaceholderSize:!0,tolerance:"pointer",start:function(){h()},update:function(){n?(E.pendingEditApplyTarget={type:"user",id:parseInt(String(n),10)},function(e,r){var a=[],i={};e.children().each(function(){var e=C(this);if(e.hasClass("members-am-sep")){var r=e.attr("data-sep-id");r&&a.push(r)}else if(e.hasClass("members-am-item")){var t=e.attr("data-id");if(t){var n=e.attr("data-menu-parent");void 0===n||""===n?a.push(t):(i[n]||(i[n]=[]),i[n].push(Ue(n,t)))}}});var t=U(r);t.order=a,t.submenu_order=i}(e,n)):t?(E.pendingEditApplyTarget={type:"role",slug:String(t)},function(e,r){var a=[],i={};e.children().each(function(){var e=C(this);if(e.hasClass("members-am-sep")){var r=e.attr("data-sep-id");r&&a.push(r)}else if(e.hasClass("members-am-item")){var t=e.attr("data-id");if(t){var n=e.attr("data-menu-parent");void 0===n||""===n?a.push(t):(i[n]||(i[n]=[]),i[n].push(Ue(n,t)))}}});var t=R(r);t.order=a,t.submenu_order=i}(e,t)):E.pendingEditApplyTarget=null,Je(),window.setTimeout(function(){Pe()},0)}})})}function Pe(){var t=C("#members-am-columns"),a={};t.find(".members-am-column").each(function(){var e=C(this).data("role"),r=C(this).data("user"),t=e?String(e):null!=r&&""!==r?"u:"+r:null;if(t){var n=C(this).find(".members-am-sidebar-list");n.length&&(a[t]=n.scrollTop())}}),t.empty();var e=E.activeRoleSlugs.slice();if(e.length||E.previewUserId){if(e.forEach(function(e){var r=C("
",{class:"members-am-column"}).attr("data-role",e);!function(t,e){e.empty();var r=C(''),n=(_().filter(function(e){return e.slug===t})[0]||{}).label||t,a=f(t),i=C('');i.append(C('').css("background",a),C('').text(n)),r.append(i);var s=membersAdminMenus.i18n||{},o=s.moveColumnLeft||"Move column left",m=s.moveColumnRight||"Move column right";r.append(C(' ').append(C(' ').attr("aria-label",o).attr("title",o).append(C(' ')),C(' ').attr("aria-label",m).attr("title",m).append(C(' ')))),e.append(r);var l=C('');K(t).forEach(function(e){if(0!==e.indexOf("sep-")){var r=j(e);r&&Se(t,r,null,l,0)}else l.append(C('
').attr("data-sep-id",e).text("—"))}),e.append(l),pe(l,t),Ce(e,l,t),Ee(e,t)}(e,r),t.append(r),a[e]&&r.find(".members-am-sidebar-list").scrollTop(a[e])}),E.previewUserId){var n=E.previewUserId,r=C("
",{class:"members-am-column members-am-user-column"}).attr("data-user",String(n)),i=C(''),s=C('');s.append(C(''),C('').text(E.previewUserLabel||"User #"+n)),i.append(s);var o=(membersAdminMenus.i18n||{}).closeUserColumn||"Remove user preview column";i.append(C(' ').attr("aria-label",o).attr("title",o).append(C(' ')).on("click",function(){E.previewUserId=null,E.previewUserLabel=null,E.previewUserRoles=[],Ze()})),r.append(i);var m=C(''),l=U(n);S(n).forEach(function(e){if(0!==e.indexOf("sep-")){var r=j(e);r&&Ie(n,r,null,l,m,0)}else m.append(C('
').attr("data-sep-id",e).text("——"))}),r.append(m),pe(m,"u:"+n),Ce(r,m,"u:"+n),Ee(r,"u:"+n),t.append(r);var d="u:"+n;a[d]&&r.find(".members-am-sidebar-list").scrollTop(a[d])}if(E.syncScroll){var c=t.find(".members-am-sidebar-list"),u=!1;c.on("scroll",function(){if(!u){u=!0;var e=C(this).scrollTop();c.not(this).scrollTop(e),u=!1}})}Te()}else{var p=membersAdminMenus.i18n&&membersAdminMenus.i18n.columnsAllHidden||"";t.append(C('
').text(p))}}function Le(){var e=C("#members-am-copy-from").val();if(C("#members-am-copy-to option").prop("disabled",!1),e&&C('#members-am-copy-to option[value="'+e+'"]').prop("disabled",!0),C("#members-am-copy-to").val()===e){var r=C("#members-am-copy-to option:not(:disabled)").first();r.length&&r.prop("selected",!0)}}function De(){var e=C("#members-am-badge-preview");if(e.length){var r=String(C("#members-am-badge-text").val()||"").trim();r=r||"Badge";var t=String(C("#members-am-badge-bg").val()||"").trim();t&&"#"!==t||(t="#2271b1");var n=.45").val("__all__").text(r.applyToAllRoles||"All roles")),E.activeRoleSlugs.forEach(function(r){var e=(_().filter(function(e){return e.slug===r})[0]||{}).label||r;t.append(C(" ").val(r).text(e))}),E.previewUserId&&t.append(C(" ").val("__user__"+E.previewUserId).text(E.previewUserLabel||"User #"+E.previewUserId)),e&&t.find("option").filter(function(){return C(this).val()===e}).length&&t.val(e)}function Je(){if(!E.selectedId)return C("#members-am-edit-panel").attr("hidden",!0),C("#members-am-phase1-placeholder").attr("hidden",!0),C("#members-am-edit-grid").removeAttr("hidden"),C(".members-am-edit-toolbar").removeAttr("hidden"),void C("#members-am-edit-subtitle").text("");C("#members-am-edit-panel").removeAttr("hidden");var e=j(E.selectedId);if(v){var r=membersAdminMenus.i18n||{};C("#members-am-edit-title").text(e?e.title:E.selectedId);var t=E.activeRoleSlugs[0]||"",n=t;return _().forEach(function(e){e.slug===t&&(n=e.label)}),C("#members-am-edit-subtitle").text(t?n:""),C("#members-am-phase1-placeholder .members-am-phase1-placeholder-text").text(r.popoverPhase1Body||"Detailed item editing is coming in a future update."),C("#members-am-phase1-placeholder").removeAttr("hidden"),C("#members-am-edit-grid").attr("hidden","hidden"),C(".members-am-edit-toolbar").attr("hidden","hidden"),C(".members-am-edit-popover-body").attr("hidden","hidden"),C(".members-am-edit-popover-footer").attr("hidden","hidden"),void setTimeout(Fe,0)}C("#members-am-phase1-placeholder").attr("hidden",!0),C("#members-am-edit-grid").removeAttr("hidden"),C(".members-am-edit-toolbar").removeAttr("hidden"),C(".members-am-edit-popover-body").removeAttr("hidden"),C(".members-am-edit-popover-footer").removeAttr("hidden"),He(),function(){var e=C("#members-am-edit-target-role");if(e.length&&E.pendingEditApplyTarget){var r=E.pendingEditApplyTarget,t=E.pendingEditApplyTarget=null;"user"===r.type&&r.id?t="__user__"+String(r.id):"role"===r.type&&r.slug&&(t=String(r.slug)),t&&e.find("option").filter(function(){return C(this).val()===t}).length&&e.val(t)}}();var a=ye()||{};C("#members-am-edit-title").text(e?e.title:E.selectedId),C("#members-am-edit-label").val(a.label||e&&e.title||"");var i=L(E.selectedId);C("#members-am-edit-url-wrap").toggle(i);var s=membersAdminMenus.i18n&&membersAdminMenus.i18n.urlDefaultPlaceholder||"Default";C("#members-am-edit-url").attr("placeholder",s).val(i&&(a.url||e&&e.url)||"").data("default-url",e&&e.url||""),C("#members-am-icon-type").val(a.icon_type||"dashicon"),C("#members-am-icon-value").val(a.icon||e&&e.icon||"");var o=a.icon||e&&e.icon||"",m=re(o,a.icon_type||e&&e.icon_type||"");if("image"!==m&&"custom"!==m&&"svg"!==m||!o)C("#members-am-icon-preview").hide().removeAttr("src");else{var l=ae(o);l?C("#members-am-icon-preview").show().attr("src",l):C("#members-am-icon-preview").hide().removeAttr("src")}C("#members-am-color-bg").val(a.color_bg||""),C("#members-am-color-text").val(a.color_text||""),C("#members-am-color-icon").val(a.color_icon||""),C("#members-am-badge-text").val(a.badge||""),C("#members-am-badge-bg").val(a.badge_bg||""),C("#members-am-item-cap").attr("placeholder",e&&e.cap?e.cap+" (default)":"").val(E.settings.capabilities[E.selectedId]||"");var d=Boolean(e&&e.customId&&L(E.selectedId));C("#members-am-remove-custom").prop("hidden",!d),C("#members-am-visibility-toggles").empty();var c=Z(E.settings.capabilities[E.selectedId]||"")||Z(e&&e.cap||"")||"read",u=[];if(_().forEach(function(e){"administrator"===e.slug&&!E.settings._meta.admin_editable||u.push(e)}),10<=u.length){var p=membersAdminMenus.i18n&&membersAdminMenus.i18n.filterRolesVisibility||"Filter roles…",f=membersAdminMenus.i18n&&membersAdminMenus.i18n.filterRolesVisibilityLabel||"Filter roles in this list",b=C('
'),h=C(' ').attr("placeholder",p).attr("aria-label",f);b.append(h),C("#members-am-visibility-toggles").append(b),h.on("input",function(){var a=(C(this).val()||"").trim().toLowerCase();C("#members-am-visibility-toggles .members-am-vis-row").each(function(){var e=C(this),r=(e.find("span").first().text()||"").toLowerCase(),t=String(e.find(".members-am-vis-cb").data("role")||"").toLowerCase(),n=!a||-1!==r.indexOf(a)||-1!==t.indexOf(a);e.toggleClass("members-am-vis-filter-hidden",!n)})})}u.forEach(function(e){var r=q(e.slug,E.selectedId),t=ee(e.slug,c),n=C(' ').attr("data-role",e.slug).prop("checked",!r&&t);t||n.prop("disabled",!0);var a=C(' ').append(n,C(" ").text(e.label));t||(a.append(C(" ").text(" — no capability").css({color:"#999",fontStyle:"italic",marginLeft:"4px"})),a.css("opacity","0.5")),C("#members-am-visibility-toggles").append(a)}),Be(),C(".members-am-color").wpColorPicker({change:function(){g||setTimeout(function(){ze()},20)},clear:function(){g||setTimeout(function(){ze()},20)}}),g=!0,C(".members-am-color").each(function(){var e=C(this),r=String(e.val()||"").trim();if(r&&"#"!==r&&(e.closest(".wp-picker-container").length||e.data("wpWpColorPicker")))try{e.wpColorPicker("color",r)}catch(e){}}),g=!1,$e(),function(){var e=C(".members-am-demote-wrap"),t=C("#members-am-demote-parent"),r=C("#members-am-demote");if(!E.selectedId)return e.attr("hidden",!0);var n=xe()[0]||E.activeRoleSlugs[0];if(n&&B(n,E.selectedId))return e.attr("hidden",!0);e.removeAttr("hidden");var a=E.selectedId,i=n?H(a,n):null,s=membersAdminMenus.i18n&&membersAdminMenus.i18n.selectParentMenu||"";t.empty().append(C(" ").val("").text(s));var o=0;E.tree.forEach(function(e){if(e&&e.id&&e.id!==a&&(!i||e.id!==i)){var r=e.title&&String(e.title).trim()?e.title:e.id;t.append(C(" ").val(e.id).text(r)),o++}});var m=0 ');if("dashicons"===n)r.append(C(" ",{class:"dashicons "+e}));else{var t=C(" ",{"aria-hidden":"true"});e.split(/\s+/).forEach(function(e){t.addClass(e)}),r.append(t)}r.on("click",function(){C("#members-am-icon-value").val(e),C("#members-am-icon-type").val("dashicons"===n?"dashicon":"fontawesome"),ze()}),i.append(r)}})}function Ve(e,r){var t=E.activeRoleSlugs.indexOf(e);if(-1!==t){var n=t+r;if(!(n<0||n>=E.activeRoleSlugs.length)){h();var a=E.activeRoleSlugs[t];E.activeRoleSlugs[t]=E.activeRoleSlugs[n],E.activeRoleSlugs[n]=a,c(),Ze()}}}function We(e,r,t){var n=R(e).overrides[r]||{},a=null;if("__promote__"===n.parent?a=null:-1!==r.indexOf("::")?a=F(r):n.parent&&"__promote__"!==n.parent&&(a=n.parent),a){var i=R(e).submenu_order;i[a]||(i[a]=Q(e,a));var s=i[a],o=-1!==r.indexOf("::")?r.split("::").pop():r;if(-1===(l=s.indexOf(o)))return;if((d=l+t)<0||d>=s.length)return;h();var m=s[l];s[l]=s[d],s[d]=m}else{R(e).order&&R(e).order.length||(R(e).order=z());var l,d,c=R(e).order;if(-1===(l=c.indexOf(r)))return;if((d=l+t)<0||d>=c.length)return;h();var u=c[l];c[l]=c[d],c[d]=u}Ze()}function Ke(e){var r=C("#members-am-toolbar-loading");r.removeAttr("hidden"),r.find(".spinner").addClass("is-active"),r.find(".members-am-loading-text").text(e||""),C("#members-am-save, #members-am-reset, #members-am-import, #members-am-copy-apply, #members-am-undo").prop("disabled",!0)}function Ge(){var e=C("#members-am-toolbar-loading");e.attr("hidden",!0),e.find(".spinner").removeClass("is-active"),e.find(".members-am-loading-text").text(""),C("#members-am-save, #members-am-reset, #members-am-import, #members-am-copy-apply").prop("disabled",!1),x()}function Qe(e){Ke(e||membersAdminMenus.i18n&&membersAdminMenus.i18n.saving||"Saving…");var a=membersAdminMenus.i18n&&membersAdminMenus.i18n.networkError||"Could not save settings. Check your connection and try again.";C.ajax({url:membersAdminMenus.ajaxUrl,type:"POST",dataType:"json",timeout:6e4,data:{action:"members_admin_menus_save",nonce:membersAdminMenus.nonce,settings:JSON.stringify(E.settings)}}).done(function(e){if(e&&void 0!==e.success){if(e.success)return i=s(),b=null,x(),void p("success",e.data&&e.data.message||membersAdminMenus.i18n&&membersAdminMenus.i18n.saved||"Settings saved.");p("error",e.data&&e.data.message?e.data.message:"Error")}else p("error",a)}).fail(function(e,r){if("abort"!==r){var t=a;if(e&&e.responseJSON&&void 0!==e.responseJSON.data){var n=e.responseJSON.data;"string"==typeof n&&n?t=n:n&&"string"==typeof n.message&&n.message&&(t=n.message)}p("error",t)}}).always(function(){Ge()})}function Ye(e,r){var t,n=membersAdminMenus.i18n||{};if(t="role"===e&&"administrator"===r?n.confirmResetAdministrator||"Reset all menu settings for the Administrator role? This cannot be undone.":"all"!==e&&"role"===e&&r?n.confirmResetRole||"Reset all settings for this role? This cannot be undone.":n.confirmResetAllRoles||"Reset ALL menu settings for every role? This cannot be undone.",confirm(t)){Ke(membersAdminMenus.i18n&&membersAdminMenus.i18n.resetting||"Resetting…");var a=!1;C.post(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_reset",nonce:membersAdminMenus.nonce,scope:e||"all",role:r||""}).done(function(e){if(e.success)return l("success",e.data&&e.data.message||membersAdminMenus.i18n&&membersAdminMenus.i18n.resetComplete||"Reset complete."),E.allowUnload=!0,a=!0,void location.reload();p("error",e.data&&e.data.message?e.data.message:membersAdminMenus.i18n&&membersAdminMenus.i18n.resetFailed||"Reset failed.")}).fail(function(){p("error",membersAdminMenus.i18n&&membersAdminMenus.i18n.resetNetworkError||membersAdminMenus.i18n.networkError||"Could not reset settings. Check your connection and try again.")}).always(function(){a||Ge()})}}function qe(e){C.getJSON(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_user_search",nonce:membersAdminMenus.nonce,term:e},function(e){e.success&&e.data&&e.data.length?function(e){C(".members-am-user-suggestions").remove();var r=C("#members-am-user-search").parent();r.css("position","relative");var t=C('
');e.forEach(function(e){t.append(C('
').text(e.label).data("userId",e.id).on("click",function(){!function(e,r,t){E.previewUserId=e,E.previewUserLabel=r||"User #"+e,E.previewUserRoles=t||[],y(),E.settings.users[e]||(E.settings.users[e]={});Ze()}(e.id,e.label,e.roles),C(".members-am-user-suggestions").remove(),C("#members-am-user-search").val("")}))}),r.append(t),setTimeout(function(){C(document).one("click",function(){C(".members-am-user-suggestions").remove()})},0)}(e.data):C(".members-am-user-suggestions").remove()})}function Xe(){var r;C(document).on("change","#members-am-role-chips .members-am-role-chip-cb",function(){var e=C(this).closest(".members-am-role-chip-wrap").data("role"),r=C(this).prop("checked"),t=E.activeRoleSlugs.indexOf(e);if(r)-1===t&&E.activeRoleSlugs.push(e);else{if(E.activeRoleSlugs.length<=1)return void C(this).prop("checked",!0);-1!==t&&E.activeRoleSlugs.splice(t,1)}c(),Oe(),Ze()}),C(document).on("click","#members-am-role-chips .members-am-chip-pill-action",function(e){e.preventDefault();var r=C(this).data("role");if(-1===E.activeRoleSlugs.indexOf(r))return E.activeRoleSlugs.push(r),c(),Oe(),Ze(),void setTimeout(function(){we(r)},0);we(r)}),C("#members-am-columns").on("click",".members-am-bulk-select-visible",function(e){e.preventDefault(),e.stopPropagation();var r=C(this).closest(".members-am-col-bulk").attr("data-column-key");if(r){var t=C(this).closest(".members-am-column").find(".members-am-sidebar-list");oe(r),t.find(".members-am-item:not(.members-am-filter-hidden):not(.members-am-collapse-hidden)").each(function(){var e=C(this).attr("data-id");e&&de(r,e,!0)}),Pe()}}).on("click",".members-am-bulk-clear-selection",function(e){e.preventDefault(),e.stopPropagation();var r=C(this).closest(".members-am-col-bulk").attr("data-column-key");r&&(E.columnBulkSelection[r]={ids:{}},Pe())}).on("click",".members-am-collapse-all",function(e){e.preventDefault(),e.stopPropagation();var r,t=C(this).closest(".members-am-col-bulk").attr("data-column-key");t&&(ce(r=t),fe().forEach(function(e){E.collapsedParents[r][e]=!0}),Pe())}).on("click",".members-am-expand-all",function(e){e.preventDefault(),e.stopPropagation();var r,t=C(this).closest(".members-am-col-bulk").attr("data-column-key");t&&(r=t,E.collapsedParents[r]={},Pe())}).on("click",".members-am-item",function(e){if(!C(e.target).closest("button, .members-am-item-cb, .members-am-collapse-toggle").length){var r=C(this).closest(".members-am-column"),t=r.data("role"),n=r.data("user");null!=n&&""!==String(n)?E.pendingEditApplyTarget={type:"user",id:parseInt(String(n),10)}:E.pendingEditApplyTarget=t?{type:"role",slug:String(t)}:null,E.selectedId=C(this).data("id"),Pe(),Je()}}).on("click",".members-am-eye",function(e){e.stopPropagation();var r,t,n,a,i=C(this).closest(".members-am-column").data("role"),s=C(this).closest(".members-am-item").data("id");h(),r=s,n=R(i).hidden,-1===(a=n.indexOf(r))?(n.push(r),(t=j(r))&&t.children&&t.children.length&&t.children.forEach(function(e){-1===n.indexOf(e.id)&&n.push(e.id)})):(n.splice(a,1),(t=j(r))&&t.children&&t.children.length&&t.children.forEach(function(e){var r=n.indexOf(e.id);-1!==r&&n.splice(r,1)})),Ze()}).on("click",".members-am-up",function(e){e.stopPropagation(),We(C(this).closest(".members-am-column").data("role"),C(this).closest(".members-am-item").data("id"),-1)}).on("click",".members-am-down",function(e){e.stopPropagation(),We(C(this).closest(".members-am-column").data("role"),C(this).closest(".members-am-item").data("id"),1)}).on("click",".members-am-col-left",function(e){e.stopPropagation(),Ve(C(this).closest(".members-am-column").data("role"),-1)}).on("click",".members-am-col-right",function(e){e.stopPropagation(),Ve(C(this).closest(".members-am-column").data("role"),1)}).on("click",".members-am-user-eye",function(e){e.stopPropagation();var r,t,n,a,i=C(this).closest(".members-am-column").data("user"),s=C(this).closest(".members-am-item").data("id");i&&s&&(h(),r=s,t=U(i),n=t.hidden.indexOf(r),a=j(r),-1===n?(t.hidden.push(r),a&&a.children&&a.children.forEach(function(e){-1===t.hidden.indexOf(e.id)&&t.hidden.push(e.id)})):(t.hidden.splice(n,1),a&&a.children&&a.children.forEach(function(e){var r=t.hidden.indexOf(e.id);-1!==r&&t.hidden.splice(r,1)})),Pe())}).on("click",".members-am-user-up, .members-am-user-down",function(e){e.stopPropagation();var r=C(this).closest(".members-am-column").data("user"),t=C(this).closest(".members-am-item").data("id");if(r&&t){var n=C(this).hasClass("members-am-user-up");M(r,t,C(this).closest(".members-am-item").hasClass("is-sub")?J(t,r):null,n?-1:1),Pe()}}),C("#members-am-save").on("click",Qe),C("#members-am-undo").on("click",function(e){e.preventDefault(),b&&(E.settings=u(b),b=null,y(),k(),E.tree=N(),x(),Ze(),p("success",membersAdminMenus.i18n&&membersAdminMenus.i18n.undoRestored||"Last change reverted."))}),C("#members-am-reset").on("click",function(e){e.stopPropagation(),C(".members-am-reset-dropdown").remove();var r=C(this),t=membersAdminMenus.i18n||{},n="administrator",a=!1;(membersAdminMenus.roles||[]).forEach(function(e){e.slug===n&&(a=!0)});var i=C('
');if(i.append(C('
').text(t.resetSettingsLabel||"Reset Settings")),a){var s=C(' ');s.append(C(' ')),s.append(C(' ').append(C(" ").text(t.resetAdministrator||"Reset Administrator"),C(" ").text(t.resetAdministratorHelp||"Clear all menu settings for the Administrator role only."))),s.on("click",function(e){e.preventDefault(),e.stopPropagation(),C(".members-am-reset-dropdown").remove(),Ye("role",n)}),i.append(s)}var o=C(' ');o.append(C(' ')),o.append(C(' ').append(C(" ").text(t.resetAll||"Reset all roles"),C(" ").text(t.resetAllRolesHelp||"Clear all menu settings for every role."))),o.on("click",function(e){e.preventDefault(),e.stopPropagation(),C(".members-am-reset-dropdown").remove(),Ye("all")}),i.append(o),i.insertAfter(r),setTimeout(function(){C(document).one("click",function(){C(".members-am-reset-dropdown").remove()})},0)}),C("#members-am-export").on("click",function(e){e.preventDefault(),window.location.href=membersAdminMenus.exportUrl}),C("#members-am-import").on("click",function(){C("#members-am-import-file").trigger("click")}),C("#members-am-import-file").on("change",function(){var e=this.files&&this.files[0];e&&function(e){Ke(membersAdminMenus.i18n&&membersAdminMenus.i18n.importing||"Importing…");var t=new FileReader;t.onerror=function(){Ge(),p("error",membersAdminMenus.i18n&&membersAdminMenus.i18n.readFileFailed||"Could not read the file.")},t.onload=function(){try{var e=JSON.parse(t.result),r=!1;C.post(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_import",nonce:membersAdminMenus.nonce,settings:JSON.stringify(e)}).done(function(e){if(e.success)return l("success",e.data&&e.data.message||membersAdminMenus.i18n&&membersAdminMenus.i18n.imported||"Settings imported."),E.allowUnload=!0,r=!0,void location.reload();p("error",e.data&&e.data.message?e.data.message:"Error")}).fail(function(){p("error",membersAdminMenus.i18n&&membersAdminMenus.i18n.importNetworkError||membersAdminMenus.i18n.networkError||"Could not import settings. Check your connection and try again.")}).always(function(){r||Ge()})}catch(e){Ge(),p("error",membersAdminMenus.i18n&&membersAdminMenus.i18n.invalidJson||"Invalid JSON.")}},t.readAsText(e)}(e)}),C("#members-am-copy-apply").on("click",function(){var n=C("#members-am-copy-from").val(),a=C("#members-am-copy-to").val();if(n&&a)if(n!==a){var r="",t="";_().forEach(function(e){e.slug===n&&(r=e.label),e.slug===a&&(t=e.label)}),function(e,r,t){var n=C("#members-am-copy-confirm-area");if(!n.length){var a='Copy menu settings from "'+e+'" to "'+r+'"?';return window.confirm(a)&&t()}n.empty().removeAttr("hidden");var i=membersAdminMenus.i18n||{},s=(i.copyConfirm||"Copy from “%1$s” to “%2$s”?").replace("%1$s",e).replace("%2$s",r),o=C('
');o.append(C("
").text(s));var m=C("
"),l=C(' ').text(i.copyConfirmYes||"Confirm"),d=C(' ').text(i.copyConfirmNo||"Cancel");l.on("click",function(){n.attr("hidden",!0).empty(),t()}),d.on("click",function(){n.attr("hidden",!0).empty()}),m.append(l,document.createTextNode(" "),d),o.append(m),n.append(o)}(r,t,function(){h();var e=R(n),t={hidden:X(n),order:[],submenu_order:{},overrides:{}},r=K(n);t.order=r.slice(),E.tree.forEach(function(e){if(e.children&&e.children.length){var r=G(n,e.id);r&&r.length&&(t.submenu_order[e.id]=r.slice())}}),e.overrides&&"object"==typeof e.overrides&&(t.overrides=JSON.parse(JSON.stringify(e.overrides))),E.settings.roles[a]=t,-1===E.activeRoleSlugs.indexOf(a)&&(E.activeRoleSlugs.push(a),c(),Oe()),Ze(),Qe(membersAdminMenus.i18n&&membersAdminMenus.i18n.copying||"Copying…")})}else p("error",membersAdminMenus.i18n&&membersAdminMenus.i18n.rolesMustDiffer||"Source and target roles must be different.")}),C("#members-am-copy-from").on("change",Le),C("#members-am-admin-editable").on("change",function(){var e=!0,r=membersAdminMenus.i18n||{};if(C(this).is(":checked")&&(e=window.confirm(r.adminEditableWarn)),e){if(h(),E.settings._meta.admin_editable=C(this).is(":checked"),E.settings._meta.admin_editable&&membersAdminMenus.currentUserIsAdministrator&&membersAdminMenus.currentUserId){var t=parseInt(membersAdminMenus.currentUserId,10);if(0===A().length){E.settings._meta.admin_menu_exempt_user_ids=[t];var n=String(t),a=membersAdminMenus.exemptUserLabels||{};E.exemptUserLabels[n]=a[n]||"User #"+t}}E.settings._meta.admin_editable||(E.settings._meta.admin_menu_exempt_user_ids=[],E.exemptUserLabels=C.extend({},membersAdminMenus.exemptUserLabels||{})),k(),ke(),Oe(),c(),w(),Ze()}else C(this).prop("checked",!1)}),C("#members-am-exempt-chips").on("click",".members-am-exempt-remove",function(){var r=C(this).data("userId");if(r){var e=A();e.length<=1?p("warning",membersAdminMenus.i18n&&membersAdminMenus.i18n.exemptLastAdministrator||"Keep at least one exempt administrator while this option is enabled."):(h(),E.settings._meta.admin_menu_exempt_user_ids=e.filter(function(e){return e!==r}),delete E.exemptUserLabels[String(r)],w())}}),C("#members-am-exempt-search").on("input",function(){var e=C(this).val();clearTimeout(r),r=setTimeout(function(){1 ").val("").text(e)),(E.tree||[]).forEach(function(e){e&&e.id&&-1===String(e.id).indexOf("::")&&r.append(C(" ").val(e.id).text(e.title||e.id))})}}(),e.removeAttr("hidden")}e(n),C("#members-am-more-tools").on("click",function(){e(C("#members-am-toolbar-extra").prop("hidden"))}),C("#members-am-add-item").on("click",function(){s()}),C("#members-am-add-item-modal-close, #members-am-add-item-cancel").on("click",function(e){e.preventDefault(),i()}),C("#members-am-add-item-modal").on("click",".members-am-modal-backdrop",function(){i()}),C("#members-am-add-item-submit").on("click",function(e){e.preventDefault();var r=(C("#members-am-add-item-title").val()||"").trim(),t=(C("#members-am-add-item-url").val()||"").trim(),n=(C("#members-am-add-item-parent").val()||"").trim();if(r&&t){h();var a="c"+Date.now();E.settings.custom_items.push({id:a,label:r,url:t,icon_type:"dashicon",icon:"dashicons-admin-generic",parent:n,position:99,cap:"read"}),E.tree=N(),E.selectedId=P({id:a}),E.pendingEditApplyTarget={type:"role",slug:String(E.activeRoleSlugs[0]||_()[0]&&_()[0].slug||"subscriber")},i(),Ze()}else p("error",membersAdminMenus.i18n&&membersAdminMenus.i18n.bulkSelectItemFirst||"Please enter a title and URL.")}),C("#members-am-chips-show-all").on("click",function(e){e.preventDefault(),h();var r=[];_().forEach(function(e){"administrator"===e.slug&&!E.settings._meta.admin_editable||r.push(e.slug)}),r.length||(r=["subscriber"]),E.activeRoleSlugs=r,c(),Oe(),Ze()}),C("#members-am-chips-hide-all").on("click",function(e){e.preventDefault();var r=[];_().forEach(function(e){"administrator"===e.slug&&!E.settings._meta.admin_editable||r.push(e.slug)}),r.length<=1||(h(),E.activeRoleSlugs=[r[0]],c(),Oe(),Ze())}),C("#members-am-remove-custom").on("click",function(){if(E.selectedId&&L(E.selectedId)){var e=j(E.selectedId),r=e&&e.customId?String(e.customId):"";if(!r&&e&&e.custom&&E.selectedId){var t=-1!==E.selectedId.indexOf("::")?E.selectedId.split("::").pop():E.selectedId;0===t.indexOf("members-am-")&&(E.settings.custom_items||[]).forEach(function(e){e&&e.id&&P(e)===t&&(r=String(e.id))})}e&&r&&(h(),E.settings.custom_items=(E.settings.custom_items||[]).filter(function(e){return!e||String(e.id)!==r}),E.selectedId=null,E.tree=N(),Ne())}}),C("#members-am-edit-popover-overlay").on("click",function(e){e.target===this&&Ne()}),C("#members-am-edit-popover-done").on("click",function(){Ne()}),C(window).on("resize.membersAmEditPop scroll.membersAmEditPop",function(){C("#members-am-edit-panel").prop("hidden")||Fe()}),C(document).on("keydown.membersAmEditPopover",function(e){"Escape"!==e.key&&27!==e.keyCode||C("#members-am-edit-panel").prop("hidden")||Ne()}),C("#members-am-edit-close").on("click",function(){Ne()}),C("#members-am-edit-target-role").on("change",Je),C("#members-am-edit-label, #members-am-edit-url, #members-am-icon-value, #members-am-badge-text").on("input",function(){ze()}),C("#members-am-item-cap").on("input",function(){ze()}),C(".members-am-icon-tabs .button").on("click",function(){C(".members-am-icon-tabs .button").removeClass("is-active"),C(this).addClass("is-active"),E.iconTab="fontawesome"===C(this).data("tab")?"fontawesome":"upload"===C(this).data("tab")?"upload":"dashicons",$e()}),C("#members-am-icon-search").on("input",$e),C("#members-am-media-upload").on("click",function(e){e.preventDefault(),E.mediaFrame||(E.mediaFrame=wp.media({title:"Choose menu icon",button:{text:"Use as icon"},multiple:!1,library:{type:"image"}}),E.mediaFrame.on("select",function(){var e=E.mediaFrame.state().get("selection").first().toJSON(),r=e.url||"";e.sizes&&(e.sizes.thumbnail?r=e.sizes.thumbnail.url:e.sizes.medium&&(r=e.sizes.medium.url)),C("#members-am-icon-type").val("custom"),C("#members-am-icon-value").val(r),ze()})),E.mediaFrame.open()}),C(document).on("change",".members-am-vis-cb",function(){h();var e=C(this).data("role");if(C(this).is(":checked")){var r=R(e).hidden,t=r.indexOf(E.selectedId);-1!==t&&r.splice(t,1)}else-1===R(e).hidden.indexOf(E.selectedId)&&R(e).hidden.push(E.selectedId);Ze()}),C("#members-am-promote").on("click",function(){if(E.selectedId&&!C(this).prop("disabled")){h();var a=E.selectedId,e=ye()||{};if(-1===a.indexOf("::")&&e.parent&&"__promote__"!==e.parent){var i=e.parent,r=_e();if(r){var t=U(r);if(t.overrides[a]&&delete t.overrides[a].parent,t.submenu_order&&t.submenu_order[i]){var n=t.submenu_order[i].indexOf(a);-1!==n&&t.submenu_order[i].splice(n,1)}if(t.order.length||(t.order=z()),-1===t.order.indexOf(a)){var s=t.order.indexOf(i);-1!==s?t.order.splice(s+1,0,a):t.order.push(a)}}else xe().forEach(function(e){var r=R(e);if(r.overrides[a]&&delete r.overrides[a].parent,r.submenu_order&&r.submenu_order[i]){var t=r.submenu_order[i].indexOf(a);-1!==t&&r.submenu_order[i].splice(t,1)}if(r.order&&r.order.length||(r.order=z()),-1===r.order.indexOf(a)){var n=r.order.indexOf(i);-1!==n?r.order.splice(n+1,0,a):r.order.push(a)}});return ze(),void Je()}if(-1!==a.indexOf("::")&&e.parent&&"__promote__"!==e.parent){var o=e.parent,m=_e();m?W(U(m),o,a):xe().forEach(function(e){W(R(e),o,a)})}Ae("parent","__promote__");var l=F(a);xe().forEach(function(e){var r=R(e);if(r.order&&r.order.length||(r.order=z()),-1===r.order.indexOf(a))if(l){var t=r.order.indexOf(l);-1!==t?r.order.splice(t+1,0,a):r.order.push(a)}else r.order.push(a)}),ze(),Je()}}),C("#members-am-demote").on("click",function(){var e=C("#members-am-demote-parent").val();if(e){h();var r=E.selectedId;if(-1!==r.indexOf("::")){var t=F(r),n=_e();n?W(U(n),t,r):xe().forEach(function(e){W(R(e),t,r)})}Ae("parent",e),ze(),Je()}else p("warning",membersAdminMenus.i18n&&membersAdminMenus.i18n.selectParentFirst||"Please choose a parent menu from the list.")}),C("#members-am-user-search").on("input",function(){var e=C(this).val();clearTimeout(t),t=setTimeout(function(){1").val(e.slug).text(e.label)),t.append(C(" ").val(e.slug).text(e.label))}),1>>0;return n[r%n.length]}var i="",y=!1;function s(){return function r(t){if(null===t)return"null";var e=typeof t;return"string"==e||"number"==e||"boolean"==e?JSON.stringify(t):"undefined"==e?"null":Array.isArray(t)?"["+t.map(function(e){return r(e)}).join(",")+"]":"object"!=e?JSON.stringify(t):"{"+Object.keys(t).sort().map(function(e){return JSON.stringify(e)+":"+r(t[e])}).join(",")+"}"}(E.settings)}function a(){if(!E.allowUnload&&s()!==i)return membersAdminMenus.i18n&&membersAdminMenus.i18n.unsavedChanges||""}var o="members_am_notice",m=5e3;function p(e,r){if(r){var t=C("#members-am-notices");t.length||(C(".members-admin-menus-wrap h1").first().after('
'),t=C("#members-am-notices"));var n,a=C("
",{class:"notice is-dismissible"}).addClass("notice-"+(e||"info"));a.append(C("
").text(r)),t.prepend(a),C(document).trigger("wp-notice-added"),"success"===e&&(n=a,!m||m<1||window.setTimeout(function(){if(n&&n.length&&n.closest("body").length){var e=n.find(".notice-dismiss");e.length?e.trigger("click"):n.fadeTo(200,0,function(){n.slideUp(200,function(){n.remove()})})}},m))}}function l(e,r){try{sessionStorage.setItem(o,JSON.stringify({type:e||"success",message:r}))}catch(e){}}var r=["dashicons-menu","dashicons-admin-dashboard","dashicons-admin-post","dashicons-admin-page","dashicons-admin-media","dashicons-admin-comments","dashicons-admin-appearance","dashicons-admin-plugins","dashicons-admin-users","dashicons-admin-tools","dashicons-admin-settings","dashicons-admin-generic","dashicons-edit","dashicons-plus","dashicons-chart-bar","dashicons-cart","dashicons-products","dashicons-email","dashicons-groups","dashicons-heart","dashicons-star-filled","dashicons-smiley","dashicons-info","dashicons-lock","dashicons-unlock","dashicons-visibility","dashicons-hidden","dashicons-arrow-up","dashicons-arrow-down","dashicons-admin-network","dashicons-performance"],t=["fa-solid fa-house","fa-solid fa-user","fa-solid fa-gear","fa-solid fa-file","fa-solid fa-image","fa-solid fa-cart-shopping","fa-solid fa-chart-line","fa-solid fa-envelope","fa-solid fa-book","fa-solid fa-link","fa-solid fa-bell","fa-solid fa-star","fa-solid fa-heart","fa-solid fa-lock","fa-solid fa-unlock","fa-solid fa-pen","fa-solid fa-trash","fa-solid fa-plus","fa-solid fa-minus"],d="members_am_view_state";function c(){try{localStorage.setItem(d,JSON.stringify({activeRoleSlugs:E.activeRoleSlugs}))}catch(e){}}function u(e){return JSON.parse(JSON.stringify(e))}var b=null;function h(){b=u(E.settings),v()}function v(){var e=C("#members-am-undo");if(e.length){var r=!!b;e.prop("disabled",!r).attr("aria-disabled",r?"false":"true")}}function _(){return membersAdminMenus.roles||[]}function g(){E.settings._meta&&!Array.isArray(E.settings._meta)||(E.settings._meta={version:3,admin_editable:!1,admin_menu_exempt_user_ids:[]}),Array.isArray(E.settings._meta.admin_menu_exempt_user_ids)||(E.settings._meta.admin_menu_exempt_user_ids=[]),E.settings.roles&&!Array.isArray(E.settings.roles)||(E.settings.roles={}),E.settings.users&&!Array.isArray(E.settings.users)||(E.settings.users={}),Array.isArray(E.settings.custom_items)||(E.settings.custom_items=[]),E.settings.capabilities&&!Array.isArray(E.settings.capabilities)||(E.settings.capabilities={})}function A(){g();var e=E.settings._meta.admin_menu_exempt_user_ids;return Array.isArray(e)?e.map(function(e){return parseInt(e,10)}).filter(function(e){return 0 ');n.append(C(' ').text(t));var a=C(' ').attr("aria-label",i.exemptRemove||"Remove").text(i.exemptRemove||"Remove");o?a.prop("disabled",!0).attr("aria-disabled","true"):a.data("userId",e),n.append(a),s.append(n)})}}function S(e){C.getJSON(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_user_search",nonce:membersAdminMenus.nonce,term:e},function(e){if(e.success&&e.data&&e.data.length){var r=e.data.filter(function(e){return e.roles&&-1!==e.roles.indexOf("administrator")});r.length?function(e){C(".members-am-exempt-suggestions").remove();var t=C("#members-am-exempt-search");if(t.length){var r=t.parent();r.css("position","relative");var n=C('
');e.forEach(function(r){n.append(C('
').text(r.label).on("click",function(){var e=parseInt(r.id,10);if(-1!==A().indexOf(e))return C(".members-am-exempt-suggestions").remove(),void t.val("");h(),E.settings._meta.admin_menu_exempt_user_ids=A().concat([e]),E.exemptUserLabels[String(e)]=r.label,C(".members-am-exempt-suggestions").remove(),t.val(""),w()}))}),r.append(n),setTimeout(function(){C(document).one("click",function(){C(".members-am-exempt-suggestions").remove()})},0)}}(r):C(".members-am-exempt-suggestions").remove()}else C(".members-am-exempt-suggestions").remove()})}function R(e){g(),E.settings.roles[e]||(E.settings.roles[e]={hidden:[],order:[],submenu_order:{},overrides:{}});var r=E.settings.roles[e];return r.hidden&&Array.isArray(r.hidden)||(r.hidden=[]),r.order&&Array.isArray(r.order)||(r.order=[]),r.submenu_order&&!Array.isArray(r.submenu_order)||(r.submenu_order={}),r.overrides&&!Array.isArray(r.overrides)||(r.overrides={}),r}function U(e){g(),E.settings.users[e]||(E.settings.users[e]={});var r=E.settings.users[e];return r.hidden&&Array.isArray(r.hidden)||(r.hidden=[]),r.order&&Array.isArray(r.order)||(r.order=[]),r.overrides&&!Array.isArray(r.overrides)||(r.overrides={}),r.submenu_order&&!Array.isArray(r.submenu_order)||(r.submenu_order={}),r}function T(e,r){var t=function(e,r){for(var t=(e||[]).slice().reverse(),n={},a=0;a=a.length||(h(),a.splice(c,1),a.splice(u,0,o?d:r))}}function P(e){var r=e.id||"c";return"members-am-"+String(r).replace(/[^a-z0-9_-]/gi,"-").toLowerCase()}function L(e){return!!e&&0===(-1!==e.indexOf("::")?e.split("::").pop():e).indexOf("members-am-")}function D(e,r){if(!e||!r)return null;for(var t=0;t]+$/i.test(r)?r:0===r.indexOf("//")&&/^\/\/[a-z0-9.-]+\/?/i.test(r)?"https:"+r:"":""}function ie(e,r,t){var n=re(r,t);if("fontawesome"===n&&r){var a=function(e){if(!e||"string"!=typeof e)return"";var r,t=e.trim().split(/\s+/).filter(Boolean);if(!t.length)return"";for(r=0;r",{class:"members-am-fa-icon"}),s=C(" ",{"aria-hidden":"true"});a.split(/\s+/).forEach(function(e){s.addClass(e)}),i.append(s),e.append(i)}else e.append(C(" ",{class:"dashicons dashicons-admin-generic"}))}else if("svg"!==n&&"image"!==n&&"custom"!==n||!r){var o=function(e){if(!e||"string"!=typeof e)return"";var r=e.trim();return te.test(r)?r:""}(r);e.append(C(" ",{class:"dashicons "+(o||"dashicons-admin-generic")}))}else{var m=ae(r);m?e.append(C(" ",{src:m,alt:""}).css({width:"20px",height:"20px",display:"inline-block",verticalAlign:"middle",objectFit:"contain",filter:"none"})):e.append(C(" ",{class:"dashicons dashicons-admin-generic"}))}}function se(){var n=[];return function e(r){var t;for(t=0;t ').attr("data-role",e.slug),i=C(' ').prop("checked",r).attr("title",n).attr("aria-label",n+": "+e.label),s=C(' ').attr("data-role",e.slug).css("--members-am-role-accent",t).toggleClass("is-active",r).toggleClass("members-am-chip--inactive",!r),o=C(' ').attr("data-role",e.slug).append(C(' ').text(e.label));s.append(i,o),a.append(s),m.append(a)}})}function Oe(t,n,e,a,i){(function(e,r,t,n,a){a=a||0;var i=r.id,s=q(e,i),o=!ee(e,r.cap),m=R(e).overrides[i]||{},l=m.label||r.title||i,d=C('
').attr("data-id",i).attr("data-menu-parent",t||"").toggleClass("is-hidden",s).toggleClass("is-no-cap",o).toggleClass("is-selected",E.selectedId===i).toggleClass("is-sub",0 ');if(p){ce(c);var b=!!E.collapsedParents[c][i],h=u.expandSubmenus||"Expand submenu items",v=u.collapseSubmenus||"Collapse submenu items";C(' ').attr("aria-expanded",!b).attr("aria-label",(b?h:v)+": "+l).append(C(' ').addClass(b?"dashicons-arrow-right-alt2":"dashicons-arrow-down-alt2")).on("click",function(e){e.stopPropagation(),ce(c),E.collapsedParents[c][i]=!E.collapsedParents[c][i],Pe()}).appendTo(f),d.toggleClass("is-collapse-collapsed",b)}else f.append(C(' '));d.append(f);var g=u.bulkCheckboxAria||"Include in bulk actions",x=C(' '),y=C(' ').prop("checked",!!E.columnBulkSelection[c].ids[i]).attr("aria-label",g+": "+l).on("click",function(e){e.stopPropagation()}).on("change",function(e){e.stopPropagation(),de(c,i,C(this).prop("checked")),Pe()});x.append(y),d.append(x);var _=C('
');0===a&&ie(_,m.icon||r.icon,m.icon_type||r.icon_type);r.custom&&_.append(C('custom '));m.label&&_.append(C('edit '));if(_.append(C(' ').text(l)),m.badge){var A=m.badge_bg||"#d63638";_.append(C(' ').text(m.badge).css({backgroundColor:A,color:"#fff",fontSize:"9px",padding:"1px 5px",borderRadius:"2px",marginLeft:"4px",whiteSpace:"nowrap"}))}if(s){var k=u.rowBadgeHidden||"HIDDEN",w=u.rowBadgeHiddenDetail||"Item manually hidden for this role.";_.append(C(' ').attr("title",w).attr("role","img").attr("aria-label",k+". "+w).append(C(' ')))}if(o){var S=membersAdminMenus.i18n||{},O=S.noAccessTitlePattern&&S.noAccessTitlePattern.replace("%s",r.cap||"read")||"This role does not have the '"+(r.cap||"read")+"' capability on this role object. Users with multiple roles may still access the screen. Manage capabilities in Members → Roles.",I=S.rowBadgeNoAccess||"NO ACCESS";_.append(C(' ').attr("title",O).attr("role","img").attr("aria-label",I+". "+O).append(C(' ')))}d.append(_),m.color_bg&&d.css("background-color",m.color_bg);m.color_text&&d.find(".members-am-item-label").css("color",m.color_text);m.color_icon&&(d.find(".dashicons").css("color",m.color_icon),d.find(".members-am-fa-icon i").css("color",m.color_icon),d.find("img").css("filter","none"));var M=C('
');M.append(Re(s,l,"members-am-eye"),C(' ').text("↑"),C(' ').text("↓")),d.append(M),n.append(d)})(t,n,e,a,i=i||0),n.children&&n.children.length&&G(t,n.id).forEach(function(e){var r=function(e,r,t){if(-1!==t.indexOf("::")){var n=j(t);return n&&H(t,e)===r?n:null}var a=j(Y(r,t));return a||(-1===t.indexOf("::")&&(R(e).overrides[t]||{}).parent===r?j(t):null)}(t,n.id,e);r&&H(r.id,t)===n.id&&Oe(t,r,n.id,a,i+1)})}function Ie(t,n,e,a,i,s){s=s||0,i.append(function(r,e,t,n){n=n||0;var a=T(t,r.id),i=a.label||r.title,s=function(e,r){var t=U(e);if(-1!==t.hidden.indexOf(r))return!0;if(e===E.previewUserId&&E.previewUserRoles&&E.previewUserRoles.length){var n,a=E.previewUserRoles;for(n=0;n").addClass(l).attr("data-id",r.id).attr("data-menu-parent",e||""),c="u:"+t;oe(c);var u=membersAdminMenus.i18n||{},p=r.children&&r.children.length,f=C(' ');if(p){ce(c);var b=!!E.collapsedParents[c][r.id],h=u.expandSubmenus||"Expand submenu items",v=u.collapseSubmenus||"Collapse submenu items";C(' ').attr("aria-expanded",!b).attr("aria-label",(b?h:v)+": "+i).append(C(' ').addClass(b?"dashicons-arrow-right-alt2":"dashicons-arrow-down-alt2")).on("click",function(e){e.stopPropagation(),ce(c),E.collapsedParents[c][r.id]=!E.collapsedParents[c][r.id],Pe()}).appendTo(f),d.toggleClass("is-collapse-collapsed",b)}else f.append(C(' '));d.append(f);var g=u.bulkCheckboxAria||"Include in bulk actions",x=C(' '),y=C(' ').prop("checked",!!E.columnBulkSelection[c].ids[r.id]).attr("aria-label",g+": "+i).on("click",function(e){e.stopPropagation()}).on("change",function(e){e.stopPropagation(),de(c,r.id,C(this).prop("checked")),Pe()});x.append(y),d.append(x);var _=C('
');0===n&&ie(_,a.icon||r.icon,a.icon_type||r.icon_type);r.custom&&_.append(C('custom '));a.label&&_.append(C('edit '));if(_.append(C(' ').text(i)),a.badge){var A=a.badge_bg||"#d63638";_.append(C(' ').text(a.badge).css({backgroundColor:A,color:"#fff",fontSize:"9px",padding:"1px 5px",borderRadius:"2px",marginLeft:"4px",whiteSpace:"nowrap"}))}if(s){var k=u.rowBadgeHidden||"HIDDEN",w=u.rowBadgeHiddenDetail||"Item manually hidden for this role.";_.append(C(' ').attr("title",w).attr("role","img").attr("aria-label",k+". "+w).append(C(' ')))}if(o){var S=membersAdminMenus.i18n||{},O=S.noAccessTitlePattern&&S.noAccessTitlePattern.replace("%s",r.cap||"read")||"This user does not have the '"+(r.cap||"read")+"' capability.",I=S.rowBadgeNoAccess||"NO ACCESS";_.append(C(' ').attr("title",O).attr("role","img").attr("aria-label",I+". "+O).append(C(' ')))}d.append(_),a.color_bg&&d.css("background-color",a.color_bg);a.color_text&&d.find(".members-am-item-label").css("color",a.color_text);a.color_icon&&(d.find(".dashicons").css("color",a.color_icon),d.find(".members-am-fa-icon i").css("color",a.color_icon));var M=C('
');return M.append(Re(s,i,"members-am-user-eye"),C(' ').text("↑"),C(' ').text("↓")),d.append(M),d.on("click",function(e){C(e.target).closest("button, .members-am-item-cb, .members-am-collapse-toggle").length||(E.selectedId=r.id,rr())}),d}(n,e,t,s)),n.children&&n.children.length&&function(e,r){var t=I(e,r),n=U(e),a=n.submenu_order&&n.submenu_order[r];if(!a||!a.length)return t.slice();var i=a.filter(function(e){return-1!==t.indexOf(e)});return t.forEach(function(e){-1===i.indexOf(e)&&i.push(e)}),i}(t,n.id).forEach(function(e){var r=function(e,r,t){if(-1!==t.indexOf("::")){var n=j(t);return n&&B(t,e)===r?n:null}var a=j(Y(r,t));if(a)return a;if(-1===t.indexOf("::")){var i=U(e);if((i.overrides&&i.overrides[t]||{}).parent===r)return j(t)}return null}(t,n.id,e);r&&B(r.id,t)===n.id&&Ie(t,r,n.id,a,i,s+1)})}function Me(e,r){var a=(r||"").trim().toLowerCase(),t=e.children(".members-am-item");if(!a)return t.removeClass("members-am-filter-hidden"),void e.children(".members-am-sep").removeClass("members-am-filter-hidden");var s={};t.each(function(){var e=C(this),r=e.attr("data-id"),t=(e.find(".members-am-item-label").first().text()||"").toLowerCase(),n=(r||"").toLowerCase();s[r]=-1!==t.indexOf(a)||-1!==n.indexOf(a)});var o={};t.each(function(){var e=C(this).attr("data-id"),r=C(this).attr("data-menu-parent")||"";o[r]||(o[r]=[]),o[r].push(e)});var m={};function l(e){var r,t=s[e],n=o[e]||[],a=!1;for(r=0;r '),o=C(' ').attr("placeholder",a).attr("aria-label",i).val(n);s.append(o),e.find(".members-am-sidebar-head").first().after(s),o.on("input",function(){E.columnFilters[t]=C(this).val(),Me(r,C(this).val())}),Me(r,n)}function Ee(e,r){var i=0===String(r).indexOf("u:"),s=i?parseInt(r.replace(/^u:/,""),10):0,o=i?null:r,m=r,l=membersAdminMenus.i18n||{},t=C('
').attr("data-column-key",m),n=C('
');n.append(C(' ').text(l.bulkSelectVisible||"Select visible"),C(' ').text(l.bulkClearSelection||"Clear selection"),C(' ').text(l.collapseAllMenus||"Collapse submenus"),C(' ').text(l.expandAllMenus||"Expand submenus"));var a=C(' ').attr("aria-label",l.bulkVisibilityLabel||"Menu visibility for this column");a.append(C(' ').text(l.bulkActionsPlaceholder||"Choose visibility…"));var d=C(" ").attr("label",l.bulkGroupWholeColumn||"Whole column");d.append(C(' ').text(l.bulkShowAllItems||"Show every menu item"),C(' ').text(l.bulkHideAllItems||"Hide every menu item"));var c=C(" ").attr("label",l.bulkGroupCheckedRows||"Checked rows");c.append(C(' ').text(l.bulkKeepOnlyCheckedVisible||"Hide everything except selected (and parents)"),C(' ').text(l.bulkHideCheckedItems||"Hide checked items"),C(' ').text(l.bulkShowCheckedItems||"Show selected items")),a.append(d,c),t.append(n,a);var u=e.find(".members-am-col-filter").first();u.length?u.after(t):e.find(".members-am-sidebar-head").first().after(t),a.on("change",function(){var e=C(this).val();if(C(this).val(""),e)if(!("keep-only-checked"===e||"hide-checked"===e||"show-checked"===e)||me(m).length){if("keep-only-checked"===e){if(!window.confirm(l.bulkConfirmKeepOnlyChecked||"Hide all menu items except the selected ones and their parent menus?"))return}else if("hide-all"===e){if(!window.confirm(l.bulkConfirmHideAll||"Hide every menu item in this column?"))return}else if("hide-checked"===e&&!window.confirm(l.bulkConfirmHideChecked||"Hide the checked items (and their submenus where applicable)?"))return;var r,t,n,a;h(),i?"show-all"===e?U(s).hidden=[]:"hide-all"===e?(n=s,a=se(),U(n).hidden=a.slice()):"keep-only-checked"===e?function(e,t){var r=me(e);if(r.length){var n={};r.forEach(function(e){for(var r=e;r;)n[r]=!0,r=B(r,t)});var a=se(),i=U(t).hidden;i.length=0,a.forEach(function(e){n[e]||i.push(e)})}}(m,s):"hide-checked"===e?ve(m,s):"show-checked"===e&&ge(m,s):"show-all"===e?R(o).hidden=[]:"hide-all"===e?(r=o,t=se(),R(r).hidden=t.slice()):"keep-only-checked"===e?function(e,t){var r=me(e);if(r.length){var n={};r.forEach(function(e){for(var r=e;r;)n[r]=!0,r=H(r,t)});var a=se(),i=R(t).hidden;i.length=0,a.forEach(function(e){n[e]||i.push(e)})}}(m,o):"hide-checked"===e?be(m,o):"show-checked"===e&&he(m,o),rr()}else p("warning",l.bulkSelectCheckedFirst||"Check one or more menu items first.")})}function Re(e,r,t){var n=membersAdminMenus.i18n||{},a=e?n.showInMenu||"Show in menu":n.hideFromMenu||"Hide from menu";return C(' ').addClass(t||"members-am-eye").attr("title",a).attr("aria-label",a+": "+r).attr("aria-pressed",e?"true":"false").append(C(' ').addClass(e?"dashicons-hidden":"dashicons-visibility"))}function Ue(e,r){return r&&-1!==r.indexOf("::")&&F(r)===e?-1!==(t=r).indexOf("::")?t.split("::").pop():t:r;var t}function Te(){C.fn.sortable&&C("#members-am-columns .members-am-sidebar-list").each(function(){var e=C(this);e.data("ui-sortable")&&e.sortable("destroy");var r=e.closest(".members-am-column"),t=r.data("role"),n=r.data("user");e.sortable({axis:"y",distance:6,items:"> .members-am-item, > .members-am-sep",cancel:".members-am-item-actions button, .members-am-item-cb, .members-am-item-cb-wrap, .members-am-collapse-toggle",placeholder:"members-am-sort-placeholder",forcePlaceholderSize:!0,tolerance:"pointer",start:function(){h()},update:function(){n?(E.pendingEditApplyTarget={type:"user",id:parseInt(String(n),10)},function(e,r){var a=[],i={};e.children().each(function(){var e=C(this);if(e.hasClass("members-am-sep")){var r=e.attr("data-sep-id");r&&a.push(r)}else if(e.hasClass("members-am-item")){var t=e.attr("data-id");if(t){var n=e.attr("data-menu-parent");void 0===n||""===n?a.push(t):(i[n]||(i[n]=[]),i[n].push(Ue(n,t)))}}});var t=U(r);t.order=a,t.submenu_order=i}(e,n)):t?(E.pendingEditApplyTarget={type:"role",slug:String(t)},function(e,r){var a=[],i={};e.children().each(function(){var e=C(this);if(e.hasClass("members-am-sep")){var r=e.attr("data-sep-id");r&&a.push(r)}else if(e.hasClass("members-am-item")){var t=e.attr("data-id");if(t){var n=e.attr("data-menu-parent");void 0===n||""===n?a.push(t):(i[n]||(i[n]=[]),i[n].push(Ue(n,t)))}}});var t=R(r);t.order=a,t.submenu_order=i}(e,t)):E.pendingEditApplyTarget=null,Be(),window.setTimeout(function(){Pe()},0)}})})}function Pe(){var t=C("#members-am-columns"),a={};t.find(".members-am-column").each(function(){var e=C(this).data("role"),r=C(this).data("user"),t=e?String(e):null!=r&&""!==r?"u:"+r:null;if(t){var n=C(this).find(".members-am-sidebar-list");n.length&&(a[t]=n.scrollTop())}}),t.empty();var e=E.activeRoleSlugs.slice();if(e.length||E.previewUserId){if(e.forEach(function(e){var r=C("
",{class:"members-am-column"}).attr("data-role",e);!function(t,e){e.empty();var r=C(''),n=(_().filter(function(e){return e.slug===t})[0]||{}).label||t,a=f(t),i=C('');i.append(C('').css("background",a),C('').text(n)),r.append(i);var s=membersAdminMenus.i18n||{},o=s.moveColumnLeft||"Move column left",m=s.moveColumnRight||"Move column right";r.append(C(' ').append(C(' ').attr("aria-label",o).attr("title",o).append(C(' ')),C(' ').attr("aria-label",m).attr("title",m).append(C(' ')))),e.append(r);var l=C('');K(t).forEach(function(e){if(0!==e.indexOf("sep-")){var r=j(e);r&&Oe(t,r,null,l,0)}else l.append(C('
').attr("data-sep-id",e).text("—"))}),e.append(l),pe(l,t),Ce(e,l,t),Ee(e,t)}(e,r),t.append(r),a[e]&&r.find(".members-am-sidebar-list").scrollTop(a[e])}),E.previewUserId){var n=E.previewUserId,r=C("
",{class:"members-am-column members-am-user-column"}).attr("data-user",String(n)),i=C(''),s=C('');s.append(C(''),C('').text(E.previewUserLabel||"User #"+n)),i.append(s);var o=(membersAdminMenus.i18n||{}).closeUserColumn||"Remove user preview column";i.append(C(' ').attr("aria-label",o).attr("title",o).append(C(' ')).on("click",function(){E.previewUserId=null,E.previewUserLabel=null,E.previewUserRoles=[],rr()})),r.append(i);var m=C(''),l=U(n);O(n).forEach(function(e){if(0!==e.indexOf("sep-")){var r=j(e);r&&Ie(n,r,null,l,m,0)}else m.append(C('
').attr("data-sep-id",e).text("——"))}),r.append(m),pe(m,"u:"+n),Ce(r,m,"u:"+n),Ee(r,"u:"+n),t.append(r);var d="u:"+n;a[d]&&r.find(".members-am-sidebar-list").scrollTop(a[d])}if(E.syncScroll){var c=t.find(".members-am-sidebar-list"),u=!1;c.on("scroll",function(){if(!u){u=!0;var e=C(this).scrollTop();c.not(this).scrollTop(e),u=!1}})}Te()}else{var p=membersAdminMenus.i18n&&membersAdminMenus.i18n.columnsAllHidden||"";t.append(C('
').text(p))}}function Le(){var e=C("#members-am-copy-from").val();if(C("#members-am-copy-to option").prop("disabled",!1),e&&C('#members-am-copy-to option[value="'+e+'"]').prop("disabled",!0),C("#members-am-copy-to").val()===e){var r=C("#members-am-copy-to option:not(:disabled)").first();r.length&&r.prop("selected",!0)}}function De(){var e=C("#members-am-badge-preview");if(e.length){var r=String(C("#members-am-badge-text").val()||"").trim();r=r||"Badge";var t=String(C("#members-am-badge-bg").val()||"").trim();t&&"#"!==t||(t="#2271b1");var n=.45").val("__all__").text(r.applyToAllRoles||"All roles")),E.activeRoleSlugs.forEach(function(r){var e=(_().filter(function(e){return e.slug===r})[0]||{}).label||r;t.append(C(" ").val(r).text(e))}),E.previewUserId&&t.append(C(" ").val("__user__"+E.previewUserId).text(E.previewUserLabel||"User #"+E.previewUserId)),e&&t.find("option").filter(function(){return C(this).val()===e}).length&&t.val(e)}function Be(){if(!E.selectedId)return C("#members-am-edit-panel").attr("hidden",!0),C("#members-am-phase1-placeholder").attr("hidden",!0),C("#members-am-edit-grid").removeAttr("hidden"),C(".members-am-edit-toolbar").removeAttr("hidden"),void C("#members-am-edit-subtitle").text("");C("#members-am-edit-panel").removeAttr("hidden");var e=j(E.selectedId);if(x){var r=membersAdminMenus.i18n||{};C("#members-am-edit-title").text(e?e.title:E.selectedId);var t=E.activeRoleSlugs[0]||"",n=t;return _().forEach(function(e){e.slug===t&&(n=e.label)}),C("#members-am-edit-subtitle").text(t?n:""),C("#members-am-phase1-placeholder .members-am-phase1-placeholder-text").text(r.popoverPhase1Body||"Detailed item editing is coming in a future update."),C("#members-am-phase1-placeholder").removeAttr("hidden"),C("#members-am-edit-grid").attr("hidden","hidden"),C(".members-am-edit-toolbar").attr("hidden","hidden"),C(".members-am-edit-popover-body").attr("hidden","hidden"),C(".members-am-edit-popover-footer").attr("hidden","hidden"),void setTimeout(Fe,0)}C("#members-am-phase1-placeholder").attr("hidden",!0),C("#members-am-edit-grid").removeAttr("hidden"),C(".members-am-edit-toolbar").removeAttr("hidden"),C(".members-am-edit-popover-body").removeAttr("hidden"),C(".members-am-edit-popover-footer").removeAttr("hidden"),He(),function(){var e=C("#members-am-edit-target-role");if(e.length&&E.pendingEditApplyTarget){var r=E.pendingEditApplyTarget,t=E.pendingEditApplyTarget=null;"user"===r.type&&r.id?t="__user__"+String(r.id):"role"===r.type&&r.slug&&(t=String(r.slug)),t&&e.find("option").filter(function(){return C(this).val()===t}).length&&e.val(t)}}();var a=_e()||{};C("#members-am-edit-title").text(e?e.title:E.selectedId),C("#members-am-edit-label").val(a.label||e&&e.title||"");var i=L(E.selectedId);C("#members-am-edit-url-wrap").toggle(i);var s=membersAdminMenus.i18n&&membersAdminMenus.i18n.urlDefaultPlaceholder||"Default";C("#members-am-edit-url").attr("placeholder",s).val(i&&(a.url||e&&e.url)||"").data("default-url",e&&e.url||""),C("#members-am-icon-type").val(a.icon_type||"dashicon"),C("#members-am-icon-value").val(a.icon||e&&e.icon||"");var o=a.icon||e&&e.icon||"",m=re(o,a.icon_type||e&&e.icon_type||"");if("image"!==m&&"custom"!==m&&"svg"!==m||!o)C("#members-am-icon-preview").hide().removeAttr("src");else{var l=ae(o);l?C("#members-am-icon-preview").show().attr("src",l):C("#members-am-icon-preview").hide().removeAttr("src")}C("#members-am-color-bg").val(a.color_bg||""),C("#members-am-color-text").val(a.color_text||""),C("#members-am-color-icon").val(a.color_icon||""),C("#members-am-badge-text").val(a.badge||""),C("#members-am-badge-bg").val(a.badge_bg||""),C("#members-am-item-cap").attr("placeholder",e&&e.cap?e.cap+" (default)":"").val(E.settings.capabilities[E.selectedId]||"");var d=Boolean(e&&e.customId&&L(E.selectedId));C("#members-am-remove-custom").prop("hidden",!d),C("#members-am-visibility-toggles").empty();var c,u,p=Z(E.settings.capabilities[E.selectedId]||"")||Z(e&&e.cap||"")||"read",f=[];if(_().forEach(function(e){"administrator"===e.slug&&!E.settings._meta.admin_editable||f.push(e)}),10<=f.length){var b=membersAdminMenus.i18n&&membersAdminMenus.i18n.filterRolesVisibility||"Filter roles…",h=membersAdminMenus.i18n&&membersAdminMenus.i18n.filterRolesVisibilityLabel||"Filter roles in this list",v=C('
'),g=C(' ').attr("placeholder",b).attr("aria-label",h);v.append(g),C("#members-am-visibility-toggles").append(v),g.on("input",function(){var a=(C(this).val()||"").trim().toLowerCase();C("#members-am-visibility-toggles .members-am-vis-row").each(function(){var e=C(this),r=(e.find("span").first().text()||"").toLowerCase(),t=String(e.find(".members-am-vis-cb").data("role")||"").toLowerCase(),n=!a||-1!==r.indexOf(a)||-1!==t.indexOf(a);e.toggleClass("members-am-vis-filter-hidden",!n)})})}f.forEach(function(e){var r=q(e.slug,E.selectedId),t=ee(e.slug,p),n=C(' ').attr("data-role",e.slug).prop("checked",!r&&t);t||n.prop("disabled",!0);var a=C(' ').append(n,C(" ").text(e.label));t||(a.append(C(" ").text(" — no capability").css({color:"#999",fontStyle:"italic",marginLeft:"4px"})),a.css("opacity","0.5")),C("#members-am-visibility-toggles").append(a)}),Je(),C(".members-am-color").wpColorPicker({change:function(){y||setTimeout(function(){ze()},20)},clear:function(){y||setTimeout(function(){ze()},20)}}),y=!0,C(".members-am-color").each(function(){var e=C(this),r=String(e.val()||"").trim();if(r&&"#"!==r&&(e.closest(".wp-picker-container").length||e.data("wpWpColorPicker")))try{e.wpColorPicker("color",r)}catch(e){}}),y=!1,$e(),We(),Ve(),c=!1,(u=document.getElementById("members-am-icon-details"))&&(u.open=c),function(){var e=C(".members-am-demote-wrap"),t=C("#members-am-demote-parent"),r=C("#members-am-demote");if(!E.selectedId)return e.attr("hidden",!0);var n=xe()[0]||E.activeRoleSlugs[0];if(n&&J(n,E.selectedId))return e.attr("hidden",!0);e.removeAttr("hidden");var a=E.selectedId,i=n?H(a,n):null,s=membersAdminMenus.i18n&&membersAdminMenus.i18n.selectParentMenu||"";t.empty().append(C(" ").val("").text(s));var o=0;E.tree.forEach(function(e){if(e&&e.id&&e.id!==a&&(!i||e.id!==i)){var r=e.title&&String(e.title).trim()?e.title:e.id;t.append(C(" ").val(e.id).text(r)),o++}});var m=0 ');if("dashicons"===n)r.append(C(" ",{class:"dashicons "+e}));else{var t=C(" ",{"aria-hidden":"true"});e.split(/\s+/).forEach(function(e){t.addClass(e)}),r.append(t)}r.on("click",function(){C("#members-am-icon-value").val(e),C("#members-am-icon-type").val("dashicons"===n?"dashicon":"fontawesome"),ze()}),i.append(r)}})}else C("#members-am-icon-grid").empty()}function Ke(e,r){var t=E.activeRoleSlugs.indexOf(e);if(-1!==t){var n=t+r;if(!(n<0||n>=E.activeRoleSlugs.length)){h();var a=E.activeRoleSlugs[t];E.activeRoleSlugs[t]=E.activeRoleSlugs[n],E.activeRoleSlugs[n]=a,c(),rr()}}}function Ge(e,r,t){var n=R(e).overrides[r]||{},a=null;if("__promote__"===n.parent?a=null:-1!==r.indexOf("::")?a=F(r):n.parent&&"__promote__"!==n.parent&&(a=n.parent),a){var i=R(e).submenu_order;i[a]||(i[a]=Q(e,a));var s=i[a],o=-1!==r.indexOf("::")?r.split("::").pop():r;if(-1===(l=s.indexOf(o)))return;if((d=l+t)<0||d>=s.length)return;h();var m=s[l];s[l]=s[d],s[d]=m}else{R(e).order&&R(e).order.length||(R(e).order=z());var l,d,c=R(e).order;if(-1===(l=c.indexOf(r)))return;if((d=l+t)<0||d>=c.length)return;h();var u=c[l];c[l]=c[d],c[d]=u}rr()}function Qe(e){var r=C("#members-am-toolbar-loading");r.removeAttr("hidden"),r.find(".spinner").addClass("is-active"),r.find(".members-am-loading-text").text(e||""),C("#members-am-save, #members-am-reset, #members-am-import, #members-am-copy-apply, #members-am-undo").prop("disabled",!0)}function Ye(){var e=C("#members-am-toolbar-loading");e.attr("hidden",!0),e.find(".spinner").removeClass("is-active"),e.find(".members-am-loading-text").text(""),C("#members-am-save, #members-am-reset, #members-am-import, #members-am-copy-apply").prop("disabled",!1),v()}function qe(e){Qe(e||membersAdminMenus.i18n&&membersAdminMenus.i18n.saving||"Saving…");var a=membersAdminMenus.i18n&&membersAdminMenus.i18n.networkError||"Could not save settings. Check your connection and try again.";C.ajax({url:membersAdminMenus.ajaxUrl,type:"POST",dataType:"json",timeout:6e4,data:{action:"members_admin_menus_save",nonce:membersAdminMenus.nonce,settings:JSON.stringify(E.settings)}}).done(function(e){if(e&&void 0!==e.success){if(e.success)return i=s(),b=null,v(),void p("success",e.data&&e.data.message||membersAdminMenus.i18n&&membersAdminMenus.i18n.saved||"Settings saved.");p("error",e.data&&e.data.message?e.data.message:"Error")}else p("error",a)}).fail(function(e,r){if("abort"!==r){var t=a;if(e&&e.responseJSON&&void 0!==e.responseJSON.data){var n=e.responseJSON.data;"string"==typeof n&&n?t=n:n&&"string"==typeof n.message&&n.message&&(t=n.message)}p("error",t)}}).always(function(){Ye()})}function Xe(e,r){var t,n=membersAdminMenus.i18n||{};if(t="role"===e&&"administrator"===r?n.confirmResetAdministrator||"Reset all menu settings for the Administrator role? This cannot be undone.":"all"!==e&&"role"===e&&r?n.confirmResetRole||"Reset all settings for this role? This cannot be undone.":n.confirmResetAllRoles||"Reset ALL menu settings for every role? This cannot be undone.",confirm(t)){Qe(membersAdminMenus.i18n&&membersAdminMenus.i18n.resetting||"Resetting…");var a=!1;C.post(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_reset",nonce:membersAdminMenus.nonce,scope:e||"all",role:r||""}).done(function(e){if(e.success)return l("success",e.data&&e.data.message||membersAdminMenus.i18n&&membersAdminMenus.i18n.resetComplete||"Reset complete."),E.allowUnload=!0,a=!0,void location.reload();p("error",e.data&&e.data.message?e.data.message:membersAdminMenus.i18n&&membersAdminMenus.i18n.resetFailed||"Reset failed.")}).fail(function(){p("error",membersAdminMenus.i18n&&membersAdminMenus.i18n.resetNetworkError||membersAdminMenus.i18n.networkError||"Could not reset settings. Check your connection and try again.")}).always(function(){a||Ye()})}}function Ze(e){C.getJSON(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_user_search",nonce:membersAdminMenus.nonce,term:e},function(e){e.success&&e.data&&e.data.length?function(e){C(".members-am-user-suggestions").remove();var r=C("#members-am-user-search").parent();r.css("position","relative");var t=C('
');e.forEach(function(e){t.append(C('
').text(e.label).data("userId",e.id).on("click",function(){!function(e,r,t){E.previewUserId=e,E.previewUserLabel=r||"User #"+e,E.previewUserRoles=t||[],g(),E.settings.users[e]||(E.settings.users[e]={});rr()}(e.id,e.label,e.roles),C(".members-am-user-suggestions").remove(),C("#members-am-user-search").val("")}))}),r.append(t),setTimeout(function(){C(document).one("click",function(){C(".members-am-user-suggestions").remove()})},0)}(e.data):C(".members-am-user-suggestions").remove()})}function er(){var r;C(document).on("change","#members-am-role-chips .members-am-role-chip-cb",function(){var e=C(this).closest(".members-am-role-chip-wrap").data("role"),r=C(this).prop("checked"),t=E.activeRoleSlugs.indexOf(e);if(r)-1===t&&E.activeRoleSlugs.push(e);else{if(E.activeRoleSlugs.length<=1)return void C(this).prop("checked",!0);-1!==t&&E.activeRoleSlugs.splice(t,1)}c(),Se(),rr()}),C(document).on("click","#members-am-role-chips .members-am-chip-pill-action",function(e){e.preventDefault();var r=C(this).data("role");if(-1===E.activeRoleSlugs.indexOf(r))return E.activeRoleSlugs.push(r),c(),Se(),rr(),void setTimeout(function(){we(r)},0);we(r)}),C("#members-am-columns").on("click",".members-am-bulk-select-visible",function(e){e.preventDefault(),e.stopPropagation();var r=C(this).closest(".members-am-col-bulk").attr("data-column-key");if(r){var t=C(this).closest(".members-am-column").find(".members-am-sidebar-list");oe(r),t.find(".members-am-item:not(.members-am-filter-hidden):not(.members-am-collapse-hidden)").each(function(){var e=C(this).attr("data-id");e&&de(r,e,!0)}),Pe()}}).on("click",".members-am-bulk-clear-selection",function(e){e.preventDefault(),e.stopPropagation();var r=C(this).closest(".members-am-col-bulk").attr("data-column-key");r&&(E.columnBulkSelection[r]={ids:{}},Pe())}).on("click",".members-am-collapse-all",function(e){e.preventDefault(),e.stopPropagation();var r,t=C(this).closest(".members-am-col-bulk").attr("data-column-key");t&&(ce(r=t),fe().forEach(function(e){E.collapsedParents[r][e]=!0}),Pe())}).on("click",".members-am-expand-all",function(e){e.preventDefault(),e.stopPropagation();var r,t=C(this).closest(".members-am-col-bulk").attr("data-column-key");t&&(r=t,E.collapsedParents[r]={},Pe())}).on("click",".members-am-item",function(e){if(!C(e.target).closest("button, .members-am-item-cb, .members-am-collapse-toggle").length){var r=C(this).closest(".members-am-column"),t=r.data("role"),n=r.data("user");null!=n&&""!==String(n)?E.pendingEditApplyTarget={type:"user",id:parseInt(String(n),10)}:E.pendingEditApplyTarget=t?{type:"role",slug:String(t)}:null,E.selectedId=C(this).data("id"),Pe(),Be()}}).on("click",".members-am-eye",function(e){e.stopPropagation();var r,t,n,a,i=C(this).closest(".members-am-column").data("role"),s=C(this).closest(".members-am-item").data("id");h(),r=s,n=R(i).hidden,-1===(a=n.indexOf(r))?(n.push(r),(t=j(r))&&t.children&&t.children.length&&t.children.forEach(function(e){-1===n.indexOf(e.id)&&n.push(e.id)})):(n.splice(a,1),(t=j(r))&&t.children&&t.children.length&&t.children.forEach(function(e){var r=n.indexOf(e.id);-1!==r&&n.splice(r,1)})),rr()}).on("click",".members-am-up",function(e){e.stopPropagation(),Ge(C(this).closest(".members-am-column").data("role"),C(this).closest(".members-am-item").data("id"),-1)}).on("click",".members-am-down",function(e){e.stopPropagation(),Ge(C(this).closest(".members-am-column").data("role"),C(this).closest(".members-am-item").data("id"),1)}).on("click",".members-am-col-left",function(e){e.stopPropagation(),Ke(C(this).closest(".members-am-column").data("role"),-1)}).on("click",".members-am-col-right",function(e){e.stopPropagation(),Ke(C(this).closest(".members-am-column").data("role"),1)}).on("click",".members-am-user-eye",function(e){e.stopPropagation();var r,t,n,a,i=C(this).closest(".members-am-column").data("user"),s=C(this).closest(".members-am-item").data("id");i&&s&&(h(),r=s,t=U(i),n=t.hidden.indexOf(r),a=j(r),-1===n?(t.hidden.push(r),a&&a.children&&a.children.forEach(function(e){-1===t.hidden.indexOf(e.id)&&t.hidden.push(e.id)})):(t.hidden.splice(n,1),a&&a.children&&a.children.forEach(function(e){var r=t.hidden.indexOf(e.id);-1!==r&&t.hidden.splice(r,1)})),Pe())}).on("click",".members-am-user-up, .members-am-user-down",function(e){e.stopPropagation();var r=C(this).closest(".members-am-column").data("user"),t=C(this).closest(".members-am-item").data("id");if(r&&t){var n=C(this).hasClass("members-am-user-up");M(r,t,C(this).closest(".members-am-item").hasClass("is-sub")?B(t,r):null,n?-1:1),Pe()}}),C("#members-am-save").on("click",qe),C("#members-am-undo").on("click",function(e){e.preventDefault(),b&&(E.settings=u(b),b=null,g(),k(),E.tree=N(),v(),rr(),p("success",membersAdminMenus.i18n&&membersAdminMenus.i18n.undoRestored||"Last change reverted."))}),C("#members-am-reset").on("click",function(e){e.stopPropagation(),C(".members-am-reset-dropdown").remove();var r=C(this),t=membersAdminMenus.i18n||{},n="administrator",a=!1;(membersAdminMenus.roles||[]).forEach(function(e){e.slug===n&&(a=!0)});var i=C('
');if(i.append(C('
').text(t.resetSettingsLabel||"Reset Settings")),a){var s=C(' ');s.append(C(' ')),s.append(C(' ').append(C(" ").text(t.resetAdministrator||"Reset Administrator"),C(" ").text(t.resetAdministratorHelp||"Clear all menu settings for the Administrator role only."))),s.on("click",function(e){e.preventDefault(),e.stopPropagation(),C(".members-am-reset-dropdown").remove(),Xe("role",n)}),i.append(s)}var o=C(' ');o.append(C(' ')),o.append(C(' ').append(C(" ").text(t.resetAll||"Reset all roles"),C(" ").text(t.resetAllRolesHelp||"Clear all menu settings for every role."))),o.on("click",function(e){e.preventDefault(),e.stopPropagation(),C(".members-am-reset-dropdown").remove(),Xe("all")}),i.append(o),i.insertAfter(r),setTimeout(function(){C(document).one("click",function(){C(".members-am-reset-dropdown").remove()})},0)}),C("#members-am-export").on("click",function(e){e.preventDefault(),window.location.href=membersAdminMenus.exportUrl}),C("#members-am-import").on("click",function(){C("#members-am-import-file").trigger("click")}),C("#members-am-import-file").on("change",function(){var e=this.files&&this.files[0];e&&function(e){Qe(membersAdminMenus.i18n&&membersAdminMenus.i18n.importing||"Importing…");var t=new FileReader;t.onerror=function(){Ye(),p("error",membersAdminMenus.i18n&&membersAdminMenus.i18n.readFileFailed||"Could not read the file.")},t.onload=function(){try{var e=JSON.parse(t.result),r=!1;C.post(membersAdminMenus.ajaxUrl,{action:"members_admin_menus_import",nonce:membersAdminMenus.nonce,settings:JSON.stringify(e)}).done(function(e){if(e.success)return l("success",e.data&&e.data.message||membersAdminMenus.i18n&&membersAdminMenus.i18n.imported||"Settings imported."),E.allowUnload=!0,r=!0,void location.reload();p("error",e.data&&e.data.message?e.data.message:"Error")}).fail(function(){p("error",membersAdminMenus.i18n&&membersAdminMenus.i18n.importNetworkError||membersAdminMenus.i18n.networkError||"Could not import settings. Check your connection and try again.")}).always(function(){r||Ye()})}catch(e){Ye(),p("error",membersAdminMenus.i18n&&membersAdminMenus.i18n.invalidJson||"Invalid JSON.")}},t.readAsText(e)}(e)}),C("#members-am-copy-apply").on("click",function(){var n=C("#members-am-copy-from").val(),a=C("#members-am-copy-to").val();if(n&&a)if(n!==a){var r="",t="";_().forEach(function(e){e.slug===n&&(r=e.label),e.slug===a&&(t=e.label)}),function(e,r,t){var n=C("#members-am-copy-confirm-area");if(!n.length){var a='Copy menu settings from "'+e+'" to "'+r+'"?';return window.confirm(a)&&t()}n.empty().removeAttr("hidden");var i=membersAdminMenus.i18n||{},s=(i.copyConfirm||"Copy from “%1$s” to “%2$s”?").replace("%1$s",e).replace("%2$s",r),o=C('
');o.append(C("
").text(s));var m=C("
"),l=C(' ').text(i.copyConfirmYes||"Confirm"),d=C(' ').text(i.copyConfirmNo||"Cancel");l.on("click",function(){n.attr("hidden",!0).empty(),t()}),d.on("click",function(){n.attr("hidden",!0).empty()}),m.append(l,document.createTextNode(" "),d),o.append(m),n.append(o)}(r,t,function(){h();var e=R(n),t={hidden:X(n),order:[],submenu_order:{},overrides:{}},r=K(n);t.order=r.slice(),E.tree.forEach(function(e){if(e.children&&e.children.length){var r=G(n,e.id);r&&r.length&&(t.submenu_order[e.id]=r.slice())}}),e.overrides&&"object"==typeof e.overrides&&(t.overrides=JSON.parse(JSON.stringify(e.overrides))),E.settings.roles[a]=t,-1===E.activeRoleSlugs.indexOf(a)&&(E.activeRoleSlugs.push(a),c(),Se()),rr(),qe(membersAdminMenus.i18n&&membersAdminMenus.i18n.copying||"Copying…")})}else p("error",membersAdminMenus.i18n&&membersAdminMenus.i18n.rolesMustDiffer||"Source and target roles must be different.")}),C("#members-am-copy-from").on("change",Le),C("#members-am-admin-editable").on("change",function(){var e=!0,r=membersAdminMenus.i18n||{};if(C(this).is(":checked")&&(e=window.confirm(r.adminEditableWarn)),e){if(h(),E.settings._meta.admin_editable=C(this).is(":checked"),E.settings._meta.admin_editable&&membersAdminMenus.currentUserIsAdministrator&&membersAdminMenus.currentUserId){var t=parseInt(membersAdminMenus.currentUserId,10);if(0===A().length){E.settings._meta.admin_menu_exempt_user_ids=[t];var n=String(t),a=membersAdminMenus.exemptUserLabels||{};E.exemptUserLabels[n]=a[n]||"User #"+t}}E.settings._meta.admin_editable||(E.settings._meta.admin_menu_exempt_user_ids=[],E.exemptUserLabels=C.extend({},membersAdminMenus.exemptUserLabels||{})),k(),ke(),Se(),c(),w(),rr()}else C(this).prop("checked",!1)}),C("#members-am-exempt-chips").on("click",".members-am-exempt-remove",function(){var r=C(this).data("userId");if(r){var e=A();e.length<=1?p("warning",membersAdminMenus.i18n&&membersAdminMenus.i18n.exemptLastAdministrator||"Keep at least one exempt administrator while this option is enabled."):(h(),E.settings._meta.admin_menu_exempt_user_ids=e.filter(function(e){return e!==r}),delete E.exemptUserLabels[String(r)],w())}}),C("#members-am-exempt-search").on("input",function(){var e=C(this).val();clearTimeout(r),r=setTimeout(function(){1 ").val("").text(e)),(E.tree||[]).forEach(function(e){e&&e.id&&-1===String(e.id).indexOf("::")&&r.append(C(" ").val(e.id).text(e.title||e.id))})}}(),e.removeAttr("hidden")}e(n),C("#members-am-more-tools").on("click",function(){e(C("#members-am-toolbar-extra").prop("hidden"))}),C("#members-am-add-item").on("click",function(){s()}),C("#members-am-add-item-modal-close, #members-am-add-item-cancel").on("click",function(e){e.preventDefault(),i()}),C("#members-am-add-item-modal").on("click",".members-am-modal-backdrop",function(){i()}),C("#members-am-add-item-submit").on("click",function(e){e.preventDefault();var r=(C("#members-am-add-item-title").val()||"").trim(),t=(C("#members-am-add-item-url").val()||"").trim(),n=(C("#members-am-add-item-parent").val()||"").trim();if(r&&t){h();var a="c"+Date.now();E.settings.custom_items.push({id:a,label:r,url:t,icon_type:"dashicon",icon:"dashicons-admin-generic",parent:n,position:99,cap:"read"}),E.tree=N(),E.selectedId=P({id:a}),E.pendingEditApplyTarget={type:"role",slug:String(E.activeRoleSlugs[0]||_()[0]&&_()[0].slug||"subscriber")},i(),rr()}else p("error",membersAdminMenus.i18n&&membersAdminMenus.i18n.bulkSelectItemFirst||"Please enter a title and URL.")}),C("#members-am-chips-show-all").on("click",function(e){e.preventDefault(),h();var r=[];_().forEach(function(e){"administrator"===e.slug&&!E.settings._meta.admin_editable||r.push(e.slug)}),r.length||(r=["subscriber"]),E.activeRoleSlugs=r,c(),Se(),rr()}),C("#members-am-chips-hide-all").on("click",function(e){e.preventDefault();var r=[];_().forEach(function(e){"administrator"===e.slug&&!E.settings._meta.admin_editable||r.push(e.slug)}),r.length<=1||(h(),E.activeRoleSlugs=[r[0]],c(),Se(),rr())}),C("#members-am-remove-custom").on("click",function(){if(E.selectedId&&L(E.selectedId)){var e=j(E.selectedId),r=e&&e.customId?String(e.customId):"";if(!r&&e&&e.custom&&E.selectedId){var t=-1!==E.selectedId.indexOf("::")?E.selectedId.split("::").pop():E.selectedId;0===t.indexOf("members-am-")&&(E.settings.custom_items||[]).forEach(function(e){e&&e.id&&P(e)===t&&(r=String(e.id))})}e&&r&&(h(),E.settings.custom_items=(E.settings.custom_items||[]).filter(function(e){return!e||String(e.id)!==r}),E.selectedId=null,E.tree=N(),Ne())}}),C("#members-am-edit-popover-overlay").on("click",function(e){e.target===this&&Ne()}),C("#members-am-edit-popover-done").on("click",function(){Ne()}),C(window).on("resize.membersAmEditPop scroll.membersAmEditPop",function(){C("#members-am-edit-panel").prop("hidden")||Fe()}),C(document).on("keydown.membersAmEditPopover",function(e){"Escape"!==e.key&&27!==e.keyCode||C("#members-am-edit-panel").prop("hidden")||Ne()}),C("#members-am-edit-close").on("click",function(){Ne()}),C("#members-am-edit-target-role").on("change",Be),C("#members-am-edit-label, #members-am-edit-url, #members-am-icon-value, #members-am-badge-text").on("input",function(){ze()}),C("#members-am-item-cap").on("input",function(){ze()}),C(".members-am-icon-tabs .button").on("click",function(){C(".members-am-icon-tabs .button").removeClass("is-active"),C(this).addClass("is-active"),E.iconTab="fontawesome"===C(this).data("tab")?"fontawesome":"upload"===C(this).data("tab")?"upload":"dashicons",We()}),C("#members-am-icon-details").on("toggle",function(){this.open&&($e(),We())}),C("#members-am-icon-search").on("input",We),C("#members-am-media-upload").on("click",function(e){e.preventDefault(),E.mediaFrame||(E.mediaFrame=wp.media({title:"Choose menu icon",button:{text:"Use as icon"},multiple:!1,library:{type:"image"}}),E.mediaFrame.on("select",function(){var e=E.mediaFrame.state().get("selection").first().toJSON(),r=e.url||"";e.sizes&&(e.sizes.thumbnail?r=e.sizes.thumbnail.url:e.sizes.medium&&(r=e.sizes.medium.url)),C("#members-am-icon-type").val("custom"),C("#members-am-icon-value").val(r),ze()})),E.mediaFrame.open()}),C(document).on("change",".members-am-vis-cb",function(){h();var e=C(this).data("role");if(C(this).is(":checked")){var r=R(e).hidden,t=r.indexOf(E.selectedId);-1!==t&&r.splice(t,1)}else-1===R(e).hidden.indexOf(E.selectedId)&&R(e).hidden.push(E.selectedId);rr()}),C("#members-am-promote").on("click",function(){if(E.selectedId&&!C(this).prop("disabled")){h();var a=E.selectedId,e=_e()||{};if(-1===a.indexOf("::")&&e.parent&&"__promote__"!==e.parent){var i=e.parent,r=ye();if(r){var t=U(r);if(t.overrides[a]&&delete t.overrides[a].parent,t.submenu_order&&t.submenu_order[i]){var n=t.submenu_order[i].indexOf(a);-1!==n&&t.submenu_order[i].splice(n,1)}if(t.order.length||(t.order=z()),-1===t.order.indexOf(a)){var s=t.order.indexOf(i);-1!==s?t.order.splice(s+1,0,a):t.order.push(a)}}else xe().forEach(function(e){var r=R(e);if(r.overrides[a]&&delete r.overrides[a].parent,r.submenu_order&&r.submenu_order[i]){var t=r.submenu_order[i].indexOf(a);-1!==t&&r.submenu_order[i].splice(t,1)}if(r.order&&r.order.length||(r.order=z()),-1===r.order.indexOf(a)){var n=r.order.indexOf(i);-1!==n?r.order.splice(n+1,0,a):r.order.push(a)}});return ze(),void Be()}if(-1!==a.indexOf("::")&&e.parent&&"__promote__"!==e.parent){var o=e.parent,m=ye();m?W(U(m),o,a):xe().forEach(function(e){W(R(e),o,a)})}Ae("parent","__promote__");var l=F(a);xe().forEach(function(e){var r=R(e);if(r.order&&r.order.length||(r.order=z()),-1===r.order.indexOf(a))if(l){var t=r.order.indexOf(l);-1!==t?r.order.splice(t+1,0,a):r.order.push(a)}else r.order.push(a)}),ze(),Be()}}),C("#members-am-demote").on("click",function(){var e=C("#members-am-demote-parent").val();if(e){h();var r=E.selectedId;if(-1!==r.indexOf("::")){var t=F(r),n=ye();n?W(U(n),t,r):xe().forEach(function(e){W(R(e),t,r)})}Ae("parent",e),ze(),Be()}else p("warning",membersAdminMenus.i18n&&membersAdminMenus.i18n.selectParentFirst||"Please choose a parent menu from the list.")}),C("#members-am-user-search").on("input",function(){var e=C(this).val();clearTimeout(t),t=setTimeout(function(){1").val(e.slug).text(e.label)),t.append(C(" ").val(e.slug).text(e.label))}),1
Date: Thu, 30 Apr 2026 18:29:34 +0300
Subject: [PATCH 67/73] Enhance the plugin security
---
.../app/functions-admin.php | 19 +--
addons/members-admin-menus/app/functions.php | 27 ++++-
css/admin.css | 13 ---
css/admin.min.css | 2 +-
js/admin-menus.js | 29 -----
js/admin-menus.min.js | 2 +-
tests/bootstrap.php | 44 -------
tests/unit/AdminMenusSlugToolbarTest.php | 109 ------------------
8 files changed, 39 insertions(+), 206 deletions(-)
delete mode 100644 tests/bootstrap.php
delete mode 100644 tests/unit/AdminMenusSlugToolbarTest.php
diff --git a/addons/members-admin-menus/app/functions-admin.php b/addons/members-admin-menus/app/functions-admin.php
index 8fccede..c4c3d7f 100644
--- a/addons/members-admin-menus/app/functions-admin.php
+++ b/addons/members-admin-menus/app/functions-admin.php
@@ -22,6 +22,11 @@
/**
* Capability required for Admin Menus and Members settings screens.
*
+ * Uses the `members_settings_capability` filter (default `manage_options`). Do not lower this
+ * capability for untrusted roles: anyone with it can save Admin Menus settings (including import),
+ * hide admin items, map capabilities, and configure custom menu links—including external URLs that
+ * redirect via `members_am_redirect_to_custom_menu_url()` in the Admin Menus add-on.
+ *
* @return string
*/
function get_members_settings_capability() {
@@ -668,7 +673,6 @@ function enqueue_admin_menus_assets() {
'closeUserColumn' => __( 'Close user preview column', 'members' ),
'showAllRoles' => __( 'Show all', 'members' ),
'hideAllRoles' => __( 'Hide all', 'members' ),
- 'popoverPhase1Body' => __( 'Detailed item editing (rename, URL, icons, and colors) is coming in the next update. Use the row controls in each column for visibility and ordering.', 'members' ),
'copyConfirm' => __( 'Copy menu settings from “%1$s” to “%2$s”? This overwrites the target role’s configuration.', 'members' ),
'copyConfirmYes' => __( 'Confirm copy', 'members' ),
'copyConfirmNo' => __( 'Cancel', 'members' ),
@@ -823,9 +827,6 @@ function render_admin_menus_page() {
×
-