new funtions

This commit is contained in:
Mateusz Gruszczyński
2026-03-31 10:34:29 +02:00
parent 9ca2f8f7ea
commit 222be68db2
4 changed files with 67 additions and 15 deletions

View File

@@ -4399,7 +4399,9 @@ body.sorting-active .shopping-item-row .large-checkbox {
}
.endpoint-list_share .shopping-item-main,
.endpoint-shared_list .shopping-item-main {
.endpoint-shared_list .shopping-item-main,
.endpoint-view_list .shopping-item-main,
.endpoint-list .shopping-item-main {
display: flex;
align-items: center;
gap: .75rem;
@@ -4407,14 +4409,18 @@ body.sorting-active .shopping-item-row .large-checkbox {
}
.endpoint-list_share .shopping-item-content,
.endpoint-shared_list .shopping-item-content {
.endpoint-shared_list .shopping-item-content,
.endpoint-view_list .shopping-item-content,
.endpoint-list .shopping-item-content {
flex: 1 1 auto;
min-width: 0;
width: auto;
}
.endpoint-list_share .shopping-item-head,
.endpoint-shared_list .shopping-item-head {
.endpoint-shared_list .shopping-item-head,
.endpoint-view_list .shopping-item-head,
.endpoint-list .shopping-item-head {
display: flex;
align-items: center;
justify-content: space-between;
@@ -4422,7 +4428,9 @@ body.sorting-active .shopping-item-row .large-checkbox {
}
.endpoint-list_share .shopping-item-text,
.endpoint-shared_list .shopping-item-text {
.endpoint-shared_list .shopping-item-text,
.endpoint-view_list .shopping-item-text,
.endpoint-list .shopping-item-text {
flex: 1 1 auto;
min-width: 0;
display: flex;
@@ -4433,7 +4441,9 @@ body.sorting-active .shopping-item-row .large-checkbox {
}
.endpoint-list_share .shopping-item-name,
.endpoint-shared_list .shopping-item-name {
.endpoint-shared_list .shopping-item-name,
.endpoint-view_list .shopping-item-name,
.endpoint-list .shopping-item-name {
display: inline;
min-width: 0;
max-width: 100%;
@@ -4444,13 +4454,19 @@ body.sorting-active .shopping-item-row .large-checkbox {
.endpoint-list_share .shopping-item-text .badge,
.endpoint-shared_list .shopping-item-text .badge,
.endpoint-view_list .shopping-item-text .badge,
.endpoint-list .shopping-item-text .badge,
.endpoint-list_share .shopping-item-text .info-line,
.endpoint-shared_list .shopping-item-text .info-line {
.endpoint-shared_list .shopping-item-text .info-line,
.endpoint-view_list .shopping-item-text .info-line,
.endpoint-list .shopping-item-text .info-line {
align-self: center;
}
.endpoint-list_share .shopping-item-text .info-line,
.endpoint-shared_list .shopping-item-text .info-line {
.endpoint-shared_list .shopping-item-text .info-line,
.endpoint-view_list .shopping-item-text .info-line,
.endpoint-list .shopping-item-text .info-line {
display: block;
flex: 0 0 100%;
width: 100%;
@@ -4461,7 +4477,9 @@ body.sorting-active .shopping-item-row .large-checkbox {
}
.endpoint-list_share .shopping-item-actions,
.endpoint-shared_list .shopping-item-actions {
.endpoint-shared_list .shopping-item-actions,
.endpoint-view_list .shopping-item-actions,
.endpoint-list .shopping-item-actions {
display: inline-flex;
flex: 0 0 auto;
flex-wrap: nowrap;
@@ -4491,12 +4509,16 @@ body.sorting-active .shopping-item-row .large-checkbox {
@media (max-width: 575.98px) {
.endpoint-list_share .shopping-item-main,
.endpoint-shared_list .shopping-item-main {
.endpoint-shared_list .shopping-item-main,
.endpoint-view_list .shopping-item-main,
.endpoint-list .shopping-item-main {
gap: .55rem;
}
.endpoint-list_share .shopping-item-head,
.endpoint-shared_list .shopping-item-head {
.endpoint-shared_list .shopping-item-head,
.endpoint-view_list .shopping-item-head,
.endpoint-list .shopping-item-head {
display: flex;
align-items: center;
justify-content: space-between;
@@ -4504,14 +4526,18 @@ body.sorting-active .shopping-item-row .large-checkbox {
}
.endpoint-list_share .shopping-item-text,
.endpoint-shared_list .shopping-item-text {
.endpoint-shared_list .shopping-item-text,
.endpoint-view_list .shopping-item-text,
.endpoint-list .shopping-item-text {
flex: 1 1 auto;
min-width: 0;
gap: .25rem;
}
.endpoint-list_share .shopping-item-actions,
.endpoint-shared_list .shopping-item-actions {
.endpoint-shared_list .shopping-item-actions,
.endpoint-view_list .shopping-item-actions,
.endpoint-list .shopping-item-actions {
align-self: start;
width: auto;
margin-left: auto;

View File

@@ -389,7 +389,7 @@ function renderItem(item, isShare = window.IS_SHARE, optionsOrShowEditOnly = fal
<button type="button" class="${iconBtn} shopping-action-btn--countdown" disabled data-countdown-for="${item.id}">${countdownSeconds}s</button>
<button type="button" class="${iconBtn}" ${isArchived ? 'disabled' : `onclick='openEditItemModal(event, ${item.id}, ${nameForEdit}, ${quantity})'`}>✏️</button>
<button type="button" class="${iconBtn}" ${isArchived ? 'disabled' : `onclick="deleteItem(${item.id})"`}>🗑️</button>`;
} else if (canShowShareActions) {
} else if (canShowShareActions || (!isShare && isOwner)) {
actionButtons += `
<button type="button" class="${iconBtn}" ${isArchived ? 'disabled' : `onclick="openNoteModal(event, ${item.id})"`}>📝</button>`;
}

View File

@@ -3,9 +3,9 @@ window.currentItemId = window.currentItemId ?? null;
window.openNoteModal = function (event, itemId) {
event.stopPropagation();
window.currentItemId = itemId;
const noteEl = document.querySelector(`#item-${itemId} small.text-danger`);
const noteEl = document.querySelector(`#info-${itemId} .text-danger b`);
document.getElementById('noteText').value = noteEl
? noteEl.innerText.replace(/\[|\]|Powód:/g, "").trim()
? noteEl.innerText.trim()
: "";
const modal = new bootstrap.Modal(document.getElementById('noteModal'));
modal.show();

View File

@@ -141,6 +141,9 @@
<button type="button" class="btn btn-outline-light btn-sm shopping-action-btn" {% if list.is_archived %}disabled{% else
%}onclick="markNotPurchasedModal(event, {{ item.id }})" {% endif %}>⚠️</button>
{% endif %}
<button type="button" class="btn btn-outline-light btn-sm shopping-action-btn" {% if list.is_archived %}disabled{% else
%}onclick="openNoteModal(event, {{ item.id }})" {% endif %}>📝</button>
</div>
</div>
</div>
@@ -451,6 +454,28 @@
</div>
</div>
<div class="modal fade" id="noteModal" tabindex="-1" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content bg-dark text-white">
<div class="modal-header">
<h5 class="modal-title">Dodaj / edytuj komentarz</h5>
<button type="button" class="btn-close btn-close-white" data-bs-dismiss="modal" aria-label="Zamknij"></button>
</div>
<form id="noteForm" onsubmit="submitNote(event)">
<div class="modal-body">
<textarea id="noteText" class="form-control" rows="4" placeholder="Np. 'Promocja 2+2'"></textarea>
</div>
<div class="modal-footer">
<div class="btn-group" role="group">
<button type="button" class="btn btn-outline-light btn-sm" data-bs-dismiss="modal">❌ Anuluj</button>
<button type="submit" class="btn btn-outline-light btn-sm"><span class="shopping-btn-icon" aria-hidden="true">💾</span><span class="shopping-btn-label">Zapisz</span></button>
</div>
</div>
</form>
</div>
</div>
</div>
{% block scripts %}
<script src="{{ static_asset_url('static_bp.serve_js_lib', 'Sortable.min.js') }}"></script>
<script>
@@ -465,6 +490,7 @@
<script src="{{ static_asset_url('static_bp.serve_js', 'sort_mode.js') }}"></script>
<script src="{{ static_asset_url('static_bp.serve_js', 'access_users.js') }}"></script>
<script src="{{ static_asset_url('static_bp.serve_js', 'category_modal.js') }}"></script>
<script src="{{ static_asset_url('static_bp.serve_js', 'notes.js') }}"></script>
<script>
setupList({{ list.id }}, '{{ current_user.username if current_user.is_authenticated else 'Gość' }}');