@steroidsjs/bootstrap 3.0.0-beta.29 → 3.0.0-beta.30

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. package/content/Accordion/AccordionItemView.scss +15 -10
  2. package/content/Alert/AlertView.scss +2 -0
  3. package/content/Avatar/AvatarView.scss +9 -1
  4. package/content/Badge/BadgeView.js +6 -6
  5. package/content/Badge/BadgeView.scss +40 -30
  6. package/content/Card/CardView.js +34 -14
  7. package/content/Card/CardView.scss +126 -110
  8. package/content/Detail/DetailView.scss +1 -0
  9. package/form/Button/ButtonView.js +1 -0
  10. package/form/Button/ButtonView.scss +18 -8
  11. package/form/CheckboxField/CheckboxFieldView.js +6 -3
  12. package/form/CheckboxField/CheckboxFieldView.scss +66 -1
  13. package/form/DropDownField/DropDownFieldView.js +46 -47
  14. package/form/DropDownField/DropDownFieldView.scss +390 -183
  15. package/form/DropDownField/views/DropDownItem/DropDownItemView.d.ts +3 -0
  16. package/form/DropDownField/views/DropDownItem/DropDownItemView.js +80 -0
  17. package/form/DropDownField/views/DropDownItem/DropDownItemView.scss +217 -0
  18. package/form/DropDownField/views/DropDownItem/index.d.ts +2 -0
  19. package/form/DropDownField/views/DropDownItem/index.js +7 -0
  20. package/form/Form/FormView.js +3 -3
  21. package/form/Form/FormView.scss +10 -14
  22. package/form/InputField/InputFieldView.scss +0 -27
  23. package/form/NumberField/NumberFieldView.scss +14 -32
  24. package/form/PasswordField/PasswordFieldView.scss +3 -6
  25. package/form/RadioListField/RadioListFieldView.js +7 -4
  26. package/form/RadioListField/RadioListFieldView.scss +115 -19
  27. package/form/TextField/TextFieldView.scss +1 -3
  28. package/icons/index.js +2 -0
  29. package/icons/svgs/dots.svg +5 -0
  30. package/icons/svgs/search.svg +4 -0
  31. package/layout/Tooltip/TooltipView.js +6 -6
  32. package/layout/Tooltip/TooltipView.scss +45 -37
  33. package/package.json +3 -3
  34. package/scss/mixins/index.scss +1 -1
  35. package/scss/mixins/scroll.scss +31 -0
  36. package/scss/variables/common/colors.scss +1 -0
  37. package/scss/variables/index.scss +0 -1
  38. package/scss/mixins/card.scss +0 -26
  39. package/scss/variables/components/card.scss +0 -20
@@ -0,0 +1,80 @@
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 __importDefault = (this && this.__importDefault) || function (mod) {
14
+ return (mod && mod.__esModule) ? mod : { "default": mod };
15
+ };
16
+ exports.__esModule = true;
17
+ var react_1 = __importDefault(require("react"));
18
+ var useBem_1 = __importDefault(require("@steroidsjs/core/hooks/useBem"));
19
+ var Icon_1 = __importDefault(require("@steroidsjs/core/ui/content/Icon"));
20
+ var form_1 = require("@steroidsjs/core/ui/form");
21
+ var content_1 = require("@steroidsjs/core/ui/content");
22
+ require("./DropDownItemView.scss");
23
+ var GROUP_CONTENT_TYPE = 'group';
24
+ function DropDownItemView(props) {
25
+ var bem = (0, useBem_1["default"])('DropDownItemView');
26
+ var groupProps = props;
27
+ var commonProps = {
28
+ className: bem.element('option', {
29
+ hover: props.hoveredId === props.item[props.primaryKey],
30
+ select: props.selectedIds.includes(props.item[props.primaryKey]),
31
+ size: props.size
32
+ }),
33
+ onFocus: function () { return props.onItemHover(props.item[props.primaryKey]); },
34
+ onMouseOver: function () { return props.onItemHover(props.item[props.primaryKey]); },
35
+ onClick: function (e) {
36
+ e.preventDefault();
37
+ props.onItemSelect(props.item[props.primaryKey]);
38
+ }
39
+ };
40
+ var renderTypeCases = function (type, src) {
41
+ switch (type) {
42
+ case 'icon':
43
+ return (react_1["default"].createElement("div", __assign({}, commonProps),
44
+ typeof src === 'string' ? (react_1["default"].createElement(Icon_1["default"], { name: src, className: bem.element('icon') })) : (react_1["default"].createElement("span", { className: bem.element('icon') }, src)),
45
+ react_1["default"].createElement("span", null, props.item.label)));
46
+ case 'checkbox':
47
+ return (react_1["default"].createElement("div", __assign({}, commonProps),
48
+ react_1["default"].createElement(form_1.CheckboxField, { label: props.item.label, className: bem.element('checkbox'), size: props.size, inputProps: {
49
+ checked: props.selectedIds.includes(props.item[props.primaryKey])
50
+ } })));
51
+ case 'img':
52
+ return (react_1["default"].createElement("div", __assign({}, commonProps),
53
+ react_1["default"].createElement("span", { className: bem.element('img') },
54
+ react_1["default"].createElement("img", { src: src, alt: "custom source for item" })),
55
+ react_1["default"].createElement("span", null, props.item.label)));
56
+ case 'radio':
57
+ return (react_1["default"].createElement("div", __assign({}, commonProps),
58
+ react_1["default"].createElement(form_1.RadioListField, { items: [props.item], selectedIds: props.selectedIds, className: bem.element('radio', {
59
+ size: props.size
60
+ }), size: props.size })));
61
+ case 'group':
62
+ return (react_1["default"].createElement(content_1.AccordionItem, { childIndex: groupProps.childIndex, isShowMore: groupProps.isShowMore, toggleAccordion: groupProps.toggleAccordion, toggleCollapse: groupProps.toggleCollapse, title: props.item.label, position: "middle", className: bem.element('group', {
63
+ size: props.size
64
+ }) }, props.item[props.groupAttribute].map(function (subItem, itemIndex) { return (react_1["default"].createElement(DropDownItemView, __assign({}, props, { key: itemIndex, item: subItem }))); })));
65
+ default:
66
+ return null;
67
+ }
68
+ };
69
+ if (props.groupAttribute && Array.isArray(props.item[props.groupAttribute])) {
70
+ return renderTypeCases(GROUP_CONTENT_TYPE, props.item[props.groupAttribute]);
71
+ }
72
+ if (props.item.contentType) {
73
+ return renderTypeCases(props.item.contentType, props.item.contentSrc);
74
+ }
75
+ if (props.itemsContent) {
76
+ return renderTypeCases(props.itemsContent.type, props.itemsContent.src);
77
+ }
78
+ return (react_1["default"].createElement("div", __assign({}, commonProps), props.item.label));
79
+ }
80
+ exports["default"] = DropDownItemView;
@@ -0,0 +1,217 @@
1
+ @import "style/variables";
2
+
3
+ :root {
4
+ --drop-down-item-hover-background-color: #f5f8fa;
5
+ --drop-down-item-select-background-color: #eef1f2;
6
+ }
7
+
8
+ html[data-theme="dark"] {
9
+ --drop-down-item-select-background-color: #5b5c6b;
10
+ --drop-down-item-hover-background-color: #4e4f57;
11
+ }
12
+
13
+ $drop-down-item-select-background-color: var(--drop-down-item-select-background-color);
14
+ $drop-down-item-hover-background-color: var(--drop-down-item-hover-background-color);
15
+
16
+ @mixin statements {
17
+ &_select {
18
+ background-color: $drop-down-item-select-background-color;
19
+ }
20
+ &_hover {
21
+ background-color: $drop-down-item-hover-background-color;
22
+ }
23
+ }
24
+
25
+ %fontProperties {
26
+ font-size: $font-size-base;
27
+ font-weight: 400;
28
+ line-height: 22px;
29
+ }
30
+
31
+ .DropDownItemView {
32
+ $root: &;
33
+
34
+ &__icon {
35
+ display: inline-block;
36
+ width: 24px;
37
+ height: 24px;
38
+ }
39
+
40
+ &__option {
41
+ display: flex;
42
+ flex-flow: row wrap;
43
+ position: relative;
44
+ column-gap: 12px;
45
+ align-items: center;
46
+ background-color: $element-background-color;
47
+ color: $text-color;
48
+
49
+ &_size {
50
+ &_lg {
51
+ padding: 16px;
52
+ }
53
+
54
+ &_md {
55
+ padding: 12px;
56
+ }
57
+
58
+ &_sm {
59
+ padding: 8px;
60
+ }
61
+ }
62
+
63
+ @include statements;
64
+ }
65
+
66
+ &__checkbox {
67
+ width: 100%;
68
+ height: 24px;
69
+ pointer-events: none;
70
+
71
+ label {
72
+ width: 100%;
73
+ }
74
+ }
75
+
76
+ &__img {
77
+ width: 24px;
78
+ height: 24px;
79
+ border-radius: $radius-small;
80
+ overflow: hidden;
81
+
82
+ img {
83
+ width: 100%;
84
+ height: 100%;
85
+ }
86
+ }
87
+
88
+ &__radio {
89
+ pointer-events: none;
90
+ width: 100%;
91
+
92
+ div {
93
+ width: 100%;
94
+ }
95
+
96
+ label {
97
+ width: 100%;
98
+ }
99
+
100
+ label::before {
101
+ position: absolute;
102
+ right: 0;
103
+ margin-right: 0;
104
+ }
105
+
106
+ label::after {
107
+ position: absolute;
108
+ right: 0;
109
+ }
110
+
111
+ .RadioListFieldView__ellipse {
112
+ left: auto;
113
+ }
114
+
115
+ &_size {
116
+ &_lg {
117
+ span {
118
+ right: 6px;
119
+ }
120
+ }
121
+
122
+ &_md {
123
+ span {
124
+ right: 5px;
125
+ }
126
+ }
127
+
128
+ &_sm {
129
+ span {
130
+ right: 4px;
131
+ }
132
+ }
133
+ }
134
+ }
135
+
136
+ &__group {
137
+ width: auto;
138
+ border-radius: none;
139
+
140
+ .AccordionItemView {
141
+ &__content {
142
+ padding: 0;
143
+ border: none;
144
+
145
+ &_visible {
146
+ border-bottom: 1px solid $border-color;
147
+ }
148
+ }
149
+
150
+ &__header-container {
151
+ display: flex;
152
+ flex-flow: row nowrap;
153
+ justify-content: space-between;
154
+ align-items: center;
155
+
156
+ border: none;
157
+ background-color: $element-background-color;
158
+
159
+ &:hover {
160
+ background-color: $drop-down-item-hover-background-color;
161
+ }
162
+ }
163
+
164
+ &__title-container {
165
+ padding: inherit;
166
+ }
167
+
168
+ &__icon-wrapper {
169
+ position: static;
170
+ margin-right: 12px;
171
+ }
172
+
173
+ &__icon-chevron {
174
+ box-shadow: none;
175
+ svg {
176
+ border: 1px solid $border-color;
177
+ border-radius: $radius-small;
178
+ }
179
+ }
180
+ }
181
+
182
+ &_size {
183
+ &_lg {
184
+ font-size: $font-size-lg;
185
+ line-height: 24px;
186
+
187
+ .AccordionItemView__title-container {
188
+ font-size: inherit;
189
+ line-height: inherit;
190
+ padding: 16px;
191
+ }
192
+ }
193
+
194
+ &_md {
195
+ font-size: $font-size-base;
196
+ line-height: 22px;
197
+
198
+ .AccordionItemView__title-container {
199
+ font-size: inherit;
200
+ line-height: inherit;
201
+ padding: 12px;
202
+ }
203
+ }
204
+
205
+ &_sm {
206
+ font-size: $font-size-sm;
207
+ line-height: 18px;
208
+
209
+ .AccordionItemView__title-container {
210
+ font-size: inherit;
211
+ line-height: inherit;
212
+ padding: 8px;
213
+ }
214
+ }
215
+ }
216
+ }
217
+ }
@@ -0,0 +1,2 @@
1
+ import DropDownItemView from './DropDownItemView';
2
+ export default DropDownItemView;
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ exports.__esModule = true;
6
+ var DropDownItemView_1 = __importDefault(require("./DropDownItemView"));
7
+ exports["default"] = DropDownItemView_1["default"];
@@ -59,9 +59,9 @@ function FormView(props) {
59
59
  }
60
60
  });
61
61
  return (React.createElement("form", { ref: formRef, className: bem(bem.block({
62
- border: props.isBordered,
63
- inline: props.layout.layout === 'inline'
64
- }), props.className, props.layout.layout === 'horizontal' && 'form-horizontal'), onSubmit: props.onSubmit, style: props.style },
62
+ inline: props.layout.layout === 'inline',
63
+ vertical: props.layout.layout === 'vertical'
64
+ }), props.className), onSubmit: props.onSubmit, style: props.style },
65
65
  props.children,
66
66
  (props.fields || []).map(function (field, index) { return (React.createElement(Field_1["default"], __assign({ key: index }, ((0, isString_1["default"])(field) ? { attribute: field } : field)))); }),
67
67
  props.submitLabel && (React.createElement(Button_1["default"], { type: 'submit', label: props.submitLabel }))));
@@ -1,17 +1,13 @@
1
1
  .FormView {
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
2
  display: flex;
11
- grid-gap: 20px;
12
- align-items: flex-start;
13
- }
14
- .form-control {
15
- display: flex;
16
- }
3
+ flex-flow: column nowrap;
4
+
5
+ &_inline {
6
+ column-gap: 12px;
7
+ flex-flow: row nowrap;
8
+ }
9
+
10
+ &_vertical {
11
+ row-gap: 24px;
12
+ }
17
13
  }
@@ -22,7 +22,6 @@ $lead-icon-disabled-color: var(--lead-icon-disabled-color);
22
22
  flex-flow: row nowrap;
23
23
  align-items: center;
24
24
 
25
- width: 240px;
26
25
  height: 34px;
27
26
 
28
27
  color: $text-color;
@@ -249,32 +248,6 @@ $lead-icon-disabled-color: var(--lead-icon-disabled-color);
249
248
  }
250
249
  }
251
250
 
252
- //Addons
253
- &_hasAddon,
254
- &_hasTextAddon {
255
- width: fit-content;
256
-
257
- #{$root}__input-wrapper {
258
- width: auto;
259
- }
260
-
261
- #{$root}__input {
262
- &_size {
263
- &_lg {
264
- width: 206px;
265
- }
266
-
267
- &_md {
268
- width: 200px;
269
- }
270
-
271
- &_sm {
272
- width: 192px;
273
- }
274
- }
275
- }
276
- }
277
-
278
251
  &_hasAddonBefore {
279
252
  #{$root}__input {
280
253
  border-top-left-radius: 0;
@@ -14,8 +14,6 @@ $number-field-arrow-color: var(--number-field-arrow-color);
14
14
  position: relative;
15
15
  padding: 0;
16
16
 
17
- width: 120px;
18
-
19
17
  font-family: $font-family-nunito;
20
18
 
21
19
  // Hide default arrows
@@ -72,7 +70,7 @@ $number-field-arrow-color: var(--number-field-arrow-color);
72
70
  }
73
71
  }
74
72
 
75
- &:last-child{
73
+ &:last-child {
76
74
  transform: rotate(180deg);
77
75
  }
78
76
  }
@@ -86,23 +84,18 @@ $number-field-arrow-color: var(--number-field-arrow-color);
86
84
  font-size: $font-size-lg;
87
85
 
88
86
  &-effects {
89
- border-radius:$radius-large;
90
- }
91
-
92
- &::placeholder {
93
- font-size: $font-size-sm;
87
+ border-radius: $radius-large;
94
88
  }
95
-
96
89
  }
97
90
 
98
- &__arrow {
91
+ &__arrow {
99
92
  transform: translateX(-3px) translateY(6px);
100
93
 
101
- &:last-child{
94
+ &:last-child {
102
95
  transform: translateX(-3px) translateY(-8px) rotate(180deg);
103
96
  }
104
97
  }
105
- }
98
+ }
106
99
  }
107
100
 
108
101
  &_md {
@@ -115,16 +108,12 @@ $number-field-arrow-color: var(--number-field-arrow-color);
115
108
  &-effects {
116
109
  border-radius: $radius-large;
117
110
  }
118
-
119
- &::placeholder {
120
- font-size: $font-size-sm;
121
- }
122
111
  }
123
112
 
124
- &__arrow {
113
+ &__arrow {
125
114
  transform: translateX(-3px) translateY(4px) scale(0.8);
126
115
 
127
- &:last-child{
116
+ &:last-child {
128
117
  transform: translateX(-3px) translateY(-4px) rotate(180deg) scale(0.8);
129
118
  }
130
119
  }
@@ -137,19 +126,15 @@ $number-field-arrow-color: var(--number-field-arrow-color);
137
126
  height: 34px;
138
127
  font-size: $font-size-sm;
139
128
 
140
- &::placeholder {
141
- font-size: $font-size-sm;
142
- }
143
-
144
129
  &-effects {
145
130
  border-radius: $radius-small;
146
131
  }
147
132
  }
148
133
 
149
- &__arrow {
134
+ &__arrow {
150
135
  transform: translateX(1px) translateY(2px) scale(0.8);
151
136
 
152
- &:last-child{
137
+ &:last-child {
153
138
  transform: translateX(1px) translateY(-3px) rotate(180deg) scale(0.8);
154
139
  }
155
140
  }
@@ -158,7 +143,7 @@ $number-field-arrow-color: var(--number-field-arrow-color);
158
143
  }
159
144
 
160
145
  &__input {
161
- width: 120px;
146
+ width: 100%;
162
147
  outline: none;
163
148
  border: 1px solid $border-color;
164
149
  border-radius: $radius-small;
@@ -185,10 +170,10 @@ $number-field-arrow-color: var(--number-field-arrow-color);
185
170
 
186
171
  &:active:not(:disabled) {
187
172
  border: 1px solid $primary;
188
- }
173
+ }
189
174
  }
190
175
 
191
- &:focus-within #{$root}__arrows-container {
176
+ &:focus-within #{$root}__arrows-container {
192
177
  opacity: 1;
193
178
  pointer-events: all;
194
179
  }
@@ -200,12 +185,9 @@ $number-field-arrow-color: var(--number-field-arrow-color);
200
185
  top: 0;
201
186
  left: 0;
202
187
 
203
- width: 103.3333333333%;
204
- height: 111.7647058824%;
205
-
206
- transform: translate(-1.6666666667%, -5.8823529412%);
188
+ width: 100%;
189
+ height: 100%;
207
190
  background-color: transparent;
208
-
209
191
  border: 4px solid $primary-light;
210
192
  opacity: 0;
211
193
  pointer-events: none;
@@ -18,14 +18,12 @@ $eye-filled-color: var(--eye-filled-color);
18
18
  $root: &;
19
19
 
20
20
  position: relative;
21
- width: 200px;
22
-
23
21
  line-height: 24px;
24
22
  font-weight: $font-weight-sm;
25
23
 
26
24
  &__container {
27
25
  position: relative;
28
- width: 200px;
26
+ width: 100%;
29
27
  height: 34px;
30
28
 
31
29
  &::before {
@@ -33,8 +31,8 @@ $eye-filled-color: var(--eye-filled-color);
33
31
  content: "";
34
32
  width: 100%;
35
33
  height: 100%;
36
- top: 0;
37
- left: 0;
34
+
35
+ transform: translate(-4px, -4px);
38
36
 
39
37
  border-radius: 16px;
40
38
 
@@ -42,7 +40,6 @@ $eye-filled-color: var(--eye-filled-color);
42
40
  transition: opacity 150ms ease-in-out;
43
41
  opacity: 0;
44
42
  pointer-events: none;
45
- transform: translateX(-2%) translateY(-7.5%);
46
43
  }
47
44
 
48
45
  &:focus-within:not(&_disabled):not(:active)::before {
@@ -43,14 +43,17 @@ var useUniqueId_1 = __importDefault(require("@steroidsjs/core/hooks/useUniqueId"
43
43
  function RadioListFieldView(props) {
44
44
  var bem = (0, hooks_1.useBem)('RadioListFieldView');
45
45
  var prefix = (0, useUniqueId_1["default"])('radio');
46
- return (React.createElement("div", { className: bem.block() }, props.items.map(function (item, index) { return (React.createElement("div", { key: typeof item.id !== 'boolean' ? item.id : (item.id ? 'true' : 'false'), className: bem(bem.element('item', {
47
- hasError: !!props.errors
48
- }), props.className) },
46
+ return (React.createElement("div", { className: bem(bem.block(), props.className) }, props.items.map(function (item, index) { return (React.createElement("div", { key: typeof item.id !== 'boolean' ? item.id : (item.id ? 'true' : 'false'), className: bem(bem.element('item', {
47
+ hasError: !!props.errors,
48
+ size: props.size
49
+ })) },
49
50
  React.createElement("input", __assign({}, props.inputProps, { id: "".concat(prefix, "_").concat(item.id), tabIndex: index, className: bem(bem.element('input', {
50
51
  checked: props.selectedIds.includes(item.id)
51
52
  })), checked: props.selectedIds.includes(item.id), disabled: props.disabled || item.disabled, onChange: function () {
52
53
  props.onItemSelect(item.id);
53
54
  } })),
54
- React.createElement("label", { htmlFor: "".concat(prefix, "_").concat(item.id), className: bem.element('label') }, item.label))); })));
55
+ React.createElement("label", { htmlFor: "".concat(prefix, "_").concat(item.id), className: bem.element('label') },
56
+ React.createElement("span", { className: bem.element('ellipse') }),
57
+ item.label))); })));
55
58
  }
56
59
  exports["default"] = RadioListFieldView;