niuma-ui 2.0.3 → 2.0.4
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/CHANGELOG.md +38 -0
- package/dist/components/_shared/src/reka.d.ts +1 -1
- package/dist/components/_shared/src/reka.js +2 -2
- package/dist/components/anchor/index.d.ts +1 -1
- package/dist/components/anchor/src/RsAnchor.css +63 -32
- package/dist/components/anchor/src/RsAnchor.d.ts +29 -2
- package/dist/components/anchor/src/RsAnchor.impl.js +199 -81
- package/dist/components/anchor/src/RsAnchor.js +1 -1
- package/dist/components/anchor/src/anchor-utils.d.ts +36 -4
- package/dist/components/anchor/src/anchor-utils.js +81 -19
- package/dist/components/auto-complete/index.d.ts +2 -0
- package/dist/components/auto-complete/src/RsAutoComplete.css +122 -0
- package/dist/components/auto-complete/src/RsAutoComplete.d.ts +47 -7
- package/dist/components/auto-complete/src/RsAutoComplete.impl.js +180 -72
- package/dist/components/auto-complete/src/RsAutoComplete.js +4 -1
- package/dist/components/auto-complete/src/auto-complete-utils.d.ts +7 -0
- package/dist/components/auto-complete/src/auto-complete-utils.js +17 -0
- package/dist/components/avatar/index.d.ts +1 -0
- package/dist/components/avatar/src/RsAvatar.css +36 -19
- package/dist/components/avatar/src/RsAvatar.d.ts +9 -3
- package/dist/components/avatar/src/RsAvatar.impl.js +57 -33
- package/dist/components/avatar/src/RsAvatar.js +2 -1
- package/dist/components/avatar/src/avatar-utils.d.ts +16 -7
- package/dist/components/avatar/src/avatar-utils.js +41 -3
- package/dist/components/breadcrumb/index.d.ts +1 -1
- package/dist/components/breadcrumb/src/RsBreadcrumb.css +50 -17
- package/dist/components/breadcrumb/src/RsBreadcrumb.d.ts +45 -6
- package/dist/components/breadcrumb/src/RsBreadcrumb.impl.js +111 -12
- package/dist/components/breadcrumb/src/RsBreadcrumb.js +2 -1
- package/dist/components/breadcrumb/src/breadcrumb-utils.d.ts +37 -5
- package/dist/components/breadcrumb/src/breadcrumb-utils.js +70 -9
- package/dist/components/calendar-grid/index.d.ts +2 -0
- package/dist/components/calendar-grid/src/RsCalendarGrid.css +105 -45
- package/dist/components/calendar-grid/src/RsCalendarGrid.d.ts +62 -2
- package/dist/components/calendar-grid/src/RsCalendarGrid.impl.js +265 -94
- package/dist/components/calendar-grid/src/RsCalendarGrid.js +1 -1
- package/dist/components/calendar-grid/src/calendar-grid-utils.d.ts +72 -0
- package/dist/components/calendar-grid/src/calendar-grid-utils.js +122 -0
- package/dist/components/card/index.d.ts +1 -1
- package/dist/components/card/src/RsCard.css +108 -98
- package/dist/components/card/src/RsCard.d.ts +3 -12
- package/dist/components/card/src/RsCard.impl.js +29 -25
- package/dist/components/card/src/RsCard.js +2 -1
- package/dist/components/card/src/card-utils.d.ts +25 -0
- package/dist/components/card/src/card-utils.js +10 -0
- package/dist/components/cascader/index.d.ts +1 -0
- package/dist/components/cascader/src/RsCascader.css +175 -30
- package/dist/components/cascader/src/RsCascader.d.ts +15 -3
- package/dist/components/cascader/src/RsCascader.impl.js +277 -48
- package/dist/components/cascader/src/RsCascader.js +1 -1
- package/dist/components/cascader/src/cascader-utils.d.ts +2 -0
- package/dist/components/cascader/src/cascader-utils.js +8 -1
- package/dist/components/checkbox/index.d.ts +1 -0
- package/dist/components/checkbox/src/RsCheckbox.css +46 -23
- package/dist/components/checkbox/src/RsCheckbox.d.ts +11 -1
- package/dist/components/checkbox/src/RsCheckbox.impl.js +37 -9
- package/dist/components/checkbox/src/RsCheckbox.js +2 -1
- package/dist/components/checkbox/src/checkbox-utils.d.ts +4 -0
- package/dist/components/checkbox/src/checkbox-utils.js +12 -0
- package/dist/components/container/index.d.ts +1 -1
- package/dist/components/container/src/RsContainer.css +11 -11
- package/dist/components/container/src/RsContainer.d.ts +2 -12
- package/dist/components/container/src/RsContainer.impl.js +10 -57
- package/dist/components/container/src/RsContainer.js +1 -1
- package/dist/components/container/src/container-utils.d.ts +23 -0
- package/dist/components/container/src/container-utils.js +51 -0
- package/dist/components/date-picker/index.d.ts +4 -2
- package/dist/components/date-picker/src/RsDatePicker.css +42 -22
- package/dist/components/date-picker/src/RsDatePicker.d.ts +44 -20
- package/dist/components/date-picker/src/RsDatePicker.impl.js +484 -222
- package/dist/components/date-picker/src/RsDatePicker.js +1 -3
- package/dist/components/date-picker/src/RsDateTimePicker.d.ts +33 -6
- package/dist/components/date-picker/src/RsDateTimePicker.impl.js +47 -6
- package/dist/components/date-picker/src/date-picker-utils.d.ts +19 -0
- package/dist/components/date-picker/src/date-picker-utils.js +33 -10
- package/dist/components/dynamic-tags/index.d.ts +1 -1
- package/dist/components/dynamic-tags/src/RsDynamicTags.css +115 -38
- package/dist/components/dynamic-tags/src/RsDynamicTags.d.ts +58 -17
- package/dist/components/dynamic-tags/src/RsDynamicTags.impl.js +269 -106
- package/dist/components/dynamic-tags/src/RsDynamicTags.js +1 -1
- package/dist/components/dynamic-tags/src/dynamic-tags-utils.d.ts +19 -0
- package/dist/components/dynamic-tags/src/dynamic-tags-utils.js +60 -0
- package/dist/components/fieldset/src/RsFieldset.css +71 -41
- package/dist/components/fieldset/src/RsFieldset.d.ts +21 -2
- package/dist/components/fieldset/src/RsFieldset.impl.js +93 -26
- package/dist/components/fieldset/src/RsFieldset.js +1 -1
- package/dist/components/fieldset/src/fieldset-utils.d.ts +4 -0
- package/dist/components/fieldset/src/fieldset-utils.js +9 -1
- package/dist/components/form/index.d.ts +1 -0
- package/dist/components/form/src/RsForm.css +15 -12
- package/dist/components/form/src/RsForm.d.ts +20 -22
- package/dist/components/form/src/RsForm.impl.js +33 -20
- package/dist/components/form/src/RsForm.js +1 -1
- package/dist/components/form/src/form-utils.d.ts +7 -0
- package/dist/components/form/src/form-utils.js +28 -1
- package/dist/components/input/index.d.ts +1 -1
- package/dist/components/input/src/RsInput.css +78 -260
- package/dist/components/input/src/RsInput.d.ts +5 -3
- package/dist/components/input/src/RsInput.impl.js +8 -16
- package/dist/components/input/src/RsInput.js +1 -1
- package/dist/components/input/src/input-utils.d.ts +11 -0
- package/dist/components/input/src/input-utils.js +22 -0
- package/dist/components/input-number/index.d.ts +1 -0
- package/dist/components/input-number/src/RsInputNumber.css +31 -31
- package/dist/components/input-number/src/RsInputNumber.d.ts +15 -13
- package/dist/components/input-number/src/RsInputNumber.impl.js +17 -4
- package/dist/components/input-number/src/RsInputNumber.js +1 -1
- package/dist/components/label/src/RsLabel.css +30 -11
- package/dist/components/label/src/RsLabel.d.ts +18 -1
- package/dist/components/label/src/RsLabel.impl.js +63 -10
- package/dist/components/label/src/RsLabel.js +1 -1
- package/dist/components/label/src/label-utils.d.ts +6 -0
- package/dist/components/label/src/label-utils.js +16 -0
- package/dist/components/link/src/RsLink.d.ts +2 -2
- package/dist/components/loading/src/RsLoading.d.ts +1 -1
- package/dist/components/mentions/index.d.ts +2 -1
- package/dist/components/mentions/src/RsMentions.css +119 -3
- package/dist/components/mentions/src/RsMentions.d.ts +56 -4
- package/dist/components/mentions/src/RsMentions.impl.js +298 -79
- package/dist/components/mentions/src/RsMentions.js +1 -3
- package/dist/components/mentions/src/mentions-utils.d.ts +5 -1
- package/dist/components/mentions/src/mentions-utils.js +28 -9
- package/dist/components/popover/src/RsPopover.d.ts +1 -1
- package/dist/components/radio/index.d.ts +1 -1
- package/dist/components/radio/src/RsRadio.css +7 -6
- package/dist/components/radio/src/RsRadio.d.ts +8 -5
- package/dist/components/radio/src/RsRadio.impl.js +34 -24
- package/dist/components/radio/src/RsRadio.js +2 -1
- package/dist/components/radio/src/RsRadioItem.css +61 -44
- package/dist/components/radio/src/RsRadioItem.d.ts +2 -2
- package/dist/components/radio/src/RsRadioItem.impl.js +53 -20
- package/dist/components/radio/src/RsRadioItem.js +2 -1
- package/dist/components/radio/src/radio-utils.d.ts +12 -1
- package/dist/components/radio/src/radio-utils.js +15 -1
- package/dist/components/scrollbar/src/RsScrollbar.css +71 -24
- package/dist/components/scrollbar/src/RsScrollbar.d.ts +9 -5
- package/dist/components/scrollbar/src/RsScrollbar.impl.js +372 -47
- package/dist/components/scrollbar/src/RsScrollbar.js +2 -1
- package/dist/components/scrollbar/src/scrollbar-utils.d.ts +34 -2
- package/dist/components/scrollbar/src/scrollbar-utils.js +64 -1
- package/dist/components/select/index.d.ts +1 -0
- package/dist/components/select/src/RsSelect.css +54 -42
- package/dist/components/select/src/RsSelect.d.ts +19 -2
- package/dist/components/select/src/RsSelect.impl.js +727 -312
- package/dist/components/select/src/RsSelect.js +1 -1
- package/dist/components/select/src/select-utils.d.ts +4 -2
- package/dist/components/select/src/select-utils.js +8 -3
- package/dist/components/select/src/use-rs-select.d.ts +1 -0
- package/dist/components/select/src/use-rs-select.js +23 -17
- package/dist/components/switch/index.d.ts +2 -1
- package/dist/components/switch/src/RsSwitch.css +36 -18
- package/dist/components/switch/src/RsSwitch.d.ts +18 -5
- package/dist/components/switch/src/RsSwitch.impl.js +61 -29
- package/dist/components/switch/src/RsSwitch.js +2 -1
- package/dist/components/switch/src/switch-utils.d.ts +4 -0
- package/dist/components/switch/src/switch-utils.js +9 -0
- package/dist/components/textarea/src/RsTextarea.css +23 -23
- package/dist/components/textarea/src/RsTextarea.d.ts +6 -12
- package/dist/components/textarea/src/RsTextarea.impl.js +37 -46
- package/dist/components/textarea/src/RsTextarea.js +1 -1
- package/dist/components/textarea/src/textarea-utils.d.ts +27 -0
- package/dist/components/textarea/src/textarea-utils.js +61 -0
- package/dist/components/time-picker/index.d.ts +3 -2
- package/dist/components/time-picker/src/RsTimePicker.css +41 -24
- package/dist/components/time-picker/src/RsTimePicker.d.ts +52 -7
- package/dist/components/time-picker/src/RsTimePicker.impl.js +520 -156
- package/dist/components/time-picker/src/RsTimePicker.js +1 -3
- package/dist/components/time-picker/src/RsTimePickerColumns.css +26 -18
- package/dist/components/time-picker/src/RsTimePickerColumns.d.ts +3 -1
- package/dist/components/time-picker/src/RsTimePickerColumns.impl.js +62 -9
- package/dist/components/time-picker/src/RsTimePickerColumns.js +1 -1
- package/dist/components/time-picker/src/time-picker-utils.d.ts +38 -0
- package/dist/components/time-picker/src/time-picker-utils.js +97 -5
- package/dist/components/toaster/src/RsToaster.d.ts +1 -1
- package/dist/components/tooltip/src/RsTooltip.d.ts +1 -1
- package/dist/components/tree/src/RsTree.d.ts +3 -3
- package/dist/components/tree-select/index.d.ts +2 -0
- package/dist/components/tree-select/src/RsTreeSelect.css +100 -25
- package/dist/components/tree-select/src/RsTreeSelect.d.ts +91 -7
- package/dist/components/tree-select/src/RsTreeSelect.impl.js +464 -79
- package/dist/components/tree-select/src/RsTreeSelect.js +1 -1
- package/dist/components/tree-select/src/tree-select-utils.d.ts +20 -0
- package/dist/components/tree-select/src/tree-select-utils.js +60 -0
- package/dist/components/upload/index.d.ts +2 -1
- package/dist/components/upload/src/RsUpload.css +223 -75
- package/dist/components/upload/src/RsUpload.d.ts +77 -1
- package/dist/components/upload/src/RsUpload.impl.js +404 -90
- package/dist/components/upload/src/RsUpload.js +1 -1
- package/dist/components/upload/src/upload-utils.d.ts +21 -2
- package/dist/components/upload/src/upload-utils.js +139 -9
- package/dist/index.d.ts +21 -11
- package/dist/index.js +6 -0
- package/dist/locale/messages.js +46 -2
- package/dist/styles.css +518 -154
- package/dist/theme/brand.example.css +1 -1
- package/package.json +1 -1
- package/dist/components/breadcrumb/src/RsBreadcrumbItems.d.ts +0 -8
- package/dist/components/breadcrumb/src/RsBreadcrumbItems.impl.js +0 -40
- package/dist/components/breadcrumb/src/RsBreadcrumbItems.js +0 -5
- package/dist/components/date-picker/src/RsDatePicker-1.css +0 -157
- package/dist/components/mentions/src/RsMentions-1.css +0 -29
- package/dist/components/time-picker/src/RsTimePicker-1.css +0 -98
|
@@ -1,9 +1,16 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
1
|
+
import { useRsConfigOptional } from "../../../composables/useRsConfig.js";
|
|
2
|
+
import { resolveDirMode } from "../../../locale/apply.js";
|
|
3
|
+
import { useRsI18n } from "../../../composables/useRsI18n.js";
|
|
4
|
+
import { getScrollPositionFromPointer, getThumbOffsetFromScroll, getThumbSize, isRsScrollbarBarVisible, isRsScrollbarOverflow, isScrollingWithinScrollbarBounds, resolveScrollbarSize, showsRsScrollbarAxis, toCssInt } from "./scrollbar-utils.js";
|
|
5
|
+
import { computed, createCommentVNode, createElementBlock, createElementVNode, defineComponent, nextTick, normalizeStyle, onBeforeUnmount, onMounted, onUpdated, openBlock, ref, renderSlot, useTemplateRef, watch } from "vue";
|
|
4
6
|
//#region src/components/scrollbar/src/RsScrollbar.vue?vue&type=script&setup=true&lang.ts
|
|
5
|
-
var _hoisted_1 =
|
|
7
|
+
var _hoisted_1 = ["data-type", "data-orientation"];
|
|
8
|
+
var _hoisted_2 = ["aria-label"];
|
|
9
|
+
var _hoisted_3 = ["data-state"];
|
|
10
|
+
var _hoisted_4 = ["data-state"];
|
|
11
|
+
var _hoisted_5 = ["data-state"];
|
|
6
12
|
var RsScrollbar_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
|
|
13
|
+
name: "RsScrollbar",
|
|
7
14
|
__name: "RsScrollbar",
|
|
8
15
|
props: {
|
|
9
16
|
type: { default: "hover" },
|
|
@@ -15,7 +22,38 @@ var RsScrollbar_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defi
|
|
|
15
22
|
},
|
|
16
23
|
setup(__props, { expose: __expose }) {
|
|
17
24
|
const props = __props;
|
|
25
|
+
const { t } = useRsI18n();
|
|
26
|
+
const config = useRsConfigOptional();
|
|
27
|
+
const viewportLabel = computed(() => t("scrollbar.viewport"));
|
|
18
28
|
const rootRef = useTemplateRef("rootRef");
|
|
29
|
+
const viewportRef = useTemplateRef("viewportRef");
|
|
30
|
+
const contentRef = useTemplateRef("contentRef");
|
|
31
|
+
const barYRef = useTemplateRef("barYRef");
|
|
32
|
+
const barXRef = useTemplateRef("barXRef");
|
|
33
|
+
const hovering = ref(false);
|
|
34
|
+
const interacting = ref(false);
|
|
35
|
+
const scrollingY = ref(false);
|
|
36
|
+
const scrollingX = ref(false);
|
|
37
|
+
const overflowY = ref(false);
|
|
38
|
+
const overflowX = ref(false);
|
|
39
|
+
const showVertical = computed(() => showsRsScrollbarAxis(props.orientation, "y"));
|
|
40
|
+
const showHorizontal = computed(() => showsRsScrollbarAxis(props.orientation, "x"));
|
|
41
|
+
const barYVisible = computed(() => isRsScrollbarBarVisible({
|
|
42
|
+
type: props.type,
|
|
43
|
+
overflowing: overflowY.value,
|
|
44
|
+
hovering: hovering.value,
|
|
45
|
+
scrolling: scrollingY.value,
|
|
46
|
+
interacting: interacting.value
|
|
47
|
+
}));
|
|
48
|
+
const barXVisible = computed(() => isRsScrollbarBarVisible({
|
|
49
|
+
type: props.type,
|
|
50
|
+
overflowing: overflowX.value,
|
|
51
|
+
hovering: hovering.value,
|
|
52
|
+
scrolling: scrollingX.value,
|
|
53
|
+
interacting: interacting.value
|
|
54
|
+
}));
|
|
55
|
+
const showCorner = computed(() => showVertical.value && showHorizontal.value && barYVisible.value && barXVisible.value);
|
|
56
|
+
const textDir = computed(() => resolveDirMode(config?.dir.value ?? "auto", config?.locale.value ?? "zh-CN"));
|
|
19
57
|
const rootStyle = computed(() => {
|
|
20
58
|
const style = {};
|
|
21
59
|
const height = resolveScrollbarSize(props.height);
|
|
@@ -24,56 +62,343 @@ var RsScrollbar_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defi
|
|
|
24
62
|
if (height) style.height = height;
|
|
25
63
|
if (maxHeight) style.maxHeight = maxHeight;
|
|
26
64
|
if (minHeight) style.minHeight = minHeight;
|
|
27
|
-
|
|
65
|
+
style["--rs-scrollbar-corner"] = showCorner.value ? "var(--rs-scrollbar-size)" : "0px";
|
|
66
|
+
return style;
|
|
67
|
+
});
|
|
68
|
+
const viewportStyle = computed(() => ({
|
|
69
|
+
overflowX: showHorizontal.value ? "scroll" : "hidden",
|
|
70
|
+
overflowY: showVertical.value ? "scroll" : "hidden"
|
|
71
|
+
}));
|
|
72
|
+
const contentStyle = computed(() => ({ minWidth: showHorizontal.value ? "fit-content" : void 0 }));
|
|
73
|
+
let hideYTimer;
|
|
74
|
+
let hideXTimer;
|
|
75
|
+
let hoverTimer;
|
|
76
|
+
let scrollRaf = 0;
|
|
77
|
+
let pendingScrollFlags = false;
|
|
78
|
+
let observer;
|
|
79
|
+
let dragging = null;
|
|
80
|
+
let pointerOffset = 0;
|
|
81
|
+
let prevUserSelect = "";
|
|
82
|
+
let userSelectLocked = false;
|
|
83
|
+
const canUseRaf = typeof requestAnimationFrame === "function";
|
|
84
|
+
function clearTimer(timer) {
|
|
85
|
+
if (timer !== void 0) clearTimeout(timer);
|
|
86
|
+
}
|
|
87
|
+
function scheduleFrame(fn) {
|
|
88
|
+
if (canUseRaf) return requestAnimationFrame(fn);
|
|
89
|
+
return setTimeout(() => fn(0), 16);
|
|
90
|
+
}
|
|
91
|
+
function cancelFrame(id) {
|
|
92
|
+
if (canUseRaf && typeof cancelAnimationFrame === "function") {
|
|
93
|
+
cancelAnimationFrame(id);
|
|
94
|
+
return;
|
|
95
|
+
}
|
|
96
|
+
clearTimeout(id);
|
|
97
|
+
}
|
|
98
|
+
function sizesFor(axis) {
|
|
99
|
+
const viewport = viewportRef.value;
|
|
100
|
+
const bar = axis === "y" ? barYRef.value : barXRef.value;
|
|
101
|
+
if (!viewport || !bar) return null;
|
|
102
|
+
const style = typeof getComputedStyle === "function" ? getComputedStyle(bar) : void 0;
|
|
103
|
+
if (axis === "y") return {
|
|
104
|
+
content: viewport.scrollHeight,
|
|
105
|
+
viewport: viewport.offsetHeight,
|
|
106
|
+
scrollbar: {
|
|
107
|
+
size: bar.clientHeight,
|
|
108
|
+
paddingStart: toCssInt(style?.paddingTop),
|
|
109
|
+
paddingEnd: toCssInt(style?.paddingBottom)
|
|
110
|
+
}
|
|
111
|
+
};
|
|
112
|
+
return {
|
|
113
|
+
content: viewport.scrollWidth,
|
|
114
|
+
viewport: viewport.offsetWidth,
|
|
115
|
+
scrollbar: {
|
|
116
|
+
size: bar.clientWidth,
|
|
117
|
+
paddingStart: toCssInt(style?.paddingInlineStart) || toCssInt(style?.paddingLeft),
|
|
118
|
+
paddingEnd: toCssInt(style?.paddingInlineEnd) || toCssInt(style?.paddingRight)
|
|
119
|
+
}
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
function writeThumb(axis) {
|
|
123
|
+
const viewport = viewportRef.value;
|
|
124
|
+
const bar = axis === "y" ? barYRef.value : barXRef.value;
|
|
125
|
+
const sizes = sizesFor(axis);
|
|
126
|
+
if (!viewport || !bar || !sizes) return;
|
|
127
|
+
const dir = axis === "x" ? textDir.value : "ltr";
|
|
128
|
+
const scrollPos = axis === "y" ? viewport.scrollTop : viewport.scrollLeft;
|
|
129
|
+
bar.style.setProperty("--rs-scrollbar-thumb-size", `${getThumbSize(sizes)}px`);
|
|
130
|
+
bar.style.setProperty("--rs-scrollbar-thumb-offset", `${getThumbOffsetFromScroll(scrollPos, sizes, dir)}px`);
|
|
131
|
+
}
|
|
132
|
+
function syncOverflow() {
|
|
133
|
+
const viewport = viewportRef.value;
|
|
134
|
+
if (!viewport) return;
|
|
135
|
+
overflowY.value = isRsScrollbarOverflow(viewport.offsetHeight, viewport.scrollHeight);
|
|
136
|
+
overflowX.value = isRsScrollbarOverflow(viewport.offsetWidth, viewport.scrollWidth);
|
|
137
|
+
writeThumb("y");
|
|
138
|
+
writeThumb("x");
|
|
139
|
+
}
|
|
140
|
+
function scheduleHide(axis) {
|
|
141
|
+
const delay = Math.max(0, props.scrollHideDelay);
|
|
142
|
+
if (axis === "y") {
|
|
143
|
+
clearTimer(hideYTimer);
|
|
144
|
+
hideYTimer = setTimeout(() => {
|
|
145
|
+
scrollingY.value = false;
|
|
146
|
+
}, delay);
|
|
147
|
+
return;
|
|
148
|
+
}
|
|
149
|
+
clearTimer(hideXTimer);
|
|
150
|
+
hideXTimer = setTimeout(() => {
|
|
151
|
+
scrollingX.value = false;
|
|
152
|
+
}, delay);
|
|
153
|
+
}
|
|
154
|
+
function flushSyncFrame() {
|
|
155
|
+
scrollRaf = 0;
|
|
156
|
+
const fromScroll = pendingScrollFlags;
|
|
157
|
+
pendingScrollFlags = false;
|
|
158
|
+
if (fromScroll) {
|
|
159
|
+
if (showVertical.value) {
|
|
160
|
+
scrollingY.value = true;
|
|
161
|
+
clearTimer(hideYTimer);
|
|
162
|
+
scheduleHide("y");
|
|
163
|
+
}
|
|
164
|
+
if (showHorizontal.value) {
|
|
165
|
+
scrollingX.value = true;
|
|
166
|
+
clearTimer(hideXTimer);
|
|
167
|
+
scheduleHide("x");
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
syncOverflow();
|
|
171
|
+
}
|
|
172
|
+
function scheduleSync(fromScroll = false) {
|
|
173
|
+
if (fromScroll) pendingScrollFlags = true;
|
|
174
|
+
if (scrollRaf) return;
|
|
175
|
+
scrollRaf = scheduleFrame(flushSyncFrame);
|
|
176
|
+
}
|
|
177
|
+
function onViewportScroll() {
|
|
178
|
+
if (!viewportRef.value) return;
|
|
179
|
+
scheduleSync(true);
|
|
180
|
+
}
|
|
181
|
+
function onRootEnter() {
|
|
182
|
+
clearTimer(hoverTimer);
|
|
183
|
+
hovering.value = true;
|
|
184
|
+
}
|
|
185
|
+
function onRootLeave() {
|
|
186
|
+
clearTimer(hoverTimer);
|
|
187
|
+
hoverTimer = setTimeout(() => {
|
|
188
|
+
hovering.value = false;
|
|
189
|
+
}, Math.max(0, props.scrollHideDelay));
|
|
190
|
+
}
|
|
191
|
+
function lockUserSelect() {
|
|
192
|
+
if (typeof document === "undefined" || userSelectLocked) return;
|
|
193
|
+
prevUserSelect = document.body.style.webkitUserSelect;
|
|
194
|
+
document.body.style.webkitUserSelect = "none";
|
|
195
|
+
userSelectLocked = true;
|
|
196
|
+
}
|
|
197
|
+
function unlockUserSelect() {
|
|
198
|
+
if (typeof document === "undefined" || !userSelectLocked) return;
|
|
199
|
+
document.body.style.webkitUserSelect = prevUserSelect;
|
|
200
|
+
prevUserSelect = "";
|
|
201
|
+
userSelectLocked = false;
|
|
202
|
+
}
|
|
203
|
+
function captureBarPointer(bar, pointerId) {
|
|
204
|
+
if (typeof bar.setPointerCapture !== "function") return;
|
|
205
|
+
try {
|
|
206
|
+
bar.setPointerCapture(pointerId);
|
|
207
|
+
} catch {}
|
|
208
|
+
}
|
|
209
|
+
function onBarPointerDown(event, axis) {
|
|
210
|
+
if (event.button !== 0) return;
|
|
211
|
+
const bar = event.currentTarget;
|
|
212
|
+
const viewport = viewportRef.value;
|
|
213
|
+
if (!viewport) return;
|
|
214
|
+
captureBarPointer(bar, event.pointerId);
|
|
215
|
+
interacting.value = true;
|
|
216
|
+
dragging = axis;
|
|
217
|
+
const rect = bar.getBoundingClientRect();
|
|
218
|
+
const pointerPos = axis === "y" ? event.clientY - rect.top : event.clientX - rect.left;
|
|
219
|
+
const thumb = event.target.closest(".rs-scrollbar__thumb");
|
|
220
|
+
if (thumb) {
|
|
221
|
+
const thumbRect = thumb.getBoundingClientRect();
|
|
222
|
+
pointerOffset = axis === "y" ? event.clientY - thumbRect.top : event.clientX - thumbRect.left;
|
|
223
|
+
} else pointerOffset = 0;
|
|
224
|
+
lockUserSelect();
|
|
225
|
+
viewport.style.scrollBehavior = "auto";
|
|
226
|
+
applyPointerScroll(axis, pointerPos);
|
|
227
|
+
}
|
|
228
|
+
function applyPointerScroll(axis, pointerPos) {
|
|
229
|
+
const viewport = viewportRef.value;
|
|
230
|
+
const sizes = sizesFor(axis);
|
|
231
|
+
if (!viewport || !sizes) return;
|
|
232
|
+
const dir = axis === "x" ? textDir.value : "ltr";
|
|
233
|
+
const next = getScrollPositionFromPointer(pointerPos, pointerOffset, sizes, dir);
|
|
234
|
+
if (axis === "y") viewport.scrollTop = next;
|
|
235
|
+
else viewport.scrollLeft = next;
|
|
236
|
+
}
|
|
237
|
+
function onBarPointerMove(event, axis) {
|
|
238
|
+
if (dragging !== axis) return;
|
|
239
|
+
const rect = event.currentTarget.getBoundingClientRect();
|
|
240
|
+
applyPointerScroll(axis, axis === "y" ? event.clientY - rect.top : event.clientX - rect.left);
|
|
241
|
+
}
|
|
242
|
+
function endDrag() {
|
|
243
|
+
unlockUserSelect();
|
|
244
|
+
const viewport = viewportRef.value;
|
|
245
|
+
if (viewport) viewport.style.scrollBehavior = "";
|
|
246
|
+
dragging = null;
|
|
247
|
+
pointerOffset = 0;
|
|
248
|
+
interacting.value = false;
|
|
249
|
+
}
|
|
250
|
+
function onBarWheel(event, axis) {
|
|
251
|
+
const viewport = viewportRef.value;
|
|
252
|
+
if (!viewport) return;
|
|
253
|
+
const max = axis === "y" ? viewport.scrollHeight - viewport.clientHeight : viewport.scrollWidth - viewport.clientWidth;
|
|
254
|
+
if (axis === "y") viewport.scrollTop += event.deltaY;
|
|
255
|
+
else viewport.scrollLeft += event.deltaY;
|
|
256
|
+
if (isScrollingWithinScrollbarBounds(axis === "y" ? viewport.scrollTop : viewport.scrollLeft, max)) event.preventDefault();
|
|
257
|
+
}
|
|
258
|
+
function scrollTop() {
|
|
259
|
+
const el = viewportRef.value;
|
|
260
|
+
if (!el) return;
|
|
261
|
+
if (typeof el.scrollTo === "function") el.scrollTo({ top: 0 });
|
|
262
|
+
else el.scrollTop = 0;
|
|
263
|
+
}
|
|
264
|
+
function scrollTopLeft() {
|
|
265
|
+
const el = viewportRef.value;
|
|
266
|
+
if (!el) return;
|
|
267
|
+
if (typeof el.scrollTo === "function") el.scrollTo({
|
|
268
|
+
top: 0,
|
|
269
|
+
left: 0
|
|
270
|
+
});
|
|
271
|
+
else {
|
|
272
|
+
el.scrollTop = 0;
|
|
273
|
+
el.scrollLeft = 0;
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
function getViewport() {
|
|
277
|
+
return viewportRef.value ?? void 0;
|
|
278
|
+
}
|
|
279
|
+
function bindObservers() {
|
|
280
|
+
if (typeof ResizeObserver !== "function") {
|
|
281
|
+
syncOverflow();
|
|
282
|
+
return;
|
|
283
|
+
}
|
|
284
|
+
observer = new ResizeObserver(() => syncOverflow());
|
|
285
|
+
if (viewportRef.value) observer.observe(viewportRef.value);
|
|
286
|
+
if (contentRef.value) observer.observe(contentRef.value);
|
|
287
|
+
}
|
|
288
|
+
const onBarYWheel = (event) => onBarWheel(event, "y");
|
|
289
|
+
const onBarXWheel = (event) => onBarWheel(event, "x");
|
|
290
|
+
let boundY;
|
|
291
|
+
let boundX;
|
|
292
|
+
function bindBarWheels() {
|
|
293
|
+
unbindBarWheels();
|
|
294
|
+
boundY = barYRef.value ?? void 0;
|
|
295
|
+
boundX = barXRef.value ?? void 0;
|
|
296
|
+
boundY?.addEventListener("wheel", onBarYWheel, { passive: false });
|
|
297
|
+
boundX?.addEventListener("wheel", onBarXWheel, { passive: false });
|
|
298
|
+
}
|
|
299
|
+
function unbindBarWheels() {
|
|
300
|
+
boundY?.removeEventListener("wheel", onBarYWheel);
|
|
301
|
+
boundX?.removeEventListener("wheel", onBarXWheel);
|
|
302
|
+
boundY = void 0;
|
|
303
|
+
boundX = void 0;
|
|
304
|
+
}
|
|
305
|
+
onMounted(() => {
|
|
306
|
+
bindObservers();
|
|
307
|
+
syncOverflow();
|
|
308
|
+
viewportRef.value?.addEventListener("scroll", onViewportScroll, { passive: true });
|
|
309
|
+
bindBarWheels();
|
|
310
|
+
});
|
|
311
|
+
onUpdated(() => {
|
|
312
|
+
scheduleSync(false);
|
|
313
|
+
});
|
|
314
|
+
onBeforeUnmount(() => {
|
|
315
|
+
viewportRef.value?.removeEventListener("scroll", onViewportScroll);
|
|
316
|
+
unbindBarWheels();
|
|
317
|
+
observer?.disconnect();
|
|
318
|
+
observer = void 0;
|
|
319
|
+
if (scrollRaf) cancelFrame(scrollRaf);
|
|
320
|
+
scrollRaf = 0;
|
|
321
|
+
pendingScrollFlags = false;
|
|
322
|
+
clearTimer(hideYTimer);
|
|
323
|
+
clearTimer(hideXTimer);
|
|
324
|
+
clearTimer(hoverTimer);
|
|
325
|
+
endDrag();
|
|
326
|
+
});
|
|
327
|
+
watch(() => [
|
|
328
|
+
props.orientation,
|
|
329
|
+
props.type,
|
|
330
|
+
props.height,
|
|
331
|
+
props.maxHeight,
|
|
332
|
+
props.minHeight
|
|
333
|
+
], async () => {
|
|
334
|
+
unbindBarWheels();
|
|
335
|
+
await nextTick();
|
|
336
|
+
bindBarWheels();
|
|
337
|
+
syncOverflow();
|
|
28
338
|
});
|
|
29
|
-
const showVertical = computed(() => props.orientation === "vertical" || props.orientation === "both");
|
|
30
|
-
const showHorizontal = computed(() => props.orientation === "horizontal" || props.orientation === "both");
|
|
31
339
|
__expose({
|
|
32
|
-
scrollTop
|
|
33
|
-
scrollTopLeft
|
|
34
|
-
getViewport
|
|
340
|
+
scrollTop,
|
|
341
|
+
scrollTopLeft,
|
|
342
|
+
getViewport
|
|
35
343
|
});
|
|
36
344
|
return (_ctx, _cache) => {
|
|
37
|
-
return openBlock(),
|
|
345
|
+
return openBlock(), createElementBlock("div", {
|
|
38
346
|
ref_key: "rootRef",
|
|
39
347
|
ref: rootRef,
|
|
40
348
|
class: "rs-scrollbar",
|
|
41
|
-
type: __props.type,
|
|
42
|
-
"
|
|
43
|
-
style: normalizeStyle(rootStyle.value)
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
"
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
349
|
+
"data-type": __props.type,
|
|
350
|
+
"data-orientation": __props.orientation,
|
|
351
|
+
style: normalizeStyle(rootStyle.value),
|
|
352
|
+
onPointerenter: onRootEnter,
|
|
353
|
+
onPointerleave: onRootLeave
|
|
354
|
+
}, [
|
|
355
|
+
createElementVNode("section", {
|
|
356
|
+
ref_key: "viewportRef",
|
|
357
|
+
ref: viewportRef,
|
|
358
|
+
class: "rs-scrollbar__viewport",
|
|
359
|
+
"aria-label": viewportLabel.value,
|
|
360
|
+
style: normalizeStyle(viewportStyle.value)
|
|
361
|
+
}, [createElementVNode("div", {
|
|
362
|
+
ref_key: "contentRef",
|
|
363
|
+
ref: contentRef,
|
|
364
|
+
class: "rs-scrollbar__content",
|
|
365
|
+
style: normalizeStyle(contentStyle.value)
|
|
366
|
+
}, [renderSlot(_ctx.$slots, "default", {}, void 0, true)], 4)], 12, _hoisted_2),
|
|
367
|
+
showVertical.value ? (openBlock(), createElementBlock("div", {
|
|
368
|
+
key: 0,
|
|
369
|
+
ref_key: "barYRef",
|
|
370
|
+
ref: barYRef,
|
|
371
|
+
class: "rs-scrollbar__bar rs-scrollbar__bar--vertical",
|
|
372
|
+
"data-orientation": "vertical",
|
|
373
|
+
"aria-hidden": "true",
|
|
374
|
+
"data-state": barYVisible.value ? "visible" : "hidden",
|
|
375
|
+
onPointerdown: _cache[0] || (_cache[0] = ($event) => onBarPointerDown($event, "y")),
|
|
376
|
+
onPointermove: _cache[1] || (_cache[1] = ($event) => onBarPointerMove($event, "y")),
|
|
377
|
+
onPointerup: endDrag,
|
|
378
|
+
onPointercancel: endDrag,
|
|
379
|
+
onLostpointercapture: endDrag
|
|
380
|
+
}, [..._cache[4] || (_cache[4] = [createElementVNode("div", { class: "rs-scrollbar__thumb" }, null, -1)])], 40, _hoisted_3)) : createCommentVNode("", true),
|
|
381
|
+
showHorizontal.value ? (openBlock(), createElementBlock("div", {
|
|
382
|
+
key: 1,
|
|
383
|
+
ref_key: "barXRef",
|
|
384
|
+
ref: barXRef,
|
|
385
|
+
class: "rs-scrollbar__bar rs-scrollbar__bar--horizontal",
|
|
386
|
+
"data-orientation": "horizontal",
|
|
387
|
+
"aria-hidden": "true",
|
|
388
|
+
"data-state": barXVisible.value ? "visible" : "hidden",
|
|
389
|
+
onPointerdown: _cache[2] || (_cache[2] = ($event) => onBarPointerDown($event, "x")),
|
|
390
|
+
onPointermove: _cache[3] || (_cache[3] = ($event) => onBarPointerMove($event, "x")),
|
|
391
|
+
onPointerup: endDrag,
|
|
392
|
+
onPointercancel: endDrag,
|
|
393
|
+
onLostpointercapture: endDrag
|
|
394
|
+
}, [..._cache[5] || (_cache[5] = [createElementVNode("div", { class: "rs-scrollbar__thumb" }, null, -1)])], 40, _hoisted_4)) : createCommentVNode("", true),
|
|
395
|
+
showVertical.value && showHorizontal.value ? (openBlock(), createElementBlock("div", {
|
|
396
|
+
key: 2,
|
|
397
|
+
class: "rs-scrollbar__corner",
|
|
398
|
+
"aria-hidden": "true",
|
|
399
|
+
"data-state": showCorner.value ? "visible" : "hidden"
|
|
400
|
+
}, null, 8, _hoisted_5)) : createCommentVNode("", true)
|
|
401
|
+
], 44, _hoisted_1);
|
|
77
402
|
};
|
|
78
403
|
}
|
|
79
404
|
});
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import './RsScrollbar.css'
|
|
2
|
+
import _plugin_vue_export_helper_default from "../../../_virtual/_plugin-vue_export-helper.js";
|
|
2
3
|
import RsScrollbar_vue_vue_type_script_setup_true_lang_default from "./RsScrollbar.impl.js";
|
|
3
4
|
|
|
4
5
|
//#region src/components/scrollbar/src/RsScrollbar.vue
|
|
5
|
-
var RsScrollbar_default = RsScrollbar_vue_vue_type_script_setup_true_lang_default;
|
|
6
|
+
var RsScrollbar_default = /*#__PURE__*/ _plugin_vue_export_helper_default(RsScrollbar_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-507ffbba"]]);
|
|
6
7
|
//#endregion
|
|
7
8
|
export { RsScrollbar_default as default };
|
|
@@ -1,3 +1,35 @@
|
|
|
1
|
-
export
|
|
2
|
-
export type
|
|
1
|
+
export declare const RS_SCROLLBAR_TYPES: readonly ["auto", "always", "scroll", "hover"];
|
|
2
|
+
export type RsScrollbarType = (typeof RS_SCROLLBAR_TYPES)[number];
|
|
3
|
+
export declare const RS_SCROLLBAR_ORIENTATIONS: readonly ["vertical", "horizontal", "both"];
|
|
4
|
+
export type RsScrollbarOrientation = (typeof RS_SCROLLBAR_ORIENTATIONS)[number];
|
|
5
|
+
export type RsScrollbarAxis = 'x' | 'y';
|
|
6
|
+
export interface RsScrollbarSizes {
|
|
7
|
+
content: number;
|
|
8
|
+
viewport: number;
|
|
9
|
+
scrollbar: {
|
|
10
|
+
size: number;
|
|
11
|
+
paddingStart: number;
|
|
12
|
+
paddingEnd: number;
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
export declare function isRsScrollbarType(value: unknown): value is RsScrollbarType;
|
|
16
|
+
export declare function isRsScrollbarOrientation(value: unknown): value is RsScrollbarOrientation;
|
|
17
|
+
export declare function resolveRsScrollbarType(type?: RsScrollbarType | null): RsScrollbarType;
|
|
18
|
+
export declare function resolveRsScrollbarOrientation(orientation?: RsScrollbarOrientation | null): RsScrollbarOrientation;
|
|
3
19
|
export declare function resolveScrollbarSize(size: number | string | undefined): string | undefined;
|
|
20
|
+
export declare function showsRsScrollbarAxis(orientation: RsScrollbarOrientation | undefined, axis: RsScrollbarAxis): boolean;
|
|
21
|
+
export declare function isRsScrollbarOverflow(viewport: number, content: number): boolean;
|
|
22
|
+
export declare function isRsScrollbarBarVisible(input: {
|
|
23
|
+
type: RsScrollbarType;
|
|
24
|
+
overflowing: boolean;
|
|
25
|
+
hovering: boolean;
|
|
26
|
+
scrolling: boolean;
|
|
27
|
+
interacting?: boolean;
|
|
28
|
+
}): boolean;
|
|
29
|
+
export declare function getThumbRatio(viewportSize: number, contentSize: number): number;
|
|
30
|
+
export declare function getThumbSize(sizes: RsScrollbarSizes): number;
|
|
31
|
+
export declare function clampRsNumber(value: number, min: number, max: number): number;
|
|
32
|
+
export declare function getThumbOffsetFromScroll(scrollPos: number, sizes: RsScrollbarSizes, dir?: 'ltr' | 'rtl'): number;
|
|
33
|
+
export declare function getScrollPositionFromPointer(pointerPos: number, pointerOffset: number, sizes: RsScrollbarSizes, dir?: 'ltr' | 'rtl'): number;
|
|
34
|
+
export declare function toCssInt(value?: string): number;
|
|
35
|
+
export declare function isScrollingWithinScrollbarBounds(scrollPos: number, maxScrollPos: number): boolean;
|
|
@@ -1,7 +1,70 @@
|
|
|
1
1
|
//#region src/components/scrollbar/src/scrollbar-utils.ts
|
|
2
|
+
var MIN_THUMB_PX = 18;
|
|
2
3
|
function resolveScrollbarSize(size) {
|
|
3
4
|
if (size === void 0) return;
|
|
4
5
|
return typeof size === "number" ? `${size}px` : size;
|
|
5
6
|
}
|
|
7
|
+
function showsRsScrollbarAxis(orientation, axis) {
|
|
8
|
+
if (orientation === "both") return true;
|
|
9
|
+
return axis === "y" ? orientation === "vertical" : orientation === "horizontal";
|
|
10
|
+
}
|
|
11
|
+
function isRsScrollbarOverflow(viewport, content) {
|
|
12
|
+
return content > viewport + 1;
|
|
13
|
+
}
|
|
14
|
+
function isRsScrollbarBarVisible(input) {
|
|
15
|
+
if (input.type === "always") return true;
|
|
16
|
+
if (!input.overflowing) return false;
|
|
17
|
+
if (input.type === "auto") return true;
|
|
18
|
+
if (input.type === "hover") return input.hovering;
|
|
19
|
+
return input.scrolling || Boolean(input.interacting);
|
|
20
|
+
}
|
|
21
|
+
function getThumbRatio(viewportSize, contentSize) {
|
|
22
|
+
if (contentSize <= 0) return 0;
|
|
23
|
+
const ratio = viewportSize / contentSize;
|
|
24
|
+
return Number.isFinite(ratio) ? ratio : 0;
|
|
25
|
+
}
|
|
26
|
+
function getThumbSize(sizes) {
|
|
27
|
+
const ratio = getThumbRatio(sizes.viewport, sizes.content);
|
|
28
|
+
const padding = sizes.scrollbar.paddingStart + sizes.scrollbar.paddingEnd;
|
|
29
|
+
const thumbSize = (sizes.scrollbar.size - padding) * ratio;
|
|
30
|
+
return Math.max(thumbSize, MIN_THUMB_PX);
|
|
31
|
+
}
|
|
32
|
+
function clampRsNumber(value, min, max) {
|
|
33
|
+
return Math.min(max, Math.max(min, value));
|
|
34
|
+
}
|
|
35
|
+
function linearScale(input, output) {
|
|
36
|
+
return (value) => {
|
|
37
|
+
if (input[0] === input[1] || output[0] === output[1]) return output[0];
|
|
38
|
+
const ratio = (output[1] - output[0]) / (input[1] - input[0]);
|
|
39
|
+
return output[0] + ratio * (value - input[0]);
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
function getThumbOffsetFromScroll(scrollPos, sizes, dir = "ltr") {
|
|
43
|
+
const thumbSizePx = getThumbSize(sizes);
|
|
44
|
+
const padding = sizes.scrollbar.paddingStart + sizes.scrollbar.paddingEnd;
|
|
45
|
+
const track = sizes.scrollbar.size - padding;
|
|
46
|
+
const maxScrollPos = sizes.content - sizes.viewport;
|
|
47
|
+
const maxThumbPos = track - thumbSizePx;
|
|
48
|
+
if (maxScrollPos <= 0 || maxThumbPos <= 0) return 0;
|
|
49
|
+
const range = dir === "ltr" ? [0, maxScrollPos] : [maxScrollPos * -1, 0];
|
|
50
|
+
return linearScale([0, maxScrollPos], [0, maxThumbPos])(clampRsNumber(scrollPos, range[0], range[1]));
|
|
51
|
+
}
|
|
52
|
+
function getScrollPositionFromPointer(pointerPos, pointerOffset, sizes, dir = "ltr") {
|
|
53
|
+
const thumbSizePx = getThumbSize(sizes);
|
|
54
|
+
const thumbCenter = thumbSizePx / 2;
|
|
55
|
+
const offset = pointerOffset || thumbCenter;
|
|
56
|
+
const thumbOffsetFromEnd = thumbSizePx - offset;
|
|
57
|
+
const minPointerPos = sizes.scrollbar.paddingStart + offset;
|
|
58
|
+
const maxPointerPos = sizes.scrollbar.size - sizes.scrollbar.paddingEnd - thumbOffsetFromEnd;
|
|
59
|
+
const maxScrollPos = sizes.content - sizes.viewport;
|
|
60
|
+
const scrollRange = dir === "ltr" ? [0, maxScrollPos] : [maxScrollPos * -1, 0];
|
|
61
|
+
return linearScale([minPointerPos, maxPointerPos], scrollRange)(pointerPos);
|
|
62
|
+
}
|
|
63
|
+
function toCssInt(value) {
|
|
64
|
+
return value ? Number.parseInt(value, 10) || 0 : 0;
|
|
65
|
+
}
|
|
66
|
+
function isScrollingWithinScrollbarBounds(scrollPos, maxScrollPos) {
|
|
67
|
+
return scrollPos > 0 && scrollPos < maxScrollPos;
|
|
68
|
+
}
|
|
6
69
|
//#endregion
|
|
7
|
-
export { resolveScrollbarSize };
|
|
70
|
+
export { clampRsNumber, getScrollPositionFromPointer, getThumbOffsetFromScroll, getThumbRatio, getThumbSize, isRsScrollbarBarVisible, isRsScrollbarOverflow, isScrollingWithinScrollbarBounds, resolveScrollbarSize, showsRsScrollbarAxis, toCssInt };
|
|
@@ -1,3 +1,4 @@
|
|
|
1
1
|
export { default as RsSelect } from './src/RsSelect.js';
|
|
2
|
+
export type { RsSelectExpose, RsSelectInstance } from './src/RsSelect.js';
|
|
2
3
|
export type { RsSelectFieldNames, RsSelectFilterOption, RsSelectFilterSort, RsSelectGetPopupContainer, RsSelectLabeledValue, RsSelectModelValue, RsSelectResolvedModel, RsSelectOption, RsSelectOptionFilterProp, RsSelectOptionGroup, RsSelectOptionInput, RsSelectOptions, RsSelectOptionsInput, RsSelectPlacement, RsSelectStatus, RsSelectMaxTagCount, RsSelectVariant, RsSelectValue, } from './src/select-utils';
|
|
3
4
|
export { RS_SELECT_EMPTY_VALUE, fromComboboxValue, isSelectLabeledValue, normalizeSelectOptions, optionDisplayLabel, packSelectModel, restoreSelectValue, toComboboxValue, unwrapSelectEntry, } from './src/select-utils';
|