diff --git a/public/pages/settings.js b/public/pages/settings.js
index f79ae50..4864b82 100644
--- a/public/pages/settings.js
+++ b/public/pages/settings.js
@@ -1545,36 +1545,46 @@ function bindEvents(container, user, users, categories, icsSubscriptions, apiTok
${t('settings.caldavPasswordHint')}
+
+
+
+
`,
- onSave: async (panel) => {
+ onSave: (panel) => {
const form = panel.querySelector('#caldav-add-form');
const errorEl = panel.querySelector('#caldav-add-error');
- errorEl.hidden = true;
- const name = panel.querySelector('#caldav-name').value.trim();
- const caldavUrl = panel.querySelector('#caldav-url').value.trim();
- const username = panel.querySelector('#caldav-username').value.trim();
- const password = panel.querySelector('#caldav-password').value;
+ panel.querySelector('#caldav-add-cancel')?.addEventListener('click', () => closeModal({ force: true }));
- if (!name || !caldavUrl || !username || !password) {
- showError(errorEl, t('common.requiredFields'));
- return;
- }
+ form.addEventListener('submit', async (e) => {
+ e.preventDefault();
+ errorEl.hidden = true;
- try {
- await api.post('/calendar/caldav/accounts', {
- name,
- caldavUrl,
- username,
- password,
- });
- closeModal({ force: true });
- window.oikos?.showToast(t('settings.caldavAccountAdded'), 'success');
- await loadCalDAVAccounts(container, user);
- } catch (err) {
- showError(errorEl, err.message);
- }
+ const name = panel.querySelector('#caldav-name').value.trim();
+ const caldavUrl = panel.querySelector('#caldav-url').value.trim();
+ const username = panel.querySelector('#caldav-username').value.trim();
+ const password = panel.querySelector('#caldav-password').value;
+
+ if (!name || !caldavUrl || !username || !password) {
+ showError(errorEl, t('common.requiredFields'));
+ return;
+ }
+
+ try {
+ await api.post('/calendar/caldav/accounts', {
+ name,
+ caldavUrl,
+ username,
+ password,
+ });
+ closeModal({ force: true });
+ window.oikos?.showToast(t('settings.caldavAccountAdded'), 'success');
+ await loadCalDAVAccounts(container, user);
+ } catch (err) {
+ showError(errorEl, err.message);
+ }
+ });
},
});
});
@@ -1610,35 +1620,46 @@ function bindEvents(container, user, users, categories, icsSubscriptions, apiTok
${t('settings.cardavPasswordHint')}
+
+
+
+
`,
- onSave: async (panel) => {
+ onSave: (panel) => {
+ const form = panel.querySelector('#cardav-add-form');
const errorEl = panel.querySelector('#cardav-add-error');
- errorEl.hidden = true;
- const name = panel.querySelector('#cardav-name').value.trim();
- const cardavUrl = panel.querySelector('#cardav-url').value.trim();
- const username = panel.querySelector('#cardav-username').value.trim();
- const password = panel.querySelector('#cardav-password').value;
+ panel.querySelector('#cardav-add-cancel')?.addEventListener('click', () => closeModal({ force: true }));
- if (!name || !cardavUrl || !username || !password) {
- showError(errorEl, t('common.allFieldsRequired'));
- return;
- }
+ form.addEventListener('submit', async (e) => {
+ e.preventDefault();
+ errorEl.hidden = true;
- try {
- await api.post('/contacts/cardav/accounts', {
- name,
- cardavUrl,
- username,
- password,
- });
- closeModal({ force: true });
- window.oikos?.showToast(t('settings.cardavAccountAdded'), 'success');
- await loadCardDAVAccounts(container, user);
- } catch (err) {
- showError(errorEl, err.message);
- }
+ const name = panel.querySelector('#cardav-name').value.trim();
+ const cardavUrl = panel.querySelector('#cardav-url').value.trim();
+ const username = panel.querySelector('#cardav-username').value.trim();
+ const password = panel.querySelector('#cardav-password').value;
+
+ if (!name || !cardavUrl || !username || !password) {
+ showError(errorEl, t('common.allFieldsRequired'));
+ return;
+ }
+
+ try {
+ await api.post('/contacts/cardav/accounts', {
+ name,
+ cardavUrl,
+ username,
+ password,
+ });
+ closeModal({ force: true });
+ window.oikos?.showToast(t('settings.cardavAccountAdded'), 'success');
+ await loadCardDAVAccounts(container, user);
+ } catch (err) {
+ showError(errorEl, err.message);
+ }
+ });
},
});
});