@steroidsjs/bootstrap 2.1.0-beta.2 → 2.1.0-beta.7
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/README.md +7 -0
- package/content/Alert/AlertView.d.ts +3 -0
- package/content/Alert/AlertView.js +33 -0
- package/content/Alert/AlertView.scss +120 -0
- package/content/Avatar/AvatarGroupView.d.ts +0 -1
- package/content/Avatar/AvatarGroupView.js +20 -21
- package/content/Avatar/AvatarGroupView.scss +5 -1
- package/content/Avatar/AvatarView.d.ts +0 -1
- package/content/Avatar/AvatarView.js +14 -47
- package/content/Avatar/AvatarView.scss +93 -34
- package/content/Calendar/CalendarView.d.ts +0 -1
- package/content/Calendar/CalendarView.js +0 -1
- package/content/Calendar/CalendarView.scss +24 -24
- package/content/Calendar/CaptionElement.d.ts +0 -1
- package/content/Calendar/CaptionElement.js +2 -3
- package/content/Calendar/CaptionElement.scss +22 -17
- package/content/Card/CardView.d.ts +0 -1
- package/content/Card/CardView.js +15 -12
- package/content/Card/CardView.scss +138 -26
- package/content/Collapse/CollapseItemView.d.ts +3 -0
- package/content/Collapse/CollapseItemView.js +60 -0
- package/content/Collapse/CollapseItemView.scss +88 -0
- package/content/Collapse/CollapseView.d.ts +3 -0
- package/content/Collapse/CollapseView.js +28 -0
- package/content/Collapse/CollapseView.scss +15 -0
- package/content/Detail/DetailView.d.ts +3 -0
- package/content/Detail/DetailView.js +37 -0
- package/content/Detail/DetailView.scss +66 -0
- package/content/DropDown/DropDownView.scss +1 -2
- package/form/AutoCompleteField/AutoCompleteFieldView.d.ts +1 -0
- package/form/AutoCompleteField/AutoCompleteFieldView.js +1 -0
- package/form/AutoCompleteField/AutoCompleteFieldView.scss +31 -20
- package/form/Button/ButtonView.js +15 -11
- package/form/Button/ButtonView.scss +63 -2
- package/form/CheckboxField/CheckboxFieldView.js +1 -1
- package/form/CheckboxField/CheckboxFieldView.scss +40 -6
- package/form/CheckboxListField/CheckboxListFieldView.js +4 -5
- package/form/CheckboxListField/CheckboxListFieldView.scss +45 -1
- package/form/DateField/DateFieldView.d.ts +0 -1
- package/form/DateField/DateFieldView.js +1 -1
- package/form/DateField/DateFieldView.scss +8 -9
- package/form/DateRangeField/DateRangeFieldView.d.ts +0 -1
- package/form/DateRangeField/DateRangeFieldView.js +0 -1
- package/form/DateRangeField/DateRangeFieldView.scss +8 -9
- package/form/DateTimeField/DateTimeFieldView.js +4 -1
- package/form/DateTimeField/DateTimeFieldView.scss +11 -11
- package/form/DateTimeRangeField/DateTimeRangeFieldView.d.ts +0 -1
- package/form/DateTimeRangeField/DateTimeRangeFieldView.js +0 -1
- package/form/DateTimeRangeField/DateTimeRangeFieldView.scss +10 -10
- package/form/DropDownField/DropDownFieldView.js +1 -1
- package/form/DropDownField/DropDownFieldView.scss +28 -18
- package/form/FileField/FileFieldView.js +1 -1
- package/form/Form/FormView.js +4 -1
- package/form/Form/FormView.scss +16 -2
- package/form/HtmlField/HtmlFieldView.d.ts +4 -0
- package/form/HtmlField/HtmlFieldView.js +37 -0
- package/form/ImageField/ImageFieldModalView.d.ts +4 -0
- package/form/ImageField/ImageFieldModalView.js +55 -0
- package/form/ImageField/ImageFieldModalView.scss +7 -0
- package/form/ImageField/ImageFieldView.d.ts +3 -0
- package/form/ImageField/ImageFieldView.js +43 -0
- package/form/ImageField/ImageFieldView.scss +108 -0
- package/form/InputField/InputFieldView.js +8 -3
- package/form/InputField/InputFieldView.scss +77 -14
- package/form/NumberField/NumberFieldView.js +2 -2
- package/form/NumberField/NumberFieldView.scss +30 -12
- package/form/PasswordField/PasswordFieldView.scss +5 -5
- package/form/RateField/RateFieldView.d.ts +0 -1
- package/form/RateField/RateFieldView.js +0 -1
- package/form/RateField/RateFieldView.scss +5 -5
- package/form/SliderField/SliderFieldView.js +29 -9
- package/form/SliderField/SliderFieldView.scss +39 -20
- package/form/TextField/TextFieldView.scss +3 -2
- package/form/TimeField/TimeFieldView.d.ts +0 -1
- package/form/TimeField/TimeFieldView.js +0 -1
- package/form/TimeField/TimeFieldView.scss +8 -9
- package/form/TimeField/TimePanelView.d.ts +0 -1
- package/form/TimeField/TimePanelView.js +0 -1
- package/form/TimeField/TimePanelView.scss +11 -11
- package/icon/Icon/IconView.d.ts +0 -1
- package/icon/Icon/IconView.js +0 -1
- package/icon/Icon/IconView.scss +6 -6
- package/icon/fontawesome.js +5 -1
- package/index.d.ts +33 -0
- package/index.js +217 -67
- package/index.scss +22 -2
- package/layout/ProgressBar/CircleProgressBarView.d.ts +4 -0
- package/layout/ProgressBar/CircleProgressBarView.js +40 -0
- package/layout/ProgressBar/CircleProgressBarView.scss +150 -0
- package/layout/ProgressBar/LineProgressBarView.d.ts +4 -0
- package/layout/ProgressBar/LineProgressBarView.js +31 -0
- package/layout/ProgressBar/LineProgressBarView.scss +115 -0
- package/layout/Skeleton/SkeletonView.d.ts +3 -0
- package/layout/Skeleton/SkeletonView.js +31 -0
- package/layout/Skeleton/SkeletonView.scss +71 -0
- package/list/List/ListView.js +3 -0
- package/list/Steps/StepItemView.d.ts +3 -0
- package/list/Steps/StepItemView.js +41 -0
- package/list/Steps/StepItemView.scss +144 -0
- package/list/Steps/StepsView.d.ts +3 -0
- package/list/Steps/StepsView.js +28 -0
- package/list/Steps/StepsView.scss +16 -0
- package/modal/Modal/ModalView.js +13 -14
- package/modal/Modal/ModalView.scss +34 -30
- package/nav/Breadcrubms/BreadcrumbsView.js +4 -4
- package/nav/Breadcrubms/BreadcrumbsView.scss +14 -0
- package/nav/Controls/ControlsView.scss +1 -1
- package/nav/Nav/NavButtonView.js +1 -1
- package/nav/Nav/NavIconView.js +1 -1
- package/package.json +4 -3
- package/scss/mixins/button.scss +33 -0
- package/scss/mixins/card.scss +26 -0
- package/scss/mixins/index.scss +2 -0
- package/scss/variables/colors.scss +74 -0
- package/scss/variables/components/alert.scss +9 -0
- package/scss/variables/components/avatar.scss +17 -0
- package/scss/variables/components/button.scss +14 -0
- package/scss/variables/components/calendar.scss +15 -0
- package/scss/variables/components/card.scss +20 -0
- package/scss/variables/components/icon.scss +3 -0
- package/scss/variables/components/input.scss +11 -0
- package/scss/variables/components/ratefield.scss +2 -0
- package/scss/variables/index.scss +9 -0
- package/list/Accordion/AccordionView.scss +0 -10
- package/list/Detail/DetailView.scss +0 -5
|
@@ -15,19 +15,27 @@
|
|
|
15
15
|
padding: 0.375rem 1.75rem 0.375rem 0.75rem;
|
|
16
16
|
min-width: 100px;
|
|
17
17
|
min-height: 38px;
|
|
18
|
-
|
|
18
|
+
overflow: hidden;
|
|
19
|
+
white-space: nowrap;
|
|
20
|
+
text-overflow: ellipsis;
|
|
19
21
|
background-clip: padding-box;
|
|
20
|
-
|
|
22
|
+
|
|
23
|
+
background-color: #fff;
|
|
24
|
+
box-shadow: 0 0 30px rgba(0, 0, 0, 0.1);
|
|
25
|
+
border: 1px solid $border-default;
|
|
21
26
|
border-radius: 0.25rem;
|
|
27
|
+
color: $heading;
|
|
22
28
|
line-height: 1.5;
|
|
23
|
-
color: $input-color;
|
|
24
|
-
white-space: nowrap;
|
|
25
|
-
overflow: hidden;
|
|
26
|
-
text-overflow: ellipsis;
|
|
27
29
|
|
|
28
30
|
display: flex;
|
|
29
31
|
flex-flow: row wrap;
|
|
30
32
|
|
|
33
|
+
|
|
34
|
+
&:focus {
|
|
35
|
+
border: 1px solid $info-dark;
|
|
36
|
+
box-shadow: 0 0 0 4px $info-light;
|
|
37
|
+
}
|
|
38
|
+
|
|
31
39
|
&::after {
|
|
32
40
|
content: '';
|
|
33
41
|
position: absolute;
|
|
@@ -50,6 +58,7 @@
|
|
|
50
58
|
&_no-border {
|
|
51
59
|
padding-left: 0;
|
|
52
60
|
border-color: transparent;
|
|
61
|
+
box-shadow: unset;
|
|
53
62
|
|
|
54
63
|
&#{$root}__selected-items_is-invalid {
|
|
55
64
|
border-color: transparent;
|
|
@@ -57,7 +66,7 @@
|
|
|
57
66
|
}
|
|
58
67
|
|
|
59
68
|
&_is-invalid {
|
|
60
|
-
border-color:
|
|
69
|
+
border-color: red;
|
|
61
70
|
}
|
|
62
71
|
|
|
63
72
|
&_disabled {
|
|
@@ -127,7 +136,7 @@
|
|
|
127
136
|
left: 50%;
|
|
128
137
|
width: 1px;
|
|
129
138
|
height: 10px;
|
|
130
|
-
background-color: $text-muted;
|
|
139
|
+
// background-color: $text-muted;
|
|
131
140
|
content: '';
|
|
132
141
|
}
|
|
133
142
|
|
|
@@ -142,18 +151,18 @@
|
|
|
142
151
|
|
|
143
152
|
&__drop-down {
|
|
144
153
|
position: absolute;
|
|
145
|
-
top: calc(100%);
|
|
154
|
+
top: calc(100% + 8px);
|
|
146
155
|
left: 0;
|
|
147
156
|
padding: 0.375rem 0;
|
|
148
157
|
width: 100%;
|
|
149
|
-
z-index:
|
|
150
|
-
background-color:
|
|
158
|
+
z-index: 100;
|
|
159
|
+
background-color: #fff;
|
|
151
160
|
background-clip: padding-box;
|
|
152
|
-
border:
|
|
153
|
-
border-radius:
|
|
154
|
-
box-shadow:
|
|
161
|
+
border: 1px solid #CCCCCC;
|
|
162
|
+
border-radius: 10px;
|
|
163
|
+
box-shadow: 0 0 30px rgba(0, 0, 0, 0.1);
|
|
155
164
|
line-height: 1.5;
|
|
156
|
-
color:
|
|
165
|
+
color: #152536;
|
|
157
166
|
}
|
|
158
167
|
|
|
159
168
|
&__drop-down-list {
|
|
@@ -179,14 +188,15 @@
|
|
|
179
188
|
cursor: pointer;
|
|
180
189
|
transition: background-color .2s ease;
|
|
181
190
|
background-color: transparent;
|
|
191
|
+
border: unset;
|
|
182
192
|
|
|
183
193
|
&_hover {
|
|
184
194
|
background-color: $dropdown-divider-bg;
|
|
185
195
|
}
|
|
186
196
|
|
|
187
197
|
&_select {
|
|
188
|
-
background-color:
|
|
189
|
-
color:
|
|
198
|
+
background-color: #D8CCF6;
|
|
199
|
+
color: #152536;
|
|
190
200
|
}
|
|
191
201
|
}
|
|
192
202
|
&_size_sm &__drop-down-item {
|
|
@@ -196,6 +206,6 @@
|
|
|
196
206
|
padding: 0.5rem 1rem;
|
|
197
207
|
}
|
|
198
208
|
&__placeholder {
|
|
199
|
-
color:
|
|
209
|
+
color: #fff;
|
|
200
210
|
}
|
|
201
211
|
}
|
|
@@ -45,7 +45,7 @@ function FileFieldView(props) {
|
|
|
45
45
|
React.createElement("div", { className: bem(bem.element('files'), 'clearfix') }, props.items.map(function (item) { return (React.createElement(FileItemView, __assign({ key: item.uid }, item, props.itemProps))); })),
|
|
46
46
|
React.createElement("div", { className: bem.element('button') },
|
|
47
47
|
React.createElement(ButtonComponent, __assign({}, props.buttonProps, { layout: false, label: null }),
|
|
48
|
-
React.createElement(Icon_1["default"], { className: bem.element('button-icon'), name: props.imagesOnly ? 'file-image' : '
|
|
48
|
+
React.createElement(Icon_1["default"], { className: bem.element('button-icon'), name: props.imagesOnly ? 'file-image' : 'upload' }),
|
|
49
49
|
React.createElement("span", { className: bem.element('button-label') }, props.buttonProps.label)))));
|
|
50
50
|
}
|
|
51
51
|
exports["default"] = FileFieldView;
|
package/form/Form/FormView.js
CHANGED
|
@@ -40,7 +40,10 @@ var Field_1 = __importDefault(require("@steroidsjs/core/ui/form/Field"));
|
|
|
40
40
|
var Button_1 = __importDefault(require("@steroidsjs/core/ui/form/Button"));
|
|
41
41
|
function FormView(props) {
|
|
42
42
|
var bem = hooks_1.useBem('FormView');
|
|
43
|
-
return (React.createElement("form", { className: bem(bem.block(
|
|
43
|
+
return (React.createElement("form", { className: bem(bem.block({
|
|
44
|
+
border: props.isBordered,
|
|
45
|
+
inline: props.layout.layout === 'inline'
|
|
46
|
+
}), props.className, props.layout.layout === 'horizontal' && 'form-horizontal'), onSubmit: props.onSubmit, style: props.style },
|
|
44
47
|
props.children,
|
|
45
48
|
(props.fields || []).map(function (field, index) { return (React.createElement(Field_1["default"], __assign({ key: index }, (isString_1["default"](field) ? { attribute: field } : field)))); }),
|
|
46
49
|
props.submitLabel && (React.createElement(Button_1["default"], { type: 'submit', label: props.submitLabel }))));
|
package/form/Form/FormView.scss
CHANGED
|
@@ -1,3 +1,17 @@
|
|
|
1
1
|
.FormView {
|
|
2
|
-
|
|
3
|
-
|
|
2
|
+
&_border {
|
|
3
|
+
padding: 20px;
|
|
4
|
+
border: 1px solid $border-default;
|
|
5
|
+
box-sizing: border-box;
|
|
6
|
+
box-shadow: $shadow-default;
|
|
7
|
+
border-radius: 0.5rem;
|
|
8
|
+
}
|
|
9
|
+
&_inline {
|
|
10
|
+
display: flex;
|
|
11
|
+
grid-gap: 20px;
|
|
12
|
+
align-items: flex-start;
|
|
13
|
+
}
|
|
14
|
+
.form-control {
|
|
15
|
+
display: flex;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { IBemHocOutput } from '@steroidsjs/core/hoc/bem';
|
|
3
|
+
import { IHtmlFieldViewProps } from '@steroidsjs/core/ui/form/HtmlField/HtmlField';
|
|
4
|
+
export default function HtmlFieldView(props: IHtmlFieldViewProps & IBemHocOutput): JSX.Element;
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
5
|
+
}) : (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
o[k2] = m[k];
|
|
8
|
+
}));
|
|
9
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
10
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
11
|
+
}) : function(o, v) {
|
|
12
|
+
o["default"] = v;
|
|
13
|
+
});
|
|
14
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
15
|
+
if (mod && mod.__esModule) return mod;
|
|
16
|
+
var result = {};
|
|
17
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
18
|
+
__setModuleDefault(result, mod);
|
|
19
|
+
return result;
|
|
20
|
+
};
|
|
21
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
22
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
23
|
+
};
|
|
24
|
+
exports.__esModule = true;
|
|
25
|
+
var React = __importStar(require("react"));
|
|
26
|
+
var ckeditor5_react_1 = require("@ckeditor/ckeditor5-react");
|
|
27
|
+
var ckeditor5_build_classic_1 = __importDefault(require("@steroidsjs/ckeditor5/packages/ckeditor5-build-classic"));
|
|
28
|
+
var hooks_1 = require("@steroidsjs/core/hooks");
|
|
29
|
+
function HtmlFieldView(props) {
|
|
30
|
+
var bem = hooks_1.useBem('HtmlFieldView');
|
|
31
|
+
if (process.env.IS_SSR) {
|
|
32
|
+
return null;
|
|
33
|
+
}
|
|
34
|
+
return (React.createElement("div", { className: bem.block() },
|
|
35
|
+
React.createElement(ckeditor5_react_1.CKEditor, { editor: ckeditor5_build_classic_1["default"], disabled: props.disabled, config: props.editorProps, data: !props.input.value ? '' : props.input.value, onChange: props.onChange, onFocus: props.onFocus, onBlur: props.onBlur })));
|
|
36
|
+
}
|
|
37
|
+
exports["default"] = HtmlFieldView;
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __assign = (this && this.__assign) || function () {
|
|
3
|
+
__assign = Object.assign || function(t) {
|
|
4
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5
|
+
s = arguments[i];
|
|
6
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
+
t[p] = s[p];
|
|
8
|
+
}
|
|
9
|
+
return t;
|
|
10
|
+
};
|
|
11
|
+
return __assign.apply(this, arguments);
|
|
12
|
+
};
|
|
13
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
14
|
+
if (k2 === undefined) k2 = k;
|
|
15
|
+
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
16
|
+
}) : (function(o, m, k, k2) {
|
|
17
|
+
if (k2 === undefined) k2 = k;
|
|
18
|
+
o[k2] = m[k];
|
|
19
|
+
}));
|
|
20
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
21
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
22
|
+
}) : function(o, v) {
|
|
23
|
+
o["default"] = v;
|
|
24
|
+
});
|
|
25
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
26
|
+
if (mod && mod.__esModule) return mod;
|
|
27
|
+
var result = {};
|
|
28
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
29
|
+
__setModuleDefault(result, mod);
|
|
30
|
+
return result;
|
|
31
|
+
};
|
|
32
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
33
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
34
|
+
};
|
|
35
|
+
exports.__esModule = true;
|
|
36
|
+
var React = __importStar(require("react"));
|
|
37
|
+
var hooks_1 = require("@steroidsjs/core/hooks");
|
|
38
|
+
var react_1 = require("react");
|
|
39
|
+
var react_image_crop_1 = __importDefault(require("react-image-crop"));
|
|
40
|
+
var Modal_1 = __importDefault(require("@steroidsjs/core/ui/modal/Modal"));
|
|
41
|
+
require("react-image-crop/dist/ReactCrop.css");
|
|
42
|
+
function ImageFieldModalView(props) {
|
|
43
|
+
var bem = hooks_1.useBem('ImageFieldModalView');
|
|
44
|
+
var _a = react_1.useState(props.crop.initialValues), crop = _a[0], setCrop = _a[1];
|
|
45
|
+
return (React.createElement(Modal_1["default"], { className: bem.block(), title: props.title || __('Выберите область изображения'), onClose: props.onClose, controls: [{
|
|
46
|
+
label: __(('Сохранить')),
|
|
47
|
+
onClick: function () {
|
|
48
|
+
props.onClose();
|
|
49
|
+
props.crop.onSubmit(crop, props.image.id);
|
|
50
|
+
}
|
|
51
|
+
}] },
|
|
52
|
+
React.createElement("div", { className: 'mb-3' },
|
|
53
|
+
React.createElement(react_image_crop_1["default"], __assign({}, props.crop.reactImageCropProps, { className: bem.element('crop'), src: props.image.url, crop: crop, onChange: setCrop })))));
|
|
54
|
+
}
|
|
55
|
+
exports["default"] = ImageFieldModalView;
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
5
|
+
}) : (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
o[k2] = m[k];
|
|
8
|
+
}));
|
|
9
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
10
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
11
|
+
}) : function(o, v) {
|
|
12
|
+
o["default"] = v;
|
|
13
|
+
});
|
|
14
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
15
|
+
if (mod && mod.__esModule) return mod;
|
|
16
|
+
var result = {};
|
|
17
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
18
|
+
__setModuleDefault(result, mod);
|
|
19
|
+
return result;
|
|
20
|
+
};
|
|
21
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
22
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
23
|
+
};
|
|
24
|
+
exports.__esModule = true;
|
|
25
|
+
var React = __importStar(require("react"));
|
|
26
|
+
var hooks_1 = require("@steroidsjs/core/hooks");
|
|
27
|
+
var Icon_1 = __importDefault(require("@steroidsjs/core/ui/icon/Icon"));
|
|
28
|
+
function ImageFieldView(props) {
|
|
29
|
+
var bem = hooks_1.useBem("ImageFieldView");
|
|
30
|
+
var item = props.item;
|
|
31
|
+
return (React.createElement("div", { className: bem.block() }, !item || !item.image ? (React.createElement("button", { className: bem.element("button", {
|
|
32
|
+
loading: item ? item.progress : false
|
|
33
|
+
}), onClick: props.onClick },
|
|
34
|
+
!item || !item.progress ? (React.createElement(Icon_1["default"], { className: bem.element("button-icon"), name: 'plus' })) : (React.createElement("div", { className: bem.element("progress-bar") },
|
|
35
|
+
React.createElement("div", { className: bem.element("progress-slider"), style: {
|
|
36
|
+
width: (item ? item.progress.percent : 0) + "%"
|
|
37
|
+
} }))),
|
|
38
|
+
React.createElement("span", { className: bem.element("button-label") }, !item || !item.progress ? props.label : "Uploading..."))) : (React.createElement("div", { className: bem.element("content") },
|
|
39
|
+
React.createElement("img", { className: bem.element("image"), src: item.image.url, width: item.image.width, height: item.image.height, alt: item.title }),
|
|
40
|
+
React.createElement("div", { className: bem.element("image-controls") },
|
|
41
|
+
React.createElement(Icon_1["default"], { className: bem.element("delete-icon"), name: 'trash', onClick: item.onRemove }))))));
|
|
42
|
+
}
|
|
43
|
+
exports["default"] = ImageFieldView;
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
.ImageFieldView {
|
|
2
|
+
$root: &;
|
|
3
|
+
|
|
4
|
+
width: 128px;
|
|
5
|
+
height: 128px;
|
|
6
|
+
|
|
7
|
+
&__button {
|
|
8
|
+
display: flex;
|
|
9
|
+
align-items: center;
|
|
10
|
+
justify-content: center;
|
|
11
|
+
flex-direction: column;
|
|
12
|
+
width: 100%;
|
|
13
|
+
height: 100%;
|
|
14
|
+
background: #ebebeb;
|
|
15
|
+
border: 1px dashed #b0b0b0;
|
|
16
|
+
border-radius: 10px;
|
|
17
|
+
|
|
18
|
+
&_loading {
|
|
19
|
+
pointer-events: none;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
&__button-icon {
|
|
24
|
+
display: flex;
|
|
25
|
+
|
|
26
|
+
svg {
|
|
27
|
+
width: 12px;
|
|
28
|
+
height: 12px;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
path {
|
|
32
|
+
fill: #152536
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
&__button-label {
|
|
37
|
+
margin-top: 18px;
|
|
38
|
+
font-size: 14px;
|
|
39
|
+
line-height: 140%;
|
|
40
|
+
color: #152536;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
&__progress-bar {
|
|
44
|
+
width: 80px;
|
|
45
|
+
height: 4px;
|
|
46
|
+
border-radius: 100px;
|
|
47
|
+
background: #cccccc;
|
|
48
|
+
overflow: hidden;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
&__progress-slider {
|
|
52
|
+
height: 100%;
|
|
53
|
+
background: #651fff;
|
|
54
|
+
transition: width linear 0.1s;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
&__content {
|
|
58
|
+
position: relative;
|
|
59
|
+
border-radius: 10px;
|
|
60
|
+
width: 100%;
|
|
61
|
+
height: 100%;
|
|
62
|
+
border: 1px solid #cccccc;
|
|
63
|
+
padding: 5px;
|
|
64
|
+
|
|
65
|
+
&:hover {
|
|
66
|
+
#{$root}__image-controls {
|
|
67
|
+
opacity: 1;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
&__image-controls {
|
|
73
|
+
position: absolute;
|
|
74
|
+
inset: 5px;
|
|
75
|
+
display: flex;
|
|
76
|
+
align-items: center;
|
|
77
|
+
justify-content: center;
|
|
78
|
+
opacity: 0;
|
|
79
|
+
transition: opacity 0.15s;
|
|
80
|
+
|
|
81
|
+
&:before {
|
|
82
|
+
content: '';
|
|
83
|
+
position: absolute;
|
|
84
|
+
inset: 0;
|
|
85
|
+
opacity: 0.6;
|
|
86
|
+
background: #343a40;
|
|
87
|
+
border-radius: 6px;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
&__image {
|
|
93
|
+
border-radius: 6px;
|
|
94
|
+
display: block;
|
|
95
|
+
width: 100%;
|
|
96
|
+
height: 100%;
|
|
97
|
+
object-fit: cover;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
&__delete-icon {
|
|
101
|
+
position: relative;
|
|
102
|
+
cursor: pointer;
|
|
103
|
+
|
|
104
|
+
path {
|
|
105
|
+
fill: #ffffff;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
}
|
|
@@ -35,16 +35,21 @@ var hooks_1 = require("@steroidsjs/core/hooks");
|
|
|
35
35
|
function InputFieldView(props) {
|
|
36
36
|
var bem = hooks_1.useBem('InputFieldView');
|
|
37
37
|
return (React.createElement("div", { className: bem(bem.block({
|
|
38
|
-
disabled: props.inputProps.disabled
|
|
38
|
+
disabled: props.inputProps.disabled,
|
|
39
|
+
size: props.size
|
|
39
40
|
}), 'form-control', 'form-control-' + props.size, !!props.errors && 'is-invalid', props.className), style: props.style },
|
|
40
41
|
props.addonBefore && (React.createElement("span", { className: bem.element('addon-before') }, props.addonBefore)),
|
|
41
42
|
props.textBefore && (React.createElement("span", { className: bem.element('text-before') }, props.textBefore)),
|
|
42
43
|
props.maskProps
|
|
43
44
|
? (React.createElement("input", __assign({ onBlur: props.onBlur, onFocus: props.onFocus, onMouseDown: props.onMouseDown, className: bem(bem.element('input', {
|
|
44
|
-
size: props.size
|
|
45
|
+
size: props.size,
|
|
46
|
+
disabled: props.inputProps.disabled
|
|
45
47
|
}), !!props.errors && 'is-invalid') }, props.inputProps, { type: props.type, placeholder: props.placeholder, disabled: props.disabled, required: props.required })))
|
|
46
48
|
: (React.createElement("input", __assign({ className: bem(bem.element('input', {
|
|
47
|
-
size: props.size
|
|
49
|
+
size: props.size,
|
|
50
|
+
disabled: props.disabled,
|
|
51
|
+
success: props.success,
|
|
52
|
+
failed: props.failed
|
|
48
53
|
}), !!props.errors && 'is-invalid') }, props.inputProps, { onChange: function (e) { return props.input.onChange(e.target.value); }, type: props.type, placeholder: props.placeholder, disabled: props.disabled, required: props.required }))),
|
|
49
54
|
props.textAfter && (React.createElement("span", { className: bem.element('text-after') }, props.textAfter)),
|
|
50
55
|
props.addonAfter && (React.createElement("span", { className: bem.element('addon-after') }, props.addonAfter))));
|
|
@@ -1,47 +1,110 @@
|
|
|
1
|
-
$addon-padding: 0.6rem;
|
|
2
|
-
$text-padding: 0.4rem;
|
|
3
|
-
|
|
4
1
|
.InputFieldView {
|
|
2
|
+
$root: &;
|
|
3
|
+
|
|
5
4
|
display: flex;
|
|
6
5
|
flex-flow: row nowrap;
|
|
7
6
|
align-items: stretch;
|
|
8
7
|
padding: 0;
|
|
8
|
+
border: $input-border;
|
|
9
|
+
border-radius: $input-border-radius;
|
|
10
|
+
|
|
11
|
+
&_size {
|
|
12
|
+
&_small {
|
|
13
|
+
height: $input-height-sm;
|
|
14
|
+
}
|
|
15
|
+
&_medium {
|
|
16
|
+
height: $input-height-md;
|
|
17
|
+
}
|
|
18
|
+
&_large {
|
|
19
|
+
height: $input-height-lg;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
9
22
|
|
|
10
23
|
&:focus-within{
|
|
11
24
|
outline: 0;
|
|
12
|
-
border-color: $
|
|
13
|
-
box-shadow: 0 0 0
|
|
25
|
+
border-color: $border-action;
|
|
26
|
+
box-shadow: 0 0 0 3px $border-typing, 0 0 0 3px $border-typing;
|
|
14
27
|
}
|
|
28
|
+
|
|
15
29
|
&.is-invalid:focus-within{
|
|
16
|
-
border-color: $
|
|
17
|
-
box-shadow: 0 0 0
|
|
30
|
+
border-color: $border-action;
|
|
31
|
+
box-shadow: 0 0 0 3px $border-typing, 0 0 0 3px $border-typing;
|
|
18
32
|
}
|
|
33
|
+
|
|
19
34
|
&_disabled {
|
|
20
35
|
color: rgba(0, 0, 0, .25);
|
|
21
|
-
background-color:
|
|
36
|
+
background-color: $back-disabled;
|
|
22
37
|
cursor: not-allowed;
|
|
38
|
+
|
|
23
39
|
input {
|
|
24
40
|
cursor: inherit;
|
|
25
41
|
}
|
|
42
|
+
|
|
43
|
+
&#{$root}_input {
|
|
44
|
+
background-color: $back-disabled;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
&_caption {
|
|
49
|
+
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
&_failed {
|
|
53
|
+
background: $back-error;
|
|
54
|
+
&::after {
|
|
55
|
+
content: 'Error message';
|
|
56
|
+
color: $border-error;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
&_success {
|
|
61
|
+
background: $back-success;
|
|
62
|
+
&::after {
|
|
63
|
+
content: 'Success message';
|
|
64
|
+
color: $border-success;
|
|
65
|
+
}
|
|
26
66
|
}
|
|
27
67
|
|
|
28
68
|
&__input {
|
|
29
69
|
flex-grow: 1;
|
|
30
70
|
border: none;
|
|
31
71
|
outline: none;
|
|
32
|
-
background-color:
|
|
33
|
-
|
|
72
|
+
background-color: $white;
|
|
73
|
+
overflow: hidden;
|
|
74
|
+
color: $heading;
|
|
34
75
|
padding: $input-padding-y $input-padding-x;
|
|
76
|
+
border-radius: $input-border-radius;
|
|
77
|
+
|
|
78
|
+
&_disabled {
|
|
79
|
+
color: rgba(0, 0, 0, .25);
|
|
80
|
+
background: $back-disabled;
|
|
81
|
+
cursor: not-allowed;
|
|
82
|
+
|
|
83
|
+
input {
|
|
84
|
+
cursor: inherit;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
&_failed {
|
|
89
|
+
box-sizing: border-box;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
&:active {
|
|
93
|
+
color: $heading;
|
|
94
|
+
}
|
|
95
|
+
&:focus {
|
|
96
|
+
color: $heading;
|
|
97
|
+
}
|
|
35
98
|
}
|
|
36
99
|
|
|
37
100
|
&__addon-before, &__addon-after {
|
|
38
101
|
display: flex;
|
|
39
102
|
align-items: center;
|
|
40
|
-
padding: 0 $addon-padding;
|
|
103
|
+
padding: 0 $input-addon-padding;
|
|
41
104
|
|
|
42
105
|
color: rgba(0, 0, 0, .85);
|
|
43
106
|
text-align: center;
|
|
44
|
-
background-color:
|
|
107
|
+
background-color: $back-disabled;
|
|
45
108
|
}
|
|
46
109
|
|
|
47
110
|
&__addon-before {
|
|
@@ -61,11 +124,11 @@ $text-padding: 0.4rem;
|
|
|
61
124
|
}
|
|
62
125
|
|
|
63
126
|
&__text-before {
|
|
64
|
-
padding-left: $text-padding;
|
|
127
|
+
padding-left: $input-text-padding;
|
|
65
128
|
}
|
|
66
129
|
|
|
67
130
|
&__text-after {
|
|
68
|
-
padding-right: $text-padding;
|
|
131
|
+
padding-right: $input-text-padding;
|
|
69
132
|
}
|
|
70
133
|
|
|
71
134
|
}
|
|
@@ -58,11 +58,11 @@ function NumberFieldView(props) {
|
|
|
58
58
|
disabled: props.inputProps.max && value >= props.inputProps.max
|
|
59
59
|
}), onClick: onStepUp },
|
|
60
60
|
React.createElement("svg", { viewBox: '64 64 896 896', width: '1em', height: '1em' },
|
|
61
|
-
React.createElement("path", { d: '
|
|
61
|
+
React.createElement("path", { d: 'M890.5 755.3L537.9 269.2c-12.8-17.6-39-17.6-51.7 0L133.5 755.3A8 8 0 00140\n 768h75c5.1 0 9.9-2.5 12.9-6.6L512 369.8l284.1\n 391.6c3 4.1 7.8 6.6 12.9 6.6h75c6.5 0 10.3-7.4 6.5-12.7z' }))),
|
|
62
62
|
React.createElement("button", { className: bem.element('arrow', {
|
|
63
63
|
disabled: props.inputProps.min && value <= props.inputProps.min
|
|
64
64
|
}), onClick: onStepDown },
|
|
65
65
|
React.createElement("svg", { viewBox: '64 64 896 896', width: '1em', height: '1em' },
|
|
66
|
-
React.createElement("path", { d: '
|
|
66
|
+
React.createElement("path", { d: 'M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5\n 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39\n 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z' })))))));
|
|
67
67
|
}
|
|
68
68
|
exports["default"] = NumberFieldView;
|