@ntbjs/react-components 0.0.1-beta.22 → 0.0.1-beta.26

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.
@@ -5,9 +5,10 @@ var React = require('react');
5
5
  var lodash = require('lodash');
6
6
  var reactLazyLoadImageComponent = require('react-lazy-load-image-component');
7
7
  var ActionButton = require('./ActionButton-10a681b9.js');
8
+ require('./Button-ad55d102.js');
8
9
  require('./Checkbox-791a409f.js');
9
10
  require('./Radio-9271a4b6.js');
10
- require('./TextInput-a4855d3e.js');
11
+ require('./TextInput-099562d7.js');
11
12
  require('./Popover-0ff13419.js');
12
13
  var Tooltip = require('./Tooltip-85e7d561.js');
13
14
  var styled = require('styled-components');
@@ -0,0 +1,140 @@
1
+ 'use strict';
2
+
3
+ var defaultTheme = require('./defaultTheme-18d7c1ee.js');
4
+ var React = require('react');
5
+ var styled = require('styled-components');
6
+
7
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
8
+
9
+ var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
10
+ var styled__default = /*#__PURE__*/_interopDefaultLegacy(styled);
11
+
12
+ var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10, _templateObject11, _templateObject12;
13
+ var Button$1 = styled__default['default'].button.attrs(defaultTheme.applyDefaultTheme)(_templateObject || (_templateObject = defaultTheme._taggedTemplateLiteral(["\n position: relative;\n border-radius: 3px;\n font-family: inherit;\n font-size: inherit;\n font-weight: 500;\n padding: 8px 18px;\n cursor: pointer;\n transition: opacity 200ms;\n background: ", ";\n border: 2px solid ", ";\n\n ", "\n\n && {\n ", ";\n }\n\n && {\n ", ";\n }\n\n ", ";\n\n ", ";\n\n ", ";\n"])), function (props) {
14
+ return props.theme.getColor('emerald-500');
15
+ }, function (props) {
16
+ return props.theme.getColor('emerald-500');
17
+ }, function (props) {
18
+ return props.theme.themeProp('color', props.theme.getColor('white'), props.theme.getColor('white'));
19
+ }, function (props) {
20
+ return props.secondary && styled.css(_templateObject2 || (_templateObject2 = defaultTheme._taggedTemplateLiteral(["\n background: ", ";\n ", "\n border-color: ", ";\n "])), function (props) {
21
+ return props.theme.getColor('gray-200');
22
+ }, props.theme.themeProp('color', props.theme.getColor('gray-700'), props.theme.getColor('gray-700')), function (props) {
23
+ return props.theme.getColor('gray-200');
24
+ });
25
+ }, function (props) {
26
+ return props.outlined && styled.css(_templateObject3 || (_templateObject3 = defaultTheme._taggedTemplateLiteral(["\n background: transparent;\n ", "\n "])), props.theme.themeProp('color', props.theme.getColor('emerald-500'), props.theme.getColor('emerald-500')));
27
+ }, function (props) {
28
+ return props.outlined && props.secondary && styled.css(_templateObject4 || (_templateObject4 = defaultTheme._taggedTemplateLiteral(["\n background: transparent;\n ", "\n "])), props.theme.themeProp('color', props.theme.getColor('gray-200'), props.theme.getColor('gray-700')));
29
+ }, function (props) {
30
+ return props.block && styled.css(_templateObject5 || (_templateObject5 = defaultTheme._taggedTemplateLiteral(["\n width: 100%;\n "])));
31
+ }, function (props) {
32
+ return props.disabled && styled.css(_templateObject6 || (_templateObject6 = defaultTheme._taggedTemplateLiteral(["\n opacity: 0.5;\n cursor: not-allowed;\n pointer-events: none;\n "])));
33
+ });
34
+ var ButtonContent = styled__default['default'].div.attrs(defaultTheme.applyDefaultTheme)(_templateObject7 || (_templateObject7 = defaultTheme._taggedTemplateLiteral(["\n display: inline-flex;\n justify-content: center;\n align-items: center;\n font-size: 0.875rem;\n transform: scale(1);\n opacity: 1;\n transition: all 200ms;\n\n > svg {\n width: 100%;\n max-width: 13px;\n max-height: 13px;\n margin-right: 7px;\n }\n\n ", "\n"])), function (props) {
35
+ return props.loading && styled.css(_templateObject8 || (_templateObject8 = defaultTheme._taggedTemplateLiteral(["\n transform: scale(0.95);\n opacity: 0;\n "])));
36
+ });
37
+ var LoadingIndicator = styled__default['default'].div.attrs(defaultTheme.applyDefaultTheme)(_templateObject9 || (_templateObject9 = defaultTheme._taggedTemplateLiteral(["\n position: absolute;\n height: 100%;\n width: 100%;\n top: 0;\n left: 0;\n padding: 4px;\n background: inherit;\n opacity: 0;\n transition: opacity 200ms;\n box-sizing: border-box;\n\n ", "\n"])), function (props) {
38
+ return props.loading && styled.css(_templateObject10 || (_templateObject10 = defaultTheme._taggedTemplateLiteral(["\n opacity: 1;\n "])));
39
+ });
40
+ var LoadingIndicatorSvg = styled__default['default'].svg.attrs(defaultTheme.applyDefaultTheme)(_templateObject11 || (_templateObject11 = defaultTheme._taggedTemplateLiteral(["\n height: 100%;\n color: inherit;\n transform: rotate(-88deg);\n"])));
41
+ var LoadingIndicatorSvgCircle = styled__default['default'].circle.attrs(defaultTheme.applyDefaultTheme)(_templateObject12 || (_templateObject12 = defaultTheme._taggedTemplateLiteral(["\n transition: stroke-dashoffset 300ms linear;\n stroke-dasharray: 113;\n"])));
42
+
43
+ function Button(_ref) {
44
+ var secondary = _ref.secondary,
45
+ outlined = _ref.outlined,
46
+ block = _ref.block,
47
+ icon = _ref.icon,
48
+ disabled = _ref.disabled,
49
+ loading = _ref.loading,
50
+ className = _ref.className,
51
+ children = _ref.children,
52
+ props = defaultTheme._objectWithoutProperties(_ref, ["secondary", "outlined", "block", "icon", "disabled", "loading", "className", "children"]);
53
+
54
+ var _useState = React.useState(loading || false),
55
+ _useState2 = defaultTheme._slicedToArray(_useState, 2),
56
+ loadingState = _useState2[0],
57
+ setLoadingState = _useState2[1];
58
+
59
+ var _useState3 = React.useState(113),
60
+ _useState4 = defaultTheme._slicedToArray(_useState3, 2),
61
+ loadingStep = _useState4[0],
62
+ setLoadingStep = _useState4[1];
63
+
64
+ var loadingInterval = React.useRef(0);
65
+
66
+ var enableLoading = function enableLoading() {
67
+ loadingInterval.current = setInterval(function () {
68
+ setLoadingStep(function (currentLoadingStep) {
69
+ var newLoadingStep = Math.round(currentLoadingStep - 15 * currentLoadingStep / 100);
70
+
71
+ if (newLoadingStep === currentLoadingStep) {
72
+ clearInterval(loadingInterval.current);
73
+ }
74
+
75
+ return newLoadingStep;
76
+ });
77
+ }, 300);
78
+ setLoadingState(true);
79
+ };
80
+
81
+ var disableLoading = function disableLoading() {
82
+ clearInterval(loadingInterval.current);
83
+ setLoadingStep(0);
84
+ setTimeout(function () {
85
+ setLoadingState(false);
86
+ setLoadingStep(113);
87
+ }, 500);
88
+ };
89
+
90
+ React.useEffect(function () {
91
+ if (loading) {
92
+ enableLoading();
93
+ } else {
94
+ disableLoading();
95
+ }
96
+
97
+ return function () {
98
+ return clearInterval(loadingInterval.current);
99
+ };
100
+ }, [loading]);
101
+ return React__default['default'].createElement(Button$1, defaultTheme._extends({
102
+ secondary: secondary,
103
+ outlined: outlined,
104
+ block: block,
105
+ disabled: disabled,
106
+ className: className
107
+ }, props), React__default['default'].createElement(ButtonContent, {
108
+ loading: loadingState
109
+ }, icon, children), React__default['default'].createElement(LoadingIndicator, {
110
+ loading: loadingState,
111
+ style: {
112
+ opacity: loadingState ? 1 : 0
113
+ }
114
+ }, React__default['default'].createElement(LoadingIndicatorSvg, {
115
+ viewBox: "22 22 44 44"
116
+ }, React__default['default'].createElement(LoadingIndicatorSvgCircle, {
117
+ cx: "44",
118
+ cy: "44",
119
+ r: "18",
120
+ fill: "none",
121
+ strokeWidth: "4",
122
+ stroke: "currentColor",
123
+ style: {
124
+ strokeDashoffset: "".concat(loadingStep, "px")
125
+ }
126
+ }))));
127
+ }
128
+
129
+ Button.propTypes = process.env.NODE_ENV !== "production" ? {
130
+ secondary: defaultTheme.PropTypes.bool,
131
+ outlined: defaultTheme.PropTypes.bool,
132
+ block: defaultTheme.PropTypes.bool,
133
+ icon: defaultTheme.PropTypes.element,
134
+ disabled: defaultTheme.PropTypes.bool,
135
+ loading: defaultTheme.PropTypes.bool,
136
+ className: defaultTheme.PropTypes.string,
137
+ children: defaultTheme.PropTypes.any.isRequired
138
+ } : {};
139
+
140
+ exports.Button = Button;
@@ -3,6 +3,7 @@
3
3
  var defaultTheme = require('./defaultTheme-18d7c1ee.js');
4
4
  var React = require('react');
5
5
  var nanoid = require('nanoid');
6
+ var lodash = require('lodash');
6
7
  var styled = require('styled-components');
7
8
 
8
9
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
@@ -11,16 +12,16 @@ var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
11
12
  var styled__default = /*#__PURE__*/_interopDefaultLegacy(styled);
12
13
 
13
14
  var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8;
14
- var activeLabel = styled.css(_templateObject || (_templateObject = defaultTheme._taggedTemplateLiteral(["\n font-size: 0.75rem;\n padding: 0 3px;\n background: linear-gradient(0deg, #ffffff 50%, transparent 50%);\n ", "\n top: -7px;\n left: 7px;\n opacity: 1;\n"])), function (props) {
15
- return props.theme.themeProp('background', "linear-gradient(0deg, ".concat(props.theme.getColor('gray-900'), " 50%, transparent 50%)"), "linear-gradient(0deg, ".concat(props.theme.getColor('white'), " 50%, transparent 50%)"));
15
+ var activeLabel = styled.css(_templateObject || (_templateObject = defaultTheme._taggedTemplateLiteral(["\n font-size: 0.75rem;\n padding: 0 3px;\n ", "\n top: -7px;\n left: 7px;\n opacity: 1;\n"])), function (props) {
16
+ return props.theme.themeProp('background', "linear-gradient(0deg, ".concat(props.theme.getColor('gray-900'), " calc(50% + 1px), transparent 50%)"), "linear-gradient(0deg, ".concat(props.theme.getColor('white'), " calc(50% + 1px), transparent 50%)"));
16
17
  });
17
18
  var placeholderBaseStyle = styled.css(_templateObject2 || (_templateObject2 = defaultTheme._taggedTemplateLiteral(["\n color: inherit;\n opacity: 0.7;\n"])));
18
- var TextInputLabel = styled__default['default'].label.attrs(defaultTheme.applyDefaultTheme)(_templateObject3 || (_templateObject3 = defaultTheme._taggedTemplateLiteral(["\n position: absolute;\n top: 13px;\n left: 11px;\n transition: all 150ms;\n ", "\n\n ", "\n"])), placeholderBaseStyle, function (props) {
19
+ var TextInputLabel = styled__default['default'].label.attrs(defaultTheme.applyDefaultTheme)(_templateObject3 || (_templateObject3 = defaultTheme._taggedTemplateLiteral(["\n position: absolute;\n top: 13px;\n left: 11px;\n line-height: 1.2;\n font-size: 0.875rem;\n transition: all 150ms;\n ", "\n\n ", "\n"])), placeholderBaseStyle, function (props) {
19
20
  var _props$inputValue;
20
21
 
21
22
  return (props.placeholderVisible || ((_props$inputValue = props.inputValue) === null || _props$inputValue === void 0 ? void 0 : _props$inputValue.length)) && styled.css(_templateObject4 || (_templateObject4 = defaultTheme._taggedTemplateLiteral(["\n ", "\n "])), activeLabel);
22
23
  });
23
- var TextInput$1 = styled__default['default'].div.attrs(defaultTheme.applyDefaultTheme)(_templateObject5 || (_templateObject5 = defaultTheme._taggedTemplateLiteral(["\n position: relative;\n\n &:focus-within {\n ", " {\n ", "\n }\n }\n\n ", "\n"])), TextInputLabel, activeLabel, function (props) {
24
+ var TextInput$1 = styled__default['default'].div.attrs(defaultTheme.applyDefaultTheme)(_templateObject5 || (_templateObject5 = defaultTheme._taggedTemplateLiteral(["\n position: relative;\n margin-top: 8px;\n\n &:focus-within {\n ", " {\n ", "\n }\n }\n\n ", "\n"])), TextInputLabel, activeLabel, function (props) {
24
25
  return props.disabled && styled.css(_templateObject6 || (_templateObject6 = defaultTheme._taggedTemplateLiteral(["\n opacity: 0.5;\n > * {\n cursor: not-allowed;\n }\n "])));
25
26
  });
26
27
  var TextInputField = styled__default['default'].input.attrs(defaultTheme.applyDefaultTheme)(_templateObject7 || (_templateObject7 = defaultTheme._taggedTemplateLiteral(["\n display: block;\n width: 100%;\n font-family: inherit;\n font-size: 0.875rem;\n border-radius: 2px;\n padding: 12px 10px;\n margin: 0 0 1.07143rem;\n color: inherit;\n ", "\n border: 1px solid;\n ", "\n border-radius: 3px;\n box-sizing: border-box;\n appearance: none;\n transition: border-color 350ms;\n\n ", "\n\n &::placeholder {\n ", "\n }\n\n :focus {\n outline: none;\n ", "\n }\n"])), function (props) {
@@ -35,30 +36,53 @@ var TextInputField = styled__default['default'].input.attrs(defaultTheme.applyDe
35
36
 
36
37
  var TextInput = React__default['default'].forwardRef(function TextInput(_ref, forwardedRef) {
37
38
  var value = _ref.value,
39
+ name = _ref.name,
38
40
  label = _ref.label,
39
41
  placeholder = _ref.placeholder,
40
42
  required = _ref.required,
41
43
  disabled = _ref.disabled,
42
- error = _ref.error;
44
+ error = _ref.error,
45
+ onChange = _ref.onChange,
46
+ onBlur = _ref.onBlur;
43
47
 
44
48
  var _useState = React.useState(nanoid.nanoid()),
45
49
  _useState2 = defaultTheme._slicedToArray(_useState, 1),
46
50
  uniqueId = _useState2[0];
47
51
 
52
+ var _useState3 = React.useState(value || ''),
53
+ _useState4 = defaultTheme._slicedToArray(_useState3, 2),
54
+ controlledValue = _useState4[0],
55
+ setControlledValue = _useState4[1];
56
+
57
+ React.useEffect(function () {
58
+ setControlledValue(value);
59
+ }, [value]);
60
+
61
+ var onInputChange = function onInputChange(event) {
62
+ if (lodash.isFunction(onChange)) {
63
+ onChange(event);
64
+ }
65
+
66
+ setControlledValue(event.target.value);
67
+ };
68
+
48
69
  return React__default['default'].createElement(TextInput$1, {
49
70
  disabled: disabled
50
71
  }, label && React__default['default'].createElement(TextInputLabel, {
51
72
  htmlFor: "text-input-".concat(uniqueId),
52
73
  placeholderVisible: Boolean(placeholder),
53
- inputValue: value
74
+ inputValue: controlledValue
54
75
  }, label, required && ' *'), React__default['default'].createElement(TextInputField, {
55
76
  ref: forwardedRef,
56
- value: value,
77
+ value: controlledValue,
78
+ name: name,
57
79
  placeholder: placeholder,
58
80
  required: required,
59
81
  disabled: disabled,
60
82
  error: error,
61
- id: "text-input-".concat(uniqueId)
83
+ id: "text-input-".concat(uniqueId),
84
+ onChange: onInputChange,
85
+ onBlur: onBlur
62
86
  }));
63
87
  });
64
88
  TextInput.defaultProps = {
@@ -66,11 +90,14 @@ TextInput.defaultProps = {
66
90
  };
67
91
  TextInput.propTypes = process.env.NODE_ENV !== "production" ? {
68
92
  value: defaultTheme.PropTypes.string,
93
+ name: defaultTheme.PropTypes.string,
69
94
  label: defaultTheme.PropTypes.string,
70
95
  placeholder: defaultTheme.PropTypes.string,
71
96
  required: defaultTheme.PropTypes.bool,
72
97
  disabled: defaultTheme.PropTypes.bool,
73
- error: defaultTheme.PropTypes.bool
98
+ error: defaultTheme.PropTypes.bool,
99
+ onChange: defaultTheme.PropTypes.func,
100
+ onBlur: defaultTheme.PropTypes.func
74
101
  } : {};
75
102
 
76
103
  exports.TextInput = TextInput;
@@ -0,0 +1,10 @@
1
+ 'use strict';
2
+
3
+ var Button = require('../../Button-ad55d102.js');
4
+ require('../../defaultTheme-18d7c1ee.js');
5
+ require('styled-components');
6
+ require('react');
7
+
8
+
9
+
10
+ module.exports = Button.Button;
@@ -1,10 +1,11 @@
1
1
  'use strict';
2
2
 
3
- var TextInput = require('../../TextInput-a4855d3e.js');
3
+ var TextInput = require('../../TextInput-099562d7.js');
4
4
  require('../../defaultTheme-18d7c1ee.js');
5
5
  require('styled-components');
6
6
  require('react');
7
7
  require('nanoid');
8
+ require('lodash');
8
9
 
9
10
 
10
11
 
package/inputs/index.js CHANGED
@@ -3,18 +3,21 @@
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var ActionButton = require('../ActionButton-10a681b9.js');
6
+ var Button = require('../Button-ad55d102.js');
6
7
  var Checkbox = require('../Checkbox-791a409f.js');
7
8
  var Radio = require('../Radio-9271a4b6.js');
8
- var TextInput = require('../TextInput-a4855d3e.js');
9
+ var TextInput = require('../TextInput-099562d7.js');
9
10
  require('../defaultTheme-18d7c1ee.js');
10
11
  require('styled-components');
11
12
  require('react');
12
13
  require('nanoid');
13
14
  require('polished');
15
+ require('lodash');
14
16
 
15
17
 
16
18
 
17
19
  exports.ActionButton = ActionButton.ActionButton;
20
+ exports.Button = Button.Button;
18
21
  exports.Checkbox = Checkbox.Checkbox;
19
22
  exports.Radio = Radio.Radio;
20
23
  exports.TextInput = TextInput.TextInput;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ntbjs/react-components",
3
- "version": "0.0.1-beta.22",
3
+ "version": "0.0.1-beta.26",
4
4
  "description": "NTBs common front-end design utilities and React components.",
5
5
  "scripts": {
6
6
  "build": "cross-env NODE_ENV=production rollup -c",
@@ -77,6 +77,6 @@
77
77
  "nanoid": "^3.1.25",
78
78
  "polished": "^4.1.3",
79
79
  "react-lazy-load-image-component": "^1.5.1",
80
- "styled-components": "^5.3.0"
80
+ "styled-components": "^5.3.1"
81
81
  }
82
82
  }
@@ -1,17 +1,18 @@
1
1
  'use strict';
2
2
 
3
- var AssetGallery = require('../../AssetGallery-020b30a7.js');
3
+ var AssetGallery = require('../../AssetGallery-16efec65.js');
4
4
  require('../../defaultTheme-18d7c1ee.js');
5
5
  require('styled-components');
6
6
  require('react');
7
7
  require('lodash');
8
8
  require('react-lazy-load-image-component');
9
9
  require('../../ActionButton-10a681b9.js');
10
+ require('../../Button-ad55d102.js');
10
11
  require('../../Checkbox-791a409f.js');
11
12
  require('nanoid');
12
13
  require('../../Radio-9271a4b6.js');
13
14
  require('polished');
14
- require('../../TextInput-a4855d3e.js');
15
+ require('../../TextInput-099562d7.js');
15
16
  require('../../Popover-0ff13419.js');
16
17
  require('@tippyjs/react');
17
18
  require('../../Tooltip-85e7d561.js');
package/widgets/index.js CHANGED
@@ -2,18 +2,19 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var AssetGallery = require('../AssetGallery-020b30a7.js');
5
+ var AssetGallery = require('../AssetGallery-16efec65.js');
6
6
  require('../defaultTheme-18d7c1ee.js');
7
7
  require('styled-components');
8
8
  require('react');
9
9
  require('lodash');
10
10
  require('react-lazy-load-image-component');
11
11
  require('../ActionButton-10a681b9.js');
12
+ require('../Button-ad55d102.js');
12
13
  require('../Checkbox-791a409f.js');
13
14
  require('nanoid');
14
15
  require('../Radio-9271a4b6.js');
15
16
  require('polished');
16
- require('../TextInput-a4855d3e.js');
17
+ require('../TextInput-099562d7.js');
17
18
  require('../Popover-0ff13419.js');
18
19
  require('@tippyjs/react');
19
20
  require('../Tooltip-85e7d561.js');