niuma-ui 2.0.1 → 2.0.3
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/README.en.md +1 -118
- package/README.md +60 -62
- package/README.zh-CN.md +130 -0
- package/dist/components/_shared/src/reka.d.ts +1 -1
- package/dist/components/_shared/src/reka.js +2 -2
- package/dist/components/avatar/src/RsAvatar.impl.js +1 -1
- 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/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/card/src/RsCard.impl.js +1 -1
- package/dist/components/cascader/src/RsCascader.d.ts +1 -1
- package/dist/components/config-provider/src/RsConfigProvider.css +1 -1
- package/dist/components/config-provider/src/RsConfigProvider.d.ts +2 -3
- package/dist/components/config-provider/src/RsConfigProvider.impl.js +20 -11
- package/dist/components/config-provider/src/RsConfigProvider.js +1 -1
- package/dist/components/context-menu/src/RsContextMenuItems.impl.js +1 -1
- package/dist/components/date-picker/src/RsDatePicker.impl.js +1 -1
- package/dist/components/dialog/src/RsConfirmDialog.impl.js +1 -1
- package/dist/components/dialog/src/RsDialog.impl.js +1 -1
- 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/drawer/src/RsDrawer.impl.js +1 -1
- package/dist/components/dropdown/src/RsDropdown.impl.js +1 -1
- package/dist/components/dynamic-tags/src/RsDynamicTags.css +23 -23
- package/dist/components/dynamic-tags/src/RsDynamicTags.d.ts +1 -1
- package/dist/components/dynamic-tags/src/RsDynamicTags.js +1 -1
- package/dist/components/form/src/form-rules.js +2 -2
- 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/src/input-rules.js +3 -3
- 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/menu/src/RsMenuItems.impl.js +1 -1
- package/dist/components/radio/src/RsRadio.impl.js +1 -1
- package/dist/components/radio/src/RsRadioItem.impl.js +1 -1
- package/dist/components/select/src/RsSelect.impl.js +1 -1
- package/dist/components/switch/src/RsSwitch.impl.js +1 -1
- package/dist/components/tabs/src/RsTabs.impl.js +1 -1
- 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/time-picker/src/RsTimePicker.impl.js +1 -1
- package/dist/components/tooltip/src/RsTooltip.impl.js +1 -1
- package/dist/composables/createRsDialog.js +3 -3
- package/dist/composables/useRsConfig.js +2 -2
- package/dist/composables/useRsI18n.d.ts +1 -1
- package/dist/composables/useRsI18n.js +3 -3
- package/dist/index.d.ts +5 -1
- package/dist/index.js +3 -0
- package/dist/locale/interpolate.js +15 -3
- package/dist/locale/messages.d.ts +2 -0
- package/dist/locale/messages.js +3 -1
- package/dist/locale/registry-public.d.ts +1 -0
- package/dist/locale/resolve-host.d.ts +7 -0
- package/dist/locale/resolve-host.js +46 -0
- package/dist/locale/types.d.ts +2 -0
- package/dist/locale/types.js +2 -0
- package/package.json +10 -8
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { RS_COMPONENT_SIZE_ICON_PX } from "../../../theme/types.js";
|
|
2
|
+
import { ComboboxAnchor, ComboboxContent, ComboboxEmpty, ComboboxGroup, ComboboxInput, ComboboxItem, ComboboxItemIndicator, ComboboxLabel, ComboboxPortal, ComboboxRoot, ComboboxTrigger, ComboboxViewport, ComboboxVirtualizer } from "../../_shared/src/reka.js";
|
|
2
3
|
import { useRsI18n } from "../../../composables/useRsI18n.js";
|
|
3
4
|
import RsIcon_default from "../../icon/src/RsIcon.js";
|
|
4
5
|
import { buildLocalInputRules, runFormFieldRules } from "../../form/src/form-rules.js";
|
|
5
6
|
import { isRsFormItemBoundControl, useRsFormContext, useRsFormField, useRsFormItemContext } from "../../form/src/form-utils.js";
|
|
6
7
|
import { useResolvedRsComponentSize } from "../../_shared/src/resolve-size.js";
|
|
7
8
|
import { rsRadiusCss, useResolvedRsRadius } from "../../_shared/src/resolve-radius.js";
|
|
8
|
-
import { ComboboxAnchor, ComboboxContent, ComboboxEmpty, ComboboxGroup, ComboboxInput, ComboboxItem, ComboboxItemIndicator, ComboboxLabel, ComboboxPortal, ComboboxRoot, ComboboxTrigger, ComboboxViewport, ComboboxVirtualizer } from "../../_shared/src/reka.js";
|
|
9
9
|
import { isSelectOptionGroup, splitSelectLabelHighlight, toComboboxValue } from "./select-utils.js";
|
|
10
10
|
import { useRsSelect } from "./use-rs-select.js";
|
|
11
11
|
import { Fragment, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createTextVNode, createVNode, defineComponent, isRef, mergeModels, mergeProps, nextTick, normalizeClass, normalizeStyle, onMounted, onUnmounted, openBlock, ref, renderList, renderSlot, toDisplayString, unref, useAttrs, useModel, watch, withCtx, withModifiers } from "vue";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { useResolvedRsComponentSize } from "../../_shared/src/resolve-size.js";
|
|
2
1
|
import { SwitchRoot, SwitchThumb } from "../../_shared/src/reka.js";
|
|
2
|
+
import { useResolvedRsComponentSize } from "../../_shared/src/resolve-size.js";
|
|
3
3
|
import { computed, createCommentVNode, createElementBlock, createVNode, defineComponent, mergeModels, normalizeClass, openBlock, renderSlot, unref, useId, useModel, withCtx } from "vue";
|
|
4
4
|
//#region src/components/switch/src/RsSwitch.vue?vue&type=script&setup=true&lang.ts
|
|
5
5
|
var _hoisted_1 = ["for"];
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
+
import { DropdownMenuContent, DropdownMenuItem, DropdownMenuPortal, DropdownMenuRoot, DropdownMenuTrigger, TabsContent, TabsList, TabsRoot, TabsTrigger } from "../../_shared/src/reka.js";
|
|
1
2
|
import { useRsI18n } from "../../../composables/useRsI18n.js";
|
|
2
3
|
import RsIcon_default from "../../icon/src/RsIcon.js";
|
|
3
|
-
import { DropdownMenuContent, DropdownMenuItem, DropdownMenuPortal, DropdownMenuRoot, DropdownMenuTrigger, TabsContent, TabsList, TabsRoot, TabsTrigger } from "../../_shared/src/reka.js";
|
|
4
4
|
import { buildTabContextMenuItems, getNextTabAfterBatchClose, getNextTabAfterClose, isTabClosable, isTabFixed, isTabRenamable, resolveTabsToClose } from "./tabs-utils.js";
|
|
5
5
|
import { useRsTabsNav } from "../../../composables/useRsTabsNav.js";
|
|
6
6
|
import RsContextMenu_default from "../../context-menu/src/RsContextMenu.js";
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export { default as RsTag } from './src/RsTag.js';
|
|
2
|
-
export type { RsTagVariant } from './src/
|
|
2
|
+
export type { RsTagVariant } from './src/tag-utils';
|
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
|
|
2
|
-
.rs-tag[data-v-
|
|
2
|
+
.rs-tag[data-v-d8327085] {
|
|
3
|
+
--rs-tag-pad-y-sm: 0.0625rem;
|
|
4
|
+
--rs-tag-pad-y-md: 0.125rem;
|
|
5
|
+
--rs-tag-disabled-opacity: 0.55;
|
|
6
|
+
--rs-tag-close-opacity: 0.75;
|
|
3
7
|
display: inline-flex;
|
|
4
8
|
align-items: center;
|
|
5
9
|
gap: var(--rs-space-xs);
|
|
@@ -10,85 +14,85 @@
|
|
|
10
14
|
box-sizing: border-box;
|
|
11
15
|
vertical-align: middle;
|
|
12
16
|
}
|
|
13
|
-
.rs-tag--ssm[data-v-
|
|
14
|
-
padding: 0
|
|
17
|
+
.rs-tag--ssm[data-v-d8327085] {
|
|
18
|
+
padding-block: 0;
|
|
19
|
+
padding-inline: var(--rs-space-xs);
|
|
15
20
|
font-size: var(--rs-font-size-xs);
|
|
16
21
|
}
|
|
17
|
-
.rs-tag--sm[data-v-
|
|
18
|
-
padding:
|
|
22
|
+
.rs-tag--sm[data-v-d8327085] {
|
|
23
|
+
padding-block: var(--rs-tag-pad-y-sm);
|
|
24
|
+
padding-inline: var(--rs-space-xs);
|
|
19
25
|
font-size: var(--rs-font-size-xs);
|
|
20
26
|
}
|
|
21
|
-
.rs-tag--md[data-v-
|
|
22
|
-
padding:
|
|
27
|
+
.rs-tag--md[data-v-d8327085] {
|
|
28
|
+
padding-block: var(--rs-tag-pad-y-md);
|
|
29
|
+
padding-inline: var(--rs-space-sm);
|
|
23
30
|
font-size: var(--rs-font-size-xs);
|
|
24
31
|
}
|
|
25
|
-
.rs-tag--lg[data-v-
|
|
26
|
-
padding: var(--rs-space-xs)
|
|
32
|
+
.rs-tag--lg[data-v-d8327085] {
|
|
33
|
+
padding-block: var(--rs-space-xs);
|
|
34
|
+
padding-inline: var(--rs-space-sm);
|
|
27
35
|
font-size: var(--rs-font-size-sm);
|
|
28
36
|
}
|
|
29
|
-
.rs-tag--round[data-v-
|
|
37
|
+
.rs-tag--round[data-v-d8327085] {
|
|
30
38
|
border-radius: var(--rs-radius-full);
|
|
31
39
|
}
|
|
32
|
-
.rs-tag--disabled[data-v-
|
|
33
|
-
opacity:
|
|
40
|
+
.rs-tag--disabled[data-v-d8327085] {
|
|
41
|
+
opacity: var(--rs-tag-disabled-opacity);
|
|
34
42
|
cursor: not-allowed;
|
|
35
43
|
}
|
|
36
|
-
.rs-tag__content[data-v-
|
|
44
|
+
.rs-tag__content[data-v-d8327085] {
|
|
37
45
|
overflow: hidden;
|
|
38
46
|
text-overflow: ellipsis;
|
|
39
47
|
white-space: nowrap;
|
|
40
48
|
}
|
|
41
|
-
.rs-tag__close[data-v-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
49
|
+
.rs-tag__close[data-v-d8327085] {
|
|
50
|
+
min-width: 0;
|
|
51
|
+
min-height: 0;
|
|
52
|
+
width: 1em;
|
|
53
|
+
height: 1em;
|
|
46
54
|
padding: 0;
|
|
47
|
-
border: 0;
|
|
48
|
-
border-radius: var(--rs-radius-full);
|
|
49
|
-
background: transparent;
|
|
50
55
|
color: inherit;
|
|
51
|
-
|
|
52
|
-
opacity: 0.75;
|
|
53
|
-
outline: none;
|
|
56
|
+
opacity: var(--rs-tag-close-opacity);
|
|
54
57
|
}
|
|
55
|
-
.rs-tag__close[data-v-
|
|
58
|
+
.rs-tag__close[data-v-d8327085]:hover:not(:disabled) {
|
|
56
59
|
opacity: 1;
|
|
60
|
+
color: inherit;
|
|
57
61
|
background: color-mix(in srgb, currentColor 12%, transparent);
|
|
58
62
|
}
|
|
59
|
-
.rs-
|
|
60
|
-
box-shadow: 0 0 0 var(--rs-focus-ring-width, 2px) var(--rs-focus-ring);
|
|
61
|
-
}
|
|
62
|
-
.rs-tag__close[data-v-0140d810]:disabled {
|
|
63
|
-
cursor: not-allowed;
|
|
64
|
-
}
|
|
65
|
-
.rs-tag--default[data-v-0140d810] {
|
|
63
|
+
.rs-tag--default[data-v-d8327085] {
|
|
66
64
|
background: var(--rs-surface-hover);
|
|
67
|
-
color: var(--rs-text);
|
|
65
|
+
color: var(--rs-text-primary);
|
|
68
66
|
border: 1px solid var(--rs-border);
|
|
69
67
|
}
|
|
70
|
-
.rs-tag--primary[data-v-
|
|
68
|
+
.rs-tag--primary[data-v-d8327085] {
|
|
71
69
|
background: var(--rs-primary-container);
|
|
72
70
|
color: var(--rs-on-primary-container);
|
|
73
71
|
border: 1px solid color-mix(in srgb, var(--rs-primary) var(--rs-tag-border-alpha, 40%), transparent);
|
|
74
72
|
}
|
|
75
|
-
.rs-tag--success[data-v-
|
|
73
|
+
.rs-tag--success[data-v-d8327085] {
|
|
76
74
|
background: var(--rs-success-container);
|
|
77
75
|
color: var(--rs-on-success-container);
|
|
78
76
|
border: 1px solid color-mix(in srgb, var(--rs-success) var(--rs-tag-border-alpha, 40%), transparent);
|
|
79
77
|
}
|
|
80
|
-
.rs-tag--warning[data-v-
|
|
78
|
+
.rs-tag--warning[data-v-d8327085] {
|
|
81
79
|
background: var(--rs-warning-container);
|
|
82
80
|
color: var(--rs-on-warning-container);
|
|
83
81
|
border: 1px solid color-mix(in srgb, var(--rs-warning) var(--rs-tag-border-alpha, 40%), transparent);
|
|
84
82
|
}
|
|
85
|
-
.rs-tag--danger[data-v-
|
|
83
|
+
.rs-tag--danger[data-v-d8327085] {
|
|
86
84
|
background: var(--rs-danger-container);
|
|
87
85
|
color: var(--rs-on-danger-container);
|
|
88
86
|
border: 1px solid color-mix(in srgb, var(--rs-danger) var(--rs-tag-border-alpha, 40%), transparent);
|
|
89
87
|
}
|
|
90
|
-
.rs-tag--info[data-v-
|
|
88
|
+
.rs-tag--info[data-v-d8327085] {
|
|
91
89
|
background: var(--rs-info-container);
|
|
92
90
|
color: var(--rs-on-info-container);
|
|
93
91
|
border: 1px solid color-mix(in srgb, var(--rs-info) var(--rs-tag-border-alpha, 40%), transparent);
|
|
94
92
|
}
|
|
93
|
+
@media (forced-colors: active) {
|
|
94
|
+
.rs-tag[data-v-d8327085] {
|
|
95
|
+
border: 1px solid CanvasText;
|
|
96
|
+
forced-color-adjust: none;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import type
|
|
2
|
-
|
|
1
|
+
import { type RsComponentSize, type RsRadius } from '../../../theme/types';
|
|
2
|
+
import type { RsTagVariant } from './tag-utils';
|
|
3
|
+
export type { RsTagVariant };
|
|
3
4
|
type __VLS_Props = {
|
|
4
5
|
variant?: RsTagVariant;
|
|
5
6
|
closable?: boolean;
|
|
@@ -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,9 +1,9 @@
|
|
|
1
1
|
import { RS_COMPONENT_SIZE_ICON_PX } from "../../../theme/types.js";
|
|
2
|
+
import { PopoverContent, PopoverPortal, PopoverRoot, PopoverTrigger } from "../../_shared/src/reka.js";
|
|
2
3
|
import { useRsI18n } from "../../../composables/useRsI18n.js";
|
|
3
4
|
import RsIcon_default from "../../icon/src/RsIcon.js";
|
|
4
5
|
import { isRsFormItemBoundControl, useRsFormItemContext } from "../../form/src/form-utils.js";
|
|
5
6
|
import { useResolvedRsComponentSize } from "../../_shared/src/resolve-size.js";
|
|
6
|
-
import { PopoverContent, PopoverPortal, PopoverRoot, PopoverTrigger } from "../../_shared/src/reka.js";
|
|
7
7
|
import { EMPTY_TIME_RANGE, formatTimeFromParts, formatTimeRangeDisplay, getCurrentTime, isTimeRangeEmpty, isTimeRangeOrderedValues, isTimeWithinBounds, parseTimeValue, pickEarlierTime, pickLaterTime } from "./time-picker-utils.js";
|
|
8
8
|
import RsTimePickerColumns_default from "./RsTimePickerColumns.js";
|
|
9
9
|
import { Fragment, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createTextVNode, createVNode, defineComponent, mergeModels, mergeProps, nextTick, normalizeClass, openBlock, ref, resolveComponent, toDisplayString, unref, useAttrs, useId, useModel, useTemplateRef, watch, withCtx } from "vue";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
+
import { TooltipContent, TooltipPortal, TooltipRoot, TooltipTrigger } from "../../_shared/src/reka.js";
|
|
1
2
|
import { useRsI18n } from "../../../composables/useRsI18n.js";
|
|
2
3
|
import RsIcon_default from "../../icon/src/RsIcon.js";
|
|
3
|
-
import { TooltipContent, TooltipPortal, TooltipRoot, TooltipTrigger } from "../../_shared/src/reka.js";
|
|
4
4
|
import { computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createTextVNode, createVNode, defineComponent, normalizeClass, openBlock, renderSlot, toDisplayString, unref, useSlots, withCtx } from "vue";
|
|
5
5
|
//#region src/components/tooltip/src/RsTooltip.vue?vue&type=script&setup=true&lang.ts
|
|
6
6
|
var _hoisted_1 = {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { defaultLocale } from "../locale/types.js";
|
|
2
1
|
import { isRsLocaleRegistered } from "../locale/registry.js";
|
|
2
|
+
import { resolveHostLocale } from "../locale/resolve-host.js";
|
|
3
3
|
import { readResolvedTheme } from "../theme/apply.js";
|
|
4
4
|
import RsConfigProvider_default from "../components/config-provider/src/RsConfigProvider.js";
|
|
5
5
|
import RsDialog_default from "../components/dialog/src/RsDialog.js";
|
|
@@ -10,9 +10,9 @@ function readDomTheme() {
|
|
|
10
10
|
return readResolvedTheme();
|
|
11
11
|
}
|
|
12
12
|
function readDomLocale() {
|
|
13
|
-
if (typeof document === "undefined") return
|
|
13
|
+
if (typeof document === "undefined") return resolveHostLocale();
|
|
14
14
|
const value = document.documentElement.getAttribute("data-rs-locale");
|
|
15
|
-
return value && isRsLocaleRegistered(value) ? value :
|
|
15
|
+
return value && isRsLocaleRegistered(value) ? value : resolveHostLocale();
|
|
16
16
|
}
|
|
17
17
|
/** 命令式实例的销毁函数;测试收尾用 destroyAllRsDialogHosts 走正规 unmount。 */
|
|
18
18
|
var liveHosts = /* @__PURE__ */ new Set();
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { interpolateRsMessage, resolveRsTranslateArgs } from "../locale/interpolate.js";
|
|
2
|
-
import { defaultLocale } from "../locale/types.js";
|
|
3
2
|
import { resolveRsMessage } from "../locale/registry.js";
|
|
3
|
+
import { resolveHostLocale } from "../locale/resolve-host.js";
|
|
4
4
|
import { resolveThemeMode } from "../theme/apply.js";
|
|
5
5
|
import { inject, provide, ref } from "vue";
|
|
6
6
|
//#region src/composables/useRsConfig.ts
|
|
@@ -14,7 +14,7 @@ function useRsConfig() {
|
|
|
14
14
|
function useRsConfigOptional() {
|
|
15
15
|
return inject(rsConfigKey, null);
|
|
16
16
|
}
|
|
17
|
-
function createRsConfigState(initialTheme = "light", initialLocale =
|
|
17
|
+
function createRsConfigState(initialTheme = "light", initialLocale = resolveHostLocale(), initialControlSize = "md", initialControlRadius, initialDir = "auto") {
|
|
18
18
|
const theme = ref(initialTheme);
|
|
19
19
|
const resolvedTheme = ref(resolveThemeMode(initialTheme));
|
|
20
20
|
const locale = ref(initialLocale);
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { type RsI18nVars, type RsTranslateFn } from '../locale/interpolate';
|
|
2
2
|
import { type RsLocale } from '../locale/types';
|
|
3
3
|
export type { RsI18nVars, RsTranslateFn };
|
|
4
|
-
/** 组件内安全取文案:Provider 内跟随 locale
|
|
4
|
+
/** 组件内安全取文案:Provider 内跟随 locale,否则按本机语言,再回退 zh-CN */
|
|
5
5
|
export declare function useRsI18n(): {
|
|
6
6
|
t: RsTranslateFn;
|
|
7
7
|
locale: import("vue").ComputedRef<RsLocale>;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { interpolateRsMessage, resolveRsTranslateArgs } from "../locale/interpolate.js";
|
|
2
|
-
import "../locale/types.js";
|
|
3
2
|
import { resolveRsMessage } from "../locale/registry.js";
|
|
3
|
+
import { resolveHostLocale } from "../locale/resolve-host.js";
|
|
4
4
|
import { rsConfigKey } from "./useRsConfig.js";
|
|
5
5
|
import { computed, inject } from "vue";
|
|
6
6
|
//#region src/composables/useRsI18n.ts
|
|
@@ -8,10 +8,10 @@ function translate(locale, key, fallbackOrVars, vars) {
|
|
|
8
8
|
const parsed = resolveRsTranslateArgs(fallbackOrVars, vars);
|
|
9
9
|
return interpolateRsMessage(resolveRsMessage(locale, key) ?? parsed.fallback ?? key, parsed.vars, locale);
|
|
10
10
|
}
|
|
11
|
-
/** 组件内安全取文案:Provider 内跟随 locale
|
|
11
|
+
/** 组件内安全取文案:Provider 内跟随 locale,否则按本机语言,再回退 zh-CN */
|
|
12
12
|
function useRsI18n() {
|
|
13
13
|
const ctx = inject(rsConfigKey, null);
|
|
14
|
-
const locale = computed(() => ctx?.locale.value ??
|
|
14
|
+
const locale = computed(() => ctx?.locale.value ?? resolveHostLocale());
|
|
15
15
|
const t = (key, fallbackOrVars, vars) => translate(locale.value, key, fallbackOrVars, vars);
|
|
16
16
|
return {
|
|
17
17
|
t,
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export { RsConfigProvider } from './components/config-provider';
|
|
2
2
|
export { RsBadge } from './components/badge';
|
|
3
|
+
export type { RsBadgeVariant } from './components/badge';
|
|
3
4
|
export { RsContainer } from './components/container';
|
|
4
5
|
export { RsBreadcrumb } from './components/breadcrumb';
|
|
5
6
|
export { RsAnchor } from './components/anchor';
|
|
@@ -21,6 +22,7 @@ export { RsDynamicTags } from './components/dynamic-tags';
|
|
|
21
22
|
export type { RsDynamicTagsInputMode, RsDynamicTagsRejectReason, } from './components/dynamic-tags';
|
|
22
23
|
export { RsAlert } from './components/alert';
|
|
23
24
|
export { RsDivider } from './components/divider';
|
|
25
|
+
export type { RsDividerOrientation } from './components/divider';
|
|
24
26
|
export { RsDescriptions } from './components/descriptions';
|
|
25
27
|
export { RsDescriptionsItem } from './components/descriptions';
|
|
26
28
|
export type { RsDescriptionsItem as RsDescriptionsItemData, RsDescriptionsLabelPlacement, RsDescriptionsSize, } from './components/descriptions';
|
|
@@ -38,6 +40,7 @@ export type { RsInputNumberValue } from './components/input-number';
|
|
|
38
40
|
export { clampNumber, formatNumberValue, fromModelValue, isNumberInputInterim, normalizeCommittedNumber, parseNumberInput, resolveNumberPrecision, roundToPrecision, stepNumberValue, toModelValue, } from './components/input-number';
|
|
39
41
|
export { RsLabel } from './components/label';
|
|
40
42
|
export { RsLink } from './components/link';
|
|
43
|
+
export type { RsLinkTone, RsLinkUnderline } from './components/link';
|
|
41
44
|
export { RsMenu } from './components/menu';
|
|
42
45
|
export { RsSelect } from './components/select';
|
|
43
46
|
export { RsAutoComplete } from './components/auto-complete';
|
|
@@ -220,7 +223,8 @@ export type { RsThemeMode, RsResolvedTheme, RsThemeTokens, RsComponentSize, RsRa
|
|
|
220
223
|
export { RS_COMPONENT_SIZES, RS_COMPONENT_SIZE_ICON_PX, RS_RADII, RS_RADIUS_CSS, RS_FONT_SIZES, RS_FONT_SIZE_CSS, RS_FONT_WEIGHTS, RS_FONT_WEIGHT_CSS, } from './theme/types';
|
|
221
224
|
export type { RsBuiltinLocale, RsDirMode, RsLocale, RsLocaleMessages, RsTextDirection, } from './locale/types';
|
|
222
225
|
export { defaultLocale, fallbackLocale } from './locale/types';
|
|
223
|
-
export {
|
|
226
|
+
export { rsLocaleMessageKeys } from './locale/messages';
|
|
227
|
+
export { applyLocale, inferRsLocaleDir, isRsLocaleRegistered, listRsLocales, registerRsLocale, resolveDirMode, resolveHostLocale, resolveRsLocaleDir, resolveRsMessage, } from './locale/registry-public';
|
|
224
228
|
export { useRsConfig, useRsConfigOptional, createRsConfigState } from './composables/useRsConfig';
|
|
225
229
|
export { useResolvedRsComponentSize, resolveRsComponentSize } from './components/_shared';
|
|
226
230
|
export { useResolvedRsRadius, rsRadiusCss } from './components/_shared';
|
package/dist/index.js
CHANGED
|
@@ -346,11 +346,13 @@ export { resolveCodeEditorTheme } from './components/code-editor/src/code-editor
|
|
|
346
346
|
export { resolveCodeMirrorLanguage } from './components/code-editor/src/code-mirror-lang.js'
|
|
347
347
|
export { resolveColumnOrder } from './components/table/src/utils/table-utils.js'
|
|
348
348
|
export { resolveDialogOverlayStyle } from './components/dialog/src/dialog-utils.js'
|
|
349
|
+
export { resolveDirMode } from './locale/apply.js'
|
|
349
350
|
export { resolveDrawerOverlayStyle } from './components/drawer/src/drawer-utils.js'
|
|
350
351
|
export { resolveEntryKey } from './components/table/src/utils/table-utils.js'
|
|
351
352
|
export { resolveFieldRules } from './components/form/src/form-utils.js'
|
|
352
353
|
export { resolveFixedColumnStyles } from './components/table/src/utils/table-utils.js'
|
|
353
354
|
export { resolveGridNavDirection } from './components/table/src/utils/rs-table-grid-nav.js'
|
|
355
|
+
export { resolveHostLocale } from './locale/resolve-host.js'
|
|
354
356
|
export { resolveInstanceFeatures } from './components/table/src/context/rs-table-module-registry.js'
|
|
355
357
|
export { resolveItemSize } from './components/virtual-list/src/virtual-list-utils.js'
|
|
356
358
|
export { resolveLogCopyText } from './components/log/src/log-utils.js'
|
|
@@ -400,6 +402,7 @@ export { rsBrandIconNames } from './icons/brand.js'
|
|
|
400
402
|
export { rsCommonIconNames } from './icons/registry.js'
|
|
401
403
|
export { rsConfirm } from './composables/createRsDialog.js'
|
|
402
404
|
export { rsFeedbackIconClass } from './components/_shared/src/overlay-utils.js'
|
|
405
|
+
export { rsLocaleMessageKeys } from './locale/messages.js'
|
|
403
406
|
export { rsRadiusCss } from './components/_shared/src/resolve-radius.js'
|
|
404
407
|
export { rsToastPositions } from './components/_shared/src/overlay-utils.js'
|
|
405
408
|
export { runFormFieldRules } from './components/form/src/form-rules.js'
|
|
@@ -89,15 +89,27 @@ function readBalanced(source, open) {
|
|
|
89
89
|
}
|
|
90
90
|
return null;
|
|
91
91
|
}
|
|
92
|
+
var pluralRulesByLocale = /* @__PURE__ */ new Map();
|
|
93
|
+
function pluralRulesFor(locale) {
|
|
94
|
+
const cached = pluralRulesByLocale.get(locale);
|
|
95
|
+
if (cached) return cached;
|
|
96
|
+
try {
|
|
97
|
+
const rules = new Intl.PluralRules(locale);
|
|
98
|
+
pluralRulesByLocale.set(locale, rules);
|
|
99
|
+
return rules;
|
|
100
|
+
} catch {
|
|
101
|
+
return;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
92
104
|
function pickPluralClause(locale, n, clauses) {
|
|
93
105
|
if (Number.isFinite(n)) {
|
|
94
106
|
const exact = clauses.get(`=${n}`);
|
|
95
107
|
if (exact != null) return exact;
|
|
96
|
-
|
|
97
|
-
|
|
108
|
+
const category = pluralRulesFor(locale)?.select(n);
|
|
109
|
+
if (category) {
|
|
98
110
|
const matched = clauses.get(category);
|
|
99
111
|
if (matched != null) return matched;
|
|
100
|
-
}
|
|
112
|
+
}
|
|
101
113
|
}
|
|
102
114
|
return clauses.get("other") ?? "";
|
|
103
115
|
}
|
package/dist/locale/messages.js
CHANGED
|
@@ -465,5 +465,7 @@ var enUS = {
|
|
|
465
465
|
"markdown.placeholder": "Markdown supported (headings, lists, links, code…)",
|
|
466
466
|
"markdown.empty": "Nothing to preview"
|
|
467
467
|
};
|
|
468
|
+
/** 社区语言包应对齐的 key 清单(与 en-US 表相同)。 */
|
|
469
|
+
var rsLocaleMessageKeys = Object.keys(enUS);
|
|
468
470
|
//#endregion
|
|
469
|
-
export { enUS, zhCN };
|
|
471
|
+
export { enUS, rsLocaleMessageKeys, zhCN };
|
|
@@ -1,2 +1,3 @@
|
|
|
1
1
|
export { applyLocale, readDocumentLocale, resolveDirMode } from './apply';
|
|
2
|
+
export { resolveHostLocale } from './resolve-host';
|
|
2
3
|
export { inferRsLocaleDir, isRsLocaleRegistered, listRsLocales, registerRsLocale, resolveRsLocaleDir, resolveRsLocalePack, resolveRsMessage, } from './registry';
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { defaultLocale } from "./types.js";
|
|
2
|
+
import { isRsLocaleRegistered, listRsLocales } from "./registry.js";
|
|
3
|
+
//#region src/locale/resolve-host.ts
|
|
4
|
+
/**
|
|
5
|
+
* 未设 locale 时按本机语言选已登记的包。
|
|
6
|
+
* `zh*` → zh-CN,`en*` → en-US,其它按已登记码的语言前缀匹配。
|
|
7
|
+
* 没有 navigator(SSR)或无法识别时回退 `defaultLocale`(zh-CN)。
|
|
8
|
+
*/
|
|
9
|
+
function resolveHostLocale() {
|
|
10
|
+
for (const tag of readHostLanguageTags()) {
|
|
11
|
+
const matched = matchRegisteredLocale(tag);
|
|
12
|
+
if (matched) return matched;
|
|
13
|
+
}
|
|
14
|
+
return defaultLocale;
|
|
15
|
+
}
|
|
16
|
+
function readHostLanguageTags() {
|
|
17
|
+
const tags = [];
|
|
18
|
+
if (typeof navigator !== "undefined") {
|
|
19
|
+
if (Array.isArray(navigator.languages)) tags.push(...navigator.languages);
|
|
20
|
+
if (navigator.language) tags.push(navigator.language);
|
|
21
|
+
}
|
|
22
|
+
const seen = /* @__PURE__ */ new Set();
|
|
23
|
+
const unique = [];
|
|
24
|
+
for (const tag of tags) {
|
|
25
|
+
const normalized = tag.trim();
|
|
26
|
+
if (!normalized) continue;
|
|
27
|
+
const key = normalized.toLowerCase();
|
|
28
|
+
if (seen.has(key)) continue;
|
|
29
|
+
seen.add(key);
|
|
30
|
+
unique.push(normalized);
|
|
31
|
+
}
|
|
32
|
+
return unique;
|
|
33
|
+
}
|
|
34
|
+
function matchRegisteredLocale(tag) {
|
|
35
|
+
const normalized = tag.trim().replace(/_/g, "-");
|
|
36
|
+
if (!normalized) return void 0;
|
|
37
|
+
if (isRsLocaleRegistered(normalized)) return normalized;
|
|
38
|
+
const lower = normalized.toLowerCase();
|
|
39
|
+
for (const code of listRsLocales()) if (code.toLowerCase() === lower) return code;
|
|
40
|
+
const base = lower.split("-")[0] ?? "";
|
|
41
|
+
if (base === "zh" && isRsLocaleRegistered("zh-CN")) return "zh-CN";
|
|
42
|
+
if (base === "en" && isRsLocaleRegistered("en-US")) return "en-US";
|
|
43
|
+
for (const code of listRsLocales()) if (code.toLowerCase().split(/[-_]/)[0] === base) return code;
|
|
44
|
+
}
|
|
45
|
+
//#endregion
|
|
46
|
+
export { resolveHostLocale };
|
package/dist/locale/types.d.ts
CHANGED
|
@@ -6,7 +6,9 @@ export type RsLocaleMessages = Record<string, string>;
|
|
|
6
6
|
export type RsTextDirection = 'ltr' | 'rtl';
|
|
7
7
|
/** 书写方向:auto 跟当前 locale 的 dir。 */
|
|
8
8
|
export type RsDirMode = RsTextDirection | 'auto';
|
|
9
|
+
/** 无法从本机语言识别时的回退。当前用户以中文为主,回退 zh-CN。 */
|
|
9
10
|
export declare const defaultLocale: RsBuiltinLocale;
|
|
11
|
+
/** 缺 key 时先回退到该语言,再回退 zh-CN。 */
|
|
10
12
|
export declare const fallbackLocale: RsBuiltinLocale;
|
|
11
13
|
export declare const localeAttribute = "data-rs-locale";
|
|
12
14
|
export declare const dirAttribute = "data-rs-dir";
|
package/dist/locale/types.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "niuma-ui",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.3",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"description": "Vue 3 workbench design system — Rs* components, --rs-* tokens, optional Monaco / CodeMirror / xterm",
|
|
@@ -68,6 +68,7 @@
|
|
|
68
68
|
"LICENSE",
|
|
69
69
|
"NOTICE",
|
|
70
70
|
"README.md",
|
|
71
|
+
"README.zh-CN.md",
|
|
71
72
|
"README.en.md",
|
|
72
73
|
"CHANGELOG.md"
|
|
73
74
|
],
|
|
@@ -76,8 +77,8 @@
|
|
|
76
77
|
"**/*.scss"
|
|
77
78
|
],
|
|
78
79
|
"peerDependencies": {
|
|
79
|
-
"
|
|
80
|
-
"
|
|
80
|
+
"vite": ">=5",
|
|
81
|
+
"vue": "^3.5.0"
|
|
81
82
|
},
|
|
82
83
|
"peerDependenciesMeta": {
|
|
83
84
|
"vite": {
|
|
@@ -105,18 +106,18 @@
|
|
|
105
106
|
"@codemirror/theme-one-dark": "^6.1.3",
|
|
106
107
|
"@codemirror/view": "^6.43.1",
|
|
107
108
|
"@lucide/vue": "^1.31.0",
|
|
109
|
+
"@rollup/pluginutils": "^5.3.0",
|
|
108
110
|
"@xterm/addon-fit": "^0.11.0",
|
|
109
111
|
"@xterm/addon-search": "^0.16.0",
|
|
110
112
|
"@xterm/xterm": "^6.0.0",
|
|
111
113
|
"codemirror": "^6.0.2",
|
|
112
114
|
"dayjs": "^1.11.21",
|
|
113
115
|
"dompurify": "^3.4.13",
|
|
116
|
+
"es-module-lexer": "^1.7.0",
|
|
117
|
+
"magic-string": "^0.30.17",
|
|
114
118
|
"marked": "^18.0.9",
|
|
115
119
|
"monaco-editor": "^0.55.1",
|
|
116
120
|
"monaco-sql-languages": "^1.2.0",
|
|
117
|
-
"@rollup/pluginutils": "^5.3.0",
|
|
118
|
-
"es-module-lexer": "^1.7.0",
|
|
119
|
-
"magic-string": "^0.30.17",
|
|
120
121
|
"reka-ui": "^2.9.10",
|
|
121
122
|
"vue-sonner": "^2.0.9"
|
|
122
123
|
},
|
|
@@ -131,8 +132,9 @@
|
|
|
131
132
|
"vite": "^8.1.3",
|
|
132
133
|
"vitest": "^4.1.9",
|
|
133
134
|
"vue": "^3.5.39",
|
|
134
|
-
"vue-
|
|
135
|
-
"vue-router": "^5.1.0"
|
|
135
|
+
"vue-i18n": "^11.4.12",
|
|
136
|
+
"vue-router": "^5.1.0",
|
|
137
|
+
"vue-tsc": "^3.3.6"
|
|
136
138
|
},
|
|
137
139
|
"engines": {
|
|
138
140
|
"node": ">=20"
|