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
|
@@ -3,6 +3,6 @@ import _plugin_vue_export_helper_default from "../../../_virtual/_plugin-vue_exp
|
|
|
3
3
|
import RsForm_vue_vue_type_script_setup_true_lang_default from "./RsForm.impl.js";
|
|
4
4
|
|
|
5
5
|
//#region src/components/form/src/RsForm.vue
|
|
6
|
-
var RsForm_default = /*#__PURE__*/ _plugin_vue_export_helper_default(RsForm_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-
|
|
6
|
+
var RsForm_default = /*#__PURE__*/ _plugin_vue_export_helper_default(RsForm_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-0cdc7aeb"]]);
|
|
7
7
|
//#endregion
|
|
8
8
|
export { RsForm_default as default };
|
|
@@ -118,3 +118,10 @@ export declare function useRsFormField(getExpose: () => RsFormFieldExpose | unde
|
|
|
118
118
|
export declare function resolveRsFormSize(size?: RsFormSize, form?: RsFormContext | null): ComputedRef<RsFormSize>;
|
|
119
119
|
/** 供 Form 内部解析某字段 rules */
|
|
120
120
|
export declare function resolveFieldRules(rules: RsFormRules | undefined, name?: string): RsFormRuleItem[];
|
|
121
|
+
/** clearValidation / resetFields 的 names 过滤。不传则清全部。 */
|
|
122
|
+
export declare function normalizeRsFormNameFilter(names?: string | string[]): Set<string> | null;
|
|
123
|
+
export declare function escapeRsFormSelectorValue(value: string): string;
|
|
124
|
+
export declare function prefersRsReducedMotion(): boolean;
|
|
125
|
+
/** 在本表根内找 data-rs-form-item,避免两张同名字段的表滚错。 */
|
|
126
|
+
export declare function queryRsFormItem(root: ParentNode | null | undefined, name: RsFormNamePath): HTMLElement | null;
|
|
127
|
+
export declare function scrollRsFormField(root: ParentNode | null | undefined, name: RsFormNamePath): void;
|
|
@@ -63,5 +63,32 @@ function resolveFieldRules(rules, name) {
|
|
|
63
63
|
if (!name || !rules) return [];
|
|
64
64
|
return normalizeFormRules(rules[name]);
|
|
65
65
|
}
|
|
66
|
+
/** clearValidation / resetFields 的 names 过滤。不传则清全部。 */
|
|
67
|
+
function normalizeRsFormNameFilter(names) {
|
|
68
|
+
if (!names) return null;
|
|
69
|
+
return new Set(Array.isArray(names) ? names : [names]);
|
|
70
|
+
}
|
|
71
|
+
function escapeRsFormSelectorValue(value) {
|
|
72
|
+
if (typeof CSS !== "undefined" && typeof CSS.escape === "function") return CSS.escape(value);
|
|
73
|
+
return value.replace(/["\\]/g, (ch) => `\\${ch}`);
|
|
74
|
+
}
|
|
75
|
+
function prefersRsReducedMotion() {
|
|
76
|
+
return typeof matchMedia === "function" && matchMedia("(prefers-reduced-motion: reduce)").matches;
|
|
77
|
+
}
|
|
78
|
+
/** 在本表根内找 data-rs-form-item,避免两张同名字段的表滚错。 */
|
|
79
|
+
function queryRsFormItem(root, name) {
|
|
80
|
+
if (!root || typeof root.querySelector !== "function") return null;
|
|
81
|
+
const key = namePathKey(name);
|
|
82
|
+
const el = root.querySelector(`[data-rs-form-item="${escapeRsFormSelectorValue(key)}"]`);
|
|
83
|
+
return el instanceof HTMLElement ? el : null;
|
|
84
|
+
}
|
|
85
|
+
function scrollRsFormField(root, name) {
|
|
86
|
+
const el = queryRsFormItem(root, name);
|
|
87
|
+
if (!el) return;
|
|
88
|
+
el.scrollIntoView({
|
|
89
|
+
block: "nearest",
|
|
90
|
+
behavior: prefersRsReducedMotion() ? "auto" : "smooth"
|
|
91
|
+
});
|
|
92
|
+
}
|
|
66
93
|
//#endregion
|
|
67
|
-
export { RS_FORM_INJECTION_KEY, RS_FORM_ITEM_INJECTION_KEY, RS_FORM_LIST_INJECTION_KEY, cloneFormFieldValue, isRsFormItemBoundControl, provideRsFormContext, provideRsFormItemContext, provideRsFormListContext, resolveFieldRules, useRsFormContext, useRsFormField, useRsFormItemContext, useRsFormListContext };
|
|
94
|
+
export { RS_FORM_INJECTION_KEY, RS_FORM_ITEM_INJECTION_KEY, RS_FORM_LIST_INJECTION_KEY, cloneFormFieldValue, escapeRsFormSelectorValue, isRsFormItemBoundControl, normalizeRsFormNameFilter, prefersRsReducedMotion, provideRsFormContext, provideRsFormItemContext, provideRsFormListContext, queryRsFormItem, resolveFieldRules, scrollRsFormField, useRsFormContext, useRsFormField, useRsFormItemContext, useRsFormListContext };
|
|
@@ -1,14 +1,19 @@
|
|
|
1
1
|
|
|
2
|
-
.rs-icon[data-v-
|
|
2
|
+
.rs-icon[data-v-260b0681] {
|
|
3
3
|
display: inline-block;
|
|
4
4
|
flex-shrink: 0;
|
|
5
5
|
vertical-align: middle;
|
|
6
6
|
}
|
|
7
|
-
.rs-icon--spin[data-v-
|
|
8
|
-
animation: rs-icon-spin-
|
|
7
|
+
.rs-icon--spin[data-v-260b0681] {
|
|
8
|
+
animation: rs-icon-spin-260b0681 0.8s linear infinite;
|
|
9
9
|
}
|
|
10
|
-
@keyframes rs-icon-spin-
|
|
10
|
+
@keyframes rs-icon-spin-260b0681 {
|
|
11
11
|
to {
|
|
12
12
|
transform: rotate(360deg);
|
|
13
13
|
}
|
|
14
14
|
}
|
|
15
|
+
@media (prefers-reduced-motion: reduce) {
|
|
16
|
+
.rs-icon--spin[data-v-260b0681] {
|
|
17
|
+
animation: none;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import type { RsComponentSize } from '../../../theme/types';
|
|
2
|
+
import { type RsIconFlip } from './icon-utils';
|
|
2
3
|
type __VLS_Props = {
|
|
3
|
-
/** Lucide
|
|
4
|
+
/** Lucide kebab-case 名称(如 `house`、`trash-2`),或内置品牌 mark */
|
|
4
5
|
name: string;
|
|
5
|
-
/** 数字 px、CSS
|
|
6
|
+
/** 数字 px、CSS 长度,或与控件同一套 ssm / sm / md / lg */
|
|
6
7
|
size?: number | string | RsComponentSize;
|
|
7
8
|
/** 无障碍名称;有值时作为语义图标,无值时为装饰性图标 */
|
|
8
9
|
label?: string;
|
|
@@ -10,7 +11,7 @@ type __VLS_Props = {
|
|
|
10
11
|
/** 覆盖颜色,默认继承 currentColor */
|
|
11
12
|
color?: string;
|
|
12
13
|
/** 水平 / 垂直 / 双向翻转 */
|
|
13
|
-
flip?:
|
|
14
|
+
flip?: RsIconFlip;
|
|
14
15
|
/** 旋转角度(度),与 spin 不宜同时使用 */
|
|
15
16
|
rotate?: number;
|
|
16
17
|
/** 旋转动画,适合 loader 等加载态 */
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import { resolveLucideIcon } from "../../../icons/lucide.js";
|
|
2
2
|
import { isRsBrandIconName } from "../../../icons/brand.js";
|
|
3
|
+
import { buildRsIconStyle, resolveRsIconPixelSize } from "./icon-utils.js";
|
|
3
4
|
import { computed, createBlock, createCommentVNode, defineComponent, normalizeClass, normalizeStyle, openBlock, resolveDynamicComponent } from "vue";
|
|
4
5
|
//#region src/components/icon/src/RsIcon.vue?vue&type=script&setup=true&lang.ts
|
|
5
6
|
var RsIcon_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
|
|
7
|
+
name: "RsIcon",
|
|
6
8
|
__name: "RsIcon",
|
|
7
9
|
props: {
|
|
8
10
|
name: {},
|
|
@@ -15,41 +17,16 @@ var RsIcon_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineCom
|
|
|
15
17
|
spin: { type: Boolean }
|
|
16
18
|
},
|
|
17
19
|
setup(__props) {
|
|
18
|
-
const SIZE_PRESET = {
|
|
19
|
-
ssm: 12,
|
|
20
|
-
sm: 14,
|
|
21
|
-
md: 16,
|
|
22
|
-
lg: 20
|
|
23
|
-
};
|
|
24
20
|
const props = __props;
|
|
25
21
|
const iconComponent = computed(() => resolveLucideIcon(props.name));
|
|
26
|
-
const
|
|
27
|
-
const { size } = props;
|
|
28
|
-
return typeof size === "string" && !(size in SIZE_PRESET) && !/^\d+$/.test(size);
|
|
29
|
-
});
|
|
30
|
-
const lucideSize = computed(() => {
|
|
31
|
-
if (usesCustomSize.value) return void 0;
|
|
32
|
-
const { size } = props;
|
|
33
|
-
if (typeof size === "number") return size;
|
|
34
|
-
if (size in SIZE_PRESET) return SIZE_PRESET[size];
|
|
35
|
-
return Number.parseInt(String(size), 10) || SIZE_PRESET.md;
|
|
36
|
-
});
|
|
22
|
+
const lucideSize = computed(() => resolveRsIconPixelSize(props.size));
|
|
37
23
|
const isBrand = computed(() => isRsBrandIconName(props.name));
|
|
38
|
-
const iconStyle = computed(() => {
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
else if (props.flip === "both") transforms.push("scale(-1)");
|
|
45
|
-
if (props.rotate) transforms.push(`rotate(${props.rotate}deg)`);
|
|
46
|
-
if (transforms.length) style.transform = transforms.join(" ");
|
|
47
|
-
if (usesCustomSize.value && typeof props.size === "string") {
|
|
48
|
-
style.width = props.size;
|
|
49
|
-
style.height = props.size;
|
|
50
|
-
}
|
|
51
|
-
return Object.keys(style).length ? style : void 0;
|
|
52
|
-
});
|
|
24
|
+
const iconStyle = computed(() => buildRsIconStyle({
|
|
25
|
+
color: props.color,
|
|
26
|
+
flip: props.flip,
|
|
27
|
+
rotate: props.rotate,
|
|
28
|
+
size: props.size
|
|
29
|
+
}));
|
|
53
30
|
const isSemantic = computed(() => Boolean(props.label));
|
|
54
31
|
return (_ctx, _cache) => {
|
|
55
32
|
return iconComponent.value ? (openBlock(), createBlock(resolveDynamicComponent(iconComponent.value), {
|
|
@@ -3,6 +3,6 @@ import _plugin_vue_export_helper_default from "../../../_virtual/_plugin-vue_exp
|
|
|
3
3
|
import RsIcon_vue_vue_type_script_setup_true_lang_default from "./RsIcon.impl.js";
|
|
4
4
|
|
|
5
5
|
//#region src/components/icon/src/RsIcon.vue
|
|
6
|
-
var RsIcon_default = /*#__PURE__*/ _plugin_vue_export_helper_default(RsIcon_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-
|
|
6
|
+
var RsIcon_default = /*#__PURE__*/ _plugin_vue_export_helper_default(RsIcon_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-260b0681"]]);
|
|
7
7
|
//#endregion
|
|
8
8
|
export { RsIcon_default as default };
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { type RsComponentSize } from '../../../theme/types';
|
|
2
|
+
export type RsIconFlip = 'horizontal' | 'vertical' | 'both';
|
|
3
|
+
/** 数字 px、CSS 长度,或 ssm / sm / md / lg 档位字符串。 */
|
|
4
|
+
export type RsIconSize = number | string;
|
|
5
|
+
/** 与控件档位同一套边长(ssm 12 / sm 14 / md 16 / lg 18)。 */
|
|
6
|
+
export declare function isRsIconSizePreset(size: unknown): size is RsComponentSize;
|
|
7
|
+
/** CSS 长度(如 `1.5rem`)不走 Lucide 的 size 数字。 */
|
|
8
|
+
export declare function rsIconUsesCssSize(size: RsIconSize | undefined): boolean;
|
|
9
|
+
/** 解析成 Lucide / 自定义 mark 的像素边长;CSS 长度返回 undefined。 */
|
|
10
|
+
export declare function resolveRsIconPixelSize(size: RsIconSize | undefined): number | undefined;
|
|
11
|
+
export declare function buildRsIconTransform(flip?: RsIconFlip, rotate?: number): string | undefined;
|
|
12
|
+
export declare function buildRsIconStyle(options: {
|
|
13
|
+
color?: string;
|
|
14
|
+
flip?: RsIconFlip;
|
|
15
|
+
rotate?: number;
|
|
16
|
+
size?: RsIconSize;
|
|
17
|
+
}): Record<string, string> | undefined;
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { RS_COMPONENT_SIZE_ICON_PX } from "../../../theme/types.js";
|
|
2
|
+
//#region src/components/icon/src/icon-utils.ts
|
|
3
|
+
/** 与控件档位同一套边长(ssm 12 / sm 14 / md 16 / lg 18)。 */
|
|
4
|
+
function isRsIconSizePreset(size) {
|
|
5
|
+
return typeof size === "string" && size in RS_COMPONENT_SIZE_ICON_PX;
|
|
6
|
+
}
|
|
7
|
+
/** CSS 长度(如 `1.5rem`)不走 Lucide 的 size 数字。 */
|
|
8
|
+
function rsIconUsesCssSize(size) {
|
|
9
|
+
return typeof size === "string" && !isRsIconSizePreset(size) && !/^\d+$/.test(size);
|
|
10
|
+
}
|
|
11
|
+
/** 解析成 Lucide / 自定义 mark 的像素边长;CSS 长度返回 undefined。 */
|
|
12
|
+
function resolveRsIconPixelSize(size) {
|
|
13
|
+
if (size == null) return RS_COMPONENT_SIZE_ICON_PX.md;
|
|
14
|
+
if (rsIconUsesCssSize(size)) return void 0;
|
|
15
|
+
if (typeof size === "number" && Number.isFinite(size)) return size;
|
|
16
|
+
if (isRsIconSizePreset(size)) return RS_COMPONENT_SIZE_ICON_PX[size];
|
|
17
|
+
return Number.parseInt(String(size), 10) || RS_COMPONENT_SIZE_ICON_PX.md;
|
|
18
|
+
}
|
|
19
|
+
function buildRsIconTransform(flip, rotate) {
|
|
20
|
+
const transforms = [];
|
|
21
|
+
if (flip === "horizontal") transforms.push("scaleX(-1)");
|
|
22
|
+
else if (flip === "vertical") transforms.push("scaleY(-1)");
|
|
23
|
+
else if (flip === "both") transforms.push("scale(-1)");
|
|
24
|
+
if (rotate) transforms.push(`rotate(${rotate}deg)`);
|
|
25
|
+
return transforms.length ? transforms.join(" ") : void 0;
|
|
26
|
+
}
|
|
27
|
+
function buildRsIconStyle(options) {
|
|
28
|
+
const style = {};
|
|
29
|
+
if (options.color) style.color = options.color;
|
|
30
|
+
const transform = buildRsIconTransform(options.flip, options.rotate);
|
|
31
|
+
if (transform) style.transform = transform;
|
|
32
|
+
if (rsIconUsesCssSize(options.size) && typeof options.size === "string") {
|
|
33
|
+
style.width = options.size;
|
|
34
|
+
style.height = options.size;
|
|
35
|
+
}
|
|
36
|
+
return Object.keys(style).length ? style : void 0;
|
|
37
|
+
}
|
|
38
|
+
//#endregion
|
|
39
|
+
export { buildRsIconStyle, buildRsIconTransform, isRsIconSizePreset, resolveRsIconPixelSize, rsIconUsesCssSize };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
export { default as RsInput } from './src/RsInput.js';
|
|
2
|
-
export type { RsInputExpose, RsInputInstance } from './src/RsInput.js';
|
|
2
|
+
export type { RsInputExpose, RsInputInstance, RsInputType } from './src/RsInput.js';
|
|
3
3
|
export type { RsInputRule, RsInputValidateTrigger, RsInputValidateResult, } from './src/input-rules';
|
|
4
4
|
export { validateInputRule, runInputValidation, getInputRuleMessage, inputRuleMessageKeys, } from './src/input-rules';
|