niuma-ui 1.3.0 → 1.3.2

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.
Files changed (54) hide show
  1. package/CHANGELOG.md +25 -0
  2. package/dist/components/RsButton.css +119 -61
  3. package/dist/components/RsButton.d.ts +3 -3
  4. package/dist/components/RsButton.impl.js +4 -12
  5. package/dist/components/RsButton.js +1 -1
  6. package/dist/components/RsDialog.css +1 -0
  7. package/dist/components/RsDialog.d.ts +5 -0
  8. package/dist/components/RsDialog.impl.js +4 -0
  9. package/dist/components/RsDrawer.css +1 -0
  10. package/dist/components/RsFieldset.css +92 -0
  11. package/dist/components/RsFieldset.d.ts +61 -0
  12. package/dist/components/RsFieldset.impl.js +78 -0
  13. package/dist/components/RsFieldset.js +8 -0
  14. package/dist/components/RsFormItem.css +19 -19
  15. package/dist/components/RsFormItem.d.ts +6 -4
  16. package/dist/components/RsFormItem.impl.js +12 -2
  17. package/dist/components/RsFormItem.js +1 -1
  18. package/dist/components/RsInput.css +78 -69
  19. package/dist/components/RsInput.js +1 -1
  20. package/dist/components/RsLog.css +198 -0
  21. package/dist/components/RsLog.d.ts +126 -0
  22. package/dist/components/RsLog.impl.js +619 -0
  23. package/dist/components/RsLog.js +8 -0
  24. package/dist/components/RsTable.impl.js +2 -1
  25. package/dist/components/RsTextarea.css +126 -0
  26. package/dist/components/RsTextarea.d.ts +114 -0
  27. package/dist/components/RsTextarea.impl.js +385 -0
  28. package/dist/components/RsTextarea.js +8 -0
  29. package/dist/components/RsTooltip.css +4 -3
  30. package/dist/components/RsTooltip.d.ts +2 -0
  31. package/dist/components/RsTooltip.impl.js +5 -2
  32. package/dist/components/RsVirtualList.css +6 -6
  33. package/dist/components/RsVirtualList.d.ts +1 -1
  34. package/dist/components/RsVirtualList.impl.js +9 -4
  35. package/dist/components/RsVirtualList.js +1 -1
  36. package/dist/components/button-utils.d.ts +19 -10
  37. package/dist/components/button-utils.js +22 -7
  38. package/dist/components/dialog-window.d.ts +2 -0
  39. package/dist/components/dialog-window.js +2 -1
  40. package/dist/components/fieldset-utils.d.ts +29 -0
  41. package/dist/components/fieldset-utils.js +12 -0
  42. package/dist/components/log-utils.d.ts +105 -0
  43. package/dist/components/log-utils.js +354 -0
  44. package/dist/components/table/rs-table-props.d.ts +8 -0
  45. package/dist/components/table/rs-table-props.js +1 -0
  46. package/dist/components/table/rs-table.css +7 -0
  47. package/dist/index.d.ts +10 -2
  48. package/dist/index.js +24 -0
  49. package/dist/lib/rs-dayjs.js +1 -1
  50. package/dist/locale/messages.js +42 -0
  51. package/dist/styles.css +37 -0
  52. package/dist/vite-plugins/niuma-ui-host.d.ts +8 -0
  53. package/dist/vite-plugins/niuma-ui-host.js +47 -9
  54. package/package.json +1 -1
@@ -0,0 +1,61 @@
1
+ import type { RsFontWeight } from '../theme/types';
2
+ import { type RsFieldsetBorderStyle, type RsFieldsetBorderTone, type RsFieldsetSize, type RsFieldsetTitleSize, type RsFieldsetTitleTone } from './fieldset-utils';
3
+ type __VLS_Props = {
4
+ /** 分组标题,渲染为原生 legend(WHATWG / WCAG 1.3.1 组名) */
5
+ legend?: string;
6
+ /**
7
+ * 分组说明。标题旁帮助图标,悬停出 tip(对齐 Ant Form.Item tooltip)。
8
+ * 不进 legend,避免读屏把长文案当组名。
9
+ */
10
+ tooltip?: string;
11
+ /**
12
+ * @deprecated 请用 tooltip。仍接受,映射到同一 tip。
13
+ */
14
+ description?: string;
15
+ /** 禁用整组原生控件(input / select / textarea / button) */
16
+ disabled?: boolean;
17
+ /**
18
+ * 密度:sm 对话框紧凑 / md 设置页默认。
19
+ * @default md
20
+ */
21
+ size?: RsFieldsetSize;
22
+ /** 原生 fieldset name */
23
+ name?: string;
24
+ /** 边框线型 */
25
+ borderStyle?: RsFieldsetBorderStyle;
26
+ /** 边框浓度;faded 为虚化 */
27
+ borderTone?: RsFieldsetBorderTone;
28
+ /** 标题字重(清晰度) */
29
+ titleWeight?: RsFontWeight;
30
+ /** 标题对比(清晰度) */
31
+ titleTone?: RsFieldsetTitleTone;
32
+ /** 标题字号 */
33
+ titleSize?: RsFieldsetTitleSize;
34
+ };
35
+ declare var __VLS_1: {}, __VLS_10: {}, __VLS_12: {}, __VLS_14: {};
36
+ type __VLS_Slots = {} & {
37
+ legend?: (props: typeof __VLS_1) => any;
38
+ } & {
39
+ tooltip?: (props: typeof __VLS_10) => any;
40
+ } & {
41
+ extra?: (props: typeof __VLS_12) => any;
42
+ } & {
43
+ default?: (props: typeof __VLS_14) => any;
44
+ };
45
+ declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
46
+ size: RsFieldsetSize;
47
+ disabled: boolean;
48
+ borderStyle: RsFieldsetBorderStyle;
49
+ borderTone: RsFieldsetBorderTone;
50
+ titleWeight: RsFontWeight;
51
+ titleTone: RsFieldsetTitleTone;
52
+ titleSize: RsFieldsetTitleSize;
53
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
54
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
55
+ declare const _default: typeof __VLS_export;
56
+ export default _default;
57
+ type __VLS_WithSlots<T, S> = T & {
58
+ new (): {
59
+ $slots: S;
60
+ };
61
+ };
@@ -0,0 +1,78 @@
1
+ import { useRsI18n } from "../composables/useRsI18n.js";
2
+ import { useRsFormContext } from "./form-utils.js";
3
+ import RsTooltip_default from "./RsTooltip.js";
4
+ import { resolveFieldsetTitleSize, resolveFieldsetTitleWeight } from "./fieldset-utils.js";
5
+ import { computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createSlots, defineComponent, normalizeClass, normalizeStyle, openBlock, renderSlot, toDisplayString, useSlots, withCtx } from "vue";
6
+ //#region src/components/RsFieldset.vue?vue&type=script&setup=true&lang.ts
7
+ var _hoisted_1 = ["name", "disabled"];
8
+ var _hoisted_2 = {
9
+ key: 0,
10
+ class: "rs-fieldset__legend"
11
+ };
12
+ var _hoisted_3 = { class: "rs-fieldset__heading" };
13
+ var _hoisted_4 = { class: "rs-fieldset__title" };
14
+ var _hoisted_5 = {
15
+ key: 0,
16
+ class: "rs-fieldset__extra"
17
+ };
18
+ var _hoisted_6 = { class: "rs-fieldset__body" };
19
+ var RsFieldset_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
20
+ name: "RsFieldset",
21
+ __name: "RsFieldset",
22
+ props: {
23
+ legend: {},
24
+ tooltip: {},
25
+ description: {},
26
+ disabled: {
27
+ type: Boolean,
28
+ default: false
29
+ },
30
+ size: { default: "md" },
31
+ name: {},
32
+ borderStyle: { default: "solid" },
33
+ borderTone: { default: "default" },
34
+ titleWeight: { default: "semibold" },
35
+ titleTone: { default: "default" },
36
+ titleSize: { default: "sm" }
37
+ },
38
+ setup(__props) {
39
+ const props = __props;
40
+ const slots = useSlots();
41
+ const { t } = useRsI18n();
42
+ const form = useRsFormContext();
43
+ const isDisabled = computed(() => Boolean(props.disabled || form?.disabled.value));
44
+ const resolvedTooltip = computed(() => (props.tooltip || props.description || "").trim());
45
+ const hasTooltip = computed(() => Boolean(resolvedTooltip.value || slots.tooltip));
46
+ const hasLegend = computed(() => Boolean(props.legend || slots.legend || slots.extra || hasTooltip.value));
47
+ const helpLabel = computed(() => t("fieldset.help", "Group help"));
48
+ const rootStyle = computed(() => ({
49
+ "--rs-fieldset-title-size": resolveFieldsetTitleSize(props.titleSize),
50
+ "--rs-fieldset-title-weight": resolveFieldsetTitleWeight(props.titleWeight)
51
+ }));
52
+ return (_ctx, _cache) => {
53
+ return openBlock(), createElementBlock("fieldset", {
54
+ class: normalizeClass(["rs-fieldset", [
55
+ `rs-fieldset--${__props.size}`,
56
+ `rs-fieldset--${__props.borderStyle}`,
57
+ `rs-fieldset--tone-${__props.borderTone}`,
58
+ `rs-fieldset--title-${__props.titleTone}`,
59
+ { "rs-fieldset--disabled": isDisabled.value }
60
+ ]]),
61
+ style: normalizeStyle(rootStyle.value),
62
+ name: __props.name,
63
+ disabled: isDisabled.value
64
+ }, [hasLegend.value ? (openBlock(), createElementBlock("legend", _hoisted_2, [createElementVNode("span", _hoisted_3, [renderSlot(_ctx.$slots, "legend", {}, () => [createElementVNode("span", _hoisted_4, toDisplayString(__props.legend), 1)], true), hasTooltip.value ? (openBlock(), createBlock(RsTooltip_default, {
65
+ key: 0,
66
+ icon: "",
67
+ content: resolvedTooltip.value,
68
+ "aria-label": helpLabel.value
69
+ }, createSlots({ _: 2 }, [_ctx.$slots.tooltip ? {
70
+ name: "content",
71
+ fn: withCtx(() => [renderSlot(_ctx.$slots, "tooltip", {}, void 0, true)]),
72
+ key: "0"
73
+ } : void 0]), 1032, ["content", "aria-label"])) : createCommentVNode("", true)]), _ctx.$slots.extra ? (openBlock(), createElementBlock("span", _hoisted_5, [renderSlot(_ctx.$slots, "extra", {}, void 0, true)])) : createCommentVNode("", true)])) : createCommentVNode("", true), createElementVNode("div", _hoisted_6, [renderSlot(_ctx.$slots, "default", {}, void 0, true)])], 14, _hoisted_1);
74
+ };
75
+ }
76
+ });
77
+ //#endregion
78
+ export { RsFieldset_vue_vue_type_script_setup_true_lang_default as default };
@@ -0,0 +1,8 @@
1
+ import './RsFieldset.css'
2
+ import _plugin_vue_export_helper_default from "../_virtual/_plugin-vue_export-helper.js";
3
+ import RsFieldset_vue_vue_type_script_setup_true_lang_default from "./RsFieldset.impl.js";
4
+
5
+ //#region src/components/RsFieldset.vue
6
+ var RsFieldset_default = /*#__PURE__*/ _plugin_vue_export_helper_default(RsFieldset_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-4d65b83d"]]);
7
+ //#endregion
8
+ export { RsFieldset_default as default };
@@ -1,5 +1,5 @@
1
1
 
2
- .rs-form-item__control[data-v-d87b2b06] {
2
+ .rs-form-item__control[data-v-e6a747b7] {
3
3
  width: 100%;
4
4
  min-height: var(--rs-control-height-md);
5
5
  min-width: 0;
@@ -9,44 +9,44 @@
9
9
  * 左侧标签与控件行等高、文字垂直居中。
10
10
  * 网格仍是 align-items:start,错误文案在第 2 列,不会把 label 顶歪。
11
11
  */
12
- .rs-field--label-left > .rs-field__label[data-v-d87b2b06] {
12
+ .rs-field--label-left > .rs-field__label[data-v-e6a747b7] {
13
13
  display: flex;
14
14
  align-items: center;
15
15
  box-sizing: border-box;
16
16
  min-height: var(--rs-control-height-md);
17
17
  }
18
- .rs-form-item--ssm.rs-field--label-left > .rs-field__label[data-v-d87b2b06],
19
- .rs-form-item--ssm .rs-form-item__control[data-v-d87b2b06] {
18
+ .rs-form-item--ssm.rs-field--label-left > .rs-field__label[data-v-e6a747b7],
19
+ .rs-form-item--ssm .rs-form-item__control[data-v-e6a747b7] {
20
20
  min-height: var(--rs-control-height-ssm);
21
21
  }
22
- .rs-form-item--sm.rs-field--label-left > .rs-field__label[data-v-d87b2b06],
23
- .rs-form-item--sm .rs-form-item__control[data-v-d87b2b06] {
22
+ .rs-form-item--sm.rs-field--label-left > .rs-field__label[data-v-e6a747b7],
23
+ .rs-form-item--sm .rs-form-item__control[data-v-e6a747b7] {
24
24
  min-height: var(--rs-control-height-sm);
25
25
  }
26
- .rs-form-item--lg.rs-field--label-left > .rs-field__label[data-v-d87b2b06],
27
- .rs-form-item--lg .rs-form-item__control[data-v-d87b2b06] {
26
+ .rs-form-item--lg.rs-field--label-left > .rs-field__label[data-v-e6a747b7],
27
+ .rs-form-item--lg .rs-form-item__control[data-v-e6a747b7] {
28
28
  min-height: var(--rs-control-height-lg);
29
29
  }
30
- .rs-field--label-left .rs-form-item__control[data-v-d87b2b06],
31
- .rs-field--label-left .rs-form-item__error[data-v-d87b2b06],
32
- .rs-field--label-left .rs-form-item__help[data-v-d87b2b06],
33
- .rs-field--label-left .rs-form-item__extra[data-v-d87b2b06] {
30
+ .rs-field--label-left .rs-form-item__control[data-v-e6a747b7],
31
+ .rs-field--label-left .rs-form-item__error[data-v-e6a747b7],
32
+ .rs-field--label-left .rs-form-item__help[data-v-e6a747b7],
33
+ .rs-field--label-left .rs-form-item__extra[data-v-e6a747b7] {
34
34
  grid-column: 2;
35
35
  }
36
- .rs-form-item__error[data-v-d87b2b06],
37
- .rs-form-item__help[data-v-d87b2b06],
38
- .rs-form-item__extra[data-v-d87b2b06] {
36
+ .rs-form-item__error[data-v-e6a747b7],
37
+ .rs-form-item__help[data-v-e6a747b7],
38
+ .rs-form-item__extra[data-v-e6a747b7] {
39
39
  margin: 0.25rem 0 0;
40
40
  font-size: var(--rs-font-size-xs);
41
41
  line-height: var(--rs-line-height-tight);
42
42
  }
43
- .rs-form-item__error[data-v-d87b2b06] {
43
+ .rs-form-item__error[data-v-e6a747b7] {
44
44
  color: var(--rs-danger);
45
45
  }
46
- .rs-form-item__help[data-v-d87b2b06],
47
- .rs-form-item__extra[data-v-d87b2b06] {
46
+ .rs-form-item__help[data-v-e6a747b7],
47
+ .rs-form-item__extra[data-v-e6a747b7] {
48
48
  color: var(--rs-muted);
49
49
  }
50
- .rs-form-item--warning .rs-form-item__error[data-v-d87b2b06] {
50
+ .rs-form-item--warning .rs-form-item__error[data-v-e6a747b7] {
51
51
  color: var(--rs-warning, #d48806);
52
52
  }
@@ -10,6 +10,8 @@ type __VLS_Props = {
10
10
  errorMessage?: string;
11
11
  showMessage?: boolean;
12
12
  hint?: string;
13
+ /** 标签旁帮助图标,悬停出提示(对齐 Ant Design Form.Item tooltip,不另起一行) */
14
+ tooltip?: string;
13
15
  /** 始终展示的辅助说明(错误出现时仍保留) */
14
16
  extra?: string;
15
17
  /** 无错误时的说明;出错时被错误文案替换 */
@@ -29,13 +31,13 @@ type __VLS_ModelProps = {
29
31
  modelValue?: unknown;
30
32
  };
31
33
  type __VLS_PublicProps = __VLS_Props & __VLS_ModelProps;
32
- declare var __VLS_1: {}, __VLS_9: {
34
+ declare var __VLS_1: {}, __VLS_14: {
33
35
  id: string;
34
36
  invalid: boolean;
35
37
  message: string;
36
38
  field: string | undefined;
37
39
  status: RsFormValidateStatus;
38
- }, __VLS_11: {
40
+ }, __VLS_16: {
39
41
  name: string | undefined;
40
42
  message: string;
41
43
  value: unknown;
@@ -43,9 +45,9 @@ declare var __VLS_1: {}, __VLS_9: {
43
45
  type __VLS_Slots = {} & {
44
46
  label?: (props: typeof __VLS_1) => any;
45
47
  } & {
46
- default?: (props: typeof __VLS_9) => any;
48
+ default?: (props: typeof __VLS_14) => any;
47
49
  } & {
48
- error?: (props: typeof __VLS_11) => any;
50
+ error?: (props: typeof __VLS_16) => any;
49
51
  };
50
52
  declare const __VLS_base: import("vue").DefineComponent<__VLS_PublicProps, {
51
53
  validate: typeof runValidate;
@@ -3,6 +3,7 @@ import { buildLocalInputRules, normalizeFormRules, runFormFieldRules } from "./f
3
3
  import { concatNamePath, isIndexSegment, namePathKey } from "./form-path.js";
4
4
  import { provideRsFormItemContext, useRsFormContext, useRsFormField, useRsFormListContext } from "./form-utils.js";
5
5
  import RsVNodeHost_default from "./RsVNodeHost.js";
6
+ import RsTooltip_default from "./RsTooltip.js";
6
7
  import RsFormItemControl_default from "./RsFormItemControl.js";
7
8
  import { Fragment, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createTextVNode, createVNode, defineComponent, guardReactiveProps, mergeModels, normalizeClass, normalizeProps, normalizeStyle, openBlock, ref, renderSlot, toDisplayString, unref, useId, useModel, useSlots, watch, withCtx } from "vue";
8
9
  //#region src/components/RsFormItem.vue?vue&type=script&setup=true&lang.ts
@@ -13,7 +14,7 @@ var _hoisted_2 = {
13
14
  };
14
15
  var _hoisted_3 = ["for"];
15
16
  var _hoisted_4 = {
16
- key: 0,
17
+ key: 1,
17
18
  class: "rs-field__required",
18
19
  "aria-hidden": "true"
19
20
  };
@@ -45,6 +46,7 @@ var RsFormItem_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defin
45
46
  default: true
46
47
  },
47
48
  hint: {},
49
+ tooltip: {},
48
50
  extra: {},
49
51
  help: {},
50
52
  validateStatus: {},
@@ -250,7 +252,15 @@ var RsFormItem_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defin
250
252
  style: normalizeStyle(fieldStyle.value),
251
253
  "data-rs-form-item": nameKey.value
252
254
  }, [
253
- showLabel.value ? (openBlock(), createElementBlock("span", _hoisted_2, [renderSlot(_ctx.$slots, "label", {}, () => [createElementVNode("label", { for: unref(fieldId) }, toDisplayString(__props.label), 9, _hoisted_3)], true), showRequiredMark.value ? (openBlock(), createElementBlock("span", _hoisted_4, "*")) : createCommentVNode("", true)])) : createCommentVNode("", true),
255
+ showLabel.value ? (openBlock(), createElementBlock("span", _hoisted_2, [
256
+ renderSlot(_ctx.$slots, "label", {}, () => [createElementVNode("label", { for: unref(fieldId) }, toDisplayString(__props.label), 9, _hoisted_3)], true),
257
+ __props.tooltip ? (openBlock(), createBlock(RsTooltip_default, {
258
+ key: 0,
259
+ icon: "",
260
+ content: __props.tooltip
261
+ }, null, 8, ["content"])) : createCommentVNode("", true),
262
+ showRequiredMark.value ? (openBlock(), createElementBlock("span", _hoisted_4, "*")) : createCommentVNode("", true)
263
+ ])) : createCommentVNode("", true),
254
264
  createElementVNode("div", _hoisted_5, [createVNode(RsFormItemControl_default, { inject: controlInject.value }, {
255
265
  default: withCtx(() => [renderSlot(_ctx.$slots, "default", {
256
266
  id: unref(fieldId),
@@ -3,6 +3,6 @@ import _plugin_vue_export_helper_default from "../_virtual/_plugin-vue_export-he
3
3
  import RsFormItem_vue_vue_type_script_setup_true_lang_default from "./RsFormItem.impl.js";
4
4
 
5
5
  //#region src/components/RsFormItem.vue
6
- var RsFormItem_default = /*#__PURE__*/ _plugin_vue_export_helper_default(RsFormItem_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-d87b2b06"]]);
6
+ var RsFormItem_default = /*#__PURE__*/ _plugin_vue_export_helper_default(RsFormItem_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-e6a747b7"]]);
7
7
  //#endregion
8
8
  export { RsFormItem_default as default };