@steroidsjs/bootstrap 3.0.0-beta.44 → 3.0.0-beta.45

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 (37) hide show
  1. package/content/Alert/AlertView.js +1 -1
  2. package/form/Button/ButtonView.scss +3 -5
  3. package/form/FieldLayout/FieldLayoutView.js +1 -1
  4. package/form/FieldList/FieldListItemView.js +6 -4
  5. package/form/FieldList/FieldListItemView.scss +7 -36
  6. package/form/FieldList/FieldListView.js +9 -8
  7. package/form/FieldList/FieldListView.scss +57 -18
  8. package/form/FieldSet/FieldSetView.js +4 -2
  9. package/form/FieldSet/FieldSetView.scss +42 -0
  10. package/form/HtmlField/HtmlFieldView.scss +6 -3
  11. package/icons/index.js +8 -1
  12. package/icons/svgs/add.svg +3 -0
  13. package/icons/svgs/add1.svg +5 -0
  14. package/icons/svgs/comeback.svg +3 -0
  15. package/icons/svgs/edit1.svg +4 -0
  16. package/icons/svgs/field-list-remove.svg +4 -0
  17. package/icons/svgs/remove.svg +4 -0
  18. package/icons/svgs/show.svg +4 -0
  19. package/index.d.ts +3 -0
  20. package/index.js +3 -0
  21. package/index.scss +1 -0
  22. package/list/CheckboxColumn/CheckboxColumnView.d.ts +1 -2
  23. package/list/CheckboxColumn/CheckboxColumnView.js +2 -1
  24. package/list/Grid/GridView.js +7 -3
  25. package/list/Grid/GridView.scss +159 -46
  26. package/list/Grid/views/ContentColumnView/ContentColumnView.d.ts +3 -0
  27. package/list/Grid/views/ContentColumnView/ContentColumnView.js +51 -0
  28. package/list/Grid/views/ContentColumnView/ContentColumnView.scss +88 -0
  29. package/list/Grid/views/ContentColumnView/index.d.ts +2 -0
  30. package/list/Grid/views/ContentColumnView/index.js +7 -0
  31. package/list/List/ListView.js +3 -4
  32. package/list/List/ListView.scss +6 -1
  33. package/nav/Controls/ControlsView.scss +16 -3
  34. package/package.json +3 -3
  35. package/scss/mixins/button.scss +2 -0
  36. package/scss/variables/common/colors.scss +15 -0
  37. /package/icons/svgs/{close.svg → alert-close.svg} +0 -0
@@ -23,7 +23,7 @@ function Alert(props) {
23
23
  props.description && (react_1["default"].createElement("div", { className: bem.element('description') }, props.description))),
24
24
  react_1["default"].createElement("div", null, props.showClose && (react_1["default"].createElement(Icon_1["default"], { className: bem.element('icon-close', {
25
25
  large: !!props.description
26
- }), name: 'close', onClick: props.onClose })))),
26
+ }), name: 'alert-close', onClick: props.onClose })))),
27
27
  props.children || null))));
28
28
  }
29
29
  exports["default"] = Alert;
@@ -6,7 +6,7 @@ $btn-letter-spacing: 0.1em;
6
6
  .ButtonView {
7
7
  $root: &;
8
8
 
9
- transition-property: color, background-color, border-color, box-shadow;
9
+ transition-property: color, background-color, border-color, box-shadow, stroke;
10
10
  transition-duration: 0.15s;
11
11
  transition-timing-function: ease-in-out;
12
12
 
@@ -61,8 +61,6 @@ $btn-letter-spacing: 0.1em;
61
61
  }
62
62
  }
63
63
 
64
-
65
-
66
64
  &_tag {
67
65
  &-a {
68
66
  width: auto;
@@ -114,8 +112,8 @@ $btn-letter-spacing: 0.1em;
114
112
 
115
113
  &__icon {
116
114
  margin-right: 10px;
117
- width: 16px;
118
- height: 16px;
115
+ width: fit-content;
116
+ height: fit-content;
119
117
  &_without-label {
120
118
  margin: 0;
121
119
  }
@@ -32,7 +32,7 @@ var hooks_1 = require("@steroidsjs/core/hooks");
32
32
  var Icon_1 = __importDefault(require("@steroidsjs/core/ui/content/Icon"));
33
33
  function FieldLayoutView(props) {
34
34
  var bem = (0, hooks_1.useBem)('FieldLayoutView');
35
- return (React.createElement("div", { className: bem.block() },
35
+ return (React.createElement("div", { className: bem(bem.block(), props.className) },
36
36
  props.label && (React.createElement("label", { htmlFor: props.id, className: bem.element('label', {
37
37
  required: props.required,
38
38
  size: props.size
@@ -37,13 +37,15 @@ exports.__esModule = true;
37
37
  var React = __importStar(require("react"));
38
38
  var hooks_1 = require("@steroidsjs/core/hooks");
39
39
  var form_1 = require("@steroidsjs/core/ui/form");
40
+ var content_1 = require("@steroidsjs/core/ui/content");
40
41
  exports["default"] = React.memo(function (props) {
41
42
  var bem = (0, hooks_1.useBem)('FieldListItemView');
42
- return (React.createElement("tr", null,
43
- props.items.map(function (field, index) { return (React.createElement("td", { key: index, className: bem(bem.element('table-cell'), field.className) },
43
+ return (React.createElement("tr", { className: bem.block() },
44
+ props.items.map(function (field, index) { return (React.createElement("td", { key: index, className: field.className },
44
45
  React.createElement(form_1.Field, __assign({}, field, { prefix: props.prefix })))); }),
45
- props.showRemove && (React.createElement("td", { className: bem.element('table-cell', 'remove') }, (!props.required || props.rowIndex > 0) && (React.createElement("button", { type: 'button', className: bem.element('remove'), onClick: function (e) {
46
+ props.showRemove && (React.createElement("td", null, (!props.required || props.rowIndex > 0) && (React.createElement("button", { type: 'button', className: bem.element('remove'), onClick: function (e) {
46
47
  e.preventDefault();
47
48
  props.onRemove(props.rowIndex);
48
- } }, "\u00D7"))))));
49
+ } },
50
+ React.createElement(content_1.Icon, { name: 'field-list-remove' })))))));
49
51
  });
@@ -1,41 +1,12 @@
1
-
2
1
  .FieldListItemView {
3
-
4
- &__table {
5
- th, thead th, td {
6
- border: none;
7
- }
8
- }
9
-
10
- &__table-cell {
11
- .form-group {
12
- margin-bottom: 0;
13
- }
14
-
15
- &_remove {
16
- vertical-align: middle !important;
17
- }
18
- }
19
-
20
- &__table-cell-header {
21
- padding-bottom: 0 !important;
22
- }
23
-
24
2
  &__remove {
3
+ background-color: transparent;
4
+ display: flex;
5
+ justify-content: center;
6
+ align-items: center;
25
7
  cursor: pointer;
26
- color: $danger;
27
- }
28
-
29
- &__link-add {
30
- margin-left: 0.75rem;
31
- border-bottom: 1px dashed $link-color;
32
-
33
- &:hover {
34
- text-decoration: none;
35
- }
36
- }
37
-
38
- .FileFieldView__files {
39
- margin-bottom: 0;
8
+ border: none;
9
+ width: 24px;
10
+ height: 24px;
40
11
  }
41
12
  }
@@ -28,20 +28,21 @@ var hooks_1 = require("@steroidsjs/core/hooks");
28
28
  var form_1 = require("@steroidsjs/core/ui/form");
29
29
  function FieldListView(props) {
30
30
  var bem = (0, hooks_1.useBem)('FieldListView');
31
- return (React.createElement("div", { className: bem(bem.block(), props.className), style: props.style, ref: props.forwardedRef },
32
- React.createElement("table", { className: bem(bem.element('table'), 'table', props.size && 'table-' + props.size, props.tableClassName) },
31
+ return (React.createElement("div", { className: bem(bem.block({ hasAlternatingColors: props.hasAlternatingColors }), props.className), style: props.style, ref: props.forwardedRef },
32
+ React.createElement("table", { className: bem(bem.element('table'), props.tableClassName) },
33
33
  React.createElement("thead", null,
34
34
  React.createElement("tr", null,
35
- props.items.map(function (field, rowIndex) { return (React.createElement("th", { key: rowIndex, className: bem(bem.element('table-cell-header'), field.headerClassName) }, field.label)); }),
35
+ props.items.map(function (field, rowIndex) { return (React.createElement("th", { key: rowIndex, className: field.headerClassName }, field.title)); }),
36
36
  props.showRemove && (
37
37
  // eslint-disable-next-line jsx-a11y/control-has-associated-label
38
38
  React.createElement("th", null)))),
39
39
  React.createElement("tbody", null, props.children),
40
- React.createElement("tfoot", null,
40
+ props.showAdd && !props.disabled && (React.createElement("tfoot", null,
41
41
  React.createElement("tr", null,
42
- React.createElement("td", { colSpan: props.items.length }, props.showAdd && !props.disabled && (React.createElement(form_1.Button, { formId: false, color: 'secondary', className: bem.element('button-add'), onClick: function (e) {
43
- e.preventDefault();
44
- props.onAdd();
45
- } }, __('Добавить ещё')))))))));
42
+ React.createElement("td", { colSpan: props.items.length + 1 },
43
+ React.createElement(form_1.Button, { formId: false, color: 'primary', size: 'sm', outline: true, icon: 'add', className: bem.element('button-add'), onClick: function (e) {
44
+ e.preventDefault();
45
+ props.onAdd();
46
+ } }, __('Добавить')))))))));
46
47
  }
47
48
  exports["default"] = FieldListView;
@@ -1,35 +1,74 @@
1
+ :root {
2
+ --background-th: #f1f5f7;
3
+ }
4
+
5
+ html[data-theme="dark"] {
6
+ --background-th: #414141;
7
+ }
8
+
9
+ $background-th: var(--background-th);
10
+
1
11
  .FieldListView {
12
+ table {
13
+ width: 100%;
14
+ background-color: transparent;
15
+ border: 1px solid $additional-gray;
16
+ border-collapse: separate;
17
+ border-radius: 10px;
18
+ border-spacing: 0;
19
+ overflow: hidden;
20
+ }
2
21
 
3
- &__table {
4
- th, thead th, td {
5
- border: none;
6
- }
22
+ th:not(:last-child), td:not(:last-child) {
23
+ border-right: 1px solid $additional-gray;
7
24
  }
8
25
 
9
- &__table-cell {
10
- .form-group {
11
- margin-bottom: 0;
12
- }
26
+ tr th {
27
+ border-bottom: 1px solid $additional-gray;
28
+ background-color: $background-th;
29
+ color: $text-color;
30
+ font-size: 14px;
31
+ line-height: 18px;
32
+ }
13
33
 
14
- &_remove {
15
- vertical-align: middle !important;
16
- }
34
+ tr:not(:last-child) td {
35
+ border-bottom: 1px solid $additional-gray;
36
+ }
37
+
38
+ tfoot > tr > td{
39
+ border-top: 1px solid $additional-gray;
17
40
  }
18
41
 
19
- &__table-cell-header {
20
- padding-bottom: 0 !important;
42
+ tr td {
43
+ padding: 12px;
21
44
  }
22
45
 
23
- &__remove {
24
- cursor: pointer;
25
- color: $danger;
46
+ tr th {
47
+ text-align: left;
48
+ padding: 20px 12px;
49
+ }
50
+
51
+ tr td .CheckboxFieldView{
52
+ justify-content: center
53
+ }
54
+
55
+ &_hasAlternatingColors {
56
+ tr:nth-child(even) {
57
+ background-color: $additional-light-gray;
58
+ }
26
59
  }
27
60
 
28
61
  &__button-add {
29
- margin-left: 0.75rem;
62
+ > span {
63
+ gap: 4px;
64
+ }
65
+
66
+ svg > * {
67
+ stroke: inherit;
68
+ }
30
69
  }
31
70
 
32
- .FileFieldView__files {
71
+ .FieldLayoutView {
33
72
  margin-bottom: 0;
34
73
  }
35
74
  }
@@ -24,9 +24,11 @@ var __importStar = (this && this.__importStar) || function (mod) {
24
24
  };
25
25
  exports.__esModule = true;
26
26
  var React = __importStar(require("react"));
27
+ var hooks_1 = require("@steroidsjs/core/hooks");
27
28
  function FieldSetView(props) {
28
- return (React.createElement("fieldset", { className: props.className },
29
- React.createElement("legend", null, props.label),
29
+ var bem = (0, hooks_1.useBem)('FieldSetView');
30
+ return (React.createElement("fieldset", { className: bem(bem.block(), props.className) },
31
+ React.createElement("legend", { className: bem.element('legend') }, props.label),
30
32
  props.children));
31
33
  }
32
34
  exports["default"] = FieldSetView;
@@ -0,0 +1,42 @@
1
+ :root {
2
+ --legend-color: #152536;
3
+ --legend-background-color: #ffffff;
4
+ --fieldset-border-color: #E6E6E6;
5
+ }
6
+
7
+ html[data-theme="dark"] {
8
+ --legend-color: #ffffff;
9
+ --legend-background-color: #414141;
10
+ --fieldset-border-color: #595959;
11
+ }
12
+
13
+ $legend-color: var(--legend-color);
14
+ $legend-background-color: var(--legend-background-color);
15
+ $fieldset-border-color: var(--fieldset-border-color);
16
+
17
+ .FieldSetView{
18
+ border: 1px solid $fieldset-border-color;
19
+ border-radius: 8px;
20
+
21
+ &__legend {
22
+ background-color: $legend-background-color;
23
+ color: $legend-color;
24
+
25
+ padding: 8px;
26
+ margin-left: 16px;
27
+
28
+ line-height: 32px;
29
+ font-weight: 700;
30
+ font-size: 24px;
31
+
32
+ }
33
+
34
+ .FieldLayoutView {
35
+ padding: 0px 24px 24px 24px;
36
+ margin-bottom: 0px;
37
+ }
38
+
39
+ .FieldLayoutView + .FieldLayoutView {
40
+ padding-top: 0px;
41
+ }
42
+ }
@@ -1,4 +1,7 @@
1
-
2
1
  .HtmlFieldView {
3
-
4
- }
2
+ --ck-color-toolbar-background: #f1f5f7;
3
+ --ck-color-toolbar-border: #dbe2e6;
4
+ --ck-color-base-border: #dbe2e6;
5
+ --ck-border-radius: 12px;
6
+ max-width: 610px;
7
+ }
package/icons/index.js CHANGED
@@ -257,7 +257,7 @@ exports["default"] = (function (customIcons) {
257
257
  'info',
258
258
  'warning',
259
259
  'error',
260
- 'close',
260
+ 'alert-close',
261
261
  'default',
262
262
  'badge-close',
263
263
  'loader',
@@ -282,6 +282,13 @@ exports["default"] = (function (customIcons) {
282
282
  'paste',
283
283
  'pin',
284
284
  'trash',
285
+ 'comeback',
286
+ 'remove',
287
+ 'show',
288
+ 'add1',
289
+ 'edit1',
290
+ 'field-list-remove',
291
+ 'add',
285
292
  'file-loading',
286
293
  ];
287
294
  steroidsIcons.forEach(function (iconName) {
@@ -0,0 +1,3 @@
1
+ <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path d="M12.3535 6.47559L12.3739 17.7689M6.69666 12.1324L17.99 12.1528" stroke="black" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
3
+ </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.85156 11.5815C3.85156 9.68173 3.85262 8.30721 3.99355 7.25902C4.13254 6.22521 4.39929 5.58401 4.87669 5.10661C5.35409 4.62921 5.99529 4.36246 7.0291 4.22347C8.07729 4.08254 9.45181 4.08148 11.3516 4.08148H13.3516C15.2513 4.08148 16.6258 4.08254 17.674 4.22347C18.7078 4.36246 19.349 4.62921 19.8264 5.10661C20.3038 5.58401 20.5706 6.22521 20.7096 7.25902C20.8505 8.30721 20.8516 9.68173 20.8516 11.5815V13.5815C20.8516 15.4812 20.8505 16.8558 20.7096 17.9039C20.5706 18.9378 20.3038 19.579 19.8264 20.0564C19.349 20.5338 18.7078 20.8005 17.674 20.9395C16.6258 21.0804 15.2513 21.0815 13.3516 21.0815H11.3516C9.45181 21.0815 8.07729 21.0804 7.0291 20.9395C5.99529 20.8005 5.35409 20.5338 4.87669 20.0564C4.39929 19.579 4.13254 18.9378 3.99355 17.9039C3.85262 16.8558 3.85156 15.4812 3.85156 13.5815V11.5815Z" stroke="#323232"/>
3
+ <path d="M12.3516 8.58148L12.3516 16.5815" stroke="#323232" stroke-linecap="round" stroke-linejoin="round"/>
4
+ <path d="M16.3516 12.5815L8.35156 12.5815" stroke="#323232" stroke-linecap="round" stroke-linejoin="round"/>
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="M9.35156 8.58148L5.35156 12.5815M5.35156 12.5815L9.35156 16.5815M5.35156 12.5815H17.3516" 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="M6.28127 19.8645L6.28128 19.8645L6.30306 19.8591L6.30307 19.8591L8.9354 19.201C8.95052 19.1972 8.96552 19.1935 8.98041 19.1898C9.20315 19.1343 9.40033 19.0852 9.57936 18.9839C9.75839 18.8825 9.90192 18.7387 10.064 18.5762C10.0749 18.5654 10.0858 18.5544 10.0968 18.5434L17.2909 11.3493L17.2909 11.3493L17.3142 11.326C17.6276 11.0126 17.8977 10.7426 18.0849 10.4973C18.2855 10.2343 18.4373 9.94193 18.4373 9.58154C18.4373 9.22116 18.2855 8.92873 18.0849 8.66582C17.8977 8.42048 17.6276 8.15045 17.3142 7.83704L17.2909 7.81378L16.9373 8.16733L17.2909 7.81377L17.1193 7.6422L17.0961 7.61893C16.7827 7.30549 16.5126 7.03543 16.2673 6.84825C16.0044 6.64765 15.7119 6.49576 15.3516 6.49576C14.9912 6.49576 14.6988 6.64764 14.4358 6.84825C14.1905 7.03543 13.9205 7.30549 13.6071 7.61894L13.5838 7.6422L6.38972 14.8363C6.3787 14.8473 6.36775 14.8582 6.35689 14.8691C6.19442 15.0312 6.05059 15.1747 5.94923 15.3537C5.84786 15.5328 5.79879 15.7299 5.74336 15.9527C5.73965 15.9676 5.73591 15.9826 5.73213 15.9977L5.0686 18.6518C5.06639 18.6607 5.06416 18.6696 5.06192 18.6785C5.02268 18.8352 4.98077 19.0025 4.96702 19.1431C4.95189 19.2978 4.95541 19.5589 5.16482 19.7683C5.37423 19.9777 5.63529 19.9812 5.79002 19.9661C5.93055 19.9523 6.09789 19.9104 6.25457 19.8712C6.26351 19.8689 6.27241 19.8667 6.28127 19.8645Z" stroke="#323232"/>
3
+ <path d="M12.8516 8.08154L16.8516 12.0815" stroke="#323232"/>
4
+ </svg>
@@ -0,0 +1,4 @@
1
+ <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <rect x="3.35156" y="3" width="18" height="18" rx="9" fill="#323232"/>
3
+ <path d="M9.35156 9L15.3516 14.9784M9.35156 15L15.3516 9.02161" stroke="white" stroke-linecap="round" stroke-linejoin="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
+ <circle cx="12.3516" cy="12.5815" r="9" stroke="#323232"/>
3
+ <path d="M18.3516 18.5815L6.35156 6.58154" stroke="#323232"/>
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
+ <circle cx="12.3516" cy="12.5815" r="3.5" stroke="#323232"/>
3
+ <path d="M20.5396 11.5158C20.9278 11.987 21.1218 12.2227 21.1218 12.5815C21.1218 12.9403 20.9278 13.1759 20.5396 13.6472C19.1195 15.3713 15.9873 18.5815 12.3516 18.5815C8.71583 18.5815 5.58362 15.3713 4.16353 13.6472C3.77537 13.1759 3.58129 12.9403 3.58129 12.5815C3.58129 12.2227 3.77537 11.987 4.16353 11.5158C5.58362 9.79162 8.71583 6.58148 12.3516 6.58148C15.9873 6.58148 19.1195 9.79162 20.5396 11.5158Z" stroke="#323232"/>
4
+ </svg>
package/index.d.ts CHANGED
@@ -170,6 +170,9 @@ declare const _default: {
170
170
  'list.GridView': {
171
171
  lazy: () => any;
172
172
  };
173
+ 'list.ContentColumnView': {
174
+ lazy: () => any;
175
+ };
173
176
  'list.ListView': {
174
177
  lazy: () => any;
175
178
  };
package/index.js CHANGED
@@ -173,6 +173,9 @@ exports["default"] = {
173
173
  'list.GridView': {
174
174
  lazy: function () { return require('./list/Grid/GridView')["default"]; }
175
175
  },
176
+ 'list.ContentColumnView': {
177
+ lazy: function () { return require('./list/Grid/views/ContentColumnView/ContentColumnView')["default"]; }
178
+ },
176
179
  'list.ListView': {
177
180
  lazy: function () { return require('./list/List/ListView')["default"]; }
178
181
  },
package/index.scss CHANGED
@@ -33,6 +33,7 @@
33
33
  @import './form/FieldList/FieldListItemView';
34
34
  @import './form/FileField/FileFieldView';
35
35
  @import './form/FileField/FileFieldItemView';
36
+ @import './form/FieldSet/FieldSetView';
36
37
  @import './form/Form/FormView';
37
38
  @import './form/HtmlField/HtmlFieldView';
38
39
  @import './form/InputField/InputFieldView';
@@ -1,3 +1,2 @@
1
- import { IBemHocOutput } from '@steroidsjs/core/hoc/bem';
2
1
  import { ICheckboxColumnViewProps } from '@steroidsjs/core/ui/list/CheckboxColumn/CheckboxColumn';
3
- export default function CheckboxColumnView(props: ICheckboxColumnViewProps & IBemHocOutput): JSX.Element;
2
+ export default function CheckboxColumnView(props: ICheckboxColumnViewProps): JSX.Element;
@@ -40,10 +40,11 @@ exports.__esModule = true;
40
40
  var React = __importStar(require("react"));
41
41
  var CheckboxField_1 = __importDefault(require("@steroidsjs/core/ui/form/CheckboxField"));
42
42
  var hooks_1 = require("@steroidsjs/core/hooks");
43
+ var get_1 = __importDefault(require("lodash-es/get"));
43
44
  function CheckboxColumnView(props) {
44
45
  var bem = (0, hooks_1.useBem)('CheckboxColumnView');
45
46
  var CheckboxFieldInternal = CheckboxField_1["default"].WrappedComponent;
46
47
  return (React.createElement("div", { className: bem.block() },
47
- React.createElement(CheckboxFieldInternal, __assign({}, props.fieldProps, { input: props.input }))));
48
+ React.createElement(CheckboxFieldInternal, __assign({}, props.fieldProps, { input: props.input, size: props.size, label: (0, get_1["default"])(props.item, props.attribute) }))));
48
49
  }
49
50
  exports["default"] = CheckboxColumnView;
@@ -73,10 +73,14 @@ function GridView(props) {
73
73
  } }));
74
74
  }, [bem, props]);
75
75
  var emptyContent = (0, react_1.useMemo)(function () { return props.renderEmpty(); }, [props]);
76
- return props.renderList(React.createElement("div", { className: bem(bem.block({ loading: props.isLoading || ((_a = props.list) === null || _a === void 0 ? void 0 : _a.isLoading) }), props.className) },
76
+ return props.renderList(React.createElement("div", { className: bem(bem.block({
77
+ loading: props.isLoading || ((_a = props.list) === null || _a === void 0 ? void 0 : _a.isLoading),
78
+ size: props.size,
79
+ alternatingColors: props.hasAlternatingColors
80
+ }), props.className) },
77
81
  props.renderSearchForm(),
78
82
  props.renderPaginationSize(),
79
- React.createElement("table", { className: 'table table-striped' },
83
+ React.createElement("table", { className: bem.element('table') },
80
84
  React.createElement("thead", null,
81
85
  React.createElement("tr", null, props.columns.map(function (column, columnIndex) { return (React.createElement("th", { key: columnIndex, className: column.headerClassName },
82
86
  column.label,
@@ -86,7 +90,7 @@ function GridView(props) {
86
90
  renderSortButton(column.attribute, 'desc'))))); })),
87
91
  renderInsideSearchForm()),
88
92
  React.createElement("tbody", null,
89
- props.items && props.items.map(function (item, rowIndex) { return (React.createElement("tr", { key: item[props.primaryKey] || rowIndex }, props.columns.map(function (column, columnIndex) { return (React.createElement("td", { key: columnIndex, className: column.className, "data-label": (0, isString_1["default"])(column.label) ? column.label : null }, props.renderValue(item, column))); }))); }),
93
+ props.items && props.items.map(function (item, rowIndex) { return (React.createElement("tr", { key: item[props.primaryKey] || rowIndex }, props.columns.map(function (column, columnIndex) { return (React.createElement("td", { key: columnIndex, className: bem(bem.element('column'), column.className), "data-label": (0, isString_1["default"])(column.label) ? column.label : null }, props.renderValue(item, column))); }))); }),
90
94
  emptyContent && (React.createElement("tr", null,
91
95
  React.createElement("td", { colSpan: props.columns.length }, emptyContent))))),
92
96
  props.renderPagination()));
@@ -1,51 +1,164 @@
1
+ :root {
2
+ --grid-header-background-color: #f1f5f7;
3
+ --grid-border-color: #e6e6e6;
4
+ --grid-alternating-color: #F8F8F8;
5
+ --grid-td-background-color: #FFFFFF;
6
+ }
7
+
8
+ html[data-theme="dark"] {
9
+ --grid-header-background-color: #414141;
10
+ --grid-border-color: #595959;
11
+ --grid-alternating-color: #4A4B53;
12
+ --grid-td-background-color: #4E4F57;
13
+ }
14
+
15
+ $grid-header-background-color: var(--grid-header-background-color);
16
+ $grid-border-color: var(--grid-border-color);
17
+ $grid-alternating-color: var(--grid-alternating-color);
18
+ $grid-td-background-color: var(--grid-td-background-color);
19
+
1
20
  .GridView {
2
- opacity: 1;
3
- transition: opacity .2s;
4
-
5
- &_loading {
6
- opacity: .4;
7
- }
8
-
9
- //adaptive styles
10
- // @include media-breakpoint-down(sm) {
11
- // thead, tbody, th, tr {
12
- // display: block;
13
- // }
14
-
15
- // thead tr {
16
- // position: absolute;
17
- // top: -9999px;
18
- // left: -9999px;
19
- // }
20
-
21
- // td {
22
- // position: relative;
23
- // width: 100% !important;
24
- // text-align: left !important;
25
-
26
- // display: flex;
27
- // align-items: center;
28
- // white-space: pre-wrap;
29
- // }
30
-
31
- // td:before {
32
- // padding-right: 1rem;
33
- // width: 50%;
34
- // flex-shrink: 0;
35
- // content: attr(data-label);
36
- // }
37
- // }
38
-
39
- &__sort-button {
40
- opacity: 0.5;
41
-
42
- &_is-active {
43
- opacity: 1;
21
+ $root: &;
22
+
23
+ text-align: left;
24
+
25
+ width: 100%;
26
+
27
+ &__table {
28
+ width: 100%;
29
+ border: none;
30
+ border-spacing: 0;
31
+ border-collapse: separate;
32
+ border: 1px solid $grid-border-color;
33
+ border-radius: $radius-large;
34
+ margin: 24px 0;
35
+
36
+ th,
37
+ td {
38
+ color: $text-color;
39
+ background-color: $grid-td-background-color;
40
+ }
41
+ th {
42
+ font-weight: $font-weight-lg;
43
+ background-color: $grid-header-background-color;
44
+ }
45
+
46
+ th:not(:last-child),
47
+ td:not(:last-child) {
48
+ border-right: 1px solid $grid-border-color;
49
+ }
50
+
51
+ thead > tr > th,
52
+ tbody > tr:not(:last-child) > td,
53
+ tr:not(:last-child) > td,
54
+ thead:not(:last-child),
55
+ tbody:not(:last-child) {
56
+ border-bottom: 1px solid $grid-border-color;
57
+ }
58
+
59
+ thead > tr > th {
60
+ &:first-child {
61
+ border-top-left-radius: $radius-large;
62
+ }
63
+ &:last-child {
64
+ border-top-right-radius: $radius-large;
65
+ }
66
+ }
67
+
68
+ tbody > tr:last-child > td {
69
+ &:first-child {
70
+ border-bottom-left-radius: $radius-large;
71
+ }
72
+
73
+ &:last-child {
74
+ border-bottom-right-radius: $radius-large;
75
+ }
76
+ }
77
+ }
78
+
79
+ &_alternatingColors{
80
+ #{$root}__table tbody tr:nth-child(even) td {
81
+ background-color: $grid-alternating-color;
82
+ }
44
83
  }
45
84
 
46
- .IconView svg {
47
- width: 10px;
48
- height: 16px;
85
+ &_size {
86
+ &_lg {
87
+ #{$root}__table {
88
+ font-size: $font-size-lg;
89
+ line-height: $line-height-lg;
90
+ }
91
+
92
+ th,
93
+ td {
94
+ padding: 24px 16px;
95
+ }
96
+ }
97
+
98
+ &_md {
99
+ #{$root}__table {
100
+ font-size: $font-size-base;
101
+ line-height: $line-height-base;
102
+ }
103
+
104
+ th,
105
+ td {
106
+ padding: 21px 12px;
107
+ }
108
+ }
109
+
110
+ &_sm {
111
+ #{$root}__table {
112
+ font-size: $font-size-sm;
113
+ line-height: $line-height-sm;
114
+ }
115
+
116
+ th,
117
+ td {
118
+ padding: 16px 8px;
119
+ }
120
+ }
121
+ }
122
+
123
+
124
+ &__column {
125
+
126
+ .IconView {
127
+ display: inline-block;
128
+ width: 24px;
129
+ height: 24px;
130
+
131
+ svg {
132
+ width: 100%;
133
+ height: 100%;
134
+ }
135
+ }
136
+
137
+ &_hasIcon {
138
+ display: flex;
139
+ flex-flow: row nowrap;
140
+ align-items: center;
141
+
142
+ .IconView {
143
+ margin-left: 8px;
144
+ }
145
+
146
+ &-left {
147
+ span {
148
+ &:nth-child(1) {
149
+ order: 2;
150
+ }
151
+
152
+ &:nth-child(2) {
153
+ order: 1;
154
+ }
155
+ }
156
+
157
+ .IconView {
158
+ margin-left: 0;
159
+ margin-right: 8px;
160
+ }
161
+ }
162
+ }
49
163
  }
50
- }
51
164
  }
@@ -0,0 +1,3 @@
1
+ import { IContentColumnViewProps } from '@steroidsjs/core/ui/list/Grid/Grid';
2
+ import './ContentColumnView.scss';
3
+ export default function ContentColumnView(props: IContentColumnViewProps): JSX.Element;
@@ -0,0 +1,51 @@
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 Format_1 = __importDefault(require("@steroidsjs/core/ui/format/Format"));
20
+ var get_1 = __importDefault(require("lodash-es/get"));
21
+ var nav_1 = require("@steroidsjs/core/ui/nav");
22
+ var content_1 = require("@steroidsjs/core/ui/content");
23
+ require("./ContentColumnView.scss");
24
+ function ContentColumnView(props) {
25
+ var _a, _b, _c, _d, _e;
26
+ var bem = (0, useBem_1["default"])('ContentColumnView');
27
+ var hasLink = !!((_a = props.link) === null || _a === void 0 ? void 0 : _a.attribute);
28
+ var hasPicture = !!((_b = props.picture) === null || _b === void 0 ? void 0 : _b.attribute);
29
+ var hasIcon = !!((_c = props.icon) === null || _c === void 0 ? void 0 : _c.attribute);
30
+ var hasSubtitle = !!props.subtitleAttribute;
31
+ var hasTextData = !!props.attribute || !!props.subtitleAttribute || hasLink;
32
+ var renderFormat = function () { return (react_1["default"].createElement(Format_1["default"], __assign({}, props, (props.formatter || {}), { attribute: hasLink ? props.link.attribute : props.attribute }))); };
33
+ var renderValue = function () {
34
+ var _a;
35
+ if (hasLink) {
36
+ return (react_1["default"].createElement(nav_1.Link, __assign({}, props.link.linkProps, { url: (0, get_1["default"])(props.item, (_a = props.link) === null || _a === void 0 ? void 0 : _a.urlAttribute), className: bem.element('link') }), renderFormat()));
37
+ }
38
+ return (react_1["default"].createElement("span", { className: bem.element('value') }, renderFormat()));
39
+ };
40
+ return (react_1["default"].createElement("div", { className: bem(bem.block({
41
+ size: props.size,
42
+ isLeft: ((_d = props.picture) === null || _d === void 0 ? void 0 : _d.isLeft) || ((_e = props.icon) === null || _e === void 0 ? void 0 : _e.isLeft)
43
+ })) },
44
+ hasTextData && (react_1["default"].createElement("div", { className: bem.element('data') },
45
+ renderValue(),
46
+ hasSubtitle && react_1["default"].createElement("span", { className: bem.element('subtitle') }, (0, get_1["default"])(props.item, props.subtitleAttribute)))),
47
+ hasPicture && (react_1["default"].createElement("span", { className: bem.element('picture') },
48
+ react_1["default"].createElement("img", { src: (0, get_1["default"])(props.item, props.picture.attribute), alt: "cell element" }))),
49
+ hasIcon && (react_1["default"].createElement(content_1.Icon, { name: (0, get_1["default"])(props.item, props.icon.attribute), className: bem.element('icon') }))));
50
+ }
51
+ exports["default"] = ContentColumnView;
@@ -0,0 +1,88 @@
1
+ @import "style/variables";
2
+
3
+ :root {
4
+ --grid-icon-color: #323232;
5
+ }
6
+
7
+ html[data-theme="dark"] {
8
+ --grid-icon-color: #ffffff;
9
+ }
10
+
11
+ $grid-icon-color: var(--grid-icon-color);
12
+
13
+ .ContentColumnView {
14
+ $root: &;
15
+
16
+ display: flex;
17
+ flex-flow: row nowrap;
18
+ align-items: center;
19
+ column-gap: 8px;
20
+
21
+ > * {
22
+ display: inline-block;
23
+ }
24
+
25
+ &__data {
26
+ display: flex;
27
+ flex-flow: column;
28
+ }
29
+
30
+ &__subtitle {
31
+ color: $placeholder-color;
32
+ }
33
+
34
+ &__picture {
35
+ width: 24px;
36
+ height: 24px;
37
+ overflow: hidden;
38
+ border-radius: 4px;
39
+
40
+ img {
41
+ width: 100%;
42
+ height: 100%;
43
+ object-fit: cover;
44
+ }
45
+ }
46
+
47
+ &__icon {
48
+ svg {
49
+ > * {
50
+ stroke: $grid-icon-color;
51
+ }
52
+ }
53
+ }
54
+
55
+ &_size {
56
+ &_lg {
57
+ #{$root}__subtitle {
58
+ font-size: $font-size-base;
59
+ line-height: $line-height-base;
60
+ }
61
+
62
+ #{$root}__avatar-wrapper {
63
+ width: 56px;
64
+ height: 56px;
65
+ }
66
+ }
67
+
68
+ &_md {
69
+ #{$root}__subtitle {
70
+ font-size: $font-size-sm;
71
+ line-height: $line-height-sm;
72
+ }
73
+ }
74
+
75
+ &_sm {
76
+ #{$root}__subtitle {
77
+ font-size: $font-size-xs;
78
+ line-height: $line-height-xs;
79
+ }
80
+ }
81
+ }
82
+
83
+ &_isLeft {
84
+ #{$root}__data {
85
+ order: 2;
86
+ }
87
+ }
88
+ }
@@ -0,0 +1,2 @@
1
+ import ContentColumnView from './ContentColumnView';
2
+ export default ContentColumnView;
@@ -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 ContentColumnView_1 = __importDefault(require("./ContentColumnView"));
7
+ exports["default"] = ContentColumnView_1["default"];
@@ -36,10 +36,9 @@ function ListView(props) {
36
36
  return null;
37
37
  }
38
38
  return (React.createElement("div", { className: bem.element('pagination') },
39
- React.createElement("div", null, pagination),
40
- React.createElement("div", { className: bem.element('pagination-sizes') },
41
- layout,
42
- paginationSize)));
39
+ pagination && (React.createElement("div", { className: bem.element('pagination-button') }, pagination)),
40
+ paginationSize && (React.createElement("div", { className: bem.element('pagination-sizes') }, paginationSize)),
41
+ layout && (React.createElement("div", { className: bem.element('pagination-layout') }, layout))));
43
42
  };
44
43
  return props.renderList(React.createElement("div", { className: bem(bem.block({ loading: props.isLoading || props.list.isLoading }), props.className) },
45
44
  props.renderSearchForm(),
@@ -2,17 +2,22 @@
2
2
  &__pagination {
3
3
  display: flex;
4
4
  justify-content: space-between;
5
+ align-items: center;
5
6
  flex-flow: row nowrap;
6
7
  margin-bottom: 3px;
7
8
 
8
9
  &-sizes {
9
- width: calc(100% / 4);
10
+ width: fit-content;
10
11
 
11
12
  .PaginationSizeView__sizes {
12
13
  display: flex;
13
14
  flex-flow: row nowrap;
14
15
  }
15
16
  }
17
+
18
+ &-button {
19
+ margin: 0 auto;
20
+ }
16
21
  }
17
22
 
18
23
  &__content {
@@ -1,5 +1,18 @@
1
1
  .ControlsView {
2
- display: flex;
3
- flex-flow: row;
4
- justify-content: space-between;
2
+ display: flex;
3
+ flex-flow: row;
4
+ justify-content: space-between;
5
+
6
+ width: 24px;
7
+ height: 24px;
8
+
9
+ a {
10
+ display: inline-block;
11
+ width: 100%;
12
+ height: 100%;
13
+ }
14
+
15
+ .ButtonView {
16
+ border: none;
17
+ }
5
18
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@steroidsjs/bootstrap",
3
- "version": "3.0.0-beta.44",
3
+ "version": "3.0.0-beta.45",
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.24",
38
+ "@steroidsjs/core": "^3.0 || >=3.0.0-beta.25",
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.24"
56
+ "@steroidsjs/core": "^3.0 || >=3.0.0-beta.25"
57
57
  }
58
58
  }
@@ -50,6 +50,7 @@
50
50
  @mixin button-outline-theme($colorMap, $colorName, $root) {
51
51
  background-color: transparent;
52
52
  color: map-get($colorMap, color);
53
+ stroke: map-get($colorMap, color);
53
54
  border: 1px solid map-get($colorMap, color);
54
55
 
55
56
  @include svg-color(map-get($colorMap, text-color));
@@ -67,6 +68,7 @@
67
68
  @include svg-color(map-get($colorMap, color-light));
68
69
  color: map-get($colorMap, color-light);
69
70
  border-color: map-get($colorMap, color-light);
71
+ stroke: map-get($colorMap, color-light);
70
72
  box-shadow: none;
71
73
  }
72
74
 
@@ -32,6 +32,11 @@
32
32
  --placeholder-disabled-color: rgba(0, 0, 0, 0.3);
33
33
  --background-disabled-color: #f1f5f7;
34
34
  --element-background-color: #FFFFFF;
35
+ --additional-gray-dark: #6F6B76;
36
+ --additional-gray: #E6E6E6;
37
+ --additional-light-gray: #F8F8F8;
38
+ --additional-light: #9088A1;
39
+ --additional-light-blue: #F9FCFF;
35
40
  }
36
41
 
37
42
  html[data-theme="dark"] {
@@ -68,6 +73,11 @@ html[data-theme="dark"] {
68
73
  --placeholder-disabled-color: rgba(255, 255, 255, 0.1);
69
74
  --background-disabled-color: #5b5c6b;
70
75
  --element-background-color: #414141;
76
+ --additional-gray-dark: #6B6477;
77
+ --additional-gray: #595959;
78
+ --additional-light-gray: #4A4B53;
79
+ --additional-light: #B7AFC7;
80
+ --additional-light-blue: #DAEAF6;
71
81
  }
72
82
 
73
83
  /*
@@ -107,6 +117,11 @@ $placeholder-color: var(--placeholder-color);
107
117
  $placeholder-disabled-color: var(--placeholder-disabled-color);
108
118
  $background-disabled-color: var(--background-disabled-color);
109
119
  $element-background-color: var(--element-background-color);
120
+ $additional-gray-dark: var(--additional-gray-dark);
121
+ $additional-gray: var(--additional-gray);
122
+ $additional-light-gray: var(--additional-light-gray);
123
+ $additional-light: var(--additional-light);
124
+ $additional-light-blue: var(--additional-light-blue);
110
125
 
111
126
  /*
112
127
  * Common colors
File without changes