Task #198: Edit→Save toggle + bulk-clear attendees + multi-select delete meetings
Three executive-meetings polish features on the Schedule view: 1. Edit-mode toggle now flips its label (Edit↔Save) and icon (Pencil↔Check) so a second click reads as "I'm done editing." 2. New-/edit-meeting dialog gained a "Remove all attendees" button next to "+ Add attendee" with a confirm prompt; only renders when ≥1 attendee is present. 3. Per-row select checkboxes (only in edit mode) drive a floating bulk toolbar showing "Selected N of M" with "Delete selected" + "Clear selection". Single confirm wipes all checked meetings. Implementation notes: - Bulk-select checkbox is rendered as an absolute overlay on the first visible non-merged cell of every row (and on the merged <td> for merged rows) instead of being inlined inside the # cell. This (a) preserves the # cell's grip handle so dnd-kit drag still works, (b) keeps the checkbox reachable when users hide # via the column customizer, and (c) keeps it reachable on rows whose merge swallows the leading cells. - Locale text added to ar.json/en.json for saveToggle.*, bulk*, removeAll, schedule.bulkSelectRow. Tests: - New spec executive-meetings-bulk-actions.spec.mjs (5 tests): edit toggle flip, dialog remove-all-attendees, multi-select delete with DB verify, hidden-# overlay survival, merged-row overlay survival. All pass. - Verified no regressions in executive-meetings-edit-toggle (4/4), -row-actions-menu (2/2), -schedule-features (4/4, including drag-row reorder), -manage-create (1/1), home-clock-persistence (1/1), order-undo-toast (2/2). Code review (architect, 2 rounds): - Round 1 flagged checkbox-in-#-cell breaks when # is hidden → fixed by lifting to absolute overlay. - Round 2 flagged merged rows skipped overlay → fixed by sharing the overlay JSX between renderCell (first unmerged cell) and the merged <td>, plus added the merged-row e2e regression test. Pre-existing failures unrelated to this task: 2 PDF tests in api-server (Tasks #172/#179) — untouched.
This commit is contained in:
@@ -878,7 +878,18 @@
|
||||
"editToggle": "تعديل",
|
||||
"editToggleAria": "تبديل وضع التعديل",
|
||||
"editToggleOn": "وضع التعديل مفعّل",
|
||||
"editToggleOff": "وضع التعديل معطّل"
|
||||
"editToggleOff": "وضع التعديل معطّل",
|
||||
"saveToggle": "حفظ",
|
||||
"saveToggleAria": "إنهاء التعديل وحفظ التغييرات",
|
||||
"bulkSelectRow": "تحديد الاجتماع",
|
||||
"bulkSelectAll": "تحديد الكل",
|
||||
"bulkSelectionCount": "محدد: {{n}} من {{total}}",
|
||||
"bulkClearSelection": "إلغاء التحديد",
|
||||
"bulkDeleteSelected": "حذف المحدد",
|
||||
"bulkDeleteConfirm": "حذف {{n}} اجتماعاً؟\n\nلا يمكن التراجع عن هذا الإجراء.",
|
||||
"bulkDeleteResultAll": "تم حذف {{n}} اجتماعاً",
|
||||
"bulkDeletePartial": "تم حذف {{ok}} من {{total}} اجتماعاً، فشل {{failed}}",
|
||||
"bulkDeleteResultNone": "فشل حذف الاجتماعات المحددة"
|
||||
},
|
||||
"rowColor": {
|
||||
"label": "لون الصف"
|
||||
@@ -956,7 +967,9 @@
|
||||
"add": "إضافة حاضر",
|
||||
"remove": "إزالة",
|
||||
"moveUp": "تحريك للأعلى",
|
||||
"moveDown": "تحريك للأسفل"
|
||||
"moveDown": "تحريك للأسفل",
|
||||
"removeAll": "حذف جميع الحضور",
|
||||
"removeAllConfirm": "حذف جميع الحضور ({{count}})؟\n\nسيتم تطبيق التغيير عند حفظ الاجتماع."
|
||||
},
|
||||
"duplicate": "تكرار",
|
||||
"duplicateToDate": "تكرار إلى تاريخ",
|
||||
|
||||
Reference in New Issue
Block a user