| 
<div class="container-fluid py-3"><form action="<?= current_page(); ?>" method="POST" class="--api-debug no-ajax">
 <div class="row --apply-increase-one border-bottom">
 <div class="col-md-10">
 <div class="input-group mb-3">
 <select name="method" class="form-control" style="max-width:100px">
 <option value="GET">
 GET
 </option>
 <option value="POST">
 POST
 </option>
 <option value="DELETE">
 DELETE
 </option>
 </select>
 <input type="text" name="url" class="form-control" placeholder="<?= phrase('Enter service URL'); ?>" />
 </div>
 </div>
 <div class="col-md-2">
 <div class="d-grid mb-3">
 <button type="submit" class="btn btn-dark">
 <i class="mdi mdi-send"></i>
 <?= phrase('Send'); ?>
 </button>
 </div>
 </div>
 </div>
 <div style="margin-right:-1rem; margin-left:-1rem">
 <nav class="--apply-increase-two" style="margin-top:-1px">
 <div class="nav nav-tabs" id="nav-tab" role="tablist">
 <a class="nav-item nav-link rounded-0" data-bs-toggle="tab" href="#params-headers" role="tab" style="border-left:0">
 <?= phrase('Request Header'); ?>
 </a>
 <a class="nav-item nav-link rounded-0" data-bs-toggle="tab" href="#params-body" role="tab">
 <?= phrase('Request Body'); ?>
 </a>
 <a class="nav-item nav-link rounded-0 active response-result" data-bs-toggle="tab" href="#results-pretty" role="tab">
 <?= phrase('Response'); ?>
 </a>
 </div>
 </nav>
 <div class="tab-content" id="nav-tabContent1" style="margin-top:-1px">
 <div class="tab-pane border-bottom p-3" id="params-headers" role="tabpanel">
 <div class="row">
 <div class="col-6 col-md-4 text-muted">
 <div class="mb-3">
 <input type="text" name="header_key[]" class="form-control form-control-sm param-header-key" placeholder="Key" />
 </div>
 </div>
 <div class="col-6 col-md-6 ps-0 text-muted">
 <div class="mb-3">
 <div class="input-group">
 <input type="text" name="header_value[]" class="form-control form-control-sm param-header-value" placeholder="Value" />
 <button type="button" class="btn btn-secondary btn-sm" onclick="jExec($(this).closest('.row').remove())">
 <i class="mdi mdi-window-close"></i>
 </button>
 </div>
 </div>
 </div>
 </div>
 <button type="button" class="btn btn-secondary btn-sm --add-parameter" data-parameter="header">
 <i class="mdi mdi-plus"></i>
 <?= phrase('Add Parameter'); ?>
 </button>
 </div>
 <div class="tab-pane border-bottom p-3" id="params-body" role="tabpanel">
 <div class="row">
 <div class="col-6 col-md-4 text-muted">
 <div class="mb-3">
 <input type="text" name="body_key[]" class="form-control form-control-sm param-body-key" placeholder="Key" />
 </div>
 </div>
 <div class="col-6 col-md-6 ps-0 text-muted">
 <div class="mb-3">
 <div class="input-group">
 <input type="text" name="body_value[]" class="form-control form-control-sm param-body-value" placeholder="Value" />
 <button type="button" class="btn btn-secondary btn-sm" onclick="jExec($(this).closest('.row').remove())">
 <i class="mdi mdi-window-close"></i>
 </button>
 </div>
 </div>
 </div>
 </div>
 <button type="button" class="btn btn-secondary btn-sm --add-parameter" data-parameter="body">
 <i class="mdi mdi-plus"></i>
 <?= phrase('Add Parameter'); ?>
 </button>
 </div>
 <div class="tab-pane border-bottom p-3 p-3 show active" id="results-pretty" role="tabpanel">
 <pre class="rounded mt-0 mb-0 language-javascript"><code>{}</code></pre>
 </div>
 </div>
 </div>
 </form>
 </div>
 
 <script type="text/javascript">
 $(document).ready(function() {
 $('.--add-parameter').on('click', function(e) {
 e.preventDefault();
 
 var initial = $(this).attr('data-parameter');
 
 $(
 '<div class="row">' +
 '<div class="text-muted col-6 col-md-4">' +
 '<div class="mb-3">' +
 '<input type="text" name="' + initial + '_key[]" class="form-control form-control-sm param-' + initial + '-key" placeholder="<?= phrase('Key'); ?>" />' +
 '</div>' +
 '</div>' +
 '<div class="text-muted col-6 col-md-6 ps-0">' +
 '<div class="mb-3">' +
 '<div class="input-group">' +
 '<input type="text" name="' + initial + '_value[]" class="form-control form-control-sm param-' + initial + '-value" placeholder="<?= phrase('Value'); ?>" />' +
 '<button type="button" class="btn btn-secondary btn-sm" onclick="jExec($(this).closest(\'.row\').remove())">' +
 '<i class="mdi mdi-window-close"></i>' +
 '</button>' +
 '</div>' +
 '</div>' +
 '</div>' +
 '</div>'
 )
 .insertBefore($(this))
 }),
 
 $('.--api-debug').on('submit', function(e) {
 e.preventDefault();
 
 $('.mdi.mdi-send').removeClass('mdi-send').addClass('mdi-loading mdi-spin');
 $('.response-result').trigger('click');
 
 if (! $(this).find('input[name=url]').val()) {
 $('.mdi.mdi-loading.mdi-spin').removeClass('mdi-loading mdi-spin').addClass('mdi-send');
 $('pre code').text(JSON.stringify({error: "<?= phrase('No service URL are given'); ?>"}, null, 4));
 Prism.highlightAll();
 
 return;
 }
 
 let header = {},
 body = {},
 method = $(this).find('select[name=method]').val(),
 parameter = new FormData(this);
 
 $('.param-header-key').each(function(num, value) {
 let key = $(this).val(),
 val = $('.param-header-value:eq(' + num + ')').val();
 if (val) {
 header[key] = val;
 }
 });
 
 $('.param-body-key').each(function(num, value) {
 let key = $(this).val(),
 val = $('.param-body-value:eq(' + num + ')').val();
 if (val) {
 body[key] = val;
 }
 });
 
 $.ajax({
 url: $(this).find('input[name=url]').val(),
 method: method,
 data: body,
 headers: header,
 beforeSend: function() {
 $('pre code').text('<?= phrase('Requesting'); ?>...'),
 $('.result-html').html('')
 }
 })
 .always(function(response, status, error) {
 if (typeof response !== 'object') {
 response = {
 error: '<?= phrase('The response is not a valid object'); ?>'
 };
 }
 
 $('.mdi.mdi-loading.mdi-spin').removeClass('mdi-loading mdi-spin').addClass('mdi-send');
 $('pre code').text(JSON.stringify((typeof response.responseJSON !== 'undefined' ? response.responseJSON : response), null, 4));
 Prism.highlightAll();
 
 if (UA !== 'mobile' && typeof mCustomScrollbar === 'function') {
 $('.pane-wrapper').mCustomScrollbar({
 autoHideScrollbar: true,
 axis: 'y',
 scrollInertia: 170,
 mouseWheelPixels: 170,
 setHeight: $(window).outerHeight(true) - (($('[role=header]').outerHeight(true) ?? 0) + ($('[role=breadcrumb]').outerHeight(true) ?? 0) + ($('[role=meta]').outerHeight(true) ?? 0) + ($('.--apply-increase-one').outerHeight(true) ?? 0) + ($('.--apply-increase-two').outerHeight(true) ?? 0) + 65),
 advanced: {
 updateOnContentResize: true
 },
 autoHideScrollbar: false
 })
 }
 })
 })
 })
 </script>
 
 |