diff --git a/scripts/lib/e2e-affected-manifest.mjs b/scripts/lib/e2e-affected-manifest.mjs index 27af0298..170bf278 100644 --- a/scripts/lib/e2e-affected-manifest.mjs +++ b/scripts/lib/e2e-affected-manifest.mjs @@ -46,6 +46,7 @@ export const E2E_AFFECTED_MANIFEST = [ `${CAMPAIGN_APP}/atividades`, 'src/components/campaign/activity', 'src/utilities/activity', + 'src/utilities/activityOmnibox', 'src/lib/activityQuickActions', ], specs: ['campaignActivity'], @@ -107,6 +108,15 @@ export const E2E_AFFECTED_MANIFEST = [ 'src/components/campaign/supporter', 'src/components/campaign/votePledge', 'src/components/campaign/auth', + 'src/lib/searchOnlyListOmnibox', + 'src/utilities/advisor', + 'src/utilities/advisorData', + 'src/utilities/campaignDemandData', + 'src/utilities/demand', + 'src/utilities/organization', + 'src/utilities/organizationData', + 'src/utilities/stateDeputyOmnibox', + 'src/utilities/supporter/supporterOmnibox', `${CAMPAIGN_APP}/acoes`, 'src/components/campaign/shared/WizardMunicipality', 'src/components/campaign/shared/useCampaignListFilterNavigation', diff --git a/src/components/campaign/activity/ActivityFilters.tsx b/src/components/campaign/activity/ActivityFilters.tsx index 268a5827..d2a47f8c 100644 --- a/src/components/campaign/activity/ActivityFilters.tsx +++ b/src/components/campaign/activity/ActivityFilters.tsx @@ -3,8 +3,8 @@ import Link from 'next/link' import { useMemo, useState } from 'react' -import type { RelationOption } from '@/components/campaign/shared/RelationMultiSelect' import { CampaignListOmnibox } from '@/components/campaign/shared/CampaignListOmnibox' +import type { RelationOption } from '@/components/campaign/shared/RelationMultiSelect' import { useCampaignListFilterNavigation } from '@/components/campaign/shared/useCampaignListFilterNavigation' import { Button } from '@/components/ui/button' import { diff --git a/src/components/campaign/demand/DemandFilters.tsx b/src/components/campaign/demand/DemandFilters.tsx index 1ccb8e58..f261c903 100644 --- a/src/components/campaign/demand/DemandFilters.tsx +++ b/src/components/campaign/demand/DemandFilters.tsx @@ -4,6 +4,7 @@ import { useMemo, useState } from 'react' import { CampaignListOmnibox } from '@/components/campaign/shared/CampaignListOmnibox' import { useCampaignListFilterNavigation } from '@/components/campaign/shared/useCampaignListFilterNavigation' +import { buildDemandListHref } from '@/utilities/demand/demandListUrl' import { applyDemandOmniboxSuggestion, buildDemandOmniboxChips, @@ -14,7 +15,6 @@ import { type DemandListState, type DemandOmniboxAction, } from '@/utilities/demand/demandOmnibox' -import { buildDemandListHref } from '@/utilities/demand/demandListUrl' export const DemandFilters = ({ state }: { state: DemandListState }) => { const { navigate, isPending } = useCampaignListFilterNavigation({ diff --git a/src/components/campaign/municipality/TerritoryFilters.tsx b/src/components/campaign/municipality/TerritoryFilters.tsx index c522a090..85432793 100644 --- a/src/components/campaign/municipality/TerritoryFilters.tsx +++ b/src/components/campaign/municipality/TerritoryFilters.tsx @@ -4,8 +4,11 @@ import { useMemo, useState } from 'react' import { CampaignListOmnibox } from '@/components/campaign/shared/CampaignListOmnibox' import { useCampaignListFilterNavigation } from '@/components/campaign/shared/useCampaignListFilterNavigation' -import { buildTerritoryListHref, type TerritoryListState } from '@/utilities/territory/territoryListUrl' import type { TerritoryFilterOption } from '@/utilities/territory/territoryListFilters' +import { + buildTerritoryListHref, + type TerritoryListState, +} from '@/utilities/territory/territoryListUrl' import { applyTerritoryOmniboxSuggestion, buildTerritoryOmniboxChips, diff --git a/src/components/campaign/organization/OrganizationFilters.tsx b/src/components/campaign/organization/OrganizationFilters.tsx index ee5eafb8..839c12aa 100644 --- a/src/components/campaign/organization/OrganizationFilters.tsx +++ b/src/components/campaign/organization/OrganizationFilters.tsx @@ -24,7 +24,10 @@ export const OrganizationFilters = ({ state }: { state: OrganizationListState }) }) const [query, setQuery] = useState('') - const withPageReset = (next: OrganizationListState): OrganizationListState => ({ ...next, page: 1 }) + const withPageReset = (next: OrganizationListState): OrganizationListState => ({ + ...next, + page: 1, + }) const chips = useMemo(() => buildSearchOnlyOmniboxChips(state), [state]) diff --git a/src/components/campaign/supporter/SupporterFilters.tsx b/src/components/campaign/supporter/SupporterFilters.tsx index a4ccf821..a075483e 100644 --- a/src/components/campaign/supporter/SupporterFilters.tsx +++ b/src/components/campaign/supporter/SupporterFilters.tsx @@ -2,10 +2,9 @@ import { useMemo, useState } from 'react' -import type { RelationOption } from '@/components/campaign/shared/RelationMultiSelect' import { CampaignListOmnibox } from '@/components/campaign/shared/CampaignListOmnibox' +import type { RelationOption } from '@/components/campaign/shared/RelationMultiSelect' import { useCampaignListFilterNavigation } from '@/components/campaign/shared/useCampaignListFilterNavigation' -import { municipalityComboboxOptions } from '@/utilities/territory/territoryComboboxOptions' import { applySupporterOmniboxSuggestion, buildSupporterOmniboxChips, @@ -16,6 +15,7 @@ import { type SupporterOmniboxAction, } from '@/utilities/supporter/supporterOmnibox' import { buildSupporterListHref, type SupporterListState } from '@/utilities/supporter/supporterUi' +import { municipalityComboboxOptions } from '@/utilities/territory/territoryComboboxOptions' export const SupporterFilters = ({ state, @@ -39,7 +39,8 @@ export const SupporterFilters = ({ }, [municipalityOptions]) const cityOptions = useMemo( - () => municipalityComboboxOptions().map((option) => ({ value: option.value, label: option.label })), + () => + municipalityComboboxOptions().map((option) => ({ value: option.value, label: option.label })), [], ) diff --git a/src/lib/searchOnlyListOmnibox.ts b/src/lib/searchOnlyListOmnibox.ts index 82df8c03..c60d8931 100644 --- a/src/lib/searchOnlyListOmnibox.ts +++ b/src/lib/searchOnlyListOmnibox.ts @@ -19,12 +19,12 @@ export type SearchOnlyOmniboxAction = const chipLabel = (dimension: string, value: string): string => `${dimension}: ${value}` -export const buildSearchOnlyOmniboxChips = (state: SearchOnlyListState): CampaignListOmniboxChip[] => - state.q ? [{ id: 'q', label: chipLabel('Busca', state.q) }] : [] +export const buildSearchOnlyOmniboxChips = ( + state: SearchOnlyListState, +): CampaignListOmniboxChip[] => (state.q ? [{ id: 'q', label: chipLabel('Busca', state.q) }] : []) -export const buildSearchOnlyOmniboxSuggestions = ( - query: string, -): CampaignListOmniboxSuggestion[] => filterOmniboxSuggestionSeeds([], query) +export const buildSearchOnlyOmniboxSuggestions = (query: string): CampaignListOmniboxSuggestion[] => + filterOmniboxSuggestionSeeds([], query) export const applySearchOnlyOmniboxSuggestion = ({ state, diff --git a/src/utilities/activityOmnibox.ts b/src/utilities/activityOmnibox.ts index e3b65c56..071c3a57 100644 --- a/src/utilities/activityOmnibox.ts +++ b/src/utilities/activityOmnibox.ts @@ -2,13 +2,13 @@ * Activity list omnibox adapter (B128). Pure / client-safe. * Tab preset stays outside the omnibox (product map). */ -import { activityKindLabels, activityStatusLabels } from '@/lib/schemas/activity' import { createOmniboxSuggestionSeed, filterOmniboxSuggestionSeeds, type CampaignListOmniboxChip, type CampaignListOmniboxSuggestion, } from '@/lib/campaignListOmnibox' +import { activityKindLabels, activityStatusLabels } from '@/lib/schemas/activity' import { buildActivityListSearchParams, parseActivityListParams, @@ -29,8 +29,9 @@ const chipLabel = (dimension: string, value: string): string => `${dimension}: $ const withPageReset = (state: ActivityListState): ActivityListState => ({ ...state, page: 1 }) -const parseStateFromParams = (raw: Record): ActivityListState => - parseActivityListParams(raw) +const parseStateFromParams = ( + raw: Record, +): ActivityListState => parseActivityListParams(raw) const setExclusiveField = ( state: ActivityListState, diff --git a/src/utilities/advisorData.ts b/src/utilities/advisorData.ts index cd510d6f..4c281065 100644 --- a/src/utilities/advisorData.ts +++ b/src/utilities/advisorData.ts @@ -9,8 +9,8 @@ import { type AdvisorListState, } from '@/utilities/advisor/advisorListUrl' -export type { AdvisorListState } export { advisorListHrefForPage, parseAdvisorListParams } +export type { AdvisorListState } type AdvisorMunicipalityViewModel = { id: number diff --git a/src/utilities/campaignDemandData.ts b/src/utilities/campaignDemandData.ts index f2a78158..fc1e3209 100644 --- a/src/utilities/campaignDemandData.ts +++ b/src/utilities/campaignDemandData.ts @@ -17,8 +17,8 @@ import { loadMunicipalityLabelsByIds, } from '@/utilities/loadNamesByIds' -export type { DemandListState } export { buildDemandListHref, parseDemandListParams } +export type { DemandListState } const demandPageSize = 25 diff --git a/src/utilities/demand/demandListUrl.ts b/src/utilities/demand/demandListUrl.ts index b60e4a9a..0d59046b 100644 --- a/src/utilities/demand/demandListUrl.ts +++ b/src/utilities/demand/demandListUrl.ts @@ -31,7 +31,10 @@ export const parseDemandListParams = (searchParams: RawSearchParams): DemandList } } -const buildDemandListSearchParams = (state: DemandListState, page = state.page): URLSearchParams => { +const buildDemandListSearchParams = ( + state: DemandListState, + page = state.page, +): URLSearchParams => { const params = new URLSearchParams() if (state.status) params.set('status', state.status) if (state.kind) params.set('kind', state.kind) diff --git a/src/utilities/demand/demandOmnibox.ts b/src/utilities/demand/demandOmnibox.ts index 98632823..bf3f1975 100644 --- a/src/utilities/demand/demandOmnibox.ts +++ b/src/utilities/demand/demandOmnibox.ts @@ -2,17 +2,17 @@ * Demand list omnibox adapter (B128). Status-only; kind/activity deep-links * stay URL-only without new list UI. Pure / client-safe. */ -import { - campaignDemandStatusLabels, - campaignDemandStatuses, - type CampaignDemandStatus, -} from '@/lib/schemas/campaignDemand' import { createOmniboxSuggestionSeed, filterOmniboxSuggestionSeeds, type CampaignListOmniboxChip, type CampaignListOmniboxSuggestion, } from '@/lib/campaignListOmnibox' +import { + campaignDemandStatusLabels, + campaignDemandStatuses, + type CampaignDemandStatus, +} from '@/lib/schemas/campaignDemand' import type { DemandListState } from '@/utilities/demand/demandListUrl' export type { DemandListState } diff --git a/src/utilities/leadership/leadershipOmnibox.ts b/src/utilities/leadership/leadershipOmnibox.ts index 580a6c11..1c40f6a3 100644 --- a/src/utilities/leadership/leadershipOmnibox.ts +++ b/src/utilities/leadership/leadershipOmnibox.ts @@ -7,6 +7,10 @@ import { type CampaignListOmniboxChip, type CampaignListOmniboxSuggestion, } from '@/lib/campaignListOmnibox' +import { + leadershipAccessFilterLabels, + supportStatusLabels, +} from '@/utilities/leadership/leadershipLabels' import { clearLeadershipListFilters, leadershipAccessFilterOptions, @@ -23,10 +27,6 @@ import { type LeadershipListSortKey, type LeadershipListState, } from '@/utilities/leadership/leadershipListUrl' -import { - leadershipAccessFilterLabels, - supportStatusLabels, -} from '@/utilities/leadership/leadershipLabels' const DEFAULT_LEADERSHIP_LIST_SORT_KEY: LeadershipListSortKey = 'updatedAt' const DEFAULT_LEADERSHIP_LIST_SORT_DIR: LeadershipListSortDirection = 'desc' @@ -95,7 +95,9 @@ export const buildLeadershipOmniboxChips = ({ if (!isDefaultLeadershipListSort(state)) { const { sort, dir } = resolveLeadershipListSort(state) - const option = leadershipListSortOptions.find((entry) => entry.key === sort && entry.dir === dir) + const option = leadershipListSortOptions.find( + (entry) => entry.key === sort && entry.dir === dir, + ) chips.push({ id: 'sort', label: chipLabel('Ordenação', option?.label ?? `${sort} ${dir}`), diff --git a/src/utilities/organizationData.ts b/src/utilities/organizationData.ts index 1ff1027d..d59c162e 100644 --- a/src/utilities/organizationData.ts +++ b/src/utilities/organizationData.ts @@ -6,15 +6,15 @@ import { relationshipId } from '@/lib/relationship' import type { OrganizationKind } from '@/lib/schemas/organization' import type { CampaignUser, Organization } from '@/payload-types' import type { ActivityStatus } from '@/utilities/activityUi' +import { loadMunicipalityLabelsByIds } from '@/utilities/loadNamesByIds' import { buildOrganizationListHref, parseOrganizationListParams, type OrganizationListState, } from '@/utilities/organization/organizationListUrl' -import { loadMunicipalityLabelsByIds } from '@/utilities/loadNamesByIds' -export type { OrganizationListState } export { buildOrganizationListHref, parseOrganizationListParams } +export type { OrganizationListState } const organizationPageSize = 25 diff --git a/src/utilities/stateDeputyOmnibox.ts b/src/utilities/stateDeputyOmnibox.ts index f24d9acc..b204949c 100644 --- a/src/utilities/stateDeputyOmnibox.ts +++ b/src/utilities/stateDeputyOmnibox.ts @@ -43,7 +43,9 @@ const isDefaultStateDeputyListSort = (state: StateDeputyListState): boolean => { const partyChipLabel = (party: string): string => party === NO_PARTY_FILTER_VALUE ? noPartyFilterLabel : party -export const buildStateDeputyOmniboxChips = (state: StateDeputyListState): CampaignListOmniboxChip[] => { +export const buildStateDeputyOmniboxChips = ( + state: StateDeputyListState, +): CampaignListOmniboxChip[] => { const chips: CampaignListOmniboxChip[] = [] if (state.q) chips.push({ id: 'q', label: chipLabel('Busca', state.q) }) @@ -127,7 +129,9 @@ export const applyStateDeputyOmniboxSuggestion = ({ if (suggestionId.startsWith('sort:')) { const raw = suggestionId.slice(5) const [key, dir] = raw.split('|') - const option = stateDeputyListSortOptions.find((entry) => entry.key === key && entry.dir === dir) + const option = stateDeputyListSortOptions.find( + (entry) => entry.key === key && entry.dir === dir, + ) if (!option) return { kind: 'url', state } const next = withPageReset({ ...state, sort: option.key, dir: option.dir }) if (isDefaultStateDeputyListSort(next)) { diff --git a/src/utilities/supporter/supporterOmnibox.ts b/src/utilities/supporter/supporterOmnibox.ts index 80a04fc9..9c9917ae 100644 --- a/src/utilities/supporter/supporterOmnibox.ts +++ b/src/utilities/supporter/supporterOmnibox.ts @@ -27,8 +27,9 @@ const chipLabel = (dimension: string, value: string): string => `${dimension}: $ const withPageReset = (state: SupporterListState): SupporterListState => ({ ...state, page: 1 }) -const parseStateFromParams = (raw: Record): SupporterListState => - parseSupporterListParams(raw) +const parseStateFromParams = ( + raw: Record, +): SupporterListState => parseSupporterListParams(raw) export const buildSupporterOmniboxChips = ({ state, diff --git a/src/utilities/territory/territoryOmnibox.ts b/src/utilities/territory/territoryOmnibox.ts index 5b1aa8c2..f1a078d2 100644 --- a/src/utilities/territory/territoryOmnibox.ts +++ b/src/utilities/territory/territoryOmnibox.ts @@ -36,7 +36,9 @@ const isDefaultTerritoryListSort = (state: TerritoryListState): boolean => { return sort === DEFAULT_TERRITORY_LIST_SORT_KEY && dir === DEFAULT_TERRITORY_LIST_SORT_DIR } -export const buildTerritoryOmniboxChips = (state: TerritoryListState): CampaignListOmniboxChip[] => { +export const buildTerritoryOmniboxChips = ( + state: TerritoryListState, +): CampaignListOmniboxChip[] => { const chips: CampaignListOmniboxChip[] = [] if (state.q) chips.push({ id: 'q', label: chipLabel('Busca', state.q) }) @@ -161,7 +163,8 @@ export const removeTerritoryOmniboxChip = ({ chipId: string }): TerritoryOmniboxAction => { if (chipId === 'q') return { kind: 'url', state: { ...state, q: undefined } } - if (chipId === 'sort') return { kind: 'url', state: { ...state, sort: undefined, dir: undefined } } + if (chipId === 'sort') + return { kind: 'url', state: { ...state, sort: undefined, dir: undefined } } if (chipId.startsWith('region:')) { return { diff --git a/tests/unit/listOmniboxB128.unit.spec.ts b/tests/unit/listOmniboxB128.unit.spec.ts index 43534f48..02ab4b39 100644 --- a/tests/unit/listOmniboxB128.unit.spec.ts +++ b/tests/unit/listOmniboxB128.unit.spec.ts @@ -1,11 +1,15 @@ import { describe, expect, it } from 'vitest' -import { parseActivityListParams } from '@/utilities/activityUi' +import { + applySearchOnlyOmniboxSuggestion, + buildSearchOnlyOmniboxChips, +} from '@/lib/searchOnlyListOmnibox' import { applyActivityOmniboxSuggestion, buildActivityOmniboxChips, clearActivityOmnibox, } from '@/utilities/activityOmnibox' +import { parseActivityListParams } from '@/utilities/activityUi' import { parseDemandListParams } from '@/utilities/demand/demandListUrl' import { applyDemandOmniboxSuggestion, @@ -23,11 +27,11 @@ import { applyStateDeputyOmniboxSuggestion, buildStateDeputyOmniboxChips, } from '@/utilities/stateDeputyOmnibox' -import { parseSupporterListParams } from '@/utilities/supporter/supporterUi' import { applySupporterOmniboxSuggestion, buildSupporterOmniboxChips, } from '@/utilities/supporter/supporterOmnibox' +import { parseSupporterListParams } from '@/utilities/supporter/supporterUi' import { parseTerritoryListParams } from '@/utilities/territory/territoryListUrl' import { applyTerritoryOmniboxSuggestion, @@ -35,10 +39,6 @@ import { buildTerritoryOmniboxSuggestionSeeds, filterTerritoryOmniboxSuggestions, } from '@/utilities/territory/territoryOmnibox' -import { - applySearchOnlyOmniboxSuggestion, - buildSearchOnlyOmniboxChips, -} from '@/lib/searchOnlyListOmnibox' describe('list omnibox adapters (B128)', () => { it('territory builds chips and applies search', () => {