amis 1.2.4-beta.10 → 1.2.4-beta.11
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/lib/components/Radios.d.ts +21 -21
- package/lib/components/Select.d.ts +239 -238
- package/lib/components/Select.js +6 -2
- package/lib/components/Select.js.map +2 -2
- package/lib/components/Tree.d.ts +352 -84
- package/lib/components/Tree.js +71 -12
- package/lib/components/Tree.js.map +2 -2
- package/lib/components/icons.js +3 -0
- package/lib/components/icons.js.map +2 -2
- package/lib/helper.css.map +1 -1
- package/lib/index.js +1 -1
- package/lib/locale/de-DE.js +2 -0
- package/lib/locale/de-DE.js.map +2 -2
- package/lib/locale/en-US.js +2 -0
- package/lib/locale/en-US.js.map +2 -2
- package/lib/locale/zh-CN.js +2 -0
- package/lib/locale/zh-CN.js.map +2 -2
- package/lib/renderers/Form/DiffEditor.d.ts +108 -90
- package/lib/renderers/Form/Editor.d.ts +108 -90
- package/lib/renderers/Form/InputImage.d.ts +1 -1
- package/lib/renderers/Form/InputImage.js +6 -5
- package/lib/renderers/Form/InputImage.js.map +2 -2
- package/lib/renderers/Form/InputTree.d.ts +14 -0
- package/lib/renderers/Form/InputTree.js +5 -3
- package/lib/renderers/Form/InputTree.js.map +2 -2
- package/lib/renderers/Form/NestedSelect.d.ts +6 -1
- package/lib/renderers/Form/NestedSelect.js +7 -3
- package/lib/renderers/Form/NestedSelect.js.map +2 -2
- package/lib/renderers/Form/Options.d.ts +1 -0
- package/lib/renderers/Form/Options.js +21 -3
- package/lib/renderers/Form/Options.js.map +2 -2
- package/lib/renderers/Form/TreeSelect.d.ts +19 -1
- package/lib/renderers/Form/TreeSelect.js +10 -4
- package/lib/renderers/Form/TreeSelect.js.map +2 -2
- package/lib/renderers/Table/index.js +24 -16
- package/lib/renderers/Table/index.js.map +2 -2
- package/lib/store/app.js +4 -7
- package/lib/store/app.js.map +2 -2
- package/lib/store/combo.d.ts +120 -100
- package/lib/store/form.d.ts +48 -40
- package/lib/store/formItem.d.ts +2 -1
- package/lib/store/formItem.js +83 -6
- package/lib/store/formItem.js.map +2 -2
- package/lib/store/table.d.ts +96 -80
- package/lib/themes/ang.css.map +1 -1
- package/lib/themes/antd.css.map +1 -1
- package/lib/themes/cxd-ie11.css +8 -2
- package/lib/themes/cxd.css +8 -2
- package/lib/themes/cxd.css.map +1 -1
- package/lib/themes/dark.css.map +1 -1
- package/lib/themes/default.css +8 -2
- package/lib/themes/default.css.map +1 -1
- package/lib/utils/helper.d.ts +15 -0
- package/lib/utils/helper.js +58 -4
- package/lib/utils/helper.js.map +2 -2
- package/lib/utils/markdown.js +3 -0
- package/lib/utils/markdown.js.map +2 -2
- package/package.json +5 -4
- package/schema.json +49 -21
- package/scss/_functions.scss +3 -1
- package/scss/components/_images.scss +4 -2
- package/scss/components/form/_form.scss +3 -2
- package/scss/components/form/_group.scss +4 -2
- package/scss/layout/_grid.scss +12 -10
- package/scss/themes/_cxd-variables.scss +8 -2
- package/sdk/charts.js +13 -13
- package/sdk/color-picker.js +67 -67
- package/sdk/cropperjs.js +2 -2
- package/sdk/cxd-ie11.css +8 -8
- package/sdk/cxd.css +8 -2
- package/sdk/exceljs.js +1 -1
- package/sdk/helper.css.map +1 -0
- package/sdk/markdown.js +70 -68
- package/sdk/papaparse.js +1 -1
- package/sdk/renderers/Form/CityDB.js +1 -1
- package/sdk/rest.js +19 -19
- package/sdk/rich-text.js +68 -68
- package/sdk/sdk-ie11.css +8 -8
- package/sdk/sdk.css +8 -2
- package/sdk/sdk.js +1132 -1130
- package/sdk/thirds/hls.js/hls.js +1 -1
- package/sdk/thirds/mpegts.js/mpegts.js +2 -2
- package/sdk/tinymce.js +59 -59
- package/src/components/Select.tsx +30 -5
- package/src/components/Tree.tsx +115 -20
- package/src/components/icons.tsx +4 -0
- package/src/locale/de-DE.ts +2 -0
- package/src/locale/en-US.ts +2 -0
- package/src/locale/zh-CN.ts +2 -0
- package/src/renderers/Form/InputImage.tsx +12 -6
- package/src/renderers/Form/InputTree.tsx +30 -2
- package/src/renderers/Form/NestedSelect.tsx +15 -3
- package/src/renderers/Form/Options.tsx +46 -4
- package/src/renderers/Form/TreeSelect.tsx +36 -3
- package/src/renderers/Table/index.tsx +48 -44
- package/src/store/app.ts +4 -7
- package/src/store/formItem.ts +107 -3
- package/src/utils/helper.ts +68 -7
- package/src/utils/markdown.ts +4 -0
@@ -242,7 +242,7 @@ export default class ImageControl extends React.Component<ImageProps, ImageState
|
|
242
242
|
file: any;
|
243
243
|
executor: () => void;
|
244
244
|
}>;
|
245
|
-
cropper:
|
245
|
+
cropper: Cropper;
|
246
246
|
dropzone: React.RefObject<any>;
|
247
247
|
frameImageRef: React.RefObject<any>;
|
248
248
|
current: FileValue | FileX | null;
|
@@ -30,7 +30,6 @@ var ImageControl = /** @class */ (function (_super) {
|
|
30
30
|
};
|
31
31
|
_this_1.files = [];
|
32
32
|
_this_1.fileUploadCancelExecutors = [];
|
33
|
-
_this_1.cropper = react_1.default.createRef();
|
34
33
|
_this_1.dropzone = react_1.default.createRef();
|
35
34
|
_this_1.frameImageRef = react_1.default.createRef();
|
36
35
|
_this_1.current = null;
|
@@ -154,7 +153,7 @@ var ImageControl = /** @class */ (function (_super) {
|
|
154
153
|
crop = {};
|
155
154
|
}
|
156
155
|
if (crop) {
|
157
|
-
crop = (0, tslib_1.__assign)({ aspectRatio: undefined, guides: true, dragMode: 'move', viewMode: 1, rotatable:
|
156
|
+
crop = (0, tslib_1.__assign)({ aspectRatio: undefined, guides: true, dragMode: 'move', viewMode: 1, rotatable: true, scalable: true }, crop);
|
158
157
|
}
|
159
158
|
return crop;
|
160
159
|
};
|
@@ -398,7 +397,7 @@ var ImageControl = /** @class */ (function (_super) {
|
|
398
397
|
};
|
399
398
|
ImageControl.prototype.handleCrop = function () {
|
400
399
|
var _this_1 = this;
|
401
|
-
this.cropper.
|
400
|
+
this.cropper.getCroppedCanvas().toBlob(function (file) {
|
402
401
|
_this_1.addFiles([file]);
|
403
402
|
_this_1.setState({
|
404
403
|
cropFile: undefined,
|
@@ -415,7 +414,7 @@ var ImageControl = /** @class */ (function (_super) {
|
|
415
414
|
}, this.onChange);
|
416
415
|
};
|
417
416
|
ImageControl.prototype.rotatableCrop = function () {
|
418
|
-
this.cropper.
|
417
|
+
this.cropper.rotate(45);
|
419
418
|
};
|
420
419
|
ImageControl.prototype.addFiles = function (files) {
|
421
420
|
var _this_1 = this;
|
@@ -664,7 +663,9 @@ var ImageControl = /** @class */ (function (_super) {
|
|
664
663
|
var hasPending = files.some(function (file) { return file.state == 'pending'; });
|
665
664
|
return (react_1.default.createElement("div", { className: cx("ImageControl", className) }, cropFile ? (react_1.default.createElement("div", { className: cx('ImageControl-cropperWrapper') },
|
666
665
|
react_1.default.createElement(react_1.Suspense, { fallback: react_1.default.createElement("div", null, "...") },
|
667
|
-
react_1.default.createElement(Cropper, (0, tslib_1.__assign)({}, crop, {
|
666
|
+
react_1.default.createElement(Cropper, (0, tslib_1.__assign)({}, crop, { onInitialized: function (instance) {
|
667
|
+
_this_1.cropper = instance;
|
668
|
+
}, src: cropFile.preview }))),
|
668
669
|
react_1.default.createElement("div", { className: cx('ImageControl-croperToolbar') },
|
669
670
|
crop.rotatable && (react_1.default.createElement("a", { className: cx('ImageControl-cropRotatable'), onClick: this.rotatableCrop, "data-tooltip": __('rotate'), "data-position": "left" },
|
670
671
|
react_1.default.createElement(icons_1.Icon, { icon: "retry", className: "icon" }))),
|
@@ -6,8 +6,8 @@
|
|
6
6
|
"/src/renderers/Form/InputImage.tsx"
|
7
7
|
],
|
8
8
|
"names": [],
|
9
|
-
"mappings": "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",
|
9
|
+
"mappings": "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",
|
10
10
|
"sourcesContent": [
|
11
|
-
"import React, {Suspense} from 'react';\nimport {FormItem, FormControlProps, FormBaseControl} from './Item';\nimport 'cropperjs/dist/cropper.css';\nconst Cropper = React.lazy(() => import('react-cropper'));\nimport DropZone from 'react-dropzone';\nimport {FileRejection} from 'react-dropzone';\nimport 'blueimp-canvastoblob';\nimport find from 'lodash/find';\nimport {Payload} from '../../types';\nimport {buildApi} from '../../utils/api';\nimport {\n createObject,\n qsstringify,\n guid,\n isEmpty,\n qsparse\n} from '../../utils/helper';\nimport {Icon} from '../../components/icons';\nimport Button from '../../components/Button';\nimport accepts from 'attr-accept';\nimport {getNameFromUrl} from './InputFile';\nimport ImageComponent, {ImageThumbProps} from '../Image';\nimport {TranslateFn} from '../../locale';\nimport {dataMapping} from '../../utils/tpl-builtin';\nimport {\n SchemaApi,\n SchemaClassName,\n SchemaTokenizeableString,\n SchemaUrlPath\n} from '../../Schema';\nimport {filter} from '../../utils/tpl';\n\n/**\n * Image 图片上传控件\n * 文档:https://baidu.gitee.io/amis/docs/components/form/image\n */\nexport interface ImageControlSchema extends FormBaseControl {\n /**\n * 指定为图片上传控件\n */\n type: 'input-image';\n\n /**\n * 默认展示图片的链接\n */\n src?: SchemaUrlPath;\n\n /**\n * 默认展示图片的类名\n */\n imageClassName?: string;\n\n /**\n * 配置接收的图片类型\n *\n * 建议直接填写文件后缀\n * 如:.txt,.csv\n *\n * 多个类型用逗号隔开。\n */\n accept?: string;\n\n /**\n * 默认都是通过用户选择图片后上传返回图片地址,如果开启此选项,则可以允许用户图片地址。\n */\n allowInput?: boolean;\n\n /**\n * 是否自动开始上传\n */\n autoUpload?: boolean;\n\n /**\n * 选择图片按钮的 CSS 类名\n */\n btnClassName?: SchemaClassName;\n\n /**\n * 上传按钮的 CSS 类名\n */\n btnUploadClassName?: SchemaClassName;\n\n /**\n * @deprecated\n */\n compress?: boolean;\n\n /**\n * @deprecated\n */\n compressOptions?: {\n maxHeight?: number;\n maxWidth?: number;\n };\n\n crop?:\n | boolean\n | {\n /**\n * 默认 `1` 即 `1:1`\n *\n * 留空将不限制\n */\n aspectRatio?: number;\n\n guides?: boolean;\n dragMode?: string;\n viewMode?: number;\n rotatable?: boolean;\n scalable?: boolean;\n };\n\n /**\n * 是否允许二次裁剪。\n */\n reCropable?: boolean;\n\n /**\n * 是否隐藏上传按钮\n */\n hideUploadButton?: boolean;\n\n /**\n * 限制图片大小,超出不让上传。\n */\n limit?: {\n /**\n * 比率不对时的提示文字\n */\n aspectRatioLabel?: string;\n /**\n * 限制比率\n */\n aspectRatio?: number;\n\n /**\n * 限制图片高度\n */\n height?: number;\n\n /**\n * 限制图片宽度\n */\n width?: number;\n\n /**\n * 限制图片最大高度\n */\n maxHeight?: number;\n\n /**\n * 限制图片最大宽度\n */\n maxWidth?: number;\n\n /**\n * 限制图片最小高度\n */\n minHeight?: number;\n\n /**\n * 限制图片最小宽度\n */\n minWidth?: number;\n };\n\n /**\n * 最多的个数\n */\n maxLength?: number;\n\n /**\n * 默认没有限制,当设置后,文件大小大于此值将不允许上传。\n */\n maxSize?: number;\n\n /**\n * 默认 `/api/upload` 如果想自己存储,请设置此选项。\n */\n receiver?: SchemaApi;\n\n /**\n * 默认为 false, 开启后,允许用户输入压缩选项。\n *\n * @deprecated\n */\n showCompressOptions?: boolean;\n\n /**\n * 是否为多选\n */\n multiple?: boolean;\n\n /**\n * 单选模式:当用户选中某个选项时,选项中的 value 将被作为该表单项的值提交,否则,整个选项对象都会作为该表单项的值提交。\n * 多选模式:选中的多个选项的 `value` 会通过 `delimiter` 连接起来,否则直接将以数组的形式提交值。\n */\n joinValues?: boolean;\n\n /**\n * 分割符\n */\n delimiter?: string;\n\n /**\n * 开启后将选中的选项 value 的值封装为数组,作为当前表单项的值。\n */\n extractValue?: boolean;\n\n /**\n * 清除时设置的值\n */\n resetValue?: any;\n\n /**\n * 缩路图展示模式\n */\n thumbMode?: 'w-full' | 'h-full' | 'contain' | 'cover';\n\n /**\n * 缩路图展示比率。\n */\n thumbRatio?: '1:1' | '4:3' | '16:9';\n\n /**\n * 上传后把其他字段同步到表单内部。\n */\n autoFill?: {\n [propName: string]: SchemaTokenizeableString;\n };\n\n /**\n * 默认占位图图片地址\n */\n frameImage?: SchemaUrlPath;\n\n /**\n * 是否开启固定尺寸\n */\n fixedSize?: boolean;\n\n /**\n * 固定尺寸的 CSS类名\n */\n fixedSizeClassName?: SchemaClassName;\n}\n\nlet preventEvent = (e: any) => e.stopPropagation();\n\nexport interface ImageProps\n extends FormControlProps,\n Omit<\n ImageControlSchema,\n 'type' | 'className' | 'descriptionClassName' | 'inputClassName'\n > {\n onImageEnlarge?: (\n info: Pick<ImageThumbProps, 'src' | 'originalSrc' | 'title' | 'caption'> & {\n index?: number;\n list?: Array<\n Pick<ImageThumbProps, 'src' | 'originalSrc' | 'title' | 'caption'>\n >;\n }\n ) => void;\n}\n\nexport interface ImageState {\n uploading: boolean;\n locked: boolean;\n lockedReason?: string;\n files: Array<FileValue | FileX>;\n crop?: any;\n error?: string;\n cropFile?: FileValue;\n submitOnChange?: boolean;\n frameImageWidth?: number;\n}\n\nexport interface FileValue {\n value?: any;\n state: 'init' | 'error' | 'pending' | 'uploading' | 'uploaded' | 'invalid';\n url?: string;\n error?: string;\n info?: {\n width: number;\n height: number;\n len?: number;\n };\n [propName: string]: any;\n}\n\nexport interface FileX extends File {\n id?: string | number;\n preview?: string;\n state?: 'init' | 'error' | 'pending' | 'uploading' | 'uploaded' | 'invalid';\n progress?: number;\n [propName: string]: any;\n}\n\nexport default class ImageControl extends React.Component<\n ImageProps,\n ImageState\n> {\n static defaultProps = {\n limit: undefined,\n accept: 'image/jpeg, image/jpg, image/png, image/gif',\n receiver: '/api/upload',\n hideUploadButton: false,\n placeholder: 'Image.placeholder',\n joinValues: true,\n extractValue: false,\n delimiter: ',',\n autoUpload: true,\n multiple: false\n };\n\n static formatFileSize(\n size: number | string,\n units = [' B', ' KB', ' M', ' G']\n ) {\n size = parseInt(size as string, 10) || 0;\n\n while (size > 1024 && units.length > 1) {\n size /= 1024;\n units.shift();\n }\n\n return size.toFixed(2) + units[0];\n }\n\n static valueToFile(\n value: string | object,\n props?: ImageProps\n ): FileValue | undefined {\n return value\n ? {\n ...(typeof value === 'string'\n ? {\n value,\n url: value,\n id: guid()\n }\n : value),\n state: 'init'\n }\n : undefined;\n }\n\n static sizeInfo(\n width: number | undefined,\n height: number | undefined,\n __: TranslateFn\n ): string {\n if (!width) {\n return __('Image.height', {height: height});\n } else if (!height) {\n return __('Image.width', {width: width});\n }\n\n return __('Image.size', {width, height});\n }\n\n state: ImageState = {\n uploading: false,\n locked: false,\n files: []\n };\n\n files: Array<FileValue | FileX> = [];\n fileUploadCancelExecutors: Array<{\n file: any;\n executor: () => void;\n }> = [];\n cropper = React.createRef<Cropper>();\n dropzone = React.createRef<any>();\n frameImageRef = React.createRef<any>();\n current: FileValue | FileX | null = null;\n resolve?: (value?: any) => void;\n emitValue: any;\n unmounted = false;\n\n constructor(props: ImageProps) {\n super(props);\n const value: string | Array<string | FileValue> | FileValue = props.value;\n const multiple = props.multiple;\n const joinValues = props.joinValues;\n const delimiter = props.delimiter as string;\n let files: Array<FileValue> = [];\n\n if (value) {\n // files = (multiple && Array.isArray(value) ? value : joinValues ? (value as string).split(delimiter) : [value])\n files = (\n Array.isArray(value)\n ? value\n : joinValues && typeof value === 'string' && multiple\n ? (value as string).split(delimiter)\n : [value]\n )\n .map(item => ImageControl.valueToFile(item) as FileValue)\n .filter(item => item);\n }\n\n this.state = {\n ...this.state,\n files: (this.files = files),\n crop: this.buildCrop(props),\n frameImageWidth: 0\n };\n\n this.sendFile = this.sendFile.bind(this);\n this.removeFile = this.removeFile.bind(this);\n this.handleDrop = this.handleDrop.bind(this);\n this.handleClick = this.handleClick.bind(this);\n this.handleClick = this.handleClick.bind(this);\n this.handleCrop = this.handleCrop.bind(this);\n this.handleDropRejected = this.handleDropRejected.bind(this);\n this.cancelCrop = this.cancelCrop.bind(this);\n this.rotatableCrop = this.rotatableCrop.bind(this);\n this.handleImageLoaded = this.handleImageLoaded.bind(this);\n this.handleFrameImageLoaded = this.handleFrameImageLoaded.bind(this);\n this.startUpload = this.startUpload.bind(this);\n this.stopUpload = this.stopUpload.bind(this);\n this.toggleUpload = this.toggleUpload.bind(this);\n this.tick = this.tick.bind(this);\n this.onChange = this.onChange.bind(this);\n this.addFiles = this.addFiles.bind(this);\n this.handleSelect = this.handleSelect.bind(this);\n this.handlePaste = this.handlePaste.bind(this);\n this.syncAutoFill = this.syncAutoFill.bind(this);\n }\n\n componentDidMount() {\n this.syncAutoFill();\n }\n\n componentDidUpdate(prevProps: ImageProps) {\n const props = this.props;\n\n if (prevProps.value !== props.value && this.emitValue !== props.value) {\n const value: string | Array<string | FileValue> | FileValue = props.value;\n const multiple = props.multiple;\n const joinValues = props.joinValues;\n const delimiter = props.delimiter as string;\n\n let files: Array<FileValue> = [];\n\n if (value) {\n files = (\n Array.isArray(value)\n ? value\n : joinValues && typeof value === 'string'\n ? (value as string).split(delimiter)\n : [value]\n )\n .map(item => {\n let obj = ImageControl.valueToFile(item, props) as FileValue;\n let org;\n\n if (\n obj &&\n (org = find(\n this.files,\n item => (item as FileValue).value === obj.value\n ))\n ) {\n obj = {\n ...org,\n ...obj,\n id: org.id || obj.id\n };\n }\n\n return obj;\n })\n .filter(item => item);\n }\n\n this.setState(\n {\n files: (this.files = files)\n },\n this.syncAutoFill\n );\n }\n\n if (prevProps.crop !== props.crop) {\n this.setState({\n crop: this.buildCrop(props)\n });\n }\n }\n\n componentWillUnmount() {\n this.unmounted = true;\n }\n\n buildCrop(props: ImageProps) {\n let crop = props.crop;\n const __ = this.props.translate;\n\n if (crop && props.multiple) {\n props.env && props.env.alert && props.env.alert(__('Image.configError'));\n return null;\n }\n\n if (crop === true) {\n crop = {};\n }\n\n if (crop) {\n crop = {\n aspectRatio: undefined, // 默认不限制\n guides: true,\n dragMode: 'move',\n viewMode: 1,\n rotatable: false,\n scalable: false,\n ...crop\n };\n }\n\n return crop;\n }\n\n handleDropRejected(\n rejectedFiles: FileRejection[],\n evt: React.DragEvent<any>\n ) {\n if (evt.type !== 'change' && evt.type !== 'drop') {\n return;\n }\n const {multiple, env, accept, translate: __} = this.props;\n\n const files = rejectedFiles.map(fileRejection => ({\n ...fileRejection.file,\n state: 'invalid',\n id: guid(),\n name: fileRejection.file.name\n }));\n\n // this.setState({\n // files: this.files = multiple\n // ? this.files.concat(files)\n // : this.files.length\n // ? this.files\n // : files.slice(0, 1)\n // });\n\n env.alert(\n __('File.invalidType', {\n files: files.map((file: any) => `「${file.name}」`).join(' '),\n accept\n })\n );\n }\n\n startUpload(retry: boolean = false) {\n if (this.state.uploading) {\n return;\n }\n\n this.setState(\n {\n uploading: true,\n locked: true,\n files: (this.files = this.files.map(file => {\n if (retry && file.state === 'error') {\n file.state = 'pending';\n file.progress = 0;\n }\n\n return file;\n }))\n },\n this.tick\n );\n }\n\n toggleUpload() {\n return this.state.uploading ? this.stopUpload() : this.startUpload();\n }\n\n stopUpload() {\n if (!this.state.uploading) {\n return;\n }\n\n this.setState({\n uploading: false\n });\n }\n\n tick() {\n if (this.current || !this.state.uploading) {\n return;\n }\n\n const env = this.props.env;\n const __ = this.props.translate;\n const file = find(this.files, item => item.state === 'pending') as FileX;\n if (file) {\n this.current = file;\n\n file.state = 'uploading';\n this.setState(\n {\n files: (this.files = this.files.concat())\n },\n () =>\n this.sendFile(\n file as FileX,\n (error, file, obj) => {\n const files = this.files.concat();\n const idx = files.indexOf(file);\n\n if (!~idx) {\n return;\n }\n\n let newFile: FileX | FileValue = file;\n\n if (error) {\n newFile.state =\n file.state !== 'uploading' ? file.state : 'error';\n newFile.error = error;\n\n if (!this.props.multiple && newFile.state === 'invalid') {\n files.splice(idx, 1);\n this.current = null;\n\n return this.setState(\n {\n files: (this.files = files),\n error: error\n },\n this.tick\n );\n }\n\n env.notify('error', error || __('File.errorRetry'));\n } else {\n newFile = {\n name: file.name,\n ...obj,\n preview: file.preview\n } as FileValue;\n }\n files.splice(idx, 1, newFile);\n this.current = null;\n this.setState(\n {\n files: (this.files = files)\n },\n this.tick\n );\n },\n progress => {\n const files = this.files.concat();\n const idx = files.indexOf(file);\n\n if (!~idx) {\n return;\n }\n\n // file 是个非 File 对象,先不copy了直接改。\n file.progress = progress;\n this.setState({\n files: (this.files = files)\n });\n }\n )\n );\n } else {\n this.setState(\n {\n uploading: false,\n locked: false\n },\n () => {\n this.onChange(!!this.resolve);\n\n if (this.resolve) {\n this.resolve(\n this.files.some(file => file.state === 'error')\n ? __('File.errorRetry')\n : null\n );\n this.resolve = undefined;\n }\n }\n );\n }\n }\n\n removeFile(file: FileValue, index: number) {\n const files = this.files.concat();\n\n this.removeFileCanelExecutor(file, true);\n files.splice(index, 1);\n\n const isUploading = this.current === file;\n if (isUploading) {\n this.current = null;\n }\n\n this.setState(\n {\n files: (this.files = files)\n },\n isUploading ? this.tick : this.onChange\n );\n }\n\n previewImage(file: FileX, index: number, e: React.MouseEvent<any>) {\n const {onImageEnlarge} = this.props;\n\n if (onImageEnlarge) {\n const files = this.files;\n e.preventDefault();\n\n onImageEnlarge({\n src: (file.preview || file.url) as string,\n originalSrc: (file.preview || file.url) as string,\n index,\n list: files.map(file => ({\n src: (file.preview || file.url) as string,\n originalSrc: (file.preview || file.url) as string,\n title: file.name || getNameFromUrl(file.value || file.url)\n }))\n });\n }\n }\n\n editImage(index: number) {\n const files = this.files;\n\n this.setState({\n cropFile: {\n preview: files[index].preview || (files[index].url as string),\n state: 'init'\n }\n });\n }\n\n onChange(changeImmediately?: boolean) {\n const {\n multiple,\n onChange,\n joinValues,\n extractValue,\n delimiter,\n valueField\n } = this.props;\n\n const files = this.files.filter(\n file => file.state == 'uploaded' || file.state == 'init'\n );\n\n let newValue: any = files.length\n ? joinValues\n ? files[0].value\n : files[0]\n : '';\n\n if (multiple) {\n newValue = joinValues\n ? files.map(item => item.value).join(delimiter)\n : extractValue\n ? files.map(item => item.value)\n : files;\n } else {\n newValue = joinValues\n ? newValue.value || newValue\n : extractValue\n ? newValue[valueField || 'value']\n : newValue;\n }\n\n onChange((this.emitValue = newValue || ''), undefined, changeImmediately);\n this.syncAutoFill();\n }\n\n syncAutoFill() {\n const {autoFill, multiple, onBulkChange} = this.props;\n if (!isEmpty(autoFill)) {\n const files = this.state.files.filter(\n file => ~['uploaded', 'init', 'ready'].indexOf(file.state as string)\n );\n const toSync = dataMapping(\n autoFill,\n multiple\n ? {\n items: files\n }\n : files[0]\n );\n onBulkChange(toSync);\n }\n }\n\n handleSelect() {\n this.dropzone.current && this.dropzone.current.open();\n }\n\n handleRetry(index: number) {\n const files = this.files.concat();\n const file = files[index];\n\n if (file.state !== 'invalid' && file.state !== 'error') {\n return;\n }\n\n file.state = 'pending';\n file.progress = 0;\n\n this.setState(\n {\n files: files\n },\n this.startUpload\n );\n }\n\n handleDrop(files: Array<FileX>) {\n const {multiple, crop} = this.props;\n\n if (crop && !multiple) {\n const file = files[0] as FileValue;\n if (!file.preview || !file.url) {\n file.preview = window.URL.createObjectURL(file);\n }\n\n return this.setState({\n cropFile: file\n });\n }\n\n this.addFiles(files);\n }\n\n handlePaste(e: React.ClipboardEvent<any>) {\n const event = e.nativeEvent as any;\n const files: Array<FileX> = [];\n const items = event.clipboardData.items;\n const accept = this.props.accept || '*';\n\n [].slice.call(items).forEach((item: DataTransferItem) => {\n let blob: FileX;\n\n if (\n item.kind !== 'file' ||\n !(blob = item.getAsFile() as File) ||\n !accepts(blob, accept)\n ) {\n return;\n }\n\n blob.id = guid();\n files.push(blob);\n });\n\n this.handleDrop(files);\n }\n\n handleCrop() {\n this.cropper.current!.getCroppedCanvas().toBlob((file: File) => {\n this.addFiles([file]);\n this.setState({\n cropFile: undefined,\n locked: false,\n lockedReason: ''\n });\n });\n }\n\n cancelCrop() {\n this.setState(\n {\n cropFile: undefined,\n locked: false,\n lockedReason: ''\n },\n this.onChange\n );\n }\n\n rotatableCrop() {\n this.cropper.current!.rotate(90);\n }\n\n addFiles(files: Array<FileX>) {\n if (!files.length) {\n return;\n }\n\n const {multiple, maxLength, maxSize, accept, translate: __} = this.props;\n let currentFiles = this.files;\n\n if (!multiple && currentFiles.length) {\n currentFiles = [];\n }\n\n const allowed =\n (multiple\n ? maxLength\n ? maxLength\n : files.length + currentFiles.length\n : 1) - currentFiles.length;\n const inputFiles: Array<FileX> = [];\n\n [].slice.call(files, 0, allowed).forEach((file: FileX) => {\n if (maxSize && file.size > maxSize) {\n this.props.env.alert(\n __('File.maxSize', {\n filename: file.name,\n actualSize: ImageControl.formatFileSize(file.size),\n maxSize: ImageControl.formatFileSize(maxSize)\n })\n );\n return;\n }\n\n file.state = 'pending';\n file.id = guid();\n if (!file.preview || !file.url) {\n file.preview = URL.createObjectURL(file);\n }\n inputFiles.push(file);\n });\n\n if (!inputFiles.length) {\n return;\n }\n\n this.setState(\n {\n error: undefined,\n files: (this.files = currentFiles.concat(inputFiles)),\n locked: true\n },\n () => {\n const {autoUpload} = this.props;\n\n if (autoUpload) {\n this.startUpload();\n }\n }\n );\n }\n\n sendFile(\n file: FileX,\n cb: (error: null | string, file: FileX, obj?: FileValue) => void,\n onProgress: (progress: number) => void\n ) {\n const {limit, translate: __} = this.props;\n\n if (!limit) {\n return this._upload(file, cb, onProgress);\n }\n\n const image = new Image();\n image.onload = () => {\n const width = image.width;\n const height = image.height;\n let error = '';\n\n if (\n (limit.width && limit.width != width) ||\n (limit.height && limit.height != height)\n ) {\n error = __('Image.sizeNotEqual', {\n info: ImageControl.sizeInfo(limit.width, limit.height, __)\n });\n } else if (\n (limit.maxWidth && limit.maxWidth < width) ||\n (limit.maxHeight && limit.maxHeight < height)\n ) {\n error = __('Image.limitMax', {\n info: ImageControl.sizeInfo(limit.maxWidth, limit.maxHeight, __)\n });\n } else if (\n (limit.minWidth && limit.minWidth > width) ||\n (limit.minHeight && limit.minHeight > height)\n ) {\n error = __('Image.limitMin', {\n info: ImageControl.sizeInfo(limit.minWidth, limit.minHeight, __)\n });\n } else if (\n limit.aspectRatio &&\n Math.abs(width / height - limit.aspectRatio) > 0.01\n ) {\n error = __(limit.aspectRatioLabel || 'Image.limitRatio', {\n ratio: (+limit.aspectRatio).toFixed(2)\n });\n }\n\n if (error) {\n file.state = 'invalid';\n cb(error, file);\n } else {\n this._upload(file, cb, onProgress);\n }\n };\n image.src = (file.preview || file.url) as string;\n }\n\n _upload(\n file: Blob,\n cb: (error: null | string, file: Blob, obj?: FileValue) => void,\n onProgress: (progress: number) => void\n ) {\n const __ = this.props.translate;\n this._send(file, this.props.receiver as string, {}, onProgress)\n .then((ret: Payload) => {\n if (ret.status) {\n throw new Error(ret.msg || __('File.errorRetry'));\n }\n\n const obj: FileValue = {\n ...ret.data,\n state: 'uploaded'\n };\n obj.value = obj.value || obj.url;\n\n cb(null, file, obj);\n })\n .catch(error => cb(error.message || __('File.errorRetry'), file));\n }\n\n async _send(\n file: Blob,\n receiver: string,\n params: object,\n onProgress: (progress: number) => void\n ): Promise<Payload> {\n const fd = new FormData();\n const data = this.props.data;\n const api = buildApi(receiver, createObject(data, params), {\n method: 'post'\n });\n const fileField = this.props.fileField || 'file';\n\n const idx = api.url.indexOf('?');\n\n if (~idx && params) {\n params = {\n ...qsparse(api.url.substring(idx + 1)),\n ...params\n };\n api.url = api.url.substring(0, idx) + '?' + qsstringify(params);\n } else if (params) {\n api.url += '?' + qsstringify(params);\n }\n\n if (api.data) {\n qsstringify(api.data)\n .split('&')\n .filter(item => item !== '')\n .forEach(item => {\n let parts = item.split('=');\n fd.append(parts[0], decodeURIComponent(parts[1]));\n });\n }\n\n // Note: File类型字段放在后面,可以支持第三方云存储鉴权\n fd.append(fileField, file, (file as File).name);\n\n const env = this.props.env;\n\n if (!env || !env.fetcher) {\n throw new Error('fetcher is required');\n }\n\n try {\n return await env.fetcher(api, fd, {\n method: 'post',\n cancelExecutor: (cancelExecutor: () => void) => {\n // 记录取消器,取消的时候要调用\n this.fileUploadCancelExecutors.push({\n file: file,\n executor: cancelExecutor\n });\n },\n onUploadProgress: (event: {loaded: number; total: number}) =>\n onProgress(event.loaded / event.total)\n });\n } finally {\n this.removeFileCanelExecutor(file);\n }\n }\n\n removeFileCanelExecutor(file: any, execute = false) {\n this.fileUploadCancelExecutors = this.fileUploadCancelExecutors.filter(\n item => {\n if (execute && item.file === file) {\n item.executor();\n }\n\n return item.file !== file;\n }\n );\n }\n\n handleClick() {\n (this.refs.dropzone as any).open();\n }\n\n handleImageLoaded(index: number, e: React.UIEvent<any>) {\n const imgDom = e.currentTarget;\n const img = new Image();\n img.onload = () => {\n delete (img as any).onload;\n const files = this.files.concat();\n const file = files[index];\n\n if (!file) {\n return;\n }\n\n file.info = {\n ...file.info,\n width: img.width,\n height: img.height\n };\n\n files.splice(index, 1, file);\n const needUploading = !!(\n this.current || find(files, file => file.state === 'pending')\n );\n\n this.unmounted ||\n this.setState(\n {\n files: (this.files = files)\n },\n !needUploading ? this.onChange : undefined\n );\n };\n img.src = imgDom.src;\n }\n\n handleFrameImageLoaded(e: React.UIEvent<any>) {\n const imgDom = e.currentTarget;\n const img = new Image();\n const {clientHeight} = this.frameImageRef.current;\n\n const _this = this;\n img.onload = function () {\n const ratio = (this as any).width / (this as any).height;\n const finalWidth = (ratio * (clientHeight - 2)).toFixed(2);\n _this.setState({\n frameImageWidth: +finalWidth\n });\n };\n img.src = imgDom.src;\n }\n\n validate(): any {\n const __ = this.props.translate;\n\n if (this.state.locked && this.state.lockedReason) {\n return this.state.lockedReason;\n } else if (this.state.cropFile) {\n return new Promise(resolve => {\n this.resolve = resolve;\n this.handleCrop();\n });\n } else if (\n this.state.uploading ||\n this.files.some(item => item.state === 'pending')\n ) {\n return new Promise(resolve => {\n this.resolve = resolve;\n this.startUpload();\n });\n } else if (this.files.some(item => item.state === 'error')) {\n return __('File.errorRetry');\n }\n }\n\n render() {\n const {\n className,\n classnames: cx,\n placeholder,\n disabled,\n multiple,\n accept,\n maxLength,\n autoUpload,\n hideUploadButton,\n thumbMode,\n thumbRatio,\n reCropable,\n frameImage,\n fixedSize,\n fixedSizeClassName,\n translate: __\n } = this.props;\n const {files, error, crop, uploading, cropFile, frameImageWidth} =\n this.state;\n let frameImageStyle: any = {};\n if (fixedSizeClassName && frameImageWidth && fixedSize) {\n frameImageStyle.width = frameImageWidth;\n }\n const filterFrameImage = filter(frameImage, this.props.data, '| raw');\n\n const hasPending = files.some(file => file.state == 'pending');\n return (\n <div className={cx(`ImageControl`, className)}>\n {cropFile ? (\n <div className={cx('ImageControl-cropperWrapper')}>\n <Suspense fallback={<div>...</div>}>\n <Cropper {...crop} ref={this.cropper} src={cropFile.preview} />\n </Suspense>\n <div className={cx('ImageControl-croperToolbar')}>\n {crop.rotatable && (\n <a\n className={cx('ImageControl-cropRotatable')}\n onClick={this.rotatableCrop}\n data-tooltip={__('rotate')}\n data-position=\"left\"\n >\n <Icon icon=\"retry\" className=\"icon\" />\n </a>\n )}\n <a\n className={cx('ImageControl-cropCancel')}\n onClick={this.cancelCrop}\n data-tooltip={__('cancel')}\n data-position=\"left\"\n >\n <Icon icon=\"close\" className=\"icon\" />\n </a>\n <a\n className={cx('ImageControl-cropConfirm')}\n onClick={this.handleCrop}\n data-tooltip={__('confirm')}\n data-position=\"left\"\n >\n <Icon icon=\"check\" className=\"icon\" />\n </a>\n </div>\n </div>\n ) : (\n <DropZone\n key=\"drop-zone\"\n ref={this.dropzone}\n onDrop={this.handleDrop}\n onDropRejected={this.handleDropRejected}\n accept={accept}\n multiple={multiple}\n disabled={disabled}\n >\n {({\n getRootProps,\n getInputProps,\n isDragActive,\n isDragAccept,\n isDragReject,\n isFocused\n }) => (\n <div\n {...getRootProps({\n onClick: preventEvent,\n onPaste: this.handlePaste,\n className: cx('ImageControl-dropzone', {\n 'is-disabled': disabled,\n 'is-empty': !files.length,\n 'is-active': isDragActive\n })\n })}\n >\n <input {...getInputProps()} />\n\n {isDragActive || isDragAccept || isDragReject ? (\n <div\n className={cx('ImageControl-acceptTip', {\n 'is-accept': isDragAccept,\n 'is-reject': isDragReject\n })}\n >\n {__('Image.dragDrop')}\n </div>\n ) : (\n <>\n {files && files.length\n ? files.map((file, key) => (\n <div\n key={file.id || key}\n className={cx(\n 'ImageControl-item',\n {\n 'is-uploaded': file.state !== 'uploading',\n 'is-invalid':\n file.state === 'error' ||\n file.state === 'invalid'\n },\n fixedSize ? 'ImageControl-fixed-size' : '',\n fixedSize ? fixedSizeClassName : ''\n )}\n style={frameImageStyle}\n >\n {file.state === 'invalid' ||\n file.state === 'error' ? (\n <>\n <a\n className={cx('ImageControl-itemClear')}\n data-tooltip={__('Select.clear')}\n data-position=\"bottom\"\n onClick={this.removeFile.bind(\n this,\n file,\n key\n )}\n >\n <Icon icon=\"close\" className=\"icon\" />\n </a>\n\n <a\n className={cx(\n 'ImageControl-retryBtn',\n {\n 'is-disabled': disabled\n },\n fixedSize ? 'ImageControl-fixed-size' : '',\n fixedSize ? fixedSizeClassName : ''\n )}\n onClick={this.handleRetry.bind(this, key)}\n >\n <Icon icon=\"retry\" className=\"icon\" />\n <p className=\"ImageControl-itemInfoError\">\n {__('File.repick')}\n </p>\n </a>\n </>\n ) : file.state === 'uploading' ? (\n <>\n <a\n onClick={this.removeFile.bind(\n this,\n file,\n key\n )}\n key=\"clear\"\n className={cx('ImageControl-itemClear')}\n data-tooltip={__('Select.clear')}\n >\n <Icon icon=\"close\" className=\"icon\" />\n </a>\n <div\n key=\"info\"\n className={cx(\n 'ImageControl-itemInfo',\n fixedSize ? 'ImageControl-fixed-size' : '',\n fixedSize ? fixedSizeClassName : ''\n )}\n >\n <p>{__('File.uploading')}</p>\n <div className={cx('ImageControl-progress')}>\n <span\n style={{\n width: `${Math.round(\n file.progress * 100\n )}%`\n }}\n className={cx(\n 'ImageControl-progressValue'\n )}\n />\n </div>\n </div>\n </>\n ) : (\n <>\n <ImageComponent\n key=\"image\"\n className={cx(\n 'ImageControl-image',\n fixedSize ? 'Image-thumb--fixed-size' : ''\n )}\n onLoad={this.handleImageLoaded.bind(\n this,\n key\n )}\n src={file.preview || file.url}\n alt={file.name}\n thumbMode={thumbMode}\n thumbRatio={thumbRatio}\n overlays={\n <>\n {file.info ? (\n [\n <div key=\"info\">\n {file.info.width} x{' '}\n {file.info.height}\n </div>,\n file.info.len ? (\n <div key=\"size\">\n {ImageControl.formatFileSize(\n file.info.len\n )}\n </div>\n ) : null\n ]\n ) : (\n <div>...</div>\n )}\n\n <a\n data-tooltip={__('Image.zoomIn')}\n data-position=\"bottom\"\n target=\"_blank\"\n rel=\"noopener\"\n href={file.url || file.preview}\n onClick={this.previewImage.bind(\n this,\n file,\n key\n )}\n >\n <Icon icon=\"view\" className=\"icon\" />\n </a>\n\n {!!crop &&\n reCropable !== false &&\n !disabled ? (\n <a\n data-tooltip={__('Image.crop')}\n data-position=\"bottom\"\n onClick={this.editImage.bind(\n this,\n key\n )}\n >\n <Icon\n icon=\"pencil\"\n className=\"icon\"\n />\n </a>\n ) : null}\n {!disabled ? (\n <a\n data-tooltip={__('Select.clear')}\n data-position=\"bottom\"\n onClick={this.removeFile.bind(\n this,\n file,\n key\n )}\n >\n <Icon\n icon=\"remove\"\n className=\"icon\"\n />\n </a>\n ) : null}\n <a\n data-tooltip={\n file.name ||\n getNameFromUrl(file.value || file.url)\n }\n data-position=\"bottom\"\n target=\"_blank\"\n >\n <Icon icon=\"info\" className=\"icon\" />\n </a>\n </>\n }\n />\n </>\n )}\n </div>\n ))\n : null}\n\n {(multiple && (!maxLength || files.length < maxLength)) ||\n (!multiple && !files.length) ? (\n <label\n className={cx(\n 'ImageControl-addBtn',\n {\n 'is-disabled': disabled\n },\n fixedSize ? 'ImageControl-fixed-size' : '',\n fixedSize ? fixedSizeClassName : ''\n )}\n style={frameImageStyle}\n onClick={this.handleSelect}\n data-tooltip={__(placeholder)}\n data-position=\"right\"\n ref={this.frameImageRef}\n >\n {filterFrameImage ? (\n <ImageComponent\n key=\"upload-default-image\"\n src={filterFrameImage}\n className={cx(\n fixedSize ? 'Image-thumb--fixed-size' : ''\n )}\n onLoad={this.handleFrameImageLoaded.bind(this)}\n thumbMode={thumbMode}\n thumbRatio={thumbRatio}\n />\n ) : (\n <Icon icon=\"plus\" className=\"icon\" />\n )}\n\n {isFocused ? (\n <span className={cx('ImageControl-pasteTip')}>\n {__('Image.pasteTip')}\n </span>\n ) : null}\n </label>\n ) : null}\n\n {!autoUpload && !hideUploadButton && files.length ? (\n <Button\n level=\"default\"\n className={cx('ImageControl-uploadBtn')}\n disabled={!hasPending}\n onClick={this.toggleUpload}\n >\n {__(uploading ? 'File.pause' : 'File.start')}\n </Button>\n ) : null}\n\n {error ? (\n <div className={cx('ImageControl-errorMsg')}>{error}</div>\n ) : null}\n </>\n )}\n </div>\n )}\n </DropZone>\n )}\n </div>\n );\n }\n}\n\n@FormItem({\n type: 'input-image',\n sizeMutable: false\n})\nexport class ImageControlRenderer extends ImageControl {}\n"
|
11
|
+
"import React, {Suspense} from 'react';\nimport {FormItem, FormControlProps, FormBaseControl} from './Item';\nimport 'cropperjs/dist/cropper.css';\nconst Cropper = React.lazy(() => import('react-cropper'));\nimport DropZone from 'react-dropzone';\nimport {FileRejection} from 'react-dropzone';\nimport 'blueimp-canvastoblob';\nimport find from 'lodash/find';\nimport {Payload} from '../../types';\nimport {buildApi} from '../../utils/api';\nimport {\n createObject,\n qsstringify,\n guid,\n isEmpty,\n qsparse\n} from '../../utils/helper';\nimport {Icon} from '../../components/icons';\nimport Button from '../../components/Button';\nimport accepts from 'attr-accept';\nimport {getNameFromUrl} from './InputFile';\nimport ImageComponent, {ImageThumbProps} from '../Image';\nimport {TranslateFn} from '../../locale';\nimport {dataMapping} from '../../utils/tpl-builtin';\nimport {\n SchemaApi,\n SchemaClassName,\n SchemaTokenizeableString,\n SchemaUrlPath\n} from '../../Schema';\nimport {filter} from '../../utils/tpl';\n\n/**\n * Image 图片上传控件\n * 文档:https://baidu.gitee.io/amis/docs/components/form/image\n */\nexport interface ImageControlSchema extends FormBaseControl {\n /**\n * 指定为图片上传控件\n */\n type: 'input-image';\n\n /**\n * 默认展示图片的链接\n */\n src?: SchemaUrlPath;\n\n /**\n * 默认展示图片的类名\n */\n imageClassName?: string;\n\n /**\n * 配置接收的图片类型\n *\n * 建议直接填写文件后缀\n * 如:.txt,.csv\n *\n * 多个类型用逗号隔开。\n */\n accept?: string;\n\n /**\n * 默认都是通过用户选择图片后上传返回图片地址,如果开启此选项,则可以允许用户图片地址。\n */\n allowInput?: boolean;\n\n /**\n * 是否自动开始上传\n */\n autoUpload?: boolean;\n\n /**\n * 选择图片按钮的 CSS 类名\n */\n btnClassName?: SchemaClassName;\n\n /**\n * 上传按钮的 CSS 类名\n */\n btnUploadClassName?: SchemaClassName;\n\n /**\n * @deprecated\n */\n compress?: boolean;\n\n /**\n * @deprecated\n */\n compressOptions?: {\n maxHeight?: number;\n maxWidth?: number;\n };\n\n crop?:\n | boolean\n | {\n /**\n * 默认 `1` 即 `1:1`\n *\n * 留空将不限制\n */\n aspectRatio?: number;\n\n guides?: boolean;\n dragMode?: string;\n viewMode?: number;\n rotatable?: boolean;\n scalable?: boolean;\n };\n\n /**\n * 是否允许二次裁剪。\n */\n reCropable?: boolean;\n\n /**\n * 是否隐藏上传按钮\n */\n hideUploadButton?: boolean;\n\n /**\n * 限制图片大小,超出不让上传。\n */\n limit?: {\n /**\n * 比率不对时的提示文字\n */\n aspectRatioLabel?: string;\n /**\n * 限制比率\n */\n aspectRatio?: number;\n\n /**\n * 限制图片高度\n */\n height?: number;\n\n /**\n * 限制图片宽度\n */\n width?: number;\n\n /**\n * 限制图片最大高度\n */\n maxHeight?: number;\n\n /**\n * 限制图片最大宽度\n */\n maxWidth?: number;\n\n /**\n * 限制图片最小高度\n */\n minHeight?: number;\n\n /**\n * 限制图片最小宽度\n */\n minWidth?: number;\n };\n\n /**\n * 最多的个数\n */\n maxLength?: number;\n\n /**\n * 默认没有限制,当设置后,文件大小大于此值将不允许上传。\n */\n maxSize?: number;\n\n /**\n * 默认 `/api/upload` 如果想自己存储,请设置此选项。\n */\n receiver?: SchemaApi;\n\n /**\n * 默认为 false, 开启后,允许用户输入压缩选项。\n *\n * @deprecated\n */\n showCompressOptions?: boolean;\n\n /**\n * 是否为多选\n */\n multiple?: boolean;\n\n /**\n * 单选模式:当用户选中某个选项时,选项中的 value 将被作为该表单项的值提交,否则,整个选项对象都会作为该表单项的值提交。\n * 多选模式:选中的多个选项的 `value` 会通过 `delimiter` 连接起来,否则直接将以数组的形式提交值。\n */\n joinValues?: boolean;\n\n /**\n * 分割符\n */\n delimiter?: string;\n\n /**\n * 开启后将选中的选项 value 的值封装为数组,作为当前表单项的值。\n */\n extractValue?: boolean;\n\n /**\n * 清除时设置的值\n */\n resetValue?: any;\n\n /**\n * 缩路图展示模式\n */\n thumbMode?: 'w-full' | 'h-full' | 'contain' | 'cover';\n\n /**\n * 缩路图展示比率。\n */\n thumbRatio?: '1:1' | '4:3' | '16:9';\n\n /**\n * 上传后把其他字段同步到表单内部。\n */\n autoFill?: {\n [propName: string]: SchemaTokenizeableString;\n };\n\n /**\n * 默认占位图图片地址\n */\n frameImage?: SchemaUrlPath;\n\n /**\n * 是否开启固定尺寸\n */\n fixedSize?: boolean;\n\n /**\n * 固定尺寸的 CSS类名\n */\n fixedSizeClassName?: SchemaClassName;\n}\n\nlet preventEvent = (e: any) => e.stopPropagation();\n\nexport interface ImageProps\n extends FormControlProps,\n Omit<\n ImageControlSchema,\n 'type' | 'className' | 'descriptionClassName' | 'inputClassName'\n > {\n onImageEnlarge?: (\n info: Pick<ImageThumbProps, 'src' | 'originalSrc' | 'title' | 'caption'> & {\n index?: number;\n list?: Array<\n Pick<ImageThumbProps, 'src' | 'originalSrc' | 'title' | 'caption'>\n >;\n }\n ) => void;\n}\n\nexport interface ImageState {\n uploading: boolean;\n locked: boolean;\n lockedReason?: string;\n files: Array<FileValue | FileX>;\n crop?: any;\n error?: string;\n cropFile?: FileValue;\n submitOnChange?: boolean;\n frameImageWidth?: number;\n}\n\nexport interface FileValue {\n value?: any;\n state: 'init' | 'error' | 'pending' | 'uploading' | 'uploaded' | 'invalid';\n url?: string;\n error?: string;\n info?: {\n width: number;\n height: number;\n len?: number;\n };\n [propName: string]: any;\n}\n\nexport interface FileX extends File {\n id?: string | number;\n preview?: string;\n state?: 'init' | 'error' | 'pending' | 'uploading' | 'uploaded' | 'invalid';\n progress?: number;\n [propName: string]: any;\n}\n\nexport default class ImageControl extends React.Component<\n ImageProps,\n ImageState\n> {\n static defaultProps = {\n limit: undefined,\n accept: 'image/jpeg, image/jpg, image/png, image/gif',\n receiver: '/api/upload',\n hideUploadButton: false,\n placeholder: 'Image.placeholder',\n joinValues: true,\n extractValue: false,\n delimiter: ',',\n autoUpload: true,\n multiple: false\n };\n\n static formatFileSize(\n size: number | string,\n units = [' B', ' KB', ' M', ' G']\n ) {\n size = parseInt(size as string, 10) || 0;\n\n while (size > 1024 && units.length > 1) {\n size /= 1024;\n units.shift();\n }\n\n return size.toFixed(2) + units[0];\n }\n\n static valueToFile(\n value: string | object,\n props?: ImageProps\n ): FileValue | undefined {\n return value\n ? {\n ...(typeof value === 'string'\n ? {\n value,\n url: value,\n id: guid()\n }\n : value),\n state: 'init'\n }\n : undefined;\n }\n\n static sizeInfo(\n width: number | undefined,\n height: number | undefined,\n __: TranslateFn\n ): string {\n if (!width) {\n return __('Image.height', {height: height});\n } else if (!height) {\n return __('Image.width', {width: width});\n }\n\n return __('Image.size', {width, height});\n }\n\n state: ImageState = {\n uploading: false,\n locked: false,\n files: []\n };\n\n files: Array<FileValue | FileX> = [];\n fileUploadCancelExecutors: Array<{\n file: any;\n executor: () => void;\n }> = [];\n cropper: Cropper;\n dropzone = React.createRef<any>();\n frameImageRef = React.createRef<any>();\n current: FileValue | FileX | null = null;\n resolve?: (value?: any) => void;\n emitValue: any;\n unmounted = false;\n\n constructor(props: ImageProps) {\n super(props);\n const value: string | Array<string | FileValue> | FileValue = props.value;\n const multiple = props.multiple;\n const joinValues = props.joinValues;\n const delimiter = props.delimiter as string;\n let files: Array<FileValue> = [];\n\n if (value) {\n // files = (multiple && Array.isArray(value) ? value : joinValues ? (value as string).split(delimiter) : [value])\n files = (\n Array.isArray(value)\n ? value\n : joinValues && typeof value === 'string' && multiple\n ? (value as string).split(delimiter)\n : [value]\n )\n .map(item => ImageControl.valueToFile(item) as FileValue)\n .filter(item => item);\n }\n\n this.state = {\n ...this.state,\n files: (this.files = files),\n crop: this.buildCrop(props),\n frameImageWidth: 0\n };\n\n this.sendFile = this.sendFile.bind(this);\n this.removeFile = this.removeFile.bind(this);\n this.handleDrop = this.handleDrop.bind(this);\n this.handleClick = this.handleClick.bind(this);\n this.handleClick = this.handleClick.bind(this);\n this.handleCrop = this.handleCrop.bind(this);\n this.handleDropRejected = this.handleDropRejected.bind(this);\n this.cancelCrop = this.cancelCrop.bind(this);\n this.rotatableCrop = this.rotatableCrop.bind(this);\n this.handleImageLoaded = this.handleImageLoaded.bind(this);\n this.handleFrameImageLoaded = this.handleFrameImageLoaded.bind(this);\n this.startUpload = this.startUpload.bind(this);\n this.stopUpload = this.stopUpload.bind(this);\n this.toggleUpload = this.toggleUpload.bind(this);\n this.tick = this.tick.bind(this);\n this.onChange = this.onChange.bind(this);\n this.addFiles = this.addFiles.bind(this);\n this.handleSelect = this.handleSelect.bind(this);\n this.handlePaste = this.handlePaste.bind(this);\n this.syncAutoFill = this.syncAutoFill.bind(this);\n }\n\n componentDidMount() {\n this.syncAutoFill();\n }\n\n componentDidUpdate(prevProps: ImageProps) {\n const props = this.props;\n\n if (prevProps.value !== props.value && this.emitValue !== props.value) {\n const value: string | Array<string | FileValue> | FileValue = props.value;\n const multiple = props.multiple;\n const joinValues = props.joinValues;\n const delimiter = props.delimiter as string;\n\n let files: Array<FileValue> = [];\n\n if (value) {\n files = (\n Array.isArray(value)\n ? value\n : joinValues && typeof value === 'string'\n ? (value as string).split(delimiter)\n : [value]\n )\n .map(item => {\n let obj = ImageControl.valueToFile(item, props) as FileValue;\n let org;\n\n if (\n obj &&\n (org = find(\n this.files,\n item => (item as FileValue).value === obj.value\n ))\n ) {\n obj = {\n ...org,\n ...obj,\n id: org.id || obj.id\n };\n }\n\n return obj;\n })\n .filter(item => item);\n }\n\n this.setState(\n {\n files: (this.files = files)\n },\n this.syncAutoFill\n );\n }\n\n if (prevProps.crop !== props.crop) {\n this.setState({\n crop: this.buildCrop(props)\n });\n }\n }\n\n componentWillUnmount() {\n this.unmounted = true;\n }\n\n buildCrop(props: ImageProps) {\n let crop = props.crop;\n const __ = this.props.translate;\n\n if (crop && props.multiple) {\n props.env && props.env.alert && props.env.alert(__('Image.configError'));\n return null;\n }\n\n if (crop === true) {\n crop = {};\n }\n\n if (crop) {\n crop = {\n aspectRatio: undefined, // 默认不限制\n guides: true,\n dragMode: 'move',\n viewMode: 1,\n rotatable: true,\n scalable: true,\n ...crop\n };\n }\n\n return crop;\n }\n\n handleDropRejected(\n rejectedFiles: FileRejection[],\n evt: React.DragEvent<any>\n ) {\n if (evt.type !== 'change' && evt.type !== 'drop') {\n return;\n }\n const {multiple, env, accept, translate: __} = this.props;\n\n const files = rejectedFiles.map(fileRejection => ({\n ...fileRejection.file,\n state: 'invalid',\n id: guid(),\n name: fileRejection.file.name\n }));\n\n // this.setState({\n // files: this.files = multiple\n // ? this.files.concat(files)\n // : this.files.length\n // ? this.files\n // : files.slice(0, 1)\n // });\n\n env.alert(\n __('File.invalidType', {\n files: files.map((file: any) => `「${file.name}」`).join(' '),\n accept\n })\n );\n }\n\n startUpload(retry: boolean = false) {\n if (this.state.uploading) {\n return;\n }\n\n this.setState(\n {\n uploading: true,\n locked: true,\n files: (this.files = this.files.map(file => {\n if (retry && file.state === 'error') {\n file.state = 'pending';\n file.progress = 0;\n }\n\n return file;\n }))\n },\n this.tick\n );\n }\n\n toggleUpload() {\n return this.state.uploading ? this.stopUpload() : this.startUpload();\n }\n\n stopUpload() {\n if (!this.state.uploading) {\n return;\n }\n\n this.setState({\n uploading: false\n });\n }\n\n tick() {\n if (this.current || !this.state.uploading) {\n return;\n }\n\n const env = this.props.env;\n const __ = this.props.translate;\n const file = find(this.files, item => item.state === 'pending') as FileX;\n if (file) {\n this.current = file;\n\n file.state = 'uploading';\n this.setState(\n {\n files: (this.files = this.files.concat())\n },\n () =>\n this.sendFile(\n file as FileX,\n (error, file, obj) => {\n const files = this.files.concat();\n const idx = files.indexOf(file);\n\n if (!~idx) {\n return;\n }\n\n let newFile: FileX | FileValue = file;\n\n if (error) {\n newFile.state =\n file.state !== 'uploading' ? file.state : 'error';\n newFile.error = error;\n\n if (!this.props.multiple && newFile.state === 'invalid') {\n files.splice(idx, 1);\n this.current = null;\n\n return this.setState(\n {\n files: (this.files = files),\n error: error\n },\n this.tick\n );\n }\n\n env.notify('error', error || __('File.errorRetry'));\n } else {\n newFile = {\n name: file.name,\n ...obj,\n preview: file.preview\n } as FileValue;\n }\n files.splice(idx, 1, newFile);\n this.current = null;\n this.setState(\n {\n files: (this.files = files)\n },\n this.tick\n );\n },\n progress => {\n const files = this.files.concat();\n const idx = files.indexOf(file);\n\n if (!~idx) {\n return;\n }\n\n // file 是个非 File 对象,先不copy了直接改。\n file.progress = progress;\n this.setState({\n files: (this.files = files)\n });\n }\n )\n );\n } else {\n this.setState(\n {\n uploading: false,\n locked: false\n },\n () => {\n this.onChange(!!this.resolve);\n\n if (this.resolve) {\n this.resolve(\n this.files.some(file => file.state === 'error')\n ? __('File.errorRetry')\n : null\n );\n this.resolve = undefined;\n }\n }\n );\n }\n }\n\n removeFile(file: FileValue, index: number) {\n const files = this.files.concat();\n\n this.removeFileCanelExecutor(file, true);\n files.splice(index, 1);\n\n const isUploading = this.current === file;\n if (isUploading) {\n this.current = null;\n }\n\n this.setState(\n {\n files: (this.files = files)\n },\n isUploading ? this.tick : this.onChange\n );\n }\n\n previewImage(file: FileX, index: number, e: React.MouseEvent<any>) {\n const {onImageEnlarge} = this.props;\n\n if (onImageEnlarge) {\n const files = this.files;\n e.preventDefault();\n\n onImageEnlarge({\n src: (file.preview || file.url) as string,\n originalSrc: (file.preview || file.url) as string,\n index,\n list: files.map(file => ({\n src: (file.preview || file.url) as string,\n originalSrc: (file.preview || file.url) as string,\n title: file.name || getNameFromUrl(file.value || file.url)\n }))\n });\n }\n }\n\n editImage(index: number) {\n const files = this.files;\n\n this.setState({\n cropFile: {\n preview: files[index].preview || (files[index].url as string),\n state: 'init'\n }\n });\n }\n\n onChange(changeImmediately?: boolean) {\n const {\n multiple,\n onChange,\n joinValues,\n extractValue,\n delimiter,\n valueField\n } = this.props;\n\n const files = this.files.filter(\n file => file.state == 'uploaded' || file.state == 'init'\n );\n\n let newValue: any = files.length\n ? joinValues\n ? files[0].value\n : files[0]\n : '';\n\n if (multiple) {\n newValue = joinValues\n ? files.map(item => item.value).join(delimiter)\n : extractValue\n ? files.map(item => item.value)\n : files;\n } else {\n newValue = joinValues\n ? newValue.value || newValue\n : extractValue\n ? newValue[valueField || 'value']\n : newValue;\n }\n\n onChange((this.emitValue = newValue || ''), undefined, changeImmediately);\n this.syncAutoFill();\n }\n\n syncAutoFill() {\n const {autoFill, multiple, onBulkChange} = this.props;\n if (!isEmpty(autoFill)) {\n const files = this.state.files.filter(\n file => ~['uploaded', 'init', 'ready'].indexOf(file.state as string)\n );\n const toSync = dataMapping(\n autoFill,\n multiple\n ? {\n items: files\n }\n : files[0]\n );\n onBulkChange(toSync);\n }\n }\n\n handleSelect() {\n this.dropzone.current && this.dropzone.current.open();\n }\n\n handleRetry(index: number) {\n const files = this.files.concat();\n const file = files[index];\n\n if (file.state !== 'invalid' && file.state !== 'error') {\n return;\n }\n\n file.state = 'pending';\n file.progress = 0;\n\n this.setState(\n {\n files: files\n },\n this.startUpload\n );\n }\n\n handleDrop(files: Array<FileX>) {\n const {multiple, crop} = this.props;\n\n if (crop && !multiple) {\n const file = files[0] as FileValue;\n if (!file.preview || !file.url) {\n file.preview = window.URL.createObjectURL(file);\n }\n\n return this.setState({\n cropFile: file\n });\n }\n\n this.addFiles(files);\n }\n\n handlePaste(e: React.ClipboardEvent<any>) {\n const event = e.nativeEvent as any;\n const files: Array<FileX> = [];\n const items = event.clipboardData.items;\n const accept = this.props.accept || '*';\n\n [].slice.call(items).forEach((item: DataTransferItem) => {\n let blob: FileX;\n\n if (\n item.kind !== 'file' ||\n !(blob = item.getAsFile() as File) ||\n !accepts(blob, accept)\n ) {\n return;\n }\n\n blob.id = guid();\n files.push(blob);\n });\n\n this.handleDrop(files);\n }\n\n handleCrop() {\n this.cropper.getCroppedCanvas().toBlob((file: File) => {\n this.addFiles([file]);\n this.setState({\n cropFile: undefined,\n locked: false,\n lockedReason: ''\n });\n });\n }\n\n cancelCrop() {\n this.setState(\n {\n cropFile: undefined,\n locked: false,\n lockedReason: ''\n },\n this.onChange\n );\n }\n\n rotatableCrop() {\n this.cropper.rotate(45);\n }\n\n addFiles(files: Array<FileX>) {\n if (!files.length) {\n return;\n }\n\n const {multiple, maxLength, maxSize, accept, translate: __} = this.props;\n let currentFiles = this.files;\n\n if (!multiple && currentFiles.length) {\n currentFiles = [];\n }\n\n const allowed =\n (multiple\n ? maxLength\n ? maxLength\n : files.length + currentFiles.length\n : 1) - currentFiles.length;\n const inputFiles: Array<FileX> = [];\n\n [].slice.call(files, 0, allowed).forEach((file: FileX) => {\n if (maxSize && file.size > maxSize) {\n this.props.env.alert(\n __('File.maxSize', {\n filename: file.name,\n actualSize: ImageControl.formatFileSize(file.size),\n maxSize: ImageControl.formatFileSize(maxSize)\n })\n );\n return;\n }\n\n file.state = 'pending';\n file.id = guid();\n if (!file.preview || !file.url) {\n file.preview = URL.createObjectURL(file);\n }\n inputFiles.push(file);\n });\n\n if (!inputFiles.length) {\n return;\n }\n\n this.setState(\n {\n error: undefined,\n files: (this.files = currentFiles.concat(inputFiles)),\n locked: true\n },\n () => {\n const {autoUpload} = this.props;\n\n if (autoUpload) {\n this.startUpload();\n }\n }\n );\n }\n\n sendFile(\n file: FileX,\n cb: (error: null | string, file: FileX, obj?: FileValue) => void,\n onProgress: (progress: number) => void\n ) {\n const {limit, translate: __} = this.props;\n\n if (!limit) {\n return this._upload(file, cb, onProgress);\n }\n\n const image = new Image();\n image.onload = () => {\n const width = image.width;\n const height = image.height;\n let error = '';\n\n if (\n (limit.width && limit.width != width) ||\n (limit.height && limit.height != height)\n ) {\n error = __('Image.sizeNotEqual', {\n info: ImageControl.sizeInfo(limit.width, limit.height, __)\n });\n } else if (\n (limit.maxWidth && limit.maxWidth < width) ||\n (limit.maxHeight && limit.maxHeight < height)\n ) {\n error = __('Image.limitMax', {\n info: ImageControl.sizeInfo(limit.maxWidth, limit.maxHeight, __)\n });\n } else if (\n (limit.minWidth && limit.minWidth > width) ||\n (limit.minHeight && limit.minHeight > height)\n ) {\n error = __('Image.limitMin', {\n info: ImageControl.sizeInfo(limit.minWidth, limit.minHeight, __)\n });\n } else if (\n limit.aspectRatio &&\n Math.abs(width / height - limit.aspectRatio) > 0.01\n ) {\n error = __(limit.aspectRatioLabel || 'Image.limitRatio', {\n ratio: (+limit.aspectRatio).toFixed(2)\n });\n }\n\n if (error) {\n file.state = 'invalid';\n cb(error, file);\n } else {\n this._upload(file, cb, onProgress);\n }\n };\n image.src = (file.preview || file.url) as string;\n }\n\n _upload(\n file: Blob,\n cb: (error: null | string, file: Blob, obj?: FileValue) => void,\n onProgress: (progress: number) => void\n ) {\n const __ = this.props.translate;\n this._send(file, this.props.receiver as string, {}, onProgress)\n .then((ret: Payload) => {\n if (ret.status) {\n throw new Error(ret.msg || __('File.errorRetry'));\n }\n\n const obj: FileValue = {\n ...ret.data,\n state: 'uploaded'\n };\n obj.value = obj.value || obj.url;\n\n cb(null, file, obj);\n })\n .catch(error => cb(error.message || __('File.errorRetry'), file));\n }\n\n async _send(\n file: Blob,\n receiver: string,\n params: object,\n onProgress: (progress: number) => void\n ): Promise<Payload> {\n const fd = new FormData();\n const data = this.props.data;\n const api = buildApi(receiver, createObject(data, params), {\n method: 'post'\n });\n const fileField = this.props.fileField || 'file';\n\n const idx = api.url.indexOf('?');\n\n if (~idx && params) {\n params = {\n ...qsparse(api.url.substring(idx + 1)),\n ...params\n };\n api.url = api.url.substring(0, idx) + '?' + qsstringify(params);\n } else if (params) {\n api.url += '?' + qsstringify(params);\n }\n\n if (api.data) {\n qsstringify(api.data)\n .split('&')\n .filter(item => item !== '')\n .forEach(item => {\n let parts = item.split('=');\n fd.append(parts[0], decodeURIComponent(parts[1]));\n });\n }\n\n // Note: File类型字段放在后面,可以支持第三方云存储鉴权\n fd.append(fileField, file, (file as File).name);\n\n const env = this.props.env;\n\n if (!env || !env.fetcher) {\n throw new Error('fetcher is required');\n }\n\n try {\n return await env.fetcher(api, fd, {\n method: 'post',\n cancelExecutor: (cancelExecutor: () => void) => {\n // 记录取消器,取消的时候要调用\n this.fileUploadCancelExecutors.push({\n file: file,\n executor: cancelExecutor\n });\n },\n onUploadProgress: (event: {loaded: number; total: number}) =>\n onProgress(event.loaded / event.total)\n });\n } finally {\n this.removeFileCanelExecutor(file);\n }\n }\n\n removeFileCanelExecutor(file: any, execute = false) {\n this.fileUploadCancelExecutors = this.fileUploadCancelExecutors.filter(\n item => {\n if (execute && item.file === file) {\n item.executor();\n }\n\n return item.file !== file;\n }\n );\n }\n\n handleClick() {\n (this.refs.dropzone as any).open();\n }\n\n handleImageLoaded(index: number, e: React.UIEvent<any>) {\n const imgDom = e.currentTarget;\n const img = new Image();\n img.onload = () => {\n delete (img as any).onload;\n const files = this.files.concat();\n const file = files[index];\n\n if (!file) {\n return;\n }\n\n file.info = {\n ...file.info,\n width: img.width,\n height: img.height\n };\n\n files.splice(index, 1, file);\n const needUploading = !!(\n this.current || find(files, file => file.state === 'pending')\n );\n\n this.unmounted ||\n this.setState(\n {\n files: (this.files = files)\n },\n !needUploading ? this.onChange : undefined\n );\n };\n img.src = imgDom.src;\n }\n\n handleFrameImageLoaded(e: React.UIEvent<any>) {\n const imgDom = e.currentTarget;\n const img = new Image();\n const {clientHeight} = this.frameImageRef.current;\n\n const _this = this;\n img.onload = function () {\n const ratio = (this as any).width / (this as any).height;\n const finalWidth = (ratio * (clientHeight - 2)).toFixed(2);\n _this.setState({\n frameImageWidth: +finalWidth\n });\n };\n img.src = imgDom.src;\n }\n\n validate(): any {\n const __ = this.props.translate;\n\n if (this.state.locked && this.state.lockedReason) {\n return this.state.lockedReason;\n } else if (this.state.cropFile) {\n return new Promise(resolve => {\n this.resolve = resolve;\n this.handleCrop();\n });\n } else if (\n this.state.uploading ||\n this.files.some(item => item.state === 'pending')\n ) {\n return new Promise(resolve => {\n this.resolve = resolve;\n this.startUpload();\n });\n } else if (this.files.some(item => item.state === 'error')) {\n return __('File.errorRetry');\n }\n }\n\n render() {\n const {\n className,\n classnames: cx,\n placeholder,\n disabled,\n multiple,\n accept,\n maxLength,\n autoUpload,\n hideUploadButton,\n thumbMode,\n thumbRatio,\n reCropable,\n frameImage,\n fixedSize,\n fixedSizeClassName,\n translate: __\n } = this.props;\n const {files, error, crop, uploading, cropFile, frameImageWidth} =\n this.state;\n let frameImageStyle: any = {};\n if (fixedSizeClassName && frameImageWidth && fixedSize) {\n frameImageStyle.width = frameImageWidth;\n }\n const filterFrameImage = filter(frameImage, this.props.data, '| raw');\n\n const hasPending = files.some(file => file.state == 'pending');\n return (\n <div className={cx(`ImageControl`, className)}>\n {cropFile ? (\n <div className={cx('ImageControl-cropperWrapper')}>\n <Suspense fallback={<div>...</div>}>\n <Cropper\n {...crop}\n onInitialized={instance => {\n this.cropper = instance;\n }}\n src={cropFile.preview}\n />\n </Suspense>\n <div className={cx('ImageControl-croperToolbar')}>\n {crop.rotatable && (\n <a\n className={cx('ImageControl-cropRotatable')}\n onClick={this.rotatableCrop}\n data-tooltip={__('rotate')}\n data-position=\"left\"\n >\n <Icon icon=\"retry\" className=\"icon\" />\n </a>\n )}\n <a\n className={cx('ImageControl-cropCancel')}\n onClick={this.cancelCrop}\n data-tooltip={__('cancel')}\n data-position=\"left\"\n >\n <Icon icon=\"close\" className=\"icon\" />\n </a>\n <a\n className={cx('ImageControl-cropConfirm')}\n onClick={this.handleCrop}\n data-tooltip={__('confirm')}\n data-position=\"left\"\n >\n <Icon icon=\"check\" className=\"icon\" />\n </a>\n </div>\n </div>\n ) : (\n <DropZone\n key=\"drop-zone\"\n ref={this.dropzone}\n onDrop={this.handleDrop}\n onDropRejected={this.handleDropRejected}\n accept={accept}\n multiple={multiple}\n disabled={disabled}\n >\n {({\n getRootProps,\n getInputProps,\n isDragActive,\n isDragAccept,\n isDragReject,\n isFocused\n }) => (\n <div\n {...getRootProps({\n onClick: preventEvent,\n onPaste: this.handlePaste,\n className: cx('ImageControl-dropzone', {\n 'is-disabled': disabled,\n 'is-empty': !files.length,\n 'is-active': isDragActive\n })\n })}\n >\n <input {...getInputProps()} />\n\n {isDragActive || isDragAccept || isDragReject ? (\n <div\n className={cx('ImageControl-acceptTip', {\n 'is-accept': isDragAccept,\n 'is-reject': isDragReject\n })}\n >\n {__('Image.dragDrop')}\n </div>\n ) : (\n <>\n {files && files.length\n ? files.map((file, key) => (\n <div\n key={file.id || key}\n className={cx(\n 'ImageControl-item',\n {\n 'is-uploaded': file.state !== 'uploading',\n 'is-invalid':\n file.state === 'error' ||\n file.state === 'invalid'\n },\n fixedSize ? 'ImageControl-fixed-size' : '',\n fixedSize ? fixedSizeClassName : ''\n )}\n style={frameImageStyle}\n >\n {file.state === 'invalid' ||\n file.state === 'error' ? (\n <>\n <a\n className={cx('ImageControl-itemClear')}\n data-tooltip={__('Select.clear')}\n data-position=\"bottom\"\n onClick={this.removeFile.bind(\n this,\n file,\n key\n )}\n >\n <Icon icon=\"close\" className=\"icon\" />\n </a>\n\n <a\n className={cx(\n 'ImageControl-retryBtn',\n {\n 'is-disabled': disabled\n },\n fixedSize ? 'ImageControl-fixed-size' : '',\n fixedSize ? fixedSizeClassName : ''\n )}\n onClick={this.handleRetry.bind(this, key)}\n >\n <Icon icon=\"retry\" className=\"icon\" />\n <p className=\"ImageControl-itemInfoError\">\n {__('File.repick')}\n </p>\n </a>\n </>\n ) : file.state === 'uploading' ? (\n <>\n <a\n onClick={this.removeFile.bind(\n this,\n file,\n key\n )}\n key=\"clear\"\n className={cx('ImageControl-itemClear')}\n data-tooltip={__('Select.clear')}\n >\n <Icon icon=\"close\" className=\"icon\" />\n </a>\n <div\n key=\"info\"\n className={cx(\n 'ImageControl-itemInfo',\n fixedSize ? 'ImageControl-fixed-size' : '',\n fixedSize ? fixedSizeClassName : ''\n )}\n >\n <p>{__('File.uploading')}</p>\n <div className={cx('ImageControl-progress')}>\n <span\n style={{\n width: `${Math.round(\n file.progress * 100\n )}%`\n }}\n className={cx(\n 'ImageControl-progressValue'\n )}\n />\n </div>\n </div>\n </>\n ) : (\n <>\n <ImageComponent\n key=\"image\"\n className={cx(\n 'ImageControl-image',\n fixedSize ? 'Image-thumb--fixed-size' : ''\n )}\n onLoad={this.handleImageLoaded.bind(\n this,\n key\n )}\n src={file.preview || file.url}\n alt={file.name}\n thumbMode={thumbMode}\n thumbRatio={thumbRatio}\n overlays={\n <>\n {file.info ? (\n [\n <div key=\"info\">\n {file.info.width} x{' '}\n {file.info.height}\n </div>,\n file.info.len ? (\n <div key=\"size\">\n {ImageControl.formatFileSize(\n file.info.len\n )}\n </div>\n ) : null\n ]\n ) : (\n <div>...</div>\n )}\n\n <a\n data-tooltip={__('Image.zoomIn')}\n data-position=\"bottom\"\n target=\"_blank\"\n rel=\"noopener\"\n href={file.url || file.preview}\n onClick={this.previewImage.bind(\n this,\n file,\n key\n )}\n >\n <Icon icon=\"view\" className=\"icon\" />\n </a>\n\n {!!crop &&\n reCropable !== false &&\n !disabled ? (\n <a\n data-tooltip={__('Image.crop')}\n data-position=\"bottom\"\n onClick={this.editImage.bind(\n this,\n key\n )}\n >\n <Icon\n icon=\"pencil\"\n className=\"icon\"\n />\n </a>\n ) : null}\n {!disabled ? (\n <a\n data-tooltip={__('Select.clear')}\n data-position=\"bottom\"\n onClick={this.removeFile.bind(\n this,\n file,\n key\n )}\n >\n <Icon\n icon=\"remove\"\n className=\"icon\"\n />\n </a>\n ) : null}\n <a\n data-tooltip={\n file.name ||\n getNameFromUrl(file.value || file.url)\n }\n data-position=\"bottom\"\n target=\"_blank\"\n >\n <Icon icon=\"info\" className=\"icon\" />\n </a>\n </>\n }\n />\n </>\n )}\n </div>\n ))\n : null}\n\n {(multiple && (!maxLength || files.length < maxLength)) ||\n (!multiple && !files.length) ? (\n <label\n className={cx(\n 'ImageControl-addBtn',\n {\n 'is-disabled': disabled\n },\n fixedSize ? 'ImageControl-fixed-size' : '',\n fixedSize ? fixedSizeClassName : ''\n )}\n style={frameImageStyle}\n onClick={this.handleSelect}\n data-tooltip={__(placeholder)}\n data-position=\"right\"\n ref={this.frameImageRef}\n >\n {filterFrameImage ? (\n <ImageComponent\n key=\"upload-default-image\"\n src={filterFrameImage}\n className={cx(\n fixedSize ? 'Image-thumb--fixed-size' : ''\n )}\n onLoad={this.handleFrameImageLoaded.bind(this)}\n thumbMode={thumbMode}\n thumbRatio={thumbRatio}\n />\n ) : (\n <Icon icon=\"plus\" className=\"icon\" />\n )}\n\n {isFocused ? (\n <span className={cx('ImageControl-pasteTip')}>\n {__('Image.pasteTip')}\n </span>\n ) : null}\n </label>\n ) : null}\n\n {!autoUpload && !hideUploadButton && files.length ? (\n <Button\n level=\"default\"\n className={cx('ImageControl-uploadBtn')}\n disabled={!hasPending}\n onClick={this.toggleUpload}\n >\n {__(uploading ? 'File.pause' : 'File.start')}\n </Button>\n ) : null}\n\n {error ? (\n <div className={cx('ImageControl-errorMsg')}>{error}</div>\n ) : null}\n </>\n )}\n </div>\n )}\n </DropZone>\n )}\n </div>\n );\n }\n}\n\n@FormItem({\n type: 'input-image',\n sizeMutable: false\n})\nexport class ImageControlRenderer extends ImageControl {}\n"
|
12
12
|
]
|
13
13
|
}
|
@@ -39,9 +39,23 @@ export interface TreeControlSchema extends FormOptionsControl {
|
|
39
39
|
* 顶级节点是否可以创建子节点
|
40
40
|
*/
|
41
41
|
rootCreatable?: boolean;
|
42
|
+
/**
|
43
|
+
* 是否开启节点路径模式
|
44
|
+
*/
|
45
|
+
enableNodePath?: boolean;
|
46
|
+
/**
|
47
|
+
* 开启节点路径模式后,节点路径的分隔符
|
48
|
+
*/
|
49
|
+
pathSeparator?: string;
|
50
|
+
/**
|
51
|
+
* 是否显示展开线
|
52
|
+
*/
|
53
|
+
showOutline?: boolean;
|
42
54
|
deferApi?: SchemaApi;
|
43
55
|
}
|
44
56
|
export interface TreeProps extends OptionsControlProps, Omit<TreeControlSchema, 'type' | 'options' | 'className' | 'inputClassName' | 'descriptionClassName'> {
|
57
|
+
enableNodePath?: boolean;
|
58
|
+
pathSeparator?: string;
|
45
59
|
}
|
46
60
|
export default class TreeControl extends React.Component<TreeProps> {
|
47
61
|
static defaultProps: Partial<TreeProps>;
|
@@ -17,17 +17,19 @@ var TreeControl = /** @class */ (function (_super) {
|
|
17
17
|
reload && reload();
|
18
18
|
};
|
19
19
|
TreeControl.prototype.render = function () {
|
20
|
-
var _a = this.props, className = _a.className, treeContainerClassName = _a.treeContainerClassName, ns = _a.classPrefix, value = _a.value, onChange = _a.onChange, disabled = _a.disabled, joinValues = _a.joinValues, extractValue = _a.extractValue, delimiter = _a.delimiter, placeholder = _a.placeholder, options = _a.options, multiple = _a.multiple, valueField = _a.valueField, initiallyOpen = _a.initiallyOpen, unfoldedLevel = _a.unfoldedLevel, withChildren = _a.withChildren, onlyChildren = _a.onlyChildren, loading = _a.loading, hideRoot = _a.hideRoot, rootLabel = _a.rootLabel, cascade = _a.cascade, rootValue = _a.rootValue, showIcon = _a.showIcon, showRadio = _a.showRadio, showOutline = _a.showOutline, onAdd = _a.onAdd, creatable = _a.creatable, createTip = _a.createTip, addControls = _a.addControls, onEdit = _a.onEdit, editable = _a.editable, editTip = _a.editTip, editControls = _a.editControls, removable = _a.removable, removeTip = _a.removeTip, onDelete = _a.onDelete, rootCreatable = _a.rootCreatable, rootCreateTip = _a.rootCreateTip, labelField = _a.labelField, deferLoad = _a.deferLoad, __ = _a.translate;
|
20
|
+
var _a = this.props, className = _a.className, treeContainerClassName = _a.treeContainerClassName, ns = _a.classPrefix, value = _a.value, enableNodePath = _a.enableNodePath, _b = _a.pathSeparator, pathSeparator = _b === void 0 ? '/' : _b, onChange = _a.onChange, disabled = _a.disabled, joinValues = _a.joinValues, extractValue = _a.extractValue, delimiter = _a.delimiter, placeholder = _a.placeholder, options = _a.options, multiple = _a.multiple, valueField = _a.valueField, initiallyOpen = _a.initiallyOpen, unfoldedLevel = _a.unfoldedLevel, withChildren = _a.withChildren, onlyChildren = _a.onlyChildren, loading = _a.loading, hideRoot = _a.hideRoot, rootLabel = _a.rootLabel, cascade = _a.cascade, rootValue = _a.rootValue, showIcon = _a.showIcon, showRadio = _a.showRadio, showOutline = _a.showOutline, onAdd = _a.onAdd, creatable = _a.creatable, createTip = _a.createTip, addControls = _a.addControls, onEdit = _a.onEdit, editable = _a.editable, editTip = _a.editTip, editControls = _a.editControls, removable = _a.removable, removeTip = _a.removeTip, onDelete = _a.onDelete, rootCreatable = _a.rootCreatable, rootCreateTip = _a.rootCreateTip, labelField = _a.labelField, nodePath = _a.nodePath, deferLoad = _a.deferLoad, expandTreeOptions = _a.expandTreeOptions, __ = _a.translate;
|
21
21
|
return (react_1.default.createElement("div", { className: (0, classnames_1.default)(ns + "TreeControl", className, treeContainerClassName) },
|
22
22
|
react_1.default.createElement(components_1.Spinner, { size: "sm", key: "info", show: loading }),
|
23
|
-
loading ? null : (react_1.default.createElement(Tree_1.default, { classPrefix: ns, labelField: labelField, valueField: valueField, disabled: disabled, onChange: onChange, joinValues: joinValues, extractValue: extractValue, delimiter: delimiter, placeholder: __(placeholder), options: options, multiple: multiple, initiallyOpen: initiallyOpen, unfoldedLevel: unfoldedLevel, withChildren: withChildren, onlyChildren: onlyChildren, hideRoot: hideRoot, rootLabel: __(rootLabel), rootValue: rootValue, showIcon: showIcon, showRadio: showRadio, showOutline: showOutline, cascade: cascade, foldedField: "collapsed", value: value || '', selfDisabledAffectChildren: false, onAdd: onAdd, creatable: creatable, createTip: createTip, rootCreatable: rootCreatable, rootCreateTip: rootCreateTip, onEdit: onEdit, editable: editable, editTip: editTip, removable: removable, removeTip: removeTip, onDelete: onDelete, bultinCUD: !addControls && !editControls, onDeferLoad: deferLoad }))));
|
23
|
+
loading ? null : (react_1.default.createElement(Tree_1.default, { classPrefix: ns, labelField: labelField, valueField: valueField, disabled: disabled, onChange: onChange, joinValues: joinValues, extractValue: extractValue, delimiter: delimiter, placeholder: __(placeholder), options: options, multiple: multiple, initiallyOpen: initiallyOpen, unfoldedLevel: unfoldedLevel, withChildren: withChildren, onlyChildren: onlyChildren, hideRoot: hideRoot, rootLabel: __(rootLabel), rootValue: rootValue, showIcon: showIcon, showRadio: showRadio, showOutline: showOutline, cascade: cascade, foldedField: "collapsed", value: value || '', nodePath: nodePath, enableNodePath: enableNodePath, pathSeparator: pathSeparator, selfDisabledAffectChildren: false, onAdd: onAdd, creatable: creatable, createTip: createTip, rootCreatable: rootCreatable, rootCreateTip: rootCreateTip, onEdit: onEdit, editable: editable, editTip: editTip, removable: removable, removeTip: removeTip, onDelete: onDelete, bultinCUD: !addControls && !editControls, onDeferLoad: deferLoad, onExpandTree: expandTreeOptions }))));
|
24
24
|
};
|
25
25
|
TreeControl.defaultProps = {
|
26
26
|
placeholder: 'loading',
|
27
27
|
multiple: false,
|
28
28
|
rootLabel: '顶级',
|
29
29
|
rootValue: '',
|
30
|
-
showIcon: true
|
30
|
+
showIcon: true,
|
31
|
+
enableNodePath: false,
|
32
|
+
pathSeparator: '/'
|
31
33
|
};
|
32
34
|
return TreeControl;
|
33
35
|
}(react_1.default.Component));
|
@@ -6,8 +6,8 @@
|
|
6
6
|
"/src/renderers/Form/InputTree.tsx"
|
7
7
|
],
|
8
8
|
"names": [],
|
9
|
-
"mappings": ";;;;AAAA,6DAA0B;AAC1B,uEAA4B;AAC5B,4EAAiD;AACjD,qCAImB;AACnB,+CAAyC;
|
9
|
+
"mappings": "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",
|
10
10
|
"sourcesContent": [
|
11
|
-
"import React from 'react';\nimport cx from 'classnames';\nimport TreeSelector from '../../components/Tree';\nimport {\n FormOptionsControl,\n OptionsControl,\n OptionsControlProps\n} from './Options';\nimport {Spinner} from '../../components';\nimport {SchemaApi} from '../../Schema';\n\n/**\n * Tree 下拉选择框。\n * 文档:https://baidu.gitee.io/amis/docs/components/form/tree\n */\nexport interface TreeControlSchema extends FormOptionsControl {\n type: 'input-tree';\n\n /**\n * 是否隐藏顶级\n */\n hideRoot?: boolean;\n\n /**\n * 顶级选项的名称\n */\n rootLabel?: string;\n\n /**\n * 顶级选项的值\n */\n rootValue?: any;\n\n /**\n * 显示图标\n */\n showIcon?: boolean;\n\n /**\n * 父子之间是否完全独立。\n */\n cascade?: boolean;\n\n /**\n * 选父级的时候是否把子节点的值也包含在内。\n */\n withChildren?: boolean;\n\n /**\n * 选父级的时候,是否只把子节点的值包含在内\n */\n onlyChildren?: boolean;\n\n /**\n * 顶级节点是否可以创建子节点\n */\n rootCreatable?: boolean;\n\n deferApi?: SchemaApi;\n}\n\nexport interface TreeProps\n extends OptionsControlProps,\n Omit<\n TreeControlSchema,\n | 'type'\n | 'options'\n | 'className'\n | 'inputClassName'\n | 'descriptionClassName'\n > {}\n\nexport default class TreeControl extends React.Component<TreeProps> {\n static defaultProps: Partial<TreeProps> = {\n placeholder: 'loading',\n multiple: false,\n rootLabel: '顶级',\n rootValue: '',\n showIcon: true\n };\n\n reload() {\n const reload = this.props.reloadOptions;\n reload && reload();\n }\n\n render() {\n const {\n className,\n treeContainerClassName,\n classPrefix: ns,\n value,\n onChange,\n disabled,\n joinValues,\n extractValue,\n delimiter,\n placeholder,\n options,\n multiple,\n valueField,\n initiallyOpen,\n unfoldedLevel,\n withChildren,\n onlyChildren,\n loading,\n hideRoot,\n rootLabel,\n cascade,\n rootValue,\n showIcon,\n showRadio,\n showOutline,\n onAdd,\n creatable,\n createTip,\n addControls,\n onEdit,\n editable,\n editTip,\n editControls,\n removable,\n removeTip,\n onDelete,\n rootCreatable,\n rootCreateTip,\n labelField,\n deferLoad,\n translate: __\n } = this.props;\n\n return (\n <div\n className={cx(`${ns}TreeControl`, className, treeContainerClassName)}\n >\n <Spinner size=\"sm\" key=\"info\" show={loading} />\n {loading ? null : (\n <TreeSelector\n classPrefix={ns}\n labelField={labelField}\n valueField={valueField}\n disabled={disabled}\n onChange={onChange}\n joinValues={joinValues}\n extractValue={extractValue}\n delimiter={delimiter}\n placeholder={__(placeholder)}\n options={options}\n multiple={multiple}\n initiallyOpen={initiallyOpen}\n unfoldedLevel={unfoldedLevel}\n withChildren={withChildren}\n onlyChildren={onlyChildren}\n hideRoot={hideRoot}\n rootLabel={__(rootLabel)}\n rootValue={rootValue}\n showIcon={showIcon}\n showRadio={showRadio}\n showOutline={showOutline}\n cascade={cascade}\n foldedField=\"collapsed\"\n value={value || ''}\n selfDisabledAffectChildren={false}\n onAdd={onAdd}\n creatable={creatable}\n createTip={createTip}\n rootCreatable={rootCreatable}\n rootCreateTip={rootCreateTip}\n onEdit={onEdit}\n editable={editable}\n editTip={editTip}\n removable={removable}\n removeTip={removeTip}\n onDelete={onDelete}\n bultinCUD={!addControls && !editControls}\n onDeferLoad={deferLoad}\n />\n )}\n </div>\n );\n }\n}\n\n@OptionsControl({\n type: 'input-tree'\n})\nexport class TreeControlRenderer extends TreeControl {}\n"
|
11
|
+
"import React from 'react';\nimport cx from 'classnames';\nimport TreeSelector from '../../components/Tree';\nimport {\n FormOptionsControl,\n OptionsControl,\n OptionsControlProps\n} from './Options';\nimport {Spinner} from '../../components';\nimport {SchemaApi} from '../../Schema';\n\n/**\n * Tree 下拉选择框。\n * 文档:https://baidu.gitee.io/amis/docs/components/form/tree\n */\nexport interface TreeControlSchema extends FormOptionsControl {\n type: 'input-tree';\n\n /**\n * 是否隐藏顶级\n */\n hideRoot?: boolean;\n\n /**\n * 顶级选项的名称\n */\n rootLabel?: string;\n\n /**\n * 顶级选项的值\n */\n rootValue?: any;\n\n /**\n * 显示图标\n */\n showIcon?: boolean;\n\n /**\n * 父子之间是否完全独立。\n */\n cascade?: boolean;\n\n /**\n * 选父级的时候是否把子节点的值也包含在内。\n */\n withChildren?: boolean;\n\n /**\n * 选父级的时候,是否只把子节点的值包含在内\n */\n onlyChildren?: boolean;\n\n /**\n * 顶级节点是否可以创建子节点\n */\n rootCreatable?: boolean;\n\n /**\n * 是否开启节点路径模式\n */\n enableNodePath?: boolean;\n\n /**\n * 开启节点路径模式后,节点路径的分隔符\n */\n pathSeparator?: string;\n\n /**\n * 是否显示展开线\n */\n showOutline?: boolean;\n\n deferApi?: SchemaApi;\n}\n\nexport interface TreeProps\n extends OptionsControlProps,\n Omit<\n TreeControlSchema,\n | 'type'\n | 'options'\n | 'className'\n | 'inputClassName'\n | 'descriptionClassName'\n > {\n enableNodePath?: boolean;\n pathSeparator?: string;\n}\n\nexport default class TreeControl extends React.Component<TreeProps> {\n static defaultProps: Partial<TreeProps> = {\n placeholder: 'loading',\n multiple: false,\n rootLabel: '顶级',\n rootValue: '',\n showIcon: true,\n enableNodePath: false,\n pathSeparator: '/'\n };\n\n reload() {\n const reload = this.props.reloadOptions;\n reload && reload();\n }\n\n render() {\n const {\n className,\n treeContainerClassName,\n classPrefix: ns,\n value,\n enableNodePath,\n pathSeparator = '/',\n onChange,\n disabled,\n joinValues,\n extractValue,\n delimiter,\n placeholder,\n options,\n multiple,\n valueField,\n initiallyOpen,\n unfoldedLevel,\n withChildren,\n onlyChildren,\n loading,\n hideRoot,\n rootLabel,\n cascade,\n rootValue,\n showIcon,\n showRadio,\n showOutline,\n onAdd,\n creatable,\n createTip,\n addControls,\n onEdit,\n editable,\n editTip,\n editControls,\n removable,\n removeTip,\n onDelete,\n rootCreatable,\n rootCreateTip,\n labelField,\n nodePath,\n deferLoad,\n expandTreeOptions,\n translate: __\n } = this.props;\n\n return (\n <div\n className={cx(`${ns}TreeControl`, className, treeContainerClassName)}\n >\n <Spinner size=\"sm\" key=\"info\" show={loading} />\n {loading ? null : (\n <TreeSelector\n classPrefix={ns}\n labelField={labelField}\n valueField={valueField}\n disabled={disabled}\n onChange={onChange}\n joinValues={joinValues}\n extractValue={extractValue}\n delimiter={delimiter}\n placeholder={__(placeholder)}\n options={options}\n multiple={multiple}\n initiallyOpen={initiallyOpen}\n unfoldedLevel={unfoldedLevel}\n withChildren={withChildren}\n onlyChildren={onlyChildren}\n hideRoot={hideRoot}\n rootLabel={__(rootLabel)}\n rootValue={rootValue}\n showIcon={showIcon}\n showRadio={showRadio}\n showOutline={showOutline}\n cascade={cascade}\n foldedField=\"collapsed\"\n value={value || ''}\n nodePath={nodePath}\n enableNodePath={enableNodePath}\n pathSeparator={pathSeparator}\n selfDisabledAffectChildren={false}\n onAdd={onAdd}\n creatable={creatable}\n createTip={createTip}\n rootCreatable={rootCreatable}\n rootCreateTip={rootCreateTip}\n onEdit={onEdit}\n editable={editable}\n editTip={editTip}\n removable={removable}\n removeTip={removeTip}\n onDelete={onDelete}\n bultinCUD={!addControls && !editControls}\n onDeferLoad={deferLoad}\n onExpandTree={expandTreeOptions}\n />\n )}\n </div>\n );\n }\n}\n\n@OptionsControl({\n type: 'input-tree'\n})\nexport class TreeControlRenderer extends TreeControl {}\n"
|
12
12
|
]
|
13
13
|
}
|
@@ -15,11 +15,16 @@ export interface NestedSelectControlSchema extends FormOptionsControl {
|
|
15
15
|
* 弹框的 css 类
|
16
16
|
*/
|
17
17
|
menuClassName?: string;
|
18
|
+
/**
|
19
|
+
* 是否隐藏选择框中已选中节点的祖先节点的文本信息
|
20
|
+
*/
|
21
|
+
hideNodePathLabel?: boolean;
|
18
22
|
}
|
19
23
|
export interface NestedSelectProps extends OptionsControlProps {
|
20
24
|
cascade?: boolean;
|
21
25
|
noResultsText?: string;
|
22
26
|
withChildren?: boolean;
|
27
|
+
hideNodePathLabel?: boolean;
|
23
28
|
}
|
24
29
|
export interface NestedSelectState {
|
25
30
|
isOpened?: boolean;
|
@@ -37,7 +42,7 @@ export default class NestedSelectControl extends React.Component<NestedSelectPro
|
|
37
42
|
handleOutClick(e: React.MouseEvent<any>): void;
|
38
43
|
close(): void;
|
39
44
|
removeItem(index: number, e?: React.MouseEvent<HTMLElement>): void;
|
40
|
-
renderValue(item: Option, key?: any):
|
45
|
+
renderValue(item: Option, key?: any): any;
|
41
46
|
handleOptionClick(option: Option): void;
|
42
47
|
handleCheck(option: Option | Options, index?: number): void;
|
43
48
|
allChecked(options: Options): boolean;
|
@@ -64,7 +64,10 @@ var NestedSelectControl = /** @class */ (function (_super) {
|
|
64
64
|
onChange(value);
|
65
65
|
};
|
66
66
|
NestedSelectControl.prototype.renderValue = function (item, key) {
|
67
|
-
var _a = this.props, cx = _a.classnames, labelField = _a.labelField, options = _a.options;
|
67
|
+
var _a = this.props, cx = _a.classnames, labelField = _a.labelField, options = _a.options, hideNodePathLabel = _a.hideNodePathLabel;
|
68
|
+
if (hideNodePathLabel) {
|
69
|
+
return item[labelField || 'label'];
|
70
|
+
}
|
68
71
|
var ancestors = (0, helper_1.getTreeAncestors)(options, item, true);
|
69
72
|
return (react_1.default.createElement("span", { className: cx('Select-valueLabel'), key: key }, "" + (ancestors
|
70
73
|
? ancestors
|
@@ -305,7 +308,7 @@ var NestedSelectControl = /** @class */ (function (_super) {
|
|
305
308
|
};
|
306
309
|
NestedSelectControl.prototype.render = function () {
|
307
310
|
var _a;
|
308
|
-
var _b = this.props, className = _b.className, disabled = _b.disabled, cx = _b.classnames, multiple = _b.multiple, placeholder = _b.placeholder, __ = _b.translate, inline = _b.inline, searchable = _b.searchable, autoComplete = _b.autoComplete, selectedOptions = _b.selectedOptions, clearable = _b.clearable, loading = _b.loading, borderMode = _b.borderMode;
|
311
|
+
var _b = this.props, className = _b.className, disabled = _b.disabled, cx = _b.classnames, multiple = _b.multiple, placeholder = _b.placeholder, __ = _b.translate, inline = _b.inline, searchable = _b.searchable, autoComplete = _b.autoComplete, selectedOptions = _b.selectedOptions, clearable = _b.clearable, loading = _b.loading, borderMode = _b.borderMode, hideNodePathLabel = _b.hideNodePathLabel;
|
309
312
|
return (react_1.default.createElement("div", { className: cx('NestedSelectControl', className) },
|
310
313
|
react_1.default.createElement(components_1.ResultBox, { disabled: disabled, ref: this.domRef, placeholder: __(placeholder || '空'), className: cx("NestedSelect", (_a = {
|
311
314
|
'NestedSelect--inline': inline,
|
@@ -330,7 +333,8 @@ var NestedSelectControl = /** @class */ (function (_super) {
|
|
330
333
|
searchPromptText: 'Select.searchPromptText',
|
331
334
|
noResultsText: 'noResult',
|
332
335
|
checkAll: true,
|
333
|
-
checkAllLabel: '全选'
|
336
|
+
checkAllLabel: '全选',
|
337
|
+
hideNodePathLabel: false
|
334
338
|
};
|
335
339
|
(0, tslib_1.__decorate)([
|
336
340
|
helper_1.autobind,
|
@@ -6,8 +6,8 @@
|
|
6
6
|
"/src/renderers/Form/NestedSelect.tsx"
|
7
7
|
],
|
8
8
|
"names": [],
|
9
|
-
"mappings": "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",
|
9
|
+
"mappings": "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",
|
10
10
|
"sourcesContent": [
|
11
|
-
"import React from 'react';\nimport Overlay from '../../components/Overlay';\nimport Checkbox from '../../components/Checkbox';\nimport PopOver from '../../components/PopOver';\nimport {RootCloseWrapper} from 'react-overlays';\nimport {Icon} from '../../components/icons';\nimport {\n autobind,\n flattenTree,\n filterTree,\n string2regExp,\n getTreeAncestors,\n getTreeParent,\n ucFirst\n} from '../../utils/helper';\nimport {\n FormOptionsControl,\n OptionsControl,\n OptionsControlProps\n} from '../Form/Options';\nimport {Option, Options} from '../../components/Select';\nimport {findDOMNode} from 'react-dom';\nimport {ResultBox, Spinner} from '../../components';\nimport xor from 'lodash/xor';\nimport union from 'lodash/union';\n\n/**\n * Nested Select\n * 文档:https://baidu.gitee.io/amis/docs/components/form/nested-select\n */\nexport interface NestedSelectControlSchema extends FormOptionsControl {\n type: 'nested-select';\n /**\n * 边框模式,全边框,还是半边框,或者没边框。\n */\n borderMode?: 'full' | 'half' | 'none';\n\n /**\n * 弹框的 css 类\n */\n menuClassName?: string;\n}\n\nexport interface NestedSelectProps extends OptionsControlProps {\n cascade?: boolean;\n noResultsText?: string;\n withChildren?: boolean;\n}\n\nexport interface NestedSelectState {\n isOpened?: boolean;\n isFocused?: boolean;\n inputValue?: string;\n stack: Array<Array<Option>>;\n}\n\nexport default class NestedSelectControl extends React.Component<\n NestedSelectProps,\n NestedSelectState\n> {\n static defaultProps: Partial<NestedSelectProps> = {\n cascade: false,\n withChildren: false,\n searchPromptText: 'Select.searchPromptText',\n noResultsText: 'noResult',\n checkAll: true,\n checkAllLabel: '全选'\n };\n target: any;\n input: HTMLInputElement;\n state: NestedSelectState = {\n isOpened: false,\n isFocused: false,\n inputValue: '',\n stack: [this.props.options]\n };\n\n @autobind\n domRef(ref: any) {\n this.target = ref;\n }\n\n componentDidUpdate(prevProps: NestedSelectProps) {\n if (prevProps.options !== this.props.options) {\n this.setState({\n stack: [this.props.options]\n });\n }\n }\n\n @autobind\n handleOutClick(e: React.MouseEvent<any>) {\n const {options} = this.props;\n e.defaultPrevented ||\n this.setState({\n isOpened: true\n });\n }\n\n @autobind\n close() {\n this.setState({\n isOpened: false\n });\n }\n\n removeItem(index: number, e?: React.MouseEvent<HTMLElement>) {\n let {\n onChange,\n selectedOptions,\n joinValues,\n valueField,\n extractValue,\n delimiter,\n value\n } = this.props;\n\n e && e.stopPropagation();\n\n selectedOptions.splice(index, 1);\n\n if (joinValues) {\n value = (selectedOptions as Options)\n .map(item => item[valueField || 'value'])\n .join(delimiter || ',');\n } else if (extractValue) {\n value = (selectedOptions as Options).map(\n item => item[valueField || 'value']\n );\n }\n\n onChange(value);\n }\n\n @autobind\n renderValue(item: Option, key?: any) {\n const {classnames: cx, labelField, options} = this.props;\n const ancestors = getTreeAncestors(options, item, true);\n\n return (\n <span className={cx('Select-valueLabel')} key={key}>\n {`${\n ancestors\n ? ancestors\n .map(item => `${item[labelField || 'label']}`)\n .join(' / ')\n : item[labelField || 'label']\n }`}\n </span>\n );\n }\n\n @autobind\n handleOptionClick(option: Option) {\n const {multiple, onChange, joinValues, extractValue, valueField} =\n this.props;\n\n if (multiple) {\n return;\n }\n\n onChange(\n joinValues\n ? option[valueField || 'value']\n : extractValue\n ? option[valueField || 'value']\n : option\n );\n !multiple && this.close();\n }\n\n @autobind\n handleCheck(option: Option | Options, index?: number) {\n const {\n onChange,\n selectedOptions,\n joinValues,\n delimiter,\n extractValue,\n withChildren,\n cascade,\n options\n } = this.props;\n const {stack} = this.state;\n\n let valueField = this.props.valueField || 'value';\n\n if (\n !Array.isArray(option) &&\n option.children &&\n option.children.length &&\n typeof index === 'number'\n ) {\n if (stack[index]) {\n stack.splice(index + 1, 1, option.children);\n } else {\n stack.push(option.children);\n }\n }\n\n const items = selectedOptions;\n let value: any[];\n\n // 三种情况:\n // 1.全选,option为数组\n // 2.单个选中,且有children\n // 3.单个选中,没有children\n\n if (Array.isArray(option)) {\n option = withChildren ? flattenTree(option) : option;\n value = items.length === option.length ? [] : (option as Options);\n } else if (Array.isArray(option.children)) {\n if (cascade) {\n value = xor(items, [option]);\n } else if (withChildren) {\n option = flattenTree([option]);\n const isEvery = (option as Options).every(opt => !!~items.indexOf(opt));\n value = (isEvery ? xor : union)(items, option as any);\n } else {\n value = items.filter(item => !~flattenTree([option]).indexOf(item));\n !~items.indexOf(option) && value.push(option);\n }\n } else {\n value = xor(items, [option]);\n }\n\n if (!cascade) {\n let toCheck = option;\n\n while (true) {\n const parent = getTreeParent(options, toCheck as any);\n if (parent?.value) {\n // 如果所有孩子节点都勾选了,应该自动勾选父级。\n\n if (parent.children.every((child: any) => ~value.indexOf(child))) {\n parent.children.forEach((child: any) => {\n const index = value.indexOf(child);\n if (~index && !withChildren) {\n value.splice(index, 1);\n }\n });\n value.push(parent);\n toCheck = parent;\n continue;\n }\n }\n break;\n }\n }\n\n onChange(\n joinValues\n ? value.map(item => item[valueField as string]).join(delimiter)\n : extractValue\n ? value.map(item => item[valueField as string])\n : value\n );\n }\n\n allChecked(options: Options): boolean {\n const {selectedOptions, withChildren} = this.props;\n return options.every(option => {\n if (withChildren && option.children) {\n return this.allChecked(option.children);\n }\n return selectedOptions.some(item => item === option);\n });\n }\n\n partialChecked(options: Options): boolean {\n return options.some(option => {\n const childrenPartialChecked =\n option.children && this.partialChecked(option.children);\n return (\n childrenPartialChecked ||\n this.props.selectedOptions.some(item => item === option)\n );\n });\n }\n\n reload() {\n const reload = this.props.reloadOptions;\n reload && reload();\n }\n\n @autobind\n onFocus(e: any) {\n this.props.disabled ||\n this.state.isOpened ||\n this.setState({\n isFocused: true\n });\n }\n\n @autobind\n onBlur(e: any) {\n this.setState({\n isFocused: false\n });\n }\n\n @autobind\n getTarget() {\n if (!this.target) {\n this.target = findDOMNode(this) as HTMLElement;\n }\n return this.target as HTMLElement;\n }\n\n @autobind\n handleKeyPress(e: React.KeyboardEvent) {\n if (e.key === ' ') {\n this.handleOutClick(e as any);\n e.preventDefault();\n }\n }\n\n @autobind\n handleInputKeyDown(event: React.KeyboardEvent) {\n const inputValue = this.state.inputValue;\n const {multiple, selectedOptions} = this.props;\n\n if (\n event.key === 'Backspace' &&\n !inputValue &&\n selectedOptions.length &&\n multiple\n ) {\n this.removeItem(selectedOptions.length - 1);\n }\n }\n\n @autobind\n handleInputChange(inputValue: string) {\n const {options, labelField, valueField} = this.props;\n\n const regexp = string2regExp(inputValue);\n\n let filtedOptions =\n inputValue && this.state.isOpened\n ? filterTree(\n options,\n option =>\n regexp.test(option[labelField || 'label']) ||\n regexp.test(option[valueField || 'value']) ||\n !!(option.children && option.children.length),\n 1,\n true\n )\n : options.concat();\n\n this.setState({\n inputValue,\n stack: [filtedOptions]\n });\n }\n\n @autobind\n handleResultChange(value: Array<Option>) {\n const {\n joinValues,\n extractValue,\n delimiter,\n valueField,\n onChange,\n multiple\n } = this.props;\n\n let newValue: any = Array.isArray(value) ? value.concat() : [];\n\n if (!multiple && !newValue.length) {\n onChange('');\n return;\n }\n\n if (joinValues || extractValue) {\n newValue = value.map(item => item[valueField || 'value']);\n }\n\n if (joinValues) {\n newValue = newValue.join(delimiter || ',');\n }\n\n onChange(newValue);\n }\n\n renderOptions() {\n const {\n multiple,\n selectedOptions,\n classnames: cx,\n options: propOptions,\n disabled,\n checkAll,\n checkAllLabel,\n translate: __,\n labelField,\n menuClassName,\n cascade\n } = this.props;\n const valueField = this.props.valueField || 'value';\n\n const stack = this.state.stack;\n\n let partialChecked = this.partialChecked(propOptions);\n let allChecked = this.allChecked(propOptions);\n\n return (\n <>\n {stack.map((options, index) => (\n <div key={index} className={cx('NestedSelect-menu', menuClassName)}>\n {multiple && checkAll && index === 0 ? (\n <div className={cx('NestedSelect-option', 'checkall')}>\n <Checkbox\n size=\"sm\"\n onChange={this.handleCheck.bind(this, options)}\n checked={partialChecked}\n partial={partialChecked && !allChecked}\n ></Checkbox>\n <span onClick={this.handleCheck.bind(this, options)}>\n {__(checkAllLabel)}\n </span>\n </div>\n ) : null}\n\n {options.map((option: Option, idx: number) => {\n const ancestors = getTreeAncestors(propOptions, option as any);\n const parentChecked = ancestors?.some(\n item => !!~selectedOptions.indexOf(item)\n );\n const uncheckable = cascade ? false : multiple && parentChecked;\n const selfChecked =\n uncheckable || !!~selectedOptions.indexOf(option);\n\n const parentDisabled = ancestors?.some(item => !!item.disabled);\n let nodeDisabled =\n uncheckable || option.disabled || parentDisabled || !!disabled;\n\n let selfChildrenChecked = !!(\n option.children && this.partialChecked(option.children)\n );\n\n return (\n <div\n key={idx}\n className={cx('NestedSelect-option', {\n 'is-active':\n !nodeDisabled &&\n (selfChecked || (!cascade && selfChildrenChecked))\n })}\n onMouseEnter={this.onMouseEnter.bind(this, option, index)}\n >\n {multiple ? (\n <Checkbox\n size=\"sm\"\n onChange={this.handleCheck.bind(this, option, index)}\n trueValue={option[valueField]}\n checked={selfChecked || (!cascade && selfChildrenChecked)}\n partial={!selfChecked}\n disabled={nodeDisabled}\n ></Checkbox>\n ) : null}\n\n <div\n className={cx('NestedSelect-optionLabel', {\n 'is-disabled': nodeDisabled\n })}\n onClick={() =>\n !nodeDisabled &&\n (multiple\n ? this.handleCheck(option, index)\n : this.handleOptionClick(option))\n }\n >\n {option[labelField || 'label']}\n </div>\n\n {option.children && option.children.length ? (\n <div className={cx('NestedSelect-optionArrowRight')}>\n <Icon icon=\"right-arrow\" className=\"icon\" />\n </div>\n ) : null}\n </div>\n );\n })}\n </div>\n ))}\n </>\n );\n }\n\n onMouseEnter(option: Option, index: number, e: MouseEvent) {\n let {stack} = this.state;\n index = index + 1;\n\n const children = option.children;\n if (children && children.length) {\n if (stack[index]) {\n stack.splice(index, 1, children);\n } else {\n stack.push(children);\n }\n } else {\n stack[index] && stack.splice(index, 1);\n }\n\n this.setState({stack: stack.slice(0, index + 1)});\n }\n\n renderOuter() {\n const {\n popOverContainer,\n translate: __,\n classnames: cx,\n options,\n render\n } = this.props;\n let noResultsText: any = this.props.noResultsText;\n\n if (noResultsText) {\n noResultsText = render('noResultText', __(noResultsText));\n }\n\n let body = (\n <RootCloseWrapper\n disabled={!this.state.isOpened}\n onRootClose={this.close}\n >\n <div className={cx('NestedSelect-menuOuter')}>\n {options.length ? (\n this.renderOptions()\n ) : (\n <div className={cx('NestedSelect-noResult')}>{noResultsText}</div>\n )}\n </div>\n </RootCloseWrapper>\n );\n\n return (\n <Overlay\n container={popOverContainer || this.getTarget}\n target={this.getTarget}\n show\n >\n <PopOver className={cx('NestedSelect-popover')}>{body}</PopOver>\n </Overlay>\n );\n }\n\n render() {\n const {\n className,\n disabled,\n classnames: cx,\n multiple,\n placeholder,\n translate: __,\n inline,\n searchable,\n autoComplete,\n selectedOptions,\n clearable,\n loading,\n borderMode\n } = this.props;\n\n return (\n <div className={cx('NestedSelectControl', className)}>\n <ResultBox\n disabled={disabled}\n ref={this.domRef}\n placeholder={__(placeholder || '空')}\n className={cx(`NestedSelect`, {\n 'NestedSelect--inline': inline,\n 'NestedSelect--single': !multiple,\n 'NestedSelect--multi': multiple,\n 'NestedSelect--searchable': searchable,\n 'is-opened': this.state.isOpened,\n 'is-focused': this.state.isFocused,\n [`NestedSelect--border${ucFirst(borderMode)}`]: borderMode\n })}\n result={\n multiple\n ? selectedOptions\n : selectedOptions.length\n ? this.renderValue(selectedOptions[0])\n : ''\n }\n onResultClick={this.handleOutClick}\n value={this.state.inputValue}\n onChange={this.handleInputChange}\n onResultChange={this.handleResultChange}\n itemRender={this.renderValue}\n onKeyPress={this.handleKeyPress}\n onFocus={this.onFocus}\n onBlur={this.onBlur}\n onKeyDown={this.handleInputKeyDown}\n clearable={clearable}\n allowInput={searchable}\n inputPlaceholder={''}\n >\n {loading ? <Spinner size=\"sm\" /> : undefined}\n </ResultBox>\n {this.state.isOpened ? this.renderOuter() : null}\n </div>\n );\n }\n}\n\n@OptionsControl({\n type: 'nested-select'\n})\nexport class NestedSelectControlRenderer extends NestedSelectControl {}\n"
|
11
|
+
"import React from 'react';\nimport Overlay from '../../components/Overlay';\nimport Checkbox from '../../components/Checkbox';\nimport PopOver from '../../components/PopOver';\nimport {RootCloseWrapper} from 'react-overlays';\nimport {Icon} from '../../components/icons';\nimport {\n autobind,\n flattenTree,\n filterTree,\n string2regExp,\n getTreeAncestors,\n getTreeParent,\n ucFirst\n} from '../../utils/helper';\nimport {\n FormOptionsControl,\n OptionsControl,\n OptionsControlProps\n} from '../Form/Options';\nimport {Option, Options} from '../../components/Select';\nimport {findDOMNode} from 'react-dom';\nimport {ResultBox, Spinner} from '../../components';\nimport xor from 'lodash/xor';\nimport union from 'lodash/union';\n\n/**\n * Nested Select\n * 文档:https://baidu.gitee.io/amis/docs/components/form/nested-select\n */\nexport interface NestedSelectControlSchema extends FormOptionsControl {\n type: 'nested-select';\n /**\n * 边框模式,全边框,还是半边框,或者没边框。\n */\n borderMode?: 'full' | 'half' | 'none';\n\n /**\n * 弹框的 css 类\n */\n menuClassName?: string;\n\n /**\n * 是否隐藏选择框中已选中节点的祖先节点的文本信息\n */\n hideNodePathLabel?: boolean;\n}\n\nexport interface NestedSelectProps extends OptionsControlProps {\n cascade?: boolean;\n noResultsText?: string;\n withChildren?: boolean;\n hideNodePathLabel?: boolean;\n}\n\nexport interface NestedSelectState {\n isOpened?: boolean;\n isFocused?: boolean;\n inputValue?: string;\n stack: Array<Array<Option>>;\n}\n\nexport default class NestedSelectControl extends React.Component<\n NestedSelectProps,\n NestedSelectState\n> {\n static defaultProps: Partial<NestedSelectProps> = {\n cascade: false,\n withChildren: false,\n searchPromptText: 'Select.searchPromptText',\n noResultsText: 'noResult',\n checkAll: true,\n checkAllLabel: '全选',\n hideNodePathLabel: false\n };\n target: any;\n input: HTMLInputElement;\n state: NestedSelectState = {\n isOpened: false,\n isFocused: false,\n inputValue: '',\n stack: [this.props.options]\n };\n\n @autobind\n domRef(ref: any) {\n this.target = ref;\n }\n\n componentDidUpdate(prevProps: NestedSelectProps) {\n if (prevProps.options !== this.props.options) {\n this.setState({\n stack: [this.props.options]\n });\n }\n }\n\n @autobind\n handleOutClick(e: React.MouseEvent<any>) {\n const {options} = this.props;\n e.defaultPrevented ||\n this.setState({\n isOpened: true\n });\n }\n\n @autobind\n close() {\n this.setState({\n isOpened: false\n });\n }\n\n removeItem(index: number, e?: React.MouseEvent<HTMLElement>) {\n let {\n onChange,\n selectedOptions,\n joinValues,\n valueField,\n extractValue,\n delimiter,\n value\n } = this.props;\n\n e && e.stopPropagation();\n\n selectedOptions.splice(index, 1);\n\n if (joinValues) {\n value = (selectedOptions as Options)\n .map(item => item[valueField || 'value'])\n .join(delimiter || ',');\n } else if (extractValue) {\n value = (selectedOptions as Options).map(\n item => item[valueField || 'value']\n );\n }\n\n onChange(value);\n }\n\n @autobind\n renderValue(item: Option, key?: any) {\n const {classnames: cx, labelField, options, hideNodePathLabel} = this.props;\n\n if (hideNodePathLabel) {\n return item[labelField || 'label'];\n }\n const ancestors = getTreeAncestors(options, item, true);\n\n return (\n <span className={cx('Select-valueLabel')} key={key}>\n {`${\n ancestors\n ? ancestors\n .map(item => `${item[labelField || 'label']}`)\n .join(' / ')\n : item[labelField || 'label']\n }`}\n </span>\n );\n }\n\n @autobind\n handleOptionClick(option: Option) {\n const {multiple, onChange, joinValues, extractValue, valueField} =\n this.props;\n\n if (multiple) {\n return;\n }\n\n onChange(\n joinValues\n ? option[valueField || 'value']\n : extractValue\n ? option[valueField || 'value']\n : option\n );\n !multiple && this.close();\n }\n\n @autobind\n handleCheck(option: Option | Options, index?: number) {\n const {\n onChange,\n selectedOptions,\n joinValues,\n delimiter,\n extractValue,\n withChildren,\n cascade,\n options\n } = this.props;\n const {stack} = this.state;\n\n let valueField = this.props.valueField || 'value';\n\n if (\n !Array.isArray(option) &&\n option.children &&\n option.children.length &&\n typeof index === 'number'\n ) {\n if (stack[index]) {\n stack.splice(index + 1, 1, option.children);\n } else {\n stack.push(option.children);\n }\n }\n\n const items = selectedOptions;\n let value: any[];\n\n // 三种情况:\n // 1.全选,option为数组\n // 2.单个选中,且有children\n // 3.单个选中,没有children\n\n if (Array.isArray(option)) {\n option = withChildren ? flattenTree(option) : option;\n value = items.length === option.length ? [] : (option as Options);\n } else if (Array.isArray(option.children)) {\n if (cascade) {\n value = xor(items, [option]);\n } else if (withChildren) {\n option = flattenTree([option]);\n const isEvery = (option as Options).every(opt => !!~items.indexOf(opt));\n value = (isEvery ? xor : union)(items, option as any);\n } else {\n value = items.filter(item => !~flattenTree([option]).indexOf(item));\n !~items.indexOf(option) && value.push(option);\n }\n } else {\n value = xor(items, [option]);\n }\n\n if (!cascade) {\n let toCheck = option;\n\n while (true) {\n const parent = getTreeParent(options, toCheck as any);\n if (parent?.value) {\n // 如果所有孩子节点都勾选了,应该自动勾选父级。\n\n if (parent.children.every((child: any) => ~value.indexOf(child))) {\n parent.children.forEach((child: any) => {\n const index = value.indexOf(child);\n if (~index && !withChildren) {\n value.splice(index, 1);\n }\n });\n value.push(parent);\n toCheck = parent;\n continue;\n }\n }\n break;\n }\n }\n\n onChange(\n joinValues\n ? value.map(item => item[valueField as string]).join(delimiter)\n : extractValue\n ? value.map(item => item[valueField as string])\n : value\n );\n }\n\n allChecked(options: Options): boolean {\n const {selectedOptions, withChildren} = this.props;\n return options.every(option => {\n if (withChildren && option.children) {\n return this.allChecked(option.children);\n }\n return selectedOptions.some(item => item === option);\n });\n }\n\n partialChecked(options: Options): boolean {\n return options.some(option => {\n const childrenPartialChecked =\n option.children && this.partialChecked(option.children);\n return (\n childrenPartialChecked ||\n this.props.selectedOptions.some(item => item === option)\n );\n });\n }\n\n reload() {\n const reload = this.props.reloadOptions;\n reload && reload();\n }\n\n @autobind\n onFocus(e: any) {\n this.props.disabled ||\n this.state.isOpened ||\n this.setState({\n isFocused: true\n });\n }\n\n @autobind\n onBlur(e: any) {\n this.setState({\n isFocused: false\n });\n }\n\n @autobind\n getTarget() {\n if (!this.target) {\n this.target = findDOMNode(this) as HTMLElement;\n }\n return this.target as HTMLElement;\n }\n\n @autobind\n handleKeyPress(e: React.KeyboardEvent) {\n if (e.key === ' ') {\n this.handleOutClick(e as any);\n e.preventDefault();\n }\n }\n\n @autobind\n handleInputKeyDown(event: React.KeyboardEvent) {\n const inputValue = this.state.inputValue;\n const {multiple, selectedOptions} = this.props;\n\n if (\n event.key === 'Backspace' &&\n !inputValue &&\n selectedOptions.length &&\n multiple\n ) {\n this.removeItem(selectedOptions.length - 1);\n }\n }\n\n @autobind\n handleInputChange(inputValue: string) {\n const {options, labelField, valueField} = this.props;\n\n const regexp = string2regExp(inputValue);\n\n let filtedOptions =\n inputValue && this.state.isOpened\n ? filterTree(\n options,\n option =>\n regexp.test(option[labelField || 'label']) ||\n regexp.test(option[valueField || 'value']) ||\n !!(option.children && option.children.length),\n 1,\n true\n )\n : options.concat();\n\n this.setState({\n inputValue,\n stack: [filtedOptions]\n });\n }\n\n @autobind\n handleResultChange(value: Array<Option>) {\n const {\n joinValues,\n extractValue,\n delimiter,\n valueField,\n onChange,\n multiple\n } = this.props;\n\n let newValue: any = Array.isArray(value) ? value.concat() : [];\n\n if (!multiple && !newValue.length) {\n onChange('');\n return;\n }\n\n if (joinValues || extractValue) {\n newValue = value.map(item => item[valueField || 'value']);\n }\n\n if (joinValues) {\n newValue = newValue.join(delimiter || ',');\n }\n\n onChange(newValue);\n }\n\n renderOptions() {\n const {\n multiple,\n selectedOptions,\n classnames: cx,\n options: propOptions,\n disabled,\n checkAll,\n checkAllLabel,\n translate: __,\n labelField,\n menuClassName,\n cascade\n } = this.props;\n const valueField = this.props.valueField || 'value';\n\n const stack = this.state.stack;\n\n let partialChecked = this.partialChecked(propOptions);\n let allChecked = this.allChecked(propOptions);\n\n return (\n <>\n {stack.map((options, index) => (\n <div key={index} className={cx('NestedSelect-menu', menuClassName)}>\n {multiple && checkAll && index === 0 ? (\n <div className={cx('NestedSelect-option', 'checkall')}>\n <Checkbox\n size=\"sm\"\n onChange={this.handleCheck.bind(this, options)}\n checked={partialChecked}\n partial={partialChecked && !allChecked}\n ></Checkbox>\n <span onClick={this.handleCheck.bind(this, options)}>\n {__(checkAllLabel)}\n </span>\n </div>\n ) : null}\n\n {options.map((option: Option, idx: number) => {\n const ancestors = getTreeAncestors(propOptions, option as any);\n const parentChecked = ancestors?.some(\n item => !!~selectedOptions.indexOf(item)\n );\n const uncheckable = cascade ? false : multiple && parentChecked;\n const selfChecked =\n uncheckable || !!~selectedOptions.indexOf(option);\n\n const parentDisabled = ancestors?.some(item => !!item.disabled);\n let nodeDisabled =\n uncheckable || option.disabled || parentDisabled || !!disabled;\n\n let selfChildrenChecked = !!(\n option.children && this.partialChecked(option.children)\n );\n\n return (\n <div\n key={idx}\n className={cx('NestedSelect-option', {\n 'is-active':\n !nodeDisabled &&\n (selfChecked || (!cascade && selfChildrenChecked))\n })}\n onMouseEnter={this.onMouseEnter.bind(this, option, index)}\n >\n {multiple ? (\n <Checkbox\n size=\"sm\"\n onChange={this.handleCheck.bind(this, option, index)}\n trueValue={option[valueField]}\n checked={selfChecked || (!cascade && selfChildrenChecked)}\n partial={!selfChecked}\n disabled={nodeDisabled}\n ></Checkbox>\n ) : null}\n\n <div\n className={cx('NestedSelect-optionLabel', {\n 'is-disabled': nodeDisabled\n })}\n onClick={() =>\n !nodeDisabled &&\n (multiple\n ? this.handleCheck(option, index)\n : this.handleOptionClick(option))\n }\n >\n {option[labelField || 'label']}\n </div>\n\n {option.children && option.children.length ? (\n <div className={cx('NestedSelect-optionArrowRight')}>\n <Icon icon=\"right-arrow\" className=\"icon\" />\n </div>\n ) : null}\n </div>\n );\n })}\n </div>\n ))}\n </>\n );\n }\n\n onMouseEnter(option: Option, index: number, e: MouseEvent) {\n let {stack} = this.state;\n index = index + 1;\n\n const children = option.children;\n if (children && children.length) {\n if (stack[index]) {\n stack.splice(index, 1, children);\n } else {\n stack.push(children);\n }\n } else {\n stack[index] && stack.splice(index, 1);\n }\n\n this.setState({stack: stack.slice(0, index + 1)});\n }\n\n renderOuter() {\n const {\n popOverContainer,\n translate: __,\n classnames: cx,\n options,\n render\n } = this.props;\n let noResultsText: any = this.props.noResultsText;\n\n if (noResultsText) {\n noResultsText = render('noResultText', __(noResultsText));\n }\n\n let body = (\n <RootCloseWrapper\n disabled={!this.state.isOpened}\n onRootClose={this.close}\n >\n <div className={cx('NestedSelect-menuOuter')}>\n {options.length ? (\n this.renderOptions()\n ) : (\n <div className={cx('NestedSelect-noResult')}>{noResultsText}</div>\n )}\n </div>\n </RootCloseWrapper>\n );\n\n return (\n <Overlay\n container={popOverContainer || this.getTarget}\n target={this.getTarget}\n show\n >\n <PopOver className={cx('NestedSelect-popover')}>{body}</PopOver>\n </Overlay>\n );\n }\n\n render() {\n const {\n className,\n disabled,\n classnames: cx,\n multiple,\n placeholder,\n translate: __,\n inline,\n searchable,\n autoComplete,\n selectedOptions,\n clearable,\n loading,\n borderMode,\n hideNodePathLabel\n } = this.props;\n\n return (\n <div className={cx('NestedSelectControl', className)}>\n <ResultBox\n disabled={disabled}\n ref={this.domRef}\n placeholder={__(placeholder || '空')}\n className={cx(`NestedSelect`, {\n 'NestedSelect--inline': inline,\n 'NestedSelect--single': !multiple,\n 'NestedSelect--multi': multiple,\n 'NestedSelect--searchable': searchable,\n 'is-opened': this.state.isOpened,\n 'is-focused': this.state.isFocused,\n [`NestedSelect--border${ucFirst(borderMode)}`]: borderMode\n })}\n result={\n multiple\n ? selectedOptions\n : selectedOptions.length\n ? this.renderValue(selectedOptions[0])\n : ''\n }\n onResultClick={this.handleOutClick}\n value={this.state.inputValue}\n onChange={this.handleInputChange}\n onResultChange={this.handleResultChange}\n itemRender={this.renderValue}\n onKeyPress={this.handleKeyPress}\n onFocus={this.onFocus}\n onBlur={this.onBlur}\n onKeyDown={this.handleInputKeyDown}\n clearable={clearable}\n allowInput={searchable}\n inputPlaceholder={''}\n >\n {loading ? <Spinner size=\"sm\" /> : undefined}\n </ResultBox>\n {this.state.isOpened ? this.renderOuter() : null}\n </div>\n );\n }\n}\n\n@OptionsControl({\n type: 'nested-select'\n})\nexport class NestedSelectControlRenderer extends NestedSelectControl {}\n"
|
12
12
|
]
|
13
13
|
}
|
@@ -127,6 +127,7 @@ export interface OptionsControlProps extends FormControlProps, Omit<FormOptionsC
|
|
127
127
|
setLoading: (value: boolean) => void;
|
128
128
|
reloadOptions: (setError?: boolean) => void;
|
129
129
|
deferLoad: (option: Option) => void;
|
130
|
+
expandTreeOptions: (nodePathArr: any[]) => void;
|
130
131
|
onAdd?: (idx?: number | Array<number>, value?: any, skipForm?: boolean) => void;
|
131
132
|
onEdit?: (value: Option, origin?: Option, skipForm?: boolean) => void;
|
132
133
|
onDelete?: (value: Option) => void;
|
@@ -148,7 +148,7 @@ function registerOptionsControl(config) {
|
|
148
148
|
};
|
149
149
|
// 当前值,跟设置预期的值格式不一致时自动转换。
|
150
150
|
FormOptionsItem.prototype.normalizeValue = function () {
|
151
|
-
var _a = this.props, joinValues = _a.joinValues, extractValue = _a.extractValue, value = _a.value, multiple = _a.multiple, formItem = _a.formItem, valueField = _a.valueField, onChange = _a.onChange;
|
151
|
+
var _a = this.props, joinValues = _a.joinValues, extractValue = _a.extractValue, value = _a.value, multiple = _a.multiple, formItem = _a.formItem, valueField = _a.valueField, enableNodePath = _a.enableNodePath, pathSeparator = _a.pathSeparator, onChange = _a.onChange;
|
152
152
|
if (!formItem || joinValues !== false || !formItem.options.length) {
|
153
153
|
return;
|
154
154
|
}
|
@@ -299,6 +299,15 @@ function registerOptionsControl(config) {
|
|
299
299
|
}
|
300
300
|
formItem === null || formItem === void 0 ? void 0 : formItem.deferLoadOptions(option, api, (0, helper_1.createObject)(data, option));
|
301
301
|
};
|
302
|
+
FormOptionsItem.prototype.expandTreeOptions = function (nodePathArr) {
|
303
|
+
var _a = this.props, deferApi = _a.deferApi, source = _a.source, env = _a.env, formItem = _a.formItem, data = _a.data;
|
304
|
+
var api = deferApi || source;
|
305
|
+
if (!api) {
|
306
|
+
env.notify('error', '请在选项中设置 `deferApi` 或者表单项中设置 `deferApi`,用来加载子选项。');
|
307
|
+
return;
|
308
|
+
}
|
309
|
+
formItem === null || formItem === void 0 ? void 0 : formItem.expandTreeOptions(nodePathArr, api, (0, helper_1.createObject)(data));
|
310
|
+
};
|
302
311
|
FormOptionsItem.prototype.initOptions = function (data) {
|
303
312
|
var _a;
|
304
313
|
return (0, tslib_1.__awaiter)(this, void 0, void 0, function () {
|
@@ -598,8 +607,11 @@ function registerOptionsControl(config) {
|
|
598
607
|
});
|
599
608
|
};
|
600
609
|
FormOptionsItem.prototype.render = function () {
|
601
|
-
var _a = this.props, value = _a.value, formItem = _a.formItem, addApi = _a.addApi, editApi = _a.editApi, deleteApi = _a.deleteApi, creatable = _a.creatable, editable = _a.editable, removable = _a.removable;
|
602
|
-
|
610
|
+
var _a = this.props, value = _a.value, formItem = _a.formItem, addApi = _a.addApi, editApi = _a.editApi, deleteApi = _a.deleteApi, creatable = _a.creatable, editable = _a.editable, removable = _a.removable, enableNodePath = _a.enableNodePath, pathSeparator = _a.pathSeparator, _b = _a.delimiter, delimiter = _b === void 0 ? ',' : _b, _c = _a.labelField, labelField = _c === void 0 ? 'label' : _c, _d = _a.valueField, valueField = _d === void 0 ? 'value' : _d;
|
611
|
+
var _e = (0, helper_1.normalizeNodePath)(value, enableNodePath, labelField, valueField, pathSeparator, delimiter), nodePathArray = _e.nodePathArray, nodeValueArray = _e.nodeValueArray;
|
612
|
+
return (react_1.default.createElement(Control, (0, tslib_1.__assign)({}, this.props, { ref: this.inputRef, options: formItem ? formItem.filteredOptions : [], onToggle: this.handleToggle, onToggleAll: this.handleToggleAll, selectedOptions: formItem
|
613
|
+
? formItem.getSelectedOptions(value, enableNodePath ? nodeValueArray : undefined)
|
614
|
+
: [], nodePath: nodePathArray, loading: formItem ? formItem.loading : false, setLoading: this.setLoading, setOptions: this.setOptions, syncOptions: this.syncOptions, reloadOptions: this.reload, deferLoad: this.deferLoad, expandTreeOptions: this.expandTreeOptions, creatable: creatable !== false && (0, api_1.isEffectiveApi)(addApi) ? true : creatable, editable: editable || (editable !== false && (0, api_1.isEffectiveApi)(editApi)), removable: removable || (removable !== false && (0, api_1.isEffectiveApi)(deleteApi)), onAdd: this.handleOptionAdd, onEdit: this.handleOptionEdit, onDelete: this.handleOptionDelete })));
|
603
615
|
};
|
604
616
|
var _a, _b, _c, _d;
|
605
617
|
FormOptionsItem.displayName = "OptionsControl(" + config.type + ")";
|
@@ -643,6 +655,12 @@ function registerOptionsControl(config) {
|
|
643
655
|
(0, tslib_1.__metadata)("design:paramtypes", [typeof (_b = typeof Select_1.Option !== "undefined" && Select_1.Option) === "function" ? _b : Object]),
|
644
656
|
(0, tslib_1.__metadata)("design:returntype", void 0)
|
645
657
|
], FormOptionsItem.prototype, "deferLoad", null);
|
658
|
+
(0, tslib_1.__decorate)([
|
659
|
+
helper_1.autobind,
|
660
|
+
(0, tslib_1.__metadata)("design:type", Function),
|
661
|
+
(0, tslib_1.__metadata)("design:paramtypes", [Array]),
|
662
|
+
(0, tslib_1.__metadata)("design:returntype", void 0)
|
663
|
+
], FormOptionsItem.prototype, "expandTreeOptions", null);
|
646
664
|
(0, tslib_1.__decorate)([
|
647
665
|
helper_1.autobind,
|
648
666
|
(0, tslib_1.__metadata)("design:type", Function),
|
@@ -6,8 +6,8 @@
|
|
6
6
|
"/src/renderers/Form/Options.tsx"
|
7
7
|
],
|
8
8
|
"names": [],
|
9
|
-
"mappings": "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",
|
9
|
+
"mappings": "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",
|
10
10
|
"sourcesContent": [
|
11
|
-
"/**\n * @file 所有列表选择类控件的父级,比如 Select、Radios、Checkboxes、\n * List、ButtonGroup 等等\n */\nimport {Api, PlainObject, Schema} from '../../types';\nimport {isEffectiveApi, isApiOutdated, isValidApi} from '../../utils/api';\nimport {isAlive} from 'mobx-state-tree';\nimport {\n anyChanged,\n autobind,\n createObject,\n setVariable,\n spliceTree,\n findTreeIndex,\n getTree,\n isEmpty,\n getTreeAncestors\n} from '../../utils/helper';\nimport {reaction} from 'mobx';\nimport {\n FormControlProps,\n registerFormItem,\n FormItemBasicConfig,\n detectProps as itemDetectProps,\n FormBaseControl\n} from './Item';\nimport {IFormItemStore} from '../../store/formItem';\nexport type OptionsControlComponent = React.ComponentType<FormControlProps>;\n\nimport React from 'react';\nimport {\n resolveVariableAndFilter,\n isPureVariable,\n dataMapping\n} from '../../utils/tpl-builtin';\nimport {\n Option,\n OptionProps,\n normalizeOptions,\n optionValueCompare\n} from '../../components/Select';\nimport {filter} from '../../utils/tpl';\nimport findIndex from 'lodash/findIndex';\nimport {\n SchemaApi,\n SchemaExpression,\n SchemaObject,\n SchemaTokenizeableString\n} from '../../Schema';\n\nexport {Option};\n\nexport interface FormOptionsControl extends FormBaseControl {\n /**\n * 选项集合\n */\n options?: Array<Option> | string[] | PlainObject;\n\n /**\n * 可用来通过 API 拉取 options。\n */\n source?: SchemaApi | SchemaTokenizeableString;\n\n /**\n * 默认选择选项第一个值。\n */\n selectFirst?: boolean;\n\n /**\n * 用表达式来配置 source 接口初始要不要拉取\n *\n * @deprecated 建议用 source 接口的 sendOn\n */\n initFetchOn?: SchemaExpression;\n\n /**\n * 配置 source 接口初始拉不拉取。\n *\n * @deprecated 建议用 source 接口的 sendOn\n */\n initFetch?: boolean;\n\n /**\n * 是否为多选模式\n */\n multiple?: boolean;\n\n /**\n * 单选模式:当用户选中某个选项时,选项中的 value 将被作为该表单项的值提交,否则,整个选项对象都会作为该表单项的值提交。\n * 多选模式:选中的多个选项的 `value` 会通过 `delimiter` 连接起来,否则直接将以数组的形式提交值。\n */\n joinValues?: boolean;\n\n /**\n * 分割符\n */\n delimiter?: string;\n\n /**\n * 开启后将选中的选项 value 的值封装为数组,作为当前表单项的值。\n */\n extractValue?: boolean;\n\n /**\n * 是否可清除。\n */\n clearable?: boolean;\n\n /**\n * 点清除按钮时,将表单项设置成当前配置的值。\n *\n * @default ''\n */\n resetValue?: string;\n\n /**\n * 延时加载的 API,当选项中有 defer: true 的选项时,点开会通过此接口扩充。\n */\n deferApi?: SchemaApi;\n\n /**\n * 添加时调用的接口\n */\n addApi?: SchemaApi;\n\n /**\n * 新增时的表单项。\n */\n addControls?: Array<SchemaObject>;\n\n /**\n * 是否可以新增\n */\n creatable?: boolean;\n\n /**\n * 新增文字\n */\n createBtnLabel?: string;\n\n /**\n * 是否可以编辑\n */\n editable?: boolean;\n\n /**\n * 编辑时调用的 API\n */\n editApi?: SchemaApi;\n\n /**\n * 选项修改的表单项\n */\n editControls?: Array<SchemaObject>;\n\n /**\n * 是否可删除\n */\n removable?: boolean;\n\n /**\n * 选项删除 API\n */\n deleteApi?: SchemaApi;\n\n /**\n * 选项删除提示文字。\n */\n deleteConfirmText?: string;\n\n /**\n * 自动填充,当选项被选择的时候,将选项中的其他值同步设置到表单内。\n */\n autoFill?: {\n [propName: string]: SchemaTokenizeableString;\n };\n}\n\nexport interface OptionsBasicConfig extends FormItemBasicConfig {\n autoLoadOptionsFromSource?: boolean;\n}\n\nexport interface OptionsConfig extends OptionsBasicConfig {\n component: React.ComponentType<OptionsControlProps>;\n}\n\n// 下发给注册进来的组件的属性。\nexport interface OptionsControlProps\n extends FormControlProps,\n Omit<\n FormOptionsControl,\n 'type' | 'className' | 'descriptionClassName' | 'inputClassName'\n > {\n options: Array<Option>;\n onToggle: (\n option: Option,\n submitOnChange?: boolean,\n changeImmediately?: boolean\n ) => void;\n onToggleAll: () => void;\n selectedOptions: Array<Option>;\n setOptions: (value: Array<any>, skipNormalize?: boolean) => void;\n setLoading: (value: boolean) => void;\n reloadOptions: (setError?: boolean) => void;\n deferLoad: (option: Option) => void;\n onAdd?: (\n idx?: number | Array<number>,\n value?: any,\n skipForm?: boolean\n ) => void;\n onEdit?: (value: Option, origin?: Option, skipForm?: boolean) => void;\n onDelete?: (value: Option) => void;\n}\n\n// 自己接收的属性。\nexport interface OptionsProps\n extends FormControlProps,\n Omit<OptionProps, 'className'> {\n source?: Api;\n deferApi?: Api;\n creatable?: boolean;\n addApi?: Api;\n addControls?: Array<any>;\n editApi?: Api;\n editControls?: Array<any>;\n deleteApi?: Api;\n deleteConfirmText?: string;\n optionLabel?: string;\n}\n\nexport const detectProps = itemDetectProps.concat([\n 'value',\n 'options',\n 'size',\n 'buttons',\n 'columnsCount',\n 'multiple',\n 'hideRoot',\n 'checkAll',\n 'showIcon',\n 'showRadio',\n 'btnDisabled',\n 'joinValues',\n 'extractValue',\n 'borderMode',\n 'hideSelected'\n]);\n\nexport function registerOptionsControl(config: OptionsConfig) {\n const Control = config.component;\n\n class FormOptionsItem extends React.Component<OptionsProps, any> {\n static displayName = `OptionsControl(${config.type})`;\n static defaultProps = {\n delimiter: ',',\n labelField: 'label',\n valueField: 'value',\n joinValues: true,\n extractValue: false,\n multiple: false,\n placeholder: 'Select.placeholder',\n resetValue: '',\n deleteConfirmText: '确定要删除?',\n ...Control.defaultProps\n };\n static propsList: any = (Control as any).propsList\n ? [...(Control as any).propsList]\n : [];\n static ComposedComponent = Control;\n\n reaction?: () => void;\n input: any;\n\n constructor(props: OptionsProps) {\n super(props);\n\n const {\n initFetch,\n formItem,\n source,\n data,\n setPrinstineValue,\n defaultValue,\n multiple,\n joinValues,\n extractValue,\n addHook,\n formInited,\n valueField,\n options,\n value,\n defaultCheckAll\n } = props;\n\n if (formItem) {\n formItem.setOptions(\n normalizeOptions(options),\n this.changeOptionValue,\n data\n );\n\n this.reaction = reaction(\n () => JSON.stringify([formItem.loading, formItem.filteredOptions]),\n () => this.forceUpdate()\n );\n // 默认全选。这里会和默认值\\回填值逻辑冲突,所以如果有配置source则不执行默认全选\n if (\n multiple &&\n defaultCheckAll &&\n formItem.filteredOptions?.length &&\n !source\n ) {\n this.defaultCheckAll();\n }\n }\n\n let loadOptions: boolean = initFetch !== false;\n\n if (formItem && joinValues === false && defaultValue) {\n const selectedOptions = extractValue\n ? formItem\n .getSelectedOptions(value)\n .map(\n (selectedOption: Option) =>\n selectedOption[valueField || 'value']\n )\n : formItem.getSelectedOptions(value);\n setPrinstineValue(\n multiple ? selectedOptions.concat() : selectedOptions[0]\n );\n }\n\n loadOptions &&\n config.autoLoadOptionsFromSource !== false &&\n (formInited || !addHook\n ? this.reload()\n : addHook && addHook(this.initOptions, 'init'));\n }\n\n componentDidMount() {\n this.normalizeValue();\n\n if (this.props.value) {\n this.syncAutoFill(this.props.value);\n }\n }\n\n shouldComponentUpdate(nextProps: OptionsProps) {\n if (config.strictMode === false || nextProps.strictMode === false) {\n return true;\n } else if (nextProps.source || nextProps.autoComplete) {\n return true;\n } else if (nextProps.formItem?.expressionsInOptions) {\n return true;\n }\n\n if (anyChanged(detectProps, this.props, nextProps)) {\n return true;\n }\n\n return false;\n }\n\n componentDidUpdate(prevProps: OptionsProps) {\n const props = this.props;\n const formItem = props.formItem as IFormItemStore;\n\n if (prevProps.options !== props.options && formItem) {\n formItem.setOptions(\n normalizeOptions(props.options || []),\n this.changeOptionValue,\n props.data\n );\n this.normalizeValue();\n } else if (\n config.autoLoadOptionsFromSource !== false &&\n props.formInited &&\n props.source &&\n formItem &&\n (prevProps.source !== props.source || prevProps.data !== props.data)\n ) {\n if (isPureVariable(props.source as string)) {\n const prevOptions = resolveVariableAndFilter(\n prevProps.source as string,\n prevProps.data,\n '| raw'\n );\n const options = resolveVariableAndFilter(\n props.source as string,\n props.data,\n '| raw'\n );\n\n if (prevOptions !== options) {\n formItem.setOptions(\n normalizeOptions(options || []),\n this.changeOptionValue,\n props.data\n );\n this.normalizeValue();\n }\n } else if (\n isEffectiveApi(props.source, props.data) &&\n isApiOutdated(\n prevProps.source,\n props.source,\n prevProps.data,\n props.data\n )\n ) {\n formItem\n .loadOptions(\n props.source,\n props.data,\n undefined,\n true,\n this.changeOptionValue\n )\n .then(() => this.normalizeValue());\n }\n }\n\n if (prevProps.value !== props.value || formItem?.expressionsInOptions) {\n formItem.syncOptions(undefined, props.data);\n this.syncAutoFill(props.value);\n }\n }\n\n componentWillUnmount() {\n this.props.removeHook?.(this.reload, 'init');\n this.reaction?.();\n }\n\n syncAutoFill(value: any) {\n const {autoFill, multiple, onBulkChange} = this.props;\n const formItem = this.props.formItem as IFormItemStore;\n\n if (autoFill && !isEmpty(autoFill) && formItem.filteredOptions.length) {\n const selectedOptions = formItem.getSelectedOptions(value);\n const toSync = dataMapping(\n autoFill,\n multiple\n ? {\n items: selectedOptions.map(item =>\n createObject(\n {\n ancestors: getTreeAncestors(\n formItem.filteredOptions,\n item,\n true\n )\n },\n item\n )\n )\n }\n : createObject(\n {\n ancestors: getTreeAncestors(\n formItem.filteredOptions,\n selectedOptions[0],\n true\n )\n },\n selectedOptions[0]\n )\n );\n onBulkChange?.(toSync);\n }\n }\n\n // 当前值,跟设置预期的值格式不一致时自动转换。\n normalizeValue() {\n const {\n joinValues,\n extractValue,\n value,\n multiple,\n formItem,\n valueField,\n onChange\n } = this.props;\n\n if (!formItem || joinValues !== false || !formItem.options.length) {\n return;\n }\n\n if (\n extractValue === false &&\n (typeof value === 'string' || typeof value === 'number')\n ) {\n const selectedOptions = formItem.getSelectedOptions(value);\n onChange?.(multiple ? selectedOptions.concat() : selectedOptions[0]);\n } else if (\n extractValue === true &&\n value &&\n !(\n (Array.isArray(value) &&\n value.every(\n val => typeof val === 'string' || typeof val === 'number'\n )) ||\n typeof value === 'string' ||\n typeof value === 'number'\n )\n ) {\n const selectedOptions = formItem\n .getSelectedOptions(value)\n .map(\n (selectedOption: Option) => selectedOption[valueField || 'value']\n );\n onChange?.(multiple ? selectedOptions.concat() : selectedOptions[0]);\n }\n }\n\n getWrappedInstance() {\n return this.input;\n }\n\n @autobind\n inputRef(ref: any) {\n this.input = ref;\n }\n\n @autobind\n handleToggle(\n option: Option,\n submitOnChange?: boolean,\n changeImmediately?: boolean\n ) {\n const {onChange, formItem, value} = this.props;\n\n if (!formItem) {\n return;\n }\n\n let newValue: string | Array<Option> | Option = this.toggleValue(\n option,\n value\n );\n\n onChange && onChange(newValue, submitOnChange, changeImmediately);\n }\n\n /**\n * 初始化时处理默认全选逻辑\n */\n defaultCheckAll() {\n const {value, formItem, setPrinstineValue} = this.props;\n // 如果有默认值\\回填值直接返回\n if (!formItem || formItem.getSelectedOptions(value).length) {\n return;\n }\n let valueArray = formItem.filteredOptions.concat();\n const newValue = this.formatValueArray(valueArray);\n setPrinstineValue?.(newValue);\n }\n\n /**\n * 选中的值经过joinValues和delimiter等规则处理输出规定格式的值\n * @param valueArray 选中值的数组\n * @returns 通过joinValues和delimiter等规则输出规定格式的值\n */\n formatValueArray(valueArray: Array<Option>) {\n const {\n joinValues,\n extractValue,\n valueField,\n delimiter,\n resetValue,\n multiple\n } = this.props;\n let newValue: string | Array<Option> | Option = '';\n if (multiple) {\n newValue = valueArray;\n\n if (joinValues) {\n newValue = (newValue as Array<any>)\n .map(item => item[valueField || 'value'])\n .join(delimiter);\n } else if (extractValue) {\n newValue = (newValue as Array<any>).map(\n item => item[valueField || 'value']\n );\n }\n } else {\n newValue = valueArray[0] || resetValue;\n\n if (joinValues && newValue) {\n newValue = (newValue as any)[valueField || 'value'];\n }\n }\n return newValue;\n }\n\n @autobind\n handleToggleAll() {\n const {value, onChange, formItem} = this.props;\n\n if (!formItem) {\n return;\n }\n const selectedOptions = formItem.getSelectedOptions(value);\n let valueArray =\n selectedOptions.length === formItem.filteredOptions.length\n ? []\n : formItem.filteredOptions.concat();\n const newValue = this.formatValueArray(valueArray);\n onChange && onChange(newValue);\n }\n\n toggleValue(option: Option, originValue?: any) {\n const {\n joinValues,\n extractValue,\n valueField,\n delimiter,\n clearable,\n resetValue,\n multiple,\n formItem\n } = this.props;\n\n let valueArray =\n originValue !== undefined\n ? formItem!.getSelectedOptions(originValue).concat()\n : [];\n\n const idx = findIndex(\n valueArray,\n optionValueCompare(option[valueField || 'value'], valueField || 'value')\n );\n let newValue: string | Array<Option> | Option = '';\n\n if (multiple) {\n if (~idx) {\n valueArray.splice(idx, 1);\n } else {\n valueArray.push(option);\n }\n\n newValue = valueArray;\n\n if (joinValues) {\n newValue = (newValue as Array<any>)\n .map(item => item[valueField || 'value'])\n .join(delimiter);\n } else if (extractValue) {\n newValue = (newValue as Array<any>).map(\n item => item[valueField || 'value']\n );\n }\n } else {\n if (~idx && clearable) {\n valueArray.splice(idx, 1);\n } else {\n valueArray = [option];\n }\n\n newValue = valueArray[0] || resetValue;\n\n if ((joinValues || extractValue) && newValue) {\n newValue = (newValue as any)[valueField || 'value'];\n }\n }\n\n return newValue;\n }\n\n // 当有 action 触发,如果指定了 reload 目标组件,有可能会来到这里面来\n @autobind\n reload() {\n return this.reloadOptions();\n }\n\n @autobind\n reloadOptions(setError?: boolean, isInit = false) {\n const {source, formItem, data, onChange, setPrinstineValue, selectFirst} =\n this.props;\n\n if (formItem && isPureVariable(source as string)) {\n isAlive(formItem) &&\n formItem.setOptions(\n normalizeOptions(\n resolveVariableAndFilter(source as string, data, '| raw') || []\n ),\n this.changeOptionValue,\n data\n );\n return;\n } else if (!formItem || !isEffectiveApi(source, data)) {\n return;\n }\n\n return formItem.loadOptions(\n source,\n data,\n undefined,\n false,\n isInit ? setPrinstineValue : onChange,\n setError\n );\n }\n\n @autobind\n deferLoad(option: Option) {\n const {deferApi, source, env, formItem, data} = this.props;\n\n const api = option.deferApi || deferApi || source;\n\n if (!api) {\n env.notify(\n 'error',\n '请在选项中设置 `deferApi` 或者表单项中设置 `deferApi`,用来加载子选项。'\n );\n return;\n }\n\n formItem?.deferLoadOptions(option, api, createObject(data, option));\n }\n\n @autobind\n async initOptions(data: any) {\n await this.reloadOptions(false, true);\n const {formItem, name, multiple, defaultCheckAll} = this.props;\n if (!formItem) {\n return;\n }\n if (isAlive(formItem) && formItem.value) {\n setVariable(data, name!, formItem.value);\n }\n\n // 默认全选\n if (multiple && defaultCheckAll && formItem.filteredOptions?.length) {\n this.defaultCheckAll();\n }\n }\n\n focus() {\n this.input && this.input.focus && this.input.focus();\n }\n\n @autobind\n changeOptionValue(value: any) {\n const {\n onChange,\n formInited,\n setPrinstineValue,\n value: originValue\n } = this.props;\n\n if (formInited === false) {\n originValue === undefined && setPrinstineValue?.(value);\n } else {\n onChange?.(value);\n }\n }\n\n @autobind\n setOptions(options: Array<any>, skipNormalize = false) {\n const formItem = this.props.formItem as IFormItemStore;\n formItem &&\n formItem.setOptions(\n skipNormalize ? options : normalizeOptions(options || []),\n this.changeOptionValue,\n this.props.data\n );\n }\n\n @autobind\n syncOptions() {\n const formItem = this.props.formItem as IFormItemStore;\n formItem && formItem.syncOptions(undefined, this.props.data);\n }\n\n @autobind\n setLoading(value: boolean) {\n const formItem = this.props.formItem as IFormItemStore;\n formItem && formItem.setLoading(value);\n }\n\n @autobind\n async handleOptionAdd(\n idx: number | Array<number> = -1,\n value?: any,\n skipForm: boolean = false\n ) {\n let {\n addControls,\n disabled,\n labelField,\n onOpenDialog,\n optionLabel,\n addApi,\n source,\n data,\n valueField,\n formItem: model,\n createBtnLabel,\n env,\n translate: __\n } = this.props;\n\n // 禁用或者没有配置 name\n if (disabled || !model) {\n return;\n }\n\n // 用户没有配置表单项,则自动创建一个 label 输入\n if (!skipForm && (!Array.isArray(addControls) || !addControls.length)) {\n addControls = [\n {\n type: 'text',\n name: labelField || 'label',\n label: false,\n placeholder: __('Options.addPlaceholder')\n }\n ];\n }\n const parent = Array.isArray(idx)\n ? getTree(model.options, idx.slice(0, -1))\n : undefined;\n\n const ctx: any = createObject(\n data,\n Array.isArray(idx)\n ? {\n parent: parent,\n ...value\n }\n : value\n );\n\n let result: any = skipForm\n ? ctx\n : await onOpenDialog(\n {\n type: 'dialog',\n title: createBtnLabel || `新增${optionLabel || '选项'}`,\n body: {\n type: 'form',\n api: addApi,\n controls: addControls\n }\n },\n ctx\n );\n\n // 单独发请求\n if (skipForm && addApi) {\n try {\n const payload = await env.fetcher(addApi!, result, {\n method: 'post'\n });\n\n if (!payload.ok) {\n env.notify('error', payload.msg || __('Options.createFailed'));\n result = null;\n } else {\n result = payload.data || result;\n }\n } catch (e) {\n result = null;\n console.error(e);\n env.notify('error', e.message);\n }\n }\n\n // 有 result 说明弹框点了确认。否则就是取消了。\n if (!result) {\n return;\n }\n\n // 没走服务端的。\n if (!result.hasOwnProperty(valueField || 'value')) {\n result = {\n ...result,\n [valueField || 'value']: result[labelField || 'label']\n };\n }\n\n // 如果是懒加载的,只懒加载当前节点。\n if (parent?.defer) {\n this.deferLoad(parent);\n } else if (source && addApi) {\n // 如果配置了 source 且配置了 addApi 直接重新拉取接口就够了\n // 不能不判断 addApi 就刷新,因为有些场景就是临时添加的。\n this.reload();\n } else {\n // 否则直接前端变更 options\n let options = model.options.concat();\n if (Array.isArray(idx)) {\n options = spliceTree(options, idx, 0, {...result});\n } else {\n ~idx\n ? options.splice(idx, 0, {...result})\n : options.push({...result});\n }\n model.setOptions(options, this.changeOptionValue, data);\n }\n }\n\n @autobind\n async handleOptionEdit(\n value: any,\n origin: any = value,\n skipForm: boolean = false\n ) {\n let {\n editControls,\n disabled,\n labelField,\n onOpenDialog,\n editApi,\n env,\n source,\n data,\n formItem: model,\n optionLabel,\n translate: __\n } = this.props;\n\n if (disabled || !model) {\n return;\n }\n\n if (!skipForm && (!Array.isArray(editControls) || !editControls.length)) {\n editControls = [\n {\n type: 'text',\n name: labelField || 'label',\n label: false,\n placeholder: __('Options.addPlaceholder')\n }\n ];\n }\n\n let result = skipForm\n ? value\n : await onOpenDialog(\n {\n type: 'dialog',\n title: __('Options.editLabel', {\n label: optionLabel || __('Options.label')\n }),\n body: {\n type: 'form',\n api: editApi,\n controls: editControls\n }\n },\n createObject(data, value)\n );\n\n // 单独发请求\n if (skipForm && editApi) {\n try {\n const payload = await env.fetcher(\n editApi!,\n createObject(data, result),\n {\n method: 'post'\n }\n );\n\n if (!payload.ok) {\n env.notify('error', payload.msg || __('saveFailed'));\n result = null;\n } else {\n result = payload.data || result;\n }\n } catch (e) {\n result = null;\n console.error(e);\n env.notify('error', e.message);\n }\n }\n\n // 没有结果,说明取消了。\n if (!result) {\n return;\n }\n\n if (source && editApi) {\n this.reload();\n } else {\n const indexes = findTreeIndex(model.options, item => item === origin);\n\n if (indexes) {\n model.setOptions(\n spliceTree(model.options, indexes, 1, {\n ...origin,\n ...result\n }),\n this.changeOptionValue,\n data\n );\n }\n }\n }\n\n @autobind\n async handleOptionDelete(value: any) {\n let {\n deleteConfirmText,\n disabled,\n data,\n deleteApi,\n env,\n formItem: model,\n source,\n valueField,\n translate: __\n } = this.props;\n\n if (disabled || !model) {\n return;\n }\n\n const ctx = createObject(data, value);\n\n // 如果配置了 deleteConfirmText 让用户先确认。\n const confirmed = deleteConfirmText\n ? await env.confirm(filter(deleteConfirmText, ctx))\n : true;\n if (!confirmed) {\n return;\n }\n\n // 通过 deleteApi 删除。\n try {\n if (!deleteApi) {\n throw new Error(__('Options.deleteAPI'));\n }\n\n const result = await env.fetcher(deleteApi!, ctx, {\n method: 'delete'\n });\n\n if (!result.ok) {\n env.notify('error', result.msg || __('deleteFailed'));\n } else if (source) {\n this.reload();\n } else {\n const options = model.options.concat();\n const indexes = findTreeIndex(\n options,\n item => item[valueField || 'value'] == value[valueField || 'value']\n );\n\n if (indexes) {\n model.setOptions(\n spliceTree(options, indexes, 1),\n this.changeOptionValue,\n data\n );\n }\n }\n } catch (e) {\n console.error(e);\n env.notify('error', e.message);\n }\n }\n\n render() {\n const {\n value,\n formItem,\n addApi,\n editApi,\n deleteApi,\n creatable,\n editable,\n removable\n } = this.props;\n\n return (\n <Control\n {...this.props}\n ref={this.inputRef}\n options={formItem ? formItem.filteredOptions : []}\n onToggle={this.handleToggle}\n onToggleAll={this.handleToggleAll}\n selectedOptions={formItem ? formItem.getSelectedOptions(value) : []}\n loading={formItem ? formItem.loading : false}\n setLoading={this.setLoading}\n setOptions={this.setOptions}\n syncOptions={this.syncOptions}\n reloadOptions={this.reload}\n deferLoad={this.deferLoad}\n creatable={\n creatable !== false && isEffectiveApi(addApi) ? true : creatable\n }\n editable={editable || (editable !== false && isEffectiveApi(editApi))}\n removable={\n removable || (removable !== false && isEffectiveApi(deleteApi))\n }\n onAdd={this.handleOptionAdd}\n onEdit={this.handleOptionEdit}\n onDelete={this.handleOptionDelete}\n />\n );\n }\n }\n\n return registerFormItem({\n ...(config as FormItemBasicConfig),\n strictMode: false,\n component: FormOptionsItem\n });\n}\n\nexport function OptionsControl(config: OptionsBasicConfig) {\n return function <T extends React.ComponentType<OptionsControlProps>>(\n component: T\n ): T {\n const renderer = registerOptionsControl({\n ...config,\n component: component\n });\n return renderer.component as any;\n };\n}\n\nexport function highlight(\n text: string,\n input?: string,\n hlClassName: string = 'is-matched'\n) {\n if (!input) {\n return text;\n }\n\n text = String(text);\n const reg = new RegExp(input.replace(/[|\\\\{}()[\\]^$+*?.]/g, '\\\\$&'), 'ig');\n if (!reg.test(text)) {\n return text;\n }\n\n const dom: Array<any> = [];\n\n let start = 0;\n let match = null;\n\n reg.lastIndex = 0;\n while ((match = reg.exec(text))) {\n const prev = text.substring(start, match.index);\n prev && dom.push(<span key={dom.length}>{prev}</span>);\n\n match[0] &&\n dom.push(\n <span className={hlClassName} key={dom.length}>\n {match[0]}\n </span>\n );\n start = match.index + match[0].length;\n }\n const rest = text.substring(start);\n rest && dom.push(<span key={dom.length}>{rest}</span>);\n\n // const parts = text.split(reg);\n\n // parts.forEach((text: string, index) => {\n // text && dom.push(<span key={index}>{text}</span>);\n // dom.push(\n // <span className={hlClassName} key={`${index}-hl`}>\n // {input}\n // </span>\n // );\n // });\n\n // dom.pop();\n\n return dom;\n}\n"
|
11
|
+
"/**\n * @file 所有列表选择类控件的父级,比如 Select、Radios、Checkboxes、\n * List、ButtonGroup 等等\n */\nimport {Api, PlainObject, Schema} from '../../types';\nimport {isEffectiveApi, isApiOutdated, isValidApi} from '../../utils/api';\nimport {isAlive} from 'mobx-state-tree';\nimport {\n anyChanged,\n autobind,\n createObject,\n setVariable,\n spliceTree,\n findTreeIndex,\n getTree,\n isEmpty,\n getTreeAncestors,\n normalizeNodePath\n} from '../../utils/helper';\nimport {reaction} from 'mobx';\nimport {\n FormControlProps,\n registerFormItem,\n FormItemBasicConfig,\n detectProps as itemDetectProps,\n FormBaseControl\n} from './Item';\nimport {IFormItemStore} from '../../store/formItem';\nexport type OptionsControlComponent = React.ComponentType<FormControlProps>;\n\nimport React from 'react';\nimport {\n resolveVariableAndFilter,\n isPureVariable,\n dataMapping\n} from '../../utils/tpl-builtin';\nimport {\n Option,\n OptionProps,\n normalizeOptions,\n optionValueCompare\n} from '../../components/Select';\nimport {filter} from '../../utils/tpl';\nimport findIndex from 'lodash/findIndex';\nimport {\n SchemaApi,\n SchemaExpression,\n SchemaObject,\n SchemaTokenizeableString\n} from '../../Schema';\n\nexport {Option};\n\nexport interface FormOptionsControl extends FormBaseControl {\n /**\n * 选项集合\n */\n options?: Array<Option> | string[] | PlainObject;\n\n /**\n * 可用来通过 API 拉取 options。\n */\n source?: SchemaApi | SchemaTokenizeableString;\n\n /**\n * 默认选择选项第一个值。\n */\n selectFirst?: boolean;\n\n /**\n * 用表达式来配置 source 接口初始要不要拉取\n *\n * @deprecated 建议用 source 接口的 sendOn\n */\n initFetchOn?: SchemaExpression;\n\n /**\n * 配置 source 接口初始拉不拉取。\n *\n * @deprecated 建议用 source 接口的 sendOn\n */\n initFetch?: boolean;\n\n /**\n * 是否为多选模式\n */\n multiple?: boolean;\n\n /**\n * 单选模式:当用户选中某个选项时,选项中的 value 将被作为该表单项的值提交,否则,整个选项对象都会作为该表单项的值提交。\n * 多选模式:选中的多个选项的 `value` 会通过 `delimiter` 连接起来,否则直接将以数组的形式提交值。\n */\n joinValues?: boolean;\n\n /**\n * 分割符\n */\n delimiter?: string;\n\n /**\n * 开启后将选中的选项 value 的值封装为数组,作为当前表单项的值。\n */\n extractValue?: boolean;\n\n /**\n * 是否可清除。\n */\n clearable?: boolean;\n\n /**\n * 点清除按钮时,将表单项设置成当前配置的值。\n *\n * @default ''\n */\n resetValue?: string;\n\n /**\n * 延时加载的 API,当选项中有 defer: true 的选项时,点开会通过此接口扩充。\n */\n deferApi?: SchemaApi;\n\n /**\n * 添加时调用的接口\n */\n addApi?: SchemaApi;\n\n /**\n * 新增时的表单项。\n */\n addControls?: Array<SchemaObject>;\n\n /**\n * 是否可以新增\n */\n creatable?: boolean;\n\n /**\n * 新增文字\n */\n createBtnLabel?: string;\n\n /**\n * 是否可以编辑\n */\n editable?: boolean;\n\n /**\n * 编辑时调用的 API\n */\n editApi?: SchemaApi;\n\n /**\n * 选项修改的表单项\n */\n editControls?: Array<SchemaObject>;\n\n /**\n * 是否可删除\n */\n removable?: boolean;\n\n /**\n * 选项删除 API\n */\n deleteApi?: SchemaApi;\n\n /**\n * 选项删除提示文字。\n */\n deleteConfirmText?: string;\n\n /**\n * 自动填充,当选项被选择的时候,将选项中的其他值同步设置到表单内。\n */\n autoFill?: {\n [propName: string]: SchemaTokenizeableString;\n };\n}\n\nexport interface OptionsBasicConfig extends FormItemBasicConfig {\n autoLoadOptionsFromSource?: boolean;\n}\n\nexport interface OptionsConfig extends OptionsBasicConfig {\n component: React.ComponentType<OptionsControlProps>;\n}\n\n// 下发给注册进来的组件的属性。\nexport interface OptionsControlProps\n extends FormControlProps,\n Omit<\n FormOptionsControl,\n 'type' | 'className' | 'descriptionClassName' | 'inputClassName'\n > {\n options: Array<Option>;\n onToggle: (\n option: Option,\n submitOnChange?: boolean,\n changeImmediately?: boolean\n ) => void;\n onToggleAll: () => void;\n selectedOptions: Array<Option>;\n setOptions: (value: Array<any>, skipNormalize?: boolean) => void;\n setLoading: (value: boolean) => void;\n reloadOptions: (setError?: boolean) => void;\n deferLoad: (option: Option) => void;\n expandTreeOptions: (nodePathArr: any[]) => void;\n onAdd?: (\n idx?: number | Array<number>,\n value?: any,\n skipForm?: boolean\n ) => void;\n onEdit?: (value: Option, origin?: Option, skipForm?: boolean) => void;\n onDelete?: (value: Option) => void;\n}\n\n// 自己接收的属性。\nexport interface OptionsProps\n extends FormControlProps,\n Omit<OptionProps, 'className'> {\n source?: Api;\n deferApi?: Api;\n creatable?: boolean;\n addApi?: Api;\n addControls?: Array<any>;\n editApi?: Api;\n editControls?: Array<any>;\n deleteApi?: Api;\n deleteConfirmText?: string;\n optionLabel?: string;\n}\n\nexport const detectProps = itemDetectProps.concat([\n 'value',\n 'options',\n 'size',\n 'buttons',\n 'columnsCount',\n 'multiple',\n 'hideRoot',\n 'checkAll',\n 'showIcon',\n 'showRadio',\n 'btnDisabled',\n 'joinValues',\n 'extractValue',\n 'borderMode',\n 'hideSelected'\n]);\n\nexport function registerOptionsControl(config: OptionsConfig) {\n const Control = config.component;\n\n class FormOptionsItem extends React.Component<OptionsProps, any> {\n static displayName = `OptionsControl(${config.type})`;\n static defaultProps = {\n delimiter: ',',\n labelField: 'label',\n valueField: 'value',\n joinValues: true,\n extractValue: false,\n multiple: false,\n placeholder: 'Select.placeholder',\n resetValue: '',\n deleteConfirmText: '确定要删除?',\n ...Control.defaultProps\n };\n static propsList: any = (Control as any).propsList\n ? [...(Control as any).propsList]\n : [];\n static ComposedComponent = Control;\n\n reaction?: () => void;\n input: any;\n\n constructor(props: OptionsProps) {\n super(props);\n\n const {\n initFetch,\n formItem,\n source,\n data,\n setPrinstineValue,\n defaultValue,\n multiple,\n joinValues,\n extractValue,\n addHook,\n formInited,\n valueField,\n options,\n value,\n defaultCheckAll\n } = props;\n\n if (formItem) {\n formItem.setOptions(\n normalizeOptions(options),\n this.changeOptionValue,\n data\n );\n\n this.reaction = reaction(\n () => JSON.stringify([formItem.loading, formItem.filteredOptions]),\n () => this.forceUpdate()\n );\n // 默认全选。这里会和默认值\\回填值逻辑冲突,所以如果有配置source则不执行默认全选\n if (\n multiple &&\n defaultCheckAll &&\n formItem.filteredOptions?.length &&\n !source\n ) {\n this.defaultCheckAll();\n }\n }\n\n let loadOptions: boolean = initFetch !== false;\n\n if (formItem && joinValues === false && defaultValue) {\n const selectedOptions = extractValue\n ? formItem\n .getSelectedOptions(value)\n .map(\n (selectedOption: Option) =>\n selectedOption[valueField || 'value']\n )\n : formItem.getSelectedOptions(value);\n setPrinstineValue(\n multiple ? selectedOptions.concat() : selectedOptions[0]\n );\n }\n\n loadOptions &&\n config.autoLoadOptionsFromSource !== false &&\n (formInited || !addHook\n ? this.reload()\n : addHook && addHook(this.initOptions, 'init'));\n }\n\n componentDidMount() {\n this.normalizeValue();\n\n if (this.props.value) {\n this.syncAutoFill(this.props.value);\n }\n }\n\n shouldComponentUpdate(nextProps: OptionsProps) {\n if (config.strictMode === false || nextProps.strictMode === false) {\n return true;\n } else if (nextProps.source || nextProps.autoComplete) {\n return true;\n } else if (nextProps.formItem?.expressionsInOptions) {\n return true;\n }\n\n if (anyChanged(detectProps, this.props, nextProps)) {\n return true;\n }\n\n return false;\n }\n\n componentDidUpdate(prevProps: OptionsProps) {\n const props = this.props;\n const formItem = props.formItem as IFormItemStore;\n\n if (prevProps.options !== props.options && formItem) {\n formItem.setOptions(\n normalizeOptions(props.options || []),\n this.changeOptionValue,\n props.data\n );\n this.normalizeValue();\n } else if (\n config.autoLoadOptionsFromSource !== false &&\n props.formInited &&\n props.source &&\n formItem &&\n (prevProps.source !== props.source || prevProps.data !== props.data)\n ) {\n if (isPureVariable(props.source as string)) {\n const prevOptions = resolveVariableAndFilter(\n prevProps.source as string,\n prevProps.data,\n '| raw'\n );\n const options = resolveVariableAndFilter(\n props.source as string,\n props.data,\n '| raw'\n );\n\n if (prevOptions !== options) {\n formItem.setOptions(\n normalizeOptions(options || []),\n this.changeOptionValue,\n props.data\n );\n this.normalizeValue();\n }\n } else if (\n isEffectiveApi(props.source, props.data) &&\n isApiOutdated(\n prevProps.source,\n props.source,\n prevProps.data,\n props.data\n )\n ) {\n formItem\n .loadOptions(\n props.source,\n props.data,\n undefined,\n true,\n this.changeOptionValue\n )\n .then(() => this.normalizeValue());\n }\n }\n\n if (prevProps.value !== props.value || formItem?.expressionsInOptions) {\n formItem.syncOptions(undefined, props.data);\n this.syncAutoFill(props.value);\n }\n }\n\n componentWillUnmount() {\n this.props.removeHook?.(this.reload, 'init');\n this.reaction?.();\n }\n\n syncAutoFill(value: any) {\n const {autoFill, multiple, onBulkChange} = this.props;\n const formItem = this.props.formItem as IFormItemStore;\n\n if (autoFill && !isEmpty(autoFill) && formItem.filteredOptions.length) {\n const selectedOptions = formItem.getSelectedOptions(value);\n const toSync = dataMapping(\n autoFill,\n multiple\n ? {\n items: selectedOptions.map(item =>\n createObject(\n {\n ancestors: getTreeAncestors(\n formItem.filteredOptions,\n item,\n true\n )\n },\n item\n )\n )\n }\n : createObject(\n {\n ancestors: getTreeAncestors(\n formItem.filteredOptions,\n selectedOptions[0],\n true\n )\n },\n selectedOptions[0]\n )\n );\n onBulkChange?.(toSync);\n }\n }\n\n // 当前值,跟设置预期的值格式不一致时自动转换。\n normalizeValue() {\n const {\n joinValues,\n extractValue,\n value,\n multiple,\n formItem,\n valueField,\n enableNodePath,\n pathSeparator,\n onChange\n } = this.props;\n\n if (!formItem || joinValues !== false || !formItem.options.length) {\n return;\n }\n\n if (\n extractValue === false &&\n (typeof value === 'string' || typeof value === 'number')\n ) {\n const selectedOptions = formItem.getSelectedOptions(value);\n onChange?.(multiple ? selectedOptions.concat() : selectedOptions[0]);\n } else if (\n extractValue === true &&\n value &&\n !(\n (Array.isArray(value) &&\n value.every(\n val => typeof val === 'string' || typeof val === 'number'\n )) ||\n typeof value === 'string' ||\n typeof value === 'number'\n )\n ) {\n const selectedOptions = formItem\n .getSelectedOptions(value)\n .map(\n (selectedOption: Option) => selectedOption[valueField || 'value']\n );\n onChange?.(multiple ? selectedOptions.concat() : selectedOptions[0]);\n }\n }\n\n getWrappedInstance() {\n return this.input;\n }\n\n @autobind\n inputRef(ref: any) {\n this.input = ref;\n }\n\n @autobind\n handleToggle(\n option: Option,\n submitOnChange?: boolean,\n changeImmediately?: boolean\n ) {\n const {onChange, formItem, value} = this.props;\n\n if (!formItem) {\n return;\n }\n\n let newValue: string | Array<Option> | Option = this.toggleValue(\n option,\n value\n );\n\n onChange && onChange(newValue, submitOnChange, changeImmediately);\n }\n\n /**\n * 初始化时处理默认全选逻辑\n */\n defaultCheckAll() {\n const {value, formItem, setPrinstineValue} = this.props;\n // 如果有默认值\\回填值直接返回\n if (!formItem || formItem.getSelectedOptions(value).length) {\n return;\n }\n let valueArray = formItem.filteredOptions.concat();\n const newValue = this.formatValueArray(valueArray);\n setPrinstineValue?.(newValue);\n }\n\n /**\n * 选中的值经过joinValues和delimiter等规则处理输出规定格式的值\n * @param valueArray 选中值的数组\n * @returns 通过joinValues和delimiter等规则输出规定格式的值\n */\n formatValueArray(valueArray: Array<Option>) {\n const {\n joinValues,\n extractValue,\n valueField,\n delimiter,\n resetValue,\n multiple\n } = this.props;\n let newValue: string | Array<Option> | Option = '';\n if (multiple) {\n newValue = valueArray;\n\n if (joinValues) {\n newValue = (newValue as Array<any>)\n .map(item => item[valueField || 'value'])\n .join(delimiter);\n } else if (extractValue) {\n newValue = (newValue as Array<any>).map(\n item => item[valueField || 'value']\n );\n }\n } else {\n newValue = valueArray[0] || resetValue;\n\n if (joinValues && newValue) {\n newValue = (newValue as any)[valueField || 'value'];\n }\n }\n return newValue;\n }\n\n @autobind\n handleToggleAll() {\n const {value, onChange, formItem} = this.props;\n\n if (!formItem) {\n return;\n }\n const selectedOptions = formItem.getSelectedOptions(value);\n let valueArray =\n selectedOptions.length === formItem.filteredOptions.length\n ? []\n : formItem.filteredOptions.concat();\n const newValue = this.formatValueArray(valueArray);\n onChange && onChange(newValue);\n }\n\n toggleValue(option: Option, originValue?: any) {\n const {\n joinValues,\n extractValue,\n valueField,\n delimiter,\n clearable,\n resetValue,\n multiple,\n formItem\n } = this.props;\n\n let valueArray =\n originValue !== undefined\n ? formItem!.getSelectedOptions(originValue).concat()\n : [];\n\n const idx = findIndex(\n valueArray,\n optionValueCompare(option[valueField || 'value'], valueField || 'value')\n );\n let newValue: string | Array<Option> | Option = '';\n\n if (multiple) {\n if (~idx) {\n valueArray.splice(idx, 1);\n } else {\n valueArray.push(option);\n }\n\n newValue = valueArray;\n\n if (joinValues) {\n newValue = (newValue as Array<any>)\n .map(item => item[valueField || 'value'])\n .join(delimiter);\n } else if (extractValue) {\n newValue = (newValue as Array<any>).map(\n item => item[valueField || 'value']\n );\n }\n } else {\n if (~idx && clearable) {\n valueArray.splice(idx, 1);\n } else {\n valueArray = [option];\n }\n\n newValue = valueArray[0] || resetValue;\n\n if ((joinValues || extractValue) && newValue) {\n newValue = (newValue as any)[valueField || 'value'];\n }\n }\n\n return newValue;\n }\n\n // 当有 action 触发,如果指定了 reload 目标组件,有可能会来到这里面来\n @autobind\n reload() {\n return this.reloadOptions();\n }\n\n @autobind\n reloadOptions(setError?: boolean, isInit = false) {\n const {source, formItem, data, onChange, setPrinstineValue, selectFirst} =\n this.props;\n\n if (formItem && isPureVariable(source as string)) {\n isAlive(formItem) &&\n formItem.setOptions(\n normalizeOptions(\n resolveVariableAndFilter(source as string, data, '| raw') || []\n ),\n this.changeOptionValue,\n data\n );\n return;\n } else if (!formItem || !isEffectiveApi(source, data)) {\n return;\n }\n\n return formItem.loadOptions(\n source,\n data,\n undefined,\n false,\n isInit ? setPrinstineValue : onChange,\n setError\n );\n }\n\n @autobind\n deferLoad(option: Option) {\n const {deferApi, source, env, formItem, data} = this.props;\n const api = option.deferApi || deferApi || source;\n\n if (!api) {\n env.notify(\n 'error',\n '请在选项中设置 `deferApi` 或者表单项中设置 `deferApi`,用来加载子选项。'\n );\n return;\n }\n\n formItem?.deferLoadOptions(option, api, createObject(data, option));\n }\n\n @autobind\n expandTreeOptions(nodePathArr: any[]) {\n const {deferApi, source, env, formItem, data} = this.props;\n const api = deferApi || source;\n\n if (!api) {\n env.notify(\n 'error',\n '请在选项中设置 `deferApi` 或者表单项中设置 `deferApi`,用来加载子选项。'\n );\n return;\n }\n\n formItem?.expandTreeOptions(nodePathArr, api, createObject(data));\n }\n\n @autobind\n async initOptions(data: any) {\n await this.reloadOptions(false, true);\n const {formItem, name, multiple, defaultCheckAll} = this.props;\n if (!formItem) {\n return;\n }\n if (isAlive(formItem) && formItem.value) {\n setVariable(data, name!, formItem.value);\n }\n\n // 默认全选\n if (multiple && defaultCheckAll && formItem.filteredOptions?.length) {\n this.defaultCheckAll();\n }\n }\n\n focus() {\n this.input && this.input.focus && this.input.focus();\n }\n\n @autobind\n changeOptionValue(value: any) {\n const {\n onChange,\n formInited,\n setPrinstineValue,\n value: originValue\n } = this.props;\n\n if (formInited === false) {\n originValue === undefined && setPrinstineValue?.(value);\n } else {\n onChange?.(value);\n }\n }\n\n @autobind\n setOptions(options: Array<any>, skipNormalize = false) {\n const formItem = this.props.formItem as IFormItemStore;\n formItem &&\n formItem.setOptions(\n skipNormalize ? options : normalizeOptions(options || []),\n this.changeOptionValue,\n this.props.data\n );\n }\n\n @autobind\n syncOptions() {\n const formItem = this.props.formItem as IFormItemStore;\n formItem && formItem.syncOptions(undefined, this.props.data);\n }\n\n @autobind\n setLoading(value: boolean) {\n const formItem = this.props.formItem as IFormItemStore;\n formItem && formItem.setLoading(value);\n }\n\n @autobind\n async handleOptionAdd(\n idx: number | Array<number> = -1,\n value?: any,\n skipForm: boolean = false\n ) {\n let {\n addControls,\n disabled,\n labelField,\n onOpenDialog,\n optionLabel,\n addApi,\n source,\n data,\n valueField,\n formItem: model,\n createBtnLabel,\n env,\n translate: __\n } = this.props;\n\n // 禁用或者没有配置 name\n if (disabled || !model) {\n return;\n }\n\n // 用户没有配置表单项,则自动创建一个 label 输入\n if (!skipForm && (!Array.isArray(addControls) || !addControls.length)) {\n addControls = [\n {\n type: 'text',\n name: labelField || 'label',\n label: false,\n placeholder: __('Options.addPlaceholder')\n }\n ];\n }\n const parent = Array.isArray(idx)\n ? getTree(model.options, idx.slice(0, -1))\n : undefined;\n\n const ctx: any = createObject(\n data,\n Array.isArray(idx)\n ? {\n parent: parent,\n ...value\n }\n : value\n );\n\n let result: any = skipForm\n ? ctx\n : await onOpenDialog(\n {\n type: 'dialog',\n title: createBtnLabel || `新增${optionLabel || '选项'}`,\n body: {\n type: 'form',\n api: addApi,\n controls: addControls\n }\n },\n ctx\n );\n\n // 单独发请求\n if (skipForm && addApi) {\n try {\n const payload = await env.fetcher(addApi!, result, {\n method: 'post'\n });\n\n if (!payload.ok) {\n env.notify('error', payload.msg || __('Options.createFailed'));\n result = null;\n } else {\n result = payload.data || result;\n }\n } catch (e) {\n result = null;\n console.error(e);\n env.notify('error', e.message);\n }\n }\n\n // 有 result 说明弹框点了确认。否则就是取消了。\n if (!result) {\n return;\n }\n\n // 没走服务端的。\n if (!result.hasOwnProperty(valueField || 'value')) {\n result = {\n ...result,\n [valueField || 'value']: result[labelField || 'label']\n };\n }\n\n // 如果是懒加载的,只懒加载当前节点。\n if (parent?.defer) {\n this.deferLoad(parent);\n } else if (source && addApi) {\n // 如果配置了 source 且配置了 addApi 直接重新拉取接口就够了\n // 不能不判断 addApi 就刷新,因为有些场景就是临时添加的。\n this.reload();\n } else {\n // 否则直接前端变更 options\n let options = model.options.concat();\n if (Array.isArray(idx)) {\n options = spliceTree(options, idx, 0, {...result});\n } else {\n ~idx\n ? options.splice(idx, 0, {...result})\n : options.push({...result});\n }\n model.setOptions(options, this.changeOptionValue, data);\n }\n }\n\n @autobind\n async handleOptionEdit(\n value: any,\n origin: any = value,\n skipForm: boolean = false\n ) {\n let {\n editControls,\n disabled,\n labelField,\n onOpenDialog,\n editApi,\n env,\n source,\n data,\n formItem: model,\n optionLabel,\n translate: __\n } = this.props;\n\n if (disabled || !model) {\n return;\n }\n\n if (!skipForm && (!Array.isArray(editControls) || !editControls.length)) {\n editControls = [\n {\n type: 'text',\n name: labelField || 'label',\n label: false,\n placeholder: __('Options.addPlaceholder')\n }\n ];\n }\n\n let result = skipForm\n ? value\n : await onOpenDialog(\n {\n type: 'dialog',\n title: __('Options.editLabel', {\n label: optionLabel || __('Options.label')\n }),\n body: {\n type: 'form',\n api: editApi,\n controls: editControls\n }\n },\n createObject(data, value)\n );\n\n // 单独发请求\n if (skipForm && editApi) {\n try {\n const payload = await env.fetcher(\n editApi!,\n createObject(data, result),\n {\n method: 'post'\n }\n );\n\n if (!payload.ok) {\n env.notify('error', payload.msg || __('saveFailed'));\n result = null;\n } else {\n result = payload.data || result;\n }\n } catch (e) {\n result = null;\n console.error(e);\n env.notify('error', e.message);\n }\n }\n\n // 没有结果,说明取消了。\n if (!result) {\n return;\n }\n\n if (source && editApi) {\n this.reload();\n } else {\n const indexes = findTreeIndex(model.options, item => item === origin);\n\n if (indexes) {\n model.setOptions(\n spliceTree(model.options, indexes, 1, {\n ...origin,\n ...result\n }),\n this.changeOptionValue,\n data\n );\n }\n }\n }\n\n @autobind\n async handleOptionDelete(value: any) {\n let {\n deleteConfirmText,\n disabled,\n data,\n deleteApi,\n env,\n formItem: model,\n source,\n valueField,\n translate: __\n } = this.props;\n\n if (disabled || !model) {\n return;\n }\n\n const ctx = createObject(data, value);\n\n // 如果配置了 deleteConfirmText 让用户先确认。\n const confirmed = deleteConfirmText\n ? await env.confirm(filter(deleteConfirmText, ctx))\n : true;\n if (!confirmed) {\n return;\n }\n\n // 通过 deleteApi 删除。\n try {\n if (!deleteApi) {\n throw new Error(__('Options.deleteAPI'));\n }\n\n const result = await env.fetcher(deleteApi!, ctx, {\n method: 'delete'\n });\n\n if (!result.ok) {\n env.notify('error', result.msg || __('deleteFailed'));\n } else if (source) {\n this.reload();\n } else {\n const options = model.options.concat();\n const indexes = findTreeIndex(\n options,\n item => item[valueField || 'value'] == value[valueField || 'value']\n );\n\n if (indexes) {\n model.setOptions(\n spliceTree(options, indexes, 1),\n this.changeOptionValue,\n data\n );\n }\n }\n } catch (e) {\n console.error(e);\n env.notify('error', e.message);\n }\n }\n\n render() {\n const {\n value,\n formItem,\n addApi,\n editApi,\n deleteApi,\n creatable,\n editable,\n removable,\n enableNodePath,\n pathSeparator,\n delimiter = ',',\n labelField = 'label',\n valueField = 'value'\n } = this.props;\n\n const {nodePathArray, nodeValueArray} = normalizeNodePath(\n value,\n enableNodePath,\n labelField,\n valueField,\n pathSeparator,\n delimiter\n );\n\n return (\n <Control\n {...this.props}\n ref={this.inputRef}\n options={formItem ? formItem.filteredOptions : []}\n onToggle={this.handleToggle}\n onToggleAll={this.handleToggleAll}\n selectedOptions={\n formItem\n ? formItem.getSelectedOptions(\n value,\n enableNodePath ? nodeValueArray : undefined\n )\n : []\n }\n nodePath={nodePathArray}\n loading={formItem ? formItem.loading : false}\n setLoading={this.setLoading}\n setOptions={this.setOptions}\n syncOptions={this.syncOptions}\n reloadOptions={this.reload}\n deferLoad={this.deferLoad}\n expandTreeOptions={this.expandTreeOptions}\n creatable={\n creatable !== false && isEffectiveApi(addApi) ? true : creatable\n }\n editable={editable || (editable !== false && isEffectiveApi(editApi))}\n removable={\n removable || (removable !== false && isEffectiveApi(deleteApi))\n }\n onAdd={this.handleOptionAdd}\n onEdit={this.handleOptionEdit}\n onDelete={this.handleOptionDelete}\n />\n );\n }\n }\n\n return registerFormItem({\n ...(config as FormItemBasicConfig),\n strictMode: false,\n component: FormOptionsItem\n });\n}\n\nexport function OptionsControl(config: OptionsBasicConfig) {\n return function <T extends React.ComponentType<OptionsControlProps>>(\n component: T\n ): T {\n const renderer = registerOptionsControl({\n ...config,\n component: component\n });\n return renderer.component as any;\n };\n}\n\nexport function highlight(\n text: string,\n input?: string,\n hlClassName: string = 'is-matched'\n) {\n if (!input) {\n return text;\n }\n\n text = String(text);\n const reg = new RegExp(input.replace(/[|\\\\{}()[\\]^$+*?.]/g, '\\\\$&'), 'ig');\n if (!reg.test(text)) {\n return text;\n }\n\n const dom: Array<any> = [];\n\n let start = 0;\n let match = null;\n\n reg.lastIndex = 0;\n while ((match = reg.exec(text))) {\n const prev = text.substring(start, match.index);\n prev && dom.push(<span key={dom.length}>{prev}</span>);\n\n match[0] &&\n dom.push(\n <span className={hlClassName} key={dom.length}>\n {match[0]}\n </span>\n );\n start = match.index + match[0].length;\n }\n const rest = text.substring(start);\n rest && dom.push(<span key={dom.length}>{rest}</span>);\n\n // const parts = text.split(reg);\n\n // parts.forEach((text: string, index) => {\n // text && dom.push(<span key={index}>{text}</span>);\n // dom.push(\n // <span className={hlClassName} key={`${index}-hl`}>\n // {input}\n // </span>\n // );\n // });\n\n // dom.pop();\n\n return dom;\n}\n"
|
12
12
|
]
|
13
13
|
}
|
@@ -39,10 +39,25 @@ export interface TreeSelectControlSchema extends FormOptionsControl {
|
|
39
39
|
* 顶级节点是否可以创建子节点
|
40
40
|
*/
|
41
41
|
rootCreatable?: boolean;
|
42
|
+
/**
|
43
|
+
* 是否隐藏选择框中已选中节点的祖先节点的文本信息
|
44
|
+
*/
|
45
|
+
hideNodePathLabel?: boolean;
|
46
|
+
/**
|
47
|
+
* 是否开启节点路径模式
|
48
|
+
*/
|
49
|
+
enableNodePath?: boolean;
|
50
|
+
/**
|
51
|
+
* 开启节点路径模式后,节点路径的分隔符
|
52
|
+
*/
|
53
|
+
pathSeparator?: string;
|
42
54
|
}
|
43
55
|
export interface TreeSelectProps extends OptionsControlProps {
|
44
56
|
placeholder?: any;
|
45
57
|
autoComplete?: Api;
|
58
|
+
hideNodePathLabel?: boolean;
|
59
|
+
enableNodePath?: boolean;
|
60
|
+
pathSeparator?: string;
|
46
61
|
}
|
47
62
|
export interface TreeSelectState {
|
48
63
|
isOpened: boolean;
|
@@ -62,6 +77,9 @@ export default class TreeSelectControl extends React.Component<TreeSelectProps,
|
|
62
77
|
extractValue: boolean;
|
63
78
|
delimiter: string;
|
64
79
|
resetValue: string;
|
80
|
+
hideNodePathLabel: boolean;
|
81
|
+
enableNodePath: boolean;
|
82
|
+
pathSeparator: string;
|
65
83
|
};
|
66
84
|
container: React.RefObject<HTMLDivElement>;
|
67
85
|
input: React.RefObject<any>;
|
@@ -91,7 +109,7 @@ export default class TreeSelectControl extends React.Component<TreeSelectProps,
|
|
91
109
|
reload(): void;
|
92
110
|
handleOutClick(e: React.MouseEvent<any>): void;
|
93
111
|
handleResultChange(value: Array<Option>): void;
|
94
|
-
renderItem(item: Option):
|
112
|
+
renderItem(item: Option): any;
|
95
113
|
renderOuter(): JSX.Element;
|
96
114
|
render(): JSX.Element;
|
97
115
|
}
|
@@ -243,7 +243,10 @@ var TreeSelectControl = /** @class */ (function (_super) {
|
|
243
243
|
onChange(newValue);
|
244
244
|
};
|
245
245
|
TreeSelectControl.prototype.renderItem = function (item) {
|
246
|
-
var _a = this.props, labelField = _a.labelField, options = _a.options;
|
246
|
+
var _a = this.props, labelField = _a.labelField, options = _a.options, hideNodePathLabel = _a.hideNodePathLabel;
|
247
|
+
if (hideNodePathLabel) {
|
248
|
+
return item[labelField || 'label'];
|
249
|
+
}
|
247
250
|
// 将所有祖先节点也展现出来
|
248
251
|
var ancestors = (0, helper_1.getTreeAncestors)(options, item, true);
|
249
252
|
return "" + (ancestors
|
@@ -252,7 +255,7 @@ var TreeSelectControl = /** @class */ (function (_super) {
|
|
252
255
|
};
|
253
256
|
TreeSelectControl.prototype.renderOuter = function () {
|
254
257
|
var _this = this;
|
255
|
-
var _a = this.props, value = _a.value, disabled = _a.disabled, joinValues = _a.joinValues, extractValue = _a.extractValue, delimiter = _a.delimiter, placeholder = _a.placeholder, options = _a.options, multiple = _a.multiple, valueField = _a.valueField, initiallyOpen = _a.initiallyOpen, unfoldedLevel = _a.unfoldedLevel, withChildren = _a.withChildren, rootLabel = _a.rootLabel, cascade = _a.cascade, rootValue = _a.rootValue, showIcon = _a.showIcon, showRadio = _a.showRadio, popOverContainer = _a.popOverContainer, onlyChildren = _a.onlyChildren, ns = _a.classPrefix, optionsPlaceholder = _a.optionsPlaceholder, searchable = _a.searchable, autoComplete = _a.autoComplete, maxLength = _a.maxLength, minLength = _a.minLength, labelField = _a.labelField, __ = _a.translate, deferLoad = _a.deferLoad;
|
258
|
+
var _a = this.props, value = _a.value, enableNodePath = _a.enableNodePath, _b = _a.pathSeparator, pathSeparator = _b === void 0 ? '/' : _b, disabled = _a.disabled, joinValues = _a.joinValues, extractValue = _a.extractValue, delimiter = _a.delimiter, placeholder = _a.placeholder, options = _a.options, multiple = _a.multiple, valueField = _a.valueField, initiallyOpen = _a.initiallyOpen, unfoldedLevel = _a.unfoldedLevel, withChildren = _a.withChildren, rootLabel = _a.rootLabel, cascade = _a.cascade, rootValue = _a.rootValue, showIcon = _a.showIcon, showRadio = _a.showRadio, popOverContainer = _a.popOverContainer, onlyChildren = _a.onlyChildren, ns = _a.classPrefix, optionsPlaceholder = _a.optionsPlaceholder, searchable = _a.searchable, autoComplete = _a.autoComplete, maxLength = _a.maxLength, minLength = _a.minLength, labelField = _a.labelField, nodePath = _a.nodePath, __ = _a.translate, deferLoad = _a.deferLoad, expandTreeOptions = _a.expandTreeOptions;
|
256
259
|
var filtedOptions = !(0, api_1.isEffectiveApi)(autoComplete) && searchable && this.state.inputValue
|
257
260
|
? this.filterOptions(options, this.state.inputValue)
|
258
261
|
: options;
|
@@ -260,7 +263,7 @@ var TreeSelectControl = /** @class */ (function (_super) {
|
|
260
263
|
react_1.default.createElement(PopOver_1.default, { classPrefix: ns, className: ns + "TreeSelect-popover", style: {
|
261
264
|
minWidth: this.target ? this.target.offsetWidth : undefined
|
262
265
|
}, onHide: this.close, overlay: true },
|
263
|
-
react_1.default.createElement(Tree_1.default, { classPrefix: ns, onlyChildren: onlyChildren, labelField: labelField, valueField: valueField, disabled: disabled, onChange: this.handleChange, joinValues: joinValues, extractValue: extractValue, delimiter: delimiter, placeholder: __(optionsPlaceholder), options: filtedOptions, highlightTxt: this.state.inputValue, multiple: multiple, initiallyOpen: initiallyOpen, unfoldedLevel: unfoldedLevel, withChildren: withChildren, rootLabel: __(rootLabel), rootValue: rootValue, showIcon: showIcon, showRadio: showRadio, cascade: cascade, foldedField: "collapsed", hideRoot: true, value: value || '', maxLength: maxLength, minLength: minLength, onDeferLoad: deferLoad }))));
|
266
|
+
react_1.default.createElement(Tree_1.default, { classPrefix: ns, onlyChildren: onlyChildren, labelField: labelField, valueField: valueField, disabled: disabled, onChange: this.handleChange, joinValues: joinValues, extractValue: extractValue, delimiter: delimiter, placeholder: __(optionsPlaceholder), options: filtedOptions, highlightTxt: this.state.inputValue, multiple: multiple, initiallyOpen: initiallyOpen, unfoldedLevel: unfoldedLevel, withChildren: withChildren, rootLabel: __(rootLabel), rootValue: rootValue, showIcon: showIcon, showRadio: showRadio, cascade: cascade, foldedField: "collapsed", hideRoot: true, value: value || '', nodePath: nodePath, enableNodePath: enableNodePath, pathSeparator: pathSeparator, maxLength: maxLength, minLength: minLength, onDeferLoad: deferLoad, onExpandTree: expandTreeOptions }))));
|
264
267
|
};
|
265
268
|
TreeSelectControl.prototype.render = function () {
|
266
269
|
var _a = this.props, className = _a.className, disabled = _a.disabled, inline = _a.inline, loading = _a.loading, multiple = _a.multiple, value = _a.value, clearable = _a.clearable, ns = _a.classPrefix, cx = _a.classnames, searchable = _a.searchable, autoComplete = _a.autoComplete, selectedOptions = _a.selectedOptions, placeholder = _a.placeholder, __ = _a.translate;
|
@@ -292,7 +295,10 @@ var TreeSelectControl = /** @class */ (function (_super) {
|
|
292
295
|
joinValues: true,
|
293
296
|
extractValue: false,
|
294
297
|
delimiter: ',',
|
295
|
-
resetValue: ''
|
298
|
+
resetValue: '',
|
299
|
+
hideNodePathLabel: false,
|
300
|
+
enableNodePath: false,
|
301
|
+
pathSeparator: '/'
|
296
302
|
};
|
297
303
|
(0, tslib_1.__decorate)([
|
298
304
|
helper_1.autobind,
|
@@ -6,8 +6,8 @@
|
|
6
6
|
"/src/renderers/Form/TreeSelect.tsx"
|
7
7
|
],
|
8
8
|
"names": [],
|
9
|
-
"mappings": "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",
|
9
|
+
"mappings": "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",
|
10
10
|
"sourcesContent": [
|
11
|
-
"import React from 'react';\nimport Overlay from '../../components/Overlay';\nimport PopOver from '../../components/PopOver';\n\nimport {\n OptionsControl,\n OptionsControlProps,\n Option,\n FormOptionsControl\n} from './Options';\nimport {Icon} from '../../components/icons';\nimport TreeSelector from '../../components/Tree';\nimport {matchSorter} from 'match-sorter';\nimport debouce from 'lodash/debounce';\nimport find from 'lodash/find';\nimport {Api} from '../../types';\nimport {isEffectiveApi} from '../../utils/api';\nimport Spinner from '../../components/Spinner';\nimport ResultBox from '../../components/ResultBox';\nimport {autobind, getTreeAncestors} from '../../utils/helper';\nimport {findDOMNode} from 'react-dom';\nimport {normalizeOptions} from '../../components/Select';\n\n/**\n * Tree 下拉选择框。\n * 文档:https://baidu.gitee.io/amis/docs/components/form/tree\n */\nexport interface TreeSelectControlSchema extends FormOptionsControl {\n type: 'tree-select';\n\n /**\n * 是否隐藏顶级\n */\n hideRoot?: boolean;\n\n /**\n * 顶级选项的名称\n */\n rootLabel?: string;\n\n /**\n * 顶级选项的值\n */\n rootValue?: any;\n\n /**\n * 显示图标\n */\n showIcon?: boolean;\n\n /**\n * 父子之间是否完全独立。\n */\n cascade?: boolean;\n\n /**\n * 选父级的时候是否把子节点的值也包含在内。\n */\n withChildren?: boolean;\n\n /**\n * 选父级的时候,是否只把子节点的值包含在内\n */\n onlyChildren?: boolean;\n\n /**\n * 顶级节点是否可以创建子节点\n */\n rootCreatable?: boolean;\n}\n\nexport interface TreeSelectProps extends OptionsControlProps {\n placeholder?: any;\n autoComplete?: Api;\n}\n\nexport interface TreeSelectState {\n isOpened: boolean;\n isFocused: boolean;\n inputValue: string;\n}\n\nexport default class TreeSelectControl extends React.Component<\n TreeSelectProps,\n TreeSelectState\n> {\n static defaultProps = {\n placeholder: 'Select.placeholder',\n optionsPlaceholder: 'placeholder.noData',\n multiple: false,\n clearable: true,\n rootLabel: '顶级',\n rootValue: '',\n showIcon: true,\n joinValues: true,\n extractValue: false,\n delimiter: ',',\n resetValue: ''\n };\n\n container: React.RefObject<HTMLDivElement> = React.createRef();\n\n input: React.RefObject<any> = React.createRef();\n\n cache: {\n [propName: string]: any;\n } = {};\n\n target: HTMLElement | null;\n targetRef = (ref: any) =>\n (this.target = ref ? (findDOMNode(ref) as HTMLElement) : null);\n\n constructor(props: TreeSelectProps) {\n super(props);\n\n this.state = {\n inputValue: '',\n isOpened: false,\n isFocused: false\n };\n\n this.open = this.open.bind(this);\n this.close = this.close.bind(this);\n this.handleChange = this.handleChange.bind(this);\n this.clearValue = this.clearValue.bind(this);\n this.handleFocus = this.handleFocus.bind(this);\n this.handleBlur = this.handleBlur.bind(this);\n this.handleKeyPress = this.handleKeyPress.bind(this);\n this.handleInputChange = this.handleInputChange.bind(this);\n this.handleInputKeyDown = this.handleInputKeyDown.bind(this);\n\n this.loadRemote = debouce(this.loadRemote.bind(this), 250, {\n trailing: true,\n leading: false\n });\n }\n\n componentDidMount() {\n this.loadRemote('');\n }\n\n open(fn?: () => void) {\n if (this.props.disabled) {\n return;\n }\n\n this.setState(\n {\n isOpened: true\n },\n fn\n );\n }\n\n close() {\n this.setState(\n {\n isOpened: false,\n inputValue: this.props.multiple ? this.state.inputValue : ''\n },\n () => this.loadRemote(this.state.inputValue)\n );\n }\n\n handleFocus() {\n this.setState({\n isFocused: true\n });\n }\n\n handleBlur() {\n this.setState({\n isFocused: false\n });\n }\n\n handleKeyPress(e: React.KeyboardEvent) {\n if (e.key === ' ') {\n this.handleOutClick(e as any);\n e.preventDefault();\n }\n }\n\n validate(): any {\n const {value, minLength, maxLength, delimiter, translate: __} = this.props;\n\n let curValue = Array.isArray(value)\n ? value\n : (value ? String(value) : '').split(delimiter || ',');\n if (minLength && curValue.length < minLength) {\n return __(\n '已选择数量低于设定的最小个数${minLength},请选择更多的选项。',\n {minLength}\n );\n } else if (maxLength && curValue.length > maxLength) {\n return __(\n '已选择数量超出设定的最大个数{{maxLength}},请取消选择超出的选项。',\n {maxLength}\n );\n }\n }\n\n removeItem(index: number, e?: React.MouseEvent<HTMLElement>) {\n const {\n selectedOptions,\n joinValues,\n extractValue,\n delimiter,\n valueField,\n onChange,\n disabled\n } = this.props;\n\n e && e.stopPropagation();\n\n if (disabled) {\n return;\n }\n\n const items = selectedOptions.concat();\n items.splice(index, 1);\n\n let value: any = items;\n\n if (joinValues) {\n value = items\n .map((item: any) => item[valueField || 'value'])\n .join(delimiter || ',');\n } else if (extractValue) {\n value = items.map((item: any) => item[valueField || 'value']);\n }\n\n onChange(value);\n }\n\n handleChange(value: any) {\n const {onChange, multiple} = this.props;\n\n if (!multiple) {\n this.close();\n }\n\n multiple || !this.state.inputValue\n ? onChange(value)\n : this.setState(\n {\n inputValue: ''\n },\n () => onChange(value)\n );\n }\n\n handleInputChange(value: string) {\n const {autoComplete, data} = this.props;\n\n this.setState(\n {\n inputValue: value\n },\n isEffectiveApi(autoComplete, data)\n ? () => this.loadRemote(this.state.inputValue)\n : undefined\n );\n }\n\n handleInputKeyDown(event: React.KeyboardEvent) {\n const inputValue = this.state.inputValue;\n const {multiple, selectedOptions} = this.props;\n\n if (\n event.key === 'Backspace' &&\n !inputValue &&\n selectedOptions.length &&\n multiple\n ) {\n this.removeItem(selectedOptions.length - 1);\n }\n }\n\n clearValue() {\n const {onChange, resetValue} = this.props;\n\n onChange(typeof resetValue === 'undefined' ? '' : resetValue);\n }\n\n filterOptions(options: Array<Option>, keywords: string): Array<Option> {\n const {labelField, valueField} = this.props;\n\n return options.map(option => {\n option = {\n ...option\n };\n option.visible = !!matchSorter([option], keywords, {\n keys: [labelField || 'label', valueField || 'value']\n }).length;\n\n if (!option.visible && option.children) {\n option.children = this.filterOptions(option.children, keywords);\n const visibleCount = option.children.filter(\n item => item.visible\n ).length;\n option.visible = !!visibleCount;\n }\n\n option.visible && (option.collapsed = false);\n return option;\n });\n }\n\n async loadRemote(input: string) {\n const {autoComplete, env, data, setOptions, setLoading} = this.props;\n\n if (!isEffectiveApi(autoComplete, data)) {\n return;\n } else if (!env || !env.fetcher) {\n throw new Error('fetcher is required');\n }\n\n if (this.cache[input] || ~input.indexOf(\"'\") /*中文没输完 233*/) {\n let options = this.cache[input] || [];\n let combinedOptions = this.mergeOptions(options);\n setOptions(combinedOptions);\n\n return Promise.resolve({\n options: combinedOptions\n });\n }\n\n setLoading(true);\n\n try {\n const ret: any = await env.fetcher(autoComplete, {\n ...data,\n term: input,\n value: input\n });\n\n let options = (ret.data && (ret.data as any).options) || ret.data || [];\n this.cache[input] = options;\n let combinedOptions = this.mergeOptions(options);\n setOptions(combinedOptions);\n\n return {\n options: combinedOptions\n };\n } finally {\n setLoading(false);\n }\n }\n\n mergeOptions(options: Array<object>) {\n const {selectedOptions} = this.props;\n let combinedOptions = normalizeOptions(options).concat();\n\n if (Array.isArray(selectedOptions) && selectedOptions.length) {\n selectedOptions.forEach(option => {\n if (\n !find(combinedOptions, (item: Option) => item.value == option.value)\n ) {\n combinedOptions.push({\n ...option,\n visible: false\n });\n }\n });\n }\n return combinedOptions;\n }\n\n reload() {\n const reload = this.props.reloadOptions;\n reload && reload();\n }\n\n @autobind\n handleOutClick(e: React.MouseEvent<any>) {\n e.defaultPrevented ||\n this.setState({\n isOpened: true\n });\n }\n\n @autobind\n handleResultChange(value: Array<Option>) {\n const {\n joinValues,\n extractValue,\n delimiter,\n valueField,\n onChange,\n multiple\n } = this.props;\n\n let newValue: any = Array.isArray(value) ? value.concat() : [];\n\n if (!multiple && !newValue.length) {\n onChange('');\n return;\n }\n\n if (joinValues || extractValue) {\n newValue = value.map(item => item[valueField || 'value']);\n }\n\n if (joinValues) {\n newValue = newValue.join(delimiter || ',');\n }\n\n onChange(newValue);\n }\n\n @autobind\n renderItem(item: Option) {\n const {labelField, options} = this.props;\n\n // 将所有祖先节点也展现出来\n const ancestors = getTreeAncestors(options, item, true);\n return `${\n ancestors\n ? ancestors.map(item => `${item[labelField || 'label']}`).join(' / ')\n : item[labelField || 'label']\n }`;\n }\n\n renderOuter() {\n const {\n value,\n disabled,\n joinValues,\n extractValue,\n delimiter,\n placeholder,\n options,\n multiple,\n valueField,\n initiallyOpen,\n unfoldedLevel,\n withChildren,\n rootLabel,\n cascade,\n rootValue,\n showIcon,\n showRadio,\n popOverContainer,\n onlyChildren,\n classPrefix: ns,\n optionsPlaceholder,\n searchable,\n autoComplete,\n maxLength,\n minLength,\n labelField,\n translate: __,\n deferLoad\n } = this.props;\n\n let filtedOptions =\n !isEffectiveApi(autoComplete) && searchable && this.state.inputValue\n ? this.filterOptions(options, this.state.inputValue)\n : options;\n\n return (\n <Overlay\n container={popOverContainer || (() => this.container.current)}\n target={() => this.target}\n show\n >\n <PopOver\n classPrefix={ns}\n className={`${ns}TreeSelect-popover`}\n style={{\n minWidth: this.target ? this.target.offsetWidth : undefined\n }}\n onHide={this.close}\n overlay\n >\n <TreeSelector\n classPrefix={ns}\n onlyChildren={onlyChildren}\n labelField={labelField}\n valueField={valueField}\n disabled={disabled}\n onChange={this.handleChange}\n joinValues={joinValues}\n extractValue={extractValue}\n delimiter={delimiter}\n placeholder={__(optionsPlaceholder)}\n options={filtedOptions}\n highlightTxt={this.state.inputValue}\n multiple={multiple}\n initiallyOpen={initiallyOpen}\n unfoldedLevel={unfoldedLevel}\n withChildren={withChildren}\n rootLabel={__(rootLabel)}\n rootValue={rootValue}\n showIcon={showIcon}\n showRadio={showRadio}\n cascade={cascade}\n foldedField=\"collapsed\"\n hideRoot\n value={value || ''}\n maxLength={maxLength}\n minLength={minLength}\n onDeferLoad={deferLoad}\n />\n </PopOver>\n </Overlay>\n );\n }\n\n render() {\n const {\n className,\n disabled,\n inline,\n loading,\n multiple,\n value,\n clearable,\n classPrefix: ns,\n classnames: cx,\n searchable,\n autoComplete,\n selectedOptions,\n placeholder,\n translate: __\n } = this.props;\n\n return (\n <div ref={this.container} className={cx(`TreeSelectControl`, className)}>\n <ResultBox\n disabled={disabled}\n ref={this.targetRef}\n placeholder={__(placeholder || '空')}\n className={cx(`TreeSelect`, {\n 'TreeSelect--inline': inline,\n 'TreeSelect--single': !multiple,\n 'TreeSelect--multi': multiple,\n 'TreeSelect--searchable':\n searchable || isEffectiveApi(autoComplete),\n 'is-opened': this.state.isOpened,\n 'is-focused': this.state.isFocused,\n 'is-disabled': disabled\n })}\n result={\n multiple\n ? selectedOptions\n : selectedOptions.length\n ? this.renderItem(selectedOptions[0])\n : ''\n }\n onResultClick={this.handleOutClick}\n value={this.state.inputValue}\n onChange={this.handleInputChange}\n onResultChange={this.handleResultChange}\n itemRender={this.renderItem}\n onKeyPress={this.handleKeyPress}\n onFocus={this.handleFocus}\n onBlur={this.handleBlur}\n onKeyDown={this.handleInputKeyDown}\n clearable={clearable}\n allowInput={searchable || isEffectiveApi(autoComplete)}\n inputPlaceholder={''}\n >\n {loading ? <Spinner size=\"sm\" /> : undefined}\n </ResultBox>\n {this.state.isOpened ? this.renderOuter() : null}\n </div>\n );\n }\n}\n\n@OptionsControl({\n type: 'tree-select'\n})\nexport class TreeSelectControlRenderer extends TreeSelectControl {}\n"
|
11
|
+
"import React from 'react';\nimport Overlay from '../../components/Overlay';\nimport PopOver from '../../components/PopOver';\n\nimport {\n OptionsControl,\n OptionsControlProps,\n Option,\n FormOptionsControl\n} from './Options';\nimport {Icon} from '../../components/icons';\nimport TreeSelector from '../../components/Tree';\nimport {matchSorter} from 'match-sorter';\nimport debouce from 'lodash/debounce';\nimport find from 'lodash/find';\nimport {Api} from '../../types';\nimport {isEffectiveApi} from '../../utils/api';\nimport Spinner from '../../components/Spinner';\nimport ResultBox from '../../components/ResultBox';\nimport {autobind, getTreeAncestors} from '../../utils/helper';\nimport {findDOMNode} from 'react-dom';\nimport {normalizeOptions} from '../../components/Select';\n\n/**\n * Tree 下拉选择框。\n * 文档:https://baidu.gitee.io/amis/docs/components/form/tree\n */\nexport interface TreeSelectControlSchema extends FormOptionsControl {\n type: 'tree-select';\n\n /**\n * 是否隐藏顶级\n */\n hideRoot?: boolean;\n\n /**\n * 顶级选项的名称\n */\n rootLabel?: string;\n\n /**\n * 顶级选项的值\n */\n rootValue?: any;\n\n /**\n * 显示图标\n */\n showIcon?: boolean;\n\n /**\n * 父子之间是否完全独立。\n */\n cascade?: boolean;\n\n /**\n * 选父级的时候是否把子节点的值也包含在内。\n */\n withChildren?: boolean;\n\n /**\n * 选父级的时候,是否只把子节点的值包含在内\n */\n onlyChildren?: boolean;\n\n /**\n * 顶级节点是否可以创建子节点\n */\n rootCreatable?: boolean;\n\n /**\n * 是否隐藏选择框中已选中节点的祖先节点的文本信息\n */\n hideNodePathLabel?: boolean;\n\n /**\n * 是否开启节点路径模式\n */\n enableNodePath?: boolean;\n\n /**\n * 开启节点路径模式后,节点路径的分隔符\n */\n pathSeparator?: string;\n}\n\nexport interface TreeSelectProps extends OptionsControlProps {\n placeholder?: any;\n autoComplete?: Api;\n hideNodePathLabel?: boolean;\n enableNodePath?: boolean;\n pathSeparator?: string;\n}\n\nexport interface TreeSelectState {\n isOpened: boolean;\n isFocused: boolean;\n inputValue: string;\n}\n\nexport default class TreeSelectControl extends React.Component<\n TreeSelectProps,\n TreeSelectState\n> {\n static defaultProps = {\n placeholder: 'Select.placeholder',\n optionsPlaceholder: 'placeholder.noData',\n multiple: false,\n clearable: true,\n rootLabel: '顶级',\n rootValue: '',\n showIcon: true,\n joinValues: true,\n extractValue: false,\n delimiter: ',',\n resetValue: '',\n hideNodePathLabel: false,\n enableNodePath: false,\n pathSeparator: '/'\n };\n\n container: React.RefObject<HTMLDivElement> = React.createRef();\n\n input: React.RefObject<any> = React.createRef();\n\n cache: {\n [propName: string]: any;\n } = {};\n\n target: HTMLElement | null;\n targetRef = (ref: any) =>\n (this.target = ref ? (findDOMNode(ref) as HTMLElement) : null);\n\n constructor(props: TreeSelectProps) {\n super(props);\n\n this.state = {\n inputValue: '',\n isOpened: false,\n isFocused: false\n };\n\n this.open = this.open.bind(this);\n this.close = this.close.bind(this);\n this.handleChange = this.handleChange.bind(this);\n this.clearValue = this.clearValue.bind(this);\n this.handleFocus = this.handleFocus.bind(this);\n this.handleBlur = this.handleBlur.bind(this);\n this.handleKeyPress = this.handleKeyPress.bind(this);\n this.handleInputChange = this.handleInputChange.bind(this);\n this.handleInputKeyDown = this.handleInputKeyDown.bind(this);\n\n this.loadRemote = debouce(this.loadRemote.bind(this), 250, {\n trailing: true,\n leading: false\n });\n }\n\n componentDidMount() {\n this.loadRemote('');\n }\n\n open(fn?: () => void) {\n if (this.props.disabled) {\n return;\n }\n\n this.setState(\n {\n isOpened: true\n },\n fn\n );\n }\n\n close() {\n this.setState(\n {\n isOpened: false,\n inputValue: this.props.multiple ? this.state.inputValue : ''\n },\n () => this.loadRemote(this.state.inputValue)\n );\n }\n\n handleFocus() {\n this.setState({\n isFocused: true\n });\n }\n\n handleBlur() {\n this.setState({\n isFocused: false\n });\n }\n\n handleKeyPress(e: React.KeyboardEvent) {\n if (e.key === ' ') {\n this.handleOutClick(e as any);\n e.preventDefault();\n }\n }\n\n validate(): any {\n const {value, minLength, maxLength, delimiter, translate: __} = this.props;\n\n let curValue = Array.isArray(value)\n ? value\n : (value ? String(value) : '').split(delimiter || ',');\n if (minLength && curValue.length < minLength) {\n return __(\n '已选择数量低于设定的最小个数${minLength},请选择更多的选项。',\n {minLength}\n );\n } else if (maxLength && curValue.length > maxLength) {\n return __(\n '已选择数量超出设定的最大个数{{maxLength}},请取消选择超出的选项。',\n {maxLength}\n );\n }\n }\n\n removeItem(index: number, e?: React.MouseEvent<HTMLElement>) {\n const {\n selectedOptions,\n joinValues,\n extractValue,\n delimiter,\n valueField,\n onChange,\n disabled\n } = this.props;\n\n e && e.stopPropagation();\n\n if (disabled) {\n return;\n }\n\n const items = selectedOptions.concat();\n items.splice(index, 1);\n\n let value: any = items;\n\n if (joinValues) {\n value = items\n .map((item: any) => item[valueField || 'value'])\n .join(delimiter || ',');\n } else if (extractValue) {\n value = items.map((item: any) => item[valueField || 'value']);\n }\n\n onChange(value);\n }\n\n handleChange(value: any) {\n const {onChange, multiple} = this.props;\n\n if (!multiple) {\n this.close();\n }\n\n multiple || !this.state.inputValue\n ? onChange(value)\n : this.setState(\n {\n inputValue: ''\n },\n () => onChange(value)\n );\n }\n\n handleInputChange(value: string) {\n const {autoComplete, data} = this.props;\n\n this.setState(\n {\n inputValue: value\n },\n isEffectiveApi(autoComplete, data)\n ? () => this.loadRemote(this.state.inputValue)\n : undefined\n );\n }\n\n handleInputKeyDown(event: React.KeyboardEvent) {\n const inputValue = this.state.inputValue;\n const {multiple, selectedOptions} = this.props;\n\n if (\n event.key === 'Backspace' &&\n !inputValue &&\n selectedOptions.length &&\n multiple\n ) {\n this.removeItem(selectedOptions.length - 1);\n }\n }\n\n clearValue() {\n const {onChange, resetValue} = this.props;\n\n onChange(typeof resetValue === 'undefined' ? '' : resetValue);\n }\n\n filterOptions(options: Array<Option>, keywords: string): Array<Option> {\n const {labelField, valueField} = this.props;\n\n return options.map(option => {\n option = {\n ...option\n };\n option.visible = !!matchSorter([option], keywords, {\n keys: [labelField || 'label', valueField || 'value']\n }).length;\n\n if (!option.visible && option.children) {\n option.children = this.filterOptions(option.children, keywords);\n const visibleCount = option.children.filter(\n item => item.visible\n ).length;\n option.visible = !!visibleCount;\n }\n\n option.visible && (option.collapsed = false);\n return option;\n });\n }\n\n async loadRemote(input: string) {\n const {autoComplete, env, data, setOptions, setLoading} = this.props;\n\n if (!isEffectiveApi(autoComplete, data)) {\n return;\n } else if (!env || !env.fetcher) {\n throw new Error('fetcher is required');\n }\n\n if (this.cache[input] || ~input.indexOf(\"'\") /*中文没输完 233*/) {\n let options = this.cache[input] || [];\n let combinedOptions = this.mergeOptions(options);\n setOptions(combinedOptions);\n\n return Promise.resolve({\n options: combinedOptions\n });\n }\n\n setLoading(true);\n\n try {\n const ret: any = await env.fetcher(autoComplete, {\n ...data,\n term: input,\n value: input\n });\n\n let options = (ret.data && (ret.data as any).options) || ret.data || [];\n this.cache[input] = options;\n let combinedOptions = this.mergeOptions(options);\n setOptions(combinedOptions);\n\n return {\n options: combinedOptions\n };\n } finally {\n setLoading(false);\n }\n }\n\n mergeOptions(options: Array<object>) {\n const {selectedOptions} = this.props;\n let combinedOptions = normalizeOptions(options).concat();\n\n if (Array.isArray(selectedOptions) && selectedOptions.length) {\n selectedOptions.forEach(option => {\n if (\n !find(combinedOptions, (item: Option) => item.value == option.value)\n ) {\n combinedOptions.push({\n ...option,\n visible: false\n });\n }\n });\n }\n return combinedOptions;\n }\n\n reload() {\n const reload = this.props.reloadOptions;\n reload && reload();\n }\n\n @autobind\n handleOutClick(e: React.MouseEvent<any>) {\n e.defaultPrevented ||\n this.setState({\n isOpened: true\n });\n }\n\n @autobind\n handleResultChange(value: Array<Option>) {\n const {\n joinValues,\n extractValue,\n delimiter,\n valueField,\n onChange,\n multiple\n } = this.props;\n\n let newValue: any = Array.isArray(value) ? value.concat() : [];\n\n if (!multiple && !newValue.length) {\n onChange('');\n return;\n }\n\n if (joinValues || extractValue) {\n newValue = value.map(item => item[valueField || 'value']);\n }\n\n if (joinValues) {\n newValue = newValue.join(delimiter || ',');\n }\n\n onChange(newValue);\n }\n\n @autobind\n renderItem(item: Option) {\n const {labelField, options, hideNodePathLabel} = this.props;\n\n if (hideNodePathLabel) {\n return item[labelField || 'label'];\n }\n\n // 将所有祖先节点也展现出来\n const ancestors = getTreeAncestors(options, item, true);\n return `${\n ancestors\n ? ancestors.map(item => `${item[labelField || 'label']}`).join(' / ')\n : item[labelField || 'label']\n }`;\n }\n\n renderOuter() {\n const {\n value,\n enableNodePath,\n pathSeparator = '/',\n disabled,\n joinValues,\n extractValue,\n delimiter,\n placeholder,\n options,\n multiple,\n valueField,\n initiallyOpen,\n unfoldedLevel,\n withChildren,\n rootLabel,\n cascade,\n rootValue,\n showIcon,\n showRadio,\n popOverContainer,\n onlyChildren,\n classPrefix: ns,\n optionsPlaceholder,\n searchable,\n autoComplete,\n maxLength,\n minLength,\n labelField,\n nodePath,\n translate: __,\n deferLoad,\n expandTreeOptions\n } = this.props;\n\n let filtedOptions =\n !isEffectiveApi(autoComplete) && searchable && this.state.inputValue\n ? this.filterOptions(options, this.state.inputValue)\n : options;\n\n return (\n <Overlay\n container={popOverContainer || (() => this.container.current)}\n target={() => this.target}\n show\n >\n <PopOver\n classPrefix={ns}\n className={`${ns}TreeSelect-popover`}\n style={{\n minWidth: this.target ? this.target.offsetWidth : undefined\n }}\n onHide={this.close}\n overlay\n >\n <TreeSelector\n classPrefix={ns}\n onlyChildren={onlyChildren}\n labelField={labelField}\n valueField={valueField}\n disabled={disabled}\n onChange={this.handleChange}\n joinValues={joinValues}\n extractValue={extractValue}\n delimiter={delimiter}\n placeholder={__(optionsPlaceholder)}\n options={filtedOptions}\n highlightTxt={this.state.inputValue}\n multiple={multiple}\n initiallyOpen={initiallyOpen}\n unfoldedLevel={unfoldedLevel}\n withChildren={withChildren}\n rootLabel={__(rootLabel)}\n rootValue={rootValue}\n showIcon={showIcon}\n showRadio={showRadio}\n cascade={cascade}\n foldedField=\"collapsed\"\n hideRoot\n value={value || ''}\n nodePath={nodePath}\n enableNodePath={enableNodePath}\n pathSeparator={pathSeparator}\n maxLength={maxLength}\n minLength={minLength}\n onDeferLoad={deferLoad}\n onExpandTree={expandTreeOptions}\n />\n </PopOver>\n </Overlay>\n );\n }\n\n render() {\n const {\n className,\n disabled,\n inline,\n loading,\n multiple,\n value,\n clearable,\n classPrefix: ns,\n classnames: cx,\n searchable,\n autoComplete,\n selectedOptions,\n placeholder,\n translate: __\n } = this.props;\n\n return (\n <div ref={this.container} className={cx(`TreeSelectControl`, className)}>\n <ResultBox\n disabled={disabled}\n ref={this.targetRef}\n placeholder={__(placeholder || '空')}\n className={cx(`TreeSelect`, {\n 'TreeSelect--inline': inline,\n 'TreeSelect--single': !multiple,\n 'TreeSelect--multi': multiple,\n 'TreeSelect--searchable':\n searchable || isEffectiveApi(autoComplete),\n 'is-opened': this.state.isOpened,\n 'is-focused': this.state.isFocused,\n 'is-disabled': disabled\n })}\n result={\n multiple\n ? selectedOptions\n : selectedOptions.length\n ? this.renderItem(selectedOptions[0])\n : ''\n }\n onResultClick={this.handleOutClick}\n value={this.state.inputValue}\n onChange={this.handleInputChange}\n onResultChange={this.handleResultChange}\n itemRender={this.renderItem}\n onKeyPress={this.handleKeyPress}\n onFocus={this.handleFocus}\n onBlur={this.handleBlur}\n onKeyDown={this.handleInputKeyDown}\n clearable={clearable}\n allowInput={searchable || isEffectiveApi(autoComplete)}\n inputPlaceholder={''}\n >\n {loading ? <Spinner size=\"sm\" /> : undefined}\n </ResultBox>\n {this.state.isOpened ? this.renderOuter() : null}\n </div>\n );\n }\n}\n\n@OptionsControl({\n type: 'tree-select'\n})\nexport class TreeSelectControlRenderer extends TreeSelectControl {}\n"
|
12
12
|
]
|
13
13
|
}
|
@@ -878,7 +878,7 @@ var Table = /** @class */ (function (_super) {
|
|
878
878
|
}
|
879
879
|
return (react_1.default.createElement(Button_1.default, { classPrefix: ns, onClick: function () {
|
880
880
|
Promise.resolve().then(function () { return new Promise(function(resolve){require(['exceljs'], function(ret) {resolve(tslib_1.__importStar(ret));})}); }).then(function (ExcelJS) { return (0, tslib_1.__awaiter)(_this, void 0, void 0, function () {
|
881
|
-
var rows, tmpStore, filename, res, workbook, worksheet, firstRowLabels, firstRow, rowIndex, _i, rows_1, row, sheetRow, columIndex, cols, _a, cols_1, column, name, value, type, imageData, imageDimensions, imageWidth, imageHeight, imageMaxSize, imageMatch, imageExt, imageId, linkURL, linkURL, map, viewValue, buffer, blob;
|
881
|
+
var rows, tmpStore, filename, res, workbook, worksheet, firstRowLabels, firstRow, rowIndex, _i, rows_1, row, sheetRow, columIndex, cols, _a, cols_1, column, name, value, type, imageData, imageDimensions, imageWidth, imageHeight, imageMaxSize, imageMatch, imageExt, imageId, linkURL, e_1, linkURL, map, viewValue, buffer, blob;
|
882
882
|
var _b, _c;
|
883
883
|
return (0, tslib_1.__generator)(this, function (_d) {
|
884
884
|
switch (_d.label) {
|
@@ -939,7 +939,7 @@ var Table = /** @class */ (function (_super) {
|
|
939
939
|
_i = 0, rows_1 = rows;
|
940
940
|
_d.label = 4;
|
941
941
|
case 4:
|
942
|
-
if (!(_i < rows_1.length)) return [3 /*break*/,
|
942
|
+
if (!(_i < rows_1.length)) return [3 /*break*/, 14];
|
943
943
|
row = rows_1[_i];
|
944
944
|
rowIndex += 1;
|
945
945
|
sheetRow = worksheet.getRow(rowIndex);
|
@@ -948,19 +948,19 @@ var Table = /** @class */ (function (_super) {
|
|
948
948
|
_a = 0, cols_1 = cols;
|
949
949
|
_d.label = 5;
|
950
950
|
case 5:
|
951
|
-
if (!(_a < cols_1.length)) return [3 /*break*/,
|
951
|
+
if (!(_a < cols_1.length)) return [3 /*break*/, 13];
|
952
952
|
column = cols_1[_a];
|
953
953
|
columIndex += 1;
|
954
954
|
name = column.name;
|
955
955
|
value = (0, helper_1.getVariable)(row.data, name);
|
956
956
|
if (typeof value === 'undefined' &&
|
957
957
|
!column.tpl) {
|
958
|
-
return [3 /*break*/,
|
958
|
+
return [3 /*break*/, 12];
|
959
959
|
}
|
960
960
|
// 处理合并单元格
|
961
961
|
if (name in row.rowSpans) {
|
962
962
|
if (row.rowSpans[name] === 0) {
|
963
|
-
return [3 /*break*/,
|
963
|
+
return [3 /*break*/, 12];
|
964
964
|
}
|
965
965
|
else {
|
966
966
|
// start row, start column, end row, end column
|
@@ -968,12 +968,15 @@ var Table = /** @class */ (function (_super) {
|
|
968
968
|
}
|
969
969
|
}
|
970
970
|
type = column.type || 'plain';
|
971
|
-
if (!(type === 'image')) return [3 /*break*/,
|
972
|
-
|
971
|
+
if (!(type === 'image')) return [3 /*break*/, 11];
|
972
|
+
_d.label = 6;
|
973
973
|
case 6:
|
974
|
+
_d.trys.push([6, 9, , 10]);
|
975
|
+
return [4 /*yield*/, (0, image_1.toDataURL)(value)];
|
976
|
+
case 7:
|
974
977
|
imageData = _d.sent();
|
975
978
|
return [4 /*yield*/, (0, image_1.getImageDimensions)(imageData)];
|
976
|
-
case
|
979
|
+
case 8:
|
977
980
|
imageDimensions = _d.sent();
|
978
981
|
imageWidth = imageDimensions.width;
|
979
982
|
imageHeight = imageDimensions.height;
|
@@ -1000,7 +1003,7 @@ var Table = /** @class */ (function (_super) {
|
|
1000
1003
|
imageExt != 'jpeg' &&
|
1001
1004
|
imageExt != 'gif') {
|
1002
1005
|
sheetRow.getCell(columIndex).value = value;
|
1003
|
-
return [3 /*break*/,
|
1006
|
+
return [3 /*break*/, 12];
|
1004
1007
|
}
|
1005
1008
|
imageId = workbook.addImage({
|
1006
1009
|
base64: imageData,
|
@@ -1018,8 +1021,13 @@ var Table = /** @class */ (function (_super) {
|
|
1018
1021
|
tooltip: linkURL
|
1019
1022
|
}
|
1020
1023
|
});
|
1021
|
-
return [3 /*break*/,
|
1022
|
-
case
|
1024
|
+
return [3 /*break*/, 10];
|
1025
|
+
case 9:
|
1026
|
+
e_1 = _d.sent();
|
1027
|
+
console.warn(e_1.stack);
|
1028
|
+
return [3 /*break*/, 10];
|
1029
|
+
case 10: return [3 /*break*/, 12];
|
1030
|
+
case 11:
|
1023
1031
|
if (type == 'link') {
|
1024
1032
|
linkURL = getAbsoluteUrl(value);
|
1025
1033
|
sheetRow.getCell(columIndex).value = {
|
@@ -1051,15 +1059,15 @@ var Table = /** @class */ (function (_super) {
|
|
1051
1059
|
sheetRow.getCell(columIndex).value = value;
|
1052
1060
|
}
|
1053
1061
|
}
|
1054
|
-
_d.label =
|
1055
|
-
case
|
1062
|
+
_d.label = 12;
|
1063
|
+
case 12:
|
1056
1064
|
_a++;
|
1057
1065
|
return [3 /*break*/, 5];
|
1058
|
-
case
|
1066
|
+
case 13:
|
1059
1067
|
_i++;
|
1060
1068
|
return [3 /*break*/, 4];
|
1061
|
-
case
|
1062
|
-
case
|
1069
|
+
case 14: return [4 /*yield*/, workbook.xlsx.writeBuffer()];
|
1070
|
+
case 15:
|
1063
1071
|
buffer = _d.sent();
|
1064
1072
|
if (buffer) {
|
1065
1073
|
blob = new Blob([buffer], {
|