@onehat/data 1.18.10 → 1.18.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@onehat/data",
3
- "version": "1.18.10",
3
+ "version": "1.18.11",
4
4
  "description": "JS data modeling package with adapters for many storage mediums.",
5
5
  "main": "src/index.js",
6
6
  "type": "module",
@@ -787,7 +787,13 @@ class AjaxRepository extends Repository {
787
787
  const
788
788
  method = this.methods.delete,
789
789
  url = this.api.delete,
790
- data = { id: entity.id, };
790
+ data = {
791
+ id: entity.id,
792
+ };
793
+
794
+ if (this.isTree && this.moveSubtreeUp) {
795
+ data.moveSubtreeUp = this.moveSubtreeUp;
796
+ }
791
797
 
792
798
  return this._send(method, url, data)
793
799
  .then(result => {
@@ -204,6 +204,11 @@ export default class Repository extends EventEmitter {
204
204
  */
205
205
  this.isTree = schema.model.isTree || false;
206
206
 
207
+ /**
208
+ * @member {boolean} moveSubtreeUp - Whether to move the subtree up on the next delete operation (trees only)
209
+ */
210
+ this.moveSubtreeUp = false;
211
+
207
212
  /**
208
213
  * @member {boolean} isLoaded - State: whether or not entities have been loaded at least once
209
214
  */
@@ -1791,9 +1796,10 @@ export default class Repository extends EventEmitter {
1791
1796
  * Marks entities for deletion from storage medium.
1792
1797
  * Actual deletion takes place in save(), unless isPhantom
1793
1798
  * @param {object|array} entities - one or more entities to delete
1799
+ * @param {bool} moveSubtreeUp - whether or not to move the subtree up (if this is a tree)
1794
1800
  * @fires delete
1795
1801
  */
1796
- delete = async (entities) => {
1802
+ delete = async (entities, moveSubtreeUp = false) => {
1797
1803
  if (this.isDestroyed) {
1798
1804
  this.throwError('this.delete is no longer valid. Repository has been destroyed.');
1799
1805
  return;
@@ -1819,6 +1825,10 @@ export default class Repository extends EventEmitter {
1819
1825
  }
1820
1826
  });
1821
1827
 
1828
+ if (this.isTree) {
1829
+ this.moveSubtreeUp = moveSubtreeUp;
1830
+ }
1831
+
1822
1832
  this.emit('delete', entities);
1823
1833
 
1824
1834
  if (this.isAutoSave) {