iglooform 3.3.8 → 3.4.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.
Files changed (101) hide show
  1. package/.dumi/tmp/core/EmptyRoute.d.ts +1 -0
  2. package/.dumi/tmp/core/defineApp.d.ts +22 -0
  3. package/.dumi/tmp/core/exportStaticRuntimePlugin.d.ts +1 -0
  4. package/.dumi/tmp/core/helmet.d.ts +3 -0
  5. package/.dumi/tmp/core/helmetContext.d.ts +1 -0
  6. package/.dumi/tmp/core/history.d.ts +4 -0
  7. package/.dumi/tmp/core/historyIntelli.d.ts +50 -0
  8. package/.dumi/tmp/core/plugin.d.ts +25 -0
  9. package/.dumi/tmp/core/pluginConfig.d.ts +315 -0
  10. package/.dumi/tmp/core/polyfill.d.ts +198 -0
  11. package/.dumi/tmp/core/route.d.ts +230 -0
  12. package/.dumi/tmp/core/terminal.d.ts +14 -0
  13. package/.dumi/tmp/dumi/exports.d.ts +2 -0
  14. package/.dumi/tmp/dumi/locales/config.d.ts +90 -0
  15. package/.dumi/tmp/dumi/locales/runtime.d.ts +2 -0
  16. package/.dumi/tmp/dumi/meta/atoms.d.ts +1 -0
  17. package/.dumi/tmp/dumi/meta/index.d.ts +203 -0
  18. package/.dumi/tmp/dumi/meta/runtime.d.ts +3 -0
  19. package/.dumi/tmp/dumi/meta/tabs.d.ts +1 -0
  20. package/.dumi/tmp/dumi/theme/ContextWrapper.d.ts +1 -0
  21. package/.dumi/tmp/dumi/theme/ContextWrapper.tsx +1 -1
  22. package/.dumi/tmp/dumi/theme/builtins/API.d.ts +1 -0
  23. package/.dumi/tmp/dumi/theme/builtins/Badge.d.ts +1 -0
  24. package/.dumi/tmp/dumi/theme/builtins/Container.d.ts +1 -0
  25. package/.dumi/tmp/dumi/theme/builtins/Previewer.d.ts +1 -0
  26. package/.dumi/tmp/dumi/theme/builtins/SourceCode.d.ts +1 -0
  27. package/.dumi/tmp/dumi/theme/builtins/Table.d.ts +1 -0
  28. package/.dumi/tmp/dumi/theme/builtins/Tree.d.ts +1 -0
  29. package/.dumi/tmp/dumi/theme/layouts/DocLayout.d.ts +1 -0
  30. package/.dumi/tmp/dumi/theme/loading.d.ts +4 -0
  31. package/.dumi/tmp/dumi/theme/slots/ColorSwitch.d.ts +1 -0
  32. package/.dumi/tmp/dumi/theme/slots/Content.d.ts +1 -0
  33. package/.dumi/tmp/dumi/theme/slots/ContentFooter.d.ts +1 -0
  34. package/.dumi/tmp/dumi/theme/slots/ContentTabs.d.ts +1 -0
  35. package/.dumi/tmp/dumi/theme/slots/Features.d.ts +1 -0
  36. package/.dumi/tmp/dumi/theme/slots/Footer.d.ts +1 -0
  37. package/.dumi/tmp/dumi/theme/slots/Header.d.ts +1 -0
  38. package/.dumi/tmp/dumi/theme/slots/HeaderExtra.d.ts +1 -0
  39. package/.dumi/tmp/dumi/theme/slots/Hero.d.ts +1 -0
  40. package/.dumi/tmp/dumi/theme/slots/HeroTitle.d.ts +1 -0
  41. package/.dumi/tmp/dumi/theme/slots/LangSwitch.d.ts +1 -0
  42. package/.dumi/tmp/dumi/theme/slots/Logo.d.ts +1 -0
  43. package/.dumi/tmp/dumi/theme/slots/Navbar.d.ts +1 -0
  44. package/.dumi/tmp/dumi/theme/slots/NavbarExtra.d.ts +1 -0
  45. package/.dumi/tmp/dumi/theme/slots/NotFound.d.ts +1 -0
  46. package/.dumi/tmp/dumi/theme/slots/PreviewerActions.d.ts +1 -0
  47. package/.dumi/tmp/dumi/theme/slots/PreviewerActionsExtra.d.ts +1 -0
  48. package/.dumi/tmp/dumi/theme/slots/RtlSwitch.d.ts +1 -0
  49. package/.dumi/tmp/dumi/theme/slots/SearchBar.d.ts +2 -0
  50. package/.dumi/tmp/dumi/theme/slots/SearchResult.d.ts +1 -0
  51. package/.dumi/tmp/dumi/theme/slots/Sidebar.d.ts +1 -0
  52. package/.dumi/tmp/dumi/theme/slots/SocialIcon.d.ts +1 -0
  53. package/.dumi/tmp/dumi/theme/slots/Toc.d.ts +1 -0
  54. package/.dumi/tmp/exports.d.ts +11 -0
  55. package/.dumi/tmp/plugin-antd/runtime.d.ts +1 -0
  56. package/.dumi/tmp/plugin-html2sketch/index.d.ts +1 -0
  57. package/.dumi/tmp/testBrowser.d.ts +10 -0
  58. package/.dumi/tmp/umi.d.ts +4 -0
  59. package/es/config-provider.d.ts +9 -0
  60. package/es/documents/index.js +27 -3
  61. package/es/form/hsteps/index.d.ts +21 -0
  62. package/es/form/step-items-selection/components/checkbox-group-items/style/index.d.ts +1 -0
  63. package/es/form/step-items-selection/components/item-info/style/index.d.ts +1 -0
  64. package/es/form/step-items-selection/components/section-of-item-condition/hooks/useAdaptAssertConfig.d.ts +4 -0
  65. package/es/form/step-items-selection/components/section-of-item-condition/style/index.d.ts +1 -0
  66. package/es/index.d.ts +49 -0
  67. package/es/locale/locale-provider.d.ts +13 -0
  68. package/es/media/file-icon.d.ts +9 -0
  69. package/es/media/index.d.ts +1 -0
  70. package/es/media/index.js +67 -36
  71. package/es/media/media.d.ts +4 -1
  72. package/es/media/media.js +75 -28
  73. package/es/types.d.ts +189 -0
  74. package/es/upload-photo/index.js +15 -4
  75. package/es/utils/tools.d.ts +5 -0
  76. package/lib/config-provider.d.ts +9 -0
  77. package/lib/documents/index.js +27 -3
  78. package/lib/form/hsteps/index.d.ts +21 -0
  79. package/lib/form/step-items-selection/components/checkbox-group-items/style/index.d.ts +1 -0
  80. package/lib/form/step-items-selection/components/item-info/style/index.d.ts +1 -0
  81. package/lib/form/step-items-selection/components/section-of-item-condition/hooks/useAdaptAssertConfig.d.ts +4 -0
  82. package/lib/form/step-items-selection/components/section-of-item-condition/style/index.d.ts +1 -0
  83. package/lib/index.d.ts +49 -0
  84. package/lib/locale/locale-provider.d.ts +13 -0
  85. package/lib/media/file-icon.d.ts +9 -0
  86. package/lib/media/index.d.ts +1 -0
  87. package/lib/media/index.js +66 -36
  88. package/lib/media/media.d.ts +4 -1
  89. package/lib/media/media.js +74 -28
  90. package/lib/types.d.ts +189 -0
  91. package/lib/upload-photo/index.js +15 -4
  92. package/lib/utils/tools.d.ts +5 -0
  93. package/package.json +1 -1
  94. package/.idea/codeStyles/Project.xml +0 -59
  95. package/.idea/codeStyles/codeStyleConfig.xml +0 -5
  96. package/.idea/iglooform.iml +0 -12
  97. package/.idea/modules.xml +0 -8
  98. package/.idea/prettier.xml +0 -6
  99. package/.idea/vcs.xml +0 -6
  100. package/es/upload-photo/index.d.ts +0 -28
  101. package/lib/upload-photo/index.d.ts +0 -28
@@ -9,6 +9,7 @@ var _react = _interopRequireWildcard(require("react"));
9
9
  var _entry = require("react-pdf/dist/esm/entry.webpack");
10
10
  var _antd = require("antd");
11
11
  var _locale = require("../locale");
12
+ var _iglooicon = require("iglooicon");
12
13
  var _jsxRuntime = require("react/jsx-runtime");
13
14
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
14
15
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
@@ -18,6 +19,26 @@ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o =
18
19
  function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
19
20
  function _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : "undefined" != typeof Symbol && arr[Symbol.iterator] || arr["@@iterator"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0); } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i.return && (_r = _i.return(), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }
20
21
  function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
22
+ var Loading = function Loading() {
23
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
24
+ style: {
25
+ display: 'flex',
26
+ justifyContent: 'center',
27
+ alignItems: 'center',
28
+ width: '100%',
29
+ height: '100%',
30
+ position: 'absolute',
31
+ zIndex: 1
32
+ },
33
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_iglooicon.LoadingOutlined, {
34
+ spinning: true,
35
+ style: {
36
+ fontSize: 24,
37
+ color: '#999999'
38
+ }
39
+ })
40
+ });
41
+ };
21
42
  var MediaItem = function MediaItem(_ref) {
22
43
  var type = _ref.type,
23
44
  src = _ref.src;
@@ -30,15 +51,25 @@ var MediaItem = function MediaItem(_ref) {
30
51
  _useState2 = _slicedToArray(_useState, 2),
31
52
  errorText = _useState2[0],
32
53
  setErrorText = _useState2[1];
54
+ var _useState3 = (0, _react.useState)(true),
55
+ _useState4 = _slicedToArray(_useState3, 2),
56
+ loading = _useState4[0],
57
+ setLoading = _useState4[1];
33
58
  switch (type) {
34
59
  case 'video':
35
- return /*#__PURE__*/(0, _jsxRuntime.jsx)("video", {
36
- src: src,
37
- style: {
38
- maxWidth: 80,
39
- maxHeight: 80
40
- },
41
- autoPlay: false
60
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
61
+ children: [loading && /*#__PURE__*/(0, _jsxRuntime.jsx)(Loading, {}), /*#__PURE__*/(0, _jsxRuntime.jsx)("video", {
62
+ src: src,
63
+ style: {
64
+ maxWidth: 80,
65
+ maxHeight: 80,
66
+ opacity: loading ? 0 : 1
67
+ },
68
+ autoPlay: false,
69
+ onLoadedData: function onLoadedData() {
70
+ return setLoading(false);
71
+ }
72
+ })]
42
73
  });
43
74
  case 'pdf':
44
75
  var needPassword = function needPassword() {
@@ -53,36 +84,50 @@ var MediaItem = function MediaItem(_ref) {
53
84
  }));
54
85
  }
55
86
  };
56
- return /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
87
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
57
88
  style: {
58
89
  maxWidth: 80,
59
90
  maxHeight: 80,
60
91
  position: 'absolute'
61
92
  },
62
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_entry.Document, {
63
- ref: documentRef,
64
- file: src,
65
- onPassword: needPassword,
66
- error: /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
67
- style: {
68
- textAlign: 'center'
93
+ children: [loading && /*#__PURE__*/(0, _jsxRuntime.jsx)(Loading, {}), /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
94
+ style: {
95
+ opacity: loading ? 0 : 1
96
+ },
97
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_entry.Document, {
98
+ ref: documentRef,
99
+ file: src,
100
+ onPassword: needPassword,
101
+ error: /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
102
+ style: {
103
+ textAlign: 'center'
104
+ },
105
+ children: errorText
106
+ }),
107
+ onLoadSuccess: function onLoadSuccess() {
108
+ return setLoading(false);
69
109
  },
70
- children: errorText
71
- }),
72
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_entry.Page, {
73
- pageNumber: 1,
74
- scale: 0.1
110
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_entry.Page, {
111
+ pageNumber: 1,
112
+ scale: 0.1
113
+ })
75
114
  })
76
- })
115
+ })]
77
116
  });
78
117
  default:
79
- return /*#__PURE__*/(0, _jsxRuntime.jsx)("img", {
80
- src: src,
81
- style: {
82
- maxWidth: 80,
83
- maxHeight: 80,
84
- position: 'absolute'
85
- }
118
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
119
+ children: [loading && /*#__PURE__*/(0, _jsxRuntime.jsx)(Loading, {}), /*#__PURE__*/(0, _jsxRuntime.jsx)("img", {
120
+ src: src,
121
+ style: {
122
+ maxWidth: 80,
123
+ maxHeight: 80,
124
+ position: 'absolute',
125
+ opacity: loading ? 0 : 1
126
+ },
127
+ onLoad: function onLoad() {
128
+ return setLoading(false);
129
+ }
130
+ })]
86
131
  });
87
132
  }
88
133
  };
@@ -121,5 +166,6 @@ var Media = function Media(_ref2) {
121
166
  })
122
167
  });
123
168
  };
169
+ Media.Loading = Loading;
124
170
  var _default = Media;
125
171
  exports.default = _default;
package/lib/types.d.ts ADDED
@@ -0,0 +1,189 @@
1
+ /// <reference path="../typings.d.ts" />
2
+ import { BlinkIdSingleSideRecognizerResult } from '@microblink/blinkid-in-browser-sdk';
3
+ import { FormItemProps, FormInstance } from 'antd/es/form';
4
+ import { ReactNode } from 'react';
5
+ import { NamePath } from 'rc-field-form/lib/interface';
6
+ import { CheckboxOptionType } from 'antd/es/checkbox';
7
+ import { SelectProps } from 'antd/es/select';
8
+ export { Rule } from 'rc-field-form/lib/interface';
9
+ export interface OCRHooks {
10
+ microBlink?: {
11
+ initResult: {
12
+ error?: string;
13
+ failed: boolean;
14
+ };
15
+ recognize: ((file: File) => Promise<BlinkIdSingleSideRecognizerResult | null>) | null;
16
+ loading?: boolean;
17
+ };
18
+ }
19
+ export interface OCRConfig {
20
+ microBlink?: {
21
+ licenseKey: string;
22
+ };
23
+ }
24
+ export type FormItemName = NamePath;
25
+ export interface FormBasicConfig {
26
+ config: FormItemConfig;
27
+ className?: string;
28
+ style?: Object;
29
+ locales?: {
30
+ cancelText?: string;
31
+ submitText?: string;
32
+ previewText?: string;
33
+ nextText?: string;
34
+ continueText?: string;
35
+ validateMessages?: Object;
36
+ };
37
+ initialValues?: any;
38
+ form?: FormInstance;
39
+ onCancel?(): void;
40
+ onSubmit?(values: Object, allValues?: Object): any;
41
+ requiredMark?: boolean;
42
+ showSubmitButton?: boolean;
43
+ getScrollContainer?: () => HTMLElement | null;
44
+ onFirstModified?: () => any;
45
+ uploadApi?: string;
46
+ selectDatasourceApi?: string;
47
+ validationRule?: string;
48
+ getRuleValidationApi?: string;
49
+ stepDirection?: 'vertical' | 'horizontal';
50
+ customizeComponents?: {
51
+ [name: string]: FC;
52
+ };
53
+ ocr?: OCRConfig;
54
+ validationCodeExtraParams?: Record<string, any>;
55
+ onValuesChange?: (changedValues: any, values: any) => void;
56
+ }
57
+ export type FormItemAssert = {
58
+ field: NamePath;
59
+ value?: any;
60
+ operation?: 'eq' | 'ne' | 'in' | 'ni' | 'lt' | 'le' | 'gt' | 'ge' | 'co' | 'nc' | 'filled' | 'unfilled' | 'co-some' | 'co-every' | 'some-in' | 'every-in';
61
+ };
62
+ export type FormItemCopyValue = {
63
+ assert: FormItemAssert;
64
+ copyFrom: NamePath;
65
+ disabled?: boolean;
66
+ };
67
+ export type FormItemSelectValue = {
68
+ assert: FormItemAssert;
69
+ value: any;
70
+ disabled?: boolean;
71
+ };
72
+ export interface FormItemExtraConfig extends FormItemProps {
73
+ labelTooltip?: string;
74
+ elements?: FormItemConfig[];
75
+ required?: boolean;
76
+ requiredAsserts?: FormItemAssert[];
77
+ extraLabel?: any;
78
+ xl?: number;
79
+ md?: number;
80
+ xs?: number;
81
+ span?: number;
82
+ areaCode?: number | string | (number | string)[];
83
+ phoneNumber?: number | string;
84
+ mergeRules?: boolean;
85
+ dependencies?: NamePath[];
86
+ antdDependencies?: NamePath[];
87
+ asserts?: FormItemAssert[];
88
+ shouldRender?: (form?: FormInstance) => boolean;
89
+ ignore?: boolean;
90
+ copyValue?: FormItemCopyValue;
91
+ selectValue?: FormItemSelectValue[];
92
+ disabled?: boolean | FormItemAssert | FormItemAssert[];
93
+ halfRow?: boolean;
94
+ fullRow?: boolean;
95
+ limit?: number;
96
+ hideWhenPreview?: boolean;
97
+ hideWhenEdit?: boolean;
98
+ requiredMessage?: string | ReactNode;
99
+ showOptional?: boolean;
100
+ previewFormater?(value: any, form?: FormInstance): any;
101
+ handleNext?(values: any): any;
102
+ render?(preview: boolean, form?: FormInstance, value?: any, onChange?: (params: any) => any, setShowStepButton?: IglooComponentProps['setShowStepButton']): any;
103
+ locales?: {
104
+ [key: string]: string;
105
+ };
106
+ options?: (CheckboxOptionType & {
107
+ extraInfo?: {
108
+ content: any;
109
+ shownTrigger: 'unchecked' | 'checked' | 'all';
110
+ };
111
+ })[] | SelectProps['options'];
112
+ sendOtp?: (value: any) => any;
113
+ dependField?: FormItemName;
114
+ countDownSeconds?: number;
115
+ getButtonDisabledState?: (form: FormInstance) => boolean;
116
+ getPreviousDisabledState?: (form: FormInstance) => boolean;
117
+ handleUpload?(file: File): PromiseLike<string>;
118
+ withoutForm?: boolean;
119
+ disableEditButton?: boolean;
120
+ hidePreviewDivider?: boolean;
121
+ valueFormater?: (value: any) => any;
122
+ currentStep?: number;
123
+ subscribedFields?: FormItemName[];
124
+ description?: string | React.ReactNode;
125
+ dateLimitationType?: 'relative' | 'absolute';
126
+ absoluteRangeStart?: number;
127
+ absoluteRangeEnd?: number;
128
+ relativeRangeStart?: {
129
+ type: 'day' | 'month' | 'year';
130
+ quantity: number;
131
+ pattern?: string;
132
+ dependField?: NamePath;
133
+ };
134
+ relativeRangeEnd?: {
135
+ type: 'day' | 'month' | 'year';
136
+ quantity: number;
137
+ pattern?: string;
138
+ dependField?: NamePath;
139
+ };
140
+ validationCode?: {
141
+ code: string;
142
+ errorMessage: string;
143
+ warningOnly?: boolean;
144
+ }[];
145
+ length?: number;
146
+ minLength?: number;
147
+ maxLength?: number;
148
+ idType?: 'KTP' | 'NIK';
149
+ validationRule?: string;
150
+ shouldRenderCode?: string;
151
+ disabledCode?: string;
152
+ automaticCalcCode?: string;
153
+ enableAutomaticCalc?: boolean;
154
+ [key: string]: any;
155
+ }
156
+ export interface FormItemConfig extends FormItemExtraConfig {
157
+ type?: string;
158
+ name?: NamePath;
159
+ label?: string | React.ReactNode;
160
+ previewLabel?: string | React.ReactNode;
161
+ labelProps?: any;
162
+ contentProps?: any;
163
+ ocr?: {
164
+ vender: string;
165
+ outputMap: {
166
+ field: string[];
167
+ source: string[];
168
+ }[];
169
+ };
170
+ }
171
+ export type FormItemPropsHandler = (config: FormItemConfig) => FormItemConfig;
172
+ export interface FC<P = {}> extends React.FunctionComponent<P> {
173
+ formItemPropsHandler?: FormItemPropsHandler;
174
+ isPreviewSupport?: boolean;
175
+ }
176
+ export interface Form extends React.ForwardRefExoticComponent<FormBasicConfig & React.RefAttributes<any>> {
177
+ useForm: () => FormInstance;
178
+ }
179
+ export interface IglooComponentProps {
180
+ validateField?: (nameList?: NamePath[]) => Promise<any>;
181
+ containerRef?: React.RefObject<any>;
182
+ setFieldError?(errorMsg?: string): void;
183
+ setFieldValue?(value?: any): void;
184
+ setShowStepButton?: (showButton: boolean) => void;
185
+ getFormInstance?: () => FormInstance;
186
+ locales?: {
187
+ [key: string]: string;
188
+ };
189
+ }
@@ -203,11 +203,22 @@ var UploadPhoto = function UploadPhoto(props) {
203
203
  return setFiles(_files);
204
204
  });
205
205
  };
206
-
207
- // 有初始值的处理 (不是初始化)
208
206
  (0, _react.useEffect)(function () {
209
- if (Array.isArray(value) && value.length && files.length === 0) {
210
- mapFilesFromValue(value);
207
+ if (Array.isArray(value) && value.length) {
208
+ // 比较当前 value 和 files 中的 url,如果不一致则重新映射
209
+ var currentUrls = files.map(function (f) {
210
+ return f.url;
211
+ }).filter(Boolean);
212
+ var newUrls = value;
213
+
214
+ // 如果 URL 数组不匹配,重新映射
215
+ if (JSON.stringify(currentUrls.sort()) !== JSON.stringify(newUrls.sort())) {
216
+ mapFilesFromValue(newUrls);
217
+ }
218
+ } else if (!value && files.length > 0) {
219
+ // 如果外部清空了值,也清空内部状态
220
+ setFiles([]);
221
+ setMasks([]);
211
222
  }
212
223
  }, [value]);
213
224
  (0, _react.useEffect)(function () {
@@ -0,0 +1,5 @@
1
+ export declare const parseFileSize: (size: number) => string;
2
+ export declare function classifyType(mimeType: string): string;
3
+ export declare const downloadByUrl: (filename: string, url: string) => void;
4
+ export declare const getFileNameByUrl: (fileUrl: string) => string;
5
+ export declare const getResourceContentType: (resourceUrl: string) => Promise<string | undefined>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "iglooform",
3
- "version": "3.3.8",
3
+ "version": "3.4.1",
4
4
  "scripts": {
5
5
  "start": "dumi dev",
6
6
  "build-dev": "dumi build",
@@ -1,59 +0,0 @@
1
- <component name="ProjectCodeStyleConfiguration">
2
- <code_scheme name="Project" version="173">
3
- <HTMLCodeStyleSettings>
4
- <option name="HTML_SPACE_INSIDE_EMPTY_TAG" value="true" />
5
- </HTMLCodeStyleSettings>
6
- <JSCodeStyleSettings version="0">
7
- <option name="FORCE_SEMICOLON_STYLE" value="true" />
8
- <option name="SPACE_BEFORE_FUNCTION_LEFT_PARENTH" value="false" />
9
- <option name="USE_DOUBLE_QUOTES" value="false" />
10
- <option name="FORCE_QUOTE_STYlE" value="true" />
11
- <option name="ENFORCE_TRAILING_COMMA" value="WhenMultiline" />
12
- <option name="SPACES_WITHIN_OBJECT_LITERAL_BRACES" value="true" />
13
- <option name="SPACES_WITHIN_IMPORTS" value="true" />
14
- </JSCodeStyleSettings>
15
- <TypeScriptCodeStyleSettings version="0">
16
- <option name="FORCE_SEMICOLON_STYLE" value="true" />
17
- <option name="SPACE_BEFORE_FUNCTION_LEFT_PARENTH" value="false" />
18
- <option name="USE_DOUBLE_QUOTES" value="false" />
19
- <option name="FORCE_QUOTE_STYlE" value="true" />
20
- <option name="ENFORCE_TRAILING_COMMA" value="WhenMultiline" />
21
- <option name="SPACES_WITHIN_OBJECT_LITERAL_BRACES" value="true" />
22
- <option name="SPACES_WITHIN_IMPORTS" value="true" />
23
- </TypeScriptCodeStyleSettings>
24
- <VueCodeStyleSettings>
25
- <option name="INTERPOLATION_NEW_LINE_AFTER_START_DELIMITER" value="false" />
26
- <option name="INTERPOLATION_NEW_LINE_BEFORE_END_DELIMITER" value="false" />
27
- </VueCodeStyleSettings>
28
- <codeStyleSettings language="HTML">
29
- <option name="SOFT_MARGINS" value="80" />
30
- <indentOptions>
31
- <option name="INDENT_SIZE" value="2" />
32
- <option name="CONTINUATION_INDENT_SIZE" value="2" />
33
- <option name="TAB_SIZE" value="2" />
34
- </indentOptions>
35
- </codeStyleSettings>
36
- <codeStyleSettings language="JavaScript">
37
- <option name="SOFT_MARGINS" value="80" />
38
- <indentOptions>
39
- <option name="INDENT_SIZE" value="2" />
40
- <option name="CONTINUATION_INDENT_SIZE" value="2" />
41
- <option name="TAB_SIZE" value="2" />
42
- </indentOptions>
43
- </codeStyleSettings>
44
- <codeStyleSettings language="TypeScript">
45
- <option name="SOFT_MARGINS" value="80" />
46
- <indentOptions>
47
- <option name="INDENT_SIZE" value="2" />
48
- <option name="CONTINUATION_INDENT_SIZE" value="2" />
49
- <option name="TAB_SIZE" value="2" />
50
- </indentOptions>
51
- </codeStyleSettings>
52
- <codeStyleSettings language="Vue">
53
- <option name="SOFT_MARGINS" value="80" />
54
- <indentOptions>
55
- <option name="CONTINUATION_INDENT_SIZE" value="2" />
56
- </indentOptions>
57
- </codeStyleSettings>
58
- </code_scheme>
59
- </component>
@@ -1,5 +0,0 @@
1
- <component name="ProjectCodeStyleConfiguration">
2
- <state>
3
- <option name="USE_PER_PROJECT_SETTINGS" value="true" />
4
- </state>
5
- </component>
@@ -1,12 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <module type="WEB_MODULE" version="4">
3
- <component name="NewModuleRootManager">
4
- <content url="file://$MODULE_DIR$">
5
- <excludeFolder url="file://$MODULE_DIR$/.tmp" />
6
- <excludeFolder url="file://$MODULE_DIR$/temp" />
7
- <excludeFolder url="file://$MODULE_DIR$/tmp" />
8
- </content>
9
- <orderEntry type="inheritedJdk" />
10
- <orderEntry type="sourceFolder" forTests="false" />
11
- </component>
12
- </module>
package/.idea/modules.xml DELETED
@@ -1,8 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <project version="4">
3
- <component name="ProjectModuleManager">
4
- <modules>
5
- <module fileurl="file://$PROJECT_DIR$/.idea/iglooform.iml" filepath="$PROJECT_DIR$/.idea/iglooform.iml" />
6
- </modules>
7
- </component>
8
- </project>
@@ -1,6 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <project version="4">
3
- <component name="PrettierConfiguration">
4
- <option name="myConfigurationMode" value="MANUAL" />
5
- </component>
6
- </project>
package/.idea/vcs.xml DELETED
@@ -1,6 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <project version="4">
3
- <component name="VcsDirectoryMappings">
4
- <mapping directory="" vcs="Git" />
5
- </component>
6
- </project>
@@ -1,28 +0,0 @@
1
- import { FC, IglooComponentProps } from '../types';
2
- import './style';
3
- export interface Props extends IglooComponentProps {
4
- handleUpload?(file: File): PromiseLike<string>;
5
- value?: (string | {
6
- name: string;
7
- status: 'failed';
8
- errorMsg: string;
9
- })[];
10
- onChange?: (value: any) => void;
11
- limit?: number;
12
- limitErrorMessage?: Function | string;
13
- descriptions?: any;
14
- buttonText?: any;
15
- samples?: Sample[];
16
- className?: any;
17
- id?: string;
18
- bizKey?: string;
19
- capture?: boolean;
20
- disabled?: boolean;
21
- }
22
- export type Sample = {
23
- src: string;
24
- label?: string;
25
- type?: 'good' | 'bad';
26
- };
27
- declare const UploadPhoto: FC<Props>;
28
- export default UploadPhoto;
@@ -1,28 +0,0 @@
1
- import { FC, IglooComponentProps } from '../types';
2
- import './style';
3
- export interface Props extends IglooComponentProps {
4
- handleUpload?(file: File): PromiseLike<string>;
5
- value?: (string | {
6
- name: string;
7
- status: 'failed';
8
- errorMsg: string;
9
- })[];
10
- onChange?: (value: any) => void;
11
- limit?: number;
12
- limitErrorMessage?: Function | string;
13
- descriptions?: any;
14
- buttonText?: any;
15
- samples?: Sample[];
16
- className?: any;
17
- id?: string;
18
- bizKey?: string;
19
- capture?: boolean;
20
- disabled?: boolean;
21
- }
22
- export type Sample = {
23
- src: string;
24
- label?: string;
25
- type?: 'good' | 'bad';
26
- };
27
- declare const UploadPhoto: FC<Props>;
28
- export default UploadPhoto;