intelicoreact 0.0.6 → 0.0.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (91) hide show
  1. package/dist/Atomic/FormElements/CheckboxInput/CheckboxInput.js +6 -2
  2. package/dist/Atomic/FormElements/CheckboxInput/CheckboxInput.scss +91 -60
  3. package/dist/Atomic/FormElements/CheckboxInput/CheckboxInput.stories.js +2 -1
  4. package/dist/Atomic/FormElements/Dropdown/Dropdown.js +40 -9
  5. package/dist/Atomic/FormElements/Dropdown/Dropdown.scss +21 -3
  6. package/dist/Atomic/FormElements/Dropdown/Dropdown.stories.js +22 -6
  7. package/dist/Atomic/FormElements/Input/Input.js +15 -4
  8. package/dist/Atomic/FormElements/Input/Input.stories.js +7 -1
  9. package/dist/Atomic/FormElements/InputDateRange/{components/InputDateRange.js → InputDateRange.js} +61 -50
  10. package/dist/Atomic/FormElements/InputDateRange/{components/InputDateRange.scss → InputDateRange.scss} +218 -222
  11. package/dist/Atomic/FormElements/InputDateRange/InputDateRange.stories.js +11 -5
  12. package/dist/Atomic/FormElements/InputDateRange/components/Datepicker.js +27 -6
  13. package/dist/Atomic/FormElements/InputDateRange/components/OpenedPart.js +20 -11
  14. package/dist/Atomic/FormElements/InputDateRange/components/SelectItem.js +14 -6
  15. package/dist/Atomic/FormElements/InputDateRange/{index.js → dependencies.js} +18 -17
  16. package/dist/Atomic/FormElements/RangeCalendar/RangeCalendar.js +7 -2
  17. package/dist/Atomic/FormElements/Table/Table.scss +1 -1
  18. package/dist/Atomic/FormElements/Textarea/Textarea.scss +1 -1
  19. package/dist/Atomic/MainMenu/MainMenu.scss +2 -2
  20. package/dist/Atomic/UI/Accordion/Accordion.scss +2 -2
  21. package/dist/Atomic/UI/Arrow/Arrow.scss +0 -3
  22. package/dist/Atomic/UI/Calendar/Calendar.js +3 -2
  23. package/dist/Atomic/UI/Calendar/Calendar.stories.js +3 -2
  24. package/dist/Atomic/UI/Status/Status.scss +1 -1
  25. package/dist/Molecular/Datepicker/Datepicker.js +451 -0
  26. package/dist/Molecular/Datepicker/Datepicker.scss +8 -0
  27. package/dist/Molecular/Datepicker/Datepicker.stories.js +44 -0
  28. package/dist/{Atomic/FormElements/Calendar → Molecular/Datepicker/components}/Calendar.js +50 -39
  29. package/dist/scss/_vars.scss +3 -1
  30. package/dist/scss/main.scss +1 -1
  31. package/package.json +3 -2
  32. package/src/Atomic/FormElements/CheckboxInput/CheckboxInput.js +12 -2
  33. package/src/Atomic/FormElements/CheckboxInput/CheckboxInput.scss +91 -60
  34. package/src/Atomic/FormElements/CheckboxInput/CheckboxInput.stories.js +4 -3
  35. package/src/Atomic/FormElements/Dropdown/Dropdown.js +64 -27
  36. package/src/Atomic/FormElements/Dropdown/Dropdown.scss +21 -3
  37. package/src/Atomic/FormElements/Dropdown/Dropdown.stories.js +28 -15
  38. package/src/Atomic/FormElements/Input/Input.js +4 -0
  39. package/src/Atomic/FormElements/Input/Input.stories.js +7 -1
  40. package/src/Atomic/FormElements/InputDateRange/{components/InputDateRange.js → InputDateRange.js} +65 -54
  41. package/src/Atomic/FormElements/InputDateRange/{components/InputDateRange.scss → InputDateRange.scss} +218 -222
  42. package/src/Atomic/FormElements/InputDateRange/InputDateRange.stories.js +9 -2
  43. package/src/Atomic/FormElements/InputDateRange/components/Datepicker.js +42 -27
  44. package/src/Atomic/FormElements/InputDateRange/components/OpenedPart.js +11 -6
  45. package/src/Atomic/FormElements/InputDateRange/components/SelectItem.js +5 -3
  46. package/src/Atomic/FormElements/InputDateRange/{index.js → dependencies.js} +15 -11
  47. package/src/Atomic/FormElements/RangeCalendar/RangeCalendar.js +5 -2
  48. package/src/Atomic/FormElements/Table/Table.scss +1 -1
  49. package/src/Atomic/FormElements/Textarea/Textarea.scss +1 -1
  50. package/src/Atomic/MainMenu/MainMenu.scss +2 -2
  51. package/src/Atomic/UI/Accordion/Accordion.scss +2 -2
  52. package/src/Atomic/UI/Arrow/Arrow.scss +0 -3
  53. package/src/Atomic/UI/Calendar/Calendar.js +2 -2
  54. package/src/Atomic/UI/Calendar/Calendar.stories.js +2 -1
  55. package/src/Atomic/UI/Status/Status.scss +1 -1
  56. package/src/Molecular/Datepicker/Datepicker.js +346 -0
  57. package/src/Molecular/Datepicker/Datepicker.scss +8 -0
  58. package/src/Molecular/Datepicker/Datepicker.stories.js +27 -0
  59. package/src/Molecular/Datepicker/components/Calendar.js +118 -0
  60. package/src/scss/_vars.scss +3 -1
  61. package/src/scss/main.scss +1 -1
  62. package/dist/Atomic/FormElements/Calendar/Calendar.scss +0 -543
  63. package/dist/Atomic/FormElements/Calendar/Calendar.stories.js +0 -33
  64. package/dist/scss/anme/_anme-bootstrap-grid.scss +0 -748
  65. package/dist/scss/anme/_anme-elements.scss +0 -269
  66. package/dist/scss/anme/_anme-grid.scss +0 -111
  67. package/dist/scss/anme/_anme-justify.scss +0 -111
  68. package/dist/scss/anme/_anme-mixins-media.scss +0 -116
  69. package/dist/scss/anme/_anme-mixins.scss +0 -166
  70. package/dist/scss/anme/_anme-normalize.scss +0 -8
  71. package/dist/scss/anme/_anme-overall.scss +0 -34
  72. package/dist/scss/anme/_anme-padding-margins.scss +0 -419
  73. package/dist/scss/anme/_anme-table.scss +0 -81
  74. package/dist/scss/anme/_anme-theme.scss +0 -275
  75. package/dist/scss/anme/_anme-vars.scss +0 -91
  76. package/dist/scss/anme/_code-styling.scss +0 -23
  77. package/dist/scss/anme/styles.scss +0 -12
  78. package/src/scss/anme/_anme-bootstrap-grid.scss +0 -748
  79. package/src/scss/anme/_anme-elements.scss +0 -269
  80. package/src/scss/anme/_anme-grid.scss +0 -111
  81. package/src/scss/anme/_anme-justify.scss +0 -111
  82. package/src/scss/anme/_anme-mixins-media.scss +0 -116
  83. package/src/scss/anme/_anme-mixins.scss +0 -166
  84. package/src/scss/anme/_anme-normalize.scss +0 -8
  85. package/src/scss/anme/_anme-overall.scss +0 -34
  86. package/src/scss/anme/_anme-padding-margins.scss +0 -419
  87. package/src/scss/anme/_anme-table.scss +0 -81
  88. package/src/scss/anme/_anme-theme.scss +0 -275
  89. package/src/scss/anme/_anme-vars.scss +0 -91
  90. package/src/scss/anme/_code-styling.scss +0 -23
  91. package/src/scss/anme/styles.scss +0 -12
@@ -1,4 +1,6 @@
1
1
  /* THEME COLORS*/
2
+ @use "sass:math";
3
+
2
4
  $color--secondary: #f06d8d;
3
5
  $color--primary: #6b81dd;
4
6
  $color--dark: #1e1e2d;
@@ -43,4 +45,4 @@ $h4-fs: 22px;
43
45
  $h4-lh: 1.18;
44
46
 
45
47
  $txt: 14px;
46
- $txt--lh: (20 / 14);
48
+ $txt--lh: math.div(20, 14);
@@ -1,5 +1,5 @@
1
1
  @import './fonts';
2
- @import './anme/styles.scss';
2
+ @import '~anme/scss/styles.scss';
3
3
 
4
4
  body {
5
5
  font-family: 'Roboto', sans-serif;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "intelicoreact",
3
- "version": "0.0.6",
4
- "description": "Add date range selector",
3
+ "version": "0.0.7",
4
+ "description": "Date range fixes",
5
5
  "main": "dist/index.js",
6
6
  "scripts": {
7
7
  "test": "echo \"Error: no test specified\" && exit 1",
@@ -21,6 +21,7 @@
21
21
  "@babel/core": "^7.15.5",
22
22
  "@babel/polyfill": "^7.12.1",
23
23
  "@babel/preset-env": "^7.15.6",
24
+ "anme": "^1.0.0",
24
25
  "classnames": "^2.3.1"
25
26
  }
26
27
  }
@@ -3,11 +3,21 @@ import cn from 'classnames';
3
3
 
4
4
  import './CheckboxInput.scss';
5
5
 
6
- const CheckboxInput = ({ label, id, value, onChange, disabled, className }) => {
6
+ const CheckboxInput = ({ label, id, value, onChange, disabled, className, isStark }) => {
7
7
  return (
8
8
  <label className={cn('checkbox-input', className, { [`checkbox-input_disabled`]: disabled })} htmlFor={id}>
9
9
  <div className={cn(`checkbox-input__input`, { [`checkbox-input__input_checked`]: value })}>
10
- <input id={id} type="checkbox" className="checkbox-input__checkbox" onChange={e => onChange(!value, e)} checked={value} disabled={disabled} />
10
+ <input
11
+ id={id}
12
+ type="checkbox"
13
+ className="checkbox-input__checkbox"
14
+ onChange={(e) => onChange(!value, e)}
15
+ checked={value}
16
+ disabled={disabled}
17
+ ref={(elem) => {
18
+ if (elem) elem.indeterminate = isStark;
19
+ }}
20
+ />
11
21
  <span className="checkbox-input__mark" />
12
22
  </div>
13
23
  {label && <div className="checkbox-input__label">{label}</div>}
@@ -1,76 +1,107 @@
1
1
  .checkbox-input {
2
- display: flex;
3
- align-items: center;
4
- cursor: pointer;
2
+ display: flex;
3
+ align-items: center;
4
+ cursor: pointer;
5
+
6
+ &_disabled {
7
+ opacity: 0.5;
8
+ pointer-events: none;
9
+ cursor: auto;
10
+ }
5
11
 
6
- &_disabled {
7
- opacity: .5;
8
- pointer-events: none;
9
- cursor: auto;
12
+ &:hover {
13
+ .checkbox-input__input {
14
+ background-color: rgba(#6b81dd, 0.2);
10
15
  }
16
+ }
17
+
18
+ &__input {
19
+ position: relative;
20
+ height: 14px;
21
+ width: 14px;
22
+ min-width: 14px;
23
+ border: 1px solid #9aa0b9;
24
+ border-radius: 2px;
25
+ overflow: hidden;
26
+ margin-right: 5px;
27
+ cursor: pointer;
28
+ transition: background-color 0.2s ease;
29
+ background-color: #ffff;
11
30
 
12
- &:hover {
13
- .checkbox-input__input {
14
- background-color: rgba(#6b81dd, .2);
15
- }
31
+ &_checked {
32
+ border-color: #6b81dd;
16
33
  }
17
34
 
18
- &__input {
19
- position: relative;
20
- height: 14px;
21
- width: 14px;
22
- min-width: 14px;
23
- border: 1px solid #9AA0B9;
24
- border-radius: 2px;
25
- overflow: hidden;
26
- margin-right: 5px;
27
- cursor: pointer;
28
- transition: background-color .2s ease;
29
- background-color: #ffff;
35
+ .checkbox-input__checkbox:checked ~ .checkbox-input__mark {
36
+ display: block;
37
+ }
38
+ }
30
39
 
31
- &_checked {
32
- border-color: #6b81dd;
33
- }
40
+ &__checkbox {
41
+ opacity: 0;
42
+ position: absolute;
43
+ height: 0;
44
+ width: 0;
45
+ }
34
46
 
35
- .checkbox-input__checkbox:checked ~ .checkbox-input__mark {
36
- display: block;
37
- }
47
+ &__mark {
48
+ display: none;
49
+ position: absolute;
50
+ width: 14px;
51
+ height: 14px;
52
+ background-color: #6b81dd;
38
53
 
54
+ &:after {
55
+ content: "";
56
+ position: absolute;
57
+ top: -2px;
58
+ bottom: 0;
59
+ left: 0;
60
+ right: 0;
61
+ margin: auto;
62
+ width: 4px;
63
+ height: 8px;
64
+ border: solid white;
65
+ border-radius: 2px;
66
+ border-width: 0 2px 2px 0;
67
+ transform: rotate(45deg);
39
68
  }
69
+ }
40
70
 
41
- &__checkbox {
42
- opacity: 0;
43
- position: absolute;
44
- height: 0;
45
- width: 0;
46
- }
71
+ &__label {
72
+ font-size: 13px;
73
+ user-select: none;
74
+ }
47
75
 
48
- &__mark {
49
- display: none;
76
+ input[type="checkbox" i] {
77
+ &:indeterminate {
78
+ display: block;
79
+ width: 100%;
80
+ height: 100%;
81
+ &:after {
82
+ content: "";
50
83
  position: absolute;
51
- width: 14px;
52
- height: 14px;
84
+ top: 0;
85
+ bottom: 0;
86
+ left: 0;
87
+ right: 0;
88
+ margin: auto;
89
+ width: 100%;
90
+ height: 100%;
53
91
  background-color: #6b81dd;
54
-
55
- &:after {
56
- content: '';
57
- position: absolute;
58
- top: -2px;
59
- bottom: 0;
60
- left: 0;
61
- right: 0;
62
- margin: auto;
63
- width: 4px;
64
- height: 8px;
65
- border: solid white;
66
- border-radius: 2px;
67
- border-width: 0 2px 2px 0;
68
- transform: rotate(45deg);
69
- }
70
- }
71
-
72
- &__label{
73
- font-size: 13px;
74
- user-select: none;
92
+ }
93
+ &:before {
94
+ content: "";
95
+ position: absolute;
96
+ top: 50%;
97
+ left: 50%;
98
+ transform: translate(-50%, -50%);
99
+ width: 65%;
100
+ border: solid white;
101
+ border-radius: 2px;
102
+ border-width: 0 2px 2px 0;
103
+ z-index: 1;
104
+ }
75
105
  }
106
+ }
76
107
  }
@@ -5,10 +5,10 @@ global.lng = 'en';
5
5
 
6
6
  export default {
7
7
  title: 'Form Elements/CheckboxInput',
8
- component: CheckboxInput
8
+ component: CheckboxInput,
9
9
  };
10
10
 
11
- const Template = args => {
11
+ const Template = (args) => {
12
12
  const { value: argsValue } = args;
13
13
  const [value, setValue] = useState(argsValue);
14
14
 
@@ -21,5 +21,6 @@ Checkbox.args = {
21
21
  label: 'Test label',
22
22
  value: true,
23
23
  disabled: false,
24
- forced: false
24
+ forced: false,
25
+ isStark: true,
25
26
  };
@@ -7,47 +7,76 @@ import './Dropdown.scss';
7
7
 
8
8
  const RC = 'dropdown';
9
9
 
10
- const Dropdown = ({ options, value, error, onChange, placeholder, className, isSearchable }) => {
10
+ const Dropdown = ({ options, value, error, onChange, placeholder, className, isSearchable, entity }) => {
11
11
  const [isOpen, setIsOpen] = useState(false);
12
12
  const [searchValue, setSearchValue] = useState('');
13
13
  const dropdownRef = useRef(null);
14
14
 
15
15
  const filteredGroups = options
16
- .filter(item => item.items?.length)
17
- .map(item => ({ ...item, items: item.items.filter(el => el?.label?.toLowerCase().includes(searchValue?.toLowerCase() || '')) }))
18
- .filter(item => item.items?.length > 0);
16
+ .filter((item) => item.items?.length)
17
+ .map((item) => ({ ...item, items: item.items.filter((el) => el?.label?.toLowerCase().includes(searchValue?.toLowerCase() || '')) }))
18
+ .filter((item) => item.items?.length > 0);
19
19
 
20
20
  const filteredItems = options
21
- .filter(item => !item.items?.length)
22
- .filter(item => item?.label?.toLowerCase().includes(searchValue?.toLowerCase() || ''));
23
-
24
- const filteredOptions = [...filteredItems, ...filteredGroups];
21
+ .filter((item) => !item.items?.length)
22
+ .filter((item) => item?.label?.toLowerCase().includes(searchValue?.toLowerCase() || ''));
23
+
24
+ let filteredOptions = [...filteredItems, ...filteredGroups];
25
+
26
+ const modalBtnTrigger = entity && entity !== '' && typeof entity === 'string';
27
+ //decorator
28
+ const getDepends = (modalBtnTrigger, item) => {
29
+ const newOnChange = (item) => {
30
+ if (item.value === 'open_modal') {
31
+ onChange('open_modal');
32
+ } else {
33
+ onChangeHandler(item);
34
+ }
35
+ };
36
+
37
+ //add pseudo option
38
+ const newOptions = [
39
+ {
40
+ label: 'New ' + entity,
41
+ value: 'open_modal',
42
+ className: 'dropdown__list-item--modal',
43
+ },
44
+ ...filteredOptions,
45
+ ];
46
+
47
+ return {
48
+ onChange: (item) => (modalBtnTrigger ? newOnChange(item) : onChangeHandler(item)),
49
+ options: modalBtnTrigger ? newOptions : options,
50
+ };
51
+ };
25
52
 
26
- const handleClickOutside = event => {
53
+ const handleClickOutside = (event) => {
27
54
  if (dropdownRef.current && !dropdownRef.current.contains(event.target)) {
28
55
  setIsOpen(false);
29
56
  setSearchValue(null);
30
57
  }
31
58
  };
32
59
 
33
- const onChangeHandler = item => {
60
+ const onChangeHandler = (item) => {
34
61
  setIsOpen(false);
35
62
  setSearchValue(null);
36
63
  onChange(item.value);
37
64
  };
38
65
 
39
- const onSearchHandler = name => {
66
+ const onSearchHandler = (name) => {
40
67
  setSearchValue(name);
41
68
  };
42
69
 
43
- const hightlightedText = text =>
44
- searchValue ? text?.replace(new RegExp(searchValue, 'i'), match => `<span class="bg--yellow">${match}</span>`) : text;
70
+ const hightlightedText = (text) =>
71
+ searchValue ? text?.replace(new RegExp(searchValue, 'i'), (match) => `<span class="bg--yellow">${match}</span>`) : text;
72
+
73
+ const depend = getDepends(modalBtnTrigger);
45
74
 
46
- const getMarkupForElement = item =>
75
+ const getMarkupForElement = (item) =>
47
76
  item.label.toLowerCase().includes(searchValue?.toLowerCase() || '') ? (
48
77
  <button
49
78
  key={item.value}
50
- onClick={() => onChangeHandler(item)}
79
+ onClick={() => depend.onChange(item)}
51
80
  className={cn(`${RC}__list-item`, { [`${RC}__list-item_active`]: item.value === value }, { [`${RC}__list-item_disabled`]: item.disabled })}
52
81
  >
53
82
  <span className={cn(`${RC}__active-icon`, { [`${RC}__active-icon_active`]: item.value === value })}>
@@ -58,36 +87,44 @@ const Dropdown = ({ options, value, error, onChange, placeholder, className, isS
58
87
  ) : null;
59
88
 
60
89
  useEffect(() => {
90
+ if (!value) setSearchValue(null);
61
91
  document.addEventListener('click', handleClickOutside, true);
62
92
  return () => document.removeEventListener('click', handleClickOutside, true);
63
- });
93
+ }, [value]);
64
94
 
65
- const filteredOptionList = filteredOption =>
95
+ const filteredOptionList = (filteredOption) =>
66
96
  filteredOption.items?.length > 0 ? (
67
97
  <div key={filteredOption.value} className={`${RC}-group`}>
68
98
  <div className={`${RC}-group__name`}>{filteredOption.label}</div>
69
- {filteredOption.items.map(el => getMarkupForElement(el))}
99
+ {filteredOption.items.map((el) => getMarkupForElement(el))}
70
100
  </div>
71
101
  ) : null;
72
102
 
73
103
  const selectedLabel =
74
- options.find(el => el.value === value)?.label || options.reduce((acc, item) => acc || item.items?.find(el => el.value === value)?.label, null);
104
+ options.find((el) => el.value === value)?.label ||
105
+ options.reduce((acc, item) => acc || item.items?.find((el) => el.value === value)?.label, null);
75
106
 
76
107
  return (
77
108
  <div className={cn(RC, className)} ref={dropdownRef}>
78
- <button className={`${RC}__trigger input__wrap ${!value ? 'placeholder' : ''} ${error ? 'error' : ''}`} onClick={() => !isSearchable ? setIsOpen(!isOpen) : null}>
109
+ <button
110
+ className={`${RC}__trigger input__wrap ${!value ? 'placeholder' : ''} ${error ? 'error' : ''}`}
111
+ onClick={() => (!isSearchable ? setIsOpen(!isOpen) : null)}
112
+ >
79
113
  {isSearchable ? (
80
114
  <input
81
115
  className={`${RC}__input`}
82
- value={searchValue ?? selectedLabel}
83
- onChange={e => onSearchHandler(e.target.value)}
116
+ value={searchValue || filteredOptions.find(el => el.value === value)?.label || ''}
117
+ onChange={(e) => {
118
+ onSearchHandler(e.target.value)
119
+ }}
84
120
  placeholder={placeholder}
85
- onFocus={() => setIsOpen(true)}
121
+ onFocus={e => {
122
+ e.target.select();
123
+ setIsOpen(true);
124
+ }}
86
125
  />
87
126
  ) : (
88
- <span className="text">
89
- {selectedLabel || placeholder}
90
- </span>
127
+ <span className="text">{selectedLabel || placeholder}</span>
91
128
  )}
92
129
  <span className={cn(`${RC}__arrow`, { [`${RC}__arrow_active`]: isOpen })} onClick={() => setIsOpen(!isOpen)}>
93
130
  {isOpen ? <ChevronUp /> : <ChevronDown />}
@@ -95,7 +132,7 @@ const Dropdown = ({ options, value, error, onChange, placeholder, className, isS
95
132
  </button>
96
133
  {isOpen && filteredOptions.length > 0 && (
97
134
  <div className={`${RC}__list`}>
98
- {filteredOptions.map(filteredOption =>
135
+ {depend.options.map((filteredOption) =>
99
136
  filteredOption.items?.length ? filteredOptionList(filteredOption) : getMarkupForElement(filteredOption)
100
137
  )}
101
138
  </div>
@@ -5,6 +5,7 @@
5
5
  flex-direction: column;
6
6
  position: relative;
7
7
  width: 100%;
8
+ border-radius: 7px;
8
9
 
9
10
  &__trigger {
10
11
  background: #ffffff;
@@ -28,8 +29,8 @@
28
29
  &.error {
29
30
  border-color: $color--secondary;
30
31
  }
31
- &.placeholder .text{
32
- opacity: .7;
32
+ &.placeholder .text {
33
+ opacity: 0.7;
33
34
  }
34
35
  }
35
36
 
@@ -85,7 +86,24 @@
85
86
  width: 100%;
86
87
  height: 24px;
87
88
  white-space: nowrap;
88
-
89
+ overflow-x: hidden;
90
+
91
+ &--modal {
92
+ color: #1f7499;
93
+ font-size: 14px;
94
+ line-height: 20px;
95
+ letter-spacing: 0.2px;
96
+ position: relative;
97
+ &:after {
98
+ content: "";
99
+ position: absolute;
100
+ bottom: -2px;
101
+ height: 1px;
102
+ width: 300%;
103
+ transform: translateX(-50%);
104
+ background-color: #e8e9ec;
105
+ }
106
+ }
89
107
  &:hover,
90
108
  &_active {
91
109
  background: $color--gray--gentle;
@@ -7,35 +7,48 @@ export default {
7
7
  component: Dropdown,
8
8
  argTypes: {
9
9
  className: {
10
- description: 'string'
10
+ description: 'string',
11
11
  },
12
- value: { description: 'string - current option'},
12
+ value: { description: 'string - current option' },
13
13
  isSearchable: {
14
14
  description: 'boolean - enable search',
15
15
  },
16
- onChange: { description: 'callback return selected value'}
17
- }
16
+ onChange: { description: 'callback return selected value' },
17
+ entity: {
18
+ description: 'string',
19
+ },
20
+ },
21
+ };
22
+
23
+ const buttonStyles={
24
+ border: 'solid 1px #000',
25
+ padding: '5px'
18
26
  };
19
27
 
20
- const Template = args => {
28
+ const Template = (args) => {
21
29
  const [value, setValue] = useState('');
22
30
  return (
23
- <div style={{ width: 200 }}>
24
- <Dropdown {...args} value={value} onChange={setValue} />
25
- </div>
31
+ <>
32
+ <div style={{ width: 200 }}>
33
+ <Dropdown {...args} value={value} onChange={setValue} />
34
+ </div>
35
+ <button style={buttonStyles} className='mt10' onClick={() => {console.log('click!'); setValue('')}} >Reset</button>
36
+ </>
26
37
  );
27
38
  };
28
39
 
29
40
  export const DropdownTemplate = Template.bind({});
30
41
 
31
42
  DropdownTemplate.args = {
43
+ entity: 'entity',
44
+ value: 'drop6',
32
45
  placeholder: 'Placeholder',
33
46
  isSearchable: true,
34
47
  options: [
35
- { label: 'Dropdown1', value: 'drop1', className: 'status status--approved' },
36
48
  { label: 'Dropdown2', value: 'drop2' },
37
49
  { label: 'Dropdown3', value: 'drop3', disabled: true },
38
50
  { label: 'Dropdown4', value: 'drop4' },
51
+ { label: 'Dropdown1', value: 'drop1', className: 'status status--approved' },
39
52
  { label: 'Dropdown5', value: 'drop5' },
40
53
  { label: 'Dropdown6', value: 'drop6' },
41
54
  {
@@ -43,17 +56,17 @@ DropdownTemplate.args = {
43
56
  items: [
44
57
  { label: 'Group 11', value: 'group11' },
45
58
  { label: 'Group 12', value: 'group12', disabled: true },
46
- { label: 'Group 13', value: 'group13' }
47
- ]
59
+ { label: 'Group 13', value: 'group13' },
60
+ ],
48
61
  },
49
62
  {
50
63
  label: 'Some Group 2',
51
64
  items: [
52
65
  { label: 'Group 21', value: 'group21' },
53
66
  { label: 'Group 22', value: 'group22' },
54
- { label: 'Group 23', value: 'group23' }
55
- ]
56
- }
67
+ { label: 'Group 23', value: 'group23' },
68
+ ],
69
+ },
57
70
  ],
58
- error: ''
71
+ error: '',
59
72
  };
@@ -21,6 +21,8 @@ const Input = ({
21
21
  onFocus,
22
22
  onKeyUp,
23
23
  mask,
24
+ maskChar,
25
+ formatChars,
24
26
  error,
25
27
  icon,
26
28
  symbolsLimit,
@@ -72,6 +74,8 @@ const Input = ({
72
74
  onKeyUp: handle.keyUp,
73
75
  min,
74
76
  max,
77
+ ...(maskChar ? { maskChar } : {}),
78
+ ...(formatChars ? { formatChars } : {}),
75
79
  };
76
80
 
77
81
  function renderInput() {
@@ -67,7 +67,13 @@ InputTemplate.args = {
67
67
  min: '0',
68
68
  max: '5',
69
69
  placeholder: 'Placeholder',
70
- mask: '',
70
+ // mask: 'nnnnn0129',
71
+ // maskChar: '_',
72
+ // formatChars: {
73
+ // 'n': '[0-9]',
74
+ // 's': '[A-Za-z]',
75
+ // '*': '[A-Za-z0-9]'
76
+ // },
71
77
  icon: <User />,
72
78
  symbolsLimit: 225
73
79
  };