tntd 3.0.29-beta.3 → 3.0.30-beta.1

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.
@@ -157,37 +157,33 @@ const TntdUpload = forwardRef((props, ref) => {
157
157
  };
158
158
  }
159
159
  }, [listType, uploadRef, showList, pictureCardTitle]);
160
- return React.createElement(ConfigConsumer, null, ({
161
- getPrefixCls
162
- }) => {
163
- const prefixCls = getPrefixCls('upload');
164
- return React.createElement("div", {
165
- className: cn('tntd-upload-wrapper', {
166
- 'tntd-upload-wrapper-picture-card': listType === 'picture-card' && pictureCardTitle
167
- }),
168
- ref: uploadRef
169
- }, listType === 'picture-card' && avatar ? React.createElement(TntdAvatar, Object.assign({}, props, {
170
- ref: ref
171
- })) : React.createElement(AntdUpload, Object.assign({}, props, {
172
- ref: ref
173
- })), React.createElement("div", {
174
- className: "tntd-upload-ellipsis",
160
+ const isPictureCard = listType === 'picture-card' && pictureCardTitle;
161
+ return React.createElement("span", {
162
+ className: cn('tntd-upload-wrapper', {
163
+ 'tntd-upload-wrapper-picture-card': isPictureCard
164
+ }),
165
+ ref: uploadRef
166
+ }, listType === 'picture-card' && avatar ? React.createElement(TntdAvatar, Object.assign({}, props, {
167
+ ref: ref
168
+ })) : React.createElement(AntdUpload, Object.assign({}, props, {
169
+ ref: ref
170
+ })), isPictureCard && React.createElement("div", {
171
+ className: "tntd-upload-ellipsis",
172
+ style: {
173
+ visibility: 'hidden',
174
+ position: 'absolute'
175
+ },
176
+ key: showList === null || showList === void 0 ? void 0 : showList.length
177
+ }, showList === null || showList === void 0 ? void 0 : showList.map(item => {
178
+ return React.createElement(Ellipsis, {
179
+ title: item.name,
180
+ widthLimit: 104,
181
+ className: `tntd-upload-list-Ellipsis uid-${item.uid}`,
175
182
  style: {
176
- visibility: 'hidden',
177
- position: 'absolute'
178
- },
179
- key: showList === null || showList === void 0 ? void 0 : showList.length
180
- }, listType === 'picture-card' && pictureCardTitle && (showList === null || showList === void 0 ? void 0 : showList.map(item => {
181
- return React.createElement(Ellipsis, {
182
- title: item.name,
183
- widthLimit: 104,
184
- className: `tntd-upload-list-Ellipsis uid-${item.uid}`,
185
- style: {
186
- width: 104
187
- }
188
- });
189
- }))));
190
- });
183
+ width: 104
184
+ }
185
+ });
186
+ })));
191
187
  });
192
188
  const Upload = connectReadonlyComponent(TntdUpload, props => React.createElement(AntdUpload, Object.assign({}, props, {
193
189
  disabled: true
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/upload/index.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { ComponentType, forwardRef, useLayoutEffect, useState, useRef } from 'react'\nimport AntdUpload from 'antd/es/upload'\nimport LocaleReceiver from 'antd/es/locale-provider/LocaleReceiver'\nimport type { UploadProps as AntdUploadProps, UploadChangeParam } from 'antd/es/upload'\nimport { ConfigConsumer } from 'antd/es/config-provider'\nimport { connectReadonlyComponent } from '../connect'\nimport UploadSVG from './svg/UploadSVG'\nimport Ellipsis from '../ellipsis'\nimport Icon from '../icon'\nimport cn from 'classnames'\nimport './upload.less'\nimport './style'\n\nexport * from 'antd/es/upload'\n\nexport type UploadProps = AntdUploadProps & {\n readonly?: boolean\n}\n\n//头像\nconst TntdAvatar = forwardRef<\n AntdUpload,\n UploadProps & { avatar?: boolean; avatarStyle?: React.CSSProperties }\n>((props, ref) => {\n const { children, listType, avatar, avatarStyle, onChange: cusOnChange, ...rest } = props\n const [imageUrl, setImageUrl] = useState<string>()\n const [loading, setLoading] = useState(false)\n const getBase64 = (\n img: Blob,\n callback: { (imageUrl: string): void; (arg0: string | ArrayBuffer | null): any }\n ) => {\n const reader = new FileReader()\n reader.addEventListener('load', () => callback(reader.result))\n reader.readAsDataURL(img)\n }\n\n const handleChange = (info: UploadChangeParam<any>) => {\n if (cusOnChange) {\n cusOnChange(info)\n }\n getBase64(info.file.originFileObj, (imageUrl) => {\n setImageUrl(imageUrl as string)\n setLoading(false)\n })\n }\n\n const uploadButton = (\n <div className=\"avatar-uploader-btn\" style={avatarStyle}>\n <img\n src={imageUrl}\n style={{\n width: '100%',\n height: '100%',\n borderRadius: '100%',\n background: 'white',\n border: '2px solid #00000066',\n }}\n />\n <div className=\"avatar-uploader-btn-mask\">\n <Icon type={loading ? 'loading' : 'picture'} />\n </div>\n </div>\n )\n\n return (\n <div\n className={cn({\n 'tntd-upload-wrapper-avatar': avatar,\n })}\n >\n <AntdUpload\n {...rest}\n ref={ref}\n name=\"avatar\"\n listType=\"picture-card\"\n className=\"avatar-uploader\"\n showUploadList={false}\n onChange={handleChange}\n >\n {children || uploadButton}\n </AntdUpload>\n </div>\n )\n})\n\n//拖拽\nconst TntdDragger = forwardRef<AntdUpload, UploadProps & { hintText?: string; hintTitle?: string }>(\n ({ className, children, hintText, hintTitle, ...rest }, ref) => {\n return (\n <LocaleReceiver componentName=\"Upload\">\n {(locale) => {\n return (\n <ConfigConsumer>\n {({ getPrefixCls }) => {\n const prefixCls = getPrefixCls('upload')\n return (\n <AntdUpload.Dragger\n {...rest}\n ref={ref}\n className={`${className} tntd-upload-dragger`}\n >\n {children || (\n <div className=\"tntd-upload-dragger-body\">\n <UploadSVG />\n <p className=\"tntd-upload-dragger-text\">\n {hintTitle || (locale as Record<'hintTitle', object>).hintTitle}\n </p>\n {!!hintText && <p className=\"tntd-upload-dragger-hint\">{hintText}</p>}\n </div>\n )}\n </AntdUpload.Dragger>\n )\n }}\n </ConfigConsumer>\n )\n }}\n </LocaleReceiver>\n )\n }\n)\n\n//特殊处理照片墙\nconst TntdUpload = forwardRef<\n AntdUpload,\n UploadProps & {\n pictureCardTitle?: boolean\n pictureCardId?: string\n avatar?: boolean\n avatarStyle?: React.CSSProperties\n }\n>((props, ref) => {\n const { fileList, defaultFileList, pictureCardTitle, listType, avatar } = props\n const showList = fileList ? fileList : defaultFileList\n const uploadRef = useRef<HTMLDivElement>(null) // 新增的ref用于访问AntdUpload\n\n useLayoutEffect(() => {\n if (listType === 'picture-card' && pictureCardTitle && uploadRef.current) {\n const container = uploadRef.current.querySelector('.ant-upload-list')\n // 初次渲染时手动更新 ellipsis\n const updateEllipsis = () => {\n if (uploadRef.current) {\n const updatedContainers = uploadRef.current.querySelectorAll(\n `.ant-upload-list-picture-card-container`\n )\n const ellipsisElements = uploadRef.current.querySelectorAll(\n `.tntd-upload-ellipsis .tntd-ellipsis`\n )\n\n if (updatedContainers.length === ellipsisElements.length) {\n updatedContainers.forEach((item, index) => {\n if (ellipsisElements[index] && !item.contains(ellipsisElements[index])) {\n const existingEllipsis = item.querySelector('.tntd-ellipsis')\n if (existingEllipsis) {\n item.removeChild(existingEllipsis)\n }\n item.appendChild(ellipsisElements[index])\n }\n })\n }\n }\n }\n\n const observer = new MutationObserver((mutationsList) => {\n for (const mutation of mutationsList) {\n if (mutation.type === 'childList') {\n // 处理 DOM 变化时的更新逻辑\n updateEllipsis()\n }\n }\n })\n\n // 初次渲染时立即执行一次 updateEllipsis\n updateEllipsis()\n\n if (container) {\n observer.observe(container, { childList: true, subtree: true })\n }\n\n // 清理 observer\n return () => {\n observer.disconnect()\n }\n }\n }, [listType, uploadRef, showList, pictureCardTitle])\n\n return (\n <ConfigConsumer>\n {({ getPrefixCls }) => {\n const prefixCls = getPrefixCls('upload')\n return (\n <div\n className={cn('tntd-upload-wrapper', {\n 'tntd-upload-wrapper-picture-card': listType === 'picture-card' && pictureCardTitle,\n })}\n ref={uploadRef}\n >\n {listType === 'picture-card' && avatar ? (\n <TntdAvatar {...props} ref={ref} />\n ) : (\n <AntdUpload {...props} ref={ref} />\n )}\n <div\n className=\"tntd-upload-ellipsis\"\n style={{ visibility: 'hidden', position: 'absolute' }}\n key={showList?.length}\n >\n {listType === 'picture-card' &&\n pictureCardTitle &&\n showList?.map((item) => {\n return (\n <Ellipsis\n title={item.name}\n widthLimit={104}\n className={`tntd-upload-list-Ellipsis uid-${item.uid}`}\n style={{ width: 104 }}\n />\n )\n })}\n </div>\n </div>\n )\n }}\n </ConfigConsumer>\n )\n})\n\nconst Upload: ComponentType<UploadProps> = connectReadonlyComponent(TntdUpload, (props) => (\n <AntdUpload {...props} disabled />\n))\n\n// @ts-ignore\nUpload.Dragger = TntdDragger\n// Upload.Dragger = AntdUpload.Dragger\n\nexport default Upload\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/upload/index.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { ComponentType, forwardRef, useLayoutEffect, useState, useRef } from 'react'\nimport AntdUpload from 'antd/es/upload'\nimport LocaleReceiver from 'antd/es/locale-provider/LocaleReceiver'\nimport type { UploadProps as AntdUploadProps, UploadChangeParam } from 'antd/es/upload'\nimport { ConfigConsumer } from 'antd/es/config-provider'\nimport { connectReadonlyComponent } from '../connect'\nimport UploadSVG from './svg/UploadSVG'\nimport Ellipsis from '../ellipsis'\nimport Icon from '../icon'\nimport cn from 'classnames'\nimport './upload.less'\nimport './style'\n\nexport * from 'antd/es/upload'\n\nexport type UploadProps = AntdUploadProps & {\n readonly?: boolean\n}\n\n//头像\nconst TntdAvatar = forwardRef<\n AntdUpload,\n UploadProps & { avatar?: boolean; avatarStyle?: React.CSSProperties }\n>((props, ref) => {\n const { children, listType, avatar, avatarStyle, onChange: cusOnChange, ...rest } = props\n const [imageUrl, setImageUrl] = useState<string>()\n const [loading, setLoading] = useState(false)\n const getBase64 = (\n img: Blob,\n callback: { (imageUrl: string): void; (arg0: string | ArrayBuffer | null): any }\n ) => {\n const reader = new FileReader()\n reader.addEventListener('load', () => callback(reader.result))\n reader.readAsDataURL(img)\n }\n\n const handleChange = (info: UploadChangeParam<any>) => {\n if (cusOnChange) {\n cusOnChange(info)\n }\n getBase64(info.file.originFileObj, (imageUrl) => {\n setImageUrl(imageUrl as string)\n setLoading(false)\n })\n }\n\n const uploadButton = (\n <div className=\"avatar-uploader-btn\" style={avatarStyle}>\n <img\n src={imageUrl}\n style={{\n width: '100%',\n height: '100%',\n borderRadius: '100%',\n background: 'white',\n border: '2px solid #00000066',\n }}\n />\n <div className=\"avatar-uploader-btn-mask\">\n <Icon type={loading ? 'loading' : 'picture'} />\n </div>\n </div>\n )\n\n return (\n <div\n className={cn({\n 'tntd-upload-wrapper-avatar': avatar,\n })}\n >\n <AntdUpload\n {...rest}\n ref={ref}\n name=\"avatar\"\n listType=\"picture-card\"\n className=\"avatar-uploader\"\n showUploadList={false}\n onChange={handleChange}\n >\n {children || uploadButton}\n </AntdUpload>\n </div>\n )\n})\n\n//拖拽\nconst TntdDragger = forwardRef<AntdUpload, UploadProps & { hintText?: string; hintTitle?: string }>(\n ({ className, children, hintText, hintTitle, ...rest }, ref) => {\n return (\n <LocaleReceiver componentName=\"Upload\">\n {(locale) => {\n return (\n <ConfigConsumer>\n {({ getPrefixCls }) => {\n const prefixCls = getPrefixCls('upload')\n return (\n <AntdUpload.Dragger\n {...rest}\n ref={ref}\n className={`${className} tntd-upload-dragger`}\n >\n {children || (\n <div className=\"tntd-upload-dragger-body\">\n <UploadSVG />\n <p className=\"tntd-upload-dragger-text\">\n {hintTitle || (locale as Record<'hintTitle', object>).hintTitle}\n </p>\n {!!hintText && <p className=\"tntd-upload-dragger-hint\">{hintText}</p>}\n </div>\n )}\n </AntdUpload.Dragger>\n )\n }}\n </ConfigConsumer>\n )\n }}\n </LocaleReceiver>\n )\n }\n)\n\n//特殊处理照片墙\nconst TntdUpload = forwardRef<\n AntdUpload,\n UploadProps & {\n pictureCardTitle?: boolean\n pictureCardId?: string\n avatar?: boolean\n avatarStyle?: React.CSSProperties\n }\n>((props, ref) => {\n const { fileList, defaultFileList, pictureCardTitle, listType, avatar } = props\n const showList = fileList ? fileList : defaultFileList\n const uploadRef = useRef<HTMLDivElement>(null) // 新增的ref用于访问AntdUpload\n\n useLayoutEffect(() => {\n if (listType === 'picture-card' && pictureCardTitle && uploadRef.current) {\n const container = uploadRef.current.querySelector('.ant-upload-list')\n // 初次渲染时手动更新 ellipsis\n const updateEllipsis = () => {\n if (uploadRef.current) {\n const updatedContainers = uploadRef.current.querySelectorAll(\n `.ant-upload-list-picture-card-container`\n )\n const ellipsisElements = uploadRef.current.querySelectorAll(\n `.tntd-upload-ellipsis .tntd-ellipsis`\n )\n\n if (updatedContainers.length === ellipsisElements.length) {\n updatedContainers.forEach((item, index) => {\n if (ellipsisElements[index] && !item.contains(ellipsisElements[index])) {\n const existingEllipsis = item.querySelector('.tntd-ellipsis')\n if (existingEllipsis) {\n item.removeChild(existingEllipsis)\n }\n item.appendChild(ellipsisElements[index])\n }\n })\n }\n }\n }\n\n const observer = new MutationObserver((mutationsList) => {\n for (const mutation of mutationsList) {\n if (mutation.type === 'childList') {\n // 处理 DOM 变化时的更新逻辑\n updateEllipsis()\n }\n }\n })\n\n // 初次渲染时立即执行一次 updateEllipsis\n updateEllipsis()\n\n if (container) {\n observer.observe(container, { childList: true, subtree: true })\n }\n\n // 清理 observer\n return () => {\n observer.disconnect()\n }\n }\n }, [listType, uploadRef, showList, pictureCardTitle])\n\n const isPictureCard = listType === 'picture-card' && pictureCardTitle\n\n return (\n <span\n className={cn('tntd-upload-wrapper', {\n 'tntd-upload-wrapper-picture-card': isPictureCard,\n })}\n ref={uploadRef}\n >\n {listType === 'picture-card' && avatar ? (\n <TntdAvatar {...props} ref={ref} />\n ) : (\n <AntdUpload {...props} ref={ref} />\n )}\n {isPictureCard && (\n <div\n className=\"tntd-upload-ellipsis\"\n style={{ visibility: 'hidden', position: 'absolute' }}\n key={showList?.length}\n >\n {showList?.map((item) => {\n return (\n <Ellipsis\n title={item.name}\n widthLimit={104}\n className={`tntd-upload-list-Ellipsis uid-${item.uid}`}\n style={{ width: 104 }}\n />\n )\n })}\n </div>\n )}\n </span>\n )\n})\n\nconst Upload: ComponentType<UploadProps> = connectReadonlyComponent(TntdUpload, (props) => (\n <AntdUpload {...props} disabled />\n))\n\n// @ts-ignore\nUpload.Dragger = TntdDragger\n// Upload.Dragger = AntdUpload.Dragger\n\nexport default Upload\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/upload/index.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAE,aAAa,EAAiD,MAAM,OAAO,CAAA;AAG3F,OAAO,KAAK,EAAE,WAAW,IAAI,eAAe,EAAqB,MAAM,gBAAgB,CAAA;AAOvF,OAAO,eAAe,CAAA;AACtB,OAAO,SAAS,CAAA;AAEhB,cAAc,gBAAgB,CAAA;AAE9B,oBAAY,WAAW,GAAG,eAAe,GAAG;IAC1C,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB,CAAA;AAiND,QAAA,MAAM,MAAM,EAAE,aAAa,CAAC,WAAW,CAErC,CAAA;AAMF,eAAe,MAAM,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/upload/index.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAE,aAAa,EAAiD,MAAM,OAAO,CAAA;AAG3F,OAAO,KAAK,EAAE,WAAW,IAAI,eAAe,EAAqB,MAAM,gBAAgB,CAAA;AAOvF,OAAO,eAAe,CAAA;AACtB,OAAO,SAAS,CAAA;AAEhB,cAAc,gBAAgB,CAAA;AAE9B,oBAAY,WAAW,GAAG,eAAe,GAAG;IAC1C,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB,CAAA;AA4MD,QAAA,MAAM,MAAM,EAAE,aAAa,CAAC,WAAW,CAErC,CAAA;AAMF,eAAe,MAAM,CAAA"}
@@ -195,36 +195,33 @@ var TntdUpload = (0, _react.forwardRef)(function (props, ref) {
195
195
  };
196
196
  }
197
197
  }, [listType, uploadRef, showList, pictureCardTitle]);
198
- return _react["default"].createElement(_configProvider.ConfigConsumer, null, function (_ref2) {
199
- var getPrefixCls = _ref2.getPrefixCls;
200
- var prefixCls = getPrefixCls('upload');
201
- return _react["default"].createElement("div", {
202
- className: (0, _classnames["default"])('tntd-upload-wrapper', {
203
- 'tntd-upload-wrapper-picture-card': listType === 'picture-card' && pictureCardTitle
204
- }),
205
- ref: uploadRef
206
- }, listType === 'picture-card' && avatar ? _react["default"].createElement(TntdAvatar, Object.assign({}, props, {
207
- ref: ref
208
- })) : _react["default"].createElement(_upload["default"], Object.assign({}, props, {
209
- ref: ref
210
- })), _react["default"].createElement("div", {
211
- className: "tntd-upload-ellipsis",
198
+ var isPictureCard = listType === 'picture-card' && pictureCardTitle;
199
+ return _react["default"].createElement("span", {
200
+ className: (0, _classnames["default"])('tntd-upload-wrapper', {
201
+ 'tntd-upload-wrapper-picture-card': isPictureCard
202
+ }),
203
+ ref: uploadRef
204
+ }, listType === 'picture-card' && avatar ? _react["default"].createElement(TntdAvatar, Object.assign({}, props, {
205
+ ref: ref
206
+ })) : _react["default"].createElement(_upload["default"], Object.assign({}, props, {
207
+ ref: ref
208
+ })), isPictureCard && _react["default"].createElement("div", {
209
+ className: "tntd-upload-ellipsis",
210
+ style: {
211
+ visibility: 'hidden',
212
+ position: 'absolute'
213
+ },
214
+ key: showList === null || showList === void 0 ? void 0 : showList.length
215
+ }, showList === null || showList === void 0 ? void 0 : showList.map(function (item) {
216
+ return _react["default"].createElement(_ellipsis["default"], {
217
+ title: item.name,
218
+ widthLimit: 104,
219
+ className: "tntd-upload-list-Ellipsis uid-".concat(item.uid),
212
220
  style: {
213
- visibility: 'hidden',
214
- position: 'absolute'
215
- },
216
- key: showList === null || showList === void 0 ? void 0 : showList.length
217
- }, listType === 'picture-card' && pictureCardTitle && (showList === null || showList === void 0 ? void 0 : showList.map(function (item) {
218
- return _react["default"].createElement(_ellipsis["default"], {
219
- title: item.name,
220
- widthLimit: 104,
221
- className: "tntd-upload-list-Ellipsis uid-".concat(item.uid),
222
- style: {
223
- width: 104
224
- }
225
- });
226
- }))));
227
- });
221
+ width: 104
222
+ }
223
+ });
224
+ })));
228
225
  });
229
226
  var Upload = (0, _connect.connectReadonlyComponent)(TntdUpload, function (props) {
230
227
  return _react["default"].createElement(_upload["default"], Object.assign({}, props, {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/upload/index.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { ComponentType, forwardRef, useLayoutEffect, useState, useRef } from 'react'\nimport AntdUpload from 'antd/lib/upload'\nimport LocaleReceiver from 'antd/lib/locale-provider/LocaleReceiver'\nimport type { UploadProps as AntdUploadProps, UploadChangeParam } from 'antd/lib/upload'\nimport { ConfigConsumer } from 'antd/lib/config-provider'\nimport { connectReadonlyComponent } from '../connect'\nimport UploadSVG from './svg/UploadSVG'\nimport Ellipsis from '../ellipsis'\nimport Icon from '../icon'\nimport cn from 'classnames'\nimport './upload.less'\nimport './style'\n\nexport * from 'antd/lib/upload'\n\nexport type UploadProps = AntdUploadProps & {\n readonly?: boolean\n}\n\n//头像\nconst TntdAvatar = forwardRef<\n AntdUpload,\n UploadProps & { avatar?: boolean; avatarStyle?: React.CSSProperties }\n>((props, ref) => {\n const { children, listType, avatar, avatarStyle, onChange: cusOnChange, ...rest } = props\n const [imageUrl, setImageUrl] = useState<string>()\n const [loading, setLoading] = useState(false)\n const getBase64 = (\n img: Blob,\n callback: { (imageUrl: string): void; (arg0: string | ArrayBuffer | null): any }\n ) => {\n const reader = new FileReader()\n reader.addEventListener('load', () => callback(reader.result))\n reader.readAsDataURL(img)\n }\n\n const handleChange = (info: UploadChangeParam<any>) => {\n if (cusOnChange) {\n cusOnChange(info)\n }\n getBase64(info.file.originFileObj, (imageUrl) => {\n setImageUrl(imageUrl as string)\n setLoading(false)\n })\n }\n\n const uploadButton = (\n <div className=\"avatar-uploader-btn\" style={avatarStyle}>\n <img\n src={imageUrl}\n style={{\n width: '100%',\n height: '100%',\n borderRadius: '100%',\n background: 'white',\n border: '2px solid #00000066',\n }}\n />\n <div className=\"avatar-uploader-btn-mask\">\n <Icon type={loading ? 'loading' : 'picture'} />\n </div>\n </div>\n )\n\n return (\n <div\n className={cn({\n 'tntd-upload-wrapper-avatar': avatar,\n })}\n >\n <AntdUpload\n {...rest}\n ref={ref}\n name=\"avatar\"\n listType=\"picture-card\"\n className=\"avatar-uploader\"\n showUploadList={false}\n onChange={handleChange}\n >\n {children || uploadButton}\n </AntdUpload>\n </div>\n )\n})\n\n//拖拽\nconst TntdDragger = forwardRef<AntdUpload, UploadProps & { hintText?: string; hintTitle?: string }>(\n ({ className, children, hintText, hintTitle, ...rest }, ref) => {\n return (\n <LocaleReceiver componentName=\"Upload\">\n {(locale) => {\n return (\n <ConfigConsumer>\n {({ getPrefixCls }) => {\n const prefixCls = getPrefixCls('upload')\n return (\n <AntdUpload.Dragger\n {...rest}\n ref={ref}\n className={`${className} tntd-upload-dragger`}\n >\n {children || (\n <div className=\"tntd-upload-dragger-body\">\n <UploadSVG />\n <p className=\"tntd-upload-dragger-text\">\n {hintTitle || (locale as Record<'hintTitle', object>).hintTitle}\n </p>\n {!!hintText && <p className=\"tntd-upload-dragger-hint\">{hintText}</p>}\n </div>\n )}\n </AntdUpload.Dragger>\n )\n }}\n </ConfigConsumer>\n )\n }}\n </LocaleReceiver>\n )\n }\n)\n\n//特殊处理照片墙\nconst TntdUpload = forwardRef<\n AntdUpload,\n UploadProps & {\n pictureCardTitle?: boolean\n pictureCardId?: string\n avatar?: boolean\n avatarStyle?: React.CSSProperties\n }\n>((props, ref) => {\n const { fileList, defaultFileList, pictureCardTitle, listType, avatar } = props\n const showList = fileList ? fileList : defaultFileList\n const uploadRef = useRef<HTMLDivElement>(null) // 新增的ref用于访问AntdUpload\n\n useLayoutEffect(() => {\n if (listType === 'picture-card' && pictureCardTitle && uploadRef.current) {\n const container = uploadRef.current.querySelector('.ant-upload-list')\n // 初次渲染时手动更新 ellipsis\n const updateEllipsis = () => {\n if (uploadRef.current) {\n const updatedContainers = uploadRef.current.querySelectorAll(\n `.ant-upload-list-picture-card-container`\n )\n const ellipsisElements = uploadRef.current.querySelectorAll(\n `.tntd-upload-ellipsis .tntd-ellipsis`\n )\n\n if (updatedContainers.length === ellipsisElements.length) {\n updatedContainers.forEach((item, index) => {\n if (ellipsisElements[index] && !item.contains(ellipsisElements[index])) {\n const existingEllipsis = item.querySelector('.tntd-ellipsis')\n if (existingEllipsis) {\n item.removeChild(existingEllipsis)\n }\n item.appendChild(ellipsisElements[index])\n }\n })\n }\n }\n }\n\n const observer = new MutationObserver((mutationsList) => {\n for (const mutation of mutationsList) {\n if (mutation.type === 'childList') {\n // 处理 DOM 变化时的更新逻辑\n updateEllipsis()\n }\n }\n })\n\n // 初次渲染时立即执行一次 updateEllipsis\n updateEllipsis()\n\n if (container) {\n observer.observe(container, { childList: true, subtree: true })\n }\n\n // 清理 observer\n return () => {\n observer.disconnect()\n }\n }\n }, [listType, uploadRef, showList, pictureCardTitle])\n\n return (\n <ConfigConsumer>\n {({ getPrefixCls }) => {\n const prefixCls = getPrefixCls('upload')\n return (\n <div\n className={cn('tntd-upload-wrapper', {\n 'tntd-upload-wrapper-picture-card': listType === 'picture-card' && pictureCardTitle,\n })}\n ref={uploadRef}\n >\n {listType === 'picture-card' && avatar ? (\n <TntdAvatar {...props} ref={ref} />\n ) : (\n <AntdUpload {...props} ref={ref} />\n )}\n <div\n className=\"tntd-upload-ellipsis\"\n style={{ visibility: 'hidden', position: 'absolute' }}\n key={showList?.length}\n >\n {listType === 'picture-card' &&\n pictureCardTitle &&\n showList?.map((item) => {\n return (\n <Ellipsis\n title={item.name}\n widthLimit={104}\n className={`tntd-upload-list-Ellipsis uid-${item.uid}`}\n style={{ width: 104 }}\n />\n )\n })}\n </div>\n </div>\n )\n }}\n </ConfigConsumer>\n )\n})\n\nconst Upload: ComponentType<UploadProps> = connectReadonlyComponent(TntdUpload, (props) => (\n <AntdUpload {...props} disabled />\n))\n\n// @ts-ignore\nUpload.Dragger = TntdDragger\n// Upload.Dragger = AntdUpload.Dragger\n\nexport default Upload\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/upload/index.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { ComponentType, forwardRef, useLayoutEffect, useState, useRef } from 'react'\nimport AntdUpload from 'antd/lib/upload'\nimport LocaleReceiver from 'antd/lib/locale-provider/LocaleReceiver'\nimport type { UploadProps as AntdUploadProps, UploadChangeParam } from 'antd/lib/upload'\nimport { ConfigConsumer } from 'antd/lib/config-provider'\nimport { connectReadonlyComponent } from '../connect'\nimport UploadSVG from './svg/UploadSVG'\nimport Ellipsis from '../ellipsis'\nimport Icon from '../icon'\nimport cn from 'classnames'\nimport './upload.less'\nimport './style'\n\nexport * from 'antd/lib/upload'\n\nexport type UploadProps = AntdUploadProps & {\n readonly?: boolean\n}\n\n//头像\nconst TntdAvatar = forwardRef<\n AntdUpload,\n UploadProps & { avatar?: boolean; avatarStyle?: React.CSSProperties }\n>((props, ref) => {\n const { children, listType, avatar, avatarStyle, onChange: cusOnChange, ...rest } = props\n const [imageUrl, setImageUrl] = useState<string>()\n const [loading, setLoading] = useState(false)\n const getBase64 = (\n img: Blob,\n callback: { (imageUrl: string): void; (arg0: string | ArrayBuffer | null): any }\n ) => {\n const reader = new FileReader()\n reader.addEventListener('load', () => callback(reader.result))\n reader.readAsDataURL(img)\n }\n\n const handleChange = (info: UploadChangeParam<any>) => {\n if (cusOnChange) {\n cusOnChange(info)\n }\n getBase64(info.file.originFileObj, (imageUrl) => {\n setImageUrl(imageUrl as string)\n setLoading(false)\n })\n }\n\n const uploadButton = (\n <div className=\"avatar-uploader-btn\" style={avatarStyle}>\n <img\n src={imageUrl}\n style={{\n width: '100%',\n height: '100%',\n borderRadius: '100%',\n background: 'white',\n border: '2px solid #00000066',\n }}\n />\n <div className=\"avatar-uploader-btn-mask\">\n <Icon type={loading ? 'loading' : 'picture'} />\n </div>\n </div>\n )\n\n return (\n <div\n className={cn({\n 'tntd-upload-wrapper-avatar': avatar,\n })}\n >\n <AntdUpload\n {...rest}\n ref={ref}\n name=\"avatar\"\n listType=\"picture-card\"\n className=\"avatar-uploader\"\n showUploadList={false}\n onChange={handleChange}\n >\n {children || uploadButton}\n </AntdUpload>\n </div>\n )\n})\n\n//拖拽\nconst TntdDragger = forwardRef<AntdUpload, UploadProps & { hintText?: string; hintTitle?: string }>(\n ({ className, children, hintText, hintTitle, ...rest }, ref) => {\n return (\n <LocaleReceiver componentName=\"Upload\">\n {(locale) => {\n return (\n <ConfigConsumer>\n {({ getPrefixCls }) => {\n const prefixCls = getPrefixCls('upload')\n return (\n <AntdUpload.Dragger\n {...rest}\n ref={ref}\n className={`${className} tntd-upload-dragger`}\n >\n {children || (\n <div className=\"tntd-upload-dragger-body\">\n <UploadSVG />\n <p className=\"tntd-upload-dragger-text\">\n {hintTitle || (locale as Record<'hintTitle', object>).hintTitle}\n </p>\n {!!hintText && <p className=\"tntd-upload-dragger-hint\">{hintText}</p>}\n </div>\n )}\n </AntdUpload.Dragger>\n )\n }}\n </ConfigConsumer>\n )\n }}\n </LocaleReceiver>\n )\n }\n)\n\n//特殊处理照片墙\nconst TntdUpload = forwardRef<\n AntdUpload,\n UploadProps & {\n pictureCardTitle?: boolean\n pictureCardId?: string\n avatar?: boolean\n avatarStyle?: React.CSSProperties\n }\n>((props, ref) => {\n const { fileList, defaultFileList, pictureCardTitle, listType, avatar } = props\n const showList = fileList ? fileList : defaultFileList\n const uploadRef = useRef<HTMLDivElement>(null) // 新增的ref用于访问AntdUpload\n\n useLayoutEffect(() => {\n if (listType === 'picture-card' && pictureCardTitle && uploadRef.current) {\n const container = uploadRef.current.querySelector('.ant-upload-list')\n // 初次渲染时手动更新 ellipsis\n const updateEllipsis = () => {\n if (uploadRef.current) {\n const updatedContainers = uploadRef.current.querySelectorAll(\n `.ant-upload-list-picture-card-container`\n )\n const ellipsisElements = uploadRef.current.querySelectorAll(\n `.tntd-upload-ellipsis .tntd-ellipsis`\n )\n\n if (updatedContainers.length === ellipsisElements.length) {\n updatedContainers.forEach((item, index) => {\n if (ellipsisElements[index] && !item.contains(ellipsisElements[index])) {\n const existingEllipsis = item.querySelector('.tntd-ellipsis')\n if (existingEllipsis) {\n item.removeChild(existingEllipsis)\n }\n item.appendChild(ellipsisElements[index])\n }\n })\n }\n }\n }\n\n const observer = new MutationObserver((mutationsList) => {\n for (const mutation of mutationsList) {\n if (mutation.type === 'childList') {\n // 处理 DOM 变化时的更新逻辑\n updateEllipsis()\n }\n }\n })\n\n // 初次渲染时立即执行一次 updateEllipsis\n updateEllipsis()\n\n if (container) {\n observer.observe(container, { childList: true, subtree: true })\n }\n\n // 清理 observer\n return () => {\n observer.disconnect()\n }\n }\n }, [listType, uploadRef, showList, pictureCardTitle])\n\n const isPictureCard = listType === 'picture-card' && pictureCardTitle\n\n return (\n <span\n className={cn('tntd-upload-wrapper', {\n 'tntd-upload-wrapper-picture-card': isPictureCard,\n })}\n ref={uploadRef}\n >\n {listType === 'picture-card' && avatar ? (\n <TntdAvatar {...props} ref={ref} />\n ) : (\n <AntdUpload {...props} ref={ref} />\n )}\n {isPictureCard && (\n <div\n className=\"tntd-upload-ellipsis\"\n style={{ visibility: 'hidden', position: 'absolute' }}\n key={showList?.length}\n >\n {showList?.map((item) => {\n return (\n <Ellipsis\n title={item.name}\n widthLimit={104}\n className={`tntd-upload-list-Ellipsis uid-${item.uid}`}\n style={{ width: 104 }}\n />\n )\n })}\n </div>\n )}\n </span>\n )\n})\n\nconst Upload: ComponentType<UploadProps> = connectReadonlyComponent(TntdUpload, (props) => (\n <AntdUpload {...props} disabled />\n))\n\n// @ts-ignore\nUpload.Dragger = TntdDragger\n// Upload.Dragger = AntdUpload.Dragger\n\nexport default Upload\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tntd",
3
- "version": "3.0.29-beta.3",
3
+ "version": "3.0.30-beta.1",
4
4
  "license": "MIT",
5
5
  "scripts": {
6
6
  "start": "heft start --storybook",