Files
rspade_system/storage-working/rsx-tmp/babel_e824307e4df422fb33badb82e646a8c1.js
root 78553d4edf Fix code quality violations for publish
Remove unused blade settings pages not linked from UI
Convert remaining frontend pages to SPA actions
Convert settings user_settings and general to SPA actions
Convert settings profile pages to SPA actions
Convert contacts and projects add/edit pages to SPA actions
Convert clients add/edit page to SPA action with loading pattern
Refactor component scoped IDs from $id to $sid
Fix jqhtml comment syntax and implement universal error component system
Update all application code to use new unified error system
Remove all backwards compatibility - unified error system complete
Phase 5: Remove old response classes
Phase 3-4: Ajax response handler sends new format, old helpers deprecated
Phase 2: Add client-side unified error foundation
Phase 1: Add server-side unified error foundation
Add unified Ajax error response system with constants

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-21 04:35:01 +00:00

102 lines
12 KiB
JavaScript
Executable File

"use strict";
class Input_With_Validation extends Component {
on_ready() {
const $input = this.$sid('input');
if (this.args.value) {
$input.val(this.args.value);
}
if (this.args.name) {
$input.attr('name', this.args.name);
}
if (this.args.required) {
$input.prop('required', true);
}
if (this.args.disabled) {
$input.prop('disabled', true);
}
if (this.args.readonly) {
$input.prop('readonly', true);
}
// Real-time validation
if (this.args.validate) {
$input.on('blur', () => {
this.validate();
});
$input.on('input', () => {
if (this.$.hasClass('was-validated')) {
this.validate();
}
});
}
if (this.args.on_change) {
$input.on('change', e => {
this.args.on_change(e.target.value);
});
}
}
validate() {
const value = this.$sid('input').val();
const $input = this.$sid('input');
this.$.addClass('was-validated');
// Run validation function
if (this.args.validate) {
const result = this.args.validate(value);
if (result === true || result === null || result === undefined) {
this.set_valid();
return true;
} else {
this.set_error(result);
return false;
}
}
// Basic required check
if (this.args.required && !value) {
this.set_error('This field is required');
return false;
}
this.set_valid();
return true;
}
set_error(message) {
const $input = this.$sid('input');
const $error = this.$sid('error');
$input.removeClass('is-valid').addClass('is-invalid');
$error.text(message).css('display', 'block');
this.$sid('success').css('display', 'none');
}
set_valid(message) {
const $input = this.$sid('input');
const $success = this.$sid('success');
$input.removeClass('is-invalid').addClass('is-valid');
this.$sid('error').css('display', 'none');
if (message) {
$success.text(message).css('display', 'block');
} else {
$success.css('display', 'none');
}
}
clear_validation() {
const $input = this.$sid('input');
$input.removeClass('is-valid is-invalid');
this.$sid('error').css('display', 'none');
this.$sid('success').css('display', 'none');
this.$.removeClass('was-validated');
}
get_value() {
return this.$sid('input').val();
}
set_value(value) {
this.$sid('input').val(value);
if (this.$.hasClass('was-validated')) {
this.validate();
}
}
focus() {
this.$sid('input').focus();
}
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJJbnB1dF9XaXRoX1ZhbGlkYXRpb24iLCJKcWh0bWxfQ29tcG9uZW50Iiwib25fcmVhZHkiLCIkaW5wdXQiLCIkaWQiLCJhcmdzIiwidmFsdWUiLCJ2YWwiLCJuYW1lIiwiYXR0ciIsInJlcXVpcmVkIiwicHJvcCIsImRpc2FibGVkIiwicmVhZG9ubHkiLCJ2YWxpZGF0ZSIsIm9uIiwiJCIsImhhc0NsYXNzIiwib25fY2hhbmdlIiwiZSIsInRhcmdldCIsImFkZENsYXNzIiwicmVzdWx0IiwidW5kZWZpbmVkIiwic2V0X3ZhbGlkIiwic2V0X2Vycm9yIiwibWVzc2FnZSIsIiRlcnJvciIsInJlbW92ZUNsYXNzIiwidGV4dCIsImNzcyIsIiRzdWNjZXNzIiwiY2xlYXJfdmFsaWRhdGlvbiIsImdldF92YWx1ZSIsInNldF92YWx1ZSIsImZvY3VzIl0sInNvdXJjZXMiOlsicnN4L3RoZW1lL2NvbXBvbmVudHMvX2FyY2hpdmVkL3VuZmluaXNoZWQvSW5wdXRfV2l0aF9WYWxpZGF0aW9uLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImNsYXNzIElucHV0X1dpdGhfVmFsaWRhdGlvbiBleHRlbmRzIEpxaHRtbF9Db21wb25lbnQge1xuICAgIG9uX3JlYWR5KCkge1xuICAgICAgICBjb25zdCAkaW5wdXQgPSB0aGlzLiRpZCgnaW5wdXQnKTtcblxuICAgICAgICBpZiAodGhpcy5hcmdzLnZhbHVlKSB7XG4gICAgICAgICAgICAkaW5wdXQudmFsKHRoaXMuYXJncy52YWx1ZSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5hcmdzLm5hbWUpIHtcbiAgICAgICAgICAgICRpbnB1dC5hdHRyKCduYW1lJywgdGhpcy5hcmdzLm5hbWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuYXJncy5yZXF1aXJlZCkge1xuICAgICAgICAgICAgJGlucHV0LnByb3AoJ3JlcXVpcmVkJywgdHJ1ZSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5hcmdzLmRpc2FibGVkKSB7XG4gICAgICAgICAgICAkaW5wdXQucHJvcCgnZGlzYWJsZWQnLCB0cnVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmFyZ3MucmVhZG9ubHkpIHtcbiAgICAgICAgICAgICRpbnB1dC5wcm9wKCdyZWFkb25seScsIHRydWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gUmVhbC10aW1lIHZhbGlkYXRpb25cbiAgICAgICAgaWYgKHRoaXMuYXJncy52YWxpZGF0ZSkge1xuICAgICAgICAgICAgJGlucHV0Lm9uKCdibHVyJywgKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMudmFsaWRhdGUoKTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAkaW5wdXQub24oJ2lucHV0JywgKCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLiQuaGFzQ2xhc3MoJ3dhcy12YWxpZGF0ZWQnKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnZhbGlkYXRlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5hcmdzLm9uX2NoYW5nZSkge1xuICAgICAgICAgICAgJGlucHV0Lm9uKCdjaGFuZ2UnLCAoZSkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuYXJncy5vbl9jaGFuZ2UoZS50YXJnZXQudmFsdWUpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB2YWxpZGF0ZSgpIHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLiRpZCgnaW5wdXQnKS52YWwoKTtcbiAgICAgICAgY29uc3QgJGlucHV0ID0gdGhpcy4kaWQoJ2lucHV0Jyk7XG5cbiAgICAgICAgdGhpcy4kLmFkZENsYXNzKCd3YXMtdmFsaWRhdGVkJyk7XG5cbiAgICAgICAgLy8gUnVuIHZhbGlkYXRpb24gZnVuY3Rpb25cbiAgICAgICAgaWYgKHRoaXMuYXJncy52YWxpZGF0ZSkge1xuICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gdGhpcy5hcmdzLnZhbGlkYXRlKHZhbHVlKTtcblxuICAgICAgICAgICAgaWYgKHJlc3VsdCA9PT0gdHJ1ZSB8fCByZXN1bHQgPT09IG51bGwgfHwgcmVzdWx0ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNldF92YWxpZCgpO1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNldF9lcnJvcihyZXN1bHQpO1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEJhc2ljIHJlcXVpcmVkIGNoZWNrXG4gICAgICAgIGlmICh0aGlzLmFyZ3MucmVxdWlyZWQgJiYgIXZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLnNldF9lcnJvcignVGhpcyBmaWVsZCBpcyByZXF1aXJlZCcpO1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zZXRfdmFsaWQoKTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgc2V0X2Vycm9yKG1lc3NhZ2UpIHtcbiAgICAgICAgY29uc3QgJGlucHV0ID0gdGhpcy4kaWQoJ2lucHV0Jyk7XG4gICAgICAgIGNvbnN0ICRlcnJvciA9IHRoaXMuJGlkKCdlcnJvcicpO1xuXG4gICAgICAgICRpbnB1dC5yZW1vdmVDbGFzcygnaXMtdmFsaWQnKS5hZGRDbGFzcygnaXMtaW52YWxpZCcpO1xuICAgICAgICAkZXJyb3IudGV4dChtZXNzYWdlKS5jc3MoJ2Rpc3BsYXknLCAnYmxvY2snKTtcbiAgICAgICAgdGhpcy4kaWQoJ3N1Y2Nlc3MnKS5jc3MoJ2Rpc3BsYXknLCAnbm9uZScpO1xuICAgIH1cblxuICAgIHNldF92YWxpZChtZXNzYWdlKSB7XG4gICAgICAgIGNvbnN0ICRpbnB1dCA9IHRoaXMuJGlkKCdpbnB1dCcpO1xuICAgICAgICBjb25zdCAkc3VjY2VzcyA9IHRoaXMuJGlkKCdzdWNjZXNzJyk7XG5cbiAgICAgICAgJGlucHV0LnJlbW92ZUNsYXNzKCdpcy1pbnZhbGlkJykuYWRkQ2xhc3MoJ2lzLXZhbGlkJyk7XG4gICAgICAgIHRoaXMuJGlkKCdlcnJvcicpLmNzcygnZGlzcGxheScsICdub25lJyk7XG5cbiAgICAgICAgaWYgKG1lc3NhZ2UpIHtcbiAgICAgICAgICAgICRzdWNjZXNzLnRleHQobWVzc2FnZSkuY3NzKCdkaXNwbGF5JywgJ2Jsb2NrJyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAkc3VjY2Vzcy5jc3MoJ2Rpc3BsYXknLCAnbm9uZScpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgY2xlYXJfdmFsaWRhdGlvbigpIHtcbiAgICAgICAgY29uc3QgJGlucHV0ID0gdGhpcy4kaWQoJ2lucHV0Jyk7XG4gICAgICAgICRpbnB1dC5yZW1vdmVDbGFzcygnaXMtdmFsaWQgaXMtaW52YWxpZCcpO1xuICAgICAgICB0aGlzLiRpZCgnZXJyb3InKS5jc3MoJ2Rpc3BsYXknLCAnbm9uZScpO1xuICAgICAgICB0aGlzLiRpZCgnc3VjY2VzcycpLmNzcygnZGlzcGxheScsICdub25lJyk7XG4gICAgICAgIHRoaXMuJC5yZW1vdmVDbGFzcygnd2FzLXZhbGlkYXRlZCcpO1xuICAgIH1cblxuICAgIGdldF92YWx1ZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuJGlkKCdpbnB1dCcpLnZhbCgpO1xuICAgIH1cblxuICAgIHNldF92YWx1ZSh2YWx1ZSkge1xuICAgICAgICB0aGlzLiRpZCgnaW5wdXQnKS52YWwodmFsdWUpO1xuICAgICAgICBpZiAodGhpcy4kLmhhc0NsYXNzKCd3YXMtdmFsaWRhdGVkJykpIHtcbiAgICAgICAgICAgIHRoaXMudmFsaWRhdGUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZvY3VzKCkge1xuICAgICAgICB0aGlzLiRpZCgn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