Remove unused blade settings pages not linked from UI Convert remaining frontend pages to SPA actions Convert settings user_settings and general to SPA actions Convert settings profile pages to SPA actions Convert contacts and projects add/edit pages to SPA actions Convert clients add/edit page to SPA action with loading pattern Refactor component scoped IDs from $id to $sid Fix jqhtml comment syntax and implement universal error component system Update all application code to use new unified error system Remove all backwards compatibility - unified error system complete Phase 5: Remove old response classes Phase 3-4: Ajax response handler sends new format, old helpers deprecated Phase 2: Add client-side unified error foundation Phase 1: Add server-side unified error foundation Add unified Ajax error response system with constants 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
26 lines
3.2 KiB
JavaScript
Executable File
26 lines
3.2 KiB
JavaScript
Executable File
"use strict";
|
|
|
|
class Sidebar_Nav extends Component {
|
|
on_ready() {
|
|
// Auto-wrap children in nav structure if needed
|
|
const $nav_items = this.$sid('nav_items');
|
|
$nav_items.children().each(function () {
|
|
const $child = $(this);
|
|
if ($child.prop('tagName') !== 'LI') {
|
|
const $li = $('<li>').addClass('nav-item');
|
|
$child.addClass('nav-link');
|
|
$child.wrap($li);
|
|
}
|
|
});
|
|
|
|
// Set active state based on current URL
|
|
const current_path = window.location.pathname;
|
|
$nav_items.find('a.nav-link').each(function () {
|
|
const $link = $(this);
|
|
if ($link.attr('href') === current_path) {
|
|
$link.addClass('active');
|
|
}
|
|
});
|
|
}
|
|
}
|
|
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJTaWRlYmFyX05hdiIsIkpxaHRtbF9Db21wb25lbnQiLCJvbl9yZWFkeSIsIiRuYXZfaXRlbXMiLCIkaWQiLCJjaGlsZHJlbiIsImVhY2giLCIkY2hpbGQiLCIkIiwicHJvcCIsIiRsaSIsImFkZENsYXNzIiwid3JhcCIsImN1cnJlbnRfcGF0aCIsIndpbmRvdyIsImxvY2F0aW9uIiwicGF0aG5hbWUiLCJmaW5kIiwiJGxpbmsiLCJhdHRyIl0sInNvdXJjZXMiOlsicnN4L3RoZW1lL2NvbXBvbmVudHMvX2FyY2hpdmVkL3VuZmluaXNoZWQvU2lkZWJhcl9OYXYuanMiXSwic291cmNlc0NvbnRlbnQiOlsiY2xhc3MgU2lkZWJhcl9OYXYgZXh0ZW5kcyBKcWh0bWxfQ29tcG9uZW50IHtcbiAgICBvbl9yZWFkeSgpIHtcbiAgICAgICAgLy8gQXV0by13cmFwIGNoaWxkcmVuIGluIG5hdiBzdHJ1Y3R1cmUgaWYgbmVlZGVkXG4gICAgICAgIGNvbnN0ICRuYXZfaXRlbXMgPSB0aGlzLiRpZCgnbmF2X2l0ZW1zJyk7XG4gICAgICAgICRuYXZfaXRlbXMuY2hpbGRyZW4oKS5lYWNoKGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgY29uc3QgJGNoaWxkID0gJCh0aGlzKTtcbiAgICAgICAgICAgIGlmICgkY2hpbGQucHJvcCgndGFnTmFtZScpICE9PSAnTEknKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgJGxpID0gJCgnPGxpPicpLmFkZENsYXNzKCduYXYtaXRlbScpO1xuICAgICAgICAgICAgICAgICRjaGlsZC5hZGRDbGFzcygnbmF2LWxpbmsnKTtcbiAgICAgICAgICAgICAgICAkY2hpbGQud3JhcCgkbGkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICAvLyBTZXQgYWN0aXZlIHN0YXRlIGJhc2VkIG9uIGN1cnJlbnQgVVJMXG4gICAgICAgIGNvbnN0IGN1cnJlbnRfcGF0aCA9IHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZTtcbiAgICAgICAgJG5hdl9pdGVtcy5maW5kKCdhLm5hdi1saW5rJykuZWFjaChmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIGNvbnN0ICRsaW5rID0gJCh0aGlzKTtcbiAgICAgICAgICAgIGlmICgkbGluay5hdHRyKCdocmVmJykgPT09IGN1cnJlbnRfcGF0aCkge1xuICAgICAgICAgICAgICAgICRsaW5rLmFkZENsYXNzKCdhY3RpdmUnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOztBQUFBLE1BQU1BLFdBQVcsU0FBU0MsZ0JBQWdCLENBQUM7RUFDdkNDLFFBQVFBLENBQUEsRUFBRztJQUNQO0lBQ0EsTUFBTUMsVUFBVSxHQUFHLElBQUksQ0FBQ0MsR0FBRyxDQUFDLFdBQVcsQ0FBQztJQUN4Q0QsVUFBVSxDQUFDRSxRQUFRLENBQUMsQ0FBQyxDQUFDQyxJQUFJLENBQUMsWUFBVztNQUNsQyxNQUFNQyxNQUFNLEdBQUdDLENBQUMsQ0FBQyxJQUFJLENBQUM7TUFDdEIsSUFBSUQsTUFBTSxDQUFDRSxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssSUFBSSxFQUFFO1FBQ2pDLE1BQU1DLEdBQUcsR0FBR0YsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDRyxRQUFRLENBQUMsVUFBVSxDQUFDO1FBQzFDSixNQUFNLENBQUNJLFFBQVEsQ0FBQyxVQUFVLENBQUM7UUFDM0JKLE1BQU0sQ0FBQ0ssSUFBSSxDQUFDRixHQUFHLENBQUM7TUFDcEI7SUFDSixDQUFDLENBQUM7O0lBRUY7SUFDQSxNQUFNRyxZQUFZLEdBQUdDLE1BQU0sQ0FBQ0MsUUFBUSxDQUFDQyxRQUFRO0lBQzdDYixVQUFVLENBQUNjLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQ1gsSUFBSSxDQUFDLFlBQVc7TUFDMUMsTUFBTVksS0FBSyxHQUFHVixDQUFDLENBQUMsSUFBSSxDQUFDO01BQ3JCLElBQUlVLEtBQUssQ0FBQ0MsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLTixZQUFZLEVBQUU7UUFDckNLLEtBQUssQ0FBQ1AsUUFBUSxDQUFDLFFBQVEsQ0FBQztNQUM1QjtJQUNKLENBQUMsQ0FBQztFQUNOO0FBQ0oiLCJpZ25vcmVMaXN0IjpbXX0=
|