import { ApplicationController } from './application_controller'; export class ApiTokenSecuriteController extends ApplicationController { static targets = [ 'continueButton', 'networkFiltering', 'infiniteLifetime', 'customLifetime', 'customLifetimeInput', 'networks' ]; declare readonly continueButtonTarget: HTMLButtonElement; declare readonly networkFilteringTarget: HTMLElement; declare readonly infiniteLifetimeTarget: HTMLInputElement; declare readonly customLifetimeTarget: HTMLElement; declare readonly customLifetimeInputTarget: HTMLInputElement; declare readonly networksTarget: HTMLInputElement; connect() { this.setContinueButtonState(); } showNetworkFiltering() { this.networkFilteringTarget.classList.remove('hidden'); this.setContinueButtonState(); this.infiniteLifetimeTarget.disabled = false; } hideNetworkFiltering() { this.networkFilteringTarget.classList.add('hidden'); this.setContinueButtonState(); this.infiniteLifetimeTarget.checked = false; this.infiniteLifetimeTarget.disabled = true; } showCustomLifetime() { this.customLifetimeTarget.classList.remove('hidden'); this.setContinueButtonState(); } hideCustomLifetime() { this.customLifetimeTarget.classList.add('hidden'); this.setContinueButtonState(); } setContinueButtonState() { if (this.networkDefined() && this.lifetimeDefined()) { this.continueButtonTarget.disabled = false; } else { this.continueButtonTarget.disabled = true; } } networkDefined() { if ( this.element.querySelectorAll( "[name='networkFiltering'][value='none']:checked" ).length > 0 ) { return true; } if ( this.element.querySelectorAll( "[name='networkFiltering'][value='customNetworks']:checked" ).length > 0 && this.networksTarget.value.trim() != '' ) { return true; } return false; } lifetimeDefined() { if ( this.element.querySelectorAll( "[name='lifetime'][value='oneWeek']:checked" ).length > 0 ) { return true; } if ( this.element.querySelectorAll( "[name='lifetime'][value='infinite']:checked" ).length > 0 ) { return true; } if ( this.element.querySelectorAll("[name='lifetime'][value='custom']:checked") .length > 0 && this.customLifetimeInputTarget.value.trim() != '' ) { return true; } return false; } }