Melhorias na lógica de ativação de badges e atualização de responsabilidades
This commit is contained in:
@@ -1,5 +1,10 @@
|
||||
{% extends "base.html" %}
|
||||
|
||||
{% block head %}
|
||||
<!-- Bootstrap Datepicker CSS -->
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-datepicker/1.9.0/css/bootstrap-datepicker.min.css">
|
||||
{% endblock %}
|
||||
|
||||
{% block title %}Militantes{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
@@ -39,9 +44,16 @@
|
||||
<li><a class="dropdown-item" href="#" data-filter="todos">Todos</a></li>
|
||||
<li><hr class="dropdown-divider"></li>
|
||||
<li><h6 class="dropdown-header">Responsabilidades</h6></li>
|
||||
<li><a class="dropdown-item" href="#" data-filter="financas">Finanças</a></li>
|
||||
<li><a class="dropdown-item" href="#" data-filter="imprensa">Imprensa</a></li>
|
||||
<li><a class="dropdown-item" href="#" data-filter="responsavel-financas">Responsável de Finanças</a></li>
|
||||
<li><a class="dropdown-item" href="#" data-filter="responsavel-imprensa">Responsável de Imprensa</a></li>
|
||||
<li><a class="dropdown-item" href="#" data-filter="quadro-orientador">Quadro-Orientador</a></li>
|
||||
<li><a class="dropdown-item" href="#" data-filter="secretario">Secretário</a></li>
|
||||
<li><a class="dropdown-item" href="#" data-filter="tesoureiro">Tesoureiro</a></li>
|
||||
<li><a class="dropdown-item" href="#" data-filter="imprensa">Imprensa</a></li>
|
||||
<li><a class="dropdown-item" href="#" data-filter="mns">MNS</a></li>
|
||||
<li><a class="dropdown-item" href="#" data-filter="mps">MPS</a></li>
|
||||
<li><a class="dropdown-item" href="#" data-filter="juventude">Juventude</a></li>
|
||||
<li><a class="dropdown-item" href="#" data-filter="aspirante">Aspirante</a></li>
|
||||
<li><hr class="dropdown-divider"></li>
|
||||
<li><h6 class="dropdown-header">Célula</h6></li>
|
||||
{% for celula in celulas %}
|
||||
@@ -78,13 +90,34 @@
|
||||
<td data-celula="{{ militante.celula.nome }}">{{ militante.celula.nome }}</td>
|
||||
<td>
|
||||
{% if militante.responsabilidades|bitwise_and(Militante.RESPONSAVEL_FINANCAS) %}
|
||||
<span class="badge bg-primary">Finanças</span>
|
||||
<span class="badge bg-primary" data-bs-toggle="tooltip" title="Responsável de Finanças">RFI</span>
|
||||
{% endif %}
|
||||
{% if militante.responsabilidades|bitwise_and(Militante.RESPONSAVEL_IMPRENSA) %}
|
||||
<span class="badge bg-info">Imprensa</span>
|
||||
<span class="badge bg-info" data-bs-toggle="tooltip" title="Responsável de Imprensa">RIM</span>
|
||||
{% endif %}
|
||||
{% if militante.responsabilidades|bitwise_and(Militante.QUADRO_ORIENTADOR) %}
|
||||
<span class="badge bg-success">Quadro-Orientador</span>
|
||||
<span class="badge bg-success" data-bs-toggle="tooltip" title="Quadro-Orientador">QOR</span>
|
||||
{% endif %}
|
||||
{% if militante.responsabilidades|bitwise_and(Militante.SECRETARIO) %}
|
||||
<span class="badge bg-purple" data-bs-toggle="tooltip" title="Secretário">SEC</span>
|
||||
{% endif %}
|
||||
{% if militante.responsabilidades|bitwise_and(Militante.TESOUREIRO) %}
|
||||
<span class="badge bg-indigo" data-bs-toggle="tooltip" title="Tesoureiro">TES</span>
|
||||
{% endif %}
|
||||
{% if militante.responsabilidades|bitwise_and(Militante.IMPRENSA) %}
|
||||
<span class="badge bg-teal" data-bs-toggle="tooltip" title="Imprensa">IMP</span>
|
||||
{% endif %}
|
||||
{% if militante.responsabilidades|bitwise_and(Militante.MNS) %}
|
||||
<span class="badge bg-pink" data-bs-toggle="tooltip" title="MNS">MNS</span>
|
||||
{% endif %}
|
||||
{% if militante.responsabilidades|bitwise_and(Militante.MPS) %}
|
||||
<span class="badge bg-orange" data-bs-toggle="tooltip" title="MPS">MPS</span>
|
||||
{% endif %}
|
||||
{% if militante.responsabilidades|bitwise_and(Militante.JUVENTUDE) %}
|
||||
<span class="badge bg-danger" data-bs-toggle="tooltip" title="Juventude">JUV</span>
|
||||
{% endif %}
|
||||
{% if militante.responsabilidades|bitwise_and(Militante.ASPIRANTE) %}
|
||||
<span class="badge bg-dark" data-bs-toggle="tooltip" title="Aspirante">ASP</span>
|
||||
{% endif %}
|
||||
</td>
|
||||
<td class="text-end">
|
||||
@@ -162,11 +195,70 @@
|
||||
{% endblock %}
|
||||
|
||||
{% block scripts %}
|
||||
<script src="{{ url_for('static', filename='js/militantes.js') }}"></script>
|
||||
<!-- jQuery -->
|
||||
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
|
||||
|
||||
<!-- jQuery Mask Plugin -->
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery.mask/1.14.16/jquery.mask.min.js"></script>
|
||||
|
||||
<!-- Nosso script -->
|
||||
<script src="{{ url_for('static', filename='js/militantes.js') }}"></script>
|
||||
{% endblock %}
|
||||
|
||||
{% block extra_css %}
|
||||
<style>
|
||||
/* Estilo para o botão Novo Militante */
|
||||
.btn-primary {
|
||||
background-color: var(--bs-danger);
|
||||
border-color: var(--bs-danger);
|
||||
}
|
||||
|
||||
.btn-primary:hover,
|
||||
.btn-primary:focus,
|
||||
.btn-primary:active {
|
||||
background-color: var(--bs-danger-dark, #b02a37) !important;
|
||||
border-color: var(--bs-danger-dark, #b02a37) !important;
|
||||
}
|
||||
|
||||
/* Estilo para os switches */
|
||||
.form-check-input {
|
||||
background-color: #fff;
|
||||
border-color: rgba(220, 53, 69, 0.5);
|
||||
}
|
||||
|
||||
.form-check-input:checked {
|
||||
background-color: var(--bs-danger);
|
||||
border-color: var(--bs-danger);
|
||||
}
|
||||
|
||||
.form-check-input:focus {
|
||||
border-color: var(--bs-danger);
|
||||
box-shadow: 0 0 0 0.25rem rgba(220, 53, 69, 0.25);
|
||||
}
|
||||
|
||||
.form-switch .form-check-input {
|
||||
background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%28220, 53, 69, 0.85%29'/%3e%3c/svg%3e");
|
||||
background-position: left center;
|
||||
border-radius: 2em;
|
||||
transition: background-position .15s ease-in-out;
|
||||
}
|
||||
|
||||
.form-switch .form-check-input:checked {
|
||||
background-position: right center;
|
||||
background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e");
|
||||
}
|
||||
|
||||
.form-check {
|
||||
min-height: 1.5rem;
|
||||
padding-left: 2.8em;
|
||||
margin-bottom: 0.5rem;
|
||||
}
|
||||
|
||||
.form-check-label {
|
||||
cursor: pointer;
|
||||
user-select: none;
|
||||
}
|
||||
|
||||
/* Estilo para o backdrop com blur em todos os modais */
|
||||
.modal-backdrop.show {
|
||||
backdrop-filter: blur(8px);
|
||||
@@ -238,7 +330,41 @@ th[data-sort].sort-desc i {
|
||||
/* Estilo para badges */
|
||||
.badge {
|
||||
font-weight: 500;
|
||||
padding: 0.5em 0.8em;
|
||||
padding: 0.4em 0.6em;
|
||||
font-size: 0.75rem;
|
||||
margin-right: 0.3rem;
|
||||
min-width: 2em;
|
||||
text-align: center;
|
||||
border-radius: 4px;
|
||||
cursor: help;
|
||||
}
|
||||
|
||||
.badge:last-child {
|
||||
margin-right: 0;
|
||||
}
|
||||
|
||||
/* Cores personalizadas para badges */
|
||||
.bg-purple { background-color: #6f42c1 !important; color: white !important; }
|
||||
.bg-teal { background-color: #20c997 !important; color: white !important; }
|
||||
.bg-orange { background-color: #fd7e14 !important; color: white !important; }
|
||||
.bg-indigo { background-color: #6610f2 !important; color: white !important; }
|
||||
.bg-pink { background-color: #d63384 !important; color: white !important; }
|
||||
|
||||
/* Cores do Bootstrap que vamos usar */
|
||||
.badge.bg-primary { background-color: #0d6efd !important; }
|
||||
.badge.bg-info { background-color: #0dcaf0 !important; }
|
||||
.badge.bg-success { background-color: #198754 !important; }
|
||||
.badge.bg-danger { background-color: #dc3545 !important; }
|
||||
.badge.bg-dark { background-color: #212529 !important; }
|
||||
|
||||
/* Tooltip personalizado */
|
||||
.tooltip {
|
||||
font-size: 0.875rem;
|
||||
}
|
||||
|
||||
.tooltip .tooltip-inner {
|
||||
padding: 0.5rem 0.75rem;
|
||||
box-shadow: 0 2px 4px rgba(0,0,0,0.1);
|
||||
}
|
||||
|
||||
/* Estilo para botões de ação */
|
||||
@@ -294,5 +420,91 @@ th[data-sort].sort-desc i {
|
||||
min-width: 120px;
|
||||
}
|
||||
}
|
||||
|
||||
/* Estilos personalizados para o Bootstrap Datepicker */
|
||||
.datepicker {
|
||||
padding: 4px;
|
||||
border-radius: 4px;
|
||||
border: 1px solid #dee2e6;
|
||||
box-shadow: 0 2px 4px rgba(0,0,0,0.05);
|
||||
font-size: 0.875rem;
|
||||
background-color: white !important;
|
||||
color: #212529 !important;
|
||||
}
|
||||
|
||||
.datepicker table {
|
||||
background-color: white !important;
|
||||
}
|
||||
|
||||
.datepicker table tr td,
|
||||
.datepicker table tr th {
|
||||
text-align: center;
|
||||
width: 30px;
|
||||
height: 30px;
|
||||
border-radius: 2px;
|
||||
color: #212529 !important;
|
||||
background-color: white !important;
|
||||
}
|
||||
|
||||
.datepicker table tr td.day:hover,
|
||||
.datepicker table tr td.focused {
|
||||
background: #f8f9fa !important;
|
||||
color: #212529 !important;
|
||||
}
|
||||
|
||||
.datepicker table tr td.active,
|
||||
.datepicker table tr td.active:hover {
|
||||
background-color: var(--bs-primary) !important;
|
||||
color: white !important;
|
||||
}
|
||||
|
||||
.datepicker table tr td.today {
|
||||
background-color: #e9ecef !important;
|
||||
color: #212529 !important;
|
||||
}
|
||||
|
||||
.datepicker .datepicker-switch,
|
||||
.datepicker .prev,
|
||||
.datepicker .next {
|
||||
font-weight: normal;
|
||||
padding: 4px;
|
||||
color: #212529 !important;
|
||||
background-color: white !important;
|
||||
}
|
||||
|
||||
.datepicker .dow {
|
||||
font-weight: normal;
|
||||
padding: 4px;
|
||||
color: #212529 !important;
|
||||
background-color: white !important;
|
||||
}
|
||||
|
||||
.datepicker-dropdown:after {
|
||||
border-bottom-color: white !important;
|
||||
}
|
||||
|
||||
.datepicker-dropdown.datepicker-orient-top:after {
|
||||
border-top-color: white !important;
|
||||
}
|
||||
|
||||
/* Estilo para os campos de data */
|
||||
.datepicker-input {
|
||||
background-color: white !important;
|
||||
color: #212529 !important;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.datepicker-clear-btn {
|
||||
color: #6c757d !important;
|
||||
background-color: white !important;
|
||||
padding: 5px 10px;
|
||||
font-size: 12px;
|
||||
border-radius: 4px;
|
||||
}
|
||||
|
||||
.datepicker-clear-btn:hover {
|
||||
background-color: #f8f9fa !important;
|
||||
color: #495057 !important;
|
||||
}
|
||||
</style>
|
||||
{% endblock %}
|
||||
@@ -58,20 +58,20 @@
|
||||
</div>
|
||||
<div class="col-md-6 mb-3">
|
||||
<label for="edit_data_nascimento" class="form-label">Data de Nascimento</label>
|
||||
<input type="date" class="form-control" id="edit_data_nascimento" name="data_nascimento"
|
||||
placeholder="dd/mm/aaaa">
|
||||
<input type="text" class="form-control date-mask" id="edit_data_nascimento" name="data_nascimento"
|
||||
placeholder="DD/MM/AAAA" maxlength="10">
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-6 mb-3">
|
||||
<label for="edit_data_entrada" class="form-label">Data de Entrada OCI</label>
|
||||
<input type="date" class="form-control" id="edit_data_entrada" name="data_entrada_oci"
|
||||
placeholder="dd/mm/aaaa">
|
||||
<input type="text" class="form-control date-mask" id="edit_data_entrada" name="data_entrada_oci"
|
||||
placeholder="DD/MM/AAAA" maxlength="10">
|
||||
</div>
|
||||
<div class="col-md-6 mb-3">
|
||||
<label for="edit_data_efetivacao" class="form-label">Data de Efetivação</label>
|
||||
<input type="date" class="form-control" id="edit_data_efetivacao" name="data_efetivacao_oci"
|
||||
placeholder="dd/mm/aaaa">
|
||||
<input type="text" class="form-control date-mask" id="edit_data_efetivacao" name="data_efetivacao_oci"
|
||||
placeholder="DD/MM/AAAA" maxlength="10">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -232,26 +232,31 @@
|
||||
</div>
|
||||
</div>
|
||||
<!-- Responsabilidades -->
|
||||
<div class="mb-3">
|
||||
<label class="form-label d-block">Responsabilidades</label>
|
||||
<div class="row g-3">
|
||||
<div class="col-md-4">
|
||||
<div class="form-check">
|
||||
<input type="checkbox" class="form-check-input" id="edit_resp_1" name="responsabilidades" value="256">
|
||||
<label class="form-check-label" for="edit_resp_1">Finanças</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<div class="form-check">
|
||||
<input type="checkbox" class="form-check-input" id="edit_resp_2" name="responsabilidades" value="512">
|
||||
<label class="form-check-label" for="edit_resp_2">Imprensa</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<div class="form-check">
|
||||
<input type="checkbox" class="form-check-input" id="edit_resp_4" name="responsabilidades" value="64">
|
||||
<label class="form-check-label" for="edit_resp_4">Quadro-Orientador</label>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
<label class="form-label">Responsabilidades</label>
|
||||
<div class="responsabilidades-container">
|
||||
<input type="hidden" name="responsabilidades" id="responsabilidades_values" value="0">
|
||||
|
||||
<span class="badge badge-clickable" data-value="{{ Militante.SECRETARIO }}" data-original-class="bg-secondary" data-bs-toggle="tooltip" title="Clique para alternar">Secretário</span>
|
||||
|
||||
<span class="badge badge-clickable" data-value="{{ Militante.RESPONSAVEL_IMPRENSA }}" data-original-class="bg-info" data-bs-toggle="tooltip" title="Clique para alternar">Responsável de Imprensa</span>
|
||||
|
||||
<span class="badge badge-clickable" data-value="{{ Militante.IMPRENSA }}" data-original-class="bg-warning" data-bs-toggle="tooltip" title="Clique para alternar">Imprensa</span>
|
||||
|
||||
<span class="badge badge-clickable" data-value="{{ Militante.MPS }}" data-original-class="bg-warning" data-bs-toggle="tooltip" title="Clique para alternar">MPS</span>
|
||||
|
||||
<span class="badge badge-clickable" data-value="{{ Militante.QUADRO_ORIENTADOR }}" data-original-class="bg-success" data-bs-toggle="tooltip" title="Clique para alternar">Quadro-Orientador</span>
|
||||
|
||||
<span class="badge badge-clickable" data-value="{{ Militante.RESPONSAVEL_FINANCAS }}" data-original-class="bg-primary" data-bs-toggle="tooltip" title="Clique para alternar">Responsável de Finanças</span>
|
||||
|
||||
<span class="badge badge-clickable" data-value="{{ Militante.TESOUREIRO }}" data-original-class="bg-dark" data-bs-toggle="tooltip" title="Clique para alternar">Tesoureiro</span>
|
||||
|
||||
<span class="badge badge-clickable" data-value="{{ Militante.MNS }}" data-original-class="bg-info" data-bs-toggle="tooltip" title="Clique para alternar">MNS</span>
|
||||
|
||||
<span class="badge badge-clickable" data-value="{{ Militante.JUVENTUDE }}" data-original-class="bg-danger" data-bs-toggle="tooltip" title="Clique para alternar">Juventude</span>
|
||||
|
||||
<span class="badge badge-clickable" data-value="{{ Militante.ASPIRANTE }}" data-original-class="bg-light text-dark border" data-bs-toggle="tooltip" title="Clique para alternar">Aspirante</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -267,4 +272,52 @@
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<style>
|
||||
.badge-clickable {
|
||||
font-size: 0.9rem;
|
||||
padding: 0.5rem 1rem;
|
||||
margin: 0.3rem;
|
||||
cursor: pointer;
|
||||
transition: all 0.2s ease;
|
||||
opacity: 0.7;
|
||||
user-select: none;
|
||||
background-color: #e9ecef !important;
|
||||
color: #6c757d !important;
|
||||
border: 1px solid #dee2e6;
|
||||
}
|
||||
|
||||
.badge-clickable:hover {
|
||||
opacity: 0.9;
|
||||
}
|
||||
|
||||
.badge-clickable.active {
|
||||
opacity: 1;
|
||||
color: white !important;
|
||||
}
|
||||
|
||||
.responsabilidades-container {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
gap: 0.5rem;
|
||||
padding: 1rem;
|
||||
border: 1px solid #dee2e6;
|
||||
border-radius: 0.375rem;
|
||||
background-color: #f8f9fa;
|
||||
}
|
||||
|
||||
/* Cores personalizadas para badges */
|
||||
.bg-purple { background-color: #6f42c1 !important; color: white !important; }
|
||||
.bg-teal { background-color: #20c997 !important; color: white !important; }
|
||||
.bg-orange { background-color: #fd7e14 !important; color: white !important; }
|
||||
.bg-indigo { background-color: #6610f2 !important; color: white !important; }
|
||||
.bg-pink { background-color: #d63384 !important; color: white !important; }
|
||||
|
||||
/* Cores do Bootstrap que vamos usar */
|
||||
.active.bg-primary { background-color: #0d6efd !important; color: white !important; }
|
||||
.active.bg-success { background-color: #198754 !important; color: white !important; }
|
||||
.active.bg-info { background-color: #0dcaf0 !important; color: white !important; }
|
||||
.active.bg-danger { background-color: #dc3545 !important; color: white !important; }
|
||||
.active.bg-dark { background-color: #212529 !important; color: white !important; }
|
||||
</style>
|
||||
@@ -57,20 +57,20 @@
|
||||
</div>
|
||||
<div class="col-md-6 mb-3">
|
||||
<label for="data_nascimento" class="form-label">Data de Nascimento</label>
|
||||
<input type="date" class="form-control" id="data_nascimento" name="data_nascimento"
|
||||
placeholder="dd/mm/aaaa">
|
||||
<input type="text" class="form-control date-mask" id="data_nascimento" name="data_nascimento"
|
||||
placeholder="DD/MM/AAAA" maxlength="10">
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-6 mb-3">
|
||||
<label for="data_entrada" class="form-label">Data de Entrada OCI</label>
|
||||
<input type="date" class="form-control" id="data_entrada" name="data_entrada_oci"
|
||||
placeholder="dd/mm/aaaa">
|
||||
<input type="text" class="form-control date-mask" id="data_entrada" name="data_entrada_oci"
|
||||
placeholder="DD/MM/AAAA" maxlength="10">
|
||||
</div>
|
||||
<div class="col-md-6 mb-3">
|
||||
<label for="data_efetivacao" class="form-label">Data de Efetivação</label>
|
||||
<input type="date" class="form-control" id="data_efetivacao" name="data_efetivacao_oci"
|
||||
placeholder="dd/mm/aaaa">
|
||||
<input type="text" class="form-control date-mask" id="data_efetivacao" name="data_efetivacao_oci"
|
||||
placeholder="DD/MM/AAAA" maxlength="10">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -230,18 +230,32 @@
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<label class="form-label d-block">Responsabilidades</label>
|
||||
<div class="row g-3">
|
||||
{% for valor, nome in Militante.get_responsabilidades_list() %}
|
||||
<div class="col-md-6">
|
||||
<div class="form-check">
|
||||
<input type="checkbox" class="form-check-input" id="resp_{{ valor }}"
|
||||
name="responsabilidades" value="{{ valor }}">
|
||||
<label class="form-check-label" for="resp_{{ valor }}">{{ nome }}</label>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
<label class="form-label">Responsabilidades</label>
|
||||
<div class="responsabilidades-container">
|
||||
<input type="hidden" name="responsabilidades" id="novo_responsabilidades_values" value="0">
|
||||
|
||||
<span class="badge badge-clickable bg-secondary" data-value="{{ Militante.SECRETARIO }}" data-bs-toggle="tooltip" title="Clique para alternar">Secretário</span>
|
||||
|
||||
<span class="badge badge-clickable bg-info" data-value="{{ Militante.RESPONSAVEL_IMPRENSA }}" data-bs-toggle="tooltip" title="Clique para alternar">Responsável de Imprensa</span>
|
||||
|
||||
<span class="badge badge-clickable bg-warning text-dark" data-value="{{ Militante.IMPRENSA }}" data-bs-toggle="tooltip" title="Clique para alternar">Imprensa</span>
|
||||
|
||||
<span class="badge badge-clickable bg-warning text-dark" data-value="{{ Militante.MPS }}" data-bs-toggle="tooltip" title="Clique para alternar">MPS</span>
|
||||
|
||||
<span class="badge badge-clickable bg-success" data-value="{{ Militante.QUADRO_ORIENTADOR }}" data-bs-toggle="tooltip" title="Clique para alternar">Quadro-Orientador</span>
|
||||
|
||||
<span class="badge badge-clickable bg-primary" data-value="{{ Militante.RESPONSAVEL_FINANCAS }}" data-bs-toggle="tooltip" title="Clique para alternar">Responsável de Finanças</span>
|
||||
|
||||
<span class="badge badge-clickable bg-dark" data-value="{{ Militante.TESOUREIRO }}" data-bs-toggle="tooltip" title="Clique para alternar">Tesoureiro</span>
|
||||
|
||||
<span class="badge badge-clickable bg-info" data-value="{{ Militante.MNS }}" data-bs-toggle="tooltip" title="Clique para alternar">MNS</span>
|
||||
|
||||
<span class="badge badge-clickable bg-danger" data-value="{{ Militante.JUVENTUDE }}" data-bs-toggle="tooltip" title="Clique para alternar">Juventude</span>
|
||||
|
||||
<span class="badge badge-clickable bg-light text-dark border" data-value="{{ Militante.ASPIRANTE }}" data-bs-toggle="tooltip" title="Clique para alternar">Aspirante</span>
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -256,4 +270,34 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<style>
|
||||
.badge-clickable {
|
||||
font-size: 0.9rem;
|
||||
padding: 0.5rem 1rem;
|
||||
margin: 0.3rem;
|
||||
cursor: pointer;
|
||||
transition: all 0.2s ease;
|
||||
opacity: 0.5;
|
||||
user-select: none;
|
||||
}
|
||||
|
||||
.badge-clickable:hover {
|
||||
opacity: 0.8;
|
||||
}
|
||||
|
||||
.badge-clickable.active {
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
.responsabilidades-container {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
gap: 0.5rem;
|
||||
padding: 1rem;
|
||||
border: 1px solid #dee2e6;
|
||||
border-radius: 0.375rem;
|
||||
background-color: #f8f9fa;
|
||||
}
|
||||
</style>
|
||||
Reference in New Issue
Block a user