linear-react-components-ui 0.4.76-beta.11 → 0.4.76-beta.16

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 (48) hide show
  1. package/.husky/pre-commit +2 -2
  2. package/lib/assets/styles/button.scss +17 -10
  3. package/lib/assets/styles/checkbox.scss +92 -70
  4. package/lib/assets/styles/commons.scss +26 -0
  5. package/lib/assets/styles/drawers.scss +22 -6
  6. package/lib/assets/styles/gridlayout.scss +2 -1
  7. package/lib/assets/styles/input.scss +21 -0
  8. package/lib/assets/styles/label.scss +9 -1
  9. package/lib/assets/styles/radio.scss +19 -0
  10. package/lib/assets/styles/skeleton.scss +48 -0
  11. package/lib/assets/styles/table.scss +6 -5
  12. package/lib/assets/styles/tabs.scss +2 -1
  13. package/lib/assets/styles/treeview.scss +3 -0
  14. package/lib/buttons/DefaultButton.js +7 -4
  15. package/lib/buttons/split_button/index.js +8 -4
  16. package/lib/checkbox/Label.js +1 -1
  17. package/lib/checkbox/checkbox.spec.js +16 -16
  18. package/lib/checkbox/index.js +16 -9
  19. package/lib/dialog/form/index.js +10 -3
  20. package/lib/drawer/Drawer.js +9 -5
  21. package/lib/drawer/Header.js +15 -5
  22. package/lib/form/helpers.js +12 -1
  23. package/lib/form/index.js +16 -20
  24. package/lib/form/withFieldHOC.js +3 -1
  25. package/lib/inputs/base/InputTextBase.js +10 -5
  26. package/lib/inputs/base/helpers.js +12 -16
  27. package/lib/inputs/date/date.spec.js +46 -36
  28. package/lib/inputs/date/helpers.js +7 -7
  29. package/lib/inputs/date/index.js +3 -2
  30. package/lib/inputs/mask/imaskHOC.js +2 -1
  31. package/lib/labels/DefaultLabel.js +7 -4
  32. package/lib/menus/sidenav/NavMenuItem.js +2 -2
  33. package/lib/radio/index.js +9 -6
  34. package/lib/skeleton/SkeletonContainer.js +42 -0
  35. package/lib/skeleton/index.js +84 -0
  36. package/lib/table/HeaderColumn.js +24 -3
  37. package/lib/table/Row.js +6 -2
  38. package/lib/table/RowColumn.js +22 -3
  39. package/lib/table/index.js +11 -4
  40. package/lib/tabs/MenuItems.js +9 -3
  41. package/lib/tabs/index.js +18 -15
  42. package/lib/toolbar/ButtonBar.js +30 -24
  43. package/lib/toolbar/LabelBar.js +22 -27
  44. package/lib/toolbar/helpers.js +12 -0
  45. package/lib/toolbar/index.js +23 -12
  46. package/lib/treeview/Node.js +17 -5
  47. package/lib/treeview/index.js +8 -4
  48. package/package.json +1 -1
package/.husky/pre-commit CHANGED
@@ -1,4 +1,4 @@
1
1
  #!/bin/sh
2
- . "$(dirname "$0")/_/husky.sh"
2
+ # . "$(dirname "$0")/_/husky.sh"
3
3
 
4
- npm run check:js
4
+ # npm run check:js
@@ -275,16 +275,17 @@ $shadow-button-inset-default: inset 0 0 0 1px $default-border-color, $shadow-but
275
275
  }
276
276
  }
277
277
 
278
- .btn-container, .toolbar-group {
278
+ .btn-container,
279
+ .toolbar-group {
279
280
  width: auto;
280
- > .button-component {
281
+ > .button-component {
281
282
  margin-right: 10px;
282
283
  line-height: 15px;
283
284
  }
284
- > .button-component:last-child {
285
+ > .button-component:last-child {
285
286
  margin-right: 1px;
286
287
  }
287
- }
288
+ }
288
289
 
289
290
  .button-component {
290
291
  &.-primary .dropdown-icon,
@@ -298,15 +299,12 @@ $shadow-button-inset-default: inset 0 0 0 1px $default-border-color, $shadow-but
298
299
  margin-left: 7px;
299
300
  margin-right: -10px;
300
301
  }
301
- // height: 100%;
302
302
  &.icon-right .icon-component {
303
303
  float: right;
304
- // line-height: 1.5px;
305
304
  margin: 1px 0 0 6px;
306
305
  }
307
306
  &.icon-left .icon-component {
308
307
  float: left;
309
- // line-height: 1.5px;
310
308
  margin: 1px 6px 0 0;
311
309
  }
312
310
  &.icon-top .icon-component {
@@ -314,11 +312,8 @@ $shadow-button-inset-default: inset 0 0 0 1px $default-border-color, $shadow-but
314
312
  width: 100%;
315
313
  }
316
314
  &.icon-center .icon-component {
317
- // line-height: 1.5px;
318
315
  text-align: center;
319
316
  vertical-align: center;
320
- // align-items: inherit;
321
- // justify-content: inherit;
322
317
  }
323
318
  &.icon-bottom .icon-component {
324
319
  position: relative;
@@ -329,3 +324,15 @@ $shadow-button-inset-default: inset 0 0 0 1px $default-border-color, $shadow-but
329
324
  vertical-align: middle;
330
325
  }
331
326
  }
327
+
328
+ .button-component.-skeletonized {
329
+ @extend %skeleton-component;
330
+ color: transparent !important;
331
+ text-shadow: none;
332
+ box-shadow: none;
333
+ border-color: transparent !important;
334
+
335
+ > svg {
336
+ display: none;
337
+ }
338
+ }
@@ -1,79 +1,101 @@
1
1
  @import "colors.scss";
2
2
  @import "commons.scss";
3
3
  @import "effects.scss";
4
+
4
5
  .checkbox-component {
5
- position: absolute;
6
- z-index: 0;
7
- left: -9999999999999px;
8
- &:disabled + span {
9
- @extend %component-disabled;
10
- }
11
- &:disabled + span + .description {
12
- @extend %component-menu-disabled;
13
- }
14
- &:checked + span:before {
15
- content: "✓";
16
- display: flex;
17
- align-items: center;
18
- justify-content: center;
19
- position: static;
20
- margin-top: -5px;
21
- font-weight: 600;
22
- height: 28px;
23
- }
24
- + span {
25
- display: inline-block;
26
- position: relative;
27
- top: -1px;
28
- width: 18px;
29
- height: 18px;
30
- margin: -1px 0px 0 0;
31
- margin-right: 4px;
32
- vertical-align: middle;
33
- background: $font-color-second left top no-repeat;
34
- border: 1px solid $component-border-color;
35
- cursor: pointer;
36
- &:hover {
37
- animation-duration: .5s;
38
- animation-name: blink-effect;
39
- animation-iteration-count: infinite;
40
- animation-direction: alternate;
6
+ > .inputcontent {
7
+ > .input {
8
+ position: absolute;
9
+ z-index: 0;
10
+ left: -9999999999999px;
11
+ &:disabled + span {
12
+ @extend %component-disabled;
13
+ }
14
+ &:disabled + span + .description {
15
+ @extend %component-menu-disabled;
16
+ }
17
+ &:checked + span:before {
18
+ content: "✓";
19
+ display: flex;
20
+ align-items: center;
21
+ justify-content: center;
22
+ position: static;
23
+ margin-top: -5px;
24
+ font-weight: 600;
25
+ height: 28px;
26
+ }
27
+ + span {
28
+ display: inline-block;
29
+ position: relative;
30
+ top: -1px;
31
+ width: 18px;
32
+ height: 18px;
33
+ margin: -1px 0px 0 0;
34
+ margin-right: 4px;
35
+ vertical-align: middle;
36
+ background: $font-color-second left top no-repeat;
37
+ border: 1px solid $component-border-color;
38
+ cursor: pointer;
39
+ &:hover {
40
+ animation-duration: .5s;
41
+ animation-name: blink-effect;
42
+ animation-iteration-count: infinite;
43
+ animation-direction: alternate;
44
+ }
45
+ }
46
+ &:checked + span {
47
+ background-color: $check-background;
48
+ color: $font-color-second;
49
+ animation-duration: .2s;
50
+ animation-name: select-checkbox;
51
+ animation-iteration-count: 1;
52
+ animation-direction: Normal;
53
+ box-shadow: inset 0 0 0 1px $checked,
54
+ inset 0 0 0 0 #FFFFFF,
55
+ inset 0 0 0 16px $checked-effect;
56
+ }
57
+ &:focus + span {
58
+ border: 2px solid $component-selected-color;
59
+ }
60
+ &:disabled:checked + span:before {
61
+ @extend %component-menu-disabled;
62
+ border: 1px solid;
63
+ margin-top: -1px;
64
+ width: 18px;
65
+ height: 18px;
66
+ background-color: rgb(229, 229, 229);
67
+ margin-left: -1px;
68
+ }
69
+ }
70
+ > .description {
71
+ @extend %input-label;
72
+ margin-left: 2px;
73
+ cursor: pointer ;
41
74
  }
42
75
  }
43
- &:checked + span {
44
- background-color: $check-background;
45
- color: $font-color-second;
46
- animation-duration: .2s;
47
- animation-name: select-checkbox;
48
- animation-iteration-count: 1;
49
- animation-direction: Normal;
50
- box-shadow: inset 0 0 0 1px $checked,
51
- inset 0 0 0 0 #FFFFFF,
52
- inset 0 0 0 16px $checked-effect;
53
- }
54
- &:focus + span {
55
- border: 2px solid $component-selected-color;
76
+
77
+ > .hint {
78
+ @extend %hint-text;
79
+ margin-top: 0;
80
+ padding-left: 22px;
56
81
  }
57
- &:disabled:checked + span:before {
58
- @extend %component-menu-disabled;
59
- border: 1px solid;
60
- margin-top: -1px;
61
- width: 18px;
62
- height: 18px;
63
- background-color: rgb(229, 229, 229);
64
- margin-left: -1px;
82
+
83
+ &.-skeletonized {
84
+ > .inputcontent {
85
+ .input {
86
+ + span {
87
+ @extend %skeleton-component;
88
+ border-color: transparent;
89
+ }
90
+ &:checked + span,
91
+ &:disabled:checked + span:before {
92
+ @extend %skeleton-component;
93
+ }
94
+ }
95
+ }
96
+ > .inputcontent > .description,
97
+ > .hint > span {
98
+ @extend %skeleton-component;
99
+ }
65
100
  }
66
101
  }
67
-
68
- .checkbox-hint {
69
- @extend %hint-text;
70
- margin-top: 0;
71
- padding-left: 22px;
72
- }
73
-
74
- .checkbox-description {
75
- @extend %input-label;
76
- margin-left: 2px;
77
- cursor: pointer ;
78
- }
79
-
@@ -99,3 +99,29 @@
99
99
  font-size: 17px;
100
100
  border: none;
101
101
  }
102
+
103
+ %skeleton-component {
104
+ pointer-events: none;
105
+ user-select: none;
106
+ color: transparent !important;
107
+ text-shadow: none !important;
108
+ box-shadow: none;
109
+ background-image: linear-gradient(to right, #e7edf1 0%, #f8f8f8 50%, #e7edf1 100%);
110
+ background-size: 400% 400%;
111
+ background-repeat: initial;
112
+ animation: shimmer 1.2s ease-in-out infinite;
113
+
114
+ &.-white {
115
+ background-image: linear-gradient(to right, #fff 0%, #e7edf1 50%, #fff 100%);
116
+ }
117
+ }
118
+
119
+ /* Efeito utilizado para o componente Skeleton */
120
+ @keyframes shimmer {
121
+ 0% {
122
+ background-position: 0% 0%;
123
+ }
124
+ 100% {
125
+ background-position: -135% 0%;
126
+ }
127
+ }
@@ -1,4 +1,5 @@
1
1
  @import "colors.scss";
2
+ @import "commons.scss";
2
3
  @import "effects.scss";
3
4
  .drawer-component {
4
5
  position: fixed;
@@ -58,18 +59,17 @@
58
59
  display: flex;
59
60
  flex-direction: column;
60
61
  > .drawerheader {
61
- align-items: center;
62
62
  background: #ffffff;
63
63
  color: #252424;
64
64
  font-size: 20px;
65
65
  font-weight: 600;
66
66
  margin: 10px 0;
67
- display: inline-block;
67
+ display: flex;
68
68
  width: 100%;
69
69
  .left {
70
+ flex: 1;
70
71
  margin-right: 10px;
71
72
  margin-right: 10px;
72
- float: left;
73
73
  > .title-subtitle {
74
74
  display: flex;
75
75
  width: 100%;
@@ -86,8 +86,9 @@
86
86
  }
87
87
  > .drawer-subtitle {
88
88
  font-weight: 500;
89
- display: block;
90
- width: 100%;
89
+ display: initial;
90
+ max-width: 100%;
91
+ overflow-wrap: break-word;
91
92
  font-size: 14px;
92
93
  }
93
94
  }
@@ -96,7 +97,6 @@
96
97
  &.modal-title {
97
98
  color: #4e4c4c;
98
99
  font-weight: 600;
99
- float: right;
100
100
  }
101
101
  }
102
102
  .closebutton {
@@ -116,6 +116,22 @@
116
116
  width: 100%;
117
117
  padding-bottom: 80px
118
118
  }
119
+
120
+ &.-skeletonized {
121
+ > .drawerheader {
122
+ .title-subtitle > .drawer-title,
123
+ .title-subtitle > .icon-header {
124
+ @extend %skeleton-component;
125
+
126
+ > svg {
127
+ fill: transparent;
128
+ }
129
+ }
130
+ .drawer-subtitle {
131
+ @extend %skeleton-component;
132
+ }
133
+ }
134
+ }
119
135
  }
120
136
  }
121
137
 
@@ -22,7 +22,8 @@ html {
22
22
 
23
23
  .grid-container {
24
24
  margin-bottom: 5px;
25
- &.-withinput {
25
+ &.-withinput,
26
+ &.-withskeleton {
26
27
  margin-bottom: 10px;
27
28
  }
28
29
  }
@@ -111,6 +111,27 @@
111
111
  }
112
112
  }
113
113
 
114
+ .input-base-component.-skeletonized {
115
+ > .labelcontainer > .label,
116
+ > .hint {
117
+ @extend %skeleton-component;
118
+ color: transparent;
119
+ }
120
+ > .inputwrapper {
121
+ border: 1px solid transparent;
122
+ > .sidebuttons {
123
+ display: none;
124
+ }
125
+ > .inputcontent > .textinput {
126
+ @extend %skeleton-component;
127
+ content-visibility: hidden;
128
+ &.-readonly {
129
+ @extend %skeleton-component;
130
+ }
131
+ }
132
+ }
133
+ }
134
+
114
135
  .textarea-container {
115
136
  height: auto;
116
137
  }
@@ -96,6 +96,15 @@ $shadow-text-button: 0 1px 0 rgba(0,0,0,.1);
96
96
  }
97
97
  }
98
98
 
99
+ .label-component.-skeletonized {
100
+ @extend %skeleton-component;
101
+ border-color: transparent;
102
+
103
+ > svg {
104
+ fill: transparent;
105
+ }
106
+ }
107
+
99
108
  .lbl-container {
100
109
  width: auto;
101
110
  .label-component {
@@ -105,4 +114,3 @@ $shadow-text-button: 0 1px 0 rgba(0,0,0,.1);
105
114
  margin-right: 2px;
106
115
  }
107
116
  }
108
-
@@ -89,3 +89,22 @@ $radio-button-ripple-size: 15px;
89
89
  -webkit-transform: scale(1);
90
90
  transform: scale(1);
91
91
  }
92
+
93
+ .radio-button.-skeletonized {
94
+ > .radio-component:not(:checked) +.description,
95
+ > .radio-component:checked +.description {
96
+ cursor: initial;
97
+ }
98
+
99
+ > .radio-component:checked + .description:before,
100
+ > .radio-component:checked +.description:after,
101
+ > .radio-component:not(:checked) + .description:before,
102
+ > .radio-component:not(:checked) +.description:after {
103
+ @extend %skeleton-component;
104
+ border-color: transparent;
105
+ }
106
+
107
+ > .description > span {
108
+ @extend %skeleton-component;
109
+ }
110
+ }
@@ -0,0 +1,48 @@
1
+ @import "commons.scss";
2
+ @import "colors.scss";
3
+ @import "effects.scss";
4
+
5
+ .skeletoncontainer-component {
6
+ width: 100%;
7
+ height: 100%;
8
+ display: flex;
9
+ flex-direction: column;
10
+ gap: 10px;
11
+
12
+ &.-row {
13
+ flex-direction: row;
14
+ }
15
+ }
16
+
17
+ .skeleton-component {
18
+ width: 100%;
19
+ height: 100%;
20
+ flex-grow: 1;
21
+ margin-bottom: 10px;
22
+ @extend %skeleton-component;
23
+
24
+ &.-round {
25
+ flex-grow: 0;
26
+ margin: 0;
27
+ padding: 0;
28
+ box-sizing: border-box;
29
+ border-radius: 50%;
30
+
31
+ &.-mini {
32
+ width: 36px;
33
+ height: 36px;
34
+ }
35
+ &.-small {
36
+ width: 48px;
37
+ height: 48px;
38
+ }
39
+ &.-medium {
40
+ width: 64px;
41
+ height: 64px;
42
+ }
43
+ &.-large {
44
+ width: 96px;
45
+ height: 96px;
46
+ }
47
+ }
48
+ }
@@ -1,11 +1,6 @@
1
1
  @import "colors.scss";
2
2
  @import "effects.scss";
3
3
 
4
- .table-component,
5
- .innertable {
6
- contain: strict;
7
- }
8
-
9
4
  .table-component {
10
5
  width: 100%;
11
6
  max-width: 100%;
@@ -123,3 +118,9 @@
123
118
  }
124
119
  }
125
120
  }
121
+
122
+ .table-component.-skeletonized {
123
+ > .bodycontainer {
124
+ overflow: hidden;
125
+ }
126
+ }
@@ -95,7 +95,8 @@
95
95
  > .menucontainer {
96
96
  display: flex;
97
97
  flex-wrap: nowrap;
98
- max-width: 100%;
98
+ width: 100%;
99
+ min-height: 35px;
99
100
  overflow: hidden;
100
101
  @extend %tab-component-menus;
101
102
  > .dropdownbutton {
@@ -45,6 +45,7 @@
45
45
  display: flex;
46
46
  justify-content: flex-start;
47
47
  align-items: center;
48
+ color: $font-color-soft;
48
49
  >.node-menu {
49
50
  animation: revealelement 0.3s forwards ease-in-out;
50
51
  margin-left: 10px;
@@ -62,7 +63,9 @@
62
63
  margin-left: 10px;
63
64
  }
64
65
  &:hover {
66
+ cursor: pointer;
65
67
  background-color: rgb(209, 209, 209);
68
+ text-decoration: underline;
66
69
  }
67
70
  }
68
71
  > .nodelist {
@@ -70,7 +70,8 @@ var DefaultButton = function DefaultButton(props) {
70
70
  transparent = props.transparent,
71
71
  round = props.round,
72
72
  permissionAttr = props.permissionAttr,
73
- _onBlur = props.onBlur;
73
+ _onBlur = props.onBlur,
74
+ skeletonize = props.skeletonize;
74
75
 
75
76
  var _useState = (0, _react.useState)(false),
76
77
  _useState2 = _slicedToArray(_useState, 2),
@@ -152,7 +153,7 @@ var DefaultButton = function DefaultButton(props) {
152
153
  if (_onBlur) _onBlur(e);
153
154
  },
154
155
  disabled: shouldDisable(),
155
- className: "".concat(getClass(), " ").concat(activeButton ? '-toggleable' : ''),
156
+ className: "".concat(getClass(), " ").concat(activeButton ? '-toggleable' : '', " ").concat(skeletonize ? '-skeletonized' : ''),
156
157
  ref: function ref(r) {
157
158
  if (targetRef) targetRef(r);
158
159
  setButtonRef(r);
@@ -196,7 +197,8 @@ DefaultButton.propTypes = {
196
197
  id: _propTypes["default"].string,
197
198
  permissionAttr: _propTypes["default"].oneOfType([_propTypes["default"].object, _propTypes["default"].arrayOf(_propTypes["default"].object)]),
198
199
  className: _propTypes["default"].string,
199
- transparent: _propTypes["default"].bool
200
+ transparent: _propTypes["default"].bool,
201
+ skeletonize: _propTypes["default"].bool
200
202
  };
201
203
  DefaultButton.defaultProps = {
202
204
  label: '',
@@ -228,7 +230,8 @@ DefaultButton.defaultProps = {
228
230
  id: undefined,
229
231
  permissionAttr: undefined,
230
232
  className: undefined,
231
- transparent: false
233
+ transparent: false,
234
+ skeletonize: false
232
235
  };
233
236
 
234
237
  var _default = (0, _withDropdown["default"])((0, _withTooltip["default"])(DefaultButton));
@@ -22,13 +22,15 @@ var SplitButton = function SplitButton(props) {
22
22
  boxShadow = props.boxShadow,
23
23
  dropdownAlign = props.dropdownAlign,
24
24
  visible = props.visible,
25
- permissionAttr = props.permissionAttr;
25
+ permissionAttr = props.permissionAttr,
26
+ skeletonize = props.skeletonize;
26
27
  var splitProps = {
27
28
  customClass: customClass,
28
29
  size: size,
29
30
  boxShadow: boxShadow,
30
31
  visible: visible,
31
- permissionAttr: permissionAttr
32
+ permissionAttr: permissionAttr,
33
+ skeletonize: skeletonize
32
34
  };
33
35
  return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(_DefaultButton["default"], _extends({}, props, {
34
36
  style: {
@@ -64,7 +66,8 @@ SplitButton.propTypes = {
64
66
  boxShadow: _propTypes["default"].bool,
65
67
  dropdownAlign: _propTypes["default"].string,
66
68
  visible: _propTypes["default"].bool,
67
- permissionAttr: _propTypes["default"].oneOfType([_propTypes["default"].object, _propTypes["default"].arrayOf(_propTypes["default"].object)])
69
+ permissionAttr: _propTypes["default"].oneOfType([_propTypes["default"].object, _propTypes["default"].arrayOf(_propTypes["default"].object)]),
70
+ skeletonize: _propTypes["default"].bool
68
71
  };
69
72
  SplitButton.defaultProps = {
70
73
  customClass: '',
@@ -73,7 +76,8 @@ SplitButton.defaultProps = {
73
76
  boxShadow: true,
74
77
  dropdownAlign: 'left',
75
78
  visible: true,
76
- permissionAttr: undefined
79
+ permissionAttr: undefined,
80
+ skeletonize: false
77
81
  };
78
82
  var _default = SplitButton;
79
83
  exports["default"] = _default;
@@ -17,7 +17,7 @@ var Label = function Label(_ref) {
17
17
  var label = _ref.label,
18
18
  targetRef = _ref.targetRef;
19
19
  return /*#__PURE__*/_react["default"].createElement("span", {
20
- className: "checkbox-description",
20
+ className: "description",
21
21
  ref: function ref(r) {
22
22
  return targetRef && targetRef(r);
23
23
  }