@synerise/ds-subtle-form 1.0.3 → 1.1.0

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.
package/CHANGELOG.md CHANGED
@@ -3,6 +3,25 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ # [1.1.0](https://github.com/Synerise/synerise-design/compare/@synerise/ds-subtle-form@1.0.4...@synerise/ds-subtle-form@1.1.0) (2025-04-16)
7
+
8
+
9
+ ### Features
10
+
11
+ * **form-field:** add form-field component ([7f6b191](https://github.com/Synerise/synerise-design/commit/7f6b191132a3b0d694c21fb4d649f4deea6acb89))
12
+
13
+
14
+
15
+
16
+
17
+ ## [1.0.4](https://github.com/Synerise/synerise-design/compare/@synerise/ds-subtle-form@1.0.3...@synerise/ds-subtle-form@1.0.4) (2025-04-02)
18
+
19
+ **Note:** Version bump only for package @synerise/ds-subtle-form
20
+
21
+
22
+
23
+
24
+
6
25
  ## [1.0.3](https://github.com/Synerise/synerise-design/compare/@synerise/ds-subtle-form@1.0.2...@synerise/ds-subtle-form@1.0.3) (2025-03-31)
7
26
 
8
27
  **Note:** Version bump only for package @synerise/ds-subtle-form
@@ -1,15 +1,14 @@
1
1
  var _excluded = ["value", "suffix", "suffixTooltip", "format", "label", "children", "labelTooltip", "placeholder", "onApply", "onClear", "errorText", "error", "activeProp", "onDropdownVisibleChange", "disabled"];
2
- function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
3
- function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
2
+ function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
3
+ function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }
4
4
  import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';
5
5
  import Icon, { CalendarM } from '@synerise/ds-icon';
6
6
  import Tooltip from '@synerise/ds-tooltip';
7
- import { theme } from '@synerise/ds-core';
8
- import { Label } from '@synerise/ds-input';
7
+ import { useTheme } from '@synerise/ds-core';
9
8
  import DatePicker from '@synerise/ds-date-picker';
10
9
  import format from '@synerise/ds-date-picker/dist/format';
11
10
  import * as S from '../../SubtleForm.styles';
12
- import { SelectContainer, ContentAbove, MaskedDatePlaceholder } from './DatePicker.styles';
11
+ import { SelectContainer, MaskedDatePlaceholder } from './DatePicker.styles';
13
12
  import { getFormattingString, replaceLettersWithUnderscore } from './utils';
14
13
  var SubtleDatePicker = function SubtleDatePicker(_ref) {
15
14
  var value = _ref.value,
@@ -35,6 +34,7 @@ var SubtleDatePicker = function SubtleDatePicker(_ref) {
35
34
  blurred = _useState2[0],
36
35
  setBlurred = _useState2[1];
37
36
  var containerRef = useRef(null);
37
+ var theme = useTheme();
38
38
  var hasError = error || !!errorText;
39
39
  var showTime = rest.showTime;
40
40
  var dateFormattingString = useMemo(function () {
@@ -63,12 +63,11 @@ var SubtleDatePicker = function SubtleDatePicker(_ref) {
63
63
  }, []);
64
64
  return /*#__PURE__*/React.createElement(S.Subtle, {
65
65
  className: "ds-subtle-form"
66
- }, /*#__PURE__*/React.createElement(ContentAbove, {
67
- active: active || hasError
68
- }, /*#__PURE__*/React.createElement(Label, {
66
+ }, /*#__PURE__*/React.createElement(S.SubtleFormField, {
67
+ active: active || hasError,
69
68
  label: label,
70
69
  tooltip: labelTooltip
71
- })), /*#__PURE__*/React.createElement(SelectContainer, {
70
+ }, /*#__PURE__*/React.createElement(SelectContainer, {
72
71
  disabled: !!disabled,
73
72
  ref: containerRef,
74
73
  className: "ds-subtle-date-picker",
@@ -106,6 +105,6 @@ var SubtleDatePicker = function SubtleDatePicker(_ref) {
106
105
  }, suffix != null ? suffix : /*#__PURE__*/React.createElement(Icon, {
107
106
  component: /*#__PURE__*/React.createElement(CalendarM, null),
108
107
  color: theme.palette['grey-600']
109
- }))))));
108
+ })))))));
110
109
  };
111
110
  export default SubtleDatePicker;
@@ -2,9 +2,6 @@ export declare const SelectContainer: import("styled-components").StyledComponen
2
2
  active: boolean;
3
3
  disabled: boolean;
4
4
  }, never>;
5
- export declare const ContentAbove: import("styled-components").StyledComponent<"div", any, {
6
- active: boolean;
7
- }, never>;
8
5
  export declare const MaskedDatePlaceholder: import("styled-components").StyledComponent<"div", any, {
9
6
  disabled?: boolean | undefined;
10
7
  }, never>;
@@ -2,20 +2,14 @@ import styled, { css } from 'styled-components';
2
2
  export var SelectContainer = styled.div.withConfig({
3
3
  displayName: "DatePickerstyles__SelectContainer",
4
4
  componentId: "sc-xiwxgz-0"
5
- })(["position:relative;height:32px;width:100%;", " > div{margin:0;}", ""], function (props) {
5
+ })(["position:relative;min-height:32px;width:100%;", " > div{margin:0;}", ""], function (props) {
6
6
  return props.active && css(["margin:-2px 0 0 -1px;"]);
7
7
  }, function (props) {
8
8
  return !!props.disabled && css(["&&{cursor:not-allowed;}"]);
9
9
  });
10
- export var ContentAbove = styled.div.withConfig({
11
- displayName: "DatePickerstyles__ContentAbove",
12
- componentId: "sc-xiwxgz-1"
13
- })(["padding:0;display:flex;justify-content:space-between;margin-bottom:", ";"], function (props) {
14
- return props.active ? "10px" : "8px";
15
- });
16
10
  export var MaskedDatePlaceholder = styled.div.withConfig({
17
11
  displayName: "DatePickerstyles__MaskedDatePlaceholder",
18
- componentId: "sc-xiwxgz-2"
12
+ componentId: "sc-xiwxgz-1"
19
13
  })(["font-size:13px;color:transparent;position:absolute;left:0;top:8px;transition:", ";"], function (props) {
20
14
  return props.disabled ? 'none' : 'left 0.1s ease-in 0.2s, color 0.1s ease-in 0.2s';
21
15
  });
@@ -1,4 +1,4 @@
1
1
  import React from 'react';
2
2
  import { SubtleFieldProps } from '../../SubtleForm.types';
3
- declare const SubtleField: React.FC<SubtleFieldProps>;
3
+ declare const SubtleField: ({ disabled, suffix, suffixTooltip, label, labelTooltip, activeElement, inactiveElement, mask, maskVisible, errorText, active: activeProp, }: SubtleFieldProps) => React.JSX.Element;
4
4
  export default SubtleField;
@@ -1,11 +1,9 @@
1
- import React from 'react';
1
+ import React, { useCallback, useEffect, useRef, useState } from 'react';
2
2
  import Tooltip from '@synerise/ds-tooltip';
3
3
  import Icon, { EditS } from '@synerise/ds-icon';
4
- import { theme } from '@synerise/ds-core';
5
- import { Label } from '@synerise/ds-input';
4
+ import { useTheme } from '@synerise/ds-core';
6
5
  import { useOnClickOutside } from '@synerise/ds-utils';
7
6
  import * as S from '../../SubtleForm.styles';
8
- import { ContentAbove } from './Field.styles';
9
7
  import { MaskedDatePlaceholder } from '../DatePicker/DatePicker.styles';
10
8
  var SubtleField = function SubtleField(_ref) {
11
9
  var disabled = _ref.disabled,
@@ -17,41 +15,43 @@ var SubtleField = function SubtleField(_ref) {
17
15
  inactiveElement = _ref.inactiveElement,
18
16
  mask = _ref.mask,
19
17
  maskVisible = _ref.maskVisible,
18
+ errorText = _ref.errorText,
20
19
  activeProp = _ref.active;
21
- var _React$useState = React.useState(activeProp),
22
- active = _React$useState[0],
23
- setActive = _React$useState[1];
24
- var _React$useState2 = React.useState(false),
25
- blurred = _React$useState2[0],
26
- setBlurred = _React$useState2[1];
27
- var containerRef = React.useRef(null);
28
- var handleDeactivate = React.useCallback(function () {
20
+ var _useState = useState(activeProp),
21
+ active = _useState[0],
22
+ setActive = _useState[1];
23
+ var _useState2 = useState(false),
24
+ blurred = _useState2[0],
25
+ setBlurred = _useState2[1];
26
+ var containerRef = useRef(null);
27
+ var handleDeactivate = useCallback(function () {
29
28
  setActive(false);
30
29
  setBlurred(true);
31
30
  }, []);
32
- var handleActivate = React.useCallback(function () {
31
+ var handleActivate = useCallback(function () {
33
32
  setActive(true);
34
33
  setBlurred(false);
35
34
  }, []);
36
- React.useEffect(function () {
35
+ var theme = useTheme();
36
+ useEffect(function () {
37
37
  return setActive(activeProp);
38
38
  }, [activeProp]);
39
+ var isActive = Boolean(errorText || active && !blurred && !!activeElement);
39
40
  useOnClickOutside(containerRef, function () {
40
41
  handleDeactivate();
41
42
  });
42
43
  return /*#__PURE__*/React.createElement(S.Subtle, {
43
44
  className: "ds-subtle-form",
44
45
  disabled: disabled
45
- }, /*#__PURE__*/React.createElement(ContentAbove, {
46
- active: active
47
- }, /*#__PURE__*/React.createElement(Label, {
46
+ }, /*#__PURE__*/React.createElement(S.SubtleFormField, {
47
+ active: isActive,
48
48
  label: label,
49
49
  tooltip: labelTooltip
50
- })), /*#__PURE__*/React.createElement(S.Container, {
50
+ }, /*#__PURE__*/React.createElement(S.Container, {
51
51
  ref: containerRef,
52
52
  className: "ds-subtle-field",
53
53
  active: active
54
- }, active && !blurred && !!activeElement ? activeElement() : /*#__PURE__*/React.createElement(S.Inactive, {
54
+ }, isActive && activeElement ? activeElement() : /*#__PURE__*/React.createElement(S.Inactive, {
55
55
  tabIndex: 0,
56
56
  onFocus: !disabled ? handleActivate : undefined,
57
57
  onClick: !disabled ? handleActivate : undefined,
@@ -68,6 +68,6 @@ var SubtleField = function SubtleField(_ref) {
68
68
  }, suffix != null ? suffix : /*#__PURE__*/React.createElement(Icon, {
69
69
  component: /*#__PURE__*/React.createElement(EditS, null),
70
70
  color: theme.palette['grey-600']
71
- }))))));
71
+ })))))));
72
72
  };
73
73
  export default SubtleField;
@@ -1,4 +1,4 @@
1
1
  import React from 'react';
2
2
  import { SubtleInputProps } from './Input.types';
3
- declare const SubtleTextArea: React.FC<SubtleInputProps>;
4
- export default SubtleTextArea;
3
+ declare const SubtleInput: ({ disabled, value, onChange, placeholder, label, labelTooltip, suffixTooltip, suffix, error, errorText, inputProps, ...rest }: SubtleInputProps) => React.JSX.Element;
4
+ export default SubtleInput;
@@ -1,14 +1,14 @@
1
1
  var _excluded = ["disabled", "value", "onChange", "placeholder", "label", "labelTooltip", "suffixTooltip", "suffix", "error", "errorText", "inputProps"];
2
- function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
3
- function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
4
- import React from 'react';
2
+ function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
3
+ function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }
4
+ import React, { useCallback, useRef, useState } from 'react';
5
5
  import Tooltip from '@synerise/ds-tooltip';
6
6
  import Icon, { EditS } from '@synerise/ds-icon';
7
- import { theme } from '@synerise/ds-core';
8
- import { Input, Label } from '@synerise/ds-input';
7
+ import { useTheme } from '@synerise/ds-core';
8
+ import { Input } from '@synerise/ds-input';
9
9
  import * as S from '../../SubtleForm.styles';
10
10
  import { focusPadding } from '../../SubtleForm.styles';
11
- var SubtleTextArea = function SubtleTextArea(_ref) {
11
+ var SubtleInput = function SubtleInput(_ref) {
12
12
  var disabled = _ref.disabled,
13
13
  value = _ref.value,
14
14
  _onChange = _ref.onChange,
@@ -21,34 +21,34 @@ var SubtleTextArea = function SubtleTextArea(_ref) {
21
21
  errorText = _ref.errorText,
22
22
  inputProps = _ref.inputProps,
23
23
  rest = _objectWithoutPropertiesLoose(_ref, _excluded);
24
- var _React$useState = React.useState(false),
25
- active = _React$useState[0],
26
- setActive = _React$useState[1];
27
- var _React$useState2 = React.useState(false),
28
- blurred = _React$useState2[0],
29
- setBlurred = _React$useState2[1];
30
- var containerRef = React.useRef(null);
24
+ var _useState = useState(false),
25
+ active = _useState[0],
26
+ setActive = _useState[1];
27
+ var _useState2 = useState(false),
28
+ blurred = _useState2[0],
29
+ setBlurred = _useState2[1];
30
+ var containerRef = useRef(null);
31
+ var theme = useTheme();
31
32
  var hasError = error || !!errorText;
32
- var handleDeactivate = React.useCallback(function (e) {
33
+ var handleDeactivate = useCallback(function (event) {
33
34
  if (inputProps) {
34
35
  var onBlur = inputProps.onBlur;
35
- onBlur && onBlur(e);
36
+ onBlur && onBlur(event);
36
37
  }
37
38
  setActive(false);
38
39
  setBlurred(true);
39
40
  }, [inputProps]);
40
- var handleActivate = React.useCallback(function () {
41
+ var handleActivate = useCallback(function () {
41
42
  setActive(true);
42
43
  setBlurred(false);
43
44
  }, []);
44
45
  return /*#__PURE__*/React.createElement(S.Subtle, {
45
46
  className: "ds-subtle-form"
46
- }, /*#__PURE__*/React.createElement(S.ContentAbove, {
47
- active: active
48
- }, /*#__PURE__*/React.createElement(Label, {
47
+ }, /*#__PURE__*/React.createElement(S.SubtleFormField, {
48
+ active: active,
49
49
  label: label,
50
50
  tooltip: labelTooltip
51
- })), /*#__PURE__*/React.createElement(S.Container, {
51
+ }, /*#__PURE__*/React.createElement(S.Container, {
52
52
  ref: containerRef,
53
53
  className: "ds-subtle-input",
54
54
  active: active,
@@ -59,8 +59,8 @@ var SubtleTextArea = function SubtleTextArea(_ref) {
59
59
  React.createElement(Input, _extends({
60
60
  autoFocus: !hasError && !disabled,
61
61
  disabled: disabled,
62
- onChange: function onChange(e) {
63
- _onChange && _onChange(e.currentTarget.value);
62
+ onChange: function onChange(event) {
63
+ _onChange && _onChange(event.currentTarget.value);
64
64
  },
65
65
  onBlur: !disabled ? handleDeactivate : undefined,
66
66
  value: value,
@@ -80,6 +80,6 @@ var SubtleTextArea = function SubtleTextArea(_ref) {
80
80
  }, suffix != null ? suffix : /*#__PURE__*/React.createElement(Icon, {
81
81
  component: /*#__PURE__*/React.createElement(EditS, null),
82
82
  color: theme.palette['grey-600']
83
- }))))));
83
+ })))))));
84
84
  };
85
- export default SubtleTextArea;
85
+ export default SubtleInput;
@@ -1,4 +1,3 @@
1
- /// <reference types="react" />
2
1
  import { InputProps } from 'antd/lib/input';
3
2
  import { SubtleFieldProps } from '../../SubtleForm.types';
4
3
  export type SubtleInputProps = {
@@ -6,6 +5,5 @@ export type SubtleInputProps = {
6
5
  value?: string;
7
6
  placeholder?: string;
8
7
  error?: boolean;
9
- errorText?: string | React.ReactNode;
10
8
  inputProps: InputProps;
11
9
  } & SubtleFieldProps;
@@ -1,4 +1,4 @@
1
1
  import React from 'react';
2
2
  import { SubtleSelectProps } from './Select.types';
3
- declare const SubtleSelect: React.FC<SubtleSelectProps>;
3
+ declare const SubtleSelect: ({ disabled, value, suffix, suffixTooltip, label, children, labelTooltip, placeholder, error, errorText, dropdownAlign, ...rest }: SubtleSelectProps) => React.JSX.Element;
4
4
  export default SubtleSelect;
@@ -1,14 +1,13 @@
1
1
  var _excluded = ["disabled", "value", "suffix", "suffixTooltip", "label", "children", "labelTooltip", "placeholder", "error", "errorText", "dropdownAlign"];
2
- function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
3
- function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
4
- import React from 'react';
2
+ function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
3
+ function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }
4
+ import React, { useCallback, useRef, useState } from 'react';
5
5
  import Icon, { AngleDownS } from '@synerise/ds-icon';
6
6
  import Tooltip from '@synerise/ds-tooltip';
7
- import { theme } from '@synerise/ds-core';
8
- import { Label } from '@synerise/ds-input';
7
+ import { useTheme } from '@synerise/ds-core';
9
8
  import Select from '@synerise/ds-select';
10
9
  import * as S from '../../SubtleForm.styles';
11
- import { SelectContainer, ContentAbove } from './Select.styles';
10
+ import { SelectContainer } from './Select.styles';
12
11
  var SubtleSelect = function SubtleSelect(_ref) {
13
12
  var disabled = _ref.disabled,
14
13
  value = _ref.value,
@@ -23,31 +22,31 @@ var SubtleSelect = function SubtleSelect(_ref) {
23
22
  _ref$dropdownAlign = _ref.dropdownAlign,
24
23
  dropdownAlign = _ref$dropdownAlign === void 0 ? {} : _ref$dropdownAlign,
25
24
  rest = _objectWithoutPropertiesLoose(_ref, _excluded);
26
- var _React$useState = React.useState(false),
27
- active = _React$useState[0],
28
- setActive = _React$useState[1];
29
- var _React$useState2 = React.useState(false),
30
- blurred = _React$useState2[0],
31
- setBlurred = _React$useState2[1];
32
- var containerRef = React.useRef(null);
25
+ var _useState = useState(false),
26
+ active = _useState[0],
27
+ setActive = _useState[1];
28
+ var _useState2 = useState(false),
29
+ blurred = _useState2[0],
30
+ setBlurred = _useState2[1];
31
+ var containerRef = useRef(null);
33
32
  var hasError = error || !!errorText;
34
- var handleDeactivate = React.useCallback(function () {
33
+ var handleDeactivate = useCallback(function () {
35
34
  setActive(false);
36
35
  setBlurred(true);
37
36
  }, []);
38
- var handleActivate = React.useCallback(function () {
37
+ var handleActivate = useCallback(function () {
39
38
  setActive(true);
40
39
  setBlurred(false);
41
40
  }, []);
41
+ var theme = useTheme();
42
42
  return /*#__PURE__*/React.createElement(S.Subtle, {
43
43
  className: "ds-subtle-form",
44
44
  disabled: disabled
45
- }, /*#__PURE__*/React.createElement(ContentAbove, {
46
- active: active
47
- }, /*#__PURE__*/React.createElement(Label, {
45
+ }, /*#__PURE__*/React.createElement(S.SubtleFormField, {
46
+ active: active,
48
47
  label: label,
49
48
  tooltip: labelTooltip
50
- })), /*#__PURE__*/React.createElement(SelectContainer, {
49
+ }, /*#__PURE__*/React.createElement(SelectContainer, {
51
50
  ref: containerRef,
52
51
  className: "ds-subtle-select",
53
52
  active: active
@@ -79,6 +78,6 @@ var SubtleSelect = function SubtleSelect(_ref) {
79
78
  }, suffix != null ? suffix : /*#__PURE__*/React.createElement(Icon, {
80
79
  component: /*#__PURE__*/React.createElement(AngleDownS, null),
81
80
  color: theme.palette['grey-600']
82
- }))))));
81
+ })))))));
83
82
  };
84
83
  export default SubtleSelect;
@@ -1,6 +1,3 @@
1
1
  export declare const SelectContainer: import("styled-components").StyledComponent<"div", any, {
2
2
  active: boolean;
3
3
  }, never>;
4
- export declare const ContentAbove: import("styled-components").StyledComponent<"div", any, {
5
- active: boolean;
6
- }, never>;
@@ -2,12 +2,6 @@ import styled, { css } from 'styled-components';
2
2
  export var SelectContainer = styled.div.withConfig({
3
3
  displayName: "Selectstyles__SelectContainer",
4
4
  componentId: "sc-u85d8m-0"
5
- })(["position:relative;height:32px;width:100%;", " .ant-select-focused{.ds-status{margin:-1px 0 0 0;}}.ds-status{margin:0;}div.ant-select-selector{transition:border 0s linear !important;}"], function (props) {
5
+ })(["position:relative;min-height:32px;width:100%;", " .ant-select-focused{.ds-status{margin:-1px 0 0 0;}}.ds-status{margin:0;}div.ant-select-selector{transition:border 0s linear !important;}"], function (props) {
6
6
  return props.active && css(["margin:-2px 0 0 -1px;"]);
7
- });
8
- export var ContentAbove = styled.div.withConfig({
9
- displayName: "Selectstyles__ContentAbove",
10
- componentId: "sc-u85d8m-1"
11
- })(["padding:0 0 0 0;display:flex;justify-content:space-between;margin-bottom:", ";"], function (props) {
12
- return props.active ? "10px" : "8px";
13
7
  });
@@ -1,4 +1,4 @@
1
1
  import React from 'react';
2
2
  import { SubtleTextAreaProps } from './TextArea.types';
3
- declare const SubtleTextArea: React.FC<SubtleTextAreaProps>;
3
+ declare const SubtleTextArea: ({ disabled, minRows, maxRows, value, onChange, placeholder, label, labelTooltip, suffixTooltip, suffix, error, errorText, textAreaProps, ...rest }: SubtleTextAreaProps) => React.JSX.Element;
4
4
  export default SubtleTextArea;
@@ -1,11 +1,11 @@
1
1
  var _excluded = ["disabled", "minRows", "maxRows", "value", "onChange", "placeholder", "label", "labelTooltip", "suffixTooltip", "suffix", "error", "errorText", "textAreaProps"];
2
- function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
3
- function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
4
- import React from 'react';
2
+ function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
3
+ function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }
4
+ import React, { useCallback, useEffect, useRef, useState } from 'react';
5
5
  import Icon, { EditS } from '@synerise/ds-icon';
6
6
  import Tooltip from '@synerise/ds-tooltip';
7
- import { theme } from '@synerise/ds-core';
8
- import { Label, TextArea } from '@synerise/ds-input';
7
+ import { useTheme } from '@synerise/ds-core';
8
+ import { TextArea } from '@synerise/ds-input';
9
9
  import calculateSize from 'calculate-size';
10
10
  import * as S from '../../SubtleForm.styles';
11
11
  import { focusPadding } from '../../SubtleForm.styles';
@@ -30,18 +30,19 @@ var SubtleTextArea = function SubtleTextArea(_ref) {
30
30
  errorText = _ref.errorText,
31
31
  textAreaProps = _ref.textAreaProps,
32
32
  rest = _objectWithoutPropertiesLoose(_ref, _excluded);
33
- var _React$useState = React.useState(false),
34
- active = _React$useState[0],
35
- setActive = _React$useState[1];
36
- var _React$useState2 = React.useState(false),
37
- blurred = _React$useState2[0],
38
- setBlurred = _React$useState2[1];
39
- var containerRef = React.useRef(null);
40
- var _React$useState3 = React.useState(minRows),
41
- visibleRows = _React$useState3[0],
42
- setVisibleRows = _React$useState3[1];
33
+ var _useState = useState(false),
34
+ active = _useState[0],
35
+ setActive = _useState[1];
36
+ var _useState2 = useState(false),
37
+ blurred = _useState2[0],
38
+ setBlurred = _useState2[1];
39
+ var containerRef = useRef(null);
40
+ var _useState3 = useState(minRows),
41
+ visibleRows = _useState3[0],
42
+ setVisibleRows = _useState3[1];
43
+ var theme = useTheme();
43
44
  var hasError = error || !!errorText;
44
- var calculateTextHeight = React.useCallback(function () {
45
+ var calculateTextHeight = useCallback(function () {
45
46
  var textHeight = 0;
46
47
  if (!!value && !!containerRef.current) {
47
48
  var _calculateSize = calculateSize(value, {
@@ -54,7 +55,7 @@ var SubtleTextArea = function SubtleTextArea(_ref) {
54
55
  }
55
56
  return textHeight;
56
57
  }, [value, containerRef]);
57
- React.useEffect(function () {
58
+ useEffect(function () {
58
59
  var keyboardBasedLines = Number(value == null ? void 0 : value.split('\n').length);
59
60
  var refBasedLines = Math.floor((calculateTextHeight() + 2 * VERTICAL_PADDING_PX) / ROW_HEIGHT_PX);
60
61
  var lines = Math.max(Number(refBasedLines), keyboardBasedLines);
@@ -70,34 +71,33 @@ var SubtleTextArea = function SubtleTextArea(_ref) {
70
71
  setVisibleRows(lines);
71
72
  }
72
73
  }, [minRows, maxRows, value, calculateTextHeight]);
73
- var handleDeactivate = React.useCallback(function (e) {
74
+ var handleDeactivate = useCallback(function (event) {
74
75
  if (textAreaProps) {
75
76
  var onBlur = textAreaProps.onBlur;
76
- onBlur && onBlur(e);
77
+ onBlur && onBlur(event);
77
78
  }
78
79
  setActive(false);
79
80
  setBlurred(true);
80
81
  }, [textAreaProps]);
81
- var handleActivate = React.useCallback(function () {
82
+ var handleActivate = useCallback(function () {
82
83
  setActive(true);
83
84
  setBlurred(false);
84
85
  }, []);
85
86
  return /*#__PURE__*/React.createElement(S.Subtle, {
86
87
  className: "ds-subtle-form"
87
- }, label && /*#__PURE__*/React.createElement(S.ContentAbove, {
88
- active: active
89
- }, /*#__PURE__*/React.createElement(Label, {
88
+ }, /*#__PURE__*/React.createElement(S.SubtleFormField, {
89
+ active: active,
90
90
  label: label,
91
91
  tooltip: labelTooltip
92
- })), /*#__PURE__*/React.createElement(S.Container, {
92
+ }, /*#__PURE__*/React.createElement(S.Container, {
93
93
  ref: containerRef,
94
94
  className: "ds-subtle-textarea",
95
95
  active: active,
96
96
  disabled: disabled
97
97
  }, (active || hasError) && !disabled ? /*#__PURE__*/React.createElement(TextArea, _extends({
98
98
  autoFocus: !hasError && !disabled,
99
- onChange: !disabled ? function (e) {
100
- onChange && onChange(e.currentTarget.value);
99
+ onChange: !disabled ? function (event) {
100
+ onChange && onChange(event.currentTarget.value);
101
101
  } : undefined,
102
102
  onBlur: !disabled ? handleDeactivate : undefined,
103
103
  value: value,
@@ -129,6 +129,6 @@ var SubtleTextArea = function SubtleTextArea(_ref) {
129
129
  }, suffix != null ? suffix : /*#__PURE__*/React.createElement(Icon, {
130
130
  component: /*#__PURE__*/React.createElement(EditS, null),
131
131
  color: theme.palette['grey-600']
132
- }))))));
132
+ })))))));
133
133
  };
134
134
  export default SubtleTextArea;
@@ -1,4 +1,3 @@
1
- /// <reference types="react" />
2
1
  import { TextAreaProps } from '@synerise/ds-input/dist/Textarea/Textarea.types';
3
2
  import { SubtleFieldProps } from '../../SubtleForm.types';
4
3
  export type SubtleTextAreaProps = {
@@ -9,7 +8,6 @@ export type SubtleTextAreaProps = {
9
8
  placeholder?: string;
10
9
  autoSize?: TextareaAutosize;
11
10
  error?: boolean;
12
- errorText?: React.ReactNode;
13
11
  textAreaProps?: TextAreaProps;
14
12
  } & SubtleFieldProps;
15
13
  export type TextareaAutosize = {
@@ -1,3 +1,4 @@
1
+ /// <reference types="react" />
1
2
  export declare const blurPadding = "7px 40px 7px 0px";
2
3
  export declare const focusPadding = "7px 28px 7px 12px";
3
4
  export declare const blurAnimation: import("styled-components").Keyframes;
@@ -24,6 +25,6 @@ export declare const Container: import("styled-components").StyledComponent<"div
24
25
  export declare const Subtle: import("styled-components").StyledComponent<"div", any, {
25
26
  disabled?: boolean | undefined;
26
27
  }, never>;
27
- export declare const ContentAbove: import("styled-components").StyledComponent<"div", any, {
28
+ export declare const SubtleFormField: import("styled-components").StyledComponent<({ label, tooltip, id, rightSide, tooltipConfig, description, errorText, children, ...rest }: import("@synerise/ds-form-field").FormFieldProps) => import("react").JSX.Element, any, {
28
29
  active: boolean;
29
30
  }, never>;
@@ -1,4 +1,5 @@
1
1
  import styled, { css, keyframes } from 'styled-components';
2
+ import FormField from '@synerise/ds-form-field';
2
3
  import { MaskedDatePlaceholder } from './Elements/DatePicker/DatePicker.styles';
3
4
  var disableBlinkingCursor = function disableBlinkingCursor(props) {
4
5
  return css(["color:transparent;text-shadow:0 1px ", ";"], props.grey ? props.theme.palette['grey-500'] : props.theme.palette['grey-600']);
@@ -56,9 +57,9 @@ export var Subtle = styled.div.withConfig({
56
57
  })(["", ""], function (props) {
57
58
  return !!props.disabled && css(["&&{cursor:not-allowed;}"]);
58
59
  });
59
- export var ContentAbove = styled.div.withConfig({
60
- displayName: "SubtleFormstyles__ContentAbove",
60
+ export var SubtleFormField = styled(FormField).withConfig({
61
+ displayName: "SubtleFormstyles__SubtleFormField",
61
62
  componentId: "sc-1wunvof-6"
62
- })(["padding:0;display:flex;justify-content:space-between;margin-bottom:", ";"], function (props) {
63
- return props.active ? "9px" : "8px";
63
+ })(["gap:", ";"], function (props) {
64
+ return props.active ? "10px" : "8px";
64
65
  });
@@ -1,4 +1,5 @@
1
1
  import React from 'react';
2
+ import { FormFieldCommonProps } from '@synerise/ds-form-field';
2
3
  import { SubtleTextAreaProps } from './Elements/TextArea/TextArea.types';
3
4
  import { SubtleSelectProps } from './Elements/Select/Select.types';
4
5
  import { SubtleDatePickerProps } from './Elements/DatePicker/DatePicker.types';
@@ -13,12 +14,11 @@ export type SubtleFormSubComponents = {
13
14
  export type SubtleFieldProps = {
14
15
  active?: boolean;
15
16
  disabled?: boolean;
16
- label?: React.ReactNode | string;
17
- labelTooltip?: React.ReactNode | string;
17
+ labelTooltip?: FormFieldCommonProps['tooltip'];
18
18
  suffix?: React.ReactNode | string;
19
19
  suffixTooltip?: React.ReactNode | string;
20
20
  activeElement?: () => React.ReactElement;
21
21
  inactiveElement?: () => React.ReactElement;
22
22
  mask?: string;
23
23
  maskVisible?: boolean;
24
- };
24
+ } & Pick<FormFieldCommonProps, 'label' | 'errorText'>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@synerise/ds-subtle-form",
3
- "version": "1.0.3",
3
+ "version": "1.1.0",
4
4
  "description": "SubtleForm UI Component for the Synerise Design System",
5
5
  "license": "ISC",
6
6
  "repository": "Synerise/synerise-design",
@@ -34,11 +34,12 @@
34
34
  ],
35
35
  "types": "dist/index.d.ts",
36
36
  "dependencies": {
37
- "@synerise/ds-date-picker": "^1.0.3",
38
- "@synerise/ds-icon": "^1.2.0",
39
- "@synerise/ds-input": "^1.0.3",
40
- "@synerise/ds-select": "^1.0.3",
41
- "@synerise/ds-tooltip": "^1.1.2",
37
+ "@synerise/ds-date-picker": "^1.1.0",
38
+ "@synerise/ds-form-field": "^1.1.0",
39
+ "@synerise/ds-icon": "^1.4.0",
40
+ "@synerise/ds-input": "^1.1.0",
41
+ "@synerise/ds-select": "^1.1.0",
42
+ "@synerise/ds-tooltip": "^1.1.4",
42
43
  "@synerise/ds-utils": "^1.0.1",
43
44
  "calculate-size": "^1.1.1"
44
45
  },
@@ -48,5 +49,5 @@
48
49
  "react": ">=16.9.0 <= 18.3.1",
49
50
  "styled-components": "^5.3.3"
50
51
  },
51
- "gitHead": "5438445467b16dbc0c2ca97d969ae0e09b74131b"
52
+ "gitHead": "6735f9babfeef53122f54ca86cba5f581e8870d9"
52
53
  }
@@ -1,3 +0,0 @@
1
- export declare const ContentAbove: import("styled-components").StyledComponent<"div", any, {
2
- active?: boolean | undefined;
3
- }, never>;
@@ -1,9 +0,0 @@
1
- import styled from 'styled-components';
2
-
3
- // eslint-disable-next-line import/prefer-default-export
4
- export var ContentAbove = styled.div.withConfig({
5
- displayName: "Fieldstyles__ContentAbove",
6
- componentId: "sc-1etqryf-0"
7
- })(["padding:0 0 0 0;display:flex;justify-content:space-between;margin-bottom:", ";"], function (props) {
8
- return props.active ? "10px" : "8px";
9
- });