Browse Source

Add checklist item, added newline becomes new checklist item

- Related to #1846
Martin Filser 3 years ago
parent
commit
18e34b7f79

+ 3 - 0
client/components/cards/checklists.jade

@@ -56,6 +56,9 @@ template(name="addChecklistItemForm")
   .edit-controls.clearfix
   .edit-controls.clearfix
     button.primary.confirm.js-submit-add-checklist-item-form(type="submit") {{_ 'save'}}
     button.primary.confirm.js-submit-add-checklist-item-form(type="submit") {{_ 'save'}}
     a.fa.fa-times-thin.js-close-inlined-form
     a.fa.fa-times-thin.js-close-inlined-form
+    .material-toggle-switch(title="{{_ 'newlineBecomesNewChecklistItem'}}")
+      input.toggle-switch(type="checkbox" id="toggleNewlineBecomesNewChecklistItem")
+      label.toggle-label(for="toggleNewlineBecomesNewChecklistItem")
 
 
 template(name="editChecklistItemForm")
 template(name="editChecklistItemForm")
   a.fa.fa-copy(title="{{_ 'copy-text-to-clipboard'}}")
   a.fa.fa-copy(title="{{_ 'copy-text-to-clipboard'}}")

+ 13 - 6
client/components/cards/checklists.js

@@ -105,16 +105,23 @@ BlazeComponent.extendComponent({
   addChecklistItem(event) {
   addChecklistItem(event) {
     event.preventDefault();
     event.preventDefault();
     const textarea = this.find('textarea.js-add-checklist-item');
     const textarea = this.find('textarea.js-add-checklist-item');
+    const newlineBecomesNewChecklistItem = this.find('input#toggleNewlineBecomesNewChecklistItem');
     const title = textarea.value.trim();
     const title = textarea.value.trim();
     const checklist = this.currentData().checklist;
     const checklist = this.currentData().checklist;
 
 
     if (title) {
     if (title) {
-      ChecklistItems.insert({
-        title,
-        checklistId: checklist._id,
-        cardId: checklist.cardId,
-        sort: Utils.calculateIndexData(checklist.lastItem()).base,
-      });
+      let checklistItems = [title];
+      if (newlineBecomesNewChecklistItem.checked) {
+        checklistItems = title.split('\n').map(_value => _value.trim());
+      }
+      for (let checklistItem of checklistItems) {
+        ChecklistItems.insert({
+          title: checklistItem,
+          checklistId: checklist._id,
+          cardId: checklist.cardId,
+          sort: Utils.calculateIndexData(checklist.lastItem()).base,
+        });
+      }
     }
     }
     // We keep the form opened, empty it.
     // We keep the form opened, empty it.
     textarea.value = '';
     textarea.value = '';

+ 4 - 0
client/components/cards/checklists.styl

@@ -143,3 +143,7 @@ textarea.js-add-checklist-item, textarea.js-edit-checklist-item
 .checklist-details-menu
 .checklist-details-menu
   float: right
   float: right
   padding: 6px 10px 6px 10px
   padding: 6px 10px 6px 10px
+
+.edit-controls
+  label.toggle-label
+    margin-left: 6px

+ 2 - 1
i18n/en.i18n.json

@@ -1141,5 +1141,6 @@
   "copied": "Copied!",
   "copied": "Copied!",
   "checklistActionsPopup-title": "Checklist Actions",
   "checklistActionsPopup-title": "Checklist Actions",
   "moveChecklist": "Move Checklist",
   "moveChecklist": "Move Checklist",
-  "moveChecklistPopup-title": "Move Checklist"
+  "moveChecklistPopup-title": "Move Checklist",
+  "newlineBecomesNewChecklistItem": "Newline becomes new checklist item"
 }
 }