ef3e160b360c852e9519cbbde8d49de7a74a2db3
CSS migration (Tailwind v4 com max-[1023px]:/max-[1279px]: arbitrarios pra preservar pixel-perfect): - Containers/layout: ma-page, ma-page__head/__title/__actions, ma-close, ma-head-btn, ma-body, ma-menu-btn, ma-mobile-drawer* - Mini-calendar: weekdays/grid/day/dots/dot bases (state modifiers .is-feriado--* ficam em CSS por usarem color-mix por tipo) - Aside: ma-side, ma-search*, ma-pat* (avatar/info/name/sub/novo/kebab), ma-act-btn*, paginator - Toolbar: ma-cal*, ma-cal__nav*, ma-cal__btn (versao ghost + bug pre-existente da definicao duplicada preservado), ma-cal__icon, ma-cal__view* - Stats/Sessions/Filter chip/Loading/Dock actions: bases full-Tailwind, state modifiers ficam em CSS - Patient banner + All sessions: bases + grid responsivo via max-[640px]:[grid-column:N] arbitrarios Extracoes: - MelissaAgendaSearchPopover.vue: Cmd+K busca de toolbar (datas + paciente). Token monotonico + invalidacao em early returns + cleanup no @hide do Popover. - MelissaAgendaActionsPopover.vue: popover Acoes mobile (<xl) com SelectButtons + 4 botoes de bloqueio. v-model:calendar-view/only-sessions/time-mode + emit bloqueio. Fixes acionaveis (smells previamente listados): - #2 null-safety em M.feriados/workRules (fallbacks pra modo standalone) - #3 race em searchEventosByText (token monotonico contra out-of-order resolution) - #5 cleanup _patClickTimer em onBeforeUnmount - onHistoricoOpen valida inicio_em/fim_em antes de construir startH/endH (evita NaN propagation) - onPacientesPageChange ignora clicks durante loading (evita resolucao fora de ordem) - ESC no search popover limpa state via @hide handler centralizado - fcEvents em 1 passada (for loop) em vez de filter().filter().filter().map() — 4x mais rapido em listView mensal - pacientesIndex Map O(1) substitui 2 .find() sequenciais + cache extra pra fetch on-demand de patient (resolve dock/banner sumindo silenciosamente em clinicas >1k) - Bloqueio buttons :disabled quando M=null (standalone) - Teleport to=.melissa-dock guard com v-if M (evita warn em standalone) - Dedup em flight de getSessionCounts (Set _sessionFetchInflight) MelissaAgenda: 4181 -> 2851 linhas (-1330, -32%) Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Sakai is an application template for Vue based on the create-vue, the recommended way to start a Vite-powered Vue projects.
Visit the documentation to get started.
Description
Languages
Vue
61.3%
PLpgSQL
17.4%
JavaScript
16%
HTML
2.7%
TypeScript
2.3%
Other
0.3%