| @@ -103,18 +103,61 @@ | ||
| 103 | 103 | |
| 104 | 104 | // for setting sidebar |
| 105 | 105 | let formSettingSidebarElem = jQuery('.ff_settings_sidebar_wrap'); |
| 106 | 106 | let formSettingOverlayElem = jQuery('#form-setting-overlay'); |
| 107 | - | |
| 108 | - jQuery('.ff_sidebar_toggle').on('click', function() { | |
| 107 | + let formSettingSidebarStateKey = 'fluentform_settings_sidebar_collapsed'; | |
| 108 | + let formSettingSidebarToggle = jQuery('.ff_settings_wrapper .ff_sidebar_toggle'); | |
| 109 | + let isFormSettingDesktop = function() { | |
| 110 | + return window.matchMedia('(min-width: 769px)').matches; | |
| 111 | + }; | |
| 112 | + let syncFormSettingSidebarMode = function() { | |
| 113 | + if (isFormSettingDesktop() && window.localStorage.getItem(formSettingSidebarStateKey) === 'yes') { | |
| 114 | + formSettingSidebarElem.addClass('ff_settings_sidebar_collapsed'); | |
| 115 | + } else if (!isFormSettingDesktop()) { | |
| 116 | + formSettingSidebarElem.removeClass('ff_settings_sidebar_collapsed'); | |
| 117 | + } | |
| 118 | + }; | |
| 119 | + let updateFormSettingToggleState = function() { | |
| 120 | + let collapseLabel = formSettingSidebarToggle.data('collapse-label') || 'Collapse settings menu'; | |
| 121 | + let expandLabel = formSettingSidebarToggle.data('expand-label') || 'Expand settings menu'; | |
| 122 | + let isExpanded = isFormSettingDesktop() | |
| 123 | + ? !formSettingSidebarElem.hasClass('ff_settings_sidebar_collapsed') | |
| 124 | + : formSettingSidebarElem.hasClass('active'); | |
| 125 | + | |
| 126 | + formSettingSidebarToggle | |
| 127 | + .attr('aria-expanded', isExpanded ? 'true' : 'false') | |
| 128 | + .attr('aria-label', isExpanded ? collapseLabel : expandLabel) | |
| 129 | + .attr('title', isExpanded ? collapseLabel : expandLabel); | |
| 130 | + }; | |
| 131 | + | |
| 132 | + syncFormSettingSidebarMode(); | |
| 133 | + | |
| 134 | + formSettingSidebarToggle.on('click', function() { | |
| 135 | + if (isFormSettingDesktop()) { | |
| 136 | + formSettingSidebarElem.toggleClass('ff_settings_sidebar_collapsed'); | |
| 137 | + window.localStorage.setItem( | |
| 138 | + formSettingSidebarStateKey, | |
| 139 | + formSettingSidebarElem.hasClass('ff_settings_sidebar_collapsed') ? 'yes' : 'no' | |
| 140 | + ); | |
| 141 | + updateFormSettingToggleState(); | |
| 142 | + return; | |
| 143 | + } | |
| 144 | + | |
| 109 | 145 | jQuery(formSettingSidebarElem).add(formSettingOverlayElem).toggleClass('active'); |
| 146 | + updateFormSettingToggleState(); | |
| 110 | 147 | }); |
| 111 | 148 | |
| 112 | 149 | jQuery(formSettingOverlayElem).on('click', function() { |
| 113 | 150 | jQuery(formSettingOverlayElem).add(formSettingSidebarElem).removeClass('active'); |
| 151 | + updateFormSettingToggleState(); | |
| 114 | 152 | }); |
| 115 | 153 | |
| 116 | - | |
| 154 | + jQuery(window).on('resize', function() { | |
| 155 | + syncFormSettingSidebarMode(); | |
| 156 | + updateFormSettingToggleState(); | |
| 157 | + }); | |
| 158 | + updateFormSettingToggleState(); | |
| 159 | + | |
| 117 | 160 | "); |
| 118 | 161 | ?> |
| 119 | 162 | |
| 120 | 163 | <div class="ff_form_application_container"> |