Refactor filename naming system and apply convention-based renames

Standardize settings file naming and relocate documentation files
Fix code quality violations from rsx:check
Reorganize user_management directory into logical subdirectories
Move Quill Bundle to core and align with Tom Select pattern
Simplify Site Settings page to focus on core site information
Complete Phase 5: Multi-tenant authentication with login flow and site selection
Add route query parameter rule and synchronize filename validation logic
Fix critical bug in UpdateNpmCommand causing missing JavaScript stubs
Implement filename convention rule and resolve VS Code auto-rename conflict
Implement js-sanitizer RPC server to eliminate 900+ Node.js process spawns
Implement RPC server architecture for JavaScript parsing
WIP: Add RPC server infrastructure for JS parsing (partial implementation)
Update jqhtml terminology from destroy to stop, fix datagrid DOM preservation
Add JQHTML-CLASS-01 rule and fix redundant class names
Improve code quality rules and resolve violations
Remove legacy fatal error format in favor of unified 'fatal' error type
Filter internal keys from window.rsxapp output
Update button styling and comprehensive form/modal documentation
Add conditional fly-in animation for modals
Fix non-deterministic bundle compilation

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
root
2025-11-13 19:10:02 +00:00
parent fc494c1e08
commit 77b4d10af8
28155 changed files with 2191860 additions and 12967 deletions

View File

@@ -0,0 +1,28 @@
"use strict";
class Frontend_Settings_Team {
static init() {
if (!$(".Frontend_Settings_Team").exists()) return;
// Initialize your component here
console.log('Frontend_Settings_Team initialized');
// Example: Handle button clicks
$('.btn-action').on('click', function () {
// Handle action
});
// Example: Initialize tooltips
$('[data-bs-toggle="tooltip"]').tooltip();
}
static on_app_ready() {
Frontend_Settings_Team.init();
}
// static on_jqhtml_ready() {
// // Called after all JQHTML components have loaded and rendered
// // Use this if you need to interact with JQHTML components
// // Otherwise, use on_app_ready() for most initialization
// }
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJGcm9udGVuZF9TZXR0aW5nc19UZWFtIiwiaW5pdCIsIiQiLCJleGlzdHMiLCJjb25zb2xlIiwibG9nIiwib24iLCJ0b29sdGlwIiwib25fYXBwX3JlYWR5Il0sInNvdXJjZXMiOlsicnN4L2FwcC9mcm9udGVuZC9zZXR0aW5ncy90ZWFtL2Zyb250ZW5kX3NldHRpbmdzX3RlYW0uanMiXSwic291cmNlc0NvbnRlbnQiOlsiY2xhc3MgRnJvbnRlbmRfU2V0dGluZ3NfVGVhbSB7XG4gICAgc3RhdGljIGluaXQoKSB7XG4gICAgICAgIGlmICghJChcIi5Gcm9udGVuZF9TZXR0aW5nc19UZWFtXCIpLmV4aXN0cygpKSByZXR1cm47XG5cbiAgICAgICAgLy8gSW5pdGlhbGl6ZSB5b3VyIGNvbXBvbmVudCBoZXJlXG4gICAgICAgIGNvbnNvbGUubG9nKCdGcm9udGVuZF9TZXR0aW5nc19UZWFtIGluaXRpYWxpemVkJyk7XG5cbiAgICAgICAgLy8gRXhhbXBsZTogSGFuZGxlIGJ1dHRvbiBjbGlja3NcbiAgICAgICAgJCgnLmJ0bi1hY3Rpb24nKS5vbignY2xpY2snLCBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIC8vIEhhbmRsZSBhY3Rpb25cbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gRXhhbXBsZTogSW5pdGlhbGl6ZSB0b29sdGlwc1xuICAgICAgICAkKCdbZGF0YS1icy10b2dnbGU9XCJ0b29sdGlwXCJdJykudG9vbHRpcCgpO1xuICAgIH1cblxuICAgIHN0YXRpYyBvbl9hcHBfcmVhZHkoKSB7XG4gICAgICAgIEZyb250ZW5kX1NldHRpbmdzX1RlYW0uaW5pdCgpO1xuICAgIH1cblxuICAgIC8vIHN0YXRpYyBvbl9qcWh0bWxfcmVhZHkoKSB7XG4gICAgLy8gICAgIC8vIENhbGxlZCBhZnRlciBhbGwgSlFIVE1MIGNvbXBvbmVudHMgaGF2ZSBsb2FkZWQgYW5kIHJlbmRlcmVkXG4gICAgLy8gICAgIC8vIFVzZSB0aGlzIGlmIHlvdSBuZWVkIHRvIGludGVyYWN0IHdpdGggSlFIVE1MIGNvbXBvbmVudHNcbiAgICAvLyAgICAgLy8gT3RoZXJ3aXNlLCB1c2Ugb25fYXBwX3JlYWR5KCkgZm9yIG1vc3QgaW5pdGlhbGl6YXRpb25cbiAgICAvLyB9XG59Il0sIm1hcHBpbmdzIjoiOztBQUFBLE1BQU1BLHNCQUFzQixDQUFDO0VBQ3pCLE9BQU9DLElBQUlBLENBQUEsRUFBRztJQUNWLElBQUksQ0FBQ0MsQ0FBQyxDQUFDLHlCQUF5QixDQUFDLENBQUNDLE1BQU0sQ0FBQyxDQUFDLEVBQUU7O0lBRTVDO0lBQ0FDLE9BQU8sQ0FBQ0MsR0FBRyxDQUFDLG9DQUFvQyxDQUFDOztJQUVqRDtJQUNBSCxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUNJLEVBQUUsQ0FBQyxPQUFPLEVBQUUsWUFBVztNQUNwQztJQUFBLENBQ0gsQ0FBQzs7SUFFRjtJQUNBSixDQUFDLENBQUMsNEJBQTRCLENBQUMsQ0FBQ0ssT0FBTyxDQUFDLENBQUM7RUFDN0M7RUFFQSxPQUFPQyxZQUFZQSxDQUFBLEVBQUc7SUFDbEJSLHNCQUFzQixDQUFDQyxJQUFJLENBQUMsQ0FBQztFQUNqQzs7RUFFQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FBQ0oiLCJpZ25vcmVMaXN0IjpbXX0=

View File

@@ -0,0 +1,18 @@
"use strict";
class Dropdown_Menu extends Jqhtml_Component {
on_ready() {
// Wrap bare text children in <li><a> structure
const $menu = this.$id('menu');
$menu.children().each(function () {
const $child = $(this);
if ($child.prop('tagName') !== 'LI') {
const text = $child.text();
const href = $child.attr('href') || '#';
const $li = $('<li>').append($('<a>').addClass('dropdown-item').attr('href', href).text(text));
$child.replaceWith($li);
}
});
}
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJEcm9wZG93bl9NZW51IiwiSnFodG1sX0NvbXBvbmVudCIsIm9uX3JlYWR5IiwiJG1lbnUiLCIkaWQiLCJjaGlsZHJlbiIsImVhY2giLCIkY2hpbGQiLCIkIiwicHJvcCIsInRleHQiLCJocmVmIiwiYXR0ciIsIiRsaSIsImFwcGVuZCIsImFkZENsYXNzIiwicmVwbGFjZVdpdGgiXSwic291cmNlcyI6WyJyc3gvdGhlbWUvY29tcG9uZW50cy9fYXJjaGl2ZWQvdW5maW5pc2hlZC9Ecm9wZG93bl9NZW51LmpzIl0sInNvdXJjZXNDb250ZW50IjpbImNsYXNzIERyb3Bkb3duX01lbnUgZXh0ZW5kcyBKcWh0bWxfQ29tcG9uZW50IHtcbiAgICBvbl9yZWFkeSgpIHtcbiAgICAgICAgLy8gV3JhcCBiYXJlIHRleHQgY2hpbGRyZW4gaW4gPGxpPjxhPiBzdHJ1Y3R1cmVcbiAgICAgICAgY29uc3QgJG1lbnUgPSB0aGlzLiRpZCgnbWVudScpO1xuICAgICAgICAkbWVudS5jaGlsZHJlbigpLmVhY2goZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICBjb25zdCAkY2hpbGQgPSAkKHRoaXMpO1xuICAgICAgICAgICAgaWYgKCRjaGlsZC5wcm9wKCd0YWdOYW1lJykgIT09ICdMSScpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB0ZXh0ID0gJGNoaWxkLnRleHQoKTtcbiAgICAgICAgICAgICAgICBjb25zdCBocmVmID0gJGNoaWxkLmF0dHIoJ2hyZWYnKSB8fCAnIyc7XG4gICAgICAgICAgICAgICAgY29uc3QgJGxpID0gJCgnPGxpPicpLmFwcGVuZChcbiAgICAgICAgICAgICAgICAgICAgJCgnPGE+JykuYWRkQ2xhc3MoJ2Ryb3Bkb3duLWl0ZW0nKS5hdHRyKCdocmVmJywgaHJlZikudGV4dCh0ZXh0KVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgJGNoaWxkLnJlcGxhY2VXaXRoKCRsaSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7QUFBQSxNQUFNQSxhQUFhLFNBQVNDLGdCQUFnQixDQUFDO0VBQ3pDQyxRQUFRQSxDQUFBLEVBQUc7SUFDUDtJQUNBLE1BQU1DLEtBQUssR0FBRyxJQUFJLENBQUNDLEdBQUcsQ0FBQyxNQUFNLENBQUM7SUFDOUJELEtBQUssQ0FBQ0UsUUFBUSxDQUFDLENBQUMsQ0FBQ0MsSUFBSSxDQUFDLFlBQVc7TUFDN0IsTUFBTUMsTUFBTSxHQUFHQyxDQUFDLENBQUMsSUFBSSxDQUFDO01BQ3RCLElBQUlELE1BQU0sQ0FBQ0UsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLElBQUksRUFBRTtRQUNqQyxNQUFNQyxJQUFJLEdBQUdILE1BQU0sQ0FBQ0csSUFBSSxDQUFDLENBQUM7UUFDMUIsTUFBTUMsSUFBSSxHQUFHSixNQUFNLENBQUNLLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxHQUFHO1FBQ3ZDLE1BQU1DLEdBQUcsR0FBR0wsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDTSxNQUFNLENBQ3hCTixDQUFDLENBQUMsS0FBSyxDQUFDLENBQUNPLFFBQVEsQ0FBQyxlQUFlLENBQUMsQ0FBQ0gsSUFBSSxDQUFDLE1BQU0sRUFBRUQsSUFBSSxDQUFDLENBQUNELElBQUksQ0FBQ0EsSUFBSSxDQUNuRSxDQUFDO1FBQ0RILE1BQU0sQ0FBQ1MsV0FBVyxDQUFDSCxHQUFHLENBQUM7TUFDM0I7SUFDSixDQUFDLENBQUM7RUFDTjtBQUNKIiwiaWdub3JlTGlzdCI6W119

View File

@@ -0,0 +1,26 @@
"use strict";
class Sidebar_Nav extends Jqhtml_Component {
on_ready() {
// Auto-wrap children in nav structure if needed
const $nav_items = this.$id('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=

View File

@@ -0,0 +1,11 @@
"use strict";
class Info_Box extends Jqhtml_Component {
on_ready() {
// Apply color from args
if (this.args.color) {
this.$.removeClass('border-primary').addClass(`border-${this.args.color}`);
}
}
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJJbmZvX0JveCIsIkpxaHRtbF9Db21wb25lbnQiLCJvbl9yZWFkeSIsImFyZ3MiLCJjb2xvciIsIiQiLCJyZW1vdmVDbGFzcyIsImFkZENsYXNzIl0sInNvdXJjZXMiOlsicnN4L3RoZW1lL2NvbXBvbmVudHMvX2FyY2hpdmVkL3VuZmluaXNoZWQvSW5mb19Cb3guanMiXSwic291cmNlc0NvbnRlbnQiOlsiY2xhc3MgSW5mb19Cb3ggZXh0ZW5kcyBKcWh0bWxfQ29tcG9uZW50IHtcbiAgICBvbl9yZWFkeSgpIHtcbiAgICAgICAgLy8gQXBwbHkgY29sb3IgZnJvbSBhcmdzXG4gICAgICAgIGlmICh0aGlzLmFyZ3MuY29sb3IpIHtcbiAgICAgICAgICAgIHRoaXMuJC5yZW1vdmVDbGFzcygnYm9yZGVyLXByaW1hcnknKS5hZGRDbGFzcyhgYm9yZGVyLSR7dGhpcy5hcmdzLmNvbG9yfWApO1xuICAgICAgICB9XG4gICAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOztBQUFBLE1BQU1BLFFBQVEsU0FBU0MsZ0JBQWdCLENBQUM7RUFDcENDLFFBQVFBLENBQUEsRUFBRztJQUNQO0lBQ0EsSUFBSSxJQUFJLENBQUNDLElBQUksQ0FBQ0MsS0FBSyxFQUFFO01BQ2pCLElBQUksQ0FBQ0MsQ0FBQyxDQUFDQyxXQUFXLENBQUMsZ0JBQWdCLENBQUMsQ0FBQ0MsUUFBUSxDQUFDLFVBQVUsSUFBSSxDQUFDSixJQUFJLENBQUNDLEtBQUssRUFBRSxDQUFDO0lBQzlFO0VBQ0o7QUFDSiIsImlnbm9yZUxpc3QiOltdfQ==

View File

@@ -0,0 +1,44 @@
"use strict";
/**
* Form_Input_Abstract - Base class for all form input widgets
*
* Defines the interface that all form widgets must implement.
* This ensures consistency across all input types (text, select, wysiwyg, etc.)
*
* REQUIRED METHODS (must be implemented by subclasses):
* - val() - Get current value (no arguments)
* - val(value) - Set value (one argument)
* - seed() - Fills the widget with random test data (optional)
*
* All widgets must:
* - Have .Widget CSS class
* - Have data-name attribute set by Form_Field
*/
class Form_Input_Abstract extends Jqhtml_Component {
/**
* val() - Get or set the current value
* Subclasses MUST implement this method
*
* @param {*} [value] - If provided, sets the value. If omitted, returns the value.
* @returns {*} The current value when called as getter
*/
val(value) {
if (arguments.length === 0) {
// Getter
throw new Error(`${this.constructor.name} must implement val() getter`);
} else {
// Setter
throw new Error(`${this.constructor.name} must implement val(value) setter`);
}
}
/**
* Seed - Fill with random test data (optional)
* Subclasses MAY implement this method
*/
async seed() {
// Optional - widgets can override if they support seeding
}
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJGb3JtX0lucHV0X0Fic3RyYWN0IiwiSnFodG1sX0NvbXBvbmVudCIsInZhbCIsInZhbHVlIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiRXJyb3IiLCJjb25zdHJ1Y3RvciIsIm5hbWUiLCJzZWVkIl0sInNvdXJjZXMiOlsicnN4L3RoZW1lL2NvbXBvbmVudHMvaW5wdXRzL2Zvcm1faW5wdXRfYWJzdHJhY3QuanMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBGb3JtX0lucHV0X0Fic3RyYWN0IC0gQmFzZSBjbGFzcyBmb3IgYWxsIGZvcm0gaW5wdXQgd2lkZ2V0c1xuICpcbiAqIERlZmluZXMgdGhlIGludGVyZmFjZSB0aGF0IGFsbCBmb3JtIHdpZGdldHMgbXVzdCBpbXBsZW1lbnQuXG4gKiBUaGlzIGVuc3VyZXMgY29uc2lzdGVuY3kgYWNyb3NzIGFsbCBpbnB1dCB0eXBlcyAodGV4dCwgc2VsZWN0LCB3eXNpd3lnLCBldGMuKVxuICpcbiAqIFJFUVVJUkVEIE1FVEhPRFMgKG11c3QgYmUgaW1wbGVtZW50ZWQgYnkgc3ViY2xhc3Nlcyk6XG4gKiAtIHZhbCgpIC0gR2V0IGN1cnJlbnQgdmFsdWUgKG5vIGFyZ3VtZW50cylcbiAqIC0gdmFsKHZhbHVlKSAtIFNldCB2YWx1ZSAob25lIGFyZ3VtZW50KVxuICogLSBzZWVkKCkgLSBGaWxscyB0aGUgd2lkZ2V0IHdpdGggcmFuZG9tIHRlc3QgZGF0YSAob3B0aW9uYWwpXG4gKlxuICogQWxsIHdpZGdldHMgbXVzdDpcbiAqIC0gSGF2ZSAuV2lkZ2V0IENTUyBjbGFzc1xuICogLSBIYXZlIGRhdGEtbmFtZSBhdHRyaWJ1dGUgc2V0IGJ5IEZvcm1fRmllbGRcbiAqL1xuY2xhc3MgRm9ybV9JbnB1dF9BYnN0cmFjdCBleHRlbmRzIEpxaHRtbF9Db21wb25lbnQge1xuICAgIC8qKlxuICAgICAqIHZhbCgpIC0gR2V0IG9yIHNldCB0aGUgY3VycmVudCB2YWx1ZVxuICAgICAqIFN1YmNsYXNzZXMgTVVTVCBpbXBsZW1lbnQgdGhpcyBtZXRob2RcbiAgICAgKlxuICAgICAqIEBwYXJhbSB7Kn0gW3ZhbHVlXSAtIElmIHByb3ZpZGVkLCBzZXRzIHRoZSB2YWx1ZS4gSWYgb21pdHRlZCwgcmV0dXJucyB0aGUgdmFsdWUuXG4gICAgICogQHJldHVybnMgeyp9IFRoZSBjdXJyZW50IHZhbHVlIHdoZW4gY2FsbGVkIGFzIGdldHRlclxuICAgICAqL1xuICAgIHZhbCh2YWx1ZSkge1xuICAgICAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgLy8gR2V0dGVyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYCR7dGhpcy5jb25zdHJ1Y3Rvci5uYW1lfSBtdXN0IGltcGxlbWVudCB2YWwoKSBnZXR0ZXJgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIFNldHRlclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGAke3RoaXMuY29uc3RydWN0b3IubmFtZX0gbXVzdCBpbXBsZW1lbnQgdmFsKHZhbHVlKSBzZXR0ZXJgKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNlZWQgLSBGaWxsIHdpdGggcmFuZG9tIHRlc3QgZGF0YSAob3B0aW9uYWwpXG4gICAgICogU3ViY2xhc3NlcyBNQVkgaW1wbGVtZW50IHRoaXMgbWV0aG9kXG4gICAgICovXG4gICAgYXN5bmMgc2VlZCgpIHtcbiAgICAgICAgLy8gT3B0aW9uYWwgLSB3aWRnZXRzIGNhbiBvdmVycmlkZSBpZiB0aGV5IHN1cHBvcnQgc2VlZGluZ1xuICAgIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNQSxtQkFBbUIsU0FBU0MsZ0JBQWdCLENBQUM7RUFDL0M7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7RUFDSUMsR0FBR0EsQ0FBQ0MsS0FBSyxFQUFFO0lBQ1AsSUFBSUMsU0FBUyxDQUFDQyxNQUFNLEtBQUssQ0FBQyxFQUFFO01BQ3hCO01BQ0EsTUFBTSxJQUFJQyxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUNDLFdBQVcsQ0FBQ0MsSUFBSSw4QkFBOEIsQ0FBQztJQUMzRSxDQUFDLE1BQU07TUFDSDtNQUNBLE1BQU0sSUFBSUYsS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDQyxXQUFXLENBQUNDLElBQUksbUNBQW1DLENBQUM7SUFDaEY7RUFDSjs7RUFFQTtBQUNKO0FBQ0E7QUFDQTtFQUNJLE1BQU1DLElBQUlBLENBQUEsRUFBRztJQUNUO0VBQUE7QUFFUiIsImlnbm9yZUxpc3QiOltdfQ==

View File

@@ -0,0 +1,28 @@
"use strict";
class Frontend_Invoices_View {
static init() {
if (!$(".Frontend_Invoices_View").exists()) return;
// Initialize your component here
console.log('Frontend_Invoices_View initialized');
// Example: Handle button clicks
$('.btn-action').on('click', function () {
// Handle action
});
// Example: Initialize tooltips
$('[data-bs-toggle="tooltip"]').tooltip();
}
static on_app_ready() {
Frontend_Invoices_View.init();
}
// static on_jqhtml_ready() {
// // Called after all JQHTML components have loaded and rendered
// // Use this if you need to interact with JQHTML components
// // Otherwise, use on_app_ready() for most initialization
// }
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJGcm9udGVuZF9JbnZvaWNlc19WaWV3IiwiaW5pdCIsIiQiLCJleGlzdHMiLCJjb25zb2xlIiwibG9nIiwib24iLCJ0b29sdGlwIiwib25fYXBwX3JlYWR5Il0sInNvdXJjZXMiOlsicnN4L2FwcC9mcm9udGVuZC9pbnZvaWNlcy9mcm9udGVuZF9pbnZvaWNlc192aWV3LmpzIl0sInNvdXJjZXNDb250ZW50IjpbImNsYXNzIEZyb250ZW5kX0ludm9pY2VzX1ZpZXcge1xuICAgIHN0YXRpYyBpbml0KCkge1xuICAgICAgICBpZiAoISQoXCIuRnJvbnRlbmRfSW52b2ljZXNfVmlld1wiKS5leGlzdHMoKSkgcmV0dXJuO1xuXG4gICAgICAgIC8vIEluaXRpYWxpemUgeW91ciBjb21wb25lbnQgaGVyZVxuICAgICAgICBjb25zb2xlLmxvZygnRnJvbnRlbmRfSW52b2ljZXNfVmlldyBpbml0aWFsaXplZCcpO1xuXG4gICAgICAgIC8vIEV4YW1wbGU6IEhhbmRsZSBidXR0b24gY2xpY2tzXG4gICAgICAgICQoJy5idG4tYWN0aW9uJykub24oJ2NsaWNrJywgZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAvLyBIYW5kbGUgYWN0aW9uXG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIEV4YW1wbGU6IEluaXRpYWxpemUgdG9vbHRpcHNcbiAgICAgICAgJCgnW2RhdGEtYnMtdG9nZ2xlPVwidG9vbHRpcFwiXScpLnRvb2x0aXAoKTtcbiAgICB9XG5cbiAgICBzdGF0aWMgb25fYXBwX3JlYWR5KCkge1xuICAgICAgICBGcm9udGVuZF9JbnZvaWNlc19WaWV3LmluaXQoKTtcbiAgICB9XG5cbiAgICAvLyBzdGF0aWMgb25fanFodG1sX3JlYWR5KCkge1xuICAgIC8vICAgICAvLyBDYWxsZWQgYWZ0ZXIgYWxsIEpRSFRNTCBjb21wb25lbnRzIGhhdmUgbG9hZGVkIGFuZCByZW5kZXJlZFxuICAgIC8vICAgICAvLyBVc2UgdGhpcyBpZiB5b3UgbmVlZCB0byBpbnRlcmFjdCB3aXRoIEpRSFRNTCBjb21wb25lbnRzXG4gICAgLy8gICAgIC8vIE90aGVyd2lzZSwgdXNlIG9uX2FwcF9yZWFkeSgpIGZvciBtb3N0IGluaXRpYWxpemF0aW9uXG4gICAgLy8gfVxufSJdLCJtYXBwaW5ncyI6Ijs7QUFBQSxNQUFNQSxzQkFBc0IsQ0FBQztFQUN6QixPQUFPQyxJQUFJQSxDQUFBLEVBQUc7SUFDVixJQUFJLENBQUNDLENBQUMsQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDQyxNQUFNLENBQUMsQ0FBQyxFQUFFOztJQUU1QztJQUNBQyxPQUFPLENBQUNDLEdBQUcsQ0FBQyxvQ0FBb0MsQ0FBQzs7SUFFakQ7SUFDQUgsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDSSxFQUFFLENBQUMsT0FBTyxFQUFFLFlBQVc7TUFDcEM7SUFBQSxDQUNILENBQUM7O0lBRUY7SUFDQUosQ0FBQyxDQUFDLDRCQUE0QixDQUFDLENBQUNLLE9BQU8sQ0FBQyxDQUFDO0VBQzdDO0VBRUEsT0FBT0MsWUFBWUEsQ0FBQSxFQUFHO0lBQ2xCUixzQkFBc0IsQ0FBQ0MsSUFBSSxDQUFDLENBQUM7RUFDakM7O0VBRUE7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBQUNKIiwiaWdub3JlTGlzdCI6W119

View File

@@ -0,0 +1,28 @@
"use strict";
class Frontend_Calendar_Event {
static init() {
if (!$(".Frontend_Calendar_Event").exists()) return;
// Initialize your component here
console.log('Frontend_Calendar_Event initialized');
// Example: Handle button clicks
$('.btn-action').on('click', function () {
// Handle action
});
// Example: Initialize tooltips
$('[data-bs-toggle="tooltip"]').tooltip();
}
static on_app_ready() {
Frontend_Calendar_Event.init();
}
// static on_jqhtml_ready() {
// // Called after all JQHTML components have loaded and rendered
// // Use this if you need to interact with JQHTML components
// // Otherwise, use on_app_ready() for most initialization
// }
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJGcm9udGVuZF9DYWxlbmRhcl9FdmVudCIsImluaXQiLCIkIiwiZXhpc3RzIiwiY29uc29sZSIsImxvZyIsIm9uIiwidG9vbHRpcCIsIm9uX2FwcF9yZWFkeSJdLCJzb3VyY2VzIjpbInJzeC9hcHAvZnJvbnRlbmQvY2FsZW5kYXIvZnJvbnRlbmRfY2FsZW5kYXJfZXZlbnQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiY2xhc3MgRnJvbnRlbmRfQ2FsZW5kYXJfRXZlbnQge1xuICAgIHN0YXRpYyBpbml0KCkge1xuICAgICAgICBpZiAoISQoXCIuRnJvbnRlbmRfQ2FsZW5kYXJfRXZlbnRcIikuZXhpc3RzKCkpIHJldHVybjtcblxuICAgICAgICAvLyBJbml0aWFsaXplIHlvdXIgY29tcG9uZW50IGhlcmVcbiAgICAgICAgY29uc29sZS5sb2coJ0Zyb250ZW5kX0NhbGVuZGFyX0V2ZW50IGluaXRpYWxpemVkJyk7XG5cbiAgICAgICAgLy8gRXhhbXBsZTogSGFuZGxlIGJ1dHRvbiBjbGlja3NcbiAgICAgICAgJCgnLmJ0bi1hY3Rpb24nKS5vbignY2xpY2snLCBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIC8vIEhhbmRsZSBhY3Rpb25cbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gRXhhbXBsZTogSW5pdGlhbGl6ZSB0b29sdGlwc1xuICAgICAgICAkKCdbZGF0YS1icy10b2dnbGU9XCJ0b29sdGlwXCJdJykudG9vbHRpcCgpO1xuICAgIH1cblxuICAgIHN0YXRpYyBvbl9hcHBfcmVhZHkoKSB7XG4gICAgICAgIEZyb250ZW5kX0NhbGVuZGFyX0V2ZW50LmluaXQoKTtcbiAgICB9XG5cbiAgICAvLyBzdGF0aWMgb25fanFodG1sX3JlYWR5KCkge1xuICAgIC8vICAgICAvLyBDYWxsZWQgYWZ0ZXIgYWxsIEpRSFRNTCBjb21wb25lbnRzIGhhdmUgbG9hZGVkIGFuZCByZW5kZXJlZFxuICAgIC8vICAgICAvLyBVc2UgdGhpcyBpZiB5b3UgbmVlZCB0byBpbnRlcmFjdCB3aXRoIEpRSFRNTCBjb21wb25lbnRzXG4gICAgLy8gICAgIC8vIE90aGVyd2lzZSwgdXNlIG9uX2FwcF9yZWFkeSgpIGZvciBtb3N0IGluaXRpYWxpemF0aW9uXG4gICAgLy8gfVxufSJdLCJtYXBwaW5ncyI6Ijs7QUFBQSxNQUFNQSx1QkFBdUIsQ0FBQztFQUMxQixPQUFPQyxJQUFJQSxDQUFBLEVBQUc7SUFDVixJQUFJLENBQUNDLENBQUMsQ0FBQywwQkFBMEIsQ0FBQyxDQUFDQyxNQUFNLENBQUMsQ0FBQyxFQUFFOztJQUU3QztJQUNBQyxPQUFPLENBQUNDLEdBQUcsQ0FBQyxxQ0FBcUMsQ0FBQzs7SUFFbEQ7SUFDQUgsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDSSxFQUFFLENBQUMsT0FBTyxFQUFFLFlBQVc7TUFDcEM7SUFBQSxDQUNILENBQUM7O0lBRUY7SUFDQUosQ0FBQyxDQUFDLDRCQUE0QixDQUFDLENBQUNLLE9BQU8sQ0FBQyxDQUFDO0VBQzdDO0VBRUEsT0FBT0MsWUFBWUEsQ0FBQSxFQUFHO0lBQ2xCUix1QkFBdUIsQ0FBQ0MsSUFBSSxDQUFDLENBQUM7RUFDbEM7O0VBRUE7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBQUNKIiwiaWdub3JlTGlzdCI6W119

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,8 @@
"use strict";
class Notification_Dropdown extends Jqhtml_Component {
on_ready() {
// No special behavior
}
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJOb3RpZmljYXRpb25fRHJvcGRvd24iLCJKcWh0bWxfQ29tcG9uZW50Iiwib25fcmVhZHkiXSwic291cmNlcyI6WyJyc3gvdGhlbWUvY29tcG9uZW50cy9fYXJjaGl2ZWQvdW5maW5pc2hlZC9Ob3RpZmljYXRpb25fRHJvcGRvd24uanMiXSwic291cmNlc0NvbnRlbnQiOlsiY2xhc3MgTm90aWZpY2F0aW9uX0Ryb3Bkb3duIGV4dGVuZHMgSnFodG1sX0NvbXBvbmVudCB7XG4gICAgb25fcmVhZHkoKSB7XG4gICAgICAgIC8vIE5vIHNwZWNpYWwgYmVoYXZpb3JcbiAgICB9XG59XG4iXSwibWFwcGluZ3MiOiI7O0FBQUEsTUFBTUEscUJBQXFCLFNBQVNDLGdCQUFnQixDQUFDO0VBQ2pEQyxRQUFRQSxDQUFBLEVBQUc7SUFDUDtFQUFBO0FBRVIiLCJpZ25vcmVMaXN0IjpbXX0=

View File

@@ -0,0 +1,28 @@
"use strict";
class Frontend_Reports_Projects {
static init() {
if (!$(".Frontend_Reports_Projects").exists()) return;
// Initialize your component here
console.log('Frontend_Reports_Projects initialized');
// Example: Handle button clicks
$('.btn-action').on('click', function () {
// Handle action
});
// Example: Initialize tooltips
$('[data-bs-toggle="tooltip"]').tooltip();
}
static on_app_ready() {
Frontend_Reports_Projects.init();
}
// static on_jqhtml_ready() {
// // Called after all JQHTML components have loaded and rendered
// // Use this if you need to interact with JQHTML components
// // Otherwise, use on_app_ready() for most initialization
// }
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJGcm9udGVuZF9SZXBvcnRzX1Byb2plY3RzIiwiaW5pdCIsIiQiLCJleGlzdHMiLCJjb25zb2xlIiwibG9nIiwib24iLCJ0b29sdGlwIiwib25fYXBwX3JlYWR5Il0sInNvdXJjZXMiOlsicnN4L2FwcC9mcm9udGVuZC9yZXBvcnRzL2Zyb250ZW5kX3JlcG9ydHNfcHJvamVjdHMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiY2xhc3MgRnJvbnRlbmRfUmVwb3J0c19Qcm9qZWN0cyB7XG4gICAgc3RhdGljIGluaXQoKSB7XG4gICAgICAgIGlmICghJChcIi5Gcm9udGVuZF9SZXBvcnRzX1Byb2plY3RzXCIpLmV4aXN0cygpKSByZXR1cm47XG5cbiAgICAgICAgLy8gSW5pdGlhbGl6ZSB5b3VyIGNvbXBvbmVudCBoZXJlXG4gICAgICAgIGNvbnNvbGUubG9nKCdGcm9udGVuZF9SZXBvcnRzX1Byb2plY3RzIGluaXRpYWxpemVkJyk7XG5cbiAgICAgICAgLy8gRXhhbXBsZTogSGFuZGxlIGJ1dHRvbiBjbGlja3NcbiAgICAgICAgJCgnLmJ0bi1hY3Rpb24nKS5vbignY2xpY2snLCBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIC8vIEhhbmRsZSBhY3Rpb25cbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gRXhhbXBsZTogSW5pdGlhbGl6ZSB0b29sdGlwc1xuICAgICAgICAkKCdbZGF0YS1icy10b2dnbGU9XCJ0b29sdGlwXCJdJykudG9vbHRpcCgpO1xuICAgIH1cblxuICAgIHN0YXRpYyBvbl9hcHBfcmVhZHkoKSB7XG4gICAgICAgIEZyb250ZW5kX1JlcG9ydHNfUHJvamVjdHMuaW5pdCgpO1xuICAgIH1cblxuICAgIC8vIHN0YXRpYyBvbl9qcWh0bWxfcmVhZHkoKSB7XG4gICAgLy8gICAgIC8vIENhbGxlZCBhZnRlciBhbGwgSlFIVE1MIGNvbXBvbmVudHMgaGF2ZSBsb2FkZWQgYW5kIHJlbmRlcmVkXG4gICAgLy8gICAgIC8vIFVzZSB0aGlzIGlmIHlvdSBuZWVkIHRvIGludGVyYWN0IHdpdGggSlFIVE1MIGNvbXBvbmVudHNcbiAgICAvLyAgICAgLy8gT3RoZXJ3aXNlLCB1c2Ugb25fYXBwX3JlYWR5KCkgZm9yIG1vc3QgaW5pdGlhbGl6YXRpb25cbiAgICAvLyB9XG59Il0sIm1hcHBpbmdzIjoiOztBQUFBLE1BQU1BLHlCQUF5QixDQUFDO0VBQzVCLE9BQU9DLElBQUlBLENBQUEsRUFBRztJQUNWLElBQUksQ0FBQ0MsQ0FBQyxDQUFDLDRCQUE0QixDQUFDLENBQUNDLE1BQU0sQ0FBQyxDQUFDLEVBQUU7O0lBRS9DO0lBQ0FDLE9BQU8sQ0FBQ0MsR0FBRyxDQUFDLHVDQUF1QyxDQUFDOztJQUVwRDtJQUNBSCxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUNJLEVBQUUsQ0FBQyxPQUFPLEVBQUUsWUFBVztNQUNwQztJQUFBLENBQ0gsQ0FBQzs7SUFFRjtJQUNBSixDQUFDLENBQUMsNEJBQTRCLENBQUMsQ0FBQ0ssT0FBTyxDQUFDLENBQUM7RUFDN0M7RUFFQSxPQUFPQyxZQUFZQSxDQUFBLEVBQUc7SUFDbEJSLHlCQUF5QixDQUFDQyxJQUFJLENBQUMsQ0FBQztFQUNwQzs7RUFFQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FBQ0oiLCJpZ25vcmVMaXN0IjpbXX0=

View File

@@ -0,0 +1,6 @@
"use strict";
class Icon extends Jqhtml_Component {
// SVG icon container with size variants
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJJY29uIiwiSnFodG1sX0NvbXBvbmVudCJdLCJzb3VyY2VzIjpbInJzeC90aGVtZS9jb21wb25lbnRzL19hcmNoaXZlZC91bmZpbmlzaGVkL2ljb24uanMiXSwic291cmNlc0NvbnRlbnQiOlsiY2xhc3MgSWNvbiBleHRlbmRzIEpxaHRtbF9Db21wb25lbnQge1xuICAgIC8vIFNWRyBpY29uIGNvbnRhaW5lciB3aXRoIHNpemUgdmFyaWFudHNcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7QUFBQSxNQUFNQSxJQUFJLFNBQVNDLGdCQUFnQixDQUFDO0VBQ2hDO0FBQUEiLCJpZ25vcmVMaXN0IjpbXX0=

View File

@@ -0,0 +1,11 @@
"use strict";
class Frontend_Contacts_Edit {
static init() {
// No initialization needed - submit button automatically wired by Rsx_Form
}
static on_app_ready() {
Frontend_Contacts_Edit.init();
}
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJGcm9udGVuZF9Db250YWN0c19FZGl0IiwiaW5pdCIsIm9uX2FwcF9yZWFkeSJdLCJzb3VyY2VzIjpbInJzeC9hcHAvZnJvbnRlbmQvY29udGFjdHMvZWRpdC9mcm9udGVuZF9jb250YWN0c19lZGl0LmpzIl0sInNvdXJjZXNDb250ZW50IjpbImNsYXNzIEZyb250ZW5kX0NvbnRhY3RzX0VkaXQge1xuICAgIHN0YXRpYyBpbml0KCkge1xuICAgICAgICAvLyBObyBpbml0aWFsaXphdGlvbiBuZWVkZWQgLSBzdWJtaXQgYnV0dG9uIGF1dG9tYXRpY2FsbHkgd2lyZWQgYnkgUnN4X0Zvcm1cbiAgICB9XG5cbiAgICBzdGF0aWMgb25fYXBwX3JlYWR5KCkge1xuICAgICAgICBGcm9udGVuZF9Db250YWN0c19FZGl0LmluaXQoKTtcbiAgICB9XG59XG4iXSwibWFwcGluZ3MiOiI7O0FBQUEsTUFBTUEsc0JBQXNCLENBQUM7RUFDekIsT0FBT0MsSUFBSUEsQ0FBQSxFQUFHO0lBQ1Y7RUFBQTtFQUdKLE9BQU9DLFlBQVlBLENBQUEsRUFBRztJQUNsQkYsc0JBQXNCLENBQUNDLElBQUksQ0FBQyxDQUFDO0VBQ2pDO0FBQ0oiLCJpZ25vcmVMaXN0IjpbXX0=

View File

@@ -0,0 +1,34 @@
"use strict";
class Table_Pagination extends Jqhtml_Component {
on_ready() {
// Generate pagination if pages provided via args
if (this.args.current_page && this.args.total_pages) {
this.generate_pagination(this.args.current_page, this.args.total_pages);
}
}
generate_pagination(current, total) {
const $pagination = this.$id('pagination');
$pagination.empty();
// Previous button
const $prev = $('<li>').addClass('page-item' + (current === 1 ? ' disabled' : ''));
$prev.append($('<a>').addClass('page-link').attr('href', '#').text('Previous'));
$pagination.append($prev);
// Page numbers (show 5 pages max)
let start = Math.max(1, current - 2);
let end = Math.min(total, current + 2);
for (let i = start; i <= end; i++) {
const $li = $('<li>').addClass('page-item' + (i === current ? ' active' : ''));
$li.append($('<a>').addClass('page-link').attr('href', '#').text(i));
$pagination.append($li);
}
// Next button
const $next = $('<li>').addClass('page-item' + (current === total ? ' disabled' : ''));
$next.append($('<a>').addClass('page-link').attr('href', '#').text('Next'));
$pagination.append($next);
}
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJUYWJsZV9QYWdpbmF0aW9uIiwiSnFodG1sX0NvbXBvbmVudCIsIm9uX3JlYWR5IiwiYXJncyIsImN1cnJlbnRfcGFnZSIsInRvdGFsX3BhZ2VzIiwiZ2VuZXJhdGVfcGFnaW5hdGlvbiIsImN1cnJlbnQiLCJ0b3RhbCIsIiRwYWdpbmF0aW9uIiwiJGlkIiwiZW1wdHkiLCIkcHJldiIsIiQiLCJhZGRDbGFzcyIsImFwcGVuZCIsImF0dHIiLCJ0ZXh0Iiwic3RhcnQiLCJNYXRoIiwibWF4IiwiZW5kIiwibWluIiwiaSIsIiRsaSIsIiRuZXh0Il0sInNvdXJjZXMiOlsicnN4L3RoZW1lL2NvbXBvbmVudHMvX2FyY2hpdmVkL3VuZmluaXNoZWQvVGFibGVfUGFnaW5hdGlvbi5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJjbGFzcyBUYWJsZV9QYWdpbmF0aW9uIGV4dGVuZHMgSnFodG1sX0NvbXBvbmVudCB7XG4gICAgb25fcmVhZHkoKSB7XG4gICAgICAgIC8vIEdlbmVyYXRlIHBhZ2luYXRpb24gaWYgcGFnZXMgcHJvdmlkZWQgdmlhIGFyZ3NcbiAgICAgICAgaWYgKHRoaXMuYXJncy5jdXJyZW50X3BhZ2UgJiYgdGhpcy5hcmdzLnRvdGFsX3BhZ2VzKSB7XG4gICAgICAgICAgICB0aGlzLmdlbmVyYXRlX3BhZ2luYXRpb24odGhpcy5hcmdzLmN1cnJlbnRfcGFnZSwgdGhpcy5hcmdzLnRvdGFsX3BhZ2VzKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdlbmVyYXRlX3BhZ2luYXRpb24oY3VycmVudCwgdG90YWwpIHtcbiAgICAgICAgY29uc3QgJHBhZ2luYXRpb24gPSB0aGlzLiRpZCgncGFnaW5hdGlvbicpO1xuICAgICAgICAkcGFnaW5hdGlvbi5lbXB0eSgpO1xuXG4gICAgICAgIC8vIFByZXZpb3VzIGJ1dHRvblxuICAgICAgICBjb25zdCAkcHJldiA9ICQoJzxsaT4nKS5hZGRDbGFzcygncGFnZS1pdGVtJyArIChjdXJyZW50ID09PSAxID8gJyBkaXNhYmxlZCcgOiAnJykpO1xuICAgICAgICAkcHJldi5hcHBlbmQoJCgnPGE+JykuYWRkQ2xhc3MoJ3BhZ2UtbGluaycpLmF0dHIoJ2hyZWYnLCAnIycpLnRleHQoJ1ByZXZpb3VzJykpO1xuICAgICAgICAkcGFnaW5hdGlvbi5hcHBlbmQoJHByZXYpO1xuXG4gICAgICAgIC8vIFBhZ2UgbnVtYmVycyAoc2hvdyA1IHBhZ2VzIG1heClcbiAgICAgICAgbGV0IHN0YXJ0ID0gTWF0aC5tYXgoMSwgY3VycmVudCAtIDIpO1xuICAgICAgICBsZXQgZW5kID0gTWF0aC5taW4odG90YWwsIGN1cnJlbnQgKyAyKTtcblxuICAgICAgICBmb3IgKGxldCBpID0gc3RhcnQ7IGkgPD0gZW5kOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0ICRsaSA9ICQoJzxsaT4nKS5hZGRDbGFzcygncGFnZS1pdGVtJyArIChpID09PSBjdXJyZW50ID8gJyBhY3RpdmUnIDogJycpKTtcbiAgICAgICAgICAgICRsaS5hcHBlbmQoJCgnPGE+JykuYWRkQ2xhc3MoJ3BhZ2UtbGluaycpLmF0dHIoJ2hyZWYnLCAnIycpLnRleHQoaSkpO1xuICAgICAgICAgICAgJHBhZ2luYXRpb24uYXBwZW5kKCRsaSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBOZXh0IGJ1dHRvblxuICAgICAgICBjb25zdCAkbmV4dCA9ICQoJzxsaT4nKS5hZGRDbGFzcygncGFnZS1pdGVtJyArIChjdXJyZW50ID09PSB0b3RhbCA/ICcgZGlzYWJsZWQnIDogJycpKTtcbiAgICAgICAgJG5leHQuYXBwZW5kKCQoJzxhPicpLmFkZENsYXNzKCdwYWdlLWxpbmsnKS5hdHRyKCdocmVmJywgJyMnKS50ZXh0KCdOZXh0JykpO1xuICAgICAgICAkcGFnaW5hdGlvbi5hcHBlbmQoJG5leHQpO1xuICAgIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7QUFBQSxNQUFNQSxnQkFBZ0IsU0FBU0MsZ0JBQWdCLENBQUM7RUFDNUNDLFFBQVFBLENBQUEsRUFBRztJQUNQO0lBQ0EsSUFBSSxJQUFJLENBQUNDLElBQUksQ0FBQ0MsWUFBWSxJQUFJLElBQUksQ0FBQ0QsSUFBSSxDQUFDRSxXQUFXLEVBQUU7TUFDakQsSUFBSSxDQUFDQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUNILElBQUksQ0FBQ0MsWUFBWSxFQUFFLElBQUksQ0FBQ0QsSUFBSSxDQUFDRSxXQUFXLENBQUM7SUFDM0U7RUFDSjtFQUVBQyxtQkFBbUJBLENBQUNDLE9BQU8sRUFBRUMsS0FBSyxFQUFFO0lBQ2hDLE1BQU1DLFdBQVcsR0FBRyxJQUFJLENBQUNDLEdBQUcsQ0FBQyxZQUFZLENBQUM7SUFDMUNELFdBQVcsQ0FBQ0UsS0FBSyxDQUFDLENBQUM7O0lBRW5CO0lBQ0EsTUFBTUMsS0FBSyxHQUFHQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUNDLFFBQVEsQ0FBQyxXQUFXLElBQUlQLE9BQU8sS0FBSyxDQUFDLEdBQUcsV0FBVyxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQ2xGSyxLQUFLLENBQUNHLE1BQU0sQ0FBQ0YsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUNFLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUNDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUMvRVIsV0FBVyxDQUFDTSxNQUFNLENBQUNILEtBQUssQ0FBQzs7SUFFekI7SUFDQSxJQUFJTSxLQUFLLEdBQUdDLElBQUksQ0FBQ0MsR0FBRyxDQUFDLENBQUMsRUFBRWIsT0FBTyxHQUFHLENBQUMsQ0FBQztJQUNwQyxJQUFJYyxHQUFHLEdBQUdGLElBQUksQ0FBQ0csR0FBRyxDQUFDZCxLQUFLLEVBQUVELE9BQU8sR0FBRyxDQUFDLENBQUM7SUFFdEMsS0FBSyxJQUFJZ0IsQ0FBQyxHQUFHTCxLQUFLLEVBQUVLLENBQUMsSUFBSUYsR0FBRyxFQUFFRSxDQUFDLEVBQUUsRUFBRTtNQUMvQixNQUFNQyxHQUFHLEdBQUdYLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQ0MsUUFBUSxDQUFDLFdBQVcsSUFBSVMsQ0FBQyxLQUFLaEIsT0FBTyxHQUFHLFNBQVMsR0FBRyxFQUFFLENBQUMsQ0FBQztNQUM5RWlCLEdBQUcsQ0FBQ1QsTUFBTSxDQUFDRixDQUFDLENBQUMsS0FBSyxDQUFDLENBQUNDLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQ0UsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQ0MsSUFBSSxDQUFDTSxDQUFDLENBQUMsQ0FBQztNQUNwRWQsV0FBVyxDQUFDTSxNQUFNLENBQUNTLEdBQUcsQ0FBQztJQUMzQjs7SUFFQTtJQUNBLE1BQU1DLEtBQUssR0FBR1osQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDQyxRQUFRLENBQUMsV0FBVyxJQUFJUCxPQUFPLEtBQUtDLEtBQUssR0FBRyxXQUFXLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDdEZpQixLQUFLLENBQUNWLE1BQU0sQ0FBQ0YsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUNFLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUNDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMzRVIsV0FBVyxDQUFDTSxNQUFNLENBQUNVLEtBQUssQ0FBQztFQUM3QjtBQUNKIiwiaWdub3JlTGlzdCI6W119

View File

@@ -0,0 +1,20 @@
"use strict";
/**
* Quill Editor - Utility Functions
*
* Provides utility functions for working with Quill editor.
*/
/**
* Ensures Quill is loaded before executing callback
* @param {Function} callback - Function to call when Quill is ready
*/
function quill_ready(callback) {
if (typeof window.Quill !== 'undefined') {
callback();
} else {
setTimeout(() => quill_ready(callback), 50);
}
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJxdWlsbF9yZWFkeSIsImNhbGxiYWNrIiwid2luZG93IiwiUXVpbGwiLCJzZXRUaW1lb3V0Il0sInNvdXJjZXMiOlsicnN4L3RoZW1lL3F1aWxsL3F1aWxsX2Nkbi5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFF1aWxsIEVkaXRvciAtIFV0aWxpdHkgRnVuY3Rpb25zXG4gKlxuICogUHJvdmlkZXMgdXRpbGl0eSBmdW5jdGlvbnMgZm9yIHdvcmtpbmcgd2l0aCBRdWlsbCBlZGl0b3IuXG4gKi9cblxuLyoqXG4gKiBFbnN1cmVzIFF1aWxsIGlzIGxvYWRlZCBiZWZvcmUgZXhlY3V0aW5nIGNhbGxiYWNrXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBjYWxsYmFjayAtIEZ1bmN0aW9uIHRvIGNhbGwgd2hlbiBRdWlsbCBpcyByZWFkeVxuICovXG5mdW5jdGlvbiBxdWlsbF9yZWFkeShjYWxsYmFjaykge1xuICAgIGlmICh0eXBlb2Ygd2luZG93LlF1aWxsICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICBjYWxsYmFjaygpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4gcXVpbGxfcmVhZHkoY2FsbGJhY2spLCA1MCk7XG4gICAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTQSxXQUFXQSxDQUFDQyxRQUFRLEVBQUU7RUFDM0IsSUFBSSxPQUFPQyxNQUFNLENBQUNDLEtBQUssS0FBSyxXQUFXLEVBQUU7SUFDckNGLFFBQVEsQ0FBQyxDQUFDO0VBQ2QsQ0FBQyxNQUFNO0lBQ0hHLFVBQVUsQ0FBQyxNQUFNSixXQUFXLENBQUNDLFFBQVEsQ0FBQyxFQUFFLEVBQUUsQ0FBQztFQUMvQztBQUNKIiwiaWdub3JlTGlzdCI6W119

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,6 @@
"use strict";
class Metric_Card extends Jqhtml_Component {
// Pure container - children already styled
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJNZXRyaWNfQ2FyZCIsIkpxaHRtbF9Db21wb25lbnQiXSwic291cmNlcyI6WyJyc3gvdGhlbWUvY29tcG9uZW50cy9fYXJjaGl2ZWQvdW5maW5pc2hlZC9NZXRyaWNfQ2FyZC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJjbGFzcyBNZXRyaWNfQ2FyZCBleHRlbmRzIEpxaHRtbF9Db21wb25lbnQge1xuICAgIC8vIFB1cmUgY29udGFpbmVyIC0gY2hpbGRyZW4gYWxyZWFkeSBzdHlsZWRcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7QUFBQSxNQUFNQSxXQUFXLFNBQVNDLGdCQUFnQixDQUFDO0VBQ3ZDO0FBQUEiLCJpZ25vcmVMaXN0IjpbXX0=

View File

@@ -0,0 +1,17 @@
"use strict";
class Bulk_Action_Bar extends Jqhtml_Component {
on_ready() {
// Clear selection on close
this.$id('close_btn').on('click', () => {
this.$.hide();
// Uncheck all boxes
const $table = this.$.closest('.card').find('table');
$table.find('input[type="checkbox"]').prop('checked', false);
});
}
set_count(count) {
this.$.find('.count').text(count);
}
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJCdWxrX0FjdGlvbl9CYXIiLCJKcWh0bWxfQ29tcG9uZW50Iiwib25fcmVhZHkiLCIkaWQiLCJvbiIsIiQiLCJoaWRlIiwiJHRhYmxlIiwiY2xvc2VzdCIsImZpbmQiLCJwcm9wIiwic2V0X2NvdW50IiwiY291bnQiLCJ0ZXh0Il0sInNvdXJjZXMiOlsicnN4L3RoZW1lL2NvbXBvbmVudHMvX2FyY2hpdmVkL3VuZmluaXNoZWQvQnVsa19BY3Rpb25fQmFyLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImNsYXNzIEJ1bGtfQWN0aW9uX0JhciBleHRlbmRzIEpxaHRtbF9Db21wb25lbnQge1xuICAgIG9uX3JlYWR5KCkge1xuICAgICAgICAvLyBDbGVhciBzZWxlY3Rpb24gb24gY2xvc2VcbiAgICAgICAgdGhpcy4kaWQoJ2Nsb3NlX2J0bicpLm9uKCdjbGljaycsICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuJC5oaWRlKCk7XG4gICAgICAgICAgICAvLyBVbmNoZWNrIGFsbCBib3hlc1xuICAgICAgICAgICAgY29uc3QgJHRhYmxlID0gdGhpcy4kLmNsb3Nlc3QoJy5jYXJkJykuZmluZCgndGFibGUnKTtcbiAgICAgICAgICAgICR0YWJsZS5maW5kKCdpbnB1dFt0eXBlPVwiY2hlY2tib3hcIl0nKS5wcm9wKCdjaGVja2VkJywgZmFsc2UpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBzZXRfY291bnQoY291bnQpIHtcbiAgICAgICAgdGhpcy4kLmZpbmQoJy5jb3VudCcpLnRleHQoY291bnQpO1xuICAgIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7QUFBQSxNQUFNQSxlQUFlLFNBQVNDLGdCQUFnQixDQUFDO0VBQzNDQyxRQUFRQSxDQUFBLEVBQUc7SUFDUDtJQUNBLElBQUksQ0FBQ0MsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDQyxFQUFFLENBQUMsT0FBTyxFQUFFLE1BQU07TUFDcEMsSUFBSSxDQUFDQyxDQUFDLENBQUNDLElBQUksQ0FBQyxDQUFDO01BQ2I7TUFDQSxNQUFNQyxNQUFNLEdBQUcsSUFBSSxDQUFDRixDQUFDLENBQUNHLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQ0MsSUFBSSxDQUFDLE9BQU8sQ0FBQztNQUNwREYsTUFBTSxDQUFDRSxJQUFJLENBQUMsd0JBQXdCLENBQUMsQ0FBQ0MsSUFBSSxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUM7SUFDaEUsQ0FBQyxDQUFDO0VBQ047RUFFQUMsU0FBU0EsQ0FBQ0MsS0FBSyxFQUFFO0lBQ2IsSUFBSSxDQUFDUCxDQUFDLENBQUNJLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQ0ksSUFBSSxDQUFDRCxLQUFLLENBQUM7RUFDckM7QUFDSiIsImlnbm9yZUxpc3QiOltdfQ==

View File

@@ -0,0 +1,36 @@
"use strict";
/**
* Add_User_Modal - Modal for adding/inviting new users to site
*
* Displays form to collect user information and create pending invitation.
* Uses Add_User_Modal_Form component for UI and validation.
*
* Returns created user record on success, false on cancel.
*/
class Add_User_Modal extends Modal_Abstract {
/**
* Show add user modal
*
* @returns {Promise<Object|false>} User record on success, false on cancel
*/
static async show() {
const result = await Modal.form({
title: 'Add User',
component: 'Add_User_Modal_Form',
on_submit: async form => {
try {
const values = form.vals();
const result = await Frontend_Settings_User_Management_Controller.add_user(values);
return result; // Close modal, return user data
} catch (error) {
// Render error (form handles both validation and generic errors)
await form.render_error(error);
return false; // Keep modal open
}
}
});
return result || false;
}
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJBZGRfVXNlcl9Nb2RhbCIsIk1vZGFsX0Fic3RyYWN0Iiwic2hvdyIsInJlc3VsdCIsIk1vZGFsIiwiZm9ybSIsInRpdGxlIiwiY29tcG9uZW50Iiwib25fc3VibWl0IiwidmFsdWVzIiwidmFscyIsIkZyb250ZW5kX1NldHRpbmdzX1VzZXJfTWFuYWdlbWVudF9Db250cm9sbGVyIiwiYWRkX3VzZXIiLCJlcnJvciIsInJlbmRlcl9lcnJvciJdLCJzb3VyY2VzIjpbInJzeC9hcHAvZnJvbnRlbmQvc2V0dGluZ3MvdXNlcl9tYW5hZ2VtZW50L2FkZF91c2VyX21vZGFsLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQWRkX1VzZXJfTW9kYWwgLSBNb2RhbCBmb3IgYWRkaW5nL2ludml0aW5nIG5ldyB1c2VycyB0byBzaXRlXG4gKlxuICogRGlzcGxheXMgZm9ybSB0byBjb2xsZWN0IHVzZXIgaW5mb3JtYXRpb24gYW5kIGNyZWF0ZSBwZW5kaW5nIGludml0YXRpb24uXG4gKiBVc2VzIEFkZF9Vc2VyX01vZGFsX0Zvcm0gY29tcG9uZW50IGZvciBVSSBhbmQgdmFsaWRhdGlvbi5cbiAqXG4gKiBSZXR1cm5zIGNyZWF0ZWQgdXNlciByZWNvcmQgb24gc3VjY2VzcywgZmFsc2Ugb24gY2FuY2VsLlxuICovXG5jbGFzcyBBZGRfVXNlcl9Nb2RhbCBleHRlbmRzIE1vZGFsX0Fic3RyYWN0IHtcbiAgICAvKipcbiAgICAgKiBTaG93IGFkZCB1c2VyIG1vZGFsXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyB7UHJvbWlzZTxPYmplY3R8ZmFsc2U+fSBVc2VyIHJlY29yZCBvbiBzdWNjZXNzLCBmYWxzZSBvbiBjYW5jZWxcbiAgICAgKi9cbiAgICBzdGF0aWMgYXN5bmMgc2hvdygpIHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgTW9kYWwuZm9ybSh7XG4gICAgICAgICAgICB0aXRsZTogJ0FkZCBVc2VyJyxcbiAgICAgICAgICAgIGNvbXBvbmVudDogJ0FkZF9Vc2VyX01vZGFsX0Zvcm0nLFxuICAgICAgICAgICAgb25fc3VibWl0OiBhc3luYyAoZm9ybSkgPT4ge1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlcyA9IGZvcm0udmFscygpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBGcm9udGVuZF9TZXR0aW5nc19Vc2VyX01hbmFnZW1lbnRfQ29udHJvbGxlci5hZGRfdXNlcih2YWx1ZXMpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OyAvLyBDbG9zZSBtb2RhbCwgcmV0dXJuIHVzZXIgZGF0YVxuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIFJlbmRlciBlcnJvciAoZm9ybSBoYW5kbGVzIGJvdGggdmFsaWRhdGlvbiBhbmQgZ2VuZXJpYyBlcnJvcnMpXG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IGZvcm0ucmVuZGVyX2Vycm9yKGVycm9yKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyBLZWVwIG1vZGFsIG9wZW5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gcmVzdWx0IHx8IGZhbHNlO1xuICAgIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTUEsY0FBYyxTQUFTQyxjQUFjLENBQUM7RUFDeEM7QUFDSjtBQUNBO0FBQ0E7QUFDQTtFQUNJLGFBQWFDLElBQUlBLENBQUEsRUFBRztJQUNoQixNQUFNQyxNQUFNLEdBQUcsTUFBTUMsS0FBSyxDQUFDQyxJQUFJLENBQUM7TUFDNUJDLEtBQUssRUFBRSxVQUFVO01BQ2pCQyxTQUFTLEVBQUUscUJBQXFCO01BQ2hDQyxTQUFTLEVBQUUsTUFBT0gsSUFBSSxJQUFLO1FBQ3ZCLElBQUk7VUFDQSxNQUFNSSxNQUFNLEdBQUdKLElBQUksQ0FBQ0ssSUFBSSxDQUFDLENBQUM7VUFDMUIsTUFBTVAsTUFBTSxHQUFHLE1BQU1RLDRDQUE0QyxDQUFDQyxRQUFRLENBQUNILE1BQU0sQ0FBQztVQUNsRixPQUFPTixNQUFNLENBQUMsQ0FBQztRQUNuQixDQUFDLENBQUMsT0FBT1UsS0FBSyxFQUFFO1VBQ1o7VUFDQSxNQUFNUixJQUFJLENBQUNTLFlBQVksQ0FBQ0QsS0FBSyxDQUFDO1VBQzlCLE9BQU8sS0FBSyxDQUFDLENBQUM7UUFDbEI7TUFDSjtJQUNKLENBQUMsQ0FBQztJQUVGLE9BQU9WLE1BQU0sSUFBSSxLQUFLO0VBQzFCO0FBQ0oiLCJpZ25vcmVMaXN0IjpbXX0=

View File

@@ -0,0 +1,14 @@
"use strict";
/**
* Page_Header - Bootstrap 5 Page Action Bar Component
*
* Purpose: Top section of page containing title, breadcrumbs, and actions
* Design: Flexbox layout using Bootstrap utility classes
* Layout: Title/breadcrumbs on left, actions/buttons on right
*/
class Page_Header extends Jqhtml_Component {
// Page_Header is a pure container component - no lifecycle methods needed
// All layout from Bootstrap utilities: d-flex, justify-content-between, align-items-center, py-4
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJQYWdlX0hlYWRlciIsIkpxaHRtbF9Db21wb25lbnQiXSwic291cmNlcyI6WyJyc3gvdGhlbWUvY29tcG9uZW50cy9fYXJjaGl2ZWQvdW5maW5pc2hlZC9QYWdlX0hlYWRlci5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFBhZ2VfSGVhZGVyIC0gQm9vdHN0cmFwIDUgUGFnZSBBY3Rpb24gQmFyIENvbXBvbmVudFxuICpcbiAqIFB1cnBvc2U6IFRvcCBzZWN0aW9uIG9mIHBhZ2UgY29udGFpbmluZyB0aXRsZSwgYnJlYWRjcnVtYnMsIGFuZCBhY3Rpb25zXG4gKiBEZXNpZ246IEZsZXhib3ggbGF5b3V0IHVzaW5nIEJvb3RzdHJhcCB1dGlsaXR5IGNsYXNzZXNcbiAqIExheW91dDogVGl0bGUvYnJlYWRjcnVtYnMgb24gbGVmdCwgYWN0aW9ucy9idXR0b25zIG9uIHJpZ2h0XG4gKi9cbmNsYXNzIFBhZ2VfSGVhZGVyIGV4dGVuZHMgSnFodG1sX0NvbXBvbmVudCB7XG4gICAgLy8gUGFnZV9IZWFkZXIgaXMgYSBwdXJlIGNvbnRhaW5lciBjb21wb25lbnQgLSBubyBsaWZlY3ljbGUgbWV0aG9kcyBuZWVkZWRcbiAgICAvLyBBbGwgbGF5b3V0IGZyb20gQm9vdHN0cmFwIHV0aWxpdGllczogZC1mbGV4LCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiwgYWxpZ24taXRlbXMtY2VudGVyLCBweS00XG59XG4iXSwibWFwcGluZ3MiOiI7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNQSxXQUFXLFNBQVNDLGdCQUFnQixDQUFDO0VBQ3ZDO0VBQ0E7QUFBQSIsImlnbm9yZUxpc3QiOltdfQ==

View File

@@ -0,0 +1,45 @@
"use strict";
/**
* Save client handler for Form component
* @param {Object} values - Serialized form values
* @returns {Promise<Object>} Response {success: bool, errors?: {}, redirect?: string}
*/
async function save_client(values) {
// Check if editing existing client
const client_id = $('#client-id').val();
if (client_id) {
values.id = client_id;
}
// TODO: Collect additional fields not yet in Form component (tags, etc.)
// For now, just submit the basic fields from the Form component
try {
const response = await Frontend_Clients_Controller.save(values);
if (response.success) {
// Redirect to clients list on success
return {
success: true,
redirect: Rsx.Route('Frontend_Clients_Controller', 'index')
};
} else {
// Return validation errors
return {
success: false,
errors: response.errors || {
_general: response.message || 'An error occurred'
}
};
}
} catch (error) {
console.error('Save error:', error);
return {
success: false,
errors: {
_general: 'An error occurred while saving. Please try again.'
}
};
}
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJzYXZlX2NsaWVudCIsInZhbHVlcyIsImNsaWVudF9pZCIsIiQiLCJ2YWwiLCJpZCIsInJlc3BvbnNlIiwiRnJvbnRlbmRfQ2xpZW50c19Db250cm9sbGVyIiwic2F2ZSIsInN1Y2Nlc3MiLCJyZWRpcmVjdCIsIlJzeCIsIlJvdXRlIiwiZXJyb3JzIiwiX2dlbmVyYWwiLCJtZXNzYWdlIiwiZXJyb3IiLCJjb25zb2xlIl0sInNvdXJjZXMiOlsicnN4L2FwcC9mcm9udGVuZC9jbGllbnRzL2VkaXQvc2F2ZV9jbGllbnQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBTYXZlIGNsaWVudCBoYW5kbGVyIGZvciBGb3JtIGNvbXBvbmVudFxuICogQHBhcmFtIHtPYmplY3R9IHZhbHVlcyAtIFNlcmlhbGl6ZWQgZm9ybSB2YWx1ZXNcbiAqIEByZXR1cm5zIHtQcm9taXNlPE9iamVjdD59IFJlc3BvbnNlIHtzdWNjZXNzOiBib29sLCBlcnJvcnM/OiB7fSwgcmVkaXJlY3Q/OiBzdHJpbmd9XG4gKi9cbmFzeW5jIGZ1bmN0aW9uIHNhdmVfY2xpZW50KHZhbHVlcykge1xuICAgIC8vIENoZWNrIGlmIGVkaXRpbmcgZXhpc3RpbmcgY2xpZW50XG4gICAgY29uc3QgY2xpZW50X2lkID0gJCgnI2NsaWVudC1pZCcpLnZhbCgpO1xuICAgIGlmIChjbGllbnRfaWQpIHtcbiAgICAgICAgdmFsdWVzLmlkID0gY2xpZW50X2lkO1xuICAgIH1cblxuICAgIC8vIFRPRE86IENvbGxlY3QgYWRkaXRpb25hbCBmaWVsZHMgbm90IHlldCBpbiBGb3JtIGNvbXBvbmVudCAodGFncywgZXRjLilcbiAgICAvLyBGb3Igbm93LCBqdXN0IHN1Ym1pdCB0aGUgYmFzaWMgZmllbGRzIGZyb20gdGhlIEZvcm0gY29tcG9uZW50XG5cbiAgICB0cnkge1xuICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IEZyb250ZW5kX0NsaWVudHNfQ29udHJvbGxlci5zYXZlKHZhbHVlcyk7XG5cbiAgICAgICAgaWYgKHJlc3BvbnNlLnN1Y2Nlc3MpIHtcbiAgICAgICAgICAgIC8vIFJlZGlyZWN0IHRvIGNsaWVudHMgbGlzdCBvbiBzdWNjZXNzXG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHN1Y2Nlc3M6IHRydWUsXG4gICAgICAgICAgICAgICAgcmVkaXJlY3Q6IFJzeC5Sb3V0ZSgnRnJvbnRlbmRfQ2xpZW50c19Db250cm9sbGVyJywgJ2luZGV4JylcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBSZXR1cm4gdmFsaWRhdGlvbiBlcnJvcnNcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgc3VjY2VzczogZmFsc2UsXG4gICAgICAgICAgICAgICAgZXJyb3JzOiByZXNwb25zZS5lcnJvcnMgfHwge19nZW5lcmFsOiByZXNwb25zZS5tZXNzYWdlIHx8ICdBbiBlcnJvciBvY2N1cnJlZCd9XG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignU2F2ZSBlcnJvcjonLCBlcnJvcik7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBzdWNjZXNzOiBmYWxzZSxcbiAgICAgICAgICAgIGVycm9yczoge19nZW5lcmFsOiAnQW4gZXJyb3Igb2NjdXJyZWQgd2hpbGUgc2F2aW5nLiBQbGVhc2UgdHJ5IGFnYWluLid9XG4gICAgICAgIH07XG4gICAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlQSxXQUFXQSxDQUFDQyxNQUFNLEVBQUU7RUFDL0I7RUFDQSxNQUFNQyxTQUFTLEdBQUdDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQ0MsR0FBRyxDQUFDLENBQUM7RUFDdkMsSUFBSUYsU0FBUyxFQUFFO0lBQ1hELE1BQU0sQ0FBQ0ksRUFBRSxHQUFHSCxTQUFTO0VBQ3pCOztFQUVBO0VBQ0E7O0VBRUEsSUFBSTtJQUNBLE1BQU1JLFFBQVEsR0FBRyxNQUFNQywyQkFBMkIsQ0FBQ0MsSUFBSSxDQUFDUCxNQUFNLENBQUM7SUFFL0QsSUFBSUssUUFBUSxDQUFDRyxPQUFPLEVBQUU7TUFDbEI7TUFDQSxPQUFPO1FBQ0hBLE9BQU8sRUFBRSxJQUFJO1FBQ2JDLFFBQVEsRUFBRUMsR0FBRyxDQUFDQyxLQUFLLENBQUMsNkJBQTZCLEVBQUUsT0FBTztNQUM5RCxDQUFDO0lBQ0wsQ0FBQyxNQUFNO01BQ0g7TUFDQSxPQUFPO1FBQ0hILE9BQU8sRUFBRSxLQUFLO1FBQ2RJLE1BQU0sRUFBRVAsUUFBUSxDQUFDTyxNQUFNLElBQUk7VUFBQ0MsUUFBUSxFQUFFUixRQUFRLENBQUNTLE9BQU8sSUFBSTtRQUFtQjtNQUNqRixDQUFDO0lBQ0w7RUFDSixDQUFDLENBQUMsT0FBT0MsS0FBSyxFQUFFO0lBQ1pDLE9BQU8sQ0FBQ0QsS0FBSyxDQUFDLGFBQWEsRUFBRUEsS0FBSyxDQUFDO0lBQ25DLE9BQU87TUFDSFAsT0FBTyxFQUFFLEtBQUs7TUFDZEksTUFBTSxFQUFFO1FBQUNDLFFBQVEsRUFBRTtNQUFtRDtJQUMxRSxDQUFDO0VBQ0w7QUFDSiIsImlnbm9yZUxpc3QiOltdfQ==

View File

@@ -0,0 +1,21 @@
"use strict";
class Icon_Button extends Jqhtml_Component {
on_ready() {
// Add aria-label for accessibility (icon-only buttons need labels)
if (this.args.label) {
this.$.attr('aria-label', this.args.label);
}
// Add title for tooltip on hover
if (this.args.title) {
this.$.attr('title', this.args.title);
}
// Support custom button classes (btn-primary, btn-danger, etc.)
if (this.args.class) {
this.$.addClass(this.args.class);
}
}
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJJY29uX0J1dHRvbiIsIkpxaHRtbF9Db21wb25lbnQiLCJvbl9yZWFkeSIsImFyZ3MiLCJsYWJlbCIsIiQiLCJhdHRyIiwidGl0bGUiLCJjbGFzcyIsImFkZENsYXNzIl0sInNvdXJjZXMiOlsicnN4L3RoZW1lL2NvbXBvbmVudHMvX2FyY2hpdmVkL3VuZmluaXNoZWQvaWNvbl9idXR0b24uanMiXSwic291cmNlc0NvbnRlbnQiOlsiY2xhc3MgSWNvbl9CdXR0b24gZXh0ZW5kcyBKcWh0bWxfQ29tcG9uZW50IHtcbiAgICBvbl9yZWFkeSgpIHtcbiAgICAgICAgLy8gQWRkIGFyaWEtbGFiZWwgZm9yIGFjY2Vzc2liaWxpdHkgKGljb24tb25seSBidXR0b25zIG5lZWQgbGFiZWxzKVxuICAgICAgICBpZiAodGhpcy5hcmdzLmxhYmVsKSB7XG4gICAgICAgICAgICB0aGlzLiQuYXR0cignYXJpYS1sYWJlbCcsIHRoaXMuYXJncy5sYWJlbCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBBZGQgdGl0bGUgZm9yIHRvb2x0aXAgb24gaG92ZXJcbiAgICAgICAgaWYgKHRoaXMuYXJncy50aXRsZSkge1xuICAgICAgICAgICAgdGhpcy4kLmF0dHIoJ3RpdGxlJywgdGhpcy5hcmdzLnRpdGxlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFN1cHBvcnQgY3VzdG9tIGJ1dHRvbiBjbGFzc2VzIChidG4tcHJpbWFyeSwgYnRuLWRhbmdlciwgZXRjLilcbiAgICAgICAgaWYgKHRoaXMuYXJncy5jbGFzcykge1xuICAgICAgICAgICAgdGhpcy4kLmFkZENsYXNzKHRoaXMuYXJncy5jbGFzcyk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXSwibWFwcGluZ3MiOiI7O0FBQUEsTUFBTUEsV0FBVyxTQUFTQyxnQkFBZ0IsQ0FBQztFQUN2Q0MsUUFBUUEsQ0FBQSxFQUFHO0lBQ1A7SUFDQSxJQUFJLElBQUksQ0FBQ0MsSUFBSSxDQUFDQyxLQUFLLEVBQUU7TUFDakIsSUFBSSxDQUFDQyxDQUFDLENBQUNDLElBQUksQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDSCxJQUFJLENBQUNDLEtBQUssQ0FBQztJQUM5Qzs7SUFFQTtJQUNBLElBQUksSUFBSSxDQUFDRCxJQUFJLENBQUNJLEtBQUssRUFBRTtNQUNqQixJQUFJLENBQUNGLENBQUMsQ0FBQ0MsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUNILElBQUksQ0FBQ0ksS0FBSyxDQUFDO0lBQ3pDOztJQUVBO0lBQ0EsSUFBSSxJQUFJLENBQUNKLElBQUksQ0FBQ0ssS0FBSyxFQUFFO01BQ2pCLElBQUksQ0FBQ0gsQ0FBQyxDQUFDSSxRQUFRLENBQUMsSUFBSSxDQUFDTixJQUFJLENBQUNLLEtBQUssQ0FBQztJQUNwQztFQUNKO0FBQ0oiLCJpZ25vcmVMaXN0IjpbXX0=

View File

@@ -0,0 +1,6 @@
"use strict";
class Chart_Component extends Jqhtml_Component {
// Placeholder component - no functionality yet
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJDaGFydF9Db21wb25lbnQiLCJKcWh0bWxfQ29tcG9uZW50Il0sInNvdXJjZXMiOlsicnN4L3RoZW1lL2NvbXBvbmVudHMvX2FyY2hpdmVkL3VuZmluaXNoZWQvQ2hhcnRfQ29tcG9uZW50LmpzIl0sInNvdXJjZXNDb250ZW50IjpbImNsYXNzIENoYXJ0X0NvbXBvbmVudCBleHRlbmRzIEpxaHRtbF9Db21wb25lbnQge1xuICAgIC8vIFBsYWNlaG9sZGVyIGNvbXBvbmVudCAtIG5vIGZ1bmN0aW9uYWxpdHkgeWV0XG59XG4iXSwibWFwcGluZ3MiOiI7O0FBQUEsTUFBTUEsZUFBZSxTQUFTQyxnQkFBZ0IsQ0FBQztFQUMzQztBQUFBIiwiaWdub3JlTGlzdCI6W119

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,33 @@
"use strict";
/**
* Select_Dropdown - Bootstrap 5 Dropdown Selection Component
*
* Purpose: Dropdown menu for selecting one option from a list
* Design: Bootstrap .form-select styling with dropdown arrow
* Content: Contains <option> elements
*/
class Select_Dropdown extends Jqhtml_Component {
on_ready() {
// Set value if provided
if (this.args.value) {
this.$.val(this.args.value);
}
// Add custom classes if provided
if (this.args.class) {
this.$.addClass(this.args.class);
}
// Set disabled state if provided
if (this.args.disabled) {
this.$.prop('disabled', true);
}
// Set required attribute if provided
if (this.args.required) {
this.$.prop('required', true);
}
}
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJTZWxlY3RfRHJvcGRvd24iLCJKcWh0bWxfQ29tcG9uZW50Iiwib25fcmVhZHkiLCJhcmdzIiwidmFsdWUiLCIkIiwidmFsIiwiY2xhc3MiLCJhZGRDbGFzcyIsImRpc2FibGVkIiwicHJvcCIsInJlcXVpcmVkIl0sInNvdXJjZXMiOlsicnN4L3RoZW1lL2NvbXBvbmVudHMvX2FyY2hpdmVkL3VuZmluaXNoZWQvU2VsZWN0X0Ryb3Bkb3duLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogU2VsZWN0X0Ryb3Bkb3duIC0gQm9vdHN0cmFwIDUgRHJvcGRvd24gU2VsZWN0aW9uIENvbXBvbmVudFxuICpcbiAqIFB1cnBvc2U6IERyb3Bkb3duIG1lbnUgZm9yIHNlbGVjdGluZyBvbmUgb3B0aW9uIGZyb20gYSBsaXN0XG4gKiBEZXNpZ246IEJvb3RzdHJhcCAuZm9ybS1zZWxlY3Qgc3R5bGluZyB3aXRoIGRyb3Bkb3duIGFycm93XG4gKiBDb250ZW50OiBDb250YWlucyA8b3B0aW9uPiBlbGVtZW50c1xuICovXG5jbGFzcyBTZWxlY3RfRHJvcGRvd24gZXh0ZW5kcyBKcWh0bWxfQ29tcG9uZW50IHtcbiAgICBvbl9yZWFkeSgpIHtcbiAgICAgICAgLy8gU2V0IHZhbHVlIGlmIHByb3ZpZGVkXG4gICAgICAgIGlmICh0aGlzLmFyZ3MudmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMuJC52YWwodGhpcy5hcmdzLnZhbHVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEFkZCBjdXN0b20gY2xhc3NlcyBpZiBwcm92aWRlZFxuICAgICAgICBpZiAodGhpcy5hcmdzLmNsYXNzKSB7XG4gICAgICAgICAgICB0aGlzLiQuYWRkQ2xhc3ModGhpcy5hcmdzLmNsYXNzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFNldCBkaXNhYmxlZCBzdGF0ZSBpZiBwcm92aWRlZFxuICAgICAgICBpZiAodGhpcy5hcmdzLmRpc2FibGVkKSB7XG4gICAgICAgICAgICB0aGlzLiQucHJvcCgnZGlzYWJsZWQnLCB0cnVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFNldCByZXF1aXJlZCBhdHRyaWJ1dGUgaWYgcHJvdmlkZWRcbiAgICAgICAgaWYgKHRoaXMuYXJncy5yZXF1aXJlZCkge1xuICAgICAgICAgICAgdGhpcy4kLnByb3AoJ3JlcXVpcmVkJywgdHJ1ZSk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXSwibWFwcGluZ3MiOiI7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNQSxlQUFlLFNBQVNDLGdCQUFnQixDQUFDO0VBQzNDQyxRQUFRQSxDQUFBLEVBQUc7SUFDUDtJQUNBLElBQUksSUFBSSxDQUFDQyxJQUFJLENBQUNDLEtBQUssRUFBRTtNQUNqQixJQUFJLENBQUNDLENBQUMsQ0FBQ0MsR0FBRyxDQUFDLElBQUksQ0FBQ0gsSUFBSSxDQUFDQyxLQUFLLENBQUM7SUFDL0I7O0lBRUE7SUFDQSxJQUFJLElBQUksQ0FBQ0QsSUFBSSxDQUFDSSxLQUFLLEVBQUU7TUFDakIsSUFBSSxDQUFDRixDQUFDLENBQUNHLFFBQVEsQ0FBQyxJQUFJLENBQUNMLElBQUksQ0FBQ0ksS0FBSyxDQUFDO0lBQ3BDOztJQUVBO0lBQ0EsSUFBSSxJQUFJLENBQUNKLElBQUksQ0FBQ00sUUFBUSxFQUFFO01BQ3BCLElBQUksQ0FBQ0osQ0FBQyxDQUFDSyxJQUFJLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQztJQUNqQzs7SUFFQTtJQUNBLElBQUksSUFBSSxDQUFDUCxJQUFJLENBQUNRLFFBQVEsRUFBRTtNQUNwQixJQUFJLENBQUNOLENBQUMsQ0FBQ0ssSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUM7SUFDakM7RUFDSjtBQUNKIiwiaWdub3JlTGlzdCI6W119

View File

@@ -0,0 +1,8 @@
"use strict";
class Blockquote extends Jqhtml_Component {
on_ready() {
// No special behavior
}
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJCbG9ja3F1b3RlIiwiSnFodG1sX0NvbXBvbmVudCIsIm9uX3JlYWR5Il0sInNvdXJjZXMiOlsicnN4L3RoZW1lL2NvbXBvbmVudHMvX2FyY2hpdmVkL3VuZmluaXNoZWQvQmxvY2txdW90ZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJjbGFzcyBCbG9ja3F1b3RlIGV4dGVuZHMgSnFodG1sX0NvbXBvbmVudCB7XG4gICAgb25fcmVhZHkoKSB7XG4gICAgICAgIC8vIE5vIHNwZWNpYWwgYmVoYXZpb3JcbiAgICB9XG59XG4iXSwibWFwcGluZ3MiOiI7O0FBQUEsTUFBTUEsVUFBVSxTQUFTQyxnQkFBZ0IsQ0FBQztFQUN0Q0MsUUFBUUEsQ0FBQSxFQUFHO0lBQ1A7RUFBQTtBQUVSIiwiaWdub3JlTGlzdCI6W119

View File

@@ -0,0 +1,7 @@
"use strict";
class Button_Secondary extends Jqhtml_Component {
// Secondary action button - lower prominence than primary
// Bootstrap btn-secondary provides gray color scheme
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJCdXR0b25fU2Vjb25kYXJ5IiwiSnFodG1sX0NvbXBvbmVudCJdLCJzb3VyY2VzIjpbInJzeC90aGVtZS9jb21wb25lbnRzL19hcmNoaXZlZC91bmZpbmlzaGVkL2J1dHRvbl9zZWNvbmRhcnkuanMiXSwic291cmNlc0NvbnRlbnQiOlsiY2xhc3MgQnV0dG9uX1NlY29uZGFyeSBleHRlbmRzIEpxaHRtbF9Db21wb25lbnQge1xuICAgIC8vIFNlY29uZGFyeSBhY3Rpb24gYnV0dG9uIC0gbG93ZXIgcHJvbWluZW5jZSB0aGFuIHByaW1hcnlcbiAgICAvLyBCb290c3RyYXAgYnRuLXNlY29uZGFyeSBwcm92aWRlcyBncmF5IGNvbG9yIHNjaGVtZVxufVxuIl0sIm1hcHBpbmdzIjoiOztBQUFBLE1BQU1BLGdCQUFnQixTQUFTQyxnQkFBZ0IsQ0FBQztFQUM1QztFQUNBO0FBQUEiLCJpZ25vcmVMaXN0IjpbXX0=

View File

@@ -0,0 +1,28 @@
"use strict";
class Frontend_Settings_Billing {
static init() {
if (!$(".Frontend_Settings_Billing").exists()) return;
// Initialize your component here
console.log('Frontend_Settings_Billing initialized');
// Example: Handle button clicks
$('.btn-action').on('click', function () {
// Handle action
});
// Example: Initialize tooltips
$('[data-bs-toggle="tooltip"]').tooltip();
}
static on_app_ready() {
Frontend_Settings_Billing.init();
}
// static on_jqhtml_ready() {
// // Called after all JQHTML components have loaded and rendered
// // Use this if you need to interact with JQHTML components
// // Otherwise, use on_app_ready() for most initialization
// }
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJGcm9udGVuZF9TZXR0aW5nc19CaWxsaW5nIiwiaW5pdCIsIiQiLCJleGlzdHMiLCJjb25zb2xlIiwibG9nIiwib24iLCJ0b29sdGlwIiwib25fYXBwX3JlYWR5Il0sInNvdXJjZXMiOlsicnN4L2FwcC9mcm9udGVuZC9zZXR0aW5ncy9iaWxsaW5nL2Zyb250ZW5kX3NldHRpbmdzX2JpbGxpbmcuanMiXSwic291cmNlc0NvbnRlbnQiOlsiY2xhc3MgRnJvbnRlbmRfU2V0dGluZ3NfQmlsbGluZyB7XG4gICAgc3RhdGljIGluaXQoKSB7XG4gICAgICAgIGlmICghJChcIi5Gcm9udGVuZF9TZXR0aW5nc19CaWxsaW5nXCIpLmV4aXN0cygpKSByZXR1cm47XG5cbiAgICAgICAgLy8gSW5pdGlhbGl6ZSB5b3VyIGNvbXBvbmVudCBoZXJlXG4gICAgICAgIGNvbnNvbGUubG9nKCdGcm9udGVuZF9TZXR0aW5nc19CaWxsaW5nIGluaXRpYWxpemVkJyk7XG5cbiAgICAgICAgLy8gRXhhbXBsZTogSGFuZGxlIGJ1dHRvbiBjbGlja3NcbiAgICAgICAgJCgnLmJ0bi1hY3Rpb24nKS5vbignY2xpY2snLCBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIC8vIEhhbmRsZSBhY3Rpb25cbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gRXhhbXBsZTogSW5pdGlhbGl6ZSB0b29sdGlwc1xuICAgICAgICAkKCdbZGF0YS1icy10b2dnbGU9XCJ0b29sdGlwXCJdJykudG9vbHRpcCgpO1xuICAgIH1cblxuICAgIHN0YXRpYyBvbl9hcHBfcmVhZHkoKSB7XG4gICAgICAgIEZyb250ZW5kX1NldHRpbmdzX0JpbGxpbmcuaW5pdCgpO1xuICAgIH1cblxuICAgIC8vIHN0YXRpYyBvbl9qcWh0bWxfcmVhZHkoKSB7XG4gICAgLy8gICAgIC8vIENhbGxlZCBhZnRlciBhbGwgSlFIVE1MIGNvbXBvbmVudHMgaGF2ZSBsb2FkZWQgYW5kIHJlbmRlcmVkXG4gICAgLy8gICAgIC8vIFVzZSB0aGlzIGlmIHlvdSBuZWVkIHRvIGludGVyYWN0IHdpdGggSlFIVE1MIGNvbXBvbmVudHNcbiAgICAvLyAgICAgLy8gT3RoZXJ3aXNlLCB1c2Ugb25fYXBwX3JlYWR5KCkgZm9yIG1vc3QgaW5pdGlhbGl6YXRpb25cbiAgICAvLyB9XG59Il0sIm1hcHBpbmdzIjoiOztBQUFBLE1BQU1BLHlCQUF5QixDQUFDO0VBQzVCLE9BQU9DLElBQUlBLENBQUEsRUFBRztJQUNWLElBQUksQ0FBQ0MsQ0FBQyxDQUFDLDRCQUE0QixDQUFDLENBQUNDLE1BQU0sQ0FBQyxDQUFDLEVBQUU7O0lBRS9DO0lBQ0FDLE9BQU8sQ0FBQ0MsR0FBRyxDQUFDLHVDQUF1QyxDQUFDOztJQUVwRDtJQUNBSCxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUNJLEVBQUUsQ0FBQyxPQUFPLEVBQUUsWUFBVztNQUNwQztJQUFBLENBQ0gsQ0FBQzs7SUFFRjtJQUNBSixDQUFDLENBQUMsNEJBQTRCLENBQUMsQ0FBQ0ssT0FBTyxDQUFDLENBQUM7RUFDN0M7RUFFQSxPQUFPQyxZQUFZQSxDQUFBLEVBQUc7SUFDbEJSLHlCQUF5QixDQUFDQyxJQUFJLENBQUMsQ0FBQztFQUNwQzs7RUFFQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FBQ0oiLCJpZ25vcmVMaXN0IjpbXX0=

View File

@@ -0,0 +1,54 @@
"use strict";
class Rich_Text_Editor extends Jqhtml_Component {
on_ready() {
const $editor = this.$id('editor');
// Toolbar button handlers
this.$id('toolbar').find('[data-command]').on('click', e => {
e.preventDefault();
const command = $(e.currentTarget).attr('data-command');
if (command === 'createLink') {
const url = prompt('Enter URL:');
if (url) {
document.execCommand(command, false, url);
}
} else {
document.execCommand(command, false, null);
}
$editor.focus();
});
// Track changes
$editor.on('input', () => {
if (this.args.on_change) {
this.args.on_change(this.get_value());
}
});
// Prevent default behavior on paste (optional - can be customized)
$editor.on('paste', e => {
if (this.args.plain_text_paste) {
e.preventDefault();
const text = e.originalEvent.clipboardData.getData('text/plain');
document.execCommand('insertText', false, text);
}
});
}
get_value() {
return this.$id('editor').html();
}
get_text() {
return this.$id('editor').text();
}
set_value(html) {
this.$id('editor').html(html);
}
clear() {
this.$id('editor').empty();
}
focus() {
this.$id('editor').focus();
}
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSaWNoX1RleHRfRWRpdG9yIiwiSnFodG1sX0NvbXBvbmVudCIsIm9uX3JlYWR5IiwiJGVkaXRvciIsIiRpZCIsImZpbmQiLCJvbiIsImUiLCJwcmV2ZW50RGVmYXVsdCIsImNvbW1hbmQiLCIkIiwiY3VycmVudFRhcmdldCIsImF0dHIiLCJ1cmwiLCJwcm9tcHQiLCJkb2N1bWVudCIsImV4ZWNDb21tYW5kIiwiZm9jdXMiLCJhcmdzIiwib25fY2hhbmdlIiwiZ2V0X3ZhbHVlIiwicGxhaW5fdGV4dF9wYXN0ZSIsInRleHQiLCJvcmlnaW5hbEV2ZW50IiwiY2xpcGJvYXJkRGF0YSIsImdldERhdGEiLCJodG1sIiwiZ2V0X3RleHQiLCJzZXRfdmFsdWUiLCJjbGVhciIsImVtcHR5Il0sInNvdXJjZXMiOlsicnN4L3RoZW1lL2NvbXBvbmVudHMvX2FyY2hpdmVkL3VuZmluaXNoZWQvUmljaF9UZXh0X0VkaXRvci5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJjbGFzcyBSaWNoX1RleHRfRWRpdG9yIGV4dGVuZHMgSnFodG1sX0NvbXBvbmVudCB7XG4gICAgb25fcmVhZHkoKSB7XG4gICAgICAgIGNvbnN0ICRlZGl0b3IgPSB0aGlzLiRpZCgnZWRpdG9yJyk7XG5cbiAgICAgICAgLy8gVG9vbGJhciBidXR0b24gaGFuZGxlcnNcbiAgICAgICAgdGhpcy4kaWQoJ3Rvb2xiYXInKS5maW5kKCdbZGF0YS1jb21tYW5kXScpLm9uKCdjbGljaycsIChlKSA9PiB7XG4gICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICBjb25zdCBjb21tYW5kID0gJChlLmN1cnJlbnRUYXJnZXQpLmF0dHIoJ2RhdGEtY29tbWFuZCcpO1xuXG4gICAgICAgICAgICBpZiAoY29tbWFuZCA9PT0gJ2NyZWF0ZUxpbmsnKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdXJsID0gcHJvbXB0KCdFbnRlciBVUkw6Jyk7XG4gICAgICAgICAgICAgICAgaWYgKHVybCkge1xuICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5leGVjQ29tbWFuZChjb21tYW5kLCBmYWxzZSwgdXJsKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKGNvbW1hbmQsIGZhbHNlLCBudWxsKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgJGVkaXRvci5mb2N1cygpO1xuICAgICAgICB9KTtcblxuICAgICAgICAvLyBUcmFjayBjaGFuZ2VzXG4gICAgICAgICRlZGl0b3Iub24oJ2lucHV0JywgKCkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuYXJncy5vbl9jaGFuZ2UpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmFyZ3Mub25fY2hhbmdlKHRoaXMuZ2V0X3ZhbHVlKCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICAvLyBQcmV2ZW50IGRlZmF1bHQgYmVoYXZpb3Igb24gcGFzdGUgKG9wdGlvbmFsIC0gY2FuIGJlIGN1c3RvbWl6ZWQpXG4gICAgICAgICRlZGl0b3Iub24oJ3Bhc3RlJywgKGUpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLmFyZ3MucGxhaW5fdGV4dF9wYXN0ZSkge1xuICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICBjb25zdCB0ZXh0ID0gZS5vcmlnaW5hbEV2ZW50LmNsaXBib2FyZERhdGEuZ2V0RGF0YSgndGV4dC9wbGFpbicpO1xuICAgICAgICAgICAgICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCdpbnNlcnRUZXh0JywgZmFsc2UsIHRleHQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBnZXRfdmFsdWUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLiRpZCgnZWRpdG9yJykuaHRtbCgpO1xuICAgIH1cblxuICAgIGdldF90ZXh0KCkge1xuICAgICAgICByZXR1cm4gdGhpcy4kaWQoJ2VkaXRvcicpLnRleHQoKTtcbiAgICB9XG5cbiAgICBzZXRfdmFsdWUoaHRtbCkge1xuICAgICAgICB0aGlzLiRpZCgnZWRpdG9yJykuaHRtbChodG1sKTtcbiAgICB9XG5cbiAgICBjbGVhcigpIHtcbiAgICAgICAgdGhpcy4kaWQoJ2VkaXRvcicpLmVtcHR5KCk7XG4gICAgfVxuXG4gICAgZm9jdXMoKSB7XG4gICAgICAgIHRoaXMuJGlkKCdlZGl0b3InKS5mb2N1cygpO1xuICAgIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7QUFBQSxNQUFNQSxnQkFBZ0IsU0FBU0MsZ0JBQWdCLENBQUM7RUFDNUNDLFFBQVFBLENBQUEsRUFBRztJQUNQLE1BQU1DLE9BQU8sR0FBRyxJQUFJLENBQUNDLEdBQUcsQ0FBQyxRQUFRLENBQUM7O0lBRWxDO0lBQ0EsSUFBSSxDQUFDQSxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUNDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDQyxFQUFFLENBQUMsT0FBTyxFQUFHQyxDQUFDLElBQUs7TUFDMURBLENBQUMsQ0FBQ0MsY0FBYyxDQUFDLENBQUM7TUFDbEIsTUFBTUMsT0FBTyxHQUFHQyxDQUFDLENBQUNILENBQUMsQ0FBQ0ksYUFBYSxDQUFDLENBQUNDLElBQUksQ0FBQyxjQUFjLENBQUM7TUFFdkQsSUFBSUgsT0FBTyxLQUFLLFlBQVksRUFBRTtRQUMxQixNQUFNSSxHQUFHLEdBQUdDLE1BQU0sQ0FBQyxZQUFZLENBQUM7UUFDaEMsSUFBSUQsR0FBRyxFQUFFO1VBQ0xFLFFBQVEsQ0FBQ0MsV0FBVyxDQUFDUCxPQUFPLEVBQUUsS0FBSyxFQUFFSSxHQUFHLENBQUM7UUFDN0M7TUFDSixDQUFDLE1BQU07UUFDSEUsUUFBUSxDQUFDQyxXQUFXLENBQUNQLE9BQU8sRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDO01BQzlDO01BRUFOLE9BQU8sQ0FBQ2MsS0FBSyxDQUFDLENBQUM7SUFDbkIsQ0FBQyxDQUFDOztJQUVGO0lBQ0FkLE9BQU8sQ0FBQ0csRUFBRSxDQUFDLE9BQU8sRUFBRSxNQUFNO01BQ3RCLElBQUksSUFBSSxDQUFDWSxJQUFJLENBQUNDLFNBQVMsRUFBRTtRQUNyQixJQUFJLENBQUNELElBQUksQ0FBQ0MsU0FBUyxDQUFDLElBQUksQ0FBQ0MsU0FBUyxDQUFDLENBQUMsQ0FBQztNQUN6QztJQUNKLENBQUMsQ0FBQzs7SUFFRjtJQUNBakIsT0FBTyxDQUFDRyxFQUFFLENBQUMsT0FBTyxFQUFHQyxDQUFDLElBQUs7TUFDdkIsSUFBSSxJQUFJLENBQUNXLElBQUksQ0FBQ0csZ0JBQWdCLEVBQUU7UUFDNUJkLENBQUMsQ0FBQ0MsY0FBYyxDQUFDLENBQUM7UUFDbEIsTUFBTWMsSUFBSSxHQUFHZixDQUFDLENBQUNnQixhQUFhLENBQUNDLGFBQWEsQ0FBQ0MsT0FBTyxDQUFDLFlBQVksQ0FBQztRQUNoRVYsUUFBUSxDQUFDQyxXQUFXLENBQUMsWUFBWSxFQUFFLEtBQUssRUFBRU0sSUFBSSxDQUFDO01BQ25EO0lBQ0osQ0FBQyxDQUFDO0VBQ047RUFFQUYsU0FBU0EsQ0FBQSxFQUFHO0lBQ1IsT0FBTyxJQUFJLENBQUNoQixHQUFHLENBQUMsUUFBUSxDQUFDLENBQUNzQixJQUFJLENBQUMsQ0FBQztFQUNwQztFQUVBQyxRQUFRQSxDQUFBLEVBQUc7SUFDUCxPQUFPLElBQUksQ0FBQ3ZCLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQ2tCLElBQUksQ0FBQyxDQUFDO0VBQ3BDO0VBRUFNLFNBQVNBLENBQUNGLElBQUksRUFBRTtJQUNaLElBQUksQ0FBQ3RCLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQ3NCLElBQUksQ0FBQ0EsSUFBSSxDQUFDO0VBQ2pDO0VBRUFHLEtBQUtBLENBQUEsRUFBRztJQUNKLElBQUksQ0FBQ3pCLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQzBCLEtBQUssQ0FBQyxDQUFDO0VBQzlCO0VBRUFiLEtBQUtBLENBQUEsRUFBRztJQUNKLElBQUksQ0FBQ2IsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDYSxLQUFLLENBQUMsQ0FBQztFQUM5QjtBQUNKIiwiaWdub3JlTGlzdCI6W119

View File

@@ -0,0 +1,6 @@
"use strict";
class Overdue_Indicator extends Jqhtml_Component {
// Pure Bootstrap styling - no JavaScript needed
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJPdmVyZHVlX0luZGljYXRvciIsIkpxaHRtbF9Db21wb25lbnQiXSwic291cmNlcyI6WyJyc3gvdGhlbWUvY29tcG9uZW50cy9fYXJjaGl2ZWQvdW5maW5pc2hlZC9PdmVyZHVlX0luZGljYXRvci5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJjbGFzcyBPdmVyZHVlX0luZGljYXRvciBleHRlbmRzIEpxaHRtbF9Db21wb25lbnQge1xuICAgIC8vIFB1cmUgQm9vdHN0cmFwIHN0eWxpbmcgLSBubyBKYXZhU2NyaXB0IG5lZWRlZFxufVxuIl0sIm1hcHBpbmdzIjoiOztBQUFBLE1BQU1BLGlCQUFpQixTQUFTQyxnQkFBZ0IsQ0FBQztFQUM3QztBQUFBIiwiaWdub3JlTGlzdCI6W119

View File

@@ -0,0 +1,20 @@
"use strict";
class Bulk_Selection extends Jqhtml_Component {
on_ready() {
const $checkbox = this.$id('checkbox');
// Toggle all checkboxes in table body
$checkbox.on('change', e => {
const checked = e.target.checked;
const $table = this.$.closest('table');
$table.find('tbody input[type="checkbox"]').prop('checked', checked);
// Trigger update event
if (this.args.on_change) {
this.args.on_change(checked);
}
});
}
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJCdWxrX1NlbGVjdGlvbiIsIkpxaHRtbF9Db21wb25lbnQiLCJvbl9yZWFkeSIsIiRjaGVja2JveCIsIiRpZCIsIm9uIiwiZSIsImNoZWNrZWQiLCJ0YXJnZXQiLCIkdGFibGUiLCIkIiwiY2xvc2VzdCIsImZpbmQiLCJwcm9wIiwiYXJncyIsIm9uX2NoYW5nZSJdLCJzb3VyY2VzIjpbInJzeC90aGVtZS9jb21wb25lbnRzL19hcmNoaXZlZC91bmZpbmlzaGVkL0J1bGtfU2VsZWN0aW9uLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImNsYXNzIEJ1bGtfU2VsZWN0aW9uIGV4dGVuZHMgSnFodG1sX0NvbXBvbmVudCB7XG4gICAgb25fcmVhZHkoKSB7XG4gICAgICAgIGNvbnN0ICRjaGVja2JveCA9IHRoaXMuJGlkKCdjaGVja2JveCcpO1xuXG4gICAgICAgIC8vIFRvZ2dsZSBhbGwgY2hlY2tib3hlcyBpbiB0YWJsZSBib2R5XG4gICAgICAgICRjaGVja2JveC5vbignY2hhbmdlJywgKGUpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGNoZWNrZWQgPSBlLnRhcmdldC5jaGVja2VkO1xuICAgICAgICAgICAgY29uc3QgJHRhYmxlID0gdGhpcy4kLmNsb3Nlc3QoJ3RhYmxlJyk7XG4gICAgICAgICAgICAkdGFibGUuZmluZCgndGJvZHkgaW5wdXRbdHlwZT1cImNoZWNrYm94XCJdJykucHJvcCgnY2hlY2tlZCcsIGNoZWNrZWQpO1xuXG4gICAgICAgICAgICAvLyBUcmlnZ2VyIHVwZGF0ZSBldmVudFxuICAgICAgICAgICAgaWYgKHRoaXMuYXJncy5vbl9jaGFuZ2UpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmFyZ3Mub25fY2hhbmdlKGNoZWNrZWQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG59XG4iXSwibWFwcGluZ3MiOiI7O0FBQUEsTUFBTUEsY0FBYyxTQUFTQyxnQkFBZ0IsQ0FBQztFQUMxQ0MsUUFBUUEsQ0FBQSxFQUFHO0lBQ1AsTUFBTUMsU0FBUyxHQUFHLElBQUksQ0FBQ0MsR0FBRyxDQUFDLFVBQVUsQ0FBQzs7SUFFdEM7SUFDQUQsU0FBUyxDQUFDRSxFQUFFLENBQUMsUUFBUSxFQUFHQyxDQUFDLElBQUs7TUFDMUIsTUFBTUMsT0FBTyxHQUFHRCxDQUFDLENBQUNFLE1BQU0sQ0FBQ0QsT0FBTztNQUNoQyxNQUFNRSxNQUFNLEdBQUcsSUFBSSxDQUFDQyxDQUFDLENBQUNDLE9BQU8sQ0FBQyxPQUFPLENBQUM7TUFDdENGLE1BQU0sQ0FBQ0csSUFBSSxDQUFDLDhCQUE4QixDQUFDLENBQUNDLElBQUksQ0FBQyxTQUFTLEVBQUVOLE9BQU8sQ0FBQzs7TUFFcEU7TUFDQSxJQUFJLElBQUksQ0FBQ08sSUFBSSxDQUFDQyxTQUFTLEVBQUU7UUFDckIsSUFBSSxDQUFDRCxJQUFJLENBQUNDLFNBQVMsQ0FBQ1IsT0FBTyxDQUFDO01BQ2hDO0lBQ0osQ0FBQyxDQUFDO0VBQ047QUFDSiIsImlnbm9yZUxpc3QiOltdfQ==

View File

@@ -0,0 +1,6 @@
"use strict";
class Text_Display extends Jqhtml_Component {
// Generic text display - inherits Bootstrap typography
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJUZXh0X0Rpc3BsYXkiLCJKcWh0bWxfQ29tcG9uZW50Il0sInNvdXJjZXMiOlsicnN4L3RoZW1lL2NvbXBvbmVudHMvX2FyY2hpdmVkL3VuZmluaXNoZWQvdGV4dF9kaXNwbGF5LmpzIl0sInNvdXJjZXNDb250ZW50IjpbImNsYXNzIFRleHRfRGlzcGxheSBleHRlbmRzIEpxaHRtbF9Db21wb25lbnQge1xuICAgIC8vIEdlbmVyaWMgdGV4dCBkaXNwbGF5IC0gaW5oZXJpdHMgQm9vdHN0cmFwIHR5cG9ncmFwaHlcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7QUFBQSxNQUFNQSxZQUFZLFNBQVNDLGdCQUFnQixDQUFDO0VBQ3hDO0FBQUEiLCJpZ25vcmVMaXN0IjpbXX0=

View File

@@ -0,0 +1,28 @@
"use strict";
class Frontend_Contacts_View {
static init() {
if (!$('.Frontend_Contacts_View').exists()) return;
// Initialize your component here
console.log('Frontend_Contacts_View initialized');
// Example: Handle button clicks
$('.btn-action').on('click', function () {
// Handle action
});
// Example: Initialize tooltips
$('[data-bs-toggle="tooltip"]').tooltip();
}
static on_app_ready() {
Frontend_Contacts_View.init();
}
// static on_jqhtml_ready() {
// // Called after all JQHTML components have loaded and rendered
// // Use this if you need to interact with JQHTML components
// // Otherwise, use on_app_ready() for most initialization
// }
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJGcm9udGVuZF9Db250YWN0c19WaWV3IiwiaW5pdCIsIiQiLCJleGlzdHMiLCJjb25zb2xlIiwibG9nIiwib24iLCJ0b29sdGlwIiwib25fYXBwX3JlYWR5Il0sInNvdXJjZXMiOlsicnN4L2FwcC9mcm9udGVuZC9jb250YWN0cy92aWV3L2Zyb250ZW5kX2NvbnRhY3RzX3ZpZXcuanMiXSwic291cmNlc0NvbnRlbnQiOlsiY2xhc3MgRnJvbnRlbmRfQ29udGFjdHNfVmlldyB7XG4gICAgc3RhdGljIGluaXQoKSB7XG4gICAgICAgIGlmICghJCgnLkZyb250ZW5kX0NvbnRhY3RzX1ZpZXcnKS5leGlzdHMoKSkgcmV0dXJuO1xuXG4gICAgICAgIC8vIEluaXRpYWxpemUgeW91ciBjb21wb25lbnQgaGVyZVxuICAgICAgICBjb25zb2xlLmxvZygnRnJvbnRlbmRfQ29udGFjdHNfVmlldyBpbml0aWFsaXplZCcpO1xuXG4gICAgICAgIC8vIEV4YW1wbGU6IEhhbmRsZSBidXR0b24gY2xpY2tzXG4gICAgICAgICQoJy5idG4tYWN0aW9uJykub24oJ2NsaWNrJywgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgLy8gSGFuZGxlIGFjdGlvblxuICAgICAgICB9KTtcblxuICAgICAgICAvLyBFeGFtcGxlOiBJbml0aWFsaXplIHRvb2x0aXBzXG4gICAgICAgICQoJ1tkYXRhLWJzLXRvZ2dsZT1cInRvb2x0aXBcIl0nKS50b29sdGlwKCk7XG4gICAgfVxuXG4gICAgc3RhdGljIG9uX2FwcF9yZWFkeSgpIHtcbiAgICAgICAgRnJvbnRlbmRfQ29udGFjdHNfVmlldy5pbml0KCk7XG4gICAgfVxuXG4gICAgLy8gc3RhdGljIG9uX2pxaHRtbF9yZWFkeSgpIHtcbiAgICAvLyAgICAgLy8gQ2FsbGVkIGFmdGVyIGFsbCBKUUhUTUwgY29tcG9uZW50cyBoYXZlIGxvYWRlZCBhbmQgcmVuZGVyZWRcbiAgICAvLyAgICAgLy8gVXNlIHRoaXMgaWYgeW91IG5lZWQgdG8gaW50ZXJhY3Qgd2l0aCBKUUhUTUwgY29tcG9uZW50c1xuICAgIC8vICAgICAvLyBPdGhlcndpc2UsIHVzZSBvbl9hcHBfcmVhZHkoKSBmb3IgbW9zdCBpbml0aWFsaXphdGlvblxuICAgIC8vIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7QUFBQSxNQUFNQSxzQkFBc0IsQ0FBQztFQUN6QixPQUFPQyxJQUFJQSxDQUFBLEVBQUc7SUFDVixJQUFJLENBQUNDLENBQUMsQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDQyxNQUFNLENBQUMsQ0FBQyxFQUFFOztJQUU1QztJQUNBQyxPQUFPLENBQUNDLEdBQUcsQ0FBQyxvQ0FBb0MsQ0FBQzs7SUFFakQ7SUFDQUgsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDSSxFQUFFLENBQUMsT0FBTyxFQUFFLFlBQVk7TUFDckM7SUFBQSxDQUNILENBQUM7O0lBRUY7SUFDQUosQ0FBQyxDQUFDLDRCQUE0QixDQUFDLENBQUNLLE9BQU8sQ0FBQyxDQUFDO0VBQzdDO0VBRUEsT0FBT0MsWUFBWUEsQ0FBQSxFQUFHO0lBQ2xCUixzQkFBc0IsQ0FBQ0MsSUFBSSxDQUFDLENBQUM7RUFDakM7O0VBRUE7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBQUNKIiwiaWdub3JlTGlzdCI6W119

View File

@@ -0,0 +1,17 @@
"use strict";
/**
* Form_Field
*
* Form field wrapper that adds labels, help text, and required indicators.
* See form_field.jqhtml for full documentation.
*
* Extends Form_Field_Abstract to inherit all core functionality.
* This class exists primarily for template inheritance and any future
* formatted-field-specific behavior.
*/
class Form_Field extends Form_Field_Abstract {
// All functionality inherited from Form_Field_Abstract
// This class provides the formatted visual wrapper via its template
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJGb3JtX0ZpZWxkIiwiRm9ybV9GaWVsZF9BYnN0cmFjdCJdLCJzb3VyY2VzIjpbInJzeC90aGVtZS9jb21wb25lbnRzL2Zvcm1zL2Zvcm1fZmllbGQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBGb3JtX0ZpZWxkXG4gKlxuICogRm9ybSBmaWVsZCB3cmFwcGVyIHRoYXQgYWRkcyBsYWJlbHMsIGhlbHAgdGV4dCwgYW5kIHJlcXVpcmVkIGluZGljYXRvcnMuXG4gKiBTZWUgZm9ybV9maWVsZC5qcWh0bWwgZm9yIGZ1bGwgZG9jdW1lbnRhdGlvbi5cbiAqXG4gKiBFeHRlbmRzIEZvcm1fRmllbGRfQWJzdHJhY3QgdG8gaW5oZXJpdCBhbGwgY29yZSBmdW5jdGlvbmFsaXR5LlxuICogVGhpcyBjbGFzcyBleGlzdHMgcHJpbWFyaWx5IGZvciB0ZW1wbGF0ZSBpbmhlcml0YW5jZSBhbmQgYW55IGZ1dHVyZVxuICogZm9ybWF0dGVkLWZpZWxkLXNwZWNpZmljIGJlaGF2aW9yLlxuICovXG5jbGFzcyBGb3JtX0ZpZWxkIGV4dGVuZHMgRm9ybV9GaWVsZF9BYnN0cmFjdCB7XG4gICAgLy8gQWxsIGZ1bmN0aW9uYWxpdHkgaW5oZXJpdGVkIGZyb20gRm9ybV9GaWVsZF9BYnN0cmFjdFxuICAgIC8vIFRoaXMgY2xhc3MgcHJvdmlkZXMgdGhlIGZvcm1hdHRlZCB2aXN1YWwgd3JhcHBlciB2aWEgaXRzIHRlbXBsYXRlXG59XG4iXSwibWFwcGluZ3MiOiI7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNQSxVQUFVLFNBQVNDLG1CQUFtQixDQUFDO0VBQ3pDO0VBQ0E7QUFBQSIsImlnbm9yZUxpc3QiOltdfQ==

View File

@@ -0,0 +1,28 @@
"use strict";
class Frontend_Reports {
static init() {
if (!$(".Frontend_Reports").exists()) return;
// Initialize your component here
console.log('Frontend_Reports initialized');
// Example: Handle button clicks
$('.btn-action').on('click', function () {
// Handle action
});
// Example: Initialize tooltips
$('[data-bs-toggle="tooltip"]').tooltip();
}
static on_app_ready() {
Frontend_Reports.init();
}
// static on_jqhtml_ready() {
// // Called after all JQHTML components have loaded and rendered
// // Use this if you need to interact with JQHTML components
// // Otherwise, use on_app_ready() for most initialization
// }
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJGcm9udGVuZF9SZXBvcnRzIiwiaW5pdCIsIiQiLCJleGlzdHMiLCJjb25zb2xlIiwibG9nIiwib24iLCJ0b29sdGlwIiwib25fYXBwX3JlYWR5Il0sInNvdXJjZXMiOlsicnN4L2FwcC9mcm9udGVuZC9yZXBvcnRzL2Zyb250ZW5kX3JlcG9ydHMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiY2xhc3MgRnJvbnRlbmRfUmVwb3J0cyB7XG4gICAgc3RhdGljIGluaXQoKSB7XG4gICAgICAgIGlmICghJChcIi5Gcm9udGVuZF9SZXBvcnRzXCIpLmV4aXN0cygpKSByZXR1cm47XG5cbiAgICAgICAgLy8gSW5pdGlhbGl6ZSB5b3VyIGNvbXBvbmVudCBoZXJlXG4gICAgICAgIGNvbnNvbGUubG9nKCdGcm9udGVuZF9SZXBvcnRzIGluaXRpYWxpemVkJyk7XG5cbiAgICAgICAgLy8gRXhhbXBsZTogSGFuZGxlIGJ1dHRvbiBjbGlja3NcbiAgICAgICAgJCgnLmJ0bi1hY3Rpb24nKS5vbignY2xpY2snLCBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIC8vIEhhbmRsZSBhY3Rpb25cbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gRXhhbXBsZTogSW5pdGlhbGl6ZSB0b29sdGlwc1xuICAgICAgICAkKCdbZGF0YS1icy10b2dnbGU9XCJ0b29sdGlwXCJdJykudG9vbHRpcCgpO1xuICAgIH1cblxuICAgIHN0YXRpYyBvbl9hcHBfcmVhZHkoKSB7XG4gICAgICAgIEZyb250ZW5kX1JlcG9ydHMuaW5pdCgpO1xuICAgIH1cblxuICAgIC8vIHN0YXRpYyBvbl9qcWh0bWxfcmVhZHkoKSB7XG4gICAgLy8gICAgIC8vIENhbGxlZCBhZnRlciBhbGwgSlFIVE1MIGNvbXBvbmVudHMgaGF2ZSBsb2FkZWQgYW5kIHJlbmRlcmVkXG4gICAgLy8gICAgIC8vIFVzZSB0aGlzIGlmIHlvdSBuZWVkIHRvIGludGVyYWN0IHdpdGggSlFIVE1MIGNvbXBvbmVudHNcbiAgICAvLyAgICAgLy8gT3RoZXJ3aXNlLCB1c2Ugb25fYXBwX3JlYWR5KCkgZm9yIG1vc3QgaW5pdGlhbGl6YXRpb25cbiAgICAvLyB9XG59Il0sIm1hcHBpbmdzIjoiOztBQUFBLE1BQU1BLGdCQUFnQixDQUFDO0VBQ25CLE9BQU9DLElBQUlBLENBQUEsRUFBRztJQUNWLElBQUksQ0FBQ0MsQ0FBQyxDQUFDLG1CQUFtQixDQUFDLENBQUNDLE1BQU0sQ0FBQyxDQUFDLEVBQUU7O0lBRXRDO0lBQ0FDLE9BQU8sQ0FBQ0MsR0FBRyxDQUFDLDhCQUE4QixDQUFDOztJQUUzQztJQUNBSCxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUNJLEVBQUUsQ0FBQyxPQUFPLEVBQUUsWUFBVztNQUNwQztJQUFBLENBQ0gsQ0FBQzs7SUFFRjtJQUNBSixDQUFDLENBQUMsNEJBQTRCLENBQUMsQ0FBQ0ssT0FBTyxDQUFDLENBQUM7RUFDN0M7RUFFQSxPQUFPQyxZQUFZQSxDQUFBLEVBQUc7SUFDbEJSLGdCQUFnQixDQUFDQyxJQUFJLENBQUMsQ0FBQztFQUMzQjs7RUFFQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FBQ0oiLCJpZ25vcmVMaXN0IjpbXX0=

View File

@@ -0,0 +1,48 @@
"use strict";
class Frontend_Clients_View {
static init() {
if (!$(".Frontend_Clients_View").exists()) return;
console_debug('CLIENT', 'Frontend_Clients_View initialized');
// Handle delete button
$('#delete-client-btn').on('click', async function () {
const $element = $(this);
const client_id = $element.data('client-id');
const confirmed = await Modal.confirm('Delete Client', 'Are you sure you want to delete this client?\n\nThis action can be undone by restoring the client.', 'Delete', 'Cancel');
if (confirmed) {
const result = await Frontend_Clients_Controller.delete({
id: client_id
});
if (result.success) {
// Reload the page to show deleted status
location.reload();
} else {
alert(result.message || 'Failed to delete client');
}
}
});
// Handle restore button
$('#restore-client-btn').on('click', async function () {
const $element = $(this);
const client_id = $element.data('client-id');
const confirmed = await Modal.confirm('Restore Client', 'Are you sure you want to restore this client?', 'Restore', 'Cancel');
if (confirmed) {
const result = await Frontend_Clients_Controller.restore({
id: client_id
});
if (result.success) {
// Reload the page to show restored status
location.reload();
} else {
alert(result.message || 'Failed to restore client');
}
}
});
}
static on_app_ready() {
Frontend_Clients_View.init();
}
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJGcm9udGVuZF9DbGllbnRzX1ZpZXciLCJpbml0IiwiJCIsImV4aXN0cyIsImNvbnNvbGVfZGVidWciLCJvbiIsIiRlbGVtZW50IiwiY2xpZW50X2lkIiwiZGF0YSIsImNvbmZpcm1lZCIsIk1vZGFsIiwiY29uZmlybSIsInJlc3VsdCIsIkZyb250ZW5kX0NsaWVudHNfQ29udHJvbGxlciIsImRlbGV0ZSIsImlkIiwic3VjY2VzcyIsImxvY2F0aW9uIiwicmVsb2FkIiwiYWxlcnQiLCJtZXNzYWdlIiwicmVzdG9yZSIsIm9uX2FwcF9yZWFkeSJdLCJzb3VyY2VzIjpbInJzeC9hcHAvZnJvbnRlbmQvY2xpZW50cy92aWV3L2Zyb250ZW5kX2NsaWVudHNfdmlldy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJjbGFzcyBGcm9udGVuZF9DbGllbnRzX1ZpZXcge1xuICAgIHN0YXRpYyBpbml0KCkge1xuICAgICAgICBpZiAoISQoXCIuRnJvbnRlbmRfQ2xpZW50c19WaWV3XCIpLmV4aXN0cygpKSByZXR1cm47XG5cbiAgICAgICAgY29uc29sZV9kZWJ1ZygnQ0xJRU5UJywgJ0Zyb250ZW5kX0NsaWVudHNfVmlldyBpbml0aWFsaXplZCcpO1xuXG4gICAgICAgIC8vIEhhbmRsZSBkZWxldGUgYnV0dG9uXG4gICAgICAgICQoJyNkZWxldGUtY2xpZW50LWJ0bicpLm9uKCdjbGljaycsIGFzeW5jIGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgY29uc3QgJGVsZW1lbnQgPSAkKHRoaXMpO1xuICAgICAgICAgICAgY29uc3QgY2xpZW50X2lkID0gJGVsZW1lbnQuZGF0YSgnY2xpZW50LWlkJyk7XG5cbiAgICAgICAgICAgIGNvbnN0IGNvbmZpcm1lZCA9IGF3YWl0IE1vZGFsLmNvbmZpcm0oXG4gICAgICAgICAgICAgICAgJ0RlbGV0ZSBDbGllbnQnLFxuICAgICAgICAgICAgICAgICdBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gZGVsZXRlIHRoaXMgY2xpZW50P1xcblxcblRoaXMgYWN0aW9uIGNhbiBiZSB1bmRvbmUgYnkgcmVzdG9yaW5nIHRoZSBjbGllbnQuJyxcbiAgICAgICAgICAgICAgICAnRGVsZXRlJyxcbiAgICAgICAgICAgICAgICAnQ2FuY2VsJ1xuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgaWYgKGNvbmZpcm1lZCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IEZyb250ZW5kX0NsaWVudHNfQ29udHJvbGxlci5kZWxldGUoeyBpZDogY2xpZW50X2lkIH0pO1xuXG4gICAgICAgICAgICAgICAgaWYgKHJlc3VsdC5zdWNjZXNzKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIFJlbG9hZCB0aGUgcGFnZSB0byBzaG93IGRlbGV0ZWQgc3RhdHVzXG4gICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uLnJlbG9hZCgpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGFsZXJ0KHJlc3VsdC5tZXNzYWdlIHx8ICdGYWlsZWQgdG8gZGVsZXRlIGNsaWVudCcpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gSGFuZGxlIHJlc3RvcmUgYnV0dG9uXG4gICAgICAgICQoJyNyZXN0b3JlLWNsaWVudC1idG4nKS5vbignY2xpY2snLCBhc3luYyBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIGNvbnN0ICRlbGVtZW50ID0gJCh0aGlzKTtcbiAgICAgICAgICAgIGNvbnN0IGNsaWVudF9pZCA9ICRlbGVtZW50LmRhdGEoJ2NsaWVudC1pZCcpO1xuXG4gICAgICAgICAgICBjb25zdCBjb25maXJtZWQgPSBhd2FpdCBNb2RhbC5jb25maXJtKFxuICAgICAgICAgICAgICAgICdSZXN0b3JlIENsaWVudCcsXG4gICAgICAgICAgICAgICAgJ0FyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byByZXN0b3JlIHRoaXMgY2xpZW50PycsXG4gICAgICAgICAgICAgICAgJ1Jlc3RvcmUnLFxuICAgICAgICAgICAgICAgICdDYW5jZWwnXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBpZiAoY29uZmlybWVkKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgRnJvbnRlbmRfQ2xpZW50c19Db250cm9sbGVyLnJlc3RvcmUoeyBpZDogY2xpZW50X2lkIH0pO1xuXG4gICAgICAgICAgICAgICAgaWYgKHJlc3VsdC5zdWNjZXNzKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIFJlbG9hZCB0aGUgcGFnZSB0byBzaG93IHJlc3RvcmVkIHN0YXR1c1xuICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbi5yZWxvYWQoKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBhbGVydChyZXN1bHQubWVzc2FnZSB8fCAnRmFpbGVkIHRvIHJlc3RvcmUgY2xpZW50Jyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBzdGF0aWMgb25fYXBwX3JlYWR5KCkge1xuICAgICAgICBGcm9udGVuZF9DbGllbnRzX1ZpZXcuaW5pdCgpO1xuICAgIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7QUFBQSxNQUFNQSxxQkFBcUIsQ0FBQztFQUN4QixPQUFPQyxJQUFJQSxDQUFBLEVBQUc7SUFDVixJQUFJLENBQUNDLENBQUMsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDQyxNQUFNLENBQUMsQ0FBQyxFQUFFO0lBRTNDQyxhQUFhLENBQUMsUUFBUSxFQUFFLG1DQUFtQyxDQUFDOztJQUU1RDtJQUNBRixDQUFDLENBQUMsb0JBQW9CLENBQUMsQ0FBQ0csRUFBRSxDQUFDLE9BQU8sRUFBRSxrQkFBaUI7TUFDakQsTUFBTUMsUUFBUSxHQUFHSixDQUFDLENBQUMsSUFBSSxDQUFDO01BQ3hCLE1BQU1LLFNBQVMsR0FBR0QsUUFBUSxDQUFDRSxJQUFJLENBQUMsV0FBVyxDQUFDO01BRTVDLE1BQU1DLFNBQVMsR0FBRyxNQUFNQyxLQUFLLENBQUNDLE9BQU8sQ0FDakMsZUFBZSxFQUNmLG9HQUFvRyxFQUNwRyxRQUFRLEVBQ1IsUUFDSixDQUFDO01BRUQsSUFBSUYsU0FBUyxFQUFFO1FBQ1gsTUFBTUcsTUFBTSxHQUFHLE1BQU1DLDJCQUEyQixDQUFDQyxNQUFNLENBQUM7VUFBRUMsRUFBRSxFQUFFUjtRQUFVLENBQUMsQ0FBQztRQUUxRSxJQUFJSyxNQUFNLENBQUNJLE9BQU8sRUFBRTtVQUNoQjtVQUNBQyxRQUFRLENBQUNDLE1BQU0sQ0FBQyxDQUFDO1FBQ3JCLENBQUMsTUFBTTtVQUNIQyxLQUFLLENBQUNQLE1BQU0sQ0FBQ1EsT0FBTyxJQUFJLHlCQUF5QixDQUFDO1FBQ3REO01BQ0o7SUFDSixDQUFDLENBQUM7O0lBRUY7SUFDQWxCLENBQUMsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDRyxFQUFFLENBQUMsT0FBTyxFQUFFLGtCQUFpQjtNQUNsRCxNQUFNQyxRQUFRLEdBQUdKLENBQUMsQ0FBQyxJQUFJLENBQUM7TUFDeEIsTUFBTUssU0FBUyxHQUFHRCxRQUFRLENBQUNFLElBQUksQ0FBQyxXQUFXLENBQUM7TUFFNUMsTUFBTUMsU0FBUyxHQUFHLE1BQU1DLEtBQUssQ0FBQ0MsT0FBTyxDQUNqQyxnQkFBZ0IsRUFDaEIsK0NBQStDLEVBQy9DLFNBQVMsRUFDVCxRQUNKLENBQUM7TUFFRCxJQUFJRixTQUFTLEVBQUU7UUFDWCxNQUFNRyxNQUFNLEdBQUcsTUFBTUMsMkJBQTJCLENBQUNRLE9BQU8sQ0FBQztVQUFFTixFQUFFLEVBQUVSO1FBQVUsQ0FBQyxDQUFDO1FBRTNFLElBQUlLLE1BQU0sQ0FBQ0ksT0FBTyxFQUFFO1VBQ2hCO1VBQ0FDLFFBQVEsQ0FBQ0MsTUFBTSxDQUFDLENBQUM7UUFDckIsQ0FBQyxNQUFNO1VBQ0hDLEtBQUssQ0FBQ1AsTUFBTSxDQUFDUSxPQUFPLElBQUksMEJBQTBCLENBQUM7UUFDdkQ7TUFDSjtJQUNKLENBQUMsQ0FBQztFQUNOO0VBRUEsT0FBT0UsWUFBWUEsQ0FBQSxFQUFHO0lBQ2xCdEIscUJBQXFCLENBQUNDLElBQUksQ0FBQyxDQUFDO0VBQ2hDO0FBQ0oiLCJpZ25vcmVMaXN0IjpbXX0=

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,48 @@
"use strict";
class Checkbox_Input extends Form_Input_Abstract {
on_create() {
this.data.checked = false;
this.checked_value = this.args.checked_value || '1';
this.unchecked_value = this.args.unchecked_value || '0';
}
on_ready() {
// Connect label clicks to checkbox
const $input = this.$id('input');
const $label = this.$id('label');
if ($label.exists()) {
const input_id = $input.attr('id');
$label.attr('for', input_id);
}
}
/**
* val() - Get or set the checkbox state
* @param {string|boolean} [value] - If provided, sets the checked state
* @returns {string} The checked_value or unchecked_value when called as getter
*/
val(value) {
if (arguments.length === 0) {
// Getter
const is_checked = this.$id('input').prop('checked');
return is_checked ? this.checked_value : this.unchecked_value;
} else {
// Setter - accepts boolean, checked_value, or unchecked_value
let should_check = false;
if (typeof value === 'boolean') {
should_check = value;
} else if (value === this.checked_value || value === '1' || value === 1 || value === true) {
should_check = true;
}
this.data.checked = should_check;
if (this.$id('input').exists()) {
this.$id('input').prop('checked', should_check);
}
}
}
async seed() {
// Randomly check or uncheck
this.val(Math.random() > 0.5);
}
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJDaGVja2JveF9JbnB1dCIsIkZvcm1fSW5wdXRfQWJzdHJhY3QiLCJvbl9jcmVhdGUiLCJkYXRhIiwiY2hlY2tlZCIsImNoZWNrZWRfdmFsdWUiLCJhcmdzIiwidW5jaGVja2VkX3ZhbHVlIiwib25fcmVhZHkiLCIkaW5wdXQiLCIkaWQiLCIkbGFiZWwiLCJleGlzdHMiLCJpbnB1dF9pZCIsImF0dHIiLCJ2YWwiLCJ2YWx1ZSIsImFyZ3VtZW50cyIsImxlbmd0aCIsImlzX2NoZWNrZWQiLCJwcm9wIiwic2hvdWxkX2NoZWNrIiwic2VlZCIsIk1hdGgiLCJyYW5kb20iXSwic291cmNlcyI6WyJyc3gvdGhlbWUvY29tcG9uZW50cy9pbnB1dHMvY2hlY2tib3hfaW5wdXQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiY2xhc3MgQ2hlY2tib3hfSW5wdXQgZXh0ZW5kcyBGb3JtX0lucHV0X0Fic3RyYWN0IHtcbiAgICBvbl9jcmVhdGUoKSB7XG4gICAgICAgIHRoaXMuZGF0YS5jaGVja2VkID0gZmFsc2U7XG4gICAgICAgIHRoaXMuY2hlY2tlZF92YWx1ZSA9IHRoaXMuYXJncy5jaGVja2VkX3ZhbHVlIHx8ICcxJztcbiAgICAgICAgdGhpcy51bmNoZWNrZWRfdmFsdWUgPSB0aGlzLmFyZ3MudW5jaGVja2VkX3ZhbHVlIHx8ICcwJztcbiAgICB9XG5cbiAgICBvbl9yZWFkeSgpIHtcbiAgICAgICAgLy8gQ29ubmVjdCBsYWJlbCBjbGlja3MgdG8gY2hlY2tib3hcbiAgICAgICAgY29uc3QgJGlucHV0ID0gdGhpcy4kaWQoJ2lucHV0Jyk7XG4gICAgICAgIGNvbnN0ICRsYWJlbCA9IHRoaXMuJGlkKCdsYWJlbCcpO1xuXG4gICAgICAgIGlmICgkbGFiZWwuZXhpc3RzKCkpIHtcbiAgICAgICAgICAgIGNvbnN0IGlucHV0X2lkID0gJGlucHV0LmF0dHIoJ2lkJyk7XG4gICAgICAgICAgICAkbGFiZWwuYXR0cignZm9yJywgaW5wdXRfaWQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogdmFsKCkgLSBHZXQgb3Igc2V0IHRoZSBjaGVja2JveCBzdGF0ZVxuICAgICAqIEBwYXJhbSB7c3RyaW5nfGJvb2xlYW59IFt2YWx1ZV0gLSBJZiBwcm92aWRlZCwgc2V0cyB0aGUgY2hlY2tlZCBzdGF0ZVxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSBjaGVja2VkX3ZhbHVlIG9yIHVuY2hlY2tlZF92YWx1ZSB3aGVuIGNhbGxlZCBhcyBnZXR0ZXJcbiAgICAgKi9cbiAgICB2YWwodmFsdWUpIHtcbiAgICAgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIC8vIEdldHRlclxuICAgICAgICAgICAgY29uc3QgaXNfY2hlY2tlZCA9IHRoaXMuJGlkKCdpbnB1dCcpLnByb3AoJ2NoZWNrZWQnKTtcbiAgICAgICAgICAgIHJldHVybiBpc19jaGVja2VkID8gdGhpcy5jaGVja2VkX3ZhbHVlIDogdGhpcy51bmNoZWNrZWRfdmFsdWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBTZXR0ZXIgLSBhY2NlcHRzIGJvb2xlYW4sIGNoZWNrZWRfdmFsdWUsIG9yIHVuY2hlY2tlZF92YWx1ZVxuICAgICAgICAgICAgbGV0IHNob3VsZF9jaGVjayA9IGZhbHNlO1xuXG4gICAgICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnYm9vbGVhbicpIHtcbiAgICAgICAgICAgICAgICBzaG91bGRfY2hlY2sgPSB2YWx1ZTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodmFsdWUgPT09IHRoaXMuY2hlY2tlZF92YWx1ZSB8fCB2YWx1ZSA9PT0gJzEnIHx8IHZhbHVlID09PSAxIHx8IHZhbHVlID09PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgc2hvdWxkX2NoZWNrID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5kYXRhLmNoZWNrZWQgPSBzaG91bGRfY2hlY2s7XG4gICAgICAgICAgICBpZiAodGhpcy4kaWQoJ2lucHV0JykuZXhpc3RzKCkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLiRpZCgnaW5wdXQnKS5wcm9wKCdjaGVja2VkJywgc2hvdWxkX2NoZWNrKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGFzeW5jIHNlZWQoKSB7XG4gICAgICAgIC8vIFJhbmRvbWx5IGNoZWNrIG9yIHVuY2hlY2tcbiAgICAgICAgdGhpcy52YWwoTWF0aC5yYW5kb20oKSA+IDAuNSk7XG4gICAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOztBQUFBLE1BQU1BLGNBQWMsU0FBU0MsbUJBQW1CLENBQUM7RUFDN0NDLFNBQVNBLENBQUEsRUFBRztJQUNSLElBQUksQ0FBQ0MsSUFBSSxDQUFDQyxPQUFPLEdBQUcsS0FBSztJQUN6QixJQUFJLENBQUNDLGFBQWEsR0FBRyxJQUFJLENBQUNDLElBQUksQ0FBQ0QsYUFBYSxJQUFJLEdBQUc7SUFDbkQsSUFBSSxDQUFDRSxlQUFlLEdBQUcsSUFBSSxDQUFDRCxJQUFJLENBQUNDLGVBQWUsSUFBSSxHQUFHO0VBQzNEO0VBRUFDLFFBQVFBLENBQUEsRUFBRztJQUNQO0lBQ0EsTUFBTUMsTUFBTSxHQUFHLElBQUksQ0FBQ0MsR0FBRyxDQUFDLE9BQU8sQ0FBQztJQUNoQyxNQUFNQyxNQUFNLEdBQUcsSUFBSSxDQUFDRCxHQUFHLENBQUMsT0FBTyxDQUFDO0lBRWhDLElBQUlDLE1BQU0sQ0FBQ0MsTUFBTSxDQUFDLENBQUMsRUFBRTtNQUNqQixNQUFNQyxRQUFRLEdBQUdKLE1BQU0sQ0FBQ0ssSUFBSSxDQUFDLElBQUksQ0FBQztNQUNsQ0gsTUFBTSxDQUFDRyxJQUFJLENBQUMsS0FBSyxFQUFFRCxRQUFRLENBQUM7SUFDaEM7RUFDSjs7RUFFQTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0VBQ0lFLEdBQUdBLENBQUNDLEtBQUssRUFBRTtJQUNQLElBQUlDLFNBQVMsQ0FBQ0MsTUFBTSxLQUFLLENBQUMsRUFBRTtNQUN4QjtNQUNBLE1BQU1DLFVBQVUsR0FBRyxJQUFJLENBQUNULEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQ1UsSUFBSSxDQUFDLFNBQVMsQ0FBQztNQUNwRCxPQUFPRCxVQUFVLEdBQUcsSUFBSSxDQUFDZCxhQUFhLEdBQUcsSUFBSSxDQUFDRSxlQUFlO0lBQ2pFLENBQUMsTUFBTTtNQUNIO01BQ0EsSUFBSWMsWUFBWSxHQUFHLEtBQUs7TUFFeEIsSUFBSSxPQUFPTCxLQUFLLEtBQUssU0FBUyxFQUFFO1FBQzVCSyxZQUFZLEdBQUdMLEtBQUs7TUFDeEIsQ0FBQyxNQUFNLElBQUlBLEtBQUssS0FBSyxJQUFJLENBQUNYLGFBQWEsSUFBSVcsS0FBSyxLQUFLLEdBQUcsSUFBSUEsS0FBSyxLQUFLLENBQUMsSUFBSUEsS0FBSyxLQUFLLElBQUksRUFBRTtRQUN2RkssWUFBWSxHQUFHLElBQUk7TUFDdkI7TUFFQSxJQUFJLENBQUNsQixJQUFJLENBQUNDLE9BQU8sR0FBR2lCLFlBQVk7TUFDaEMsSUFBSSxJQUFJLENBQUNYLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQ0UsTUFBTSxDQUFDLENBQUMsRUFBRTtRQUM1QixJQUFJLENBQUNGLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQ1UsSUFBSSxDQUFDLFNBQVMsRUFBRUMsWUFBWSxDQUFDO01BQ25EO0lBQ0o7RUFDSjtFQUVBLE1BQU1DLElBQUlBLENBQUEsRUFBRztJQUNUO0lBQ0EsSUFBSSxDQUFDUCxHQUFHLENBQUNRLElBQUksQ0FBQ0MsTUFBTSxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUM7RUFDakM7QUFDSiIsImlnbm9yZUxpc3QiOltdfQ==

View File

@@ -0,0 +1,28 @@
"use strict";
class Frontend_Settings_Import {
static init() {
if (!$(".Frontend_Settings_Import").exists()) return;
// Initialize your component here
console.log('Frontend_Settings_Import initialized');
// Example: Handle button clicks
$('.btn-action').on('click', function () {
// Handle action
});
// Example: Initialize tooltips
$('[data-bs-toggle="tooltip"]').tooltip();
}
static on_app_ready() {
Frontend_Settings_Import.init();
}
// static on_jqhtml_ready() {
// // Called after all JQHTML components have loaded and rendered
// // Use this if you need to interact with JQHTML components
// // Otherwise, use on_app_ready() for most initialization
// }
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJGcm9udGVuZF9TZXR0aW5nc19JbXBvcnQiLCJpbml0IiwiJCIsImV4aXN0cyIsImNvbnNvbGUiLCJsb2ciLCJvbiIsInRvb2x0aXAiLCJvbl9hcHBfcmVhZHkiXSwic291cmNlcyI6WyJyc3gvYXBwL2Zyb250ZW5kL3NldHRpbmdzL2ltcG9ydC9mcm9udGVuZF9zZXR0aW5nc19pbXBvcnQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiY2xhc3MgRnJvbnRlbmRfU2V0dGluZ3NfSW1wb3J0IHtcbiAgICBzdGF0aWMgaW5pdCgpIHtcbiAgICAgICAgaWYgKCEkKFwiLkZyb250ZW5kX1NldHRpbmdzX0ltcG9ydFwiKS5leGlzdHMoKSkgcmV0dXJuO1xuXG4gICAgICAgIC8vIEluaXRpYWxpemUgeW91ciBjb21wb25lbnQgaGVyZVxuICAgICAgICBjb25zb2xlLmxvZygnRnJvbnRlbmRfU2V0dGluZ3NfSW1wb3J0IGluaXRpYWxpemVkJyk7XG5cbiAgICAgICAgLy8gRXhhbXBsZTogSGFuZGxlIGJ1dHRvbiBjbGlja3NcbiAgICAgICAgJCgnLmJ0bi1hY3Rpb24nKS5vbignY2xpY2snLCBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIC8vIEhhbmRsZSBhY3Rpb25cbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gRXhhbXBsZTogSW5pdGlhbGl6ZSB0b29sdGlwc1xuICAgICAgICAkKCdbZGF0YS1icy10b2dnbGU9XCJ0b29sdGlwXCJdJykudG9vbHRpcCgpO1xuICAgIH1cblxuICAgIHN0YXRpYyBvbl9hcHBfcmVhZHkoKSB7XG4gICAgICAgIEZyb250ZW5kX1NldHRpbmdzX0ltcG9ydC5pbml0KCk7XG4gICAgfVxuXG4gICAgLy8gc3RhdGljIG9uX2pxaHRtbF9yZWFkeSgpIHtcbiAgICAvLyAgICAgLy8gQ2FsbGVkIGFmdGVyIGFsbCBKUUhUTUwgY29tcG9uZW50cyBoYXZlIGxvYWRlZCBhbmQgcmVuZGVyZWRcbiAgICAvLyAgICAgLy8gVXNlIHRoaXMgaWYgeW91IG5lZWQgdG8gaW50ZXJhY3Qgd2l0aCBKUUhUTUwgY29tcG9uZW50c1xuICAgIC8vICAgICAvLyBPdGhlcndpc2UsIHVzZSBvbl9hcHBfcmVhZHkoKSBmb3IgbW9zdCBpbml0aWFsaXphdGlvblxuICAgIC8vIH1cbn0iXSwibWFwcGluZ3MiOiI7O0FBQUEsTUFBTUEsd0JBQXdCLENBQUM7RUFDM0IsT0FBT0MsSUFBSUEsQ0FBQSxFQUFHO0lBQ1YsSUFBSSxDQUFDQyxDQUFDLENBQUMsMkJBQTJCLENBQUMsQ0FBQ0MsTUFBTSxDQUFDLENBQUMsRUFBRTs7SUFFOUM7SUFDQUMsT0FBTyxDQUFDQyxHQUFHLENBQUMsc0NBQXNDLENBQUM7O0lBRW5EO0lBQ0FILENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQ0ksRUFBRSxDQUFDLE9BQU8sRUFBRSxZQUFXO01BQ3BDO0lBQUEsQ0FDSCxDQUFDOztJQUVGO0lBQ0FKLENBQUMsQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDSyxPQUFPLENBQUMsQ0FBQztFQUM3QztFQUVBLE9BQU9DLFlBQVlBLENBQUEsRUFBRztJQUNsQlIsd0JBQXdCLENBQUNDLElBQUksQ0FBQyxDQUFDO0VBQ25DOztFQUVBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QUFDSiIsImlnbm9yZUxpc3QiOltdfQ==

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,39 @@
"use strict";
class Input_With_Icon extends Jqhtml_Component {
on_ready() {
const $input = this.$id('input');
if (this.args.value) {
$input.val(this.args.value);
}
if (this.args.name) {
$input.attr('name', this.args.name);
}
if (this.args.disabled) {
$input.prop('disabled', true);
}
if (this.args.readonly) {
$input.prop('readonly', true);
}
if (this.args.on_change) {
$input.on('change', e => {
this.args.on_change(e.target.value);
});
}
if (this.args.on_input) {
$input.on('input', e => {
this.args.on_input(e.target.value);
});
}
}
get_value() {
return this.$id('input').val();
}
set_value(value) {
this.$id('input').val(value);
}
focus() {
this.$id('input').focus();
}
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJJbnB1dF9XaXRoX0ljb24iLCJKcWh0bWxfQ29tcG9uZW50Iiwib25fcmVhZHkiLCIkaW5wdXQiLCIkaWQiLCJhcmdzIiwidmFsdWUiLCJ2YWwiLCJuYW1lIiwiYXR0ciIsImRpc2FibGVkIiwicHJvcCIsInJlYWRvbmx5Iiwib25fY2hhbmdlIiwib24iLCJlIiwidGFyZ2V0Iiwib25faW5wdXQiLCJnZXRfdmFsdWUiLCJzZXRfdmFsdWUiLCJmb2N1cyJdLCJzb3VyY2VzIjpbInJzeC90aGVtZS9jb21wb25lbnRzL19hcmNoaXZlZC91bmZpbmlzaGVkL0lucHV0X1dpdGhfSWNvbi5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJjbGFzcyBJbnB1dF9XaXRoX0ljb24gZXh0ZW5kcyBKcWh0bWxfQ29tcG9uZW50IHtcbiAgICBvbl9yZWFkeSgpIHtcbiAgICAgICAgY29uc3QgJGlucHV0ID0gdGhpcy4kaWQoJ2lucHV0Jyk7XG5cbiAgICAgICAgaWYgKHRoaXMuYXJncy52YWx1ZSkge1xuICAgICAgICAgICAgJGlucHV0LnZhbCh0aGlzLmFyZ3MudmFsdWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuYXJncy5uYW1lKSB7XG4gICAgICAgICAgICAkaW5wdXQuYXR0cignbmFtZScsIHRoaXMuYXJncy5uYW1lKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmFyZ3MuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgICRpbnB1dC5wcm9wKCdkaXNhYmxlZCcsIHRydWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuYXJncy5yZWFkb25seSkge1xuICAgICAgICAgICAgJGlucHV0LnByb3AoJ3JlYWRvbmx5JywgdHJ1ZSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5hcmdzLm9uX2NoYW5nZSkge1xuICAgICAgICAgICAgJGlucHV0Lm9uKCdjaGFuZ2UnLCAoZSkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuYXJncy5vbl9jaGFuZ2UoZS50YXJnZXQudmFsdWUpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5hcmdzLm9uX2lucHV0KSB7XG4gICAgICAgICAgICAkaW5wdXQub24oJ2lucHV0JywgKGUpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmFyZ3Mub25faW5wdXQoZS50YXJnZXQudmFsdWUpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXRfdmFsdWUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLiRpZCgnaW5wdXQnKS52YWwoKTtcbiAgICB9XG5cbiAgICBzZXRfdmFsdWUodmFsdWUpIHtcbiAgICAgICAgdGhpcy4kaWQoJ2lucHV0JykudmFsKHZhbHVlKTtcbiAgICB9XG5cbiAgICBmb2N1cygpIHtcbiAgICAgICAgdGhpcy4kaWQoJ2lucHV0JykuZm9jdXMoKTtcbiAgICB9XG59XG4iXSwibWFwcGluZ3MiOiI7O0FBQUEsTUFBTUEsZUFBZSxTQUFTQyxnQkFBZ0IsQ0FBQztFQUMzQ0MsUUFBUUEsQ0FBQSxFQUFHO0lBQ1AsTUFBTUMsTUFBTSxHQUFHLElBQUksQ0FBQ0MsR0FBRyxDQUFDLE9BQU8sQ0FBQztJQUVoQyxJQUFJLElBQUksQ0FBQ0MsSUFBSSxDQUFDQyxLQUFLLEVBQUU7TUFDakJILE1BQU0sQ0FBQ0ksR0FBRyxDQUFDLElBQUksQ0FBQ0YsSUFBSSxDQUFDQyxLQUFLLENBQUM7SUFDL0I7SUFFQSxJQUFJLElBQUksQ0FBQ0QsSUFBSSxDQUFDRyxJQUFJLEVBQUU7TUFDaEJMLE1BQU0sQ0FBQ00sSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUNKLElBQUksQ0FBQ0csSUFBSSxDQUFDO0lBQ3ZDO0lBRUEsSUFBSSxJQUFJLENBQUNILElBQUksQ0FBQ0ssUUFBUSxFQUFFO01BQ3BCUCxNQUFNLENBQUNRLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDO0lBQ2pDO0lBRUEsSUFBSSxJQUFJLENBQUNOLElBQUksQ0FBQ08sUUFBUSxFQUFFO01BQ3BCVCxNQUFNLENBQUNRLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDO0lBQ2pDO0lBRUEsSUFBSSxJQUFJLENBQUNOLElBQUksQ0FBQ1EsU0FBUyxFQUFFO01BQ3JCVixNQUFNLENBQUNXLEVBQUUsQ0FBQyxRQUFRLEVBQUdDLENBQUMsSUFBSztRQUN2QixJQUFJLENBQUNWLElBQUksQ0FBQ1EsU0FBUyxDQUFDRSxDQUFDLENBQUNDLE1BQU0sQ0FBQ1YsS0FBSyxDQUFDO01BQ3ZDLENBQUMsQ0FBQztJQUNOO0lBRUEsSUFBSSxJQUFJLENBQUNELElBQUksQ0FBQ1ksUUFBUSxFQUFFO01BQ3BCZCxNQUFNLENBQUNXLEVBQUUsQ0FBQyxPQUFPLEVBQUdDLENBQUMsSUFBSztRQUN0QixJQUFJLENBQUNWLElBQUksQ0FBQ1ksUUFBUSxDQUFDRixDQUFDLENBQUNDLE1BQU0sQ0FBQ1YsS0FBSyxDQUFDO01BQ3RDLENBQUMsQ0FBQztJQUNOO0VBQ0o7RUFFQVksU0FBU0EsQ0FBQSxFQUFHO0lBQ1IsT0FBTyxJQUFJLENBQUNkLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQ0csR0FBRyxDQUFDLENBQUM7RUFDbEM7RUFFQVksU0FBU0EsQ0FBQ2IsS0FBSyxFQUFFO0lBQ2IsSUFBSSxDQUFDRixHQUFHLENBQUMsT0FBTyxDQUFDLENBQUNHLEdBQUcsQ0FBQ0QsS0FBSyxDQUFDO0VBQ2hDO0VBRUFjLEtBQUtBLENBQUEsRUFBRztJQUNKLElBQUksQ0FBQ2hCLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQ2dCLEtBQUssQ0FBQyxDQUFDO0VBQzdCO0FBQ0oiLCJpZ25vcmVMaXN0IjpbXX0=

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,28 @@
"use strict";
class Frontend_Tasks {
static init() {
if (!$(".Frontend_Tasks").exists()) return;
// Initialize your component here
console.log('Frontend_Tasks initialized');
// Example: Handle button clicks
$('.btn-action').on('click', function () {
// Handle action
});
// Example: Initialize tooltips
$('[data-bs-toggle="tooltip"]').tooltip();
}
static on_app_ready() {
Frontend_Tasks.init();
}
// static on_jqhtml_ready() {
// // Called after all JQHTML components have loaded and rendered
// // Use this if you need to interact with JQHTML components
// // Otherwise, use on_app_ready() for most initialization
// }
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJGcm9udGVuZF9UYXNrcyIsImluaXQiLCIkIiwiZXhpc3RzIiwiY29uc29sZSIsImxvZyIsIm9uIiwidG9vbHRpcCIsIm9uX2FwcF9yZWFkeSJdLCJzb3VyY2VzIjpbInJzeC9hcHAvZnJvbnRlbmQvdGFza3MvZnJvbnRlbmRfdGFza3MuanMiXSwic291cmNlc0NvbnRlbnQiOlsiY2xhc3MgRnJvbnRlbmRfVGFza3Mge1xuICAgIHN0YXRpYyBpbml0KCkge1xuICAgICAgICBpZiAoISQoXCIuRnJvbnRlbmRfVGFza3NcIikuZXhpc3RzKCkpIHJldHVybjtcblxuICAgICAgICAvLyBJbml0aWFsaXplIHlvdXIgY29tcG9uZW50IGhlcmVcbiAgICAgICAgY29uc29sZS5sb2coJ0Zyb250ZW5kX1Rhc2tzIGluaXRpYWxpemVkJyk7XG5cbiAgICAgICAgLy8gRXhhbXBsZTogSGFuZGxlIGJ1dHRvbiBjbGlja3NcbiAgICAgICAgJCgnLmJ0bi1hY3Rpb24nKS5vbignY2xpY2snLCBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIC8vIEhhbmRsZSBhY3Rpb25cbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gRXhhbXBsZTogSW5pdGlhbGl6ZSB0b29sdGlwc1xuICAgICAgICAkKCdbZGF0YS1icy10b2dnbGU9XCJ0b29sdGlwXCJdJykudG9vbHRpcCgpO1xuICAgIH1cblxuICAgIHN0YXRpYyBvbl9hcHBfcmVhZHkoKSB7XG4gICAgICAgIEZyb250ZW5kX1Rhc2tzLmluaXQoKTtcbiAgICB9XG5cbiAgICAvLyBzdGF0aWMgb25fanFodG1sX3JlYWR5KCkge1xuICAgIC8vICAgICAvLyBDYWxsZWQgYWZ0ZXIgYWxsIEpRSFRNTCBjb21wb25lbnRzIGhhdmUgbG9hZGVkIGFuZCByZW5kZXJlZFxuICAgIC8vICAgICAvLyBVc2UgdGhpcyBpZiB5b3UgbmVlZCB0byBpbnRlcmFjdCB3aXRoIEpRSFRNTCBjb21wb25lbnRzXG4gICAgLy8gICAgIC8vIE90aGVyd2lzZSwgdXNlIG9uX2FwcF9yZWFkeSgpIGZvciBtb3N0IGluaXRpYWxpemF0aW9uXG4gICAgLy8gfVxufSJdLCJtYXBwaW5ncyI6Ijs7QUFBQSxNQUFNQSxjQUFjLENBQUM7RUFDakIsT0FBT0MsSUFBSUEsQ0FBQSxFQUFHO0lBQ1YsSUFBSSxDQUFDQyxDQUFDLENBQUMsaUJBQWlCLENBQUMsQ0FBQ0MsTUFBTSxDQUFDLENBQUMsRUFBRTs7SUFFcEM7SUFDQUMsT0FBTyxDQUFDQyxHQUFHLENBQUMsNEJBQTRCLENBQUM7O0lBRXpDO0lBQ0FILENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQ0ksRUFBRSxDQUFDLE9BQU8sRUFBRSxZQUFXO01BQ3BDO0lBQUEsQ0FDSCxDQUFDOztJQUVGO0lBQ0FKLENBQUMsQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDSyxPQUFPLENBQUMsQ0FBQztFQUM3QztFQUVBLE9BQU9DLFlBQVlBLENBQUEsRUFBRztJQUNsQlIsY0FBYyxDQUFDQyxJQUFJLENBQUMsQ0FBQztFQUN6Qjs7RUFFQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FBQ0oiLCJpZ25vcmVMaXN0IjpbXX0=

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,20 @@
"use strict";
class Gantt_Chart extends Jqhtml_Component {
async on_load() {
if (this.args.data_source) {
const response = await fetch(this.args.data_source);
const data = await response.json();
this.data.tasks = data.tasks;
this.data.months = data.months;
} else if (this.args.tasks) {
this.data.tasks = this.args.tasks;
this.data.months = this.args.months || this.generate_months();
}
}
generate_months() {
const months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
return months;
}
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJHYW50dF9DaGFydCIsIkpxaHRtbF9Db21wb25lbnQiLCJvbl9sb2FkIiwiYXJncyIsImRhdGFfc291cmNlIiwicmVzcG9uc2UiLCJmZXRjaCIsImRhdGEiLCJqc29uIiwidGFza3MiLCJtb250aHMiLCJnZW5lcmF0ZV9tb250aHMiXSwic291cmNlcyI6WyJyc3gvdGhlbWUvY29tcG9uZW50cy9fYXJjaGl2ZWQvdW5maW5pc2hlZC9HYW50dF9DaGFydC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJjbGFzcyBHYW50dF9DaGFydCBleHRlbmRzIEpxaHRtbF9Db21wb25lbnQge1xuICAgIGFzeW5jIG9uX2xvYWQoKSB7XG4gICAgICAgIGlmICh0aGlzLmFyZ3MuZGF0YV9zb3VyY2UpIHtcbiAgICAgICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2godGhpcy5hcmdzLmRhdGFfc291cmNlKTtcbiAgICAgICAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCByZXNwb25zZS5qc29uKCk7XG4gICAgICAgICAgICB0aGlzLmRhdGEudGFza3MgPSBkYXRhLnRhc2tzO1xuICAgICAgICAgICAgdGhpcy5kYXRhLm1vbnRocyA9IGRhdGEubW9udGhzO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuYXJncy50YXNrcykge1xuICAgICAgICAgICAgdGhpcy5kYXRhLnRhc2tzID0gdGhpcy5hcmdzLnRhc2tzO1xuICAgICAgICAgICAgdGhpcy5kYXRhLm1vbnRocyA9IHRoaXMuYXJncy5tb250aHMgfHwgdGhpcy5nZW5lcmF0ZV9tb250aHMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdlbmVyYXRlX21vbnRocygpIHtcbiAgICAgICAgY29uc3QgbW9udGhzID0gWydKYW4nLCAnRmViJywgJ01hcicsICdBcHInLCAnTWF5JywgJ0p1bicsICdKdWwnLCAnQXVnJywgJ1NlcCcsICdPY3QnLCAnTm92JywgJ0RlYyddO1xuICAgICAgICByZXR1cm4gbW9udGhzO1xuICAgIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7QUFBQSxNQUFNQSxXQUFXLFNBQVNDLGdCQUFnQixDQUFDO0VBQ3ZDLE1BQU1DLE9BQU9BLENBQUEsRUFBRztJQUNaLElBQUksSUFBSSxDQUFDQyxJQUFJLENBQUNDLFdBQVcsRUFBRTtNQUN2QixNQUFNQyxRQUFRLEdBQUcsTUFBTUMsS0FBSyxDQUFDLElBQUksQ0FBQ0gsSUFBSSxDQUFDQyxXQUFXLENBQUM7TUFDbkQsTUFBTUcsSUFBSSxHQUFHLE1BQU1GLFFBQVEsQ0FBQ0csSUFBSSxDQUFDLENBQUM7TUFDbEMsSUFBSSxDQUFDRCxJQUFJLENBQUNFLEtBQUssR0FBR0YsSUFBSSxDQUFDRSxLQUFLO01BQzVCLElBQUksQ0FBQ0YsSUFBSSxDQUFDRyxNQUFNLEdBQUdILElBQUksQ0FBQ0csTUFBTTtJQUNsQyxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUNQLElBQUksQ0FBQ00sS0FBSyxFQUFFO01BQ3hCLElBQUksQ0FBQ0YsSUFBSSxDQUFDRSxLQUFLLEdBQUcsSUFBSSxDQUFDTixJQUFJLENBQUNNLEtBQUs7TUFDakMsSUFBSSxDQUFDRixJQUFJLENBQUNHLE1BQU0sR0FBRyxJQUFJLENBQUNQLElBQUksQ0FBQ08sTUFBTSxJQUFJLElBQUksQ0FBQ0MsZUFBZSxDQUFDLENBQUM7SUFDakU7RUFDSjtFQUVBQSxlQUFlQSxDQUFBLEVBQUc7SUFDZCxNQUFNRCxNQUFNLEdBQUcsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQztJQUNuRyxPQUFPQSxNQUFNO0VBQ2pCO0FBQ0oiLCJpZ25vcmVMaXN0IjpbXX0=

View File

@@ -0,0 +1,28 @@
"use strict";
class Frontend_Settings_Site_Settings {
static init() {
if (!$(".Frontend_Settings_Site_Settings").exists()) return;
// Initialize your component here
console.log('Frontend_Settings_Site_Settings initialized');
// Example: Handle button clicks
$('.btn-action').on('click', function () {
// Handle action
});
// Example: Initialize tooltips
$('[data-bs-toggle="tooltip"]').tooltip();
}
static on_app_ready() {
Frontend_Settings_Site_Settings.init();
}
// static on_jqhtml_ready() {
// // Called after all JQHTML components have loaded and rendered
// // Use this if you need to interact with JQHTML components
// // Otherwise, use on_app_ready() for most initialization
// }
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJGcm9udGVuZF9TZXR0aW5nc19TaXRlX1NldHRpbmdzIiwiaW5pdCIsIiQiLCJleGlzdHMiLCJjb25zb2xlIiwibG9nIiwib24iLCJ0b29sdGlwIiwib25fYXBwX3JlYWR5Il0sInNvdXJjZXMiOlsicnN4L2FwcC9mcm9udGVuZC9zZXR0aW5ncy9zaXRlX3NldHRpbmdzL2Zyb250ZW5kX3NldHRpbmdzX3NpdGVfc2V0dGluZ3MuanMiXSwic291cmNlc0NvbnRlbnQiOlsiY2xhc3MgRnJvbnRlbmRfU2V0dGluZ3NfU2l0ZV9TZXR0aW5ncyB7XG4gICAgc3RhdGljIGluaXQoKSB7XG4gICAgICAgIGlmICghJChcIi5Gcm9udGVuZF9TZXR0aW5nc19TaXRlX1NldHRpbmdzXCIpLmV4aXN0cygpKSByZXR1cm47XG5cbiAgICAgICAgLy8gSW5pdGlhbGl6ZSB5b3VyIGNvbXBvbmVudCBoZXJlXG4gICAgICAgIGNvbnNvbGUubG9nKCdGcm9udGVuZF9TZXR0aW5nc19TaXRlX1NldHRpbmdzIGluaXRpYWxpemVkJyk7XG5cbiAgICAgICAgLy8gRXhhbXBsZTogSGFuZGxlIGJ1dHRvbiBjbGlja3NcbiAgICAgICAgJCgnLmJ0bi1hY3Rpb24nKS5vbignY2xpY2snLCBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIC8vIEhhbmRsZSBhY3Rpb25cbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gRXhhbXBsZTogSW5pdGlhbGl6ZSB0b29sdGlwc1xuICAgICAgICAkKCdbZGF0YS1icy10b2dnbGU9XCJ0b29sdGlwXCJdJykudG9vbHRpcCgpO1xuICAgIH1cblxuICAgIHN0YXRpYyBvbl9hcHBfcmVhZHkoKSB7XG4gICAgICAgIEZyb250ZW5kX1NldHRpbmdzX1NpdGVfU2V0dGluZ3MuaW5pdCgpO1xuICAgIH1cblxuICAgIC8vIHN0YXRpYyBvbl9qcWh0bWxfcmVhZHkoKSB7XG4gICAgLy8gICAgIC8vIENhbGxlZCBhZnRlciBhbGwgSlFIVE1MIGNvbXBvbmVudHMgaGF2ZSBsb2FkZWQgYW5kIHJlbmRlcmVkXG4gICAgLy8gICAgIC8vIFVzZSB0aGlzIGlmIHlvdSBuZWVkIHRvIGludGVyYWN0IHdpdGggSlFIVE1MIGNvbXBvbmVudHNcbiAgICAvLyAgICAgLy8gT3RoZXJ3aXNlLCB1c2Ugb25fYXBwX3JlYWR5KCkgZm9yIG1vc3QgaW5pdGlhbGl6YXRpb25cbiAgICAvLyB9XG59Il0sIm1hcHBpbmdzIjoiOztBQUFBLE1BQU1BLCtCQUErQixDQUFDO0VBQ2xDLE9BQU9DLElBQUlBLENBQUEsRUFBRztJQUNWLElBQUksQ0FBQ0MsQ0FBQyxDQUFDLGtDQUFrQyxDQUFDLENBQUNDLE1BQU0sQ0FBQyxDQUFDLEVBQUU7O0lBRXJEO0lBQ0FDLE9BQU8sQ0FBQ0MsR0FBRyxDQUFDLDZDQUE2QyxDQUFDOztJQUUxRDtJQUNBSCxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUNJLEVBQUUsQ0FBQyxPQUFPLEVBQUUsWUFBVztNQUNwQztJQUFBLENBQ0gsQ0FBQzs7SUFFRjtJQUNBSixDQUFDLENBQUMsNEJBQTRCLENBQUMsQ0FBQ0ssT0FBTyxDQUFDLENBQUM7RUFDN0M7RUFFQSxPQUFPQyxZQUFZQSxDQUFBLEVBQUc7SUFDbEJSLCtCQUErQixDQUFDQyxJQUFJLENBQUMsQ0FBQztFQUMxQzs7RUFFQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FBQ0oiLCJpZ25vcmVMaXN0IjpbXX0=

View File

@@ -0,0 +1,12 @@
"use strict";
class List extends Jqhtml_Component {
on_ready() {
// Add list-group-item class to each direct child
this.$.children().each(function () {
const $element = $(this);
$element.addClass('list-group-item');
});
}
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJMaXN0IiwiSnFodG1sX0NvbXBvbmVudCIsIm9uX3JlYWR5IiwiJCIsImNoaWxkcmVuIiwiZWFjaCIsIiRlbGVtZW50IiwiYWRkQ2xhc3MiXSwic291cmNlcyI6WyJyc3gvdGhlbWUvY29tcG9uZW50cy9fYXJjaGl2ZWQvdW5maW5pc2hlZC9MaXN0LmpzIl0sInNvdXJjZXNDb250ZW50IjpbImNsYXNzIExpc3QgZXh0ZW5kcyBKcWh0bWxfQ29tcG9uZW50IHtcbiAgICBvbl9yZWFkeSgpIHtcbiAgICAgICAgLy8gQWRkIGxpc3QtZ3JvdXAtaXRlbSBjbGFzcyB0byBlYWNoIGRpcmVjdCBjaGlsZFxuICAgICAgICB0aGlzLiQuY2hpbGRyZW4oKS5lYWNoKGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgY29uc3QgJGVsZW1lbnQgPSAkKHRoaXMpO1xuICAgICAgICAgICAgJGVsZW1lbnQuYWRkQ2xhc3MoJ2xpc3QtZ3JvdXAtaXRlbScpO1xuICAgICAgICB9KTtcbiAgICB9XG59XG4iXSwibWFwcGluZ3MiOiI7O0FBQUEsTUFBTUEsSUFBSSxTQUFTQyxnQkFBZ0IsQ0FBQztFQUNoQ0MsUUFBUUEsQ0FBQSxFQUFHO0lBQ1A7SUFDQSxJQUFJLENBQUNDLENBQUMsQ0FBQ0MsUUFBUSxDQUFDLENBQUMsQ0FBQ0MsSUFBSSxDQUFDLFlBQVc7TUFDOUIsTUFBTUMsUUFBUSxHQUFHSCxDQUFDLENBQUMsSUFBSSxDQUFDO01BQ3hCRyxRQUFRLENBQUNDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQztJQUN4QyxDQUFDLENBQUM7RUFDTjtBQUNKIiwiaWdub3JlTGlzdCI6W119

View File

@@ -0,0 +1,6 @@
"use strict";
class Timestamp_Display extends Jqhtml_Component {
// Pure Bootstrap styling - no JavaScript needed
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJUaW1lc3RhbXBfRGlzcGxheSIsIkpxaHRtbF9Db21wb25lbnQiXSwic291cmNlcyI6WyJyc3gvdGhlbWUvY29tcG9uZW50cy9fYXJjaGl2ZWQvdW5maW5pc2hlZC9UaW1lc3RhbXBfRGlzcGxheS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJjbGFzcyBUaW1lc3RhbXBfRGlzcGxheSBleHRlbmRzIEpxaHRtbF9Db21wb25lbnQge1xuICAgIC8vIFB1cmUgQm9vdHN0cmFwIHN0eWxpbmcgLSBubyBKYXZhU2NyaXB0IG5lZWRlZFxufVxuIl0sIm1hcHBpbmdzIjoiOztBQUFBLE1BQU1BLGlCQUFpQixTQUFTQyxnQkFBZ0IsQ0FBQztFQUM3QztBQUFBIiwiaWdub3JlTGlzdCI6W119

View File

@@ -0,0 +1,52 @@
"use strict";
class Client_Label extends Jqhtml_Component {
on_create() {
this.data.loading = true;
this.data.client = null;
// Convert client_id to number if it's a numeric string
if (this.args.client_id) {
this.args.client_id = value_unless_numeric_string_then_numeric_value(this.args.client_id);
}
}
async on_load() {
// Load client data if we have an ID
if (this.args.client_id) {
try {
this.data.client = await Frontend_Contacts_Controller.get_client({
client_id: this.args.client_id
});
this.data.loading = false;
} catch (error) {
console.error('Failed to load client:', error);
this.data.loading = false;
}
} else {
this.data.loading = false;
}
}
/**
* Get or set the client_id
* @param {number} [client_id] - If provided, sets the client_id and reloads
* @returns {number} Current client_id when called as getter
*/
val(client_id) {
if (arguments.length === 0) {
// Getter
return this.args.client_id;
} else {
// Setter - update client_id and reload
this.args.client_id = value_unless_numeric_string_then_numeric_value(client_id);
this.data.loading = true;
this.data.client = null;
// Reload client data and re-render (on_render will update href)
this.on_load().then(() => {
this.render();
});
}
}
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJDbGllbnRfTGFiZWwiLCJKcWh0bWxfQ29tcG9uZW50Iiwib25fY3JlYXRlIiwiZGF0YSIsImxvYWRpbmciLCJjbGllbnQiLCJhcmdzIiwiY2xpZW50X2lkIiwidmFsdWVfdW5sZXNzX251bWVyaWNfc3RyaW5nX3RoZW5fbnVtZXJpY192YWx1ZSIsIm9uX2xvYWQiLCJGcm9udGVuZF9Db250YWN0c19Db250cm9sbGVyIiwiZ2V0X2NsaWVudCIsImVycm9yIiwiY29uc29sZSIsInZhbCIsImFyZ3VtZW50cyIsImxlbmd0aCIsInRoZW4iLCJyZW5kZXIiXSwic291cmNlcyI6WyJyc3gvdGhlbWUvY29tcG9uZW50cy9wYWdlX2VsZW1lbnRzL2NsaWVudF9sYWJlbC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJjbGFzcyBDbGllbnRfTGFiZWwgZXh0ZW5kcyBKcWh0bWxfQ29tcG9uZW50IHtcbiAgICBvbl9jcmVhdGUoKSB7XG4gICAgICAgIHRoaXMuZGF0YS5sb2FkaW5nID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5kYXRhLmNsaWVudCA9IG51bGw7XG5cbiAgICAgICAgLy8gQ29udmVydCBjbGllbnRfaWQgdG8gbnVtYmVyIGlmIGl0J3MgYSBudW1lcmljIHN0cmluZ1xuICAgICAgICBpZiAodGhpcy5hcmdzLmNsaWVudF9pZCkge1xuICAgICAgICAgICAgdGhpcy5hcmdzLmNsaWVudF9pZCA9IHZhbHVlX3VubGVzc19udW1lcmljX3N0cmluZ190aGVuX251bWVyaWNfdmFsdWUodGhpcy5hcmdzLmNsaWVudF9pZCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBhc3luYyBvbl9sb2FkKCkge1xuICAgICAgICAvLyBMb2FkIGNsaWVudCBkYXRhIGlmIHdlIGhhdmUgYW4gSURcbiAgICAgICAgaWYgKHRoaXMuYXJncy5jbGllbnRfaWQpIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgdGhpcy5kYXRhLmNsaWVudCA9IGF3YWl0IEZyb250ZW5kX0NvbnRhY3RzX0NvbnRyb2xsZXIuZ2V0X2NsaWVudCh7XG4gICAgICAgICAgICAgICAgICAgIGNsaWVudF9pZDogdGhpcy5hcmdzLmNsaWVudF9pZCxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB0aGlzLmRhdGEubG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdGYWlsZWQgdG8gbG9hZCBjbGllbnQ6JywgZXJyb3IpO1xuICAgICAgICAgICAgICAgIHRoaXMuZGF0YS5sb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmRhdGEubG9hZGluZyA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0IG9yIHNldCB0aGUgY2xpZW50X2lkXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtjbGllbnRfaWRdIC0gSWYgcHJvdmlkZWQsIHNldHMgdGhlIGNsaWVudF9pZCBhbmQgcmVsb2Fkc1xuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IEN1cnJlbnQgY2xpZW50X2lkIHdoZW4gY2FsbGVkIGFzIGdldHRlclxuICAgICAqL1xuICAgIHZhbChjbGllbnRfaWQpIHtcbiAgICAgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIC8vIEdldHRlclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuYXJncy5jbGllbnRfaWQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBTZXR0ZXIgLSB1cGRhdGUgY2xpZW50X2lkIGFuZCByZWxvYWRcbiAgICAgICAgICAgIHRoaXMuYXJncy5jbGllbnRfaWQgPSB2YWx1ZV91bmxlc3NfbnVtZXJpY19zdHJpbmdfdGhlbl9udW1lcmljX3ZhbHVlKGNsaWVudF9pZCk7XG4gICAgICAgICAgICB0aGlzLmRhdGEubG9hZGluZyA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLmRhdGEuY2xpZW50ID0gbnVsbDtcblxuICAgICAgICAgICAgLy8gUmVsb2FkIGNsaWVudCBkYXRhIGFuZCByZS1yZW5kZXIgKG9uX3JlbmRlciB3aWxsIHVwZGF0ZSBocmVmKVxuICAgICAgICAgICAgdGhpcy5vbl9sb2FkKCkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZW5kZXIoKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOztBQUFBLE1BQU1BLFlBQVksU0FBU0MsZ0JBQWdCLENBQUM7RUFDeENDLFNBQVNBLENBQUEsRUFBRztJQUNSLElBQUksQ0FBQ0MsSUFBSSxDQUFDQyxPQUFPLEdBQUcsSUFBSTtJQUN4QixJQUFJLENBQUNELElBQUksQ0FBQ0UsTUFBTSxHQUFHLElBQUk7O0lBRXZCO0lBQ0EsSUFBSSxJQUFJLENBQUNDLElBQUksQ0FBQ0MsU0FBUyxFQUFFO01BQ3JCLElBQUksQ0FBQ0QsSUFBSSxDQUFDQyxTQUFTLEdBQUdDLDhDQUE4QyxDQUFDLElBQUksQ0FBQ0YsSUFBSSxDQUFDQyxTQUFTLENBQUM7SUFDN0Y7RUFDSjtFQUVBLE1BQU1FLE9BQU9BLENBQUEsRUFBRztJQUNaO0lBQ0EsSUFBSSxJQUFJLENBQUNILElBQUksQ0FBQ0MsU0FBUyxFQUFFO01BQ3JCLElBQUk7UUFDQSxJQUFJLENBQUNKLElBQUksQ0FBQ0UsTUFBTSxHQUFHLE1BQU1LLDRCQUE0QixDQUFDQyxVQUFVLENBQUM7VUFDN0RKLFNBQVMsRUFBRSxJQUFJLENBQUNELElBQUksQ0FBQ0M7UUFDekIsQ0FBQyxDQUFDO1FBQ0YsSUFBSSxDQUFDSixJQUFJLENBQUNDLE9BQU8sR0FBRyxLQUFLO01BQzdCLENBQUMsQ0FBQyxPQUFPUSxLQUFLLEVBQUU7UUFDWkMsT0FBTyxDQUFDRCxLQUFLLENBQUMsd0JBQXdCLEVBQUVBLEtBQUssQ0FBQztRQUM5QyxJQUFJLENBQUNULElBQUksQ0FBQ0MsT0FBTyxHQUFHLEtBQUs7TUFDN0I7SUFDSixDQUFDLE1BQU07TUFDSCxJQUFJLENBQUNELElBQUksQ0FBQ0MsT0FBTyxHQUFHLEtBQUs7SUFDN0I7RUFDSjs7RUFFQTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0VBQ0lVLEdBQUdBLENBQUNQLFNBQVMsRUFBRTtJQUNYLElBQUlRLFNBQVMsQ0FBQ0MsTUFBTSxLQUFLLENBQUMsRUFBRTtNQUN4QjtNQUNBLE9BQU8sSUFBSSxDQUFDVixJQUFJLENBQUNDLFNBQVM7SUFDOUIsQ0FBQyxNQUFNO01BQ0g7TUFDQSxJQUFJLENBQUNELElBQUksQ0FBQ0MsU0FBUyxHQUFHQyw4Q0FBOEMsQ0FBQ0QsU0FBUyxDQUFDO01BQy9FLElBQUksQ0FBQ0osSUFBSSxDQUFDQyxPQUFPLEdBQUcsSUFBSTtNQUN4QixJQUFJLENBQUNELElBQUksQ0FBQ0UsTUFBTSxHQUFHLElBQUk7O01BRXZCO01BQ0EsSUFBSSxDQUFDSSxPQUFPLENBQUMsQ0FBQyxDQUFDUSxJQUFJLENBQUMsTUFBTTtRQUN0QixJQUFJLENBQUNDLE1BQU0sQ0FBQyxDQUFDO01BQ2pCLENBQUMsQ0FBQztJQUNOO0VBQ0o7QUFDSiIsImlnbm9yZUxpc3QiOltdfQ==

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,28 @@
"use strict";
class Frontend_Calendar {
static init() {
if (!$(".Frontend_Calendar").exists()) return;
// Initialize your component here
console.log('Frontend_Calendar initialized');
// Example: Handle button clicks
$('.btn-action').on('click', function () {
// Handle action
});
// Example: Initialize tooltips
$('[data-bs-toggle="tooltip"]').tooltip();
}
static on_app_ready() {
Frontend_Calendar.init();
}
// static on_jqhtml_ready() {
// // Called after all JQHTML components have loaded and rendered
// // Use this if you need to interact with JQHTML components
// // Otherwise, use on_app_ready() for most initialization
// }
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJGcm9udGVuZF9DYWxlbmRhciIsImluaXQiLCIkIiwiZXhpc3RzIiwiY29uc29sZSIsImxvZyIsIm9uIiwidG9vbHRpcCIsIm9uX2FwcF9yZWFkeSJdLCJzb3VyY2VzIjpbInJzeC9hcHAvZnJvbnRlbmQvY2FsZW5kYXIvZnJvbnRlbmRfY2FsZW5kYXIuanMiXSwic291cmNlc0NvbnRlbnQiOlsiY2xhc3MgRnJvbnRlbmRfQ2FsZW5kYXIge1xuICAgIHN0YXRpYyBpbml0KCkge1xuICAgICAgICBpZiAoISQoXCIuRnJvbnRlbmRfQ2FsZW5kYXJcIikuZXhpc3RzKCkpIHJldHVybjtcblxuICAgICAgICAvLyBJbml0aWFsaXplIHlvdXIgY29tcG9uZW50IGhlcmVcbiAgICAgICAgY29uc29sZS5sb2coJ0Zyb250ZW5kX0NhbGVuZGFyIGluaXRpYWxpemVkJyk7XG5cbiAgICAgICAgLy8gRXhhbXBsZTogSGFuZGxlIGJ1dHRvbiBjbGlja3NcbiAgICAgICAgJCgnLmJ0bi1hY3Rpb24nKS5vbignY2xpY2snLCBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIC8vIEhhbmRsZSBhY3Rpb25cbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gRXhhbXBsZTogSW5pdGlhbGl6ZSB0b29sdGlwc1xuICAgICAgICAkKCdbZGF0YS1icy10b2dnbGU9XCJ0b29sdGlwXCJdJykudG9vbHRpcCgpO1xuICAgIH1cblxuICAgIHN0YXRpYyBvbl9hcHBfcmVhZHkoKSB7XG4gICAgICAgIEZyb250ZW5kX0NhbGVuZGFyLmluaXQoKTtcbiAgICB9XG5cbiAgICAvLyBzdGF0aWMgb25fanFodG1sX3JlYWR5KCkge1xuICAgIC8vICAgICAvLyBDYWxsZWQgYWZ0ZXIgYWxsIEpRSFRNTCBjb21wb25lbnRzIGhhdmUgbG9hZGVkIGFuZCByZW5kZXJlZFxuICAgIC8vICAgICAvLyBVc2UgdGhpcyBpZiB5b3UgbmVlZCB0byBpbnRlcmFjdCB3aXRoIEpRSFRNTCBjb21wb25lbnRzXG4gICAgLy8gICAgIC8vIE90aGVyd2lzZSwgdXNlIG9uX2FwcF9yZWFkeSgpIGZvciBtb3N0IGluaXRpYWxpemF0aW9uXG4gICAgLy8gfVxufSJdLCJtYXBwaW5ncyI6Ijs7QUFBQSxNQUFNQSxpQkFBaUIsQ0FBQztFQUNwQixPQUFPQyxJQUFJQSxDQUFBLEVBQUc7SUFDVixJQUFJLENBQUNDLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDQyxNQUFNLENBQUMsQ0FBQyxFQUFFOztJQUV2QztJQUNBQyxPQUFPLENBQUNDLEdBQUcsQ0FBQywrQkFBK0IsQ0FBQzs7SUFFNUM7SUFDQUgsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDSSxFQUFFLENBQUMsT0FBTyxFQUFFLFlBQVc7TUFDcEM7SUFBQSxDQUNILENBQUM7O0lBRUY7SUFDQUosQ0FBQyxDQUFDLDRCQUE0QixDQUFDLENBQUNLLE9BQU8sQ0FBQyxDQUFDO0VBQzdDO0VBRUEsT0FBT0MsWUFBWUEsQ0FBQSxFQUFHO0lBQ2xCUixpQkFBaUIsQ0FBQ0MsSUFBSSxDQUFDLENBQUM7RUFDNUI7O0VBRUE7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBQUNKIiwiaWdub3JlTGlzdCI6W119

View File

@@ -0,0 +1,28 @@
"use strict";
class Frontend_Settings_Audit {
static init() {
if (!$(".Frontend_Settings_Audit").exists()) return;
// Initialize your component here
console.log('Frontend_Settings_Audit initialized');
// Example: Handle button clicks
$('.btn-action').on('click', function () {
// Handle action
});
// Example: Initialize tooltips
$('[data-bs-toggle="tooltip"]').tooltip();
}
static on_app_ready() {
Frontend_Settings_Audit.init();
}
// static on_jqhtml_ready() {
// // Called after all JQHTML components have loaded and rendered
// // Use this if you need to interact with JQHTML components
// // Otherwise, use on_app_ready() for most initialization
// }
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJGcm9udGVuZF9TZXR0aW5nc19BdWRpdCIsImluaXQiLCIkIiwiZXhpc3RzIiwiY29uc29sZSIsImxvZyIsIm9uIiwidG9vbHRpcCIsIm9uX2FwcF9yZWFkeSJdLCJzb3VyY2VzIjpbInJzeC9hcHAvZnJvbnRlbmQvc2V0dGluZ3MvYXVkaXQvZnJvbnRlbmRfc2V0dGluZ3NfYXVkaXQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiY2xhc3MgRnJvbnRlbmRfU2V0dGluZ3NfQXVkaXQge1xuICAgIHN0YXRpYyBpbml0KCkge1xuICAgICAgICBpZiAoISQoXCIuRnJvbnRlbmRfU2V0dGluZ3NfQXVkaXRcIikuZXhpc3RzKCkpIHJldHVybjtcblxuICAgICAgICAvLyBJbml0aWFsaXplIHlvdXIgY29tcG9uZW50IGhlcmVcbiAgICAgICAgY29uc29sZS5sb2coJ0Zyb250ZW5kX1NldHRpbmdzX0F1ZGl0IGluaXRpYWxpemVkJyk7XG5cbiAgICAgICAgLy8gRXhhbXBsZTogSGFuZGxlIGJ1dHRvbiBjbGlja3NcbiAgICAgICAgJCgnLmJ0bi1hY3Rpb24nKS5vbignY2xpY2snLCBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIC8vIEhhbmRsZSBhY3Rpb25cbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gRXhhbXBsZTogSW5pdGlhbGl6ZSB0b29sdGlwc1xuICAgICAgICAkKCdbZGF0YS1icy10b2dnbGU9XCJ0b29sdGlwXCJdJykudG9vbHRpcCgpO1xuICAgIH1cblxuICAgIHN0YXRpYyBvbl9hcHBfcmVhZHkoKSB7XG4gICAgICAgIEZyb250ZW5kX1NldHRpbmdzX0F1ZGl0LmluaXQoKTtcbiAgICB9XG5cbiAgICAvLyBzdGF0aWMgb25fanFodG1sX3JlYWR5KCkge1xuICAgIC8vICAgICAvLyBDYWxsZWQgYWZ0ZXIgYWxsIEpRSFRNTCBjb21wb25lbnRzIGhhdmUgbG9hZGVkIGFuZCByZW5kZXJlZFxuICAgIC8vICAgICAvLyBVc2UgdGhpcyBpZiB5b3UgbmVlZCB0byBpbnRlcmFjdCB3aXRoIEpRSFRNTCBjb21wb25lbnRzXG4gICAgLy8gICAgIC8vIE90aGVyd2lzZSwgdXNlIG9uX2FwcF9yZWFkeSgpIGZvciBtb3N0IGluaXRpYWxpemF0aW9uXG4gICAgLy8gfVxufSJdLCJtYXBwaW5ncyI6Ijs7QUFBQSxNQUFNQSx1QkFBdUIsQ0FBQztFQUMxQixPQUFPQyxJQUFJQSxDQUFBLEVBQUc7SUFDVixJQUFJLENBQUNDLENBQUMsQ0FBQywwQkFBMEIsQ0FBQyxDQUFDQyxNQUFNLENBQUMsQ0FBQyxFQUFFOztJQUU3QztJQUNBQyxPQUFPLENBQUNDLEdBQUcsQ0FBQyxxQ0FBcUMsQ0FBQzs7SUFFbEQ7SUFDQUgsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDSSxFQUFFLENBQUMsT0FBTyxFQUFFLFlBQVc7TUFDcEM7SUFBQSxDQUNILENBQUM7O0lBRUY7SUFDQUosQ0FBQyxDQUFDLDRCQUE0QixDQUFDLENBQUNLLE9BQU8sQ0FBQyxDQUFDO0VBQzdDO0VBRUEsT0FBT0MsWUFBWUEsQ0FBQSxFQUFHO0lBQ2xCUix1QkFBdUIsQ0FBQ0MsSUFBSSxDQUFDLENBQUM7RUFDbEM7O0VBRUE7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBQUNKIiwiaWdub3JlTGlzdCI6W119

View File

@@ -0,0 +1,12 @@
"use strict";
/**
* Users_DataGrid Component
*
* Concrete implementation for clients datagrid.
* All functionality is in DataGrid_Abstract.
*/
class Users_DataGrid extends DataGrid_Abstract {
// All behavior inherited from DataGrid_Abstract
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJVc2Vyc19EYXRhR3JpZCIsIkRhdGFHcmlkX0Fic3RyYWN0Il0sInNvdXJjZXMiOlsicnN4L2FwcC9mcm9udGVuZC9zZXR0aW5ncy91c2VyX21hbmFnZW1lbnQvdXNlcnNfZGF0YWdyaWQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqIFVzZXJzX0RhdGFHcmlkIENvbXBvbmVudFxyXG4gKlxyXG4gKiBDb25jcmV0ZSBpbXBsZW1lbnRhdGlvbiBmb3IgY2xpZW50cyBkYXRhZ3JpZC5cclxuICogQWxsIGZ1bmN0aW9uYWxpdHkgaXMgaW4gRGF0YUdyaWRfQWJzdHJhY3QuXHJcbiAqL1xyXG5jbGFzcyBVc2Vyc19EYXRhR3JpZCBleHRlbmRzIERhdGFHcmlkX0Fic3RyYWN0IHtcclxuICAgIC8vIEFsbCBiZWhhdmlvciBpbmhlcml0ZWQgZnJvbSBEYXRhR3JpZF9BYnN0cmFjdFxyXG59XHJcbiJdLCJtYXBwaW5ncyI6Ijs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNQSxjQUFjLFNBQVNDLGlCQUFpQixDQUFDO0VBQzNDO0FBQUEiLCJpZ25vcmVMaXN0IjpbXX0=

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,52 @@
"use strict";
/**
* Form_Row_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_Row_Component extends Jqhtml_Component {
/**
* Called after render, quick UI setup (bottom-up)
* Use for: Initial state, event bindings, showing loading indicators
*/
async on_create() {
// Example: this.$id('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.$id('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.$id('inner_html').hide();
this.$id('hello_world').show();
}
// For more information: php artisan rsx:man jqhtml
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJGb3JtX1Jvd19Db21wb25lbnQiLCJKcWh0bWxfQ29tcG9uZW50Iiwib25fY3JlYXRlIiwib25fbG9hZCIsIm9uX3JlYWR5Iiwib25fY2xpY2tfaGVsbG8iLCIkaWQiLCJoaWRlIiwic2hvdyJdLCJzb3VyY2VzIjpbInJzeC90aGVtZS9jb21wb25lbnRzL19hcmNoaXZlZC91bmZpbmlzaGVkL2Zvcm1fcm93X2NvbXBvbmVudC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEZvcm1fUm93X0NvbXBvbmVudCAtIEpRSFRNTCBDb21wb25lbnRcbiAqXG4gKiBMaWZlY3ljbGUgbWV0aG9kcyBhcmUgY2FsbGVkIGluIHRoaXMgb3JkZXI6XG4gKiAxLiBvbl9jcmVhdGUoKSAtIFF1aWNrIFVJIHNldHVwLCBydW5zIGJvdHRvbS11cCB0aHJvdWdoIGNvbXBvbmVudCB0cmVlXG4gKiAyLiBvbl9sb2FkKCkgLSBGZXRjaCBkYXRhIGZyb20gQVBJcyAocGFyYWxsZWwgZXhlY3V0aW9uLCBubyBET00gbW9kaWZpY2F0aW9ucylcbiAqIDMuIG9uX3JlYWR5KCkgLSBDb21wb25lbnQgZnVsbHkgaW5pdGlhbGl6ZWQsIHJ1bnMgYm90dG9tLXVwIHRocm91Z2ggY29tcG9uZW50IHRyZWVcbiAqL1xuY2xhc3MgRm9ybV9Sb3dfQ29tcG9uZW50IGV4dGVuZHMgSnFodG1sX0NvbXBvbmVudCB7XG4gICAgLyoqXG4gICAgICogQ2FsbGVkIGFmdGVyIHJlbmRlciwgcXVpY2sgVUkgc2V0dXAgKGJvdHRvbS11cClcbiAgICAgKiBVc2UgZm9yOiBJbml0aWFsIHN0YXRlLCBldmVudCBiaW5kaW5ncywgc2hvd2luZyBsb2FkaW5nIGluZGljYXRvcnNcbiAgICAgKi9cbiAgICBhc3luYyBvbl9jcmVhdGUoKSB7XG4gICAgICAgIC8vIEV4YW1wbGU6IHRoaXMuJGlkKCdsb2FkaW5nJykuc2hvdygpO1xuICAgICAgICAvLyBFeGFtcGxlOiB0aGlzLiQuYWRkQ2xhc3MoJ2luaXRpYWxpemluZycpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEZldGNoIGRhdGEgZnJvbSBBUElzIChwYXJhbGxlbCwgTk8gRE9NIG1vZGlmaWNhdGlvbnMpXG4gICAgICogVXNlIGZvcjogTG9hZGluZyBkYXRhIGZyb20gc2VydmVyLCBmZXRjaGluZyBjb25maWd1cmF0aW9uc1xuICAgICAqIFdBUk5JTkc6IERvIE5PVCBtb2RpZnkgRE9NIGhlcmUgLSBvbmx5IGxvYWQgZGF0YVxuICAgICAqL1xuICAgIGFzeW5jIG9uX2xvYWQoKSB7XG4gICAgICAgIC8vIEV4YW1wbGU6IHRoaXMuZGF0YS51c2VycyA9IGF3YWl0IFVzZXJzX0NvbnRyb2xsZXIuZ2V0X3VzZXJzX2FwaSgpO1xuICAgICAgICAvLyBFeGFtcGxlOiB0aGlzLmRhdGEuY29uZmlnID0gYXdhaXQgdGhpcy5sb2FkX2NvbmZpZygpO1xuICAgICAgICAvLyBXQVJOSU5HOiBEbyBOT1QgbW9kaWZ5IERPTSBoZXJlIC0gb25seSBsb2FkIGRhdGFcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb21wb25lbnQgZnVsbHkgaW5pdGlhbGl6ZWQgKGJvdHRvbS11cClcbiAgICAgKiBVc2UgZm9yOiBGaW5hbCBVSSBzZXR1cCwgaGlkaW5nIGxvYWRpbmcgaW5kaWNhdG9ycywgc3RhcnRpbmcgYW5pbWF0aW9uc1xuICAgICAqL1xuICAgIGFzeW5jIG9uX3JlYWR5KCkge1xuICAgICAgICAvLyBFeGFtcGxlOiB0aGlzLiRpZCgnbG9hZGluZycpLmhpZGUoKTtcbiAgICAgICAgLy8gRXhhbXBsZTogdGhpcy5zZXR1cF9ldmVudF9saXN0ZW5lcnMoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDbGljayBoYW5kbGVyIGZvciB0aGUgaGVsbG8gYnV0dG9uXG4gICAgICogUmVmZXJlbmNlZCBpbiB0ZW1wbGF0ZSB2aWEgQGNsaWNrPXRoaXMub25fY2xpY2tfaGVsbG9cbiAgICAgKi9cbiAgICBvbl9jbGlja19oZWxsbygpIHtcbiAgICAgICAgdGhpcy4kaWQoJ2lubmVyX2h0bWwnKS5oaWRlKCk7XG4gICAgICAgIHRoaXMuJGlkKCdoZWxsb193b3JsZCcpLnNob3coKTtcbiAgICB9XG5cbiAgICAvLyBGb3IgbW9yZSBpbmZvcm1hdGlvbjogcGhwIGFydGlzYW4gcnN4Om1hbiBqcWh0bWxcbn0iXSwibWFwcGluZ3MiOiI7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU1BLGtCQUFrQixTQUFTQyxnQkFBZ0IsQ0FBQztFQUM5QztBQUNKO0FBQ0E7QUFDQTtFQUNJLE1BQU1DLFNBQVNBLENBQUEsRUFBRztJQUNkO0lBQ0E7RUFBQTs7RUFHSjtBQUNKO0FBQ0E7QUFDQTtBQUNBO0VBQ0ksTUFBTUMsT0FBT0EsQ0FBQSxFQUFHO0lBQ1o7SUFDQTtJQUNBO0VBQUE7O0VBR0o7QUFDSjtBQUNBO0FBQ0E7RUFDSSxNQUFNQyxRQUFRQSxDQUFBLEVBQUc7SUFDYjtJQUNBO0VBQUE7O0VBR0o7QUFDSjtBQUNBO0FBQ0E7RUFDSUMsY0FBY0EsQ0FBQSxFQUFHO0lBQ2IsSUFBSSxDQUFDQyxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUNDLElBQUksQ0FBQyxDQUFDO0lBQzdCLElBQUksQ0FBQ0QsR0FBRyxDQUFDLGFBQWEsQ0FBQyxDQUFDRSxJQUFJLENBQUMsQ0FBQztFQUNsQzs7RUFFQTtBQUNKIiwiaWdub3JlTGlzdCI6W119

View File

@@ -0,0 +1,20 @@
"use strict";
class Popover extends Jqhtml_Component {
on_ready() {
// Set popover content from args
if (this.args.title) {
this.$.attr('data-bs-title', this.args.title);
}
if (this.args.content) {
this.$.attr('data-bs-content', this.args.content);
}
// Set trigger (hover, click, focus)
this.$.attr('data-bs-trigger', this.args.trigger || 'click');
// Initialize Bootstrap popover
new bootstrap.Popover(this.$[0]);
}
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJQb3BvdmVyIiwiSnFodG1sX0NvbXBvbmVudCIsIm9uX3JlYWR5IiwiYXJncyIsInRpdGxlIiwiJCIsImF0dHIiLCJjb250ZW50IiwidHJpZ2dlciIsImJvb3RzdHJhcCJdLCJzb3VyY2VzIjpbInJzeC90aGVtZS9jb21wb25lbnRzL19hcmNoaXZlZC91bmZpbmlzaGVkL1BvcG92ZXIuanMiXSwic291cmNlc0NvbnRlbnQiOlsiY2xhc3MgUG9wb3ZlciBleHRlbmRzIEpxaHRtbF9Db21wb25lbnQge1xuICAgIG9uX3JlYWR5KCkge1xuICAgICAgICAvLyBTZXQgcG9wb3ZlciBjb250ZW50IGZyb20gYXJnc1xuICAgICAgICBpZiAodGhpcy5hcmdzLnRpdGxlKSB7XG4gICAgICAgICAgICB0aGlzLiQuYXR0cignZGF0YS1icy10aXRsZScsIHRoaXMuYXJncy50aXRsZSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5hcmdzLmNvbnRlbnQpIHtcbiAgICAgICAgICAgIHRoaXMuJC5hdHRyKCdkYXRhLWJzLWNvbnRlbnQnLCB0aGlzLmFyZ3MuY29udGVudCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBTZXQgdHJpZ2dlciAoaG92ZXIsIGNsaWNrLCBmb2N1cylcbiAgICAgICAgdGhpcy4kLmF0dHIoJ2RhdGEtYnMtdHJpZ2dlcicsIHRoaXMuYXJncy50cmlnZ2VyIHx8ICdjbGljaycpO1xuXG4gICAgICAgIC8vIEluaXRpYWxpemUgQm9vdHN0cmFwIHBvcG92ZXJcbiAgICAgICAgbmV3IGJvb3RzdHJhcC5Qb3BvdmVyKHRoaXMuJFswXSk7XG4gICAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOztBQUFBLE1BQU1BLE9BQU8sU0FBU0MsZ0JBQWdCLENBQUM7RUFDbkNDLFFBQVFBLENBQUEsRUFBRztJQUNQO0lBQ0EsSUFBSSxJQUFJLENBQUNDLElBQUksQ0FBQ0MsS0FBSyxFQUFFO01BQ2pCLElBQUksQ0FBQ0MsQ0FBQyxDQUFDQyxJQUFJLENBQUMsZUFBZSxFQUFFLElBQUksQ0FBQ0gsSUFBSSxDQUFDQyxLQUFLLENBQUM7SUFDakQ7SUFFQSxJQUFJLElBQUksQ0FBQ0QsSUFBSSxDQUFDSSxPQUFPLEVBQUU7TUFDbkIsSUFBSSxDQUFDRixDQUFDLENBQUNDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxJQUFJLENBQUNILElBQUksQ0FBQ0ksT0FBTyxDQUFDO0lBQ3JEOztJQUVBO0lBQ0EsSUFBSSxDQUFDRixDQUFDLENBQUNDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxJQUFJLENBQUNILElBQUksQ0FBQ0ssT0FBTyxJQUFJLE9BQU8sQ0FBQzs7SUFFNUQ7SUFDQSxJQUFJQyxTQUFTLENBQUNULE9BQU8sQ0FBQyxJQUFJLENBQUNLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztFQUNwQztBQUNKIiwiaWdub3JlTGlzdCI6W119

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,28 @@
"use strict";
class Frontend_Settings_Notifications {
static init() {
if (!$(".Frontend_Settings_Notifications").exists()) return;
// Initialize your component here
console.log('Frontend_Settings_Notifications initialized');
// Example: Handle button clicks
$('.btn-action').on('click', function () {
// Handle action
});
// Example: Initialize tooltips
$('[data-bs-toggle="tooltip"]').tooltip();
}
static on_app_ready() {
Frontend_Settings_Notifications.init();
}
// static on_jqhtml_ready() {
// // Called after all JQHTML components have loaded and rendered
// // Use this if you need to interact with JQHTML components
// // Otherwise, use on_app_ready() for most initialization
// }
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJGcm9udGVuZF9TZXR0aW5nc19Ob3RpZmljYXRpb25zIiwiaW5pdCIsIiQiLCJleGlzdHMiLCJjb25zb2xlIiwibG9nIiwib24iLCJ0b29sdGlwIiwib25fYXBwX3JlYWR5Il0sInNvdXJjZXMiOlsicnN4L2FwcC9mcm9udGVuZC9zZXR0aW5ncy9ub3RpZmljYXRpb25zL2Zyb250ZW5kX3NldHRpbmdzX25vdGlmaWNhdGlvbnMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiY2xhc3MgRnJvbnRlbmRfU2V0dGluZ3NfTm90aWZpY2F0aW9ucyB7XG4gICAgc3RhdGljIGluaXQoKSB7XG4gICAgICAgIGlmICghJChcIi5Gcm9udGVuZF9TZXR0aW5nc19Ob3RpZmljYXRpb25zXCIpLmV4aXN0cygpKSByZXR1cm47XG5cbiAgICAgICAgLy8gSW5pdGlhbGl6ZSB5b3VyIGNvbXBvbmVudCBoZXJlXG4gICAgICAgIGNvbnNvbGUubG9nKCdGcm9udGVuZF9TZXR0aW5nc19Ob3RpZmljYXRpb25zIGluaXRpYWxpemVkJyk7XG5cbiAgICAgICAgLy8gRXhhbXBsZTogSGFuZGxlIGJ1dHRvbiBjbGlja3NcbiAgICAgICAgJCgnLmJ0bi1hY3Rpb24nKS5vbignY2xpY2snLCBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIC8vIEhhbmRsZSBhY3Rpb25cbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gRXhhbXBsZTogSW5pdGlhbGl6ZSB0b29sdGlwc1xuICAgICAgICAkKCdbZGF0YS1icy10b2dnbGU9XCJ0b29sdGlwXCJdJykudG9vbHRpcCgpO1xuICAgIH1cblxuICAgIHN0YXRpYyBvbl9hcHBfcmVhZHkoKSB7XG4gICAgICAgIEZyb250ZW5kX1NldHRpbmdzX05vdGlmaWNhdGlvbnMuaW5pdCgpO1xuICAgIH1cblxuICAgIC8vIHN0YXRpYyBvbl9qcWh0bWxfcmVhZHkoKSB7XG4gICAgLy8gICAgIC8vIENhbGxlZCBhZnRlciBhbGwgSlFIVE1MIGNvbXBvbmVudHMgaGF2ZSBsb2FkZWQgYW5kIHJlbmRlcmVkXG4gICAgLy8gICAgIC8vIFVzZSB0aGlzIGlmIHlvdSBuZWVkIHRvIGludGVyYWN0IHdpdGggSlFIVE1MIGNvbXBvbmVudHNcbiAgICAvLyAgICAgLy8gT3RoZXJ3aXNlLCB1c2Ugb25fYXBwX3JlYWR5KCkgZm9yIG1vc3QgaW5pdGlhbGl6YXRpb25cbiAgICAvLyB9XG59Il0sIm1hcHBpbmdzIjoiOztBQUFBLE1BQU1BLCtCQUErQixDQUFDO0VBQ2xDLE9BQU9DLElBQUlBLENBQUEsRUFBRztJQUNWLElBQUksQ0FBQ0MsQ0FBQyxDQUFDLGtDQUFrQyxDQUFDLENBQUNDLE1BQU0sQ0FBQyxDQUFDLEVBQUU7O0lBRXJEO0lBQ0FDLE9BQU8sQ0FBQ0MsR0FBRyxDQUFDLDZDQUE2QyxDQUFDOztJQUUxRDtJQUNBSCxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUNJLEVBQUUsQ0FBQyxPQUFPLEVBQUUsWUFBVztNQUNwQztJQUFBLENBQ0gsQ0FBQzs7SUFFRjtJQUNBSixDQUFDLENBQUMsNEJBQTRCLENBQUMsQ0FBQ0ssT0FBTyxDQUFDLENBQUM7RUFDN0M7RUFFQSxPQUFPQyxZQUFZQSxDQUFBLEVBQUc7SUFDbEJSLCtCQUErQixDQUFDQyxJQUFJLENBQUMsQ0FBQztFQUMxQzs7RUFFQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FBQ0oiLCJpZ25vcmVMaXN0IjpbXX0=

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,28 @@
"use strict";
class Frontend_Settings_Templates {
static init() {
if (!$(".Frontend_Settings_Templates").exists()) return;
// Initialize your component here
console.log('Frontend_Settings_Templates initialized');
// Example: Handle button clicks
$('.btn-action').on('click', function () {
// Handle action
});
// Example: Initialize tooltips
$('[data-bs-toggle="tooltip"]').tooltip();
}
static on_app_ready() {
Frontend_Settings_Templates.init();
}
// static on_jqhtml_ready() {
// // Called after all JQHTML components have loaded and rendered
// // Use this if you need to interact with JQHTML components
// // Otherwise, use on_app_ready() for most initialization
// }
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJGcm9udGVuZF9TZXR0aW5nc19UZW1wbGF0ZXMiLCJpbml0IiwiJCIsImV4aXN0cyIsImNvbnNvbGUiLCJsb2ciLCJvbiIsInRvb2x0aXAiLCJvbl9hcHBfcmVhZHkiXSwic291cmNlcyI6WyJyc3gvYXBwL2Zyb250ZW5kL3NldHRpbmdzL3RlbXBsYXRlcy9mcm9udGVuZF9zZXR0aW5nc190ZW1wbGF0ZXMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiY2xhc3MgRnJvbnRlbmRfU2V0dGluZ3NfVGVtcGxhdGVzIHtcbiAgICBzdGF0aWMgaW5pdCgpIHtcbiAgICAgICAgaWYgKCEkKFwiLkZyb250ZW5kX1NldHRpbmdzX1RlbXBsYXRlc1wiKS5leGlzdHMoKSkgcmV0dXJuO1xuXG4gICAgICAgIC8vIEluaXRpYWxpemUgeW91ciBjb21wb25lbnQgaGVyZVxuICAgICAgICBjb25zb2xlLmxvZygnRnJvbnRlbmRfU2V0dGluZ3NfVGVtcGxhdGVzIGluaXRpYWxpemVkJyk7XG5cbiAgICAgICAgLy8gRXhhbXBsZTogSGFuZGxlIGJ1dHRvbiBjbGlja3NcbiAgICAgICAgJCgnLmJ0bi1hY3Rpb24nKS5vbignY2xpY2snLCBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIC8vIEhhbmRsZSBhY3Rpb25cbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gRXhhbXBsZTogSW5pdGlhbGl6ZSB0b29sdGlwc1xuICAgICAgICAkKCdbZGF0YS1icy10b2dnbGU9XCJ0b29sdGlwXCJdJykudG9vbHRpcCgpO1xuICAgIH1cblxuICAgIHN0YXRpYyBvbl9hcHBfcmVhZHkoKSB7XG4gICAgICAgIEZyb250ZW5kX1NldHRpbmdzX1RlbXBsYXRlcy5pbml0KCk7XG4gICAgfVxuXG4gICAgLy8gc3RhdGljIG9uX2pxaHRtbF9yZWFkeSgpIHtcbiAgICAvLyAgICAgLy8gQ2FsbGVkIGFmdGVyIGFsbCBKUUhUTUwgY29tcG9uZW50cyBoYXZlIGxvYWRlZCBhbmQgcmVuZGVyZWRcbiAgICAvLyAgICAgLy8gVXNlIHRoaXMgaWYgeW91IG5lZWQgdG8gaW50ZXJhY3Qgd2l0aCBKUUhUTUwgY29tcG9uZW50c1xuICAgIC8vICAgICAvLyBPdGhlcndpc2UsIHVzZSBvbl9hcHBfcmVhZHkoKSBmb3IgbW9zdCBpbml0aWFsaXphdGlvblxuICAgIC8vIH1cbn0iXSwibWFwcGluZ3MiOiI7O0FBQUEsTUFBTUEsMkJBQTJCLENBQUM7RUFDOUIsT0FBT0MsSUFBSUEsQ0FBQSxFQUFHO0lBQ1YsSUFBSSxDQUFDQyxDQUFDLENBQUMsOEJBQThCLENBQUMsQ0FBQ0MsTUFBTSxDQUFDLENBQUMsRUFBRTs7SUFFakQ7SUFDQUMsT0FBTyxDQUFDQyxHQUFHLENBQUMseUNBQXlDLENBQUM7O0lBRXREO0lBQ0FILENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQ0ksRUFBRSxDQUFDLE9BQU8sRUFBRSxZQUFXO01BQ3BDO0lBQUEsQ0FDSCxDQUFDOztJQUVGO0lBQ0FKLENBQUMsQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDSyxPQUFPLENBQUMsQ0FBQztFQUM3QztFQUVBLE9BQU9DLFlBQVlBLENBQUEsRUFBRztJQUNsQlIsMkJBQTJCLENBQUNDLElBQUksQ0FBQyxDQUFDO0VBQ3RDOztFQUVBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QUFDSiIsImlnbm9yZUxpc3QiOltdfQ==

View File

@@ -0,0 +1,28 @@
"use strict";
class Frontend_Reports_Clients {
static init() {
if (!$(".Frontend_Reports_Clients").exists()) return;
// Initialize your component here
console.log('Frontend_Reports_Clients initialized');
// Example: Handle button clicks
$('.btn-action').on('click', function () {
// Handle action
});
// Example: Initialize tooltips
$('[data-bs-toggle="tooltip"]').tooltip();
}
static on_app_ready() {
Frontend_Reports_Clients.init();
}
// static on_jqhtml_ready() {
// // Called after all JQHTML components have loaded and rendered
// // Use this if you need to interact with JQHTML components
// // Otherwise, use on_app_ready() for most initialization
// }
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJGcm9udGVuZF9SZXBvcnRzX0NsaWVudHMiLCJpbml0IiwiJCIsImV4aXN0cyIsImNvbnNvbGUiLCJsb2ciLCJvbiIsInRvb2x0aXAiLCJvbl9hcHBfcmVhZHkiXSwic291cmNlcyI6WyJyc3gvYXBwL2Zyb250ZW5kL3JlcG9ydHMvZnJvbnRlbmRfcmVwb3J0c19jbGllbnRzLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImNsYXNzIEZyb250ZW5kX1JlcG9ydHNfQ2xpZW50cyB7XG4gICAgc3RhdGljIGluaXQoKSB7XG4gICAgICAgIGlmICghJChcIi5Gcm9udGVuZF9SZXBvcnRzX0NsaWVudHNcIikuZXhpc3RzKCkpIHJldHVybjtcblxuICAgICAgICAvLyBJbml0aWFsaXplIHlvdXIgY29tcG9uZW50IGhlcmVcbiAgICAgICAgY29uc29sZS5sb2coJ0Zyb250ZW5kX1JlcG9ydHNfQ2xpZW50cyBpbml0aWFsaXplZCcpO1xuXG4gICAgICAgIC8vIEV4YW1wbGU6IEhhbmRsZSBidXR0b24gY2xpY2tzXG4gICAgICAgICQoJy5idG4tYWN0aW9uJykub24oJ2NsaWNrJywgZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAvLyBIYW5kbGUgYWN0aW9uXG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIEV4YW1wbGU6IEluaXRpYWxpemUgdG9vbHRpcHNcbiAgICAgICAgJCgnW2RhdGEtYnMtdG9nZ2xlPVwidG9vbHRpcFwiXScpLnRvb2x0aXAoKTtcbiAgICB9XG5cbiAgICBzdGF0aWMgb25fYXBwX3JlYWR5KCkge1xuICAgICAgICBGcm9udGVuZF9SZXBvcnRzX0NsaWVudHMuaW5pdCgpO1xuICAgIH1cblxuICAgIC8vIHN0YXRpYyBvbl9qcWh0bWxfcmVhZHkoKSB7XG4gICAgLy8gICAgIC8vIENhbGxlZCBhZnRlciBhbGwgSlFIVE1MIGNvbXBvbmVudHMgaGF2ZSBsb2FkZWQgYW5kIHJlbmRlcmVkXG4gICAgLy8gICAgIC8vIFVzZSB0aGlzIGlmIHlvdSBuZWVkIHRvIGludGVyYWN0IHdpdGggSlFIVE1MIGNvbXBvbmVudHNcbiAgICAvLyAgICAgLy8gT3RoZXJ3aXNlLCB1c2Ugb25fYXBwX3JlYWR5KCkgZm9yIG1vc3QgaW5pdGlhbGl6YXRpb25cbiAgICAvLyB9XG59Il0sIm1hcHBpbmdzIjoiOztBQUFBLE1BQU1BLHdCQUF3QixDQUFDO0VBQzNCLE9BQU9DLElBQUlBLENBQUEsRUFBRztJQUNWLElBQUksQ0FBQ0MsQ0FBQyxDQUFDLDJCQUEyQixDQUFDLENBQUNDLE1BQU0sQ0FBQyxDQUFDLEVBQUU7O0lBRTlDO0lBQ0FDLE9BQU8sQ0FBQ0MsR0FBRyxDQUFDLHNDQUFzQyxDQUFDOztJQUVuRDtJQUNBSCxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUNJLEVBQUUsQ0FBQyxPQUFPLEVBQUUsWUFBVztNQUNwQztJQUFBLENBQ0gsQ0FBQzs7SUFFRjtJQUNBSixDQUFDLENBQUMsNEJBQTRCLENBQUMsQ0FBQ0ssT0FBTyxDQUFDLENBQUM7RUFDN0M7RUFFQSxPQUFPQyxZQUFZQSxDQUFBLEVBQUc7SUFDbEJSLHdCQUF3QixDQUFDQyxJQUFJLENBQUMsQ0FBQztFQUNuQzs7RUFFQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FBQ0oiLCJpZ25vcmVMaXN0IjpbXX0=

View File

@@ -0,0 +1,6 @@
"use strict";
class Page_Section extends Jqhtml_Component {
// Content section with spacing - no special behavior needed
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJQYWdlX1NlY3Rpb24iLCJKcWh0bWxfQ29tcG9uZW50Il0sInNvdXJjZXMiOlsicnN4L3RoZW1lL2NvbXBvbmVudHMvX2FyY2hpdmVkL3VuZmluaXNoZWQvcGFnZV9zZWN0aW9uLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImNsYXNzIFBhZ2VfU2VjdGlvbiBleHRlbmRzIEpxaHRtbF9Db21wb25lbnQge1xuICAgIC8vIENvbnRlbnQgc2VjdGlvbiB3aXRoIHNwYWNpbmcgLSBubyBzcGVjaWFsIGJlaGF2aW9yIG5lZWRlZFxufVxuIl0sIm1hcHBpbmdzIjoiOztBQUFBLE1BQU1BLFlBQVksU0FBU0MsZ0JBQWdCLENBQUM7RUFDeEM7QUFBQSIsImlnbm9yZUxpc3QiOltdfQ==

View File

@@ -0,0 +1,28 @@
"use strict";
class Frontend_Settings_Api {
static init() {
if (!$(".Frontend_Settings_Api").exists()) return;
// Initialize your component here
console.log('Frontend_Settings_Api initialized');
// Example: Handle button clicks
$('.btn-action').on('click', function () {
// Handle action
});
// Example: Initialize tooltips
$('[data-bs-toggle="tooltip"]').tooltip();
}
static on_app_ready() {
Frontend_Settings_Api.init();
}
// static on_jqhtml_ready() {
// // Called after all JQHTML components have loaded and rendered
// // Use this if you need to interact with JQHTML components
// // Otherwise, use on_app_ready() for most initialization
// }
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJGcm9udGVuZF9TZXR0aW5nc19BcGkiLCJpbml0IiwiJCIsImV4aXN0cyIsImNvbnNvbGUiLCJsb2ciLCJvbiIsInRvb2x0aXAiLCJvbl9hcHBfcmVhZHkiXSwic291cmNlcyI6WyJyc3gvYXBwL2Zyb250ZW5kL3NldHRpbmdzL2FwaS9mcm9udGVuZF9zZXR0aW5nc19hcGkuanMiXSwic291cmNlc0NvbnRlbnQiOlsiY2xhc3MgRnJvbnRlbmRfU2V0dGluZ3NfQXBpIHtcbiAgICBzdGF0aWMgaW5pdCgpIHtcbiAgICAgICAgaWYgKCEkKFwiLkZyb250ZW5kX1NldHRpbmdzX0FwaVwiKS5leGlzdHMoKSkgcmV0dXJuO1xuXG4gICAgICAgIC8vIEluaXRpYWxpemUgeW91ciBjb21wb25lbnQgaGVyZVxuICAgICAgICBjb25zb2xlLmxvZygnRnJvbnRlbmRfU2V0dGluZ3NfQXBpIGluaXRpYWxpemVkJyk7XG5cbiAgICAgICAgLy8gRXhhbXBsZTogSGFuZGxlIGJ1dHRvbiBjbGlja3NcbiAgICAgICAgJCgnLmJ0bi1hY3Rpb24nKS5vbignY2xpY2snLCBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIC8vIEhhbmRsZSBhY3Rpb25cbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gRXhhbXBsZTogSW5pdGlhbGl6ZSB0b29sdGlwc1xuICAgICAgICAkKCdbZGF0YS1icy10b2dnbGU9XCJ0b29sdGlwXCJdJykudG9vbHRpcCgpO1xuICAgIH1cblxuICAgIHN0YXRpYyBvbl9hcHBfcmVhZHkoKSB7XG4gICAgICAgIEZyb250ZW5kX1NldHRpbmdzX0FwaS5pbml0KCk7XG4gICAgfVxuXG4gICAgLy8gc3RhdGljIG9uX2pxaHRtbF9yZWFkeSgpIHtcbiAgICAvLyAgICAgLy8gQ2FsbGVkIGFmdGVyIGFsbCBKUUhUTUwgY29tcG9uZW50cyBoYXZlIGxvYWRlZCBhbmQgcmVuZGVyZWRcbiAgICAvLyAgICAgLy8gVXNlIHRoaXMgaWYgeW91IG5lZWQgdG8gaW50ZXJhY3Qgd2l0aCBKUUhUTUwgY29tcG9uZW50c1xuICAgIC8vICAgICAvLyBPdGhlcndpc2UsIHVzZSBvbl9hcHBfcmVhZHkoKSBmb3IgbW9zdCBpbml0aWFsaXphdGlvblxuICAgIC8vIH1cbn0iXSwibWFwcGluZ3MiOiI7O0FBQUEsTUFBTUEscUJBQXFCLENBQUM7RUFDeEIsT0FBT0MsSUFBSUEsQ0FBQSxFQUFHO0lBQ1YsSUFBSSxDQUFDQyxDQUFDLENBQUMsd0JBQXdCLENBQUMsQ0FBQ0MsTUFBTSxDQUFDLENBQUMsRUFBRTs7SUFFM0M7SUFDQUMsT0FBTyxDQUFDQyxHQUFHLENBQUMsbUNBQW1DLENBQUM7O0lBRWhEO0lBQ0FILENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQ0ksRUFBRSxDQUFDLE9BQU8sRUFBRSxZQUFXO01BQ3BDO0lBQUEsQ0FDSCxDQUFDOztJQUVGO0lBQ0FKLENBQUMsQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDSyxPQUFPLENBQUMsQ0FBQztFQUM3QztFQUVBLE9BQU9DLFlBQVlBLENBQUEsRUFBRztJQUNsQlIscUJBQXFCLENBQUNDLElBQUksQ0FBQyxDQUFDO0VBQ2hDOztFQUVBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QUFDSiIsImlnbm9yZUxpc3QiOltdfQ==

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,6 @@
"use strict";
class Icon_With_Text extends Jqhtml_Component {
// Pure Bootstrap styling - no JavaScript needed
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJJY29uX1dpdGhfVGV4dCIsIkpxaHRtbF9Db21wb25lbnQiXSwic291cmNlcyI6WyJyc3gvdGhlbWUvY29tcG9uZW50cy9fYXJjaGl2ZWQvdW5maW5pc2hlZC9JY29uX1dpdGhfVGV4dC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJjbGFzcyBJY29uX1dpdGhfVGV4dCBleHRlbmRzIEpxaHRtbF9Db21wb25lbnQge1xuICAgIC8vIFB1cmUgQm9vdHN0cmFwIHN0eWxpbmcgLSBubyBKYXZhU2NyaXB0IG5lZWRlZFxufVxuIl0sIm1hcHBpbmdzIjoiOztBQUFBLE1BQU1BLGNBQWMsU0FBU0MsZ0JBQWdCLENBQUM7RUFDMUM7QUFBQSIsImlnbm9yZUxpc3QiOltdfQ==

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,50 @@
"use strict";
/**
* Edit_User_Modal - Modal for editing existing user information
*
* Displays form to update user profile information.
* Uses Edit_User_Modal_Form component for UI and validation.
*
* Returns updated user record on success, false on cancel.
*/
class Edit_User_Modal extends Modal_Abstract {
/**
* Show edit user modal
*
* @param {number} user_id - ID of user to edit
* @returns {Promise<Object|false>} Updated user record on success, false on cancel
*/
static async show(user_id) {
// Load user data for editing
let user_data;
try {
user_data = await Frontend_Settings_User_Management_Controller.get_user_for_edit({
user_id
});
} catch (error) {
await Modal.error(error, 'Failed to Load User');
return false;
}
const result = await Modal.form({
title: 'Edit User',
component: 'Edit_User_Modal_Form',
component_args: {
data: user_data
},
on_submit: async form => {
try {
const values = form.vals();
const result = await Frontend_Settings_User_Management_Controller.save_user(values);
return result; // Close modal, return user data
} catch (error) {
// Render error (form handles both validation and generic errors)
await form.render_error(error);
return false; // Keep modal open
}
}
});
return result || false;
}
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJFZGl0X1VzZXJfTW9kYWwiLCJNb2RhbF9BYnN0cmFjdCIsInNob3ciLCJ1c2VyX2lkIiwidXNlcl9kYXRhIiwiRnJvbnRlbmRfU2V0dGluZ3NfVXNlcl9NYW5hZ2VtZW50X0NvbnRyb2xsZXIiLCJnZXRfdXNlcl9mb3JfZWRpdCIsImVycm9yIiwiTW9kYWwiLCJyZXN1bHQiLCJmb3JtIiwidGl0bGUiLCJjb21wb25lbnQiLCJjb21wb25lbnRfYXJncyIsImRhdGEiLCJvbl9zdWJtaXQiLCJ2YWx1ZXMiLCJ2YWxzIiwic2F2ZV91c2VyIiwicmVuZGVyX2Vycm9yIl0sInNvdXJjZXMiOlsicnN4L2FwcC9mcm9udGVuZC9zZXR0aW5ncy91c2VyX21hbmFnZW1lbnQvZWRpdF91c2VyX21vZGFsLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogRWRpdF9Vc2VyX01vZGFsIC0gTW9kYWwgZm9yIGVkaXRpbmcgZXhpc3RpbmcgdXNlciBpbmZvcm1hdGlvblxuICpcbiAqIERpc3BsYXlzIGZvcm0gdG8gdXBkYXRlIHVzZXIgcHJvZmlsZSBpbmZvcm1hdGlvbi5cbiAqIFVzZXMgRWRpdF9Vc2VyX01vZGFsX0Zvcm0gY29tcG9uZW50IGZvciBVSSBhbmQgdmFsaWRhdGlvbi5cbiAqXG4gKiBSZXR1cm5zIHVwZGF0ZWQgdXNlciByZWNvcmQgb24gc3VjY2VzcywgZmFsc2Ugb24gY2FuY2VsLlxuICovXG5jbGFzcyBFZGl0X1VzZXJfTW9kYWwgZXh0ZW5kcyBNb2RhbF9BYnN0cmFjdCB7XG4gICAgLyoqXG4gICAgICogU2hvdyBlZGl0IHVzZXIgbW9kYWxcbiAgICAgKlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB1c2VyX2lkIC0gSUQgb2YgdXNlciB0byBlZGl0XG4gICAgICogQHJldHVybnMge1Byb21pc2U8T2JqZWN0fGZhbHNlPn0gVXBkYXRlZCB1c2VyIHJlY29yZCBvbiBzdWNjZXNzLCBmYWxzZSBvbiBjYW5jZWxcbiAgICAgKi9cbiAgICBzdGF0aWMgYXN5bmMgc2hvdyh1c2VyX2lkKSB7XG4gICAgICAgIC8vIExvYWQgdXNlciBkYXRhIGZvciBlZGl0aW5nXG4gICAgICAgIGxldCB1c2VyX2RhdGE7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICB1c2VyX2RhdGEgPSBhd2FpdCBGcm9udGVuZF9TZXR0aW5nc19Vc2VyX01hbmFnZW1lbnRfQ29udHJvbGxlci5nZXRfdXNlcl9mb3JfZWRpdCh7dXNlcl9pZH0pO1xuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgYXdhaXQgTW9kYWwuZXJyb3IoZXJyb3IsICdGYWlsZWQgdG8gTG9hZCBVc2VyJyk7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBNb2RhbC5mb3JtKHtcbiAgICAgICAgICAgIHRpdGxlOiAnRWRpdCBVc2VyJyxcbiAgICAgICAgICAgIGNvbXBvbmVudDogJ0VkaXRfVXNlcl9Nb2RhbF9Gb3JtJyxcbiAgICAgICAgICAgIGNvbXBvbmVudF9hcmdzOiB7ZGF0YTogdXNlcl9kYXRhfSxcbiAgICAgICAgICAgIG9uX3N1Ym1pdDogYXN5bmMgKGZvcm0pID0+IHtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZXMgPSBmb3JtLnZhbHMoKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgRnJvbnRlbmRfU2V0dGluZ3NfVXNlcl9NYW5hZ2VtZW50X0NvbnRyb2xsZXIuc2F2ZV91c2VyKHZhbHVlcyk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7IC8vIENsb3NlIG1vZGFsLCByZXR1cm4gdXNlciBkYXRhXG4gICAgICAgICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gUmVuZGVyIGVycm9yIChmb3JtIGhhbmRsZXMgYm90aCB2YWxpZGF0aW9uIGFuZCBnZW5lcmljIGVycm9ycylcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgZm9ybS5yZW5kZXJfZXJyb3IoZXJyb3IpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7IC8vIEtlZXAgbW9kYWwgb3BlblxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiByZXN1bHQgfHwgZmFsc2U7XG4gICAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNQSxlQUFlLFNBQVNDLGNBQWMsQ0FBQztFQUN6QztBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7RUFDSSxhQUFhQyxJQUFJQSxDQUFDQyxPQUFPLEVBQUU7SUFDdkI7SUFDQSxJQUFJQyxTQUFTO0lBQ2IsSUFBSTtNQUNBQSxTQUFTLEdBQUcsTUFBTUMsNENBQTRDLENBQUNDLGlCQUFpQixDQUFDO1FBQUNIO01BQU8sQ0FBQyxDQUFDO0lBQy9GLENBQUMsQ0FBQyxPQUFPSSxLQUFLLEVBQUU7TUFDWixNQUFNQyxLQUFLLENBQUNELEtBQUssQ0FBQ0EsS0FBSyxFQUFFLHFCQUFxQixDQUFDO01BQy9DLE9BQU8sS0FBSztJQUNoQjtJQUVBLE1BQU1FLE1BQU0sR0FBRyxNQUFNRCxLQUFLLENBQUNFLElBQUksQ0FBQztNQUM1QkMsS0FBSyxFQUFFLFdBQVc7TUFDbEJDLFNBQVMsRUFBRSxzQkFBc0I7TUFDakNDLGNBQWMsRUFBRTtRQUFDQyxJQUFJLEVBQUVWO01BQVMsQ0FBQztNQUNqQ1csU0FBUyxFQUFFLE1BQU9MLElBQUksSUFBSztRQUN2QixJQUFJO1VBQ0EsTUFBTU0sTUFBTSxHQUFHTixJQUFJLENBQUNPLElBQUksQ0FBQyxDQUFDO1VBQzFCLE1BQU1SLE1BQU0sR0FBRyxNQUFNSiw0Q0FBNEMsQ0FBQ2EsU0FBUyxDQUFDRixNQUFNLENBQUM7VUFDbkYsT0FBT1AsTUFBTSxDQUFDLENBQUM7UUFDbkIsQ0FBQyxDQUFDLE9BQU9GLEtBQUssRUFBRTtVQUNaO1VBQ0EsTUFBTUcsSUFBSSxDQUFDUyxZQUFZLENBQUNaLEtBQUssQ0FBQztVQUM5QixPQUFPLEtBQUssQ0FBQyxDQUFDO1FBQ2xCO01BQ0o7SUFDSixDQUFDLENBQUM7SUFFRixPQUFPRSxNQUFNLElBQUksS0FBSztFQUMxQjtBQUNKIiwiaWdub3JlTGlzdCI6W119

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,6 @@
"use strict";
class Breadcrumbs extends Jqhtml_Component {
// Placeholder component - currently empty in dashboard usage
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJCcmVhZGNydW1icyIsIkpxaHRtbF9Db21wb25lbnQiXSwic291cmNlcyI6WyJyc3gvdGhlbWUvY29tcG9uZW50cy9fYXJjaGl2ZWQvdW5maW5pc2hlZC9CcmVhZGNydW1icy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJjbGFzcyBCcmVhZGNydW1icyBleHRlbmRzIEpxaHRtbF9Db21wb25lbnQge1xuICAgIC8vIFBsYWNlaG9sZGVyIGNvbXBvbmVudCAtIGN1cnJlbnRseSBlbXB0eSBpbiBkYXNoYm9hcmQgdXNhZ2Vcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7QUFBQSxNQUFNQSxXQUFXLFNBQVNDLGdCQUFnQixDQUFDO0VBQ3ZDO0FBQUEiLCJpZ25vcmVMaXN0IjpbXX0=

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,25 @@
"use strict";
class Progress_Bar extends Jqhtml_Component {
on_ready() {
const $bar = this.$id('bar');
// Apply color from args
if (this.args.color) {
$bar.addClass(`bg-${this.args.color}`);
}
// Show value text if requested
if (this.args.show_value) {
$bar.text(`${this.args.value || 0}%`);
}
}
set_value(value) {
const $bar = this.$id('bar');
$bar.css('width', `${value}%`).attr('aria-valuenow', value);
if (this.args.show_value) {
$bar.text(`${value}%`);
}
}
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJQcm9ncmVzc19CYXIiLCJKcWh0bWxfQ29tcG9uZW50Iiwib25fcmVhZHkiLCIkYmFyIiwiJGlkIiwiYXJncyIsImNvbG9yIiwiYWRkQ2xhc3MiLCJzaG93X3ZhbHVlIiwidGV4dCIsInZhbHVlIiwic2V0X3ZhbHVlIiwiY3NzIiwiYXR0ciJdLCJzb3VyY2VzIjpbInJzeC90aGVtZS9jb21wb25lbnRzL19hcmNoaXZlZC91bmZpbmlzaGVkL1Byb2dyZXNzX0Jhci5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJjbGFzcyBQcm9ncmVzc19CYXIgZXh0ZW5kcyBKcWh0bWxfQ29tcG9uZW50IHtcbiAgICBvbl9yZWFkeSgpIHtcbiAgICAgICAgY29uc3QgJGJhciA9IHRoaXMuJGlkKCdiYXInKTtcblxuICAgICAgICAvLyBBcHBseSBjb2xvciBmcm9tIGFyZ3NcbiAgICAgICAgaWYgKHRoaXMuYXJncy5jb2xvcikge1xuICAgICAgICAgICAgJGJhci5hZGRDbGFzcyhgYmctJHt0aGlzLmFyZ3MuY29sb3J9YCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBTaG93IHZhbHVlIHRleHQgaWYgcmVxdWVzdGVkXG4gICAgICAgIGlmICh0aGlzLmFyZ3Muc2hvd192YWx1ZSkge1xuICAgICAgICAgICAgJGJhci50ZXh0KGAke3RoaXMuYXJncy52YWx1ZSB8fCAwfSVgKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNldF92YWx1ZSh2YWx1ZSkge1xuICAgICAgICBjb25zdCAkYmFyID0gdGhpcy4kaWQoJ2JhcicpO1xuICAgICAgICAkYmFyLmNzcygnd2lkdGgnLCBgJHt2YWx1ZX0lYCkuYXR0cignYXJpYS12YWx1ZW5vdycsIHZhbHVlKTtcbiAgICAgICAgaWYgKHRoaXMuYXJncy5zaG93X3ZhbHVlKSB7XG4gICAgICAgICAgICAkYmFyLnRleHQoYCR7dmFsdWV9JWApO1xuICAgICAgICB9XG4gICAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOztBQUFBLE1BQU1BLFlBQVksU0FBU0MsZ0JBQWdCLENBQUM7RUFDeENDLFFBQVFBLENBQUEsRUFBRztJQUNQLE1BQU1DLElBQUksR0FBRyxJQUFJLENBQUNDLEdBQUcsQ0FBQyxLQUFLLENBQUM7O0lBRTVCO0lBQ0EsSUFBSSxJQUFJLENBQUNDLElBQUksQ0FBQ0MsS0FBSyxFQUFFO01BQ2pCSCxJQUFJLENBQUNJLFFBQVEsQ0FBQyxNQUFNLElBQUksQ0FBQ0YsSUFBSSxDQUFDQyxLQUFLLEVBQUUsQ0FBQztJQUMxQzs7SUFFQTtJQUNBLElBQUksSUFBSSxDQUFDRCxJQUFJLENBQUNHLFVBQVUsRUFBRTtNQUN0QkwsSUFBSSxDQUFDTSxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUNKLElBQUksQ0FBQ0ssS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDO0lBQ3pDO0VBQ0o7RUFFQUMsU0FBU0EsQ0FBQ0QsS0FBSyxFQUFFO0lBQ2IsTUFBTVAsSUFBSSxHQUFHLElBQUksQ0FBQ0MsR0FBRyxDQUFDLEtBQUssQ0FBQztJQUM1QkQsSUFBSSxDQUFDUyxHQUFHLENBQUMsT0FBTyxFQUFFLEdBQUdGLEtBQUssR0FBRyxDQUFDLENBQUNHLElBQUksQ0FBQyxlQUFlLEVBQUVILEtBQUssQ0FBQztJQUMzRCxJQUFJLElBQUksQ0FBQ0wsSUFBSSxDQUFDRyxVQUFVLEVBQUU7TUFDdEJMLElBQUksQ0FBQ00sSUFBSSxDQUFDLEdBQUdDLEtBQUssR0FBRyxDQUFDO0lBQzFCO0VBQ0o7QUFDSiIsImlnbm9yZUxpc3QiOltdfQ==

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,11 @@
"use strict";
class Link extends Jqhtml_Component {
on_ready() {
// Support $href attribute for dynamic URLs
if (this.args.href) {
this.$.attr('href', this.args.href);
}
}
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJMaW5rIiwiSnFodG1sX0NvbXBvbmVudCIsIm9uX3JlYWR5IiwiYXJncyIsImhyZWYiLCIkIiwiYXR0ciJdLCJzb3VyY2VzIjpbInJzeC90aGVtZS9jb21wb25lbnRzL19hcmNoaXZlZC91bmZpbmlzaGVkL2xpbmsuanMiXSwic291cmNlc0NvbnRlbnQiOlsiY2xhc3MgTGluayBleHRlbmRzIEpxaHRtbF9Db21wb25lbnQge1xuICAgIG9uX3JlYWR5KCkge1xuICAgICAgICAvLyBTdXBwb3J0ICRocmVmIGF0dHJpYnV0ZSBmb3IgZHluYW1pYyBVUkxzXG4gICAgICAgIGlmICh0aGlzLmFyZ3MuaHJlZikge1xuICAgICAgICAgICAgdGhpcy4kLmF0dHIoJ2hyZWYnLCB0aGlzLmFyZ3MuaHJlZik7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXSwibWFwcGluZ3MiOiI7O0FBQUEsTUFBTUEsSUFBSSxTQUFTQyxnQkFBZ0IsQ0FBQztFQUNoQ0MsUUFBUUEsQ0FBQSxFQUFHO0lBQ1A7SUFDQSxJQUFJLElBQUksQ0FBQ0MsSUFBSSxDQUFDQyxJQUFJLEVBQUU7TUFDaEIsSUFBSSxDQUFDQyxDQUFDLENBQUNDLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDSCxJQUFJLENBQUNDLElBQUksQ0FBQztJQUN2QztFQUNKO0FBQ0oiLCJpZ25vcmVMaXN0IjpbXX0=

View File

@@ -0,0 +1,20 @@
"use strict";
/**
* Form_Validation_Message - Bootstrap 5 Validation Feedback Component
*
* Purpose: Display validation feedback messages (success/error) below form inputs
* Design: Bootstrap .invalid-feedback (default) or .valid-feedback styling
* Visibility: Only shows when sibling input has .is-valid or .is-invalid class
*/
class Form_Validation_Message extends Jqhtml_Component {
on_ready() {
// Add custom classes if provided (e.g., switching to valid-feedback)
if (this.args.class) {
// Replace default invalid-feedback with provided class
this.$.removeClass('invalid-feedback');
this.$.addClass(this.args.class);
}
}
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJGb3JtX1ZhbGlkYXRpb25fTWVzc2FnZSIsIkpxaHRtbF9Db21wb25lbnQiLCJvbl9yZWFkeSIsImFyZ3MiLCJjbGFzcyIsIiQiLCJyZW1vdmVDbGFzcyIsImFkZENsYXNzIl0sInNvdXJjZXMiOlsicnN4L3RoZW1lL2NvbXBvbmVudHMvX2FyY2hpdmVkL3VuZmluaXNoZWQvRm9ybV9WYWxpZGF0aW9uX01lc3NhZ2UuanMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBGb3JtX1ZhbGlkYXRpb25fTWVzc2FnZSAtIEJvb3RzdHJhcCA1IFZhbGlkYXRpb24gRmVlZGJhY2sgQ29tcG9uZW50XG4gKlxuICogUHVycG9zZTogRGlzcGxheSB2YWxpZGF0aW9uIGZlZWRiYWNrIG1lc3NhZ2VzIChzdWNjZXNzL2Vycm9yKSBiZWxvdyBmb3JtIGlucHV0c1xuICogRGVzaWduOiBCb290c3RyYXAgLmludmFsaWQtZmVlZGJhY2sgKGRlZmF1bHQpIG9yIC52YWxpZC1mZWVkYmFjayBzdHlsaW5nXG4gKiBWaXNpYmlsaXR5OiBPbmx5IHNob3dzIHdoZW4gc2libGluZyBpbnB1dCBoYXMgLmlzLXZhbGlkIG9yIC5pcy1pbnZhbGlkIGNsYXNzXG4gKi9cbmNsYXNzIEZvcm1fVmFsaWRhdGlvbl9NZXNzYWdlIGV4dGVuZHMgSnFodG1sX0NvbXBvbmVudCB7XG4gICAgb25fcmVhZHkoKSB7XG4gICAgICAgIC8vIEFkZCBjdXN0b20gY2xhc3NlcyBpZiBwcm92aWRlZCAoZS5nLiwgc3dpdGNoaW5nIHRvIHZhbGlkLWZlZWRiYWNrKVxuICAgICAgICBpZiAodGhpcy5hcmdzLmNsYXNzKSB7XG4gICAgICAgICAgICAvLyBSZXBsYWNlIGRlZmF1bHQgaW52YWxpZC1mZWVkYmFjayB3aXRoIHByb3ZpZGVkIGNsYXNzXG4gICAgICAgICAgICB0aGlzLiQucmVtb3ZlQ2xhc3MoJ2ludmFsaWQtZmVlZGJhY2snKTtcbiAgICAgICAgICAgIHRoaXMuJC5hZGRDbGFzcyh0aGlzLmFyZ3MuY2xhc3MpO1xuICAgICAgICB9XG4gICAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTUEsdUJBQXVCLFNBQVNDLGdCQUFnQixDQUFDO0VBQ25EQyxRQUFRQSxDQUFBLEVBQUc7SUFDUDtJQUNBLElBQUksSUFBSSxDQUFDQyxJQUFJLENBQUNDLEtBQUssRUFBRTtNQUNqQjtNQUNBLElBQUksQ0FBQ0MsQ0FBQyxDQUFDQyxXQUFXLENBQUMsa0JBQWtCLENBQUM7TUFDdEMsSUFBSSxDQUFDRCxDQUFDLENBQUNFLFFBQVEsQ0FBQyxJQUFJLENBQUNKLElBQUksQ0FBQ0MsS0FBSyxDQUFDO0lBQ3BDO0VBQ0o7QUFDSiIsImlnbm9yZUxpc3QiOltdfQ==

View File

@@ -0,0 +1,28 @@
"use strict";
class Frontend_Projects_List {
static init() {
if (!$(".Frontend_Projects_List").exists()) return;
// Initialize your component here
console.log('Frontend_Projects_List initialized');
// Example: Handle button clicks
$('.btn-action').on('click', function () {
// Handle action
});
// Example: Initialize tooltips
$('[data-bs-toggle="tooltip"]').tooltip();
}
static on_app_ready() {
Frontend_Projects_List.init();
}
// static on_jqhtml_ready() {
// // Called after all JQHTML components have loaded and rendered
// // Use this if you need to interact with JQHTML components
// // Otherwise, use on_app_ready() for most initialization
// }
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJGcm9udGVuZF9Qcm9qZWN0c19MaXN0IiwiaW5pdCIsIiQiLCJleGlzdHMiLCJjb25zb2xlIiwibG9nIiwib24iLCJ0b29sdGlwIiwib25fYXBwX3JlYWR5Il0sInNvdXJjZXMiOlsicnN4L2FwcC9mcm9udGVuZC9wcm9qZWN0cy9mcm9udGVuZF9wcm9qZWN0c19saXN0LmpzIl0sInNvdXJjZXNDb250ZW50IjpbImNsYXNzIEZyb250ZW5kX1Byb2plY3RzX0xpc3Qge1xuICAgIHN0YXRpYyBpbml0KCkge1xuICAgICAgICBpZiAoISQoXCIuRnJvbnRlbmRfUHJvamVjdHNfTGlzdFwiKS5leGlzdHMoKSkgcmV0dXJuO1xuXG4gICAgICAgIC8vIEluaXRpYWxpemUgeW91ciBjb21wb25lbnQgaGVyZVxuICAgICAgICBjb25zb2xlLmxvZygnRnJvbnRlbmRfUHJvamVjdHNfTGlzdCBpbml0aWFsaXplZCcpO1xuXG4gICAgICAgIC8vIEV4YW1wbGU6IEhhbmRsZSBidXR0b24gY2xpY2tzXG4gICAgICAgICQoJy5idG4tYWN0aW9uJykub24oJ2NsaWNrJywgZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAvLyBIYW5kbGUgYWN0aW9uXG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIEV4YW1wbGU6IEluaXRpYWxpemUgdG9vbHRpcHNcbiAgICAgICAgJCgnW2RhdGEtYnMtdG9nZ2xlPVwidG9vbHRpcFwiXScpLnRvb2x0aXAoKTtcbiAgICB9XG5cbiAgICBzdGF0aWMgb25fYXBwX3JlYWR5KCkge1xuICAgICAgICBGcm9udGVuZF9Qcm9qZWN0c19MaXN0LmluaXQoKTtcbiAgICB9XG5cbiAgICAvLyBzdGF0aWMgb25fanFodG1sX3JlYWR5KCkge1xuICAgIC8vICAgICAvLyBDYWxsZWQgYWZ0ZXIgYWxsIEpRSFRNTCBjb21wb25lbnRzIGhhdmUgbG9hZGVkIGFuZCByZW5kZXJlZFxuICAgIC8vICAgICAvLyBVc2UgdGhpcyBpZiB5b3UgbmVlZCB0byBpbnRlcmFjdCB3aXRoIEpRSFRNTCBjb21wb25lbnRzXG4gICAgLy8gICAgIC8vIE90aGVyd2lzZSwgdXNlIG9uX2FwcF9yZWFkeSgpIGZvciBtb3N0IGluaXRpYWxpemF0aW9uXG4gICAgLy8gfVxufSJdLCJtYXBwaW5ncyI6Ijs7QUFBQSxNQUFNQSxzQkFBc0IsQ0FBQztFQUN6QixPQUFPQyxJQUFJQSxDQUFBLEVBQUc7SUFDVixJQUFJLENBQUNDLENBQUMsQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDQyxNQUFNLENBQUMsQ0FBQyxFQUFFOztJQUU1QztJQUNBQyxPQUFPLENBQUNDLEdBQUcsQ0FBQyxvQ0FBb0MsQ0FBQzs7SUFFakQ7SUFDQUgsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDSSxFQUFFLENBQUMsT0FBTyxFQUFFLFlBQVc7TUFDcEM7SUFBQSxDQUNILENBQUM7O0lBRUY7SUFDQUosQ0FBQyxDQUFDLDRCQUE0QixDQUFDLENBQUNLLE9BQU8sQ0FBQyxDQUFDO0VBQzdDO0VBRUEsT0FBT0MsWUFBWUEsQ0FBQSxFQUFHO0lBQ2xCUixzQkFBc0IsQ0FBQ0MsSUFBSSxDQUFDLENBQUM7RUFDakM7O0VBRUE7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBQUNKIiwiaWdub3JlTGlzdCI6W119

View File

@@ -0,0 +1,28 @@
"use strict";
class Frontend_Settings_Password_Security {
static init() {
if (!$(".Frontend_Settings_Password_Security").exists()) return;
// Initialize your component here
console.log('Frontend_Settings_Password_Security initialized');
// Example: Handle button clicks
$('.btn-action').on('click', function () {
// Handle action
});
// Example: Initialize tooltips
$('[data-bs-toggle="tooltip"]').tooltip();
}
static on_app_ready() {
Frontend_Settings_Password_Security.init();
}
// static on_jqhtml_ready() {
// // Called after all JQHTML components have loaded and rendered
// // Use this if you need to interact with JQHTML components
// // Otherwise, use on_app_ready() for most initialization
// }
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJGcm9udGVuZF9TZXR0aW5nc19QYXNzd29yZF9TZWN1cml0eSIsImluaXQiLCIkIiwiZXhpc3RzIiwiY29uc29sZSIsImxvZyIsIm9uIiwidG9vbHRpcCIsIm9uX2FwcF9yZWFkeSJdLCJzb3VyY2VzIjpbInJzeC9hcHAvZnJvbnRlbmQvc2V0dGluZ3MvcGFzc3dvcmRfc2VjdXJpdHkvZnJvbnRlbmRfc2V0dGluZ3NfcGFzc3dvcmRfc2VjdXJpdHkuanMiXSwic291cmNlc0NvbnRlbnQiOlsiY2xhc3MgRnJvbnRlbmRfU2V0dGluZ3NfUGFzc3dvcmRfU2VjdXJpdHkge1xuICAgIHN0YXRpYyBpbml0KCkge1xuICAgICAgICBpZiAoISQoXCIuRnJvbnRlbmRfU2V0dGluZ3NfUGFzc3dvcmRfU2VjdXJpdHlcIikuZXhpc3RzKCkpIHJldHVybjtcblxuICAgICAgICAvLyBJbml0aWFsaXplIHlvdXIgY29tcG9uZW50IGhlcmVcbiAgICAgICAgY29uc29sZS5sb2coJ0Zyb250ZW5kX1NldHRpbmdzX1Bhc3N3b3JkX1NlY3VyaXR5IGluaXRpYWxpemVkJyk7XG5cbiAgICAgICAgLy8gRXhhbXBsZTogSGFuZGxlIGJ1dHRvbiBjbGlja3NcbiAgICAgICAgJCgnLmJ0bi1hY3Rpb24nKS5vbignY2xpY2snLCBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIC8vIEhhbmRsZSBhY3Rpb25cbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gRXhhbXBsZTogSW5pdGlhbGl6ZSB0b29sdGlwc1xuICAgICAgICAkKCdbZGF0YS1icy10b2dnbGU9XCJ0b29sdGlwXCJdJykudG9vbHRpcCgpO1xuICAgIH1cblxuICAgIHN0YXRpYyBvbl9hcHBfcmVhZHkoKSB7XG4gICAgICAgIEZyb250ZW5kX1NldHRpbmdzX1Bhc3N3b3JkX1NlY3VyaXR5LmluaXQoKTtcbiAgICB9XG5cbiAgICAvLyBzdGF0aWMgb25fanFodG1sX3JlYWR5KCkge1xuICAgIC8vICAgICAvLyBDYWxsZWQgYWZ0ZXIgYWxsIEpRSFRNTCBjb21wb25lbnRzIGhhdmUgbG9hZGVkIGFuZCByZW5kZXJlZFxuICAgIC8vICAgICAvLyBVc2UgdGhpcyBpZiB5b3UgbmVlZCB0byBpbnRlcmFjdCB3aXRoIEpRSFRNTCBjb21wb25lbnRzXG4gICAgLy8gICAgIC8vIE90aGVyd2lzZSwgdXNlIG9uX2FwcF9yZWFkeSgpIGZvciBtb3N0IGluaXRpYWxpemF0aW9uXG4gICAgLy8gfVxufSJdLCJtYXBwaW5ncyI6Ijs7QUFBQSxNQUFNQSxtQ0FBbUMsQ0FBQztFQUN0QyxPQUFPQyxJQUFJQSxDQUFBLEVBQUc7SUFDVixJQUFJLENBQUNDLENBQUMsQ0FBQyxzQ0FBc0MsQ0FBQyxDQUFDQyxNQUFNLENBQUMsQ0FBQyxFQUFFOztJQUV6RDtJQUNBQyxPQUFPLENBQUNDLEdBQUcsQ0FBQyxpREFBaUQsQ0FBQzs7SUFFOUQ7SUFDQUgsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDSSxFQUFFLENBQUMsT0FBTyxFQUFFLFlBQVc7TUFDcEM7SUFBQSxDQUNILENBQUM7O0lBRUY7SUFDQUosQ0FBQyxDQUFDLDRCQUE0QixDQUFDLENBQUNLLE9BQU8sQ0FBQyxDQUFDO0VBQzdDO0VBRUEsT0FBT0MsWUFBWUEsQ0FBQSxFQUFHO0lBQ2xCUixtQ0FBbUMsQ0FBQ0MsSUFBSSxDQUFDLENBQUM7RUFDOUM7O0VBRUE7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBQUNKIiwiaWdub3JlTGlzdCI6W119

View File

@@ -0,0 +1,55 @@
"use strict";
/**
* View_Transitions - Smooth page-to-page transitions using View Transitions API
*
* Enables cross-document view transitions so the browser doesn't paint the new page
* until it's ready, creating smooth animations between pages.
*
* Falls back gracefully if View Transitions API is not available.
*/
class Rsx_View_Transitions {
/**
* Called during framework core init phase
* Checks for View Transitions API support and enables if available
*/
static _on_framework_core_init() {
// Check if View Transitions API is supported
if (!document.startViewTransition) {
console_debug('VIEW_TRANSITIONS', 'View Transitions API not supported, skipping');
return;
}
// Enable cross-document view transitions via CSS
Rsx_View_Transitions._inject_transition_css();
}
/**
* Inject CSS to enable cross-document view transitions
*
* The @view-transition { navigation: auto; } rule tells the browser to:
* 1. Capture a snapshot of the current page before navigation
* 2. Fetch the new page
* 3. Wait until the new page is fully loaded and painted (document.ready)
* 4. Animate smoothly between the two states
*
* This prevents the white flash during navigation and creates app-like transitions.
*/
static _inject_transition_css() {
const style = document.createElement('style');
style.textContent = `
@view-transition {
navigation: auto;
}
/* Disable animation - instant transition */
::view-transition-group(*),
::view-transition-old(*),
::view-transition-new(*) {
animation-duration: 0s;
}
`;
document.head.appendChild(style);
}
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSc3hfVmlld19UcmFuc2l0aW9ucyIsIl9vbl9mcmFtZXdvcmtfY29yZV9pbml0IiwiZG9jdW1lbnQiLCJzdGFydFZpZXdUcmFuc2l0aW9uIiwiY29uc29sZV9kZWJ1ZyIsIl9pbmplY3RfdHJhbnNpdGlvbl9jc3MiLCJzdHlsZSIsImNyZWF0ZUVsZW1lbnQiLCJ0ZXh0Q29udGVudCIsImhlYWQiLCJhcHBlbmRDaGlsZCJdLCJzb3VyY2VzIjpbImFwcC9SU3BhZGUvQ29yZS9Kcy9Sc3hfVmlld19UcmFuc2l0aW9ucy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFZpZXdfVHJhbnNpdGlvbnMgLSBTbW9vdGggcGFnZS10by1wYWdlIHRyYW5zaXRpb25zIHVzaW5nIFZpZXcgVHJhbnNpdGlvbnMgQVBJXG4gKlxuICogRW5hYmxlcyBjcm9zcy1kb2N1bWVudCB2aWV3IHRyYW5zaXRpb25zIHNvIHRoZSBicm93c2VyIGRvZXNuJ3QgcGFpbnQgdGhlIG5ldyBwYWdlXG4gKiB1bnRpbCBpdCdzIHJlYWR5LCBjcmVhdGluZyBzbW9vdGggYW5pbWF0aW9ucyBiZXR3ZWVuIHBhZ2VzLlxuICpcbiAqIEZhbGxzIGJhY2sgZ3JhY2VmdWxseSBpZiBWaWV3IFRyYW5zaXRpb25zIEFQSSBpcyBub3QgYXZhaWxhYmxlLlxuICovXG5jbGFzcyBSc3hfVmlld19UcmFuc2l0aW9ucyB7XG4gICAgLyoqXG4gICAgICogQ2FsbGVkIGR1cmluZyBmcmFtZXdvcmsgY29yZSBpbml0IHBoYXNlXG4gICAgICogQ2hlY2tzIGZvciBWaWV3IFRyYW5zaXRpb25zIEFQSSBzdXBwb3J0IGFuZCBlbmFibGVzIGlmIGF2YWlsYWJsZVxuICAgICAqL1xuICAgIHN0YXRpYyBfb25fZnJhbWV3b3JrX2NvcmVfaW5pdCgpIHtcbiAgICAgICAgLy8gQ2hlY2sgaWYgVmlldyBUcmFuc2l0aW9ucyBBUEkgaXMgc3VwcG9ydGVkXG4gICAgICAgIGlmICghZG9jdW1lbnQuc3RhcnRWaWV3VHJhbnNpdGlvbikge1xuICAgICAgICAgICAgY29uc29sZV9kZWJ1ZygnVklFV19UUkFOU0lUSU9OUycsICdWaWV3IFRyYW5zaXRpb25zIEFQSSBub3Qgc3VwcG9ydGVkLCBza2lwcGluZycpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gRW5hYmxlIGNyb3NzLWRvY3VtZW50IHZpZXcgdHJhbnNpdGlvbnMgdmlhIENTU1xuICAgICAgICBSc3hfVmlld19UcmFuc2l0aW9ucy5faW5qZWN0X3RyYW5zaXRpb25fY3NzKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSW5qZWN0IENTUyB0byBlbmFibGUgY3Jvc3MtZG9jdW1lbnQgdmlldyB0cmFuc2l0aW9uc1xuICAgICAqXG4gICAgICogVGhlIEB2aWV3LXRyYW5zaXRpb24geyBuYXZpZ2F0aW9uOiBhdXRvOyB9IHJ1bGUgdGVsbHMgdGhlIGJyb3dzZXIgdG86XG4gICAgICogMS4gQ2FwdHVyZSBhIHNuYXBzaG90IG9mIHRoZSBjdXJyZW50IHBhZ2UgYmVmb3JlIG5hdmlnYXRpb25cbiAgICAgKiAyLiBGZXRjaCB0aGUgbmV3IHBhZ2VcbiAgICAgKiAzLiBXYWl0IHVudGlsIHRoZSBuZXcgcGFnZSBpcyBmdWxseSBsb2FkZWQgYW5kIHBhaW50ZWQgKGRvY3VtZW50LnJlYWR5KVxuICAgICAqIDQuIEFuaW1hdGUgc21vb3RobHkgYmV0d2VlbiB0aGUgdHdvIHN0YXRlc1xuICAgICAqXG4gICAgICogVGhpcyBwcmV2ZW50cyB0aGUgd2hpdGUgZmxhc2ggZHVyaW5nIG5hdmlnYXRpb24gYW5kIGNyZWF0ZXMgYXBwLWxpa2UgdHJhbnNpdGlvbnMuXG4gICAgICovXG4gICAgc3RhdGljIF9pbmplY3RfdHJhbnNpdGlvbl9jc3MoKSB7XG4gICAgICAgIGNvbnN0IHN0eWxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTtcblxuICAgICAgICBzdHlsZS50ZXh0Q29udGVudCA9IGBcbiAgICAgICAgICAgIEB2aWV3LXRyYW5zaXRpb24ge1xuICAgICAgICAgICAgICAgIG5hdmlnYXRpb246IGF1dG87XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8qIERpc2FibGUgYW5pbWF0aW9uIC0gaW5zdGFudCB0cmFuc2l0aW9uICovXG4gICAgICAgICAgICA6OnZpZXctdHJhbnNpdGlvbi1ncm91cCgqKSxcbiAgICAgICAgICAgIDo6dmlldy10cmFuc2l0aW9uLW9sZCgqKSxcbiAgICAgICAgICAgIDo6dmlldy10cmFuc2l0aW9uLW5ldygqKSB7XG4gICAgICAgICAgICAgICAgYW5pbWF0aW9uLWR1cmF0aW9uOiAwcztcbiAgICAgICAgICAgIH1cbiAgICAgICAgYDtcblxuICAgICAgICBkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKHN0eWxlKTtcbiAgICB9XG59XG4iXSwibWFwcGluZ3MiOiI7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU1BLG9CQUFvQixDQUFDO0VBQ3ZCO0FBQ0o7QUFDQTtBQUNBO0VBQ0ksT0FBT0MsdUJBQXVCQSxDQUFBLEVBQUc7SUFDN0I7SUFDQSxJQUFJLENBQUNDLFFBQVEsQ0FBQ0MsbUJBQW1CLEVBQUU7TUFDL0JDLGFBQWEsQ0FBQyxrQkFBa0IsRUFBRSw4Q0FBOEMsQ0FBQztNQUNqRjtJQUNKOztJQUVBO0lBQ0FKLG9CQUFvQixDQUFDSyxzQkFBc0IsQ0FBQyxDQUFDO0VBQ2pEOztFQUVBO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7RUFDSSxPQUFPQSxzQkFBc0JBLENBQUEsRUFBRztJQUM1QixNQUFNQyxLQUFLLEdBQUdKLFFBQVEsQ0FBQ0ssYUFBYSxDQUFDLE9BQU8sQ0FBQztJQUU3Q0QsS0FBSyxDQUFDRSxXQUFXLEdBQUc7QUFDNUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0lBRUROLFFBQVEsQ0FBQ08sSUFBSSxDQUFDQyxXQUFXLENBQUNKLEtBQUssQ0FBQztFQUNwQztBQUNKIiwiaWdub3JlTGlzdCI6W119

View File

@@ -0,0 +1,12 @@
"use strict";
/**
* Projects_DataGrid Component
*
* Concrete implementation for projects datagrid.
* All functionality is in DataGrid_Abstract.
*/
class Projects_DataGrid extends DataGrid_Abstract {
// All behavior inherited from DataGrid_Abstract
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJQcm9qZWN0c19EYXRhR3JpZCIsIkRhdGFHcmlkX0Fic3RyYWN0Il0sInNvdXJjZXMiOlsicnN4L2FwcC9mcm9udGVuZC9wcm9qZWN0cy9pbmRleC9wcm9qZWN0c19kYXRhZ3JpZC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFByb2plY3RzX0RhdGFHcmlkIENvbXBvbmVudFxuICpcbiAqIENvbmNyZXRlIGltcGxlbWVudGF0aW9uIGZvciBwcm9qZWN0cyBkYXRhZ3JpZC5cbiAqIEFsbCBmdW5jdGlvbmFsaXR5IGlzIGluIERhdGFHcmlkX0Fic3RyYWN0LlxuICovXG5jbGFzcyBQcm9qZWN0c19EYXRhR3JpZCBleHRlbmRzIERhdGFHcmlkX0Fic3RyYWN0IHtcbiAgICAvLyBBbGwgYmVoYXZpb3IgaW5oZXJpdGVkIGZyb20gRGF0YUdyaWRfQWJzdHJhY3Rcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNQSxpQkFBaUIsU0FBU0MsaUJBQWlCLENBQUM7RUFDOUM7QUFBQSIsImlnbm9yZUxpc3QiOltdfQ==

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,31 @@
"use strict";
class Frontend_Settings_User_Management {
static init() {
if (!$('.Frontend_Settings_User_Management').exists()) return;
// Handle Add User button click
$('#btn_add_user').on('click', async function () {
await Frontend_Settings_User_Management.handle_add_user();
});
}
/**
* Add user workflow: show add modal, refresh grid, show invite modal
*/
static async handle_add_user() {
// Show add user modal
const user = await Add_User_Modal.show();
if (user) {
// Refresh the user list
$('.Users_DataGrid').component().reload();
// Show send invite modal
await Send_User_Invite_Modal.show(user.id);
}
}
static on_app_ready() {
Frontend_Settings_User_Management.init();
}
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJGcm9udGVuZF9TZXR0aW5nc19Vc2VyX01hbmFnZW1lbnQiLCJpbml0IiwiJCIsImV4aXN0cyIsIm9uIiwiaGFuZGxlX2FkZF91c2VyIiwidXNlciIsIkFkZF9Vc2VyX01vZGFsIiwic2hvdyIsImNvbXBvbmVudCIsInJlbG9hZCIsIlNlbmRfVXNlcl9JbnZpdGVfTW9kYWwiLCJpZCIsIm9uX2FwcF9yZWFkeSJdLCJzb3VyY2VzIjpbInJzeC9hcHAvZnJvbnRlbmQvc2V0dGluZ3MvdXNlcl9tYW5hZ2VtZW50L2Zyb250ZW5kX3NldHRpbmdzX3VzZXJfbWFuYWdlbWVudC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJjbGFzcyBGcm9udGVuZF9TZXR0aW5nc19Vc2VyX01hbmFnZW1lbnQge1xuICAgIHN0YXRpYyBpbml0KCkge1xuICAgICAgICBpZiAoISQoJy5Gcm9udGVuZF9TZXR0aW5nc19Vc2VyX01hbmFnZW1lbnQnKS5leGlzdHMoKSkgcmV0dXJuO1xuXG4gICAgICAgIC8vIEhhbmRsZSBBZGQgVXNlciBidXR0b24gY2xpY2tcbiAgICAgICAgJCgnI2J0bl9hZGRfdXNlcicpLm9uKCdjbGljaycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGF3YWl0IEZyb250ZW5kX1NldHRpbmdzX1VzZXJfTWFuYWdlbWVudC5oYW5kbGVfYWRkX3VzZXIoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQWRkIHVzZXIgd29ya2Zsb3c6IHNob3cgYWRkIG1vZGFsLCByZWZyZXNoIGdyaWQsIHNob3cgaW52aXRlIG1vZGFsXG4gICAgICovXG4gICAgc3RhdGljIGFzeW5jIGhhbmRsZV9hZGRfdXNlcigpIHtcbiAgICAgICAgLy8gU2hvdyBhZGQgdXNlciBtb2RhbFxuICAgICAgICBjb25zdCB1c2VyID0gYXdhaXQgQWRkX1VzZXJfTW9kYWwuc2hvdygpO1xuXG4gICAgICAgIGlmICh1c2VyKSB7XG4gICAgICAgICAgICAvLyBSZWZyZXNoIHRoZSB1c2VyIGxpc3RcbiAgICAgICAgICAgICQoJy5Vc2Vyc19EYXRhR3JpZCcpLmNvbXBvbmVudCgpLnJlbG9hZCgpO1xuXG4gICAgICAgICAgICAvLyBTaG93IHNlbmQgaW52aXRlIG1vZGFsXG4gICAgICAgICAgICBhd2FpdCBTZW5kX1VzZXJfSW52aXRlX01vZGFsLnNob3codXNlci5pZCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzdGF0aWMgb25fYXBwX3JlYWR5KCkge1xuICAgICAgICBGcm9udGVuZF9TZXR0aW5nc19Vc2VyX01hbmFnZW1lbnQuaW5pdCgpO1xuICAgIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7QUFBQSxNQUFNQSxpQ0FBaUMsQ0FBQztFQUNwQyxPQUFPQyxJQUFJQSxDQUFBLEVBQUc7SUFDVixJQUFJLENBQUNDLENBQUMsQ0FBQyxvQ0FBb0MsQ0FBQyxDQUFDQyxNQUFNLENBQUMsQ0FBQyxFQUFFOztJQUV2RDtJQUNBRCxDQUFDLENBQUMsZUFBZSxDQUFDLENBQUNFLEVBQUUsQ0FBQyxPQUFPLEVBQUUsa0JBQWtCO01BQzdDLE1BQU1KLGlDQUFpQyxDQUFDSyxlQUFlLENBQUMsQ0FBQztJQUM3RCxDQUFDLENBQUM7RUFDTjs7RUFFQTtBQUNKO0FBQ0E7RUFDSSxhQUFhQSxlQUFlQSxDQUFBLEVBQUc7SUFDM0I7SUFDQSxNQUFNQyxJQUFJLEdBQUcsTUFBTUMsY0FBYyxDQUFDQyxJQUFJLENBQUMsQ0FBQztJQUV4QyxJQUFJRixJQUFJLEVBQUU7TUFDTjtNQUNBSixDQUFDLENBQUMsaUJBQWlCLENBQUMsQ0FBQ08sU0FBUyxDQUFDLENBQUMsQ0FBQ0MsTUFBTSxDQUFDLENBQUM7O01BRXpDO01BQ0EsTUFBTUMsc0JBQXNCLENBQUNILElBQUksQ0FBQ0YsSUFBSSxDQUFDTSxFQUFFLENBQUM7SUFDOUM7RUFDSjtFQUVBLE9BQU9DLFlBQVlBLENBQUEsRUFBRztJQUNsQmIsaUNBQWlDLENBQUNDLElBQUksQ0FBQyxDQUFDO0VBQzVDO0FBQ0oiLCJpZ25vcmVMaXN0IjpbXX0=

View File

@@ -0,0 +1,46 @@
"use strict";
/**
* Form_Hidden_Field - Hidden input field component
*
* Extends Form_Field_Abstract but IS the input element itself (using tag="input" type="hidden").
* See form_hidden_field.jqhtml for full documentation.
*
* JavaScript Responsibilities:
* - Sets value attribute dynamically in on_create()
* - Overrides on_ready() to handle that this.$ IS both the widget and the input
* - Provides val() method for getting/setting the hidden value
*/
class Form_Hidden_Field extends Form_Field_Abstract {
on_create() {
// Call parent to set up form reference
super.on_create();
// Set initial value attribute (can't be done in Define tag)
this.$.attr('value', '');
}
on_ready() {
// Override parent on_ready() because this.$ IS the widget and the input
// Set data-name on this.$ (which is the input element)
this.$.attr('data-name', this.args.name);
// Set name attribute on this.$ for Form_Utils compatibility
this.$.attr('name', this.args.name);
}
/**
* val() - Get or set the hidden input value
* @param {string} [value] - If provided, sets the value
* @returns {string} The current value when called as getter
*/
val(value) {
if (arguments.length === 0) {
// Getter - this.$ is the input element itself
return this.$.val();
} else {
// Setter - update the input value directly (this.$ is the input)
this.$.val(value || '');
}
}
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJGb3JtX0hpZGRlbl9GaWVsZCIsIkZvcm1fRmllbGRfQWJzdHJhY3QiLCJvbl9jcmVhdGUiLCIkIiwiYXR0ciIsIm9uX3JlYWR5IiwiYXJncyIsIm5hbWUiLCJ2YWwiLCJ2YWx1ZSIsImFyZ3VtZW50cyIsImxlbmd0aCJdLCJzb3VyY2VzIjpbInJzeC90aGVtZS9jb21wb25lbnRzL2Zvcm1zL2Zvcm1faGlkZGVuX2ZpZWxkLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogRm9ybV9IaWRkZW5fRmllbGQgLSBIaWRkZW4gaW5wdXQgZmllbGQgY29tcG9uZW50XG4gKlxuICogRXh0ZW5kcyBGb3JtX0ZpZWxkX0Fic3RyYWN0IGJ1dCBJUyB0aGUgaW5wdXQgZWxlbWVudCBpdHNlbGYgKHVzaW5nIHRhZz1cImlucHV0XCIgdHlwZT1cImhpZGRlblwiKS5cbiAqIFNlZSBmb3JtX2hpZGRlbl9maWVsZC5qcWh0bWwgZm9yIGZ1bGwgZG9jdW1lbnRhdGlvbi5cbiAqXG4gKiBKYXZhU2NyaXB0IFJlc3BvbnNpYmlsaXRpZXM6XG4gKiAtIFNldHMgdmFsdWUgYXR0cmlidXRlIGR5bmFtaWNhbGx5IGluIG9uX2NyZWF0ZSgpXG4gKiAtIE92ZXJyaWRlcyBvbl9yZWFkeSgpIHRvIGhhbmRsZSB0aGF0IHRoaXMuJCBJUyBib3RoIHRoZSB3aWRnZXQgYW5kIHRoZSBpbnB1dFxuICogLSBQcm92aWRlcyB2YWwoKSBtZXRob2QgZm9yIGdldHRpbmcvc2V0dGluZyB0aGUgaGlkZGVuIHZhbHVlXG4gKi9cbmNsYXNzIEZvcm1fSGlkZGVuX0ZpZWxkIGV4dGVuZHMgRm9ybV9GaWVsZF9BYnN0cmFjdCB7XG4gICAgb25fY3JlYXRlKCkge1xuICAgICAgICAvLyBDYWxsIHBhcmVudCB0byBzZXQgdXAgZm9ybSByZWZlcmVuY2VcbiAgICAgICAgc3VwZXIub25fY3JlYXRlKCk7XG5cbiAgICAgICAgLy8gU2V0IGluaXRpYWwgdmFsdWUgYXR0cmlidXRlIChjYW4ndCBiZSBkb25lIGluIERlZmluZSB0YWcpXG4gICAgICAgIHRoaXMuJC5hdHRyKCd2YWx1ZScsICcnKTtcbiAgICB9XG5cbiAgICBvbl9yZWFkeSgpIHtcbiAgICAgICAgLy8gT3ZlcnJpZGUgcGFyZW50IG9uX3JlYWR5KCkgYmVjYXVzZSB0aGlzLiQgSVMgdGhlIHdpZGdldCBhbmQgdGhlIGlucHV0XG4gICAgICAgIC8vIFNldCBkYXRhLW5hbWUgb24gdGhpcy4kICh3aGljaCBpcyB0aGUgaW5wdXQgZWxlbWVudClcbiAgICAgICAgdGhpcy4kLmF0dHIoJ2RhdGEtbmFtZScsIHRoaXMuYXJncy5uYW1lKTtcblxuICAgICAgICAvLyBTZXQgbmFtZSBhdHRyaWJ1dGUgb24gdGhpcy4kIGZvciBGb3JtX1V0aWxzIGNvbXBhdGliaWxpdHlcbiAgICAgICAgdGhpcy4kLmF0dHIoJ25hbWUnLCB0aGlzLmFyZ3MubmFtZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogdmFsKCkgLSBHZXQgb3Igc2V0IHRoZSBoaWRkZW4gaW5wdXQgdmFsdWVcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3ZhbHVlXSAtIElmIHByb3ZpZGVkLCBzZXRzIHRoZSB2YWx1ZVxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSBjdXJyZW50IHZhbHVlIHdoZW4gY2FsbGVkIGFzIGdldHRlclxuICAgICAqL1xuICAgIHZhbCh2YWx1ZSkge1xuICAgICAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgLy8gR2V0dGVyIC0gdGhpcy4kIGlzIHRoZSBpbnB1dCBlbGVtZW50IGl0c2VsZlxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuJC52YWwoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIFNldHRlciAtIHVwZGF0ZSB0aGUgaW5wdXQgdmFsdWUgZGlyZWN0bHkgKHRoaXMuJCBpcyB0aGUgaW5wdXQpXG4gICAgICAgICAgICB0aGlzLiQudmFsKHZhbHVlIHx8ICcnKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTUEsaUJBQWlCLFNBQVNDLG1CQUFtQixDQUFDO0VBQ2hEQyxTQUFTQSxDQUFBLEVBQUc7SUFDUjtJQUNBLEtBQUssQ0FBQ0EsU0FBUyxDQUFDLENBQUM7O0lBRWpCO0lBQ0EsSUFBSSxDQUFDQyxDQUFDLENBQUNDLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDO0VBQzVCO0VBRUFDLFFBQVFBLENBQUEsRUFBRztJQUNQO0lBQ0E7SUFDQSxJQUFJLENBQUNGLENBQUMsQ0FBQ0MsSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUNFLElBQUksQ0FBQ0MsSUFBSSxDQUFDOztJQUV4QztJQUNBLElBQUksQ0FBQ0osQ0FBQyxDQUFDQyxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQ0UsSUFBSSxDQUFDQyxJQUFJLENBQUM7RUFDdkM7O0VBRUE7QUFDSjtBQUNBO0FBQ0E7QUFDQTtFQUNJQyxHQUFHQSxDQUFDQyxLQUFLLEVBQUU7SUFDUCxJQUFJQyxTQUFTLENBQUNDLE1BQU0sS0FBSyxDQUFDLEVBQUU7TUFDeEI7TUFDQSxPQUFPLElBQUksQ0FBQ1IsQ0FBQyxDQUFDSyxHQUFHLENBQUMsQ0FBQztJQUN2QixDQUFDLE1BQU07TUFDSDtNQUNBLElBQUksQ0FBQ0wsQ0FBQyxDQUFDSyxHQUFHLENBQUNDLEtBQUssSUFBSSxFQUFFLENBQUM7SUFDM0I7RUFDSjtBQUNKIiwiaWdub3JlTGlzdCI6W119

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,8 @@
"use strict";
class Empty_State extends Jqhtml_Component {
on_ready() {
// No special behavior
}
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJFbXB0eV9TdGF0ZSIsIkpxaHRtbF9Db21wb25lbnQiLCJvbl9yZWFkeSJdLCJzb3VyY2VzIjpbInJzeC90aGVtZS9jb21wb25lbnRzL19hcmNoaXZlZC91bmZpbmlzaGVkL0VtcHR5X1N0YXRlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImNsYXNzIEVtcHR5X1N0YXRlIGV4dGVuZHMgSnFodG1sX0NvbXBvbmVudCB7XG4gICAgb25fcmVhZHkoKSB7XG4gICAgICAgIC8vIE5vIHNwZWNpYWwgYmVoYXZpb3JcbiAgICB9XG59XG4iXSwibWFwcGluZ3MiOiI7O0FBQUEsTUFBTUEsV0FBVyxTQUFTQyxnQkFBZ0IsQ0FBQztFQUN2Q0MsUUFBUUEsQ0FBQSxFQUFHO0lBQ1A7RUFBQTtBQUVSIiwiaWdub3JlTGlzdCI6W119

View File

@@ -0,0 +1,28 @@
"use strict";
class Frontend_Projects_Add {
static init() {
if (!$(".Frontend_Projects_Add").exists()) return;
// Initialize your component here
console.log('Frontend_Projects_Add initialized');
// Example: Handle button clicks
$('.btn-action').on('click', function () {
// Handle action
});
// Example: Initialize tooltips
$('[data-bs-toggle="tooltip"]').tooltip();
}
static on_app_ready() {
Frontend_Projects_Add.init();
}
// static on_jqhtml_ready() {
// // Called after all JQHTML components have loaded and rendered
// // Use this if you need to interact with JQHTML components
// // Otherwise, use on_app_ready() for most initialization
// }
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJGcm9udGVuZF9Qcm9qZWN0c19BZGQiLCJpbml0IiwiJCIsImV4aXN0cyIsImNvbnNvbGUiLCJsb2ciLCJvbiIsInRvb2x0aXAiLCJvbl9hcHBfcmVhZHkiXSwic291cmNlcyI6WyJyc3gvYXBwL2Zyb250ZW5kL3Byb2plY3RzL2Zyb250ZW5kX3Byb2plY3RzX2FkZC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJjbGFzcyBGcm9udGVuZF9Qcm9qZWN0c19BZGQge1xuICAgIHN0YXRpYyBpbml0KCkge1xuICAgICAgICBpZiAoISQoXCIuRnJvbnRlbmRfUHJvamVjdHNfQWRkXCIpLmV4aXN0cygpKSByZXR1cm47XG5cbiAgICAgICAgLy8gSW5pdGlhbGl6ZSB5b3VyIGNvbXBvbmVudCBoZXJlXG4gICAgICAgIGNvbnNvbGUubG9nKCdGcm9udGVuZF9Qcm9qZWN0c19BZGQgaW5pdGlhbGl6ZWQnKTtcblxuICAgICAgICAvLyBFeGFtcGxlOiBIYW5kbGUgYnV0dG9uIGNsaWNrc1xuICAgICAgICAkKCcuYnRuLWFjdGlvbicpLm9uKCdjbGljaycsIGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgLy8gSGFuZGxlIGFjdGlvblxuICAgICAgICB9KTtcblxuICAgICAgICAvLyBFeGFtcGxlOiBJbml0aWFsaXplIHRvb2x0aXBzXG4gICAgICAgICQoJ1tkYXRhLWJzLXRvZ2dsZT1cInRvb2x0aXBcIl0nKS50b29sdGlwKCk7XG4gICAgfVxuXG4gICAgc3RhdGljIG9uX2FwcF9yZWFkeSgpIHtcbiAgICAgICAgRnJvbnRlbmRfUHJvamVjdHNfQWRkLmluaXQoKTtcbiAgICB9XG5cbiAgICAvLyBzdGF0aWMgb25fanFodG1sX3JlYWR5KCkge1xuICAgIC8vICAgICAvLyBDYWxsZWQgYWZ0ZXIgYWxsIEpRSFRNTCBjb21wb25lbnRzIGhhdmUgbG9hZGVkIGFuZCByZW5kZXJlZFxuICAgIC8vICAgICAvLyBVc2UgdGhpcyBpZiB5b3UgbmVlZCB0byBpbnRlcmFjdCB3aXRoIEpRSFRNTCBjb21wb25lbnRzXG4gICAgLy8gICAgIC8vIE90aGVyd2lzZSwgdXNlIG9uX2FwcF9yZWFkeSgpIGZvciBtb3N0IGluaXRpYWxpemF0aW9uXG4gICAgLy8gfVxufSJdLCJtYXBwaW5ncyI6Ijs7QUFBQSxNQUFNQSxxQkFBcUIsQ0FBQztFQUN4QixPQUFPQyxJQUFJQSxDQUFBLEVBQUc7SUFDVixJQUFJLENBQUNDLENBQUMsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDQyxNQUFNLENBQUMsQ0FBQyxFQUFFOztJQUUzQztJQUNBQyxPQUFPLENBQUNDLEdBQUcsQ0FBQyxtQ0FBbUMsQ0FBQzs7SUFFaEQ7SUFDQUgsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDSSxFQUFFLENBQUMsT0FBTyxFQUFFLFlBQVc7TUFDcEM7SUFBQSxDQUNILENBQUM7O0lBRUY7SUFDQUosQ0FBQyxDQUFDLDRCQUE0QixDQUFDLENBQUNLLE9BQU8sQ0FBQyxDQUFDO0VBQzdDO0VBRUEsT0FBT0MsWUFBWUEsQ0FBQSxFQUFHO0lBQ2xCUixxQkFBcUIsQ0FBQ0MsSUFBSSxDQUFDLENBQUM7RUFDaEM7O0VBRUE7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBQUNKIiwiaWdub3JlTGlzdCI6W119

View File

@@ -0,0 +1,38 @@
"use strict";
/**
* Checkbox - Bootstrap 5 Checkbox Input Component
*
* Purpose: Single checkbox for yes/no, true/false selections
* Design: Bootstrap .form-check-input styling
* Wrapper: Typically used within <div class="form-check"> for proper layout
*/
class Checkbox extends Jqhtml_Component {
on_ready() {
// Set checked state if provided
if (this.args.checked) {
this.$.prop('checked', true);
}
// Set value if provided
if (this.args.value) {
this.$.val(this.args.value);
}
// Add custom classes if provided
if (this.args.class) {
this.$.addClass(this.args.class);
}
// Set disabled state if provided
if (this.args.disabled) {
this.$.prop('disabled', true);
}
// Set required attribute if provided
if (this.args.required) {
this.$.prop('required', true);
}
}
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJDaGVja2JveCIsIkpxaHRtbF9Db21wb25lbnQiLCJvbl9yZWFkeSIsImFyZ3MiLCJjaGVja2VkIiwiJCIsInByb3AiLCJ2YWx1ZSIsInZhbCIsImNsYXNzIiwiYWRkQ2xhc3MiLCJkaXNhYmxlZCIsInJlcXVpcmVkIl0sInNvdXJjZXMiOlsicnN4L3RoZW1lL2NvbXBvbmVudHMvX2FyY2hpdmVkL3VuZmluaXNoZWQvQ2hlY2tib3guanMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDaGVja2JveCAtIEJvb3RzdHJhcCA1IENoZWNrYm94IElucHV0IENvbXBvbmVudFxuICpcbiAqIFB1cnBvc2U6IFNpbmdsZSBjaGVja2JveCBmb3IgeWVzL25vLCB0cnVlL2ZhbHNlIHNlbGVjdGlvbnNcbiAqIERlc2lnbjogQm9vdHN0cmFwIC5mb3JtLWNoZWNrLWlucHV0IHN0eWxpbmdcbiAqIFdyYXBwZXI6IFR5cGljYWxseSB1c2VkIHdpdGhpbiA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVja1wiPiBmb3IgcHJvcGVyIGxheW91dFxuICovXG5jbGFzcyBDaGVja2JveCBleHRlbmRzIEpxaHRtbF9Db21wb25lbnQge1xuICAgIG9uX3JlYWR5KCkge1xuICAgICAgICAvLyBTZXQgY2hlY2tlZCBzdGF0ZSBpZiBwcm92aWRlZFxuICAgICAgICBpZiAodGhpcy5hcmdzLmNoZWNrZWQpIHtcbiAgICAgICAgICAgIHRoaXMuJC5wcm9wKCdjaGVja2VkJywgdHJ1ZSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBTZXQgdmFsdWUgaWYgcHJvdmlkZWRcbiAgICAgICAgaWYgKHRoaXMuYXJncy52YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy4kLnZhbCh0aGlzLmFyZ3MudmFsdWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQWRkIGN1c3RvbSBjbGFzc2VzIGlmIHByb3ZpZGVkXG4gICAgICAgIGlmICh0aGlzLmFyZ3MuY2xhc3MpIHtcbiAgICAgICAgICAgIHRoaXMuJC5hZGRDbGFzcyh0aGlzLmFyZ3MuY2xhc3MpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gU2V0IGRpc2FibGVkIHN0YXRlIGlmIHByb3ZpZGVkXG4gICAgICAgIGlmICh0aGlzLmFyZ3MuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHRoaXMuJC5wcm9wKCdkaXNhYmxlZCcsIHRydWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gU2V0IHJlcXVpcmVkIGF0dHJpYnV0ZSBpZiBwcm92aWRlZFxuICAgICAgICBpZiAodGhpcy5hcmdzLnJlcXVpcmVkKSB7XG4gICAgICAgICAgICB0aGlzLiQucHJvcCgncmVxdWlyZWQnLCB0cnVlKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU1BLFFBQVEsU0FBU0MsZ0JBQWdCLENBQUM7RUFDcENDLFFBQVFBLENBQUEsRUFBRztJQUNQO0lBQ0EsSUFBSSxJQUFJLENBQUNDLElBQUksQ0FBQ0MsT0FBTyxFQUFFO01BQ25CLElBQUksQ0FBQ0MsQ0FBQyxDQUFDQyxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQztJQUNoQzs7SUFFQTtJQUNBLElBQUksSUFBSSxDQUFDSCxJQUFJLENBQUNJLEtBQUssRUFBRTtNQUNqQixJQUFJLENBQUNGLENBQUMsQ0FBQ0csR0FBRyxDQUFDLElBQUksQ0FBQ0wsSUFBSSxDQUFDSSxLQUFLLENBQUM7SUFDL0I7O0lBRUE7SUFDQSxJQUFJLElBQUksQ0FBQ0osSUFBSSxDQUFDTSxLQUFLLEVBQUU7TUFDakIsSUFBSSxDQUFDSixDQUFDLENBQUNLLFFBQVEsQ0FBQyxJQUFJLENBQUNQLElBQUksQ0FBQ00sS0FBSyxDQUFDO0lBQ3BDOztJQUVBO0lBQ0EsSUFBSSxJQUFJLENBQUNOLElBQUksQ0FBQ1EsUUFBUSxFQUFFO01BQ3BCLElBQUksQ0FBQ04sQ0FBQyxDQUFDQyxJQUFJLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQztJQUNqQzs7SUFFQTtJQUNBLElBQUksSUFBSSxDQUFDSCxJQUFJLENBQUNTLFFBQVEsRUFBRTtNQUNwQixJQUFJLENBQUNQLENBQUMsQ0FBQ0MsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUM7SUFDakM7RUFDSjtBQUNKIiwiaWdub3JlTGlzdCI6W119

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,48 @@
"use strict";
/**
* Rsx_Init - Core framework initialization and environment validation
*/
class Rsx_Init {
/**
* Called via Rsx._rsx_core_boot
* Initializes the core environment and runs basic sanity checks
*/
static _on_framework_core_init() {
if (!Rsx.is_prod()) {
Rsx_Init.__environment_checks();
}
}
/**
* Development environment checks to ensure proper configuration
*/
static __environment_checks() {
// Find all script tags in the DOM
const scripts = document.getElementsByTagName('script');
for (let i = 0; i < scripts.length; i++) {
const script = scripts[i];
// Skip inline scripts (no src attribute)
if (!script.src) {
continue;
}
// Check if script has defer attribute
if (!script.defer) {
const src = script.src || '(inline script)';
const reason = `All script tags used in an RSpade project must have defer attribute. Found script without defer: ${src}`;
// Stop framework boot with reason
Rsx._rsx_core_boot_stop(reason);
// Also log to console for visibility
console.error(`[RSX BOOT STOPPED] ${reason}`);
// Stop checking after first violation
return;
}
}
}
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSc3hfSW5pdCIsIl9vbl9mcmFtZXdvcmtfY29yZV9pbml0IiwiUnN4IiwiaXNfcHJvZCIsIl9fZW52aXJvbm1lbnRfY2hlY2tzIiwic2NyaXB0cyIsImRvY3VtZW50IiwiZ2V0RWxlbWVudHNCeVRhZ05hbWUiLCJpIiwibGVuZ3RoIiwic2NyaXB0Iiwic3JjIiwiZGVmZXIiLCJyZWFzb24iLCJfcnN4X2NvcmVfYm9vdF9zdG9wIiwiY29uc29sZSIsImVycm9yIl0sInNvdXJjZXMiOlsiYXBwL1JTcGFkZS9Db3JlL0pzL1JzeF9Jbml0LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogUnN4X0luaXQgLSBDb3JlIGZyYW1ld29yayBpbml0aWFsaXphdGlvbiBhbmQgZW52aXJvbm1lbnQgdmFsaWRhdGlvblxuICovXG5jbGFzcyBSc3hfSW5pdCB7XG4gICAgLyoqXG4gICAgICogQ2FsbGVkIHZpYSBSc3guX3JzeF9jb3JlX2Jvb3RcbiAgICAgKiBJbml0aWFsaXplcyB0aGUgY29yZSBlbnZpcm9ubWVudCBhbmQgcnVucyBiYXNpYyBzYW5pdHkgY2hlY2tzXG4gICAgICovXG4gICAgc3RhdGljIF9vbl9mcmFtZXdvcmtfY29yZV9pbml0KCkge1xuICAgICAgICBpZiAoIVJzeC5pc19wcm9kKCkpIHtcbiAgICAgICAgICAgIFJzeF9Jbml0Ll9fZW52aXJvbm1lbnRfY2hlY2tzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEZXZlbG9wbWVudCBlbnZpcm9ubWVudCBjaGVja3MgdG8gZW5zdXJlIHByb3BlciBjb25maWd1cmF0aW9uXG4gICAgICovXG4gICAgc3RhdGljIF9fZW52aXJvbm1lbnRfY2hlY2tzKCkge1xuICAgICAgICAvLyBGaW5kIGFsbCBzY3JpcHQgdGFncyBpbiB0aGUgRE9NXG4gICAgICAgIGNvbnN0IHNjcmlwdHMgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnc2NyaXB0Jyk7XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzY3JpcHRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBzY3JpcHQgPSBzY3JpcHRzW2ldO1xuXG4gICAgICAgICAgICAvLyBTa2lwIGlubGluZSBzY3JpcHRzIChubyBzcmMgYXR0cmlidXRlKVxuICAgICAgICAgICAgaWYgKCFzY3JpcHQuc3JjKSB7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIENoZWNrIGlmIHNjcmlwdCBoYXMgZGVmZXIgYXR0cmlidXRlXG4gICAgICAgICAgICBpZiAoIXNjcmlwdC5kZWZlcikge1xuICAgICAgICAgICAgICAgIGNvbnN0IHNyYyA9IHNjcmlwdC5zcmMgfHwgJyhpbmxpbmUgc2NyaXB0KSc7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVhc29uID0gYEFsbCBzY3JpcHQgdGFncyB1c2VkIGluIGFuIFJTcGFkZSBwcm9qZWN0IG11c3QgaGF2ZSBkZWZlciBhdHRyaWJ1dGUuIEZvdW5kIHNjcmlwdCB3aXRob3V0IGRlZmVyOiAke3NyY31gO1xuXG4gICAgICAgICAgICAgICAgLy8gU3RvcCBmcmFtZXdvcmsgYm9vdCB3aXRoIHJlYXNvblxuICAgICAgICAgICAgICAgIFJzeC5fcnN4X2NvcmVfYm9vdF9zdG9wKHJlYXNvbik7XG5cbiAgICAgICAgICAgICAgICAvLyBBbHNvIGxvZyB0byBjb25zb2xlIGZvciB2aXNpYmlsaXR5XG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihgW1JTWCBCT09UIFNUT1BQRURdICR7cmVhc29ufWApO1xuXG4gICAgICAgICAgICAgICAgLy8gU3RvcCBjaGVja2luZyBhZnRlciBmaXJzdCB2aW9sYXRpb25cbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59Il0sIm1hcHBpbmdzIjoiOztBQUFBO0FBQ0E7QUFDQTtBQUNBLE1BQU1BLFFBQVEsQ0FBQztFQUNYO0FBQ0o7QUFDQTtBQUNBO0VBQ0ksT0FBT0MsdUJBQXVCQSxDQUFBLEVBQUc7SUFDN0IsSUFBSSxDQUFDQyxHQUFHLENBQUNDLE9BQU8sQ0FBQyxDQUFDLEVBQUU7TUFDaEJILFFBQVEsQ0FBQ0ksb0JBQW9CLENBQUMsQ0FBQztJQUNuQztFQUNKOztFQUVBO0FBQ0o7QUFDQTtFQUNJLE9BQU9BLG9CQUFvQkEsQ0FBQSxFQUFHO0lBQzFCO0lBQ0EsTUFBTUMsT0FBTyxHQUFHQyxRQUFRLENBQUNDLG9CQUFvQixDQUFDLFFBQVEsQ0FBQztJQUV2RCxLQUFLLElBQUlDLENBQUMsR0FBRyxDQUFDLEVBQUVBLENBQUMsR0FBR0gsT0FBTyxDQUFDSSxNQUFNLEVBQUVELENBQUMsRUFBRSxFQUFFO01BQ3JDLE1BQU1FLE1BQU0sR0FBR0wsT0FBTyxDQUFDRyxDQUFDLENBQUM7O01BRXpCO01BQ0EsSUFBSSxDQUFDRSxNQUFNLENBQUNDLEdBQUcsRUFBRTtRQUNiO01BQ0o7O01BRUE7TUFDQSxJQUFJLENBQUNELE1BQU0sQ0FBQ0UsS0FBSyxFQUFFO1FBQ2YsTUFBTUQsR0FBRyxHQUFHRCxNQUFNLENBQUNDLEdBQUcsSUFBSSxpQkFBaUI7UUFDM0MsTUFBTUUsTUFBTSxHQUFHLG9HQUFvR0YsR0FBRyxFQUFFOztRQUV4SDtRQUNBVCxHQUFHLENBQUNZLG1CQUFtQixDQUFDRCxNQUFNLENBQUM7O1FBRS9CO1FBQ0FFLE9BQU8sQ0FBQ0MsS0FBSyxDQUFDLHNCQUFzQkgsTUFBTSxFQUFFLENBQUM7O1FBRTdDO1FBQ0E7TUFDSjtJQUNKO0VBQ0o7QUFDSiIsImlnbm9yZUxpc3QiOltdfQ==

View File

@@ -0,0 +1,28 @@
"use strict";
class Frontend_Invoices {
static init() {
if (!$(".Frontend_Invoices").exists()) return;
// Initialize your component here
console.log('Frontend_Invoices initialized');
// Example: Handle button clicks
$('.btn-action').on('click', function () {
// Handle action
});
// Example: Initialize tooltips
$('[data-bs-toggle="tooltip"]').tooltip();
}
static on_app_ready() {
Frontend_Invoices.init();
}
// static on_jqhtml_ready() {
// // Called after all JQHTML components have loaded and rendered
// // Use this if you need to interact with JQHTML components
// // Otherwise, use on_app_ready() for most initialization
// }
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJGcm9udGVuZF9JbnZvaWNlcyIsImluaXQiLCIkIiwiZXhpc3RzIiwiY29uc29sZSIsImxvZyIsIm9uIiwidG9vbHRpcCIsIm9uX2FwcF9yZWFkeSJdLCJzb3VyY2VzIjpbInJzeC9hcHAvZnJvbnRlbmQvaW52b2ljZXMvZnJvbnRlbmRfaW52b2ljZXMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiY2xhc3MgRnJvbnRlbmRfSW52b2ljZXMge1xuICAgIHN0YXRpYyBpbml0KCkge1xuICAgICAgICBpZiAoISQoXCIuRnJvbnRlbmRfSW52b2ljZXNcIikuZXhpc3RzKCkpIHJldHVybjtcblxuICAgICAgICAvLyBJbml0aWFsaXplIHlvdXIgY29tcG9uZW50IGhlcmVcbiAgICAgICAgY29uc29sZS5sb2coJ0Zyb250ZW5kX0ludm9pY2VzIGluaXRpYWxpemVkJyk7XG5cbiAgICAgICAgLy8gRXhhbXBsZTogSGFuZGxlIGJ1dHRvbiBjbGlja3NcbiAgICAgICAgJCgnLmJ0bi1hY3Rpb24nKS5vbignY2xpY2snLCBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIC8vIEhhbmRsZSBhY3Rpb25cbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gRXhhbXBsZTogSW5pdGlhbGl6ZSB0b29sdGlwc1xuICAgICAgICAkKCdbZGF0YS1icy10b2dnbGU9XCJ0b29sdGlwXCJdJykudG9vbHRpcCgpO1xuICAgIH1cblxuICAgIHN0YXRpYyBvbl9hcHBfcmVhZHkoKSB7XG4gICAgICAgIEZyb250ZW5kX0ludm9pY2VzLmluaXQoKTtcbiAgICB9XG5cbiAgICAvLyBzdGF0aWMgb25fanFodG1sX3JlYWR5KCkge1xuICAgIC8vICAgICAvLyBDYWxsZWQgYWZ0ZXIgYWxsIEpRSFRNTCBjb21wb25lbnRzIGhhdmUgbG9hZGVkIGFuZCByZW5kZXJlZFxuICAgIC8vICAgICAvLyBVc2UgdGhpcyBpZiB5b3UgbmVlZCB0byBpbnRlcmFjdCB3aXRoIEpRSFRNTCBjb21wb25lbnRzXG4gICAgLy8gICAgIC8vIE90aGVyd2lzZSwgdXNlIG9uX2FwcF9yZWFkeSgpIGZvciBtb3N0IGluaXRpYWxpemF0aW9uXG4gICAgLy8gfVxufSJdLCJtYXBwaW5ncyI6Ijs7QUFBQSxNQUFNQSxpQkFBaUIsQ0FBQztFQUNwQixPQUFPQyxJQUFJQSxDQUFBLEVBQUc7SUFDVixJQUFJLENBQUNDLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDQyxNQUFNLENBQUMsQ0FBQyxFQUFFOztJQUV2QztJQUNBQyxPQUFPLENBQUNDLEdBQUcsQ0FBQywrQkFBK0IsQ0FBQzs7SUFFNUM7SUFDQUgsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDSSxFQUFFLENBQUMsT0FBTyxFQUFFLFlBQVc7TUFDcEM7SUFBQSxDQUNILENBQUM7O0lBRUY7SUFDQUosQ0FBQyxDQUFDLDRCQUE0QixDQUFDLENBQUNLLE9BQU8sQ0FBQyxDQUFDO0VBQzdDO0VBRUEsT0FBT0MsWUFBWUEsQ0FBQSxFQUFHO0lBQ2xCUixpQkFBaUIsQ0FBQ0MsSUFBSSxDQUFDLENBQUM7RUFDNUI7O0VBRUE7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBQUNKIiwiaWdub3JlTGlzdCI6W119

View File

@@ -0,0 +1,14 @@
"use strict";
class Frontend_Clients {
static init() {
if (!$('.Frontend_Clients').exists()) return;
// Initialize your component here
console.log('Frontend_Clients initialized');
}
static on_app_ready() {
Frontend_Clients.init();
}
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJGcm9udGVuZF9DbGllbnRzIiwiaW5pdCIsIiQiLCJleGlzdHMiLCJjb25zb2xlIiwibG9nIiwib25fYXBwX3JlYWR5Il0sInNvdXJjZXMiOlsicnN4L2FwcC9mcm9udGVuZC9jbGllbnRzL2Zyb250ZW5kX2NsaWVudHMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiY2xhc3MgRnJvbnRlbmRfQ2xpZW50cyB7XG4gICAgc3RhdGljIGluaXQoKSB7XG4gICAgICAgIGlmICghJCgnLkZyb250ZW5kX0NsaWVudHMnKS5leGlzdHMoKSkgcmV0dXJuO1xuXG4gICAgICAgIC8vIEluaXRpYWxpemUgeW91ciBjb21wb25lbnQgaGVyZVxuICAgICAgICBjb25zb2xlLmxvZygnRnJvbnRlbmRfQ2xpZW50cyBpbml0aWFsaXplZCcpO1xuICAgIH1cblxuICAgIHN0YXRpYyBvbl9hcHBfcmVhZHkoKSB7XG4gICAgICAgIEZyb250ZW5kX0NsaWVudHMuaW5pdCgpO1xuICAgIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7QUFBQSxNQUFNQSxnQkFBZ0IsQ0FBQztFQUNuQixPQUFPQyxJQUFJQSxDQUFBLEVBQUc7SUFDVixJQUFJLENBQUNDLENBQUMsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDQyxNQUFNLENBQUMsQ0FBQyxFQUFFOztJQUV0QztJQUNBQyxPQUFPLENBQUNDLEdBQUcsQ0FBQyw4QkFBOEIsQ0FBQztFQUMvQztFQUVBLE9BQU9DLFlBQVlBLENBQUEsRUFBRztJQUNsQk4sZ0JBQWdCLENBQUNDLElBQUksQ0FBQyxDQUFDO0VBQzNCO0FBQ0oiLCJpZ25vcmVMaXN0IjpbXX0=

View File

@@ -0,0 +1,42 @@
"use strict";
/**
* Textarea - Bootstrap 5 Multi-line Text Input Component
*
* Purpose: Multi-line text input for longer content like descriptions, comments, notes
* Design: Bootstrap .form-control styling (same as Input)
*/
class Textarea extends Jqhtml_Component {
on_ready() {
// Set rows if provided
if (this.args.rows) {
this.$.attr('rows', this.args.rows);
}
// Set placeholder if provided
if (this.args.placeholder) {
this.$.attr('placeholder', this.args.placeholder);
}
// Set value if provided (overrides content())
if (this.args.value) {
this.$.val(this.args.value);
}
// Add custom classes if provided
if (this.args.class) {
this.$.addClass(this.args.class);
}
// Set disabled state if provided
if (this.args.disabled) {
this.$.prop('disabled', true);
}
// Set required attribute if provided
if (this.args.required) {
this.$.prop('required', true);
}
}
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJUZXh0YXJlYSIsIkpxaHRtbF9Db21wb25lbnQiLCJvbl9yZWFkeSIsImFyZ3MiLCJyb3dzIiwiJCIsImF0dHIiLCJwbGFjZWhvbGRlciIsInZhbHVlIiwidmFsIiwiY2xhc3MiLCJhZGRDbGFzcyIsImRpc2FibGVkIiwicHJvcCIsInJlcXVpcmVkIl0sInNvdXJjZXMiOlsicnN4L3RoZW1lL2NvbXBvbmVudHMvX2FyY2hpdmVkL3VuZmluaXNoZWQvVGV4dGFyZWEuanMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBUZXh0YXJlYSAtIEJvb3RzdHJhcCA1IE11bHRpLWxpbmUgVGV4dCBJbnB1dCBDb21wb25lbnRcbiAqXG4gKiBQdXJwb3NlOiBNdWx0aS1saW5lIHRleHQgaW5wdXQgZm9yIGxvbmdlciBjb250ZW50IGxpa2UgZGVzY3JpcHRpb25zLCBjb21tZW50cywgbm90ZXNcbiAqIERlc2lnbjogQm9vdHN0cmFwIC5mb3JtLWNvbnRyb2wgc3R5bGluZyAoc2FtZSBhcyBJbnB1dClcbiAqL1xuY2xhc3MgVGV4dGFyZWEgZXh0ZW5kcyBKcWh0bWxfQ29tcG9uZW50IHtcbiAgICBvbl9yZWFkeSgpIHtcbiAgICAgICAgLy8gU2V0IHJvd3MgaWYgcHJvdmlkZWRcbiAgICAgICAgaWYgKHRoaXMuYXJncy5yb3dzKSB7XG4gICAgICAgICAgICB0aGlzLiQuYXR0cigncm93cycsIHRoaXMuYXJncy5yb3dzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFNldCBwbGFjZWhvbGRlciBpZiBwcm92aWRlZFxuICAgICAgICBpZiAodGhpcy5hcmdzLnBsYWNlaG9sZGVyKSB7XG4gICAgICAgICAgICB0aGlzLiQuYXR0cigncGxhY2Vob2xkZXInLCB0aGlzLmFyZ3MucGxhY2Vob2xkZXIpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gU2V0IHZhbHVlIGlmIHByb3ZpZGVkIChvdmVycmlkZXMgY29udGVudCgpKVxuICAgICAgICBpZiAodGhpcy5hcmdzLnZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLiQudmFsKHRoaXMuYXJncy52YWx1ZSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBBZGQgY3VzdG9tIGNsYXNzZXMgaWYgcHJvdmlkZWRcbiAgICAgICAgaWYgKHRoaXMuYXJncy5jbGFzcykge1xuICAgICAgICAgICAgdGhpcy4kLmFkZENsYXNzKHRoaXMuYXJncy5jbGFzcyk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBTZXQgZGlzYWJsZWQgc3RhdGUgaWYgcHJvdmlkZWRcbiAgICAgICAgaWYgKHRoaXMuYXJncy5kaXNhYmxlZCkge1xuICAgICAgICAgICAgdGhpcy4kLnByb3AoJ2Rpc2FibGVkJywgdHJ1ZSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBTZXQgcmVxdWlyZWQgYXR0cmlidXRlIGlmIHByb3ZpZGVkXG4gICAgICAgIGlmICh0aGlzLmFyZ3MucmVxdWlyZWQpIHtcbiAgICAgICAgICAgIHRoaXMuJC5wcm9wKCdyZXF1aXJlZCcsIHRydWUpO1xuICAgICAgICB9XG4gICAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU1BLFFBQVEsU0FBU0MsZ0JBQWdCLENBQUM7RUFDcENDLFFBQVFBLENBQUEsRUFBRztJQUNQO0lBQ0EsSUFBSSxJQUFJLENBQUNDLElBQUksQ0FBQ0MsSUFBSSxFQUFFO01BQ2hCLElBQUksQ0FBQ0MsQ0FBQyxDQUFDQyxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQ0gsSUFBSSxDQUFDQyxJQUFJLENBQUM7SUFDdkM7O0lBRUE7SUFDQSxJQUFJLElBQUksQ0FBQ0QsSUFBSSxDQUFDSSxXQUFXLEVBQUU7TUFDdkIsSUFBSSxDQUFDRixDQUFDLENBQUNDLElBQUksQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDSCxJQUFJLENBQUNJLFdBQVcsQ0FBQztJQUNyRDs7SUFFQTtJQUNBLElBQUksSUFBSSxDQUFDSixJQUFJLENBQUNLLEtBQUssRUFBRTtNQUNqQixJQUFJLENBQUNILENBQUMsQ0FBQ0ksR0FBRyxDQUFDLElBQUksQ0FBQ04sSUFBSSxDQUFDSyxLQUFLLENBQUM7SUFDL0I7O0lBRUE7SUFDQSxJQUFJLElBQUksQ0FBQ0wsSUFBSSxDQUFDTyxLQUFLLEVBQUU7TUFDakIsSUFBSSxDQUFDTCxDQUFDLENBQUNNLFFBQVEsQ0FBQyxJQUFJLENBQUNSLElBQUksQ0FBQ08sS0FBSyxDQUFDO0lBQ3BDOztJQUVBO0lBQ0EsSUFBSSxJQUFJLENBQUNQLElBQUksQ0FBQ1MsUUFBUSxFQUFFO01BQ3BCLElBQUksQ0FBQ1AsQ0FBQyxDQUFDUSxJQUFJLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQztJQUNqQzs7SUFFQTtJQUNBLElBQUksSUFBSSxDQUFDVixJQUFJLENBQUNXLFFBQVEsRUFBRTtNQUNwQixJQUFJLENBQUNULENBQUMsQ0FBQ1EsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUM7SUFDakM7RUFDSjtBQUNKIiwiaWdub3JlTGlzdCI6W119

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,28 @@
"use strict";
/**
* Decorator function that marks a function as a decorator implementation.
*
* When a function has @decorator in its JSDoc comment, it whitelists that function
* to be used as a decorator on other methods throughout the codebase.
*
* The function itself performs no operation - it simply returns its input unchanged.
* Its purpose is purely as a marker for the manifest validation system.
*
* Usage:
* // /**
* // * My custom decorator implementation
* // * @decorator
* // *\/
* function my_custom_decorator(target, key, descriptor) {
* // Decorator implementation
* }
*
* This allows my_custom_decorator to be used as @my_custom_decorator on static methods.
*
* TODO: This is probably no longer necessary? maybe?
*/
function decorator(value) {
return value;
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJkZWNvcmF0b3IiLCJ2YWx1ZSJdLCJzb3VyY2VzIjpbImFwcC9SU3BhZGUvQ29yZS9Kcy9kZWNvcmF0b3IuanMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBEZWNvcmF0b3IgZnVuY3Rpb24gdGhhdCBtYXJrcyBhIGZ1bmN0aW9uIGFzIGEgZGVjb3JhdG9yIGltcGxlbWVudGF0aW9uLlxuICpcbiAqIFdoZW4gYSBmdW5jdGlvbiBoYXMgQGRlY29yYXRvciBpbiBpdHMgSlNEb2MgY29tbWVudCwgaXQgd2hpdGVsaXN0cyB0aGF0IGZ1bmN0aW9uXG4gKiB0byBiZSB1c2VkIGFzIGEgZGVjb3JhdG9yIG9uIG90aGVyIG1ldGhvZHMgdGhyb3VnaG91dCB0aGUgY29kZWJhc2UuXG4gKlxuICogVGhlIGZ1bmN0aW9uIGl0c2VsZiBwZXJmb3JtcyBubyBvcGVyYXRpb24gLSBpdCBzaW1wbHkgcmV0dXJucyBpdHMgaW5wdXQgdW5jaGFuZ2VkLlxuICogSXRzIHB1cnBvc2UgaXMgcHVyZWx5IGFzIGEgbWFya2VyIGZvciB0aGUgbWFuaWZlc3QgdmFsaWRhdGlvbiBzeXN0ZW0uXG4gKlxuICogVXNhZ2U6XG4gKiAgIC8vIC8qKlxuICogICAvLyAgKiBNeSBjdXN0b20gZGVjb3JhdG9yIGltcGxlbWVudGF0aW9uXG4gKiAgIC8vICAqIEBkZWNvcmF0b3JcbiAqICAgLy8gICpcXC9cbiAqICAgZnVuY3Rpb24gbXlfY3VzdG9tX2RlY29yYXRvcih0YXJnZXQsIGtleSwgZGVzY3JpcHRvcikge1xuICogICAgICAgLy8gRGVjb3JhdG9yIGltcGxlbWVudGF0aW9uXG4gKiAgIH1cbiAqXG4gKiBUaGlzIGFsbG93cyBteV9jdXN0b21fZGVjb3JhdG9yIHRvIGJlIHVzZWQgYXMgQG15X2N1c3RvbV9kZWNvcmF0b3Igb24gc3RhdGljIG1ldGhvZHMuXG4gKlxuICogVE9ETzogVGhpcyBpcyBwcm9iYWJseSBubyBsb25nZXIgbmVjZXNzYXJ5PyBtYXliZT9cbiAqL1xuZnVuY3Rpb24gZGVjb3JhdG9yKHZhbHVlKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xufVxuIl0sIm1hcHBpbmdzIjoiOztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBU0EsU0FBU0EsQ0FBQ0MsS0FBSyxFQUFFO0VBQ3RCLE9BQU9BLEtBQUs7QUFDaEIiLCJpZ25vcmVMaXN0IjpbXX0=

Some files were not shown because too many files have changed in this diff Show More