Prepare modules

This commit is contained in:
2025-03-22 12:44:30 -06:00
parent 099267ee07
commit 7d8566350d
137 changed files with 3723 additions and 4325 deletions

View File

@ -1,152 +1,7 @@
<!-- Permission Table -->
<div class="card">
<div class="card-datatable table-responsive">
<table class="datatables-permissions table border-top">
<thead>
<tr>
<th></th>
<th></th>
<th>Nombre</th>
<th>Asignado a</th>
<th>Creado</th>
<th>Actions</th>
</tr>
</thead>
</table>
</div>
</div>
<!--/ Permission Table -->
<?php
/*
<script>
document.addEventListener('DOMContentLoaded', function() {
$(document).ready(function() {
// Datatable
var dt_permission = $('.datatables-permissions')
.DataTable({
ajax: '{{ url()->current() }}',
columns: [
// columns according to JSON
{data: ''},
{data: 'id'},
{data: 'name'},
{data: 'assigned_to'},
{data: 'created_at'},
//{data: ''}
],
columnDefs: [
{
// For Responsive
className: 'control',
orderable: false,
searchable: false,
responsivePriority: 2,
targets: 0,
render: function(data, type, full, meta) {
return '';
}
},
{
targets: 1,
searchable: false,
visible: false
},
{
// Name
targets: 2,
render: function(data, type, full, meta) {
return "<span data-id=" + full.id + ">" + data + "</span><br>" +
'<small>' + (typeof(full['sub_group']) == 'string'? full['sub_group']: '') + "</small>";
}
},
{
// assigned_to
targets: 3,
orderable: false,
render: function(data, type, full, meta) {
var $assignedTo = full['assigned_to'],
$output = '',
roleBadgeObj = <?= json_encode($rows_roles) ?>;
for (var i = 0; i < $assignedTo.length; i++) {
var val = $assignedTo[i];
$output += roleBadgeObj[val];
}
return $output;
}
},
{
// Created at
targets: 4,
orderable: false
},
],
order: [
[1, 'asc']
],
dom:
'<"row mx-1"' +
'<"col-sm-12 col-md-3" l>' +
'<"col-sm-12 col-lg-9"<"dt-action-buttons d-flex align-items-center justify-content-lg-end justify-content-center flex-md-nowrap flex-wrap"<"me-1"f><"user_role mt-50 width-200 me-1">B>>' +
'>t' +
'<"row mx-2"' +
'<"col-sm-12 col-md-6"i>' +
'<"col-sm-12 col-md-6"p>' +
'>',
language: $.fn.dataTable.ext.datatable_spanish_default,
// Buttons with Dropdown
buttons: [],
// For responsive popup
responsive: {
details: {
display: $.fn.dataTable.Responsive.display.modal({
header: function(row) {
var data = row.data();
return 'Detalles del permiso';
}
}),
type: 'column',
renderer: function(api, rowIdx, columns) {
var data = $.map(columns, function(col, i) {
return col.title !== ''? // ? Do not show row in modal popup if title is blank (for check box)
'<tr data-dt-row="' + col.rowIndex + '" data-dt-column="' + col.columnIndex + '">' +
'<td>' + col.name + ':' + '</td> ' +
'<td>' + col.data + '</td>' +
'</tr>' :
'';
}).join('');
return data ? $('<table class="table table-striped"/><tbody />').append(data) : false;
}
}
},
initComplete: function() {
// Adding role filter once table initialized
this.api()
.columns(3)
.every(function() {
var column = this;
var select = $('{!! $roles_html_select !!}')
.appendTo('.user_role')
.on('change', function() {
var val = $.fn.dataTable.util.escapeRegex($(this).val());
column.search(val? val: '', true, false).draw();
});
});
}
});
});
});
</script>
*/
?>
<x-vuexy-admin::table.bootstrap.manager :tagName="$tagName" :datatableConfig="$bt_datatable">
<x-slot name="tools">
<div class="mb-4 pr-2">
<x-vuexy-admin::button.index-offcanvas :label="$singularName" :tagName="$tagName" />
</div>
</x-slot>
</x-vuexy-admin::table.bootstrap.manager>

View File

@ -0,0 +1,39 @@
<div>
<x-vuexy-admin::offcanvas.basic :id="$offcanvasId" :tag-name="$tagName">
<x-vuexy-admin::form :uid="$uniqueId" :id="$formId" :mode="$mode" wireSubmit="onSubmit">
<x-slot name="actions">
<x-vuexy-admin::button.offcanvas-buttons :mode="$mode" :tagName="$tagName" />
</x-slot>
{{-- Usuario --}}
<x-vuexy-admin::form.input :uid="$uniqueId" model="name" label="Nombre(s)" />
<x-vuexy-admin::form.input :uid="$uniqueId" model="last_name" label="Apellidos" />
{{-- Correos electrónicos --}}
<x-vuexy-admin::form.input type="email" :uid="$uniqueId" model="email" label="Correo electrónico" icon="ti ti-mail" autocomplete="email" inputmode="email" />
{{-- Contraseña --}}
<x-vuexy-admin::form.input type="password" :uid="$uniqueId" model="password" label="Contraseña" icon="ti ti-lock" autocomplete="new-password" />
<hr>
</x-vuexy-admin::form>
</x-vuexy-admin::offcanvas.basic>
</div>
@push('page-script')
<script>
// Evento para inicializar el formulario cuando se carga la página
document.addEventListener("DOMContentLoaded", function () {
const initializeUserForm = () => {
};
var myOffcanvas = document.getElementById('{{ $offcanvasId }}');
myOffcanvas.addEventListener('show.bs.offcanvas', function () {
initializeUserForm();
});
});
</script>
@endpush