75 lines
2.2 KiB
JavaScript
75 lines
2.2 KiB
JavaScript
(function (app) {
|
|
'use strict';
|
|
|
|
const dom = app.dom;
|
|
|
|
const visibility = app.modules.visibility = {};
|
|
|
|
// Field visibility rules based on document type
|
|
const FIELD_RULES = {
|
|
'from': ['Transmittal', 'Submittal'],
|
|
'to': ['Transmittal', 'Submittal']
|
|
};
|
|
|
|
function getDocumentType() {
|
|
const typeInput = dom.qs('#type');
|
|
return typeInput ? (typeInput.value || 'Transmittal').trim() : 'Transmittal';
|
|
}
|
|
|
|
function isFieldVisible(fieldId, docType) {
|
|
const rules = FIELD_RULES[fieldId];
|
|
if (!rules) {
|
|
return true; // No rules = always visible
|
|
}
|
|
return rules.includes(docType);
|
|
}
|
|
|
|
function getFieldContainer(fieldId) {
|
|
const input = dom.qs('#' + fieldId);
|
|
if (!input) {
|
|
return null;
|
|
}
|
|
// Find the parent container (the div with col-span-6 or col-span-12)
|
|
let container = input.parentElement;
|
|
while (container && !container.className.includes('col-span-')) {
|
|
container = container.parentElement;
|
|
if (!container || container.tagName === 'FORM') {
|
|
break;
|
|
}
|
|
}
|
|
return container || input.parentElement;
|
|
}
|
|
|
|
visibility.applyFieldVisibility = function applyFieldVisibility() {
|
|
const docType = getDocumentType();
|
|
Object.keys(FIELD_RULES).forEach(function(fieldId) {
|
|
const container = getFieldContainer(fieldId);
|
|
if (!container) { return; }
|
|
container.hidden = !isFieldVisible(fieldId, docType);
|
|
});
|
|
};
|
|
|
|
visibility.bindTypeInput = function bindTypeInput() {
|
|
const typeInput = dom.qs('#type');
|
|
if (!typeInput) {
|
|
return;
|
|
}
|
|
|
|
// Apply visibility on input change
|
|
typeInput.addEventListener('input', function() {
|
|
visibility.applyFieldVisibility();
|
|
if (app.markDirty) {
|
|
app.markDirty();
|
|
}
|
|
});
|
|
|
|
typeInput.addEventListener('change', function() {
|
|
visibility.applyFieldVisibility();
|
|
});
|
|
};
|
|
|
|
app.registerInit(function () {
|
|
visibility.bindTypeInput();
|
|
visibility.applyFieldVisibility();
|
|
});
|
|
})(window.transmittalApp);
|