cocooned 2.1.0 → 2.1.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 109827f9ebd10c0449258165b0a5d02e6bbd6ae4626f7ad02e6433f7bdf885bb
4
- data.tar.gz: c79261d7aebc07c5d8516bbdddd0bdf7334af260c1b253eb2b6c52d56184416b
3
+ metadata.gz: 0af704c95699d29310c3a1d09da4a4a4d67d90c8d375d34a2090211fefe03099
4
+ data.tar.gz: 1db3b3325459d3ee9450ba1f6b414016e07ab86b69e6bb2c2cbeb8ab6dfdd73a
5
5
  SHA512:
6
- metadata.gz: 904197ab102c253ceee532f9ff777b063d560228a11b0ead34af44510148a7fd5f23ba02947f314a787161e02da83d6ecf76b77ce3df9abc2e32bc5a18322161
7
- data.tar.gz: 87fab14e1918bb4315819327d2b4460e5a7046e6f6d3364504c82b544c3a792bf73273afb97a1dc82a6c877f29e5e341eff44e57f537927b4983f1b53b68a4f7
6
+ metadata.gz: 315b49b7e2a344f59d0192c6a12609321b18821b45afb53f9371d52a59153e7462dbe8fc74c3eabab50ea687e2e4d548c648b3499329a2f9007b67fa8b8e1acc
7
+ data.tar.gz: 8997c949d1a29a913a5ae5e93c8039e747afecfde72590a282c283323342a44226f8ebf63d7a9ceb8d189f783677d8bcc1fc5ab99fa38fcefec74e9e031f08f5
data/CHANGELOG.md CHANGED
@@ -6,6 +6,13 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
 
7
7
  ## [Unreleased]
8
8
 
9
+ ## Version 2.1.1 (2024-02-10)
10
+
11
+ ### Fixed
12
+
13
+ * Template lookup in nested use cases (#61)
14
+ Template lookup used to be done on the whole HTML document so add triggers can be declared anywhere inside or outside a Cocooned container. In nested use cases, this could lead to incorrect template being used to build grand-child items when multiple child items had been built since the last form save. Lookup is now done first inside the closest Cocooned item if any to ensure the correct template will be used.
15
+
9
16
  ## Version 2.1.0 (2024-01-28)
10
17
 
11
18
  ### Added
@@ -318,7 +318,7 @@
318
318
  #documentFragment
319
319
  #replacements
320
320
 
321
- #applyReplacements(node, id) {
321
+ #applyReplacements (node, id) {
322
322
  this.#replacements.forEach(replacement => {
323
323
  node.querySelectorAll(`*[${replacement.attribute}]`).forEach(node => replacement.apply(node, id));
324
324
  });
@@ -441,8 +441,9 @@
441
441
  }
442
442
 
443
443
  class Extractor {
444
- constructor (trigger) {
444
+ constructor (trigger, cocooned) {
445
445
  this.#trigger = trigger;
446
+ this.#cocooned = cocooned;
446
447
  }
447
448
 
448
449
  extract () {
@@ -459,6 +460,7 @@
459
460
  }
460
461
 
461
462
  /* Protected and private attributes and methods */
463
+ #cocooned
462
464
  #trigger
463
465
 
464
466
  get #dataset () {
@@ -470,7 +472,8 @@
470
472
  return null
471
473
  }
472
474
 
473
- const template = document.querySelector(`template[data-name="${this.#dataset.template}"]`);
475
+ const find = node => node?.querySelector(`template[data-name="${this.#dataset.template}"]`);
476
+ const template = find(this.#cocooned.toItem(this.#trigger)) || find(document);
474
477
  if (template === null) {
475
478
  return null
476
479
  }
@@ -574,7 +577,7 @@
574
577
 
575
578
  class Add extends Trigger {
576
579
  static create (trigger, cocooned) {
577
- const extractor = new Extractor(trigger);
580
+ const extractor = new Extractor(trigger, cocooned);
578
581
  return new Add(trigger, cocooned, extractor.extract())
579
582
  }
580
583
 
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Cocooned
4
- VERSION = '2.1.0'
4
+ VERSION = '2.1.1'
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cocooned
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.0
4
+ version: 2.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gaël-Ian Havard
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2024-01-28 00:00:00.000000000 Z
12
+ date: 2024-02-10 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rails