nodality 1.0.32 → 1.0.34
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.LICENSE.txt +1 -1
- package/dist/animator.esm.js.LICENSE.txt +1 -1
- package/dist/appleanim.cjs.js.LICENSE.txt +1 -1
- package/dist/appleanim.esm.js.LICENSE.txt +1 -1
- package/dist/audionew.cjs.js.LICENSE.txt +1 -1
- package/dist/audionew.esm.js.LICENSE.txt +1 -1
- package/dist/base.cjs.js.LICENSE.txt +1 -1
- package/dist/base.esm.js.LICENSE.txt +1 -1
- package/dist/betaDesktopBar.esm.js +1 -1
- package/dist/betaDesktopBar.esm.js.LICENSE.txt +1 -1
- package/dist/betaMobileBar.esm.js.LICENSE.txt +1 -1
- package/dist/bundle.umd.js +1 -1
- package/dist/bundle.umd.js.LICENSE.txt +1 -1
- package/dist/button.cjs.js.LICENSE.txt +1 -1
- package/dist/button.esm.js.LICENSE.txt +1 -1
- package/dist/cardGetter.cjs.js.LICENSE.txt +1 -1
- package/dist/cardGetter.esm.js.LICENSE.txt +1 -1
- package/dist/center.cjs.js.LICENSE.txt +1 -1
- package/dist/center.esm.js.LICENSE.txt +1 -1
- package/dist/checkbox.cjs.js.LICENSE.txt +1 -1
- package/dist/checkbox.esm.js.LICENSE.txt +1 -1
- package/dist/code.cjs.js.LICENSE.txt +1 -1
- package/dist/code.esm.js.LICENSE.txt +1 -1
- package/dist/container.cjs.js.LICENSE.txt +1 -1
- package/dist/container.esm.js.LICENSE.txt +1 -1
- package/dist/datalist.cjs.js.LICENSE.txt +1 -1
- package/dist/datalist.esm.js.LICENSE.txt +1 -1
- package/dist/designer.cjs.js +1 -1
- package/dist/designer.cjs.js.LICENSE.txt +1 -1
- package/dist/designer.esm.js +1 -1
- package/dist/designer.esm.js.LICENSE.txt +1 -1
- package/dist/dropdown.cjs.js.LICENSE.txt +1 -1
- package/dist/dropdown.esm.js.LICENSE.txt +1 -1
- package/dist/elementMapper.cjs.js.LICENSE.txt +1 -1
- package/dist/elementMapper.esm.js.LICENSE.txt +1 -1
- package/dist/finalresult.esm.js +1 -1
- package/dist/finalresult.esm.js.LICENSE.txt +1 -1
- package/dist/flexCard.cjs.js.LICENSE.txt +1 -1
- package/dist/flexCard.esm.js.LICENSE.txt +1 -1
- package/dist/flexGrid.cjs.js.LICENSE.txt +1 -1
- package/dist/flexGrid.esm.js.LICENSE.txt +1 -1
- package/dist/flexRow.cjs.js.LICENSE.txt +1 -1
- package/dist/flexRow.esm.js.LICENSE.txt +1 -1
- package/dist/floatingInput.cjs.js.LICENSE.txt +1 -1
- package/dist/floatingInput.esm.js.LICENSE.txt +1 -1
- package/dist/free.cjs.js.LICENSE.txt +1 -1
- package/dist/free.esm.js.LICENSE.txt +1 -1
- package/dist/horizontalScroller.esm.js.LICENSE.txt +1 -1
- package/dist/image.cjs.js.LICENSE.txt +1 -1
- package/dist/image.esm.js.LICENSE.txt +1 -1
- package/dist/imagePicker.cjs.js.LICENSE.txt +1 -1
- package/dist/imagePicker.esm.js.LICENSE.txt +1 -1
- package/dist/index.cjs.js +1 -1
- package/dist/index.cjs.js.LICENSE.txt +1 -1
- package/dist/index.esm.js +1 -1
- package/dist/index.esm.js.LICENSE.txt +1 -1
- package/dist/link.cjs.js.LICENSE.txt +1 -1
- package/dist/link.esm.js.LICENSE.txt +1 -1
- package/dist/linkGetter.cjs.js.LICENSE.txt +1 -1
- package/dist/linkGetter.esm.js.LICENSE.txt +1 -1
- package/dist/metaAdder.cjs.js.LICENSE.txt +1 -1
- package/dist/metaAdder.esm.js.LICENSE.txt +1 -1
- package/dist/modal2025.cjs.js.LICENSE.txt +1 -1
- package/dist/modal2025.esm.js.LICENSE.txt +1 -1
- package/dist/multiswitchers.esm.js.LICENSE.txt +1 -1
- package/dist/newNavBar.cjs.js.LICENSE.txt +1 -1
- package/dist/newNavBar.esm.js.LICENSE.txt +1 -1
- package/dist/picker.cjs.js.LICENSE.txt +1 -1
- package/dist/picker.esm.js.LICENSE.txt +1 -1
- package/dist/progress.cjs.js.LICENSE.txt +1 -1
- package/dist/progress.esm.js.LICENSE.txt +1 -1
- package/dist/radio.cjs.js.LICENSE.txt +1 -1
- package/dist/radio.esm.js.LICENSE.txt +1 -1
- package/dist/range.cjs.js.LICENSE.txt +1 -1
- package/dist/range.esm.js.LICENSE.txt +1 -1
- package/dist/scrollvideo.cjs.js.LICENSE.txt +1 -1
- package/dist/scrollvideo.esm.js.LICENSE.txt +1 -1
- package/dist/sideBar.cjs.js.LICENSE.txt +1 -1
- package/dist/sideBar.esm.js.LICENSE.txt +1 -1
- package/dist/sideNavBar.cjs.js.LICENSE.txt +1 -1
- package/dist/sideNavBar.esm.js.LICENSE.txt +1 -1
- package/dist/simpleBar.cjs.js.LICENSE.txt +1 -1
- package/dist/simpleBar.esm.js.LICENSE.txt +1 -1
- package/dist/slider2025.cjs.js +1 -1
- package/dist/slider2025.cjs.js.LICENSE.txt +1 -1
- package/dist/slider2025.esm.js +1 -1
- package/dist/slider2025.esm.js.LICENSE.txt +1 -1
- package/dist/spacer.cjs.js.LICENSE.txt +1 -1
- package/dist/stack.cjs.js.LICENSE.txt +1 -1
- package/dist/stack.esm.js.LICENSE.txt +1 -1
- package/dist/stacker.cjs.js.LICENSE.txt +1 -1
- package/dist/stacker.esm.js.LICENSE.txt +1 -1
- package/dist/table.cjs.js.LICENSE.txt +1 -1
- package/dist/table.esm.js.LICENSE.txt +1 -1
- package/dist/text.cjs.js.LICENSE.txt +1 -1
- package/dist/text.esm.js.LICENSE.txt +1 -1
- package/dist/textField.cjs.js.LICENSE.txt +1 -1
- package/dist/textField.esm.js.LICENSE.txt +1 -1
- package/dist/transformanim.cjs.js.LICENSE.txt +1 -1
- package/dist/transformanim.esm.js.LICENSE.txt +1 -1
- package/dist/ulist.cjs.js.LICENSE.txt +1 -1
- package/dist/ulist.esm.js.LICENSE.txt +1 -1
- package/dist/video.esm.js.LICENSE.txt +1 -1
- package/dist/wrap.cjs.js.LICENSE.txt +1 -1
- package/dist/wrap.esm.js.LICENSE.txt +1 -1
- package/dist/zoomCard.cjs.js.LICENSE.txt +1 -1
- package/dist/zoomCard.esm.js.LICENSE.txt +1 -1
- package/layout/DEPRECATED-PARAGRAPH.js +1 -1
- package/layout/animator.js +1 -1
- 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/betaDesktopBar.js +1 -1
- package/layout/betaMobileBar.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/cleanRow.js +1 -1
- package/layout/code.js +1 -1
- package/layout/container.js +1 -1
- package/layout/custom.js +1 -1
- package/layout/divImage.js +1 -1
- package/layout/dropdown.js +1 -1
- package/layout/dropdown2025.js +1 -1
- package/layout/emptyElement.js +1 -1
- package/layout/externalStylesheet.js +1 -1
- package/layout/flexCard.js +1 -1
- package/layout/flexGrid.js +1 -1
- package/layout/flexrow.js +1 -1
- package/layout/footer.js +1 -1
- package/layout/formComponents/custom.js +1 -1
- package/layout/formComponents/dataList.js +1 -1
- package/layout/formComponents/floatingInput.js +1 -1
- package/layout/formComponents/form-all.js +1 -1
- package/layout/formComponents/form.js +1 -1
- package/layout/formComponents/imagePicker.js +1 -1
- package/layout/formComponents/picker.js +1 -1
- package/layout/formComponents/radio.js +1 -1
- package/layout/formComponents/radiogroup.js +1 -1
- package/layout/formComponents/range.js +1 -1
- package/layout/free.js +1 -1
- package/layout/grid-new.js +1 -1
- package/layout/grid.js +1 -1
- package/layout/gridSwitcher.js +1 -1
- package/layout/group.js +1 -1
- package/layout/header.js +1 -1
- package/layout/horizontalScroller.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/metaAdder.js +1 -1
- package/layout/modal2025.js +1 -1
- package/layout/modernwrap.js +1 -1
- package/layout/multiswitcher.js +1 -1
- package/layout/multiswitcherBeta.js +1 -1
- package/layout/navBar-OLD.js +1 -1
- package/layout/navBar.js +1 -1
- package/layout/navFactor/customDiv.js +1 -1
- package/layout/newFlatAdder.js +1 -1
- package/layout/newNavBar copy 2.js +1 -1
- package/layout/newNavBar copy.js +1 -1
- package/layout/newNavBar.js +1 -1
- package/layout/offsetContainer.js +1 -1
- package/layout/polygon.js +1 -1
- package/layout/progress.js +1 -1
- package/layout/row.js +1 -1
- package/layout/savedNewNavBar.js +1 -1
- package/layout/scrollvideo.js +1 -1
- package/layout/sideBar.js +1 -1
- package/layout/sideNavBar.js +1 -1
- package/layout/simpleBar.js +1 -1
- package/layout/slider2025.js +80 -108
- package/layout/spacer.js +1 -1
- package/layout/stack.js +1 -1
- package/layout/styler.js +1 -1
- package/layout/switcher.js +1 -1
- package/layout/table.js +1 -1
- package/layout/text.js +1 -1
- package/layout/textField.js +1 -1
- package/layout/ulist.js +1 -1
- package/layout/video.js +1 -1
- package/layout/withoutNew.js +1 -1
- package/layout/wrap.js +1 -1
- package/layout/zoomCard.js +1 -1
- package/lib/AppleAnim.js +1 -1
- package/lib/KeyframeAnimation.js +1 -1
- package/lib/Stacker.js +1 -1
- package/lib/TransformAnim.js +1 -1
- package/lib/cardGetter.js +1 -1
- package/lib/designer.js +2 -2
- package/lib/elementMapper.js +1 -1
- package/lib/linkGetter.js +1 -1
- package/lib/scrollvideo.js +1 -1
- package/package.json +1 -1
package/layout/slider2025.js
CHANGED
|
@@ -1,41 +1,42 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* nodality v1.0.
|
|
2
|
+
* nodality v1.0.34
|
|
3
3
|
* (c) 2025 Filip Vabrousek
|
|
4
4
|
* License: MIT
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
import {Animator} from "./animator.js";
|
|
8
|
-
import {Button} from "./button.js";
|
|
7
|
+
import { Animator } from "./animator.js";
|
|
8
|
+
import { Button } from "./button.js";
|
|
9
9
|
|
|
10
10
|
class Slider {
|
|
11
|
-
constructor(elements, buttons) {
|
|
12
|
-
this.container = document.createElement("div");
|
|
11
|
+
constructor(elements, buttons, options = {}) {
|
|
12
|
+
this.container = document.createElement("div");
|
|
13
13
|
this.container.style.width = "100%";
|
|
14
14
|
this.container.style.margin = "20px auto";
|
|
15
15
|
this.container.style.textAlign = "center";
|
|
16
16
|
|
|
17
17
|
this.elements = elements;
|
|
18
18
|
this.currentSlideIndex = 0;
|
|
19
|
-
|
|
20
19
|
this.buttons = buttons;
|
|
21
20
|
|
|
21
|
+
// 🎨 Tint options
|
|
22
|
+
this.tintColor = options.tintColor || "green";
|
|
23
|
+
this.inactiveColor = options.inactiveColor || "gray";
|
|
24
|
+
|
|
25
|
+
// 🔵 Default buttons adopt tintColor
|
|
22
26
|
if (!this.buttons) {
|
|
23
27
|
let buttons = {
|
|
24
28
|
leftButton: new Button("L").set({
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
color: "#1abc9c",
|
|
29
|
-
// image: new Image().set({ url: "../assets/arrow-left.png", width: "50px", height: "50px" }),
|
|
29
|
+
frame: { width: 50, height: 50 },
|
|
30
|
+
svg: this.createArrowSVG("left", 28, this.tintColor),
|
|
31
|
+
color: this.tintColor, // adopt tintColor
|
|
30
32
|
radius: "100%",
|
|
31
33
|
arrayMargin: { sides: ["all"], value: "1rem" },
|
|
32
34
|
}),
|
|
33
35
|
|
|
34
36
|
rightButton: new Button("R").set({
|
|
35
37
|
frame: { width: 50, height: 50 },
|
|
36
|
-
svg: this.createArrowSVG("right", 28),
|
|
37
|
-
|
|
38
|
-
color: "#1abc9c",
|
|
38
|
+
svg: this.createArrowSVG("right", 28, this.tintColor),
|
|
39
|
+
color: this.tintColor, // adopt tintColor
|
|
39
40
|
radius: "100%",
|
|
40
41
|
arrayMargin: { sides: ["all"], value: "1rem" },
|
|
41
42
|
}),
|
|
@@ -47,30 +48,28 @@ class Slider {
|
|
|
47
48
|
this.init();
|
|
48
49
|
}
|
|
49
50
|
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
path.setAttribute("d", "M8.59 16.59L13.17 12 8.59 7.41 10 6l6 6-6 6z");
|
|
69
|
-
}
|
|
51
|
+
createArrowSVG(direction = "left", size = 28, color = "currentColor") {
|
|
52
|
+
const svgNS = "http://www.w3.org/2000/svg";
|
|
53
|
+
const svg = document.createElementNS(svgNS, "svg");
|
|
54
|
+
svg.setAttribute("viewBox", "0 0 24 24");
|
|
55
|
+
svg.setAttribute("width", String(size));
|
|
56
|
+
svg.setAttribute("height", String(size));
|
|
57
|
+
svg.setAttribute("aria-hidden", "true");
|
|
58
|
+
svg.style.display = "block";
|
|
59
|
+
svg.style.pointerEvents = "none";
|
|
60
|
+
|
|
61
|
+
const path = document.createElementNS(svgNS, "path");
|
|
62
|
+
path.setAttribute("fill", color);
|
|
63
|
+
|
|
64
|
+
if (direction === "left") {
|
|
65
|
+
path.setAttribute("d", "M15.41 7.41L14 6l-6 6 6 6 1.41-1.41L10.83 12z");
|
|
66
|
+
} else {
|
|
67
|
+
path.setAttribute("d", "M8.59 16.59L13.17 12 8.59 7.41 10 6l6 6-6 6z");
|
|
68
|
+
}
|
|
70
69
|
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
}
|
|
70
|
+
svg.appendChild(path);
|
|
71
|
+
return svg;
|
|
72
|
+
}
|
|
74
73
|
|
|
75
74
|
toCode() {
|
|
76
75
|
let code = `new Slider([${this.elements.map((el) => el.toCode())}], null)`;
|
|
@@ -106,12 +105,12 @@ class Slider {
|
|
|
106
105
|
slide.style.flexShrink = "0";
|
|
107
106
|
slide.style.width = "100%";
|
|
108
107
|
slide.style.height = "400px";
|
|
109
|
-
slide.style.background =
|
|
108
|
+
slide.style.background =
|
|
109
|
+
index % 2 === 0 ? "rgb(250, 246, 212)" : "white";
|
|
110
110
|
slide.style.transformOrigin = "center center";
|
|
111
111
|
slide.style.transform = "scale(1)";
|
|
112
112
|
slide.style.scrollSnapAlign = "center";
|
|
113
113
|
|
|
114
|
-
// render element once and clone from that instance for the thumbnail
|
|
115
114
|
const rendered = text.render();
|
|
116
115
|
slide.appendChild(rendered);
|
|
117
116
|
slidesWrapper.appendChild(slide);
|
|
@@ -124,6 +123,9 @@ class Slider {
|
|
|
124
123
|
this.arrowPrev.style.top = "50%";
|
|
125
124
|
this.arrowPrev.style.transform = "translateY(-50%)";
|
|
126
125
|
this.arrowPrev.style.zIndex = "1";
|
|
126
|
+
this.arrowPrev.style.display = "flex";
|
|
127
|
+
this.arrowPrev.style.alignItems = "center";
|
|
128
|
+
this.arrowPrev.style.justifyContent = "center";
|
|
127
129
|
|
|
128
130
|
this.arrowNext = this.buttons.rightButton.render();
|
|
129
131
|
this.arrowNext.style.position = "absolute";
|
|
@@ -131,13 +133,15 @@ class Slider {
|
|
|
131
133
|
this.arrowNext.style.top = "50%";
|
|
132
134
|
this.arrowNext.style.transform = "translateY(-50%)";
|
|
133
135
|
this.arrowNext.style.zIndex = "1";
|
|
136
|
+
this.arrowNext.style.display = "flex";
|
|
137
|
+
this.arrowNext.style.alignItems = "center";
|
|
138
|
+
this.arrowNext.style.justifyContent = "center";
|
|
134
139
|
|
|
135
140
|
// Navigation dots
|
|
136
141
|
const nav = document.createElement("div");
|
|
137
142
|
nav.style.position = "absolute";
|
|
138
143
|
nav.style.bottom = "10%";
|
|
139
144
|
nav.style.left = "50%";
|
|
140
|
-
//nav.style.width = "200px";
|
|
141
145
|
nav.style.transform = "translateX(-50%)";
|
|
142
146
|
nav.style.textAlign = "center";
|
|
143
147
|
|
|
@@ -147,68 +151,63 @@ class Slider {
|
|
|
147
151
|
navLink.style.height = "15px";
|
|
148
152
|
navLink.style.width = "15px";
|
|
149
153
|
navLink.style.borderRadius = "50%";
|
|
150
|
-
navLink.style.backgroundColor =
|
|
154
|
+
navLink.style.backgroundColor = this.inactiveColor;
|
|
151
155
|
navLink.style.margin = "0 10px";
|
|
152
156
|
navLink.style.cursor = "pointer";
|
|
153
157
|
navLink.dataset.index = index;
|
|
154
158
|
nav.appendChild(navLink);
|
|
155
159
|
});
|
|
156
160
|
|
|
157
|
-
// ✅ Thumbnails section
|
|
161
|
+
// ✅ Thumbnails section
|
|
158
162
|
const thumbsContainer = document.createElement("div");
|
|
159
163
|
thumbsContainer.style.display = "flex";
|
|
160
164
|
thumbsContainer.style.justifyContent = "flex-start";
|
|
161
165
|
thumbsContainer.style.marginTop = "10px";
|
|
162
166
|
thumbsContainer.style.gap = "10px";
|
|
163
167
|
thumbsContainer.style.flexWrap = "nowrap";
|
|
164
|
-
thumbsContainer.style.overflowX = "auto";
|
|
168
|
+
thumbsContainer.style.overflowX = "auto";
|
|
165
169
|
|
|
166
|
-
// create thumbnails from existing slide DOM (clone once)
|
|
167
170
|
const slides = slidesWrapper.querySelectorAll(".slide");
|
|
168
171
|
slides.forEach((slide, index) => {
|
|
169
172
|
const thumb = document.createElement("div");
|
|
170
|
-
thumb.className = "slider-thumb";
|
|
173
|
+
thumb.className = "slider-thumb";
|
|
171
174
|
thumb.dataset.index = index.toString();
|
|
172
175
|
thumb.style.width = "60px";
|
|
173
176
|
thumb.style.height = "40px";
|
|
174
|
-
thumb.style.border =
|
|
177
|
+
thumb.style.border = `2px solid ${this.inactiveColor}`;
|
|
175
178
|
thumb.style.borderRadius = "5px";
|
|
176
179
|
thumb.style.overflow = "hidden";
|
|
177
180
|
thumb.style.cursor = "pointer";
|
|
178
181
|
thumb.style.flexShrink = "0";
|
|
179
182
|
thumb.style.position = "relative";
|
|
180
183
|
|
|
181
|
-
// use the slide's rendered content and clone it (no extra text.render() calls)
|
|
182
184
|
const sourceContent = slide.firstElementChild || slide.cloneNode(true);
|
|
183
185
|
const preview = sourceContent.cloneNode(true);
|
|
184
|
-
|
|
185
|
-
// scale down the preview and make sure it sits in the thumb
|
|
186
186
|
preview.style.transform = "scale(0.2)";
|
|
187
187
|
preview.style.transformOrigin = "top left";
|
|
188
|
-
// make width/height big enough so scale produces visible result
|
|
189
188
|
preview.style.width = "300px";
|
|
190
189
|
preview.style.height = "auto";
|
|
191
|
-
preview.style.pointerEvents = "none";
|
|
190
|
+
preview.style.pointerEvents = "none";
|
|
192
191
|
|
|
193
192
|
thumb.appendChild(preview);
|
|
194
|
-
|
|
195
193
|
thumbsContainer.appendChild(thumb);
|
|
196
194
|
});
|
|
197
195
|
|
|
198
|
-
// Append elements
|
|
196
|
+
// Append elements
|
|
199
197
|
this.slider.appendChild(this.arrowPrev);
|
|
200
198
|
this.slider.appendChild(this.arrowNext);
|
|
201
199
|
this.slider.appendChild(slidesWrapper);
|
|
202
200
|
this.slider.appendChild(nav);
|
|
203
201
|
|
|
204
|
-
// Append everything to root container (single root element)
|
|
205
202
|
this.container.appendChild(this.slider);
|
|
206
203
|
this.container.appendChild(thumbsContainer);
|
|
207
204
|
|
|
208
|
-
// Store references
|
|
205
|
+
// Store references
|
|
209
206
|
this.slidesWrapper = slidesWrapper;
|
|
210
207
|
this.navLinks = Array.from(nav.querySelectorAll("a"));
|
|
211
|
-
this.thumbs = Array.from(
|
|
208
|
+
this.thumbs = Array.from(
|
|
209
|
+
thumbsContainer.querySelectorAll(".slider-thumb")
|
|
210
|
+
);
|
|
212
211
|
}
|
|
213
212
|
|
|
214
213
|
init() {
|
|
@@ -218,7 +217,11 @@ class Slider {
|
|
|
218
217
|
|
|
219
218
|
attachEventListeners() {
|
|
220
219
|
this.arrowPrev.addEventListener("click", () => {
|
|
221
|
-
this.moveToSlide(
|
|
220
|
+
this.moveToSlide(
|
|
221
|
+
this.currentSlideIndex - 1 < 0
|
|
222
|
+
? this.elements.length - 1
|
|
223
|
+
: this.currentSlideIndex - 1
|
|
224
|
+
);
|
|
222
225
|
});
|
|
223
226
|
|
|
224
227
|
this.arrowNext.addEventListener("click", () => {
|
|
@@ -233,7 +236,6 @@ class Slider {
|
|
|
233
236
|
});
|
|
234
237
|
});
|
|
235
238
|
|
|
236
|
-
// thumbnails click (use data-index to be robust)
|
|
237
239
|
this.thumbs.forEach((thumb) => {
|
|
238
240
|
thumb.addEventListener("click", () => {
|
|
239
241
|
const idx = parseInt(thumb.dataset.index, 10);
|
|
@@ -241,10 +243,13 @@ class Slider {
|
|
|
241
243
|
});
|
|
242
244
|
});
|
|
243
245
|
|
|
244
|
-
// Keydown event for left and right arrow keys
|
|
245
246
|
document.addEventListener("keydown", (e) => {
|
|
246
247
|
if (e.key === "ArrowLeft") {
|
|
247
|
-
this.moveToSlide(
|
|
248
|
+
this.moveToSlide(
|
|
249
|
+
this.currentSlideIndex - 1 < 0
|
|
250
|
+
? this.elements.length - 1
|
|
251
|
+
: this.currentSlideIndex - 1
|
|
252
|
+
);
|
|
248
253
|
} else if (e.key === "ArrowRight") {
|
|
249
254
|
this.moveToSlide((this.currentSlideIndex + 1) % this.elements.length);
|
|
250
255
|
}
|
|
@@ -257,21 +262,29 @@ class Slider {
|
|
|
257
262
|
}
|
|
258
263
|
|
|
259
264
|
updateActiveSlide() {
|
|
260
|
-
//
|
|
265
|
+
// nav dots
|
|
261
266
|
this.navLinks.forEach((navLink) => {
|
|
262
267
|
const idx = parseInt(navLink.dataset.index, 10);
|
|
263
|
-
navLink.style.backgroundColor =
|
|
268
|
+
navLink.style.backgroundColor =
|
|
269
|
+
idx === this.currentSlideIndex
|
|
270
|
+
? this.tintColor
|
|
271
|
+
: this.inactiveColor;
|
|
264
272
|
});
|
|
265
273
|
|
|
266
|
-
//
|
|
274
|
+
// thumbs
|
|
267
275
|
this.thumbs.forEach((thumb) => {
|
|
268
276
|
const idx = parseInt(thumb.dataset.index, 10);
|
|
269
|
-
thumb.style.borderColor =
|
|
277
|
+
thumb.style.borderColor =
|
|
278
|
+
idx === this.currentSlideIndex
|
|
279
|
+
? this.tintColor
|
|
280
|
+
: this.inactiveColor;
|
|
270
281
|
});
|
|
271
282
|
|
|
272
|
-
// scroll
|
|
283
|
+
// scroll slides
|
|
273
284
|
const slideElem = this.slidesWrapper.querySelector(".slide");
|
|
274
|
-
const slideWidth = slideElem
|
|
285
|
+
const slideWidth = slideElem
|
|
286
|
+
? slideElem.offsetWidth
|
|
287
|
+
: this.slidesWrapper.clientWidth;
|
|
275
288
|
this.slidesWrapper.scrollTo({
|
|
276
289
|
left: this.currentSlideIndex * slideWidth,
|
|
277
290
|
behavior: "smooth",
|
|
@@ -282,50 +295,9 @@ class Slider {
|
|
|
282
295
|
if (div) {
|
|
283
296
|
document.querySelector(div).appendChild(this.container);
|
|
284
297
|
} else {
|
|
285
|
-
return this.container;
|
|
298
|
+
return this.container;
|
|
286
299
|
}
|
|
287
300
|
}
|
|
288
301
|
}
|
|
289
302
|
|
|
290
303
|
export { Slider };
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
/*
|
|
295
|
-
|
|
296
|
-
new Slider(texts, /*{
|
|
297
|
-
|
|
298
|
-
leftButton: new Button("").set({
|
|
299
|
-
url: "true",
|
|
300
|
-
img: new Image().set({
|
|
301
|
-
url: "../assets/arrow-left.png",
|
|
302
|
-
width: "50px",
|
|
303
|
-
height: "50px"
|
|
304
|
-
}),
|
|
305
|
-
color: "#1abc9c",
|
|
306
|
-
radius: "100%",
|
|
307
|
-
mar: {
|
|
308
|
-
"a":40
|
|
309
|
-
}
|
|
310
|
-
}),
|
|
311
|
-
|
|
312
|
-
rightButton: new Button("").set({
|
|
313
|
-
url: "true",
|
|
314
|
-
img: new Image().set({
|
|
315
|
-
url: "../assets/arrow-right.png",
|
|
316
|
-
width: "50px",
|
|
317
|
-
height: "50px"
|
|
318
|
-
}),
|
|
319
|
-
color: "#1abc9c",
|
|
320
|
-
frame: {
|
|
321
|
-
width: 50,
|
|
322
|
-
height: 50
|
|
323
|
-
},
|
|
324
|
-
radius: "100%",
|
|
325
|
-
mar: {
|
|
326
|
-
"a":40
|
|
327
|
-
}
|
|
328
|
-
})
|
|
329
|
-
|
|
330
|
-
}, null)
|
|
331
|
-
*/
|
package/layout/spacer.js
CHANGED
package/layout/stack.js
CHANGED
package/layout/styler.js
CHANGED
package/layout/switcher.js
CHANGED
package/layout/table.js
CHANGED
package/layout/text.js
CHANGED
package/layout/textField.js
CHANGED
package/layout/ulist.js
CHANGED
package/layout/video.js
CHANGED
package/layout/withoutNew.js
CHANGED
package/layout/wrap.js
CHANGED
package/layout/zoomCard.js
CHANGED
package/lib/AppleAnim.js
CHANGED
package/lib/KeyframeAnimation.js
CHANGED
package/lib/Stacker.js
CHANGED
package/lib/TransformAnim.js
CHANGED
package/lib/cardGetter.js
CHANGED
package/lib/designer.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* nodality v1.0.
|
|
2
|
+
* nodality v1.0.34
|
|
3
3
|
* (c) 2025 Filip Vabrousek
|
|
4
4
|
* License: MIT
|
|
5
5
|
*/
|
|
@@ -970,7 +970,7 @@ new Text("One").set({size: "S1", color: "#1abc9c", font: "Arial"}),
|
|
|
970
970
|
new Text("Four").set({size: "S1", color: "#1abc9c", font: "Arial"}),
|
|
971
971
|
];
|
|
972
972
|
|
|
973
|
-
new Slider(texts, null)
|
|
973
|
+
new Slider(texts, null, { tintColor: "#e74c3c", inactiveColor: "#ccc" })
|
|
974
974
|
|
|
975
975
|
`);
|
|
976
976
|
|
package/lib/elementMapper.js
CHANGED
package/lib/linkGetter.js
CHANGED
package/lib/scrollvideo.js
CHANGED