@@ -52,7 +52,7 @@ class="data-synchronize-export-form"
5252 @else
5353 <x-core::form .label >
5454 {{ trans (' packages/data-synchronize::data-synchronize.export.form.columns' ) } }
55- <a href =" javascript:void(0)" class =" ms-2 text-primary" data-bb-toggle = " check-all" data-bb-target = " .export-column " >{{ trans (' packages/data-synchronize::data-synchronize.check_all' ) } } </a >
55+ <a href =" javascript:void(0)" class =" ms-2 text-primary check-all-columns " >{{ trans (' packages/data-synchronize::data-synchronize.check_all' ) } } </a >
5656 </x-core::form .label >
5757
5858 <div @class ([' row row-cols-1' , ' row-cols-sm-2 row-cols-lg-3' => count ($exporter -> getColumns ()) > 6 ] )>
@@ -97,4 +97,87 @@ class="export-column"
9797 @endif
9898 </x-core::card >
9999 </x-core::form >
100+
101+ @push (' footer' )
102+ <script >
103+ document .addEventListener (' DOMContentLoaded' , function () {
104+ const form = document .querySelector (' .data-synchronize-export-form' );
105+ const storageKey = ' data-synchronize-export-form-' + window .location .pathname ;
106+ const columnCheckboxes = form .querySelectorAll (' .export-column' );
107+ const checkAllButton = form .querySelector (' .check-all-columns' );
108+
109+ // Function to save form values to localStorage
110+ function saveFormValues () {
111+ const formData = new FormData (form);
112+ const values = {};
113+
114+ // Save all form fields
115+ for (const [key , value ] of formData .entries ()) {
116+ if (key === ' columns[]' ) {
117+ if (! values .columns ) {
118+ values .columns = [];
119+ }
120+ values .columns .push (value);
121+ } else {
122+ values[key] = value;
123+ }
124+ }
125+
126+ localStorage .setItem (storageKey, JSON .stringify (values));
127+ }
128+
129+ // Function to restore form values from localStorage
130+ function restoreFormValues () {
131+ const savedValues = localStorage .getItem (storageKey);
132+ if (! savedValues) return ;
133+
134+ const values = JSON .parse (savedValues);
135+
136+ // Restore all form fields
137+ Object .entries (values).forEach (([key , value ]) => {
138+ if (key === ' columns' ) {
139+ // Handle checkboxes
140+ columnCheckboxes .forEach (checkbox => {
141+ checkbox .checked = value .includes (checkbox .value );
142+ });
143+ } else {
144+ // Handle other form fields
145+ const input = form .querySelector (` [name="${ key} "]` );
146+ if (input) {
147+ if (input .type === ' radio' ) {
148+ const radio = form .querySelector (` input[name="${ key} "][value="${ value} "]` );
149+ if (radio) {
150+ radio .checked = true ;
151+ }
152+ } else {
153+ input .value = value;
154+ }
155+ }
156+ }
157+ });
158+ }
159+
160+ // Handle check all functionality
161+ checkAllButton .addEventListener (' click' , function (e ) {
162+ e .preventDefault ();
163+ const allChecked = Array .from (columnCheckboxes).every (checkbox => checkbox .checked );
164+
165+ columnCheckboxes .forEach (checkbox => {
166+ if (! checkbox .disabled ) {
167+ checkbox .checked = ! allChecked;
168+ }
169+ });
170+
171+ saveFormValues ();
172+ });
173+
174+ // Save form values when any input changes
175+ form .addEventListener (' change' , saveFormValues);
176+ form .addEventListener (' input' , saveFormValues);
177+
178+ // Restore form values when page loads
179+ restoreFormValues ();
180+ });
181+ </script >
182+ @endpush
100183@stop
0 commit comments