ctt-babylon 0.21.65 → 0.22.0
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/esm2022/lib/components/core/babylon-contact-form/babylon-contact-form.component.mjs +37 -5
- package/esm2022/lib/components/core/babylon-contact-form/babylon-contact-form.interface.mjs +1 -1
- package/esm2022/lib/directives/link-type/link-type.directive.mjs +7 -1
- package/esm2022/lib/services/mapper/mapper.service.mjs +2 -2
- package/esm2022/lib/utils/utils-link-directive.mjs +63 -0
- package/fesm2022/ctt-babylon.mjs +104 -4
- package/fesm2022/ctt-babylon.mjs.map +1 -1
- package/lib/components/core/babylon-contact-form/babylon-contact-form.component.d.ts +8 -1
- package/lib/components/core/babylon-contact-form/babylon-contact-form.interface.d.ts +1 -0
- package/lib/utils/utils-link-directive.d.ts +7 -0
- package/package.json +3 -2
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
export class UtilsLinkDirective {
|
|
2
|
+
/**
|
|
3
|
+
* Navega a la base de la URL si es diferente y luego hace scroll al anchor extraído del hash.
|
|
4
|
+
* Usa MutationObserver para detectar el anchor de forma eficiente tras la navegación.
|
|
5
|
+
*/
|
|
6
|
+
static navigateAndScrollToAnchor(router, urlWithHash, offset = 0, callback) {
|
|
7
|
+
if (typeof window === 'undefined' || !urlWithHash)
|
|
8
|
+
return;
|
|
9
|
+
let id = urlWithHash;
|
|
10
|
+
let baseUrl = '';
|
|
11
|
+
if (urlWithHash.includes('#')) {
|
|
12
|
+
const hashIndex = urlWithHash.lastIndexOf('#');
|
|
13
|
+
id = urlWithHash.substring(hashIndex + 1);
|
|
14
|
+
baseUrl = urlWithHash.substring(0, hashIndex);
|
|
15
|
+
}
|
|
16
|
+
const currentUrl = router.url?.split('#')[0] || '';
|
|
17
|
+
if (baseUrl && baseUrl !== currentUrl) {
|
|
18
|
+
router.navigateByUrl(baseUrl).then(() => {
|
|
19
|
+
const timeoutMs = 3000;
|
|
20
|
+
let done = false;
|
|
21
|
+
const scrollToAnchor = () => {
|
|
22
|
+
if (done)
|
|
23
|
+
return;
|
|
24
|
+
const element = document.getElementById(id);
|
|
25
|
+
if (element) {
|
|
26
|
+
done = true;
|
|
27
|
+
observer.disconnect();
|
|
28
|
+
clearTimeout(timeoutId);
|
|
29
|
+
const y = element.getBoundingClientRect().top +
|
|
30
|
+
window.scrollY +
|
|
31
|
+
offset;
|
|
32
|
+
window.scrollTo({ top: y, behavior: 'smooth' });
|
|
33
|
+
if (callback)
|
|
34
|
+
callback();
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
// MutationObserver para detectar cuando el anchor aparece
|
|
38
|
+
const observer = new MutationObserver(scrollToAnchor);
|
|
39
|
+
observer.observe(document.body, { childList: true, subtree: true });
|
|
40
|
+
// Fallback por timeout
|
|
41
|
+
const timeoutId = setTimeout(() => {
|
|
42
|
+
if (!done) {
|
|
43
|
+
observer.disconnect();
|
|
44
|
+
}
|
|
45
|
+
}, timeoutMs);
|
|
46
|
+
// Intento inicial
|
|
47
|
+
scrollToAnchor();
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
const element = document.getElementById(id);
|
|
52
|
+
if (element) {
|
|
53
|
+
const y = element.getBoundingClientRect().top +
|
|
54
|
+
window.scrollY +
|
|
55
|
+
offset;
|
|
56
|
+
window.scrollTo({ top: y, behavior: 'smooth' });
|
|
57
|
+
if (callback)
|
|
58
|
+
callback();
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMtbGluay1kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYWJ5bG9uL3NyYy9saWIvdXRpbHMvdXRpbHMtbGluay1kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsTUFBTSxPQUFPLGtCQUFrQjtJQUU3Qjs7O1NBR0s7SUFDSCxNQUFNLENBQUMseUJBQXlCLENBQzVCLE1BQVcsRUFDWCxXQUFtQixFQUNuQixTQUFpQixDQUFDLEVBQ2xCLFFBQXFCO1FBRXJCLElBQUksT0FBTyxNQUFNLEtBQUssV0FBVyxJQUFJLENBQUMsV0FBVztZQUFFLE9BQU87UUFFMUQsSUFBSSxFQUFFLEdBQUcsV0FBVyxDQUFDO1FBQ3JCLElBQUksT0FBTyxHQUFHLEVBQUUsQ0FBQztRQUNqQixJQUFJLFdBQVcsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDM0IsTUFBTSxTQUFTLEdBQUcsV0FBVyxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUMvQyxFQUFFLEdBQUcsV0FBVyxDQUFDLFNBQVMsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDMUMsT0FBTyxHQUFHLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1NBQ2pEO1FBQ0QsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ25ELElBQUksT0FBTyxJQUFJLE9BQU8sS0FBSyxVQUFVLEVBQUU7WUFDbkMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFO2dCQUNwQyxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUM7Z0JBQ3ZCLElBQUksSUFBSSxHQUFHLEtBQUssQ0FBQztnQkFDakIsTUFBTSxjQUFjLEdBQUcsR0FBRyxFQUFFO29CQUN4QixJQUFJLElBQUk7d0JBQUUsT0FBTztvQkFDakIsTUFBTSxPQUFPLEdBQUcsUUFBUSxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUMsQ0FBQztvQkFDNUMsSUFBSSxPQUFPLEVBQUU7d0JBQ1QsSUFBSSxHQUFHLElBQUksQ0FBQzt3QkFDWixRQUFRLENBQUMsVUFBVSxFQUFFLENBQUM7d0JBQ3RCLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQzt3QkFDeEIsTUFBTSxDQUFDLEdBQ0gsT0FBTyxDQUFDLHFCQUFxQixFQUFFLENBQUMsR0FBRzs0QkFDbkMsTUFBTSxDQUFDLE9BQU87NEJBQ2QsTUFBTSxDQUFDO3dCQUNYLE1BQU0sQ0FBQyxRQUFRLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDO3dCQUNoRCxJQUFJLFFBQVE7NEJBQUUsUUFBUSxFQUFFLENBQUM7cUJBQzVCO2dCQUNMLENBQUMsQ0FBQztnQkFDRiwwREFBMEQ7Z0JBQzFELE1BQU0sUUFBUSxHQUFHLElBQUksZ0JBQWdCLENBQUMsY0FBYyxDQUFDLENBQUM7Z0JBQ3RELFFBQVEsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7Z0JBQ3BFLHVCQUF1QjtnQkFDdkIsTUFBTSxTQUFTLEdBQUcsVUFBVSxDQUFDLEdBQUcsRUFBRTtvQkFDOUIsSUFBSSxDQUFDLElBQUksRUFBRTt3QkFDUCxRQUFRLENBQUMsVUFBVSxFQUFFLENBQUM7cUJBQ3pCO2dCQUNMLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQztnQkFDZCxrQkFBa0I7Z0JBQ2xCLGNBQWMsRUFBRSxDQUFDO1lBQ3JCLENBQUMsQ0FBQyxDQUFDO1NBQ047YUFBTTtZQUNILE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDNUMsSUFBSSxPQUFPLEVBQUU7Z0JBQ1QsTUFBTSxDQUFDLEdBQ0gsT0FBTyxDQUFDLHFCQUFxQixFQUFFLENBQUMsR0FBRztvQkFDbkMsTUFBTSxDQUFDLE9BQU87b0JBQ2QsTUFBTSxDQUFDO2dCQUNYLE1BQU0sQ0FBQyxRQUFRLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDO2dCQUNoRCxJQUFJLFFBQVE7b0JBQUUsUUFBUSxFQUFFLENBQUM7YUFDNUI7U0FDSjtJQUNMLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbIlxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQmFieWxvbkJ1dHRvbkksIEJvZHlDb21wb25lbnQgfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcblxuZXhwb3J0IGNsYXNzIFV0aWxzTGlua0RpcmVjdGl2ZSB7XG5cbiAgLyoqXG4gICAgICogTmF2ZWdhIGEgbGEgYmFzZSBkZSBsYSBVUkwgc2kgZXMgZGlmZXJlbnRlIHkgbHVlZ28gaGFjZSBzY3JvbGwgYWwgYW5jaG9yIGV4dHJhw61kbyBkZWwgaGFzaC5cbiAgICAgKiBVc2EgTXV0YXRpb25PYnNlcnZlciBwYXJhIGRldGVjdGFyIGVsIGFuY2hvciBkZSBmb3JtYSBlZmljaWVudGUgdHJhcyBsYSBuYXZlZ2FjacOzbi5cbiAgICAgKi9cbiAgICBzdGF0aWMgbmF2aWdhdGVBbmRTY3JvbGxUb0FuY2hvcihcbiAgICAgICAgcm91dGVyOiBhbnksXG4gICAgICAgIHVybFdpdGhIYXNoOiBzdHJpbmcsXG4gICAgICAgIG9mZnNldDogbnVtYmVyID0gMCxcbiAgICAgICAgY2FsbGJhY2s/OiAoKSA9PiB2b2lkXG4gICAgKSB7XG4gICAgICAgIGlmICh0eXBlb2Ygd2luZG93ID09PSAndW5kZWZpbmVkJyB8fCAhdXJsV2l0aEhhc2gpIHJldHVybjtcblxuICAgICAgICBsZXQgaWQgPSB1cmxXaXRoSGFzaDtcbiAgICAgICAgbGV0IGJhc2VVcmwgPSAnJztcbiAgICAgICAgaWYgKHVybFdpdGhIYXNoLmluY2x1ZGVzKCcjJykpIHtcbiAgICAgICAgICAgIGNvbnN0IGhhc2hJbmRleCA9IHVybFdpdGhIYXNoLmxhc3RJbmRleE9mKCcjJyk7XG4gICAgICAgICAgICBpZCA9IHVybFdpdGhIYXNoLnN1YnN0cmluZyhoYXNoSW5kZXggKyAxKTtcbiAgICAgICAgICAgIGJhc2VVcmwgPSB1cmxXaXRoSGFzaC5zdWJzdHJpbmcoMCwgaGFzaEluZGV4KTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBjdXJyZW50VXJsID0gcm91dGVyLnVybD8uc3BsaXQoJyMnKVswXSB8fCAnJztcbiAgICAgICAgaWYgKGJhc2VVcmwgJiYgYmFzZVVybCAhPT0gY3VycmVudFVybCkge1xuICAgICAgICAgICAgcm91dGVyLm5hdmlnYXRlQnlVcmwoYmFzZVVybCkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgdGltZW91dE1zID0gMzAwMDtcbiAgICAgICAgICAgICAgICBsZXQgZG9uZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIGNvbnN0IHNjcm9sbFRvQW5jaG9yID0gKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZG9uZSkgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBlbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZG9uZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICBvYnNlcnZlci5kaXNjb25uZWN0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGVhclRpbWVvdXQodGltZW91dElkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cuc2Nyb2xsWSArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0O1xuICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93LnNjcm9sbFRvKHsgdG9wOiB5LCBiZWhhdmlvcjogJ3Ntb290aCcgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoY2FsbGJhY2spIGNhbGxiYWNrKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIC8vIE11dGF0aW9uT2JzZXJ2ZXIgcGFyYSBkZXRlY3RhciBjdWFuZG8gZWwgYW5jaG9yIGFwYXJlY2VcbiAgICAgICAgICAgICAgICBjb25zdCBvYnNlcnZlciA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKHNjcm9sbFRvQW5jaG9yKTtcbiAgICAgICAgICAgICAgICBvYnNlcnZlci5vYnNlcnZlKGRvY3VtZW50LmJvZHksIHsgY2hpbGRMaXN0OiB0cnVlLCBzdWJ0cmVlOiB0cnVlIH0pO1xuICAgICAgICAgICAgICAgIC8vIEZhbGxiYWNrIHBvciB0aW1lb3V0XG4gICAgICAgICAgICAgICAgY29uc3QgdGltZW91dElkID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghZG9uZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgb2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSwgdGltZW91dE1zKTtcbiAgICAgICAgICAgICAgICAvLyBJbnRlbnRvIGluaWNpYWxcbiAgICAgICAgICAgICAgICBzY3JvbGxUb0FuY2hvcigpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBlbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpO1xuICAgICAgICAgICAgaWYgKGVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB5ID1cbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3AgK1xuICAgICAgICAgICAgICAgICAgICB3aW5kb3cuc2Nyb2xsWSArXG4gICAgICAgICAgICAgICAgICAgIG9mZnNldDtcbiAgICAgICAgICAgICAgICB3aW5kb3cuc2Nyb2xsVG8oeyB0b3A6IHksIGJlaGF2aW9yOiAnc21vb3RoJyB9KTtcbiAgICAgICAgICAgICAgICBpZiAoY2FsbGJhY2spIGNhbGxiYWNrKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
|