@sit-onyx/headless 0.7.1 → 0.8.0-dev-20260324082504
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/composables/slider/createSlider.d.ts +8 -57
- package/dist/index.js +14 -62
- package/package.json +1 -1
|
@@ -1,8 +1,4 @@
|
|
|
1
1
|
import { HTMLAttributes, MaybeRef, Ref } from 'vue';
|
|
2
|
-
export type SliderMark = {
|
|
3
|
-
value: number;
|
|
4
|
-
label?: string;
|
|
5
|
-
};
|
|
6
2
|
type SliderValue = number | [number, number];
|
|
7
3
|
export type NormalizedSliderValue = [number] | [number, number];
|
|
8
4
|
export type CreateSliderOptions<TValue extends SliderValue = SliderValue> = {
|
|
@@ -40,14 +36,6 @@ export type CreateSliderOptions<TValue extends SliderValue = SliderValue> = {
|
|
|
40
36
|
* @default false
|
|
41
37
|
*/
|
|
42
38
|
disabled?: MaybeRef<boolean>;
|
|
43
|
-
/**
|
|
44
|
-
* Whether to show marks inside the slider rail.
|
|
45
|
-
* - `true`: will generate marks automatically based on `step` prop
|
|
46
|
-
* - array of numbers or `SliderMark` objects: will shown at the specified values with optional labels
|
|
47
|
-
*
|
|
48
|
-
* @default false
|
|
49
|
-
*/
|
|
50
|
-
marks?: MaybeRef<SliderMark[] | number[] | boolean>;
|
|
51
39
|
/**
|
|
52
40
|
* Aria label for the slider.
|
|
53
41
|
*/
|
|
@@ -255,17 +243,6 @@ export declare const createSlider: <TValue extends SliderValue>(options: CreateS
|
|
|
255
243
|
onTransitionstart?: ((payload: TransitionEvent) => void) | undefined;
|
|
256
244
|
ref: import('vue').WritableComputedRef<HTMLElement | null, HTMLElement | null>;
|
|
257
245
|
}>;
|
|
258
|
-
/**
|
|
259
|
-
* Individual thumb elements for each value (span)
|
|
260
|
-
*/
|
|
261
|
-
thumbContainer: import('vue').ComputedRef<(data: {
|
|
262
|
-
index: number;
|
|
263
|
-
value: number;
|
|
264
|
-
}) => {
|
|
265
|
-
style: {
|
|
266
|
-
left: string;
|
|
267
|
-
};
|
|
268
|
-
}>;
|
|
269
246
|
/**
|
|
270
247
|
* Input inside each thumb for accessibility
|
|
271
248
|
*/
|
|
@@ -468,46 +445,20 @@ export declare const createSlider: <TValue extends SliderValue>(options: CreateS
|
|
|
468
445
|
disabled: boolean | undefined;
|
|
469
446
|
ref: import('vue').WritableComputedRef<HTMLElement | null, HTMLElement | null> | undefined;
|
|
470
447
|
}>;
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
mark: import('vue').ComputedRef<(data: {
|
|
475
|
-
value: number;
|
|
476
|
-
label?: string;
|
|
477
|
-
padding: string;
|
|
478
|
-
markWidth: string;
|
|
479
|
-
}) => {
|
|
480
|
-
"aria-hidden": true;
|
|
481
|
-
style: {
|
|
482
|
-
left: string;
|
|
483
|
-
};
|
|
484
|
-
}>;
|
|
485
|
-
/**
|
|
486
|
-
* Label for each mark
|
|
487
|
-
*/
|
|
488
|
-
markLabel: import('vue').ComputedRef<(data: {
|
|
489
|
-
value: number;
|
|
490
|
-
}) => {
|
|
491
|
-
"aria-hidden": true;
|
|
492
|
-
style: {
|
|
493
|
-
left: string;
|
|
494
|
-
transform: "translateX(-50%)";
|
|
495
|
-
};
|
|
496
|
-
}>;
|
|
448
|
+
}, {
|
|
449
|
+
normalizedValue: import('vue').ComputedRef<NormalizedSliderValue>;
|
|
450
|
+
shiftStep: import('vue').ComputedRef<number>;
|
|
497
451
|
/**
|
|
498
452
|
* Track element representing the selected range
|
|
499
453
|
*/
|
|
500
454
|
track: import('vue').ComputedRef<{
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
455
|
+
start: number;
|
|
456
|
+
startPercentage: number;
|
|
457
|
+
end: number;
|
|
458
|
+
endPercentage: number;
|
|
505
459
|
}>;
|
|
506
460
|
}, {
|
|
507
|
-
|
|
508
|
-
shiftStep: import('vue').ComputedRef<number>;
|
|
509
|
-
marks: import('vue').ComputedRef<SliderMark[]>;
|
|
510
|
-
}, {
|
|
461
|
+
getValueInPercentage: import('vue').ComputedRef<(value: number) => number>;
|
|
511
462
|
updateValue: (value: number, index: number) => void;
|
|
512
463
|
updateValueByStep: (direction: "increase" | "decrease") => void;
|
|
513
464
|
}>;
|
package/dist/index.js
CHANGED
|
@@ -1245,20 +1245,6 @@ const createSlider = createBuilder(
|
|
|
1245
1245
|
const stepMultiple = Math.max(1, Math.round((max.value - min.value) * 0.1 / step.value));
|
|
1246
1246
|
return stepMultiple * step.value;
|
|
1247
1247
|
});
|
|
1248
|
-
const marks = computed(() => {
|
|
1249
|
-
const _marks = toValue(options.marks);
|
|
1250
|
-
if (!_marks) return [];
|
|
1251
|
-
if (_marks === true) {
|
|
1252
|
-
const markCount = Math.floor((max.value - min.value) / step.value) + 1;
|
|
1253
|
-
return Array.from({ length: markCount }, (_, index) => {
|
|
1254
|
-
return { value: min.value + step.value * index };
|
|
1255
|
-
});
|
|
1256
|
-
}
|
|
1257
|
-
return _marks.map((mark) => {
|
|
1258
|
-
if (typeof mark === "number") return { value: mark };
|
|
1259
|
-
return mark;
|
|
1260
|
-
}).sort((a, b) => a.value - b.value);
|
|
1261
|
-
});
|
|
1262
1248
|
const getNormalizedValue = computed(() => {
|
|
1263
1249
|
return (value) => {
|
|
1264
1250
|
let values = typeof value === "number" ? [value] : value;
|
|
@@ -1379,12 +1365,6 @@ const createSlider = createBuilder(
|
|
|
1379
1365
|
...toValue(options.disabled) ? void 0 : events
|
|
1380
1366
|
};
|
|
1381
1367
|
}),
|
|
1382
|
-
/**
|
|
1383
|
-
* Individual thumb elements for each value (span)
|
|
1384
|
-
*/
|
|
1385
|
-
thumbContainer: computed(() => (data) => ({
|
|
1386
|
-
style: { left: `${getValueInPercentage.value(data.value)}%` }
|
|
1387
|
-
})),
|
|
1388
1368
|
/**
|
|
1389
1369
|
* Input inside each thumb for accessibility
|
|
1390
1370
|
*/
|
|
@@ -1408,58 +1388,30 @@ const createSlider = createBuilder(
|
|
|
1408
1388
|
ref: data.index === 0 ? firstThumbRef : data.index === 1 ? secondThumbRef : void 0,
|
|
1409
1389
|
...toValue(options.disabled) ? void 0 : events
|
|
1410
1390
|
};
|
|
1411
|
-
})
|
|
1412
|
-
|
|
1413
|
-
|
|
1414
|
-
|
|
1415
|
-
|
|
1416
|
-
() => (data) => {
|
|
1417
|
-
const percentage = getValueInPercentage.value(data.value);
|
|
1418
|
-
return {
|
|
1419
|
-
"aria-hidden": true,
|
|
1420
|
-
style: {
|
|
1421
|
-
// adjusting the position for the marks with consideration to their width and a padding/safe-zone.
|
|
1422
|
-
left: `calc(${data.padding} + (100% - 2 * ${data.padding} - ${data.markWidth}) * ${percentage} / 100)`
|
|
1423
|
-
}
|
|
1424
|
-
};
|
|
1425
|
-
}
|
|
1426
|
-
),
|
|
1427
|
-
/**
|
|
1428
|
-
* Label for each mark
|
|
1429
|
-
*/
|
|
1430
|
-
markLabel: computed(() => (data) => {
|
|
1431
|
-
const left = getValueInPercentage.value(data.value);
|
|
1432
|
-
return {
|
|
1433
|
-
"aria-hidden": true,
|
|
1434
|
-
style: {
|
|
1435
|
-
left: `${left}%`,
|
|
1436
|
-
transform: "translateX(-50%)"
|
|
1437
|
-
}
|
|
1438
|
-
};
|
|
1439
|
-
}),
|
|
1391
|
+
})
|
|
1392
|
+
},
|
|
1393
|
+
state: {
|
|
1394
|
+
normalizedValue,
|
|
1395
|
+
shiftStep,
|
|
1440
1396
|
/**
|
|
1441
1397
|
* Track element representing the selected range
|
|
1442
1398
|
*/
|
|
1443
1399
|
track: computed(() => {
|
|
1444
1400
|
const isRange = normalizedValue.value.length > 1;
|
|
1445
|
-
const
|
|
1446
|
-
const
|
|
1447
|
-
const
|
|
1448
|
-
const
|
|
1401
|
+
const start = isRange ? normalizedValue.value[0] : min.value;
|
|
1402
|
+
const startPercentage = getValueInPercentage.value(start);
|
|
1403
|
+
const end = normalizedValue.value.at(-1);
|
|
1404
|
+
const endPercentage = getValueInPercentage.value(end);
|
|
1449
1405
|
return {
|
|
1450
|
-
|
|
1451
|
-
|
|
1452
|
-
|
|
1453
|
-
|
|
1406
|
+
start,
|
|
1407
|
+
startPercentage,
|
|
1408
|
+
end,
|
|
1409
|
+
endPercentage
|
|
1454
1410
|
};
|
|
1455
1411
|
})
|
|
1456
1412
|
},
|
|
1457
|
-
state: {
|
|
1458
|
-
normalizedValue,
|
|
1459
|
-
shiftStep,
|
|
1460
|
-
marks
|
|
1461
|
-
},
|
|
1462
1413
|
internals: {
|
|
1414
|
+
getValueInPercentage,
|
|
1463
1415
|
updateValue,
|
|
1464
1416
|
updateValueByStep
|
|
1465
1417
|
}
|