@tecsinapse/react-web-kit 1.8.0 → 1.10.2

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/CHANGELOG.md +64 -0
  2. package/dist/components/atoms/Button/Button.d.ts +3 -3
  3. package/dist/components/atoms/Button/Button.js.map +1 -1
  4. package/dist/components/atoms/Input/Input.js +5 -3
  5. package/dist/components/atoms/Input/Input.js.map +1 -1
  6. package/dist/components/atoms/Table/Header/THead.js +2 -2
  7. package/dist/components/atoms/Table/Header/THead.js.map +1 -1
  8. package/dist/components/atoms/Tooltip/Tooltip.d.ts +12 -0
  9. package/dist/components/atoms/Tooltip/Tooltip.js +50 -0
  10. package/dist/components/atoms/Tooltip/Tooltip.js.map +1 -0
  11. package/dist/components/atoms/Tooltip/index.d.ts +1 -0
  12. package/dist/components/atoms/Tooltip/index.js +24 -0
  13. package/dist/components/atoms/Tooltip/index.js.map +1 -0
  14. package/dist/components/atoms/Tooltip/styled.d.ts +9 -0
  15. package/dist/components/atoms/Tooltip/styled.js +140 -0
  16. package/dist/components/atoms/Tooltip/styled.js.map +1 -0
  17. package/dist/components/molecules/Drawer/styled.js.map +1 -1
  18. package/dist/components/molecules/InputPassword/InputPassword.js +5 -3
  19. package/dist/components/molecules/InputPassword/InputPassword.js.map +1 -1
  20. package/dist/components/molecules/Menubar/Menubar.js +1 -1
  21. package/dist/components/molecules/Menubar/Menubar.js.map +1 -1
  22. package/dist/components/molecules/Select/Dropdown/Dropdown.d.ts +1 -1
  23. package/dist/components/molecules/Select/Dropdown/Dropdown.js +39 -26
  24. package/dist/components/molecules/Select/Dropdown/Dropdown.js.map +1 -1
  25. package/dist/components/molecules/Select/Dropdown/components/SearchInput.d.ts +8 -0
  26. package/dist/components/molecules/Select/Dropdown/components/SearchInput.js +43 -0
  27. package/dist/components/molecules/Select/Dropdown/components/SearchInput.js.map +1 -0
  28. package/dist/components/molecules/Select/Dropdown/components/index.d.ts +1 -0
  29. package/dist/components/molecules/Select/Dropdown/components/index.js +16 -0
  30. package/dist/components/molecules/Select/Dropdown/components/index.js.map +1 -0
  31. package/dist/components/molecules/Select/Dropdown/styled.d.ts +2 -1
  32. package/dist/components/molecules/Select/Dropdown/styled.js +6 -3
  33. package/dist/components/molecules/Select/Dropdown/styled.js.map +1 -1
  34. package/dist/components/molecules/Select/Select.d.ts +2 -1
  35. package/dist/components/molecules/Select/Select.js +9 -11
  36. package/dist/components/molecules/Select/Select.js.map +1 -1
  37. package/dist/components/molecules/Select/SelectItem/SelectItem.d.ts +3 -3
  38. package/dist/components/molecules/Select/SelectItem/SelectItem.js +10 -9
  39. package/dist/components/molecules/Select/SelectItem/SelectItem.js.map +1 -1
  40. package/dist/components/molecules/Select/functions.d.ts +1 -1
  41. package/dist/components/molecules/Select/functions.js +1 -1
  42. package/dist/components/molecules/Select/functions.js.map +1 -1
  43. package/dist/components/molecules/Select/styled.d.ts +4 -3
  44. package/dist/components/molecules/Select/styled.js +16 -1
  45. package/dist/components/molecules/Select/styled.js.map +1 -1
  46. package/dist/components/molecules/TextArea/TextArea.d.ts +1 -2
  47. package/dist/components/molecules/TextArea/TextArea.js.map +1 -1
  48. package/dist/components/organisms/DataGrid/DataGrid.js +1 -1
  49. package/dist/components/organisms/DataGrid/DataGrid.js.map +1 -1
  50. package/dist/components/organisms/DataGrid/Footer/Footer.js +2 -1
  51. package/dist/components/organisms/DataGrid/Footer/Footer.js.map +1 -1
  52. package/dist/components/organisms/DataGrid/Header/Header.js.map +1 -1
  53. package/dist/components/organisms/DataGrid/Header/utils.d.ts +6 -8
  54. package/dist/components/organisms/DataGrid/Header/utils.js.map +1 -1
  55. package/dist/components/organisms/DataGrid/types.d.ts +2 -1
  56. package/dist/hooks/useClickAwayListener.d.ts +1 -1
  57. package/dist/hooks/useClickAwayListener.js +3 -3
  58. package/dist/hooks/useClickAwayListener.js.map +1 -1
  59. package/dist/index.d.ts +1 -0
  60. package/dist/index.js +17 -1
  61. package/dist/index.js.map +1 -1
  62. package/package.json +3 -3
  63. package/src/components/atoms/Button/Button.tsx +3 -3
  64. package/src/components/atoms/Input/Input.stories.tsx +1 -1
  65. package/src/components/atoms/Input/Input.tsx +65 -57
  66. package/src/components/atoms/Table/Header/THead.tsx +1 -1
  67. package/src/components/atoms/Tooltip/Tooltip.stories.tsx +30 -0
  68. package/src/components/atoms/Tooltip/Tooltip.tsx +51 -0
  69. package/src/components/atoms/Tooltip/index.ts +1 -0
  70. package/src/components/atoms/Tooltip/styled.ts +158 -0
  71. package/src/components/molecules/Drawer/styled.ts +1 -1
  72. package/src/components/molecules/InputPassword/InputPassword.stories.tsx +1 -1
  73. package/src/components/molecules/InputPassword/InputPassword.tsx +24 -22
  74. package/src/components/molecules/Menubar/Menubar.tsx +1 -1
  75. package/src/components/molecules/Select/Dropdown/Dropdown.tsx +45 -28
  76. package/src/components/molecules/Select/Dropdown/components/SearchInput.tsx +26 -0
  77. package/src/components/molecules/Select/Dropdown/components/index.ts +1 -0
  78. package/src/components/molecules/Select/Dropdown/styled.ts +10 -4
  79. package/src/components/molecules/Select/Select.stories.tsx +42 -16
  80. package/src/components/molecules/Select/Select.tsx +16 -12
  81. package/src/components/molecules/Select/SelectItem/SelectItem.tsx +27 -24
  82. package/src/components/molecules/Select/functions.ts +10 -18
  83. package/src/components/molecules/Select/{styled.ts → styled.tsx} +11 -1
  84. package/src/components/molecules/TextArea/TextArea.tsx +1 -2
  85. package/src/components/organisms/DataGrid/DataGrid.tsx +14 -12
  86. package/src/components/organisms/DataGrid/Footer/Footer.tsx +1 -0
  87. package/src/components/organisms/DataGrid/Header/Header.tsx +2 -2
  88. package/src/components/organisms/DataGrid/Header/utils.ts +15 -5
  89. package/src/components/organisms/DataGrid/types.ts +3 -1
  90. package/src/hooks/useClickAwayListener.ts +5 -4
  91. package/src/index.ts +1 -0
@@ -9,14 +9,18 @@ var _react = _interopRequireDefault(require("react"));
9
9
 
10
10
  var _reactCore = require("@tecsinapse/react-core");
11
11
 
12
- var _Input = require("../../../atoms/Input");
13
-
14
12
  var _SelectItem = require("../SelectItem");
15
13
 
16
14
  var _styled = require("./styled");
17
15
 
16
+ var _components = require("./components");
17
+
18
18
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
19
19
 
20
+ const fullWidth = {
21
+ width: '100%'
22
+ };
23
+
20
24
  const Dropdown = ({
21
25
  options,
22
26
  onSearch,
@@ -28,20 +32,34 @@ const Dropdown = ({
28
32
  labelExtractor,
29
33
  setDropDownVisible,
30
34
  style,
31
- anchor
35
+ anchor,
36
+ selectAllLabel,
37
+ searchBarPlaceholder
32
38
  }) => {
33
39
  const [searchArg, setSearchArg] = (0, _reactCore.useDebouncedState)('', onSearch);
34
- const lengthOptions = options.length;
40
+
41
+ const lengthOptions = _react.default.useMemo(() => options.length, [options]);
35
42
 
36
43
  const [checkedAll, setCheckedAll] = _react.default.useState(type === 'multi' && (value === null || value === void 0 ? void 0 : value.length) === lengthOptions);
37
44
 
38
- const onClickCheckAll = () => {
45
+ _react.default.useEffect(() => {
46
+ if (type === 'multi') {
47
+ lengthOptions === (value === null || value === void 0 ? void 0 : value.length) ? setCheckedAll(true) : setCheckedAll(false);
48
+ }
49
+ }, [value, type, lengthOptions]);
50
+
51
+ const onClickCheckAll = _react.default.useCallback(() => {
39
52
  const items = options.map(option => option);
40
- setCheckedAll(!checkedAll);
41
- const aux = !checkedAll;
53
+ let aux;
54
+ setCheckedAll(prev => {
55
+ aux = !prev;
56
+ return !prev;
57
+ });
42
58
  const auxArray = [];
43
59
  !aux ? onSelect(auxArray) : onSelect(items);
44
- };
60
+ }, [options, setCheckedAll, onSelect]);
61
+
62
+ const onChange = _react.default.useCallback(text => setSearchArg(text), [setSearchArg]);
45
63
 
46
64
  return _react.default.createElement(_styled.StyledContainerDropdown, {
47
65
  lengthOptions: lengthOptions,
@@ -52,28 +70,23 @@ const Dropdown = ({
52
70
  }, _react.default.createElement(_reactCore.Checkbox, {
53
71
  checked: checkedAll,
54
72
  onChange: onClickCheckAll
55
- }), !hideSearchBar ? _react.default.createElement(_styled.SearchBarContainer, null, _react.default.createElement(_Input.Input, {
56
- style: {
57
- width: '100%'
58
- },
59
- placeholder: "Busque a op\xE7\xE3o desejada",
60
- value: searchArg,
61
- leftComponent: _react.default.createElement(_reactCore.Icon, {
62
- name: "magnify",
63
- type: "material-community",
64
- size: "centi",
65
- style: {
66
- marginHorizontal: 12
67
- }
68
- }),
69
- onChange: text => setSearchArg(text)
73
+ }), !hideSearchBar ? _react.default.createElement(_styled.SearchBarContainer, null, _react.default.createElement(_components.SearchInput, {
74
+ searchArg: searchArg,
75
+ onChange: onChange,
76
+ fullWidth: fullWidth,
77
+ placeholder: searchBarPlaceholder
70
78
  })) : _react.default.createElement(_styled.StyledContainerTextLabel, null, _react.default.createElement(_reactCore.Text, {
71
79
  fontWeight: "bold"
72
- }, _react.default.createElement(_styled.StyledSpan, null, "Selecionar todos")))), _react.default.createElement(_styled.OptionsContainer, {
80
+ }, _react.default.createElement(_styled.StyledSpan, null, selectAllLabel)))), type === 'single' && !hideSearchBar && _react.default.createElement(_styled.PaddedContainer, null, _react.default.createElement(_components.SearchInput, {
81
+ searchArg: searchArg,
82
+ onChange: onChange,
83
+ fullWidth: fullWidth,
84
+ placeholder: searchBarPlaceholder
85
+ })), _react.default.createElement(_styled.OptionsContainer, {
73
86
  lengthOptions: options.length
74
87
  }, options.map((item, index) => _react.default.createElement(_SelectItem.ItemSelect, {
75
88
  type: type,
76
- key: index,
89
+ key: keyExtractor(item),
77
90
  item: item,
78
91
  onSelect: onSelect,
79
92
  value: value,
@@ -83,7 +96,7 @@ const Dropdown = ({
83
96
  setDropDownVisible: setDropDownVisible,
84
97
  checkedAll: checkedAll,
85
98
  setCheckedAll: setCheckedAll,
86
- lenghtOptions: options.length
99
+ lenghtOptions: lengthOptions
87
100
  }))));
88
101
  };
89
102
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/components/molecules/Select/Dropdown/Dropdown.tsx"],"names":["Dropdown","options","onSearch","type","hideSearchBar","onSelect","value","keyExtractor","labelExtractor","setDropDownVisible","style","anchor","searchArg","setSearchArg","lengthOptions","length","checkedAll","setCheckedAll","React","useState","onClickCheckAll","items","map","option","aux","auxArray","undefined","width","marginHorizontal","text","item","index"],"mappings":"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","sourcesContent":["import React from 'react';\nimport {\n Checkbox,\n Text,\n Icon,\n useDebouncedState,\n} from '@tecsinapse/react-core';\nimport { Input } from '../../../atoms/Input';\nimport { ItemSelect } from '../SelectItem';\nimport { SelectProps } from '../Select';\nimport {\n SearchBarContainer,\n StyledContainerCheckAll,\n StyledContainerDropdown,\n StyledContainerTextLabel,\n StyledSpan,\n OptionsContainer,\n} from './styled';\n\nconst Dropdown = <Data, Type extends 'single' | 'multi'>({\n options,\n onSearch,\n type,\n hideSearchBar,\n onSelect,\n value,\n keyExtractor,\n labelExtractor,\n setDropDownVisible,\n style,\n anchor,\n}: SelectProps<Data, Type> & {\n setDropDownVisible: (t: boolean) => void;\n}): JSX.Element => {\n const [searchArg, setSearchArg] = useDebouncedState<string>('', onSearch);\n const lengthOptions = options.length;\n\n const [checkedAll, setCheckedAll] = React.useState<boolean>(\n type === 'multi' && (value as Data[])?.length === lengthOptions\n );\n\n const onClickCheckAll = () => {\n const items = options.map(option => option);\n setCheckedAll(!checkedAll);\n const aux = !checkedAll;\n type OnSelectArg = Parameters<typeof onSelect>[0];\n const auxArray: Data[] = [];\n !aux ? onSelect(auxArray as OnSelectArg) : onSelect(items as OnSelectArg);\n };\n\n return (\n <StyledContainerDropdown\n lengthOptions={lengthOptions}\n style={style}\n anchor={anchor}\n >\n {type === 'multi' && (\n <StyledContainerCheckAll\n onClick={hideSearchBar ? onClickCheckAll : undefined}\n >\n <Checkbox checked={checkedAll} onChange={onClickCheckAll} />\n {!hideSearchBar ? (\n <SearchBarContainer>\n <Input\n style={{ width: '100%' }}\n placeholder=\"Busque a opção desejada\"\n value={searchArg}\n leftComponent={\n <Icon\n name=\"magnify\"\n type=\"material-community\"\n size=\"centi\"\n style={{ marginHorizontal: 12 }}\n />\n }\n onChange={text => setSearchArg(text)}\n />\n </SearchBarContainer>\n ) : (\n <StyledContainerTextLabel>\n <Text fontWeight=\"bold\">\n <StyledSpan>Selecionar todos</StyledSpan>\n </Text>\n </StyledContainerTextLabel>\n )}\n </StyledContainerCheckAll>\n )}\n <OptionsContainer lengthOptions={options.length}>\n {options.map((item, index) => (\n <ItemSelect\n type={type}\n key={index}\n item={item}\n onSelect={onSelect}\n value={value}\n keyExtractor={keyExtractor}\n index={index}\n labelExtractor={labelExtractor}\n setDropDownVisible={setDropDownVisible}\n checkedAll={checkedAll}\n setCheckedAll={setCheckedAll}\n lenghtOptions={options.length}\n />\n ))}\n </OptionsContainer>\n </StyledContainerDropdown>\n );\n};\n\nexport default Dropdown;\n"],"file":"Dropdown.js"}
1
+ {"version":3,"sources":["../../../../../src/components/molecules/Select/Dropdown/Dropdown.tsx"],"names":["fullWidth","width","Dropdown","options","onSearch","type","hideSearchBar","onSelect","value","keyExtractor","labelExtractor","setDropDownVisible","style","anchor","selectAllLabel","searchBarPlaceholder","searchArg","setSearchArg","lengthOptions","React","useMemo","length","checkedAll","setCheckedAll","useState","useEffect","onClickCheckAll","useCallback","items","map","option","aux","prev","auxArray","onChange","text","undefined","item","index"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { Checkbox, Text, useDebouncedState } from '@tecsinapse/react-core';\nimport { ItemSelect } from '../SelectItem';\nimport { SelectProps } from '../Select';\nimport {\n SearchBarContainer,\n StyledContainerCheckAll,\n StyledContainerDropdown,\n StyledContainerTextLabel,\n StyledSpan,\n OptionsContainer,\n PaddedContainer,\n} from './styled';\nimport { SearchInput } from './components';\n\nconst fullWidth = { width: '100%' };\n\nconst Dropdown = <Data, Type extends 'single' | 'multi'>({\n options,\n onSearch,\n type,\n hideSearchBar,\n onSelect,\n value,\n keyExtractor,\n labelExtractor,\n setDropDownVisible,\n style,\n anchor,\n selectAllLabel,\n searchBarPlaceholder,\n}: SelectProps<Data, Type> & {\n setDropDownVisible: (t: boolean) => void;\n}): JSX.Element => {\n const [searchArg, setSearchArg] = useDebouncedState<string>('', onSearch);\n const lengthOptions = React.useMemo(() => options.length, [options]);\n\n const [checkedAll, setCheckedAll] = React.useState<boolean>(\n type === 'multi' && (value as Data[])?.length === lengthOptions\n );\n\n React.useEffect(() => {\n if (type === 'multi') {\n lengthOptions === (value as Data[])?.length\n ? setCheckedAll(true)\n : setCheckedAll(false);\n }\n }, [value, type, lengthOptions]);\n\n const onClickCheckAll = React.useCallback(() => {\n const items = options.map(option => option);\n let aux;\n setCheckedAll(prev => {\n aux = !prev;\n return !prev;\n });\n type OnSelectArg = Parameters<typeof onSelect>[0];\n const auxArray: Data[] = [];\n !aux ? onSelect(auxArray as OnSelectArg) : onSelect(items as OnSelectArg);\n }, [options, setCheckedAll, onSelect]);\n\n const onChange = React.useCallback(text => setSearchArg(text), [\n setSearchArg,\n ]);\n\n return (\n <StyledContainerDropdown\n lengthOptions={lengthOptions}\n style={style}\n anchor={anchor}\n >\n {type === 'multi' && (\n <StyledContainerCheckAll\n onClick={hideSearchBar ? onClickCheckAll : undefined}\n >\n <Checkbox checked={checkedAll} onChange={onClickCheckAll} />\n {!hideSearchBar ? (\n <SearchBarContainer>\n <SearchInput\n searchArg={searchArg}\n onChange={onChange}\n fullWidth={fullWidth}\n placeholder={searchBarPlaceholder}\n />\n </SearchBarContainer>\n ) : (\n <StyledContainerTextLabel>\n <Text fontWeight=\"bold\">\n <StyledSpan>{selectAllLabel}</StyledSpan>\n </Text>\n </StyledContainerTextLabel>\n )}\n </StyledContainerCheckAll>\n )}\n {type === 'single' && !hideSearchBar && (\n <PaddedContainer>\n <SearchInput\n searchArg={searchArg}\n onChange={onChange}\n fullWidth={fullWidth}\n placeholder={searchBarPlaceholder}\n />\n </PaddedContainer>\n )}\n <OptionsContainer lengthOptions={options.length}>\n {options.map((item, index) => (\n <ItemSelect\n type={type}\n key={keyExtractor(item)}\n item={item}\n onSelect={onSelect}\n value={value}\n keyExtractor={keyExtractor}\n index={index}\n labelExtractor={labelExtractor}\n setDropDownVisible={setDropDownVisible}\n checkedAll={checkedAll}\n setCheckedAll={setCheckedAll}\n lenghtOptions={lengthOptions}\n />\n ))}\n </OptionsContainer>\n </StyledContainerDropdown>\n );\n};\n\nexport default Dropdown;\n"],"file":"Dropdown.js"}
@@ -0,0 +1,8 @@
1
+ import React from 'react';
2
+ declare const _default: React.MemoExoticComponent<({ fullWidth, searchArg, onChange, placeholder }: {
3
+ fullWidth: any;
4
+ searchArg: any;
5
+ onChange: any;
6
+ placeholder: any;
7
+ }) => JSX.Element>;
8
+ export default _default;
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var _react = _interopRequireDefault(require("react"));
9
+
10
+ var _reactCore = require("@tecsinapse/react-core");
11
+
12
+ var _Input = require("../../../../atoms/Input");
13
+
14
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
15
+
16
+ const InputIcon = _react.default.createElement(_reactCore.Icon, {
17
+ name: "magnify",
18
+ type: "material-community",
19
+ size: "centi",
20
+ style: {
21
+ marginHorizontal: 12
22
+ }
23
+ });
24
+
25
+ const SearchInput = ({
26
+ fullWidth,
27
+ searchArg,
28
+ onChange,
29
+ placeholder
30
+ }) => {
31
+ return _react.default.createElement(_Input.Input, {
32
+ style: fullWidth,
33
+ placeholder: placeholder,
34
+ value: searchArg,
35
+ leftComponent: InputIcon,
36
+ onChange: onChange
37
+ });
38
+ };
39
+
40
+ var _default = _react.default.memo(SearchInput);
41
+
42
+ exports.default = _default;
43
+ //# sourceMappingURL=SearchInput.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../src/components/molecules/Select/Dropdown/components/SearchInput.tsx"],"names":["InputIcon","marginHorizontal","SearchInput","fullWidth","searchArg","onChange","placeholder","React","memo"],"mappings":";;;;;;;AAAA;;AACA;;AACA;;;;AAEA,MAAMA,SAAS,GACb,6BAAC,eAAD;AACE,EAAA,IAAI,EAAC,SADP;AAEE,EAAA,IAAI,EAAC,oBAFP;AAGE,EAAA,IAAI,EAAC,OAHP;AAIE,EAAA,KAAK,EAAE;AAAEC,IAAAA,gBAAgB,EAAE;AAApB;AAJT,EADF;;AASA,MAAMC,WAAW,GAAG,CAAC;AAAEC,EAAAA,SAAF;AAAaC,EAAAA,SAAb;AAAwBC,EAAAA,QAAxB;AAAkCC,EAAAA;AAAlC,CAAD,KAAqD;AACvE,SACE,6BAAC,YAAD;AACE,IAAA,KAAK,EAAEH,SADT;AAEE,IAAA,WAAW,EAAEG,WAFf;AAGE,IAAA,KAAK,EAAEF,SAHT;AAIE,IAAA,aAAa,EAAEJ,SAJjB;AAKE,IAAA,QAAQ,EAAEK;AALZ,IADF;AASD,CAVD;;eAYeE,eAAMC,IAAN,CAAWN,WAAX,C","sourcesContent":["import React from 'react';\nimport { Icon } from '@tecsinapse/react-core';\nimport { Input } from '../../../../atoms/Input';\n\nconst InputIcon = (\n <Icon\n name=\"magnify\"\n type=\"material-community\"\n size=\"centi\"\n style={{ marginHorizontal: 12 }}\n />\n);\n\nconst SearchInput = ({ fullWidth, searchArg, onChange, placeholder }) => {\n return (\n <Input\n style={fullWidth}\n placeholder={placeholder}\n value={searchArg}\n leftComponent={InputIcon}\n onChange={onChange}\n />\n );\n};\n\nexport default React.memo(SearchInput);\n"],"file":"SearchInput.js"}
@@ -0,0 +1 @@
1
+ export { default as SearchInput } from './SearchInput';
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "SearchInput", {
7
+ enumerable: true,
8
+ get: function () {
9
+ return _SearchInput.default;
10
+ }
11
+ });
12
+
13
+ var _SearchInput = _interopRequireDefault(require("./SearchInput"));
14
+
15
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
16
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../src/components/molecules/Select/Dropdown/components/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA","sourcesContent":["export { default as SearchInput } from './SearchInput';\n"],"file":"index.js"}
@@ -8,6 +8,7 @@ export declare const OptionsContainer: import("@emotion/styled").StyledComponent
8
8
  as?: import("react").ElementType<any> | undefined;
9
9
  } & Partial<any>, import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
10
10
  export declare const SearchBarContainer: import("@emotion/styled").StyledComponent<any, import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
11
- export declare const StyledContainerCheckAll: import("@emotion/styled").StyledComponent<any, import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
11
+ export declare const PaddedContainer: import("@emotion/styled").StyledComponent<any, import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
12
+ export declare const StyledContainerCheckAll: import("@emotion/styled").StyledComponent<any, {}, {}>;
12
13
  export declare const StyledSpan: import("@emotion/styled").StyledComponent<any, import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, {}>;
13
14
  export declare const StyledContainerTextLabel: import("@emotion/styled").StyledComponent<any, import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.StyledContainerTextLabel = exports.StyledSpan = exports.StyledContainerCheckAll = exports.SearchBarContainer = exports.OptionsContainer = exports.StyledContainerDropdown = void 0;
6
+ exports.StyledContainerTextLabel = exports.StyledSpan = exports.StyledContainerCheckAll = exports.PaddedContainer = exports.SearchBarContainer = exports.OptionsContainer = exports.StyledContainerDropdown = void 0;
7
7
 
8
8
  var _styled = _interopRequireDefault(require("@emotion/styled"));
9
9
 
@@ -87,10 +87,13 @@ const SearchBarContainer = (0, _styled.default)('div')`
87
87
  width: 100%;
88
88
  `;
89
89
  exports.SearchBarContainer = SearchBarContainer;
90
- const StyledContainerCheckAll = (0, _styled.default)('div')`
90
+ const PaddedContainer = (0, _styled.default)('div')`
91
91
  padding: ${({
92
92
  theme
93
93
  }) => `${theme.spacing.mili} ${theme.spacing.deca}`};
94
+ `;
95
+ exports.PaddedContainer = PaddedContainer;
96
+ const StyledContainerCheckAll = (0, _styled.default)(PaddedContainer)`
94
97
  flex-direction: row;
95
98
  display: flex;
96
99
  justify-content: flex-start;
@@ -111,7 +114,7 @@ exports.StyledContainerCheckAll = StyledContainerCheckAll;
111
114
  const StyledSpan = (0, _styled.default)('span')`
112
115
  color: ${({
113
116
  theme
114
- }) => theme.color.primary.medium};
117
+ }) => theme.font.color.dark};
115
118
  padding: ${({
116
119
  theme
117
120
  }) => `${theme.spacing.mili} 0px`};
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/components/molecules/Select/Dropdown/styled.ts"],"names":["anchorBottom","theme","anchor","spacing","centi","anchorTop","StyledContainerDropdown","miscellaneous","surfaceColor","borderRadius","mili","shadow","hideSearchBar","deca","zIndex","select","OptionsContainer","lengthOptions","color","secondary","light","primary","SearchBarContainer","StyledContainerCheckAll","xlight","medium","StyledSpan","StyledContainerTextLabel"],"mappings":"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","sourcesContent":["import styled from '@emotion/styled';\nimport { hex2rgba, StyleProps } from '@tecsinapse/react-core';\nimport { SelectProps } from '../Select';\nimport { css } from '@emotion/react';\n\ntype InjectedProps = Partial<\n StyleProps & SelectProps<any, any> & { lengthOptions: number }\n>;\n\nconst anchorBottom = ({\n theme,\n anchor,\n}: StyleProps & Omit<InjectedProps, 'theme'>) =>\n anchor === 'bottom' &&\n css`\n margin-top: ${theme.spacing.centi};\n top: 100%;\n `;\n\nconst anchorTop = ({\n theme,\n anchor,\n}: StyleProps & Omit<InjectedProps, 'theme'>) =>\n anchor === 'top' &&\n css`\n margin-bottom: ${theme.spacing.centi};\n bottom: 100%;\n `;\n\nexport const StyledContainerDropdown = styled('div')<InjectedProps>`\n width: 100%;\n background-color: ${({ theme }: StyleProps) =>\n theme.miscellaneous.surfaceColor};\n border-radius: ${({ theme }: StyleProps) => theme.borderRadius.mili};\n box-shadow: 0 2px 8px\n ${({ theme }: StyleProps) => hex2rgba(theme.miscellaneous.shadow, 0.08)};\n position: absolute;\n padding-top: ${({\n theme,\n hideSearchBar,\n }: StyleProps & Partial<SelectProps<any, any>>) =>\n !hideSearchBar ? `${theme.spacing.deca}` : '0px'};\n padding-bottom: ${({ theme }: StyleProps) => theme.spacing.mili};\n z-index: ${({ theme }: StyleProps) => theme.zIndex.select};\n ${anchorTop}\n ${anchorBottom}\n`;\n\nexport const OptionsContainer = styled('div')<InjectedProps>`\n max-height: 250px;\n top: 100%;\n overflow-y: ${({ lengthOptions = 0 }: InjectedProps) =>\n lengthOptions > 5 ? 'scroll' : 'hidden'};\n ::-webkit-scrollbar {\n width: 8px;\n }\n ::-webkit-scrollbar-thumb {\n border-radius: ${({ theme }: StyleProps) => theme.borderRadius.centi};\n background-color: ${({ theme }: StyleProps) => theme.color.secondary.light};\n }\n ::-webkit-scrollbar-thumb:hover {\n background-color: ${({ theme }: StyleProps) => theme.color.primary.light};\n },\n`;\n\nexport const SearchBarContainer = styled('div')<Partial<StyleProps>>`\n padding-left: ${({ theme }) => theme.spacing.mili};\n width: 100%;\n`;\n\nexport const StyledContainerCheckAll = styled('div')<Partial<StyleProps>>`\n padding: ${({ theme }) => `${theme.spacing.mili} ${theme.spacing.deca}`};\n flex-direction: row;\n display: flex;\n justify-content: flex-start;\n align-items: center;\n cursor: pointer;\n &:hover {\n background-color: ${({ theme }) => theme.color.primary.xlight};\n }\n &:hover span {\n color: ${({ theme }) => theme.color.primary.medium};\n }\n`;\n\nexport const StyledSpan = styled('span')<Partial<StyleProps>>`\n color: ${({ theme }) => theme.color.primary.medium};\n padding: ${({ theme }) => `${theme.spacing.mili} 0px`};\n`;\n\nexport const StyledContainerTextLabel = styled('div')<Partial<StyleProps>>`\n padding-left: ${({ theme }) => theme.spacing.mili};\n width: 100%;\n display: flex;\n overflow: hidden;\n`;\n"],"file":"styled.js"}
1
+ {"version":3,"sources":["../../../../../src/components/molecules/Select/Dropdown/styled.ts"],"names":["anchorBottom","theme","anchor","spacing","centi","anchorTop","StyledContainerDropdown","miscellaneous","surfaceColor","borderRadius","mili","shadow","hideSearchBar","deca","zIndex","select","OptionsContainer","lengthOptions","color","secondary","light","primary","SearchBarContainer","PaddedContainer","StyledContainerCheckAll","xlight","medium","StyledSpan","font","dark","StyledContainerTextLabel"],"mappings":"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","sourcesContent":["import styled from '@emotion/styled';\nimport { hex2rgba, StyleProps } from '@tecsinapse/react-core';\nimport { SelectProps } from '../Select';\nimport { css } from '@emotion/react';\n\ntype InjectedProps = Partial<\n StyleProps &\n SelectProps<unknown, 'single' | 'multi'> & { lengthOptions: number }\n>;\n\nconst anchorBottom = ({\n theme,\n anchor,\n}: StyleProps & Omit<InjectedProps, 'theme'>) =>\n anchor === 'bottom' &&\n css`\n margin-top: ${theme.spacing.centi};\n top: 100%;\n `;\n\nconst anchorTop = ({\n theme,\n anchor,\n}: StyleProps & Omit<InjectedProps, 'theme'>) =>\n anchor === 'top' &&\n css`\n margin-bottom: ${theme.spacing.centi};\n bottom: 100%;\n `;\n\nexport const StyledContainerDropdown = styled('div')<InjectedProps>`\n width: 100%;\n background-color: ${({ theme }: StyleProps) =>\n theme.miscellaneous.surfaceColor};\n border-radius: ${({ theme }: StyleProps) => theme.borderRadius.mili};\n box-shadow: 0 2px 8px\n ${({ theme }: StyleProps) => hex2rgba(theme.miscellaneous.shadow, 0.08)};\n position: absolute;\n padding-top: ${({\n theme,\n hideSearchBar,\n }: StyleProps & Partial<SelectProps<unknown, 'single' | 'multi'>>) =>\n !hideSearchBar ? `${theme.spacing.deca}` : '0px'};\n padding-bottom: ${({ theme }: StyleProps) => theme.spacing.mili};\n z-index: ${({ theme }: StyleProps) => theme.zIndex.select};\n ${anchorTop}\n ${anchorBottom}\n`;\n\nexport const OptionsContainer = styled('div')<InjectedProps>`\n max-height: 250px;\n top: 100%;\n overflow-y: ${({ lengthOptions = 0 }: InjectedProps) =>\n lengthOptions > 5 ? 'scroll' : 'hidden'};\n ::-webkit-scrollbar {\n width: 8px;\n }\n ::-webkit-scrollbar-thumb {\n border-radius: ${({ theme }: StyleProps) => theme.borderRadius.centi};\n background-color: ${({ theme }: StyleProps) => theme.color.secondary.light};\n }\n ::-webkit-scrollbar-thumb:hover {\n background-color: ${({ theme }: StyleProps) => theme.color.primary.light};\n },\n`;\n\nexport const SearchBarContainer = styled('div')<Partial<StyleProps>>`\n padding-left: ${({ theme }) => theme.spacing.mili};\n width: 100%;\n`;\n\nexport const PaddedContainer = styled('div')<Partial<StyleProps>>`\n padding: ${({ theme }) => `${theme.spacing.mili} ${theme.spacing.deca}`};\n`;\n\nexport const StyledContainerCheckAll = styled(PaddedContainer)<\n Partial<StyleProps>\n>`\n flex-direction: row;\n display: flex;\n justify-content: flex-start;\n align-items: center;\n cursor: pointer;\n &:hover {\n background-color: ${({ theme }) => theme.color.primary.xlight};\n }\n &:hover span {\n color: ${({ theme }) => theme.color.primary.medium};\n }\n`;\n\nexport const StyledSpan = styled('span')<Partial<StyleProps>>`\n color: ${({ theme }) => theme.font.color.dark};\n padding: ${({ theme }) => `${theme.spacing.mili} 0px`};\n`;\n\nexport const StyledContainerTextLabel = styled('div')<Partial<StyleProps>>`\n padding-left: ${({ theme }) => theme.spacing.mili};\n width: 100%;\n display: flex;\n overflow: hidden;\n`;\n"],"file":"styled.js"}
@@ -11,10 +11,11 @@ export interface SelectProps<Data, Type extends 'single' | 'multi'> extends Omit
11
11
  onSearch?: (searchArg: string) => void | never;
12
12
  searchBarPlaceholder?: string;
13
13
  hideSearchBar?: boolean;
14
+ selectAllLabel?: string;
14
15
  disabled?: boolean;
15
16
  label?: string;
16
17
  anchor?: 'top' | 'bottom';
17
18
  displayTextProps?: TextProps;
18
19
  }
19
- export declare const Select: <Data, Type extends "single" | "multi">({ value, options, keyExtractor, onSelect, type, labelExtractor, placeholder, onSearch, searchBarPlaceholder, hideSearchBar, label, disabled, anchor, displayTextProps, ...rest }: SelectProps<Data, Type>) => JSX.Element;
20
+ export declare const Select: <Data, Type extends "single" | "multi">({ value, options, keyExtractor, onSelect, type, labelExtractor, placeholder, onSearch, searchBarPlaceholder, hideSearchBar, label, disabled, anchor, displayTextProps, selectAllLabel, ...rest }: SelectProps<Data, Type>) => JSX.Element;
20
21
  export default Select;
@@ -34,12 +34,13 @@ const Select = ({
34
34
  labelExtractor,
35
35
  placeholder,
36
36
  onSearch,
37
- searchBarPlaceholder,
37
+ searchBarPlaceholder = 'Busque a opção desejada',
38
38
  hideSearchBar = true,
39
39
  label,
40
40
  disabled = false,
41
41
  anchor = 'bottom',
42
42
  displayTextProps,
43
+ selectAllLabel = 'Selecionar todos',
43
44
  ...rest
44
45
  }) => {
45
46
  const [dropDownVisible, setDropDownVisible] = _react.default.useState(false);
@@ -48,20 +49,16 @@ const Select = ({
48
49
 
49
50
  (0, _hooks.useClickAwayListener)(refDropDown, setDropDownVisible);
50
51
  const displayValue = (0, _functions.getDisplayValue)(type, value, options, placeholder, keyExtractor, labelExtractor);
52
+
53
+ const onPress = _react.default.useCallback(() => setDropDownVisible(prev => !prev), [setDropDownVisible]);
54
+
51
55
  return _react.default.createElement(_styled.StyledContainer, _extends({
52
56
  ref: refDropDown
53
57
  }, rest), _react.default.createElement(_styled.StyledInputContainer, null, _react.default.createElement(_reactCore.PressableInputContainer, {
54
58
  label: label,
55
- onPress: () => setDropDownVisible(!dropDownVisible),
59
+ onPress: onPress,
56
60
  disabled: disabled,
57
- rightComponent: _react.default.createElement(_reactCore.Icon, {
58
- name: "chevron-down",
59
- type: "material-community",
60
- size: "centi",
61
- style: {
62
- marginRight: 12
63
- }
64
- })
61
+ rightComponent: _styled.RightComponent
65
62
  }, _react.default.createElement(_reactCore.Text, _extends({}, displayTextProps, {
66
63
  ellipsizeMode: "tail",
67
64
  numberOfLines: 1
@@ -82,7 +79,8 @@ const Select = ({
82
79
  ..._animations.transition[anchor][state]
83
80
  },
84
81
  setDropDownVisible: setDropDownVisible,
85
- anchor: anchor
82
+ anchor: anchor,
83
+ selectAllLabel: selectAllLabel
86
84
  })));
87
85
  };
88
86
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/molecules/Select/Select.tsx"],"names":["Select","value","options","keyExtractor","onSelect","type","labelExtractor","placeholder","onSearch","searchBarPlaceholder","hideSearchBar","label","disabled","anchor","displayTextProps","rest","dropDownVisible","setDropDownVisible","React","useState","refDropDown","useRef","displayValue","marginRight","state","defaultStyles","transition"],"mappings":";;;;;;;AAAA;;AACA;;AAMA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;;;AAsBO,MAAMA,MAAM,GAAG,CAAwC;AAC5DC,EAAAA,KAD4D;AAE5DC,EAAAA,OAF4D;AAG5DC,EAAAA,YAH4D;AAI5DC,EAAAA,QAJ4D;AAK5DC,EAAAA,IAL4D;AAM5DC,EAAAA,cAN4D;AAO5DC,EAAAA,WAP4D;AAQ5DC,EAAAA,QAR4D;AAS5DC,EAAAA,oBAT4D;AAU5DC,EAAAA,aAAa,GAAG,IAV4C;AAW5DC,EAAAA,KAX4D;AAY5DC,EAAAA,QAAQ,GAAG,KAZiD;AAa5DC,EAAAA,MAAM,GAAG,QAbmD;AAc5DC,EAAAA,gBAd4D;AAe5D,KAAGC;AAfyD,CAAxC,KAgBsB;AAC1C,QAAM,CAACC,eAAD,EAAkBC,kBAAlB,IAAwCC,eAAMC,QAAN,CAAwB,KAAxB,CAA9C;;AACA,QAAMC,WAAW,GAAGF,eAAMG,MAAN,CAAa,IAAb,CAApB;;AACA,mCAAqBD,WAArB,EAAkCH,kBAAlC;AAEA,QAAMK,YAAY,GAAG,gCACnBjB,IADmB,EAEnBJ,KAFmB,EAGnBC,OAHmB,EAInBK,WAJmB,EAKnBJ,YALmB,EAMnBG,cANmB,CAArB;AASA,SACE,6BAAC,uBAAD;AAAiB,IAAA,GAAG,EAAEc;AAAtB,KAAuCL,IAAvC,GACE,6BAAC,4BAAD,QACE,6BAAC,kCAAD;AACE,IAAA,KAAK,EAAEJ,KADT;AAEE,IAAA,OAAO,EAAE,MAAMM,kBAAkB,CAAC,CAACD,eAAF,CAFnC;AAGE,IAAA,QAAQ,EAAEJ,QAHZ;AAIE,IAAA,cAAc,EACZ,6BAAC,eAAD;AACE,MAAA,IAAI,EAAC,cADP;AAEE,MAAA,IAAI,EAAC,oBAFP;AAGE,MAAA,IAAI,EAAC,OAHP;AAIE,MAAA,KAAK,EAAE;AAAEW,QAAAA,WAAW,EAAE;AAAf;AAJT;AALJ,KAaE,6BAAC,eAAD,eAAUT,gBAAV;AAA4B,IAAA,aAAa,EAAC,MAA1C;AAAiD,IAAA,aAAa,EAAE;AAAhE,MACGQ,YADH,CAbF,CADF,CADF,EAoBE,6BAAC,gCAAD;AAAY,IAAA,EAAE,EAAEN,eAAhB;AAAiC,IAAA,OAAO,EAAE;AAA1C,KACGQ,KAAK,IACJ,6BAAC,kBAAD;AACE,IAAA,OAAO,EAAEtB,OADX;AAEE,IAAA,QAAQ,EAAEE,QAFZ;AAGE,IAAA,KAAK,EAAEH,KAHT;AAIE,IAAA,IAAI,EAAEI,IAJR;AAKE,IAAA,YAAY,EAAEF,YALhB;AAME,IAAA,cAAc,EAAEG,cANlB;AAOE,IAAA,aAAa,EAAEI,aAPjB;AAQE,IAAA,oBAAoB,EAAED,oBARxB;AASE,IAAA,QAAQ,EAAED,QATZ;AAUE,IAAA,KAAK,EAAE,EAAE,GAAGiB,yBAAL;AAAoB,SAAGC,uBAAWb,MAAX,EAAmBW,KAAnB;AAAvB,KAVT;AAWE,IAAA,kBAAkB,EAAEP,kBAXtB;AAYE,IAAA,MAAM,EAAEJ;AAZV,IAFJ,CApBF,CADF;AAyCD,CAvEM;;;eAyEQb,M","sourcesContent":["import React from 'react';\nimport {\n Icon,\n PressableInputContainer,\n Text,\n TextProps,\n} from '@tecsinapse/react-core';\nimport { useClickAwayListener } from '../../../hooks';\nimport { StyledContainer, StyledInputContainer } from './styled';\nimport { Dropdown } from './Dropdown';\nimport { getDisplayValue } from './functions';\nimport { Transition } from 'react-transition-group';\nimport { defaultStyles, transition } from './animations';\n\nexport interface SelectProps<Data, Type extends 'single' | 'multi'>\n extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onSelect'> {\n options: Data[];\n onSelect: (\n option: Type extends 'single' ? Data | undefined : Data[]\n ) => never | void;\n value: Type extends 'single' ? Data | undefined : Data[];\n type: Type;\n keyExtractor: (t: Data, index?: number) => string;\n labelExtractor: (t: Data) => string;\n placeholder?: string;\n onSearch?: (searchArg: string) => void | never;\n searchBarPlaceholder?: string;\n hideSearchBar?: boolean;\n disabled?: boolean;\n label?: string;\n anchor?: 'top' | 'bottom';\n displayTextProps?: TextProps;\n}\n\nexport const Select = <Data, Type extends 'single' | 'multi'>({\n value,\n options,\n keyExtractor,\n onSelect,\n type,\n labelExtractor,\n placeholder,\n onSearch,\n searchBarPlaceholder,\n hideSearchBar = true,\n label,\n disabled = false,\n anchor = 'bottom',\n displayTextProps,\n ...rest\n}: SelectProps<Data, Type>): JSX.Element => {\n const [dropDownVisible, setDropDownVisible] = React.useState<boolean>(false);\n const refDropDown = React.useRef(null);\n useClickAwayListener(refDropDown, setDropDownVisible);\n\n const displayValue = getDisplayValue<Data>(\n type,\n value,\n options,\n placeholder,\n keyExtractor,\n labelExtractor\n );\n\n return (\n <StyledContainer ref={refDropDown} {...rest}>\n <StyledInputContainer>\n <PressableInputContainer\n label={label}\n onPress={() => setDropDownVisible(!dropDownVisible)}\n disabled={disabled}\n rightComponent={\n <Icon\n name=\"chevron-down\"\n type=\"material-community\"\n size=\"centi\"\n style={{ marginRight: 12 }}\n />\n }\n >\n <Text {...displayTextProps} ellipsizeMode=\"tail\" numberOfLines={1}>\n {displayValue}\n </Text>\n </PressableInputContainer>\n </StyledInputContainer>\n <Transition in={dropDownVisible} timeout={300}>\n {state => (\n <Dropdown\n options={options}\n onSelect={onSelect}\n value={value}\n type={type}\n keyExtractor={keyExtractor}\n labelExtractor={labelExtractor}\n hideSearchBar={hideSearchBar}\n searchBarPlaceholder={searchBarPlaceholder}\n onSearch={onSearch}\n style={{ ...defaultStyles, ...transition[anchor][state] }}\n setDropDownVisible={setDropDownVisible}\n anchor={anchor}\n />\n )}\n </Transition>\n </StyledContainer>\n );\n};\n\nexport default Select;\n"],"file":"Select.js"}
1
+ {"version":3,"sources":["../../../../src/components/molecules/Select/Select.tsx"],"names":["Select","value","options","keyExtractor","onSelect","type","labelExtractor","placeholder","onSearch","searchBarPlaceholder","hideSearchBar","label","disabled","anchor","displayTextProps","selectAllLabel","rest","dropDownVisible","setDropDownVisible","React","useState","refDropDown","useRef","displayValue","onPress","useCallback","prev","RightComponent","state","defaultStyles","transition"],"mappings":";;;;;;;AAAA;;AACA;;AAKA;;AACA;;AAKA;;AACA;;AACA;;AACA;;;;;;AAwBO,MAAMA,MAAM,GAAG,CAAwC;AAC5DC,EAAAA,KAD4D;AAE5DC,EAAAA,OAF4D;AAG5DC,EAAAA,YAH4D;AAI5DC,EAAAA,QAJ4D;AAK5DC,EAAAA,IAL4D;AAM5DC,EAAAA,cAN4D;AAO5DC,EAAAA,WAP4D;AAQ5DC,EAAAA,QAR4D;AAS5DC,EAAAA,oBAAoB,GAAG,yBATqC;AAU5DC,EAAAA,aAAa,GAAG,IAV4C;AAW5DC,EAAAA,KAX4D;AAY5DC,EAAAA,QAAQ,GAAG,KAZiD;AAa5DC,EAAAA,MAAM,GAAG,QAbmD;AAc5DC,EAAAA,gBAd4D;AAe5DC,EAAAA,cAAc,GAAG,kBAf2C;AAgB5D,KAAGC;AAhByD,CAAxC,KAiBsB;AAC1C,QAAM,CAACC,eAAD,EAAkBC,kBAAlB,IAAwCC,eAAMC,QAAN,CAAwB,KAAxB,CAA9C;;AACA,QAAMC,WAAW,GAAGF,eAAMG,MAAN,CAAa,IAAb,CAApB;;AACA,mCAAqBD,WAArB,EAAkCH,kBAAlC;AAEA,QAAMK,YAAY,GAAG,gCACnBlB,IADmB,EAEnBJ,KAFmB,EAGnBC,OAHmB,EAInBK,WAJmB,EAKnBJ,YALmB,EAMnBG,cANmB,CAArB;;AASA,QAAMkB,OAAO,GAAGL,eAAMM,WAAN,CAAkB,MAAMP,kBAAkB,CAACQ,IAAI,IAAI,CAACA,IAAV,CAA1C,EAA2D,CACzER,kBADyE,CAA3D,CAAhB;;AAIA,SACE,6BAAC,uBAAD;AAAiB,IAAA,GAAG,EAAEG;AAAtB,KAAuCL,IAAvC,GACE,6BAAC,4BAAD,QACE,6BAAC,kCAAD;AACE,IAAA,KAAK,EAAEL,KADT;AAEE,IAAA,OAAO,EAAEa,OAFX;AAGE,IAAA,QAAQ,EAAEZ,QAHZ;AAIE,IAAA,cAAc,EAAEe;AAJlB,KAME,6BAAC,eAAD,eAAUb,gBAAV;AAA4B,IAAA,aAAa,EAAC,MAA1C;AAAiD,IAAA,aAAa,EAAE;AAAhE,MACGS,YADH,CANF,CADF,CADF,EAaE,6BAAC,gCAAD;AAAY,IAAA,EAAE,EAAEN,eAAhB;AAAiC,IAAA,OAAO,EAAE;AAA1C,KACGW,KAAK,IACJ,6BAAC,kBAAD;AACE,IAAA,OAAO,EAAE1B,OADX;AAEE,IAAA,QAAQ,EAAEE,QAFZ;AAGE,IAAA,KAAK,EAAEH,KAHT;AAIE,IAAA,IAAI,EAAEI,IAJR;AAKE,IAAA,YAAY,EAAEF,YALhB;AAME,IAAA,cAAc,EAAEG,cANlB;AAOE,IAAA,aAAa,EAAEI,aAPjB;AAQE,IAAA,oBAAoB,EAAED,oBARxB;AASE,IAAA,QAAQ,EAAED,QATZ;AAUE,IAAA,KAAK,EAAE,EAAE,GAAGqB,yBAAL;AAAoB,SAAGC,uBAAWjB,MAAX,EAAmBe,KAAnB;AAAvB,KAVT;AAWE,IAAA,kBAAkB,EAAEV,kBAXtB;AAYE,IAAA,MAAM,EAAEL,MAZV;AAaE,IAAA,cAAc,EAAEE;AAblB,IAFJ,CAbF,CADF;AAmCD,CAtEM;;;eAwEQf,M","sourcesContent":["import React from 'react';\nimport {\n PressableInputContainer,\n Text,\n TextProps,\n} from '@tecsinapse/react-core';\nimport { useClickAwayListener } from '../../../hooks';\nimport {\n RightComponent,\n StyledContainer,\n StyledInputContainer,\n} from './styled';\nimport { Dropdown } from './Dropdown';\nimport { getDisplayValue } from './functions';\nimport { Transition } from 'react-transition-group';\nimport { defaultStyles, transition } from './animations';\n\nexport interface SelectProps<Data, Type extends 'single' | 'multi'>\n extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onSelect'> {\n options: Data[];\n onSelect: (\n option: Type extends 'single' ? Data | undefined : Data[]\n ) => never | void;\n value: Type extends 'single' ? Data | undefined : Data[];\n type: Type;\n keyExtractor: (t: Data, index?: number) => string;\n labelExtractor: (t: Data) => string;\n placeholder?: string;\n onSearch?: (searchArg: string) => void | never;\n searchBarPlaceholder?: string;\n hideSearchBar?: boolean;\n selectAllLabel?: string;\n disabled?: boolean;\n label?: string;\n anchor?: 'top' | 'bottom';\n displayTextProps?: TextProps;\n}\n\n/** NOTE: For better performance, you should memoize options and handlers */\nexport const Select = <Data, Type extends 'single' | 'multi'>({\n value,\n options,\n keyExtractor,\n onSelect,\n type,\n labelExtractor,\n placeholder,\n onSearch,\n searchBarPlaceholder = 'Busque a opção desejada',\n hideSearchBar = true,\n label,\n disabled = false,\n anchor = 'bottom',\n displayTextProps,\n selectAllLabel = 'Selecionar todos',\n ...rest\n}: SelectProps<Data, Type>): JSX.Element => {\n const [dropDownVisible, setDropDownVisible] = React.useState<boolean>(false);\n const refDropDown = React.useRef(null);\n useClickAwayListener(refDropDown, setDropDownVisible);\n\n const displayValue = getDisplayValue<Data>(\n type,\n value,\n options,\n placeholder,\n keyExtractor,\n labelExtractor\n );\n\n const onPress = React.useCallback(() => setDropDownVisible(prev => !prev), [\n setDropDownVisible,\n ]);\n\n return (\n <StyledContainer ref={refDropDown} {...rest}>\n <StyledInputContainer>\n <PressableInputContainer\n label={label}\n onPress={onPress}\n disabled={disabled}\n rightComponent={RightComponent}\n >\n <Text {...displayTextProps} ellipsizeMode=\"tail\" numberOfLines={1}>\n {displayValue}\n </Text>\n </PressableInputContainer>\n </StyledInputContainer>\n <Transition in={dropDownVisible} timeout={300}>\n {state => (\n <Dropdown\n options={options}\n onSelect={onSelect}\n value={value}\n type={type}\n keyExtractor={keyExtractor}\n labelExtractor={labelExtractor}\n hideSearchBar={hideSearchBar}\n searchBarPlaceholder={searchBarPlaceholder}\n onSearch={onSearch}\n style={{ ...defaultStyles, ...transition[anchor][state] }}\n setDropDownVisible={setDropDownVisible}\n anchor={anchor}\n selectAllLabel={selectAllLabel}\n />\n )}\n </Transition>\n </StyledContainer>\n );\n};\n\nexport default Select;\n"],"file":"Select.js"}
@@ -3,14 +3,14 @@ interface SelectItemProps<Data, Type extends 'single' | 'multi'> {
3
3
  type: Type;
4
4
  value: Type extends 'single' ? Data | undefined : Data[];
5
5
  onSelect: (option: Type extends 'single' ? Data | undefined : Data[]) => never | void;
6
- keyExtractor: (t: Data, index: number) => string;
6
+ keyExtractor: (t: Data, index?: number) => string;
7
7
  labelExtractor: (t: Data) => string;
8
8
  index: number;
9
9
  }
10
- declare const SelectItem: <Data, Type extends "single" | "multi">({ item, onSelect, type, value, labelExtractor, setDropDownVisible, checkedAll, setCheckedAll, lenghtOptions, }: SelectItemProps<Data, Type> & {
10
+ declare const _default: <Data, Type extends "single" | "multi">({ item, onSelect, type, value, labelExtractor, setDropDownVisible, checkedAll, setCheckedAll, lenghtOptions, }: SelectItemProps<Data, Type> & {
11
11
  setDropDownVisible: (t: boolean) => void;
12
12
  checkedAll: boolean;
13
13
  setCheckedAll: (t: boolean) => void;
14
14
  lenghtOptions: number;
15
15
  }) => JSX.Element;
16
- export default SelectItem;
16
+ export default _default;
@@ -34,18 +34,18 @@ const SelectItem = ({
34
34
  }
35
35
  }, [checkedAll]);
36
36
 
37
- const clickItem = item => {
37
+ const clickItem = _react.default.useCallback((item, _value) => {
38
38
  const key = item;
39
39
 
40
- if (Array.isArray(value)) {
40
+ if (Array.isArray(_value)) {
41
41
  const auxChecked = !checked;
42
42
  setChecked(!checked);
43
43
 
44
44
  if (auxChecked) {
45
- onSelect([...value, key]);
46
- [...value, key].length === lenghtOptions && setCheckedAll(true);
45
+ onSelect([..._value, key]);
46
+ [..._value, key].length === lenghtOptions && setCheckedAll(true);
47
47
  } else {
48
- const auxArray = [...value];
48
+ const auxArray = [..._value];
49
49
  const indexToExclude = auxArray.indexOf(key);
50
50
  auxArray.splice(indexToExclude, 1);
51
51
  onSelect([...auxArray]);
@@ -55,13 +55,13 @@ const SelectItem = ({
55
55
  onSelect(key);
56
56
  setDropDownVisible(false);
57
57
  }
58
- };
58
+ }, [onSelect, setDropDownVisible, setCheckedAll, setChecked, checked]);
59
59
 
60
60
  return _react.default.createElement(_styled.ContainerItemSelect, {
61
- onClick: () => clickItem(item)
61
+ onClick: () => clickItem(item, value)
62
62
  }, isMulti && _react.default.createElement(_reactCore.Checkbox, {
63
63
  checked: checked,
64
- onChange: () => clickItem(item)
64
+ onChange: () => clickItem(item, value)
65
65
  }), _react.default.createElement(_styled.StyledContainerTextLabel, null, _react.default.createElement(_reactCore.Text, {
66
66
  fontWeight: "bold",
67
67
  ellipsizeMode: "tail",
@@ -71,6 +71,7 @@ const SelectItem = ({
71
71
  }, labelExtractor(item)))));
72
72
  };
73
73
 
74
- var _default = SelectItem;
74
+ var _default = _react.default.memo(SelectItem);
75
+
75
76
  exports.default = _default;
76
77
  //# sourceMappingURL=SelectItem.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/components/molecules/Select/SelectItem/SelectItem.tsx"],"names":["SelectItem","item","onSelect","type","value","labelExtractor","setDropDownVisible","checkedAll","setCheckedAll","lenghtOptions","isMulti","checked","setChecked","React","useState","undefined","includes","useEffect","clickItem","key","Array","isArray","auxChecked","length","auxArray","indexToExclude","indexOf","splice"],"mappings":";;;;;;;AAAA;;AACA;;AACA;;;;AAkBA,MAAMA,UAAU,GAAG,CAAwC;AACzDC,EAAAA,IADyD;AAEzDC,EAAAA,QAFyD;AAGzDC,EAAAA,IAHyD;AAIzDC,EAAAA,KAJyD;AAKzDC,EAAAA,cALyD;AAMzDC,EAAAA,kBANyD;AAOzDC,EAAAA,UAPyD;AAQzDC,EAAAA,aARyD;AASzDC,EAAAA;AATyD,CAAxC,KAeA;AACjB,QAAMC,OAAO,GAAGP,IAAI,KAAK,OAAzB;;AACA,QAAM,CAACQ,OAAD,EAAUC,UAAV,IAAwBC,eAAMC,QAAN,CAC5BV,KAAK,KAAKW,SAAV,IAAuBZ,IAAI,KAAK,OAAhC,IAA4CC,KAAD,CAAkBY,QAAlB,CAA2Bf,IAA3B,CADf,CAA9B;;AAGAY,iBAAMI,SAAN,CAAgB,MAAM;AACpB,QAAId,IAAI,KAAK,OAAb,EAAsB;AACpBI,MAAAA,UAAU,GACNK,UAAU,CAAC,IAAD,CADJ,GAENA,UAAU,CAAER,KAAD,CAAkBY,QAAlB,CAA2Bf,IAA3B,CAAD,CAFd;AAGD;AACF,GAND,EAMG,CAACM,UAAD,CANH;;AAQA,QAAMW,SAAS,GAAGjB,IAAI,IAAI;AAGxB,UAAMkB,GAAS,GAAGlB,IAAlB;;AACA,QAAImB,KAAK,CAACC,OAAN,CAAcjB,KAAd,CAAJ,EAA0B;AACxB,YAAMkB,UAAU,GAAG,CAACX,OAApB;AACAC,MAAAA,UAAU,CAAC,CAACD,OAAF,CAAV;;AACA,UAAIW,UAAJ,EAAgB;AACdpB,QAAAA,QAAQ,CAAC,CAAC,GAAGE,KAAJ,EAAWe,GAAX,CAAD,CAAR;AACA,SAAC,GAAGf,KAAJ,EAAWe,GAAX,EAAgBI,MAAhB,KAA2Bd,aAA3B,IAA4CD,aAAa,CAAC,IAAD,CAAzD;AACD,OAHD,MAGO;AACL,cAAMgB,QAAgB,GAAG,CAAC,GAAGpB,KAAJ,CAAzB;AACA,cAAMqB,cAAc,GAAGD,QAAQ,CAACE,OAAT,CAAiBP,GAAjB,CAAvB;AACAK,QAAAA,QAAQ,CAACG,MAAT,CAAgBF,cAAhB,EAAgC,CAAhC;AACAvB,QAAAA,QAAQ,CAAC,CAAC,GAAGsB,QAAJ,CAAD,CAAR;AACAhB,QAAAA,aAAa,CAAC,KAAD,CAAb;AACD;AACF,KAbD,MAaO;AACLN,MAAAA,QAAQ,CAACiB,GAAD,CAAR;AACAb,MAAAA,kBAAkB,CAAC,KAAD,CAAlB;AACD;AACF,GArBD;;AAuBA,SACE,6BAAC,2BAAD;AAAqB,IAAA,OAAO,EAAE,MAAMY,SAAS,CAACjB,IAAD;AAA7C,KACGS,OAAO,IACN,6BAAC,mBAAD;AAAU,IAAA,OAAO,EAAEC,OAAnB;AAA4B,IAAA,QAAQ,EAAE,MAAMO,SAAS,CAACjB,IAAD;AAArD,IAFJ,EAIE,6BAAC,gCAAD,QACE,6BAAC,eAAD;AAAM,IAAA,UAAU,EAAC,MAAjB;AAAwB,IAAA,aAAa,EAAC,MAAtC;AAA6C,IAAA,aAAa,EAAE;AAA5D,KACE,6BAAC,kBAAD;AAAY,IAAA,cAAc,EAAEE,IAAI,KAAK,QAAT,IAAqBC,KAAK,KAAKH;AAA3D,KACGI,cAAc,CAACJ,IAAD,CADjB,CADF,CADF,CAJF,CADF;AAcD,CAjED;;eAmEeD,U","sourcesContent":["import React from 'react';\nimport { Checkbox, Text } from '@tecsinapse/react-core';\nimport {\n ContainerItemSelect,\n StyledContainerTextLabel,\n StyledSpan,\n} from './styled';\n\ninterface SelectItemProps<Data, Type extends 'single' | 'multi'> {\n item: Data;\n type: Type;\n value: Type extends 'single' ? Data | undefined : Data[];\n onSelect: (\n option: Type extends 'single' ? Data | undefined : Data[]\n ) => never | void;\n keyExtractor: (t: Data, index: number) => string;\n labelExtractor: (t: Data) => string;\n index: number;\n}\n\nconst SelectItem = <Data, Type extends 'single' | 'multi'>({\n item,\n onSelect,\n type,\n value,\n labelExtractor,\n setDropDownVisible,\n checkedAll,\n setCheckedAll,\n lenghtOptions,\n}: SelectItemProps<Data, Type> & {\n setDropDownVisible: (t: boolean) => void;\n checkedAll: boolean;\n setCheckedAll: (t: boolean) => void;\n lenghtOptions: number;\n}): JSX.Element => {\n const isMulti = type === 'multi';\n const [checked, setChecked] = React.useState<boolean>(\n value !== undefined && type === 'multi' && (value as Data[]).includes(item)\n );\n React.useEffect(() => {\n if (type === 'multi') {\n checkedAll\n ? setChecked(true)\n : setChecked((value as Data[]).includes(item));\n }\n }, [checkedAll]);\n\n const clickItem = item => {\n // TS Workaround since TS won't infer the ternary operator's result type correctly\n type OnSelectArg = Parameters<typeof onSelect>[0];\n const key: Data = item;\n if (Array.isArray(value)) {\n const auxChecked = !checked;\n setChecked(!checked);\n if (auxChecked) {\n onSelect([...value, key] as OnSelectArg);\n [...value, key].length === lenghtOptions && setCheckedAll(true);\n } else {\n const auxArray: Data[] = [...value];\n const indexToExclude = auxArray.indexOf(key);\n auxArray.splice(indexToExclude, 1);\n onSelect([...auxArray] as OnSelectArg);\n setCheckedAll(false);\n }\n } else {\n onSelect(key as OnSelectArg);\n setDropDownVisible(false);\n }\n };\n\n return (\n <ContainerItemSelect onClick={() => clickItem(item)}>\n {isMulti && (\n <Checkbox checked={checked} onChange={() => clickItem(item)} />\n )}\n <StyledContainerTextLabel>\n <Text fontWeight=\"bold\" ellipsizeMode=\"tail\" numberOfLines={1}>\n <StyledSpan singleHighligh={type === 'single' && value === item}>\n {labelExtractor(item)}\n </StyledSpan>\n </Text>\n </StyledContainerTextLabel>\n </ContainerItemSelect>\n );\n};\n\nexport default SelectItem;\n"],"file":"SelectItem.js"}
1
+ {"version":3,"sources":["../../../../../src/components/molecules/Select/SelectItem/SelectItem.tsx"],"names":["SelectItem","item","onSelect","type","value","labelExtractor","setDropDownVisible","checkedAll","setCheckedAll","lenghtOptions","isMulti","checked","setChecked","React","useState","undefined","includes","useEffect","clickItem","useCallback","_value","key","Array","isArray","auxChecked","length","auxArray","indexToExclude","indexOf","splice","memo"],"mappings":";;;;;;;AAAA;;AACA;;AACA;;;;AAkBA,MAAMA,UAAU,GAAG,CAAwC;AACzDC,EAAAA,IADyD;AAEzDC,EAAAA,QAFyD;AAGzDC,EAAAA,IAHyD;AAIzDC,EAAAA,KAJyD;AAKzDC,EAAAA,cALyD;AAMzDC,EAAAA,kBANyD;AAOzDC,EAAAA,UAPyD;AAQzDC,EAAAA,aARyD;AASzDC,EAAAA;AATyD,CAAxC,KAeA;AACjB,QAAMC,OAAO,GAAGP,IAAI,KAAK,OAAzB;;AACA,QAAM,CAACQ,OAAD,EAAUC,UAAV,IAAwBC,eAAMC,QAAN,CAC5BV,KAAK,KAAKW,SAAV,IAAuBZ,IAAI,KAAK,OAAhC,IAA4CC,KAAD,CAAkBY,QAAlB,CAA2Bf,IAA3B,CADf,CAA9B;;AAGAY,iBAAMI,SAAN,CAAgB,MAAM;AACpB,QAAId,IAAI,KAAK,OAAb,EAAsB;AACpBI,MAAAA,UAAU,GACNK,UAAU,CAAC,IAAD,CADJ,GAENA,UAAU,CAAER,KAAD,CAAkBY,QAAlB,CAA2Bf,IAA3B,CAAD,CAFd;AAGD;AACF,GAND,EAMG,CAACM,UAAD,CANH;;AAQA,QAAMW,SAAS,GAAGL,eAAMM,WAAN,CAChB,CAAClB,IAAD,EAAOmB,MAAP,KAAkB;AAGhB,UAAMC,GAAS,GAAGpB,IAAlB;;AACA,QAAIqB,KAAK,CAACC,OAAN,CAAcH,MAAd,CAAJ,EAA2B;AACzB,YAAMI,UAAU,GAAG,CAACb,OAApB;AACAC,MAAAA,UAAU,CAAC,CAACD,OAAF,CAAV;;AACA,UAAIa,UAAJ,EAAgB;AACdtB,QAAAA,QAAQ,CAAC,CAAC,GAAGkB,MAAJ,EAAYC,GAAZ,CAAD,CAAR;AACA,SAAC,GAAGD,MAAJ,EAAYC,GAAZ,EAAiBI,MAAjB,KAA4BhB,aAA5B,IAA6CD,aAAa,CAAC,IAAD,CAA1D;AACD,OAHD,MAGO;AACL,cAAMkB,QAAgB,GAAG,CAAC,GAAGN,MAAJ,CAAzB;AACA,cAAMO,cAAc,GAAGD,QAAQ,CAACE,OAAT,CAAiBP,GAAjB,CAAvB;AACAK,QAAAA,QAAQ,CAACG,MAAT,CAAgBF,cAAhB,EAAgC,CAAhC;AACAzB,QAAAA,QAAQ,CAAC,CAAC,GAAGwB,QAAJ,CAAD,CAAR;AACAlB,QAAAA,aAAa,CAAC,KAAD,CAAb;AACD;AACF,KAbD,MAaO;AACLN,MAAAA,QAAQ,CAACmB,GAAD,CAAR;AACAf,MAAAA,kBAAkB,CAAC,KAAD,CAAlB;AACD;AACF,GAtBe,EAuBhB,CAACJ,QAAD,EAAWI,kBAAX,EAA+BE,aAA/B,EAA8CI,UAA9C,EAA0DD,OAA1D,CAvBgB,CAAlB;;AA0BA,SACE,6BAAC,2BAAD;AAAqB,IAAA,OAAO,EAAE,MAAMO,SAAS,CAACjB,IAAD,EAAOG,KAAP;AAA7C,KACGM,OAAO,IACN,6BAAC,mBAAD;AAAU,IAAA,OAAO,EAAEC,OAAnB;AAA4B,IAAA,QAAQ,EAAE,MAAMO,SAAS,CAACjB,IAAD,EAAOG,KAAP;AAArD,IAFJ,EAIE,6BAAC,gCAAD,QACE,6BAAC,eAAD;AAAM,IAAA,UAAU,EAAC,MAAjB;AAAwB,IAAA,aAAa,EAAC,MAAtC;AAA6C,IAAA,aAAa,EAAE;AAA5D,KACE,6BAAC,kBAAD;AAAY,IAAA,cAAc,EAAED,IAAI,KAAK,QAAT,IAAqBC,KAAK,KAAKH;AAA3D,KACGI,cAAc,CAACJ,IAAD,CADjB,CADF,CADF,CAJF,CADF;AAcD,CApED;;eAsEeY,eAAMiB,IAAN,CAAW9B,UAAX,C","sourcesContent":["import React from 'react';\nimport { Checkbox, Text } from '@tecsinapse/react-core';\nimport {\n ContainerItemSelect,\n StyledContainerTextLabel,\n StyledSpan,\n} from './styled';\n\ninterface SelectItemProps<Data, Type extends 'single' | 'multi'> {\n item: Data;\n type: Type;\n value: Type extends 'single' ? Data | undefined : Data[];\n onSelect: (\n option: Type extends 'single' ? Data | undefined : Data[]\n ) => never | void;\n keyExtractor: (t: Data, index?: number) => string;\n labelExtractor: (t: Data) => string;\n index: number;\n}\n\nconst SelectItem = <Data, Type extends 'single' | 'multi'>({\n item,\n onSelect,\n type,\n value,\n labelExtractor,\n setDropDownVisible,\n checkedAll,\n setCheckedAll,\n lenghtOptions,\n}: SelectItemProps<Data, Type> & {\n setDropDownVisible: (t: boolean) => void;\n checkedAll: boolean;\n setCheckedAll: (t: boolean) => void;\n lenghtOptions: number;\n}): JSX.Element => {\n const isMulti = type === 'multi';\n const [checked, setChecked] = React.useState<boolean>(\n value !== undefined && type === 'multi' && (value as Data[]).includes(item)\n );\n React.useEffect(() => {\n if (type === 'multi') {\n checkedAll\n ? setChecked(true)\n : setChecked((value as Data[]).includes(item));\n }\n }, [checkedAll]);\n\n const clickItem = React.useCallback(\n (item, _value) => {\n // TS Workaround since TS won't infer the ternary operator's result type correctly\n type OnSelectArg = Parameters<typeof onSelect>[0];\n const key: Data = item;\n if (Array.isArray(_value)) {\n const auxChecked = !checked;\n setChecked(!checked);\n if (auxChecked) {\n onSelect([..._value, key] as OnSelectArg);\n [..._value, key].length === lenghtOptions && setCheckedAll(true);\n } else {\n const auxArray: Data[] = [..._value];\n const indexToExclude = auxArray.indexOf(key);\n auxArray.splice(indexToExclude, 1);\n onSelect([...auxArray] as OnSelectArg);\n setCheckedAll(false);\n }\n } else {\n onSelect(key as OnSelectArg);\n setDropDownVisible(false);\n }\n },\n [onSelect, setDropDownVisible, setCheckedAll, setChecked, checked]\n );\n\n return (\n <ContainerItemSelect onClick={() => clickItem(item, value)}>\n {isMulti && (\n <Checkbox checked={checked} onChange={() => clickItem(item, value)} />\n )}\n <StyledContainerTextLabel>\n <Text fontWeight=\"bold\" ellipsizeMode=\"tail\" numberOfLines={1}>\n <StyledSpan singleHighligh={type === 'single' && value === item}>\n {labelExtractor(item)}\n </StyledSpan>\n </Text>\n </StyledContainerTextLabel>\n </ContainerItemSelect>\n );\n};\n\nexport default React.memo(SelectItem) as typeof SelectItem;\n"],"file":"SelectItem.js"}
@@ -1 +1 @@
1
- export declare const getDisplayValue: <Data>(type: any, value: any, options: any, placeholder: any, keyExtractor: any, labelExtractor: any) => Data | Data[];
1
+ export declare const getDisplayValue: <Data>(type: 'multi' | 'single', value: Data | Data[] | undefined, options: Data[], placeholder: string | undefined, keyExtractor: (option: Data, idx?: number | undefined) => string, labelExtractor: (option: Data) => string) => string | Data | Data[] | undefined;
@@ -8,7 +8,7 @@ exports.getDisplayValue = void 0;
8
8
  const getDisplayValue = (type, value, options, placeholder, keyExtractor, labelExtractor) => {
9
9
  if (type === 'multi') {
10
10
  if (value.length === 0) return placeholder;else {
11
- return options.reduce((acc, option, index) => value.find(key => keyExtractor(option, index) == keyExtractor(key, index)) ? acc + labelExtractor(option) + ', ' : acc, '').slice(0, -2);
11
+ return value.reduce((acc, option) => acc + labelExtractor(option) + ', ', '').slice(0, -2);
12
12
  }
13
13
  } else {
14
14
  if (value === undefined) return placeholder;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/molecules/Select/functions.ts"],"names":["getDisplayValue","type","value","options","placeholder","keyExtractor","labelExtractor","length","reduce","acc","option","index","find","key","slice","undefined","selectedOption"],"mappings":";;;;;;;AAAO,MAAMA,eAAe,GAAG,CAC7BC,IAD6B,EAE7BC,KAF6B,EAG7BC,OAH6B,EAI7BC,WAJ6B,EAK7BC,YAL6B,EAM7BC,cAN6B,KAOX;AAClB,MAAIL,IAAI,KAAK,OAAb,EAAsB;AACpB,QAAIC,KAAK,CAACK,MAAN,KAAiB,CAArB,EAAwB,OAAOH,WAAP,CAAxB,KACK;AACH,aAAOD,OAAO,CACXK,MADI,CAEH,CAACC,GAAD,EAAMC,MAAN,EAAcC,KAAd,KACET,KAAK,CAACU,IAAN,CACEC,GAAG,IAAIR,YAAY,CAACK,MAAD,EAASC,KAAT,CAAZ,IAA+BN,YAAY,CAACQ,GAAD,EAAMF,KAAN,CADpD,IAGIF,GAAG,GAAGH,cAAc,CAACI,MAAD,CAApB,GAA+B,IAHnC,GAIID,GAPH,EAQH,EARG,EAUJK,KAVI,CAUE,CAVF,EAUK,CAAC,CAVN,CAAP;AAWD;AACF,GAfD,MAeO;AACL,QAAIZ,KAAK,KAAKa,SAAd,EAAyB,OAAOX,WAAP;AACzB,UAAMY,cAAc,GAAGb,OAAO,CAACS,IAAR,CACrB,CAACF,MAAD,EAASC,KAAT,KACEN,YAAY,CAACK,MAAD,EAASC,KAAT,CAAZ,IAA+BN,YAAY,CAACH,KAAD,EAAgBS,KAAhB,CAFxB,CAAvB;AAIA,WAAOK,cAAc,GAAGV,cAAc,CAACU,cAAD,CAAjB,GAAoCZ,WAAzD;AACD;AACF,CA/BM","sourcesContent":["export const getDisplayValue = <Data>(\n type,\n value,\n options,\n placeholder,\n keyExtractor,\n labelExtractor\n): Data | Data[] => {\n if (type === 'multi') {\n if (value.length === 0) return placeholder;\n else {\n return options\n .reduce(\n (acc, option, index) =>\n value.find(\n key => keyExtractor(option, index) == keyExtractor(key, index)\n )\n ? acc + labelExtractor(option) + ', '\n : acc,\n ''\n )\n .slice(0, -2);\n }\n } else {\n if (value === undefined) return placeholder;\n const selectedOption = options.find(\n (option, index) =>\n keyExtractor(option, index) == keyExtractor(value as Data, index)\n );\n return selectedOption ? labelExtractor(selectedOption) : placeholder;\n }\n};\n"],"file":"functions.js"}
1
+ {"version":3,"sources":["../../../../src/components/molecules/Select/functions.ts"],"names":["getDisplayValue","type","value","options","placeholder","keyExtractor","labelExtractor","length","reduce","acc","option","slice","undefined","selectedOption","find","index"],"mappings":";;;;;;;AAAO,MAAMA,eAAe,GAAG,CAC7BC,IAD6B,EAE7BC,KAF6B,EAG7BC,OAH6B,EAI7BC,WAJ6B,EAK7BC,YAL6B,EAM7BC,cAN6B,KAOU;AACvC,MAAIL,IAAI,KAAK,OAAb,EAAsB;AACpB,QAAKC,KAAD,CAAkBK,MAAlB,KAA6B,CAAjC,EAAoC,OAAOH,WAAP,CAApC,KACK;AACH,aAAQF,KAAD,CACJM,MADI,CACG,CAACC,GAAD,EAAMC,MAAN,KAAiBD,GAAG,GAAGH,cAAc,CAACI,MAAD,CAApB,GAA+B,IADnD,EACyD,EADzD,EAEJC,KAFI,CAEE,CAFF,EAEK,CAAC,CAFN,CAAP;AAGD;AACF,GAPD,MAOO;AACL,QAAIT,KAAK,KAAKU,SAAd,EAAyB,OAAOR,WAAP;AACzB,UAAMS,cAAc,GAAGV,OAAO,CAACW,IAAR,CACrB,CAACJ,MAAD,EAASK,KAAT,KACEV,YAAY,CAACK,MAAD,EAASK,KAAT,CAAZ,IAA+BV,YAAY,CAACH,KAAD,EAAgBa,KAAhB,CAFxB,CAAvB;AAIA,WAAOF,cAAc,GAAGP,cAAc,CAACO,cAAD,CAAjB,GAAoCT,WAAzD;AACD;AACF,CAvBM","sourcesContent":["export const getDisplayValue = <Data>(\n type: 'multi' | 'single',\n value: Data | Data[] | undefined,\n options: Data[],\n placeholder: string | undefined,\n keyExtractor: (option: Data, idx?: number) => string,\n labelExtractor: (option: Data) => string\n): Data | Data[] | string | undefined => {\n if (type === 'multi') {\n if ((value as Data[]).length === 0) return placeholder;\n else {\n return (value as Data[])\n .reduce((acc, option) => acc + labelExtractor(option) + ', ', '')\n .slice(0, -2);\n }\n } else {\n if (value === undefined) return placeholder;\n const selectedOption = options.find(\n (option, index) =>\n keyExtractor(option, index) == keyExtractor(value as Data, index)\n );\n return selectedOption ? labelExtractor(selectedOption) : placeholder;\n }\n};\n"],"file":"functions.js"}
@@ -1,3 +1,4 @@
1
- /// <reference types="react" />
2
- export declare const StyledContainer: import("@emotion/styled").StyledComponent<any, import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
3
- export declare const StyledInputContainer: import("@emotion/styled").StyledComponent<any, import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
1
+ import React from 'react';
2
+ export declare const StyledContainer: import("@emotion/styled").StyledComponent<any, React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
3
+ export declare const StyledInputContainer: import("@emotion/styled").StyledComponent<any, React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
4
+ export declare const RightComponent: JSX.Element;
@@ -3,10 +3,14 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.StyledInputContainer = exports.StyledContainer = void 0;
6
+ exports.RightComponent = exports.StyledInputContainer = exports.StyledContainer = void 0;
7
7
 
8
8
  var _styled = _interopRequireDefault(require("@emotion/styled"));
9
9
 
10
+ var _reactCore = require("@tecsinapse/react-core");
11
+
12
+ var _react = _interopRequireDefault(require("react"));
13
+
10
14
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
15
 
12
16
  const StyledContainer = (0, _styled.default)('div')`
@@ -22,4 +26,15 @@ const StyledInputContainer = (0, _styled.default)('div')`
22
26
  width: 100%;
23
27
  `;
24
28
  exports.StyledInputContainer = StyledInputContainer;
29
+
30
+ const RightComponent = _react.default.createElement(_reactCore.Icon, {
31
+ name: "chevron-down",
32
+ type: "material-community",
33
+ size: "centi",
34
+ style: {
35
+ marginRight: 12
36
+ }
37
+ });
38
+
39
+ exports.RightComponent = RightComponent;
25
40
  //# sourceMappingURL=styled.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/molecules/Select/styled.ts"],"names":["StyledContainer","StyledInputContainer"],"mappings":";;;;;;;AAAA;;;;AAGO,MAAMA,eAAe,GAAG,qBAAO,KAAP,CAAmC;AAClE;AACA;AACA;AACA;AACA;AACA;AACA,CAPO;;AASA,MAAMC,oBAAoB,GAAG,qBAAO,KAAP,CAAmC;AACvE;AACA,CAFO","sourcesContent":["import styled from '@emotion/styled';\nimport { StyleProps } from '@tecsinapse/react-core';\n\nexport const StyledContainer = styled('div')<Partial<StyleProps>>`\n display: flex;\n justify-content: center;\n align-items: center;\n flex-direction: column;\n width: 100%;\n position: relative;\n`;\n\nexport const StyledInputContainer = styled('div')<Partial<StyleProps>>`\n width: 100%;\n`;\n"],"file":"styled.js"}
1
+ {"version":3,"sources":["../../../../src/components/molecules/Select/styled.tsx"],"names":["StyledContainer","StyledInputContainer","RightComponent","marginRight"],"mappings":";;;;;;;AAAA;;AACA;;AACA;;;;AAEO,MAAMA,eAAe,GAAG,qBAAO,KAAP,CAAmC;AAClE;AACA;AACA;AACA;AACA;AACA;AACA,CAPO;;AASA,MAAMC,oBAAoB,GAAG,qBAAO,KAAP,CAAmC;AACvE;AACA,CAFO;;;AAIA,MAAMC,cAAc,GACzB,6BAAC,eAAD;AACE,EAAA,IAAI,EAAC,cADP;AAEE,EAAA,IAAI,EAAC,oBAFP;AAGE,EAAA,IAAI,EAAC,OAHP;AAIE,EAAA,KAAK,EAAE;AAAEC,IAAAA,WAAW,EAAE;AAAf;AAJT,EADK","sourcesContent":["import styled from '@emotion/styled';\nimport { Icon, StyleProps } from '@tecsinapse/react-core';\nimport React from 'react';\n\nexport const StyledContainer = styled('div')<Partial<StyleProps>>`\n display: flex;\n justify-content: center;\n align-items: center;\n flex-direction: column;\n width: 100%;\n position: relative;\n`;\n\nexport const StyledInputContainer = styled('div')<Partial<StyleProps>>`\n width: 100%;\n`;\n\nexport const RightComponent = (\n <Icon\n name=\"chevron-down\"\n type=\"material-community\"\n size=\"centi\"\n style={{ marginRight: 12 }}\n />\n);\n"],"file":"styled.js"}
@@ -1,6 +1,5 @@
1
1
  import { FC } from 'react';
2
2
  import { TextAreaProps as ITACore } from '@tecsinapse/react-core';
3
- export interface TextAreaProps extends Omit<ITACore, 'TextComponent' | 'focused'> {
4
- }
3
+ export declare type TextAreaProps = Omit<ITACore, 'TextComponent' | 'focused'>;
5
4
  declare const TextArea: FC<TextAreaProps>;
6
5
  export default TextArea;