@keenthemes/ktui 1.0.19 → 1.0.21
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/ktui.js +690 -166
- package/dist/ktui.min.js +1 -1
- package/dist/ktui.min.js.map +1 -1
- package/dist/styles.css +165 -31
- package/examples/image-input/file-upload-example.html +189 -0
- package/examples/select/remote-data_.html +5 -0
- package/examples/select/test-optimizations.html +227 -0
- package/examples/select/test-remote-search.html +151 -0
- package/examples/sticky/README.md +158 -0
- package/examples/sticky/debug-sticky.html +144 -0
- package/examples/sticky/test-runner.html +175 -0
- package/examples/sticky/test-sticky-logic.js +369 -0
- package/examples/sticky/test-sticky-positioning.html +386 -0
- package/examples/toast/example.html +52 -0
- package/lib/cjs/components/component.js +59 -5
- package/lib/cjs/components/component.js.map +1 -1
- package/lib/cjs/components/datatable/datatable-sort.js +4 -0
- package/lib/cjs/components/datatable/datatable-sort.js.map +1 -1
- package/lib/cjs/components/datatable/datatable.js +79 -12
- package/lib/cjs/components/datatable/datatable.js.map +1 -1
- package/lib/cjs/components/image-input/image-input.js +10 -2
- package/lib/cjs/components/image-input/image-input.js.map +1 -1
- package/lib/cjs/components/select/combobox.js +50 -20
- package/lib/cjs/components/select/combobox.js.map +1 -1
- package/lib/cjs/components/select/config.js +1 -0
- package/lib/cjs/components/select/config.js.map +1 -1
- package/lib/cjs/components/select/dropdown.js +4 -2
- package/lib/cjs/components/select/dropdown.js.map +1 -1
- package/lib/cjs/components/select/index.js.map +1 -1
- package/lib/cjs/components/select/option.js +2 -1
- package/lib/cjs/components/select/option.js.map +1 -1
- package/lib/cjs/components/select/remote.js +50 -50
- package/lib/cjs/components/select/remote.js.map +1 -1
- package/lib/cjs/components/select/search.js +15 -5
- package/lib/cjs/components/select/search.js.map +1 -1
- package/lib/cjs/components/select/select.js +273 -32
- package/lib/cjs/components/select/select.js.map +1 -1
- package/lib/cjs/components/select/tags.js +3 -1
- package/lib/cjs/components/select/tags.js.map +1 -1
- package/lib/cjs/components/select/templates.js +6 -0
- package/lib/cjs/components/select/templates.js.map +1 -1
- package/lib/cjs/components/select/utils.js +23 -10
- package/lib/cjs/components/select/utils.js.map +1 -1
- package/lib/cjs/components/stepper/stepper.js +59 -12
- package/lib/cjs/components/stepper/stepper.js.map +1 -1
- package/lib/cjs/components/sticky/sticky.js +52 -14
- package/lib/cjs/components/sticky/sticky.js.map +1 -1
- package/lib/esm/components/component.js +59 -5
- package/lib/esm/components/component.js.map +1 -1
- package/lib/esm/components/datatable/datatable-sort.js +4 -0
- package/lib/esm/components/datatable/datatable-sort.js.map +1 -1
- package/lib/esm/components/datatable/datatable.js +78 -12
- package/lib/esm/components/datatable/datatable.js.map +1 -1
- package/lib/esm/components/image-input/image-input.js +10 -2
- package/lib/esm/components/image-input/image-input.js.map +1 -1
- package/lib/esm/components/select/combobox.js +50 -20
- package/lib/esm/components/select/combobox.js.map +1 -1
- package/lib/esm/components/select/config.js +1 -0
- package/lib/esm/components/select/config.js.map +1 -1
- package/lib/esm/components/select/dropdown.js +4 -2
- package/lib/esm/components/select/dropdown.js.map +1 -1
- package/lib/esm/components/select/index.js +1 -1
- package/lib/esm/components/select/index.js.map +1 -1
- package/lib/esm/components/select/option.js +2 -1
- package/lib/esm/components/select/option.js.map +1 -1
- package/lib/esm/components/select/remote.js +50 -50
- package/lib/esm/components/select/remote.js.map +1 -1
- package/lib/esm/components/select/search.js +16 -6
- package/lib/esm/components/select/search.js.map +1 -1
- package/lib/esm/components/select/select.js +273 -32
- package/lib/esm/components/select/select.js.map +1 -1
- package/lib/esm/components/select/tags.js +3 -1
- package/lib/esm/components/select/tags.js.map +1 -1
- package/lib/esm/components/select/templates.js +6 -0
- package/lib/esm/components/select/templates.js.map +1 -1
- package/lib/esm/components/select/utils.js +23 -10
- package/lib/esm/components/select/utils.js.map +1 -1
- package/lib/esm/components/stepper/stepper.js +59 -12
- package/lib/esm/components/stepper/stepper.js.map +1 -1
- package/lib/esm/components/sticky/sticky.js +52 -14
- package/lib/esm/components/sticky/sticky.js.map +1 -1
- package/package.json +2 -2
- package/src/components/component.ts +19 -4
- package/src/components/datatable/datatable-sort.ts +6 -0
- package/src/components/datatable/datatable.ts +98 -15
- package/src/components/datatable/types.ts +5 -1
- package/src/components/image-input/image-input.ts +11 -2
- package/src/components/image-input/types.ts +1 -0
- package/src/components/input/input-group.css +1 -1
- package/src/components/input/input.css +1 -1
- package/src/components/scrollable/scrollable.css +3 -3
- package/src/components/select/combobox.ts +84 -34
- package/src/components/select/config.ts +2 -0
- package/src/components/select/dropdown.ts +20 -11
- package/src/components/select/index.ts +6 -1
- package/src/components/select/option.ts +7 -6
- package/src/components/select/remote.ts +51 -52
- package/src/components/select/search.ts +59 -44
- package/src/components/select/select.css +26 -17
- package/src/components/select/select.ts +472 -101
- package/src/components/select/tags.ts +9 -3
- package/src/components/select/templates.ts +10 -0
- package/src/components/select/utils.ts +55 -20
- package/src/components/select/variants.css +0 -1
- package/src/components/stepper/stepper.ts +2 -2
- package/src/components/sticky/sticky.ts +47 -16
- package/src/components/sticky/types.ts +3 -0
- package/src/components/table/table.css +1 -1
- package/src/components/textarea/textarea.css +1 -1
- package/src/components/toast/toast.css +84 -47
- package/src/components/toast/types.ts +3 -0
|
@@ -0,0 +1,386 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8">
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
6
|
+
<title>KTUI Sticky Component - Positioning Test</title>
|
|
7
|
+
<script src="https://cdn.tailwindcss.com"></script>
|
|
8
|
+
<style>
|
|
9
|
+
.test-section {
|
|
10
|
+
min-height: 100vh;
|
|
11
|
+
padding: 2rem;
|
|
12
|
+
border-bottom: 1px solid #e5e7eb;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
.sticky-element {
|
|
16
|
+
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
|
|
17
|
+
color: white;
|
|
18
|
+
padding: 1rem;
|
|
19
|
+
border-radius: 8px;
|
|
20
|
+
box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1);
|
|
21
|
+
font-weight: 600;
|
|
22
|
+
text-align: center;
|
|
23
|
+
min-width: 200px;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
.sticky-element.active {
|
|
27
|
+
background: linear-gradient(135deg, #f093fb 0%, #f5576c 100%);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
.position-indicator {
|
|
31
|
+
position: fixed;
|
|
32
|
+
top: 10px;
|
|
33
|
+
right: 10px;
|
|
34
|
+
background: rgba(0, 0, 0, 0.8);
|
|
35
|
+
color: white;
|
|
36
|
+
padding: 0.5rem;
|
|
37
|
+
border-radius: 4px;
|
|
38
|
+
font-size: 0.875rem;
|
|
39
|
+
z-index: 9999;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
.test-info {
|
|
43
|
+
background: #f3f4f6;
|
|
44
|
+
padding: 1rem;
|
|
45
|
+
border-radius: 8px;
|
|
46
|
+
margin-bottom: 1rem;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
.scroll-indicator {
|
|
50
|
+
position: fixed;
|
|
51
|
+
bottom: 20px;
|
|
52
|
+
left: 20px;
|
|
53
|
+
background: rgba(0, 0, 0, 0.8);
|
|
54
|
+
color: white;
|
|
55
|
+
padding: 0.5rem 1rem;
|
|
56
|
+
border-radius: 4px;
|
|
57
|
+
font-size: 0.875rem;
|
|
58
|
+
}
|
|
59
|
+
</style>
|
|
60
|
+
</head>
|
|
61
|
+
<body class="bg-gray-50">
|
|
62
|
+
<!-- Position Indicator -->
|
|
63
|
+
<div class="position-indicator" id="positionIndicator">
|
|
64
|
+
Scroll to test positioning
|
|
65
|
+
</div>
|
|
66
|
+
|
|
67
|
+
<!-- Scroll Indicator -->
|
|
68
|
+
<div class="scroll-indicator" id="scrollIndicator">
|
|
69
|
+
Scroll: 0px
|
|
70
|
+
</div>
|
|
71
|
+
|
|
72
|
+
<!-- Test 1: Top positioning -->
|
|
73
|
+
<div class="test-section">
|
|
74
|
+
<div class="test-info">
|
|
75
|
+
<h2 class="text-xl font-bold mb-2">Test 1: Top Positioning</h2>
|
|
76
|
+
<p>Element should stick to top: 20px when scrolling</p>
|
|
77
|
+
</div>
|
|
78
|
+
<div class="sticky-element"
|
|
79
|
+
data-kt-sticky="true"
|
|
80
|
+
data-kt-sticky-top="20"
|
|
81
|
+
data-kt-sticky-offset="100"
|
|
82
|
+
data-kt-sticky-zindex="1000"
|
|
83
|
+
data-kt-sticky-name="top-test">
|
|
84
|
+
Top: 20px
|
|
85
|
+
</div>
|
|
86
|
+
<div class="mt-8">
|
|
87
|
+
<p>Scroll down to see the element stick to the top with 20px offset.</p>
|
|
88
|
+
</div>
|
|
89
|
+
</div>
|
|
90
|
+
|
|
91
|
+
<!-- Test 2: Middle positioning -->
|
|
92
|
+
<div class="test-section">
|
|
93
|
+
<div class="test-info">
|
|
94
|
+
<h2 class="text-xl font-bold mb-2">Test 2: Middle (Vertical Center) Positioning</h2>
|
|
95
|
+
<p>Element should be vertically centered when sticky</p>
|
|
96
|
+
</div>
|
|
97
|
+
<div class="sticky-element"
|
|
98
|
+
data-kt-sticky="true"
|
|
99
|
+
data-kt-sticky-middle="true"
|
|
100
|
+
data-kt-sticky-offset="200"
|
|
101
|
+
data-kt-sticky-zindex="1001"
|
|
102
|
+
data-kt-sticky-name="middle-test">
|
|
103
|
+
Middle (Vertical Center)
|
|
104
|
+
</div>
|
|
105
|
+
<div class="mt-8">
|
|
106
|
+
<p>Scroll down to see the element stick to the vertical center of the viewport.</p>
|
|
107
|
+
</div>
|
|
108
|
+
</div>
|
|
109
|
+
|
|
110
|
+
<!-- Test 3: Center positioning -->
|
|
111
|
+
<div class="test-section">
|
|
112
|
+
<div class="test-info">
|
|
113
|
+
<h2 class="text-xl font-bold mb-2">Test 3: Center (Horizontal Center) Positioning</h2>
|
|
114
|
+
<p>Element should be horizontally centered when sticky</p>
|
|
115
|
+
</div>
|
|
116
|
+
<div class="sticky-element"
|
|
117
|
+
data-kt-sticky="true"
|
|
118
|
+
data-kt-sticky-center="true"
|
|
119
|
+
data-kt-sticky-offset="300"
|
|
120
|
+
data-kt-sticky-zindex="1002"
|
|
121
|
+
data-kt-sticky-name="center-test">
|
|
122
|
+
Center (Horizontal)
|
|
123
|
+
</div>
|
|
124
|
+
<div class="mt-8">
|
|
125
|
+
<p>Scroll down to see the element stick to the horizontal center of the viewport.</p>
|
|
126
|
+
</div>
|
|
127
|
+
</div>
|
|
128
|
+
|
|
129
|
+
<!-- Test 4: Middle + Center positioning -->
|
|
130
|
+
<div class="test-section">
|
|
131
|
+
<div class="test-info">
|
|
132
|
+
<h2 class="text-xl font-bold mb-2">Test 4: Middle + Center (Fully Centered)</h2>
|
|
133
|
+
<p>Element should be both vertically and horizontally centered when sticky</p>
|
|
134
|
+
</div>
|
|
135
|
+
<div class="sticky-element"
|
|
136
|
+
data-kt-sticky="true"
|
|
137
|
+
data-kt-sticky-middle="true"
|
|
138
|
+
data-kt-sticky-center="true"
|
|
139
|
+
data-kt-sticky-offset="400"
|
|
140
|
+
data-kt-sticky-zindex="1003"
|
|
141
|
+
data-kt-sticky-name="middle-center-test">
|
|
142
|
+
Middle + Center
|
|
143
|
+
</div>
|
|
144
|
+
<div class="mt-8">
|
|
145
|
+
<p>Scroll down to see the element stick to the center of the viewport (both axes).</p>
|
|
146
|
+
</div>
|
|
147
|
+
</div>
|
|
148
|
+
|
|
149
|
+
<!-- Test 5: Bottom positioning -->
|
|
150
|
+
<div class="test-section">
|
|
151
|
+
<div class="test-info">
|
|
152
|
+
<h2 class="text-xl font-bold mb-2">Test 5: Bottom Positioning</h2>
|
|
153
|
+
<p>Element should stick to bottom: 20px when scrolling</p>
|
|
154
|
+
</div>
|
|
155
|
+
<div class="sticky-element"
|
|
156
|
+
data-kt-sticky="true"
|
|
157
|
+
data-kt-sticky-bottom="20"
|
|
158
|
+
data-kt-sticky-offset="500"
|
|
159
|
+
data-kt-sticky-zindex="1004"
|
|
160
|
+
data-kt-sticky-name="bottom-test">
|
|
161
|
+
Bottom: 20px
|
|
162
|
+
</div>
|
|
163
|
+
<div class="mt-8">
|
|
164
|
+
<p>Scroll down to see the element stick to the bottom with 20px offset.</p>
|
|
165
|
+
</div>
|
|
166
|
+
</div>
|
|
167
|
+
|
|
168
|
+
<!-- Test 6: Auto positioning with offset calculation -->
|
|
169
|
+
<div class="test-section">
|
|
170
|
+
<div class="test-info">
|
|
171
|
+
<h2 class="text-xl font-bold mb-2">Test 6: Auto Positioning with Offset</h2>
|
|
172
|
+
<p>Element should use calculated offset when start/end is 'auto'</p>
|
|
173
|
+
</div>
|
|
174
|
+
<div class="sticky-element"
|
|
175
|
+
data-kt-sticky="true"
|
|
176
|
+
data-kt-sticky-start="auto"
|
|
177
|
+
data-kt-sticky-top="50"
|
|
178
|
+
data-kt-sticky-offset="600"
|
|
179
|
+
data-kt-sticky-zindex="1005"
|
|
180
|
+
data-kt-sticky-name="auto-test">
|
|
181
|
+
Auto Start + Top: 50px
|
|
182
|
+
</div>
|
|
183
|
+
<div class="mt-8">
|
|
184
|
+
<p>Scroll down to see the element stick with auto-calculated horizontal position.</p>
|
|
185
|
+
</div>
|
|
186
|
+
</div>
|
|
187
|
+
|
|
188
|
+
<!-- Test 7: Exclusive positioning (top vs bottom) -->
|
|
189
|
+
<div class="test-section">
|
|
190
|
+
<div class="test-info">
|
|
191
|
+
<h2 class="text-xl font-bold mb-2">Test 7: Exclusive Positioning Logic</h2>
|
|
192
|
+
<p>Only one of top/bottom should be applied (top takes precedence)</p>
|
|
193
|
+
</div>
|
|
194
|
+
<div class="sticky-element"
|
|
195
|
+
data-kt-sticky="true"
|
|
196
|
+
data-kt-sticky-top="30"
|
|
197
|
+
data-kt-sticky-bottom="30"
|
|
198
|
+
data-kt-sticky-offset="700"
|
|
199
|
+
data-kt-sticky-zindex="1006"
|
|
200
|
+
data-kt-sticky-name="exclusive-test">
|
|
201
|
+
Top: 30px (should ignore bottom)
|
|
202
|
+
</div>
|
|
203
|
+
<div class="mt-8">
|
|
204
|
+
<p>This element has both top and bottom set - only top should be applied.</p>
|
|
205
|
+
</div>
|
|
206
|
+
</div>
|
|
207
|
+
|
|
208
|
+
<!-- Test 8: RTL Support Test -->
|
|
209
|
+
<div class="test-section">
|
|
210
|
+
<div class="test-info">
|
|
211
|
+
<h2 class="text-xl font-bold mb-2">Test 8: RTL Support (Logical Properties)</h2>
|
|
212
|
+
<p>Element should work correctly in RTL layouts using logical properties</p>
|
|
213
|
+
</div>
|
|
214
|
+
<div class="sticky-element"
|
|
215
|
+
data-kt-sticky="true"
|
|
216
|
+
data-kt-sticky-end="20"
|
|
217
|
+
data-kt-sticky-top="40"
|
|
218
|
+
data-kt-sticky-offset="800"
|
|
219
|
+
data-kt-sticky-zindex="1007"
|
|
220
|
+
data-kt-sticky-name="rtl-test">
|
|
221
|
+
End: 20px, Top: 40px (RTL Ready)
|
|
222
|
+
</div>
|
|
223
|
+
<div class="mt-8">
|
|
224
|
+
<p>This element uses logical properties (end instead of right) for RTL compatibility.</p>
|
|
225
|
+
</div>
|
|
226
|
+
</div>
|
|
227
|
+
|
|
228
|
+
<!-- Additional content for scrolling -->
|
|
229
|
+
<div class="test-section">
|
|
230
|
+
<div class="test-info">
|
|
231
|
+
<h2 class="text-xl font-bold mb-2">Additional Content</h2>
|
|
232
|
+
<p>Scroll through this content to test all sticky elements</p>
|
|
233
|
+
</div>
|
|
234
|
+
<div class="space-y-4">
|
|
235
|
+
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</p>
|
|
236
|
+
<p>Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</p>
|
|
237
|
+
<p>Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.</p>
|
|
238
|
+
<p>Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
|
|
239
|
+
</div>
|
|
240
|
+
</div>
|
|
241
|
+
|
|
242
|
+
<!-- Test Controls -->
|
|
243
|
+
<div class="test-section">
|
|
244
|
+
<div class="test-info">
|
|
245
|
+
<h2 class="text-xl font-bold mb-2">Test Controls</h2>
|
|
246
|
+
<div class="space-y-2">
|
|
247
|
+
<button onclick="toggleRTL()" class="bg-blue-500 text-white px-4 py-2 rounded">
|
|
248
|
+
Toggle RTL Layout
|
|
249
|
+
</button>
|
|
250
|
+
<button onclick="resetAll()" class="bg-green-500 text-white px-4 py-2 rounded">
|
|
251
|
+
Reset All Sticky Elements
|
|
252
|
+
</button>
|
|
253
|
+
<button onclick="scrollToTop()" class="bg-purple-500 text-white px-4 py-2 rounded">
|
|
254
|
+
Scroll to Top
|
|
255
|
+
</button>
|
|
256
|
+
</div>
|
|
257
|
+
</div>
|
|
258
|
+
</div>
|
|
259
|
+
|
|
260
|
+
<!-- Load KTUI -->
|
|
261
|
+
<script src="../../dist/ktui.js"></script>
|
|
262
|
+
<script>
|
|
263
|
+
// Wait for KTUI to load
|
|
264
|
+
document.addEventListener('DOMContentLoaded', function() {
|
|
265
|
+
console.log('DOM loaded, checking KTUI...');
|
|
266
|
+
console.log('window.KTSticky:', window.KTSticky);
|
|
267
|
+
|
|
268
|
+
if (window.KTSticky) {
|
|
269
|
+
console.log('KTSticky found, initializing...');
|
|
270
|
+
|
|
271
|
+
// Check sticky elements before initialization
|
|
272
|
+
const stickyElements = document.querySelectorAll('[data-kt-sticky]');
|
|
273
|
+
console.log('Found sticky elements:', stickyElements.length);
|
|
274
|
+
|
|
275
|
+
// Initialize all sticky elements
|
|
276
|
+
window.KTSticky.init();
|
|
277
|
+
console.log('KTSticky initialized');
|
|
278
|
+
|
|
279
|
+
// Check if elements were initialized
|
|
280
|
+
const initializedElements = document.querySelectorAll('[data-kt-sticky-initialized]');
|
|
281
|
+
console.log('Initialized sticky elements:', initializedElements.length);
|
|
282
|
+
|
|
283
|
+
// Log viewport height
|
|
284
|
+
console.log('Viewport height:', window.innerHeight);
|
|
285
|
+
|
|
286
|
+
// Check each sticky element
|
|
287
|
+
stickyElements.forEach((element, index) => {
|
|
288
|
+
const computedStyle = window.getComputedStyle(element);
|
|
289
|
+
const height = element.offsetHeight;
|
|
290
|
+
const top = element.getAttribute('data-kt-sticky-top') || '0';
|
|
291
|
+
console.log(`Sticky ${index + 1}: height=${height}, top=${top}, height+top=${height + parseInt(top)}`);
|
|
292
|
+
});
|
|
293
|
+
} else {
|
|
294
|
+
console.error('KTSticky not found!');
|
|
295
|
+
}
|
|
296
|
+
});
|
|
297
|
+
|
|
298
|
+
// Initialize sticky components
|
|
299
|
+
document.addEventListener('DOMContentLoaded', function() {
|
|
300
|
+
// Initialize all sticky elements
|
|
301
|
+
if (window.KTSticky) {
|
|
302
|
+
window.KTSticky.init();
|
|
303
|
+
}
|
|
304
|
+
|
|
305
|
+
// Update scroll indicator
|
|
306
|
+
window.addEventListener('scroll', function() {
|
|
307
|
+
const scrollTop = window.pageYOffset || document.documentElement.scrollTop;
|
|
308
|
+
document.getElementById('scrollIndicator').textContent = `Scroll: ${scrollTop}px`;
|
|
309
|
+
|
|
310
|
+
// Update position indicator
|
|
311
|
+
const activeSticky = document.querySelector('[data-kt-sticky-initialized].active');
|
|
312
|
+
if (activeSticky) {
|
|
313
|
+
const name = activeSticky.getAttribute('data-kt-sticky-name');
|
|
314
|
+
const computedStyle = window.getComputedStyle(activeSticky);
|
|
315
|
+
const position = {
|
|
316
|
+
top: computedStyle.top,
|
|
317
|
+
bottom: computedStyle.bottom,
|
|
318
|
+
left: computedStyle.left,
|
|
319
|
+
right: computedStyle.right,
|
|
320
|
+
insetBlockStart: computedStyle.insetBlockStart,
|
|
321
|
+
insetInlineStart: computedStyle.insetInlineStart,
|
|
322
|
+
insetInlineEnd: computedStyle.insetInlineEnd
|
|
323
|
+
};
|
|
324
|
+
|
|
325
|
+
document.getElementById('positionIndicator').innerHTML = `
|
|
326
|
+
Active: ${name}<br>
|
|
327
|
+
Top: ${position.top}<br>
|
|
328
|
+
Bottom: ${position.bottom}<br>
|
|
329
|
+
Left: ${position.left}<br>
|
|
330
|
+
Right: ${position.right}<br>
|
|
331
|
+
InsetBlockStart: ${position.insetBlockStart}<br>
|
|
332
|
+
InsetInlineStart: ${position.insetInlineStart}<br>
|
|
333
|
+
InsetInlineEnd: ${position.insetInlineEnd}
|
|
334
|
+
`;
|
|
335
|
+
} else {
|
|
336
|
+
document.getElementById('positionIndicator').textContent = 'No active sticky elements';
|
|
337
|
+
}
|
|
338
|
+
});
|
|
339
|
+
});
|
|
340
|
+
|
|
341
|
+
// Test functions
|
|
342
|
+
window.toggleRTL = function() {
|
|
343
|
+
const html = document.documentElement;
|
|
344
|
+
const currentDir = html.getAttribute('dir');
|
|
345
|
+
const newDir = currentDir === 'rtl' ? 'ltr' : 'rtl';
|
|
346
|
+
html.setAttribute('dir', newDir);
|
|
347
|
+
|
|
348
|
+
// Reinitialize sticky elements
|
|
349
|
+
if (window.KTSticky) {
|
|
350
|
+
window.KTSticky.init();
|
|
351
|
+
}
|
|
352
|
+
};
|
|
353
|
+
|
|
354
|
+
window.resetAll = function() {
|
|
355
|
+
// Remove all sticky instances
|
|
356
|
+
document.querySelectorAll('[data-kt-sticky-initialized]').forEach(element => {
|
|
357
|
+
const instance = window.KTSticky ? window.KTSticky.getInstance(element) : null;
|
|
358
|
+
if (instance) {
|
|
359
|
+
// Force disable
|
|
360
|
+
element.classList.remove('active');
|
|
361
|
+
element.style.position = '';
|
|
362
|
+
element.style.top = '';
|
|
363
|
+
element.style.bottom = '';
|
|
364
|
+
element.style.left = '';
|
|
365
|
+
element.style.right = '';
|
|
366
|
+
element.style.insetBlockStart = '';
|
|
367
|
+
element.style.insetInlineStart = '';
|
|
368
|
+
element.style.insetInlineEnd = '';
|
|
369
|
+
}
|
|
370
|
+
});
|
|
371
|
+
|
|
372
|
+
// Reinitialize
|
|
373
|
+
if (window.KTSticky) {
|
|
374
|
+
window.KTSticky.init();
|
|
375
|
+
}
|
|
376
|
+
};
|
|
377
|
+
|
|
378
|
+
window.scrollToTop = function() {
|
|
379
|
+
window.scrollTo({
|
|
380
|
+
top: 0,
|
|
381
|
+
behavior: 'smooth'
|
|
382
|
+
});
|
|
383
|
+
};
|
|
384
|
+
</script>
|
|
385
|
+
</body>
|
|
386
|
+
</html>
|
|
@@ -54,12 +54,26 @@
|
|
|
54
54
|
<button id="toast-pos-top-end" class="kt-btn">Top End (Right)</button>
|
|
55
55
|
<button id="toast-pos-top-center" class="kt-btn">Top Center</button>
|
|
56
56
|
<button id="toast-pos-top-start" class="kt-btn">Top Start (Left)</button>
|
|
57
|
+
<button id="toast-pos-middle-end" class="kt-btn">Middle End (Right)</button>
|
|
58
|
+
<button id="toast-pos-middle-center" class="kt-btn">Middle Center</button>
|
|
59
|
+
<button id="toast-pos-middle-start" class="kt-btn">Middle Start (Left)</button>
|
|
57
60
|
<button id="toast-pos-bottom-end" class="kt-btn">Bottom End (Right)</button>
|
|
58
61
|
<button id="toast-pos-bottom-center" class="kt-btn">Bottom Center</button>
|
|
59
62
|
<button id="toast-pos-bottom-start" class="kt-btn">Bottom Start (Left)</button>
|
|
60
63
|
</div>
|
|
61
64
|
</div>
|
|
62
65
|
|
|
66
|
+
<!-- RTL Testing -->
|
|
67
|
+
<div class="mb-6">
|
|
68
|
+
<h3 class="font-semibold mb-2">RTL Testing</h3>
|
|
69
|
+
<div class="flex flex-wrap gap-2 mb-2">
|
|
70
|
+
<button id="toast-rtl-toggle" class="kt-btn kt-btn-primary">Toggle RTL Mode</button>
|
|
71
|
+
<button id="toast-rtl-test-center" class="kt-btn">Test RTL Top Center</button>
|
|
72
|
+
<button id="toast-rtl-test-middle-center" class="kt-btn">Test RTL Middle Center</button>
|
|
73
|
+
</div>
|
|
74
|
+
<div class="text-xs text-gray-500">Toggle RTL mode to test centering behavior.</div>
|
|
75
|
+
</div>
|
|
76
|
+
|
|
63
77
|
<!-- Global Config Example -->
|
|
64
78
|
<div class="mb-6">
|
|
65
79
|
<h3 class="font-semibold mb-2">Global Config</h3>
|
|
@@ -114,6 +128,9 @@ const posExamples = [
|
|
|
114
128
|
{ id: 'toast-pos-top-end', position: 'top-end', label: 'Top End (Right)' },
|
|
115
129
|
{ id: 'toast-pos-top-center', position: 'top-center', label: 'Top Center' },
|
|
116
130
|
{ id: 'toast-pos-top-start', position: 'top-start', label: 'Top Start (Left)' },
|
|
131
|
+
{ id: 'toast-pos-middle-end', position: 'middle-end', label: 'Middle End (Right)' },
|
|
132
|
+
{ id: 'toast-pos-middle-center', position: 'middle-center', label: 'Middle Center' },
|
|
133
|
+
{ id: 'toast-pos-middle-start', position: 'middle-start', label: 'Middle Start (Left)' },
|
|
117
134
|
{ id: 'toast-pos-bottom-end', position: 'bottom-end', label: 'Bottom End (Right)' },
|
|
118
135
|
{ id: 'toast-pos-bottom-center', position: 'bottom-center', label: 'Bottom Center' },
|
|
119
136
|
{ id: 'toast-pos-bottom-start', position: 'bottom-start', label: 'Bottom Start (Left)' }
|
|
@@ -131,6 +148,41 @@ posExamples.forEach(({ id, position, label }) => {
|
|
|
131
148
|
}
|
|
132
149
|
});
|
|
133
150
|
|
|
151
|
+
// --- RTL Testing ---
|
|
152
|
+
let isRTL = false;
|
|
153
|
+
const rtlToggleBtn = document.getElementById('toast-rtl-toggle');
|
|
154
|
+
const rtlTestCenterBtn = document.getElementById('toast-rtl-test-center');
|
|
155
|
+
const rtlTestMiddleCenterBtn = document.getElementById('toast-rtl-test-middle-center');
|
|
156
|
+
|
|
157
|
+
if (rtlToggleBtn) {
|
|
158
|
+
rtlToggleBtn.addEventListener('click', () => {
|
|
159
|
+
isRTL = !isRTL;
|
|
160
|
+
document.documentElement.setAttribute('dir', isRTL ? 'rtl' : 'ltr');
|
|
161
|
+
rtlToggleBtn.textContent = isRTL ? 'Switch to LTR' : 'Switch to RTL';
|
|
162
|
+
rtlToggleBtn.className = isRTL ? 'kt-btn kt-btn-secondary' : 'kt-btn kt-btn-primary';
|
|
163
|
+
});
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
if (rtlTestCenterBtn) {
|
|
167
|
+
rtlTestCenterBtn.addEventListener('click', () => {
|
|
168
|
+
KTToast.show({
|
|
169
|
+
message: `RTL Test: Top Center (${isRTL ? 'RTL' : 'LTR'} mode)`,
|
|
170
|
+
position: 'top-center',
|
|
171
|
+
variant: 'info'
|
|
172
|
+
});
|
|
173
|
+
});
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
if (rtlTestMiddleCenterBtn) {
|
|
177
|
+
rtlTestMiddleCenterBtn.addEventListener('click', () => {
|
|
178
|
+
KTToast.show({
|
|
179
|
+
message: `RTL Test: Middle Center (${isRTL ? 'RTL' : 'LTR'} mode)`,
|
|
180
|
+
position: 'middle-center',
|
|
181
|
+
variant: 'success'
|
|
182
|
+
});
|
|
183
|
+
});
|
|
184
|
+
}
|
|
185
|
+
|
|
134
186
|
// --- Global Config Example ---
|
|
135
187
|
const defaultGlobalConfig = {
|
|
136
188
|
position: 'top-end',
|
|
@@ -14,6 +14,42 @@ var __assign = (this && this.__assign) || function () {
|
|
|
14
14
|
};
|
|
15
15
|
return __assign.apply(this, arguments);
|
|
16
16
|
};
|
|
17
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
18
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
19
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
20
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
21
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
22
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
23
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
24
|
+
});
|
|
25
|
+
};
|
|
26
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
27
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
|
|
28
|
+
return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
29
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
30
|
+
function step(op) {
|
|
31
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
32
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
33
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
34
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
35
|
+
switch (op[0]) {
|
|
36
|
+
case 0: case 1: t = op; break;
|
|
37
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
38
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
39
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
40
|
+
default:
|
|
41
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
42
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
43
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
44
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
45
|
+
if (t[2]) _.ops.pop();
|
|
46
|
+
_.trys.pop(); continue;
|
|
47
|
+
}
|
|
48
|
+
op = body.call(thisArg, _);
|
|
49
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
50
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
51
|
+
}
|
|
52
|
+
};
|
|
17
53
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
54
|
var data_1 = require("../helpers/data");
|
|
19
55
|
var dom_1 = require("../helpers/dom");
|
|
@@ -35,11 +71,29 @@ var KTComponent = /** @class */ (function () {
|
|
|
35
71
|
this._element.setAttribute("data-kt-".concat(this._name, "-initialized"), 'true');
|
|
36
72
|
data_1.default.set(this._element, this._name, this);
|
|
37
73
|
};
|
|
38
|
-
KTComponent.prototype._fireEvent = function (
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
74
|
+
KTComponent.prototype._fireEvent = function (eventType_1) {
|
|
75
|
+
return __awaiter(this, arguments, void 0, function (eventType, payload) {
|
|
76
|
+
var callbacks;
|
|
77
|
+
if (payload === void 0) { payload = null; }
|
|
78
|
+
return __generator(this, function (_a) {
|
|
79
|
+
switch (_a.label) {
|
|
80
|
+
case 0:
|
|
81
|
+
callbacks = this._events.get(eventType);
|
|
82
|
+
if (callbacks instanceof Map == false) {
|
|
83
|
+
return [2 /*return*/];
|
|
84
|
+
}
|
|
85
|
+
return [4 /*yield*/, Promise.all(Array.from(callbacks.values())
|
|
86
|
+
.filter(function (callable) {
|
|
87
|
+
return typeof callable === 'function';
|
|
88
|
+
})
|
|
89
|
+
.map(function (callable) {
|
|
90
|
+
return Promise.resolve(callable(payload));
|
|
91
|
+
}))];
|
|
92
|
+
case 1:
|
|
93
|
+
_a.sent();
|
|
94
|
+
return [2 /*return*/];
|
|
95
|
+
}
|
|
96
|
+
});
|
|
43
97
|
});
|
|
44
98
|
};
|
|
45
99
|
KTComponent.prototype._dispatchEvent = function (eventType, payload) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"component.js","sourceRoot":"","sources":["../../../src/components/component.ts"],"names":[],"mappings":";AAAA;;;GAGG
|
|
1
|
+
{"version":3,"file":"component.js","sourceRoot":"","sources":["../../../src/components/component.ts"],"names":[],"mappings":"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"}
|
|
@@ -70,6 +70,10 @@ function createSortHandler(config, theadElement, getState, setState, fireEvent,
|
|
|
70
70
|
// If the sort class is not found, it's not a sortable column
|
|
71
71
|
if (!header.querySelector(".".concat((_b = (_a = config.sort) === null || _a === void 0 ? void 0 : _a.classes) === null || _b === void 0 ? void 0 : _b.base)))
|
|
72
72
|
return;
|
|
73
|
+
// Check if sorting is disabled for this column
|
|
74
|
+
var sortDisabled = header.getAttribute('data-kt-datatable-column-sort') === 'false';
|
|
75
|
+
if (sortDisabled)
|
|
76
|
+
return;
|
|
73
77
|
var sortAttribute = header.getAttribute('data-kt-datatable-column-sort') ||
|
|
74
78
|
header.getAttribute('data-kt-datatable-column');
|
|
75
79
|
var sortField = sortAttribute
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"datatable-sort.js","sourceRoot":"","sources":["../../../../src/components/datatable/datatable-sort.ts"],"names":[],"mappings":";AAAA;;;GAGG;;AA4BH,
|
|
1
|
+
{"version":3,"file":"datatable-sort.js","sourceRoot":"","sources":["../../../../src/components/datatable/datatable-sort.ts"],"names":[],"mappings":"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"}
|