diff options
author | Jan Beckmann <king-jan1999@hotmail.de> | 2018-06-27 11:47:29 +0300 |
---|---|---|
committer | Phil Hughes <me@iamphill.com> | 2018-06-27 11:47:29 +0300 |
commit | 351d5f3e36c9bb3bb187d838c68ede33f6f80b14 (patch) | |
tree | e1afe970af23c6217259193774e25812d9fc99cd /app/assets/javascripts/lib/utils/common_utils.js | |
parent | 87f7597a4fb7852fc81f830158cdfd5fdec8fac4 (diff) |
Resolve "Copying ordered list to new comment becomes unordered"
Diffstat (limited to 'app/assets/javascripts/lib/utils/common_utils.js')
-rw-r--r-- | app/assets/javascripts/lib/utils/common_utils.js | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/app/assets/javascripts/lib/utils/common_utils.js b/app/assets/javascripts/lib/utils/common_utils.js index 5c249f3068e..6b7550efff8 100644 --- a/app/assets/javascripts/lib/utils/common_utils.js +++ b/app/assets/javascripts/lib/utils/common_utils.js @@ -189,12 +189,25 @@ export const getParameterByName = (name, urlToParse) => { return decodeURIComponent(results[2].replace(/\+/g, ' ')); }; +const handleSelectedRange = (range) => { + const container = range.commonAncestorContainer; + // add context to fragment if needed + if (container.tagName === 'OL') { + const parentContainer = document.createElement(container.tagName); + parentContainer.appendChild(range.cloneContents()); + return parentContainer; + } + return range.cloneContents(); +}; + export const getSelectedFragment = () => { const selection = window.getSelection(); if (selection.rangeCount === 0) return null; const documentFragment = document.createDocumentFragment(); + for (let i = 0; i < selection.rangeCount; i += 1) { - documentFragment.appendChild(selection.getRangeAt(i).cloneContents()); + const range = selection.getRangeAt(i); + documentFragment.appendChild(handleSelectedRange(range)); } if (documentFragment.textContent.length === 0) return null; |