@itcase/forms 1.0.11 → 1.0.13

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.
@@ -20,6 +20,7 @@
20
20
  flex-flow: column nowrap;
21
21
  justify-content: center;
22
22
  align-content: center;
23
+ align-items: center;
23
24
  cursor: pointer;
24
25
  &-title {
25
26
  padding: 0 0 8px 0;
@@ -30,3 +30,12 @@
30
30
  }
31
31
  }
32
32
  }
33
+ .form-field {
34
+ &_state {
35
+ &_hidden {
36
+ visibility: hidden;
37
+ position: absolute;
38
+ z-index: -1;
39
+ }
40
+ }
41
+ }
@@ -548,6 +548,7 @@ function FieldWrapperBase(props) {
548
548
  metaValid = props.metaValid,
549
549
  set = props.set,
550
550
  type = props.type,
551
+ isHidden = props.isHidden,
551
552
  Tag = props.tag,
552
553
  dataTour = props.dataTour,
553
554
  showErrorsOnSubmit = props.showErrorsOnSubmit;
@@ -601,7 +602,7 @@ function FieldWrapperBase(props) {
601
602
  var _useStyles = useStyles.useStyles(props),
602
603
  formFieldStyles = _useStyles.styles;
603
604
  return /*#__PURE__*/React__default.default.createElement(Tag, {
604
- className: clsx__default.default(formFieldClass, 'form__item', 'form-field', type && "form-field_type_" + type, set && "form-field_set_" + set, sizeClass, fillClass, shapeClass, directionClass, widthClass),
605
+ className: clsx__default.default(formFieldClass, 'form__item', 'form-field', type && "form-field_type_" + type, set && "form-field_set_" + set, sizeClass, fillClass, shapeClass, isHidden && "form-field_state_hidden", directionClass, widthClass),
605
606
  "data-tour": dataTour,
606
607
  style: formFieldStyles
607
608
  }, before, label && /*#__PURE__*/React__default.default.createElement("div", {
@@ -1324,6 +1325,10 @@ var FileInputDropzone = /*#__PURE__*/React__default.default.memo(function FileIn
1324
1325
  prefix: 'border-color_',
1325
1326
  propsKey: 'borderColor'
1326
1327
  });
1328
+ var borderColorHoverClass = useDeviceTargetClass.useDeviceTargetClass(props, {
1329
+ prefix: 'border-color_hover_',
1330
+ propsKey: 'borderColorHover'
1331
+ });
1327
1332
  var borderTypeClass = useDeviceTargetClass.useDeviceTargetClass(props, {
1328
1333
  prefix: 'border_type_',
1329
1334
  propsKey: 'borderType'
@@ -1349,7 +1354,7 @@ var FileInputDropzone = /*#__PURE__*/React__default.default.memo(function FileIn
1349
1354
  }), /*#__PURE__*/React__default.default.createElement("input", Object.assign({}, getInputProps(), {
1350
1355
  name: inputName
1351
1356
  })), /*#__PURE__*/React__default.default.createElement("div", {
1352
- className: clsx__default.default('form-dropzone__dropzone-wrapper', fillClass, fillHoverClass, borderWidthClass, borderColorClass, borderTypeClass)
1357
+ className: clsx__default.default('form-dropzone__dropzone-wrapper', fillClass, fillHoverClass, borderWidthClass, borderColorClass, borderColorHoverClass, borderTypeClass)
1353
1358
  }, files.map(function (file, i) {
1354
1359
  return /*#__PURE__*/React__default.default.createElement("aside", {
1355
1360
  className: clsx__default.default('form-dropzone__thumb', fillClass, thumbBorderWidthClass, thumbBorderColorClass, thumbBorderTypeClass),
@@ -1439,6 +1444,7 @@ var FileInput = /*#__PURE__*/React__default.default.memo(function FileInput(prop
1439
1444
  size = props.size,
1440
1445
  borderWidth = props.borderWidth,
1441
1446
  borderColor = props.borderColor,
1447
+ borderColorHover = props.borderColorHover,
1442
1448
  borderType = props.borderType,
1443
1449
  label = props.label,
1444
1450
  thumbBorderWidth = props.thumbBorderWidth,
@@ -1501,6 +1507,7 @@ var FileInput = /*#__PURE__*/React__default.default.memo(function FileInput(prop
1501
1507
  hintTitle: hintTitle,
1502
1508
  borderWidth: borderWidth,
1503
1509
  borderColor: borderColor,
1510
+ borderColorHover: borderColorHover,
1504
1511
  borderType: borderType,
1505
1512
  thumbBorderWidth: thumbBorderWidth,
1506
1513
  thumbBorderColor: thumbBorderColor,
@@ -1876,7 +1883,8 @@ RadioGroup.propTypes = {
1876
1883
  onChange: PropTypes__default.default.func
1877
1884
  };
1878
1885
 
1879
- var SegmentedField = /*#__PURE__*/React__default.default.memo(function SegmentedField(props) {
1886
+ // const SegmentedField = React.memo(
1887
+ function SegmentedField(props) {
1880
1888
  var options = props.options,
1881
1889
  isRequired = props.isRequired,
1882
1890
  name = props.name,
@@ -1884,21 +1892,27 @@ var SegmentedField = /*#__PURE__*/React__default.default.memo(function Segmented
1884
1892
  inputProps = props.inputProps;
1885
1893
  var _useForm = reactFinalForm.useForm(),
1886
1894
  change = _useForm.change;
1887
- var _useState = React.useState({
1888
- value: null,
1889
- label: null
1890
- }),
1891
- activeOption = _useState[0],
1892
- setActiveOption = _useState[1];
1893
- var setActiveSegment = React.useCallback(function (option) {
1894
- setActiveOption(option);
1895
- change(name, option.value);
1896
- }, [change]);
1897
1895
  return /*#__PURE__*/React__default.default.createElement(reactFinalForm.Field, {
1898
1896
  name: name
1899
1897
  }, function (_ref) {
1900
1898
  var input = _ref.input,
1901
1899
  meta = _ref.meta;
1900
+ var activeOption = React.useMemo(function () {
1901
+ var emptyOption = {
1902
+ value: null,
1903
+ label: null
1904
+ };
1905
+ if (input.value) {
1906
+ var currentOption = options.find(function (option) {
1907
+ return option.value === input.value;
1908
+ });
1909
+ return currentOption || emptyOption;
1910
+ }
1911
+ return emptyOption;
1912
+ }, [input.value]);
1913
+ var setActiveSegment = React.useCallback(function (option) {
1914
+ change(name, option.value);
1915
+ }, [change]);
1902
1916
  return /*#__PURE__*/React__default.default.createElement(FieldWrapper, Object.assign({
1903
1917
  className: clsx__default.default('form-field_type_segmented', 'form__item_type_segmented'),
1904
1918
  fieldClassName: "form-segmented",
@@ -1918,7 +1932,9 @@ var SegmentedField = /*#__PURE__*/React__default.default.memo(function Segmented
1918
1932
  activeSegment: activeOption
1919
1933
  }, inputProps)));
1920
1934
  });
1921
- });
1935
+ }
1936
+ // )
1937
+
1922
1938
  SegmentedField.propTypes = {
1923
1939
  options: PropTypes__default.default.array.isRequired,
1924
1940
  name: PropTypes__default.default.string.isRequired,
@@ -538,6 +538,7 @@ function FieldWrapperBase(props) {
538
538
  metaValid = props.metaValid,
539
539
  set = props.set,
540
540
  type = props.type,
541
+ isHidden = props.isHidden,
541
542
  Tag = props.tag,
542
543
  dataTour = props.dataTour,
543
544
  showErrorsOnSubmit = props.showErrorsOnSubmit;
@@ -591,7 +592,7 @@ function FieldWrapperBase(props) {
591
592
  var _useStyles = useStyles(props),
592
593
  formFieldStyles = _useStyles.styles;
593
594
  return /*#__PURE__*/React.createElement(Tag, {
594
- className: clsx(formFieldClass, 'form__item', 'form-field', type && "form-field_type_" + type, set && "form-field_set_" + set, sizeClass, fillClass, shapeClass, directionClass, widthClass),
595
+ className: clsx(formFieldClass, 'form__item', 'form-field', type && "form-field_type_" + type, set && "form-field_set_" + set, sizeClass, fillClass, shapeClass, isHidden && "form-field_state_hidden", directionClass, widthClass),
595
596
  "data-tour": dataTour,
596
597
  style: formFieldStyles
597
598
  }, before, label && /*#__PURE__*/React.createElement("div", {
@@ -1314,6 +1315,10 @@ var FileInputDropzone = /*#__PURE__*/React.memo(function FileInputDropzone(props
1314
1315
  prefix: 'border-color_',
1315
1316
  propsKey: 'borderColor'
1316
1317
  });
1318
+ var borderColorHoverClass = useDeviceTargetClass(props, {
1319
+ prefix: 'border-color_hover_',
1320
+ propsKey: 'borderColorHover'
1321
+ });
1317
1322
  var borderTypeClass = useDeviceTargetClass(props, {
1318
1323
  prefix: 'border_type_',
1319
1324
  propsKey: 'borderType'
@@ -1339,7 +1344,7 @@ var FileInputDropzone = /*#__PURE__*/React.memo(function FileInputDropzone(props
1339
1344
  }), /*#__PURE__*/React.createElement("input", Object.assign({}, getInputProps(), {
1340
1345
  name: inputName
1341
1346
  })), /*#__PURE__*/React.createElement("div", {
1342
- className: clsx('form-dropzone__dropzone-wrapper', fillClass, fillHoverClass, borderWidthClass, borderColorClass, borderTypeClass)
1347
+ className: clsx('form-dropzone__dropzone-wrapper', fillClass, fillHoverClass, borderWidthClass, borderColorClass, borderColorHoverClass, borderTypeClass)
1343
1348
  }, files.map(function (file, i) {
1344
1349
  return /*#__PURE__*/React.createElement("aside", {
1345
1350
  className: clsx('form-dropzone__thumb', fillClass, thumbBorderWidthClass, thumbBorderColorClass, thumbBorderTypeClass),
@@ -1429,6 +1434,7 @@ var FileInput = /*#__PURE__*/React.memo(function FileInput(props) {
1429
1434
  size = props.size,
1430
1435
  borderWidth = props.borderWidth,
1431
1436
  borderColor = props.borderColor,
1437
+ borderColorHover = props.borderColorHover,
1432
1438
  borderType = props.borderType,
1433
1439
  label = props.label,
1434
1440
  thumbBorderWidth = props.thumbBorderWidth,
@@ -1491,6 +1497,7 @@ var FileInput = /*#__PURE__*/React.memo(function FileInput(props) {
1491
1497
  hintTitle: hintTitle,
1492
1498
  borderWidth: borderWidth,
1493
1499
  borderColor: borderColor,
1500
+ borderColorHover: borderColorHover,
1494
1501
  borderType: borderType,
1495
1502
  thumbBorderWidth: thumbBorderWidth,
1496
1503
  thumbBorderColor: thumbBorderColor,
@@ -1866,7 +1873,8 @@ RadioGroup.propTypes = {
1866
1873
  onChange: PropTypes.func
1867
1874
  };
1868
1875
 
1869
- var SegmentedField = /*#__PURE__*/React.memo(function SegmentedField(props) {
1876
+ // const SegmentedField = React.memo(
1877
+ function SegmentedField(props) {
1870
1878
  var options = props.options,
1871
1879
  isRequired = props.isRequired,
1872
1880
  name = props.name,
@@ -1874,21 +1882,27 @@ var SegmentedField = /*#__PURE__*/React.memo(function SegmentedField(props) {
1874
1882
  inputProps = props.inputProps;
1875
1883
  var _useForm = useForm(),
1876
1884
  change = _useForm.change;
1877
- var _useState = useState({
1878
- value: null,
1879
- label: null
1880
- }),
1881
- activeOption = _useState[0],
1882
- setActiveOption = _useState[1];
1883
- var setActiveSegment = useCallback(function (option) {
1884
- setActiveOption(option);
1885
- change(name, option.value);
1886
- }, [change]);
1887
1885
  return /*#__PURE__*/React.createElement(Field, {
1888
1886
  name: name
1889
1887
  }, function (_ref) {
1890
1888
  var input = _ref.input,
1891
1889
  meta = _ref.meta;
1890
+ var activeOption = useMemo(function () {
1891
+ var emptyOption = {
1892
+ value: null,
1893
+ label: null
1894
+ };
1895
+ if (input.value) {
1896
+ var currentOption = options.find(function (option) {
1897
+ return option.value === input.value;
1898
+ });
1899
+ return currentOption || emptyOption;
1900
+ }
1901
+ return emptyOption;
1902
+ }, [input.value]);
1903
+ var setActiveSegment = useCallback(function (option) {
1904
+ change(name, option.value);
1905
+ }, [change]);
1892
1906
  return /*#__PURE__*/React.createElement(FieldWrapper, Object.assign({
1893
1907
  className: clsx('form-field_type_segmented', 'form__item_type_segmented'),
1894
1908
  fieldClassName: "form-segmented",
@@ -1908,7 +1922,9 @@ var SegmentedField = /*#__PURE__*/React.memo(function SegmentedField(props) {
1908
1922
  activeSegment: activeOption
1909
1923
  }, inputProps)));
1910
1924
  });
1911
- });
1925
+ }
1926
+ // )
1927
+
1912
1928
  SegmentedField.propTypes = {
1913
1929
  options: PropTypes.array.isRequired,
1914
1930
  name: PropTypes.string.isRequired,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@itcase/forms",
3
- "version": "1.0.11",
3
+ "version": "1.0.13",
4
4
  "description": "Forms fields, inputs, etc.",
5
5
  "keywords": [
6
6
  "forms",