react-vant-nova 1.0.9 → 1.1.0

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.
@@ -0,0 +1,4 @@
1
+ import React from 'react';
2
+ import { AvatarProps } from './PropsType';
3
+ declare const Avatar: React.FC<AvatarProps>;
4
+ export default Avatar;
@@ -0,0 +1,68 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { useEffect, useMemo, useState } from 'react';
3
+ import clsx from 'clsx';
4
+ import { addUnit, createNamespace } from '../utils';
5
+ const [bem] = createNamespace('avatar');
6
+ const presetSizes = ['mini', 'small', 'normal', 'large'];
7
+ const Avatar = props => {
8
+ const {
9
+ alt,
10
+ children,
11
+ className,
12
+ fallback,
13
+ fit = 'cover',
14
+ shape = 'circle',
15
+ size = 'normal',
16
+ src,
17
+ style,
18
+ onClick,
19
+ onError,
20
+ onLoad
21
+ } = props;
22
+ const [failed, setFailed] = useState(false);
23
+ useEffect(() => {
24
+ setFailed(false);
25
+ }, [src]);
26
+ const avatarStyle = useMemo(() => {
27
+ const internalStyle = Object.assign({}, style);
28
+ if (!presetSizes.includes(String(size))) {
29
+ const sizeValue = addUnit(size);
30
+ internalStyle.width = sizeValue;
31
+ internalStyle.height = sizeValue;
32
+ }
33
+ return internalStyle;
34
+ }, [style, size]);
35
+ const handleLoad = event => {
36
+ onLoad === null || onLoad === void 0 ? void 0 : onLoad(event);
37
+ };
38
+ const handleError = event => {
39
+ setFailed(true);
40
+ onError === null || onError === void 0 ? void 0 : onError(event);
41
+ };
42
+ const renderContent = () => {
43
+ if (src && !failed) {
44
+ return _jsx("img", {
45
+ className: clsx(bem('img')),
46
+ src: src,
47
+ alt: alt || '',
48
+ style: {
49
+ objectFit: fit
50
+ },
51
+ onLoad: handleLoad,
52
+ onError: handleError
53
+ });
54
+ }
55
+ return fallback !== null && fallback !== void 0 ? fallback : children;
56
+ };
57
+ return _jsx("div", Object.assign({
58
+ className: clsx(className, bem({
59
+ [shape]: !!shape,
60
+ [String(size)]: presetSizes.includes(String(size))
61
+ })),
62
+ style: avatarStyle,
63
+ onClick: onClick
64
+ }, {
65
+ children: renderContent()
66
+ }));
67
+ };
68
+ export default Avatar;
@@ -0,0 +1,34 @@
1
+ import React from 'react';
2
+ import { BaseTypeProps } from '../utils';
3
+ export declare type AvatarShape = 'circle' | 'square';
4
+ export declare type AvatarFit = 'contain' | 'cover' | 'fill' | 'none' | 'scale-down';
5
+ export declare type AvatarSize = 'mini' | 'small' | 'normal' | 'large' | number | string;
6
+ export interface AvatarProps extends BaseTypeProps {
7
+ /** 图片地址 */
8
+ src?: string;
9
+ /** 图片描述 */
10
+ alt?: string;
11
+ /**
12
+ * 头像形状
13
+ * @default circle
14
+ */
15
+ shape?: AvatarShape;
16
+ /**
17
+ * 头像大小
18
+ * @default normal
19
+ */
20
+ size?: AvatarSize;
21
+ /**
22
+ * 图片填充模式
23
+ * @default cover
24
+ */
25
+ fit?: AvatarFit;
26
+ /** 图片加载失败时显示的内容 */
27
+ fallback?: React.ReactNode;
28
+ /** 点击头像时触发 */
29
+ onClick?: (event: React.MouseEvent<HTMLDivElement, MouseEvent>) => void;
30
+ /** 图片加载成功时触发 */
31
+ onLoad?: (event: React.SyntheticEvent<HTMLImageElement, Event>) => void;
32
+ /** 图片加载失败时触发 */
33
+ onError?: (event: React.SyntheticEvent<HTMLImageElement, Event>) => void;
34
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,5 @@
1
+ import './style/index.less';
2
+ import Avatar from './Avatar';
3
+ export default Avatar;
4
+ export { Avatar };
5
+ export type { AvatarProps, AvatarShape, AvatarFit, AvatarSize, } from './PropsType';
@@ -0,0 +1,4 @@
1
+ import "./style/index.css";
2
+ import Avatar from './Avatar';
3
+ export default Avatar;
4
+ export { Avatar };
@@ -0,0 +1,52 @@
1
+ :root {
2
+ --rv-avatar-size-mini: 24px;
3
+ --rv-avatar-size-small: 32px;
4
+ --rv-avatar-size-normal: 40px;
5
+ --rv-avatar-size-large: 56px;
6
+ --rv-avatar-background-color: var(--rv-gray-3);
7
+ --rv-avatar-color: var(--rv-gray-7);
8
+ --rv-avatar-font-size: var(--rv-font-size-md);
9
+ --rv-avatar-border-radius: var(--rv-border-radius-md);
10
+ }
11
+ .rv-avatar {
12
+ position: relative;
13
+ display: inline-flex;
14
+ align-items: center;
15
+ justify-content: center;
16
+ width: var(--rv-avatar-size-normal);
17
+ height: var(--rv-avatar-size-normal);
18
+ overflow: hidden;
19
+ color: var(--rv-avatar-color);
20
+ font-size: var(--rv-avatar-font-size);
21
+ line-height: 1;
22
+ white-space: nowrap;
23
+ text-align: center;
24
+ vertical-align: middle;
25
+ background-color: var(--rv-avatar-background-color);
26
+ }
27
+ .rv-avatar--mini {
28
+ width: var(--rv-avatar-size-mini);
29
+ height: var(--rv-avatar-size-mini);
30
+ font-size: var(--rv-font-size-xs);
31
+ }
32
+ .rv-avatar--small {
33
+ width: var(--rv-avatar-size-small);
34
+ height: var(--rv-avatar-size-small);
35
+ font-size: var(--rv-font-size-sm);
36
+ }
37
+ .rv-avatar--large {
38
+ width: var(--rv-avatar-size-large);
39
+ height: var(--rv-avatar-size-large);
40
+ font-size: var(--rv-font-size-lg);
41
+ }
42
+ .rv-avatar--circle {
43
+ border-radius: var(--rv-border-radius-max);
44
+ }
45
+ .rv-avatar--square {
46
+ border-radius: var(--rv-avatar-border-radius);
47
+ }
48
+ .rv-avatar__img {
49
+ display: block;
50
+ width: 100%;
51
+ height: 100%;
52
+ }
File without changes
package/es/index.d.ts CHANGED
@@ -2,6 +2,7 @@ import './styles';
2
2
  export { default as hooks } from './hooks';
3
3
  export * from './button';
4
4
  export * from './badge';
5
+ export * from './avatar';
5
6
  export * from './field';
6
7
  export * from './flex';
7
8
  export * from './space';
package/es/index.js CHANGED
@@ -2,6 +2,7 @@ import './styles';
2
2
  export { default as hooks } from './hooks';
3
3
  export * from './button';
4
4
  export * from './badge';
5
+ export * from './avatar';
5
6
  export * from './field';
6
7
  export * from './flex';
7
8
  export * from './space';
@@ -0,0 +1,4 @@
1
+ import React from 'react';
2
+ import { AvatarProps } from './PropsType';
3
+ declare const Avatar: React.FC<AvatarProps>;
4
+ export default Avatar;
@@ -0,0 +1,94 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ function _react() {
8
+ const data = _interopRequireWildcard(require("react"));
9
+ _react = function () {
10
+ return data;
11
+ };
12
+ return data;
13
+ }
14
+ function _jsxRuntime() {
15
+ const data = require("react/jsx-runtime");
16
+ _jsxRuntime = function () {
17
+ return data;
18
+ };
19
+ return data;
20
+ }
21
+ function _clsx() {
22
+ const data = _interopRequireDefault(require("clsx"));
23
+ _clsx = function () {
24
+ return data;
25
+ };
26
+ return data;
27
+ }
28
+ var _utils = require("../utils");
29
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
30
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
31
+ const [bem] = (0, _utils.createNamespace)('avatar');
32
+ const presetSizes = ['mini', 'small', 'normal', 'large'];
33
+ const Avatar = props => {
34
+ const {
35
+ alt,
36
+ children,
37
+ className,
38
+ fallback,
39
+ fit = 'cover',
40
+ shape = 'circle',
41
+ size = 'normal',
42
+ src,
43
+ style,
44
+ onClick,
45
+ onError,
46
+ onLoad
47
+ } = props;
48
+ const [failed, setFailed] = (0, _react().useState)(false);
49
+ (0, _react().useEffect)(() => {
50
+ setFailed(false);
51
+ }, [src]);
52
+ const avatarStyle = (0, _react().useMemo)(() => {
53
+ const internalStyle = Object.assign({}, style);
54
+ if (!presetSizes.includes(String(size))) {
55
+ const sizeValue = (0, _utils.addUnit)(size);
56
+ internalStyle.width = sizeValue;
57
+ internalStyle.height = sizeValue;
58
+ }
59
+ return internalStyle;
60
+ }, [style, size]);
61
+ const handleLoad = event => {
62
+ onLoad === null || onLoad === void 0 ? void 0 : onLoad(event);
63
+ };
64
+ const handleError = event => {
65
+ setFailed(true);
66
+ onError === null || onError === void 0 ? void 0 : onError(event);
67
+ };
68
+ const renderContent = () => {
69
+ if (src && !failed) {
70
+ return (0, _jsxRuntime().jsx)("img", {
71
+ className: (0, _clsx().default)(bem('img')),
72
+ src: src,
73
+ alt: alt || '',
74
+ style: {
75
+ objectFit: fit
76
+ },
77
+ onLoad: handleLoad,
78
+ onError: handleError
79
+ });
80
+ }
81
+ return fallback !== null && fallback !== void 0 ? fallback : children;
82
+ };
83
+ return (0, _jsxRuntime().jsx)("div", Object.assign({
84
+ className: (0, _clsx().default)(className, bem({
85
+ [shape]: !!shape,
86
+ [String(size)]: presetSizes.includes(String(size))
87
+ })),
88
+ style: avatarStyle,
89
+ onClick: onClick
90
+ }, {
91
+ children: renderContent()
92
+ }));
93
+ };
94
+ var _default = exports.default = Avatar;
@@ -0,0 +1,34 @@
1
+ import React from 'react';
2
+ import { BaseTypeProps } from '../utils';
3
+ export declare type AvatarShape = 'circle' | 'square';
4
+ export declare type AvatarFit = 'contain' | 'cover' | 'fill' | 'none' | 'scale-down';
5
+ export declare type AvatarSize = 'mini' | 'small' | 'normal' | 'large' | number | string;
6
+ export interface AvatarProps extends BaseTypeProps {
7
+ /** 图片地址 */
8
+ src?: string;
9
+ /** 图片描述 */
10
+ alt?: string;
11
+ /**
12
+ * 头像形状
13
+ * @default circle
14
+ */
15
+ shape?: AvatarShape;
16
+ /**
17
+ * 头像大小
18
+ * @default normal
19
+ */
20
+ size?: AvatarSize;
21
+ /**
22
+ * 图片填充模式
23
+ * @default cover
24
+ */
25
+ fit?: AvatarFit;
26
+ /** 图片加载失败时显示的内容 */
27
+ fallback?: React.ReactNode;
28
+ /** 点击头像时触发 */
29
+ onClick?: (event: React.MouseEvent<HTMLDivElement, MouseEvent>) => void;
30
+ /** 图片加载成功时触发 */
31
+ onLoad?: (event: React.SyntheticEvent<HTMLImageElement, Event>) => void;
32
+ /** 图片加载失败时触发 */
33
+ onError?: (event: React.SyntheticEvent<HTMLImageElement, Event>) => void;
34
+ }
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
@@ -0,0 +1,5 @@
1
+ import './style/index.less';
2
+ import Avatar from './Avatar';
3
+ export default Avatar;
4
+ export { Avatar };
5
+ export type { AvatarProps, AvatarShape, AvatarFit, AvatarSize, } from './PropsType';
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "Avatar", {
7
+ enumerable: true,
8
+ get: function () {
9
+ return _Avatar.default;
10
+ }
11
+ });
12
+ exports.default = void 0;
13
+ require("./style/index.css");
14
+ var _Avatar = _interopRequireDefault(require("./Avatar"));
15
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
16
+ var _default = exports.default = _Avatar.default;
@@ -0,0 +1,52 @@
1
+ :root {
2
+ --rv-avatar-size-mini: 24px;
3
+ --rv-avatar-size-small: 32px;
4
+ --rv-avatar-size-normal: 40px;
5
+ --rv-avatar-size-large: 56px;
6
+ --rv-avatar-background-color: var(--rv-gray-3);
7
+ --rv-avatar-color: var(--rv-gray-7);
8
+ --rv-avatar-font-size: var(--rv-font-size-md);
9
+ --rv-avatar-border-radius: var(--rv-border-radius-md);
10
+ }
11
+ .rv-avatar {
12
+ position: relative;
13
+ display: inline-flex;
14
+ align-items: center;
15
+ justify-content: center;
16
+ width: var(--rv-avatar-size-normal);
17
+ height: var(--rv-avatar-size-normal);
18
+ overflow: hidden;
19
+ color: var(--rv-avatar-color);
20
+ font-size: var(--rv-avatar-font-size);
21
+ line-height: 1;
22
+ white-space: nowrap;
23
+ text-align: center;
24
+ vertical-align: middle;
25
+ background-color: var(--rv-avatar-background-color);
26
+ }
27
+ .rv-avatar--mini {
28
+ width: var(--rv-avatar-size-mini);
29
+ height: var(--rv-avatar-size-mini);
30
+ font-size: var(--rv-font-size-xs);
31
+ }
32
+ .rv-avatar--small {
33
+ width: var(--rv-avatar-size-small);
34
+ height: var(--rv-avatar-size-small);
35
+ font-size: var(--rv-font-size-sm);
36
+ }
37
+ .rv-avatar--large {
38
+ width: var(--rv-avatar-size-large);
39
+ height: var(--rv-avatar-size-large);
40
+ font-size: var(--rv-font-size-lg);
41
+ }
42
+ .rv-avatar--circle {
43
+ border-radius: var(--rv-border-radius-max);
44
+ }
45
+ .rv-avatar--square {
46
+ border-radius: var(--rv-avatar-border-radius);
47
+ }
48
+ .rv-avatar__img {
49
+ display: block;
50
+ width: 100%;
51
+ height: 100%;
52
+ }
File without changes
package/lib/index.css CHANGED
@@ -794,6 +794,58 @@ ul {
794
794
  position: relative;
795
795
  display: inline-block;
796
796
  }
797
+ :root {
798
+ --rv-avatar-size-mini: 24px;
799
+ --rv-avatar-size-small: 32px;
800
+ --rv-avatar-size-normal: 40px;
801
+ --rv-avatar-size-large: 56px;
802
+ --rv-avatar-background-color: var(--rv-gray-3);
803
+ --rv-avatar-color: var(--rv-gray-7);
804
+ --rv-avatar-font-size: var(--rv-font-size-md);
805
+ --rv-avatar-border-radius: var(--rv-border-radius-md);
806
+ }
807
+ .rv-avatar {
808
+ position: relative;
809
+ display: inline-flex;
810
+ align-items: center;
811
+ justify-content: center;
812
+ width: var(--rv-avatar-size-normal);
813
+ height: var(--rv-avatar-size-normal);
814
+ overflow: hidden;
815
+ color: var(--rv-avatar-color);
816
+ font-size: var(--rv-avatar-font-size);
817
+ line-height: 1;
818
+ white-space: nowrap;
819
+ text-align: center;
820
+ vertical-align: middle;
821
+ background-color: var(--rv-avatar-background-color);
822
+ }
823
+ .rv-avatar--mini {
824
+ width: var(--rv-avatar-size-mini);
825
+ height: var(--rv-avatar-size-mini);
826
+ font-size: var(--rv-font-size-xs);
827
+ }
828
+ .rv-avatar--small {
829
+ width: var(--rv-avatar-size-small);
830
+ height: var(--rv-avatar-size-small);
831
+ font-size: var(--rv-font-size-sm);
832
+ }
833
+ .rv-avatar--large {
834
+ width: var(--rv-avatar-size-large);
835
+ height: var(--rv-avatar-size-large);
836
+ font-size: var(--rv-font-size-lg);
837
+ }
838
+ .rv-avatar--circle {
839
+ border-radius: var(--rv-border-radius-max);
840
+ }
841
+ .rv-avatar--square {
842
+ border-radius: var(--rv-avatar-border-radius);
843
+ }
844
+ .rv-avatar__img {
845
+ display: block;
846
+ width: 100%;
847
+ height: 100%;
848
+ }
797
849
  :root {
798
850
  --rv-field-input-error-text-color: var(--rv-danger-color);
799
851
  --rv-field-label-width: 6.2em;
package/lib/index.d.ts CHANGED
@@ -2,6 +2,7 @@ import './styles';
2
2
  export { default as hooks } from './hooks';
3
3
  export * from './button';
4
4
  export * from './badge';
5
+ export * from './avatar';
5
6
  export * from './field';
6
7
  export * from './flex';
7
8
  export * from './space';
package/lib/index.js CHANGED
@@ -38,6 +38,18 @@ Object.keys(_badge).forEach(function (key) {
38
38
  }
39
39
  });
40
40
  });
41
+ var _avatar = require("./avatar");
42
+ Object.keys(_avatar).forEach(function (key) {
43
+ if (key === "default" || key === "__esModule") return;
44
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
45
+ if (key in exports && exports[key] === _avatar[key]) return;
46
+ Object.defineProperty(exports, key, {
47
+ enumerable: true,
48
+ get: function () {
49
+ return _avatar[key];
50
+ }
51
+ });
52
+ });
41
53
  var _field = require("./field");
42
54
  Object.keys(_field).forEach(function (key) {
43
55
  if (key === "default" || key === "__esModule") return;