Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2023-06-06 00:09:04 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2023-06-06 00:09:04 +0300
commit96e23b2017cbe56969771960f6c274c5d3599397 (patch)
treeb8b17da1ab080dd41fc64fc0262de2cf16754559 /app/assets/javascripts/behaviors
parent2f1a81fd16ff9968d6b986f8a407d963bc2218f9 (diff)
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'app/assets/javascripts/behaviors')
-rw-r--r--app/assets/javascripts/behaviors/markdown/utils.js27
1 files changed, 27 insertions, 0 deletions
diff --git a/app/assets/javascripts/behaviors/markdown/utils.js b/app/assets/javascripts/behaviors/markdown/utils.js
new file mode 100644
index 00000000000..f02d6c0f813
--- /dev/null
+++ b/app/assets/javascripts/behaviors/markdown/utils.js
@@ -0,0 +1,27 @@
+/**
+ * This method parses raw markdown text in GFM input field and toggles checkboxes
+ * based on checkboxChecked property.
+ *
+ * @param {Object} object containing rawMarkdown, sourcepos, checkboxChecked properties
+ * @returns String with toggled checkboxes
+ */
+export const toggleMarkCheckboxes = ({ rawMarkdown, sourcepos, checkboxChecked }) => {
+ // Extract the description text
+ const [startRange] = sourcepos.split('-');
+ let [startRow] = startRange.split(':');
+ startRow = Number(startRow) - 1;
+
+ // Mark/Unmark the checkboxes
+ return rawMarkdown
+ .split('\n')
+ .map((row, index) => {
+ if (startRow === index) {
+ if (checkboxChecked) {
+ return row.replace(/\[ \]/, '[x]');
+ }
+ return row.replace(/\[[x~]\]/i, '[ ]');
+ }
+ return row;
+ })
+ .join('\n');
+};