@bigbinary/neeto-seo-frontend 3.0.3 → 3.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,45 @@
1
+ {
2
+ "neetoSeo": {
3
+ "title": "Suchmaschinenoptimierung",
4
+ "manageSeoSettings": "SEO-Einstellungen verwalten",
5
+ "readHelpArticle": "<Link>Weitere Informationen lesen</Link>, um mehr über die Konfiguration der SEO-Einstellungen zu erfahren.",
6
+ "buttons": {
7
+ "configure": "Konfigurieren"
8
+ },
9
+ "helpPopovers": {
10
+ "seo": "Sie können die SEO-Einstellungen konfigurieren, indem Sie die Meta-Beschreibung und Keywords verwenden, um die Sichtbarkeit zu verbessern, und mehr.",
11
+ "title": "Gibt den Titel der Webseite an. Er wird als Teil des Suchausschnitts auf der Ergebnisseite der Suchmaschine angezeigt. Er erscheint als klickbare Überschrift für das Suchergebnis.",
12
+ "titleSuffix": "Er wird als Suffix zu den Seitentiteln auf allen Seiten hinzugefügt.",
13
+ "description": "Die Meta-Beschreibung liefert eine Zusammenfassung der Webseite. Sie wird als Teil des Suchausschnitts auf der Ergebnisseite der Suchmaschine angezeigt. Sie soll dem Benutzer eine kurze Vorstellung davon geben, worum es bei {{entity}} geht und wie es mit seiner Suchanfrage zusammenhängt.",
14
+ "keywords": "Keywords helfen Suchmaschinen, den Inhalt des {{entity}} zu verstehen, und verbessern somit dessen Ranking in den Suchergebnissen.",
15
+ "googleAnalytics": "Verbinden Sie Ihr Google Analytics-Konto und überwachen Sie die Leistung Ihres {{entity}} mit Google Analytics.",
16
+ "coverImage": "Das Cover-Bild ist das Bild, das oben auf der Webseite erscheint. Es wird als Teil des Suchausschnitts in den Suchergebnissen angezeigt.",
17
+ "allowSearchEngineCrawl": "Aktivieren Sie die Indizierung durch Suchmaschinen, damit sie in den Suchergebnissen erscheinen."
18
+ },
19
+ "labels": {
20
+ "viewHelpArticle": "Hilfeartikel ansehen",
21
+ "title": "{{entity}}-Titel",
22
+ "titleSuffix": "{{entity}}-Titel-Suffix",
23
+ "description": "Meta-Beschreibung",
24
+ "keywords": "Keywords",
25
+ "allowSearchEngineCrawl": "Suchmaschinen erlauben, dieses {{entity}} zu indexieren",
26
+ "googleAnalytics": "Google Analytics",
27
+ "googleAnalyticsTrackingId": "Google Analytics Tracking-ID",
28
+ "coverImage": "Cover-Bild"
29
+ },
30
+ "placeholders": {
31
+ "title": "{{entity}}-Titel eingeben",
32
+ "titleSuffix": "{{entity}}-Titel-Suffix eingeben",
33
+ "description": "Meta-Beschreibung eingeben",
34
+ "keywords": "Keywords eingeben",
35
+ "googleAnalyticsTrackingId": "UA-000000-2"
36
+ },
37
+ "validations": {
38
+ "valid": "{{what}} muss gültig sein",
39
+ "required": "{{what}} ist erforderlich"
40
+ },
41
+ "subLabels": {
42
+ "keywords": "Keywords müssen durch Kommas getrennt sein"
43
+ }
44
+ }
45
+ }
@@ -0,0 +1,45 @@
1
+ {
2
+ "neetoSeo": {
3
+ "title": "Optimización para motores de búsqueda",
4
+ "manageSeoSettings": "Gestionar configuraciones de SEO",
5
+ "readHelpArticle": "<Link>Leer más</Link> para aprender más sobre cómo configurar las configuraciones de SEO.",
6
+ "buttons": {
7
+ "configure": "Configurar"
8
+ },
9
+ "helpPopovers": {
10
+ "seo": "Puedes configurar las configuraciones de SEO utilizando la meta descripción, palabras clave para mejorar la visibilidad, y más.",
11
+ "title": "Especifica el título de la página web. Se muestra como parte del fragmento de búsqueda en la página de resultados del motor de búsqueda. Aparece como un encabezado clicable para el resultado de búsqueda.",
12
+ "titleSuffix": "Se agrega como sufijo a los títulos de las páginas en todas las páginas.",
13
+ "description": "La meta descripción proporciona un resumen de la página web. Se muestra como parte del fragmento de búsqueda en la página de resultados del motor de búsqueda. Está destinada a dar al usuario una idea breve de lo que trata {{entity}} y cómo se relaciona con su consulta de búsqueda.",
14
+ "keywords": "Las palabras clave ayudan a los motores de búsqueda a entender el contenido de {{entity}}, mejorando así su clasificación en los resultados de búsqueda.",
15
+ "googleAnalytics": "Conecta tu cuenta de Google Analytics y monitorea el rendimiento de tu {{entity}} utilizando Google Analytics.",
16
+ "coverImage": "La imagen de portada es la imagen que aparece en la parte superior de la página web. Se muestra como parte del fragmento de búsqueda en la página de resultados del motor de búsqueda.",
17
+ "allowSearchEngineCrawl": "Habilita la indexación de motores de búsqueda, ayudando a que aparezcan en los resultados de búsqueda."
18
+ },
19
+ "labels": {
20
+ "viewHelpArticle": "Ver artículo de ayuda",
21
+ "title": "{{entity}} título",
22
+ "titleSuffix": "{{entity}} sufijo de título",
23
+ "description": "Meta descripción",
24
+ "keywords": "Palabras clave",
25
+ "allowSearchEngineCrawl": "Permitir que los motores de búsqueda indexen este {{entity}}",
26
+ "googleAnalytics": "Google Analytics",
27
+ "googleAnalyticsTrackingId": "ID de seguimiento de Google Analytics",
28
+ "coverImage": "Imagen de portada"
29
+ },
30
+ "placeholders": {
31
+ "title": "Ingresa el título de {{entity}}",
32
+ "titleSuffix": "Ingresa el sufijo del título de {{entity}}",
33
+ "description": "Ingresa la meta descripción",
34
+ "keywords": "Ingresa palabras clave",
35
+ "googleAnalyticsTrackingId": "UA-000000-2"
36
+ },
37
+ "validations": {
38
+ "valid": "{{what}} debe ser válido",
39
+ "required": "{{what}} es requerido"
40
+ },
41
+ "subLabels": {
42
+ "keywords": "Las palabras clave deben estar separadas por comas"
43
+ }
44
+ }
45
+ }
@@ -0,0 +1,45 @@
1
+ {
2
+ "neetoSeo": {
3
+ "title": "Optimisation des moteurs de recherche",
4
+ "manageSeoSettings": "Gérer les paramètres SEO",
5
+ "readHelpArticle": "<Link>Lire la suite</Link> pour en savoir plus sur la configuration des paramètres SEO.",
6
+ "buttons": {
7
+ "configure": "Configurer"
8
+ },
9
+ "helpPopovers": {
10
+ "seo": "Vous pouvez configurer les paramètres SEO en utilisant la méta description, des mots-clés pour améliorer la visibilité, et plus encore.",
11
+ "title": "Spécifie le titre de la page web. Il est affiché comme partie de l'extrait de recherche sur la page de résultats des moteurs de recherche. Il apparaît comme un titre cliquable pour le résultat de recherche.",
12
+ "titleSuffix": "Il est ajouté en tant que suffixe aux titres de pages sur toutes les pages.",
13
+ "description": "La méta description fournit un résumé de la page web. Elle est affichée comme partie de l'extrait de recherche sur la page de résultats des moteurs de recherche. Elle est destinée à donner à l'utilisateur une brève idée de ce qu'est le {{entity}} et comment il se rapporte à sa requête de recherche.",
14
+ "keywords": "Les mots-clés aident les moteurs de recherche à comprendre le contenu du {{entity}}, améliorant ainsi son classement dans les résultats de recherche.",
15
+ "googleAnalytics": "Connectez votre compte Google Analytics et surveillez les performances de votre {{entity}} à l'aide de Google Analytics.",
16
+ "coverImage": "L'image de couverture est l'image qui apparaît en haut de la page web. Elle est affichée comme partie de l'extrait de recherche dans la page de résultats des moteurs de recherche.",
17
+ "allowSearchEngineCrawl": "Activez l'indexation par les moteurs de recherche, les aidant à apparaître dans les résultats de recherche."
18
+ },
19
+ "labels": {
20
+ "viewHelpArticle": "Voir l'article d'aide",
21
+ "title": "Titre de {{entity}}",
22
+ "titleSuffix": "Suffixe du titre de {{entity}}",
23
+ "description": "Méta description",
24
+ "keywords": "Mots-clés",
25
+ "allowSearchEngineCrawl": "Autoriser les moteurs de recherche à indexer ce {{entity}}",
26
+ "googleAnalytics": "Google Analytics",
27
+ "googleAnalyticsTrackingId": "ID de suivi Google Analytics",
28
+ "coverImage": "Image de couverture"
29
+ },
30
+ "placeholders": {
31
+ "title": "Entrez le titre de {{entity}}",
32
+ "titleSuffix": "Entrez le suffixe du titre de {{entity}}",
33
+ "description": "Entrez la méta description",
34
+ "keywords": "Entrez les mots-clés",
35
+ "googleAnalyticsTrackingId": "UA-000000-2"
36
+ },
37
+ "validations": {
38
+ "valid": "{{what}} doit être valide",
39
+ "required": "{{what}} est requis"
40
+ },
41
+ "subLabels": {
42
+ "keywords": "Les mots-clés doivent être séparés par des virgules"
43
+ }
44
+ }
45
+ }
@@ -1,3 +1,4 @@
1
+ import { useState, useEffect } from 'react';
1
2
  import PageLoader from '@bigbinary/neeto-molecules/PageLoader';
2
3
  import NeetoUIPane from '@bigbinary/neetoui/Pane';
3
4
  import Typography from '@bigbinary/neetoui/Typography';
@@ -19,7 +20,6 @@ import HelpPopover from '@bigbinary/neeto-molecules/HelpPopover';
19
20
  import Label from '@bigbinary/neetoui/Label';
20
21
  import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
21
22
  import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
22
- import { useState } from 'react';
23
23
  import Switch$1 from '@bigbinary/neetoui/formik/Switch';
24
24
  import Input$1 from '@bigbinary/neetoui/formik/Input';
25
25
  import { withT } from '@bigbinary/neeto-commons-frontend/react-utils';
@@ -109,11 +109,10 @@ var GoogleAnalyticsTracking = function GoogleAnalyticsTracking(_ref) {
109
109
  googleAnalyticsEnabled = _useState2[0],
110
110
  setGoogleAnalyticsEnabled = _useState2[1];
111
111
  var _useFormikContext = useFormikContext(),
112
- setFieldValue = _useFormikContext.setFieldValue,
113
- values = _useFormikContext.values;
112
+ setFieldValue = _useFormikContext.setFieldValue;
114
113
  var handleSwitchChange = function handleSwitchChange() {
115
114
  setGoogleAnalyticsEnabled(!googleAnalyticsEnabled);
116
- setFieldValue("googleAnalyticsEnabled", !values.googleAnalyticsEnabled);
115
+ setFieldValue("googleAnalyticsEnabled", !googleAnalyticsEnabled);
117
116
  setFieldValue("googleAnalyticsTrackingId", "");
118
117
  };
119
118
  return /*#__PURE__*/jsxs(Fragment, {
@@ -309,7 +308,13 @@ var Pane = function Pane(_ref) {
309
308
  var _useFetchSeoSettings = useFetchSeoSettings(apiEndpointUrl),
310
309
  _useFetchSeoSettings$ = _useFetchSeoSettings.data,
311
310
  seoSetting = _useFetchSeoSettings$ === void 0 ? {} : _useFetchSeoSettings$,
312
- isLoading = _useFetchSeoSettings.isLoading;
311
+ isLoading = _useFetchSeoSettings.isLoading,
312
+ refetch = _useFetchSeoSettings.refetch;
313
+ useEffect(function () {
314
+ if (isOpen) {
315
+ refetch();
316
+ }
317
+ }, [isOpen, refetch]);
313
318
  var _useUpdateSeoSettings = useUpdateSeoSettings(apiEndpointUrl, {
314
319
  onSuccess: onClose
315
320
  }),
@@ -1 +1 @@
1
- {"version":3,"file":"SeoSettingsPane.js","sources":["../app/javascript/src/apis/seo_settings.js","../app/javascript/src/hooks/reactQuery/constants.js","../app/javascript/src/hooks/reactQuery/useSeoSettingsApi.js","../app/javascript/src/components/SeoSettings/Pane/CoverImage.jsx","../app/javascript/src/components/SeoSettings/Pane/GoogleAnalyticsTracking.jsx","../app/javascript/src/components/SeoSettings/Pane/Input.jsx","../app/javascript/src/components/SeoSettings/Pane/Switch.jsx","../app/javascript/src/components/SeoSettings/Pane/utils.js","../app/javascript/src/components/SeoSettings/Pane/Textarea.jsx","../app/javascript/src/components/SeoSettings/Pane/constants.js","../app/javascript/src/components/SeoSettings/Pane/index.jsx"],"sourcesContent":["import axios from \"axios\";\n\nconst fetch = url => axios.get(url);\n\nconst update = ({ url, payload }) => axios.patch(url, payload);\n\nconst seoSettingsApi = { fetch, update };\n\nexport default seoSettingsApi;\n","export const SEO_SETTINGS_QUERY_KEY = \"seo-settings\";\n","import { useQuery } from \"@tanstack/react-query\";\nimport useMutationWithInvalidation from \"neetocommons/react-utils/useMutationWithInvalidation\";\n\nimport seoSettingsApi from \"apis/seo_settings\";\n\nimport { SEO_SETTINGS_QUERY_KEY } from \"./constants\";\n\nconst useFetchSeoSettings = params =>\n useQuery({\n queryKey: [SEO_SETTINGS_QUERY_KEY, params],\n queryFn: () => seoSettingsApi.fetch(params),\n enabled: !!params,\n });\n\nconst useUpdateSeoSettings = (url, options = {}) =>\n useMutationWithInvalidation(seoSettingsApi.update, {\n ...options,\n keysToInvalidate: [[SEO_SETTINGS_QUERY_KEY, url]],\n });\n\nexport { useFetchSeoSettings, useUpdateSeoSettings };\n","import { ImageUploader } from \"@bigbinary/neeto-image-uploader-frontend\";\nimport classNames from \"classnames\";\nimport { useFormikContext } from \"formik\";\nimport { isNotPresent, isPresent } from \"neetocist\";\nimport HelpPopover from \"neetomolecules/HelpPopover\";\nimport { Label } from \"neetoui\";\nimport { useTranslation } from \"react-i18next\";\n\nconst CoverImage = ({ popOverDescription, helpDocUrl, defaultHelpDocUrl }) => {\n const { t } = useTranslation();\n const { values, setFieldValue } = useFormikContext();\n\n const onImageUploadComplete = ({ signedId, url }) => {\n setFieldValue(\"coverImage\", signedId);\n setFieldValue(\"coverImageUrl\", url);\n };\n\n return (\n <div className=\"space-y-2\">\n <div className=\"flex items-center space-x-2\">\n <Label>{t(\"neetoSeo.labels.coverImage\")}</Label>\n <HelpPopover\n helpLinkProps={{ href: helpDocUrl || defaultHelpDocUrl }}\n description={\n popOverDescription || t(\"neetoSeo.helpPopovers.coverImage\")\n }\n />\n </div>\n <ImageUploader\n src={values.coverImageUrl}\n className={classNames({\n \"h-56\": isPresent(values.coverImageUrl),\n \"h-[128px]\": isNotPresent(values.coverImageUrl),\n })}\n onUploadComplete={onImageUploadComplete}\n />\n </div>\n );\n};\n\nexport default CoverImage;\n","import { useState } from \"react\";\n\nimport { useFormikContext } from \"formik\";\nimport HelpPopover from \"neetomolecules/HelpPopover\";\nimport { Switch, Input } from \"neetoui/formik\";\nimport { useTranslation } from \"react-i18next\";\n\nconst GoogleAnalyticsTracking = ({\n helpDocUrl,\n popOverDescription,\n entity,\n defaultHelpDocUrl,\n seoSetting,\n}) => {\n const { t } = useTranslation();\n\n const [googleAnalyticsEnabled, setGoogleAnalyticsEnabled] = useState(\n !!seoSetting?.googleAnalyticsTrackingId\n );\n\n const { setFieldValue, values } = useFormikContext();\n\n const handleSwitchChange = () => {\n setGoogleAnalyticsEnabled(!googleAnalyticsEnabled);\n setFieldValue(\"googleAnalyticsEnabled\", !values.googleAnalyticsEnabled);\n setFieldValue(\"googleAnalyticsTrackingId\", \"\");\n };\n\n return (\n <>\n <div className=\"flex items-center space-x-2\">\n <Switch\n checked={googleAnalyticsEnabled}\n label={t(\"neetoSeo.labels.googleAnalytics\")}\n name=\"googleAnalyticsEnabled\"\n onChange={handleSwitchChange}\n />\n <HelpPopover\n helpLinkProps={{ href: helpDocUrl || defaultHelpDocUrl }}\n description={\n popOverDescription ||\n t(\"neetoSeo.helpPopovers.googleAnalytics\", { entity })\n }\n />\n </div>\n {googleAnalyticsEnabled && (\n <Input\n className=\"mt-4\"\n name=\"googleAnalyticsTrackingId\"\n placeholder={t(\"neetoSeo.placeholders.googleAnalyticsTrackingId\")}\n />\n )}\n </>\n );\n};\n\nexport default GoogleAnalyticsTracking;\n","import { withT } from \"neetocommons/react-utils\";\nimport { Input as NeetoUIInput } from \"neetoui/formik\";\n\nconst Input = withT(\n ({\n t,\n name,\n helpDocUrl,\n popOverDescription,\n entity,\n defaultHelpDocUrl,\n altLabel,\n altPlaceholder,\n maxLength,\n }) => (\n <NeetoUIInput\n {...{ name }}\n label={altLabel || t(`neetoSeo.labels.${name}`, { entity })}\n maxLength={maxLength || 160}\n unlimitedChars={false}\n labelProps={{\n helpIconProps: {\n popoverProps: {\n description:\n popOverDescription || t(`neetoSeo.helpPopovers.${name}`),\n helpLinkProps: {\n label: t(\"neetoSeo.labels.viewHelpArticle\"),\n href: helpDocUrl || defaultHelpDocUrl,\n },\n },\n },\n }}\n placeholder={\n altPlaceholder || t(`neetoSeo.placeholders.${name}`, { entity })\n }\n />\n )\n);\n\nexport default Input;\n","import { withT } from \"neetocommons/react-utils\";\nimport HelpPopover from \"neetomolecules/HelpPopover\";\nimport { Switch as NeetoUISwitch } from \"neetoui/formik\";\n\nconst Switch = withT(\n ({\n t,\n name,\n entity,\n altLabel,\n helpDocUrl,\n defaultHelpDocUrl,\n popOverDescription,\n }) => (\n <div className=\"flex items-center space-x-2\">\n <NeetoUISwitch\n {...{ name }}\n label={altLabel || t(`neetoSeo.labels.${name}`, { entity })}\n />\n <HelpPopover\n helpLinkProps={{ href: helpDocUrl || defaultHelpDocUrl }}\n description={\n popOverDescription ||\n t(\"neetoSeo.helpPopovers.allowSearchEngineCrawl\")\n }\n />\n </div>\n )\n);\n\nexport default Switch;\n","import { isNot } from \"neetocist\";\nimport { trim } from \"ramda\";\n\nexport const populateKeywords = keywords =>\n keywords?.map(keyword => keyword?.trim()).join(\", \");\n\nexport const extractKeywords = stringOfKeywords =>\n stringOfKeywords?.split(\",\").map(trim).filter(isNot(\"\"));\n","import { useState } from \"react\";\n\nimport { useFormikContext } from \"formik\";\nimport { Textarea as NeetoUITextarea } from \"neetoui/formik\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { SEO_FIELDS } from \"./constants\";\nimport { extractKeywords, populateKeywords } from \"./utils\";\n\nconst Textarea = ({\n name,\n helpDocUrl,\n popOverDescription,\n entity,\n defaultHelpDocUrl,\n altLabel,\n altPlaceholder,\n maxLength,\n seoSetting,\n}) => {\n const { t } = useTranslation();\n const [keywordString, setKeywordString] = useState(\n populateKeywords(seoSetting.keywords)\n );\n const { setFieldValue, values } = useFormikContext();\n\n const handleChangeKeyword = event => {\n const string = event.target.value;\n setKeywordString(string);\n\n if (name === SEO_FIELDS.KEYWORDS) {\n const newKeywords = extractKeywords(string);\n setFieldValue(name, newKeywords);\n } else {\n setFieldValue(name, string);\n }\n };\n\n return (\n <>\n <NeetoUITextarea\n {...{ name }}\n label={altLabel || t(`neetoSeo.labels.${name}`)}\n maxLength={maxLength || 150}\n placeholder={altPlaceholder || t(`neetoSeo.placeholders.${name}`)}\n value={name === SEO_FIELDS.KEYWORDS ? keywordString : values[name]}\n labelProps={{\n helpIconProps: {\n popoverProps: {\n description:\n popOverDescription ||\n t(`neetoSeo.helpPopovers.${name}`, { entity }),\n helpLinkProps: {\n label: t(\"neetoSeo.labels.viewHelpArticle\"),\n href: helpDocUrl || defaultHelpDocUrl,\n },\n },\n },\n }}\n onChange={handleChangeKeyword}\n />\n {name === SEO_FIELDS.KEYWORDS && (\n <span className=\"neeto-ui-text-gray-600 text-xs leading-tight\">\n {t(\"neetoSeo.subLabels.keywords\")}\n </span>\n )}\n </>\n );\n};\n\nexport default Textarea;\n","import i18next from \"i18next\";\nimport * as yup from \"yup\";\n\nimport CoverImage from \"./CoverImage\";\nimport GoogleAnalyticsTracking from \"./GoogleAnalyticsTracking\";\nimport Input from \"./Input\";\nimport Switch from \"./Switch\";\nimport Textarea from \"./Textarea\";\n\nconst GOOGLE_ANALYTICS_TRACKING_ID_REGEX =\n /^((UA|YT|MO)-\\d+-\\d+)$|^(G-[a-zA-Z0-9]+)$/i;\n\nexport const TITLE_MAX_LENGTH = 160;\n\nexport const SEO_FIELDS = {\n TITLE: \"title\",\n TITLE_SUFFIX: \"titleSuffix\",\n DESCRIPTION: \"description\",\n KEYWORDS: \"keywords\",\n ALLOW_SEARCH_ENGINE_CRAWL: \"allowSearchEngineCrawl\",\n GOOGLE_ANALYTICS_TRACKING_ID: \"googleAnalyticsTrackingId\",\n COVER_IMAGE: \"coverImage\",\n};\n\nexport const SEO_FIELDS_COMPONENT = {\n [SEO_FIELDS.TITLE]: Input,\n [SEO_FIELDS.TITLE_SUFFIX]: Input,\n [SEO_FIELDS.DESCRIPTION]: Textarea,\n [SEO_FIELDS.KEYWORDS]: Textarea,\n [SEO_FIELDS.ALLOW_SEARCH_ENGINE_CRAWL]: Switch,\n [SEO_FIELDS.GOOGLE_ANALYTICS_TRACKING_ID]: GoogleAnalyticsTracking,\n [SEO_FIELDS.COVER_IMAGE]: CoverImage,\n};\n\nexport const SEO_SETTINGS_INITIAL_VALUES = {\n title: \"\",\n titleSuffix: \"\",\n description: \"\",\n keywords: [],\n allowSearchEngineCrawl: false,\n googleAnalyticsTrackingId: \"\",\n};\n\nexport const SEO_SETTINGS_VALIDATION_SCHEMA = yup.object().shape({\n googleAnalyticsTrackingId: yup.string().when(\"googleAnalyticsEnabled\", {\n is: true,\n then: yup\n .string()\n .trim()\n .required(\n i18next.t(\"neetoSeo.validations.required\", {\n what: i18next.t(\"neetoSeo.labels.googleAnalyticsTrackingId\"),\n })\n )\n .matches(\n GOOGLE_ANALYTICS_TRACKING_ID_REGEX,\n i18next.t(\"neetoSeo.validations.valid\", {\n what: i18next.t(\"neetoSeo.labels.googleAnalyticsTrackingId\"),\n })\n ),\n otherwise: yup.string().nullable(),\n }),\n});\n","import PageLoader from \"neetomolecules/PageLoader\";\nimport { Pane as NeetoUIPane, Typography } from \"neetoui\";\nimport { Form, ActionBlock } from \"neetoui/formik\";\nimport { omit } from \"ramda\";\nimport { useTranslation } from \"react-i18next\";\n\nimport {\n useFetchSeoSettings,\n useUpdateSeoSettings,\n} from \"hooks/reactQuery/useSeoSettingsApi\";\n\nimport {\n SEO_FIELDS_COMPONENT,\n SEO_SETTINGS_VALIDATION_SCHEMA,\n SEO_SETTINGS_INITIAL_VALUES,\n} from \"./constants\";\n\nconst Pane = ({\n apiEndpointUrl,\n isOpen,\n onClose,\n entity,\n defaultHelpDocUrl,\n seoFormFields,\n additionalComponent = null,\n}) => {\n const { t } = useTranslation();\n\n const { data: seoSetting = {}, isLoading } =\n useFetchSeoSettings(apiEndpointUrl);\n\n const { mutate: updateSeoSettings } = useUpdateSeoSettings(apiEndpointUrl, {\n onSuccess: onClose,\n });\n\n const handleSubmit = values => {\n const payload = omit([\"googleAnalyticsEnabled\"], values);\n updateSeoSettings({ url: apiEndpointUrl, payload });\n };\n\n if (isLoading) {\n return (\n <NeetoUIPane {...{ isOpen, onClose }}>\n <div className=\"flex h-screen w-full items-center justify-center\">\n <PageLoader />\n </div>\n </NeetoUIPane>\n );\n }\n\n return (\n <NeetoUIPane {...{ isOpen, onClose }}>\n <Form\n className=\"w-full\"\n formikProps={{\n enableReinitialize: true,\n initialValues: seoSetting || SEO_SETTINGS_INITIAL_VALUES,\n validationSchema: SEO_SETTINGS_VALIDATION_SCHEMA,\n onSubmit: handleSubmit,\n }}\n >\n <NeetoUIPane.Header className=\"space-y-2\">\n <Typography style=\"h2\">{t(\"neetoSeo.title\")}</Typography>\n </NeetoUIPane.Header>\n <NeetoUIPane.Body>\n {seoFormFields.map(\n ({\n name,\n helpDocUrl,\n popOverDescription,\n altLabel,\n altPlaceholder,\n maxLength,\n }) => {\n const FieldComponent = SEO_FIELDS_COMPONENT[name];\n\n if (!FieldComponent) {\n return null;\n }\n\n return (\n <div className=\"mt-4 w-full\" key={name}>\n <FieldComponent\n {...{\n altLabel,\n altPlaceholder,\n defaultHelpDocUrl,\n entity,\n helpDocUrl,\n maxLength,\n name,\n popOverDescription,\n seoSetting,\n }}\n />\n </div>\n );\n }\n )}\n <div className=\"mt-4 w-full\">{additionalComponent}</div>\n </NeetoUIPane.Body>\n <NeetoUIPane.Footer>\n <ActionBlock cancelButtonProps={{ onClick: onClose }} />\n </NeetoUIPane.Footer>\n </Form>\n </NeetoUIPane>\n );\n};\n\nexport default Pane;\n"],"names":["fetch","url","axios","get","update","_ref","payload","patch","seoSettingsApi","SEO_SETTINGS_QUERY_KEY","useFetchSeoSettings","params","useQuery","queryKey","queryFn","enabled","useUpdateSeoSettings","options","arguments","length","undefined","useMutationWithInvalidation","_objectSpread","keysToInvalidate","CoverImage","popOverDescription","helpDocUrl","defaultHelpDocUrl","_useTranslation","useTranslation","t","_useFormikContext","useFormikContext","values","setFieldValue","onImageUploadComplete","_ref2","signedId","_jsxs","className","children","_jsx","Label","HelpPopover","helpLinkProps","href","description","ImageUploader","src","coverImageUrl","classNames","isPresent","isNotPresent","onUploadComplete","GoogleAnalyticsTracking","entity","seoSetting","_useState","useState","googleAnalyticsTrackingId","_useState2","_slicedToArray","googleAnalyticsEnabled","setGoogleAnalyticsEnabled","handleSwitchChange","_Fragment","Switch","checked","label","name","onChange","Input","placeholder","withT","altLabel","altPlaceholder","maxLength","NeetoUIInput","concat","unlimitedChars","labelProps","helpIconProps","popoverProps","NeetoUISwitch","populateKeywords","keywords","map","keyword","trim","join","extractKeywords","stringOfKeywords","split","filter","isNot","Textarea","keywordString","setKeywordString","handleChangeKeyword","event","string","target","value","SEO_FIELDS","KEYWORDS","newKeywords","NeetoUITextarea","GOOGLE_ANALYTICS_TRACKING_ID_REGEX","TITLE","TITLE_SUFFIX","DESCRIPTION","ALLOW_SEARCH_ENGINE_CRAWL","GOOGLE_ANALYTICS_TRACKING_ID","COVER_IMAGE","SEO_FIELDS_COMPONENT","_defineProperty","SEO_SETTINGS_INITIAL_VALUES","title","titleSuffix","allowSearchEngineCrawl","SEO_SETTINGS_VALIDATION_SCHEMA","yup","object","shape","when","is","then","required","i18next","what","matches","otherwise","nullable","Pane","apiEndpointUrl","isOpen","onClose","seoFormFields","_ref$additionalCompon","additionalComponent","_useFetchSeoSettings","_useFetchSeoSettings$","data","isLoading","_useUpdateSeoSettings","onSuccess","updateSeoSettings","mutate","handleSubmit","omit","NeetoUIPane","PageLoader","Form","formikProps","enableReinitialize","initialValues","validationSchema","onSubmit","Header","Typography","style","Body","FieldComponent","Footer","ActionBlock","cancelButtonProps","onClick"],"mappings":"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"}
1
+ {"version":3,"file":"SeoSettingsPane.js","sources":["../app/javascript/src/apis/seo_settings.js","../app/javascript/src/hooks/reactQuery/constants.js","../app/javascript/src/hooks/reactQuery/useSeoSettingsApi.js","../app/javascript/src/components/SeoSettings/Pane/CoverImage.jsx","../app/javascript/src/components/SeoSettings/Pane/GoogleAnalyticsTracking.jsx","../app/javascript/src/components/SeoSettings/Pane/Input.jsx","../app/javascript/src/components/SeoSettings/Pane/Switch.jsx","../app/javascript/src/components/SeoSettings/Pane/utils.js","../app/javascript/src/components/SeoSettings/Pane/Textarea.jsx","../app/javascript/src/components/SeoSettings/Pane/constants.js","../app/javascript/src/components/SeoSettings/Pane/index.jsx"],"sourcesContent":["import axios from \"axios\";\n\nconst fetch = url => axios.get(url);\n\nconst update = ({ url, payload }) => axios.patch(url, payload);\n\nconst seoSettingsApi = { fetch, update };\n\nexport default seoSettingsApi;\n","export const SEO_SETTINGS_QUERY_KEY = \"seo-settings\";\n","import { useQuery } from \"@tanstack/react-query\";\nimport useMutationWithInvalidation from \"neetocommons/react-utils/useMutationWithInvalidation\";\n\nimport seoSettingsApi from \"apis/seo_settings\";\n\nimport { SEO_SETTINGS_QUERY_KEY } from \"./constants\";\n\nconst useFetchSeoSettings = params =>\n useQuery({\n queryKey: [SEO_SETTINGS_QUERY_KEY, params],\n queryFn: () => seoSettingsApi.fetch(params),\n enabled: !!params,\n });\n\nconst useUpdateSeoSettings = (url, options = {}) =>\n useMutationWithInvalidation(seoSettingsApi.update, {\n ...options,\n keysToInvalidate: [[SEO_SETTINGS_QUERY_KEY, url]],\n });\n\nexport { useFetchSeoSettings, useUpdateSeoSettings };\n","import { ImageUploader } from \"@bigbinary/neeto-image-uploader-frontend\";\nimport classNames from \"classnames\";\nimport { useFormikContext } from \"formik\";\nimport { isNotPresent, isPresent } from \"neetocist\";\nimport HelpPopover from \"neetomolecules/HelpPopover\";\nimport { Label } from \"neetoui\";\nimport { useTranslation } from \"react-i18next\";\n\nconst CoverImage = ({ popOverDescription, helpDocUrl, defaultHelpDocUrl }) => {\n const { t } = useTranslation();\n const { values, setFieldValue } = useFormikContext();\n\n const onImageUploadComplete = ({ signedId, url }) => {\n setFieldValue(\"coverImage\", signedId);\n setFieldValue(\"coverImageUrl\", url);\n };\n\n return (\n <div className=\"space-y-2\">\n <div className=\"flex items-center space-x-2\">\n <Label>{t(\"neetoSeo.labels.coverImage\")}</Label>\n <HelpPopover\n helpLinkProps={{ href: helpDocUrl || defaultHelpDocUrl }}\n description={\n popOverDescription || t(\"neetoSeo.helpPopovers.coverImage\")\n }\n />\n </div>\n <ImageUploader\n src={values.coverImageUrl}\n className={classNames({\n \"h-56\": isPresent(values.coverImageUrl),\n \"h-[128px]\": isNotPresent(values.coverImageUrl),\n })}\n onUploadComplete={onImageUploadComplete}\n />\n </div>\n );\n};\n\nexport default CoverImage;\n","import { useState } from \"react\";\n\nimport { useFormikContext } from \"formik\";\nimport HelpPopover from \"neetomolecules/HelpPopover\";\nimport { Switch, Input } from \"neetoui/formik\";\nimport { useTranslation } from \"react-i18next\";\n\nconst GoogleAnalyticsTracking = ({\n helpDocUrl,\n popOverDescription,\n entity,\n defaultHelpDocUrl,\n seoSetting,\n}) => {\n const { t } = useTranslation();\n\n const [googleAnalyticsEnabled, setGoogleAnalyticsEnabled] = useState(\n !!seoSetting?.googleAnalyticsTrackingId\n );\n\n const { setFieldValue } = useFormikContext();\n\n const handleSwitchChange = () => {\n setGoogleAnalyticsEnabled(!googleAnalyticsEnabled);\n setFieldValue(\"googleAnalyticsEnabled\", !googleAnalyticsEnabled);\n setFieldValue(\"googleAnalyticsTrackingId\", \"\");\n };\n\n return (\n <>\n <div className=\"flex items-center space-x-2\">\n <Switch\n checked={googleAnalyticsEnabled}\n label={t(\"neetoSeo.labels.googleAnalytics\")}\n name=\"googleAnalyticsEnabled\"\n onChange={handleSwitchChange}\n />\n <HelpPopover\n helpLinkProps={{ href: helpDocUrl || defaultHelpDocUrl }}\n description={\n popOverDescription ||\n t(\"neetoSeo.helpPopovers.googleAnalytics\", { entity })\n }\n />\n </div>\n {googleAnalyticsEnabled && (\n <Input\n className=\"mt-4\"\n name=\"googleAnalyticsTrackingId\"\n placeholder={t(\"neetoSeo.placeholders.googleAnalyticsTrackingId\")}\n />\n )}\n </>\n );\n};\n\nexport default GoogleAnalyticsTracking;\n","import { withT } from \"neetocommons/react-utils\";\nimport { Input as NeetoUIInput } from \"neetoui/formik\";\n\nconst Input = withT(\n ({\n t,\n name,\n helpDocUrl,\n popOverDescription,\n entity,\n defaultHelpDocUrl,\n altLabel,\n altPlaceholder,\n maxLength,\n }) => (\n <NeetoUIInput\n {...{ name }}\n label={altLabel || t(`neetoSeo.labels.${name}`, { entity })}\n maxLength={maxLength || 160}\n unlimitedChars={false}\n labelProps={{\n helpIconProps: {\n popoverProps: {\n description:\n popOverDescription || t(`neetoSeo.helpPopovers.${name}`),\n helpLinkProps: {\n label: t(\"neetoSeo.labels.viewHelpArticle\"),\n href: helpDocUrl || defaultHelpDocUrl,\n },\n },\n },\n }}\n placeholder={\n altPlaceholder || t(`neetoSeo.placeholders.${name}`, { entity })\n }\n />\n )\n);\n\nexport default Input;\n","import { withT } from \"neetocommons/react-utils\";\nimport HelpPopover from \"neetomolecules/HelpPopover\";\nimport { Switch as NeetoUISwitch } from \"neetoui/formik\";\n\nconst Switch = withT(\n ({\n t,\n name,\n entity,\n altLabel,\n helpDocUrl,\n defaultHelpDocUrl,\n popOverDescription,\n }) => (\n <div className=\"flex items-center space-x-2\">\n <NeetoUISwitch\n {...{ name }}\n label={altLabel || t(`neetoSeo.labels.${name}`, { entity })}\n />\n <HelpPopover\n helpLinkProps={{ href: helpDocUrl || defaultHelpDocUrl }}\n description={\n popOverDescription ||\n t(\"neetoSeo.helpPopovers.allowSearchEngineCrawl\")\n }\n />\n </div>\n )\n);\n\nexport default Switch;\n","import { isNot } from \"neetocist\";\nimport { trim } from \"ramda\";\n\nexport const populateKeywords = keywords =>\n keywords?.map(keyword => keyword?.trim()).join(\", \");\n\nexport const extractKeywords = stringOfKeywords =>\n stringOfKeywords?.split(\",\").map(trim).filter(isNot(\"\"));\n","import { useState } from \"react\";\n\nimport { useFormikContext } from \"formik\";\nimport { Textarea as NeetoUITextarea } from \"neetoui/formik\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { SEO_FIELDS } from \"./constants\";\nimport { extractKeywords, populateKeywords } from \"./utils\";\n\nconst Textarea = ({\n name,\n helpDocUrl,\n popOverDescription,\n entity,\n defaultHelpDocUrl,\n altLabel,\n altPlaceholder,\n maxLength,\n seoSetting,\n}) => {\n const { t } = useTranslation();\n const [keywordString, setKeywordString] = useState(\n populateKeywords(seoSetting.keywords)\n );\n const { setFieldValue, values } = useFormikContext();\n\n const handleChangeKeyword = event => {\n const string = event.target.value;\n setKeywordString(string);\n\n if (name === SEO_FIELDS.KEYWORDS) {\n const newKeywords = extractKeywords(string);\n setFieldValue(name, newKeywords);\n } else {\n setFieldValue(name, string);\n }\n };\n\n return (\n <>\n <NeetoUITextarea\n {...{ name }}\n label={altLabel || t(`neetoSeo.labels.${name}`)}\n maxLength={maxLength || 150}\n placeholder={altPlaceholder || t(`neetoSeo.placeholders.${name}`)}\n value={name === SEO_FIELDS.KEYWORDS ? keywordString : values[name]}\n labelProps={{\n helpIconProps: {\n popoverProps: {\n description:\n popOverDescription ||\n t(`neetoSeo.helpPopovers.${name}`, { entity }),\n helpLinkProps: {\n label: t(\"neetoSeo.labels.viewHelpArticle\"),\n href: helpDocUrl || defaultHelpDocUrl,\n },\n },\n },\n }}\n onChange={handleChangeKeyword}\n />\n {name === SEO_FIELDS.KEYWORDS && (\n <span className=\"neeto-ui-text-gray-600 text-xs leading-tight\">\n {t(\"neetoSeo.subLabels.keywords\")}\n </span>\n )}\n </>\n );\n};\n\nexport default Textarea;\n","import i18next from \"i18next\";\nimport * as yup from \"yup\";\n\nimport CoverImage from \"./CoverImage\";\nimport GoogleAnalyticsTracking from \"./GoogleAnalyticsTracking\";\nimport Input from \"./Input\";\nimport Switch from \"./Switch\";\nimport Textarea from \"./Textarea\";\n\nconst GOOGLE_ANALYTICS_TRACKING_ID_REGEX =\n /^((UA|YT|MO)-\\d+-\\d+)$|^(G-[a-zA-Z0-9]+)$/i;\n\nexport const TITLE_MAX_LENGTH = 160;\n\nexport const SEO_FIELDS = {\n TITLE: \"title\",\n TITLE_SUFFIX: \"titleSuffix\",\n DESCRIPTION: \"description\",\n KEYWORDS: \"keywords\",\n ALLOW_SEARCH_ENGINE_CRAWL: \"allowSearchEngineCrawl\",\n GOOGLE_ANALYTICS_TRACKING_ID: \"googleAnalyticsTrackingId\",\n COVER_IMAGE: \"coverImage\",\n};\n\nexport const SEO_FIELDS_COMPONENT = {\n [SEO_FIELDS.TITLE]: Input,\n [SEO_FIELDS.TITLE_SUFFIX]: Input,\n [SEO_FIELDS.DESCRIPTION]: Textarea,\n [SEO_FIELDS.KEYWORDS]: Textarea,\n [SEO_FIELDS.ALLOW_SEARCH_ENGINE_CRAWL]: Switch,\n [SEO_FIELDS.GOOGLE_ANALYTICS_TRACKING_ID]: GoogleAnalyticsTracking,\n [SEO_FIELDS.COVER_IMAGE]: CoverImage,\n};\n\nexport const SEO_SETTINGS_INITIAL_VALUES = {\n title: \"\",\n titleSuffix: \"\",\n description: \"\",\n keywords: [],\n allowSearchEngineCrawl: false,\n googleAnalyticsTrackingId: \"\",\n};\n\nexport const SEO_SETTINGS_VALIDATION_SCHEMA = yup.object().shape({\n googleAnalyticsTrackingId: yup.string().when(\"googleAnalyticsEnabled\", {\n is: true,\n then: yup\n .string()\n .trim()\n .required(\n i18next.t(\"neetoSeo.validations.required\", {\n what: i18next.t(\"neetoSeo.labels.googleAnalyticsTrackingId\"),\n })\n )\n .matches(\n GOOGLE_ANALYTICS_TRACKING_ID_REGEX,\n i18next.t(\"neetoSeo.validations.valid\", {\n what: i18next.t(\"neetoSeo.labels.googleAnalyticsTrackingId\"),\n })\n ),\n otherwise: yup.string().nullable(),\n }),\n});\n","import { useEffect } from \"react\";\n\nimport PageLoader from \"neetomolecules/PageLoader\";\nimport { Pane as NeetoUIPane, Typography } from \"neetoui\";\nimport { Form, ActionBlock } from \"neetoui/formik\";\nimport { omit } from \"ramda\";\nimport { useTranslation } from \"react-i18next\";\n\nimport {\n useFetchSeoSettings,\n useUpdateSeoSettings,\n} from \"hooks/reactQuery/useSeoSettingsApi\";\n\nimport {\n SEO_FIELDS_COMPONENT,\n SEO_SETTINGS_VALIDATION_SCHEMA,\n SEO_SETTINGS_INITIAL_VALUES,\n} from \"./constants\";\n\nconst Pane = ({\n apiEndpointUrl,\n isOpen,\n onClose,\n entity,\n defaultHelpDocUrl,\n seoFormFields,\n additionalComponent = null,\n}) => {\n const { t } = useTranslation();\n\n const {\n data: seoSetting = {},\n isLoading,\n refetch,\n } = useFetchSeoSettings(apiEndpointUrl);\n\n useEffect(() => {\n if (isOpen) {\n refetch();\n }\n }, [isOpen, refetch]);\n\n const { mutate: updateSeoSettings } = useUpdateSeoSettings(apiEndpointUrl, {\n onSuccess: onClose,\n });\n\n const handleSubmit = values => {\n const payload = omit([\"googleAnalyticsEnabled\"], values);\n updateSeoSettings({ url: apiEndpointUrl, payload });\n };\n\n if (isLoading) {\n return (\n <NeetoUIPane {...{ isOpen, onClose }}>\n <div className=\"flex h-screen w-full items-center justify-center\">\n <PageLoader />\n </div>\n </NeetoUIPane>\n );\n }\n\n return (\n <NeetoUIPane {...{ isOpen, onClose }}>\n <Form\n className=\"w-full\"\n formikProps={{\n enableReinitialize: true,\n initialValues: seoSetting || SEO_SETTINGS_INITIAL_VALUES,\n validationSchema: SEO_SETTINGS_VALIDATION_SCHEMA,\n onSubmit: handleSubmit,\n }}\n >\n <NeetoUIPane.Header className=\"space-y-2\">\n <Typography style=\"h2\">{t(\"neetoSeo.title\")}</Typography>\n </NeetoUIPane.Header>\n <NeetoUIPane.Body>\n {seoFormFields.map(\n ({\n name,\n helpDocUrl,\n popOverDescription,\n altLabel,\n altPlaceholder,\n maxLength,\n }) => {\n const FieldComponent = SEO_FIELDS_COMPONENT[name];\n\n if (!FieldComponent) {\n return null;\n }\n\n return (\n <div className=\"mt-4 w-full\" key={name}>\n <FieldComponent\n {...{\n altLabel,\n altPlaceholder,\n defaultHelpDocUrl,\n entity,\n helpDocUrl,\n maxLength,\n name,\n popOverDescription,\n seoSetting,\n }}\n />\n </div>\n );\n }\n )}\n <div className=\"mt-4 w-full\">{additionalComponent}</div>\n </NeetoUIPane.Body>\n <NeetoUIPane.Footer>\n <ActionBlock cancelButtonProps={{ onClick: onClose }} />\n </NeetoUIPane.Footer>\n </Form>\n </NeetoUIPane>\n );\n};\n\nexport default Pane;\n"],"names":["fetch","url","axios","get","update","_ref","payload","patch","seoSettingsApi","SEO_SETTINGS_QUERY_KEY","useFetchSeoSettings","params","useQuery","queryKey","queryFn","enabled","useUpdateSeoSettings","options","arguments","length","undefined","useMutationWithInvalidation","_objectSpread","keysToInvalidate","CoverImage","popOverDescription","helpDocUrl","defaultHelpDocUrl","_useTranslation","useTranslation","t","_useFormikContext","useFormikContext","values","setFieldValue","onImageUploadComplete","_ref2","signedId","_jsxs","className","children","_jsx","Label","HelpPopover","helpLinkProps","href","description","ImageUploader","src","coverImageUrl","classNames","isPresent","isNotPresent","onUploadComplete","GoogleAnalyticsTracking","entity","seoSetting","_useState","useState","googleAnalyticsTrackingId","_useState2","_slicedToArray","googleAnalyticsEnabled","setGoogleAnalyticsEnabled","handleSwitchChange","_Fragment","Switch","checked","label","name","onChange","Input","placeholder","withT","altLabel","altPlaceholder","maxLength","NeetoUIInput","concat","unlimitedChars","labelProps","helpIconProps","popoverProps","NeetoUISwitch","populateKeywords","keywords","map","keyword","trim","join","extractKeywords","stringOfKeywords","split","filter","isNot","Textarea","keywordString","setKeywordString","handleChangeKeyword","event","string","target","value","SEO_FIELDS","KEYWORDS","newKeywords","NeetoUITextarea","GOOGLE_ANALYTICS_TRACKING_ID_REGEX","TITLE","TITLE_SUFFIX","DESCRIPTION","ALLOW_SEARCH_ENGINE_CRAWL","GOOGLE_ANALYTICS_TRACKING_ID","COVER_IMAGE","SEO_FIELDS_COMPONENT","_defineProperty","SEO_SETTINGS_INITIAL_VALUES","title","titleSuffix","allowSearchEngineCrawl","SEO_SETTINGS_VALIDATION_SCHEMA","yup","object","shape","when","is","then","required","i18next","what","matches","otherwise","nullable","Pane","apiEndpointUrl","isOpen","onClose","seoFormFields","_ref$additionalCompon","additionalComponent","_useFetchSeoSettings","_useFetchSeoSettings$","data","isLoading","refetch","useEffect","_useUpdateSeoSettings","onSuccess","updateSeoSettings","mutate","handleSubmit","omit","NeetoUIPane","PageLoader","Form","formikProps","enableReinitialize","initialValues","validationSchema","onSubmit","Header","Typography","style","Body","FieldComponent","Footer","ActionBlock","cancelButtonProps","onClick"],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  'use strict';
2
2
 
3
+ var react = require('react');
3
4
  var PageLoader = require('@bigbinary/neeto-molecules/PageLoader');
4
5
  var NeetoUIPane = require('@bigbinary/neetoui/Pane');
5
6
  var Typography = require('@bigbinary/neetoui/Typography');
@@ -21,7 +22,6 @@ var HelpPopover = require('@bigbinary/neeto-molecules/HelpPopover');
21
22
  var Label = require('@bigbinary/neetoui/Label');
22
23
  var jsxRuntime = require('react/jsx-runtime');
23
24
  var _slicedToArray = require('@babel/runtime/helpers/slicedToArray');
24
- var react = require('react');
25
25
  var Switch$1 = require('@bigbinary/neetoui/formik/Switch');
26
26
  var Input$1 = require('@bigbinary/neetoui/formik/Input');
27
27
  var reactUtils = require('@bigbinary/neeto-commons-frontend/react-utils');
@@ -130,11 +130,10 @@ var GoogleAnalyticsTracking = function GoogleAnalyticsTracking(_ref) {
130
130
  googleAnalyticsEnabled = _useState2[0],
131
131
  setGoogleAnalyticsEnabled = _useState2[1];
132
132
  var _useFormikContext = formik.useFormikContext(),
133
- setFieldValue = _useFormikContext.setFieldValue,
134
- values = _useFormikContext.values;
133
+ setFieldValue = _useFormikContext.setFieldValue;
135
134
  var handleSwitchChange = function handleSwitchChange() {
136
135
  setGoogleAnalyticsEnabled(!googleAnalyticsEnabled);
137
- setFieldValue("googleAnalyticsEnabled", !values.googleAnalyticsEnabled);
136
+ setFieldValue("googleAnalyticsEnabled", !googleAnalyticsEnabled);
138
137
  setFieldValue("googleAnalyticsTrackingId", "");
139
138
  };
140
139
  return /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
@@ -330,7 +329,13 @@ var Pane = function Pane(_ref) {
330
329
  var _useFetchSeoSettings = useFetchSeoSettings(apiEndpointUrl),
331
330
  _useFetchSeoSettings$ = _useFetchSeoSettings.data,
332
331
  seoSetting = _useFetchSeoSettings$ === void 0 ? {} : _useFetchSeoSettings$,
333
- isLoading = _useFetchSeoSettings.isLoading;
332
+ isLoading = _useFetchSeoSettings.isLoading,
333
+ refetch = _useFetchSeoSettings.refetch;
334
+ react.useEffect(function () {
335
+ if (isOpen) {
336
+ refetch();
337
+ }
338
+ }, [isOpen, refetch]);
334
339
  var _useUpdateSeoSettings = useUpdateSeoSettings(apiEndpointUrl, {
335
340
  onSuccess: onClose
336
341
  }),
@@ -1 +1 @@
1
- {"version":3,"file":"SeoSettingsPane.js","sources":["../../app/javascript/src/apis/seo_settings.js","../../app/javascript/src/hooks/reactQuery/constants.js","../../app/javascript/src/hooks/reactQuery/useSeoSettingsApi.js","../../app/javascript/src/components/SeoSettings/Pane/CoverImage.jsx","../../app/javascript/src/components/SeoSettings/Pane/GoogleAnalyticsTracking.jsx","../../app/javascript/src/components/SeoSettings/Pane/Input.jsx","../../app/javascript/src/components/SeoSettings/Pane/Switch.jsx","../../app/javascript/src/components/SeoSettings/Pane/utils.js","../../app/javascript/src/components/SeoSettings/Pane/Textarea.jsx","../../app/javascript/src/components/SeoSettings/Pane/constants.js","../../app/javascript/src/components/SeoSettings/Pane/index.jsx"],"sourcesContent":["import axios from \"axios\";\n\nconst fetch = url => axios.get(url);\n\nconst update = ({ url, payload }) => axios.patch(url, payload);\n\nconst seoSettingsApi = { fetch, update };\n\nexport default seoSettingsApi;\n","export const SEO_SETTINGS_QUERY_KEY = \"seo-settings\";\n","import { useQuery } from \"@tanstack/react-query\";\nimport useMutationWithInvalidation from \"neetocommons/react-utils/useMutationWithInvalidation\";\n\nimport seoSettingsApi from \"apis/seo_settings\";\n\nimport { SEO_SETTINGS_QUERY_KEY } from \"./constants\";\n\nconst useFetchSeoSettings = params =>\n useQuery({\n queryKey: [SEO_SETTINGS_QUERY_KEY, params],\n queryFn: () => seoSettingsApi.fetch(params),\n enabled: !!params,\n });\n\nconst useUpdateSeoSettings = (url, options = {}) =>\n useMutationWithInvalidation(seoSettingsApi.update, {\n ...options,\n keysToInvalidate: [[SEO_SETTINGS_QUERY_KEY, url]],\n });\n\nexport { useFetchSeoSettings, useUpdateSeoSettings };\n","import { ImageUploader } from \"@bigbinary/neeto-image-uploader-frontend\";\nimport classNames from \"classnames\";\nimport { useFormikContext } from \"formik\";\nimport { isNotPresent, isPresent } from \"neetocist\";\nimport HelpPopover from \"neetomolecules/HelpPopover\";\nimport { Label } from \"neetoui\";\nimport { useTranslation } from \"react-i18next\";\n\nconst CoverImage = ({ popOverDescription, helpDocUrl, defaultHelpDocUrl }) => {\n const { t } = useTranslation();\n const { values, setFieldValue } = useFormikContext();\n\n const onImageUploadComplete = ({ signedId, url }) => {\n setFieldValue(\"coverImage\", signedId);\n setFieldValue(\"coverImageUrl\", url);\n };\n\n return (\n <div className=\"space-y-2\">\n <div className=\"flex items-center space-x-2\">\n <Label>{t(\"neetoSeo.labels.coverImage\")}</Label>\n <HelpPopover\n helpLinkProps={{ href: helpDocUrl || defaultHelpDocUrl }}\n description={\n popOverDescription || t(\"neetoSeo.helpPopovers.coverImage\")\n }\n />\n </div>\n <ImageUploader\n src={values.coverImageUrl}\n className={classNames({\n \"h-56\": isPresent(values.coverImageUrl),\n \"h-[128px]\": isNotPresent(values.coverImageUrl),\n })}\n onUploadComplete={onImageUploadComplete}\n />\n </div>\n );\n};\n\nexport default CoverImage;\n","import { useState } from \"react\";\n\nimport { useFormikContext } from \"formik\";\nimport HelpPopover from \"neetomolecules/HelpPopover\";\nimport { Switch, Input } from \"neetoui/formik\";\nimport { useTranslation } from \"react-i18next\";\n\nconst GoogleAnalyticsTracking = ({\n helpDocUrl,\n popOverDescription,\n entity,\n defaultHelpDocUrl,\n seoSetting,\n}) => {\n const { t } = useTranslation();\n\n const [googleAnalyticsEnabled, setGoogleAnalyticsEnabled] = useState(\n !!seoSetting?.googleAnalyticsTrackingId\n );\n\n const { setFieldValue, values } = useFormikContext();\n\n const handleSwitchChange = () => {\n setGoogleAnalyticsEnabled(!googleAnalyticsEnabled);\n setFieldValue(\"googleAnalyticsEnabled\", !values.googleAnalyticsEnabled);\n setFieldValue(\"googleAnalyticsTrackingId\", \"\");\n };\n\n return (\n <>\n <div className=\"flex items-center space-x-2\">\n <Switch\n checked={googleAnalyticsEnabled}\n label={t(\"neetoSeo.labels.googleAnalytics\")}\n name=\"googleAnalyticsEnabled\"\n onChange={handleSwitchChange}\n />\n <HelpPopover\n helpLinkProps={{ href: helpDocUrl || defaultHelpDocUrl }}\n description={\n popOverDescription ||\n t(\"neetoSeo.helpPopovers.googleAnalytics\", { entity })\n }\n />\n </div>\n {googleAnalyticsEnabled && (\n <Input\n className=\"mt-4\"\n name=\"googleAnalyticsTrackingId\"\n placeholder={t(\"neetoSeo.placeholders.googleAnalyticsTrackingId\")}\n />\n )}\n </>\n );\n};\n\nexport default GoogleAnalyticsTracking;\n","import { withT } from \"neetocommons/react-utils\";\nimport { Input as NeetoUIInput } from \"neetoui/formik\";\n\nconst Input = withT(\n ({\n t,\n name,\n helpDocUrl,\n popOverDescription,\n entity,\n defaultHelpDocUrl,\n altLabel,\n altPlaceholder,\n maxLength,\n }) => (\n <NeetoUIInput\n {...{ name }}\n label={altLabel || t(`neetoSeo.labels.${name}`, { entity })}\n maxLength={maxLength || 160}\n unlimitedChars={false}\n labelProps={{\n helpIconProps: {\n popoverProps: {\n description:\n popOverDescription || t(`neetoSeo.helpPopovers.${name}`),\n helpLinkProps: {\n label: t(\"neetoSeo.labels.viewHelpArticle\"),\n href: helpDocUrl || defaultHelpDocUrl,\n },\n },\n },\n }}\n placeholder={\n altPlaceholder || t(`neetoSeo.placeholders.${name}`, { entity })\n }\n />\n )\n);\n\nexport default Input;\n","import { withT } from \"neetocommons/react-utils\";\nimport HelpPopover from \"neetomolecules/HelpPopover\";\nimport { Switch as NeetoUISwitch } from \"neetoui/formik\";\n\nconst Switch = withT(\n ({\n t,\n name,\n entity,\n altLabel,\n helpDocUrl,\n defaultHelpDocUrl,\n popOverDescription,\n }) => (\n <div className=\"flex items-center space-x-2\">\n <NeetoUISwitch\n {...{ name }}\n label={altLabel || t(`neetoSeo.labels.${name}`, { entity })}\n />\n <HelpPopover\n helpLinkProps={{ href: helpDocUrl || defaultHelpDocUrl }}\n description={\n popOverDescription ||\n t(\"neetoSeo.helpPopovers.allowSearchEngineCrawl\")\n }\n />\n </div>\n )\n);\n\nexport default Switch;\n","import { isNot } from \"neetocist\";\nimport { trim } from \"ramda\";\n\nexport const populateKeywords = keywords =>\n keywords?.map(keyword => keyword?.trim()).join(\", \");\n\nexport const extractKeywords = stringOfKeywords =>\n stringOfKeywords?.split(\",\").map(trim).filter(isNot(\"\"));\n","import { useState } from \"react\";\n\nimport { useFormikContext } from \"formik\";\nimport { Textarea as NeetoUITextarea } from \"neetoui/formik\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { SEO_FIELDS } from \"./constants\";\nimport { extractKeywords, populateKeywords } from \"./utils\";\n\nconst Textarea = ({\n name,\n helpDocUrl,\n popOverDescription,\n entity,\n defaultHelpDocUrl,\n altLabel,\n altPlaceholder,\n maxLength,\n seoSetting,\n}) => {\n const { t } = useTranslation();\n const [keywordString, setKeywordString] = useState(\n populateKeywords(seoSetting.keywords)\n );\n const { setFieldValue, values } = useFormikContext();\n\n const handleChangeKeyword = event => {\n const string = event.target.value;\n setKeywordString(string);\n\n if (name === SEO_FIELDS.KEYWORDS) {\n const newKeywords = extractKeywords(string);\n setFieldValue(name, newKeywords);\n } else {\n setFieldValue(name, string);\n }\n };\n\n return (\n <>\n <NeetoUITextarea\n {...{ name }}\n label={altLabel || t(`neetoSeo.labels.${name}`)}\n maxLength={maxLength || 150}\n placeholder={altPlaceholder || t(`neetoSeo.placeholders.${name}`)}\n value={name === SEO_FIELDS.KEYWORDS ? keywordString : values[name]}\n labelProps={{\n helpIconProps: {\n popoverProps: {\n description:\n popOverDescription ||\n t(`neetoSeo.helpPopovers.${name}`, { entity }),\n helpLinkProps: {\n label: t(\"neetoSeo.labels.viewHelpArticle\"),\n href: helpDocUrl || defaultHelpDocUrl,\n },\n },\n },\n }}\n onChange={handleChangeKeyword}\n />\n {name === SEO_FIELDS.KEYWORDS && (\n <span className=\"neeto-ui-text-gray-600 text-xs leading-tight\">\n {t(\"neetoSeo.subLabels.keywords\")}\n </span>\n )}\n </>\n );\n};\n\nexport default Textarea;\n","import i18next from \"i18next\";\nimport * as yup from \"yup\";\n\nimport CoverImage from \"./CoverImage\";\nimport GoogleAnalyticsTracking from \"./GoogleAnalyticsTracking\";\nimport Input from \"./Input\";\nimport Switch from \"./Switch\";\nimport Textarea from \"./Textarea\";\n\nconst GOOGLE_ANALYTICS_TRACKING_ID_REGEX =\n /^((UA|YT|MO)-\\d+-\\d+)$|^(G-[a-zA-Z0-9]+)$/i;\n\nexport const TITLE_MAX_LENGTH = 160;\n\nexport const SEO_FIELDS = {\n TITLE: \"title\",\n TITLE_SUFFIX: \"titleSuffix\",\n DESCRIPTION: \"description\",\n KEYWORDS: \"keywords\",\n ALLOW_SEARCH_ENGINE_CRAWL: \"allowSearchEngineCrawl\",\n GOOGLE_ANALYTICS_TRACKING_ID: \"googleAnalyticsTrackingId\",\n COVER_IMAGE: \"coverImage\",\n};\n\nexport const SEO_FIELDS_COMPONENT = {\n [SEO_FIELDS.TITLE]: Input,\n [SEO_FIELDS.TITLE_SUFFIX]: Input,\n [SEO_FIELDS.DESCRIPTION]: Textarea,\n [SEO_FIELDS.KEYWORDS]: Textarea,\n [SEO_FIELDS.ALLOW_SEARCH_ENGINE_CRAWL]: Switch,\n [SEO_FIELDS.GOOGLE_ANALYTICS_TRACKING_ID]: GoogleAnalyticsTracking,\n [SEO_FIELDS.COVER_IMAGE]: CoverImage,\n};\n\nexport const SEO_SETTINGS_INITIAL_VALUES = {\n title: \"\",\n titleSuffix: \"\",\n description: \"\",\n keywords: [],\n allowSearchEngineCrawl: false,\n googleAnalyticsTrackingId: \"\",\n};\n\nexport const SEO_SETTINGS_VALIDATION_SCHEMA = yup.object().shape({\n googleAnalyticsTrackingId: yup.string().when(\"googleAnalyticsEnabled\", {\n is: true,\n then: yup\n .string()\n .trim()\n .required(\n i18next.t(\"neetoSeo.validations.required\", {\n what: i18next.t(\"neetoSeo.labels.googleAnalyticsTrackingId\"),\n })\n )\n .matches(\n GOOGLE_ANALYTICS_TRACKING_ID_REGEX,\n i18next.t(\"neetoSeo.validations.valid\", {\n what: i18next.t(\"neetoSeo.labels.googleAnalyticsTrackingId\"),\n })\n ),\n otherwise: yup.string().nullable(),\n }),\n});\n","import PageLoader from \"neetomolecules/PageLoader\";\nimport { Pane as NeetoUIPane, Typography } from \"neetoui\";\nimport { Form, ActionBlock } from \"neetoui/formik\";\nimport { omit } from \"ramda\";\nimport { useTranslation } from \"react-i18next\";\n\nimport {\n useFetchSeoSettings,\n useUpdateSeoSettings,\n} from \"hooks/reactQuery/useSeoSettingsApi\";\n\nimport {\n SEO_FIELDS_COMPONENT,\n SEO_SETTINGS_VALIDATION_SCHEMA,\n SEO_SETTINGS_INITIAL_VALUES,\n} from \"./constants\";\n\nconst Pane = ({\n apiEndpointUrl,\n isOpen,\n onClose,\n entity,\n defaultHelpDocUrl,\n seoFormFields,\n additionalComponent = null,\n}) => {\n const { t } = useTranslation();\n\n const { data: seoSetting = {}, isLoading } =\n useFetchSeoSettings(apiEndpointUrl);\n\n const { mutate: updateSeoSettings } = useUpdateSeoSettings(apiEndpointUrl, {\n onSuccess: onClose,\n });\n\n const handleSubmit = values => {\n const payload = omit([\"googleAnalyticsEnabled\"], values);\n updateSeoSettings({ url: apiEndpointUrl, payload });\n };\n\n if (isLoading) {\n return (\n <NeetoUIPane {...{ isOpen, onClose }}>\n <div className=\"flex h-screen w-full items-center justify-center\">\n <PageLoader />\n </div>\n </NeetoUIPane>\n );\n }\n\n return (\n <NeetoUIPane {...{ isOpen, onClose }}>\n <Form\n className=\"w-full\"\n formikProps={{\n enableReinitialize: true,\n initialValues: seoSetting || SEO_SETTINGS_INITIAL_VALUES,\n validationSchema: SEO_SETTINGS_VALIDATION_SCHEMA,\n onSubmit: handleSubmit,\n }}\n >\n <NeetoUIPane.Header className=\"space-y-2\">\n <Typography style=\"h2\">{t(\"neetoSeo.title\")}</Typography>\n </NeetoUIPane.Header>\n <NeetoUIPane.Body>\n {seoFormFields.map(\n ({\n name,\n helpDocUrl,\n popOverDescription,\n altLabel,\n altPlaceholder,\n maxLength,\n }) => {\n const FieldComponent = SEO_FIELDS_COMPONENT[name];\n\n if (!FieldComponent) {\n return null;\n }\n\n return (\n <div className=\"mt-4 w-full\" key={name}>\n <FieldComponent\n {...{\n altLabel,\n altPlaceholder,\n defaultHelpDocUrl,\n entity,\n helpDocUrl,\n maxLength,\n name,\n popOverDescription,\n seoSetting,\n }}\n />\n </div>\n );\n }\n )}\n <div className=\"mt-4 w-full\">{additionalComponent}</div>\n </NeetoUIPane.Body>\n <NeetoUIPane.Footer>\n <ActionBlock cancelButtonProps={{ onClick: onClose }} />\n </NeetoUIPane.Footer>\n </Form>\n </NeetoUIPane>\n );\n};\n\nexport default Pane;\n"],"names":["fetch","url","axios","get","update","_ref","payload","patch","seoSettingsApi","SEO_SETTINGS_QUERY_KEY","useFetchSeoSettings","params","useQuery","queryKey","queryFn","enabled","useUpdateSeoSettings","options","arguments","length","undefined","useMutationWithInvalidation","_objectSpread","keysToInvalidate","CoverImage","popOverDescription","helpDocUrl","defaultHelpDocUrl","_useTranslation","useTranslation","t","_useFormikContext","useFormikContext","values","setFieldValue","onImageUploadComplete","_ref2","signedId","_jsxs","className","children","_jsx","Label","HelpPopover","helpLinkProps","href","description","ImageUploader","src","coverImageUrl","classNames","isPresent","isNotPresent","onUploadComplete","GoogleAnalyticsTracking","entity","seoSetting","_useState","useState","googleAnalyticsTrackingId","_useState2","_slicedToArray","googleAnalyticsEnabled","setGoogleAnalyticsEnabled","handleSwitchChange","_Fragment","Switch","checked","label","name","onChange","Input","placeholder","withT","altLabel","altPlaceholder","maxLength","NeetoUIInput","concat","unlimitedChars","labelProps","helpIconProps","popoverProps","NeetoUISwitch","populateKeywords","keywords","map","keyword","trim","join","extractKeywords","stringOfKeywords","split","filter","isNot","Textarea","keywordString","setKeywordString","handleChangeKeyword","event","string","target","value","SEO_FIELDS","KEYWORDS","newKeywords","NeetoUITextarea","GOOGLE_ANALYTICS_TRACKING_ID_REGEX","TITLE","TITLE_SUFFIX","DESCRIPTION","ALLOW_SEARCH_ENGINE_CRAWL","GOOGLE_ANALYTICS_TRACKING_ID","COVER_IMAGE","SEO_FIELDS_COMPONENT","_defineProperty","SEO_SETTINGS_INITIAL_VALUES","title","titleSuffix","allowSearchEngineCrawl","SEO_SETTINGS_VALIDATION_SCHEMA","yup","object","shape","when","is","then","required","i18next","what","matches","otherwise","nullable","Pane","apiEndpointUrl","isOpen","onClose","seoFormFields","_ref$additionalCompon","additionalComponent","_useFetchSeoSettings","_useFetchSeoSettings$","data","isLoading","_useUpdateSeoSettings","onSuccess","updateSeoSettings","mutate","handleSubmit","omit","NeetoUIPane","PageLoader","Form","formikProps","enableReinitialize","initialValues","validationSchema","onSubmit","Header","Typography","style","Body","FieldComponent","Footer","ActionBlock","cancelButtonProps","onClick"],"mappings":"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"}
1
+ {"version":3,"file":"SeoSettingsPane.js","sources":["../../app/javascript/src/apis/seo_settings.js","../../app/javascript/src/hooks/reactQuery/constants.js","../../app/javascript/src/hooks/reactQuery/useSeoSettingsApi.js","../../app/javascript/src/components/SeoSettings/Pane/CoverImage.jsx","../../app/javascript/src/components/SeoSettings/Pane/GoogleAnalyticsTracking.jsx","../../app/javascript/src/components/SeoSettings/Pane/Input.jsx","../../app/javascript/src/components/SeoSettings/Pane/Switch.jsx","../../app/javascript/src/components/SeoSettings/Pane/utils.js","../../app/javascript/src/components/SeoSettings/Pane/Textarea.jsx","../../app/javascript/src/components/SeoSettings/Pane/constants.js","../../app/javascript/src/components/SeoSettings/Pane/index.jsx"],"sourcesContent":["import axios from \"axios\";\n\nconst fetch = url => axios.get(url);\n\nconst update = ({ url, payload }) => axios.patch(url, payload);\n\nconst seoSettingsApi = { fetch, update };\n\nexport default seoSettingsApi;\n","export const SEO_SETTINGS_QUERY_KEY = \"seo-settings\";\n","import { useQuery } from \"@tanstack/react-query\";\nimport useMutationWithInvalidation from \"neetocommons/react-utils/useMutationWithInvalidation\";\n\nimport seoSettingsApi from \"apis/seo_settings\";\n\nimport { SEO_SETTINGS_QUERY_KEY } from \"./constants\";\n\nconst useFetchSeoSettings = params =>\n useQuery({\n queryKey: [SEO_SETTINGS_QUERY_KEY, params],\n queryFn: () => seoSettingsApi.fetch(params),\n enabled: !!params,\n });\n\nconst useUpdateSeoSettings = (url, options = {}) =>\n useMutationWithInvalidation(seoSettingsApi.update, {\n ...options,\n keysToInvalidate: [[SEO_SETTINGS_QUERY_KEY, url]],\n });\n\nexport { useFetchSeoSettings, useUpdateSeoSettings };\n","import { ImageUploader } from \"@bigbinary/neeto-image-uploader-frontend\";\nimport classNames from \"classnames\";\nimport { useFormikContext } from \"formik\";\nimport { isNotPresent, isPresent } from \"neetocist\";\nimport HelpPopover from \"neetomolecules/HelpPopover\";\nimport { Label } from \"neetoui\";\nimport { useTranslation } from \"react-i18next\";\n\nconst CoverImage = ({ popOverDescription, helpDocUrl, defaultHelpDocUrl }) => {\n const { t } = useTranslation();\n const { values, setFieldValue } = useFormikContext();\n\n const onImageUploadComplete = ({ signedId, url }) => {\n setFieldValue(\"coverImage\", signedId);\n setFieldValue(\"coverImageUrl\", url);\n };\n\n return (\n <div className=\"space-y-2\">\n <div className=\"flex items-center space-x-2\">\n <Label>{t(\"neetoSeo.labels.coverImage\")}</Label>\n <HelpPopover\n helpLinkProps={{ href: helpDocUrl || defaultHelpDocUrl }}\n description={\n popOverDescription || t(\"neetoSeo.helpPopovers.coverImage\")\n }\n />\n </div>\n <ImageUploader\n src={values.coverImageUrl}\n className={classNames({\n \"h-56\": isPresent(values.coverImageUrl),\n \"h-[128px]\": isNotPresent(values.coverImageUrl),\n })}\n onUploadComplete={onImageUploadComplete}\n />\n </div>\n );\n};\n\nexport default CoverImage;\n","import { useState } from \"react\";\n\nimport { useFormikContext } from \"formik\";\nimport HelpPopover from \"neetomolecules/HelpPopover\";\nimport { Switch, Input } from \"neetoui/formik\";\nimport { useTranslation } from \"react-i18next\";\n\nconst GoogleAnalyticsTracking = ({\n helpDocUrl,\n popOverDescription,\n entity,\n defaultHelpDocUrl,\n seoSetting,\n}) => {\n const { t } = useTranslation();\n\n const [googleAnalyticsEnabled, setGoogleAnalyticsEnabled] = useState(\n !!seoSetting?.googleAnalyticsTrackingId\n );\n\n const { setFieldValue } = useFormikContext();\n\n const handleSwitchChange = () => {\n setGoogleAnalyticsEnabled(!googleAnalyticsEnabled);\n setFieldValue(\"googleAnalyticsEnabled\", !googleAnalyticsEnabled);\n setFieldValue(\"googleAnalyticsTrackingId\", \"\");\n };\n\n return (\n <>\n <div className=\"flex items-center space-x-2\">\n <Switch\n checked={googleAnalyticsEnabled}\n label={t(\"neetoSeo.labels.googleAnalytics\")}\n name=\"googleAnalyticsEnabled\"\n onChange={handleSwitchChange}\n />\n <HelpPopover\n helpLinkProps={{ href: helpDocUrl || defaultHelpDocUrl }}\n description={\n popOverDescription ||\n t(\"neetoSeo.helpPopovers.googleAnalytics\", { entity })\n }\n />\n </div>\n {googleAnalyticsEnabled && (\n <Input\n className=\"mt-4\"\n name=\"googleAnalyticsTrackingId\"\n placeholder={t(\"neetoSeo.placeholders.googleAnalyticsTrackingId\")}\n />\n )}\n </>\n );\n};\n\nexport default GoogleAnalyticsTracking;\n","import { withT } from \"neetocommons/react-utils\";\nimport { Input as NeetoUIInput } from \"neetoui/formik\";\n\nconst Input = withT(\n ({\n t,\n name,\n helpDocUrl,\n popOverDescription,\n entity,\n defaultHelpDocUrl,\n altLabel,\n altPlaceholder,\n maxLength,\n }) => (\n <NeetoUIInput\n {...{ name }}\n label={altLabel || t(`neetoSeo.labels.${name}`, { entity })}\n maxLength={maxLength || 160}\n unlimitedChars={false}\n labelProps={{\n helpIconProps: {\n popoverProps: {\n description:\n popOverDescription || t(`neetoSeo.helpPopovers.${name}`),\n helpLinkProps: {\n label: t(\"neetoSeo.labels.viewHelpArticle\"),\n href: helpDocUrl || defaultHelpDocUrl,\n },\n },\n },\n }}\n placeholder={\n altPlaceholder || t(`neetoSeo.placeholders.${name}`, { entity })\n }\n />\n )\n);\n\nexport default Input;\n","import { withT } from \"neetocommons/react-utils\";\nimport HelpPopover from \"neetomolecules/HelpPopover\";\nimport { Switch as NeetoUISwitch } from \"neetoui/formik\";\n\nconst Switch = withT(\n ({\n t,\n name,\n entity,\n altLabel,\n helpDocUrl,\n defaultHelpDocUrl,\n popOverDescription,\n }) => (\n <div className=\"flex items-center space-x-2\">\n <NeetoUISwitch\n {...{ name }}\n label={altLabel || t(`neetoSeo.labels.${name}`, { entity })}\n />\n <HelpPopover\n helpLinkProps={{ href: helpDocUrl || defaultHelpDocUrl }}\n description={\n popOverDescription ||\n t(\"neetoSeo.helpPopovers.allowSearchEngineCrawl\")\n }\n />\n </div>\n )\n);\n\nexport default Switch;\n","import { isNot } from \"neetocist\";\nimport { trim } from \"ramda\";\n\nexport const populateKeywords = keywords =>\n keywords?.map(keyword => keyword?.trim()).join(\", \");\n\nexport const extractKeywords = stringOfKeywords =>\n stringOfKeywords?.split(\",\").map(trim).filter(isNot(\"\"));\n","import { useState } from \"react\";\n\nimport { useFormikContext } from \"formik\";\nimport { Textarea as NeetoUITextarea } from \"neetoui/formik\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { SEO_FIELDS } from \"./constants\";\nimport { extractKeywords, populateKeywords } from \"./utils\";\n\nconst Textarea = ({\n name,\n helpDocUrl,\n popOverDescription,\n entity,\n defaultHelpDocUrl,\n altLabel,\n altPlaceholder,\n maxLength,\n seoSetting,\n}) => {\n const { t } = useTranslation();\n const [keywordString, setKeywordString] = useState(\n populateKeywords(seoSetting.keywords)\n );\n const { setFieldValue, values } = useFormikContext();\n\n const handleChangeKeyword = event => {\n const string = event.target.value;\n setKeywordString(string);\n\n if (name === SEO_FIELDS.KEYWORDS) {\n const newKeywords = extractKeywords(string);\n setFieldValue(name, newKeywords);\n } else {\n setFieldValue(name, string);\n }\n };\n\n return (\n <>\n <NeetoUITextarea\n {...{ name }}\n label={altLabel || t(`neetoSeo.labels.${name}`)}\n maxLength={maxLength || 150}\n placeholder={altPlaceholder || t(`neetoSeo.placeholders.${name}`)}\n value={name === SEO_FIELDS.KEYWORDS ? keywordString : values[name]}\n labelProps={{\n helpIconProps: {\n popoverProps: {\n description:\n popOverDescription ||\n t(`neetoSeo.helpPopovers.${name}`, { entity }),\n helpLinkProps: {\n label: t(\"neetoSeo.labels.viewHelpArticle\"),\n href: helpDocUrl || defaultHelpDocUrl,\n },\n },\n },\n }}\n onChange={handleChangeKeyword}\n />\n {name === SEO_FIELDS.KEYWORDS && (\n <span className=\"neeto-ui-text-gray-600 text-xs leading-tight\">\n {t(\"neetoSeo.subLabels.keywords\")}\n </span>\n )}\n </>\n );\n};\n\nexport default Textarea;\n","import i18next from \"i18next\";\nimport * as yup from \"yup\";\n\nimport CoverImage from \"./CoverImage\";\nimport GoogleAnalyticsTracking from \"./GoogleAnalyticsTracking\";\nimport Input from \"./Input\";\nimport Switch from \"./Switch\";\nimport Textarea from \"./Textarea\";\n\nconst GOOGLE_ANALYTICS_TRACKING_ID_REGEX =\n /^((UA|YT|MO)-\\d+-\\d+)$|^(G-[a-zA-Z0-9]+)$/i;\n\nexport const TITLE_MAX_LENGTH = 160;\n\nexport const SEO_FIELDS = {\n TITLE: \"title\",\n TITLE_SUFFIX: \"titleSuffix\",\n DESCRIPTION: \"description\",\n KEYWORDS: \"keywords\",\n ALLOW_SEARCH_ENGINE_CRAWL: \"allowSearchEngineCrawl\",\n GOOGLE_ANALYTICS_TRACKING_ID: \"googleAnalyticsTrackingId\",\n COVER_IMAGE: \"coverImage\",\n};\n\nexport const SEO_FIELDS_COMPONENT = {\n [SEO_FIELDS.TITLE]: Input,\n [SEO_FIELDS.TITLE_SUFFIX]: Input,\n [SEO_FIELDS.DESCRIPTION]: Textarea,\n [SEO_FIELDS.KEYWORDS]: Textarea,\n [SEO_FIELDS.ALLOW_SEARCH_ENGINE_CRAWL]: Switch,\n [SEO_FIELDS.GOOGLE_ANALYTICS_TRACKING_ID]: GoogleAnalyticsTracking,\n [SEO_FIELDS.COVER_IMAGE]: CoverImage,\n};\n\nexport const SEO_SETTINGS_INITIAL_VALUES = {\n title: \"\",\n titleSuffix: \"\",\n description: \"\",\n keywords: [],\n allowSearchEngineCrawl: false,\n googleAnalyticsTrackingId: \"\",\n};\n\nexport const SEO_SETTINGS_VALIDATION_SCHEMA = yup.object().shape({\n googleAnalyticsTrackingId: yup.string().when(\"googleAnalyticsEnabled\", {\n is: true,\n then: yup\n .string()\n .trim()\n .required(\n i18next.t(\"neetoSeo.validations.required\", {\n what: i18next.t(\"neetoSeo.labels.googleAnalyticsTrackingId\"),\n })\n )\n .matches(\n GOOGLE_ANALYTICS_TRACKING_ID_REGEX,\n i18next.t(\"neetoSeo.validations.valid\", {\n what: i18next.t(\"neetoSeo.labels.googleAnalyticsTrackingId\"),\n })\n ),\n otherwise: yup.string().nullable(),\n }),\n});\n","import { useEffect } from \"react\";\n\nimport PageLoader from \"neetomolecules/PageLoader\";\nimport { Pane as NeetoUIPane, Typography } from \"neetoui\";\nimport { Form, ActionBlock } from \"neetoui/formik\";\nimport { omit } from \"ramda\";\nimport { useTranslation } from \"react-i18next\";\n\nimport {\n useFetchSeoSettings,\n useUpdateSeoSettings,\n} from \"hooks/reactQuery/useSeoSettingsApi\";\n\nimport {\n SEO_FIELDS_COMPONENT,\n SEO_SETTINGS_VALIDATION_SCHEMA,\n SEO_SETTINGS_INITIAL_VALUES,\n} from \"./constants\";\n\nconst Pane = ({\n apiEndpointUrl,\n isOpen,\n onClose,\n entity,\n defaultHelpDocUrl,\n seoFormFields,\n additionalComponent = null,\n}) => {\n const { t } = useTranslation();\n\n const {\n data: seoSetting = {},\n isLoading,\n refetch,\n } = useFetchSeoSettings(apiEndpointUrl);\n\n useEffect(() => {\n if (isOpen) {\n refetch();\n }\n }, [isOpen, refetch]);\n\n const { mutate: updateSeoSettings } = useUpdateSeoSettings(apiEndpointUrl, {\n onSuccess: onClose,\n });\n\n const handleSubmit = values => {\n const payload = omit([\"googleAnalyticsEnabled\"], values);\n updateSeoSettings({ url: apiEndpointUrl, payload });\n };\n\n if (isLoading) {\n return (\n <NeetoUIPane {...{ isOpen, onClose }}>\n <div className=\"flex h-screen w-full items-center justify-center\">\n <PageLoader />\n </div>\n </NeetoUIPane>\n );\n }\n\n return (\n <NeetoUIPane {...{ isOpen, onClose }}>\n <Form\n className=\"w-full\"\n formikProps={{\n enableReinitialize: true,\n initialValues: seoSetting || SEO_SETTINGS_INITIAL_VALUES,\n validationSchema: SEO_SETTINGS_VALIDATION_SCHEMA,\n onSubmit: handleSubmit,\n }}\n >\n <NeetoUIPane.Header className=\"space-y-2\">\n <Typography style=\"h2\">{t(\"neetoSeo.title\")}</Typography>\n </NeetoUIPane.Header>\n <NeetoUIPane.Body>\n {seoFormFields.map(\n ({\n name,\n helpDocUrl,\n popOverDescription,\n altLabel,\n altPlaceholder,\n maxLength,\n }) => {\n const FieldComponent = SEO_FIELDS_COMPONENT[name];\n\n if (!FieldComponent) {\n return null;\n }\n\n return (\n <div className=\"mt-4 w-full\" key={name}>\n <FieldComponent\n {...{\n altLabel,\n altPlaceholder,\n defaultHelpDocUrl,\n entity,\n helpDocUrl,\n maxLength,\n name,\n popOverDescription,\n seoSetting,\n }}\n />\n </div>\n );\n }\n )}\n <div className=\"mt-4 w-full\">{additionalComponent}</div>\n </NeetoUIPane.Body>\n <NeetoUIPane.Footer>\n <ActionBlock cancelButtonProps={{ onClick: onClose }} />\n </NeetoUIPane.Footer>\n </Form>\n </NeetoUIPane>\n );\n};\n\nexport default Pane;\n"],"names":["fetch","url","axios","get","update","_ref","payload","patch","seoSettingsApi","SEO_SETTINGS_QUERY_KEY","useFetchSeoSettings","params","useQuery","queryKey","queryFn","enabled","useUpdateSeoSettings","options","arguments","length","undefined","useMutationWithInvalidation","_objectSpread","keysToInvalidate","CoverImage","popOverDescription","helpDocUrl","defaultHelpDocUrl","_useTranslation","useTranslation","t","_useFormikContext","useFormikContext","values","setFieldValue","onImageUploadComplete","_ref2","signedId","_jsxs","className","children","_jsx","Label","HelpPopover","helpLinkProps","href","description","ImageUploader","src","coverImageUrl","classNames","isPresent","isNotPresent","onUploadComplete","GoogleAnalyticsTracking","entity","seoSetting","_useState","useState","googleAnalyticsTrackingId","_useState2","_slicedToArray","googleAnalyticsEnabled","setGoogleAnalyticsEnabled","handleSwitchChange","_Fragment","Switch","checked","label","name","onChange","Input","placeholder","withT","altLabel","altPlaceholder","maxLength","NeetoUIInput","concat","unlimitedChars","labelProps","helpIconProps","popoverProps","NeetoUISwitch","populateKeywords","keywords","map","keyword","trim","join","extractKeywords","stringOfKeywords","split","filter","isNot","Textarea","keywordString","setKeywordString","handleChangeKeyword","event","string","target","value","SEO_FIELDS","KEYWORDS","newKeywords","NeetoUITextarea","GOOGLE_ANALYTICS_TRACKING_ID_REGEX","TITLE","TITLE_SUFFIX","DESCRIPTION","ALLOW_SEARCH_ENGINE_CRAWL","GOOGLE_ANALYTICS_TRACKING_ID","COVER_IMAGE","SEO_FIELDS_COMPONENT","_defineProperty","SEO_SETTINGS_INITIAL_VALUES","title","titleSuffix","allowSearchEngineCrawl","SEO_SETTINGS_VALIDATION_SCHEMA","yup","object","shape","when","is","then","required","i18next","what","matches","otherwise","nullable","Pane","apiEndpointUrl","isOpen","onClose","seoFormFields","_ref$additionalCompon","additionalComponent","_useFetchSeoSettings","_useFetchSeoSettings$","data","isLoading","refetch","useEffect","_useUpdateSeoSettings","onSuccess","updateSeoSettings","mutate","handleSubmit","omit","NeetoUIPane","PageLoader","Form","formikProps","enableReinitialize","initialValues","validationSchema","onSubmit","Header","Typography","style","Body","FieldComponent","Footer","ActionBlock","cancelButtonProps","onClick"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bigbinary/neeto-seo-frontend",
3
- "version": "3.0.3",
3
+ "version": "3.0.5",
4
4
  "description": "A repo acts as the source of truth for the new nano's structure, configs, data etc.",
5
5
  "license": "UNLICENSED",
6
6
  "homepage": "https://github.com/bigbinary/neeto-seo-nano",
@@ -41,11 +41,11 @@
41
41
  ],
42
42
  "./**/app/javascript/**/*.{js,jsx,json}": [
43
43
  "prettier --write",
44
- "eslint --fix"
44
+ "eslint --cache --fix --no-warn-ignored"
45
45
  ],
46
46
  "./test/dummy/**/app/javascript/**/*.{js,jsx,json}": [
47
47
  "prettier --write",
48
- "eslint --fix"
48
+ "eslint --cache --fix --no-warn-ignored"
49
49
  ],
50
50
  "{Gemfile,Rakefile,config.ru}": [
51
51
  "bundle exec rubocop -a --force-exclusion"
@@ -59,15 +59,15 @@
59
59
  "@babel/preset-env": "7.26.0",
60
60
  "@babel/preset-react": "7.25.9",
61
61
  "@babel/preset-typescript": "7.26.0",
62
- "@babel/runtime": "7.26.0",
62
+ "@babel/runtime": "7.26.10",
63
63
  "@bigbinary/babel-preset-neeto": "^1.0.3",
64
- "@bigbinary/eslint-plugin-neeto": "1.5.8",
65
- "@bigbinary/neeto-cist": "1.0.15",
66
- "@bigbinary/neeto-commons-frontend": "4.13.25",
67
- "@bigbinary/neeto-filters-frontend": "4.3.15",
68
- "@bigbinary/neeto-icons": "1.20.27",
69
- "@bigbinary/neeto-molecules": "3.15.51",
70
- "@bigbinary/neetoui": "8.2.70",
64
+ "@bigbinary/eslint-plugin-neeto": "1.6.4",
65
+ "@bigbinary/neeto-cist": "1.0.17",
66
+ "@bigbinary/neeto-commons-frontend": "4.13.45",
67
+ "@bigbinary/neeto-filters-frontend": "4.3.22",
68
+ "@bigbinary/neeto-icons": "1.20.53",
69
+ "@bigbinary/neeto-molecules": "3.16.81",
70
+ "@bigbinary/neetoui": "8.3.13",
71
71
  "@emotion/is-prop-valid": "1.2.0",
72
72
  "@faker-js/faker": "8.2.0",
73
73
  "@honeybadger-io/js": "6.10.1",
@@ -84,7 +84,7 @@
84
84
  "@tanstack/react-query-devtools": "5.59.20",
85
85
  "antd": "5.22.0",
86
86
  "autoprefixer": "^10.4.5",
87
- "axios": "1.7.7",
87
+ "axios": "1.8.2",
88
88
  "babel-loader": "^8.2.5",
89
89
  "babel-plugin-istanbul": "^6.1.1",
90
90
  "babel-plugin-js-logger": "1.0.17",
@@ -99,23 +99,24 @@
99
99
  "classnames": "2.5.1",
100
100
  "crypto-browserify": "3.12.1",
101
101
  "css-loader": "6.8.1",
102
- "dompurify": "^2.4.0",
102
+ "dompurify": "^3.2.4",
103
103
  "dotenv-webpack": "^8.0.1",
104
- "eslint": "8.14.0",
105
- "eslint-config-prettier": "8.5.0",
106
- "eslint-plugin-cypress": "2.12.1",
107
- "eslint-plugin-import": "2.31.0",
108
- "eslint-plugin-jam3": "0.2.3",
109
- "eslint-plugin-json": "3.1.0",
110
- "eslint-plugin-prettier": "4.0.0",
111
- "eslint-plugin-promise": "6.0.0",
112
- "eslint-plugin-react": "7.37.2",
113
- "eslint-plugin-react-hooks": "4.5.0",
114
- "eslint-plugin-security": "^1.7.1",
115
- "eslint-plugin-sonarjs": "^0.21.0",
116
- "eslint-plugin-unused-imports": "2.0.0",
104
+ "eslint": "^9.25.1",
105
+ "eslint-config-prettier": "^10.1.2",
106
+ "eslint-plugin-cypress": "^4.3.0",
107
+ "eslint-plugin-import": "^2.31.0",
108
+ "eslint-plugin-jam3": "^0.2.3",
109
+ "eslint-plugin-json": "^4.0.1",
110
+ "eslint-plugin-prettier": "^5.2.6",
111
+ "eslint-plugin-promise": "^7.2.1",
112
+ "eslint-plugin-react": "^7.37.5",
113
+ "eslint-plugin-react-hooks": "^5.2.0",
114
+ "eslint-plugin-security": "^3.0.1",
115
+ "eslint-plugin-sonarjs": "^3.0.2",
116
+ "eslint-plugin-unused-imports": "^4.1.4",
117
117
  "eslint-plugin-xss": "^0.1.12",
118
118
  "formik": "2.4.6",
119
+ "globals": "16.0.0",
119
120
  "html-webpack-plugin": "5.5.3",
120
121
  "https-browserify": "1.0.0",
121
122
  "husky": "7.0.4",
@@ -131,13 +132,13 @@
131
132
  "postcss-import": "^15.0.0",
132
133
  "postcss-loader": "^7.0.1",
133
134
  "postcss-preset-env": "7.8.2",
134
- "prettier": "2.6.2",
135
+ "prettier": "3",
135
136
  "prettier-plugin-tailwindcss": "0.1.10",
136
137
  "process": "0.11.10",
137
138
  "qs": "^6.11.2",
138
139
  "ramda": "0.29.0",
139
- "react": "18.2.0",
140
- "react-dom": "18.2.0",
140
+ "react": "18.3.1",
141
+ "react-dom": "18.3.1",
141
142
  "react-helmet": "^6.1.0",
142
143
  "react-i18next": "12.3.1",
143
144
  "react-router-dom": "5.3.3",
@@ -149,7 +150,7 @@
149
150
  "rollup-plugin-copy": "3.5.0",
150
151
  "rollup-plugin-peer-deps-external": "2.2.4",
151
152
  "rollup-plugin-styles": "4.0.0",
152
- "sass": "^1.54.9",
153
+ "sass": "1.89.0",
153
154
  "sass-loader": "^13.0.2",
154
155
  "shakapacker": "6.6.0",
155
156
  "source-map-loader": "4.0.1",
@@ -166,27 +167,27 @@
166
167
  "webpack-cli": "5.1.4",
167
168
  "webpack-dev-server": "4.15.1",
168
169
  "yup": "0.32.11",
169
- "zustand": "4.3.2"
170
+ "zustand": "4.4.2"
170
171
  },
171
172
  "peerDependencies": {
172
- "@babel/runtime": "7.26.0",
173
- "@bigbinary/neeto-cist": "1.0.15",
174
- "@bigbinary/neeto-commons-frontend": "4.13.25",
175
- "@bigbinary/neeto-filters-frontend": "4.3.15",
176
- "@bigbinary/neeto-icons": "1.20.27",
177
- "@bigbinary/neeto-molecules": "3.15.51",
178
- "@bigbinary/neetoui": "8.2.70",
173
+ "@babel/runtime": "7.26.10",
174
+ "@bigbinary/neeto-cist": "1.0.17",
175
+ "@bigbinary/neeto-commons-frontend": "4.13.45",
176
+ "@bigbinary/neeto-filters-frontend": "4.3.22",
177
+ "@bigbinary/neeto-icons": "1.20.53",
178
+ "@bigbinary/neeto-molecules": "3.16.81",
179
+ "@bigbinary/neetoui": "8.3.13",
179
180
  "@honeybadger-io/js": "6.10.1",
180
181
  "@honeybadger-io/react": "6.1.25",
181
182
  "@tailwindcss/container-queries": "^0.1.1",
182
183
  "@tanstack/react-query": "5.59.20",
183
184
  "@tanstack/react-query-devtools": "5.59.20",
184
185
  "antd": "5.22.0",
185
- "axios": "1.7.7",
186
+ "axios": "1.8.2",
186
187
  "buffer": "^6.0.3",
187
188
  "classnames": "2.5.1",
188
189
  "crypto-browserify": "3.12.1",
189
- "dompurify": "^2.4.0",
190
+ "dompurify": "^3.2.4",
190
191
  "formik": "2.4.6",
191
192
  "https-browserify": "1.0.0",
192
193
  "i18next": "22.5.1",
@@ -196,8 +197,8 @@
196
197
  "path-browserify": "^1.0.1",
197
198
  "qs": "^6.11.2",
198
199
  "ramda": "0.29.0",
199
- "react": "18.2.0",
200
- "react-dom": "18.2.0",
200
+ "react": "18.3.1",
201
+ "react-dom": "18.3.1",
201
202
  "react-helmet": "^6.1.0",
202
203
  "react-i18next": "12.3.1",
203
204
  "react-router-dom": "5.3.3",
@@ -211,12 +212,14 @@
211
212
  "util": "^0.12.5",
212
213
  "vm-browserify": "1.1.2",
213
214
  "yup": "0.32.11",
214
- "zustand": "4.3.2"
215
+ "zustand": "4.4.2"
215
216
  },
216
217
  "resolutions": {
217
218
  "postcss": "^8",
218
219
  "wrap-ansi": "7.0.0",
219
- "string-width": "4.1.0"
220
+ "string-width": "4.1.0",
221
+ "react": "18.3.1",
222
+ "react-dom": "18.3.1"
220
223
  },
221
224
  "engines": {
222
225
  "node": ">=22.13",
@@ -226,5 +229,6 @@
226
229
  "dependencies": {
227
230
  "babel-plugin-transform-imports": "^2.0.0",
228
231
  "react-router-nav-prompt": "0.4.1"
229
- }
232
+ },
233
+ "packageManager": "yarn@1.22.22+sha512.a6b2f7906b721bba3d67d4aff083df04dad64c399707841b7acf00f6b133b7ac24255f2652fa22ae3534329dc6180534e98d17432037ff6fd140556e2bb3137e"
230
234
  }