77 lines
2.6 KiB
JavaScript
77 lines
2.6 KiB
JavaScript
// API source form visibility helpers.
|
|
|
|
(function () {
|
|
var form = document.getElementById('api-source-form');
|
|
if (!form) {
|
|
return;
|
|
}
|
|
|
|
var methodSelect = form.querySelector('[data-api-source-auth-method]');
|
|
var authDetailsSection = form.querySelector('[data-api-source-auth-details-section]');
|
|
var panels = Array.prototype.slice.call(form.querySelectorAll('[data-api-source-auth-panel]'));
|
|
var bearerTokenInput = form.querySelector('[data-api-source-bearer-token-input]');
|
|
var bearerTokenToggle = form.querySelector('[data-api-source-bearer-token-toggle]');
|
|
var requestMethodSelect = form.querySelector('[data-api-source-request-method]');
|
|
var requestSection = form.querySelector('[data-api-source-request-section]');
|
|
var requestBodyInput = form.querySelector('[data-api-source-request-body]');
|
|
|
|
function updateBearerTokenToggle() {
|
|
if (!bearerTokenInput || !bearerTokenToggle) {
|
|
return;
|
|
}
|
|
|
|
var isVisible = bearerTokenInput.type === 'text';
|
|
bearerTokenToggle.setAttribute('aria-pressed', String(isVisible));
|
|
bearerTokenToggle.setAttribute('aria-label', isVisible ? 'Hide bearer token' : 'Show bearer token');
|
|
bearerTokenToggle.innerHTML = '<i class="bi ' + (isVisible ? 'bi-eye-slash' : 'bi-eye') + '" aria-hidden="true"></i>';
|
|
}
|
|
|
|
function toggleBearerTokenVisibility() {
|
|
if (!bearerTokenInput) {
|
|
return;
|
|
}
|
|
|
|
bearerTokenInput.type = bearerTokenInput.type === 'password' ? 'text' : 'password';
|
|
updateBearerTokenToggle();
|
|
bearerTokenInput.focus();
|
|
}
|
|
|
|
function updatePanels() {
|
|
var method = String(methodSelect && methodSelect.value || 'none').trim();
|
|
var hasAuth = method !== 'none';
|
|
|
|
if (authDetailsSection) {
|
|
authDetailsSection.hidden = !hasAuth;
|
|
}
|
|
|
|
panels.forEach(function (panel) {
|
|
var panelMethod = String(panel.getAttribute('data-api-source-auth-panel') || '').trim();
|
|
panel.hidden = !hasAuth || panelMethod !== method;
|
|
});
|
|
}
|
|
|
|
function updateRequestBodyVisibility() {
|
|
if (!requestMethodSelect || !requestSection || !requestBodyInput) {
|
|
return;
|
|
}
|
|
|
|
var isPost = String(requestMethodSelect.value || 'GET').toUpperCase() === 'POST';
|
|
requestSection.hidden = !isPost;
|
|
}
|
|
|
|
if (methodSelect) {
|
|
methodSelect.addEventListener('change', updatePanels);
|
|
}
|
|
|
|
if (requestMethodSelect) {
|
|
requestMethodSelect.addEventListener('change', updateRequestBodyVisibility);
|
|
}
|
|
|
|
if (bearerTokenToggle && bearerTokenInput) {
|
|
bearerTokenToggle.addEventListener('click', toggleBearerTokenVisibility);
|
|
updateBearerTokenToggle();
|
|
}
|
|
|
|
updatePanels();
|
|
updateRequestBodyVisibility();
|
|
}()); |