@synerise/ds-factors 1.0.0 → 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-factors@1.0.1...@synerise/ds-factors@1.1.0) (2025-03-26)
7
+
8
+
9
+ ### Features
10
+
11
+ * 🎸 removes debounce from factors ([1156197](https://github.com/Synerise/synerise-design/commit/11561979b0c1b368e9d9909e8a0cf84cfb45472b))
12
+
13
+
14
+
15
+
16
+
17
+ ## [1.0.1](https://github.com/Synerise/synerise-design/compare/@synerise/ds-factors@1.0.0...@synerise/ds-factors@1.0.1) (2025-03-18)
18
+
19
+ **Note:** Version bump only for package @synerise/ds-factors
20
+
21
+
22
+
23
+
24
+
6
25
  ## [0.28.14](https://github.com/Synerise/synerise-design/compare/@synerise/ds-factors@0.28.13...@synerise/ds-factors@0.28.14) (2025-03-10)
7
26
 
8
27
  **Note:** Version bump only for package @synerise/ds-factors
@@ -1,4 +1,4 @@
1
1
  import React from 'react';
2
2
  import { FactorTypeSelectorProps } from '../Factors.types';
3
- declare const FactorTypeSelector: ({ selectedFactorType, setSelectedFactorType, unavailableFactorTypes, availableFactorTypes, selectedFactor, texts, readOnly, }: FactorTypeSelectorProps) => React.JSX.Element;
3
+ declare const FactorTypeSelector: ({ selectedFactorType, setSelectedFactorType, unavailableFactorTypes, availableFactorTypes, factorTypeMapping, selectedFactor, texts, readOnly, }: FactorTypeSelectorProps) => React.JSX.Element;
4
4
  export default FactorTypeSelector;
@@ -6,12 +6,12 @@ import ListItem from '@synerise/ds-list-item';
6
6
  import { theme } from '@synerise/ds-core';
7
7
  import * as S from './FactorTypeSelector.styles';
8
8
  import { ALL_FACTOR_TYPES } from '../Factors.types';
9
- import { factorTypes } from '../Factors';
10
9
  var FactorTypeSelector = function FactorTypeSelector(_ref) {
11
10
  var selectedFactorType = _ref.selectedFactorType,
12
11
  setSelectedFactorType = _ref.setSelectedFactorType,
13
12
  unavailableFactorTypes = _ref.unavailableFactorTypes,
14
13
  availableFactorTypes = _ref.availableFactorTypes,
14
+ factorTypeMapping = _ref.factorTypeMapping,
15
15
  selectedFactor = _ref.selectedFactor,
16
16
  texts = _ref.texts,
17
17
  readOnly = _ref.readOnly;
@@ -28,9 +28,9 @@ var FactorTypeSelector = function FactorTypeSelector(_ref) {
28
28
  return list.map(function (type) {
29
29
  return /*#__PURE__*/React.createElement(ListItem, {
30
30
  className: "ds-factor-type",
31
- key: factorTypes[type].name,
31
+ key: factorTypeMapping[type].name,
32
32
  prefixel: /*#__PURE__*/React.createElement(Icon, {
33
- component: factorTypes[type].icon
33
+ component: factorTypeMapping[type].icon
34
34
  }),
35
35
  suffixel: type === selectedFactorType ? /*#__PURE__*/React.createElement(Icon, {
36
36
  component: /*#__PURE__*/React.createElement(CheckS, null),
@@ -42,7 +42,7 @@ var FactorTypeSelector = function FactorTypeSelector(_ref) {
42
42
  }
43
43
  }, texts[type]);
44
44
  });
45
- }, [availableFactorTypes, unavailableFactorTypes, selectedFactorType, texts, setSelectedFactorType]);
45
+ }, [availableFactorTypes, unavailableFactorTypes, factorTypeMapping, selectedFactorType, texts, setSelectedFactorType]);
46
46
  var trigger = /*#__PURE__*/React.createElement(S.TriggerButton, {
47
47
  mode: "single-icon",
48
48
  className: "ds-factors-type-selector",
@@ -1,4 +1,4 @@
1
1
  import React from 'react';
2
- import { InputProps } from '../../Factors.types';
3
- declare const DateInput: ({ value, onChange, texts, opened, onDeactivate, onActivate, error, allowClear, readOnly, getPopupContainerOverride, }: InputProps) => React.JSX.Element;
2
+ import { FactorValueComponentProps } from '../../Factors.types';
3
+ declare const DateInput: ({ value, onChange, texts, opened, onDeactivate, onActivate, error, allowClear, readOnly, getPopupContainerOverride, }: FactorValueComponentProps) => React.JSX.Element;
4
4
  export default DateInput;
@@ -1,4 +1,4 @@
1
1
  import React from 'react';
2
- import { InputProps } from '../../Factors.types';
3
- declare const DateRangeInput: ({ getPopupContainerOverride, value, onChange, error, texts, onDeactivate, allowClear, readOnly, }: InputProps) => React.JSX.Element;
2
+ import { FactorValueComponentProps } from '../../Factors.types';
3
+ declare const DateRangeInput: ({ getPopupContainerOverride, value, onChange, error, texts, onDeactivate, allowClear, readOnly, }: FactorValueComponentProps) => React.JSX.Element;
4
4
  export default DateRangeInput;
@@ -1,4 +1,4 @@
1
1
  import React from 'react';
2
- import { InputProps } from '../../Factors.types';
3
- declare const DynamicKey: ({ value, onChange, withoutTypeSelector, texts, opened, onDeactivate, error, readOnly, }: InputProps) => React.JSX.Element;
2
+ import { FactorValueComponentProps } from '../../Factors.types';
3
+ declare const DynamicKey: ({ value, onChange, withoutTypeSelector, texts, opened, onDeactivate, error, readOnly, }: FactorValueComponentProps) => React.JSX.Element;
4
4
  export default DynamicKey;
@@ -1,7 +1,6 @@
1
1
  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); }
2
- import React, { useEffect, useRef, useState } from 'react';
2
+ import React, { useEffect, useState } from 'react';
3
3
  import { RawInput } from '@synerise/ds-input';
4
- import { debounce } from 'lodash';
5
4
  import * as S from './DynamicKey.style';
6
5
  var DynamicKey = function DynamicKey(_ref) {
7
6
  var value = _ref.value,
@@ -23,15 +22,11 @@ var DynamicKey = function DynamicKey(_ref) {
23
22
  var _useState2 = useState(false),
24
23
  localError = _useState2[0],
25
24
  setLocalError = _useState2[1];
26
- var onChangeRef = useRef(onChange);
27
- var debouncedOnChange = useRef(debounce(function (inputValue) {
28
- onChangeRef.current && onChangeRef.current(inputValue);
29
- }, 300)).current;
30
25
  var handleChange = function handleChange(event) {
31
26
  var newValue = _extends({}, value);
32
27
  newValue[event.target.name] = event.target.value;
33
28
  setLocalValue(newValue);
34
- debouncedOnChange(newValue);
29
+ onChange(newValue);
35
30
  if (!event.target.value.length) {
36
31
  setLocalError(true);
37
32
  } else {
@@ -39,13 +34,11 @@ var DynamicKey = function DynamicKey(_ref) {
39
34
  }
40
35
  };
41
36
  useEffect(function () {
42
- onChangeRef.current = onChange;
43
- }, [localValue, onChange]);
44
- useEffect(function () {
45
- return function () {
46
- debouncedOnChange.cancel();
47
- };
48
- }, [debouncedOnChange]);
37
+ setLocalValue({
38
+ key: value.key,
39
+ value: value.value
40
+ });
41
+ }, [value]);
49
42
  var trigger = /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(RawInput, {
50
43
  placeholder: texts.dynamicKey.keyPlaceholder,
51
44
  value: localValue.key,
@@ -30,16 +30,17 @@ var FactorValue = function FactorValue(_ref) {
30
30
  if (!selectedFactor) {
31
31
  return undefined;
32
32
  }
33
- var InputComponent = selectedFactor.input;
34
- return /*#__PURE__*/React.createElement(InputComponent, {
33
+ var FactorValueComponent = selectedFactor.component;
34
+ return /*#__PURE__*/React.createElement(FactorValueComponent, {
35
35
  key: factorKey + "-" + selectedFactor.name,
36
- value: value,
37
- placeholder: texts.valuePlaceholder,
36
+ value: value
37
+ // placeholder={texts.valuePlaceholder}
38
+ ,
38
39
  onChange: onChangeValue,
39
40
  textType: textType,
40
41
  factorType: selectedFactorType,
41
42
  autocompleteText: autocompleteText,
42
- parameters: ['parameter', 'contextParameter'].indexOf(selectedFactorType) >= 0 && parameters,
43
+ parameters: ['parameter', 'contextParameter'].indexOf(selectedFactorType) >= 0 ? parameters : undefined,
43
44
  withoutTypeSelector: withoutTypeSelector,
44
45
  texts: texts,
45
46
  inputProps: inputProps,
@@ -1,4 +1,4 @@
1
1
  import React from 'react';
2
- import { InputProps } from '../../Factors.types';
3
- declare const FormulaInput: ({ value, error, onChange, withoutTypeSelector, texts, formulaEditor, readOnly, }: InputProps) => React.JSX.Element;
2
+ import { FactorValueComponentProps } from '../../Factors.types';
3
+ declare const FormulaInput: ({ value, error, onChange, withoutTypeSelector, texts, formulaEditor, readOnly, }: FactorValueComponentProps) => React.JSX.Element;
4
4
  export default FormulaInput;
@@ -1,4 +1,4 @@
1
1
  import React from 'react';
2
- import { InputProps } from '../../Factors.types';
3
- declare const NumberInput: ({ error, value, onChange, texts, opened, onDeactivate, readOnly }: InputProps) => React.JSX.Element;
2
+ import { FactorValueComponentProps } from '../../Factors.types';
3
+ declare const NumberInput: ({ error, value, onChange, texts, opened, onDeactivate, readOnly, }: FactorValueComponentProps) => React.JSX.Element;
4
4
  export default NumberInput;
@@ -1,6 +1,5 @@
1
- import React, { useEffect, useRef, useState } from 'react';
1
+ import React, { useEffect, useState } from 'react';
2
2
  import InputNumber from '@synerise/ds-input-number';
3
- import { debounce } from 'lodash';
4
3
  var NumberInput = function NumberInput(_ref) {
5
4
  var error = _ref.error,
6
5
  value = _ref.value,
@@ -13,21 +12,12 @@ var NumberInput = function NumberInput(_ref) {
13
12
  var _useState = useState(value),
14
13
  localValue = _useState[0],
15
14
  setLocalValue = _useState[1];
16
- var onChangeRef = useRef(onChange);
17
15
  useEffect(function () {
18
- onChangeRef.current = onChange;
19
- }, [localValue, onChange]);
20
- var debouncedOnChange = useRef(debounce(function (inputValue) {
21
- onChangeRef.current && onChangeRef.current(inputValue);
22
- }, 300)).current;
23
- useEffect(function () {
24
- return function () {
25
- debouncedOnChange.cancel();
26
- };
27
- }, [debouncedOnChange]);
16
+ setLocalValue(value);
17
+ }, [value]);
28
18
  var handleChange = function handleChange(val) {
29
19
  setLocalValue(val);
30
- debouncedOnChange(val);
20
+ onChange(val);
31
21
  };
32
22
  return /*#__PURE__*/React.createElement(InputNumber, {
33
23
  error: error,
@@ -1,4 +1,4 @@
1
1
  import React from 'react';
2
- import { InputProps } from '../../Factors.types';
3
- declare const ParameterInput: ({ value, onChange, onParamsClick, parameters, texts, opened, preventAutoloadData, getPopupContainerOverride, onActivate, onDeactivate, readOnly, error, loading, getMenuEntryProps, }: InputProps) => React.JSX.Element;
2
+ import { FactorValueComponentProps } from '../../Factors.types';
3
+ declare const ParameterInput: ({ value, onChange, onParamsClick, parameters, texts, opened, preventAutoloadData, getPopupContainerOverride, onActivate, onDeactivate, readOnly, error, loading, getMenuEntryProps, }: FactorValueComponentProps) => React.JSX.Element;
4
4
  export default ParameterInput;
@@ -27,12 +27,12 @@ var ParameterInput = function ParameterInput(_ref) {
27
27
  error = _ref.error,
28
28
  loading = _ref.loading,
29
29
  getMenuEntryProps = _ref.getMenuEntryProps;
30
- // @ts-ignore
31
- var buttonIcon = parameters.buttonIcon,
32
- buttonLabel = parameters.buttonLabel,
33
- selectedButtonColored = parameters.selectedButtonColored,
34
- dropdownDimensionsConfig = parameters.dropdownDimensionsConfig,
35
- restParameters = _objectWithoutPropertiesLoose(parameters, _excluded);
30
+ var _ref2 = parameters || {},
31
+ buttonIcon = _ref2.buttonIcon,
32
+ buttonLabel = _ref2.buttonLabel,
33
+ selectedButtonColored = _ref2.selectedButtonColored,
34
+ dropdownDimensionsConfig = _ref2.dropdownDimensionsConfig,
35
+ restParameters = _objectWithoutPropertiesLoose(_ref2, _excluded);
36
36
  var dimensionsConfig = _extends({
37
37
  defaultHeight: DROPDOWN_HEIGHT,
38
38
  lowerHeight: DROPDOWN_HEIGHT_BELOW_THRESHOLD,
@@ -34,7 +34,7 @@ export var Value = styled.span.withConfig({
34
34
  export var StyledList = styled(VariableSizeList).withConfig({
35
35
  displayName: "Parameterstyle__StyledList",
36
36
  componentId: "sc-u2uvgh-6"
37
- })(["overflowx:unset;overflowy:unset;height:auto !important;max-height:300px;"]);
37
+ })(["overflow-x:unset;overflow-y:unset;height:auto !important;max-height:300px;"]);
38
38
  export var Skeleton = styled(DropdownSkeleton).withConfig({
39
39
  displayName: "Parameterstyle__Skeleton",
40
40
  componentId: "sc-u2uvgh-7"
@@ -1,4 +1,4 @@
1
1
  import React from 'react';
2
- import { InputProps } from '../../Factors.types';
3
- declare const TextInput: ({ value, onChange, texts, textType, autocompleteText, factorType, opened, onDeactivate, error, inputProps, getPopupContainerOverride, readOnly, }: InputProps) => React.JSX.Element;
2
+ import { FactorValueComponentProps } from '../../Factors.types';
3
+ declare const TextInput: ({ value, onChange, texts, textType, autocompleteText, factorType, opened, onDeactivate, error, inputProps, getPopupContainerOverride, readOnly, }: FactorValueComponentProps) => React.JSX.Element;
4
4
  export default TextInput;
@@ -1,6 +1,5 @@
1
1
  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); }
2
- import React, { useCallback, useEffect, useMemo, useState, useRef } from 'react';
3
- import { debounce } from 'lodash';
2
+ import React, { useCallback, useEffect, useMemo, useState } from 'react';
4
3
  import Icon, { FullScreenM } from '@synerise/ds-icon';
5
4
  import { theme } from '@synerise/ds-core';
6
5
  import Autocomplete from '@synerise/ds-autocomplete';
@@ -33,41 +32,32 @@ var TextInput = function TextInput(_ref) {
33
32
  var _useState4 = useState(false),
34
33
  localError = _useState4[0],
35
34
  setLocalError = _useState4[1];
36
- var onChangeRef = useRef(onChange);
37
35
  useEffect(function () {
38
36
  if (inputRef != null && inputRef.current && opened) {
39
37
  inputRef.current.focus();
40
38
  }
41
39
  }, [inputRef, opened]);
42
- useEffect(function () {
43
- onChangeRef.current = onChange;
44
- }, [localValue, onChange]);
45
- var debouncedOnChange = useRef(debounce(function (inputValue) {
46
- onChangeRef.current && onChangeRef.current(inputValue);
47
- }, 300)).current;
48
- useEffect(function () {
49
- return function () {
50
- debouncedOnChange.cancel();
51
- };
52
- }, [debouncedOnChange]);
53
40
  var handleChange = useCallback(function (event) {
54
41
  setLocalValue(event.target.value);
55
- debouncedOnChange(event.target.value);
42
+ onChange(event.target.value);
56
43
  if (!event.target.value.length) {
57
44
  setLocalError(true);
58
45
  } else {
59
46
  setLocalError(false);
60
47
  }
61
- }, [setLocalValue, setLocalError, debouncedOnChange]);
48
+ }, [setLocalValue, setLocalError, onChange]);
62
49
  var handleApply = useCallback(function (val) {
63
50
  setOpenExpanseEditor(false);
64
51
  setLocalValue(val);
65
- debouncedOnChange(val);
66
- }, [debouncedOnChange]);
52
+ onChange(val);
53
+ }, [onChange]);
67
54
  var handleAutocomplete = useCallback(function (val) {
68
55
  setLocalValue(val);
69
- debouncedOnChange(val);
70
- }, [debouncedOnChange]);
56
+ onChange(val);
57
+ }, [onChange]);
58
+ useEffect(function () {
59
+ setLocalValue(value);
60
+ }, [value]);
71
61
  var autocompleteOptions = useMemo(function () {
72
62
  return autocompleteText && autocompleteText.options.filter(function (option) {
73
63
  return option.toLowerCase().includes(String(localValue).toLowerCase());
package/dist/Factors.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
2
  import { DefinedFactorTypes, FactorsProps, SelectedFactorType } from './Factors.types';
3
- export declare const factorTypes: Record<DefinedFactorTypes, SelectedFactorType>;
4
- declare const Factors: ({ selectedFactorType, setSelectedFactorType, onChangeValue, onParamsClick, value, defaultFactorType, textType, unavailableFactorTypes, availableFactorTypes, parameters, autocompleteText, allowClear, withoutTypeSelector, texts, formulaEditor, opened, loading, factorKey, preventAutoloadData, onActivate, onDeactivate, getPopupContainerOverride, error, inputProps, readOnly, getMenuEntryProps, }: FactorsProps) => React.JSX.Element;
3
+ export declare const FACTOR_TYPE_MAPPING: Record<DefinedFactorTypes, SelectedFactorType>;
4
+ declare const Factors: ({ selectedFactorType, setSelectedFactorType, onChangeValue, onParamsClick, value, defaultFactorType, textType, unavailableFactorTypes, availableFactorTypes, parameters, autocompleteText, allowClear, withoutTypeSelector, texts, formulaEditor, opened, loading, factorKey, preventAutoloadData, onActivate, onDeactivate, getPopupContainerOverride, customFactorValueComponents, error, inputProps, readOnly, getMenuEntryProps, }: FactorsProps) => React.JSX.Element;
5
5
  export default Factors;
package/dist/Factors.js CHANGED
@@ -1,5 +1,7 @@
1
+ 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); }
1
2
  import React, { useMemo } from 'react';
2
3
  import { BookM, Calendar2M, DynamicKeyM, FormulaM, HashM, ListM, ShowM, TextM } from '@synerise/ds-icon';
4
+ import { NOOP } from '@synerise/ds-utils';
3
5
  import * as S from './style/Factors.style';
4
6
  import FactorTypeSelector from './FactorTypeSelector/FactorTypeSelector';
5
7
  import FactorValue from './FactorValue/FactorValue';
@@ -11,55 +13,53 @@ import ParameterInput from './FactorValue/Parameter/Parameter';
11
13
  import NumberInput from './FactorValue/Number/NumberInput';
12
14
  import DateRangeInput from './FactorValue/DateRange/DateRange';
13
15
  import { useTexts } from './hooks/useTexts';
14
- export var factorTypes = {
16
+ export var FACTOR_TYPE_MAPPING = {
15
17
  text: {
16
18
  icon: /*#__PURE__*/React.createElement(TextM, null),
17
19
  name: 'Text',
18
- input: TextInput
20
+ component: TextInput
19
21
  },
20
22
  number: {
21
23
  icon: /*#__PURE__*/React.createElement(HashM, null),
22
24
  name: 'Number',
23
- input: NumberInput
25
+ component: NumberInput
24
26
  },
25
27
  parameter: {
26
28
  icon: /*#__PURE__*/React.createElement(BookM, null),
27
29
  name: 'Parameter',
28
- input: ParameterInput
30
+ component: ParameterInput
29
31
  },
30
32
  contextParameter: {
31
33
  icon: /*#__PURE__*/React.createElement(ShowM, null),
32
34
  name: 'Context parameter',
33
- input: ParameterInput
35
+ component: ParameterInput
34
36
  },
35
37
  dynamicKey: {
36
38
  icon: /*#__PURE__*/React.createElement(DynamicKeyM, null),
37
39
  name: 'Dynamic key',
38
- input: DynamicKey
40
+ component: DynamicKey
39
41
  },
40
42
  formula: {
41
43
  icon: /*#__PURE__*/React.createElement(FormulaM, null),
42
44
  name: 'Formula',
43
- input: FormulaInput
45
+ component: FormulaInput
44
46
  },
45
47
  array: {
46
48
  icon: /*#__PURE__*/React.createElement(ListM, null),
47
49
  name: 'Array',
48
- input: TextInput
50
+ component: TextInput
49
51
  },
50
52
  date: {
51
53
  icon: /*#__PURE__*/React.createElement(Calendar2M, null),
52
54
  name: 'Date',
53
- input: DateInput
55
+ component: DateInput
54
56
  },
55
57
  dateRange: {
56
58
  icon: /*#__PURE__*/React.createElement(Calendar2M, null),
57
59
  name: 'Date range',
58
- input: DateRangeInput
60
+ component: DateRangeInput
59
61
  }
60
62
  };
61
- // eslint-disable-next-line @typescript-eslint/no-empty-function
62
- var NOOP = function NOOP() {};
63
63
  var Factors = function Factors(_ref) {
64
64
  var selectedFactorType = _ref.selectedFactorType,
65
65
  _ref$setSelectedFacto = _ref.setSelectedFactorType,
@@ -88,6 +88,7 @@ var Factors = function Factors(_ref) {
88
88
  onActivate = _ref.onActivate,
89
89
  onDeactivate = _ref.onDeactivate,
90
90
  getPopupContainerOverride = _ref.getPopupContainerOverride,
91
+ customFactorValueComponents = _ref.customFactorValueComponents,
91
92
  error = _ref.error,
92
93
  inputProps = _ref.inputProps,
93
94
  readOnly = _ref.readOnly,
@@ -96,19 +97,34 @@ var Factors = function Factors(_ref) {
96
97
  var factorType = useMemo(function () {
97
98
  return selectedFactorType || defaultFactorType;
98
99
  }, [selectedFactorType, defaultFactorType]);
99
- var selectedFactor = useMemo(function () {
100
- return factorTypes[factorType];
101
- }, [factorType]);
100
+ var mergedFactorData = useMemo(function () {
101
+ return Object.entries(FACTOR_TYPE_MAPPING).map(function (_ref2) {
102
+ var type = _ref2[0],
103
+ factorTypeData = _ref2[1];
104
+ var mergedData = customFactorValueComponents ? _extends({}, factorTypeData, customFactorValueComponents[type]) : factorTypeData;
105
+ return [type, _extends({}, factorTypeData, mergedData)];
106
+ }).reduce(function (result, _ref3) {
107
+ var type = _ref3[0],
108
+ factorTypeData = _ref3[1];
109
+ // eslint-disable-next-line no-param-reassign
110
+ result[type] = factorTypeData;
111
+ return result;
112
+ }, {});
113
+ }, [customFactorValueComponents]);
114
+ var selectedFactorData = useMemo(function () {
115
+ return mergedFactorData[factorType];
116
+ }, [mergedFactorData, factorType]);
102
117
  return /*#__PURE__*/React.createElement(S.Group, {
103
118
  resetMargin: true,
104
119
  compact: true,
105
120
  withoutTypeSelector: withoutTypeSelector,
106
121
  className: "ds-factors ds-factors-" + factorType
107
- }, selectedFactor && !withoutTypeSelector && setSelectedFactorType && /*#__PURE__*/React.createElement(FactorTypeSelector, {
122
+ }, selectedFactorData && !withoutTypeSelector && setSelectedFactorType && /*#__PURE__*/React.createElement(FactorTypeSelector, {
108
123
  texts: allTexts.factorTypes,
124
+ factorTypeMapping: mergedFactorData,
109
125
  selectedFactorType: factorType,
110
126
  setSelectedFactorType: setSelectedFactorType,
111
- selectedFactor: selectedFactor,
127
+ selectedFactor: selectedFactorData,
112
128
  availableFactorTypes: availableFactorTypes,
113
129
  unavailableFactorTypes: unavailableFactorTypes,
114
130
  readOnly: readOnly
@@ -116,7 +132,7 @@ var Factors = function Factors(_ref) {
116
132
  value: value,
117
133
  onChangeValue: onChangeValue,
118
134
  onParamsClick: onParamsClick,
119
- selectedFactor: selectedFactor,
135
+ selectedFactor: selectedFactorData,
120
136
  selectedFactorType: factorType,
121
137
  textType: textType,
122
138
  parameters: parameters,
@@ -1,4 +1,4 @@
1
- import type { ReactText, ReactNode, ElementType } from 'react';
1
+ import type { ReactText, ReactNode, ComponentType } from 'react';
2
2
  import type { DateFilter } from '@synerise/ds-date-range-picker/dist/date.types';
3
3
  import type { Texts as DateRangeTexts } from '@synerise/ds-date-range-picker/dist/DateRangePicker.types';
4
4
  import type { MenuItemProps } from '@synerise/ds-menu';
@@ -49,7 +49,7 @@ export type FactorValueType = string | number | null | Date | undefined | Dynami
49
49
  export type SelectedFactorType = {
50
50
  name: string;
51
51
  icon: ReactNode;
52
- input: ElementType;
52
+ component: ComponentType<FactorValueComponentProps>;
53
53
  };
54
54
  export type FactorsTexts = {
55
55
  dateRangePicker: DateRangeTexts;
@@ -83,6 +83,7 @@ export type FactorsTexts = {
83
83
  [k in DefinedFactorTypes]: string;
84
84
  };
85
85
  };
86
+ export type FactorTypeMapping = Record<DefinedFactorTypes, Partial<SelectedFactorType>>;
86
87
  export type FactorsProps = {
87
88
  factorKey?: ReactText;
88
89
  error?: boolean;
@@ -93,6 +94,7 @@ export type FactorsProps = {
93
94
  availableFactorTypes?: FactorType[];
94
95
  selectedFactorType: FactorType;
95
96
  defaultFactorType: FactorType;
97
+ customFactorValueComponents?: Partial<FactorTypeMapping>;
96
98
  getPopupContainerOverride?: (trigger: HTMLElement | null) => HTMLElement;
97
99
  onActivate?: () => void;
98
100
  onDeactivate?: () => void;
@@ -126,13 +128,14 @@ export type FactorsProps = {
126
128
  loading?: boolean;
127
129
  preventAutoloadData?: boolean;
128
130
  withCustomFactor?: ReactNode;
129
- inputProps?: Partial<InputProps>;
131
+ inputProps?: Partial<FactorValueComponentProps>;
130
132
  readOnly?: boolean;
131
133
  getMenuEntryProps?: (arg?: ParameterValueType) => MenuItemProps;
132
134
  };
133
135
  export type FactorTypeSelectorProps = Pick<FactorsProps, 'unavailableFactorTypes' | 'availableFactorTypes' | 'selectedFactorType' | 'readOnly'> & {
134
136
  setSelectedFactorType: (factor: FactorType) => void;
135
137
  selectedFactor: SelectedFactorType;
138
+ factorTypeMapping: FactorTypeMapping;
136
139
  texts: {
137
140
  [k in DefinedFactorTypes]: string;
138
141
  };
@@ -141,7 +144,7 @@ export type FactorValueProps = Pick<FactorsProps, 'onChangeValue' | 'onParamsCli
141
144
  texts: FactorsTexts;
142
145
  selectedFactor: SelectedFactorType;
143
146
  };
144
- export type InputProps = Pick<FactorsProps, 'value' | 'parameters' | 'allowClear' | 'autocompleteText' | 'withoutTypeSelector' | 'textType' | 'opened' | 'getPopupContainerOverride' | 'onActivate' | 'onDeactivate' | 'error' | 'inputProps' | 'autoResize' | 'readOnly' | 'getMenuEntryProps'> & {
147
+ export type FactorValueComponentProps = Pick<FactorsProps, 'value' | 'parameters' | 'allowClear' | 'autocompleteText' | 'withoutTypeSelector' | 'textType' | 'opened' | 'getPopupContainerOverride' | 'onActivate' | 'onDeactivate' | 'error' | 'inputProps' | 'autoResize' | 'readOnly' | 'getMenuEntryProps'> & {
145
148
  texts: FactorsTexts;
146
149
  onChange: (value: FactorValueType) => void;
147
150
  factorType: FactorType;
package/dist/index.d.ts CHANGED
@@ -1,3 +1,7 @@
1
- export { default, factorTypes } from './Factors';
1
+ export { default, FACTOR_TYPE_MAPPING as factorTypes } from './Factors';
2
2
  export { ALL_FACTOR_TYPES } from './Factors.types';
3
- export type { FactorType, DefinedFactorTypes, FactorsProps, FactorsTexts, ParameterValueType, ParameterItem, ParameterGroup, InputProps, FactorValueType, FactorValueProps, DynamicKeyValueType, FormulaValueType, FactorTypeSelectorProps, FormulaModalProps, TextModalProps, ParameterDropdownProps, SelectedFactorType, } from './Factors.types';
3
+ export type { FactorType, DefinedFactorTypes, FactorsProps, FactorsTexts, ParameterValueType, ParameterItem, ParameterGroup, FactorValueComponentProps,
4
+ /**
5
+ * @deprecated, use FactorValueComponentProps type instead
6
+ */
7
+ FactorValueComponentProps as InputProps, FactorValueType, FactorValueProps, DynamicKeyValueType, FormulaValueType, FactorTypeSelectorProps, FormulaModalProps, TextModalProps, ParameterDropdownProps, SelectedFactorType, } from './Factors.types';
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
- export { default, factorTypes } from './Factors';
1
+ export { default, FACTOR_TYPE_MAPPING as factorTypes } from './Factors';
2
2
  export { ALL_FACTOR_TYPES } from './Factors.types';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@synerise/ds-factors",
3
- "version": "1.0.0",
3
+ "version": "1.1.0",
4
4
  "description": "Factors UI Component for the Synerise Design System",
5
5
  "license": "ISC",
6
6
  "repository": "Synerise/synerise-design",
@@ -34,26 +34,26 @@
34
34
  ],
35
35
  "types": "dist/index.d.ts",
36
36
  "dependencies": {
37
- "@synerise/ds-autocomplete": "^1.0.0",
38
- "@synerise/ds-badge": "^1.0.0",
39
- "@synerise/ds-button": "^1.0.0",
40
- "@synerise/ds-date-picker": "^1.0.0",
41
- "@synerise/ds-date-range-picker": "^1.0.0",
42
- "@synerise/ds-dropdown": "^1.0.0",
43
- "@synerise/ds-icon": "^1.0.0",
44
- "@synerise/ds-information-card": "^1.0.0",
45
- "@synerise/ds-inline-edit": "^1.0.0",
46
- "@synerise/ds-input": "^1.0.0",
47
- "@synerise/ds-input-number": "^1.0.0",
48
- "@synerise/ds-list-item": "^1.0.0",
49
- "@synerise/ds-menu": "^1.0.0",
50
- "@synerise/ds-modal": "^1.0.0",
51
- "@synerise/ds-result": "^1.0.0",
52
- "@synerise/ds-scrollbar": "^1.0.0",
53
- "@synerise/ds-skeleton": "^1.0.0",
54
- "@synerise/ds-tabs": "^1.0.0",
55
- "@synerise/ds-tooltip": "^1.0.0",
56
- "@synerise/ds-utils": "^1.0.0",
37
+ "@synerise/ds-autocomplete": "^1.0.2",
38
+ "@synerise/ds-badge": "^1.0.2",
39
+ "@synerise/ds-button": "^1.1.1",
40
+ "@synerise/ds-date-picker": "^1.0.2",
41
+ "@synerise/ds-date-range-picker": "^1.1.1",
42
+ "@synerise/ds-dropdown": "^1.0.2",
43
+ "@synerise/ds-icon": "^1.1.0",
44
+ "@synerise/ds-information-card": "^1.0.2",
45
+ "@synerise/ds-inline-edit": "^1.0.2",
46
+ "@synerise/ds-input": "^1.0.2",
47
+ "@synerise/ds-input-number": "^1.0.2",
48
+ "@synerise/ds-list-item": "^1.0.2",
49
+ "@synerise/ds-menu": "^1.0.2",
50
+ "@synerise/ds-modal": "^1.0.2",
51
+ "@synerise/ds-result": "^1.0.2",
52
+ "@synerise/ds-scrollbar": "^1.0.2",
53
+ "@synerise/ds-skeleton": "^1.0.2",
54
+ "@synerise/ds-tabs": "^1.0.2",
55
+ "@synerise/ds-tooltip": "^1.1.1",
56
+ "@synerise/ds-utils": "^1.0.1",
57
57
  "lodash": "^4.17.21",
58
58
  "react-window": "1.8.5",
59
59
  "uuid": "^8.3.2"
@@ -65,5 +65,5 @@
65
65
  "react-intl": ">=3.12.0 <= 6.8",
66
66
  "styled-components": "^5.3.3"
67
67
  },
68
- "gitHead": "e4c3690238a44b584b9ea41e4aa52b1eec42174b"
68
+ "gitHead": "47960dcd849dc47c85bd134bcfeb90a5505656a7"
69
69
  }