nodality 1.0.187 → 1.0.189
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/dist/animator.cjs.js +1 -1
- package/dist/animator.esm.js +1 -1
- package/dist/audionew.cjs.js +1 -1
- package/dist/audionew.esm.js +1 -1
- package/dist/base.cjs.js +1 -1
- package/dist/base.esm.js +1 -1
- package/dist/beta-desktop-bar.cjs.js +1 -1
- package/dist/beta-desktop-bar.esm.js +1 -1
- package/dist/beta-mobile-bar.cjs.js +1 -1
- package/dist/beta-mobile-bar.esm.js +1 -1
- package/dist/bundle.umd.js +1 -1
- package/dist/button.cjs.js +1 -1
- package/dist/button.esm.js +1 -1
- package/dist/center.cjs.js +1 -1
- package/dist/center.esm.js +1 -1
- package/dist/checkbox.cjs.js +1 -1
- package/dist/checkbox.esm.js +1 -1
- package/dist/code.cjs.js +1 -1
- package/dist/code.esm.js +1 -1
- package/dist/container.cjs.js +1 -1
- package/dist/container.esm.js +1 -1
- package/dist/data-list.cjs.js +1 -1
- package/dist/data-list.esm.js +1 -1
- package/dist/designer.cjs.js +1 -1
- package/dist/designer.esm.js +1 -1
- package/dist/dropdown.cjs.js +1 -1
- package/dist/dropdown.esm.js +1 -1
- package/dist/element-mapper.cjs.js +1 -1
- package/dist/element-mapper.esm.js +1 -1
- package/dist/finalresult.esm.js +1 -1
- package/dist/flex-card.cjs.js +1 -1
- package/dist/flex-card.esm.js +1 -1
- package/dist/flex-grid.cjs.js +1 -1
- package/dist/flex-grid.esm.js +1 -1
- package/dist/flex-row.cjs.js +1 -1
- package/dist/flex-row.esm.js +1 -1
- package/dist/floating-input.cjs.js +1 -1
- package/dist/floating-input.esm.js +1 -1
- package/dist/free.cjs.js +1 -1
- package/dist/free.esm.js +1 -1
- package/dist/horizontal-scroller.cjs.js +1 -1
- package/dist/horizontal-scroller.esm.js +1 -1
- package/dist/image-picker.cjs.js +1 -1
- package/dist/image-picker.esm.js +1 -1
- package/dist/image.cjs.js +1 -1
- package/dist/image.esm.js +1 -1
- package/dist/index.cjs.js +1 -1
- package/dist/index.esm.js +1 -1
- package/dist/link-getter.cjs.js +1 -1
- package/dist/link-getter.esm.js +1 -1
- package/dist/link.cjs.js +1 -1
- package/dist/link.esm.js +1 -1
- package/dist/meta-adder.cjs.js +1 -1
- package/dist/meta-adder.esm.js +1 -1
- package/dist/modal-2025.cjs.js +1 -1
- package/dist/modal-2025.esm.js +1 -1
- package/dist/multiswitcher.cjs.js +1 -1
- package/dist/multiswitcher.esm.js +1 -1
- package/dist/new-nav-bar.cjs.js +1 -1
- package/dist/new-nav-bar.esm.js +1 -1
- package/dist/picker.cjs.js +1 -1
- package/dist/picker.esm.js +1 -1
- package/dist/progress.cjs.js +1 -1
- package/dist/progress.esm.js +1 -1
- package/dist/radio.cjs.js +1 -1
- package/dist/radio.esm.js +1 -1
- package/dist/range.cjs.js +1 -1
- package/dist/range.esm.js +1 -1
- package/dist/side-bar.cjs.js +1 -1
- package/dist/side-bar.esm.js +1 -1
- package/dist/side-nav-bar.cjs.js +1 -1
- package/dist/side-nav-bar.esm.js +1 -1
- package/dist/simple-bar.cjs.js +1 -1
- package/dist/simple-bar.esm.js +1 -1
- package/dist/slider-2025.cjs.js +1 -1
- package/dist/slider-2025.esm.js +1 -1
- package/dist/spacer.cjs.js +1 -1
- package/dist/spacer.esm.js +1 -1
- package/dist/stack.cjs.js +1 -1
- package/dist/stack.esm.js +1 -1
- package/dist/table.cjs.js +1 -1
- package/dist/table.esm.js +1 -1
- package/dist/text-field.cjs.js +1 -1
- package/dist/text-field.esm.js +1 -1
- package/dist/text.cjs.js +1 -1
- package/dist/text.esm.js +1 -1
- package/dist/ulist.cjs.js +1 -1
- package/dist/ulist.esm.js +1 -1
- package/dist/video.cjs.js +1 -1
- package/dist/video.esm.js +1 -1
- package/dist/wrap.cjs.js +1 -1
- package/dist/wrap.esm.js +1 -1
- package/dist/zoom-card.cjs.js +1 -1
- package/dist/zoom-card.esm.js +1 -1
- package/layout/animator.js +46 -12
- package/layout/audio.js +1 -1
- package/layout/audionew.js +1 -1
- package/layout/base-2.js +1 -1
- package/layout/base.js +1 -1
- package/layout/beta-desktop-bar.js +1 -1
- package/layout/beta-mobile-bar.js +1 -1
- package/layout/box.js +1 -1
- package/layout/button.js +1 -1
- package/layout/cards.js +1 -1
- package/layout/center.js +1 -1
- package/layout/checkbox.js +1 -1
- package/layout/circle.js +1 -1
- package/layout/clean-row.js +1 -1
- package/layout/code.js +1 -1
- package/layout/container.js +1 -1
- package/layout/custom.js +1 -1
- package/layout/div-image.js +1 -1
- package/layout/dropdown-2025.js +1 -1
- package/layout/dropdown.js +1 -1
- package/layout/empty-element.js +1 -1
- package/layout/external-stylesheet.js +1 -1
- package/layout/flex-card.js +1 -1
- package/layout/flex-grid.js +1 -1
- package/layout/flex-row.js +1 -1
- package/layout/footer.js +1 -1
- package/layout/form-components/custom.js +1 -1
- package/layout/form-components/data-list.js +1 -1
- package/layout/form-components/floating-input.js +1 -1
- package/layout/form-components/form-all.js +1 -1
- package/layout/form-components/form.js +1 -1
- package/layout/form-components/image-picker.js +1 -1
- package/layout/form-components/picker.js +1 -1
- package/layout/form-components/radio.js +1 -1
- package/layout/form-components/radiogroup.js +1 -1
- package/layout/form-components/range.js +1 -1
- package/layout/free.js +1 -1
- package/layout/grid-new.js +1 -1
- package/layout/grid-switcher.js +1 -1
- package/layout/grid.js +1 -1
- package/layout/group.js +1 -1
- package/layout/header.js +1 -1
- package/layout/horizontal-scroller.js +1 -1
- package/layout/image-old.js +1 -1
- package/layout/image.js +1 -1
- package/layout/index.js +1 -1
- package/layout/label.js +1 -1
- package/layout/link.js +1 -1
- package/layout/list-OLD.js +1 -1
- package/layout/list.js +1 -1
- package/layout/meta-adder.js +1 -1
- package/layout/modal-2025.js +1 -1
- package/layout/modernwrap.js +1 -1
- package/layout/multiswitcher.js +1 -1
- package/layout/multiswitcherBeta.js +1 -1
- package/layout/nav-bar.js +1 -1
- package/layout/nav-factor/custom-div.js +1 -1
- package/layout/navBar-OLD.js +1 -1
- package/layout/new-flat-adder.js +1 -1
- package/layout/new-nav-bar.js +84 -8
- package/layout/offset-container.js +1 -1
- package/layout/polygon.js +1 -1
- package/layout/prerender-site.js +1 -1
- package/layout/prerender.js +1 -1
- package/layout/progress.js +1 -1
- package/layout/row.js +1 -1
- package/layout/saved-new-nav-bar.js +1 -1
- package/layout/scroll-video.js +1 -1
- package/layout/side-bar.js +1 -1
- package/layout/side-nav-bar.js +1 -1
- package/layout/simple-bar.js +1 -1
- package/layout/slider-2025.js +1 -1
- package/layout/spacer.js +1 -1
- package/layout/stack.js +1 -1
- package/layout/styler.js +1 -1
- package/layout/svg.js +1 -1
- package/layout/switcher.js +1 -1
- package/layout/table.js +1 -1
- package/layout/text-field.js +1 -1
- package/layout/text.js +1 -1
- package/layout/ulist.js +1 -1
- package/layout/video.js +1 -1
- package/layout/without-new.js +1 -1
- package/layout/wrap.js +1 -1
- package/layout/zoom-card.js +1 -1
- package/lib/card-getter.js +1 -1
- package/lib/data.js +1 -1
- package/lib/designer.js +1 -1
- package/lib/element-mapper.js +1 -1
- package/lib/keyframe-animation.js +1 -1
- package/lib/link-getter.js +1 -1
- package/lib/raster-ops.js +556 -46
- package/lib/scroll-video.js +1 -1
- package/lib/seo.js +1 -1
- package/lib/stacker.js +1 -1
- package/lib/theme.js +1 -1
- package/lib/transform-anim.js +1 -1
- package/package.json +1 -1
package/layout/cards.js
CHANGED
package/layout/center.js
CHANGED
package/layout/checkbox.js
CHANGED
package/layout/circle.js
CHANGED
package/layout/clean-row.js
CHANGED
package/layout/code.js
CHANGED
package/layout/container.js
CHANGED
package/layout/custom.js
CHANGED
package/layout/div-image.js
CHANGED
package/layout/dropdown-2025.js
CHANGED
package/layout/dropdown.js
CHANGED
package/layout/empty-element.js
CHANGED
package/layout/flex-card.js
CHANGED
package/layout/flex-grid.js
CHANGED
package/layout/flex-row.js
CHANGED
package/layout/footer.js
CHANGED
package/layout/free.js
CHANGED
package/layout/grid-new.js
CHANGED
package/layout/grid-switcher.js
CHANGED
package/layout/grid.js
CHANGED
package/layout/group.js
CHANGED
package/layout/header.js
CHANGED
package/layout/image-old.js
CHANGED
package/layout/image.js
CHANGED
package/layout/index.js
CHANGED
package/layout/label.js
CHANGED
package/layout/link.js
CHANGED
package/layout/list-OLD.js
CHANGED
package/layout/list.js
CHANGED
package/layout/meta-adder.js
CHANGED
package/layout/modal-2025.js
CHANGED
package/layout/modernwrap.js
CHANGED
package/layout/multiswitcher.js
CHANGED
package/layout/nav-bar.js
CHANGED
package/layout/navBar-OLD.js
CHANGED
package/layout/new-flat-adder.js
CHANGED
package/layout/new-nav-bar.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* nodality v1.0.
|
|
2
|
+
* nodality v1.0.189
|
|
3
3
|
* (c) 2026 Filip Vabrousek
|
|
4
4
|
* License: MIT
|
|
5
5
|
*/
|
|
@@ -187,6 +187,30 @@ class UINavBar extends Animator {
|
|
|
187
187
|
this.res.children[0].style.height = obj.height;
|
|
188
188
|
}
|
|
189
189
|
|
|
190
|
+
// ── Presentation options ──────────────────────────────────────────
|
|
191
|
+
// Collected here and applied in render(), because the bar's inner
|
|
192
|
+
// wrappers are not created until items() runs. All are optional and
|
|
193
|
+
// unset by default, so existing bars render exactly as before.
|
|
194
|
+
//
|
|
195
|
+
// gap spacing between items (CSS length)
|
|
196
|
+
// justify justify-content on the item row
|
|
197
|
+
// barPad padding inside the bar itself
|
|
198
|
+
// maxWidth caps + centres the item row (page-width bars)
|
|
199
|
+
// borderBottom hairline under the bar
|
|
200
|
+
// ariaLabel label for the navigation landmark
|
|
201
|
+
this._ui = {
|
|
202
|
+
gap: obj.gap,
|
|
203
|
+
justify: obj.justify,
|
|
204
|
+
barPad: obj.barPad,
|
|
205
|
+
maxWidth: obj.maxWidth,
|
|
206
|
+
borderBottom: obj.borderBottom,
|
|
207
|
+
};
|
|
208
|
+
|
|
209
|
+
// Landmark semantics. Attributes only — no layout or DOM-shape change,
|
|
210
|
+
// so this is safe for every existing caller.
|
|
211
|
+
this.res.setAttribute("role", "navigation");
|
|
212
|
+
this.res.setAttribute("aria-label", obj.ariaLabel || "Primary");
|
|
213
|
+
|
|
190
214
|
return this;
|
|
191
215
|
}
|
|
192
216
|
|
|
@@ -384,8 +408,13 @@ class UINavBar extends Animator {
|
|
|
384
408
|
|
|
385
409
|
btn.style.zIndex = 1;
|
|
386
410
|
|
|
387
|
-
|
|
388
|
-
|
|
411
|
+
// Insert the hamburger once, keyed on its presence rather than on the
|
|
412
|
+
// wrapper's child count. The old `children.length === 1` guard silently
|
|
413
|
+
// skipped insertion whenever anything else had already been appended,
|
|
414
|
+
// leaving render() to hide the items wrapper in its place.
|
|
415
|
+
const bar = this.res.children[0];
|
|
416
|
+
if (bar && !bar.querySelector("#hamburger")) {
|
|
417
|
+
bar.insertBefore(btn, bar.firstChild);
|
|
389
418
|
}
|
|
390
419
|
|
|
391
420
|
return this;
|
|
@@ -396,7 +425,18 @@ class UINavBar extends Animator {
|
|
|
396
425
|
}
|
|
397
426
|
|
|
398
427
|
sticky() {
|
|
399
|
-
|
|
428
|
+
// Applied to the root wrapper, not the inner bar. `position: sticky`
|
|
429
|
+
// can only travel within its own parent's box, and the inner bar's
|
|
430
|
+
// parent is exactly bar-height — so sticking it there pins it for zero
|
|
431
|
+
// pixels and it scrolls straight off. The root is a direct child of the
|
|
432
|
+
// page container, which is what gives it room to stay pinned.
|
|
433
|
+
//
|
|
434
|
+
// `sticky` rather than the previous `fixed`: fixed takes the bar out of
|
|
435
|
+
// flow and the first section slides underneath it.
|
|
436
|
+
this.res.style.position = "sticky";
|
|
437
|
+
this.res.style.top = this.res.style.top || "0px";
|
|
438
|
+
this.res.style.zIndex = this.res.style.zIndex || 50;
|
|
439
|
+
this._sticky = true;
|
|
400
440
|
return this;
|
|
401
441
|
}
|
|
402
442
|
|
|
@@ -449,6 +489,12 @@ class UINavBar extends Animator {
|
|
|
449
489
|
|
|
450
490
|
var btn = document.createElement("button");
|
|
451
491
|
btn.setAttribute("id", "hamburger");
|
|
492
|
+
// Announce the control and its state. Attribute-only, so nothing about
|
|
493
|
+
// the existing visual behaviour changes.
|
|
494
|
+
btn.setAttribute("type", "button");
|
|
495
|
+
btn.setAttribute("aria-label", "Menu");
|
|
496
|
+
btn.setAttribute("aria-expanded", "false");
|
|
497
|
+
btn.setAttribute("aria-controls", "innerItemsWrapper");
|
|
452
498
|
btn.style.border = "none";
|
|
453
499
|
btn.style.fontWeight = "bold";
|
|
454
500
|
btn.style.position = "absolute"; // NEW
|
|
@@ -464,8 +510,9 @@ class UINavBar extends Animator {
|
|
|
464
510
|
|
|
465
511
|
btn.addEventListener("click", () => {
|
|
466
512
|
|
|
467
|
-
|
|
513
|
+
|
|
468
514
|
this.isShown = !this.isShown;
|
|
515
|
+
btn.setAttribute("aria-expanded", String(this.isShown));
|
|
469
516
|
|
|
470
517
|
this.hasAnimatedToWide = false;
|
|
471
518
|
|
|
@@ -846,8 +893,31 @@ class UINavBar extends Animator {
|
|
|
846
893
|
// This gets owervwritten, column fires
|
|
847
894
|
|
|
848
895
|
let myMedia = window.matchMedia(`(max-device-width: 415px)`);
|
|
849
|
-
|
|
850
|
-
|
|
896
|
+
// Resolve by id, with the historical index as a fallback: the
|
|
897
|
+
// wrappers sit at index 1 only when the hamburger occupies index 0.
|
|
898
|
+
let outerItemsWrapper =
|
|
899
|
+
this.res.querySelector("#outerItemsWrapper") ||
|
|
900
|
+
this.res.children[0].children[1];
|
|
901
|
+
let innerIW = outerItemsWrapper &&
|
|
902
|
+
(outerItemsWrapper.querySelector("#innerItemsWrapper") ||
|
|
903
|
+
outerItemsWrapper.children[0]);
|
|
904
|
+
|
|
905
|
+
// Apply the optional presentation settings from setup(). Each is
|
|
906
|
+
// skipped when unset, so bars that don't pass them are untouched.
|
|
907
|
+
const ui = this._ui || {};
|
|
908
|
+
if (innerIW) {
|
|
909
|
+
if (ui.gap) innerIW.style.gap = ui.gap;
|
|
910
|
+
if (ui.justify) innerIW.style.justifyContent = ui.justify;
|
|
911
|
+
if (ui.barPad) innerIW.style.padding = ui.barPad;
|
|
912
|
+
if (ui.maxWidth) {
|
|
913
|
+
innerIW.style.maxWidth = ui.maxWidth;
|
|
914
|
+
innerIW.style.marginLeft = "auto";
|
|
915
|
+
innerIW.style.marginRight = "auto";
|
|
916
|
+
}
|
|
917
|
+
}
|
|
918
|
+
if (outerItemsWrapper && ui.borderBottom) {
|
|
919
|
+
outerItemsWrapper.style.borderBottom = ui.borderBottom;
|
|
920
|
+
}
|
|
851
921
|
|
|
852
922
|
// console.log("TEETH");
|
|
853
923
|
// console.log(outerItemsWrapper);
|
|
@@ -867,8 +937,14 @@ class UINavBar extends Animator {
|
|
|
867
937
|
innerIW.style.flexDirection = "row";
|
|
868
938
|
}
|
|
869
939
|
|
|
940
|
+
// Above the mobile breakpoint the hamburger is hidden and the
|
|
941
|
+
// links show. Target it by id, not by index: items() only inserts
|
|
942
|
+
// the button when the wrapper has exactly one child, so on a plain
|
|
943
|
+
// .setup().items().render() chain index 0 is the items wrapper —
|
|
944
|
+
// and hiding that made the whole nav disappear on desktop.
|
|
870
945
|
if (!this.obj.isSide && !media.matches && !myMedia.matches) {
|
|
871
|
-
this.res.
|
|
946
|
+
const hamburger = this.res.querySelector("#hamburger");
|
|
947
|
+
if (hamburger) hamburger.style.display = "none";
|
|
872
948
|
}
|
|
873
949
|
|
|
874
950
|
|
package/layout/polygon.js
CHANGED
package/layout/prerender-site.js
CHANGED
package/layout/prerender.js
CHANGED
package/layout/progress.js
CHANGED
package/layout/row.js
CHANGED
package/layout/scroll-video.js
CHANGED
package/layout/side-bar.js
CHANGED
package/layout/side-nav-bar.js
CHANGED
package/layout/simple-bar.js
CHANGED
package/layout/slider-2025.js
CHANGED