@hkyhy/marsun-components-core 0.1.47 → 0.1.49
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/dist/_virtual/zh-cn.js +3 -0
- package/dist/_virtual/zh-cn.js.map +1 -0
- package/dist/_virtual/zh-cn2.js +5 -0
- package/dist/_virtual/zh-cn2.js.map +1 -0
- package/dist/components/Filter/FilterDatePicker/index.js +10 -9
- package/dist/components/Filter/FilterDatePicker/index.js.map +1 -1
- package/dist/components/Filter/FilterDateRange/index.js +3 -2
- package/dist/components/Filter/FilterDateRange/index.js.map +1 -1
- package/dist/components/ReactFilter/common/TypeDateRangePickerField/index.js +31 -30
- package/dist/components/ReactFilter/common/TypeDateRangePickerField/index.js.map +1 -1
- package/dist/components/ReactFilter/fields/DatePickerFilterItem.js +7 -6
- package/dist/components/ReactFilter/fields/DatePickerFilterItem.js.map +1 -1
- package/dist/components/ReactFilter/fields/DateRangePickerFilterItem.js +3 -2
- package/dist/components/ReactFilter/fields/DateRangePickerFilterItem.js.map +1 -1
- package/dist/components/ReactFilter/fields/TypeDateRangePickerFilterItem.js +11 -10
- package/dist/components/ReactFilter/fields/TypeDateRangePickerFilterItem.js.map +1 -1
- package/dist/components/SegmentedRadio/SegmentedRadio.d.ts +29 -0
- package/dist/components/SegmentedRadio/SegmentedRadio.js +48 -0
- package/dist/components/SegmentedRadio/SegmentedRadio.js.map +1 -0
- package/dist/components/SegmentedRadio/index.d.ts +2 -0
- package/dist/components/SegmentedRadio/style.module.scss.js +9 -0
- package/dist/components/SegmentedRadio/style.module.scss.js.map +1 -0
- package/dist/components/Tag/Tags/index.d.ts +2 -2
- package/dist/components/Tag/Tags/index.js +37 -22
- package/dist/components/Tag/Tags/index.js.map +1 -1
- package/dist/components/Tag/Tags/style.module.scss.js +3 -3
- package/dist/components/index.d.ts +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +580 -577
- package/dist/index.js.map +1 -1
- package/dist/marsun-components-core.css +1 -1
- package/dist/node_modules/dayjs/locale/zh-cn.js +25 -0
- package/dist/node_modules/dayjs/locale/zh-cn.js.map +1 -0
- package/dist/provider/MarsunCoreProvider.js +10 -9
- package/dist/provider/MarsunCoreProvider.js.map +1 -1
- package/dist/styles/global.css +1 -1
- package/dist/utils/ensureDayjsZhCn.d.ts +0 -0
- package/dist/utils/ensureDayjsZhCn.js +4 -0
- package/dist/utils/ensureDayjsZhCn.js.map +1 -0
- package/package.json +6 -2
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { RadioGroupProps } from 'antd/es/radio/interface';
|
|
2
|
+
import { CSSProperties, ReactNode } from 'react';
|
|
3
|
+
export type SegmentedRadioOption<T = string | number> = {
|
|
4
|
+
label: ReactNode;
|
|
5
|
+
value: T;
|
|
6
|
+
disabled?: boolean;
|
|
7
|
+
};
|
|
8
|
+
export type SegmentedRadioProps<T = string | number> = Omit<RadioGroupProps, 'options' | 'onChange' | 'optionType' | 'buttonStyle'> & {
|
|
9
|
+
/** 选项列表 */
|
|
10
|
+
options: SegmentedRadioOption<T>[];
|
|
11
|
+
/** 当前值(受控) */
|
|
12
|
+
value?: T;
|
|
13
|
+
/** 默认值(非受控) */
|
|
14
|
+
defaultValue?: T;
|
|
15
|
+
/** 选中变化:直接回传 value,无需 e.target.value */
|
|
16
|
+
onChange?: (value: T) => void;
|
|
17
|
+
/** 尺寸:small / middle / large,默认 middle */
|
|
18
|
+
size?: RadioGroupProps['size'];
|
|
19
|
+
/** 整组禁用 */
|
|
20
|
+
disabled?: boolean;
|
|
21
|
+
/** 按钮样式:默认 solid(实心) */
|
|
22
|
+
buttonStyle?: RadioGroupProps['buttonStyle'];
|
|
23
|
+
/** 撑满容器宽度(每个按钮等分) */
|
|
24
|
+
block?: boolean;
|
|
25
|
+
className?: string;
|
|
26
|
+
style?: CSSProperties;
|
|
27
|
+
};
|
|
28
|
+
declare const SegmentedRadio: <T = string | number>(props: SegmentedRadioProps<T>) => React.ReactElement;
|
|
29
|
+
export default SegmentedRadio;
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { jsx as g } from "react/jsx-runtime";
|
|
2
|
+
import { Radio as b } from "antd";
|
|
3
|
+
import y from "classnames";
|
|
4
|
+
import t from "./style.module.scss.js";
|
|
5
|
+
function N(o) {
|
|
6
|
+
const {
|
|
7
|
+
options: s,
|
|
8
|
+
value: a,
|
|
9
|
+
defaultValue: n,
|
|
10
|
+
onChange: e,
|
|
11
|
+
size: r,
|
|
12
|
+
disabled: d,
|
|
13
|
+
buttonStyle: m = "solid",
|
|
14
|
+
block: i,
|
|
15
|
+
className: l,
|
|
16
|
+
style: c,
|
|
17
|
+
...u
|
|
18
|
+
} = o, p = (f) => {
|
|
19
|
+
e == null || e(f.target.value);
|
|
20
|
+
};
|
|
21
|
+
return /* @__PURE__ */ g(
|
|
22
|
+
b.Group,
|
|
23
|
+
{
|
|
24
|
+
...u,
|
|
25
|
+
"data-testid": "components-core-segmented-radio",
|
|
26
|
+
className: y(
|
|
27
|
+
"marsun-segmented-radio",
|
|
28
|
+
t["segmented-radio"],
|
|
29
|
+
i && t.block,
|
|
30
|
+
l
|
|
31
|
+
),
|
|
32
|
+
style: c,
|
|
33
|
+
options: s,
|
|
34
|
+
value: a,
|
|
35
|
+
defaultValue: n,
|
|
36
|
+
onChange: p,
|
|
37
|
+
size: r,
|
|
38
|
+
disabled: d,
|
|
39
|
+
optionType: "button",
|
|
40
|
+
buttonStyle: m
|
|
41
|
+
}
|
|
42
|
+
);
|
|
43
|
+
}
|
|
44
|
+
const v = N;
|
|
45
|
+
export {
|
|
46
|
+
v as default
|
|
47
|
+
};
|
|
48
|
+
//# sourceMappingURL=SegmentedRadio.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SegmentedRadio.js","sources":["../../../src/components/SegmentedRadio/SegmentedRadio.tsx"],"sourcesContent":["import { Radio } from 'antd';\nimport type { RadioGroupProps, RadioChangeEvent } from 'antd/es/radio/interface';\nimport classNames from 'classnames';\nimport type { CSSProperties, ReactNode } from 'react';\nimport styles from './style.module.scss';\n\nexport type SegmentedRadioOption<T = string | number> = {\n label: ReactNode;\n value: T;\n disabled?: boolean;\n};\n\nexport type SegmentedRadioProps<T = string | number> = Omit<\n RadioGroupProps,\n 'options' | 'onChange' | 'optionType' | 'buttonStyle'\n> & {\n /** 选项列表 */\n options: SegmentedRadioOption<T>[];\n /** 当前值(受控) */\n value?: T;\n /** 默认值(非受控) */\n defaultValue?: T;\n /** 选中变化:直接回传 value,无需 e.target.value */\n onChange?: (value: T) => void;\n /** 尺寸:small / middle / large,默认 middle */\n size?: RadioGroupProps['size'];\n /** 整组禁用 */\n disabled?: boolean;\n /** 按钮样式:默认 solid(实心) */\n buttonStyle?: RadioGroupProps['buttonStyle'];\n /** 撑满容器宽度(每个按钮等分) */\n block?: boolean;\n className?: string;\n style?: CSSProperties;\n};\n\n/**\n * 分段单选:基于 antd Radio.Group 的 button+solid 形态,\n * 统一项目内「分段按钮」交互与样式(对齐批量设置三大类的 panel-radio)。\n *\n * - 默认 optionType=\"button\" buttonStyle=\"solid\"\n * - onChange 直接回传 value,屏蔽 RadioChangeEvent\n * - block=true 时按钮等分容器宽度并自动换行\n */\nfunction SegmentedRadioInner<T = string | number>(props: SegmentedRadioProps<T>) {\n const {\n options,\n value,\n defaultValue,\n onChange,\n size,\n disabled,\n buttonStyle = 'solid',\n block,\n className,\n style,\n ...rest\n } = props;\n\n const handleChange = (e: RadioChangeEvent) => {\n onChange?.(e.target.value as T);\n };\n\n return (\n <Radio.Group\n {...rest}\n data-testid=\"components-core-segmented-radio\"\n className={classNames(\n 'marsun-segmented-radio',\n styles['segmented-radio'],\n block && styles['block'],\n className,\n )}\n style={style}\n options={options as RadioGroupProps['options']}\n value={value as RadioGroupProps['value']}\n defaultValue={defaultValue as RadioGroupProps['defaultValue']}\n onChange={handleChange}\n size={size}\n disabled={disabled}\n optionType=\"button\"\n buttonStyle={buttonStyle}\n />\n );\n}\n\nconst SegmentedRadio = SegmentedRadioInner as <T = string | number>(\n props: SegmentedRadioProps<T>,\n) => React.ReactElement;\n\nexport default SegmentedRadio;\n"],"names":["SegmentedRadioInner","props","options","value","defaultValue","onChange","size","disabled","buttonStyle","block","className","style","rest","handleChange","e","jsx","Radio","classNames","styles","SegmentedRadio"],"mappings":";;;;AA4CA,SAASA,EAAyCC,GAA+B;AAC/E,QAAM;AAAA,IACJ,SAAAC;AAAA,IACA,OAAAC;AAAA,IACA,cAAAC;AAAA,IACA,UAAAC;AAAA,IACA,MAAAC;AAAA,IACA,UAAAC;AAAA,IACA,aAAAC,IAAc;AAAA,IACd,OAAAC;AAAA,IACA,WAAAC;AAAA,IACA,OAAAC;AAAA,IACA,GAAGC;AAAA,EAAA,IACDX,GAEEY,IAAe,CAACC,MAAwB;AAC5C,IAAAT,KAAA,QAAAA,EAAWS,EAAE,OAAO;AAAA,EACtB;AAEA,SACE,gBAAAC;AAAA,IAACC,EAAM;AAAA,IAAN;AAAA,MACE,GAAGJ;AAAA,MACJ,eAAY;AAAA,MACZ,WAAWK;AAAA,QACT;AAAA,QACAC,EAAO,iBAAiB;AAAA,QACxBT,KAASS,EAAO;AAAA,QAChBR;AAAA,MAAA;AAAA,MAEF,OAAAC;AAAA,MACA,SAAAT;AAAA,MACA,OAAAC;AAAA,MACA,cAAAC;AAAA,MACA,UAAUS;AAAA,MACV,MAAAP;AAAA,MACA,UAAAC;AAAA,MACA,YAAW;AAAA,MACX,aAAAC;AAAA,IAAA;AAAA,EAAA;AAGN;AAEA,MAAMW,IAAiBnB;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"style.module.scss.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
|
|
@@ -3,7 +3,7 @@ import { SemanticColor } from '../SemanticTag';
|
|
|
3
3
|
export interface TagsProps {
|
|
4
4
|
/** 标签列表 */
|
|
5
5
|
tags?: string[];
|
|
6
|
-
/**
|
|
6
|
+
/** 最多展示的标签数量;未传或无效时展示全部 */
|
|
7
7
|
showLength?: number;
|
|
8
8
|
/** 无标签时的占位,传 null 则不渲染 */
|
|
9
9
|
empty?: React.ReactNode;
|
|
@@ -11,6 +11,6 @@ export interface TagsProps {
|
|
|
11
11
|
/** 标签颜色,默认 INFO */
|
|
12
12
|
color?: SemanticColor | string;
|
|
13
13
|
}
|
|
14
|
-
/** 通用标签列表(SemanticTag + showLength
|
|
14
|
+
/** 通用标签列表(SemanticTag + showLength 截断;长文案 ellipsis + hover 全量) */
|
|
15
15
|
declare const Tags: React.FC<TagsProps>;
|
|
16
16
|
export default Tags;
|
|
@@ -1,32 +1,47 @@
|
|
|
1
|
-
import { jsx as c, Fragment as
|
|
2
|
-
import { Tooltip as
|
|
3
|
-
import
|
|
4
|
-
import
|
|
5
|
-
import
|
|
6
|
-
const
|
|
7
|
-
const { otherCount:
|
|
8
|
-
return /* @__PURE__ */
|
|
9
|
-
t.map((
|
|
10
|
-
|
|
1
|
+
import { jsx as c, Fragment as C, jsxs as f } from "react/jsx-runtime";
|
|
2
|
+
import { Tooltip as N } from "antd";
|
|
3
|
+
import g, { SEMANTIC_COLORS as v } from "../SemanticTag.js";
|
|
4
|
+
import m from "./style.module.scss.js";
|
|
5
|
+
import p from "classnames";
|
|
6
|
+
const x = 8, a = (t, n) => {
|
|
7
|
+
const { otherCount: o = 0, nowrap: i = !1, className: s, color: l } = n, e = i ? p("tags-tag-list-nowrap", m["tags-tag-list-nowrap"]) : void 0;
|
|
8
|
+
return /* @__PURE__ */ f("div", { className: p("tags-tag-list", m["tags-tag-list"], e, s), children: [
|
|
9
|
+
t.map((r) => /* @__PURE__ */ c(g, { color: l, children: r }, r)),
|
|
10
|
+
o > 0 && /* @__PURE__ */ f(g, { color: l, children: [
|
|
11
11
|
"+",
|
|
12
|
-
|
|
12
|
+
o
|
|
13
13
|
] })
|
|
14
14
|
] });
|
|
15
|
-
},
|
|
15
|
+
}, j = ({
|
|
16
16
|
tags: t,
|
|
17
|
-
showLength:
|
|
18
|
-
empty:
|
|
19
|
-
className:
|
|
20
|
-
color:
|
|
17
|
+
showLength: n,
|
|
18
|
+
empty: o = "-",
|
|
19
|
+
className: i,
|
|
20
|
+
color: s = v.INFO
|
|
21
21
|
}) => {
|
|
22
22
|
if (!(t != null && t.length))
|
|
23
|
-
return
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
23
|
+
return o != null ? /* @__PURE__ */ c(C, { children: o }) : null;
|
|
24
|
+
const l = n != null && n > 0 ? n : null;
|
|
25
|
+
if (l == null)
|
|
26
|
+
return a(t, { className: i, color: s });
|
|
27
|
+
const e = t.slice(0, l), r = Math.max(0, t.length - l), h = t.some((T) => T.length > x), u = r > 0 || h, d = a(e, {
|
|
28
|
+
otherCount: r,
|
|
29
|
+
nowrap: u,
|
|
30
|
+
className: i,
|
|
31
|
+
color: s
|
|
32
|
+
});
|
|
33
|
+
return u ? /* @__PURE__ */ c(
|
|
34
|
+
N,
|
|
35
|
+
{
|
|
36
|
+
title: a(t, {
|
|
37
|
+
className: p("tags-tag-list-tooltip", m["tags-tag-list-tooltip"]),
|
|
38
|
+
color: s
|
|
39
|
+
}),
|
|
40
|
+
children: d
|
|
41
|
+
}
|
|
42
|
+
) : d;
|
|
28
43
|
};
|
|
29
44
|
export {
|
|
30
|
-
|
|
45
|
+
j as default
|
|
31
46
|
};
|
|
32
47
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../src/components/Tag/Tags/index.tsx"],"sourcesContent":["import { Tooltip } from 'antd';\nimport React from 'react';\nimport SemanticTag, { SEMANTIC_COLORS, type SemanticColor } from '../SemanticTag';\nimport styles from './style.module.scss';\nimport classNames from 'classnames';\n\nexport interface TagsProps {\n /** 标签列表 */\n tags?: string[];\n /**
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../src/components/Tag/Tags/index.tsx"],"sourcesContent":["import { Tooltip } from 'antd';\nimport React from 'react';\nimport SemanticTag, { SEMANTIC_COLORS, type SemanticColor } from '../SemanticTag';\nimport styles from './style.module.scss';\nimport classNames from 'classnames';\n\n/** 单标签超过该字数时,即使未超出 showLength 也走紧凑+Tooltip,避免表格列溢出 */\nconst LONG_TAG_CHARS = 8;\n\nexport interface TagsProps {\n /** 标签列表 */\n tags?: string[];\n /** 最多展示的标签数量;未传或无效时展示全部 */\n showLength?: number;\n /** 无标签时的占位,传 null 则不渲染 */\n empty?: React.ReactNode;\n className?: string;\n /** 标签颜色,默认 INFO */\n color?: SemanticColor | string;\n}\n\nconst renderTags = (\n tagList: string[],\n options: {\n otherCount?: number;\n nowrap?: boolean;\n className?: string;\n color: SemanticColor | string;\n },\n) => {\n const { otherCount = 0, nowrap = false, className, color } = options;\n const layoutClass = nowrap\n ? classNames('tags-tag-list-nowrap', styles['tags-tag-list-nowrap'])\n : undefined;\n\n return (\n <div className={classNames('tags-tag-list', styles['tags-tag-list'], layoutClass, className)}>\n {tagList.map((tag) => (\n <SemanticTag key={tag} color={color}>\n {tag}\n </SemanticTag>\n ))}\n {otherCount > 0 && <SemanticTag color={color}>+{otherCount}</SemanticTag>}\n </div>\n );\n};\n\n/** 通用标签列表(SemanticTag + showLength 截断;长文案 ellipsis + hover 全量) */\nconst Tags: React.FC<TagsProps> = ({\n tags,\n showLength,\n empty = '-',\n className,\n color = SEMANTIC_COLORS.INFO,\n}) => {\n if (!tags?.length) {\n return empty != null ? <>{empty}</> : null;\n }\n\n const limit = showLength != null && showLength > 0 ? showLength : null;\n if (limit == null) {\n return renderTags(tags, { className, color });\n }\n\n const visibleTags = tags.slice(0, limit);\n const otherCount = Math.max(0, tags.length - limit);\n const hasLongTag = tags.some((t) => t.length > LONG_TAG_CHARS);\n const needsCompact = otherCount > 0 || hasLongTag;\n const visible = renderTags(visibleTags, {\n otherCount,\n nowrap: needsCompact,\n className,\n color,\n });\n\n if (!needsCompact) {\n return visible;\n }\n\n return (\n <Tooltip\n title={renderTags(tags, {\n className: classNames('tags-tag-list-tooltip', styles['tags-tag-list-tooltip']),\n color,\n })}\n >\n {visible}\n </Tooltip>\n );\n};\n\nexport default Tags;\n"],"names":["LONG_TAG_CHARS","renderTags","tagList","options","otherCount","nowrap","className","color","layoutClass","classNames","styles","jsxs","tag","jsx","SemanticTag","Tags","tags","showLength","empty","SEMANTIC_COLORS","Fragment","limit","visibleTags","hasLongTag","t","needsCompact","visible","Tooltip"],"mappings":";;;;;AAOA,MAAMA,IAAiB,GAcjBC,IAAa,CACjBC,GACAC,MAMG;AACH,QAAM,EAAE,YAAAC,IAAa,GAAG,QAAAC,IAAS,IAAO,WAAAC,GAAW,OAAAC,MAAUJ,GACvDK,IAAcH,IAChBI,EAAW,wBAAwBC,EAAO,sBAAsB,CAAC,IACjE;AAEJ,SACE,gBAAAC,EAAC,OAAA,EAAI,WAAWF,EAAW,iBAAiBC,EAAO,eAAe,GAAGF,GAAaF,CAAS,GACxF,UAAA;AAAA,IAAAJ,EAAQ,IAAI,CAACU,MACZ,gBAAAC,EAACC,KAAsB,OAAAP,GACpB,UAAAK,EAAA,GADeA,CAElB,CACD;AAAA,IACAR,IAAa,KAAK,gBAAAO,EAACG,GAAA,EAAY,OAAAP,GAAc,UAAA;AAAA,MAAA;AAAA,MAAEH;AAAA,IAAA,EAAA,CAAW;AAAA,EAAA,GAC7D;AAEJ,GAGMW,IAA4B,CAAC;AAAA,EACjC,MAAAC;AAAA,EACA,YAAAC;AAAA,EACA,OAAAC,IAAQ;AAAA,EACR,WAAAZ;AAAA,EACA,OAAAC,IAAQY,EAAgB;AAC1B,MAAM;AACJ,MAAI,EAACH,KAAA,QAAAA,EAAM;AACT,WAAOE,KAAS,OAAO,gBAAAL,EAAAO,GAAA,EAAG,UAAAF,EAAA,CAAM,IAAM;AAGxC,QAAMG,IAAQJ,KAAc,QAAQA,IAAa,IAAIA,IAAa;AAClE,MAAII,KAAS;AACX,WAAOpB,EAAWe,GAAM,EAAE,WAAAV,GAAW,OAAAC,GAAO;AAG9C,QAAMe,IAAcN,EAAK,MAAM,GAAGK,CAAK,GACjCjB,IAAa,KAAK,IAAI,GAAGY,EAAK,SAASK,CAAK,GAC5CE,IAAaP,EAAK,KAAK,CAACQ,MAAMA,EAAE,SAASxB,CAAc,GACvDyB,IAAerB,IAAa,KAAKmB,GACjCG,IAAUzB,EAAWqB,GAAa;AAAA,IACtC,YAAAlB;AAAA,IACA,QAAQqB;AAAA,IACR,WAAAnB;AAAA,IACA,OAAAC;AAAA,EAAA,CACD;AAED,SAAKkB,IAKH,gBAAAZ;AAAA,IAACc;AAAA,IAAA;AAAA,MACC,OAAO1B,EAAWe,GAAM;AAAA,QACtB,WAAWP,EAAW,yBAAyBC,EAAO,uBAAuB,CAAC;AAAA,QAC9E,OAAAH;AAAA,MAAA,CACD;AAAA,MAEA,UAAAmB;AAAA,IAAA;AAAA,EAAA,IAVIA;AAaX;"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
const t = {
|
|
2
|
-
"tags-tag-list": "_tags-tag-
|
|
3
|
-
"tags-tag-list-nowrap": "_tags-tag-list-
|
|
4
|
-
"tags-tag-list-tooltip": "_tags-tag-list-
|
|
2
|
+
"tags-tag-list": "_tags-tag-list_y1jed_1",
|
|
3
|
+
"tags-tag-list-nowrap": "_tags-tag-list-nowrap_y1jed_9",
|
|
4
|
+
"tags-tag-list-tooltip": "_tags-tag-list-tooltip_y1jed_20"
|
|
5
5
|
};
|
|
6
6
|
export {
|
|
7
7
|
t as default
|
package/dist/index.d.ts
CHANGED
|
@@ -36,6 +36,7 @@ export * from './components/Permissions';
|
|
|
36
36
|
export * from './components/PermissionBindPanel';
|
|
37
37
|
export * from './components/OrgTree';
|
|
38
38
|
export * from './components/StateBar';
|
|
39
|
+
export * from './components/SegmentedRadio';
|
|
39
40
|
export * from './components/Stat';
|
|
40
41
|
export * from './components/Table';
|
|
41
42
|
export * from './components/Tag';
|