diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2023-06-06 00:09:04 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2023-06-06 00:09:04 +0300 |
commit | 96e23b2017cbe56969771960f6c274c5d3599397 (patch) | |
tree | b8b17da1ab080dd41fc64fc0262de2cf16754559 /app/assets/javascripts/behaviors | |
parent | 2f1a81fd16ff9968d6b986f8a407d963bc2218f9 (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.js | 27 |
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'); +}; |