v-sistec-features 1.31.13 → 1.32.0

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.
Files changed (152) hide show
  1. package/dist/DataAgenda/VDataAgenda.vue.d.ts +915 -0
  2. package/dist/DataAgenda/components/AgendaMatrix.vue.d.ts +64 -0
  3. package/dist/DataAgenda/components/AgendaMatrixBase.vue.d.ts +31 -0
  4. package/dist/DataAgenda/components/AgendaMatrixUnico.vue.d.ts +72 -0
  5. package/dist/DataAgenda/components/AgendaTabelaHorario.vue.d.ts +32 -0
  6. package/dist/DataAgenda/components/AgendaVueCal.vue.d.ts +94 -0
  7. package/dist/DataAgenda/components/BlocoArrastavel.vue.d.ts +37 -0
  8. package/dist/DataAgenda/components/HeaderCalendario.vue.d.ts +7 -0
  9. package/dist/DataAgenda/components/HeaderTabela.vue.d.ts +7 -0
  10. package/dist/DataAgenda/components/ModalDetalhesReserva.vue.d.ts +38 -0
  11. package/dist/DataAgenda/components/ModalReserva.vue.d.ts +157 -0
  12. package/dist/DataAgenda/composables/useAgenda.d.ts +24 -0
  13. package/dist/DataAgenda/composables/useCoresAgenda.d.ts +7 -0
  14. package/dist/DataAgenda/composables/useGradeCompartilhada.d.ts +23 -0
  15. package/dist/DataAgenda/composables/useSelecaoArrasto.d.ts +24 -0
  16. package/dist/DataAgenda/index.d.ts +2 -0
  17. package/dist/DataPageVue/components/VDataPage.vue.d.ts +50 -0
  18. package/dist/DataPageVue/index.d.ts +2 -0
  19. package/dist/DataPageVue/types/v-data-page.d.ts +53 -0
  20. package/dist/DatatableVue/components/SearchDatatable.vue.d.ts +28 -0
  21. package/dist/DatatableVue/components/VColumn.vue.d.ts +82 -0
  22. package/dist/DatatableVue/components/VColumnManager.vue.d.ts +21 -0
  23. package/dist/DatatableVue/components/VDataTable.vue.d.ts +57 -0
  24. package/dist/DatatableVue/components/VDataTableLoading.vue.d.ts +17 -0
  25. package/dist/DatatableVue/components/VOrderingIcon.vue.d.ts +10 -0
  26. package/dist/DatatableVue/components/VThDataTable.vue.d.ts +14 -0
  27. package/dist/DatatableVue/composables/useCheckBox.d.ts +11 -0
  28. package/dist/DatatableVue/composables/useDataTableConfig.d.ts +4 -0
  29. package/dist/DatatableVue/composables/useDataTableFetch.d.ts +17 -0
  30. package/dist/DatatableVue/composables/useExpandedItem.d.ts +6 -0
  31. package/dist/DatatableVue/composables/useImagePreview.d.ts +9 -0
  32. package/dist/DatatableVue/config/datatableConfig.d.ts +4 -0
  33. package/dist/DatatableVue/config/datatableDefaults.d.ts +7 -0
  34. package/dist/DatatableVue/index.d.ts +3 -0
  35. package/dist/DatatableVue/keys.d.ts +39 -0
  36. package/dist/DatatableVue/style/svgs.d.ts +20 -0
  37. package/dist/DatatableVue/types/v-data-table.d.ts +161 -0
  38. package/dist/Modals/components/BotaoFechar.vue.d.ts +36 -0
  39. package/dist/Modals/components/ModalAviso.vue.d.ts +184 -0
  40. package/dist/Modals/components/ModalBaseDefault.vue.d.ts +244 -0
  41. package/dist/Modals/components/ModalConfirmacao.vue.d.ts +184 -0
  42. package/dist/Modals/components/ModalConfirmacaoCheckbox.vue.d.ts +195 -0
  43. package/dist/Modals/components/ModalConfirmacaoInput.vue.d.ts +238 -0
  44. package/dist/Modals/components/ModalConfirmacaoSimples.vue.d.ts +187 -0
  45. package/dist/Modals/components/ModalInformacao.vue.d.ts +184 -0
  46. package/dist/Modals/components/ModalPerigo.vue.d.ts +175 -0
  47. package/dist/Modals/components/ModalSucesso.vue.d.ts +175 -0
  48. package/dist/Modals/components/interno/ModalDialogoInterno.vue.d.ts +205 -0
  49. package/dist/Modals/index.d.ts +12 -0
  50. package/dist/Modals.js +1361 -0
  51. package/dist/Pagination/Pagination.vue.d.ts +19 -0
  52. package/dist/Pagination/index.d.ts +2 -0
  53. package/dist/{Pagination-f4FVE5TX.js → Pagination-D96eBRod.js} +25 -25
  54. package/dist/Pagination.js +1 -1
  55. package/dist/{ar-Bg_10XBG.js → ar-CtSPmWrk.js} +0 -5
  56. package/dist/{bg-DyIRbFaU.js → bg-DwW4tkzm.js} +0 -5
  57. package/dist/{bn-DrKXkRvN.js → bn-Df__ccyH.js} +0 -5
  58. package/dist/{bs-BF8upphm.js → bs-j17x02qr.js} +0 -5
  59. package/dist/{ca-CGMnsdII.js → ca-B94lUx7c.js} +0 -5
  60. package/dist/core/index.d.ts +1 -0
  61. package/dist/core/plugin.d.ts +11 -0
  62. package/dist/core.js +1 -1
  63. package/dist/{cs-B-jeNB5o.js → cs-DeDzN7tG.js} +0 -5
  64. package/dist/{da-BoHemyXx.js → da-DMpC5y8O.js} +0 -5
  65. package/dist/datatableConfig-E5_08Ch4.js +4 -0
  66. package/dist/{de-DNAaiTrc.js → de-CCNUZSup.js} +0 -5
  67. package/dist/{el-Cpg3pI7i.js → el-C2kkX76k.js} +0 -5
  68. package/dist/{en-gb-KsKdvLmV.js → en-gb-sbYhvlrM.js} +0 -5
  69. package/dist/{es-COziTcsp.js → es-mNgFJGue.js} +0 -5
  70. package/dist/{et-BdTtu9t_.js → et-D0ro6m_Z.js} +0 -5
  71. package/dist/{fa-B1Ebp36t.js → fa-DYekHC6-.js} +0 -5
  72. package/dist/{fi-b4XodxNE.js → fi-CNexLCO_.js} +0 -5
  73. package/dist/{fr-BIx4sO6s.js → fr-CUXtdWLj.js} +0 -5
  74. package/dist/{he-rf_Y5d64.js → he-D4BblsAD.js} +0 -5
  75. package/dist/{hr-DOuJJGF3.js → hr-1MNJjxDo.js} +0 -5
  76. package/dist/{hu-DMc8kv_1.js → hu-BiG8mSvH.js} +0 -5
  77. package/dist/{id-DclBfDY0.js → id-CABEuSQB.js} +0 -5
  78. package/dist/iframeCommunicator/index.d.ts +2 -0
  79. package/dist/iframeCommunicator/useIframeCommunicator.d.ts +8 -0
  80. package/dist/iframeCommunicator/useThemeFromParent.d.ts +9 -0
  81. package/dist/index.d.ts +3 -140
  82. package/dist/index.js +1 -1
  83. package/dist/{is-hPcr999q.js → is-DBUkoxb1.js} +0 -5
  84. package/dist/{it-Dfz57Ogc.js → it-Am_Oo5d5.js} +0 -5
  85. package/dist/{ja-Da6Dbgu8.js → ja-C4aaunra.js} +0 -5
  86. package/dist/{ka-DK-BKZD4.js → ka-CkzS4fNj.js} +0 -5
  87. package/dist/{kaa-BVd8dKz3.js → kaa-GTw11GU-.js} +0 -5
  88. package/dist/{kk-eE3-SI4R.js → kk-BRFq2Ctd.js} +0 -5
  89. package/dist/{ko-CUMtwCHy.js → ko-BbgS6BMk.js} +0 -5
  90. package/dist/{ky-CCU0MYbD.js → ky-ClK6HL0m.js} +0 -5
  91. package/dist/{lt-CpbQmiiW.js → lt-BE0ahgri.js} +0 -5
  92. package/dist/{mn-YYwo93uK.js → mn-C-Ktk8ht.js} +0 -5
  93. package/dist/{nl-WqtgByJL.js → nl-BiG9OH1y.js} +0 -5
  94. package/dist/{no-BOG8-aOm.js → no-DVdX7xTS.js} +0 -5
  95. package/dist/{pl-BH4AyCMF.js → pl-y_N8wVAF.js} +0 -5
  96. package/dist/plugin-BZB7f-c3.js +3444 -0
  97. package/dist/{pt-br-siyrXjdv.js → pt-br-Cx8Akpcu.js} +0 -5
  98. package/dist/{pt-pt-siyrXjdv.js → pt-pt-Cx8Akpcu.js} +0 -5
  99. package/dist/{ro-C9fU41Qi.js → ro-FfAZHwo1.js} +0 -5
  100. package/dist/{ru-_d_rl3a5.js → ru-BCE9k5uo.js} +0 -5
  101. package/dist/{sk-ZT421l3d.js → sk-D-7bEf3b.js} +0 -5
  102. package/dist/{sl-Ct8Gi5v1.js → sl-DoVrM4Ht.js} +0 -5
  103. package/dist/{sq-Cw7PWK-V.js → sq-Du8jVeq7.js} +0 -5
  104. package/dist/{sr-DO-S1wn3.js → sr-DP3yke6-.js} +0 -5
  105. package/dist/{sv-NXMCPui2.js → sv-C2iGWFqL.js} +0 -5
  106. package/dist/toast/components/ToastComponent.vue.d.ts +6 -0
  107. package/dist/toast/index.d.ts +1 -0
  108. package/dist/toast/useToastStore.d.ts +11 -0
  109. package/dist/toast.js +2 -2
  110. package/dist/{tr-BpieMIth.js → tr-CvlANdCR.js} +0 -5
  111. package/dist/{uk-CqVU4EoZ.js → uk-CxFb8w2s.js} +0 -5
  112. package/dist/utils/svgFactory.d.ts +8 -0
  113. package/dist/{uz-CmcB22-w.js → uz-DmJPqTjK.js} +0 -5
  114. package/dist/{uz-cryl-C_GBVdXl.js → uz-cryl-Dt065WNc.js} +0 -5
  115. package/dist/v-sistec-features.css +1 -11
  116. package/dist/vDataAgenda.js +1877 -1885
  117. package/dist/vDataPage.js +31 -41
  118. package/dist/vDataTable.js +43 -43
  119. package/dist/{vi-C9wTd3fG.js → vi-B8R5Ozvj.js} +0 -5
  120. package/dist/{zh-cn-DY7nkJwf.js → zh-cn-DnUuIcqx.js} +0 -5
  121. package/dist/{zh-hk-KkazoDdS.js → zh-hk-mDkIkhi9.js} +0 -5
  122. package/package.json +5 -1
  123. package/src/DataAgenda/VDataAgenda.vue +233 -77
  124. package/src/DataAgenda/components/AgendaMatrix.vue +1 -0
  125. package/src/DataAgenda/components/AgendaMatrixBase.vue +357 -140
  126. package/src/DataAgenda/components/AgendaMatrixUnico.vue +1 -0
  127. package/src/DataAgenda/components/AgendaTabelaHorario.vue +489 -316
  128. package/src/DataAgenda/components/AgendaVueCal.vue +1 -0
  129. package/src/DataAgenda/index.ts +2 -1
  130. package/src/Modals/components/BotaoFechar.vue +74 -0
  131. package/src/Modals/components/ModalAviso.vue +129 -0
  132. package/src/Modals/components/ModalBaseDefault.vue +374 -0
  133. package/src/Modals/components/ModalConfirmacao.vue +129 -0
  134. package/src/Modals/components/ModalConfirmacaoCheckbox.vue +155 -0
  135. package/src/Modals/components/ModalConfirmacaoInput.vue +200 -0
  136. package/src/Modals/components/ModalConfirmacaoSimples.vue +306 -0
  137. package/src/Modals/components/ModalInformacao.vue +129 -0
  138. package/src/Modals/components/ModalPerigo.vue +123 -0
  139. package/src/Modals/components/ModalSucesso.vue +123 -0
  140. package/src/Modals/components/interno/ModalDialogoInterno.vue +365 -0
  141. package/src/Modals/index.ts +32 -0
  142. package/src/core/plugin.ts +34 -41
  143. package/src/types/global.d.ts +7 -1
  144. package/dist/Pagination.d.ts +0 -27
  145. package/dist/core.d.ts +0 -117
  146. package/dist/datatableConfig-BMFlKtgh.js +0 -4
  147. package/dist/iframeCommunicator.d.ts +0 -22
  148. package/dist/plugin-BwqrOSD_.js +0 -2097
  149. package/dist/toast.d.ts +0 -19
  150. package/dist/vDataAgenda.d.ts +0 -929
  151. package/dist/vDataPage.d.ts +0 -117
  152. package/dist/vDataTable.d.ts +0 -294
@@ -7,6 +7,7 @@ e mescla células de reservas contínuas com colspan.
7
7
  ========
8
8
  -->
9
9
  <script setup lang="ts">
10
+ defineSlots<{ [key: string]: any }>();
10
11
  import { computed, inject } from 'vue';
11
12
  import { useCoresAgenda } from '../composables/useCoresAgenda';
12
13
  import { useSelecaoArrasto } from '../composables/useSelecaoArrasto';
@@ -318,118 +319,116 @@ const formatarData = (isoData: string) => {
318
319
  v-for="dia in diasProcessados"
319
320
  :key="dia.data_slot"
320
321
  >
321
- <table class="tabela-premium">
322
- <thead>
323
- <tr class="linha-data">
324
- <th :colspan="dia.colunasHorarios.length + 1" class="th-barra-dia">
325
- <div class="barra-data-full">
326
- <span class="texto-data">{{ formatarData(dia.data_slot) }}</span>
327
- </div>
328
- </th>
329
- </tr>
330
-
331
- <tr v-if="dia.temBlocos" class="linha-blocos-principais">
332
- <th
333
- class="coluna-fixa cabecalho-canto"
334
- :rowspan="dia.temSubblocos ? 3 : 2"
335
- >
336
- Nome
337
- </th>
338
- <th
339
- v-for="(bloco, idxB) in dia.blocosPrincipais"
340
- :key="idxB"
341
- :colspan="bloco.colspan"
342
- :style="{
343
- backgroundColor: bloco.cor,
344
- borderColor: bloco.corBorda
345
- }"
346
- class="th-bloco-principal borda-col-bloco-principal"
347
- >
348
- <div class="titulo-bloco-principal">{{ bloco.nome }}</div>
349
- <div class="subtitulo-bloco-principal">{{ bloco.horaInicio }} - {{ bloco.horaFim }}</div>
350
- </th>
351
- </tr>
352
-
353
- <tr v-if="dia.temBlocos && dia.temSubblocos" class="linha-subblocos">
354
- <th
355
- v-for="(sub, idxS) in dia.subblocos"
356
- :key="idxS"
357
- :colspan="sub.colspan"
358
- :style="{
359
- backgroundColor: sub.cor,
360
- borderColor: sub.corBorda
361
- }"
362
- class="th-subbloco"
363
- :class="{
364
- 'borda-col-bloco-principal': sub.fimDeBlocoPrincipal,
365
- 'borda-col-subbloco': !sub.fimDeBlocoPrincipal
366
- }"
367
- >
368
- {{ sub.etiqueta }}
369
- </th>
370
- </tr>
371
-
372
- <tr class="linha-horarios-individuais">
373
- <th v-if="!dia.temBlocos" class="coluna-fixa cabecalho-canto">Nome</th>
374
- <th
375
- v-for="(col, idxH) in dia.colunasHorarios"
376
- :key="idxH"
377
- :style="{
378
- backgroundColor: dia.metadadosColunas[idxH]?.corFundo || 'var(--bg-primary)',
379
- borderColor: dia.metadadosColunas[idxH]?.corBorda || 'var(--border-light)'
380
- }"
381
- class="th-horario-individual"
382
- :class="{
383
- 'borda-col-subbloco': dia.metadadosColunas[idxH]?.fimDeSubbloco,
384
- 'borda-col-bloco-principal': dia.metadadosColunas[idxH]?.fimDeBlocoPrincipal
385
- }"
386
- >
387
- <div class="empilhado-horarios">
388
- <span class="hora-topo">{{ col.horaInicio }}</span>
389
- <span class="hora-base">{{ col.horaFim }}</span>
390
- </div>
391
- </th>
392
- </tr>
393
- </thead>
394
-
395
- <tbody>
396
- <tr v-for="recurso in dia.recursos_slot" :key="recurso.id_recurso">
397
- <td class="coluna-fixa nome-recurso">{{ recurso.nome_recurso }}</td>
398
- <template v-for="slot in recurso.horarios_slot" :key="slot.data_inicio_slot">
399
- <BlocoArrastavel
400
- v-if="!slot.ocultaPorColspan"
401
- tag="td"
402
- :grupo="`${dia.data_slot}__${recurso.id_recurso}`"
403
- :indice="slot.indiceColuna"
404
- :item="{ slot, idRecurso: recurso.id_recurso, dataSlot: dia.data_slot }"
405
- :disponivel="Boolean(slot.reservavel_slot && !slot.reservado_slot)"
406
- :controlador="controladorArrastoHorizontal"
407
- :colspan="slot.colspan || 1"
408
- class="td-celula-slot"
322
+ <div class="barra-data-full">
323
+ <span class="texto-data">{{ formatarData(dia.data_slot) }}</span>
324
+ </div>
325
+
326
+ <div class="scroll-horizontal-tabela">
327
+ <table class="tabela-premium">
328
+ <thead>
329
+ <tr v-if="dia.temBlocos" class="linha-blocos-principais">
330
+ <th
331
+ class="coluna-fixa cabecalho-canto"
332
+ :rowspan="dia.temSubblocos ? 3 : 2"
333
+ >
334
+ Nome
335
+ </th>
336
+ <th
337
+ v-for="(bloco, idxB) in dia.blocosPrincipais"
338
+ :key="idxB"
339
+ :colspan="bloco.colspan"
340
+ :style="{
341
+ backgroundColor: bloco.cor,
342
+ borderColor: bloco.corBorda
343
+ }"
344
+ class="th-bloco-principal borda-col-bloco-principal"
345
+ >
346
+ <div class="titulo-bloco-principal">{{ bloco.nome }}</div>
347
+ <div class="subtitulo-bloco-principal">{{ bloco.horaInicio }} - {{ bloco.horaFim }}</div>
348
+ </th>
349
+ </tr>
350
+
351
+ <tr v-if="dia.temBlocos && dia.temSubblocos" class="linha-subblocos">
352
+ <th
353
+ v-for="(sub, idxS) in dia.subblocos"
354
+ :key="idxS"
355
+ :colspan="sub.colspan"
356
+ :style="{
357
+ backgroundColor: sub.cor,
358
+ borderColor: sub.corBorda
359
+ }"
360
+ class="th-subbloco"
409
361
  :class="{
410
- 'slot-ocupado': slot.reservado_slot,
411
- 'slot-api': slot.detalhes_reserva?.origem_criacao_reserva === 'API',
412
- 'slot-selecionado-arrasto': controladorArrastoHorizontal.verificarSelecionado(`${dia.data_slot}__${recurso.id_recurso}`, slot.indiceColuna),
413
- 'borda-col-subbloco': dia.metadadosColunas[slot.indiceColuna + (slot.colspan || 1) - 1]?.fimDeSubbloco,
414
- 'borda-col-bloco-principal': dia.metadadosColunas[slot.indiceColuna + (slot.colspan || 1) - 1]?.fimDeBlocoPrincipal
362
+ 'borda-col-bloco-principal': sub.fimDeBlocoPrincipal,
363
+ 'borda-col-subbloco': !sub.fimDeBlocoPrincipal
415
364
  }"
365
+ >
366
+ {{ sub.etiqueta }}
367
+ </th>
368
+ </tr>
369
+
370
+ <tr class="linha-horarios-individuais">
371
+ <th v-if="!dia.temBlocos" class="coluna-fixa cabecalho-canto">Nome</th>
372
+ <th
373
+ v-for="(col, idxH) in dia.colunasHorarios"
374
+ :key="idxH"
416
375
  :style="{
417
- backgroundColor: controladorArrastoHorizontal.verificarSelecionado(`${dia.data_slot}__${recurso.id_recurso}`, slot.indiceColuna)
418
- ? 'var(--color-brand-light)'
419
- : (dia.metadadosColunas[slot.indiceColuna]?.corFundo || 'var(--bg-primary)'),
420
- borderColor: dia.metadadosColunas[slot.indiceColuna + (slot.colspan || 1) - 1]?.corBorda || 'var(--border-light)'
376
+ backgroundColor: dia.metadadosColunas[idxH]?.corFundo || 'var(--bg-primary)',
377
+ borderColor: dia.metadadosColunas[idxH]?.corBorda || 'var(--border-light)'
378
+ }"
379
+ class="th-horario-individual"
380
+ :class="{
381
+ 'borda-col-subbloco': dia.metadadosColunas[idxH]?.fimDeSubbloco,
382
+ 'borda-col-bloco-principal': dia.metadadosColunas[idxH]?.fimDeBlocoPrincipal
421
383
  }"
422
384
  >
423
- <div class="conteudo-slot-matrix" v-if="slot.reservado_slot">
424
- <span class="etiqueta-reserva">
425
- {{ slot.detalhes_reserva?.titulo_reserva?.trim() || props.tituloPadrao || 'Reservado' }}
426
- </span>
385
+ <div class="empilhado-horarios">
386
+ <span class="hora-topo">{{ col.horaInicio }}</span>
387
+ <span class="hora-base">{{ col.horaFim }}</span>
427
388
  </div>
428
- </BlocoArrastavel>
429
- </template>
430
- </tr>
431
- </tbody>
432
- </table>
389
+ </th>
390
+ </tr>
391
+ </thead>
392
+
393
+ <tbody>
394
+ <tr v-for="recurso in dia.recursos_slot" :key="recurso.id_recurso">
395
+ <td class="coluna-fixa nome-recurso">{{ recurso.nome_recurso }}</td>
396
+ <template v-for="slot in recurso.horarios_slot" :key="slot.data_inicio_slot">
397
+ <BlocoArrastavel
398
+ v-if="!slot.ocultaPorColspan"
399
+ tag="td"
400
+ :grupo="`${dia.data_slot}__${recurso.id_recurso}`"
401
+ :indice="slot.indiceColuna"
402
+ :item="{ slot, idRecurso: recurso.id_recurso, dataSlot: dia.data_slot }"
403
+ :disponivel="Boolean(slot.reservavel_slot && !slot.reservado_slot)"
404
+ :controlador="controladorArrastoHorizontal"
405
+ :colspan="slot.colspan || 1"
406
+ class="td-celula-slot"
407
+ :class="{
408
+ 'slot-ocupado': slot.reservado_slot,
409
+ 'slot-api': slot.detalhes_reserva?.origem_criacao_reserva === 'API',
410
+ 'slot-selecionado-arrasto': controladorArrastoHorizontal.verificarSelecionado(`${dia.data_slot}__${recurso.id_recurso}`, slot.indiceColuna),
411
+ 'borda-col-subbloco': dia.metadadosColunas[slot.indiceColuna + (slot.colspan || 1) - 1]?.fimDeSubbloco,
412
+ 'borda-col-bloco-principal': dia.metadadosColunas[slot.indiceColuna + (slot.colspan || 1) - 1]?.fimDeBlocoPrincipal
413
+ }"
414
+ :style="{
415
+ backgroundColor: controladorArrastoHorizontal.verificarSelecionado(`${dia.data_slot}__${recurso.id_recurso}`, slot.indiceColuna)
416
+ ? 'var(--color-brand-light)'
417
+ : (dia.metadadosColunas[slot.indiceColuna]?.corFundo || 'var(--bg-primary)'),
418
+ borderColor: dia.metadadosColunas[slot.indiceColuna + (slot.colspan || 1) - 1]?.corBorda || 'var(--border-light)'
419
+ }"
420
+ >
421
+ <div class="conteudo-slot-matrix" v-if="slot.reservado_slot">
422
+ <span class="etiqueta-reserva">
423
+ {{ slot.detalhes_reserva?.titulo_reserva?.trim() || props.tituloPadrao || 'Reservado' }}
424
+ </span>
425
+ </div>
426
+ </BlocoArrastavel>
427
+ </template>
428
+ </tr>
429
+ </tbody>
430
+ </table>
431
+ </div>
433
432
  </div>
434
433
  </div>
435
434
 
@@ -441,46 +440,259 @@ const formatarData = (isoData: string) => {
441
440
  </template>
442
441
 
443
442
  <style scoped>
444
- .matriz-container { width: 100%; height: 100%; background: var(--bg-primary); display: flex; flex-direction: column; user-select: none; }
445
- .matriz-conteudo { display: flex; flex-direction: column; height: 100%; overflow: hidden; }
446
- .aviso-vazio { display: flex; flex-direction: column; justify-content: center; align-items: center; flex-grow: 1; color: var(--text-secondary); font-weight: 500; font-size: 1rem; gap: 12px; }
447
- .spinner { width: 32px; height: 32px; border: 3px solid var(--border-light); border-top-color: var(--color-brand); border-radius: 50%; animation: spin 1s linear infinite; }
448
- @keyframes spin { to { transform: rotate(360deg); } }
449
-
450
- .tabelas-scroll-container { flex-grow: 1; overflow: auto; background: var(--bg-primary); display: flex; flex-direction: column; gap: 18px; padding-bottom: 24px; }
451
- .bloco-dia-tabela { width: 100%; }
452
- .tabela-premium { width: 100%; border-collapse: separate; border-spacing: 0; font-size: 12.5px; text-align: center; }
453
- .tabela-premium th, .tabela-premium td { padding: 4px 6px; min-width: 68px; height: 44px; border-bottom: 1px solid var(--border-light); border-right: 1px solid var(--border-light); box-sizing: border-box; }
454
- .tabela-premium th:first-child, .tabela-premium td:first-child { border-left: 1px solid var(--border-light); }
455
- .tabela-premium thead th { background: var(--bg-primary); font-weight: 700; color: var(--text-primary); }
456
-
457
- .coluna-fixa { width: 200px; min-width: 200px; max-width: 200px; text-align: left; background: var(--bg-primary); position: sticky; left: 0; z-index: 2; border-right: 2px solid var(--border-light) !important; }
458
- .cabecalho-canto { z-index: 3 !important; padding-left: 24px !important; background: var(--bg-primary) !important; }
459
- .th-barra-dia { padding: 0 !important; height: auto !important; border-top: 1px solid #005291 !important; border-bottom: 1px solid #005291 !important; }
460
- .th-bloco-principal { color: #111827 !important; padding: 6px 4px !important; height: 36px !important; border-bottom-width: 1.5px !important; border-bottom-style: solid !important; }
461
- .titulo-bloco-principal { font-size: 13px; font-weight: 800; letter-spacing: 0.3px; line-height: 1.2; text-transform: uppercase; }
462
- .subtitulo-bloco-principal { font-size: 10.5px; font-weight: 700; opacity: 0.9; }
463
- .th-subbloco { color: #111827 !important; font-size: 11px !important; font-weight: 700 !important; height: 26px !important; padding: 2px 4px !important; border-bottom-width: 1.5px !important; border-bottom-style: solid !important; }
464
- .th-horario-individual { height: 42px !important; padding: 4px 2px !important; color: #111827 !important; border-bottom-width: 2px !important; border-bottom-style: solid !important; }
465
- .empilhado-horarios { display: flex; flex-direction: column; align-items: center; justify-content: center; line-height: 1.15; gap: 2px; }
466
- .hora-topo, .hora-base { font-size: 11.5px; font-weight: 700; color: #111827; }
467
-
468
- .td-celula-slot { cursor: pointer; transition: filter 0.12s ease, box-shadow 0.12s ease; vertical-align: middle; color: #111827 !important; }
469
- .td-celula-slot:hover { filter: brightness(0.93); box-shadow: inset 0 0 0 1.5px var(--color-brand); }
470
- .slot-selecionado-arrasto { box-shadow: inset 0 0 0 2px var(--color-brand) !important; }
443
+ .matriz-container {
444
+ width: 100%;
445
+ height: 100%;
446
+ flex: 1;
447
+ min-width: 0;
448
+ min-height: 0;
449
+ background: var(--bg-primary);
450
+ display: flex;
451
+ flex-direction: column;
452
+ user-select: none;
453
+ }
454
+
455
+ .matriz-conteudo {
456
+ display: flex;
457
+ flex-direction: column;
458
+ flex: 1;
459
+ min-width: 0;
460
+ min-height: 0;
461
+ overflow: hidden;
462
+ }
463
+
464
+ .aviso-vazio {
465
+ display: flex;
466
+ flex-direction: column;
467
+ justify-content: center;
468
+ align-items: center;
469
+ flex-grow: 1;
470
+ color: var(--text-secondary);
471
+ font-weight: 500;
472
+ font-size: 1rem;
473
+ gap: 12px;
474
+ }
475
+
476
+ .spinner {
477
+ width: 32px;
478
+ height: 32px;
479
+ border: 3px solid var(--border-light);
480
+ border-top-color: var(--color-brand);
481
+ border-radius: 50%;
482
+ animation: spin 1s linear infinite;
483
+ }
484
+
485
+ @keyframes spin {
486
+ to { transform: rotate(360deg); }
487
+ }
488
+
489
+ .tabelas-scroll-container {
490
+ flex: 1;
491
+ min-width: 0;
492
+ min-height: 0;
493
+ overflow-y: auto;
494
+ overflow-x: hidden;
495
+ background: var(--bg-primary);
496
+ display: flex;
497
+ flex-direction: column;
498
+ gap: 18px;
499
+ padding-bottom: 24px;
500
+ }
501
+
502
+ .bloco-dia-tabela {
503
+ width: 100%;
504
+ max-width: 100%;
505
+ display: flex;
506
+ flex-direction: column;
507
+ }
508
+
509
+ .scroll-horizontal-tabela {
510
+ width: 100%;
511
+ overflow-x: auto;
512
+ }
513
+
514
+ .tabela-premium {
515
+ width: 100%;
516
+ border-collapse: separate;
517
+ border-spacing: 0;
518
+ font-size: 12.5px;
519
+ text-align: center;
520
+ }
521
+
522
+ .tabela-premium th,
523
+ .tabela-premium td {
524
+ padding: 4px 6px;
525
+ min-width: 68px;
526
+ height: 44px;
527
+ border-bottom: 1px solid var(--border-light);
528
+ border-right: 1px solid var(--border-light);
529
+ box-sizing: border-box;
530
+ }
531
+
532
+ .tabela-premium th:first-child,
533
+ .tabela-premium td:first-child {
534
+ border-left: 1px solid var(--border-light);
535
+ }
536
+
537
+ .tabela-premium thead th {
538
+ background: var(--bg-primary);
539
+ font-weight: 700;
540
+ color: var(--text-primary);
541
+ }
542
+
543
+ .coluna-fixa {
544
+ width: 200px;
545
+ min-width: 200px;
546
+ max-width: 200px;
547
+ text-align: left;
548
+ background: var(--bg-primary);
549
+ position: sticky;
550
+ left: 0;
551
+ z-index: 2;
552
+ border-right: 2px solid var(--border-light) !important;
553
+ }
554
+
555
+ .cabecalho-canto {
556
+ z-index: 3 !important;
557
+ padding-left: 24px !important;
558
+ background: var(--bg-primary) !important;
559
+ }
560
+
561
+ .th-bloco-principal {
562
+ color: #111827 !important;
563
+ padding: 6px 4px !important;
564
+ height: 36px !important;
565
+ border-bottom-width: 1.5px !important;
566
+ border-bottom-style: solid !important;
567
+ }
568
+
569
+ .titulo-bloco-principal {
570
+ font-size: 13px;
571
+ font-weight: 800;
572
+ letter-spacing: 0.3px;
573
+ line-height: 1.2;
574
+ text-transform: uppercase;
575
+ }
576
+
577
+ .subtitulo-bloco-principal {
578
+ font-size: 10.5px;
579
+ font-weight: 700;
580
+ opacity: 0.9;
581
+ }
582
+
583
+ .th-subbloco {
584
+ color: #111827 !important;
585
+ font-size: 11px !important;
586
+ font-weight: 700 !important;
587
+ height: 26px !important;
588
+ padding: 2px 4px !important;
589
+ border-bottom-width: 1.5px !important;
590
+ border-bottom-style: solid !important;
591
+ }
592
+
593
+ .th-horario-individual {
594
+ height: 42px !important;
595
+ padding: 4px 2px !important;
596
+ color: #111827 !important;
597
+ border-bottom-width: 2px !important;
598
+ border-bottom-style: solid !important;
599
+ }
600
+
601
+ .empilhado-horarios {
602
+ display: flex;
603
+ flex-direction: column;
604
+ align-items: center;
605
+ justify-content: center;
606
+ line-height: 1.15;
607
+ gap: 2px;
608
+ }
609
+
610
+ .hora-topo,
611
+ .hora-base {
612
+ font-size: 11.5px;
613
+ font-weight: 700;
614
+ color: #111827;
615
+ }
616
+
617
+ .td-celula-slot {
618
+ cursor: pointer;
619
+ transition: filter 0.12s ease, box-shadow 0.12s ease;
620
+ vertical-align: middle;
621
+ color: #111827 !important;
622
+ }
623
+
624
+ .td-celula-slot:hover {
625
+ filter: brightness(0.93);
626
+ box-shadow: inset 0 0 0 1.5px var(--color-brand);
627
+ }
628
+
629
+ .slot-selecionado-arrasto {
630
+ box-shadow: inset 0 0 0 2px var(--color-brand) !important;
631
+ }
632
+
471
633
  .slot-ocupado {
472
634
  font-weight: 700;
473
635
  background-color: #e5e7eb !important;
474
636
  background-image: repeating-linear-gradient(45deg, rgba(0, 0, 0, 0.06), rgba(0, 0, 0, 0.06) 10px, transparent 10px, transparent 20px) !important;
475
637
  }
476
638
 
477
- .conteudo-slot-matrix { display: flex; align-items: center; justify-content: center; width: 100%; height: 100%; }
478
- .etiqueta-reserva { font-size: 12px; font-weight: 700; color: #111827; line-height: 1.25; word-break: break-word; }
479
- .borda-col-subbloco { border-right-width: 2px !important; }
480
- .borda-col-bloco-principal { border-right-width: 2.5px !important; }
481
- .barra-data-full { display: flex; align-items: center; justify-content: center; width: 100%; background-color: #0066B3 !important; color: #FFFFFF !important; padding: 9px 0; box-sizing: border-box; text-align: center; }
482
- .texto-data { font-weight: 800; font-size: 13.5px; text-transform: uppercase; letter-spacing: 0.5px; }
483
- .nome-recurso { font-weight: 700; color: var(--text-primary); background: var(--bg-primary) !important; padding-left: 20px !important; padding-right: 12px !important; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; box-shadow: 4px 0 8px rgba(0,0,0,0.03); }
639
+ .conteudo-slot-matrix {
640
+ display: flex;
641
+ align-items: center;
642
+ justify-content: center;
643
+ width: 100%;
644
+ height: 100%;
645
+ }
646
+
647
+ .etiqueta-reserva {
648
+ font-size: 12px;
649
+ font-weight: 700;
650
+ color: #111827;
651
+ line-height: 1.25;
652
+ word-break: break-word;
653
+ }
654
+
655
+ .borda-col-subbloco {
656
+ border-right-width: 2px !important;
657
+ }
658
+
659
+ .borda-col-bloco-principal {
660
+ border-right-width: 2.5px !important;
661
+ }
662
+
663
+ .barra-data-full {
664
+ display: flex;
665
+ align-items: center;
666
+ justify-content: center;
667
+ width: 100%;
668
+ background-color: var(--color-brand);
669
+ color: #FFFFFF;
670
+ padding: 9px 0;
671
+ box-sizing: border-box;
672
+ text-align: center;
673
+ border-top: 1px solid #005291;
674
+ border-bottom: 1px solid #005291;
675
+ border-color: color-mix(in srgb, var(--color-brand) 90%, black) !important;
676
+ }
677
+
678
+ .texto-data {
679
+ font-weight: 800;
680
+ font-size: 13.5px;
681
+ text-transform: uppercase;
682
+ letter-spacing: 0.5px;
683
+ }
684
+
685
+ .nome-recurso {
686
+ font-weight: 700;
687
+ color: var(--text-primary);
688
+ background: var(--bg-primary) !important;
689
+ padding-left: 20px !important;
690
+ padding-right: 12px !important;
691
+ white-space: nowrap;
692
+ overflow: hidden;
693
+ text-overflow: ellipsis;
694
+ box-shadow: 4px 0 8px rgba(0,0,0,0.03);
695
+ }
484
696
  </style>
485
697
 
486
698
  <style>
@@ -498,4 +710,9 @@ const formatarData = (isoData: string) => {
498
710
  background-color: #374151 !important;
499
711
  background-image: repeating-linear-gradient(45deg, rgba(255, 255, 255, 0.03), rgba(255, 255, 255, 0.03) 10px, transparent 10px, transparent 20px) !important;
500
712
  }
713
+
714
+ [data-bs-theme="dark"] .barra-data-full {
715
+ background-color: color-mix(in srgb, var(--color-brand) 50%, black) !important;
716
+ border-color: color-mix(in srgb, var(--color-brand) 70%, black) !important;
717
+ }
501
718
  </style>
@@ -7,6 +7,7 @@ e expõe a lista contendo o recurso atualmente em exibição.
7
7
  ========
8
8
  -->
9
9
  <script setup lang="ts">
10
+ defineSlots<{ [key: string]: any }>();
10
11
  import { computed, inject } from 'vue';
11
12
  import { useAgenda } from '../composables/useAgenda';
12
13
  import { useSincronizarRecursoUnico } from '../composables/useGradeCompartilhada';