{"version":3,"sources":["webpack:///./src/modules/NotFound/NotFound.tsx","webpack:///./src/api/hooks/useAddDeclaration.ts","webpack:///./src/components/InitiateDeclaration/InitiateDeclaration.tsx","webpack:///./src/components/MyDeclaration/DeclarationStatus.tsx","webpack:///./src/icons/BekraeftetIcon.tsx","webpack:///./src/components/MyDeclaration/MyDeclaration.tsx","webpack:///./src/icons/OpenNewWindowIcon.tsx","webpack:///./src/components/PartyDetails/PartyDetailsItem.tsx","webpack:///./src/icons/StatusIcon.tsx","webpack:///./src/components/PartyDetails/Status.tsx","webpack:///./src/components/PartyDetails/PartyDetails.tsx","webpack:///./src/modules/PartyPage/PartyPage.tsx","webpack:///./src/utils/format-utils.ts","webpack:///./src/components/ElectionTypeNavigation/ElectionTypeNavigation.tsx","webpack:///./src/components/MyDeclaration/DeclarationButtons.tsx"],"names":["NotFound","title","text","link","sx","maxWidth","textAlign","mt","rem","mb","as","variant","TextVariant","H2","Paragraph","prefetch","ButtonVariant","Flat","pr","width","icon","height","ml","label","displayName","delay","ms","Promise","resolve","setTimeout","useAddDeclaration","ModalState","options","useMutation","a","partyId","electionType","all","fetcher","method","body","JSON","stringify","result","onSuccess","data","variables","queryCache","invalidateQueries","userQueryKey","throwOnError","onError","error","snapshotValue","handleQueryError","InitiateDeclaration","UserStatus","model","className","partyName","collectionState","user","useRouter","searchParams","replace","updateSearchParams","loginUrl","useAuth","t","useDictionary","useState","undefined","state","setState","onSettled","setModalState","Error","details","hasOwnProperty","Hidden","submitDeclaration","status","modalState","action","get","useEffect","DeclarationActionTypes","initiate","key","value","Show","onDismiss","alreadyDeclared","userDeclarations","some","declaration","CollectionState","running","votingRights","electionTypeMap","css","Button","Primary","Arrow","onClick","initiateLabel","disabled","href","encodeURIComponent","display","justifyContent","alreadyDeclaredText","loginLabel","Anchor","external","fontSize","lineHeight","transition","color","Colors","Secondary","Black","Modal","asString","party","isOpen","actions","variation","submitting","RichText","getErrorWithState","BekraeftetIcon","React","props","svgRef","viewBox","focusable","ref","fill","fillRule","d","DeclarationBox","children","listStyle","backgroundColor","DisabledGreen","InfoGreen","boxShadow","DisabledGreenText","py","pl","DeclarationItem","fillWidth","checkbox","date","content","dateTime","dotFormatDate","DeclarationStatusContent","declaredParty","partyState","noCollection","ElectionType","Folketingsvalg","pathname","userStatus","dateOfInitiation","dateOfConfirmation","id","activitiesWithAnotherParty","confirmed","daysLeft","initiated","readyToConfirm","notYetInitiated","getDeclarationStatus","dateOfConfirmationExpiry","electionTypeValue","dk","EuropaParlamentsvalg","eu","interpolation","name","days","toString","activeParty","confirmExpireDate","locked","approved","deactivated","MyDeclaration","usePartyId","useElectionType","isDefined","currentDeclaration","find","item","length","useParty","declaredStatus","currentParty","Placeholder","size","selectedElectionType","flexDirection","alignItems","Logo","animateIn","H3","OpenNewWindowIcon","itemStyle","PartyDetailsItem","ariaValue","flex","mr","aria-label","StatusIcon","stroke","strokeWidth","Status","runningState","marginBottom","Warning","px","collectionStateMap","PartyDetails","url","representative","owner","voteCount","thousandsSeparators","expiryDate","contact","address","phone","email","partyWebsite","webSite","test","target","PartyPage","introText","attentionAnalogue","introLabels","initiateDeclaration","notFound","howTo","useUser","userReady","trackEvent","PlausibleGoals","Party","parti","dkRunning","euRunning","pt","pb","DocumentTitle","H1","ElectionTypeNavigation","HowToSection","motion","div","whileHover","PureWhite","minHeight","textDecoration","H4","Date","isNaN","getTime","day","getDate","slice","month","getMonth","year","getFullYear","num_parts","split","join","btnStyle","active","borderBottom","borderBottomColor","constructUrl","query","URLSearchParams","set","border","borderColor","VeryLightPink","mx","textTransform","replaceHistory","wordBreak","DeclarationForm","service","params","actionUrl","generateRedirectUrl","onSubmit","process","env","STORYBOOK","event","preventDefault","console","log","type","ConfirmDeclaration","confirm","WithdrawDeclaration","withdraw","my","p"],"mappings":"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","file":"static/scripts/party-page-5fa34d69dc35294c1118.js","sourcesContent":["import React from 'react';\nimport { hot } from 'react-hot-loader/root';\nimport { Container, Heading } from '@charlietango/ui';\nimport { rem } from 'polished';\n\nimport Arrow from '../../components/Arrow/Arrow';\nimport Button from '../../components/Button/Button';\nimport RichText from '../../components/RichText/RichText';\nimport { ButtonVariant } from '../../styles/buttons';\nimport { TextVariant } from '../../styles/typography';\nimport NotFoundViewModel from './types/NotFoundViewModel';\n\nexport function NotFound({ title, text, link }: NotFoundViewModel) {\n return (\n \n {title && (\n \n {title}\n \n )}\n {text && (\n \n {text}\n \n )}\n {link && (\n }\n >\n {link.label}\n \n )}\n \n );\n}\n\nNotFound.displayName = 'NotFound';\n\nexport default !process.env.HOT ? NotFound : hot(NotFound);\n","import { MutationConfig, queryCache, useMutation } from 'react-query';\n\nimport { SchemaAddDeclarationResponse } from '../api-schema';\nimport { ElectionType, IError } from '../api-types';\nimport { fetcher } from '../fetcher';\nimport { handleQueryError } from '../query-error';\nimport { userQueryKey } from './useUser';\n\ntype DeclarationVariables = { partyId: string; electionType: ElectionType };\n\nfunction delay(ms: number) {\n if (process.env.NODE_ENV === 'test') return Promise.resolve();\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n\nfunction useAddDeclaration(\n options?: MutationConfig<\n SchemaAddDeclarationResponse,\n IError,\n DeclarationVariables\n >,\n) {\n return useMutation<\n SchemaAddDeclarationResponse,\n IError,\n DeclarationVariables\n >(\n async ({ partyId, electionType }) => {\n const [result] = await Promise.all([\n fetcher('/api/v1/declarations/add', {\n method: 'POST',\n body: JSON.stringify({ partyId, electionType }),\n }),\n // Ensure this request takes at least 1 second to complete\n delay(1000),\n ]);\n\n return result;\n },\n {\n ...options,\n onSuccess: (data, variables) => {\n // After posting, we update the user, so it shows the new state\n queryCache.invalidateQueries(userQueryKey, { throwOnError: false });\n\n if (options && options.onSuccess) {\n return options.onSuccess(data, variables);\n }\n },\n onError: (error, variables, snapshotValue) => {\n handleQueryError(error);\n // Make sure we still have a valid user\n queryCache.invalidateQueries(userQueryKey, { throwOnError: false });\n\n if (options && options.onError) {\n return options.onError(error, variables, snapshotValue);\n }\n },\n },\n );\n}\n\nexport default useAddDeclaration;\n","import React, { useEffect, useState } from 'react';\nimport { Text } from '@charlietango/ui';\nimport { rem } from 'polished';\n\nimport { SchemaFrontendUserDataViewModel } from '../../api/api-schema';\nimport {\n CollectionState,\n ElectionType,\n electionTypeMap,\n} from '../../api/api-types';\nimport { useAuth } from '../../api/AuthProvider';\nimport useAddDeclaration from '../../api/hooks/useAddDeclaration';\nimport { useRouter } from '../../application/Router';\nimport { useDictionary } from '../../hooks/useDictionary';\nimport { ButtonVariant } from '../../styles/buttons';\nimport { Colors } from '../../styles/colors';\nimport { TextVariant } from '../../styles/typography';\nimport { DeclarationActionTypes } from '../../view-models/DeclarationActionTypes';\nimport Anchor from '../Anchor/Anchor';\nimport Arrow from '../Arrow/Arrow';\nimport Button from '../Button/Button';\nimport Modal from '../Modal/Modal';\nimport RichText from '../RichText/RichText';\nimport InitiateDeclarationViewModel from './types/InitiateDeclarationViewModel';\nimport { getErrorWithState } from '../StatusMessages/StatusMessageOverlay';\n\ntype Props = {\n model?: InitiateDeclarationViewModel;\n className?: string;\n electionType?: ElectionType;\n collectionState: CollectionState;\n partyId?: string;\n partyName?: string | null;\n user?: SchemaFrontendUserDataViewModel;\n};\n\nenum ModalState {\n Hidden,\n Show,\n Error,\n}\n\nfunction InitiateDeclaration({\n model,\n className,\n electionType,\n partyId,\n partyName,\n collectionState,\n user,\n}: Props) {\n const { searchParams, replace, updateSearchParams } = useRouter();\n const { loginUrl } = useAuth();\n const { t } = useDictionary();\n const [state, setState] = useState(undefined);\n\n const [submitDeclaration, { status }] = useAddDeclaration({\n onSettled: (data, error) => {\n if (!data || error) {\n setModalState(ModalState.Error);\n if (error?.details?.hasOwnProperty('stateCode')) {\n setState(error.details['stateCode']);\n }\n } else {\n setModalState(ModalState.Hidden);\n }\n },\n });\n\n const [modalState, setModalState] = useState(ModalState.Hidden);\n const action = searchParams?.get('action');\n\n useEffect(() => {\n if (action === DeclarationActionTypes.initiate) {\n // Remove the failure code from the URL\n updateSearchParams([{ key: 'action', value: undefined }]);\n\n setModalState(ModalState.Show);\n }\n }, [action, updateSearchParams, user, replace]);\n\n const onDismiss = () => setModalState(ModalState.Hidden);\n\n const alreadyDeclared = user?.userDeclarations?.some(\n (declaration) => declaration.electionType === electionType,\n );\n\n if (\n // Ensure the party is actually collecting at the moment\n collectionState !== CollectionState.running ||\n // Ensure the user isn't already declared - No sense in declaring twice\n alreadyDeclared ||\n // Ensure the user has voting rights\n (electionType !== undefined &&\n user &&\n !user?.votingRights?.[electionTypeMap[electionType]]) ||\n // Ensure we have a login url\n !loginUrl\n ) {\n return null;\n }\n\n const defaultMessage = 'errors.generic_text';\n\n return (\n \n {user ? (\n }\n onClick={() => {\n setModalState(ModalState.Show);\n }}\n label={model?.initiateLabel}\n disabled={status === 'loading'}\n />\n ) : (\n }\n href={\n loginUrl +\n encodeURIComponent('&action=' + DeclarationActionTypes.initiate)\n }\n label={model?.initiateLabel}\n />\n )}\n \n {!user && (\n \n {model?.alreadyDeclaredText}\n {model?.loginLabel && (\n \n )}\n \n )}\n \n {partyId !== undefined && electionType !== undefined ? (\n {\n submitDeclaration({\n partyId,\n electionType,\n });\n },\n label: t('modal.accept'),\n variation: ButtonVariant.Primary,\n submitting: status === 'loading',\n },\n {\n label: t('modal.cancel'),\n onClick: onDismiss,\n variation: ButtonVariant.Flat,\n },\n ]\n : undefined\n }\n >\n \n {t(\n modalState === ModalState.Error\n ? getErrorWithState(state, 'initiate', defaultMessage)\n : 'modal.status_14_01_text',\n )}\n \n \n ) : null}\n \n );\n}\n\nexport default InitiateDeclaration;\n","import React from 'react';\nimport { Text } from '@charlietango/ui';\nimport { rem } from 'polished';\n\nimport {\n SchemaPartyDetailsResponse,\n SchemaUserDeclaration,\n SchemaVotingRights,\n} from '../../api/api-schema';\nimport {\n CollectionState,\n ElectionType,\n electionTypeMap,\n} from '../../api/api-types';\nimport { useRouter } from '../../application/Router';\nimport { useDictionary } from '../../hooks/useDictionary';\nimport BekraeftetIcon from '../../icons/BekraeftetIcon';\nimport { Colors } from '../../styles/colors';\nimport { TextVariant } from '../../styles/typography';\nimport { dotFormatDate } from '../../utils/format-utils';\nimport Anchor from '../Anchor/Anchor';\nimport RichText from '../RichText/RichText';\nimport { ConfirmDeclaration, WithdrawDeclaration } from './DeclarationButtons';\n\ntype DeclarationStatusProps = {\n party?: SchemaPartyDetailsResponse;\n declaredParty?: SchemaPartyDetailsResponse;\n partyState: CollectionState;\n declaration?: SchemaUserDeclaration;\n votingRights: SchemaVotingRights;\n electionType: ElectionType;\n};\n\ntype InterpolationValues = {\n electionType?: React.ReactNode;\n partyName?: React.ReactNode;\n daysLeft?: React.ReactNode;\n activeParty?: React.ReactNode;\n confirmExpireDate?: React.ReactNode;\n};\n\nexport enum UserStatus {\n notYetInitiated = 'no-yet-initiated',\n initiated = 'initiated',\n readyToConfirm = 'confirm',\n confirmed = 'confirmed',\n activitiesWithAnotherParty = 'activities-with-another-party',\n}\n\nexport function getDeclarationStatus(\n party?: SchemaPartyDetailsResponse,\n declaration?: SchemaUserDeclaration,\n) {\n if (\n declaration &&\n (declaration.dateOfInitiation || declaration.dateOfConfirmation)\n ) {\n if (party && party.id !== declaration.partyId) {\n return UserStatus.activitiesWithAnotherParty;\n }\n if (declaration.dateOfConfirmation) {\n return UserStatus.confirmed;\n }\n\n if (declaration.daysLeft && declaration.daysLeft > 0) {\n return UserStatus.initiated;\n }\n return UserStatus.readyToConfirm;\n }\n return UserStatus.notYetInitiated;\n}\n\n/**\n * The wrapper around Declaration status items, that handles rendering the background.\n * */\nconst DeclarationBox = ({\n children,\n disabled,\n}: {\n children: React.ReactNode;\n disabled?: boolean;\n}) => (\n \n {children}\n \n);\n\nexport const DeclarationItem = (props: {\n checkbox?: boolean;\n fillWidth?: boolean;\n content: React.ReactNode;\n date?: string | null;\n disabled?: boolean;\n}) => {\n return (\n \n {!props.fillWidth && (\n
\n {props.checkbox && }\n
\n )}\n \n {props.content}\n {props.date && (\n \n )}\n \n
\n );\n};\n\nexport const DeclarationStatusContent = ({\n party,\n declaredParty,\n partyState = CollectionState.noCollection,\n declaration,\n electionType = ElectionType.Folketingsvalg,\n votingRights,\n}: DeclarationStatusProps) => {\n const { pathname } = useRouter();\n const { t } = useDictionary();\n\n let userStatus: UserStatus = getDeclarationStatus(party, declaration);\n\n const {\n daysLeft,\n dateOfInitiation,\n dateOfConfirmation,\n dateOfConfirmationExpiry,\n } = declaration || {};\n\n const electionTypeValue = electionTypeMap[electionType];\n\n if (\n (electionType === ElectionType.Folketingsvalg && !votingRights.dk) ||\n (electionType === ElectionType.EuropaParlamentsvalg && !votingRights.eu)\n ) {\n return (\n \n \n {t('myDeclaration.status_13_13', {\n electionType: t(`${electionTypeValue}Election`),\n asString: true,\n })}\n \n \n );\n }\n\n if (!party || !party.id) {\n return (\n \n );\n }\n\n const interpolation: InterpolationValues = {\n partyName: party.name,\n electionType: t(`${electionTypeValue}Election`),\n daysLeft:\n daysLeft !== undefined\n ? t(daysLeft !== 1 ? 'myDeclaration.days' : 'myDeclaration.days_1', {\n days: daysLeft.toString(),\n })\n : undefined,\n activeParty: declaredParty ? (\n \n {declaredParty?.name}\n \n ) : undefined,\n confirmExpireDate: dateOfConfirmationExpiry ? (\n \n ) : null,\n };\n\n switch (partyState) {\n case CollectionState.running:\n switch (userStatus) {\n case UserStatus.notYetInitiated:\n return (\n \n );\n case UserStatus.initiated:\n return (\n <>\n \n \n \n \n \n \n );\n case UserStatus.readyToConfirm:\n return (\n <>\n \n \n \n \n \n \n );\n case UserStatus.confirmed:\n return (\n <>\n \n \n \n \n );\n case UserStatus.activitiesWithAnotherParty:\n return (\n \n );\n }\n break;\n case CollectionState.locked:\n switch (userStatus) {\n case UserStatus.notYetInitiated:\n return (\n \n );\n case UserStatus.initiated:\n case UserStatus.readyToConfirm:\n return (\n <>\n \n \n \n \n \n );\n case UserStatus.confirmed:\n return (\n <>\n \n \n \n );\n case UserStatus.activitiesWithAnotherParty:\n return (\n \n );\n default:\n break;\n }\n break;\n case CollectionState.approved:\n switch (userStatus) {\n case UserStatus.initiated:\n case UserStatus.readyToConfirm:\n case UserStatus.notYetInitiated:\n return (\n \n );\n case UserStatus.confirmed:\n return (\n <>\n \n \n \n );\n case UserStatus.activitiesWithAnotherParty:\n return (\n \n );\n }\n break;\n case CollectionState.noCollection:\n switch (userStatus) {\n case UserStatus.initiated:\n case UserStatus.confirmed:\n case UserStatus.readyToConfirm:\n case UserStatus.notYetInitiated:\n return (\n \n );\n case UserStatus.activitiesWithAnotherParty:\n return (\n \n );\n }\n break;\n case CollectionState.deactivated:\n switch (userStatus) {\n case UserStatus.notYetInitiated:\n return (\n \n );\n case UserStatus.initiated:\n case UserStatus.readyToConfirm:\n return (\n <>\n \n \n \n \n \n );\n case UserStatus.confirmed:\n return (\n <>\n \n \n \n \n );\n case UserStatus.activitiesWithAnotherParty:\n return (\n \n );\n }\n }\n return null;\n};\n","/*\n GENERATED FILE - DO NOT MODIFY\n Any changes will be overwritten when `yarn svgs` is executed.\n \n Generated from: assets/bekraeftet.svg\n If you need to make changes the attributes, modify the original .svg file.\n \n If you need to modify the file further, consider copying this generated file to a new location,\n or into the component that uses it. If you do this, it might make sense to remove the original .svg file, \n or it could be regenerated the next time SVGs are generated.\n*/\nimport * as React from 'react';\nconst BekraeftetIcon = React.forwardRef(\n (props: React.SVGProps, svgRef: any) => (\n \n \n \n \n \n \n ),\n);\nexport default BekraeftetIcon;\n","import React from 'react';\nimport { Heading } from '@charlietango/ui';\nimport { rem } from 'polished';\n\nimport { SchemaFrontendUserDataViewModel } from '../../api/api-schema';\nimport {\n CollectionState,\n ElectionType,\n electionTypeMap,\n} from '../../api/api-types';\nimport { useParty } from '../../api/hooks/useParty';\nimport { useDictionary } from '../../hooks/useDictionary';\nimport { useElectionType, usePartyId } from '../../hooks/useSearchParams';\nimport { TextVariant } from '../../styles/typography';\nimport Logo from '../Logo/Logo';\nimport Placeholder from '../Placeholder/Placeholder';\nimport { DeclarationStatusContent } from './DeclarationStatus';\n\nexport type MyDeclarationProps = {\n user?: SchemaFrontendUserDataViewModel;\n className?: string;\n};\n\n/**\n * Show the users current declaration status\n * */\nfunction MyDeclaration({ user, className }: MyDeclarationProps) {\n const { t } = useDictionary();\n const { partyId } = usePartyId();\n const { electionType, isDefined } = useElectionType();\n\n // Determine the voting rights for the user - Can they actually have a declaration?\n const votingRights = user?.votingRights || {};\n\n // Find out if the user has declared to this party (or another party in the same electionType)\n let currentDeclaration = user?.userDeclarations?.find(\n (item) => item.electionType === electionType,\n );\n\n if (!currentDeclaration && !isDefined && user?.userDeclarations?.length) {\n // We don't need a specific declaration, so choose the active one\n currentDeclaration = user.userDeclarations[0];\n }\n // Fetch the party for the current page, and the declared party - You can only be declared to one party, so we need to know if they are the same.\n const { data: party, status } = useParty(partyId);\n const { data: declaredParty, status: declaredStatus } = useParty(\n currentDeclaration?.partyId,\n );\n\n const currentParty = party || declaredParty;\n\n if (!user || declaredStatus === 'loading' || status === 'loading') {\n return ;\n }\n\n // Find the correct electionType for this view. Prefer the electionType in URL, otherwise go with the election\n const selectedElectionType = isDefined\n ? electionType\n : currentDeclaration?.electionType ?? ElectionType.Folketingsvalg;\n\n // Determine the current party state, and fallback to no collection.\n const { state } = (currentParty &&\n currentParty[electionTypeMap[selectedElectionType]]) ?? {\n state: CollectionState.noCollection,\n };\n\n return (\n
\n \n \n \n {t('myDeclaration.title')}\n \n \n \n
\n );\n}\n\nexport default MyDeclaration;\n","/*\n GENERATED FILE - DO NOT MODIFY\n Any changes will be overwritten when `yarn svgs` is executed.\n \n Generated from: assets/open-new-window.svg\n If you need to make changes the attributes, modify the original .svg file.\n \n If you need to modify the file further, consider copying this generated file to a new location,\n or into the component that uses it. If you do this, it might make sense to remove the original .svg file, \n or it could be regenerated the next time SVGs are generated.\n*/\nimport * as React from 'react';\nconst OpenNewWindowIcon = React.forwardRef(\n (props: React.SVGProps, svgRef: any) => (\n \n \n \n \n \n \n ),\n);\nexport default OpenNewWindowIcon;\n","import React from 'react';\nimport { Text } from '@charlietango/ui';\n\nimport { TextVariant } from '../../styles/typography';\n\ntype PartyDetailsType = {\n label: React.ReactNode;\n ariaValue?: string;\n value: React.ReactNode;\n};\nexport const itemStyle = {\n boxShadow: ' inset 0 1px 0 0 #dce1e1',\n display: 'flex',\n justifyContent: 'space-between',\n py: 4,\n};\n\nfunction PartyDetailsItem({ label, value, ariaValue }: PartyDetailsType) {\n return (\n
\n \n {label}\n \n \n {value}\n \n
\n );\n}\nexport default PartyDetailsItem;\n","/*\n GENERATED FILE - DO NOT MODIFY\n Any changes will be overwritten when `yarn svgs` is executed.\n \n Generated from: assets/status.svg\n If you need to make changes the attributes, modify the original .svg file.\n \n If you need to modify the file further, consider copying this generated file to a new location,\n or into the component that uses it. If you do this, it might make sense to remove the original .svg file, \n or it could be regenerated the next time SVGs are generated.\n*/\nimport * as React from 'react';\nconst StatusIcon = React.forwardRef(\n (props: React.SVGProps, svgRef: any) => (\n \n \n \n \n \n \n ),\n);\nexport default StatusIcon;\n","import React from 'react';\nimport { Text } from '@charlietango/ui';\n\nimport { CollectionState, collectionStateMap } from '../../api/api-types';\nimport { useDictionary } from '../../hooks/useDictionary';\nimport { useElectionType } from '../../hooks/useSearchParams';\nimport StatusIcon from '../../icons/StatusIcon';\nimport { Colors } from '../../styles/colors';\nimport { TextVariant } from '../../styles/typography';\nimport { itemStyle } from './PartyDetailsItem';\n\ntype Props = {\n status?: CollectionState;\n};\n\nfunction Status({ status }: Props) {\n const { electionTypeValue } = useElectionType();\n const runningState = status === CollectionState.running;\n const { t } = useDictionary();\n if (status === undefined || electionTypeValue === undefined) return null;\n\n return (\n \n {runningState ? (\n <>\n \n {t('party.state')}\n \n {t(`partyStatus.${collectionStateMap[status]}`)}\n \n ) : (\n <>\n
\n \n \n {t('party.state')}\n \n
\n \n {t(`partyStatus.${collectionStateMap[status]}`, {\n electionType: t(`${electionTypeValue}Election`),\n })}\n \n \n )}\n \n );\n}\n\nexport default Status;\n","import React from 'react';\nimport { Heading, Text } from '@charlietango/ui';\n\nimport {\n SchemaPartyDetails,\n SchemaPartyDetailsResponse,\n} from '../../api/api-schema';\nimport { CollectionState } from '../../api/api-types';\nimport { useDictionary } from '../../hooks/useDictionary';\nimport { useElectionType } from '../../hooks/useSearchParams';\nimport OpenNewWindowIcon from '../../icons/OpenNewWindowIcon';\nimport { Colors } from '../../styles/colors';\nimport { TextVariant } from '../../styles/typography';\nimport { dotFormatDate, thousandsSeparators } from '../../utils/format-utils';\nimport Anchor from '../Anchor/Anchor';\nimport PartyDetailsItem, { itemStyle } from './PartyDetailsItem';\nimport Status from './Status';\n\nexport type PartyDetailsProps = {\n party?: SchemaPartyDetailsResponse;\n className?: string;\n children?: React.ReactNode;\n};\n\nfunction formatUrl(url: string) {\n if (!/^https?:\\/\\//.test(url)) {\n // Ensure we add the protocol to the URL\n return `https://${url}`;\n }\n return url;\n}\n\nfunction PartyDetails({ party, className, children }: PartyDetailsProps) {\n const { electionTypeValue } = useElectionType();\n const { t } = useDictionary();\n\n const currentParty: SchemaPartyDetails =\n party && electionTypeValue ? party[electionTypeValue] : undefined;\n\n if (\n !party ||\n !currentParty ||\n currentParty.state === CollectionState.noCollection\n ) {\n return ;\n }\n\n return (\n
\n {party.name && (\n \n {party.name}\n \n )}\n
\n {party.representative?.name ? (\n /*\n - IF there is only representative, it will be visible in party details as \"Repræsentant\".\n - IF there is only owner, it will be visible in party details as \"Indehaver\".\n - IF there are both representative and owner, only \"Repræsentant\" is visible in party details.\n */\n \n ) : party.owner?.name ? (\n \n ) : null}\n {currentParty.voteCount !== undefined ? (\n \n ) : null}\n\n \n {currentParty.expiryDate ? (\n \n {dotFormatDate(currentParty.expiryDate)}\n \n }\n />\n ) : null}\n {party.contact?.address ? (\n \n {party.contact.address}\n \n }\n />\n ) : null}\n {party.contact?.phone ? (\n \n {party.contact.phone}\n \n }\n />\n ) : null}\n {party.contact?.email ? (\n \n {party.contact.email}\n \n }\n />\n ) : null}\n
\n {currentParty.partyWebsite || party.webSite ? (\n \n \n {t('party.website')}\n \n \n \n \n \n ) : null}\n {children}\n
\n );\n}\n\nexport default PartyDetails;\n","import React, { useEffect } from 'react';\nimport { hot } from 'react-hot-loader/root';\nimport { Container, Grid, GridItem, Heading, Text } from '@charlietango/ui';\nimport { rem } from 'polished';\n\nimport { CollectionState } from '../../api/api-types';\nimport { useParty } from '../../api/hooks/useParty';\nimport { useUser } from '../../api/hooks/useUser';\nimport DocumentTitle from '../../application/DocumentTitle';\nimport Anchor from '../../components/Anchor/Anchor';\nimport Arrow from '../../components/Arrow/Arrow';\nimport ElectionTypeNavigation from '../../components/ElectionTypeNavigation/ElectionTypeNavigation';\nimport HowToSection from '../../components/HowToSection/HowToSection';\nimport InitiateDeclaration from '../../components/InitiateDeclaration/InitiateDeclaration';\nimport InitiateDeclarationViewModel from '../../components/InitiateDeclaration/types/InitiateDeclarationViewModel';\nimport MyDeclaration from '../../components/MyDeclaration/MyDeclaration';\nimport PartyDetails from '../../components/PartyDetails/PartyDetails';\nimport Placeholder from '../../components/Placeholder/Placeholder';\nimport { useElectionType, usePartyId } from '../../hooks/useSearchParams';\nimport { Colors } from '../../styles/colors';\nimport { TextVariant } from '../../styles/typography';\nimport { motion } from '../../utils/motion';\nimport AccordionViewModel from '../../view-models/AccordionViewModel';\nimport LinkViewModel from '../../view-models/LinkViewModel';\nimport { NotFound } from '../NotFound/NotFound';\nimport NotFoundViewModel from '../NotFound/types/NotFoundViewModel';\nimport { PlausibleGoals, trackEvent } from '../../utils/tracking';\n\nexport type PartyPageProps = {\n /** Intro labels based on what elections a party is applying for */\n introLabels?: {\n dk: string;\n eu: string;\n all: string;\n };\n initiateDeclaration?: InitiateDeclarationViewModel;\n howTo?: AccordionViewModel;\n attentionAnalogue?: LinkViewModel;\n notFound?: NotFoundViewModel;\n};\n\nexport function PartyPage({\n attentionAnalogue,\n introLabels,\n initiateDeclaration,\n notFound,\n howTo,\n}: PartyPageProps) {\n const { user, userReady } = useUser();\n const { partyId } = usePartyId();\n const { electionType, electionTypeValue } = useElectionType();\n const { data: party, error } = useParty(partyId);\n\n useEffect(() => {\n if (party) {\n trackEvent(PlausibleGoals.Party, {\n props: party.name ? { parti: party.name } : {},\n });\n }\n }, [party]);\n\n if (error || (userReady && !partyId)) {\n // If we got an error when fetching the party, or if there isn't a valid partyId\n return ;\n }\n if (!party) return ;\n\n // Figure out the intro text to show. It's based on the elections the parties are running for.\n let introText;\n const dkRunning = party.dk && party.dk.state !== CollectionState.noCollection;\n const euRunning = party.eu && party.eu.state !== CollectionState.noCollection;\n\n if (dkRunning && euRunning) introText = introLabels?.all;\n else if (dkRunning) introText = introLabels?.dk;\n else if (euRunning) introText = introLabels?.eu;\n\n // Get the collection state for the party\n const collectionState: CollectionState =\n party && party[electionTypeValue]\n ? (party[electionTypeValue].state as CollectionState)\n : CollectionState.noCollection;\n\n return (\n \n {process.env.NODE_ENV !== 'test' && }\n
\n \n {party.name}\n \n {introText && (\n
\n {introText}\n
\n )}\n
\n \n
\n \n \n {party && }\n\n \n \n \n \n {userReady ? (\n <>\n {user ? (\n \n ) : (\n <>\n {howTo && }\n {attentionAnalogue && (\n \n \n \n {attentionAnalogue.label}\n \n \n \n \n )}\n \n )}\n \n ) : (\n \n )}\n \n \n
\n \n );\n}\n\nPartyPage.displayName = 'PartyPage';\n\nexport default !process.env.HOT ? PartyPage : hot(PartyPage);\n","export const dotFormatDate = (date) => {\n const d = new Date(date);\n // Ensure the date is actually valid\n if (isNaN(d.getTime())) return '';\n\n const day = `0${d.getDate()}`.slice(-2);\n const month = `0${d.getMonth() + 1}`.slice(-2);\n const year = d.getFullYear();\n return `${day}.${month}.${year}`;\n};\n\nexport const thousandsSeparators = (value: number) => {\n let num_parts = value.toString().split('.');\n num_parts[0] = num_parts[0].replace(/\\B(?=(\\d{3})+(?!\\d))/g, '.');\n return num_parts.join(',');\n};\n","import React from 'react';\nimport { rem } from 'polished';\n\nimport { ElectionType, electionTypeMap } from '../../api/api-types';\nimport { useRouter } from '../../application/Router';\nimport { useDictionary } from '../../hooks/useDictionary';\nimport { useElectionType } from '../../hooks/useSearchParams';\nimport { ButtonVariant } from '../../styles/buttons';\nimport { Colors } from '../../styles/colors';\nimport Button from '../Button/Button';\n\nconst btnStyle = (active: boolean) => ({\n py: 1,\n px: 0,\n fontSize: [rem(11), rem(14)],\n flex: '0 1 auto',\n width: 'auto',\n color: active ? Colors.Black : Colors.Secondary,\n borderBottom: '2px solid',\n borderBottomColor: active ? Colors.Primary : 'transparent',\n});\n\ntype Props = {\n className?: string;\n};\n\nfunction ElectionTypeNavigation({ className }: Props) {\n const { searchParams, pathname } = useRouter();\n const { electionType } = useElectionType();\n const { t } = useDictionary();\n\n const constructUrl = (key) => {\n const query = new URLSearchParams(\n searchParams ? searchParams.toString() : undefined,\n );\n\n query.set('election', key);\n return `${pathname}?${query.toString()}`;\n };\n\n return (\n \n \n {t('dkElection')}\n \n \n {t('euElection')}\n \n \n );\n}\n\nexport default ElectionTypeNavigation;\n","import React from 'react';\nimport { ElectionType, electionTypeMap } from '../../api/api-types';\nimport { useRouter } from '../../application/Router';\nimport { useDictionary } from '../../hooks/useDictionary';\nimport { ButtonVariant } from '../../styles/buttons';\nimport { Colors } from '../../styles/colors';\nimport { generateRedirectUrl } from '../../utils/url-helpers';\nimport { DeclarationActionTypes } from '../../view-models/DeclarationActionTypes';\nimport Arrow from '../Arrow/Arrow';\nimport Button from '../Button/Button';\n\ntype Props = {\n partyId: string;\n electionType: ElectionType;\n disabled?: boolean;\n action: string;\n isOpen?: boolean;\n onDismiss?: () => void;\n};\n\ntype FormProps = {\n children: React.ReactNode;\n action: string;\n partyId: string;\n electionType: ElectionType;\n service: 'nemid' | 'mitid';\n};\n\nconst DeclarationForm = ({\n children,\n action,\n electionType,\n partyId,\n service,\n}: FormProps) => {\n const { pathname, searchParams } = useRouter();\n\n // Create the return SearchParams, including any existing params\n const params = new URLSearchParams(searchParams);\n params.set('election', electionTypeMap[electionType]);\n params.set('party', partyId);\n params.set('action', action);\n\n const actionUrl = generateRedirectUrl(\n `/api/v1/signing/${service}/${action}`,\n pathname + '?' + params.toString(),\n );\n\n return (\n {\n // We can't use the form action in storybook, so prevent it\n event.preventDefault();\n // eslint-disable-next-line no-console\n console.log('Submit', actionUrl);\n }\n : undefined\n }\n sx={{ textAlign: 'center' }}\n method=\"POST\"\n >\n \n \n {children}\n \n );\n};\n\nexport const ConfirmDeclaration = ({\n disabled,\n partyId,\n electionType,\n}: Props) => {\n const { t } = useDictionary();\n\n return (\n \n }\n variant={ButtonVariant.Primary}\n disabled={disabled}\n sx={{ mt: 7 }}\n type=\"submit\"\n >\n {t('myDeclaration.status_13_50')}\n \n \n );\n};\n\nexport const WithdrawDeclaration = ({ partyId, electionType }: Props) => {\n const { t } = useDictionary();\n\n return (\n \n \n {t('myDeclaration.status_13_51')}\n \n \n );\n};\n"],"sourceRoot":""}