diff --git a/back/Dockerfile b/back/Dockerfile index 0dc2014c221a..6809d9ad8c08 100644 --- a/back/Dockerfile +++ b/back/Dockerfile @@ -7,7 +7,7 @@ SHELL ["/bin/ash", "-o", "pipefail", "-c"] WORKDIR /app -COPY back/Gemfile back/Gemfile.* ./ +COPY back/Gemfile back/Gemfile.* back/.ruby-version ./ COPY back/engines ./engines # `version.rb` files are also kept as they are required by gemspec files. diff --git a/back/Dockerfile.development b/back/Dockerfile.development index e27915129a9f..acbb92943475 100644 --- a/back/Dockerfile.development +++ b/back/Dockerfile.development @@ -38,7 +38,7 @@ WORKDIR $INSTALL_PATH ENV PATH="$PATH:/cl2_back/bin" -COPY back/Gemfile back/Gemfile.* ./ +COPY back/Gemfile back/Gemfile.* back/.ruby-version ./ COPY back/engines ./engines COPY back/lib/citizen_lab.rb ./lib/ diff --git a/back/Gemfile b/back/Gemfile index 13461c6029e4..b5f26db90970 100644 --- a/back/Gemfile +++ b/back/Gemfile @@ -1,6 +1,7 @@ # frozen_string_literal: true source 'https://rubygems.org' +ruby file: '.ruby-version' git_source(:github) do |repo_name| repo_name = "#{repo_name}/#{repo_name}" unless repo_name.include?('/') @@ -12,7 +13,7 @@ gem 'rails', '~> 7.0' # Use postgresql as the database for Active Record gem 'pg' # , '~> 0.18' # Use Puma as the app server -gem 'puma', '~> 6.3.1' +gem 'puma', '~> 6.4.2' # Use Redis adapter to run Action Cable in production # gem 'redis', '~> 3.0' # Use ActiveModel has_secure_password @@ -31,7 +32,7 @@ group :development, :test do gem 'pry-byebug' gem 'pry-rails' gem 'pry-rescue' - gem 'database_cleaner', '~> 2.0.1' + gem 'database_cleaner', '~> 2.0.2' gem 'factory_bot_rails' gem 'license_finder' # Use module prepend to patch NET::HTTP to avoid stack level too deep errors. @@ -56,8 +57,8 @@ group :development, :test do gem 'saharspec' gem 'simplecov' gem 'simplecov-rcov' - gem 'test-prof', '~> 1.2' - gem 'vcr', '~> 6.1' + gem 'test-prof', '~> 1.3' + gem 'vcr', '~> 6.2' end group :development do diff --git a/back/Gemfile.lock b/back/Gemfile.lock index 7775a5e1f33d..c97a5c5e71cf 100644 --- a/back/Gemfile.lock +++ b/back/Gemfile.lock @@ -562,9 +562,9 @@ GEM css_parser (1.14.0) addressable dalli (3.2.4) - database_cleaner (2.0.1) - database_cleaner-active_record (~> 2.0.0) - database_cleaner-active_record (2.0.1) + database_cleaner (2.0.2) + database_cleaner-active_record (>= 2, < 3) + database_cleaner-active_record (2.1.0) activerecord (>= 5.a) database_cleaner-core (~> 2.0.0) database_cleaner-core (2.0.1) @@ -804,7 +804,7 @@ GEM rake mini_magick (4.12.0) mini_mime (1.1.5) - minitest (5.19.0) + minitest (5.20.0) mjml-rails (4.9.0) msgpack (1.6.0) multi_json (1.15.0) @@ -922,7 +922,7 @@ GEM interception (>= 0.5) pry (>= 0.12.0) public_suffix (4.0.7) - puma (6.3.1) + puma (6.4.2) nio4r (~> 2.0) pundit (2.3.0) activesupport (>= 3.0.0) @@ -1157,7 +1157,7 @@ GEM attr_required (>= 0.0.5) faraday (~> 2.0) faraday-follow_redirects - test-prof (1.2.1) + test-prof (1.3.1) thor (1.2.2) thread (0.2.2) thread_safe (0.3.6) @@ -1189,7 +1189,7 @@ GEM validate_url (1.0.15) activemodel (>= 3.0.0) public_suffix - vcr (6.1.0) + vcr (6.2.0) wasabi (3.8.0) addressable httpi (~> 3.0) @@ -1249,7 +1249,7 @@ DEPENDENCIES custom_idea_statuses! custom_maps! dalli (~> 3.2.4) - database_cleaner (~> 2.0.1) + database_cleaner (~> 2.0.2) document_annotation! email_campaigns! factory_bot_rails @@ -1321,7 +1321,7 @@ DEPENDENCIES pry-rails pry-rescue public_api! - puma (~> 6.3.1) + puma (~> 6.4.2) pundit (~> 2.3.0) que (~> 1.4.1) que-web (~> 0.10.0) @@ -1366,13 +1366,16 @@ DEPENDENCIES spring-watcher-listen (~> 2.1) stackprof (~> 0.2.25) surveys! - test-prof (~> 1.2) + test-prof (~> 1.3) texting! user_custom_fields! - vcr (~> 6.1) + vcr (~> 6.2) verification! volunteering! webmock (~> 3.18) +RUBY VERSION + ruby 2.7.6p219 + BUNDLED WITH 2.4.20 diff --git a/back/config/schemas/settings.schema.json.erb b/back/config/schemas/settings.schema.json.erb index 291b9e77f2a9..a884b9cc28f0 100644 --- a/back/config/schemas/settings.schema.json.erb +++ b/back/config/schemas/settings.schema.json.erb @@ -1332,11 +1332,11 @@ "user_session_recording": { "type": "object", "title": "User session recording", - "description": "Enables the recording of user sessions for analysis and product research purposes.", + "description": "Enables the recording of a small fraction of user sessions for analysis and product research purposes. Requires active consent from the customer.", "additionalProperties": false, "required": ["allowed", "enabled"], "properties": { - "allowed": { "type": "boolean", "default": false }, + "allowed": { "type": "boolean", "default": true }, "enabled": { "type": "boolean", "default": false } } } diff --git a/front/app/api/app_configuration/types.ts b/front/app/api/app_configuration/types.ts index 9d952bca5d84..f54d54a184b0 100644 --- a/front/app/api/app_configuration/types.ts +++ b/front/app/api/app_configuration/types.ts @@ -175,7 +175,6 @@ export interface IAppConfigurationSettings { initiativeflow_social_sharing?: AppConfigurationFeature; machine_translations?: AppConfigurationFeature; custom_maps?: AppConfigurationFeature; - similar_ideas?: AppConfigurationFeature; polls?: AppConfigurationFeature; moderation?: AppConfigurationFeature; flag_inappropriate_content?: AppConfigurationFeature; diff --git a/front/app/api/custom_pages/__mocks__/useCustomPages.ts b/front/app/api/custom_pages/__mocks__/useCustomPages.ts index 71f918b2d44e..c67e69a500b6 100644 --- a/front/app/api/custom_pages/__mocks__/useCustomPages.ts +++ b/front/app/api/custom_pages/__mocks__/useCustomPages.ts @@ -187,7 +187,7 @@ export const customPagesData: ICustomPageData[] = [ created_at: '2021-12-10T10:36:36.687Z', updated_at: '2021-12-10T10:36:36.687Z', top_info_section_multiloc: { - en: '

What\'s a citizen\'s proposal?

As a resident of $|orgName| you can place your proposal on the agenda via this platform. These proposals are preferably concrete ideas that are linked to local policy and arise from a need, desire or dream. It can be your own proposal or a collaborative one. Maybe you\'d like to change or improve an existing situation or start a new project.

The involvement of $|orgName| in the implementation of your proposal must be both necessary and possible. In an ideal scenario, you\'re also available for further reflection or cooperation, but that is not an obligation. "Reducing the speed limit on the highway to 80 km/h" is therefore not a strong proposal, while "Turning the main street into a pedestrian area" is. So bring on your proposals! If more information is needed, you\'ll receive an update or reaction.

Why post a proposal on this platform?

This is the official participation platform of $|orgName|, which offers the following benefits:

How do you get started?

First, check whether your proposal meets the following criteria:

$|initiativesEligibilityCriteria|

What can you expect when your proposal reaches $|initiativesReactingThreshold| reactions within $|initiativesDaysLimit| days?

$|initiativesThresholdReachedMessage|

What happens to the proposals that do not receive $|initiativesReactingThreshold| reactions on time?

That happens, but don\'t worry. Your proposal will remain on the platform. The status of your proposal will automatically change to \'Expired\'. As a result, reacting will no longer be possible. If you wish, you can choose to delete your own proposal at any time.

\n', + en: '

What\'s a citizen\'s proposal?

As a resident of $|orgName| you can place your proposal on the agenda via this platform. These proposals are preferably concrete ideas that are linked to local policy and arise from a need, desire or dream. It can be your own proposal or a collaborative one. Maybe you\'d like to change or improve an existing situation or start a new project.

The involvement of $|orgName| in the implementation of your proposal must be both necessary and possible. In an ideal scenario, you\'re also available for further reflection or cooperation, but that is not an obligation. "Reducing the speed limit on the highway to 80 km/h" is therefore not a strong proposal, while "Turning the main street into a pedestrian area" is. So bring on your proposals! If more information is needed, you\'ll receive an update or reaction.

Why post a proposal on this platform?

This is the official participation platform of $|orgName|, which offers the following benefits:

How do you get started?

First, check whether your proposal meets the following criteria:

$|initiativesEligibilityCriteria|

What can you expect when your proposal reaches $|initiativesVotingThreshold| reactions within $|initiativesDaysLimit| days?

$|initiativesThresholdReachedMessage|

What happens to the proposals that do not receive $|initiativesVotingThreshold| reactions on time?

That happens, but don\'t worry. Your proposal will remain on the platform. The status of your proposal will automatically change to \'Expired\'. As a result, reacting will no longer be possible. If you wish, you can choose to delete your own proposal at any time.

\n', }, nav_bar_item_title_multiloc: { en: 'Proposals', diff --git a/front/app/components/ResolveTextVariables/index.tsx b/front/app/components/ResolveTextVariables/index.tsx index 2efd92a91de5..af7fe072f240 100644 --- a/front/app/components/ResolveTextVariables/index.tsx +++ b/front/app/components/ResolveTextVariables/index.tsx @@ -45,7 +45,7 @@ class ResolveTextVariables extends PureComponent { ); } - textVariables.initiativesReactingThreshold = + textVariables.initiativesVotingThreshold = initiativeSettings.reacting_threshold.toString(); textVariables.initiativesDaysLimit = initiativeSettings.days_limit.toString(); diff --git a/front/app/components/admin/ContentBuilder/EditModePreview/ViewButtons/DesktopButton.tsx b/front/app/components/admin/ContentBuilder/EditModePreview/ViewButtons/DesktopButton.tsx new file mode 100644 index 000000000000..31c65ca8d58b --- /dev/null +++ b/front/app/components/admin/ContentBuilder/EditModePreview/ViewButtons/DesktopButton.tsx @@ -0,0 +1,29 @@ +import React from 'react'; + +// components +import ViewButton from './ViewButton'; +import { Icon, colors } from '@citizenlab/cl2-component-library'; + +interface Props { + active: boolean; + onClick: () => void; +} + +const DesktopButton = ({ active, onClick }: Props) => { + return ( + + + + ); +}; + +export default DesktopButton; diff --git a/front/app/components/admin/ContentBuilder/EditModePreview/ViewButtons/MobileButton.tsx b/front/app/components/admin/ContentBuilder/EditModePreview/ViewButtons/MobileButton.tsx new file mode 100644 index 000000000000..23d9f0f23089 --- /dev/null +++ b/front/app/components/admin/ContentBuilder/EditModePreview/ViewButtons/MobileButton.tsx @@ -0,0 +1,30 @@ +import React from 'react'; + +// components +import ViewButton from './ViewButton'; +import { Icon, colors } from '@citizenlab/cl2-component-library'; + +interface Props { + active: boolean; + onClick: () => void; +} + +const MobileButton = ({ active, onClick }: Props) => { + return ( + + + + ); +}; + +export default MobileButton; diff --git a/front/app/components/admin/ContentBuilder/EditModePreview/ViewButtons/ViewButton.tsx b/front/app/components/admin/ContentBuilder/EditModePreview/ViewButtons/ViewButton.tsx new file mode 100644 index 000000000000..43366cfcd71f --- /dev/null +++ b/front/app/components/admin/ContentBuilder/EditModePreview/ViewButtons/ViewButton.tsx @@ -0,0 +1,33 @@ +import React from 'react'; + +// components +import { Button, colors } from '@citizenlab/cl2-component-library'; + +interface Props { + children: React.ReactNode; + id?: string; + borderRadius: string; + active: boolean; + onClick: () => void; +} + +const ViewButton = ({ children, id, borderRadius, active, onClick }: Props) => { + return ( + + ); +}; + +export default ViewButton; diff --git a/front/app/components/admin/ContentBuilder/EditModePreview/index.tsx b/front/app/components/admin/ContentBuilder/EditModePreview/index.tsx index fd27d02bd163..ec3fa9aa2642 100644 --- a/front/app/components/admin/ContentBuilder/EditModePreview/index.tsx +++ b/front/app/components/admin/ContentBuilder/EditModePreview/index.tsx @@ -1,15 +1,9 @@ import React, { memo, useState } from 'react'; // components -import { - Box, - Icon, - Button, - stylingConsts, - colors, -} from '@citizenlab/cl2-component-library'; - -// styles +import { Box, stylingConsts } from '@citizenlab/cl2-component-library'; +import MobileButton from './ViewButtons/MobileButton'; +import DesktopButton from './ViewButtons/DesktopButton'; type Props = { iframeSrc: string; @@ -20,12 +14,7 @@ const ContentBuilderEditModePreview = React.forwardRef< Props >(({ iframeSrc }, ref) => { const [isMobile, setIsMobile] = useState(true); - const colorIfDesktopView = isMobile ? colors.white : colors.primary; - const colorIfMobileView = isMobile ? colors.primary : colors.white; - const buttonProps = { - height: '40px', - width: '92px', - }; + return ( - - + /> {/* Platform Container */} { ); }; -const ImageSettings = injectIntl(({ intl: { formatMessage } }) => { +export const ImageSettings = injectIntl(({ intl: { formatMessage } }) => { const [imageFiles, setImageFiles] = useState([]); const { mutateAsync: addContentBuilderImage } = useAddContentBuilderImage(); const { diff --git a/front/app/containers/Admin/messaging/CustomEmails/CampaignForm/index.tsx b/front/app/containers/Admin/messaging/CustomEmails/CampaignForm/index.tsx index 6131461d48c6..84ad56ace82c 100644 --- a/front/app/containers/Admin/messaging/CustomEmails/CampaignForm/index.tsx +++ b/front/app/containers/Admin/messaging/CustomEmails/CampaignForm/index.tsx @@ -3,12 +3,10 @@ import { Multiloc } from 'typings'; import styled from 'styled-components'; // i18n -import { WrappedComponentProps } from 'react-intl'; -import { FormattedMessage, injectIntl } from 'utils/cl-intl'; +import { FormattedMessage, useIntl } from 'utils/cl-intl'; import messages from '../../messages'; // utils -import { isNilOrError } from 'utils/helperUtils'; import { handleHookFormSubmissionError } from 'utils/errorUtils'; // components @@ -74,15 +72,15 @@ type CampaignFormProps = { onSubmit: (formValues: FormValues) => void | Promise; defaultValues?: Partial; isLoading: boolean; -} & WrappedComponentProps; +}; const CampaignForm = ({ onSubmit, defaultValues, - intl: { formatMessage }, isLoading, }: CampaignFormProps) => { - const { data: user } = useAuthUser(); + const { formatMessage } = useIntl(); + const { data: authUser } = useAuthUser(); const { data: groups } = useGroups({}); const { data: appConfig } = useAppConfiguration(); const localize = useLocalize(); @@ -109,7 +107,7 @@ const CampaignForm = ({ resolver: yupResolver(schema), }); - if (isNilOrError(user) || isNilOrError(appConfig)) { + if (!authUser || !appConfig) { return null; } @@ -125,27 +123,22 @@ const CampaignForm = ({ return [ { value: 'author', - label: !isNilOrError(user) ? getFullName(user.data) : '', + label: getFullName(authUser.data), }, { value: 'organization', - label: !isNilOrError(appConfig) - ? localize(appConfig.data.attributes.settings.core.organization_name) - : '', + label: localize( + appConfig.data.attributes.settings.core.organization_name + ), }, ]; }; const groupsOptions = (groups: IGroupData[]) => { - const groupList = - !isNilOrError(groups) && !isNilOrError(groups) - ? groups.map((group) => ({ - label: localize(group.attributes.title_multiloc), - value: group.id, - })) - : []; - - return groupList; + return groups.map((group) => ({ + label: localize(group.attributes.title_multiloc), + value: group.id, + })); }; return ( @@ -222,7 +215,10 @@ const CampaignForm = ({ @@ -242,4 +238,4 @@ const CampaignForm = ({ ); }; -export default injectIntl(CampaignForm); +export default CampaignForm; diff --git a/front/app/containers/Admin/messaging/messages.ts b/front/app/containers/Admin/messaging/messages.ts index 880505e31812..44ec6d05402f 100644 --- a/front/app/containers/Admin/messaging/messages.ts +++ b/front/app/containers/Admin/messaging/messages.ts @@ -316,9 +316,9 @@ export default defineMessages({ defaultMessage: 'To:', }, nameVariablesInfo: { - id: 'app.containers.Admin.emails.nameVariablesInfo', + id: 'app.containers.Admin.emails.nameVariablesInfo2', defaultMessage: - 'You can speak directly to citizens using the variables \\{\\{first_name\\}\\} \\{\\{last_name\\}\\}. E.g. "Dear \\{\\{first_name\\}\\} \\{\\{last_name\\}\\}, ..."', + 'You can speak directly to citizens using the variables {firstName} {lastName}. E.g. "Dear {firstName} {lastName}, ..."', }, changeRecipientsButton: { id: 'app.containers.Admin.emails.changeRecipientsButton', diff --git a/front/app/containers/Admin/pagesAndMenu/containers/ContentBuilder/components/CraftComponents/HomepageBanner/OverlayControls.tsx b/front/app/containers/Admin/pagesAndMenu/containers/ContentBuilder/components/CraftComponents/HomepageBanner/OverlayControls.tsx index dd68f77e677a..fd8369fa4599 100644 --- a/front/app/containers/Admin/pagesAndMenu/containers/ContentBuilder/components/CraftComponents/HomepageBanner/OverlayControls.tsx +++ b/front/app/containers/Admin/pagesAndMenu/containers/ContentBuilder/components/CraftComponents/HomepageBanner/OverlayControls.tsx @@ -45,7 +45,6 @@ interface Props { bannerOverlayOpacity: number | null; bannerOverlayColor: string; onOverlayChange: (opacity: number | null, color: string | null) => void; - noOpacitySlider?: boolean; } const defaultOpacity = 90; @@ -55,7 +54,6 @@ const OverlayControls = ({ bannerOverlayOpacity, bannerOverlayColor, onOverlayChange, - noOpacitySlider, }: Props) => { const [overlayEnabled, setOverlayEnabled] = useState( typeof bannerOverlayOpacity === 'number' && bannerOverlayOpacity !== 0 @@ -129,20 +127,16 @@ const OverlayControls = ({ onChange={handleOverlayColorOnChange} /> - {!noOpacitySlider && ( - <> - - - - )} + + )} diff --git a/front/app/containers/Admin/pagesAndMenu/containers/ContentBuilder/components/CraftComponents/HomepageBanner/index.tsx b/front/app/containers/Admin/pagesAndMenu/containers/ContentBuilder/components/CraftComponents/HomepageBanner/index.tsx index 50f473c159c2..73569b405ec5 100644 --- a/front/app/containers/Admin/pagesAndMenu/containers/ContentBuilder/components/CraftComponents/HomepageBanner/index.tsx +++ b/front/app/containers/Admin/pagesAndMenu/containers/ContentBuilder/components/CraftComponents/HomepageBanner/index.tsx @@ -560,9 +560,6 @@ const HomepageBannerSettings = () => { {formatMessage(messages.signedInDescription)} void; +} + +const PDFButton = ({ active, onClick }: Props) => { + return ( + + + + ); +}; + +export default PDFButton; diff --git a/front/app/containers/Admin/reporting/components/ReportBuilder/EditModePreview/PDFWrapper.tsx b/front/app/containers/Admin/reporting/components/ReportBuilder/EditModePreview/PDFWrapper.tsx new file mode 100644 index 000000000000..cfa2cae41abd --- /dev/null +++ b/front/app/containers/Admin/reporting/components/ReportBuilder/EditModePreview/PDFWrapper.tsx @@ -0,0 +1,19 @@ +import React from 'react'; + +// components +import { Box } from '@citizenlab/cl2-component-library'; + +// constants +import { A4_WIDTH } from 'containers/Admin/reporting/constants'; + +const PDFWrapper = ({ children }) => { + return ( + + + {children} + + + ); +}; + +export default PDFWrapper; diff --git a/front/app/containers/Admin/reporting/components/ReportBuilder/EditModePreview/index.tsx b/front/app/containers/Admin/reporting/components/ReportBuilder/EditModePreview/index.tsx new file mode 100644 index 000000000000..e2c67f5ffa26 --- /dev/null +++ b/front/app/containers/Admin/reporting/components/ReportBuilder/EditModePreview/index.tsx @@ -0,0 +1,115 @@ +import React, { useState } from 'react'; + +// components +import { Box, stylingConsts } from '@citizenlab/cl2-component-library'; +import MobileButton from 'components/admin/ContentBuilder/EditModePreview/ViewButtons/MobileButton'; +import PDFButton from './PDFButton'; +import DesktopButton from 'components/admin/ContentBuilder/EditModePreview/ViewButtons/DesktopButton'; +import Editor from '../Editor'; +import Frame from 'components/admin/ContentBuilder/Frame'; +import PDFWrapper from './PDFWrapper'; + +// hooks +import useLocale from 'hooks/useLocale'; + +// context +import { ReportContextProvider } from 'containers/Admin/reporting/context/ReportContext'; +import LanguageProvider from 'components/admin/ContentBuilder/LanguageProvider'; + +// constants +import { + A4_WIDTH, + MAX_REPORT_WIDTH, +} from 'containers/Admin/reporting/constants'; + +// typings +import { Locale } from 'typings'; +import { CraftJson } from 'components/admin/ContentBuilder/typings'; + +interface Props { + reportId: string; + previewData?: CraftJson; + selectedLocale: Locale; +} + +type View = 'phone' | 'pdf' | 'desktop'; + +const EditModePreview = ({ reportId, previewData, selectedLocale }: Props) => { + const [view, setView] = useState('phone'); + const platformLocale = useLocale(); + + return ( + + + + { + setView('phone'); + }} + /> + { + setView('pdf'); + }} + /> + { + setView('desktop'); + }} + /> + + + + {view === 'pdf' ? ( + + + + + + + + ) : ( + + + + + + + + )} + + + + + ); +}; + +export default EditModePreview; diff --git a/front/app/containers/Admin/reporting/components/ReportBuilder/Editor/index.tsx b/front/app/containers/Admin/reporting/components/ReportBuilder/Editor/index.tsx index e32c5ef43e1d..2aeb683dca4b 100644 --- a/front/app/containers/Admin/reporting/components/ReportBuilder/Editor/index.tsx +++ b/front/app/containers/Admin/reporting/components/ReportBuilder/Editor/index.tsx @@ -9,12 +9,12 @@ import RenderNode from './RenderNode'; // shared widgets import Container from 'components/admin/ContentBuilder/Widgets/Container'; -import ImageMultiloc from 'components/admin/ContentBuilder/Widgets/ImageMultiloc'; import WhiteSpace from 'components/admin/ContentBuilder/Widgets/WhiteSpace'; // report builder widgets import TitleMultiloc from '../Widgets/TitleMultiloc'; import TextMultiloc from '../Widgets/TextMultiloc'; +import ImageMultiloc from '../Widgets/ImageMultiloc'; import TwoColumn from '../Widgets/TwoColumn'; import AboutReportWidget from '../Widgets/AboutReportWidget'; import SurveyResultsWidget from '../Widgets/SurveyResultsWidget'; diff --git a/front/app/containers/Admin/reporting/components/ReportBuilder/Toolbox/index.tsx b/front/app/containers/Admin/reporting/components/ReportBuilder/Toolbox/index.tsx index 70be6015c889..b0ba7063a9bc 100644 --- a/front/app/containers/Admin/reporting/components/ReportBuilder/Toolbox/index.tsx +++ b/front/app/containers/Admin/reporting/components/ReportBuilder/Toolbox/index.tsx @@ -7,12 +7,12 @@ import { Box, Title, Accordion } from '@citizenlab/cl2-component-library'; // shared widgets import WhiteSpace from 'components/admin/ContentBuilder/Widgets/WhiteSpace'; -import ImageMultiloc from 'components/admin/ContentBuilder/Widgets/ImageMultiloc'; // widgets import TextMultiloc from '../Widgets/TextMultiloc'; import TwoColumn from '../Widgets/TwoColumn'; import TitleMultiloc from '../Widgets/TitleMultiloc'; +import ImageMultiloc from '../Widgets/ImageMultiloc'; import AboutReportWidget from '../Widgets/AboutReportWidget'; import SurveyResultsWidget from '../Widgets/SurveyResultsWidget'; import VisitorsWidget from '../Widgets/ChartWidgets/VisitorsWidget'; diff --git a/front/app/containers/Admin/reporting/components/ReportBuilder/Widgets/ImageMultiloc/index.tsx b/front/app/containers/Admin/reporting/components/ReportBuilder/Widgets/ImageMultiloc/index.tsx new file mode 100644 index 000000000000..ce36c2d034a6 --- /dev/null +++ b/front/app/containers/Admin/reporting/components/ReportBuilder/Widgets/ImageMultiloc/index.tsx @@ -0,0 +1,96 @@ +import React, { useCallback } from 'react'; + +// components +import { + Image as ImageComponent, + colors, + Icon, +} from '@citizenlab/cl2-component-library'; +import { ImageSettings } from 'components/admin/ContentBuilder/Widgets/ImageMultiloc'; +import PageBreakBox from 'components/admin/ContentBuilder/Widgets/PageBreakBox'; + +// image upload +import { Multiloc } from 'typings'; + +// craft +import { useEditor } from '@craftjs/core'; +import useReportDefaultPadding from 'containers/Admin/reporting/hooks/useReportDefaultPadding'; + +// i18n +import messages from 'components/admin/ContentBuilder/Widgets/ImageMultiloc/messages'; + +// events +import eventEmitter from 'utils/eventEmitter'; +import { IMAGE_LOADED_EVENT } from 'components/admin/ContentBuilder/constants'; + +// hooks +import useLocalize from 'hooks/useLocalize'; + +interface Props { + image?: { + dataCode?: string; + imageUrl?: string; + }; + alt?: Multiloc; +} + +const Image = ({ alt = {}, image }: Props) => { + const componentDefaultPadding = useReportDefaultPadding(); + + const localize = useLocalize(); + const { enabled } = useEditor((state) => { + return { + enabled: state.options.enabled, + }; + }); + + const emitImageLoaded = useCallback(() => { + if (!image?.imageUrl) return; + eventEmitter.emit(IMAGE_LOADED_EVENT, image?.imageUrl); + }, [image?.imageUrl]); + + return ( + + {image?.imageUrl && ( + + )} + {/* In edit view, show an image placeholder if image is not set. */} + {!image?.imageUrl && enabled && ( + + )} + + ); +}; + +Image.craft = { + related: { + settings: ImageSettings, + }, + custom: { + title: messages.imageMultiloc, + }, +}; + +export default Image; diff --git a/front/app/containers/Admin/reporting/components/ReportBuilder/Widgets/MostReactedIdeasWidget/Ideas/IdeaCard.tsx b/front/app/containers/Admin/reporting/components/ReportBuilder/Widgets/MostReactedIdeasWidget/Ideas/IdeaCard.tsx index c69e02f2256a..6517e96ea33e 100644 --- a/front/app/containers/Admin/reporting/components/ReportBuilder/Widgets/MostReactedIdeasWidget/Ideas/IdeaCard.tsx +++ b/front/app/containers/Admin/reporting/components/ReportBuilder/Widgets/MostReactedIdeasWidget/Ideas/IdeaCard.tsx @@ -4,11 +4,10 @@ import React, { useState, useRef, useEffect } from 'react'; import useIdeaImages from 'api/idea_images/useIdeaImages'; // styling -import styled from 'styled-components'; +import styled, { useTheme } from 'styled-components'; import { colors, stylingConsts, - fontSizes, Box, Text, Title, @@ -21,6 +20,7 @@ import { BORDER } from '../../constants'; import Link from 'utils/cl-router/Link'; import PageBreakBox from 'components/admin/ContentBuilder/Widgets/PageBreakBox'; import GradientSrc from './gradient.svg'; +import QuillEditedContent from 'components/UI/QuillEditedContent'; // i18n import messages from '../messages'; @@ -42,8 +42,6 @@ interface Props { } const IdeaText = styled.div` - font-size: ${fontSizes.m}px; - color: ${colors.primary}; line-height: ${MEDIUM_LINE_HEIGHT}px; `; @@ -61,6 +59,8 @@ const IdeaCard = ({ const textContainerRef = useRef(null); const [textOverflow, setTextOverflow] = useState(false); const { data: images } = useIdeaImages(id); + const theme = useTheme(); + const image = images?.data[0]?.attributes?.versions?.medium; useEffect(() => { @@ -129,10 +129,17 @@ const IdeaCard = ({ > - + + + + + {hideTextOverflow && ( diff --git a/front/app/containers/Admin/reporting/components/ReportBuilder/Widgets/TitleMultiloc/index.tsx b/front/app/containers/Admin/reporting/components/ReportBuilder/Widgets/TitleMultiloc/index.tsx index 7dc778f0a6ff..2be502f0a4bc 100644 --- a/front/app/containers/Admin/reporting/components/ReportBuilder/Widgets/TitleMultiloc/index.tsx +++ b/front/app/containers/Admin/reporting/components/ReportBuilder/Widgets/TitleMultiloc/index.tsx @@ -25,6 +25,7 @@ import { Multiloc } from 'typings'; const H3 = styled.h3<{ color: string }>` color: ${({ color }) => color}; font-size: 20px; + margin-top: 0px; `; interface Props { @@ -36,13 +37,7 @@ const Title = ({ text }: Props) => { const localize = useLocalize(); return ( - +

{localize(text)}

); diff --git a/front/app/containers/Admin/reporting/components/ReportBuilder/Widgets/_shared/Card.tsx b/front/app/containers/Admin/reporting/components/ReportBuilder/Widgets/_shared/Card.tsx index 2e79a173e0fb..45122a1fb562 100644 --- a/front/app/containers/Admin/reporting/components/ReportBuilder/Widgets/_shared/Card.tsx +++ b/front/app/containers/Admin/reporting/components/ReportBuilder/Widgets/_shared/Card.tsx @@ -41,7 +41,7 @@ const Card = ({ title, children, ...rest }: Props) => { return ( {title && ( - + <Title variant="h3" color="primary" mb="8px" mt="0"> {localize(title)} )} diff --git a/front/app/containers/Admin/reporting/constants.ts b/front/app/containers/Admin/reporting/constants.ts index 37d62de8595b..bdaa6b0ee097 100644 --- a/front/app/containers/Admin/reporting/constants.ts +++ b/front/app/containers/Admin/reporting/constants.ts @@ -1 +1,3 @@ export const A4_WIDTH = '21cm'; + +export const MAX_REPORT_WIDTH = '850px'; diff --git a/front/app/containers/Admin/reporting/containers/FullScreenReport/index.tsx b/front/app/containers/Admin/reporting/containers/FullScreenReport/index.tsx index fc3b4466ba95..f9fc0099f3e2 100644 --- a/front/app/containers/Admin/reporting/containers/FullScreenReport/index.tsx +++ b/front/app/containers/Admin/reporting/containers/FullScreenReport/index.tsx @@ -10,10 +10,13 @@ import useFeatureFlag from 'hooks/useFeatureFlag'; // components import FullScreenWrapper from 'components/admin/ContentBuilder/FullscreenPreview/Wrapper'; -import { Box, Spinner } from '@citizenlab/cl2-component-library'; +import { Box, Spinner, useBreakpoint } from '@citizenlab/cl2-component-library'; import Editor from '../../components/ReportBuilder/Editor'; import ContentBuilderFrame from 'components/admin/ContentBuilder/Frame'; +// utils +import { getReportWidth } from '../../utils/getReportWidth'; + export interface Props { reportId: string; } @@ -21,9 +24,14 @@ export interface Props { export const FullScreenReport = ({ reportId }: Props) => { const { data: reportLayout } = useReportLayout(reportId); const isLoadingLayout = reportLayout === undefined; + const smallerThanPhone = useBreakpoint('phone'); + const smallerThanTablet = useBreakpoint('tablet'); return ( - + {isLoadingLayout && } {!isLoadingLayout && ( diff --git a/front/app/containers/Admin/reporting/containers/PrintReport/Report.tsx b/front/app/containers/Admin/reporting/containers/PrintReport/Report.tsx index 407e693b0773..b32a16a5c905 100644 --- a/front/app/containers/Admin/reporting/containers/PrintReport/Report.tsx +++ b/front/app/containers/Admin/reporting/containers/PrintReport/Report.tsx @@ -22,12 +22,11 @@ const Centerer = styled.div` align-items: center; @media print { - margin-top: -20px; + margin-top: 0px; display: block; position: absolute; @page { size: auto; - margin: 30px 0; } } `; diff --git a/front/app/containers/Admin/reporting/containers/ReportBuilder/index.tsx b/front/app/containers/Admin/reporting/containers/ReportBuilder/index.tsx index 9d32c2bbe002..18acf925c780 100644 --- a/front/app/containers/Admin/reporting/containers/ReportBuilder/index.tsx +++ b/front/app/containers/Admin/reporting/containers/ReportBuilder/index.tsx @@ -20,14 +20,13 @@ import TopBar from '../../components/ReportBuilder/TopBar'; import Toolbox from '../../components/ReportBuilder/Toolbox'; import { StyledRightColumn } from 'components/admin/ContentBuilder/Frame/FrameWrapper'; import Frame from 'components/admin/ContentBuilder/Frame'; +import EditModePreview from '../../components/ReportBuilder/EditModePreview'; import Settings from 'components/admin/ContentBuilder/Settings'; +import PDFWrapper from '../../components/ReportBuilder/EditModePreview/PDFWrapper'; // templates import ProjectTemplate from '../../components/ReportBuilder/Templates/ProjectTemplate'; -// constants -import { A4_WIDTH } from '../../constants'; - // typings import { CraftJson, @@ -120,65 +119,33 @@ const ReportBuilder = ({ reportId, reportLayout }: Props) => { display={previewEnabled ? 'none' : 'flex'} > - - - - - - {templateProjectId && ( - - )} - - - - - + + + + + {templateProjectId && ( + + )} + + + + - {previewEnabled && ( - - - - - - - - - - - - - - )} + + + ); diff --git a/front/app/containers/Admin/reporting/context/ReportContext.tsx b/front/app/containers/Admin/reporting/context/ReportContext.tsx index 5432dca5ef98..e6360ddd8c8b 100644 --- a/front/app/containers/Admin/reporting/context/ReportContext.tsx +++ b/front/app/containers/Admin/reporting/context/ReportContext.tsx @@ -2,8 +2,10 @@ import React, { createContext, useContext } from 'react'; import useReport from 'api/reports/useReport'; import usePhase from 'api/phases/usePhase'; +type ReportWidth = 'phone' | 'tablet' | 'desktop' | 'pdf'; + interface ReportContextBase { - width: 'pdf' | 'responsive'; + width: ReportWidth; reportId: string; } diff --git a/front/app/containers/Admin/reporting/hooks/useLayout.ts b/front/app/containers/Admin/reporting/hooks/useLayout.ts index df4b7103df2a..52cf555c20cc 100644 --- a/front/app/containers/Admin/reporting/hooks/useLayout.ts +++ b/front/app/containers/Admin/reporting/hooks/useLayout.ts @@ -1,17 +1,16 @@ import { useReportContext } from '../context/ReportContext'; import { useNode, useEditor } from '@craftjs/core'; -import { useBreakpoint } from '@citizenlab/cl2-component-library'; import { Layout } from 'components/admin/GraphCards/typings'; export default function useLayout(): Layout { const narrowLayout = useNarrowLayout(); const reportContext = useReportContext(); - const smallerThanPhone = useBreakpoint('phone'); if (narrowLayout) return 'narrow'; - if (reportContext.width === 'pdf') return 'wide'; + const { width } = reportContext; + if (width === 'pdf') return 'wide'; - return smallerThanPhone ? 'narrow' : 'wide'; + return width === 'phone' ? 'narrow' : 'wide'; } function useNarrowLayout() { diff --git a/front/app/containers/Admin/reporting/hooks/useReportDefaultPadding.ts b/front/app/containers/Admin/reporting/hooks/useReportDefaultPadding.ts index 91b71c145a22..e621d59a4731 100644 --- a/front/app/containers/Admin/reporting/hooks/useReportDefaultPadding.ts +++ b/front/app/containers/Admin/reporting/hooks/useReportDefaultPadding.ts @@ -1,5 +1,4 @@ import { useReportContext } from '../context/ReportContext'; -import { useBreakpoint } from '@citizenlab/cl2-component-library'; import { ROOT_NODE, useNode, useEditor } from '@craftjs/core'; import { DEFAULT_PADDING } from 'components/admin/ContentBuilder/constants'; @@ -8,7 +7,6 @@ import { DEFAULT_PADDING } from 'components/admin/ContentBuilder/constants'; // This one also needs to handle pdf reports and report templates // so it's a bit more complex. Maybe eventually we can combine them. const useReportDefaultPadding = () => { - const isSmallerThanTablet = useBreakpoint('tablet'); const { query: { node }, } = useEditor(); @@ -32,9 +30,10 @@ const useReportDefaultPadding = () => { ? node(greatGrandParentId).isRoot() : false; + const isSmall = width === 'phone' || width === 'tablet'; const inRoot = parentIsRoot || grandParentIsTemplateAndGreatGrandparentIsRoot; - return isSmallerThanTablet && inRoot ? DEFAULT_PADDING : '0px'; + return isSmall && inRoot ? DEFAULT_PADDING : '0px'; }; export default useReportDefaultPadding; diff --git a/front/app/containers/Admin/reporting/utils/getReportWidth.ts b/front/app/containers/Admin/reporting/utils/getReportWidth.ts new file mode 100644 index 000000000000..a78517cccfac --- /dev/null +++ b/front/app/containers/Admin/reporting/utils/getReportWidth.ts @@ -0,0 +1,13 @@ +interface Params { + smallerThanPhone: boolean; + smallerThanTablet: boolean; +} + +export const getReportWidth = ({ + smallerThanPhone, + smallerThanTablet, +}: Params) => { + if (smallerThanPhone) return 'phone'; + if (smallerThanTablet) return 'tablet'; + return 'desktop'; +}; diff --git a/front/app/containers/HomePage/SignedInHeader/HeaderImage.tsx b/front/app/containers/HomePage/SignedInHeader/HeaderImage.tsx index 77435b1b7b90..dc11b572790d 100644 --- a/front/app/containers/HomePage/SignedInHeader/HeaderImage.tsx +++ b/front/app/containers/HomePage/SignedInHeader/HeaderImage.tsx @@ -2,7 +2,6 @@ import React from 'react'; import styled, { useTheme } from 'styled-components'; import { Image, Box, media, isRtl } from '@citizenlab/cl2-component-library'; import { IHomepageBannerSettings } from 'containers/Admin/pagesAndMenu/containers/ContentBuilder/components/CraftComponents/HomepageBanner'; -import { isNumber } from 'lodash-es'; const HeaderImageContainer = styled.div` position: absolute; @@ -48,17 +47,10 @@ const HeaderImage = ({ const tenantHeaderImage = homepageSettings.header_bg ? homepageSettings.header_bg.large : null; - const isFixedBannerLayout = - homepageSettings.banner_layout === 'fixed_ratio_layout'; return ( - {/* - With the fixed ratio layout, the image would be pixeled so we - don't show it for that layout. - Ticket: https://citizenlab.atlassian.net/browse/CL-2215 - */} - {tenantHeaderImage && !isFixedBannerLayout && ( + {tenantHeaderImage && ( { +interface Props { + project: IProject; +} + +const IdeasNewPageWithJSONForm = ({ project }: Props) => { const locale = useLocale(); const [isDisclaimerOpened, setIsDisclaimerOpened] = useState(false); const [formData, setFormData] = useState(null); const { mutateAsync: addIdea } = useAddIdea(); const { formatMessage } = useIntl(); - const params = useParams<{ slug: string }>(); const { data: authUser } = useAuthUser(); - const { data: project } = useProjectBySlug(params.slug); const [queryParams] = useSearchParams(); const phaseId = queryParams.get('phase_id'); - - const { data: phases } = usePhases(project?.data.id); + const { data: phases } = usePhases(project.data.id); const { schema, uiSchema, inputSchemaError } = useInputSchema({ - projectId: project?.data.id, + projectId: project.data.id, phaseId, }); @@ -159,10 +160,6 @@ const IdeasNewPageWithJSONForm = () => { }; const onSubmit = async (data: FormValues) => { - if (!project) { - return; - } - let location_point_geojson; if (data.location_description && !data.location_point_geojson) { @@ -233,7 +230,7 @@ const IdeasNewPageWithJSONForm = () => { setPostAnonymously((postAnonymously) => !postAnonymously); }; - if (isNilOrError(project) || !config) { + if (!config) { return null; } @@ -246,7 +243,7 @@ const IdeasNewPageWithJSONForm = () => { return ( - {project && !processingLocation && schema && uiSchema && config ? ( + {!processingLocation && schema && uiSchema && config ? ( <>
{ } /> - ) : isError(project) || inputSchemaError ? null : ( + ) : inputSchemaError ? null : ( )} {showAnonymousConfirmationModal && ( diff --git a/front/app/containers/IdeasNewPage/index.tsx b/front/app/containers/IdeasNewPage/index.tsx index 3987ddca85d1..8613a6a69b60 100644 --- a/front/app/containers/IdeasNewPage/index.tsx +++ b/front/app/containers/IdeasNewPage/index.tsx @@ -58,7 +58,7 @@ const NewIdeaPage = () => { } const participationMethod = getParticipationMethod( - project?.data, + project.data, phases?.data, phase_id ); @@ -67,12 +67,12 @@ const NewIdeaPage = () => { const { enabled, disabledReason, authenticationRequirements } = getIdeaPostingRules({ - project: project?.data, + project: project.data, phase: getCurrentPhase(phases?.data), authUser: authUser?.data, }); - if (project && isSurvey && disabledReason === 'postingLimitedMaxReached') { + if (isSurvey && disabledReason === 'postingLimitedMaxReached') { return ; } @@ -112,13 +112,13 @@ const NewIdeaPage = () => { h="100vh" overflowY="scroll" > - + , portalElement ); } - return ; + return ; }; export default NewIdeaPage; diff --git a/front/app/containers/IdeasShow/components/MetaInformation/index.tsx b/front/app/containers/IdeasShow/components/MetaInformation/index.tsx index 15ae769e86fb..886abbda42f5 100644 --- a/front/app/containers/IdeasShow/components/MetaInformation/index.tsx +++ b/front/app/containers/IdeasShow/components/MetaInformation/index.tsx @@ -12,7 +12,6 @@ import PostedBy from './PostedBy'; // hooks & services import useLocale from 'hooks/useLocale'; import useIdeaJsonFormSchema from 'api/idea_json_form_schema/useIdeaJsonFormSchema'; -import Outlet from 'components/Outlet'; import usePhases from 'api/phases/usePhases'; import useIdeaById from 'api/ideas/useIdeaById'; @@ -98,11 +97,6 @@ const MetaInformation = ({ {attachmentsEnabled && ( )} - ); } diff --git a/front/app/containers/ProjectsShowPage/timeline/PhaseReport/index.tsx b/front/app/containers/ProjectsShowPage/timeline/PhaseReport/index.tsx index 67efc2b86b60..01b41180a541 100644 --- a/front/app/containers/ProjectsShowPage/timeline/PhaseReport/index.tsx +++ b/front/app/containers/ProjectsShowPage/timeline/PhaseReport/index.tsx @@ -15,8 +15,12 @@ import ContentBuilderFrame from 'components/admin/ContentBuilder/Frame'; // context import { ReportContextProvider } from 'containers/Admin/reporting/context/ReportContext'; -// styling +// constants import { maxPageWidth } from 'containers/ProjectsShowPage/styles'; +import { MAX_REPORT_WIDTH } from 'containers/Admin/reporting/constants'; + +// utils +import { getReportWidth } from 'containers/Admin/reporting/utils/getReportWidth'; interface Props { reportId: string; @@ -24,8 +28,8 @@ interface Props { const PhaseReport = ({ reportId }: Props) => { const { data: reportLayout } = useReportLayout(reportId); - const smallerThanTablet = useBreakpoint('tablet'); const smallerThanPhone = useBreakpoint('phone'); + const smallerThanTablet = useBreakpoint('tablet'); if (!reportLayout) return null; @@ -47,11 +51,21 @@ const PhaseReport = ({ reportId }: Props) => { boxShadow="0px 2px 4px -1px rgba(0,0,0,0.06)" p={smallerThanTablet ? '0px' : '30px'} > - - - - {editorData && } - + + + + + {editorData && } + + diff --git a/front/app/modules/commercial/similar_ideas/api/similar_ideas/keys.ts b/front/app/modules/commercial/similar_ideas/api/similar_ideas/keys.ts deleted file mode 100644 index d302b6622a81..000000000000 --- a/front/app/modules/commercial/similar_ideas/api/similar_ideas/keys.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { QueryKeys } from 'utils/cl-react-query/types'; -import { IQueryParameters } from './types'; - -const baseKey = { - type: 'similar_idea', -}; - -const similarIdeasKeys = { - all: () => [baseKey], - lists: () => [{ ...baseKey, operation: 'list' }], - list: (parameters: IQueryParameters) => [ - { ...baseKey, operation: 'list', parameters }, - ], -} satisfies QueryKeys; - -export default similarIdeasKeys; diff --git a/front/app/modules/commercial/similar_ideas/api/similar_ideas/types.ts b/front/app/modules/commercial/similar_ideas/api/similar_ideas/types.ts deleted file mode 100644 index 1df940b81733..000000000000 --- a/front/app/modules/commercial/similar_ideas/api/similar_ideas/types.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { Multiloc } from 'typings'; -import { Keys } from 'utils/cl-react-query/types'; -import similarIdeasKeys from './keys'; - -export type SimilarIdeasKeys = Keys; - -export interface IMinimalIdeaData { - id: string; - type: string; - attributes: { - slug: string; - title_multiloc: Multiloc; - }; -} - -export type SimilarIdeas = { - data: IMinimalIdeaData[]; -}; - -export interface IQueryParameters { - ideaId: string; - pageSize?: number; -} diff --git a/front/app/modules/commercial/similar_ideas/api/similar_ideas/useSimilarIdeas.ts b/front/app/modules/commercial/similar_ideas/api/similar_ideas/useSimilarIdeas.ts deleted file mode 100644 index b09a099f66a3..000000000000 --- a/front/app/modules/commercial/similar_ideas/api/similar_ideas/useSimilarIdeas.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { useQuery } from '@tanstack/react-query'; -import { CLErrors } from 'typings'; -import fetcher from 'utils/cl-react-query/fetcher'; -import similarIdeasKeys from './keys'; -import { SimilarIdeas, IQueryParameters, SimilarIdeasKeys } from './types'; - -export const defaultPageSize = 5; - -const fetchSimilarIdeas = ({ ideaId, pageSize }: IQueryParameters) => - fetcher({ - path: `/ideas/${ideaId}/similar`, - action: 'get', - queryParams: { - 'page[size]': pageSize || defaultPageSize, - }, - }); - -const useSimilarIdeas = (queryParams: IQueryParameters) => { - return useQuery({ - queryKey: similarIdeasKeys.list(queryParams), - queryFn: () => fetchSimilarIdeas(queryParams), - }); -}; - -export default useSimilarIdeas; diff --git a/front/app/modules/commercial/similar_ideas/components/SimilarIdeas.tsx b/front/app/modules/commercial/similar_ideas/components/SimilarIdeas.tsx deleted file mode 100644 index c94485215606..000000000000 --- a/front/app/modules/commercial/similar_ideas/components/SimilarIdeas.tsx +++ /dev/null @@ -1,98 +0,0 @@ -import React, { memo } from 'react'; -import { isNilOrError } from 'utils/helperUtils'; -import { - Header, - Item, -} from 'containers/IdeasShow/components/MetaInformation/MetaInfoStyles'; - -// styles -import styled from 'styled-components'; -import { colors, fontSizes } from '@citizenlab/cl2-component-library'; -import { darken } from 'polished'; - -// components -import T from 'components/T'; -import Link from 'utils/cl-router/Link'; - -// analytics -import { trackEventByName } from 'utils/analytics'; -import tracks from '../tracks'; - -// hooks -import useSimilarIdeas from '../api/similar_ideas/useSimilarIdeas'; - -// i18n -import { injectIntl } from 'utils/cl-intl'; -import { WrappedComponentProps } from 'react-intl'; -import messages from '../messages'; - -const IdeaList = styled.ul` - margin: 0; - padding: 0; - padding-left: 17px; -`; - -const IdeaListItem = styled.li` - color: ${colors.textSecondary}; - font-size: ${fontSizes.s}px; - line-height: normal; - overflow-wrap: break-word; - word-wrap: break-word; - word-break: break-word; - margin-bottom: 15px; - - &:last-child { - margin-bottom: 0px; - } -`; - -const IdeaLink = styled(Link)` - color: ${colors.textSecondary}; - font-size: ${fontSizes.s}px; - line-height: normal; - text-decoration: underline; - - &:hover { - color: ${darken(0.2, colors.textSecondary)}; - text-decoration: underline; - } -`; - -interface Props { - ideaId: string; - compact?: boolean; - className?: string; -} - -const SimilarIdeas = memo( - ({ ideaId, compact, className, intl: { formatMessage } }) => { - const { data: similarIdeas } = useSimilarIdeas({ ideaId, pageSize: 5 }); - const onClickIdeaLink = (index: number) => () => { - trackEventByName(tracks.clickSimilarIdeaLink.name, { extra: { index } }); - }; - - if (!isNilOrError(similarIdeas) && similarIdeas.data.length > 0) { - return ( - -
{formatMessage(messages.similarInputs)}
- - {similarIdeas.data.map((similarIdea, index) => ( - - - - - - ))} - -
- ); - } - - return null; - } -); - -export default injectIntl(SimilarIdeas); diff --git a/front/app/modules/commercial/similar_ideas/index.tsx b/front/app/modules/commercial/similar_ideas/index.tsx deleted file mode 100644 index 74db518e9dae..000000000000 --- a/front/app/modules/commercial/similar_ideas/index.tsx +++ /dev/null @@ -1,16 +0,0 @@ -import React from 'react'; -import { ModuleConfiguration } from 'utils/moduleUtils'; -const SimilarIdeas = React.lazy(() => import('./components/SimilarIdeas')); -const FeatureFlag = React.lazy(() => import('components/FeatureFlag')); - -const configuration: ModuleConfiguration = { - outlets: { - 'app.containers.IdeasShow.MetaInformation': (props) => ( - - - - ), - }, -}; - -export default configuration; diff --git a/front/app/modules/commercial/similar_ideas/messages.ts b/front/app/modules/commercial/similar_ideas/messages.ts deleted file mode 100644 index 4d8b646c1cc7..000000000000 --- a/front/app/modules/commercial/similar_ideas/messages.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { defineMessages } from 'react-intl'; - -export default defineMessages({ - similarInputs: { - id: 'app.containers.IdeasShow.MetaInformation.similarInputs', - defaultMessage: 'Similar inputs', - }, -}); diff --git a/front/app/modules/commercial/similar_ideas/tracks.ts b/front/app/modules/commercial/similar_ideas/tracks.ts deleted file mode 100644 index 53ea559fed8f..000000000000 --- a/front/app/modules/commercial/similar_ideas/tracks.ts +++ /dev/null @@ -1,5 +0,0 @@ -export default { - clickSimilarIdeaLink: { - name: 'Clicked on a Similar Idea', - }, -}; diff --git a/front/app/modules/index.ts b/front/app/modules/index.ts index 9750391c9f79..2fca8aea696a 100644 --- a/front/app/modules/index.ts +++ b/front/app/modules/index.ts @@ -6,7 +6,6 @@ import moderationConfiguration from './commercial/moderation'; import flagInappropriateContentConfiguration from './commercial/flag_inappropriate_content'; import adminProjectTemplatesConfiguration from './commercial/admin_project_templates'; import machineTranslationsConfiguration from './commercial/machine_translations'; -import similarIdeaConfiguration from './commercial/similar_ideas'; import customMapsConfiguration from './commercial/custom_maps'; import googleTagManagerConfiguration from './commercial/google_tag_manager'; @@ -87,9 +86,6 @@ export default loadModules([ { configuration: adminProjectTemplatesConfiguration, }, - { - configuration: similarIdeaConfiguration, - }, { configuration: customMapsConfiguration, }, diff --git a/front/app/translations/ach-UG.json b/front/app/translations/ach-UG.json index 8e2256d5b1d3..e2f115fa1ccf 100644 --- a/front/app/translations/ach-UG.json +++ b/front/app/translations/ach-UG.json @@ -1035,7 +1035,6 @@ "app.containers.IdeasShow.MetaInformation.currentStatus": "crwdns214658:0crwdne214658:0", "app.containers.IdeasShow.MetaInformation.location": "crwdns214660:0crwdne214660:0", "app.containers.IdeasShow.MetaInformation.postedBy": "crwdns214662:0crwdne214662:0", - "app.containers.IdeasShow.MetaInformation.similarInputs": "crwdns214664:0crwdne214664:0", "app.containers.IdeasShow.MetaInformation.topics": "crwdns214666:0crwdne214666:0", "app.containers.IdeasShow.commentCTA": "crwdns214668:0crwdne214668:0", "app.containers.IdeasShow.contributionEmailSharingBody": "crwdns214670:0{postTitle}crwdnd214670:0{postUrl}crwdne214670:0", diff --git a/front/app/translations/admin/ach-UG.json b/front/app/translations/admin/ach-UG.json index 53f6a404cb6a..5b3ad200da55 100644 --- a/front/app/translations/admin/ach-UG.json +++ b/front/app/translations/admin/ach-UG.json @@ -759,7 +759,7 @@ "app.containers.Admin.emails.helmetDescription": "crwdns210244:0crwdne210244:0", "app.containers.Admin.emails.manageButtonLabel": "crwdns210246:0crwdne210246:0", "app.containers.Admin.emails.message": "crwdns568011:0crwdne568011:0", - "app.containers.Admin.emails.nameVariablesInfo": "crwdns210248:0crwdne210248:0", + "app.containers.Admin.emails.nameVariablesInfo2": "crwdns1497990:0{firstName}crwdnd1497990:0{lastName}crwdnd1497990:0{firstName}crwdnd1497990:0{lastName}crwdne1497990:0", "app.containers.Admin.emails.noCampaignsDescription": "crwdns210250:0crwdne210250:0", "app.containers.Admin.emails.noCampaignsHeader": "crwdns210252:0crwdne210252:0", "app.containers.Admin.emails.noTextingCampaignsHeader": "crwdns210254:0crwdne210254:0", diff --git a/front/app/translations/admin/ar-MA.json b/front/app/translations/admin/ar-MA.json index 5c16ba54c315..6ad7f33f00fc 100644 --- a/front/app/translations/admin/ar-MA.json +++ b/front/app/translations/admin/ar-MA.json @@ -553,7 +553,6 @@ "app.containers.Admin.emails.groups": "المجموعات", "app.containers.Admin.emails.helmetDescription": "أرسل الرسائل الإلكترونية إلى مجموعة مواطنين محددة وفعّل الحملات التلقائية", "app.containers.Admin.emails.manageButtonLabel": "إدارة", - "app.containers.Admin.emails.nameVariablesInfo": "يمكنك التحدث مباشرة مع المواطنين باستخدام المتغيرات \\{\\{first_name\\}\\} \\{\\{last_name\\}\\}. مثال: \" عزيزي \\{\\{first_name\\}\\} \\{\\{last_name\\}\\}، ...\"", "app.containers.Admin.emails.noCampaignsDescription": "يمكنك إنشاء وإرسال رسائل إلكترونية بالقدر الذي تريده.", "app.containers.Admin.emails.noCampaignsHeader": "لا توجد رسائل إلكترونية مخصصة بعد", "app.containers.Admin.emails.noTextingCampaignsHeader": "لم تتم صياغة أي رسالة SMS أو إرسالها حتى الآن", diff --git a/front/app/translations/admin/ar-SA.json b/front/app/translations/admin/ar-SA.json index 6d0a40383686..46db5898741d 100644 --- a/front/app/translations/admin/ar-SA.json +++ b/front/app/translations/admin/ar-SA.json @@ -759,7 +759,7 @@ "app.containers.Admin.emails.helmetDescription": "أرسل الرسائل الإلكترونية إلى مجموعة مواطنين محددة وفعّل الحملات التلقائية", "app.containers.Admin.emails.manageButtonLabel": "إدارة", "app.containers.Admin.emails.message": "رسالة", - "app.containers.Admin.emails.nameVariablesInfo": "يمكنك التحدث مباشرة مع المواطنين باستخدام المتغيرات \\{\\{first_name\\}\\} \\{\\{last_name\\}\\}. مثال: \" عزيزي \\{\\{first_name\\}\\} \\{\\{last_name\\}\\}، ...\"", + "app.containers.Admin.emails.nameVariablesInfo2": "يمكنك التحدث مباشرة إلى المواطنين باستخدام المتغيرات {firstName} {lastName}. على سبيل المثال \"عزيزي {firstName} {lastName}، ...\"", "app.containers.Admin.emails.noCampaignsDescription": "يمكنك إنشاء وإرسال رسائل إلكترونية بالقدر الذي تريده.", "app.containers.Admin.emails.noCampaignsHeader": "لا توجد رسائل إلكترونية مخصصة بعد", "app.containers.Admin.emails.noTextingCampaignsHeader": "لم تتم صياغة أي رسالة SMS أو إرسالها حتى الآن", diff --git a/front/app/translations/admin/ca-ES.json b/front/app/translations/admin/ca-ES.json index 073ead209d8f..68759d5e08df 100644 --- a/front/app/translations/admin/ca-ES.json +++ b/front/app/translations/admin/ca-ES.json @@ -690,7 +690,6 @@ "app.containers.Admin.emails.helmetDescription": "Envieu correus electrònics manuals a grups d'usuaris i activeu campanyes automatitzades", "app.containers.Admin.emails.manageButtonLabel": "Edit", "app.containers.Admin.emails.message": "Missatge", - "app.containers.Admin.emails.nameVariablesInfo": "Podeu adreçar-vos als destinataris mitjançant les variables \\{\\{first_name\\}\\} \\{\\{last_name\\}\\}. Per exemple, \"Benvolgut \\{\\{first_name\\}\\} \\{\\{last_name\\}\\}, ...\"", "app.containers.Admin.emails.noCampaignsDescription": "Podeu crear i enviar tants correus electrònics com vulgueu.", "app.containers.Admin.emails.noCampaignsHeader": "Encara no hi ha correus electrònics personalitzats", "app.containers.Admin.emails.noTextingCampaignsHeader": "Encara no s'ha redactat ni enviat cap SMS", diff --git a/front/app/translations/admin/da-DK.json b/front/app/translations/admin/da-DK.json index 3eef765a9f14..8caec678db4f 100644 --- a/front/app/translations/admin/da-DK.json +++ b/front/app/translations/admin/da-DK.json @@ -759,7 +759,7 @@ "app.containers.Admin.emails.helmetDescription": "Send manuelle e-mails til brugergrupper, og aktiver automatiserede kampagner", "app.containers.Admin.emails.manageButtonLabel": "Rediger", "app.containers.Admin.emails.message": "Besked", - "app.containers.Admin.emails.nameVariablesInfo": "Du kan henvende dig til modtagerne ved hjælp af variablerne \\{\\{first_name\\}\\} \\{\\{last_name\\}\\}. E.g. \"Dear \\{\\{first_name\\}\\} \\{\\{last_name\\}\\}, ...\"", + "app.containers.Admin.emails.nameVariablesInfo2": "Du kan tale direkte til borgerne ved hjælp af variablerne {firstName} {lastName}. F.eks. \"Kære {firstName} {lastName}, ...\"", "app.containers.Admin.emails.noCampaignsDescription": "Du kan oprette og sende så mange e-mails, som du vil.", "app.containers.Admin.emails.noCampaignsHeader": "Der er ingen brugerdefinerede e-mails endnu", "app.containers.Admin.emails.noTextingCampaignsHeader": "Der er endnu ikke blevet udarbejdet eller sendt nogen SMS", diff --git a/front/app/translations/admin/de-DE.json b/front/app/translations/admin/de-DE.json index 197e53ed4975..ce35535e5c71 100644 --- a/front/app/translations/admin/de-DE.json +++ b/front/app/translations/admin/de-DE.json @@ -759,7 +759,7 @@ "app.containers.Admin.emails.helmetDescription": "Versenden Sie manuelle E-Mails an Nutzer*innengruppen und aktivieren Sie automatisierte Kampagnen", "app.containers.Admin.emails.manageButtonLabel": "Bearbeiten", "app.containers.Admin.emails.message": "Nachricht", - "app.containers.Admin.emails.nameVariablesInfo": "Sie können Empfänger*innen über die Variablen {{first_name}} {{last_name}} direkt ansprechen. Z.B. \"Sehr geehrte(r) {{first_name}} {{last_name}},\"", + "app.containers.Admin.emails.nameVariablesInfo2": "Sie können sich mit den Variablen {firstName} {lastName} direkt an die Bürger*innen wenden. Zum Beispiel: \"Sehr geehrte(r) {firstName} {lastName}, ...\"", "app.containers.Admin.emails.noCampaignsDescription": "Sie können so viele E-Mails erstellen und versenden, wie Sie möchten.", "app.containers.Admin.emails.noCampaignsHeader": "Es sind noch keine benutzerdefinierten E-Mails vorhanden", "app.containers.Admin.emails.noTextingCampaignsHeader": "Es wurde noch keine SMS verfasst oder verschickt", diff --git a/front/app/translations/admin/el-GR.json b/front/app/translations/admin/el-GR.json index 522419ef13d8..714707433382 100644 --- a/front/app/translations/admin/el-GR.json +++ b/front/app/translations/admin/el-GR.json @@ -690,7 +690,6 @@ "app.containers.Admin.emails.helmetDescription": "Αποστολή μη αυτόματων μηνυμάτων ηλεκτρονικού ταχυδρομείου σε ομάδες χρηστών και ενεργοποίηση αυτοματοποιημένων εκστρατειών", "app.containers.Admin.emails.manageButtonLabel": "Edit", "app.containers.Admin.emails.message": "Μήνυμα", - "app.containers.Admin.emails.nameVariablesInfo": "Μπορείτε να απευθυνθείτε στους παραλήπτες χρησιμοποιώντας τις μεταβλητές {\\{first_name\\}\\} \\{\\{last_name\\}\\}. Π.χ. \"Αγαπητέ, Αγαπητή \\{\\{first_name\\}\\} \\{\\{last_name\\}\\}, ...\"", "app.containers.Admin.emails.noCampaignsDescription": "Μπορείτε να δημιουργήσετε και να στείλετε όσα μηνύματα ηλεκτρονικού ταχυδρομείου θέλετε.", "app.containers.Admin.emails.noCampaignsHeader": "Δεν υπάρχουν ακόμα προσαρμοσμένα emails", "app.containers.Admin.emails.noTextingCampaignsHeader": "Δεν έχει συνταχθεί ή σταλεί ακόμα κανένα SMS", diff --git a/front/app/translations/admin/en-CA.json b/front/app/translations/admin/en-CA.json index ce7c6a6af19e..133217ad659a 100644 --- a/front/app/translations/admin/en-CA.json +++ b/front/app/translations/admin/en-CA.json @@ -759,7 +759,7 @@ "app.containers.Admin.emails.helmetDescription": "Send out manual emails to user groups and activate automated campaigns", "app.containers.Admin.emails.manageButtonLabel": "Edit", "app.containers.Admin.emails.message": "Message", - "app.containers.Admin.emails.nameVariablesInfo": "You can address recipients using the variables \\{\\{first_name\\}\\} \\{\\{last_name\\}\\}. E.g. \"Dear \\{\\{first_name\\}\\} \\{\\{last_name\\}\\}, ...\"", + "app.containers.Admin.emails.nameVariablesInfo2": "You can speak directly to citizens using the variables {firstName} {lastName}. E.g. \"Dear {firstName} {lastName}, ...\"", "app.containers.Admin.emails.noCampaignsDescription": "You can create and send as many emails as you want.", "app.containers.Admin.emails.noCampaignsHeader": "There are no custom emails yet", "app.containers.Admin.emails.noTextingCampaignsHeader": "No SMS has been drafted or sent yet", diff --git a/front/app/translations/admin/en-GB.json b/front/app/translations/admin/en-GB.json index 303cff4b41fe..9ed8c530a092 100644 --- a/front/app/translations/admin/en-GB.json +++ b/front/app/translations/admin/en-GB.json @@ -759,7 +759,7 @@ "app.containers.Admin.emails.helmetDescription": "Send out manual emails to user groups and activate automated campaigns", "app.containers.Admin.emails.manageButtonLabel": "Edit", "app.containers.Admin.emails.message": "Message", - "app.containers.Admin.emails.nameVariablesInfo": "You can address recipients using the variables {{first_name}} {{last_name}}. E.g. \"Dear {{first_name}} {{last_name}}, ...\"", + "app.containers.Admin.emails.nameVariablesInfo2": "You can speak directly to citizens using the variables {firstName} {lastName}. E.g. \"Dear {firstName} {lastName}, ...\"", "app.containers.Admin.emails.noCampaignsDescription": "You can create and send as many emails as you want.", "app.containers.Admin.emails.noCampaignsHeader": "There are no custom emails yet", "app.containers.Admin.emails.noTextingCampaignsHeader": "No SMS has been drafted or sent yet", diff --git a/front/app/translations/admin/en.json b/front/app/translations/admin/en.json index 03a55b68f298..369da2890666 100644 --- a/front/app/translations/admin/en.json +++ b/front/app/translations/admin/en.json @@ -759,7 +759,7 @@ "app.containers.Admin.emails.helmetDescription": "Send out manual emails to user groups and activate automated campaigns", "app.containers.Admin.emails.manageButtonLabel": "Edit", "app.containers.Admin.emails.message": "Message", - "app.containers.Admin.emails.nameVariablesInfo": "You can address recipients using the variables \\{\\{first_name\\}\\} \\{\\{last_name\\}\\}. E.g. \"Dear \\{\\{first_name\\}\\} \\{\\{last_name\\}\\}, ...\"", + "app.containers.Admin.emails.nameVariablesInfo2": "You can speak directly to citizens using the variables {firstName} {lastName}. E.g. \"Dear {firstName} {lastName}, ...\"", "app.containers.Admin.emails.noCampaignsDescription": "You can create and send as many emails as you want.", "app.containers.Admin.emails.noCampaignsHeader": "There are no custom emails yet", "app.containers.Admin.emails.noTextingCampaignsHeader": "No SMS has been drafted or sent yet", diff --git a/front/app/translations/admin/es-CL.json b/front/app/translations/admin/es-CL.json index 353033fea292..e498a59a3782 100644 --- a/front/app/translations/admin/es-CL.json +++ b/front/app/translations/admin/es-CL.json @@ -759,7 +759,7 @@ "app.containers.Admin.emails.helmetDescription": "Enviar emails manual a cierto grupo del ciudadano y activar campañas automatizadas", "app.containers.Admin.emails.manageButtonLabel": "Administrar", "app.containers.Admin.emails.message": "Mensaje", - "app.containers.Admin.emails.nameVariablesInfo": "Puedes hablar directamente a los ciudadanos usando las variables \\{\\{first_name\\}\\} \\{\\{last_name\\}\\}. Por ejemplo, \"Estimado \\{\\{first_name\\}\\} \\{\\{last_name\\}\\},...\"", + "app.containers.Admin.emails.nameVariablesInfo2": "Puedes hablar directamente a los ciudadanos usando las variables {firstName} {lastName}. Por ejemplo, \"Estimado {firstName} {lastName},...\"", "app.containers.Admin.emails.noCampaignsDescription": "Campañas de correo personalizado son correos creados desde una página en blanco. Su contenido y destinatarios pueden ser elegidos y puedes seguir sus resultados a través de estadística.", "app.containers.Admin.emails.noCampaignsHeader": "Aún no hay correos electrónicos personalizados", "app.containers.Admin.emails.noTextingCampaignsHeader": "No se ha preparado ni enviado ningún mensaje SMS", diff --git a/front/app/translations/admin/es-ES.json b/front/app/translations/admin/es-ES.json index 36fa83280c65..bdd5669a0fe3 100644 --- a/front/app/translations/admin/es-ES.json +++ b/front/app/translations/admin/es-ES.json @@ -759,7 +759,7 @@ "app.containers.Admin.emails.helmetDescription": "Enviar emails manual a cierto grupo del ciudadano y activar campañas automatizadas", "app.containers.Admin.emails.manageButtonLabel": "Administrar", "app.containers.Admin.emails.message": "Mensaje", - "app.containers.Admin.emails.nameVariablesInfo": "Puedes hablar directamente a los ciudadanos usando las variables \\{\\{first_name\\}\\} \\{\\{last_name\\}\\}. Por ejemplo, \"Estimado \\{\\{first_name\\}\\} \\{\\{last_name\\}\\},...\"", + "app.containers.Admin.emails.nameVariablesInfo2": "Puedes hablar directamente a los ciudadanos usando las variables {firstName} {lastName}. Por ejemplo, \"Estimado {firstName} {lastName},...\"", "app.containers.Admin.emails.noCampaignsDescription": "Campañas de correo personalizado son correos creados desde una página en blanco. Su contenido y destinatarios pueden ser elegidos y puedes seguir sus resultados a través de estadística.", "app.containers.Admin.emails.noCampaignsHeader": "Aún no hay correos electrónicos personalizados", "app.containers.Admin.emails.noTextingCampaignsHeader": "No se ha preparado ni enviado ningún mensaje SMS", diff --git a/front/app/translations/admin/fr-BE.json b/front/app/translations/admin/fr-BE.json index 877266a47fb4..4ed67efbf21d 100644 --- a/front/app/translations/admin/fr-BE.json +++ b/front/app/translations/admin/fr-BE.json @@ -759,7 +759,7 @@ "app.containers.Admin.emails.helmetDescription": "Envoyer des courriels manuels à certains groupe de citoyens et activez les campagnes automatisées", "app.containers.Admin.emails.manageButtonLabel": "Gérer", "app.containers.Admin.emails.message": "Message", - "app.containers.Admin.emails.nameVariablesInfo": "Vous pouvez vous adresser directement aux citoyens en utilisant les variables \\{\\{first_name\\}\\} \\{\\{last_name\\}\\}. Par exemple « cher \\{\\{first_name\\}\\} \\{\\{last_name\\}\\},... »", + "app.containers.Admin.emails.nameVariablesInfo2": "Vous pouvez vous adresser directement aux citoyens en utilisant les variables {firstName} {lastName}. Par exemple « cher , {firstName} {lastName} ... »", "app.containers.Admin.emails.noCampaignsDescription": "Les emails personnalisés sont créés à partir de zéro. Leur contenu et les bénéficiaires peuvent être choisis et vous pouvez suivre leurs résultats en utilisant les statistiques.", "app.containers.Admin.emails.noCampaignsHeader": "Il n'y a pas encore d'emails personnalisés", "app.containers.Admin.emails.noTextingCampaignsHeader": "Aucun SMS n'a encore été rédigé ou envoyé", diff --git a/front/app/translations/admin/fr-FR.json b/front/app/translations/admin/fr-FR.json index a36b3d22e21f..7f85ce223583 100644 --- a/front/app/translations/admin/fr-FR.json +++ b/front/app/translations/admin/fr-FR.json @@ -759,7 +759,7 @@ "app.containers.Admin.emails.helmetDescription": "Envoyer des courriels manuels à certains groupe de citoyens et activez les campagnes automatisées", "app.containers.Admin.emails.manageButtonLabel": "Gérer", "app.containers.Admin.emails.message": "Message", - "app.containers.Admin.emails.nameVariablesInfo": "Vous pouvez vous adresser directement aux citoyens en utilisant les variables \\{\\{first_name\\}\\} \\{\\{last_name\\}\\}. Par exemple « cher \\{\\{first_name\\}\\} \\{\\{last_name\\}\\},... »", + "app.containers.Admin.emails.nameVariablesInfo2": "Vous pouvez vous adresser directement aux citoyens en utilisant les variables {firstName} {lastName}. Par exemple « cher , {firstName} {lastName} ... »", "app.containers.Admin.emails.noCampaignsDescription": "Les emails personnalisés sont créés à partir de zéro. Leur contenu et les bénéficiaires peuvent être choisis et vous pouvez suivre leurs résultats en utilisant les statistiques.", "app.containers.Admin.emails.noCampaignsHeader": "Il n'y a pas encore d'emails personnalisés", "app.containers.Admin.emails.noTextingCampaignsHeader": "Aucun SMS n'a encore été rédigé ou envoyé", diff --git a/front/app/translations/admin/hr-HR.json b/front/app/translations/admin/hr-HR.json index 72827d49d38d..b1578c52e84b 100644 --- a/front/app/translations/admin/hr-HR.json +++ b/front/app/translations/admin/hr-HR.json @@ -759,7 +759,7 @@ "app.containers.Admin.emails.helmetDescription": "Ručno pošaljite e-poruke grupama korisnika i aktivirajte automatske kampanje", "app.containers.Admin.emails.manageButtonLabel": "Uredi", "app.containers.Admin.emails.message": "Poruka", - "app.containers.Admin.emails.nameVariablesInfo": "Primateljima se možete obratiti pomoću varijabli \\{\\{first_name\\}\\} \\{\\{last_name\\}\\}. Npr. \"Poštovani \\{\\{first_name\\}\\} \\{\\{last_name\\}\\}, ...\"", + "app.containers.Admin.emails.nameVariablesInfo2": "Možete se obratiti izravno građanima koristeći varijable {firstName} {lastName}. Npr. \"Dragi {firstName} {lastName}, ...\"", "app.containers.Admin.emails.noCampaignsDescription": "Možete kreirati i poslati onoliko poruka e-pošte koliko želite.", "app.containers.Admin.emails.noCampaignsHeader": "Još uvijek nema prilagođenih poruka e-pošte", "app.containers.Admin.emails.noTextingCampaignsHeader": "Nema radne verzije niti poslanog SMS-a", diff --git a/front/app/translations/admin/hu-HU.json b/front/app/translations/admin/hu-HU.json index 10c040274003..2f480146e969 100644 --- a/front/app/translations/admin/hu-HU.json +++ b/front/app/translations/admin/hu-HU.json @@ -425,7 +425,6 @@ "app.containers.Admin.emails.groups": "Groups", "app.containers.Admin.emails.helmetDescription": "Send out manual emails to user groups and activate automated campaigns", "app.containers.Admin.emails.manageButtonLabel": "Edit", - "app.containers.Admin.emails.nameVariablesInfo": "You can address recipients using the variables \\{\\{first_name\\}\\} \\{\\{last_name\\}\\}. E.g. \"Dear \\{\\{first_name\\}\\} \\{\\{last_name\\}\\}, ...\"", "app.containers.Admin.emails.noCampaignsDescription": "You can create and send as many emails as you want.", "app.containers.Admin.emails.noCampaignsHeader": "There are no custom emails yet", "app.containers.Admin.emails.previewSentConfirmation": "A preview email has been sent to your email address", diff --git a/front/app/translations/admin/it-IT.json b/front/app/translations/admin/it-IT.json index 51f757be3214..e31a91f1adda 100644 --- a/front/app/translations/admin/it-IT.json +++ b/front/app/translations/admin/it-IT.json @@ -690,7 +690,6 @@ "app.containers.Admin.emails.helmetDescription": "Send out manual emails to user groups and activate automated campaigns", "app.containers.Admin.emails.manageButtonLabel": "Edit", "app.containers.Admin.emails.message": "Messaggio", - "app.containers.Admin.emails.nameVariablesInfo": "You can address recipients using the variables \\{\\{first_name\\}\\} \\{\\{last_name\\}\\}. E.g. \"Dear \\{\\{first_name\\}\\} \\{\\{last_name\\}\\}, ...\"", "app.containers.Admin.emails.noCampaignsDescription": "You can create and send as many emails as you want.", "app.containers.Admin.emails.noCampaignsHeader": "There are no custom emails yet", "app.containers.Admin.emails.noTextingCampaignsHeader": "No SMS has been drafted or sent yet", diff --git a/front/app/translations/admin/kl-GL.json b/front/app/translations/admin/kl-GL.json index 2047cce7cdd1..fa9ee61bed34 100644 --- a/front/app/translations/admin/kl-GL.json +++ b/front/app/translations/admin/kl-GL.json @@ -590,7 +590,6 @@ "app.containers.Admin.emails.groups": "Groups", "app.containers.Admin.emails.helmetDescription": "E-mailit atuisut gruppiinut nammineerlutit nassiutikkit paasititsiniaanerillu automatiskit atuutsilerlugit", "app.containers.Admin.emails.manageButtonLabel": "Manage", - "app.containers.Admin.emails.nameVariablesInfo": "Variabelit uku \\{\\{ateq\\}\\} \\{\\{kinguliaq\\}\\} atorlugit tigusisussat saaffigisinnaavatit. Assersuutigalugu: \"Asasara \\{\\{ateq\\}\\} \\{\\{kinguliaq\\}\\}, ...\"", "app.containers.Admin.emails.noCampaignsDescription": "E-mailinik qanorluunniit amerlatigisunik pilersitsisinnaavutit nassiussillutillu.", "app.containers.Admin.emails.noCampaignsHeader": "Massakkorpiaq e-mailinik naleqqussakkanik soqanngilaq", "app.containers.Admin.emails.noTextingCampaignsHeader": "SMS-imik allaqqitassiatut toqqukkamik nassiussamilluunniit soqanngilaq", diff --git a/front/app/translations/admin/lb-LU.json b/front/app/translations/admin/lb-LU.json index f93a7203f4bc..8dd3ae8ce188 100644 --- a/front/app/translations/admin/lb-LU.json +++ b/front/app/translations/admin/lb-LU.json @@ -590,7 +590,6 @@ "app.containers.Admin.emails.groups": "Groups", "app.containers.Admin.emails.helmetDescription": "Send out manual emails to user groups and activate automated campaigns", "app.containers.Admin.emails.manageButtonLabel": "Edit", - "app.containers.Admin.emails.nameVariablesInfo": "You can address recipients using the variables \\{\\{first_name\\}\\} \\{\\{last_name\\}\\}. E.g. \"Dear \\{\\{first_name\\}\\} \\{\\{last_name\\}\\}, ...\"", "app.containers.Admin.emails.noCampaignsDescription": "You can create and send as many emails as you want.", "app.containers.Admin.emails.noCampaignsHeader": "There are no custom emails yet", "app.containers.Admin.emails.noTextingCampaignsHeader": "No SMS has been drafted or sent yet", diff --git a/front/app/translations/admin/lv-LV.json b/front/app/translations/admin/lv-LV.json index 52af58663e33..82117485d67d 100644 --- a/front/app/translations/admin/lv-LV.json +++ b/front/app/translations/admin/lv-LV.json @@ -759,7 +759,7 @@ "app.containers.Admin.emails.helmetDescription": "Izsūtiet manuālus e-pasta ziņojumus lietotāju grupām un aktivizējiet automatizētas kampaņas.", "app.containers.Admin.emails.manageButtonLabel": "Rediģēt", "app.containers.Admin.emails.message": "Ziņa", - "app.containers.Admin.emails.nameVariablesInfo": "Saņēmējus varat uzrunāt, izmantojot šādus mainīgos: \\{\\{first_name\\}\\} \\{\\{last_name\\}\\}. Piemēram, \"Cienījamais(-ā) \\{\\{first_name\\}\\} \\{\\{last_name\\}\\}, ...\"", + "app.containers.Admin.emails.nameVariablesInfo2": "Jūs varat tieši sazināties ar iedzīvotājiem, izmantojot mainīgos lielumus {firstName} {lastName}. Piemēram, \"Dārgais {firstName} {lastName}, ...\".", "app.containers.Admin.emails.noCampaignsDescription": "Jūs varat izveidot un nosūtīt tik e-pasta vēstuļu, cik vēlaties.", "app.containers.Admin.emails.noCampaignsHeader": "Nav izveidotu pielāgotu e-pasta vēstuļu", "app.containers.Admin.emails.noTextingCampaignsHeader": "SMS vēl nav sagatavota vai nosūtīta", diff --git a/front/app/translations/admin/mi.json b/front/app/translations/admin/mi.json index 9a4db5041eec..d3c19dc09873 100644 --- a/front/app/translations/admin/mi.json +++ b/front/app/translations/admin/mi.json @@ -425,7 +425,6 @@ "app.containers.Admin.emails.groups": "Groups", "app.containers.Admin.emails.helmetDescription": "Send out manual emails to user groups and activate automated campaigns", "app.containers.Admin.emails.manageButtonLabel": "Edit", - "app.containers.Admin.emails.nameVariablesInfo": "You can address recipients using the variables \\{\\{first_name\\}\\} \\{\\{last_name\\}\\}. E.g. \"Dear \\{\\{first_name\\}\\} \\{\\{last_name\\}\\}, ...\"", "app.containers.Admin.emails.noCampaignsDescription": "You can create and send as many emails as you want.", "app.containers.Admin.emails.noCampaignsHeader": "There are no custom emails yet", "app.containers.Admin.emails.previewSentConfirmation": "A preview email has been sent to your email address", diff --git a/front/app/translations/admin/nb-NO.json b/front/app/translations/admin/nb-NO.json index 5bf034af1d18..d19568eb9f87 100644 --- a/front/app/translations/admin/nb-NO.json +++ b/front/app/translations/admin/nb-NO.json @@ -759,7 +759,7 @@ "app.containers.Admin.emails.helmetDescription": "Send ut manuelle e-postmeldinger til brukergrupper og aktiver automatiserte kampanjer", "app.containers.Admin.emails.manageButtonLabel": "Administrer", "app.containers.Admin.emails.message": "Beskjed", - "app.containers.Admin.emails.nameVariablesInfo": "Du kan snakke direkte til borgere ved å bruke variablene \\{\\{first_name\\}\\} \\{\\{last_name\\}\\}. F.eks. \"Kjære \\{\\{first_name\\}\\} \\{\\{last_name\\}\\}, ...\"", + "app.containers.Admin.emails.nameVariablesInfo2": "Du kan snakke direkte med innbyggerne ved å bruke variablene {firstName} {lastName}. For eksempel \"Kjære {firstName} {lastName}, ...\"", "app.containers.Admin.emails.noCampaignsDescription": "Tilpassede e-postkampanjer er e-poster skrevet fra bunnen av. Innholdet og mottakerne deres kan bli valgt, og du kan følge opp på resultatene deres via statistikk.", "app.containers.Admin.emails.noCampaignsHeader": "Det er ingen egendefinerte e-postmeldinger ennå", "app.containers.Admin.emails.noTextingCampaignsHeader": "Ingen SMS-meldinger er kladdet eller sendt ennå", diff --git a/front/app/translations/admin/nl-BE.json b/front/app/translations/admin/nl-BE.json index 6e3b3c96074c..0a64d9e5b91a 100644 --- a/front/app/translations/admin/nl-BE.json +++ b/front/app/translations/admin/nl-BE.json @@ -759,7 +759,7 @@ "app.containers.Admin.emails.helmetDescription": "Send out manual emails to certain citizen group and active automated campaigns", "app.containers.Admin.emails.manageButtonLabel": "Beheren", "app.containers.Admin.emails.message": "Bericht", - "app.containers.Admin.emails.nameVariablesInfo": "Je kan burgers rechtstreeks aanspreken met behulp van de variabelen \\{\\{first_name\\}\\} \\{\\{last_name\\}\\}. Bijvoorbeeld \"Beste \\{\\{first_name\\}\\} \\{\\{last_name\\}\\},...\"", + "app.containers.Admin.emails.nameVariablesInfo2": "Je kunt inwoners rechtstreeks aanspreken met de variabelen {firstName} {lastName}. Bijv. \"Beste {firstName} {lastName}, ...\"", "app.containers.Admin.emails.noCampaignsDescription": "Eigen e-mailcampagnes zijn e-mails die je zelf opstelt. De inhoud en ontvangers kunnen worden gekozen en je kan de resultaten opvolgen bij statistieken.", "app.containers.Admin.emails.noCampaignsHeader": "Er zijn nog geen eigen e-mails", "app.containers.Admin.emails.noTextingCampaignsHeader": "Er is nog geen SMS opgesteld of verstuurd", diff --git a/front/app/translations/admin/nl-NL.json b/front/app/translations/admin/nl-NL.json index 4311ea293cab..6b5cebef235c 100644 --- a/front/app/translations/admin/nl-NL.json +++ b/front/app/translations/admin/nl-NL.json @@ -759,7 +759,7 @@ "app.containers.Admin.emails.helmetDescription": "Send out manual emails to certain citizen group and active automated campaigns", "app.containers.Admin.emails.manageButtonLabel": "Beheren", "app.containers.Admin.emails.message": "Bericht", - "app.containers.Admin.emails.nameVariablesInfo": "Je kan burgers rechtstreeks aanspreken met behulp van de variabelen {{first_name}} {{last_name}}. Bijvoorbeeld \"Beste {{first_name}} {{last_name}},...\"", + "app.containers.Admin.emails.nameVariablesInfo2": "Je kunt inwoners rechtstreeks aanspreken met de variabelen {firstName} {lastName}. Bijv. \"Beste {firstName} {lastName}, ...\"", "app.containers.Admin.emails.noCampaignsDescription": "Eigen e-mailcampagnes zijn e-mails die je zelf opstelt. De inhoud en ontvangers kunnen worden gekozen en je kan de resultaten opvolgen bij statistieken.", "app.containers.Admin.emails.noCampaignsHeader": "Er zijn nog geen eigen e-mails", "app.containers.Admin.emails.noTextingCampaignsHeader": "Er is nog geen SMS opgesteld of verstuurd", diff --git a/front/app/translations/admin/pl-PL.json b/front/app/translations/admin/pl-PL.json index 8224acb568a6..ebd968aac80d 100644 --- a/front/app/translations/admin/pl-PL.json +++ b/front/app/translations/admin/pl-PL.json @@ -759,7 +759,7 @@ "app.containers.Admin.emails.helmetDescription": "Ręczne wysyłanie e-maili do określonych grup obywateli oraz aktywne kampanie automatyczne", "app.containers.Admin.emails.manageButtonLabel": "Zarządzaj", "app.containers.Admin.emails.message": "Wiadomość", - "app.containers.Admin.emails.nameVariablesInfo": "Możesz zwracać się bezpośrednio do osób, używając zmiennych \\{\\{first_name\\}\\} \\{\\{last_name\\}\\}. Na przykład: \"Szanowny \\{\\{first_name\\}\\} \\{\\{last_name\\}\\}, ...\"", + "app.containers.Admin.emails.nameVariablesInfo2": "Możesz zwracać się bezpośrednio do obywateli za pomocą zmiennych {firstName} {lastName}. Np. \"Drogi {firstName} {lastName}, ...\"", "app.containers.Admin.emails.noCampaignsDescription": "Możesz tworzyć i wysyłać tyle e-maili, ile chcesz.", "app.containers.Admin.emails.noCampaignsHeader": "Nie ma jeszcze niestandardowych e-maili", "app.containers.Admin.emails.noTextingCampaignsHeader": "Nie przygotowano jeszcze ani nie wysłano żadnej wiadomości SMS", diff --git a/front/app/translations/admin/pt-BR.json b/front/app/translations/admin/pt-BR.json index 065a0356880c..e51be37ec4ff 100644 --- a/front/app/translations/admin/pt-BR.json +++ b/front/app/translations/admin/pt-BR.json @@ -759,7 +759,7 @@ "app.containers.Admin.emails.helmetDescription": "Envie e-mails manuais para determinados grupos de cidadãos e campanhas automatizadas ativas", "app.containers.Admin.emails.manageButtonLabel": "Gerenciar", "app.containers.Admin.emails.message": "Mensagem", - "app.containers.Admin.emails.nameVariablesInfo": "Você pode falar diretamente com os cidadãos usando as variáveis ​​\\{\\{primeiro nome\\}\\}\\{\\{sobrenome\\} \\}. Por exemplo. \"Caro \\{\\{primeiro nome\\}\\}\\ {\\{sobrenome\\}\\}, ...\"", + "app.containers.Admin.emails.nameVariablesInfo2": "Você pode falar diretamente com os cidadãos usando as variáveis {firstName} {lastName}. Por exemplo, \"Prezado {firstName} {lastName}, ...\"", "app.containers.Admin.emails.noCampaignsDescription": "Você pode criar e enviar quantos e-mails desejar.", "app.containers.Admin.emails.noCampaignsHeader": "Ainda não há e-mails personalizados", "app.containers.Admin.emails.noTextingCampaignsHeader": "Nenhum SMS foi ainda redigido ou enviado", diff --git a/front/app/translations/admin/ro-RO.json b/front/app/translations/admin/ro-RO.json index ecbd9b27a428..dfa51518d939 100644 --- a/front/app/translations/admin/ro-RO.json +++ b/front/app/translations/admin/ro-RO.json @@ -553,7 +553,6 @@ "app.containers.Admin.emails.groups": "Groups", "app.containers.Admin.emails.helmetDescription": "Send out manual emails to user groups and activate automated campaigns", "app.containers.Admin.emails.manageButtonLabel": "Administrează", - "app.containers.Admin.emails.nameVariablesInfo": "You can address recipients using the variables \\{\\{first_name\\}\\} \\{\\{last_name\\}\\}. E.g. \"Dear \\{\\{first_name\\}\\} \\{\\{last_name\\}\\}, ...\"", "app.containers.Admin.emails.noCampaignsDescription": "You can create and send as many emails as you want.", "app.containers.Admin.emails.noCampaignsHeader": "There are no custom emails yet", "app.containers.Admin.emails.noTextingCampaignsHeader": "No SMS has been drafted or sent yet", diff --git a/front/app/translations/admin/sr-Latn.json b/front/app/translations/admin/sr-Latn.json index 75d051b68ec4..c5eef317a1fe 100644 --- a/front/app/translations/admin/sr-Latn.json +++ b/front/app/translations/admin/sr-Latn.json @@ -759,7 +759,7 @@ "app.containers.Admin.emails.helmetDescription": "Manualno pošaljite mejlove ka grupama korisnika i aktivirajte automatizovane kampanje", "app.containers.Admin.emails.manageButtonLabel": "Upravljajte", "app.containers.Admin.emails.message": "Порука", - "app.containers.Admin.emails.nameVariablesInfo": "Primaocima se možete obratiti pomoću promenljivih \\{\\{first_name\\}\\} \\{\\{last_name\\}\\}. Npr. \"Dragi \\{\\{first_name\\}\\} \\{\\{last_name\\}\\}, ...\"", + "app.containers.Admin.emails.nameVariablesInfo2": "You can speak directly to citizens using the variables {firstName} {lastName}. E.g. \"Dear {firstName} {lastName}, ...\"", "app.containers.Admin.emails.noCampaignsDescription": "Možete kreirati i poslati onoliko email poruka koliko želite.", "app.containers.Admin.emails.noCampaignsHeader": "Još uvek nema prilagođenih email poruka", "app.containers.Admin.emails.noTextingCampaignsHeader": "Nema radne vezije niti poslatog SMS-a", diff --git a/front/app/translations/admin/sr-SP.json b/front/app/translations/admin/sr-SP.json index a24c09544231..ab3142a46ca8 100644 --- a/front/app/translations/admin/sr-SP.json +++ b/front/app/translations/admin/sr-SP.json @@ -759,7 +759,7 @@ "app.containers.Admin.emails.helmetDescription": "Шаљите ручне е-поруке групама корисника и активирајте аутоматизоване кампање", "app.containers.Admin.emails.manageButtonLabel": "Уредити", "app.containers.Admin.emails.message": "Порука", - "app.containers.Admin.emails.nameVariablesInfo": "Примаоцима можете да се обраћате помоћу променљивих \\{\\{фирст_наме\\}\\} \\{\\{презиме\\}\\}. Нпр. \"Драги \\{\\{фирст_наме\\}\\} \\{\\{презиме\\}\\}, ...\"", + "app.containers.Admin.emails.nameVariablesInfo2": "You can speak directly to citizens using the variables {firstName} {lastName}. E.g. \"Dear {firstName} {lastName}, ...\"", "app.containers.Admin.emails.noCampaignsDescription": "Можете креирати и слати онолико е-порука колико желите.", "app.containers.Admin.emails.noCampaignsHeader": "Још увек нема прилагођених имејлова", "app.containers.Admin.emails.noTextingCampaignsHeader": "Још увек није састављен нити послат СМС", diff --git a/front/app/translations/admin/sv-SE.json b/front/app/translations/admin/sv-SE.json index 20e4b1f217b7..790f9e26ad72 100644 --- a/front/app/translations/admin/sv-SE.json +++ b/front/app/translations/admin/sv-SE.json @@ -759,7 +759,7 @@ "app.containers.Admin.emails.helmetDescription": "Skicka ut manuella e-postmeddelanden till användargrupper och aktivera automatiserade kampanjer", "app.containers.Admin.emails.manageButtonLabel": "Hantera", "app.containers.Admin.emails.message": "Meddelande", - "app.containers.Admin.emails.nameVariablesInfo": "Du kan tilltala mottagarna med variablerna \\{\\{first_name\\}\\} \\{\\{last_name\\}\\}. Exempel: \"Hej \\{\\{first_name\\}\\} \\{\\{last_name\\}\\}, ...\"", + "app.containers.Admin.emails.nameVariablesInfo2": "Du kan vända dig direkt till medborgarna med hjälp av variablerna {firstName} {lastName}. T.ex. \"Kära {firstName} {lastName}, ...\"", "app.containers.Admin.emails.noCampaignsDescription": "Du kan skapa och skicka hur många e-postmeddelanden du vill.", "app.containers.Admin.emails.noCampaignsHeader": "Det finns inga anpassade e-postmeddelanden ännu", "app.containers.Admin.emails.noTextingCampaignsHeader": "Inget sms har skrivits eller skickats ännu", diff --git a/front/app/translations/admin/tr-TR.json b/front/app/translations/admin/tr-TR.json index d97c1dd9398a..0035f933a02c 100644 --- a/front/app/translations/admin/tr-TR.json +++ b/front/app/translations/admin/tr-TR.json @@ -759,7 +759,7 @@ "app.containers.Admin.emails.helmetDescription": "Kullanıcı gruplarına manuel e-postalar gönderin ve otomatik kampanyalar etkinleştirin", "app.containers.Admin.emails.manageButtonLabel": "Düzenle", "app.containers.Admin.emails.message": "Mesaj", - "app.containers.Admin.emails.nameVariablesInfo": "Alıcılara \\{\\{first_name\\}\\} \\{\\{last_name\\}\\}. Ör. \"Sayın \\{\\{first_name\\}\\} \\{\\{last_name\\}\\}, ...\" değişkenlerini kullanarak hitap edebilirsiniz", + "app.containers.Admin.emails.nameVariablesInfo2": "{firstName} {lastName}değişkenlerini kullanarak vatandaşlarla doğrudan konuşabilirsiniz. Örneğin \"Sayın {firstName} {lastName}, ...\"", "app.containers.Admin.emails.noCampaignsDescription": "İstediğiniz kadar e-posta oluşturabilir ve gönderebilirsiniz.", "app.containers.Admin.emails.noCampaignsHeader": "Henüz özel e-posta yok", "app.containers.Admin.emails.noTextingCampaignsHeader": "Henüz SMS taslağı hazırlanmadı veya gönderilmedi", diff --git a/front/app/translations/ar-MA.json b/front/app/translations/ar-MA.json index 0de48f1029bc..47a7b2d1b10b 100644 --- a/front/app/translations/ar-MA.json +++ b/front/app/translations/ar-MA.json @@ -1035,7 +1035,6 @@ "app.containers.IdeasShow.MetaInformation.currentStatus": "الحالة الحالية", "app.containers.IdeasShow.MetaInformation.location": "الموقع", "app.containers.IdeasShow.MetaInformation.postedBy": "تم النشر بواسطة", - "app.containers.IdeasShow.MetaInformation.similarInputs": "مُدخلات مشابهة", "app.containers.IdeasShow.MetaInformation.topics": "الموضوعات", "app.containers.IdeasShow.commentCTA": "أضِف تعليقًا", "app.containers.IdeasShow.contributionEmailSharingBody": "ادعم هذه المُساهمة '{postTitle}' على {postUrl}!", diff --git a/front/app/translations/ar-SA.json b/front/app/translations/ar-SA.json index ff8b97efa0b2..dac1b9c8c62d 100644 --- a/front/app/translations/ar-SA.json +++ b/front/app/translations/ar-SA.json @@ -1035,7 +1035,6 @@ "app.containers.IdeasShow.MetaInformation.currentStatus": "الحالة الحالية", "app.containers.IdeasShow.MetaInformation.location": "الموقع", "app.containers.IdeasShow.MetaInformation.postedBy": "تم النشر بواسطة", - "app.containers.IdeasShow.MetaInformation.similarInputs": "مُدخلات مشابهة ", "app.containers.IdeasShow.MetaInformation.topics": "الموضوعات", "app.containers.IdeasShow.commentCTA": "أضِف تعليقًا", "app.containers.IdeasShow.contributionEmailSharingBody": "ادعم هذه المُساهمة '{postTitle}' على {postUrl}!", diff --git a/front/app/translations/ca-ES.json b/front/app/translations/ca-ES.json index deb6178b2cec..1b7fc1ca2ec1 100644 --- a/front/app/translations/ca-ES.json +++ b/front/app/translations/ca-ES.json @@ -1035,7 +1035,6 @@ "app.containers.IdeasShow.MetaInformation.currentStatus": "Estat actual", "app.containers.IdeasShow.MetaInformation.location": "Ubicació", "app.containers.IdeasShow.MetaInformation.postedBy": "Publicat per", - "app.containers.IdeasShow.MetaInformation.similarInputs": "Entrada similar", "app.containers.IdeasShow.MetaInformation.topics": "Etiquetes", "app.containers.IdeasShow.commentCTA": "Afegir un comentari", "app.containers.IdeasShow.contributionEmailSharingBody": "Doneu suport a aquesta contribució \"{postTitle}\" a {postUrl}!", diff --git a/front/app/translations/da-DK.json b/front/app/translations/da-DK.json index 1df847ef8c4f..81646662b1d8 100644 --- a/front/app/translations/da-DK.json +++ b/front/app/translations/da-DK.json @@ -1035,7 +1035,6 @@ "app.containers.IdeasShow.MetaInformation.currentStatus": "Nuværende status", "app.containers.IdeasShow.MetaInformation.location": "Beliggenhed", "app.containers.IdeasShow.MetaInformation.postedBy": "Sendt af", - "app.containers.IdeasShow.MetaInformation.similarInputs": "Lignende input", "app.containers.IdeasShow.MetaInformation.topics": "Emner", "app.containers.IdeasShow.commentCTA": "Tilføj kommentar", "app.containers.IdeasShow.contributionEmailSharingBody": "Støt dette forslag '{postTitle}' på {postUrl}!", diff --git a/front/app/translations/de-DE.json b/front/app/translations/de-DE.json index 2c0eddc51d3d..019bc67f57de 100644 --- a/front/app/translations/de-DE.json +++ b/front/app/translations/de-DE.json @@ -1035,7 +1035,6 @@ "app.containers.IdeasShow.MetaInformation.currentStatus": "Aktueller Status", "app.containers.IdeasShow.MetaInformation.location": "Ort", "app.containers.IdeasShow.MetaInformation.postedBy": "Gepostet von", - "app.containers.IdeasShow.MetaInformation.similarInputs": "Ähnliche Beiträge", "app.containers.IdeasShow.MetaInformation.topics": "Themen", "app.containers.IdeasShow.commentCTA": "Kommentieren", "app.containers.IdeasShow.contributionEmailSharingBody": "Unterstützen Sie den Beitrag „{postTitle}“ unter {postUrl}!", diff --git a/front/app/translations/el-GR.json b/front/app/translations/el-GR.json index 6a9e5a434db0..7aca54eb915d 100644 --- a/front/app/translations/el-GR.json +++ b/front/app/translations/el-GR.json @@ -1035,7 +1035,6 @@ "app.containers.IdeasShow.MetaInformation.currentStatus": "Τρέχουσα κατάσταση", "app.containers.IdeasShow.MetaInformation.location": "Τοποθεσία", "app.containers.IdeasShow.MetaInformation.postedBy": "Δημοσιεύτηκε από", - "app.containers.IdeasShow.MetaInformation.similarInputs": "Παρόμοια εισήγηση", "app.containers.IdeasShow.MetaInformation.topics": "Ετικέτες", "app.containers.IdeasShow.commentCTA": "Προσθέστε ένα σχόλιο", "app.containers.IdeasShow.contributionEmailSharingBody": "Υποστηρίξτε αυτή τη συνεισφορά '{postTitle}' στο {postUrl}!", diff --git a/front/app/translations/en-CA.json b/front/app/translations/en-CA.json index b0bd79c03953..ca0bdd76ba32 100644 --- a/front/app/translations/en-CA.json +++ b/front/app/translations/en-CA.json @@ -1035,7 +1035,6 @@ "app.containers.IdeasShow.MetaInformation.currentStatus": "Current status", "app.containers.IdeasShow.MetaInformation.location": "Location", "app.containers.IdeasShow.MetaInformation.postedBy": "Posted by", - "app.containers.IdeasShow.MetaInformation.similarInputs": "Similar input", "app.containers.IdeasShow.MetaInformation.topics": "Tags", "app.containers.IdeasShow.commentCTA": "Add a comment", "app.containers.IdeasShow.contributionEmailSharingBody": "Support this contribution '{postTitle}' at {postUrl}!", diff --git a/front/app/translations/en-GB.json b/front/app/translations/en-GB.json index 0ae611e1ee02..03d16cf7fcd1 100644 --- a/front/app/translations/en-GB.json +++ b/front/app/translations/en-GB.json @@ -1035,7 +1035,6 @@ "app.containers.IdeasShow.MetaInformation.currentStatus": "Current status", "app.containers.IdeasShow.MetaInformation.location": "Location", "app.containers.IdeasShow.MetaInformation.postedBy": "Posted by", - "app.containers.IdeasShow.MetaInformation.similarInputs": "Similar input", "app.containers.IdeasShow.MetaInformation.topics": "Tags", "app.containers.IdeasShow.commentCTA": "Add a comment", "app.containers.IdeasShow.contributionEmailSharingBody": "Support this contribution '{postTitle}' at {postUrl}!", diff --git a/front/app/translations/en.json b/front/app/translations/en.json index c7b7fd45f0ef..e49f9c13adb9 100644 --- a/front/app/translations/en.json +++ b/front/app/translations/en.json @@ -1035,7 +1035,6 @@ "app.containers.IdeasShow.MetaInformation.currentStatus": "Current status", "app.containers.IdeasShow.MetaInformation.location": "Location", "app.containers.IdeasShow.MetaInformation.postedBy": "Posted by", - "app.containers.IdeasShow.MetaInformation.similarInputs": "Similar input", "app.containers.IdeasShow.MetaInformation.topics": "Tags", "app.containers.IdeasShow.commentCTA": "Add a comment", "app.containers.IdeasShow.contributionEmailSharingBody": "Support this contribution '{postTitle}' at {postUrl}!", diff --git a/front/app/translations/es-CL.json b/front/app/translations/es-CL.json index b7e38411a965..7eabd3b4d2db 100644 --- a/front/app/translations/es-CL.json +++ b/front/app/translations/es-CL.json @@ -1035,7 +1035,6 @@ "app.containers.IdeasShow.MetaInformation.currentStatus": "Estado actual", "app.containers.IdeasShow.MetaInformation.location": "Ubicación", "app.containers.IdeasShow.MetaInformation.postedBy": "Publicado por", - "app.containers.IdeasShow.MetaInformation.similarInputs": "Entradas similares", "app.containers.IdeasShow.MetaInformation.topics": "Temas", "app.containers.IdeasShow.commentCTA": "Añadir una respuesta", "app.containers.IdeasShow.contributionEmailSharingBody": "Apoya esta contribución '{postTitle}' en {postUrl}!", diff --git a/front/app/translations/es-ES.json b/front/app/translations/es-ES.json index b2afb9a8c6ed..21b01a68e82c 100644 --- a/front/app/translations/es-ES.json +++ b/front/app/translations/es-ES.json @@ -1035,7 +1035,6 @@ "app.containers.IdeasShow.MetaInformation.currentStatus": "Estado actual", "app.containers.IdeasShow.MetaInformation.location": "Ubicación", "app.containers.IdeasShow.MetaInformation.postedBy": "Publicado por", - "app.containers.IdeasShow.MetaInformation.similarInputs": "Entradas similares", "app.containers.IdeasShow.MetaInformation.topics": "Temas", "app.containers.IdeasShow.commentCTA": "Añade un comentario", "app.containers.IdeasShow.contributionEmailSharingBody": "Apoya esta propuesta '{postTitle}' en {postUrl}!", diff --git a/front/app/translations/fr-BE.json b/front/app/translations/fr-BE.json index 1a012cfa445a..390b349bad50 100644 --- a/front/app/translations/fr-BE.json +++ b/front/app/translations/fr-BE.json @@ -1035,7 +1035,6 @@ "app.containers.IdeasShow.MetaInformation.currentStatus": "Statut actuel", "app.containers.IdeasShow.MetaInformation.location": "Lieu", "app.containers.IdeasShow.MetaInformation.postedBy": "Publié par", - "app.containers.IdeasShow.MetaInformation.similarInputs": "Contributions similaires", "app.containers.IdeasShow.MetaInformation.topics": "Étiquettes", "app.containers.IdeasShow.commentCTA": "Commenter", "app.containers.IdeasShow.contributionEmailSharingBody": "Soutenez cette suggestion « {postTitle} » à {postUrl} !", diff --git a/front/app/translations/fr-FR.json b/front/app/translations/fr-FR.json index 2fbd462e0adb..fb2976102f53 100644 --- a/front/app/translations/fr-FR.json +++ b/front/app/translations/fr-FR.json @@ -1035,7 +1035,6 @@ "app.containers.IdeasShow.MetaInformation.currentStatus": "Statut actuel", "app.containers.IdeasShow.MetaInformation.location": "Lieu", "app.containers.IdeasShow.MetaInformation.postedBy": "Publié par", - "app.containers.IdeasShow.MetaInformation.similarInputs": "Contributions similaires", "app.containers.IdeasShow.MetaInformation.topics": "Étiquettes", "app.containers.IdeasShow.commentCTA": "Commenter", "app.containers.IdeasShow.contributionEmailSharingBody": "Soutenez cette suggestion « {postTitle} » à {postUrl} !", diff --git a/front/app/translations/hr-HR.json b/front/app/translations/hr-HR.json index 6ff750f3538d..39a58053d97b 100644 --- a/front/app/translations/hr-HR.json +++ b/front/app/translations/hr-HR.json @@ -1035,7 +1035,6 @@ "app.containers.IdeasShow.MetaInformation.currentStatus": "Trenutačni status", "app.containers.IdeasShow.MetaInformation.location": "Lokacija", "app.containers.IdeasShow.MetaInformation.postedBy": "Autor objave:", - "app.containers.IdeasShow.MetaInformation.similarInputs": "Slični unos", "app.containers.IdeasShow.MetaInformation.topics": "Oznake", "app.containers.IdeasShow.commentCTA": "Dodaj komentar", "app.containers.IdeasShow.contributionEmailSharingBody": "Podrži ovaj doprinos '{postTitle}' na {postUrl}!", diff --git a/front/app/translations/hu-HU.json b/front/app/translations/hu-HU.json index 42cbb63e7a1c..d97dd1ef289d 100644 --- a/front/app/translations/hu-HU.json +++ b/front/app/translations/hu-HU.json @@ -633,7 +633,6 @@ "app.containers.IdeasShow.MetaInformation.currentStatus": "Current status", "app.containers.IdeasShow.MetaInformation.location": "Location", "app.containers.IdeasShow.MetaInformation.postedBy": "Posted by", - "app.containers.IdeasShow.MetaInformation.similarInputs": "Similar input", "app.containers.IdeasShow.MetaInformation.topics": "Tags", "app.containers.IdeasShow.commentCTA": "Add a comment", "app.containers.IdeasShow.contributionEmailSharingBody": "Support this contribution '{postTitle}' at {postUrl}!", diff --git a/front/app/translations/it-IT.json b/front/app/translations/it-IT.json index 4236bba144e2..5c947bd54e9c 100644 --- a/front/app/translations/it-IT.json +++ b/front/app/translations/it-IT.json @@ -1035,7 +1035,6 @@ "app.containers.IdeasShow.MetaInformation.currentStatus": "Stato attuale", "app.containers.IdeasShow.MetaInformation.location": "Posizione", "app.containers.IdeasShow.MetaInformation.postedBy": "Inviato da", - "app.containers.IdeasShow.MetaInformation.similarInputs": "Ingresso simile", "app.containers.IdeasShow.MetaInformation.topics": "Argomenti", "app.containers.IdeasShow.commentCTA": "Aggiungere un commento", "app.containers.IdeasShow.contributionEmailSharingBody": "Sostenete questo contributo '{postTitle}' a {postUrl}!", diff --git a/front/app/translations/kl-GL.json b/front/app/translations/kl-GL.json index 9013733c2df3..d95b3cecfbb0 100644 --- a/front/app/translations/kl-GL.json +++ b/front/app/translations/kl-GL.json @@ -955,7 +955,6 @@ "app.containers.IdeasShow.MetaInformation.currentStatus": "Maannakkut killiffik", "app.containers.IdeasShow.MetaInformation.location": "Sumi", "app.containers.IdeasShow.MetaInformation.postedBy": "Nassiunneqarpoq", - "app.containers.IdeasShow.MetaInformation.similarInputs": "Ilanngussat assingusut", "app.containers.IdeasShow.MetaInformation.topics": "Sammisassat imaat", "app.containers.IdeasShow.commentCTA": "Oqaaseqaatit nassiutiguk", "app.containers.IdeasShow.contributionEmailSharingBody": "Ilanngussaq una '{postTitle}' {postUrl}-imi taperseruk!", diff --git a/front/app/translations/lb-LU.json b/front/app/translations/lb-LU.json index 4b4c13d14d3f..9559dceaeb18 100644 --- a/front/app/translations/lb-LU.json +++ b/front/app/translations/lb-LU.json @@ -1035,7 +1035,6 @@ "app.containers.IdeasShow.MetaInformation.currentStatus": "Aktuelle Status", "app.containers.IdeasShow.MetaInformation.location": "Standuert", "app.containers.IdeasShow.MetaInformation.postedBy": "Gepost vun/vum", - "app.containers.IdeasShow.MetaInformation.similarInputs": "Änlech Bäiträg", "app.containers.IdeasShow.MetaInformation.topics": "Sujeten", "app.containers.IdeasShow.commentCTA": "Kommentéieren", "app.containers.IdeasShow.contributionEmailSharingBody": "Ënnerstëtzt de Bäitrag '{postTitle}' ënner {postUrl}!", diff --git a/front/app/translations/lv-LV.json b/front/app/translations/lv-LV.json index b57d5138c5e4..1c733d875e46 100644 --- a/front/app/translations/lv-LV.json +++ b/front/app/translations/lv-LV.json @@ -1035,7 +1035,6 @@ "app.containers.IdeasShow.MetaInformation.currentStatus": "Pašreizējais statuss", "app.containers.IdeasShow.MetaInformation.location": "Atrašanās vieta", "app.containers.IdeasShow.MetaInformation.postedBy": "Publicēja", - "app.containers.IdeasShow.MetaInformation.similarInputs": "Līdzīgs ieguldījums", "app.containers.IdeasShow.MetaInformation.topics": "Tagi", "app.containers.IdeasShow.commentCTA": "Pievienot komentāru", "app.containers.IdeasShow.contributionEmailSharingBody": "Atbalstīt šo ieguldījumu '{postTitle}' {postUrl}!", diff --git a/front/app/translations/mi.json b/front/app/translations/mi.json index f8de2b5aa6c1..9ad1d40ab0d0 100644 --- a/front/app/translations/mi.json +++ b/front/app/translations/mi.json @@ -633,7 +633,6 @@ "app.containers.IdeasShow.MetaInformation.currentStatus": "Current status", "app.containers.IdeasShow.MetaInformation.location": "Location", "app.containers.IdeasShow.MetaInformation.postedBy": "Posted by", - "app.containers.IdeasShow.MetaInformation.similarInputs": "Similar input", "app.containers.IdeasShow.MetaInformation.topics": "Tags", "app.containers.IdeasShow.commentCTA": "Add a comment", "app.containers.IdeasShow.contributionEmailSharingBody": "Support this contribution '{postTitle}' at {postUrl}!", diff --git a/front/app/translations/nb-NO.json b/front/app/translations/nb-NO.json index 77c5dd0e3ce0..b8082254783c 100644 --- a/front/app/translations/nb-NO.json +++ b/front/app/translations/nb-NO.json @@ -1035,7 +1035,6 @@ "app.containers.IdeasShow.MetaInformation.currentStatus": "Nåværende status", "app.containers.IdeasShow.MetaInformation.location": "Sted", "app.containers.IdeasShow.MetaInformation.postedBy": "Publisert av", - "app.containers.IdeasShow.MetaInformation.similarInputs": "Lignende innspill", "app.containers.IdeasShow.MetaInformation.topics": "Emner", "app.containers.IdeasShow.commentCTA": "Legg til en kommentar", "app.containers.IdeasShow.contributionEmailSharingBody": "Støtt dette bidraget '{postTitle}' på {postUrl}!", diff --git a/front/app/translations/nl-BE.json b/front/app/translations/nl-BE.json index 496c220a5581..ce70d77013bf 100644 --- a/front/app/translations/nl-BE.json +++ b/front/app/translations/nl-BE.json @@ -1035,7 +1035,6 @@ "app.containers.IdeasShow.MetaInformation.currentStatus": "Huidige status", "app.containers.IdeasShow.MetaInformation.location": "Locatie", "app.containers.IdeasShow.MetaInformation.postedBy": "Geplaatst door", - "app.containers.IdeasShow.MetaInformation.similarInputs": "Vergelijkbare bijdragen", "app.containers.IdeasShow.MetaInformation.topics": "Tags", "app.containers.IdeasShow.commentCTA": "Voeg een reactie toe", "app.containers.IdeasShow.contributionEmailSharingBody": "Dit onderwerp '{postTitle}' op {postUrl} steunen!", diff --git a/front/app/translations/nl-NL.json b/front/app/translations/nl-NL.json index 3db6ab7b7b76..fe6933724512 100644 --- a/front/app/translations/nl-NL.json +++ b/front/app/translations/nl-NL.json @@ -1035,7 +1035,6 @@ "app.containers.IdeasShow.MetaInformation.currentStatus": "Huidige status", "app.containers.IdeasShow.MetaInformation.location": "Locatie", "app.containers.IdeasShow.MetaInformation.postedBy": "Geplaatst door", - "app.containers.IdeasShow.MetaInformation.similarInputs": "Vergelijkbare bijdragen", "app.containers.IdeasShow.MetaInformation.topics": "Tags", "app.containers.IdeasShow.commentCTA": "Voeg een reactie toe", "app.containers.IdeasShow.contributionEmailSharingBody": "Deze bijdrage '{postTitle}' op {postUrl} steunen!", diff --git a/front/app/translations/pl-PL.json b/front/app/translations/pl-PL.json index 7e4a74713038..5aa0c4fe0d78 100644 --- a/front/app/translations/pl-PL.json +++ b/front/app/translations/pl-PL.json @@ -1035,7 +1035,6 @@ "app.containers.IdeasShow.MetaInformation.currentStatus": "Aktualny status", "app.containers.IdeasShow.MetaInformation.location": "Lokalizacja", "app.containers.IdeasShow.MetaInformation.postedBy": "Zgłoszony przez", - "app.containers.IdeasShow.MetaInformation.similarInputs": "Podobne inicjatywy", "app.containers.IdeasShow.MetaInformation.topics": "Tematy", "app.containers.IdeasShow.commentCTA": "Skomentuj", "app.containers.IdeasShow.contributionEmailSharingBody": "Poprzyj ten wkład '{postTitle}' w {postUrl}!", diff --git a/front/app/translations/pt-BR.json b/front/app/translations/pt-BR.json index 94aa5996dec4..cdd45f570e2b 100644 --- a/front/app/translations/pt-BR.json +++ b/front/app/translations/pt-BR.json @@ -86,7 +86,7 @@ "app.components.ConsentManager.Banner.mainText": "Ao navegar, você concorda com nossas {policyLink}.", "app.components.ConsentManager.Banner.manage": "Gerenciar ", "app.components.ConsentManager.Banner.policyLink": "Política de Cookies", - "app.components.ConsentManager.Banner.reject": "Rejeitar", + "app.components.ConsentManager.Banner.reject": "Recusar", "app.components.ConsentManager.Banner.subText": "Você pode acessar suas configurações de cookies em qualquer momento.", "app.components.ConsentManager.Modal.CancelDialog.confirm": "Confirmar", "app.components.ConsentManager.Modal.CancelDialog.confirmation": "Se você cancelar, perderá as suas preferências.", @@ -1035,7 +1035,6 @@ "app.containers.IdeasShow.MetaInformation.currentStatus": "Status atual", "app.containers.IdeasShow.MetaInformation.location": "Localização", "app.containers.IdeasShow.MetaInformation.postedBy": "Postado por", - "app.containers.IdeasShow.MetaInformation.similarInputs": "Entradas semelhantes", "app.containers.IdeasShow.MetaInformation.topics": "Tópicos", "app.containers.IdeasShow.commentCTA": "Adicionar um comentário", "app.containers.IdeasShow.contributionEmailSharingBody": "Apoie esta contribuição '{postTitle}' em {postUrl}!", diff --git a/front/app/translations/ro-RO.json b/front/app/translations/ro-RO.json index ddc9dd4fa7ac..e458249e935a 100644 --- a/front/app/translations/ro-RO.json +++ b/front/app/translations/ro-RO.json @@ -803,7 +803,6 @@ "app.containers.IdeasShow.MetaInformation.currentStatus": "Statusul curent", "app.containers.IdeasShow.MetaInformation.location": "Locație", "app.containers.IdeasShow.MetaInformation.postedBy": "Postat de", - "app.containers.IdeasShow.MetaInformation.similarInputs": "Postări similare", "app.containers.IdeasShow.MetaInformation.topics": "Subiecte", "app.containers.IdeasShow.commentCTA": "Adaugă un comentariu", "app.containers.IdeasShow.contributionEmailSharingBody": "Susține această contribuție '{postTitle}' la {postUrl}!", diff --git a/front/app/translations/sr-Latn.json b/front/app/translations/sr-Latn.json index ba4d0340dfa1..0fd7afe1b4cb 100644 --- a/front/app/translations/sr-Latn.json +++ b/front/app/translations/sr-Latn.json @@ -1035,7 +1035,6 @@ "app.containers.IdeasShow.MetaInformation.currentStatus": "Trenutni status", "app.containers.IdeasShow.MetaInformation.location": "Lokacija", "app.containers.IdeasShow.MetaInformation.postedBy": "Objava od", - "app.containers.IdeasShow.MetaInformation.similarInputs": "Slični unosi", "app.containers.IdeasShow.MetaInformation.topics": "Teme", "app.containers.IdeasShow.commentCTA": "Dodajte komentar", "app.containers.IdeasShow.contributionEmailSharingBody": "Podržite '{postTitle}' na {postUrl}!", diff --git a/front/app/translations/sr-SP.json b/front/app/translations/sr-SP.json index a1d65143d59d..54498cc23e0a 100644 --- a/front/app/translations/sr-SP.json +++ b/front/app/translations/sr-SP.json @@ -1035,7 +1035,6 @@ "app.containers.IdeasShow.MetaInformation.currentStatus": "Тренутни статус", "app.containers.IdeasShow.MetaInformation.location": "Локација", "app.containers.IdeasShow.MetaInformation.postedBy": "Поставио", - "app.containers.IdeasShow.MetaInformation.similarInputs": "Сличан унос", "app.containers.IdeasShow.MetaInformation.topics": "Тема", "app.containers.IdeasShow.commentCTA": "Додајте коментар", "app.containers.IdeasShow.contributionEmailSharingBody": "Подржите овај допринос '{postTitle}' на {postUrl}!", diff --git a/front/app/translations/sv-SE.json b/front/app/translations/sv-SE.json index c47b1b67f9e7..326ee4717775 100644 --- a/front/app/translations/sv-SE.json +++ b/front/app/translations/sv-SE.json @@ -1035,7 +1035,6 @@ "app.containers.IdeasShow.MetaInformation.currentStatus": "Aktuell status", "app.containers.IdeasShow.MetaInformation.location": "Plats", "app.containers.IdeasShow.MetaInformation.postedBy": "Publicerades av", - "app.containers.IdeasShow.MetaInformation.similarInputs": "Liknande indata", "app.containers.IdeasShow.MetaInformation.topics": "Ämnen", "app.containers.IdeasShow.commentCTA": "Lägg till en kommentar", "app.containers.IdeasShow.contributionEmailSharingBody": "Stöd det här bidraget {postTitle} på {postUrl}!", diff --git a/front/app/translations/tr-TR.json b/front/app/translations/tr-TR.json index 45e9537e2f5f..e2430768adfd 100644 --- a/front/app/translations/tr-TR.json +++ b/front/app/translations/tr-TR.json @@ -1035,7 +1035,6 @@ "app.containers.IdeasShow.MetaInformation.currentStatus": "Şu andaki durum", "app.containers.IdeasShow.MetaInformation.location": "Konum", "app.containers.IdeasShow.MetaInformation.postedBy": "Yayınlayan", - "app.containers.IdeasShow.MetaInformation.similarInputs": "Benzer girdi", "app.containers.IdeasShow.MetaInformation.topics": "Etiketler", "app.containers.IdeasShow.commentCTA": "Bir yorum ekleyin", "app.containers.IdeasShow.contributionEmailSharingBody": "{postUrl} üzerinden '{postTitle}' adlı bu katkıya destek olun!", diff --git a/front/package-lock.json b/front/package-lock.json index 3f0ab78b1582..045c749e7b00 100644 --- a/front/package-lock.json +++ b/front/package-lock.json @@ -19110,9 +19110,9 @@ "integrity": "sha512-Rwix9pBtC1Nuy5wysTmKy+UjbDJpIfg8eHjw0rjZ1mX4GNLz1Bmd16uDpI3Gk1i70Fgcs8Csg2lPm8HULFg9DQ==" }, "node_modules/follow-redirects": { - "version": "1.14.9", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.9.tgz", - "integrity": "sha512-MQDfihBQYMcyy5dhRDJUHcw7lb2Pv/TuE6xP1vyraLukNDHKbDxDNaOE3NbCAdKQApno+GPRyo1YAp89yCjK4w==", + "version": "1.15.4", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.4.tgz", + "integrity": "sha512-Cr4D/5wlrb0z9dgERpUL3LrmPKVDsETIJhaCMeDfuFYcqa5bldGV6wBsAN6X/vxlXQtFBMrXdXxdL8CbDTGniw==", "dev": true, "funding": [ { @@ -44943,9 +44943,9 @@ "integrity": "sha512-Rwix9pBtC1Nuy5wysTmKy+UjbDJpIfg8eHjw0rjZ1mX4GNLz1Bmd16uDpI3Gk1i70Fgcs8Csg2lPm8HULFg9DQ==" }, "follow-redirects": { - "version": "1.14.9", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.9.tgz", - "integrity": "sha512-MQDfihBQYMcyy5dhRDJUHcw7lb2Pv/TuE6xP1vyraLukNDHKbDxDNaOE3NbCAdKQApno+GPRyo1YAp89yCjK4w==", + "version": "1.15.4", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.4.tgz", + "integrity": "sha512-Cr4D/5wlrb0z9dgERpUL3LrmPKVDsETIJhaCMeDfuFYcqa5bldGV6wBsAN6X/vxlXQtFBMrXdXxdL8CbDTGniw==", "dev": true }, "for-each": {