Deleting a group or sub group still used by barang (or a group still
used by sub groups) is refused, because PHP queries inner join on these
codes and would silently hide the orphaned barang. Editing a sub group
only changes its name, matching ajaxdlmpdk.php; changing the code pair
would orphan barang the same way.
Group codes are generated automatically, unlike the old PHP form where
they were typed manually.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Move cari-master, master-sheet-form, and hapus-master-button into
app/(dashboard)/master/_components since only master pages use them
- Merge MasterSheetForm and MasterMultiFieldSheetForm into one form that
accepts multiple fields; forms needing select/textarea stay custom
- Drop the initial prop and hardcode { ok: false } as the action state seed
- Blur number inputs on wheel to prevent accidental value changes
- Update CLAUDE.md to describe the new layout and rules
CRUD page for satuan barang following the pelanggan feature pattern:
page, actions, form sheet, delete dialog, and a data layer with LIKE
search and pagination. Delete rejects units still referenced by barang.
Pull PER_PAGE, parsePage, and halamanHref into lib/pagination, the search
box into components/cari-master, and escapeLike into lib/utils so other
master features can reuse them. Pelanggan switches to these helpers and
its list now calls getCurrentUser() in its render chain.