Skip to content

Commit b4e862b

Browse files
Save selection to localstorage
1 parent 7ff466c commit b4e862b

File tree

1 file changed

+84
-1
lines changed

1 file changed

+84
-1
lines changed

resources/views/export.blade.php

Lines changed: 84 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)