@steroidsjs/bootstrap 3.0.0-beta.42 → 3.0.0-beta.43

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.
@@ -0,0 +1,3 @@
1
+ .IconView {
2
+ display: inline-flex;
3
+ }
@@ -39,7 +39,7 @@ function ButtonView(props) {
39
39
  : (props.hint || null);
40
40
  return (React.createElement(React.Fragment, null,
41
41
  props.isLoading && (React.createElement(Icon_1["default"], { className: bem.element('loader'), name: 'loader', tabIndex: -1 })),
42
- !props.isLoading && (React.createElement("span", { className: bem.element('label') },
42
+ !props.isLoading && (React.createElement("span", { title: props.hint, className: bem.element(props.link ? 'link' : 'label') },
43
43
  props.icon && (React.createElement(Icon_1["default"], { name: props.icon, title: title, className: bem.element('icon', !props.label && 'without-label') })),
44
44
  props.children))));
45
45
  };
@@ -102,15 +102,6 @@ $btn-letter-spacing: 0.1em;
102
102
  width: auto;
103
103
  height: auto;
104
104
  background-color: transparent;
105
-
106
- #{$root}__label {
107
- display: inline;
108
- color: $link-color;
109
- }
110
-
111
- #{$root}__label:hover {
112
- color: $link-color-hover;
113
- }
114
105
 
115
106
  &:focus-visible, &:focus {
116
107
  border: none;
@@ -121,18 +112,17 @@ $btn-letter-spacing: 0.1em;
121
112
  }
122
113
  }
123
114
 
124
- &__label {
125
- display: flex;
126
- flex-direction: row;
127
- column-gap: 10px;
128
- }
129
-
130
115
  &__icon {
116
+ margin-right: 10px;
131
117
  width: 16px;
132
118
  height: 16px;
133
119
  &_without-label {
134
120
  margin: 0;
135
121
  }
122
+
123
+ svg path {
124
+ transition: stroke 0.15s ease-in-out;
125
+ }
136
126
  }
137
127
 
138
128
  &_failed {
@@ -48,7 +48,6 @@ function CheckboxFieldView(props) {
48
48
  hasErrors: !!props.errors
49
49
  }), props.className), style: props.style, onClick: props.onChange },
50
50
  React.createElement("input", __assign({ className: bem.element('input'), id: props.id || id }, props.inputProps, { checked: props.checked, disabled: props.disabled, required: props.required })),
51
- React.createElement("label", { className: bem.element('label'), htmlFor: props.id || id },
52
- React.createElement("span", { className: bem.element('label-text', { required: props.required }) }, props.label))));
51
+ React.createElement("label", { className: bem.element('label'), htmlFor: props.id || id }, props.label && (React.createElement("span", { className: bem.element('label-text', { required: props.required }) }, props.label)))));
53
52
  }
54
53
  exports["default"] = CheckboxFieldView;
@@ -11,7 +11,7 @@
11
11
  .CheckboxFieldView {
12
12
  $root: &;
13
13
 
14
- display: inline-block;
14
+ display: inline-flex;
15
15
 
16
16
  font-family: $font-family-nunito;
17
17
 
@@ -36,7 +36,6 @@
36
36
 
37
37
  border: 1px solid $gray;
38
38
  border-radius: $radius-small;
39
- margin-right: 8px;
40
39
 
41
40
  background-repeat: no-repeat;
42
41
  background-position: center center;
@@ -62,6 +61,7 @@
62
61
  }
63
62
 
64
63
  &-text {
64
+ margin-left: 8px;
65
65
  color: $text-color;
66
66
  font-size: $font-size-sm;
67
67
  font-weight: $font-weight-md;
@@ -132,7 +132,6 @@
132
132
  width: 24px;
133
133
  height: 24px;
134
134
  border-radius: $radius-small;
135
- margin-right: 12px;
136
135
  }
137
136
  &::after {
138
137
  width: 26px;
@@ -141,6 +140,7 @@
141
140
  }
142
141
 
143
142
  &-text {
143
+ margin-left: 12px;
144
144
  font-size: $font-size-lg;
145
145
  line-height: 24px;
146
146
  }
@@ -163,6 +163,7 @@
163
163
  }
164
164
 
165
165
  &-text {
166
+ margin-left: 8px;
166
167
  font-size: $font-size-base;
167
168
  line-height: 22px;
168
169
  }
@@ -185,6 +186,7 @@
185
186
  }
186
187
 
187
188
  &-text {
189
+ margin-left: 8px;
188
190
  font-size: $font-size-sm;
189
191
  line-height: 18px;
190
192
  }
@@ -1,4 +1,3 @@
1
-
2
1
  :root {
3
2
  --drop-down-item-hover-background-color: #f5f8fa;
4
3
  --drop-down-item-select-background-color: #eef1f2;
@@ -107,26 +106,29 @@ $drop-down-item-hover-background-color: var(--drop-down-item-hover-background-co
107
106
  right: 0;
108
107
  }
109
108
 
110
- .RadioFieldView__label .RadioFieldView__ellipse {
109
+ .RadioFieldView__label .RadioFieldView__ellipse {
111
110
  left: auto;
112
111
  }
113
112
 
114
113
  &_size {
115
114
  &_lg {
116
115
  span {
117
- right: 13.5px;
116
+ right: 0;
117
+ transform: translateX(-115%) translateY(-50%);
118
118
  }
119
119
  }
120
120
 
121
121
  &_md {
122
122
  span {
123
- right: 12.5px;
123
+ right: 0;
124
+ transform: translateX(-130%) translateY(-50%);
124
125
  }
125
126
  }
126
127
 
127
128
  &_sm {
128
129
  span {
129
- right: 11.5px;
130
+ right: 0;
131
+ transform: translateX(-150%) translateY(-50%);
130
132
  }
131
133
  }
132
134
  }
@@ -154,7 +156,7 @@ $drop-down-item-hover-background-color: var(--drop-down-item-hover-background-co
154
156
 
155
157
  border: none;
156
158
  background-color: $element-background-color;
157
-
159
+
158
160
  &:hover {
159
161
  background-color: $drop-down-item-hover-background-color;
160
162
  }
@@ -123,9 +123,7 @@
123
123
  }
124
124
 
125
125
  &__field {
126
- .form-control,
127
- input {
128
- width: 100%;
129
- }
126
+ display: flex;
127
+ flex-direction: column;
130
128
  }
131
129
  }
@@ -28,15 +28,40 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
28
28
  exports.__esModule = true;
29
29
  var React = __importStar(require("react"));
30
30
  var hooks_1 = require("@steroidsjs/core/hooks");
31
+ var FileField_1 = require("@steroidsjs/core/ui/form/FileField/FileField");
31
32
  var Icon_1 = __importDefault(require("@steroidsjs/core/ui/content/Icon"));
32
33
  function FileFieldItemView(props) {
33
34
  var bem = (0, hooks_1.useBem)('FileFieldItemView');
34
- return (React.createElement("div", { className: bem(bem.block(), 'card mb-1 mr-1', props.error && 'border-danger') },
35
+ var isLoading = props.progress && props.progress.percent !== 100;
36
+ var isWall = props.filesLayout === FileField_1.FilesLayout.wall;
37
+ var renderLink = React.useCallback(function () { return (React.createElement("a", { className: bem.element('link'), title: props.title, href: props.error ? '#' : props.item.url, target: 'blank' }, isWall
38
+ ? React.createElement(Icon_1["default"], { name: 'visible-eye' })
39
+ : props.title)); }, [bem, props.title, props.error, props.item.url, isWall]);
40
+ var renderProgressBar = React.useCallback(function () { return (React.createElement("div", { className: bem.element('progress-track') },
41
+ React.createElement("div", { className: bem.element('progress-bar'), style: { width: "".concat(props.progress.percent, "%") } }))); }, [bem, props.progress]);
42
+ var renderLoadingState = React.useCallback(function () { return (React.createElement("div", { className: bem.element('left') },
43
+ React.createElement("div", { className: bem.element('icon-wrapper', 'loading') },
44
+ React.createElement(Icon_1["default"], { className: bem.element('icon-loading'), name: 'file-loading' })),
45
+ React.createElement("div", { className: bem.element('content') },
46
+ React.createElement("span", { className: bem.element('title', 'loading') }, props.title),
47
+ renderProgressBar(),
48
+ React.createElement("span", { className: bem.element('loading-text') }, __('Uploading...'))))); }, [bem, props.title, renderProgressBar]);
49
+ var renderFileItem = React.useCallback(function () { return (React.createElement("div", { className: bem.element('left') },
35
50
  props.image
36
- ? (React.createElement("img", { src: props.image.url, className: 'card-img-top', width: props.image.width, height: props.image.height, alt: props.title }))
37
- : (React.createElement(Icon_1["default"], { className: bem.element('blank-img'), name: props.imagesOnly ? 'file-image' : 'file' })),
38
- props.showRemove && (React.createElement(Icon_1["default"], { onClick: props.onRemove, className: bem.element('remove'), name: 'times' })),
39
- React.createElement("div", { className: 'card-body' },
40
- React.createElement("p", { className: bem(bem.element('text'), 'card-text text-center', props.error && 'text-danger'), title: props.error || props.title }, props.error || props.title))));
51
+ ? (React.createElement("div", { className: bem.element('image'), style: { backgroundImage: "url(".concat(props.image.url, ")") } }))
52
+ : (React.createElement("div", { className: bem.element('icon-wrapper') },
53
+ React.createElement(Icon_1["default"], { className: bem.element('icon'), name: props.imagesOnly ? 'file-img-type' : 'clip' }))),
54
+ renderLink(),
55
+ React.createElement("span", { className: bem.element('title') }, props.title))); }, [bem, props.image, props.imagesOnly, props.title, renderLink]);
56
+ return (React.createElement("div", { className: bem.block({
57
+ error: !!props.error,
58
+ images: props.imagesOnly,
59
+ isWall: isWall
60
+ }) },
61
+ isLoading
62
+ ? renderLoadingState()
63
+ : renderFileItem(),
64
+ props.showRemove && (React.createElement(Icon_1["default"], { name: props.customRemoveIcon || 'trash', className: bem.element('remove', { isLoading: isLoading }), onClick: props.onRemove })),
65
+ React.createElement("div", { className: bem.element('overlay') })));
41
66
  }
42
67
  exports["default"] = FileFieldItemView;
@@ -1,33 +1,274 @@
1
+ $small-image-size: 48px;
2
+ $image-border-radius: 8px;
3
+
4
+ @mixin fullSize {
5
+ width: 100%;
6
+ height: 100%;
7
+ }
8
+
9
+ @mixin textEllipsis {
10
+ max-width: 100%;
11
+ text-overflow: ellipsis;
12
+ overflow: hidden;
13
+ }
14
+
1
15
  .FileFieldItemView {
2
- width: 200px;
16
+ $root: &;
17
+
18
+ position: relative;
19
+ display: flex;
20
+ justify-content: space-between;
21
+ align-items: center;
22
+ column-gap: 8px;
23
+ padding: 12px 30px 12px 12px;
24
+ width: 100%;
3
25
  font-size: $font-size-sm;
4
26
 
5
- &:hover &__remove {
6
- display: block;
27
+ &_images {
28
+ padding: 8px;
29
+ border: 1px solid $gray;
30
+ border-radius: 12px;
31
+
32
+ #{$root}__icon-wrapper {
33
+ display: flex;
34
+ align-items: center;
35
+ justify-content: center;
36
+ width: $small-image-size;
37
+ height: $small-image-size;
38
+ border-radius: $image-border-radius;
39
+ background-color: $light-gray;
40
+ }
41
+ }
42
+
43
+ &__overlay {
44
+ display: none;
45
+ }
46
+
47
+ &_isWall {
48
+ padding: 5px;
49
+ width: 128px;
50
+ height: 128px;
51
+ border: 1px solid $gray;
52
+ border-radius: 20px;
53
+
54
+ #{$root}__title {
55
+ display: block;
56
+ text-align: center;
57
+
58
+ &_loading {
59
+ display: none;
60
+ }
61
+ }
62
+
63
+ #{$root}__overlay {
64
+ display: block;
65
+ position: absolute;
66
+ top: 0;
67
+ right: 0;
68
+ left: 0;
69
+ bottom: 0;
70
+ z-index: 3;
71
+ background-color: #000;
72
+ opacity: 0;
73
+ border-radius: 20px;
74
+ }
75
+
76
+ &:hover {
77
+ #{$root}__overlay {
78
+ opacity: 0.8;
79
+ }
80
+
81
+ #{$root}__link {
82
+ opacity: 1;
83
+ }
84
+ }
85
+
86
+ &#{$root}_images {
87
+ #{$root}__title {
88
+ display: none;
89
+ }
90
+
91
+ #{$root}__overlay {
92
+ top: 5px;
93
+ right: 5px;
94
+ left: 5px;
95
+ bottom: 5px;
96
+ border-radius: 16px;
97
+ }
98
+ }
99
+
100
+ #{$root}__link {
101
+ @include svg-color($white);
102
+ position: absolute;
103
+ top: 52px;
104
+ left: 70px;
105
+ z-index: 4;
106
+ opacity: 0;
107
+
108
+ circle {
109
+ stroke: $white;
110
+ }
111
+ }
112
+
113
+ #{$root}__left {
114
+ @include fullSize;
115
+ flex-direction: column;
116
+ justify-content: center;
117
+ }
118
+
119
+ #{$root}__image {
120
+ @include fullSize;
121
+ border-radius: 16px;
122
+ }
123
+
124
+ #{$root}__remove {
125
+ @include svg-color($white);
126
+ position: absolute;
127
+ left: 30px;
128
+ z-index: 4;
129
+
130
+ &_isLoading {
131
+ left: 50px;
132
+ }
133
+ }
134
+
135
+ #{$root}__icon-wrapper_loading {
136
+ display: none;
137
+ }
138
+
139
+ #{$root}__loading-text {
140
+ display: block;
141
+ margin-top: 16px;
142
+ text-align: center;
143
+ }
144
+
145
+ #{$root}__progress-track {
146
+ width: 40px;
147
+ }
148
+
149
+ #{$root}__content {
150
+ display: flex;
151
+ flex-direction: column;
152
+ align-items: center;
153
+ }
154
+
155
+ &#{$root}_error {
156
+ background-color: $light-gray;
157
+ }
158
+
159
+ &#{$root}_error {
160
+ #{$root}__title {
161
+ display: block;
162
+ }
163
+ }
7
164
  }
8
165
 
9
- &__blank-img {
10
- text-align: center;
11
- padding: 35px 0 15px;
166
+ &__image {
167
+ width: $small-image-size;
168
+ height: $small-image-size;
169
+ background-size: cover;
170
+ background-repeat: no-repeat;
171
+ background-position: center;
172
+ border-radius: $image-border-radius;
173
+ }
174
+
175
+ &__left {
176
+ display: flex;
177
+ align-items: center;
178
+ column-gap: 8px;
12
179
  width: 100%;
180
+ }
181
+
182
+ &__link {
183
+ @include textEllipsis;
184
+ color: $link-color;
185
+
186
+ &:hover {
187
+ color: $link-color-hover;
188
+ text-decoration: none;
189
+ }
190
+ }
191
+
192
+ &__title {
193
+ @include textEllipsis;
194
+ display: none;
195
+
196
+ &_loading {
197
+ display: block;
198
+ }
199
+ }
200
+
201
+ &_error {
202
+ @include svg-color($danger);
203
+
204
+ #{$root}__icon {
205
+ circle {
206
+ fill: $danger;
207
+ }
208
+ }
209
+
210
+ #{$root}__title {
211
+ color: $danger;
212
+ }
13
213
 
14
- &.IconView svg {
15
- width: 32px;
214
+ a,
215
+ a:hover {
216
+ color: $danger;
217
+ cursor: default;
218
+ pointer-events: none;
16
219
  }
17
220
  }
18
221
 
222
+ &__icon {
223
+ height: 25px;
224
+ }
225
+
226
+ &:hover &__remove {
227
+ opacity: 1;
228
+ }
229
+
19
230
  &__text {
20
231
  max-height: 80px;
21
232
  overflow: hidden;
22
233
  }
23
234
 
24
235
  &__remove {
25
- position: absolute;
26
- top: 0;
27
- righT: 0;
28
- display: none;
236
+ opacity: 0;
29
237
  cursor: pointer;
30
- padding: 10px;
31
238
  z-index: 3;
239
+ height: 25px;
240
+
241
+ svg {
242
+ width: 25px;
243
+ height: 25px;
244
+ }
245
+ }
246
+
247
+ &__icon-loading {
248
+ @include loadingAnimation;
249
+ display: block;
250
+ width: 24px;
251
+ height: 24px;
252
+ }
253
+
254
+ &__loading-text {
255
+ display: none;
256
+ }
257
+
258
+ &__content {
259
+ width: 100%;
260
+ }
261
+
262
+ &__progress-track {
263
+ margin-top: 4px;
264
+ height: 4px;
265
+ background-color: $gray;
266
+ border-radius: 4px;
267
+ }
268
+
269
+ &__progress-bar {
270
+ height: inherit;
271
+ background-color: $primary;
272
+ border-radius: 4px;
32
273
  }
33
274
  }
@@ -39,17 +39,15 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
39
39
  exports.__esModule = true;
40
40
  var React = __importStar(require("react"));
41
41
  var hooks_1 = require("@steroidsjs/core/hooks");
42
- var Icon_1 = __importDefault(require("@steroidsjs/core/ui/content/Icon"));
42
+ var FileField_1 = require("@steroidsjs/core/ui/form/FileField/FileField");
43
43
  var Button_1 = __importDefault(require("@steroidsjs/core/ui/form/Button"));
44
44
  function FileFieldView(props) {
45
45
  var bem = (0, hooks_1.useBem)('FileFieldView');
46
- var ButtonComponent = props.buttonComponent || Button_1["default"];
46
+ var ButtonView = props.buttonView || Button_1["default"];
47
47
  var FileItemView = props.itemView;
48
- return (React.createElement("div", { className: bem.block() },
49
- React.createElement("div", { className: bem(bem.element('files')) }, props.items.map(function (item) { return (React.createElement(FileItemView, __assign({ key: item.uid }, item, props.itemProps))); })),
50
- React.createElement("div", { className: bem.element('button') },
51
- React.createElement(ButtonComponent, __assign({}, props.buttonProps, { label: null }),
52
- React.createElement(Icon_1["default"], { className: bem.element('button-icon'), name: props.imagesOnly ? 'file-image' : 'upload' }),
53
- React.createElement("span", { className: bem.element('button-label') }, props.buttonProps.label)))));
48
+ var isWall = props.filesLayout === FileField_1.FilesLayout.wall;
49
+ return (React.createElement("div", { className: bem(bem.block({ isWall: isWall }), props.className) },
50
+ React.createElement(ButtonView, __assign({ className: bem.element('button', { isWall: isWall }), icon: isWall ? 'plus' : 'upload' }, props.buttonProps)),
51
+ React.createElement("div", { className: bem(bem.element('files')) }, props.items.map(function (item) { return (React.createElement(FileItemView, __assign({ key: item.uid, filesLayout: props.filesLayout, imagesOnly: props.imagesOnly, customRemoveIcon: props.customRemoveIcon }, item, props.itemProps))); }))));
54
52
  }
55
53
  exports["default"] = FileFieldView;
@@ -1,15 +1,43 @@
1
1
  .FileFieldView {
2
+ $root: &;
3
+
2
4
  &__files {
3
5
  margin-bottom: 1em;
4
6
  display: flex;
7
+ row-gap: 8px;
5
8
  flex-wrap: wrap;
9
+ flex-direction: column;
6
10
  }
7
11
 
8
- &__button-label {
9
- vertical-align: middle;
12
+ &_isWall {
13
+ display: flex;
14
+ column-gap: 10px;
15
+
16
+ #{$root}__files {
17
+ flex-direction: row;
18
+ column-gap: 10px;
19
+ }
20
+ }
21
+
22
+ &__button {
23
+ margin-bottom: 16px;
24
+
25
+ &_isWall {
26
+ width: 128px;
27
+ height: 128px;
28
+ border: 1px dashed $light;
29
+ background-color: $gray;
30
+ border-radius: 20px;
31
+
32
+ .ButtonView__label {
33
+ flex-direction: column;
34
+ row-gap: 10px;
35
+ }
36
+ }
10
37
  }
11
38
 
12
- &__button-icon {
13
- margin-right: 5px;
39
+ .ButtonView__icon {
40
+ width: 25px;
41
+ height: 25px;
14
42
  }
15
43
  }
@@ -24,7 +24,6 @@ $lead-icon-disabled-color: var(--lead-icon-disabled-color);
24
24
 
25
25
  height: 34px;
26
26
 
27
- color: $text-color;
28
27
  font-family: $font-family-nunito;
29
28
  font-weight: $font-weight-sm;
30
29
  line-height: 24px;
@@ -36,6 +35,9 @@ $lead-icon-disabled-color: var(--lead-icon-disabled-color);
36
35
  }
37
36
 
38
37
  &__input {
38
+ color: $text-color;
39
+ font-family: $font-family-nunito;
40
+
39
41
  width: 100%;
40
42
  height: 100%;
41
43
 
@@ -112,6 +114,7 @@ $lead-icon-disabled-color: var(--lead-icon-disabled-color);
112
114
  //Sizes
113
115
  &_size {
114
116
  &_lg {
117
+ color: $text-color;
115
118
  height: $input-height-lg;
116
119
  border-radius: $radius-large;
117
120
 
@@ -135,6 +138,7 @@ $lead-icon-disabled-color: var(--lead-icon-disabled-color);
135
138
  }
136
139
 
137
140
  &_md {
141
+ color: $text-color;
138
142
  height: $input-height-md;
139
143
  border-radius: $radius-large;
140
144
 
@@ -161,6 +165,7 @@ $lead-icon-disabled-color: var(--lead-icon-disabled-color);
161
165
  }
162
166
 
163
167
  &_sm {
168
+ color: $text-color;
164
169
  height: $input-height-sm;
165
170
  border-radius: $radius-small;
166
171
 
@@ -217,6 +222,10 @@ $lead-icon-disabled-color: var(--lead-icon-disabled-color);
217
222
  }
218
223
 
219
224
  &__icon-clear {
225
+ svg > * {
226
+ stroke: $text-color
227
+ }
228
+
220
229
  width: 24px;
221
230
  height: 24px;
222
231
  position: absolute;
@@ -276,6 +285,7 @@ $lead-icon-disabled-color: var(--lead-icon-disabled-color);
276
285
  &__addon-after {
277
286
  padding: 11px 12px;
278
287
  background-color: $background-disabled-color;
288
+ color: $text-color;
279
289
  }
280
290
 
281
291
  &__addon-before {
package/icons/index.js CHANGED
@@ -219,7 +219,7 @@ var groupedIcons = {
219
219
  'traffic-light', 'trailer', 'train', 'tram', 'transgender', 'transgender-alt', 'trash', 'trash-alt',
220
220
  'trash-restore', 'trash-restore-alt', 'tree', 'trophy', 'truck', 'truck-loading', 'truck-monster',
221
221
  'truck-moving', 'truck-pickup', 'tshirt', 'tty', 'tv', 'umbrella', 'umbrella-beach', 'underline', 'undo',
222
- 'undo-alt', 'universal-access', 'university', 'unlink', 'unlock', 'unlock-alt', 'upload', 'user',
222
+ 'undo-alt', 'universal-access', 'university', 'unlink', 'unlock', 'unlock-alt', 'user',
223
223
  'user-alt', 'user-alt-slash', 'user-astronaut', 'user-check', 'user-circle', 'user-clock', 'user-cog',
224
224
  'user-edit', 'user-friends', 'user-graduate', 'user-injured', 'user-lock', 'user-md', 'user-minus',
225
225
  'user-ninja', 'user-nurse', 'user-plus', 'user-secret', 'user-shield', 'user-slash', 'user-tag', 'user-tie',
@@ -272,12 +272,17 @@ exports["default"] = (function (customIcons) {
272
272
  'home',
273
273
  'arrow-left',
274
274
  'double-arrow-left',
275
+ 'upload',
276
+ 'plus',
277
+ 'clip',
278
+ 'file-img-type',
275
279
  'copy',
276
280
  'cut',
277
- 'edit-duotone',
281
+ 'edit',
278
282
  'paste',
279
283
  'pin',
280
284
  'trash',
285
+ 'file-loading',
281
286
  ];
282
287
  steroidsIcons.forEach(function (iconName) {
283
288
  icons[iconName] = require("./svgs/".concat(iconName, ".svg"));
@@ -0,0 +1,3 @@
1
+ <svg width="25" height="25" viewBox="0 0 25 25" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path d="M9.24224 14.134C9.24224 14.134 14.1855 9.2528 15.1743 8.22302C16.1631 7.19324 17.1526 8.22302 17.1526 8.22302C17.1526 8.22302 18.1407 9.25295 17.1519 10.2828C16.1631 11.3127 9.38808 18.378 9.38808 18.378C8.22338 19.5503 6.45101 19.694 5.28631 18.5217C4.12161 17.35 4.00707 15.5738 5.17178 14.4021L13.1974 6.16318C14.8279 4.52203 17.5021 4.52214 19.1302 6.16329C20.7619 7.80504 20.7607 10.7013 19.1302 12.3424L13.1974 18.378" stroke="#323232" stroke-linecap="round"/>
3
+ </svg>
@@ -1,5 +1,5 @@
1
- <svg width="24" height="25" viewBox="0 0 24 25" fill="none" xmlns="http://www.w3.org/2000/svg">
2
- <path fill-rule="evenodd" clip-rule="evenodd" d="M15.9202 13.2867C15.9725 13.0286 16 12.7615 16 12.4879C16 10.2788 14.2091 8.48792 12 8.48792C11.7264 8.48792 11.4593 8.51538 11.2012 8.56769L12.7295 10.096C13.5236 10.3379 14.15 10.9643 14.3919 11.7584L15.9202 13.2867ZM9.76246 11.3716C9.5945 11.7076 9.5 12.0867 9.5 12.4879C9.5 13.8686 10.6193 14.9879 12 14.9879C12.4012 14.9879 12.7803 14.8934 13.1163 14.7255L14.212 15.8212C13.5784 16.2424 12.8179 16.4879 12 16.4879C9.79086 16.4879 8 14.6971 8 12.4879C8 11.67 8.24547 10.9095 8.66676 10.2759L9.76246 11.3716Z" fill="#323232"/>
3
- <path fill-rule="evenodd" clip-rule="evenodd" d="M18.7369 16.1634C19.5861 15.3972 20.278 14.625 20.7677 14.0304C20.7902 14.0031 20.8132 13.9755 20.8363 13.9476C21.1563 13.5626 21.521 13.1236 21.521 12.4879C21.521 11.8522 21.1563 11.4133 20.8363 11.0282C20.8132 11.0003 20.7902 10.9727 20.7677 10.9454C20.0353 10.0562 18.8506 8.7695 17.3636 7.6997C15.8826 6.63415 14.0377 5.73792 12.0007 5.73792C10.9236 5.73792 9.90014 5.98854 8.95578 6.3823L10.1221 7.5486C10.7332 7.35097 11.3622 7.23792 12.0007 7.23792C13.5996 7.23792 15.1386 7.94675 16.4876 8.91731C17.8307 9.88361 18.9222 11.0641 19.6099 11.899C19.8177 12.1514 19.92 12.2787 19.9814 12.3815C20.0213 12.4484 20.0212 12.4674 20.021 12.485L20.021 12.4879L20.021 12.4908C20.0212 12.5084 20.0213 12.5274 19.9814 12.5944C19.92 12.6971 19.8177 12.8245 19.6099 13.0768C19.1383 13.6493 18.4769 14.3843 17.6748 15.1013L18.7369 16.1634ZM8.64801 8.19585C8.25778 8.41127 7.87887 8.65471 7.51387 8.91731C6.17077 9.88361 5.07931 11.0641 4.39163 11.899C4.18379 12.1514 4.08145 12.2787 4.02013 12.3815C3.98021 12.4484 3.98034 12.4674 3.98046 12.485L3.98047 12.4879L3.98046 12.4908C3.98034 12.5084 3.98021 12.5274 4.02013 12.5944C4.08145 12.6971 4.18379 12.8245 4.39163 13.0768C5.0793 13.9117 6.17077 15.0922 7.51387 16.0585C8.86289 17.0291 10.4019 17.7379 12.0007 17.7379C13.5996 17.7379 15.1386 17.0291 16.4876 16.0585C16.4921 16.0553 16.4966 16.0521 16.501 16.0489L17.574 17.1219C17.5046 17.1737 17.4345 17.2252 17.3636 17.2761C15.8826 18.3417 14.0377 19.2379 12.0007 19.2379C9.96383 19.2379 8.11889 18.3417 6.63785 17.2761C5.15089 16.2063 3.96621 14.9197 3.2338 14.0304C3.21126 14.0031 3.18833 13.9755 3.16516 13.9476C2.8452 13.5626 2.48047 13.1236 2.48047 12.4879C2.48047 11.8522 2.8452 11.4133 3.16516 11.0282L3.16527 11.0281C3.1884 11.0003 3.21129 10.9727 3.2338 10.9454C3.96621 10.0562 5.15089 8.7695 6.63785 7.6997C6.92832 7.49072 7.23278 7.28825 7.54995 7.09778L8.64801 8.19585Z" fill="#323232"/>
4
- <path d="M5 2.48792L21 18.4879" stroke="#323232"/>
1
+ <svg width="25" height="25" viewBox="0 0 25 25" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path fill-rule="evenodd" clip-rule="evenodd" d="M16.2718 12.9311C16.3241 12.673 16.3516 12.4059 16.3516 12.1323C16.3516 9.92319 14.5607 8.13232 12.3516 8.13232C12.078 8.13232 11.8109 8.15978 11.5527 8.2121L12.4755 9.13484C14.0338 9.19815 15.2857 10.4501 15.349 12.0084L16.2718 12.9311ZM9.74467 10.6467C9.49451 11.0847 9.35156 11.5918 9.35156 12.1323C9.35156 13.7892 10.6947 15.1323 12.3516 15.1323C12.8921 15.1323 13.3992 14.9894 13.8372 14.7392L14.5636 15.4656C13.93 15.8869 13.1695 16.1323 12.3516 16.1323C10.1424 16.1323 8.35156 14.3415 8.35156 12.1323C8.35156 11.3144 8.59704 10.5539 9.01833 9.92032L9.74467 10.6467Z" fill="#323232"/>
3
+ <path fill-rule="evenodd" clip-rule="evenodd" d="M18.9115 15.6308C19.7529 14.8727 20.4397 14.1067 20.9263 13.5159L20.9851 13.4447C21.3156 13.0453 21.6226 12.6744 21.6226 12.1323C21.6226 11.5903 21.3156 11.2193 20.9851 10.8199L20.9263 10.7487C20.2013 9.86855 19.0322 8.5996 17.5692 7.54704C16.1102 6.49733 14.3162 5.63232 12.3523 5.63232C11.3496 5.63232 10.3911 5.85783 9.49894 6.21829L10.276 6.99532C10.9463 6.76595 11.6419 6.63232 12.3523 6.63232C14.0241 6.63232 15.6142 7.37239 16.9852 8.35878C18.3523 9.34234 19.4593 10.5405 20.1544 11.3845C20.5788 11.8997 20.6226 11.9888 20.6226 12.1323C20.6226 12.2758 20.5788 12.3649 20.1544 12.8802C19.6799 13.4563 19.0134 14.1974 18.2034 14.9227L18.9115 15.6308ZM8.81578 7.65646C8.43746 7.86879 8.07124 8.10568 7.71943 8.35878C6.35236 9.34234 5.24535 10.5405 4.55022 11.3845C4.12586 11.8997 4.08203 11.9888 4.08203 12.1323C4.08203 12.2758 4.12586 12.3649 4.55022 12.8802C5.24535 13.7241 6.35236 14.9223 7.71943 15.9059C9.09046 16.8923 10.6805 17.6323 12.3523 17.6323C14.0241 17.6323 15.6142 16.8923 16.9852 15.9059C17.0007 15.8947 17.0162 15.8835 17.0316 15.8723L17.7469 16.5876C17.6882 16.6313 17.6289 16.6746 17.5692 16.7176C16.1102 17.7673 14.3162 18.6323 12.3523 18.6323C10.3884 18.6323 8.59445 17.7673 7.13542 16.7176C5.67243 15.6651 4.50329 14.3961 3.77833 13.5159L3.71953 13.4447C3.389 13.0453 3.08203 12.6744 3.08203 12.1323C3.08203 11.5903 3.389 11.2193 3.71953 10.8199L3.77833 10.7487C4.50329 9.86855 5.67243 8.59959 7.13542 7.54704C7.43767 7.32958 7.75429 7.12005 8.08382 6.9245L8.81578 7.65646Z" fill="#323232"/>
4
+ <path d="M5.35156 2.13232L21.3516 18.1323" stroke="#323232"/>
5
5
  </svg>
@@ -0,0 +1,5 @@
1
+ <svg width="25" height="25" viewBox="0 0 25 25" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path d="M3.85352 11.1323C3.85352 7.36109 3.85352 5.47547 5.02509 4.3039C6.19666 3.13232 8.08228 3.13232 11.8535 3.13232H13.8535C17.6248 3.13232 19.5104 3.13232 20.6819 4.3039C21.8535 5.47547 21.8535 7.36109 21.8535 11.1323V13.1323C21.8535 16.9036 21.8535 18.7892 20.6819 19.9608C19.5104 21.1323 17.6248 21.1323 13.8535 21.1323H11.8535C8.08228 21.1323 6.19666 21.1323 5.02509 19.9608C3.85352 18.7892 3.85352 16.9036 3.85352 13.1323V11.1323Z" stroke="#323232"/>
3
+ <path fill-rule="evenodd" clip-rule="evenodd" d="M8.9369 12.3815C9.60384 11.4797 11.012 11.7141 11.3509 12.7833L11.5708 13.4771C12.0647 15.0355 14.1172 15.3771 15.0894 14.0627C15.49 13.5209 16.3004 13.5209 16.7011 14.0627L18.4515 16.4295C18.6157 16.6515 18.9288 16.6984 19.1509 16.5342C19.3729 16.37 19.4197 16.0569 19.2555 15.8349L17.5051 13.4681C16.7047 12.3858 15.0858 12.3858 14.2854 13.4681C13.7987 14.126 12.7713 13.955 12.524 13.1749L12.3041 12.4811C11.7185 10.6336 9.28534 10.2286 8.13289 11.7869L6.24842 14.3349C6.08422 14.5569 6.13109 14.87 6.35311 15.0342C6.57513 15.1984 6.88822 15.1515 7.05242 14.9295L8.9369 12.3815Z" fill="#323232"/>
4
+ <circle cx="17.3535" cy="7.63232" r="1.5" fill="#323232"/>
5
+ </svg>
@@ -0,0 +1,3 @@
1
+ <svg width="25" height="25" viewBox="0 0 25 25" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path d="M12.4456 4.13283C10.8634 4.11432 9.31133 4.56538 7.98554 5.42898C6.65975 6.29257 5.61982 7.52992 4.99726 8.98454C4.3747 10.4392 4.19746 12.0457 4.48796 13.6011C4.77846 15.1564 5.52366 16.5907 6.62931 17.7226C7.73496 18.8544 9.15141 19.6329 10.6995 19.9598C12.2477 20.2866 13.8579 20.147 15.3267 19.5586C16.7955 18.9703 18.0569 17.9596 18.9513 16.6544C19.8456 15.3492 20.3329 13.808 20.3514 12.2259" stroke="#323232" stroke-linecap="round" stroke-linejoin="round"/>
3
+ </svg>
@@ -0,0 +1,4 @@
1
+ <svg width="25" height="25" viewBox="0 0 25 25" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path d="M12.3535 6.13232L12.3535 18.1323" stroke="#323232" stroke-linecap="round"/>
3
+ <path d="M18.3535 12.1323L6.35352 12.1323" stroke="#323232" stroke-linecap="round"/>
4
+ </svg>
@@ -0,0 +1,4 @@
1
+ <svg width="25" height="25" viewBox="0 0 25 25" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path d="M7.35352 9.58051L12.3535 14.5805M12.3535 14.5805L17.3535 9.58051M12.3535 14.5805L12.3535 5.58051" stroke="#312C3A" stroke-linecap="round"/>
3
+ <path d="M5.35352 16.5805L5.35352 17.5805C5.35352 18.6851 6.24895 19.5805 7.35352 19.5805L17.3535 19.5805C18.4581 19.5805 19.3535 18.6851 19.3535 17.5805V16.5805" stroke="#312C3A" stroke-linecap="round"/>
4
+ </svg>
@@ -1,4 +1,4 @@
1
- <svg width="24" height="25" viewBox="0 0 24 25" fill="none" xmlns="http://www.w3.org/2000/svg">
2
- <circle cx="12" cy="12.4879" r="3.25" stroke="#323232" stroke-width="1.5"/>
3
- <path d="M20.188 11.4222C20.5762 11.8935 20.7703 12.1291 20.7703 12.4879C20.7703 12.8467 20.5762 13.0824 20.188 13.5536C18.7679 15.2778 15.6357 18.4879 12 18.4879C8.36427 18.4879 5.23206 15.2778 3.81197 13.5536C3.42381 13.0824 3.22973 12.8467 3.22973 12.4879C3.22973 12.1291 3.42381 11.8935 3.81197 11.4222C5.23206 9.69805 8.36427 6.48792 12 6.48792C15.6357 6.48792 18.7679 9.69805 20.188 11.4222Z" stroke="#323232" stroke-width="1.5"/>
1
+ <svg width="25" height="25" viewBox="0 0 25 25" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <circle cx="12.1113" cy="12.1323" r="3.5" stroke="#323232"/>
3
+ <path d="M20.2994 11.0666C20.6875 11.5379 20.8816 11.7735 20.8816 12.1323C20.8816 12.4911 20.6875 12.7268 20.2994 13.198C18.8793 14.9222 15.7471 18.1323 12.1113 18.1323C8.4756 18.1323 5.34339 14.9222 3.9233 13.198C3.53513 12.7268 3.34105 12.4911 3.34105 12.1323C3.34105 11.7735 3.53513 11.5379 3.9233 11.0666C5.34339 9.34246 8.4756 6.13232 12.1113 6.13232C15.7471 6.13232 18.8793 9.34246 20.2994 11.0666Z" stroke="#323232"/>
4
4
  </svg>
package/index.scss CHANGED
@@ -1,5 +1,6 @@
1
1
  @import './scss/mixins';
2
2
  @import './scss/variables';
3
+ @import './scss/animations';
3
4
  @import './scss/fonts';
4
5
 
5
6
  @import './crud/Crud/CrudView';
@@ -16,6 +17,7 @@
16
17
  @import './content/DropDown/DropDownView.scss';
17
18
  @import './content/Menu/MenuItemView';
18
19
  @import './content/Menu/MenuView';
20
+ @import './content/Icon/IconView';
19
21
  @import './form/AutoCompleteField/AutoCompleteFieldView';
20
22
  @import './form/Button/ButtonView';
21
23
  @import './form/CheckboxField/CheckboxFieldView';
@@ -37,7 +37,7 @@ function ListView(props) {
37
37
  }
38
38
  return (React.createElement("div", { className: bem.element('pagination') },
39
39
  React.createElement("div", null, pagination),
40
- React.createElement("div", null,
40
+ React.createElement("div", { className: bem.element('pagination-sizes') },
41
41
  layout,
42
42
  paginationSize)));
43
43
  };
@@ -1,12 +1,21 @@
1
1
  .ListView {
2
-
3
- &__pagination {
2
+ &__pagination {
4
3
  display: flex;
4
+ justify-content: space-between;
5
5
  flex-flow: row nowrap;
6
6
  margin-bottom: 3px;
7
- background: red;
8
- }
9
7
 
8
+ &-sizes {
9
+ width: calc(100% / 4);
10
10
 
11
+ .PaginationSizeView__sizes {
12
+ display: flex;
13
+ flex-flow: row nowrap;
14
+ }
15
+ }
16
+ }
11
17
 
12
- }
18
+ &__content {
19
+ margin-bottom: 3px;
20
+ }
21
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@steroidsjs/bootstrap",
3
- "version": "3.0.0-beta.42",
3
+ "version": "3.0.0-beta.43",
4
4
  "description": "",
5
5
  "main": "index.js",
6
6
  "author": "Vladimir Kozhin <hello@kozhindev.com>",
@@ -35,7 +35,7 @@
35
35
  "react-use": "^17.4.0"
36
36
  },
37
37
  "devDependencies": {
38
- "@steroidsjs/core": "^3.0 || >=3.0.0-beta.20",
38
+ "@steroidsjs/core": "^3.0 || >=3.0.0-beta.24",
39
39
  "@steroidsjs/eslint-config": "^2.1.4",
40
40
  "@types/enzyme": "^3.10.8",
41
41
  "@types/googlemaps": "^3.43.3",
@@ -53,6 +53,6 @@
53
53
  "typescript": "^4.9.5"
54
54
  },
55
55
  "peerDependencies": {
56
- "@steroidsjs/core": "^3.0 || >=3.0.0-beta.20"
56
+ "@steroidsjs/core": "^3.0 || >=3.0.0-beta.24"
57
57
  }
58
58
  }
@@ -0,0 +1 @@
1
+ @import "loading";
@@ -0,0 +1,13 @@
1
+ @keyframes loading {
2
+ from {
3
+ transform: none;
4
+ }
5
+
6
+ to {
7
+ transform: rotate(360deg);
8
+ }
9
+ }
10
+
11
+ @mixin loadingAnimation {
12
+ animation: loading 1.5s linear infinite;
13
+ }
@@ -1,3 +1,11 @@
1
+ @mixin svg-color($color) {
2
+ svg {
3
+ path {
4
+ stroke: $color;
5
+ }
6
+ }
7
+ }
8
+
1
9
  @mixin button-theme($colorMap, $colorName, $root) {
2
10
  background-color: map-get($colorMap, color);
3
11
  color: map-get($colorMap, text-color);
@@ -29,6 +37,14 @@
29
37
  }
30
38
  }
31
39
  }
40
+
41
+ #{$root}__link {
42
+ color: map-get($colorMap, color-dark);
43
+
44
+ &:hover {
45
+ color: map-get($colorMap, color-light);
46
+ }
47
+ }
32
48
  }
33
49
 
34
50
  @mixin button-outline-theme($colorMap, $colorName, $root) {
@@ -36,15 +52,19 @@
36
52
  color: map-get($colorMap, color);
37
53
  border: 1px solid map-get($colorMap, color);
38
54
 
55
+ @include svg-color(map-get($colorMap, text-color));
56
+
39
57
  &:hover {
58
+ @include svg-color(map-get($colorMap, color-dark));
40
59
  color: map-get($colorMap, color-dark);
41
60
  border-color: map-get($colorMap, color-dark);
42
61
  }
43
62
  &:focus {
44
63
  box-shadow: 0 0 0 4px map-get($colorMap, color-light), 0 0 0 4px map-get($colorMap, color-light);
45
- border: none;
64
+ border: 1px solid transparent;
46
65
  }
47
66
  &:active {
67
+ @include svg-color(map-get($colorMap, color-light));
48
68
  color: map-get($colorMap, color-light);
49
69
  border-color: map-get($colorMap, color-light);
50
70
  box-shadow: none;
@@ -52,6 +72,7 @@
52
72
 
53
73
  &:disabled {
54
74
  background-color: transparent;
75
+ @include svg-color(map-get($colorMap, color));
55
76
  color: map-get($colorMap, color);
56
77
  border: 1px solid map-get($colorMap, color);
57
78
  }
@@ -61,10 +82,6 @@
61
82
  }
62
83
 
63
84
  #{$root}__loader {
64
- svg {
65
- path {
66
- stroke: map-get($colorMap, color);
67
- }
68
- }
85
+ @include svg-color(map-get($colorMap, color));
69
86
  }
70
87
  }
@@ -173,6 +173,10 @@ $color-themes: map-merge(
173
173
  "color-light": $info-light,
174
174
  "text-color": $text-color,
175
175
  ),
176
+ "link": (
177
+ "color-dark": $link-color,
178
+ "color-light": $link-color-hover,
179
+ ),
176
180
  ),
177
181
  $color-themes
178
182
  );
File without changes