Zusatzabstand vor Kostenpositionsloeschbutton entfernen
This commit is contained in:
1 parent
f14023bd92
commit
e1f482ef5c
1 file changed
+1
-1
@@ -1186,7 +1186,7 @@ function render_auth_home_page(array $user, array $otcProducts = [], array $otcM
|
|||||||
echo " const municipalityReadObserver = new MutationObserver(() => syncMunicipalityReadValue(contentRoot)); municipalityReadObserver.observe(contentRoot, { childList: true, subtree: true }); syncMunicipalityReadValue(contentRoot);";
|
echo " const municipalityReadObserver = new MutationObserver(() => syncMunicipalityReadValue(contentRoot)); municipalityReadObserver.observe(contentRoot, { childList: true, subtree: true }); syncMunicipalityReadValue(contentRoot);";
|
||||||
echo " const enhanceMarketCostItems = (root) => { const drawer = getMarketDrawer(); const payload = drawer?.dataset.marketPayload ? JSON.parse(drawer.dataset.marketPayload) : null; const items = Array.isArray(payload?.occurrence?.cost_items) ? payload.occurrence.cost_items : []; root.querySelectorAll('[data-market-edit-form][data-market-edit-scope=participation]').forEach((form) => { if (form.dataset.marketCostItemsEnhanced === 'true') { return; } const field = form.querySelector('[name=cost_items_text]')?.closest('.sg-form-sections-card__field-group'); if (!field) { return; } const state = items.map((item) => Object.assign({}, item)); form._marketCostItems = state; field.innerHTML = '<label class=\"sg-labeled-input-row\"><span class=\"sg-label\">Kostenpositionen</span></label><div data-market-cost-items-editor></div><button class=\"sg-interaction-element sg-button sg-button--active sg-form-sections-card__action\" type=\"button\" data-market-cost-item-add>Kostenposition hinzufügen</button><p class=\"sg-body\" data-market-cost-item-status aria-live=\"polite\"></p>'; const editor = field.querySelector('[data-market-cost-items-editor]'); const render = () => { editor.innerHTML = ''; form._marketCostItems.forEach((item, index) => { const row = document.createElement('div'); row.className = 'sg-form-sections-card__field-group'; row.dataset.marketCostItemRow = 'true'; row.dataset.marketCostItemId = item.id || ''; row.innerHTML = '<label class=\"sg-labeled-input-row\"><span class=\"sg-label\">Art</span><input class=\"sg-interaction-element sg-input-single-line\" type=\"text\" data-market-cost-field=\"cost_type\" value=\"' + marketEscape(item.cost_type || '') + '\"></label><label class=\"sg-labeled-input-row\"><span class=\"sg-label\">Beschreibung</span><input class=\"sg-interaction-element sg-input-single-line\" type=\"text\" data-market-cost-field=\"description\" value=\"' + marketEscape(item.description || '') + '\"></label><label class=\"sg-labeled-input-row\"><span class=\"sg-label\">Brutto</span><input class=\"sg-interaction-element sg-input-single-line\" type=\"number\" step=\"0.01\" data-market-cost-field=\"gross_amount\" value=\"' + marketEscape(item.gross_amount || '') + '\"></label><label class=\"sg-labeled-input-row\"><span class=\"sg-label\">Steuerstatus</span><select class=\"sg-interaction-element sg-input-single-line\" data-market-cost-field=\"tax_status\"><option value=\"tax_free\"' + (item.tax_status === 'tax_free' ? ' selected' : '') + '>Steuerfrei</option><option value=\"taxable\"' + (item.tax_status === 'taxable' ? ' selected' : '') + '>Steuerpflichtig</option></select></label><label class=\"sg-labeled-input-row\"><span class=\"sg-label\">Steuersatz</span><input class=\"sg-interaction-element sg-input-single-line\" type=\"number\" step=\"0.01\" data-market-cost-field=\"tax_rate\" value=\"' + marketEscape(item.tax_rate || '') + '\"></label><div class=\"sg-component-row\"><button class=\"sg-interaction-element sg-button sg-button--process\" type=\"button\" data-market-cost-item-save>Speichern</button>' + (item.id ? '<button class=\"sg-interaction-element sg-button sg-button--warning\" type=\"button\" data-market-cost-item-delete>Löschen</button>' : '<button class=\"sg-interaction-element sg-button sg-button--active\" type=\"button\" data-market-cost-item-cancel>Abbrechen</button>') + '</div>'; editor.appendChild(row); }); }; form._marketCostItemRender = render; render(); form.dataset.marketCostItemsEnhanced = 'true'; }); };";
|
echo " const enhanceMarketCostItems = (root) => { const drawer = getMarketDrawer(); const payload = drawer?.dataset.marketPayload ? JSON.parse(drawer.dataset.marketPayload) : null; const items = Array.isArray(payload?.occurrence?.cost_items) ? payload.occurrence.cost_items : []; root.querySelectorAll('[data-market-edit-form][data-market-edit-scope=participation]').forEach((form) => { if (form.dataset.marketCostItemsEnhanced === 'true') { return; } const field = form.querySelector('[name=cost_items_text]')?.closest('.sg-form-sections-card__field-group'); if (!field) { return; } const state = items.map((item) => Object.assign({}, item)); form._marketCostItems = state; field.innerHTML = '<label class=\"sg-labeled-input-row\"><span class=\"sg-label\">Kostenpositionen</span></label><div data-market-cost-items-editor></div><button class=\"sg-interaction-element sg-button sg-button--active sg-form-sections-card__action\" type=\"button\" data-market-cost-item-add>Kostenposition hinzufügen</button><p class=\"sg-body\" data-market-cost-item-status aria-live=\"polite\"></p>'; const editor = field.querySelector('[data-market-cost-items-editor]'); const render = () => { editor.innerHTML = ''; form._marketCostItems.forEach((item, index) => { const row = document.createElement('div'); row.className = 'sg-form-sections-card__field-group'; row.dataset.marketCostItemRow = 'true'; row.dataset.marketCostItemId = item.id || ''; row.innerHTML = '<label class=\"sg-labeled-input-row\"><span class=\"sg-label\">Art</span><input class=\"sg-interaction-element sg-input-single-line\" type=\"text\" data-market-cost-field=\"cost_type\" value=\"' + marketEscape(item.cost_type || '') + '\"></label><label class=\"sg-labeled-input-row\"><span class=\"sg-label\">Beschreibung</span><input class=\"sg-interaction-element sg-input-single-line\" type=\"text\" data-market-cost-field=\"description\" value=\"' + marketEscape(item.description || '') + '\"></label><label class=\"sg-labeled-input-row\"><span class=\"sg-label\">Brutto</span><input class=\"sg-interaction-element sg-input-single-line\" type=\"number\" step=\"0.01\" data-market-cost-field=\"gross_amount\" value=\"' + marketEscape(item.gross_amount || '') + '\"></label><label class=\"sg-labeled-input-row\"><span class=\"sg-label\">Steuerstatus</span><select class=\"sg-interaction-element sg-input-single-line\" data-market-cost-field=\"tax_status\"><option value=\"tax_free\"' + (item.tax_status === 'tax_free' ? ' selected' : '') + '>Steuerfrei</option><option value=\"taxable\"' + (item.tax_status === 'taxable' ? ' selected' : '') + '>Steuerpflichtig</option></select></label><label class=\"sg-labeled-input-row\"><span class=\"sg-label\">Steuersatz</span><input class=\"sg-interaction-element sg-input-single-line\" type=\"number\" step=\"0.01\" data-market-cost-field=\"tax_rate\" value=\"' + marketEscape(item.tax_rate || '') + '\"></label><div class=\"sg-component-row\"><button class=\"sg-interaction-element sg-button sg-button--process\" type=\"button\" data-market-cost-item-save>Speichern</button>' + (item.id ? '<button class=\"sg-interaction-element sg-button sg-button--warning\" type=\"button\" data-market-cost-item-delete>Löschen</button>' : '<button class=\"sg-interaction-element sg-button sg-button--active\" type=\"button\" data-market-cost-item-cancel>Abbrechen</button>') + '</div>'; editor.appendChild(row); }); }; form._marketCostItemRender = render; render(); form.dataset.marketCostItemsEnhanced = 'true'; }); };";
|
||||||
echo " const marketCostItemObserver = new MutationObserver(() => enhanceMarketCostItems(contentRoot)); marketCostItemObserver.observe(contentRoot, { childList: true, subtree: true }); enhanceMarketCostItems(contentRoot);";
|
echo " const marketCostItemObserver = new MutationObserver(() => enhanceMarketCostItems(contentRoot)); marketCostItemObserver.observe(contentRoot, { childList: true, subtree: true }); enhanceMarketCostItems(contentRoot);";
|
||||||
echo " const normalizeMarketCostItems = (root) => { root.querySelectorAll('[data-market-edit-form][data-market-edit-scope=participation]').forEach((form) => { const field = form.querySelector('[data-market-cost-items-editor]')?.parentElement; if (!field || field.dataset.marketCostItemsNormalized === 'true') { return; } const chapter = document.createElement('section'); chapter.className = 'sg-form-sections-card__chapter'; const title = document.createElement('h2'); title.className = 'sg-strong sg-form-sections-card__chapter-title'; title.textContent = 'Kostenpositionen'; chapter.appendChild(title); while (field.firstChild) { chapter.appendChild(field.firstChild); } field.replaceWith(chapter); form._marketCostItemsField = chapter; const render = form._marketCostItemRender; form._marketCostItemRender = () => { render(); form.querySelectorAll('[data-market-cost-item-save], [data-market-cost-item-delete], [data-market-cost-item-cancel]').forEach((button) => button.remove()); }; form._marketCostItemRender(); chapter.dataset.marketCostItemsNormalized = 'true'; }); }; const collectMarketCostItems = (form) => Array.from(form.querySelectorAll('[data-market-cost-item-row]')).map((row) => { const item = Object.fromEntries(Array.from(row.querySelectorAll('[data-market-cost-field]')).map((input) => [input.dataset.marketCostField, input.value])); if (row.dataset.marketCostItemId) { item.id = Number(row.dataset.marketCostItemId); } return item; });";
|
echo " const normalizeMarketCostItems = (root) => { root.querySelectorAll('[data-market-edit-form][data-market-edit-scope=participation]').forEach((form) => { const field = form.querySelector('[data-market-cost-items-editor]')?.parentElement; if (!field || field.dataset.marketCostItemsNormalized === 'true') { return; } const chapter = document.createElement('section'); chapter.className = 'sg-form-sections-card__chapter'; const title = document.createElement('h2'); title.className = 'sg-strong sg-form-sections-card__chapter-title'; title.textContent = 'Kostenpositionen'; chapter.appendChild(title); while (field.firstChild) { chapter.appendChild(field.firstChild); } field.replaceWith(chapter); form._marketCostItemsField = chapter; const render = form._marketCostItemRender; form._marketCostItemRender = () => { render(); form.querySelectorAll('[data-market-cost-item-save], [data-market-cost-item-delete], [data-market-cost-item-cancel]').forEach((button) => button.remove()); form.querySelectorAll('[data-market-cost-item-row] .sg-component-row').forEach((actions) => actions.remove()); }; form._marketCostItemRender(); chapter.dataset.marketCostItemsNormalized = 'true'; }); }; const collectMarketCostItems = (form) => Array.from(form.querySelectorAll('[data-market-cost-item-row]')).map((row) => { const item = Object.fromEntries(Array.from(row.querySelectorAll('[data-market-cost-field]')).map((input) => [input.dataset.marketCostField, input.value])); if (row.dataset.marketCostItemId) { item.id = Number(row.dataset.marketCostItemId); } return item; });";
|
||||||
echo " const marketCostItemsNormalizationObserver = new MutationObserver(() => normalizeMarketCostItems(contentRoot)); marketCostItemsNormalizationObserver.observe(contentRoot, { childList: true, subtree: true }); normalizeMarketCostItems(contentRoot);";
|
echo " const marketCostItemsNormalizationObserver = new MutationObserver(() => normalizeMarketCostItems(contentRoot)); marketCostItemsNormalizationObserver.observe(contentRoot, { childList: true, subtree: true }); normalizeMarketCostItems(contentRoot);";
|
||||||
echo " const enhanceMarketCostTypeControls = (root) => { const drawer = getMarketDrawer(); const payload = drawer?.dataset.marketPayload ? JSON.parse(drawer.dataset.marketPayload) : null; const types = Array.isArray(payload?.occurrence?.reference_options?.cost_types) ? payload.occurrence.reference_options.cost_types : []; root.querySelectorAll('[data-market-edit-form][data-market-edit-scope=participation] [data-market-cost-item-row]').forEach((row, index) => { const old = row.querySelector('[data-market-cost-field=cost_type]'); if (old && old.tagName === 'INPUT') { const select = document.createElement('select'); select.className = 'sg-interaction-element sg-input-single-line sg-pulldown'; select.dataset.marketCostField = 'cost_type_id'; select.innerHTML = types.map((type) => '<option value=\"' + marketEscape(type.id) + '\">' + marketEscape(type.name) + '</option>').join('') + '<option value=\"__new__\">Neue Kostenart anlegen</option>'; const selected = types.find((type) => String(type.name) === String(old.value)); select.value = selected ? String(selected.id) : ''; old.replaceWith(select); } const select = row.querySelector('[data-market-cost-field=cost_type_id]'); if (!select || select.dataset.marketCostTypeBound === 'true') { return; } const syncNew = () => { row.querySelector('[data-market-new-cost-type]')?.remove(); if (select.value === '__new__') { row.insertAdjacentHTML('beforeend', '<label class=\"sg-labeled-input-row\" data-market-new-cost-type><span class=\"sg-label\">Neue Kostenart</span><input class=\"sg-interaction-element sg-input-single-line\" type=\"text\" data-market-cost-field=\"cost_type_name\" required></label>'); } }; select.addEventListener('change', syncNew); select.dataset.marketCostTypeBound = 'true'; syncNew(); if (index > 0 && !row.querySelector('[data-market-cost-item-remove]')) { row.insertAdjacentHTML('beforeend', '<div class=\"market-cost-item-delete-actions\"><button class=\"sg-interaction-element sg-button sg-button--warning\" type=\"button\" data-market-cost-item-remove>Löschen</button></div>'); } }); }; const marketCostTypeObserver = new MutationObserver(() => enhanceMarketCostTypeControls(contentRoot)); marketCostTypeObserver.observe(contentRoot, { childList: true, subtree: true }); enhanceMarketCostTypeControls(contentRoot);";
|
echo " const enhanceMarketCostTypeControls = (root) => { const drawer = getMarketDrawer(); const payload = drawer?.dataset.marketPayload ? JSON.parse(drawer.dataset.marketPayload) : null; const types = Array.isArray(payload?.occurrence?.reference_options?.cost_types) ? payload.occurrence.reference_options.cost_types : []; root.querySelectorAll('[data-market-edit-form][data-market-edit-scope=participation] [data-market-cost-item-row]').forEach((row, index) => { const old = row.querySelector('[data-market-cost-field=cost_type]'); if (old && old.tagName === 'INPUT') { const select = document.createElement('select'); select.className = 'sg-interaction-element sg-input-single-line sg-pulldown'; select.dataset.marketCostField = 'cost_type_id'; select.innerHTML = types.map((type) => '<option value=\"' + marketEscape(type.id) + '\">' + marketEscape(type.name) + '</option>').join('') + '<option value=\"__new__\">Neue Kostenart anlegen</option>'; const selected = types.find((type) => String(type.name) === String(old.value)); select.value = selected ? String(selected.id) : ''; old.replaceWith(select); } const select = row.querySelector('[data-market-cost-field=cost_type_id]'); if (!select || select.dataset.marketCostTypeBound === 'true') { return; } const syncNew = () => { row.querySelector('[data-market-new-cost-type]')?.remove(); if (select.value === '__new__') { row.insertAdjacentHTML('beforeend', '<label class=\"sg-labeled-input-row\" data-market-new-cost-type><span class=\"sg-label\">Neue Kostenart</span><input class=\"sg-interaction-element sg-input-single-line\" type=\"text\" data-market-cost-field=\"cost_type_name\" required></label>'); } }; select.addEventListener('change', syncNew); select.dataset.marketCostTypeBound = 'true'; syncNew(); if (index > 0 && !row.querySelector('[data-market-cost-item-remove]')) { row.insertAdjacentHTML('beforeend', '<div class=\"market-cost-item-delete-actions\"><button class=\"sg-interaction-element sg-button sg-button--warning\" type=\"button\" data-market-cost-item-remove>Löschen</button></div>'); } }); }; const marketCostTypeObserver = new MutationObserver(() => enhanceMarketCostTypeControls(contentRoot)); marketCostTypeObserver.observe(contentRoot, { childList: true, subtree: true }); enhanceMarketCostTypeControls(contentRoot);";
|
||||||
echo " const removeMarketCostChapterLabel = (root) => { root.querySelectorAll('[data-market-cost-items-editor]').forEach((editor) => { const chapter = editor.parentElement; const label = Array.from(chapter?.children || []).find((child) => child.matches('label.sg-labeled-input-row')); label?.remove(); }); }; const marketCostChapterLabelObserver = new MutationObserver(() => removeMarketCostChapterLabel(contentRoot)); marketCostChapterLabelObserver.observe(contentRoot, { childList: true, subtree: true }); removeMarketCostChapterLabel(contentRoot);";
|
echo " const removeMarketCostChapterLabel = (root) => { root.querySelectorAll('[data-market-cost-items-editor]').forEach((editor) => { const chapter = editor.parentElement; const label = Array.from(chapter?.children || []).find((child) => child.matches('label.sg-labeled-input-row')); label?.remove(); }); }; const marketCostChapterLabelObserver = new MutationObserver(() => removeMarketCostChapterLabel(contentRoot)); marketCostChapterLabelObserver.observe(contentRoot, { childList: true, subtree: true }); removeMarketCostChapterLabel(contentRoot);";
|
||||||
|
|||||||
Reference in new issue
Block a user