@openedx/paragon 21.6.1 → 21.7.0
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.
- package/dist/ProductTour/Checkpoint.js +9 -1
- package/dist/ProductTour/Checkpoint.js.map +1 -1
- package/dist/i18n/messages/ar.json +2 -1
- package/dist/i18n/messages/ca.json +2 -1
- package/dist/i18n/messages/es_419.json +2 -1
- package/dist/i18n/messages/es_AR.json +2 -1
- package/dist/i18n/messages/es_ES.json +2 -1
- package/dist/i18n/messages/fr.json +2 -1
- package/dist/i18n/messages/he.json +2 -1
- package/dist/i18n/messages/id.json +2 -1
- package/dist/i18n/messages/it_IT.json +2 -1
- package/dist/i18n/messages/ko_KR.json +2 -1
- package/dist/i18n/messages/pl.json +2 -1
- package/dist/i18n/messages/pt_BR.json +2 -1
- package/dist/i18n/messages/pt_PT.json +2 -1
- package/dist/i18n/messages/ru.json +2 -1
- package/dist/i18n/messages/th.json +2 -1
- package/dist/i18n/messages/tr_TR.json +2 -1
- package/dist/i18n/messages/uk.json +2 -1
- package/dist/i18n/messages/zh_CN.json +2 -1
- package/package.json +2 -2
- package/src/ProductTour/Checkpoint.jsx +9 -2
- package/src/ProductTour/Checkpoint.test.jsx +9 -8
- package/src/ProductTour/ProductTour.test.jsx +31 -160
- package/src/i18n/messages/ar.json +2 -1
- package/src/i18n/messages/ca.json +2 -1
- package/src/i18n/messages/es_419.json +2 -1
- package/src/i18n/messages/es_AR.json +2 -1
- package/src/i18n/messages/es_ES.json +2 -1
- package/src/i18n/messages/fr.json +2 -1
- package/src/i18n/messages/he.json +2 -1
- package/src/i18n/messages/id.json +2 -1
- package/src/i18n/messages/it_IT.json +2 -1
- package/src/i18n/messages/ko_KR.json +2 -1
- package/src/i18n/messages/pl.json +2 -1
- package/src/i18n/messages/pt_BR.json +2 -1
- package/src/i18n/messages/pt_PT.json +2 -1
- package/src/i18n/messages/ru.json +2 -1
- package/src/i18n/messages/th.json +2 -1
- package/src/i18n/messages/tr_TR.json +2 -1
- package/src/i18n/messages/uk.json +2 -1
- package/src/i18n/messages/zh_CN.json +2 -1
|
@@ -6,6 +6,7 @@ import React, { useEffect, useState } from 'react';
|
|
|
6
6
|
import { useMediaQuery } from 'react-responsive';
|
|
7
7
|
import PropTypes from 'prop-types';
|
|
8
8
|
import { createPopper } from '@popperjs/core';
|
|
9
|
+
import { FormattedMessage } from 'react-intl';
|
|
9
10
|
import breakpoints from '../utils/breakpoints';
|
|
10
11
|
import CheckpointActionRow from './CheckpointActionRow';
|
|
11
12
|
import CheckpointBody from './CheckpointBody';
|
|
@@ -93,7 +94,14 @@ const Checkpoint = /*#__PURE__*/React.forwardRef((_ref, ref) => {
|
|
|
93
94
|
}
|
|
94
95
|
}, /*#__PURE__*/React.createElement("span", {
|
|
95
96
|
className: "sr-only"
|
|
96
|
-
},
|
|
97
|
+
}, /*#__PURE__*/React.createElement(FormattedMessage, {
|
|
98
|
+
id: "pgn.ProductTour.Checkpoint.position-text",
|
|
99
|
+
defaultMessage: "Top of step {step}",
|
|
100
|
+
value: {
|
|
101
|
+
step: index + 1
|
|
102
|
+
},
|
|
103
|
+
description: "Screen-reader message to indicate the user's position in a sequence of checkpoints."
|
|
104
|
+
})), (title || !isOnlyCheckpoint) && /*#__PURE__*/React.createElement("div", {
|
|
97
105
|
className: "pgn__checkpoint-header"
|
|
98
106
|
}, /*#__PURE__*/React.createElement(CheckpointTitle, null, title), /*#__PURE__*/React.createElement(CheckpointBreadcrumbs, {
|
|
99
107
|
currentIndex: index,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Checkpoint.js","names":["React","useEffect","useState","useMediaQuery","PropTypes","createPopper","breakpoints","CheckpointActionRow","CheckpointBody","CheckpointBreadcrumbs","CheckpointTitle","Checkpoint","forwardRef","_ref","ref","body","index","placement","target","title","totalCheckpoints","props","_objectWithoutProperties","_excluded","checkpointVisible","setCheckpointVisible","isMobile","maxWidth","small","targetElement","document","querySelector","checkpoint","checkpointPopper","modifiers","name","options","padding","offset","tetherOffset","forceUpdate","targetOffset","getBoundingClientRect","top","bottom","global","innerHeight","includes","scrollTo","behavior","button","focus","isLastCheckpoint","isOnlyCheckpoint","createElement","id","className","role","style","visibility","pointerEvents","currentIndex","_extends","defaultProps","advanceButtonText","dismissButtonText","endButtonText","showDismissButton","undefined","propTypes","node","number","isRequired","onAdvance","func","onDismiss","onEnd","oneOf","string","bool"],"sources":["../../src/ProductTour/Checkpoint.jsx"],"sourcesContent":["import React, { useEffect, useState } from 'react';\nimport { useMediaQuery } from 'react-responsive';\nimport PropTypes from 'prop-types';\nimport { createPopper } from '@popperjs/core';\n\nimport breakpoints from '../utils/breakpoints';\n\nimport CheckpointActionRow from './CheckpointActionRow';\nimport CheckpointBody from './CheckpointBody';\nimport CheckpointBreadcrumbs from './CheckpointBreadcrumbs';\nimport CheckpointTitle from './CheckpointTitle';\n\nconst Checkpoint = React.forwardRef(({\n body,\n index,\n placement,\n target,\n title,\n totalCheckpoints,\n ...props\n}, ref) => {\n const [checkpointVisible, setCheckpointVisible] = useState(false);\n const isMobile = useMediaQuery({ maxWidth: breakpoints.small.maxWidth });\n\n useEffect(() => {\n const targetElement = document.querySelector(target);\n const checkpoint = document.querySelector('#pgn__checkpoint');\n if (targetElement && checkpoint) {\n // Use the Popper library to translate the Checkpoint to its target's coordinates\n const checkpointPopper = createPopper(targetElement, checkpoint, {\n placement: isMobile ? 'top' : placement,\n modifiers: [\n {\n name: 'arrow',\n options: {\n padding: 25,\n },\n },\n {\n name: 'offset',\n options: {\n offset: [0, 20],\n },\n },\n {\n name: 'preventOverflow',\n options: {\n padding: 20,\n tetherOffset: 35,\n },\n },\n ],\n });\n setCheckpointVisible(true);\n if (checkpointPopper) {\n checkpointPopper.forceUpdate();\n }\n }\n }, [target, isMobile, placement]);\n\n useEffect(() => {\n if (checkpointVisible) {\n // Scroll the Checkpoint into view once its rendered\n const targetElement = document.querySelector(target);\n let targetOffset = targetElement.getBoundingClientRect().top;\n if ((targetOffset < 0) || (targetElement.getBoundingClientRect().bottom > global.innerHeight)) {\n if (placement.includes('top')) {\n if (targetOffset < 0) {\n targetOffset *= -1;\n }\n targetOffset -= 280;\n } else {\n targetOffset -= 80;\n }\n\n global.scrollTo({\n top: targetOffset, behavior: 'smooth',\n });\n }\n\n const button = document.querySelector('.pgn__checkpoint-button_advance');\n button.focus();\n }\n }, [target, checkpointVisible, placement]);\n\n const isLastCheckpoint = index + 1 === totalCheckpoints;\n const isOnlyCheckpoint = totalCheckpoints === 1;\n\n return (\n <div\n id=\"pgn__checkpoint\"\n className=\"pgn__checkpoint\"\n aria-labelledby=\"pgn__checkpoint-title\"\n ref={ref}\n role=\"dialog\"\n style={{ visibility: checkpointVisible ? 'visible' : 'hidden', pointerEvents: checkpointVisible ? 'auto' : 'none' }}\n >\n {/* This text is not translated due to Paragon's lack of i18n support */}\n <span className=\"sr-only\">Top of step {index + 1}</span>\n {(title || !isOnlyCheckpoint) && (\n <div className=\"pgn__checkpoint-header\">\n <CheckpointTitle>{title}</CheckpointTitle>\n <CheckpointBreadcrumbs currentIndex={index} totalCheckpoints={totalCheckpoints} />\n </div>\n )}\n <CheckpointBody>{body}</CheckpointBody>\n <CheckpointActionRow\n isLastCheckpoint={isLastCheckpoint}\n index={index}\n {...props}\n />\n <div id=\"pgn__checkpoint-arrow\" data-popper-arrow />\n {/* This text is not translated due to Paragon's lack of i18n support */}\n <span className=\"sr-only\">Bottom of step {index + 1}</span>\n </div>\n );\n});\n\nCheckpoint.defaultProps = {\n advanceButtonText: null,\n body: null,\n dismissButtonText: null,\n endButtonText: null,\n placement: 'top',\n title: null,\n showDismissButton: undefined,\n};\n\nCheckpoint.propTypes = {\n /** The text displayed on the button used to advance the tour for the given Checkpoint. */\n advanceButtonText: PropTypes.node,\n /** The text displayed in the body of the Checkpoint */\n body: PropTypes.node,\n /** The text displayed on the button used to dismiss the tour for the given Checkpoint. */\n dismissButtonText: PropTypes.node,\n /** The text displayed on the button used to end the tour for the given Checkpoint. */\n endButtonText: PropTypes.node,\n /** The current index of the given Checkpoint */\n index: PropTypes.number.isRequired,\n /** A function that runs when triggering the `onClick` event of the advance\n * button for the given Checkpoint. */\n onAdvance: PropTypes.func.isRequired,\n /** A function that runs when triggering the `onClick` event of the dismiss\n * button for the given Checkpoint. */\n onDismiss: PropTypes.func.isRequired,\n /** A function that runs when triggering the `onClick` event of the advance\n * button if the given Checkpoint is the only or last Checkpoint in a tour. */\n onEnd: PropTypes.func.isRequired,\n /** A string that dictates the alignment of the Checkpoint around its target. */\n placement: PropTypes.oneOf([\n 'top', 'top-start', 'top-end', 'right-start', 'right', 'right-end',\n 'left-start', 'left', 'left-end', 'bottom', 'bottom-start', 'bottom-end',\n ]),\n /** The CSS selector for the Checkpoint's desired target. */\n target: PropTypes.string.isRequired,\n /** The text displayed in the title of the Checkpoint */\n title: PropTypes.node,\n /** The total number of Checkpoints in a tour */\n totalCheckpoints: PropTypes.number.isRequired,\n /** Enforces visibility of the dismiss button under all circumstances */\n showDismissButton: PropTypes.bool,\n};\n\nexport default Checkpoint;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Checkpoint.js","names":["React","useEffect","useState","useMediaQuery","PropTypes","createPopper","FormattedMessage","breakpoints","CheckpointActionRow","CheckpointBody","CheckpointBreadcrumbs","CheckpointTitle","Checkpoint","forwardRef","_ref","ref","body","index","placement","target","title","totalCheckpoints","props","_objectWithoutProperties","_excluded","checkpointVisible","setCheckpointVisible","isMobile","maxWidth","small","targetElement","document","querySelector","checkpoint","checkpointPopper","modifiers","name","options","padding","offset","tetherOffset","forceUpdate","targetOffset","getBoundingClientRect","top","bottom","global","innerHeight","includes","scrollTo","behavior","button","focus","isLastCheckpoint","isOnlyCheckpoint","createElement","id","className","role","style","visibility","pointerEvents","defaultMessage","value","step","description","currentIndex","_extends","defaultProps","advanceButtonText","dismissButtonText","endButtonText","showDismissButton","undefined","propTypes","node","number","isRequired","onAdvance","func","onDismiss","onEnd","oneOf","string","bool"],"sources":["../../src/ProductTour/Checkpoint.jsx"],"sourcesContent":["import React, { useEffect, useState } from 'react';\nimport { useMediaQuery } from 'react-responsive';\nimport PropTypes from 'prop-types';\nimport { createPopper } from '@popperjs/core';\nimport { FormattedMessage } from 'react-intl';\n\nimport breakpoints from '../utils/breakpoints';\n\nimport CheckpointActionRow from './CheckpointActionRow';\nimport CheckpointBody from './CheckpointBody';\nimport CheckpointBreadcrumbs from './CheckpointBreadcrumbs';\nimport CheckpointTitle from './CheckpointTitle';\n\nconst Checkpoint = React.forwardRef(({\n body,\n index,\n placement,\n target,\n title,\n totalCheckpoints,\n ...props\n}, ref) => {\n const [checkpointVisible, setCheckpointVisible] = useState(false);\n const isMobile = useMediaQuery({ maxWidth: breakpoints.small.maxWidth });\n\n useEffect(() => {\n const targetElement = document.querySelector(target);\n const checkpoint = document.querySelector('#pgn__checkpoint');\n if (targetElement && checkpoint) {\n // Use the Popper library to translate the Checkpoint to its target's coordinates\n const checkpointPopper = createPopper(targetElement, checkpoint, {\n placement: isMobile ? 'top' : placement,\n modifiers: [\n {\n name: 'arrow',\n options: {\n padding: 25,\n },\n },\n {\n name: 'offset',\n options: {\n offset: [0, 20],\n },\n },\n {\n name: 'preventOverflow',\n options: {\n padding: 20,\n tetherOffset: 35,\n },\n },\n ],\n });\n setCheckpointVisible(true);\n if (checkpointPopper) {\n checkpointPopper.forceUpdate();\n }\n }\n }, [target, isMobile, placement]);\n\n useEffect(() => {\n if (checkpointVisible) {\n // Scroll the Checkpoint into view once its rendered\n const targetElement = document.querySelector(target);\n let targetOffset = targetElement.getBoundingClientRect().top;\n if ((targetOffset < 0) || (targetElement.getBoundingClientRect().bottom > global.innerHeight)) {\n if (placement.includes('top')) {\n if (targetOffset < 0) {\n targetOffset *= -1;\n }\n targetOffset -= 280;\n } else {\n targetOffset -= 80;\n }\n\n global.scrollTo({\n top: targetOffset, behavior: 'smooth',\n });\n }\n\n const button = document.querySelector('.pgn__checkpoint-button_advance');\n button.focus();\n }\n }, [target, checkpointVisible, placement]);\n\n const isLastCheckpoint = index + 1 === totalCheckpoints;\n const isOnlyCheckpoint = totalCheckpoints === 1;\n\n return (\n <div\n id=\"pgn__checkpoint\"\n className=\"pgn__checkpoint\"\n aria-labelledby=\"pgn__checkpoint-title\"\n ref={ref}\n role=\"dialog\"\n style={{ visibility: checkpointVisible ? 'visible' : 'hidden', pointerEvents: checkpointVisible ? 'auto' : 'none' }}\n >\n <span className=\"sr-only\">\n <FormattedMessage\n id=\"pgn.ProductTour.Checkpoint.position-text\"\n defaultMessage=\"Top of step {step}\"\n value={{ step: index + 1 }}\n description=\"Screen-reader message to indicate the user's position in a sequence of checkpoints.\"\n />\n </span>\n {(title || !isOnlyCheckpoint) && (\n <div className=\"pgn__checkpoint-header\">\n <CheckpointTitle>{title}</CheckpointTitle>\n <CheckpointBreadcrumbs currentIndex={index} totalCheckpoints={totalCheckpoints} />\n </div>\n )}\n <CheckpointBody>{body}</CheckpointBody>\n <CheckpointActionRow\n isLastCheckpoint={isLastCheckpoint}\n index={index}\n {...props}\n />\n <div id=\"pgn__checkpoint-arrow\" data-popper-arrow />\n {/* This text is not translated due to Paragon's lack of i18n support */}\n <span className=\"sr-only\">Bottom of step {index + 1}</span>\n </div>\n );\n});\n\nCheckpoint.defaultProps = {\n advanceButtonText: null,\n body: null,\n dismissButtonText: null,\n endButtonText: null,\n placement: 'top',\n title: null,\n showDismissButton: undefined,\n};\n\nCheckpoint.propTypes = {\n /** The text displayed on the button used to advance the tour for the given Checkpoint. */\n advanceButtonText: PropTypes.node,\n /** The text displayed in the body of the Checkpoint */\n body: PropTypes.node,\n /** The text displayed on the button used to dismiss the tour for the given Checkpoint. */\n dismissButtonText: PropTypes.node,\n /** The text displayed on the button used to end the tour for the given Checkpoint. */\n endButtonText: PropTypes.node,\n /** The current index of the given Checkpoint */\n index: PropTypes.number.isRequired,\n /** A function that runs when triggering the `onClick` event of the advance\n * button for the given Checkpoint. */\n onAdvance: PropTypes.func.isRequired,\n /** A function that runs when triggering the `onClick` event of the dismiss\n * button for the given Checkpoint. */\n onDismiss: PropTypes.func.isRequired,\n /** A function that runs when triggering the `onClick` event of the advance\n * button if the given Checkpoint is the only or last Checkpoint in a tour. */\n onEnd: PropTypes.func.isRequired,\n /** A string that dictates the alignment of the Checkpoint around its target. */\n placement: PropTypes.oneOf([\n 'top', 'top-start', 'top-end', 'right-start', 'right', 'right-end',\n 'left-start', 'left', 'left-end', 'bottom', 'bottom-start', 'bottom-end',\n ]),\n /** The CSS selector for the Checkpoint's desired target. */\n target: PropTypes.string.isRequired,\n /** The text displayed in the title of the Checkpoint */\n title: PropTypes.node,\n /** The total number of Checkpoints in a tour */\n totalCheckpoints: PropTypes.number.isRequired,\n /** Enforces visibility of the dismiss button under all circumstances */\n showDismissButton: PropTypes.bool,\n};\n\nexport default Checkpoint;\n"],"mappings":"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"}
|
|
@@ -27,5 +27,6 @@
|
|
|
27
27
|
"pgn.Dropzone.UploadProgress.uploadLabel": "رفع {filename} جارٍ.",
|
|
28
28
|
"pgn.FormAutosuggest.iconButtonClosed": "إغلاق قائمة الخيارات",
|
|
29
29
|
"pgn.FormAutosuggest.iconButtonOpened": "فتح قائمة الخيارات",
|
|
30
|
-
"pgn.Toast.closeLabel": "إغلاق "
|
|
30
|
+
"pgn.Toast.closeLabel": "إغلاق ",
|
|
31
|
+
"pgn.ProductTour.Checkpoint.position-text": "Top of step {step}"
|
|
31
32
|
}
|
|
@@ -27,5 +27,6 @@
|
|
|
27
27
|
"pgn.Dropzone.UploadProgress.uploadLabel": "Uploading {filename}.",
|
|
28
28
|
"pgn.FormAutosuggest.iconButtonClosed": "Close the options menu",
|
|
29
29
|
"pgn.FormAutosuggest.iconButtonOpened": "Open the options menu",
|
|
30
|
-
"pgn.Toast.closeLabel": "Close"
|
|
30
|
+
"pgn.Toast.closeLabel": "Close",
|
|
31
|
+
"pgn.ProductTour.Checkpoint.position-text": "Top of step {step}"
|
|
31
32
|
}
|
|
@@ -27,5 +27,6 @@
|
|
|
27
27
|
"pgn.Dropzone.UploadProgress.uploadLabel": "Subiendo {filename}.",
|
|
28
28
|
"pgn.FormAutosuggest.iconButtonClosed": "Cerrar el menú de opciones",
|
|
29
29
|
"pgn.FormAutosuggest.iconButtonOpened": "Abre el menú de opciones",
|
|
30
|
-
"pgn.Toast.closeLabel": "Cerrar"
|
|
30
|
+
"pgn.Toast.closeLabel": "Cerrar",
|
|
31
|
+
"pgn.ProductTour.Checkpoint.position-text": "Top of step {step}"
|
|
31
32
|
}
|
|
@@ -27,5 +27,6 @@
|
|
|
27
27
|
"pgn.Dropzone.UploadProgress.uploadLabel": "Subiendo {filename}.",
|
|
28
28
|
"pgn.FormAutosuggest.iconButtonClosed": "Cerrar el menú de opciones",
|
|
29
29
|
"pgn.FormAutosuggest.iconButtonOpened": "Abre el menú de opciones",
|
|
30
|
-
"pgn.Toast.closeLabel": "Cerrar"
|
|
30
|
+
"pgn.Toast.closeLabel": "Cerrar",
|
|
31
|
+
"pgn.ProductTour.Checkpoint.position-text": "Top of step {step}"
|
|
31
32
|
}
|
|
@@ -27,5 +27,6 @@
|
|
|
27
27
|
"pgn.Dropzone.UploadProgress.uploadLabel": "Subiendo {filename}.",
|
|
28
28
|
"pgn.FormAutosuggest.iconButtonClosed": "Cerrar el menú de opciones",
|
|
29
29
|
"pgn.FormAutosuggest.iconButtonOpened": "Abre el menú de opciones",
|
|
30
|
-
"pgn.Toast.closeLabel": "Cerrar"
|
|
30
|
+
"pgn.Toast.closeLabel": "Cerrar",
|
|
31
|
+
"pgn.ProductTour.Checkpoint.position-text": "Top of step {step}"
|
|
31
32
|
}
|
|
@@ -27,5 +27,6 @@
|
|
|
27
27
|
"pgn.Dropzone.UploadProgress.uploadLabel": "Uploading {filename}.",
|
|
28
28
|
"pgn.FormAutosuggest.iconButtonClosed": "Close the options menu",
|
|
29
29
|
"pgn.FormAutosuggest.iconButtonOpened": "Open the options menu",
|
|
30
|
-
"pgn.Toast.closeLabel": "Close"
|
|
30
|
+
"pgn.Toast.closeLabel": "Close",
|
|
31
|
+
"pgn.ProductTour.Checkpoint.position-text": "Top of step {step}"
|
|
31
32
|
}
|
|
@@ -27,5 +27,6 @@
|
|
|
27
27
|
"pgn.Dropzone.UploadProgress.uploadLabel": "Uploading {filename}.",
|
|
28
28
|
"pgn.FormAutosuggest.iconButtonClosed": "Close the options menu",
|
|
29
29
|
"pgn.FormAutosuggest.iconButtonOpened": "Open the options menu",
|
|
30
|
-
"pgn.Toast.closeLabel": "Close"
|
|
30
|
+
"pgn.Toast.closeLabel": "Close",
|
|
31
|
+
"pgn.ProductTour.Checkpoint.position-text": "Top of step {step}"
|
|
31
32
|
}
|
|
@@ -27,5 +27,6 @@
|
|
|
27
27
|
"pgn.Dropzone.UploadProgress.uploadLabel": "Uploading {filename}.",
|
|
28
28
|
"pgn.FormAutosuggest.iconButtonClosed": "Close the options menu",
|
|
29
29
|
"pgn.FormAutosuggest.iconButtonOpened": "Open the options menu",
|
|
30
|
-
"pgn.Toast.closeLabel": "Close"
|
|
30
|
+
"pgn.Toast.closeLabel": "Close",
|
|
31
|
+
"pgn.ProductTour.Checkpoint.position-text": "Top of step {step}"
|
|
31
32
|
}
|
|
@@ -27,5 +27,6 @@
|
|
|
27
27
|
"pgn.Dropzone.UploadProgress.uploadLabel": "Caricamento {filename}.",
|
|
28
28
|
"pgn.FormAutosuggest.iconButtonClosed": "Close the options menu",
|
|
29
29
|
"pgn.FormAutosuggest.iconButtonOpened": "Open the options menu",
|
|
30
|
-
"pgn.Toast.closeLabel": "Chiudi"
|
|
30
|
+
"pgn.Toast.closeLabel": "Chiudi",
|
|
31
|
+
"pgn.ProductTour.Checkpoint.position-text": "Top of step {step}"
|
|
31
32
|
}
|
|
@@ -27,5 +27,6 @@
|
|
|
27
27
|
"pgn.Dropzone.UploadProgress.uploadLabel": "Uploading {filename}.",
|
|
28
28
|
"pgn.FormAutosuggest.iconButtonClosed": "Close the options menu",
|
|
29
29
|
"pgn.FormAutosuggest.iconButtonOpened": "Open the options menu",
|
|
30
|
-
"pgn.Toast.closeLabel": "Close"
|
|
30
|
+
"pgn.Toast.closeLabel": "Close",
|
|
31
|
+
"pgn.ProductTour.Checkpoint.position-text": "Top of step {step}"
|
|
31
32
|
}
|
|
@@ -27,5 +27,6 @@
|
|
|
27
27
|
"pgn.Dropzone.UploadProgress.uploadLabel": "Uploading {filename}.",
|
|
28
28
|
"pgn.FormAutosuggest.iconButtonClosed": "Close the options menu",
|
|
29
29
|
"pgn.FormAutosuggest.iconButtonOpened": "Open the options menu",
|
|
30
|
-
"pgn.Toast.closeLabel": "Zamknij"
|
|
30
|
+
"pgn.Toast.closeLabel": "Zamknij",
|
|
31
|
+
"pgn.ProductTour.Checkpoint.position-text": "Top of step {step}"
|
|
31
32
|
}
|
|
@@ -27,5 +27,6 @@
|
|
|
27
27
|
"pgn.Dropzone.UploadProgress.uploadLabel": "Uploading {filename}.",
|
|
28
28
|
"pgn.FormAutosuggest.iconButtonClosed": "Close the options menu",
|
|
29
29
|
"pgn.FormAutosuggest.iconButtonOpened": "Open the options menu",
|
|
30
|
-
"pgn.Toast.closeLabel": "Close"
|
|
30
|
+
"pgn.Toast.closeLabel": "Close",
|
|
31
|
+
"pgn.ProductTour.Checkpoint.position-text": "Top of step {step}"
|
|
31
32
|
}
|
|
@@ -27,5 +27,6 @@
|
|
|
27
27
|
"pgn.Dropzone.UploadProgress.uploadLabel": "Carregando {filename}.",
|
|
28
28
|
"pgn.FormAutosuggest.iconButtonClosed": "Fechar o menu de opções",
|
|
29
29
|
"pgn.FormAutosuggest.iconButtonOpened": "Abrir o menu de opções",
|
|
30
|
-
"pgn.Toast.closeLabel": "Fechar"
|
|
30
|
+
"pgn.Toast.closeLabel": "Fechar",
|
|
31
|
+
"pgn.ProductTour.Checkpoint.position-text": "Top of step {step}"
|
|
31
32
|
}
|
|
@@ -27,5 +27,6 @@
|
|
|
27
27
|
"pgn.Dropzone.UploadProgress.uploadLabel": "Uploading {filename}.",
|
|
28
28
|
"pgn.FormAutosuggest.iconButtonClosed": "Close the options menu",
|
|
29
29
|
"pgn.FormAutosuggest.iconButtonOpened": "Open the options menu",
|
|
30
|
-
"pgn.Toast.closeLabel": "Close"
|
|
30
|
+
"pgn.Toast.closeLabel": "Close",
|
|
31
|
+
"pgn.ProductTour.Checkpoint.position-text": "Top of step {step}"
|
|
31
32
|
}
|
|
@@ -27,5 +27,6 @@
|
|
|
27
27
|
"pgn.Dropzone.UploadProgress.uploadLabel": "Uploading {filename}.",
|
|
28
28
|
"pgn.FormAutosuggest.iconButtonClosed": "Close the options menu",
|
|
29
29
|
"pgn.FormAutosuggest.iconButtonOpened": "Open the options menu",
|
|
30
|
-
"pgn.Toast.closeLabel": "Close"
|
|
30
|
+
"pgn.Toast.closeLabel": "Close",
|
|
31
|
+
"pgn.ProductTour.Checkpoint.position-text": "Top of step {step}"
|
|
31
32
|
}
|
|
@@ -27,5 +27,6 @@
|
|
|
27
27
|
"pgn.Dropzone.UploadProgress.uploadLabel": "{filename} yükleniyor.",
|
|
28
28
|
"pgn.FormAutosuggest.iconButtonClosed": "Seçenekler menüsünü kapat",
|
|
29
29
|
"pgn.FormAutosuggest.iconButtonOpened": "Seçenekler menüsünü aç",
|
|
30
|
-
"pgn.Toast.closeLabel": "Kapat"
|
|
30
|
+
"pgn.Toast.closeLabel": "Kapat",
|
|
31
|
+
"pgn.ProductTour.Checkpoint.position-text": "Top of step {step}"
|
|
31
32
|
}
|
|
@@ -27,5 +27,6 @@
|
|
|
27
27
|
"pgn.Dropzone.UploadProgress.uploadLabel": "Uploading {filename}.",
|
|
28
28
|
"pgn.FormAutosuggest.iconButtonClosed": "Close the options menu",
|
|
29
29
|
"pgn.FormAutosuggest.iconButtonOpened": "Open the options menu",
|
|
30
|
-
"pgn.Toast.closeLabel": "Close"
|
|
30
|
+
"pgn.Toast.closeLabel": "Close",
|
|
31
|
+
"pgn.ProductTour.Checkpoint.position-text": "Top of step {step}"
|
|
31
32
|
}
|
|
@@ -27,5 +27,6 @@
|
|
|
27
27
|
"pgn.Dropzone.UploadProgress.uploadLabel": "Uploading {filename}.",
|
|
28
28
|
"pgn.FormAutosuggest.iconButtonClosed": "Close the options menu",
|
|
29
29
|
"pgn.FormAutosuggest.iconButtonOpened": "Open the options menu",
|
|
30
|
-
"pgn.Toast.closeLabel": "Close"
|
|
30
|
+
"pgn.Toast.closeLabel": "Close",
|
|
31
|
+
"pgn.ProductTour.Checkpoint.position-text": "Top of step {step}"
|
|
31
32
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@openedx/paragon",
|
|
3
|
-
"version": "21.
|
|
3
|
+
"version": "21.7.0",
|
|
4
4
|
"description": "Accessible, responsive UI component library based on Bootstrap.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"module": "dist/index.js",
|
|
@@ -41,7 +41,7 @@
|
|
|
41
41
|
"example:start:with-theme": "npm run start:with-theme --workspace=example",
|
|
42
42
|
"generate-changelog": "node generate-changelog.js",
|
|
43
43
|
"i18n_compile": "formatjs compile-folder --format transifex ./src/i18n/messages ./src/i18n/messages",
|
|
44
|
-
"i18n_extract": "formatjs extract 'src/**/*.{jsx,js,tsx,ts}' --out-file ./src/i18n/transifex_input.json --format transifex",
|
|
44
|
+
"i18n_extract": "formatjs extract 'src/**/*.{jsx,js,tsx,ts}' --out-file ./src/i18n/transifex_input.json --ignore='**/*.d.ts' --format transifex",
|
|
45
45
|
"type-check": "tsc --noEmit && tsc --project www --noEmit",
|
|
46
46
|
"type-check:watch": "npm run type-check -- --watch",
|
|
47
47
|
"build-types": "tsc --emitDeclarationOnly",
|
|
@@ -2,6 +2,7 @@ import React, { useEffect, useState } from 'react';
|
|
|
2
2
|
import { useMediaQuery } from 'react-responsive';
|
|
3
3
|
import PropTypes from 'prop-types';
|
|
4
4
|
import { createPopper } from '@popperjs/core';
|
|
5
|
+
import { FormattedMessage } from 'react-intl';
|
|
5
6
|
|
|
6
7
|
import breakpoints from '../utils/breakpoints';
|
|
7
8
|
|
|
@@ -95,8 +96,14 @@ const Checkpoint = React.forwardRef(({
|
|
|
95
96
|
role="dialog"
|
|
96
97
|
style={{ visibility: checkpointVisible ? 'visible' : 'hidden', pointerEvents: checkpointVisible ? 'auto' : 'none' }}
|
|
97
98
|
>
|
|
98
|
-
|
|
99
|
-
|
|
99
|
+
<span className="sr-only">
|
|
100
|
+
<FormattedMessage
|
|
101
|
+
id="pgn.ProductTour.Checkpoint.position-text"
|
|
102
|
+
defaultMessage="Top of step {step}"
|
|
103
|
+
value={{ step: index + 1 }}
|
|
104
|
+
description="Screen-reader message to indicate the user's position in a sequence of checkpoints."
|
|
105
|
+
/>
|
|
106
|
+
</span>
|
|
100
107
|
{(title || !isOnlyCheckpoint) && (
|
|
101
108
|
<div className="pgn__checkpoint-header">
|
|
102
109
|
<CheckpointTitle>{title}</CheckpointTitle>
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { render, screen } from '@testing-library/react';
|
|
3
3
|
import userEvent from '@testing-library/user-event';
|
|
4
|
+
import { IntlProvider } from 'react-intl';
|
|
4
5
|
|
|
5
6
|
import * as popper from '@popperjs/core';
|
|
6
7
|
|
|
@@ -24,7 +25,7 @@ describe('Checkpoint', () => {
|
|
|
24
25
|
describe('second Checkpoint in Tour', () => {
|
|
25
26
|
beforeEach(() => {
|
|
26
27
|
render(
|
|
27
|
-
|
|
28
|
+
<IntlProvider locale="en" messages={{}}>
|
|
28
29
|
<div id="target-element">...</div>
|
|
29
30
|
<Checkpoint
|
|
30
31
|
advanceButtonText="Next"
|
|
@@ -39,7 +40,7 @@ describe('Checkpoint', () => {
|
|
|
39
40
|
title="Checkpoint title"
|
|
40
41
|
totalCheckpoints={5}
|
|
41
42
|
/>
|
|
42
|
-
|
|
43
|
+
</IntlProvider>,
|
|
43
44
|
);
|
|
44
45
|
});
|
|
45
46
|
|
|
@@ -75,7 +76,7 @@ describe('Checkpoint', () => {
|
|
|
75
76
|
describe('last Checkpoint in Tour', () => {
|
|
76
77
|
beforeEach(() => {
|
|
77
78
|
render(
|
|
78
|
-
|
|
79
|
+
<IntlProvider locale="en" messages={{}}>
|
|
79
80
|
<div id="#last-element" />
|
|
80
81
|
<Checkpoint
|
|
81
82
|
advanceButtonText="Next"
|
|
@@ -90,7 +91,7 @@ describe('Checkpoint', () => {
|
|
|
90
91
|
title="Checkpoint title"
|
|
91
92
|
totalCheckpoints={5}
|
|
92
93
|
/>
|
|
93
|
-
|
|
94
|
+
</IntlProvider>,
|
|
94
95
|
);
|
|
95
96
|
});
|
|
96
97
|
|
|
@@ -108,7 +109,7 @@ describe('Checkpoint', () => {
|
|
|
108
109
|
describe('only one Checkpoint in Tour', () => {
|
|
109
110
|
beforeEach(() => {
|
|
110
111
|
render(
|
|
111
|
-
|
|
112
|
+
<IntlProvider locale="en" messages={{}}>
|
|
112
113
|
<div id="#target-element" />
|
|
113
114
|
<Checkpoint
|
|
114
115
|
advanceButtonText="Next"
|
|
@@ -123,7 +124,7 @@ describe('Checkpoint', () => {
|
|
|
123
124
|
title="Checkpoint title"
|
|
124
125
|
totalCheckpoints={1}
|
|
125
126
|
/>
|
|
126
|
-
|
|
127
|
+
</IntlProvider>,
|
|
127
128
|
);
|
|
128
129
|
});
|
|
129
130
|
|
|
@@ -140,7 +141,7 @@ describe('Checkpoint', () => {
|
|
|
140
141
|
describe('only one Checkpoint in Tour and showDismissButton set to true', () => {
|
|
141
142
|
it('it renders dismiss button and end button', () => {
|
|
142
143
|
render(
|
|
143
|
-
|
|
144
|
+
<IntlProvider locale="en" messages={{}}>
|
|
144
145
|
<div id="#target-element" />
|
|
145
146
|
<Checkpoint
|
|
146
147
|
advanceButtonText="Next"
|
|
@@ -156,7 +157,7 @@ describe('Checkpoint', () => {
|
|
|
156
157
|
totalCheckpoints={1}
|
|
157
158
|
showDismissButton
|
|
158
159
|
/>
|
|
159
|
-
|
|
160
|
+
</IntlProvider>,
|
|
160
161
|
);
|
|
161
162
|
expect(screen.getByText('Dismiss', { selector: 'button' })).toBeInTheDocument();
|
|
162
163
|
expect(screen.getByText('End', { selector: 'button' })).toBeInTheDocument();
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { render, screen, act } from '@testing-library/react';
|
|
3
3
|
import userEvent from '@testing-library/user-event';
|
|
4
|
+
import { IntlProvider } from 'react-intl';
|
|
4
5
|
|
|
5
6
|
import * as popper from '@popperjs/core';
|
|
6
7
|
|
|
@@ -85,17 +86,20 @@ describe('<ProductTour />', () => {
|
|
|
85
86
|
popperMock.mockReset();
|
|
86
87
|
});
|
|
87
88
|
|
|
89
|
+
// eslint-disable-next-line react/prop-types
|
|
90
|
+
function ProductTourWrapper({ tours }) {
|
|
91
|
+
return (
|
|
92
|
+
<IntlProvider locale="en" messages={{}}>
|
|
93
|
+
<ProductTour tours={tours} />
|
|
94
|
+
{targets}
|
|
95
|
+
</IntlProvider>
|
|
96
|
+
);
|
|
97
|
+
}
|
|
98
|
+
|
|
88
99
|
describe('one enabled tour', () => {
|
|
89
100
|
describe('with default settings', () => {
|
|
90
101
|
it('renders checkpoint with correct title, body, and breadcrumbs', () => {
|
|
91
|
-
render(
|
|
92
|
-
<>
|
|
93
|
-
<ProductTour
|
|
94
|
-
tours={[tourData]}
|
|
95
|
-
/>
|
|
96
|
-
{targets}
|
|
97
|
-
</>,
|
|
98
|
-
);
|
|
102
|
+
render(<ProductTourWrapper tours={[tourData]} />);
|
|
99
103
|
|
|
100
104
|
expect(screen.getByRole('dialog', { name: 'Checkpoint 1' })).toBeInTheDocument();
|
|
101
105
|
expect(screen.getByText('Checkpoint 1')).toBeInTheDocument();
|
|
@@ -103,14 +107,7 @@ describe('<ProductTour />', () => {
|
|
|
103
107
|
});
|
|
104
108
|
|
|
105
109
|
it('onClick of advance button advances to next checkpoint', async () => {
|
|
106
|
-
const { rerender } = render(
|
|
107
|
-
<>
|
|
108
|
-
<ProductTour
|
|
109
|
-
tours={[tourData]}
|
|
110
|
-
/>
|
|
111
|
-
{targets}
|
|
112
|
-
</>,
|
|
113
|
-
);
|
|
110
|
+
const { rerender } = render(<ProductTourWrapper tours={[tourData]} />);
|
|
114
111
|
// Verify the first Checkpoint has rendered
|
|
115
112
|
expect(screen.getByRole('heading', { name: 'Checkpoint 1' })).toBeInTheDocument();
|
|
116
113
|
|
|
@@ -120,14 +117,7 @@ describe('<ProductTour />', () => {
|
|
|
120
117
|
await userEvent.click(advanceButton);
|
|
121
118
|
});
|
|
122
119
|
|
|
123
|
-
rerender(
|
|
124
|
-
<>
|
|
125
|
-
<ProductTour
|
|
126
|
-
tours={[tourData]}
|
|
127
|
-
/>
|
|
128
|
-
{targets}
|
|
129
|
-
</>,
|
|
130
|
-
);
|
|
120
|
+
rerender(<ProductTourWrapper tours={[tourData]} />);
|
|
131
121
|
|
|
132
122
|
const heading = screen.getByRole('heading', { name: 'Checkpoint 2' });
|
|
133
123
|
|
|
@@ -136,14 +126,7 @@ describe('<ProductTour />', () => {
|
|
|
136
126
|
});
|
|
137
127
|
|
|
138
128
|
it('onClick of dismiss button disables tour', async () => {
|
|
139
|
-
render(
|
|
140
|
-
<>
|
|
141
|
-
<ProductTour
|
|
142
|
-
tours={[tourData]}
|
|
143
|
-
/>
|
|
144
|
-
{targets}
|
|
145
|
-
</>,
|
|
146
|
-
);
|
|
129
|
+
render(<ProductTourWrapper tours={[tourData]} />);
|
|
147
130
|
|
|
148
131
|
// Verify a Checkpoint has rendered
|
|
149
132
|
expect(screen.getByRole('dialog', { name: 'Checkpoint 1' })).toBeInTheDocument();
|
|
@@ -161,14 +144,7 @@ describe('<ProductTour />', () => {
|
|
|
161
144
|
});
|
|
162
145
|
|
|
163
146
|
it('onClick of end button disables tour', async () => {
|
|
164
|
-
const { rerender } = render(
|
|
165
|
-
<>
|
|
166
|
-
<ProductTour
|
|
167
|
-
tours={[tourData]}
|
|
168
|
-
/>
|
|
169
|
-
{targets}
|
|
170
|
-
</>,
|
|
171
|
-
);
|
|
147
|
+
const { rerender } = render(<ProductTourWrapper tours={[tourData]} />);
|
|
172
148
|
|
|
173
149
|
// Verify a Checkpoint has rendered
|
|
174
150
|
expect(screen.getByRole('dialog', { name: 'Checkpoint 1' })).toBeInTheDocument();
|
|
@@ -184,28 +160,14 @@ describe('<ProductTour />', () => {
|
|
|
184
160
|
await userEvent.click(advanceButton2);
|
|
185
161
|
});
|
|
186
162
|
|
|
187
|
-
rerender(
|
|
188
|
-
<>
|
|
189
|
-
<ProductTour
|
|
190
|
-
tours={[tourData]}
|
|
191
|
-
/>
|
|
192
|
-
{targets}
|
|
193
|
-
</>,
|
|
194
|
-
);
|
|
163
|
+
rerender(<ProductTourWrapper tours={[tourData]} />);
|
|
195
164
|
|
|
196
165
|
const advanceButton3 = screen.getByRole('button', { name: 'Override advance' });
|
|
197
166
|
await act(async () => {
|
|
198
167
|
await userEvent.click(advanceButton3);
|
|
199
168
|
});
|
|
200
169
|
|
|
201
|
-
rerender(
|
|
202
|
-
<>
|
|
203
|
-
<ProductTour
|
|
204
|
-
tours={[tourData]}
|
|
205
|
-
/>
|
|
206
|
-
{targets}
|
|
207
|
-
</>,
|
|
208
|
-
);
|
|
170
|
+
rerender(<ProductTourWrapper tours={[tourData]} />);
|
|
209
171
|
|
|
210
172
|
// Click the end button
|
|
211
173
|
const endButton = screen.getByRole('button', { name: 'End' });
|
|
@@ -220,14 +182,7 @@ describe('<ProductTour />', () => {
|
|
|
220
182
|
});
|
|
221
183
|
|
|
222
184
|
it('onClick of escape key disables tour', async () => {
|
|
223
|
-
render(
|
|
224
|
-
<>
|
|
225
|
-
<ProductTour
|
|
226
|
-
tours={[tourData]}
|
|
227
|
-
/>
|
|
228
|
-
{targets}
|
|
229
|
-
</>,
|
|
230
|
-
);
|
|
185
|
+
render(<ProductTourWrapper tours={[tourData]} />);
|
|
231
186
|
|
|
232
187
|
// Verify a Checkpoint has rendered
|
|
233
188
|
expect(screen.getByRole('dialog', { name: 'Checkpoint 1' })).toBeInTheDocument();
|
|
@@ -283,27 +238,13 @@ describe('<ProductTour />', () => {
|
|
|
283
238
|
],
|
|
284
239
|
};
|
|
285
240
|
it('renders correct checkpoint on index override', () => {
|
|
286
|
-
render(
|
|
287
|
-
<>
|
|
288
|
-
<ProductTour
|
|
289
|
-
tours={[overrideTourData]}
|
|
290
|
-
/>
|
|
291
|
-
{targets}
|
|
292
|
-
</>,
|
|
293
|
-
);
|
|
241
|
+
render(<ProductTourWrapper tours={[overrideTourData]} />);
|
|
294
242
|
expect(screen.getByRole('dialog', { name: 'Checkpoint 3' })).toBeInTheDocument();
|
|
295
243
|
expect(screen.getByRole('heading', { name: 'Checkpoint 3' })).toBeInTheDocument();
|
|
296
244
|
});
|
|
297
245
|
|
|
298
246
|
it('applies override for advanceButtonText', async () => {
|
|
299
|
-
const { rerender } = render(
|
|
300
|
-
<>
|
|
301
|
-
<ProductTour
|
|
302
|
-
tours={[overrideTourData]}
|
|
303
|
-
/>
|
|
304
|
-
{targets}
|
|
305
|
-
</>,
|
|
306
|
-
);
|
|
247
|
+
const { rerender } = render(<ProductTourWrapper tours={[overrideTourData]} />);
|
|
307
248
|
expect(screen.getByRole('button', { name: 'Override advance' })).toBeInTheDocument();
|
|
308
249
|
const advanceButton = screen.getByRole('button', { name: 'Override advance' });
|
|
309
250
|
await act(async () => {
|
|
@@ -312,37 +253,16 @@ describe('<ProductTour />', () => {
|
|
|
312
253
|
expect(screen.queryByRole('button', { name: 'Override advance' })).not.toBeInTheDocument();
|
|
313
254
|
expect(customOnAdvance).toHaveBeenCalledTimes(1);
|
|
314
255
|
|
|
315
|
-
rerender(
|
|
316
|
-
<>
|
|
317
|
-
<ProductTour
|
|
318
|
-
tours={[overrideTourData]}
|
|
319
|
-
/>
|
|
320
|
-
{targets}
|
|
321
|
-
</>,
|
|
322
|
-
);
|
|
256
|
+
rerender(<ProductTourWrapper tours={[overrideTourData]} />);
|
|
323
257
|
|
|
324
258
|
expect(screen.getByText('Checkpoint 4')).toBeInTheDocument();
|
|
325
259
|
});
|
|
326
260
|
it('applies override for dismissButtonText', () => {
|
|
327
|
-
render(
|
|
328
|
-
<>
|
|
329
|
-
<ProductTour
|
|
330
|
-
tours={[overrideTourData]}
|
|
331
|
-
/>
|
|
332
|
-
{targets}
|
|
333
|
-
</>,
|
|
334
|
-
);
|
|
261
|
+
render(<ProductTourWrapper tours={[overrideTourData]} />);
|
|
335
262
|
expect(screen.getByRole('button', { name: 'Override dismiss' })).toBeInTheDocument();
|
|
336
263
|
});
|
|
337
264
|
it('calls customHandleDismiss onClick of dismiss button', async () => {
|
|
338
|
-
render(
|
|
339
|
-
<>
|
|
340
|
-
<ProductTour
|
|
341
|
-
tours={[overrideTourData]}
|
|
342
|
-
/>
|
|
343
|
-
{targets}
|
|
344
|
-
</>,
|
|
345
|
-
);
|
|
265
|
+
render(<ProductTourWrapper tours={[overrideTourData]} />);
|
|
346
266
|
const dismissButton = screen.getByRole('button', { name: 'Override dismiss' });
|
|
347
267
|
await act(async () => {
|
|
348
268
|
await userEvent.click(dismissButton);
|
|
@@ -351,27 +271,13 @@ describe('<ProductTour />', () => {
|
|
|
351
271
|
expect(screen.queryByRole('dialog')).not.toBeInTheDocument();
|
|
352
272
|
});
|
|
353
273
|
it('calls customHandleOnEnd onClick of end button', async () => {
|
|
354
|
-
const { rerender } = render(
|
|
355
|
-
<>
|
|
356
|
-
<ProductTour
|
|
357
|
-
tours={[overrideTourData]}
|
|
358
|
-
/>
|
|
359
|
-
{targets}
|
|
360
|
-
</>,
|
|
361
|
-
);
|
|
274
|
+
const { rerender } = render(<ProductTourWrapper tours={[overrideTourData]} />);
|
|
362
275
|
const advanceButton = screen.getByRole('button', { name: 'Override advance' });
|
|
363
276
|
await act(async () => {
|
|
364
277
|
await userEvent.click(advanceButton);
|
|
365
278
|
});
|
|
366
279
|
|
|
367
|
-
rerender(
|
|
368
|
-
<>
|
|
369
|
-
<ProductTour
|
|
370
|
-
tours={[overrideTourData]}
|
|
371
|
-
/>
|
|
372
|
-
{targets}
|
|
373
|
-
</>,
|
|
374
|
-
);
|
|
280
|
+
rerender(<ProductTourWrapper tours={[overrideTourData]} />);
|
|
375
281
|
|
|
376
282
|
expect(screen.getByText('Checkpoint 4')).toBeInTheDocument();
|
|
377
283
|
const endButton = screen.getByRole('button', { name: 'Override end' });
|
|
@@ -383,14 +289,7 @@ describe('<ProductTour />', () => {
|
|
|
383
289
|
expect(screen.queryByText('Checkpoint 4')).not.toBeInTheDocument();
|
|
384
290
|
});
|
|
385
291
|
it('calls onEscape on escape button key press', async () => {
|
|
386
|
-
render(
|
|
387
|
-
<>
|
|
388
|
-
<ProductTour
|
|
389
|
-
tours={[overrideTourData]}
|
|
390
|
-
/>
|
|
391
|
-
{targets}
|
|
392
|
-
</>,
|
|
393
|
-
);
|
|
292
|
+
render(<ProductTourWrapper tours={[overrideTourData]} />);
|
|
394
293
|
expect(screen.getByText('Checkpoint 3')).toBeInTheDocument();
|
|
395
294
|
const container = screen.getByRole('dialog');
|
|
396
295
|
container.focus();
|
|
@@ -421,14 +320,7 @@ describe('<ProductTour />', () => {
|
|
|
421
320
|
],
|
|
422
321
|
};
|
|
423
322
|
|
|
424
|
-
render(
|
|
425
|
-
<>
|
|
426
|
-
<ProductTour
|
|
427
|
-
tours={[badTourData]}
|
|
428
|
-
/>
|
|
429
|
-
{targets}
|
|
430
|
-
</>,
|
|
431
|
-
);
|
|
323
|
+
render(<ProductTourWrapper tours={[badTourData]} />);
|
|
432
324
|
|
|
433
325
|
expect(screen.queryByRole('dialog')).not.toBeInTheDocument();
|
|
434
326
|
});
|
|
@@ -456,14 +348,7 @@ describe('<ProductTour />', () => {
|
|
|
456
348
|
],
|
|
457
349
|
};
|
|
458
350
|
|
|
459
|
-
render(
|
|
460
|
-
<>
|
|
461
|
-
<ProductTour
|
|
462
|
-
tours={[badTourData]}
|
|
463
|
-
/>
|
|
464
|
-
{targets}
|
|
465
|
-
</>,
|
|
466
|
-
);
|
|
351
|
+
render(<ProductTourWrapper tours={[badTourData]} />);
|
|
467
352
|
|
|
468
353
|
expect(screen.queryByRole('dialog', { name: 'Checkpoint 1' })).not.toBeInTheDocument();
|
|
469
354
|
expect(screen.getByRole('dialog', { name: 'Checkpoint 2' })).toBeInTheDocument();
|
|
@@ -491,14 +376,7 @@ describe('<ProductTour />', () => {
|
|
|
491
376
|
],
|
|
492
377
|
};
|
|
493
378
|
|
|
494
|
-
render(
|
|
495
|
-
<>
|
|
496
|
-
<ProductTour
|
|
497
|
-
tours={[disabledTourData, tourData, secondEnabledTourData]}
|
|
498
|
-
/>
|
|
499
|
-
{targets}
|
|
500
|
-
</>,
|
|
501
|
-
);
|
|
379
|
+
render(<ProductTourWrapper tours={[disabledTourData, tourData, secondEnabledTourData]} />);
|
|
502
380
|
|
|
503
381
|
expect(screen.getByText('Checkpoint 1')).toBeInTheDocument();
|
|
504
382
|
expect(screen.queryByText('Second enabled tour')).not.toBeInTheDocument();
|
|
@@ -507,14 +385,7 @@ describe('<ProductTour />', () => {
|
|
|
507
385
|
|
|
508
386
|
describe('disabled tour', () => {
|
|
509
387
|
it('does not render', () => {
|
|
510
|
-
render(
|
|
511
|
-
<>
|
|
512
|
-
<ProductTour
|
|
513
|
-
tours={[disabledTourData]}
|
|
514
|
-
/>
|
|
515
|
-
{targets}
|
|
516
|
-
</>,
|
|
517
|
-
);
|
|
388
|
+
render(<ProductTourWrapper tours={[disabledTourData]} />);
|
|
518
389
|
|
|
519
390
|
expect(screen.queryByRole('dialog')).not.toBeInTheDocument();
|
|
520
391
|
});
|
|
@@ -27,5 +27,6 @@
|
|
|
27
27
|
"pgn.Dropzone.UploadProgress.uploadLabel": "رفع {filename} جارٍ.",
|
|
28
28
|
"pgn.FormAutosuggest.iconButtonClosed": "إغلاق قائمة الخيارات",
|
|
29
29
|
"pgn.FormAutosuggest.iconButtonOpened": "فتح قائمة الخيارات",
|
|
30
|
-
"pgn.Toast.closeLabel": "إغلاق "
|
|
30
|
+
"pgn.Toast.closeLabel": "إغلاق ",
|
|
31
|
+
"pgn.ProductTour.Checkpoint.position-text": "Top of step {step}"
|
|
31
32
|
}
|
|
@@ -27,5 +27,6 @@
|
|
|
27
27
|
"pgn.Dropzone.UploadProgress.uploadLabel": "Uploading {filename}.",
|
|
28
28
|
"pgn.FormAutosuggest.iconButtonClosed": "Close the options menu",
|
|
29
29
|
"pgn.FormAutosuggest.iconButtonOpened": "Open the options menu",
|
|
30
|
-
"pgn.Toast.closeLabel": "Close"
|
|
30
|
+
"pgn.Toast.closeLabel": "Close",
|
|
31
|
+
"pgn.ProductTour.Checkpoint.position-text": "Top of step {step}"
|
|
31
32
|
}
|
|
@@ -27,5 +27,6 @@
|
|
|
27
27
|
"pgn.Dropzone.UploadProgress.uploadLabel": "Subiendo {filename}.",
|
|
28
28
|
"pgn.FormAutosuggest.iconButtonClosed": "Cerrar el menú de opciones",
|
|
29
29
|
"pgn.FormAutosuggest.iconButtonOpened": "Abre el menú de opciones",
|
|
30
|
-
"pgn.Toast.closeLabel": "Cerrar"
|
|
30
|
+
"pgn.Toast.closeLabel": "Cerrar",
|
|
31
|
+
"pgn.ProductTour.Checkpoint.position-text": "Top of step {step}"
|
|
31
32
|
}
|
|
@@ -27,5 +27,6 @@
|
|
|
27
27
|
"pgn.Dropzone.UploadProgress.uploadLabel": "Subiendo {filename}.",
|
|
28
28
|
"pgn.FormAutosuggest.iconButtonClosed": "Cerrar el menú de opciones",
|
|
29
29
|
"pgn.FormAutosuggest.iconButtonOpened": "Abre el menú de opciones",
|
|
30
|
-
"pgn.Toast.closeLabel": "Cerrar"
|
|
30
|
+
"pgn.Toast.closeLabel": "Cerrar",
|
|
31
|
+
"pgn.ProductTour.Checkpoint.position-text": "Top of step {step}"
|
|
31
32
|
}
|
|
@@ -27,5 +27,6 @@
|
|
|
27
27
|
"pgn.Dropzone.UploadProgress.uploadLabel": "Subiendo {filename}.",
|
|
28
28
|
"pgn.FormAutosuggest.iconButtonClosed": "Cerrar el menú de opciones",
|
|
29
29
|
"pgn.FormAutosuggest.iconButtonOpened": "Abre el menú de opciones",
|
|
30
|
-
"pgn.Toast.closeLabel": "Cerrar"
|
|
30
|
+
"pgn.Toast.closeLabel": "Cerrar",
|
|
31
|
+
"pgn.ProductTour.Checkpoint.position-text": "Top of step {step}"
|
|
31
32
|
}
|
|
@@ -27,5 +27,6 @@
|
|
|
27
27
|
"pgn.Dropzone.UploadProgress.uploadLabel": "Uploading {filename}.",
|
|
28
28
|
"pgn.FormAutosuggest.iconButtonClosed": "Close the options menu",
|
|
29
29
|
"pgn.FormAutosuggest.iconButtonOpened": "Open the options menu",
|
|
30
|
-
"pgn.Toast.closeLabel": "Close"
|
|
30
|
+
"pgn.Toast.closeLabel": "Close",
|
|
31
|
+
"pgn.ProductTour.Checkpoint.position-text": "Top of step {step}"
|
|
31
32
|
}
|
|
@@ -27,5 +27,6 @@
|
|
|
27
27
|
"pgn.Dropzone.UploadProgress.uploadLabel": "Uploading {filename}.",
|
|
28
28
|
"pgn.FormAutosuggest.iconButtonClosed": "Close the options menu",
|
|
29
29
|
"pgn.FormAutosuggest.iconButtonOpened": "Open the options menu",
|
|
30
|
-
"pgn.Toast.closeLabel": "Close"
|
|
30
|
+
"pgn.Toast.closeLabel": "Close",
|
|
31
|
+
"pgn.ProductTour.Checkpoint.position-text": "Top of step {step}"
|
|
31
32
|
}
|
|
@@ -27,5 +27,6 @@
|
|
|
27
27
|
"pgn.Dropzone.UploadProgress.uploadLabel": "Uploading {filename}.",
|
|
28
28
|
"pgn.FormAutosuggest.iconButtonClosed": "Close the options menu",
|
|
29
29
|
"pgn.FormAutosuggest.iconButtonOpened": "Open the options menu",
|
|
30
|
-
"pgn.Toast.closeLabel": "Close"
|
|
30
|
+
"pgn.Toast.closeLabel": "Close",
|
|
31
|
+
"pgn.ProductTour.Checkpoint.position-text": "Top of step {step}"
|
|
31
32
|
}
|
|
@@ -27,5 +27,6 @@
|
|
|
27
27
|
"pgn.Dropzone.UploadProgress.uploadLabel": "Caricamento {filename}.",
|
|
28
28
|
"pgn.FormAutosuggest.iconButtonClosed": "Close the options menu",
|
|
29
29
|
"pgn.FormAutosuggest.iconButtonOpened": "Open the options menu",
|
|
30
|
-
"pgn.Toast.closeLabel": "Chiudi"
|
|
30
|
+
"pgn.Toast.closeLabel": "Chiudi",
|
|
31
|
+
"pgn.ProductTour.Checkpoint.position-text": "Top of step {step}"
|
|
31
32
|
}
|
|
@@ -27,5 +27,6 @@
|
|
|
27
27
|
"pgn.Dropzone.UploadProgress.uploadLabel": "Uploading {filename}.",
|
|
28
28
|
"pgn.FormAutosuggest.iconButtonClosed": "Close the options menu",
|
|
29
29
|
"pgn.FormAutosuggest.iconButtonOpened": "Open the options menu",
|
|
30
|
-
"pgn.Toast.closeLabel": "Close"
|
|
30
|
+
"pgn.Toast.closeLabel": "Close",
|
|
31
|
+
"pgn.ProductTour.Checkpoint.position-text": "Top of step {step}"
|
|
31
32
|
}
|
|
@@ -27,5 +27,6 @@
|
|
|
27
27
|
"pgn.Dropzone.UploadProgress.uploadLabel": "Uploading {filename}.",
|
|
28
28
|
"pgn.FormAutosuggest.iconButtonClosed": "Close the options menu",
|
|
29
29
|
"pgn.FormAutosuggest.iconButtonOpened": "Open the options menu",
|
|
30
|
-
"pgn.Toast.closeLabel": "Zamknij"
|
|
30
|
+
"pgn.Toast.closeLabel": "Zamknij",
|
|
31
|
+
"pgn.ProductTour.Checkpoint.position-text": "Top of step {step}"
|
|
31
32
|
}
|
|
@@ -27,5 +27,6 @@
|
|
|
27
27
|
"pgn.Dropzone.UploadProgress.uploadLabel": "Uploading {filename}.",
|
|
28
28
|
"pgn.FormAutosuggest.iconButtonClosed": "Close the options menu",
|
|
29
29
|
"pgn.FormAutosuggest.iconButtonOpened": "Open the options menu",
|
|
30
|
-
"pgn.Toast.closeLabel": "Close"
|
|
30
|
+
"pgn.Toast.closeLabel": "Close",
|
|
31
|
+
"pgn.ProductTour.Checkpoint.position-text": "Top of step {step}"
|
|
31
32
|
}
|
|
@@ -27,5 +27,6 @@
|
|
|
27
27
|
"pgn.Dropzone.UploadProgress.uploadLabel": "Carregando {filename}.",
|
|
28
28
|
"pgn.FormAutosuggest.iconButtonClosed": "Fechar o menu de opções",
|
|
29
29
|
"pgn.FormAutosuggest.iconButtonOpened": "Abrir o menu de opções",
|
|
30
|
-
"pgn.Toast.closeLabel": "Fechar"
|
|
30
|
+
"pgn.Toast.closeLabel": "Fechar",
|
|
31
|
+
"pgn.ProductTour.Checkpoint.position-text": "Top of step {step}"
|
|
31
32
|
}
|
|
@@ -27,5 +27,6 @@
|
|
|
27
27
|
"pgn.Dropzone.UploadProgress.uploadLabel": "Uploading {filename}.",
|
|
28
28
|
"pgn.FormAutosuggest.iconButtonClosed": "Close the options menu",
|
|
29
29
|
"pgn.FormAutosuggest.iconButtonOpened": "Open the options menu",
|
|
30
|
-
"pgn.Toast.closeLabel": "Close"
|
|
30
|
+
"pgn.Toast.closeLabel": "Close",
|
|
31
|
+
"pgn.ProductTour.Checkpoint.position-text": "Top of step {step}"
|
|
31
32
|
}
|
|
@@ -27,5 +27,6 @@
|
|
|
27
27
|
"pgn.Dropzone.UploadProgress.uploadLabel": "Uploading {filename}.",
|
|
28
28
|
"pgn.FormAutosuggest.iconButtonClosed": "Close the options menu",
|
|
29
29
|
"pgn.FormAutosuggest.iconButtonOpened": "Open the options menu",
|
|
30
|
-
"pgn.Toast.closeLabel": "Close"
|
|
30
|
+
"pgn.Toast.closeLabel": "Close",
|
|
31
|
+
"pgn.ProductTour.Checkpoint.position-text": "Top of step {step}"
|
|
31
32
|
}
|
|
@@ -27,5 +27,6 @@
|
|
|
27
27
|
"pgn.Dropzone.UploadProgress.uploadLabel": "{filename} yükleniyor.",
|
|
28
28
|
"pgn.FormAutosuggest.iconButtonClosed": "Seçenekler menüsünü kapat",
|
|
29
29
|
"pgn.FormAutosuggest.iconButtonOpened": "Seçenekler menüsünü aç",
|
|
30
|
-
"pgn.Toast.closeLabel": "Kapat"
|
|
30
|
+
"pgn.Toast.closeLabel": "Kapat",
|
|
31
|
+
"pgn.ProductTour.Checkpoint.position-text": "Top of step {step}"
|
|
31
32
|
}
|
|
@@ -27,5 +27,6 @@
|
|
|
27
27
|
"pgn.Dropzone.UploadProgress.uploadLabel": "Uploading {filename}.",
|
|
28
28
|
"pgn.FormAutosuggest.iconButtonClosed": "Close the options menu",
|
|
29
29
|
"pgn.FormAutosuggest.iconButtonOpened": "Open the options menu",
|
|
30
|
-
"pgn.Toast.closeLabel": "Close"
|
|
30
|
+
"pgn.Toast.closeLabel": "Close",
|
|
31
|
+
"pgn.ProductTour.Checkpoint.position-text": "Top of step {step}"
|
|
31
32
|
}
|
|
@@ -27,5 +27,6 @@
|
|
|
27
27
|
"pgn.Dropzone.UploadProgress.uploadLabel": "Uploading {filename}.",
|
|
28
28
|
"pgn.FormAutosuggest.iconButtonClosed": "Close the options menu",
|
|
29
29
|
"pgn.FormAutosuggest.iconButtonOpened": "Open the options menu",
|
|
30
|
-
"pgn.Toast.closeLabel": "Close"
|
|
30
|
+
"pgn.Toast.closeLabel": "Close",
|
|
31
|
+
"pgn.ProductTour.Checkpoint.position-text": "Top of step {step}"
|
|
31
32
|
}
|