niuma-ui 2.0.2 → 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 +61 -0
- package/README.md +2 -0
- package/README.zh-CN.md +2 -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/badge/index.d.ts +1 -0
- package/dist/components/badge/src/RsBadge.css +61 -8
- package/dist/components/badge/src/RsBadge.d.ts +19 -3
- package/dist/components/badge/src/RsBadge.impl.js +46 -3
- package/dist/components/badge/src/RsBadge.js +1 -1
- package/dist/components/badge/src/badge-utils.d.ts +11 -0
- package/dist/components/badge/src/badge-utils.js +32 -0
- 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/button/src/RsButton.css +87 -71
- package/dist/components/button/src/RsButton.d.ts +7 -3
- package/dist/components/button/src/RsButton.impl.js +43 -31
- package/dist/components/button/src/RsButton.js +1 -1
- package/dist/components/button/src/button-utils.d.ts +17 -0
- package/dist/components/button/src/button-utils.js +14 -1
- 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 +14 -2
- 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/divider/index.d.ts +1 -0
- package/dist/components/divider/src/RsDivider.css +37 -22
- package/dist/components/divider/src/RsDivider.d.ts +4 -2
- package/dist/components/divider/src/RsDivider.impl.js +26 -12
- package/dist/components/divider/src/RsDivider.js +1 -1
- package/dist/components/divider/src/divider-utils.d.ts +4 -0
- 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 +59 -18
- 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/icon/src/RsIcon.css +9 -4
- package/dist/components/icon/src/RsIcon.d.ts +4 -3
- package/dist/components/icon/src/RsIcon.impl.js +9 -32
- package/dist/components/icon/src/RsIcon.js +1 -1
- package/dist/components/icon/src/icon-utils.d.ts +17 -0
- package/dist/components/icon/src/icon-utils.js +39 -0
- 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/index.d.ts +1 -0
- package/dist/components/link/src/RsLink.css +58 -17
- package/dist/components/link/src/RsLink.d.ts +12 -4
- package/dist/components/link/src/RsLink.impl.js +26 -25
- package/dist/components/link/src/RsLink.js +2 -1
- package/dist/components/link/src/link-utils.d.ts +9 -0
- package/dist/components/link/src/link-utils.js +15 -0
- package/dist/components/loading/src/RsLoading.d.ts +2 -2
- 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/tag/index.d.ts +1 -1
- package/dist/components/tag/src/RsTag.css +42 -38
- package/dist/components/tag/src/RsTag.d.ts +3 -2
- package/dist/components/tag/src/RsTag.impl.js +18 -9
- package/dist/components/tag/src/RsTag.js +1 -1
- package/dist/components/tag/src/tag-utils.d.ts +8 -0
- package/dist/components/terminal/src/RsTerminal.d.ts +1 -1
- 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 +24 -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 +9 -8
- 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,12 +1,13 @@
|
|
|
1
|
+
import { RS_COMPONENT_SIZE_ICON_PX } from "../../../theme/types.js";
|
|
1
2
|
import { useRsI18n } from "../../../composables/useRsI18n.js";
|
|
2
|
-
import RsIcon_default from "../../icon/src/RsIcon.js";
|
|
3
3
|
import { useResolvedRsComponentSize } from "../../_shared/src/resolve-size.js";
|
|
4
4
|
import { rsRadiusCss, useResolvedRsRadius } from "../../_shared/src/resolve-radius.js";
|
|
5
|
-
import
|
|
5
|
+
import RsButton_default from "../../button/src/RsButton.js";
|
|
6
|
+
import { computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, defineComponent, normalizeClass, normalizeStyle, openBlock, renderSlot, unref } from "vue";
|
|
6
7
|
//#region src/components/tag/src/RsTag.vue?vue&type=script&setup=true&lang.ts
|
|
7
8
|
var _hoisted_1 = { class: "rs-tag__content" };
|
|
8
|
-
var _hoisted_2 = ["disabled", "aria-label"];
|
|
9
9
|
var RsTag_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
|
|
10
|
+
name: "RsTag",
|
|
10
11
|
__name: "RsTag",
|
|
11
12
|
props: {
|
|
12
13
|
variant: { default: "default" },
|
|
@@ -32,6 +33,7 @@ var RsTag_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComp
|
|
|
32
33
|
const { t } = useRsI18n();
|
|
33
34
|
const resolvedSize = useResolvedRsComponentSize(() => props.size);
|
|
34
35
|
const resolvedRadius = useResolvedRsRadius(() => props.round ? "full" : props.radius, "sm");
|
|
36
|
+
const closeIconSize = RS_COMPONENT_SIZE_ICON_PX.ssm;
|
|
35
37
|
const rootClass = computed(() => [
|
|
36
38
|
"rs-tag",
|
|
37
39
|
`rs-tag--${props.variant}`,
|
|
@@ -52,17 +54,24 @@ var RsTag_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComp
|
|
|
52
54
|
return openBlock(), createElementBlock("span", {
|
|
53
55
|
class: normalizeClass(rootClass.value),
|
|
54
56
|
style: normalizeStyle(rootStyle.value)
|
|
55
|
-
}, [createElementVNode("span", _hoisted_1, [renderSlot(_ctx.$slots, "default", {}, void 0, true)]), __props.closable ? (openBlock(),
|
|
57
|
+
}, [createElementVNode("span", _hoisted_1, [renderSlot(_ctx.$slots, "default", {}, void 0, true)]), __props.closable ? (openBlock(), createBlock(RsButton_default, {
|
|
56
58
|
key: 0,
|
|
57
|
-
type: "button",
|
|
58
59
|
class: "rs-tag__close",
|
|
60
|
+
variant: "text",
|
|
61
|
+
bordered: false,
|
|
62
|
+
size: "ssm",
|
|
63
|
+
radius: "full",
|
|
64
|
+
icon: "x",
|
|
65
|
+
"icon-size": unref(closeIconSize),
|
|
66
|
+
"icon-only": "",
|
|
59
67
|
disabled: __props.disabled,
|
|
60
68
|
"aria-label": unref(t)("tag.close"),
|
|
61
69
|
onClick: onClose
|
|
62
|
-
},
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
70
|
+
}, null, 8, [
|
|
71
|
+
"icon-size",
|
|
72
|
+
"disabled",
|
|
73
|
+
"aria-label"
|
|
74
|
+
])) : createCommentVNode("", true)], 6);
|
|
66
75
|
};
|
|
67
76
|
}
|
|
68
77
|
});
|
|
@@ -3,6 +3,6 @@ import _plugin_vue_export_helper_default from "../../../_virtual/_plugin-vue_exp
|
|
|
3
3
|
import RsTag_vue_vue_type_script_setup_true_lang_default from "./RsTag.impl.js";
|
|
4
4
|
|
|
5
5
|
//#region src/components/tag/src/RsTag.vue
|
|
6
|
-
var RsTag_default = /*#__PURE__*/ _plugin_vue_export_helper_default(RsTag_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-
|
|
6
|
+
var RsTag_default = /*#__PURE__*/ _plugin_vue_export_helper_default(RsTag_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-d8327085"]]);
|
|
7
7
|
//#endregion
|
|
8
8
|
export { RsTag_default as default };
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* RsTag 语义色。只有色相、没有形态轴,不另开 tone。
|
|
3
|
+
* 可增删的一组标签请用 RsDynamicTags。
|
|
4
|
+
*/
|
|
5
|
+
export declare const RS_TAG_VARIANTS: readonly ["default", "primary", "success", "warning", "danger", "info"];
|
|
6
|
+
export type RsTagVariant = (typeof RS_TAG_VARIANTS)[number];
|
|
7
|
+
export declare function isRsTagVariant(value: unknown): value is RsTagVariant;
|
|
8
|
+
export declare function resolveRsTagVariant(variant?: RsTagVariant | null): RsTagVariant;
|
|
@@ -87,8 +87,8 @@ declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, RsTerminalE
|
|
|
87
87
|
onExtraSelect?: ((key: string) => any) | undefined;
|
|
88
88
|
}>, {
|
|
89
89
|
theme: Partial<ITheme>;
|
|
90
|
-
loading: boolean;
|
|
91
90
|
overlay: string;
|
|
91
|
+
loading: boolean;
|
|
92
92
|
contextMenu: boolean;
|
|
93
93
|
shortcuts: boolean;
|
|
94
94
|
inputEnabled: boolean;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
|
|
2
|
-
.rs-textarea[data-v-
|
|
2
|
+
.rs-textarea[data-v-4aaa8fd4] {
|
|
3
3
|
width: 100%;
|
|
4
4
|
}
|
|
5
|
-
.rs-textarea__shell[data-v-
|
|
5
|
+
.rs-textarea__shell[data-v-4aaa8fd4] {
|
|
6
6
|
position: relative;
|
|
7
7
|
box-sizing: border-box;
|
|
8
8
|
width: 100%;
|
|
@@ -14,32 +14,32 @@
|
|
|
14
14
|
border-color var(--rs-transition-fast),
|
|
15
15
|
box-shadow var(--rs-transition-fast);
|
|
16
16
|
}
|
|
17
|
-
.rs-textarea__shell[data-v-
|
|
17
|
+
.rs-textarea__shell[data-v-4aaa8fd4]:hover:not(.is-disabled):not(.is-readonly):not(:focus-within) {
|
|
18
18
|
border-color: var(--rs-input-border-hover, var(--rs-border));
|
|
19
19
|
}
|
|
20
|
-
.rs-textarea__shell[data-v-
|
|
20
|
+
.rs-textarea__shell[data-v-4aaa8fd4]:focus-within {
|
|
21
21
|
border-color: var(--rs-focus-border, var(--rs-primary));
|
|
22
22
|
box-shadow:
|
|
23
23
|
var(--rs-input-shadow, none),
|
|
24
24
|
0 0 0 var(--rs-focus-ring-width, 2px) var(--rs-focus-ring);
|
|
25
25
|
}
|
|
26
|
-
.rs-textarea__shell.is-invalid[data-v-
|
|
26
|
+
.rs-textarea__shell.is-invalid[data-v-4aaa8fd4] {
|
|
27
27
|
border-color: var(--rs-danger);
|
|
28
28
|
}
|
|
29
|
-
.rs-textarea__shell.is-invalid[data-v-
|
|
29
|
+
.rs-textarea__shell.is-invalid[data-v-4aaa8fd4]:focus-within {
|
|
30
30
|
box-shadow:
|
|
31
31
|
var(--rs-input-shadow, none),
|
|
32
32
|
0 0 0 var(--rs-focus-ring-width, 2px) color-mix(in srgb, var(--rs-danger) 14%, transparent);
|
|
33
33
|
}
|
|
34
|
-
.rs-textarea__shell.is-disabled[data-v-
|
|
34
|
+
.rs-textarea__shell.is-disabled[data-v-4aaa8fd4] {
|
|
35
35
|
opacity: 0.38;
|
|
36
36
|
cursor: not-allowed;
|
|
37
37
|
background: var(--rs-surface-hover);
|
|
38
38
|
}
|
|
39
|
-
.rs-textarea__shell.is-readonly[data-v-
|
|
39
|
+
.rs-textarea__shell.is-readonly[data-v-4aaa8fd4] {
|
|
40
40
|
background: var(--rs-surface-hover);
|
|
41
41
|
}
|
|
42
|
-
.rs-textarea__control[data-v-
|
|
42
|
+
.rs-textarea__control[data-v-4aaa8fd4] {
|
|
43
43
|
display: block;
|
|
44
44
|
box-sizing: border-box;
|
|
45
45
|
width: 100%;
|
|
@@ -53,37 +53,37 @@
|
|
|
53
53
|
font-size: var(--rs-font-size-sm);
|
|
54
54
|
line-height: 1.5;
|
|
55
55
|
}
|
|
56
|
-
.rs-textarea__shell.is-autosize .rs-textarea__control[data-v-
|
|
56
|
+
.rs-textarea__shell.is-autosize .rs-textarea__control[data-v-4aaa8fd4] {
|
|
57
57
|
min-height: 0;
|
|
58
58
|
}
|
|
59
|
-
.rs-textarea__shell.has-count .rs-textarea__control[data-v-
|
|
59
|
+
.rs-textarea__shell.has-count .rs-textarea__control[data-v-4aaa8fd4] {
|
|
60
60
|
padding-bottom: 1.55rem;
|
|
61
61
|
}
|
|
62
|
-
.rs-textarea__shell.has-clear .rs-textarea__control[data-v-
|
|
62
|
+
.rs-textarea__shell.has-clear .rs-textarea__control[data-v-4aaa8fd4] {
|
|
63
63
|
padding-inline-end: 1.85rem;
|
|
64
64
|
}
|
|
65
|
-
.rs-input-field--sm .rs-textarea__control[data-v-
|
|
65
|
+
.rs-input-field--sm .rs-textarea__control[data-v-4aaa8fd4] {
|
|
66
66
|
min-height: 3.5rem;
|
|
67
67
|
padding: 0.4rem 0.6rem;
|
|
68
68
|
font-size: var(--rs-font-size-xs);
|
|
69
69
|
}
|
|
70
|
-
.rs-input-field--sm .rs-textarea__shell.has-count .rs-textarea__control[data-v-
|
|
70
|
+
.rs-input-field--sm .rs-textarea__shell.has-count .rs-textarea__control[data-v-4aaa8fd4] {
|
|
71
71
|
padding-bottom: 1.4rem;
|
|
72
72
|
}
|
|
73
|
-
.rs-input-field--lg .rs-textarea__control[data-v-
|
|
73
|
+
.rs-input-field--lg .rs-textarea__control[data-v-4aaa8fd4] {
|
|
74
74
|
min-height: 5.5rem;
|
|
75
75
|
padding: 0.7rem 0.9rem;
|
|
76
76
|
}
|
|
77
|
-
.rs-textarea__control[data-v-
|
|
77
|
+
.rs-textarea__control[data-v-4aaa8fd4]::placeholder {
|
|
78
78
|
color: var(--rs-placeholder);
|
|
79
79
|
}
|
|
80
|
-
.rs-textarea__control[data-v-
|
|
80
|
+
.rs-textarea__control[data-v-4aaa8fd4]:disabled {
|
|
81
81
|
cursor: not-allowed;
|
|
82
82
|
}
|
|
83
|
-
.rs-textarea__control[data-v-
|
|
83
|
+
.rs-textarea__control[data-v-4aaa8fd4]:read-only {
|
|
84
84
|
cursor: default;
|
|
85
85
|
}
|
|
86
|
-
.rs-textarea__clear[data-v-
|
|
86
|
+
.rs-textarea__clear[data-v-4aaa8fd4] {
|
|
87
87
|
position: absolute;
|
|
88
88
|
top: 0.45rem;
|
|
89
89
|
inset-inline-end: 0.45rem;
|
|
@@ -102,11 +102,11 @@
|
|
|
102
102
|
color var(--rs-transition-fast),
|
|
103
103
|
background var(--rs-transition-fast);
|
|
104
104
|
}
|
|
105
|
-
.rs-textarea__clear[data-v-
|
|
105
|
+
.rs-textarea__clear[data-v-4aaa8fd4]:hover {
|
|
106
106
|
color: var(--rs-text);
|
|
107
107
|
background: var(--rs-item-hover);
|
|
108
108
|
}
|
|
109
|
-
.rs-textarea__count[data-v-
|
|
109
|
+
.rs-textarea__count[data-v-4aaa8fd4] {
|
|
110
110
|
position: absolute;
|
|
111
111
|
inset-inline-end: 0.65rem;
|
|
112
112
|
bottom: 0.3rem;
|
|
@@ -117,10 +117,10 @@
|
|
|
117
117
|
line-height: 1;
|
|
118
118
|
color: var(--rs-muted);
|
|
119
119
|
}
|
|
120
|
-
.rs-textarea__count.is-limit[data-v-
|
|
120
|
+
.rs-textarea__count.is-limit[data-v-4aaa8fd4] {
|
|
121
121
|
color: var(--rs-danger);
|
|
122
122
|
}
|
|
123
|
-
.rs-field--label-left .rs-textarea[data-v-
|
|
123
|
+
.rs-field--label-left .rs-textarea[data-v-4aaa8fd4] {
|
|
124
124
|
grid-column: 2;
|
|
125
125
|
min-width: 0;
|
|
126
126
|
}
|
|
@@ -1,17 +1,8 @@
|
|
|
1
1
|
import type { RsComponentSize, RsRadius } from '../../../theme/types';
|
|
2
|
+
import type { RsInputRule, RsInputValidateTrigger } from '../../input/src/input-rules';
|
|
2
3
|
import { type RsFormLabelPosition } from '../../form/src/form-utils';
|
|
3
4
|
import { type RsFormRuleTrigger } from '../../form/src/form-rules';
|
|
4
|
-
import type
|
|
5
|
-
/** 原生 resize;autosize 开启时强制 none,与 Element Plus 一致。 */
|
|
6
|
-
export type RsTextareaResize = 'none' | 'horizontal' | 'vertical' | 'both';
|
|
7
|
-
/**
|
|
8
|
-
* 自适应高度。true 从 rows 起往下长;对象可锁 minRows / maxRows。
|
|
9
|
-
* 对齐 Ant Design autoSize、Element Plus autosize。
|
|
10
|
-
*/
|
|
11
|
-
export type RsTextareaAutosize = boolean | {
|
|
12
|
-
minRows?: number;
|
|
13
|
-
maxRows?: number;
|
|
14
|
-
};
|
|
5
|
+
import { type RsTextareaAutosize, type RsTextareaResize } from './textarea-utils';
|
|
15
6
|
/**
|
|
16
7
|
* RsTextarea 模板 ref 请用此类型。
|
|
17
8
|
* 不要写 InstanceType<typeof RsTextarea>:组件实例类型过深,vue-tsc 会报 Excessive stack depth。
|
|
@@ -28,6 +19,7 @@ export interface RsTextareaExpose {
|
|
|
28
19
|
export type RsTextareaInstance = RsTextareaExpose & {
|
|
29
20
|
$el: HTMLElement;
|
|
30
21
|
};
|
|
22
|
+
export type { RsTextareaAutosize, RsTextareaResize };
|
|
31
23
|
type __VLS_Props = {
|
|
32
24
|
id?: string;
|
|
33
25
|
placeholder?: string;
|
|
@@ -64,7 +56,9 @@ declare var __VLS_6: {
|
|
|
64
56
|
count: number;
|
|
65
57
|
maxlength: number | undefined;
|
|
66
58
|
}, __VLS_8: {
|
|
59
|
+
name: string | undefined;
|
|
67
60
|
message: string;
|
|
61
|
+
value: string;
|
|
68
62
|
};
|
|
69
63
|
type __VLS_Slots = {} & {
|
|
70
64
|
count?: (props: typeof __VLS_6) => any;
|
|
@@ -92,9 +86,9 @@ declare const __VLS_base: import("vue").DefineComponent<__VLS_PublicProps, RsTex
|
|
|
92
86
|
}) => any) | undefined;
|
|
93
87
|
onPressEnter?: ((event: KeyboardEvent) => any) | undefined;
|
|
94
88
|
}>, {
|
|
89
|
+
required: boolean;
|
|
95
90
|
invalid: boolean;
|
|
96
91
|
resize: RsTextareaResize;
|
|
97
|
-
required: boolean;
|
|
98
92
|
disabled: boolean;
|
|
99
93
|
readonly: boolean;
|
|
100
94
|
validateTrigger: RsInputValidateTrigger;
|
|
@@ -4,7 +4,10 @@ import { buildLocalInputRules, runFormFieldRules } from "../../form/src/form-rul
|
|
|
4
4
|
import { isRsFormItemBoundControl, useRsFormContext, useRsFormField, useRsFormItemContext } from "../../form/src/form-utils.js";
|
|
5
5
|
import { useResolvedRsComponentSize } from "../../_shared/src/resolve-size.js";
|
|
6
6
|
import { rsRadiusCss, useResolvedRsRadius } from "../../_shared/src/resolve-radius.js";
|
|
7
|
-
import {
|
|
7
|
+
import { normalizeRsInputValue } from "../../input/src/input-utils.js";
|
|
8
|
+
import RsVNodeHost_default from "../../vnode-host/src/RsVNodeHost.js";
|
|
9
|
+
import { applyTextareaAutosize, isRsTextareaAutosizeEnabled, resolveRsTextareaAutosizeSpec, resolveRsTextareaDisplayRows, resolveRsTextareaResize } from "./textarea-utils.js";
|
|
10
|
+
import { Fragment, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createTextVNode, createVNode, defineComponent, guardReactiveProps, mergeModels, mergeProps, nextTick, normalizeClass, normalizeProps, normalizeStyle, onMounted, openBlock, ref, renderSlot, toDisplayString, unref, useAttrs, useId, useModel, watch, withModifiers } from "vue";
|
|
8
11
|
//#region src/components/textarea/src/RsTextarea.vue?vue&type=script&setup=true&lang.ts
|
|
9
12
|
var _hoisted_1 = {
|
|
10
13
|
key: 0,
|
|
@@ -36,6 +39,7 @@ var _hoisted_8 = {
|
|
|
36
39
|
class: "rs-field__hint"
|
|
37
40
|
};
|
|
38
41
|
var RsTextarea_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
|
|
42
|
+
name: "RsTextarea",
|
|
39
43
|
inheritAttrs: false,
|
|
40
44
|
__name: "RsTextarea",
|
|
41
45
|
props: /*@__PURE__*/ mergeModels({
|
|
@@ -102,10 +106,10 @@ var RsTextarea_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defin
|
|
|
102
106
|
const { t } = useRsI18n();
|
|
103
107
|
const model = useModel(__props, "modelValue", {
|
|
104
108
|
get(value) {
|
|
105
|
-
return
|
|
109
|
+
return normalizeRsInputValue(value);
|
|
106
110
|
},
|
|
107
111
|
set(value) {
|
|
108
|
-
return
|
|
112
|
+
return normalizeRsInputValue(value);
|
|
109
113
|
}
|
|
110
114
|
});
|
|
111
115
|
const props = __props;
|
|
@@ -133,6 +137,15 @@ var RsTextarea_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defin
|
|
|
133
137
|
if (props.showValidateMessage && autoInvalid.value) return autoMessage.value;
|
|
134
138
|
return "";
|
|
135
139
|
});
|
|
140
|
+
const errorSlotProps = computed(() => ({
|
|
141
|
+
name: props.name,
|
|
142
|
+
message: displayMessage.value,
|
|
143
|
+
value: model.value
|
|
144
|
+
}));
|
|
145
|
+
const formErrorContent = computed(() => {
|
|
146
|
+
if (!displayMessage.value || !formContext?.renderError) return null;
|
|
147
|
+
return formContext.renderError(errorSlotProps.value);
|
|
148
|
+
});
|
|
136
149
|
const isInvalid = computed(() => {
|
|
137
150
|
if (boundToItem.value) return Boolean(formItem?.invalid.value || props.invalid);
|
|
138
151
|
return props.invalid || autoInvalid.value;
|
|
@@ -151,54 +164,26 @@ var RsTextarea_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defin
|
|
|
151
164
|
if (!labelWidth) return void 0;
|
|
152
165
|
return { "--rs-field-label-width": labelWidth };
|
|
153
166
|
});
|
|
154
|
-
const autosizeEnabled = computed(() =>
|
|
155
|
-
const autosizeSpec = computed(() =>
|
|
156
|
-
const displayRows = computed(() =>
|
|
157
|
-
const resolvedResize = computed(() =>
|
|
167
|
+
const autosizeEnabled = computed(() => isRsTextareaAutosizeEnabled(props.autosize));
|
|
168
|
+
const autosizeSpec = computed(() => resolveRsTextareaAutosizeSpec(props.autosize));
|
|
169
|
+
const displayRows = computed(() => resolveRsTextareaDisplayRows(props.autosize, props.rows));
|
|
170
|
+
const resolvedResize = computed(() => resolveRsTextareaResize(props.resize, props.autosize));
|
|
158
171
|
const countText = computed(() => {
|
|
159
172
|
const n = model.value.length;
|
|
160
173
|
return props.maxlength != null ? `${n} / ${props.maxlength}` : String(n);
|
|
161
174
|
});
|
|
162
175
|
const countLimitReached = computed(() => props.maxlength != null && model.value.length >= props.maxlength);
|
|
163
176
|
const showClearButton = computed(() => props.clearable && !resolvedDisabled.value && !props.readonly && model.value.length > 0);
|
|
164
|
-
function parseLineHeight(el) {
|
|
165
|
-
const style = getComputedStyle(el);
|
|
166
|
-
const lh = Number.parseFloat(style.lineHeight);
|
|
167
|
-
if (Number.isFinite(lh) && lh > 0) return lh;
|
|
168
|
-
return (Number.parseFloat(style.fontSize) || 14) * 1.5;
|
|
169
|
-
}
|
|
170
|
-
function autosizePadding(el) {
|
|
171
|
-
const style = getComputedStyle(el);
|
|
172
|
-
const pad = Number.parseFloat(style.paddingTop) + Number.parseFloat(style.paddingBottom);
|
|
173
|
-
if (style.boxSizing !== "border-box") return 0;
|
|
174
|
-
const border = Number.parseFloat(style.borderTopWidth) + Number.parseFloat(style.borderBottomWidth);
|
|
175
|
-
return (Number.isFinite(pad) ? pad : 0) + (Number.isFinite(border) ? border : 0);
|
|
176
|
-
}
|
|
177
177
|
function adjustHeight() {
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
return;
|
|
184
|
-
}
|
|
185
|
-
el.style.height = "auto";
|
|
186
|
-
el.style.overflowY = "hidden";
|
|
187
|
-
const lineHeight = parseLineHeight(el);
|
|
188
|
-
const extra = autosizePadding(el);
|
|
189
|
-
const minRows = autosizeSpec.value.minRows ?? props.rows;
|
|
190
|
-
const maxRows = autosizeSpec.value.maxRows;
|
|
191
|
-
const min = lineHeight * minRows + extra;
|
|
192
|
-
const max = maxRows != null ? lineHeight * maxRows + extra : void 0;
|
|
193
|
-
let height = el.scrollHeight;
|
|
194
|
-
if (height < min) height = min;
|
|
195
|
-
if (max != null && height > max) {
|
|
196
|
-
height = max;
|
|
197
|
-
el.style.overflowY = "auto";
|
|
198
|
-
}
|
|
199
|
-
el.style.height = `${height}px`;
|
|
178
|
+
applyTextareaAutosize(textareaRef.value, {
|
|
179
|
+
enabled: autosizeEnabled.value,
|
|
180
|
+
minRows: autosizeSpec.value.minRows ?? props.rows,
|
|
181
|
+
maxRows: autosizeSpec.value.maxRows
|
|
182
|
+
});
|
|
200
183
|
}
|
|
201
184
|
function scheduleAdjustHeight() {
|
|
185
|
+
const el = textareaRef.value;
|
|
186
|
+
if (!autosizeEnabled.value && !el?.style.height) return;
|
|
202
187
|
nextTick(adjustHeight);
|
|
203
188
|
}
|
|
204
189
|
async function runValidate(trigger = "submit") {
|
|
@@ -229,7 +214,7 @@ var RsTextarea_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defin
|
|
|
229
214
|
autoMessage.value = message;
|
|
230
215
|
}
|
|
231
216
|
function setValue(value) {
|
|
232
|
-
model.value =
|
|
217
|
+
model.value = normalizeRsInputValue(value);
|
|
233
218
|
scheduleAdjustHeight();
|
|
234
219
|
}
|
|
235
220
|
function clearValidation() {
|
|
@@ -262,6 +247,9 @@ var RsTextarea_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defin
|
|
|
262
247
|
if (props.validateTrigger === "blur" || props.validateTrigger === "both") runValidate("blur");
|
|
263
248
|
emit("blur", event);
|
|
264
249
|
}
|
|
250
|
+
function onFocus(event) {
|
|
251
|
+
emit("focus", event);
|
|
252
|
+
}
|
|
265
253
|
function onKeydown(event) {
|
|
266
254
|
if (event.key !== "Enter" || composing.value) return;
|
|
267
255
|
emit("pressEnter", event);
|
|
@@ -346,7 +334,7 @@ var RsTextarea_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defin
|
|
|
346
334
|
onCompositionend: onCompositionEnd,
|
|
347
335
|
onKeydown,
|
|
348
336
|
onBlur,
|
|
349
|
-
onFocus
|
|
337
|
+
onFocus
|
|
350
338
|
}), null, 16, _hoisted_5),
|
|
351
339
|
showClearButton.value ? (openBlock(), createElementBlock("button", {
|
|
352
340
|
key: 0,
|
|
@@ -354,7 +342,7 @@ var RsTextarea_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defin
|
|
|
354
342
|
class: "rs-textarea__clear",
|
|
355
343
|
tabindex: "-1",
|
|
356
344
|
"aria-label": unref(t)("input.clear"),
|
|
357
|
-
onPointerdown: _cache[
|
|
345
|
+
onPointerdown: _cache[0] || (_cache[0] = withModifiers(() => {}, ["prevent"])),
|
|
358
346
|
onClick: onClear
|
|
359
347
|
}, [createVNode(RsIcon_default, {
|
|
360
348
|
name: "x",
|
|
@@ -375,7 +363,10 @@ var RsTextarea_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defin
|
|
|
375
363
|
id: errorId.value,
|
|
376
364
|
class: "rs-field__error",
|
|
377
365
|
role: "alert"
|
|
378
|
-
}, [renderSlot(_ctx.$slots, "error",
|
|
366
|
+
}, [renderSlot(_ctx.$slots, "error", normalizeProps(guardReactiveProps(errorSlotProps.value)), () => [formErrorContent.value !== null && formErrorContent.value !== void 0 ? (openBlock(), createBlock(RsVNodeHost_default, {
|
|
367
|
+
key: 0,
|
|
368
|
+
content: formErrorContent.value
|
|
369
|
+
}, null, 8, ["content"])) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [createTextVNode(toDisplayString(displayMessage.value), 1)], 64))], true)], 8, _hoisted_7)) : createCommentVNode("", true),
|
|
379
370
|
__props.hint ? (openBlock(), createElementBlock("span", _hoisted_8, toDisplayString(__props.hint), 1)) : createCommentVNode("", true)
|
|
380
371
|
])], 6);
|
|
381
372
|
};
|
|
@@ -3,6 +3,6 @@ import _plugin_vue_export_helper_default from "../../../_virtual/_plugin-vue_exp
|
|
|
3
3
|
import RsTextarea_vue_vue_type_script_setup_true_lang_default from "./RsTextarea.impl.js";
|
|
4
4
|
|
|
5
5
|
//#region src/components/textarea/src/RsTextarea.vue
|
|
6
|
-
var RsTextarea_default = /*#__PURE__*/ _plugin_vue_export_helper_default(RsTextarea_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-
|
|
6
|
+
var RsTextarea_default = /*#__PURE__*/ _plugin_vue_export_helper_default(RsTextarea_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-4aaa8fd4"]]);
|
|
7
7
|
//#endregion
|
|
8
8
|
export { RsTextarea_default as default };
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
export declare const RS_TEXTAREA_RESIZES: readonly ["none", "horizontal", "vertical", "both"];
|
|
2
|
+
export type RsTextareaResize = (typeof RS_TEXTAREA_RESIZES)[number];
|
|
3
|
+
/**
|
|
4
|
+
* 自适应高度。true 从 rows 起往下长;对象可锁 minRows / maxRows。
|
|
5
|
+
* 对齐 Ant Design autoSize、Element Plus autosize。
|
|
6
|
+
*/
|
|
7
|
+
export type RsTextareaAutosize = boolean | {
|
|
8
|
+
minRows?: number;
|
|
9
|
+
maxRows?: number;
|
|
10
|
+
};
|
|
11
|
+
export declare function isRsTextareaResize(value: unknown): value is RsTextareaResize;
|
|
12
|
+
export declare function isRsTextareaAutosizeEnabled(autosize?: RsTextareaAutosize | null): boolean;
|
|
13
|
+
export declare function resolveRsTextareaAutosizeSpec(autosize?: RsTextareaAutosize | null): {
|
|
14
|
+
minRows?: number;
|
|
15
|
+
maxRows?: number;
|
|
16
|
+
};
|
|
17
|
+
export declare function resolveRsTextareaDisplayRows(autosize?: RsTextareaAutosize | null, rows?: number): number;
|
|
18
|
+
/** autosize 开启时强制 none,与 Element Plus 一致。 */
|
|
19
|
+
export declare function resolveRsTextareaResize(resize?: RsTextareaResize | null, autosize?: RsTextareaAutosize | null): RsTextareaResize;
|
|
20
|
+
export declare function parseTextareaLineHeight(el: HTMLTextAreaElement): number;
|
|
21
|
+
export declare function textareaAutosizePadding(el: HTMLTextAreaElement): number;
|
|
22
|
+
/** 写入或清掉 autosize 高度。el 已卸载时直接返回。 */
|
|
23
|
+
export declare function applyTextareaAutosize(el: HTMLTextAreaElement | null, options: {
|
|
24
|
+
enabled: boolean;
|
|
25
|
+
minRows: number;
|
|
26
|
+
maxRows?: number;
|
|
27
|
+
}): void;
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
//#region src/components/textarea/src/textarea-utils.ts
|
|
2
|
+
var RS_TEXTAREA_RESIZES = [
|
|
3
|
+
"none",
|
|
4
|
+
"horizontal",
|
|
5
|
+
"vertical",
|
|
6
|
+
"both"
|
|
7
|
+
];
|
|
8
|
+
function isRsTextareaResize(value) {
|
|
9
|
+
return typeof value === "string" && RS_TEXTAREA_RESIZES.includes(value);
|
|
10
|
+
}
|
|
11
|
+
function isRsTextareaAutosizeEnabled(autosize) {
|
|
12
|
+
return autosize === true || typeof autosize === "object" && autosize != null;
|
|
13
|
+
}
|
|
14
|
+
function resolveRsTextareaAutosizeSpec(autosize) {
|
|
15
|
+
return typeof autosize === "object" && autosize ? autosize : {};
|
|
16
|
+
}
|
|
17
|
+
function resolveRsTextareaDisplayRows(autosize, rows = 3) {
|
|
18
|
+
return resolveRsTextareaAutosizeSpec(autosize).minRows ?? rows;
|
|
19
|
+
}
|
|
20
|
+
/** autosize 开启时强制 none,与 Element Plus 一致。 */
|
|
21
|
+
function resolveRsTextareaResize(resize, autosize) {
|
|
22
|
+
if (isRsTextareaAutosizeEnabled(autosize)) return "none";
|
|
23
|
+
return isRsTextareaResize(resize) ? resize : "vertical";
|
|
24
|
+
}
|
|
25
|
+
function parseTextareaLineHeight(el) {
|
|
26
|
+
const style = getComputedStyle(el);
|
|
27
|
+
const lh = Number.parseFloat(style.lineHeight);
|
|
28
|
+
if (Number.isFinite(lh) && lh > 0) return lh;
|
|
29
|
+
return (Number.parseFloat(style.fontSize) || 14) * 1.5;
|
|
30
|
+
}
|
|
31
|
+
function textareaAutosizePadding(el) {
|
|
32
|
+
const style = getComputedStyle(el);
|
|
33
|
+
const pad = Number.parseFloat(style.paddingTop) + Number.parseFloat(style.paddingBottom);
|
|
34
|
+
if (style.boxSizing !== "border-box") return 0;
|
|
35
|
+
const border = Number.parseFloat(style.borderTopWidth) + Number.parseFloat(style.borderBottomWidth);
|
|
36
|
+
return (Number.isFinite(pad) ? pad : 0) + (Number.isFinite(border) ? border : 0);
|
|
37
|
+
}
|
|
38
|
+
/** 写入或清掉 autosize 高度。el 已卸载时直接返回。 */
|
|
39
|
+
function applyTextareaAutosize(el, options) {
|
|
40
|
+
if (!el) return;
|
|
41
|
+
if (!options.enabled) {
|
|
42
|
+
el.style.height = "";
|
|
43
|
+
el.style.overflowY = "";
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
el.style.height = "auto";
|
|
47
|
+
el.style.overflowY = "hidden";
|
|
48
|
+
const lineHeight = parseTextareaLineHeight(el);
|
|
49
|
+
const extra = textareaAutosizePadding(el);
|
|
50
|
+
const min = lineHeight * options.minRows + extra;
|
|
51
|
+
const max = options.maxRows != null ? lineHeight * options.maxRows + extra : void 0;
|
|
52
|
+
let height = el.scrollHeight;
|
|
53
|
+
if (height < min) height = min;
|
|
54
|
+
if (max != null && height > max) {
|
|
55
|
+
height = max;
|
|
56
|
+
el.style.overflowY = "auto";
|
|
57
|
+
}
|
|
58
|
+
el.style.height = `${height}px`;
|
|
59
|
+
}
|
|
60
|
+
//#endregion
|
|
61
|
+
export { RS_TEXTAREA_RESIZES, applyTextareaAutosize, isRsTextareaAutosizeEnabled, isRsTextareaResize, parseTextareaLineHeight, resolveRsTextareaAutosizeSpec, resolveRsTextareaDisplayRows, resolveRsTextareaResize, textareaAutosizePadding };
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
export { default as RsTimePicker } from './src/RsTimePicker.js';
|
|
2
2
|
export { default as RsTimePickerColumns } from './src/RsTimePickerColumns.js';
|
|
3
|
-
export type {
|
|
4
|
-
export {
|
|
3
|
+
export type { RsTimePickerExpose, RsTimePickerInstance, RsTimePickerLabelPosition, } from './src/RsTimePicker.js';
|
|
4
|
+
export type { RsParsedTime, RsTimePickerDisabledTime, RsTimePickerGetPopupContainer, RsTimePickerHourCycle, RsTimePickerModelValue, RsTimePickerShortcut, RsTimeRangeValue, RsTimeUnit, RsTimeUnitOption, } from './src/time-picker-utils';
|
|
5
|
+
export { EMPTY_TIME_RANGE, TIME_HOUR12_OPTIONS, TIME_HOUR_OPTIONS, TIME_SECOND_OPTIONS, formatTimeDisplay, formatTimeFromParts, formatTimeParts, formatTimeRangeDisplay, formatTimeUnitLabel, formatTimeValue, getTimeMinuteOptions, isTimeRangeEmpty, isTimeRangeOrdered, isTimeWithinBounds, parseTimeValue, scrollTimeColumnToValue, toHour12, toHour24, } from './src/time-picker-utils';
|
|
5
6
|
export type { RsTimeValidationError, RsTimeValidationResult, RsTimeValidationRules } from './src/time-validation';
|
|
6
7
|
export { validateTimeValue } from './src/time-validation';
|
|
7
8
|
export type { RsTimeRangeValidationError, RsTimeRangeValidationResult, RsTimeRangeValidationRules, } from './src/time-range-validation';
|