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>
43 lines
6.3 KiB
JavaScript
Executable File
43 lines
6.3 KiB
JavaScript
Executable File
"use strict";
|
|
|
|
class Column_Visibility_Toggle extends Component {
|
|
on_ready() {
|
|
// Build column checkboxes
|
|
if (this.args.columns) {
|
|
this.build_menu(this.args.columns);
|
|
}
|
|
}
|
|
build_menu(columns) {
|
|
const $menu = this.$sid('menu');
|
|
$menu.empty();
|
|
columns.forEach((column, index) => {
|
|
const $li = $('<li>');
|
|
const $label = $('<label>').addClass('dropdown-item');
|
|
const $checkbox = $('<input>').addClass('form-check-input me-2').attr('type', 'checkbox').prop('checked', column.visible !== false).attr('data-column-index', index);
|
|
$label.append($checkbox).append(column.label || column.name);
|
|
$li.append($label);
|
|
$menu.append($li);
|
|
$checkbox.on('change', e => {
|
|
this.toggle_column(index, e.target.checked);
|
|
});
|
|
});
|
|
}
|
|
toggle_column(index, visible) {
|
|
if (this.args.on_toggle) {
|
|
this.args.on_toggle(index, visible);
|
|
}
|
|
|
|
// Find table and toggle column visibility
|
|
const $table = this.args.table ? $(this.args.table) : this.$.closest('.card').find('table');
|
|
const selector = `th:nth-child(${index + 1}), td:nth-child(${index + 1})`;
|
|
if (visible) {
|
|
$table.find(selector).show();
|
|
} else {
|
|
$table.find(selector).hide();
|
|
}
|
|
}
|
|
set_columns(columns) {
|
|
this.build_menu(columns);
|
|
}
|
|
}
|
|
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJDb2x1bW5fVmlzaWJpbGl0eV9Ub2dnbGUiLCJKcWh0bWxfQ29tcG9uZW50Iiwib25fcmVhZHkiLCJhcmdzIiwiY29sdW1ucyIsImJ1aWxkX21lbnUiLCIkbWVudSIsIiRpZCIsImVtcHR5IiwiZm9yRWFjaCIsImNvbHVtbiIsImluZGV4IiwiJGxpIiwiJCIsIiRsYWJlbCIsImFkZENsYXNzIiwiJGNoZWNrYm94IiwiYXR0ciIsInByb3AiLCJ2aXNpYmxlIiwiYXBwZW5kIiwibGFiZWwiLCJuYW1lIiwib24iLCJlIiwidG9nZ2xlX2NvbHVtbiIsInRhcmdldCIsImNoZWNrZWQiLCJvbl90b2dnbGUiLCIkdGFibGUiLCJ0YWJsZSIsImNsb3Nlc3QiLCJmaW5kIiwic2VsZWN0b3IiLCJzaG93IiwiaGlkZSIsInNldF9jb2x1bW5zIl0sInNvdXJjZXMiOlsicnN4L3RoZW1lL2NvbXBvbmVudHMvX2FyY2hpdmVkL3VuZmluaXNoZWQvQ29sdW1uX1Zpc2liaWxpdHlfVG9nZ2xlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImNsYXNzIENvbHVtbl9WaXNpYmlsaXR5X1RvZ2dsZSBleHRlbmRzIEpxaHRtbF9Db21wb25lbnQge1xuICAgIG9uX3JlYWR5KCkge1xuICAgICAgICAvLyBCdWlsZCBjb2x1bW4gY2hlY2tib3hlc1xuICAgICAgICBpZiAodGhpcy5hcmdzLmNvbHVtbnMpIHtcbiAgICAgICAgICAgIHRoaXMuYnVpbGRfbWVudSh0aGlzLmFyZ3MuY29sdW1ucyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBidWlsZF9tZW51KGNvbHVtbnMpIHtcbiAgICAgICAgY29uc3QgJG1lbnUgPSB0aGlzLiRpZCgnbWVudScpO1xuICAgICAgICAkbWVudS5lbXB0eSgpO1xuXG4gICAgICAgIGNvbHVtbnMuZm9yRWFjaCgoY29sdW1uLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgJGxpID0gJCgnPGxpPicpO1xuICAgICAgICAgICAgY29uc3QgJGxhYmVsID0gJCgnPGxhYmVsPicpLmFkZENsYXNzKCdkcm9wZG93bi1pdGVtJyk7XG4gICAgICAgICAgICBjb25zdCAkY2hlY2tib3ggPSAkKCc8aW5wdXQ+JylcbiAgICAgICAgICAgICAgICAuYWRkQ2xhc3MoJ2Zvcm0tY2hlY2staW5wdXQgbWUtMicpXG4gICAgICAgICAgICAgICAgLmF0dHIoJ3R5cGUnLCAnY2hlY2tib3gnKVxuICAgICAgICAgICAgICAgIC5wcm9wKCdjaGVja2VkJywgY29sdW1uLnZpc2libGUgIT09IGZhbHNlKVxuICAgICAgICAgICAgICAgIC5hdHRyKCdkYXRhLWNvbHVtbi1pbmRleCcsIGluZGV4KTtcblxuICAgICAgICAgICAgJGxhYmVsLmFwcGVuZCgkY2hlY2tib3gpLmFwcGVuZChjb2x1bW4ubGFiZWwgfHwgY29sdW1uLm5hbWUpO1xuICAgICAgICAgICAgJGxpLmFwcGVuZCgkbGFiZWwpO1xuICAgICAgICAgICAgJG1lbnUuYXBwZW5kKCRsaSk7XG5cbiAgICAgICAgICAgICRjaGVja2JveC5vbignY2hhbmdlJywgKGUpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnRvZ2dsZV9jb2x1bW4oaW5kZXgsIGUudGFyZ2V0LmNoZWNrZWQpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHRvZ2dsZV9jb2x1bW4oaW5kZXgsIHZpc2libGUpIHtcbiAgICAgICAgaWYgKHRoaXMuYXJncy5vbl90b2dnbGUpIHtcbiAgICAgICAgICAgIHRoaXMuYXJncy5vbl90b2dnbGUoaW5kZXgsIHZpc2libGUpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gRmluZCB0YWJsZSBhbmQgdG9nZ2xlIGNvbHVtbiB2aXNpYmlsaXR5XG4gICAgICAgIGNvbnN0ICR0YWJsZSA9IHRoaXMuYXJncy50YWJsZSA/ICQodGhpcy5hcmdzLnRhYmxlKSA6IHRoaXMuJC5jbG9zZXN0KCcuY2FyZCcpLmZpbmQoJ3RhYmxlJyk7XG4gICAgICAgIGNvbnN0IHNlbGVjdG9yID0gYHRoOm50aC1jaGlsZCgke2luZGV4ICsgMX0pLCB0ZDpudGgtY2hpbGQoJHtpbmRleCArIDF9KWA7XG5cbiAgICAgICAgaWYgKHZpc2libGUpIHtcbiAgICAgICAgICAgICR0YWJsZS5maW5kKHNlbGVjdG9yKS5zaG93KCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAkdGFibGUuZmluZChzZWxlY3RvcikuaGlkZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgc2V0X2NvbHVtbnMoY29sdW1ucykge1xuICAgICAgICB0aGlzLmJ1aWxkX21lbnUoY29sdW1ucyk7XG4gICAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOztBQUFBLE1BQU1BLHdCQUF3QixTQUFTQyxnQkFBZ0IsQ0FBQztFQUNwREMsUUFBUUEsQ0FBQSxFQUFHO0lBQ1A7SUFDQSxJQUFJLElBQUksQ0FBQ0MsSUFBSSxDQUFDQyxPQUFPLEVBQUU7TUFDbkIsSUFBSSxDQUFDQyxVQUFVLENBQUMsSUFBSSxDQUFDRixJQUFJLENBQUNDLE9BQU8sQ0FBQztJQUN0QztFQUNKO0VBRUFDLFVBQVVBLENBQUNELE9BQU8sRUFBRTtJQUNoQixNQUFNRSxLQUFLLEdBQUcsSUFBSSxDQUFDQyxHQUFHLENBQUMsTUFBTSxDQUFDO0lBQzlCRCxLQUFLLENBQUNFLEtBQUssQ0FBQyxDQUFDO0lBRWJKLE9BQU8sQ0FBQ0ssT0FBTyxDQUFDLENBQUNDLE1BQU0sRUFBRUMsS0FBSyxLQUFLO01BQy9CLE1BQU1DLEdBQUcsR0FBR0MsQ0FBQyxDQUFDLE1BQU0sQ0FBQztNQUNyQixNQUFNQyxNQUFNLEdBQUdELENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQ0UsUUFBUSxDQUFDLGVBQWUsQ0FBQztNQUNyRCxNQUFNQyxTQUFTLEdBQUdILENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FDekJFLFFBQVEsQ0FBQyx1QkFBdUIsQ0FBQyxDQUNqQ0UsSUFBSSxDQUFDLE1BQU0sRUFBRSxVQUFVLENBQUMsQ0FDeEJDLElBQUksQ0FBQyxTQUFTLEVBQUVSLE1BQU0sQ0FBQ1MsT0FBTyxLQUFLLEtBQUssQ0FBQyxDQUN6Q0YsSUFBSSxDQUFDLG1CQUFtQixFQUFFTixLQUFLLENBQUM7TUFFckNHLE1BQU0sQ0FBQ00sTUFBTSxDQUFDSixTQUFTLENBQUMsQ0FBQ0ksTUFBTSxDQUFDVixNQUFNLENBQUNXLEtBQUssSUFBSVgsTUFBTSxDQUFDWSxJQUFJLENBQUM7TUFDNURWLEdBQUcsQ0FBQ1EsTUFBTSxDQUFDTixNQUFNLENBQUM7TUFDbEJSLEtBQUssQ0FBQ2MsTUFBTSxDQUFDUixHQUFHLENBQUM7TUFFakJJLFNBQVMsQ0FBQ08sRUFBRSxDQUFDLFFBQVEsRUFBR0MsQ0FBQyxJQUFLO1FBQzFCLElBQUksQ0FBQ0MsYUFBYSxDQUFDZCxLQUFLLEVBQUVhLENBQUMsQ0FBQ0UsTUFBTSxDQUFDQyxPQUFPLENBQUM7TUFDL0MsQ0FBQyxDQUFDO0lBQ04sQ0FBQyxDQUFDO0VBQ047RUFFQUYsYUFBYUEsQ0FBQ2QsS0FBSyxFQUFFUSxPQUFPLEVBQUU7SUFDMUIsSUFBSSxJQUFJLENBQUNoQixJQUFJLENBQUN5QixTQUFTLEVBQUU7TUFDckIsSUFBSSxDQUFDekIsSUFBSSxDQUFDeUIsU0FBUyxDQUFDakIsS0FBSyxFQUFFUSxPQUFPLENBQUM7SUFDdkM7O0lBRUE7SUFDQSxNQUFNVSxNQUFNLEdBQUcsSUFBSSxDQUFDMUIsSUFBSSxDQUFDMkIsS0FBSyxHQUFHakIsQ0FBQyxDQUFDLElBQUksQ0FBQ1YsSUFBSSxDQUFDMkIsS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDakIsQ0FBQyxDQUFDa0IsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDQyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQzNGLE1BQU1DLFFBQVEsR0FBRyxnQkFBZ0J0QixLQUFLLEdBQUcsQ0FBQyxtQkFBbUJBLEtBQUssR0FBRyxDQUFDLEdBQUc7SUFFekUsSUFBSVEsT0FBTyxFQUFFO01BQ1RVLE1BQU0sQ0FBQ0csSUFBSSxDQUFDQyxRQUFRLENBQUMsQ0FBQ0MsSUFBSSxDQUFDLENBQUM7SUFDaEMsQ0FBQyxNQUFNO01BQ0hMLE1BQU0sQ0FBQ0csSUFBSSxDQUFDQyxRQUFRLENBQUMsQ0FBQ0UsSUFBSSxDQUFDLENBQUM7SUFDaEM7RUFDSjtFQUVBQyxXQUFXQSxDQUFDaEMsT0FBTyxFQUFFO0lBQ2pCLElBQUksQ0FBQ0MsVUFBVSxDQUFDRCxPQUFPLENBQUM7RUFDNUI7QUFDSiIsImlnbm9yZUxpc3QiOltdfQ==
|