@steroidsjs/core 3.0.0-beta.23 → 3.0.0-beta.24
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/index.d.ts
CHANGED
|
@@ -74,6 +74,12 @@ declare type CustomStyle = React.CSSProperties;
|
|
|
74
74
|
*/
|
|
75
75
|
declare type CustomView = React.ReactNode | React.FunctionComponent;
|
|
76
76
|
|
|
77
|
+
/**
|
|
78
|
+
* Кастомная иконка
|
|
79
|
+
* @example custom-icon
|
|
80
|
+
*/
|
|
81
|
+
declare type CustomIcon = string | React.ReactElement;
|
|
82
|
+
|
|
77
83
|
/**
|
|
78
84
|
* HTTP метод
|
|
79
85
|
*/
|
package/package.json
CHANGED
|
@@ -1,27 +1,66 @@
|
|
|
1
|
-
import * as React from 'react';
|
|
2
1
|
import { IFileHocInput, IFileHocOutput } from '../../../hoc/file';
|
|
3
2
|
import { IFieldWrapperInputProps } from '../Field/fieldWrapper';
|
|
4
|
-
|
|
3
|
+
import { IButtonProps } from '../Button/Button';
|
|
4
|
+
export declare enum FilesLayout {
|
|
5
|
+
list = "list",
|
|
6
|
+
wall = "wall"
|
|
7
|
+
}
|
|
8
|
+
interface IFileFieldCommonProps extends IFileHocInput, IFileHocOutput {
|
|
5
9
|
/**
|
|
6
10
|
* Показать значок удаление файла
|
|
7
11
|
* @example true
|
|
8
12
|
*/
|
|
9
13
|
showRemove?: boolean;
|
|
10
|
-
|
|
11
|
-
|
|
14
|
+
/**
|
|
15
|
+
* Кастомная иконка для удаление файла
|
|
16
|
+
* @example true
|
|
17
|
+
*/
|
|
18
|
+
customRemoveIcon?: string;
|
|
19
|
+
/**
|
|
20
|
+
* Вариант отображения файлов
|
|
21
|
+
* @example 'list'
|
|
22
|
+
*/
|
|
23
|
+
filesLayout?: FilesLayout;
|
|
24
|
+
}
|
|
25
|
+
export interface IFileFieldProps extends IFieldWrapperInputProps, IFileFieldCommonProps {
|
|
26
|
+
/**
|
|
27
|
+
* Дополнительный css класс
|
|
28
|
+
* @example true
|
|
29
|
+
*/
|
|
12
30
|
className?: CssClassName;
|
|
31
|
+
/**
|
|
32
|
+
* View компонент
|
|
33
|
+
* @example true
|
|
34
|
+
*/
|
|
13
35
|
view?: CustomView;
|
|
14
|
-
|
|
15
|
-
|
|
36
|
+
/**
|
|
37
|
+
* View компонент для кнопки
|
|
38
|
+
* @example true
|
|
39
|
+
*/
|
|
40
|
+
buttonView?: any;
|
|
41
|
+
/**
|
|
42
|
+
* Пропсы для кнопки
|
|
43
|
+
* @example true
|
|
44
|
+
*/
|
|
45
|
+
buttonProps?: IButtonProps;
|
|
46
|
+
/**
|
|
47
|
+
* View компонент для элемента списка файлов
|
|
48
|
+
* @example true
|
|
49
|
+
*/
|
|
50
|
+
itemView?: any;
|
|
51
|
+
/**
|
|
52
|
+
* Пропсы для элемента файла
|
|
53
|
+
* @example true
|
|
54
|
+
*/
|
|
55
|
+
itemProps?: Record<string, any>;
|
|
16
56
|
[key: string]: any;
|
|
17
57
|
}
|
|
18
|
-
export interface IFileFieldItemViewProps extends
|
|
58
|
+
export interface IFileFieldItemViewProps extends IFileFieldCommonProps {
|
|
19
59
|
/**
|
|
20
60
|
* Уникальный текстовый идентификатор
|
|
21
61
|
* @example e65f5867-0083-48a7-af43-1121ed9e6280
|
|
22
62
|
*/
|
|
23
63
|
uid?: string;
|
|
24
|
-
imagesOnly?: boolean;
|
|
25
64
|
/**
|
|
26
65
|
* ID файла
|
|
27
66
|
* @example 34
|
|
@@ -33,13 +72,14 @@ export interface IFileFieldItemViewProps extends IFileHocInput, IFileHocOutput {
|
|
|
33
72
|
*/
|
|
34
73
|
title?: string;
|
|
35
74
|
disabled?: boolean;
|
|
36
|
-
showRemove?: boolean;
|
|
37
75
|
/**
|
|
38
76
|
* Обработчик события удаления файла
|
|
39
77
|
* @param e
|
|
40
78
|
*/
|
|
41
79
|
onRemove?: () => void;
|
|
42
80
|
error?: string;
|
|
81
|
+
size?: number;
|
|
82
|
+
item?: Record<string, any>;
|
|
43
83
|
image?: {
|
|
44
84
|
/**
|
|
45
85
|
* Url файла
|
|
@@ -63,28 +103,6 @@ export interface IFileFieldItemViewProps extends IFileHocInput, IFileHocOutput {
|
|
|
63
103
|
};
|
|
64
104
|
}
|
|
65
105
|
export interface IFileFieldViewProps extends IFileFieldProps {
|
|
66
|
-
buttonComponent?: React.ReactNode | any;
|
|
67
|
-
imagesOnly?: boolean;
|
|
68
|
-
itemProps?: any;
|
|
69
|
-
buttonProps: {
|
|
70
|
-
/**
|
|
71
|
-
* Название поля
|
|
72
|
-
* @example Save
|
|
73
|
-
*/
|
|
74
|
-
label?: string | any;
|
|
75
|
-
size?: boolean;
|
|
76
|
-
/**
|
|
77
|
-
* Переводит в неактивное состояние
|
|
78
|
-
* @example true
|
|
79
|
-
*/
|
|
80
|
-
disabled?: boolean;
|
|
81
|
-
/**
|
|
82
|
-
* Обработчик события нажатия
|
|
83
|
-
* @param e
|
|
84
|
-
*/
|
|
85
|
-
onClick?: (e: Event) => void;
|
|
86
|
-
};
|
|
87
|
-
itemView?: React.ReactNode | any;
|
|
88
106
|
items: IFileFieldItemViewProps[];
|
|
89
107
|
}
|
|
90
108
|
declare const _default: import("../Field/fieldWrapper").FieldWrapperComponent<IFileFieldProps>;
|
|
@@ -37,6 +37,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
37
37
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
38
38
|
};
|
|
39
39
|
exports.__esModule = true;
|
|
40
|
+
exports.FilesLayout = void 0;
|
|
40
41
|
var React = __importStar(require("react"));
|
|
41
42
|
var File_1 = __importDefault(require("fileup-core/lib/models/File"));
|
|
42
43
|
var first_1 = __importDefault(require("lodash-es/first"));
|
|
@@ -44,18 +45,19 @@ var values_1 = __importDefault(require("lodash-es/values"));
|
|
|
44
45
|
var useFile_1 = __importDefault(require("../../../hooks/useFile"));
|
|
45
46
|
var hooks_1 = require("../../../hooks");
|
|
46
47
|
var fieldWrapper_1 = __importDefault(require("../Field/fieldWrapper"));
|
|
47
|
-
|
|
48
|
+
var FilesLayout;
|
|
49
|
+
(function (FilesLayout) {
|
|
50
|
+
FilesLayout["list"] = "list";
|
|
51
|
+
FilesLayout["wall"] = "wall";
|
|
52
|
+
})(FilesLayout = exports.FilesLayout || (exports.FilesLayout = {}));
|
|
53
|
+
function FileFieldComponent(props) {
|
|
48
54
|
var components = (0, hooks_1.useComponents)();
|
|
49
55
|
var _a = (0, useFile_1["default"])(props), files = _a.files, onBrowse = _a.onBrowse, onRemove = _a.onRemove;
|
|
50
56
|
var FileFieldView = props.view || components.ui.getView('form.FileFieldView');
|
|
51
57
|
var FileFieldItemView = props.itemView || components.ui.getView('form.FileFieldItemView');
|
|
52
|
-
return (React.createElement(FileFieldView, __assign({}, props, {
|
|
53
|
-
?
|
|
54
|
-
|
|
55
|
-
: __('Прикрепить фото')
|
|
56
|
-
: props.multiple
|
|
57
|
-
? __('Прикрепить файлы')
|
|
58
|
-
: __('Прикрепить файл'), size: props.size, disabled: props.disabled, onClick: onBrowse }, props.buttonProps), itemView: FileFieldItemView, items: files.map(function (file) {
|
|
58
|
+
return (React.createElement(FileFieldView, __assign({}, props, { buttonView: props.buttonView, buttonProps: __assign({ label: props.filesLayout === FilesLayout.wall
|
|
59
|
+
? __('Upload')
|
|
60
|
+
: __('Click to Upload'), size: props.size, disabled: props.disabled, onClick: onBrowse }, props.buttonProps), itemView: FileFieldItemView, items: files.map(function (file) {
|
|
59
61
|
var data = file.getResultHttpMessage() || {};
|
|
60
62
|
var item = {
|
|
61
63
|
uid: file.getUid(),
|
|
@@ -84,7 +86,7 @@ function FileField(props) {
|
|
|
84
86
|
}
|
|
85
87
|
}
|
|
86
88
|
// Add thumbnail image
|
|
87
|
-
if (data.images) {
|
|
89
|
+
if (props.imagesOnly && data.images) {
|
|
88
90
|
// Image object has properties: url, width, height
|
|
89
91
|
item.image = data.images[props.imagesProcessor]
|
|
90
92
|
|| (0, first_1["default"])((0, values_1["default"])(data.images));
|
|
@@ -99,13 +101,20 @@ function FileField(props) {
|
|
|
99
101
|
return item;
|
|
100
102
|
}) })));
|
|
101
103
|
}
|
|
104
|
+
function FileField(props) {
|
|
105
|
+
if (process.env.IS_SSR) {
|
|
106
|
+
return null;
|
|
107
|
+
}
|
|
108
|
+
return (React.createElement(FileFieldComponent, __assign({}, props)));
|
|
109
|
+
}
|
|
102
110
|
FileField.defaultProps = {
|
|
103
111
|
disabled: false,
|
|
104
112
|
required: false,
|
|
113
|
+
filesLayout: FilesLayout.list,
|
|
105
114
|
className: '',
|
|
106
115
|
showRemove: true,
|
|
107
116
|
buttonProps: {
|
|
108
|
-
color: '
|
|
117
|
+
color: 'basic',
|
|
109
118
|
outline: true
|
|
110
119
|
},
|
|
111
120
|
multiple: false
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
-
if (mod && mod.__esModule) return mod;
|
|
20
|
-
var result = {};
|
|
21
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
-
__setModuleDefault(result, mod);
|
|
23
|
-
return result;
|
|
24
|
-
};
|
|
25
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
|
-
};
|
|
28
|
-
exports.__esModule = true;
|
|
29
|
-
var React = __importStar(require("react"));
|
|
30
|
-
var FileField_1 = __importDefault(require("../FileField"));
|
|
31
|
-
/**
|
|
32
|
-
* Обычный пример использования FileField.
|
|
33
|
-
* @order 1
|
|
34
|
-
* @col 6
|
|
35
|
-
*/
|
|
36
|
-
exports["default"] = (function () { return (React.createElement("div", { style: { display: 'grid', gridGap: '10px' } },
|
|
37
|
-
React.createElement(FileField_1["default"], { backendUrl: '/api/v1/file-test' }))); });
|