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>
52 lines
4.8 KiB
JavaScript
Executable File
52 lines
4.8 KiB
JavaScript
Executable File
"use strict";
|
|
|
|
/**
|
|
* Form_Actions_Component - JQHTML Component
|
|
*
|
|
* Lifecycle methods are called in this order:
|
|
* 1. on_create() - Quick UI setup, runs bottom-up through component tree
|
|
* 2. on_load() - Fetch data from APIs (parallel execution, no DOM modifications)
|
|
* 3. on_ready() - Component fully initialized, runs bottom-up through component tree
|
|
*/
|
|
class Form_Actions_Component extends Component {
|
|
/**
|
|
* Called after render, quick UI setup (bottom-up)
|
|
* Use for: Initial state, event bindings, showing loading indicators
|
|
*/
|
|
async on_create() {
|
|
// Example: this.$sid('loading').show();
|
|
// Example: this.$.addClass('initializing');
|
|
}
|
|
|
|
/**
|
|
* Fetch data from APIs (parallel, NO DOM modifications)
|
|
* Use for: Loading data from server, fetching configurations
|
|
* WARNING: Do NOT modify DOM here - only load data
|
|
*/
|
|
async on_load() {
|
|
// Example: this.data.users = await Users_Controller.get_users_api();
|
|
// Example: this.data.config = await this.load_config();
|
|
// WARNING: Do NOT modify DOM here - only load data
|
|
}
|
|
|
|
/**
|
|
* Component fully initialized (bottom-up)
|
|
* Use for: Final UI setup, hiding loading indicators, starting animations
|
|
*/
|
|
async on_ready() {
|
|
// Example: this.$sid('loading').hide();
|
|
// Example: this.setup_event_listeners();
|
|
}
|
|
|
|
/**
|
|
* Click handler for the hello button
|
|
* Referenced in template via @click=this.on_click_hello
|
|
*/
|
|
on_click_hello() {
|
|
this.$sid('inner_html').hide();
|
|
this.$sid('hello_world').show();
|
|
}
|
|
|
|
// For more information: php artisan rsx:man jqhtml
|
|
}
|
|
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJGb3JtX0FjdGlvbnNfQ29tcG9uZW50IiwiSnFodG1sX0NvbXBvbmVudCIsIm9uX2NyZWF0ZSIsIm9uX2xvYWQiLCJvbl9yZWFkeSIsIm9uX2NsaWNrX2hlbGxvIiwiJGlkIiwiaGlkZSIsInNob3ciXSwic291cmNlcyI6WyJyc3gvdGhlbWUvY29tcG9uZW50cy9fYXJjaGl2ZWQvdW5maW5pc2hlZC9mb3JtX2FjdGlvbnNfY29tcG9uZW50LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogRm9ybV9BY3Rpb25zX0NvbXBvbmVudCAtIEpRSFRNTCBDb21wb25lbnRcbiAqXG4gKiBMaWZlY3ljbGUgbWV0aG9kcyBhcmUgY2FsbGVkIGluIHRoaXMgb3JkZXI6XG4gKiAxLiBvbl9jcmVhdGUoKSAtIFF1aWNrIFVJIHNldHVwLCBydW5zIGJvdHRvbS11cCB0aHJvdWdoIGNvbXBvbmVudCB0cmVlXG4gKiAyLiBvbl9sb2FkKCkgLSBGZXRjaCBkYXRhIGZyb20gQVBJcyAocGFyYWxsZWwgZXhlY3V0aW9uLCBubyBET00gbW9kaWZpY2F0aW9ucylcbiAqIDMuIG9uX3JlYWR5KCkgLSBDb21wb25lbnQgZnVsbHkgaW5pdGlhbGl6ZWQsIHJ1bnMgYm90dG9tLXVwIHRocm91Z2ggY29tcG9uZW50IHRyZWVcbiAqL1xuY2xhc3MgRm9ybV9BY3Rpb25zX0NvbXBvbmVudCBleHRlbmRzIEpxaHRtbF9Db21wb25lbnQge1xuICAgIC8qKlxuICAgICAqIENhbGxlZCBhZnRlciByZW5kZXIsIHF1aWNrIFVJIHNldHVwIChib3R0b20tdXApXG4gICAgICogVXNlIGZvcjogSW5pdGlhbCBzdGF0ZSwgZXZlbnQgYmluZGluZ3MsIHNob3dpbmcgbG9hZGluZyBpbmRpY2F0b3JzXG4gICAgICovXG4gICAgYXN5bmMgb25fY3JlYXRlKCkge1xuICAgICAgICAvLyBFeGFtcGxlOiB0aGlzLiRpZCgnbG9hZGluZycpLnNob3coKTtcbiAgICAgICAgLy8gRXhhbXBsZTogdGhpcy4kLmFkZENsYXNzKCdpbml0aWFsaXppbmcnKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBGZXRjaCBkYXRhIGZyb20gQVBJcyAocGFyYWxsZWwsIE5PIERPTSBtb2RpZmljYXRpb25zKVxuICAgICAqIFVzZSBmb3I6IExvYWRpbmcgZGF0YSBmcm9tIHNlcnZlciwgZmV0Y2hpbmcgY29uZmlndXJhdGlvbnNcbiAgICAgKiBXQVJOSU5HOiBEbyBOT1QgbW9kaWZ5IERPTSBoZXJlIC0gb25seSBsb2FkIGRhdGFcbiAgICAgKi9cbiAgICBhc3luYyBvbl9sb2FkKCkge1xuICAgICAgICAvLyBFeGFtcGxlOiB0aGlzLmRhdGEudXNlcnMgPSBhd2FpdCBVc2Vyc19Db250cm9sbGVyLmdldF91c2Vyc19hcGkoKTtcbiAgICAgICAgLy8gRXhhbXBsZTogdGhpcy5kYXRhLmNvbmZpZyA9IGF3YWl0IHRoaXMubG9hZF9jb25maWcoKTtcbiAgICAgICAgLy8gV0FSTklORzogRG8gTk9UIG1vZGlmeSBET00gaGVyZSAtIG9ubHkgbG9hZCBkYXRhXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29tcG9uZW50IGZ1bGx5IGluaXRpYWxpemVkIChib3R0b20tdXApXG4gICAgICogVXNlIGZvcjogRmluYWwgVUkgc2V0dXAsIGhpZGluZyBsb2FkaW5nIGluZGljYXRvcnMsIHN0YXJ0aW5nIGFuaW1hdGlvbnNcbiAgICAgKi9cbiAgICBhc3luYyBvbl9yZWFkeSgpIHtcbiAgICAgICAgLy8gRXhhbXBsZTogdGhpcy4kaWQoJ2xvYWRpbmcnKS5oaWRlKCk7XG4gICAgICAgIC8vIEV4YW1wbGU6IHRoaXMuc2V0dXBfZXZlbnRfbGlzdGVuZXJzKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2xpY2sgaGFuZGxlciBmb3IgdGhlIGhlbGxvIGJ1dHRvblxuICAgICAqIFJlZmVyZW5jZWQgaW4gdGVtcGxhdGUgdmlhIEBjbGljaz10aGlzLm9uX2NsaWNrX2hlbGxvXG4gICAgICovXG4gICAgb25fY2xpY2tfaGVsbG8oKSB7XG4gICAgICAgIHRoaXMuJGlkKCdpbm5lcl9odG1sJykuaGlkZSgpO1xuICAgICAgICB0aGlzLiRpZCgnaGVsbG9fd29ybGQnKS5zaG93KCk7XG4gICAgfVxuXG4gICAgLy8gRm9yIG1vcmUgaW5mb3JtYXRpb246IHBocCBhcnRpc2FuIHJzeDptYW4ganFodG1sXG59Il0sIm1hcHBpbmdzIjoiOztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNQSxzQkFBc0IsU0FBU0MsZ0JBQWdCLENBQUM7RUFDbEQ7QUFDSjtBQUNBO0FBQ0E7RUFDSSxNQUFNQyxTQUFTQSxDQUFBLEVBQUc7SUFDZDtJQUNBO0VBQUE7O0VBR0o7QUFDSjtBQUNBO0FBQ0E7QUFDQTtFQUNJLE1BQU1DLE9BQU9BLENBQUEsRUFBRztJQUNaO0lBQ0E7SUFDQTtFQUFBOztFQUdKO0FBQ0o7QUFDQTtBQUNBO0VBQ0ksTUFBTUMsUUFBUUEsQ0FBQSxFQUFHO0lBQ2I7SUFDQTtFQUFBOztFQUdKO0FBQ0o7QUFDQTtBQUNBO0VBQ0lDLGNBQWNBLENBQUEsRUFBRztJQUNiLElBQUksQ0FBQ0MsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDQyxJQUFJLENBQUMsQ0FBQztJQUM3QixJQUFJLENBQUNELEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQ0UsSUFBSSxDQUFDLENBQUM7RUFDbEM7O0VBRUE7QUFDSiIsImlnbm9yZUxpc3QiOltdfQ==
|