- Substitui loadActivityOptions (pagination: false) por AsyncSearchCombobox com busca server-backed filtrada por município (searchActivityRelationOptions). - Pagina card Demandas vinculadas no detalhe da atividade (10/página) com soma de custo em query separada e link Ver todas na lista filtrada. - Adiciona filtro ?activity= na lista /campanha/demandas. Co-authored-by: Francisco Solla <fsolla@users.noreply.github.com>
26 lines
949 B
TypeScript
26 lines
949 B
TypeScript
import { createDetailTabHelpers, type DetailTabSearchParams } from '@/utilities/detailTabUi'
|
|
|
|
export const activityDetailTabs = ['overview', 'tasks', 'updates'] as const
|
|
|
|
export type ActivityDetailTab = (typeof activityDetailTabs)[number]
|
|
export type ActivityDetailSearchParams = DetailTabSearchParams
|
|
|
|
const helpers = createDetailTabHelpers<ActivityDetailTab>({
|
|
tabs: activityDetailTabs,
|
|
defaultTab: 'overview',
|
|
tabQueryKeys: {
|
|
overview: ['demandsPage'],
|
|
tasks: [],
|
|
updates: ['newUpdate'],
|
|
},
|
|
basePath: (activitySlug) => `/campanha/atividades/${activitySlug}`,
|
|
forcedTab: (searchParams) =>
|
|
(Array.isArray(searchParams.newUpdate) ? searchParams.newUpdate[0] : searchParams.newUpdate) ===
|
|
'1'
|
|
? 'updates'
|
|
: null,
|
|
})
|
|
|
|
export const resolveActivityDetailTab = helpers.resolveTab
|
|
export const buildActivityDetailTabHref = helpers.buildTabHref
|
|
export const getActivityDetailTabRedirect = helpers.getTabRedirect
|