diff options
Diffstat (limited to 'web_src/js/features/common-issue.js')
-rw-r--r-- | web_src/js/features/common-issue.js | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/web_src/js/features/common-issue.js b/web_src/js/features/common-issue.js new file mode 100644 index 0000000000..e2cf51f2a0 --- /dev/null +++ b/web_src/js/features/common-issue.js @@ -0,0 +1,40 @@ +import {updateIssuesMeta} from './repo-issue.js'; + +export function initCommonIssue() { + $('.issue-checkbox').on('click', () => { + const numChecked = $('.issue-checkbox').children('input:checked').length; + if (numChecked > 0) { + $('#issue-filters').addClass('hide'); + $('#issue-actions').removeClass('hide'); + } else { + $('#issue-filters').removeClass('hide'); + $('#issue-actions').addClass('hide'); + } + }); + + $('.issue-action').on('click', function () { + let {action, elementId, url} = this.dataset; + const issueIDs = $('.issue-checkbox').children('input:checked').map((_, el) => { + return el.dataset.issueId; + }).get().join(','); + if (elementId === '0' && url.substr(-9) === '/assignee') { + elementId = ''; + action = 'clear'; + } + updateIssuesMeta(url, action, issueIDs, elementId, '').then(() => { + // NOTICE: This reset of checkbox state targets Firefox caching behaviour, as the checkboxes stay checked after reload + if (action === 'close' || action === 'open') { + // uncheck all checkboxes + $('.issue-checkbox input[type="checkbox"]').each((_, e) => { e.checked = false }); + } + window.location.reload(); + }); + }); + + // NOTICE: This event trigger targets Firefox caching behaviour, as the checkboxes stay checked after reload + // trigger ckecked event, if checkboxes are checked on load + $('.issue-checkbox input[type="checkbox"]:checked').first().each((_, e) => { + e.checked = false; + $(e).trigger('click'); + }); +} |