wagtail-enap-designsystem 1.2.1.142__py3-none-any.whl → 1.2.1.144__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of wagtail-enap-designsystem might be problematic. Click here for more details.

@@ -272,12 +272,7 @@ class RadioFieldBlock(blocks.StructBlock):
272
272
 
273
273
  class CheckboxFieldBlock(blocks.StructBlock):
274
274
  """Checkbox único"""
275
- label = blocks.CharBlock(label="Título do campo", max_length=255)
276
- checkbox_text = blocks.CharBlock(
277
- label="Texto do checkbox",
278
- max_length=500,
279
- help_text="O texto que aparece ao lado da caixinha"
280
- )
275
+ label = blocks.CharBlock(label="Título do campo", required=True)
281
276
  help_text = blocks.CharBlock(label="Texto de ajuda", required=False)
282
277
  required = blocks.BooleanBlock(label="Obrigatório", required=False)
283
278
 
@@ -7353,6 +7353,14 @@ class FormularioDinamicoBlock(blocks.StructBlock):
7353
7353
  help_text="Título do formulário"
7354
7354
  )
7355
7355
 
7356
+ cor_titulo = blocks.ChoiceBlock(
7357
+ label="Cor do Título",
7358
+ choices=BRAND_TEXTS_CHOICES,
7359
+ default='#024248',
7360
+ required=False,
7361
+ help_text="Cor do título conforme Design System ENAP"
7362
+ )
7363
+
7356
7364
  descricao = blocks.TextBlock(
7357
7365
  required=False,
7358
7366
  help_text="Descrição ou instruções do formulário"
@@ -7383,6 +7391,14 @@ class FormularioDinamicoBlock(blocks.StructBlock):
7383
7391
  help_text="Texto do botão de envio"
7384
7392
  )
7385
7393
 
7394
+ cor_botao = blocks.ChoiceBlock(
7395
+ label="Cor do Título",
7396
+ choices=BRAND_BUTTON_CHOICES,
7397
+ default='#024248',
7398
+ required=False,
7399
+ help_text="Cor do botão conforme Design System ENAP"
7400
+ )
7401
+
7386
7402
  class Meta:
7387
7403
  template = 'enap_designsystem/blocks/formulario_dinamico.html'
7388
7404
  icon = 'form'
@@ -7451,7 +7467,7 @@ class ApresentacaoBlock(blocks.StructBlock):
7451
7467
 
7452
7468
  # Botão
7453
7469
  botao_texto = blocks.CharBlock(
7454
- required=True,
7470
+ required=False,
7455
7471
  max_length=50,
7456
7472
  help_text="Texto do botão"
7457
7473
  )
@@ -16,6 +16,14 @@ from .html_blocks import (
16
16
  DepoimentosVideoListBlock
17
17
  )
18
18
 
19
+ from .semana_blocks import (
20
+ BRAND_INOVACAO_CHOICES,
21
+ BRAND_TEXTS_CHOICES,
22
+ BRAND_BG_CHOICES,
23
+ BRAND_BUTTON_CHOICES,
24
+ BRAND_HOVER_CHOICES
25
+ )
26
+
19
27
  from django.db import models
20
28
 
21
29
  from coderedcms.settings import crx_settings
@@ -178,6 +186,16 @@ class EnapSectionBlock(BaseLayoutBlock):
178
186
  help_text="Escolha a cor de fundo para a seção",
179
187
  label="Cor de fundo"
180
188
  )
189
+
190
+ max_width = blocks.ChoiceBlock(
191
+ choices=[
192
+ ('50%', 'Largura 50%'),
193
+ ('100%', 'Largura 100%'),
194
+ ],
195
+ default='50%',
196
+ help_text="Escolha a largura do titulo e subtitulo",
197
+ label="Largura do titulo e subtitulo"
198
+ )
181
199
 
182
200
  spacing = blocks.ChoiceBlock(
183
201
  choices=[
@@ -197,6 +215,14 @@ class EnapSectionBlock(BaseLayoutBlock):
197
215
  max_length=255,
198
216
  label=_("Titulo"),
199
217
  )
218
+
219
+ cor_titulo = blocks.ChoiceBlock(
220
+ label="Cor do Título",
221
+ choices=BRAND_TEXTS_CHOICES,
222
+ default='#024248',
223
+ required=False,
224
+ help_text="Cor do título conforme Design System ENAP"
225
+ )
200
226
 
201
227
  subtitle = blocks.RichTextBlock(
202
228
  required=False,
@@ -12,10 +12,12 @@ from .form import BASE_FORM_FIELD_BLOCKS
12
12
  # Cores principais da paleta
13
13
  # Cores principais para inovação - sem duplicatas e com valores hexadecimais válidos
14
14
  BRAND_INOVACAO_CHOICES = [
15
- ('enap-green', 'Verde ENAP'),
16
- ('enap-link', 'Verde Link ENAP'),
17
- ('gnova-purple', 'Roxo Gnova'),
18
- ('gnova-light', 'Roxo Claro Gnova'),
15
+ ('#024248', 'Verde ENAP'),
16
+ ('#FFF0D9', 'Creme Suave'), # Corrigido de 'bg-white', '#fbebd8'
17
+ ('#007D7A', 'Verde Link ENAP'),
18
+ ('#AD6BFC', 'Roxo Gnova'),
19
+ ('#B396FC', 'Roxo Claro Gnova'),
20
+ ('#2F134F', 'Roxo Escuro LIIA'),
19
21
  ('blue', 'Azul'),
20
22
  ('green', 'Verde'),
21
23
  ('red', 'Vermelho'),
@@ -24,6 +26,7 @@ BRAND_INOVACAO_CHOICES = [
24
26
  ('indigo', 'Índigo'),
25
27
  ('emerald', 'Esmeralda'),
26
28
  ('#FFFFFF', 'Branco (#FFFFFF)'),
29
+ ('#525258', 'Cinza Escuro (#525258)'),
27
30
  ('#132929', 'Verde Musgo Escuro'),
28
31
  ('#3A8A9C', 'Azul Petróleo'),
29
32
  ('#25552A', 'Verde Floresta Escuro'),
@@ -39,11 +42,12 @@ BRAND_INOVACAO_CHOICES = [
39
42
 
40
43
  # Cores para textos - removendo duplicatas e corrigindo valores
41
44
  BRAND_TEXTS_CHOICES = [
42
- ('enap-green', 'Verde ENAP'),
45
+ ('#024248', 'Verde ENAP'),
43
46
  ('#FFF0D9', 'Creme Suave'), # Corrigido de 'bg-white', '#fbebd8'
44
- ('enap-link', 'Verde Link ENAP'),
45
- ('gnova-purple', 'Roxo Gnova'),
46
- ('gnova-light', 'Roxo Claro Gnova'),
47
+ ('#007D7A', 'Verde Link ENAP'),
48
+ ('#AD6BFC', 'Roxo Gnova'),
49
+ ('#B396FC', 'Roxo Claro Gnova'),
50
+ ('#2F134F', 'Roxo Escuro LIIA'),
47
51
  ('blue', 'Azul'),
48
52
  ('green', 'Verde'),
49
53
  ('red', 'Vermelho'),
@@ -52,6 +56,7 @@ BRAND_TEXTS_CHOICES = [
52
56
  ('indigo', 'Índigo'),
53
57
  ('emerald', 'Esmeralda'),
54
58
  ('#FFFFFF', 'Branco (#FFFFFF)'),
59
+ ('#525258', 'Cinza Escuro (#525258)'),
55
60
  ('#132929', 'Verde Musgo Escuro'),
56
61
  ('#00777D', 'Enap'),
57
62
  ('#58606E', 'Enap Cinza'),
@@ -76,6 +81,7 @@ BRAND_BG_CHOICES = [
76
81
  ('rgba(0,0,0,0.5)', 'Preto Semi-transparente'),
77
82
  ('#F8F9FA', 'Cinza Claro (#F8F9FA)'),
78
83
  ('#000000', 'Preto (#000000)'),
84
+ ('#525258', 'Cinza Escuro (#525258)'),
79
85
  ('#024248', 'Verde ENAP'),
80
86
  ('#007D7A', 'Verde Link ENAP'),
81
87
  ('#AD6BFC', 'Roxo Gnova'),
@@ -106,10 +112,12 @@ BRAND_BG_CHOICES = [
106
112
 
107
113
  # Cores para botões e elementos interativos
108
114
  BRAND_BUTTON_CHOICES = [
109
- ('enap-green', 'Verde ENAP'),
110
- ('enap-link', 'Verde Link ENAP'),
111
- ('gnova-purple', 'Roxo Gnova'),
112
- ('gnova-light', 'Roxo Claro Gnova'),
115
+ ('transparent', 'Transparente'),
116
+ ('#024248', 'Verde ENAP'),
117
+ ('#007D7A', 'Verde Link ENAP'),
118
+ ('#AD6BFC', 'Roxo Gnova'),
119
+ ('#B396FC', 'Roxo Claro Gnova'),
120
+ ('#2F134F', 'Roxo Escuro LIIA'),
113
121
  ('blue', 'Azul'),
114
122
  ('green', 'Verde'),
115
123
  ('red', 'Vermelho'),
@@ -118,6 +126,7 @@ BRAND_BUTTON_CHOICES = [
118
126
  ('indigo', 'Índigo'),
119
127
  ('emerald', 'Esmeralda'),
120
128
  ('#FFFFFF', 'Branco (#FFFFFF)'),
129
+ ('#525258', 'Cinza Escuro (#525258)'),
121
130
  ('#FF7A1B', 'Laranja Vibrante'),
122
131
  ('#FFEB31', 'Amarelo Canário'),
123
132
  ('#3A8A9C', 'Azul Petróleo'),
@@ -130,10 +139,11 @@ BRAND_BUTTON_CHOICES = [
130
139
 
131
140
  # Cores para hover dos botões
132
141
  BRAND_HOVER_CHOICES = [
133
- ('enap-green', 'Verde ENAP'),
134
- ('enap-link', 'Verde Link ENAP'),
135
- ('gnova-purple', 'Roxo Gnova'),
136
- ('gnova-light', 'Roxo Claro Gnova'),
142
+ ('#024248', 'Verde ENAP'),
143
+ ('#007D7A', 'Verde Link ENAP'),
144
+ ('#AD6BFC', 'Roxo Gnova'),
145
+ ('#B396FC', 'Roxo Claro Gnova'),
146
+ ('#2F134F', 'Roxo Escuro LIIA'),
137
147
  ('blue', 'Azul'),
138
148
  ('green', 'Verde'),
139
149
  ('red', 'Vermelho'),
@@ -142,6 +152,7 @@ BRAND_HOVER_CHOICES = [
142
152
  ('indigo', 'Índigo'),
143
153
  ('emerald', 'Esmeralda'),
144
154
  ('#FFFFFF', 'Branco (#FFFFFF)'),
155
+ ('#525258', 'Cinza Escuro (#525258)'),
145
156
  ('#E6690F', 'Laranja Escuro'),
146
157
  ('#E6D220', 'Amarelo Escuro'),
147
158
  ('#2E7A8A', 'Azul Petróleo Escuro'),
@@ -1302,13 +1313,13 @@ class MenuNavigationBlock(blocks.StructBlock):
1302
1313
 
1303
1314
  cor_ativo = blocks.ChoiceBlock(
1304
1315
  choices=BRAND_BUTTON_CHOICES,
1305
- default='#FF7A1B',
1316
+ default='#7F994A',
1306
1317
  help_text="Cor do item ativo"
1307
1318
  )
1308
1319
 
1309
1320
  cor_hover = blocks.ChoiceBlock(
1310
1321
  choices=BRAND_BUTTON_CHOICES,
1311
- default='#FFEB31',
1322
+ default='#7F994A',
1312
1323
  help_text="Cor do hover nos itens"
1313
1324
  )
1314
1325
 
@@ -32,8 +32,7 @@
32
32
  justify-content: center;
33
33
  text-align: center;
34
34
  height: auto;
35
- background-color: rgba(106, 27, 154, 0.15);
36
- box-shadow: 0 3px 6px 0 rgba(0, 0, 0, 0.16);
35
+ box-shadow: unset;
37
36
  font-weight: 500;
38
37
  padding: 0px;
39
38
  text-decoration: none;
@@ -281,7 +280,7 @@
281
280
  <div class="cards-container {{ value.layout_cards|default:'cards-3-colunas' }}">
282
281
  {% for card in value.cards %}
283
282
  {% if card.block_type == 'card' %}
284
- <div class="card-item">
283
+ <div class="card-item" style="background: {{ value.cor_fundo }}">
285
284
  <div class="card-apresentacao" style="background: {{ value.cor_fundo_cards }}">
286
285
 
287
286
  <!-- Imagem do card -->
@@ -6,7 +6,7 @@
6
6
  <!-- Cabeçalho do formulário -->
7
7
  {% if value.titulo %}
8
8
  <div class="formulario-header mb-4">
9
- <h2 class="h3 mb-2">{{ value.titulo }}</h2>
9
+ <h2 style="color: {{value.cor_titulo}}" class="h3 mb-2">{{ value.titulo }}</h2>
10
10
  {% if value.descricao %}
11
11
  <p class="text-muted">{{ value.descricao }}</p>
12
12
  {% endif %}
@@ -273,8 +273,8 @@
273
273
  {% elif campo.block_type == 'section_header' %}
274
274
  <div class="section-header mt-4 mb-3">
275
275
  <h4 class="h5">{{ campo.value.title }}</h4>
276
- {% if campo.value.description %}
277
- <p class="text-muted">{{ campo.value.description }}</p>
276
+ {% if campo.value.subtitle %}
277
+ <p class="text-muted">{{ campo.value.subtitle }}</p>
278
278
  {% endif %}
279
279
  </div>
280
280
 
@@ -298,7 +298,7 @@
298
298
 
299
299
  <!-- Botão de envio -->
300
300
  <div class="formulario-submit mt-4">
301
- <button type="submit" class="btn primary btn-lg">
301
+ <button type="submit" class="btn primary btn-lg" style="background-color: {{value.cor_botao}};">
302
302
  <i class="fas fa-paper-plane me-2"></i>
303
303
  {{ value.botao_texto|default:"Enviar" }}
304
304
  </button>
@@ -1,6 +1,6 @@
1
1
  {% load wagtailcore_tags %}
2
2
 
3
- <div class="estatisticas-section" style="background-color: {{ value.cor_fundo_conteudo }}; border-bottom: 16px solid {{ value.cor_line }}; padding: 60px 0; width: 100%;">
3
+ <div class="estatisticas-section" style="background-color: {{ value.cor_fundo }}; border-bottom: 16px solid {{ value.cor_line }}; padding: 60px 0; width: 100%;">
4
4
  <div class="container">
5
5
  <h2 class="secao-cabecalho text-center font-bold mb-8"
6
6
  style="color: {{ value.cor_titulo }};">
@@ -13,9 +13,9 @@
13
13
  {% if self.title or self.subtitle %}
14
14
  <div class="container-medium">
15
15
  <div class="padding-global">
16
- <div class="wrapper-text-blue">
16
+ <div class="wrapper-text-blue" style="max-width: {{value.max_width}};">
17
17
  {% if self.title %}
18
- <h2 class="h2-blue-large {% if self.custom_class == 'bg-darkgreen' or self.custom_class == 'bg-enap-100' or self.custom_class == 'bg-enap-90' or self.custom_class == 'bg-enap-80' or self.custom_class == 'bg-enap-70' or self.custom_class == 'bg-enap-50' or self.custom_class == 'bg-enap-40' %}white{% endif %}">{{self.title}}</h2>
18
+ <h2 style="color: {{ value.cor_titulo }}" class="h2-blue-large {% if self.custom_class == 'bg-darkgreen' or self.custom_class == 'bg-enap-100' or self.custom_class == 'bg-enap-90' or self.custom_class == 'bg-enap-80' or self.custom_class == 'bg-enap-70' or self.custom_class == 'bg-enap-50' or self.custom_class == 'bg-enap-40' %}white{% endif %}">{{self.title}}</h2>
19
19
  {% endif %}
20
20
  {% if self.subtitle %}
21
21
  <div class="{% if self.custom_class == 'bg-darkgreen' or self.custom_class == 'bg-enap-100' or self.custom_class == 'bg-enap-90' or self.custom_class == 'bg-enap-80' or self.custom_class == 'bg-enap-70' or self.custom_class == 'bg-enap-50' or self.custom_class == 'bg-enap-40' %}white{% endif %}">
@@ -62,37 +62,37 @@
62
62
  </p>
63
63
  </div>
64
64
  <div class="tab">
65
- <a class="tabbusca tab-btn {% if tipo == 'cursos' %}active{% endif %}"
65
+ <a class="tabbusca tab-btn {% if tipo == 'cursos' %}active{% endif %} tabcursos"
66
66
  href="?q={{ query }}&tipo=cursos{% if ordenacao %}&ordenacao={{ ordenacao }}{% else %}&ordenacao=recentes{% endif %}">
67
67
  Cursos
68
68
  <span class="tab-count">{{ tabs_totais.cursos }}</span>
69
69
  </a>
70
70
 
71
- <a class="tabbusca tab-btn {% if tipo == 'servicos' %}active{% endif %}"
71
+ <a class="tabbusca tab-btn {% if tipo == 'servicos' %}active{% endif %} tabservicos"
72
72
  href="?q={{ query }}&tipo=servicos{% if ordenacao %}&ordenacao={{ ordenacao }}{% else %}&ordenacao=recentes{% endif %}">
73
73
  Serviços
74
74
  <span class="tab-count">{{ tabs_totais.servicos }}</span>
75
75
  </a>
76
76
 
77
- <a class="tabbusca tab-btn {% if tipo == 'noticias' %}active{% endif %}"
77
+ <a class="tabbusca tab-btn {% if tipo == 'noticias' %}active{% endif %} tabnoticiais"
78
78
  href="?q={{ query }}&tipo=noticias{% if ordenacao %}&ordenacao={{ ordenacao }}{% else %}&ordenacao=recentes{% endif %}">
79
79
  Notícias
80
80
  <span class="tab-count">{{ tabs_totais.noticias }}</span>
81
81
  </a>
82
82
 
83
- <a class="tabbusca tab-btn {% if tipo == 'eventos' %}active{% endif %}"
83
+ <a class="tabbusca tab-btn {% if tipo == 'eventos' %}active{% endif %} tabeventos"
84
84
  href="?q={{ query }}&tipo=eventos{% if ordenacao %}&ordenacao={{ ordenacao }}{% else %}&ordenacao=recentes{% endif %}">
85
85
  Eventos e Oficinas
86
86
  <span class="tab-count">{{ tabs_totais.eventos }}</span>
87
87
  </a>
88
88
 
89
- <a class="tabbusca tab-btn {% if tipo == 'pesquisa_conhecimento' %}active{% endif %}"
89
+ <a class="tabbusca tab-btn {% if tipo == 'pesquisa_conhecimento' %}active{% endif %} tabpesquisa"
90
90
  href="?q={{ query }}&tipo=pesquisa_conhecimento{% if ordenacao %}&ordenacao={{ ordenacao }}{% else %}&ordenacao=recentes{% endif %}">
91
91
  Pesquisa e Conhecimento
92
92
  <span class="tab-count">{{ tabs_totais.pesquisa_conhecimento }}</span>
93
93
  </a>
94
94
 
95
- <a class="tabbusca tab-btn {% if tipo == 'todos' %}active{% endif %}"
95
+ <a class="tabbusca tab-btn {% if tipo == 'todos' %}active{% endif %} tabtodos"
96
96
  href="?q={{ query }}&tipo=todos{% if ordenacao %}&ordenacao={{ ordenacao }}{% else %}&ordenacao=recentes{% endif %}">
97
97
  Todos
98
98
  <span class="tab-count">{{ tabs_totais.todos }}</span>
@@ -1,6 +1,16 @@
1
1
  <!-- enap_designsystem/templates/enap_designsystem/blocks/menu_navigation.html -->
2
2
  {% load wagtailimages_tags %}
3
+ <style>
4
+ .nav-linktwo:hover {
5
+ border-bottom: 3px solid {{ value.cor_hover }};
6
+ color: {{ value.cor_texto }};
7
+ }
3
8
 
9
+ .nav-linktwo:active {
10
+ border-bottom: 3px solid {{ value.cor_ativo }};
11
+ color: {{ value.cor_texto }};
12
+ }
13
+ </style>
4
14
  <nav class="navbar_semana" style="background-color: {{ value.cor_fundo }};">
5
15
  <div class="container-fluid_semana">
6
16
  <!-- Logo -->
@@ -1509,14 +1509,22 @@
1509
1509
  this.desabilitarOutrosBotoes(categoriaId, button);
1510
1510
  }
1511
1511
 
1512
- // Mostrar feedback
1513
- this.showFeedback(`Voto registrado em "${data.projeto_titulo || 'projeto'}"!`, 'success');
1512
+ // Verificar se votação está completa
1513
+ const votacaoCompleta = this.verificarVotacaoCompleta();
1514
+
1515
+ // Mostrar feedback adequado
1516
+ if (votacaoCompleta) {
1517
+ this.showFeedback(`🎉 Parabéns! Você votou em todas as categorias!`, 'success');
1518
+ } else {
1519
+ this.showFeedback(`Voto registrado em "${data.projeto_titulo || 'projeto'}"!`, 'success');
1520
+ }
1514
1521
 
1515
1522
  // Mostrar próximo passo após delay
1516
1523
  setTimeout(() => {
1517
1524
  this.mostrarModalPosVoto(categoriaId);
1518
1525
  }, 2000);
1519
1526
  },
1527
+
1520
1528
 
1521
1529
  // Atualizar contador de votos
1522
1530
  atualizarContador(projetoId, totalVotos) {
@@ -1571,7 +1579,6 @@
1571
1579
  },
1572
1580
 
1573
1581
  // Mostrar modal pós-voto
1574
- // Substitua a função mostrarModalPosVoto() existente por esta versão corrigida:
1575
1582
 
1576
1583
  // Mostrar modal pós-voto
1577
1584
  mostrarModalPosVoto(categoriaAtualId) {
@@ -1579,14 +1586,23 @@
1579
1586
  const proximoIndice = indiceAtual + 1;
1580
1587
  const temProximaCategoria = proximoIndice < this.categoriasOrdem.length;
1581
1588
 
1582
- if (temProximaCategoria) {
1589
+ // NOVA VERIFICAÇÃO: Checar se todas as categorias foram votadas
1590
+ const todasVotadas = this.votosCategoria.size >= this.configuracao.totalCategorias;
1591
+
1592
+ if (temProximaCategoria && !todasVotadas) {
1583
1593
  this.proximaCategoriaData = this.categoriasOrdem[proximoIndice];
1584
1594
  this.gerarPreviewProximaCategoria(this.proximaCategoriaData.id);
1585
1595
  } else {
1586
1596
  this.proximaCategoriaData = null;
1587
1597
  }
1588
1598
 
1589
- // Atualizar a visibilidade dos botões baseado se tem próxima categoria
1599
+ // Se todas foram votadas, mostrar modal de conclusão em vez do modal pós-voto
1600
+ if (todasVotadas) {
1601
+ this.mostrarModalConclusao();
1602
+ return;
1603
+ }
1604
+
1605
+ // Caso contrário, atualizar botões baseado se tem próxima categoria
1590
1606
  this.atualizarBotoesModal(temProximaCategoria);
1591
1607
 
1592
1608
  if (this.elementos.modalPosVoto) {
@@ -1599,10 +1615,27 @@
1599
1615
  const botaoContinuar = document.querySelector('.sistema-btn-continuar');
1600
1616
  const botaoFinalizar = document.querySelector('.sistema-modal-actions .sistema-btn-finalizar');
1601
1617
 
1602
- if (temProximaCategoria) {
1603
- // Ainda categorias - mostrar ambos os botões
1618
+ // Verificar se todas as categorias foram votadas
1619
+ const todasVotadas = this.votosCategoria.size >= this.configuracao.totalCategorias;
1620
+
1621
+ if (todasVotadas) {
1622
+ // TODAS VOTADAS: Esconder botão continuar, destacar finalizar
1623
+ if (botaoContinuar) {
1624
+ botaoContinuar.style.display = 'none';
1625
+ }
1626
+ if (botaoFinalizar) {
1627
+ botaoFinalizar.style.display = 'block';
1628
+ botaoFinalizar.style.width = '100%';
1629
+ botaoFinalizar.innerHTML = `
1630
+ <i class="fas fa-trophy"></i>
1631
+ <span>Parabéns! Finalizar Votação</span>
1632
+ `;
1633
+ }
1634
+ } else if (temProximaCategoria) {
1635
+ // AINDA HÁ CATEGORIAS: Mostrar ambos os botões
1604
1636
  if (botaoContinuar) {
1605
1637
  botaoContinuar.style.display = 'block';
1638
+ botaoContinuar.style.width = '';
1606
1639
  botaoContinuar.innerHTML = `
1607
1640
  Votar na próxima categoria
1608
1641
  <i class="fas fa-arrow-right"></i>
@@ -1610,9 +1643,10 @@
1610
1643
  }
1611
1644
  if (botaoFinalizar) {
1612
1645
  botaoFinalizar.style.display = 'block';
1646
+ botaoFinalizar.style.width = '';
1613
1647
  }
1614
1648
  } else {
1615
- // Última categoria - esconder botão continuar, destacar finalizar
1649
+ // ÚLTIMA CATEGORIA MAS NEM TODAS VOTADAS: Esconder continuar, destacar finalizar
1616
1650
  if (botaoContinuar) {
1617
1651
  botaoContinuar.style.display = 'none';
1618
1652
  }
@@ -1620,12 +1654,47 @@
1620
1654
  botaoFinalizar.style.display = 'block';
1621
1655
  botaoFinalizar.style.width = '100%';
1622
1656
  botaoFinalizar.innerHTML = `
1623
- <i class="fas fa-trophy"></i>
1657
+ <i class="fas fa-check-circle"></i>
1624
1658
  <span>Finalizar Votação</span>
1625
1659
  `;
1626
1660
  }
1627
1661
  }
1628
1662
  },
1663
+
1664
+ verificarVotacaoCompleta() {
1665
+ const todasVotadas = this.votosCategoria.size >= this.configuracao.totalCategorias;
1666
+
1667
+ if (todasVotadas) {
1668
+ console.log('🎉 Todas as categorias foram votadas!');
1669
+
1670
+ // Atualizar interface para indicar conclusão
1671
+ const progressoElements = document.querySelectorAll('.sistema-progresso-status');
1672
+ progressoElements.forEach(element => {
1673
+ if (element) {
1674
+ element.innerHTML = `
1675
+ <i class="fas fa-check-circle" style="color: #059669; margin-right: 0.5rem;"></i>
1676
+ Votação Completa!
1677
+ `;
1678
+ element.style.color = '#059669';
1679
+ element.style.fontWeight = 'bold';
1680
+ }
1681
+ });
1682
+
1683
+ // Opcional: Adicionar efeito visual de conclusão
1684
+ const progressoBars = document.querySelectorAll('.sistema-progresso-fill');
1685
+ progressoBars.forEach(bar => {
1686
+ if (bar) {
1687
+ bar.style.background = 'linear-gradient(90deg, #059669, #10b981)';
1688
+ bar.style.boxShadow = '0 0 10px rgba(5, 150, 105, 0.3)';
1689
+ }
1690
+ });
1691
+
1692
+ return true;
1693
+ }
1694
+
1695
+ return false;
1696
+ },
1697
+
1629
1698
 
1630
1699
  // Gerar preview da próxima categoria
1631
1700
  gerarPreviewProximaCategoria(proximaCategoriaId) {
@@ -1756,6 +1825,7 @@
1756
1825
  atualizarProgresso() {
1757
1826
  const votadas = this.votosCategoria.size;
1758
1827
  const percentual = Math.round((votadas / this.configuracao.totalCategorias) * 100);
1828
+ const completa = votadas >= this.configuracao.totalCategorias;
1759
1829
 
1760
1830
  // Atualizar elementos de progresso
1761
1831
  const elementos = [
@@ -1764,10 +1834,46 @@
1764
1834
  ];
1765
1835
 
1766
1836
  elementos.forEach(({ fill, status, text }) => {
1767
- if (fill) fill.style.width = `${percentual}%`;
1768
- if (status) status.textContent = `${votadas} de ${this.configuracao.totalCategorias} categorias`;
1769
- if (text) text.textContent = `${percentual}% concluído`;
1837
+ if (fill) {
1838
+ fill.style.width = `${percentual}%`;
1839
+ // Adicionar efeito visual quando completa
1840
+ if (completa) {
1841
+ fill.style.background = 'linear-gradient(90deg, #059669, #10b981)';
1842
+ fill.style.boxShadow = '0 0 10px rgba(5, 150, 105, 0.3)';
1843
+ }
1844
+ }
1845
+
1846
+ if (status) {
1847
+ if (completa) {
1848
+ status.innerHTML = `
1849
+ <i class="fas fa-trophy" style="color: #059669; margin-right: 0.5rem;"></i>
1850
+ Parabéns! ${votadas} de ${this.configuracao.totalCategorias} categorias
1851
+ `;
1852
+ status.style.color = '#059669';
1853
+ } else {
1854
+ status.textContent = `${votadas} de ${this.configuracao.totalCategorias} categorias`;
1855
+ status.style.color = '';
1856
+ }
1857
+ }
1858
+
1859
+ if (text) {
1860
+ if (completa) {
1861
+ text.innerHTML = `
1862
+ <i class="fas fa-check-circle" style="color: #059669; margin-right: 0.25rem;"></i>
1863
+ 100% - Votação Completa!
1864
+ `;
1865
+ text.style.color = '#059669';
1866
+ text.style.fontWeight = 'bold';
1867
+ } else {
1868
+ text.textContent = `${percentual}% concluído`;
1869
+ text.style.color = '';
1870
+ text.style.fontWeight = '';
1871
+ }
1872
+ }
1770
1873
  });
1874
+
1875
+ // Log para debug
1876
+ console.log(`📊 Progresso atualizado: ${votadas}/${this.configuracao.totalCategorias} (${percentual}%)`);
1771
1877
  },
1772
1878
 
1773
1879
  // Mostrar feedback
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: wagtail-enap-designsystem
3
- Version: 1.2.1.142
3
+ Version: 1.2.1.144
4
4
  Summary: Módulo de componentes utilizado nos portais ENAP, desenvolvido com Wagtail + CodeRedCMS
5
5
  Author: Renan Campos
6
6
  Author-email: renan.oliveira@enap.gov.br
@@ -11,11 +11,11 @@ enap_designsystem/blocks/__init__.py,sha256=uqscsM_LrnSs_WEJqzwAThHQb4SSp2ncm__Y
11
11
  enap_designsystem/blocks/base_blocks.py,sha256=ZuqVWn4PEAvD3pKM1ST7wjo4lwv98ooen_rs15rRJbg,10866
12
12
  enap_designsystem/blocks/chatbot_blocks.py,sha256=YeCznrXMbFa9MP9vjdTYl53ZhKsywkGOXvFK2bwcqW0,1133
13
13
  enap_designsystem/blocks/content_blocks.py,sha256=4oWDtY0zmvC6k7v_WduCTAyGapJuQTsfJ9ij_vJZXxY,16549
14
- enap_designsystem/blocks/form.py,sha256=TnoRExEukCBRqSug_NmA-b4oKBdRQsWOsbuzKANCqTc,88947
15
- enap_designsystem/blocks/html_blocks.py,sha256=_U-vdxiM_G6pTTfqyfLyiglblXVBvmggXwETeEFBJ7k,247146
16
- enap_designsystem/blocks/layout_blocks.py,sha256=WyVt3nwYxA4Eqr6-MqQY7W-xtjh07ZhstM8aiQaHmLw,23388
14
+ enap_designsystem/blocks/form.py,sha256=oK0Lswd1nIH0bLTdBL_XF_1LbNPixEYr5FJWj8DAxHY,88782
15
+ enap_designsystem/blocks/html_blocks.py,sha256=zgISh9Z-CDhiAhRZa4XZJDKEwcevxdcKR68rGKinBUM,247608
16
+ enap_designsystem/blocks/layout_blocks.py,sha256=FitIZgTm-JWcZ4KEMMPADxRs7AO8qMsLGERwgkg-rds,24059
17
17
  enap_designsystem/blocks/security.py,sha256=QA7lmQ_eQ6iopunatl_DrHkEegAwMZJGwXunRulbCjk,2099
18
- enap_designsystem/blocks/semana_blocks.py,sha256=eB_WYloTc7ToMGMRrcBYZXch5boo5NS1gTXdl5hCbew,70580
18
+ enap_designsystem/blocks/semana_blocks.py,sha256=IjwuzEhD5IjxLYg-sUi4bRbQpQiAI_Vl6rkpklLpBlU,70994
19
19
  enap_designsystem/blocks/semana_inovacao.py,sha256=ZKjXzvs_RbLzv3nxsnmVxcAWORlpFIr9C7_aMb8rZRs,47037
20
20
  enap_designsystem/middleware/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
21
21
  enap_designsystem/middleware/aluno_sso.py,sha256=baitPngI34eKwHKaku-5JIbDAnXpEHPvRFTs9AY1K6o,542
@@ -622,7 +622,7 @@ enap_designsystem/templates/admin/exportar_respostas.html,sha256=jF7hGJ6LkbKo536
622
622
  enap_designsystem/templates/admin/meta_tags_manager.html,sha256=jXNvT9etPN88TNT8Ou8ko-AHComioM9p8iU1lpW5m3k,11826
623
623
  enap_designsystem/templates/enap_designsystem/accordion_v2.html,sha256=SE-72OoHu-WucITL-CPR4XJzfLHrq78kmiytaSJB3Lc,4228
624
624
  enap_designsystem/templates/enap_designsystem/base.html,sha256=SfB9LSqHgQdmB-0xNbIsG9PIZFBTvZQfUAnp1R3yv08,13407
625
- enap_designsystem/templates/enap_designsystem/sistema_votacao_page.html,sha256=EN9QwgvRoeH0GJ1u7uIRVQaYMlsTjDR1fOQMqigjtmI,59696
625
+ enap_designsystem/templates/enap_designsystem/sistema_votacao_page.html,sha256=61fptIOaOvzkc-KkcCNW-S0RuB2f1OL2HGaqe_KpIXc,64205
626
626
  enap_designsystem/templates/enap_designsystem/blocks/accordions.html,sha256=WXBQrkO4U0R8SDbdbFRWBx742gdpiYiKEviiyQURZMk,2940
627
627
  enap_designsystem/templates/enap_designsystem/blocks/accordionsv2.html,sha256=-WXIV6zFjdbRAylWhF9mQkMxUr1Df4-d3OazVm1xT9s,5186
628
628
  enap_designsystem/templates/enap_designsystem/blocks/alerts.html,sha256=_lbwHiFS4eauJtlQB6j-xWR31sKH7lv1EKD9oI2cki4,2067
@@ -650,7 +650,7 @@ enap_designsystem/templates/enap_designsystem/blocks/card_flex_block.html,sha256
650
650
  enap_designsystem/templates/enap_designsystem/blocks/card_item.html,sha256=i8P0HyYQNIYknIw7RQf81QxdnAaJgPoLi4y0Hr4mAdg,1628
651
651
  enap_designsystem/templates/enap_designsystem/blocks/cardgrid_block.html,sha256=nxD_ZgzSRtZIo3AtHPj1R6pWVgJY3AUHJTRYUcf5dTw,207
652
652
  enap_designsystem/templates/enap_designsystem/blocks/cards_section.html,sha256=nEN4HNbT8eb_Vs8XG0uB4IyxVFfd3uLPt2SWJzP30h0,3967
653
- enap_designsystem/templates/enap_designsystem/blocks/cards_titles.html,sha256=1RfvrFrssXiVbLgxxTEtz92HjveAD68dH6f21bY0kIA,10077
653
+ enap_designsystem/templates/enap_designsystem/blocks/cards_titles.html,sha256=Cyf0RDwssQHLNGASJ2zHjjfTqpEEET3gjx250nze3-o,10045
654
654
  enap_designsystem/templates/enap_designsystem/blocks/carousel.html,sha256=WJq2NzkpANYkQwHizH7w85SKhmuVxx2goz_BHNTOKNo,16285
655
655
  enap_designsystem/templates/enap_designsystem/blocks/carousel_bggreen.html,sha256=fpwz8WrgGQ5bOsk66TktliBSA5HPz35OcqTlsXV0aLI,28030
656
656
  enap_designsystem/templates/enap_designsystem/blocks/carousel_images.html,sha256=G4nZTKCSPfhu4Qdq-1u-QzG6exw6iOPKd2QWAkaH3Vw,15142
@@ -691,7 +691,7 @@ enap_designsystem/templates/enap_designsystem/blocks/footer_grid_block.html,sha2
691
691
  enap_designsystem/templates/enap_designsystem/blocks/footer_link_block.html,sha256=oKMUbfIQqdmiTXvc4QlpUmplhP7PRMPBVpwMlvAIlg4,127
692
692
  enap_designsystem/templates/enap_designsystem/blocks/form_contato.html,sha256=uqfAvvSpaML03YbzS-GUO-oGXnKdbF2mC1osE3UHhlE,11871
693
693
  enap_designsystem/templates/enap_designsystem/blocks/form_template.html,sha256=dLNFXRDWtgQ4DQ_yAvfKJMHbvj0qPWw29lj6GqN6a0U,5199
694
- enap_designsystem/templates/enap_designsystem/blocks/formulario_dinamico.html,sha256=Q2CJDa9mo49eb0dg-X9vsY0bFzJ8_wqU4k0h6YcdYy4,23458
694
+ enap_designsystem/templates/enap_designsystem/blocks/formulario_dinamico.html,sha256=vWaseHS5yteGNEQ6Xc_bZHjhR1M71pj5cJ7ES0ozacI,23535
695
695
  enap_designsystem/templates/enap_designsystem/blocks/formulario_snippet.html,sha256=0Y2F18NoOLudPFzCL-_McddMHI7nG537ywkPmXc-knc,9185
696
696
  enap_designsystem/templates/enap_designsystem/blocks/galeria_imagens_block.html,sha256=Fed_WifAENuai03GEvPG05lQAQRspwp4fuD_JTT1o6Q,9857
697
697
  enap_designsystem/templates/enap_designsystem/blocks/gallery_modern.html,sha256=eLxXtv0QnQeJ6AbmuxMiZYdtqiaE3xK886Id3MmZFZA,20751
@@ -715,7 +715,7 @@ enap_designsystem/templates/enap_designsystem/blocks/modal.html,sha256=twkTxgliW
715
715
  enap_designsystem/templates/enap_designsystem/blocks/navbar_chooserpage.html,sha256=b7lntKUbNpi8yacC9xGh10_BSC4e9UiVnoWL5w4vJCs,9383
716
716
  enap_designsystem/templates/enap_designsystem/blocks/navbar_component.html,sha256=cfQV24ntBA27cxoXNiRadnytoCGcS59FIowTstti_vk,4831
717
717
  enap_designsystem/templates/enap_designsystem/blocks/navbarv3.html,sha256=nagcfcz0hB_V1NT2IOczFcmgjd1OvQ9fnpITWwXhSA8,5501
718
- enap_designsystem/templates/enap_designsystem/blocks/numeros_block.html,sha256=ISx_7pQFSfHYVi1dmJFQ5SUPwZRP7CankCPI_LarULs,2320
718
+ enap_designsystem/templates/enap_designsystem/blocks/numeros_block.html,sha256=IfXUa13DxCFQKnfjaZd7IN42hcluDf-Xipxo5A1bnYg,2311
719
719
  enap_designsystem/templates/enap_designsystem/blocks/ouvidoria_block.html,sha256=ivehDQbJd1VAdyTHdHU1wkjkWMCQ2SnoOrZRWScfH9w,3634
720
720
  enap_designsystem/templates/enap_designsystem/blocks/pagination.html,sha256=ngRTn0fxMYuDOw0MD6VHAmu0VqQMx_A8oDUCdqBRanI,3308
721
721
  enap_designsystem/templates/enap_designsystem/blocks/preview_courses.html,sha256=TV6GH_CCEpQUmdEJMqCzVyKS2KSWpEP8mnosYoJsp4Y,13344
@@ -725,7 +725,7 @@ enap_designsystem/templates/enap_designsystem/blocks/quote_block.html,sha256=x_h
725
725
  enap_designsystem/templates/enap_designsystem/blocks/quote_modern.html,sha256=AQNhVuMFezBvpOKPLkgDN2Vnpl8llDTzFGf3wrraIgg,873
726
726
  enap_designsystem/templates/enap_designsystem/blocks/recaptcha.html,sha256=MMNi3UuRtgLFDVpSD90wiyXdyqt_u8lPy30Jx7ulLis,10470
727
727
  enap_designsystem/templates/enap_designsystem/blocks/richtext_block.html,sha256=_2-KY2KOIzGFfM4wTy5-9VIKPzMDgPdthO3DR_CBVIE,2373
728
- enap_designsystem/templates/enap_designsystem/blocks/section_block.html,sha256=X9xF7a0hg368FnQxzSGz7heEpiMAvmwaBB4NDFgQVKE,3598
728
+ enap_designsystem/templates/enap_designsystem/blocks/section_block.html,sha256=FK9YCPBTPjU5QT4NheAJkrZDMN1bFwIIsfcy6TyPSjk,3676
729
729
  enap_designsystem/templates/enap_designsystem/blocks/section_card_title_center.html,sha256=LuS4dqVRHf5t3j1sQoWN8elKztLjy1TozM9DJDiGZoA,5025
730
730
  enap_designsystem/templates/enap_designsystem/blocks/section_carousel.html,sha256=vv6WU4XnsDIh0WcEBRurxhW6yUEMGJ8R7HwUGO3scG4,15266
731
731
  enap_designsystem/templates/enap_designsystem/blocks/section_tabs_cards.html,sha256=kKJO2wYuD3QgOmbcQgWFSyQVTJpQmGLjnUXH_l5Ai08,5857
@@ -782,7 +782,7 @@ enap_designsystem/templates/enap_designsystem/pages/durante_evento.html,sha256=c
782
782
  enap_designsystem/templates/enap_designsystem/pages/enap_layout.html,sha256=nZV71dI5MiM2CC6vbcKAX2H0fuqBsz2jvSOwtODEluU,1969
783
783
  enap_designsystem/templates/enap_designsystem/pages/enap_layout_semana.html,sha256=nZV71dI5MiM2CC6vbcKAX2H0fuqBsz2jvSOwtODEluU,1969
784
784
  enap_designsystem/templates/enap_designsystem/pages/mba_especializacao.html,sha256=RvVB5sdS6EJa5WUvvGgcSnr_Ax_DUw4ALEjlXefFQz0,6339
785
- enap_designsystem/templates/enap_designsystem/pages/page_search.html,sha256=-zdZV5hWtsbE-aIa1m_RCniMZ2EhK3GLGJ61PeNd4Z8,50136
785
+ enap_designsystem/templates/enap_designsystem/pages/page_search.html,sha256=ft4m8GGpbEC03xeMuSrfnwbU0IfBiv3oloNFYSo52T8,50203
786
786
  enap_designsystem/templates/enap_designsystem/pages/pagepreview_block.html,sha256=RBqtL0rphuSh5Bi4XPPtXlGUf_zyWFPZY3xwJb8hhZM,235
787
787
  enap_designsystem/templates/enap_designsystem/pages/pos_evento.html,sha256=Y5dgwbLLbE4SmXdt493RcQQpsMqjP3zF5xXxjFXTfrs,3281
788
788
  enap_designsystem/templates/enap_designsystem/pages/pre_evento.html,sha256=XG3PPbp6FP984kB9RubHlgssgJJ3t2CO0C95iPvRLcw,3814
@@ -819,7 +819,7 @@ enap_designsystem/templates/enap_designsystem/semana_inovacao/block_secao_contat
819
819
  enap_designsystem/templates/enap_designsystem/semana_inovacao/block_secao_faq.html,sha256=HCa77ye5LISBQG1A_qFCBfsVFeFvdScLEzOUIf1DNuU,2534
820
820
  enap_designsystem/templates/enap_designsystem/semana_inovacao/block_secao_premios.html,sha256=OM6PCL5Ub0OKFPo1gsoUZARE1_9LdQFYFIBgXKIjfM8,4863
821
821
  enap_designsystem/templates/enap_designsystem/semana_inovacao/block_testemunhos.html,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
822
- enap_designsystem/templates/enap_designsystem/semana_inovacao/blocks_menu_navigation.html,sha256=YIl3316AuLsErZz2M5AYJ4ktPS4Uw_4EgI5RFcp9x-E,4387
822
+ enap_designsystem/templates/enap_designsystem/semana_inovacao/blocks_menu_navigation.html,sha256=zRRxHPhGsjqKnuMSWwh0ywOb54jaRMlHU7eHzeO3eiU,4623
823
823
  enap_designsystem/templates/enap_designsystem/semana_inovacao/certificado_block.html,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
824
824
  enap_designsystem/templates/enap_designsystem/semana_inovacao/certificado_imagem_block.html,sha256=unIel1koGOyCjyYOqf-bBFD1f-i0_i01892ueBX1T98,211
825
825
  enap_designsystem/templates/enap_designsystem/semana_inovacao/concurso_inovacao.html,sha256=bR1N3HizUgG9JS0yyH_IBDFfk2QEKjCjRJ2NUxAy-Fw,3235
@@ -859,8 +859,8 @@ enap_designsystem/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG
859
859
  enap_designsystem/utils/decorators.py,sha256=aq6SbLn0LcH2rfE3ZFit8jkD7pSx9fLVBUUwVB747hg,335
860
860
  enap_designsystem/utils/services.py,sha256=6dG5jLSbwH49jpZV9ZNpWlaZqI49gTlwlr1vaerxdiU,5824
861
861
  enap_designsystem/utils/sso.py,sha256=vjAuoYgoLeQAa_dkkyQ6-LmHvKMaVCxizNFpe5y3iUA,1145
862
- wagtail_enap_designsystem-1.2.1.142.dist-info/licenses/LICENSE,sha256=Btzdu2kIoMbdSp6OyCLupB1aRgpTCJ_szMimgEnpkkE,1056
863
- wagtail_enap_designsystem-1.2.1.142.dist-info/METADATA,sha256=dVBoU7ce0-TphMXejY60GnAgUy4Sg4Aqjx_HfPfOFD0,3651
864
- wagtail_enap_designsystem-1.2.1.142.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
865
- wagtail_enap_designsystem-1.2.1.142.dist-info/top_level.txt,sha256=RSFgMASxoA-hVftm5i4Qd0rArlX4Dq08lLv5G4sYD-g,18
866
- wagtail_enap_designsystem-1.2.1.142.dist-info/RECORD,,
862
+ wagtail_enap_designsystem-1.2.1.144.dist-info/licenses/LICENSE,sha256=Btzdu2kIoMbdSp6OyCLupB1aRgpTCJ_szMimgEnpkkE,1056
863
+ wagtail_enap_designsystem-1.2.1.144.dist-info/METADATA,sha256=ZbAknOFsATz_fcTm3yRaeZPVY7ha8t-IMcEbS0OSuoU,3651
864
+ wagtail_enap_designsystem-1.2.1.144.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
865
+ wagtail_enap_designsystem-1.2.1.144.dist-info/top_level.txt,sha256=RSFgMASxoA-hVftm5i4Qd0rArlX4Dq08lLv5G4sYD-g,18
866
+ wagtail_enap_designsystem-1.2.1.144.dist-info/RECORD,,