@tecsinapse/react-web-kit 1.7.8 → 1.8.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.
Files changed (49) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/dist/components/atoms/Accordion/Accordion.d.ts +1 -1
  3. package/dist/components/atoms/Accordion/Accordion.js +3 -2
  4. package/dist/components/atoms/Accordion/Accordion.js.map +1 -1
  5. package/dist/components/atoms/Modal/Modal.d.ts +2 -3
  6. package/dist/components/atoms/Modal/Modal.js +6 -3
  7. package/dist/components/atoms/Modal/Modal.js.map +1 -1
  8. package/dist/components/molecules/Breadcrumbs/Breadcrumbs.d.ts +2 -2
  9. package/dist/components/molecules/Breadcrumbs/Breadcrumbs.js +3 -2
  10. package/dist/components/molecules/Breadcrumbs/Breadcrumbs.js.map +1 -1
  11. package/dist/components/molecules/Drawer/Drawer.d.ts +4 -3
  12. package/dist/components/molecules/Drawer/Drawer.js +10 -4
  13. package/dist/components/molecules/Drawer/Drawer.js.map +1 -1
  14. package/dist/components/molecules/Drawer/animations.d.ts +3 -12
  15. package/dist/components/molecules/Drawer/animations.js +1 -1
  16. package/dist/components/molecules/Drawer/animations.js.map +1 -1
  17. package/dist/components/molecules/Menubar/Menubar.d.ts +1 -1
  18. package/dist/components/molecules/Menubar/Menubar.js +7 -3
  19. package/dist/components/molecules/Menubar/Menubar.js.map +1 -1
  20. package/dist/components/molecules/Select/Dropdown/Dropdown.d.ts +1 -3
  21. package/dist/components/molecules/Select/Dropdown/Dropdown.js +6 -4
  22. package/dist/components/molecules/Select/Dropdown/Dropdown.js.map +1 -1
  23. package/dist/components/molecules/Select/Dropdown/styled.d.ts +1 -1
  24. package/dist/components/molecules/Select/Dropdown/styled.js +26 -10
  25. package/dist/components/molecules/Select/Dropdown/styled.js.map +1 -1
  26. package/dist/components/molecules/Select/Select.d.ts +7 -2
  27. package/dist/components/molecules/Select/Select.js +15 -8
  28. package/dist/components/molecules/Select/Select.js.map +1 -1
  29. package/dist/components/molecules/Select/SelectItem/SelectItem.js +1 -1
  30. package/dist/components/molecules/Select/SelectItem/SelectItem.js.map +1 -1
  31. package/dist/components/molecules/Select/animations.d.ts +42 -18
  32. package/dist/components/molecules/Select/animations.js +42 -18
  33. package/dist/components/molecules/Select/animations.js.map +1 -1
  34. package/dist/components/organisms/DataGrid/DataGrid.d.ts +3 -4
  35. package/dist/components/organisms/DataGrid/DataGrid.js +3 -5
  36. package/dist/components/organisms/DataGrid/DataGrid.js.map +1 -1
  37. package/package.json +4 -3
  38. package/src/components/atoms/Accordion/Accordion.tsx +3 -2
  39. package/src/components/atoms/Modal/Modal.tsx +10 -4
  40. package/src/components/molecules/Breadcrumbs/Breadcrumbs.tsx +3 -3
  41. package/src/components/molecules/Drawer/Drawer.tsx +13 -5
  42. package/src/components/molecules/Drawer/animations.ts +9 -3
  43. package/src/components/molecules/Menubar/Menubar.tsx +5 -7
  44. package/src/components/molecules/Select/Dropdown/Dropdown.tsx +10 -6
  45. package/src/components/molecules/Select/Dropdown/styled.ts +32 -13
  46. package/src/components/molecules/Select/Select.tsx +22 -6
  47. package/src/components/molecules/Select/SelectItem/SelectItem.tsx +1 -1
  48. package/src/components/molecules/Select/animations.ts +31 -7
  49. package/src/components/organisms/DataGrid/DataGrid.tsx +5 -6
@@ -1,4 +1,6 @@
1
- export interface SelectProps<Data, Type extends 'single' | 'multi'> {
1
+ import React from 'react';
2
+ import { TextProps } from '@tecsinapse/react-core';
3
+ export interface SelectProps<Data, Type extends 'single' | 'multi'> extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onSelect'> {
2
4
  options: Data[];
3
5
  onSelect: (option: Type extends 'single' ? Data | undefined : Data[]) => never | void;
4
6
  value: Type extends 'single' ? Data | undefined : Data[];
@@ -9,7 +11,10 @@ export interface SelectProps<Data, Type extends 'single' | 'multi'> {
9
11
  onSearch?: (searchArg: string) => void | never;
10
12
  searchBarPlaceholder?: string;
11
13
  hideSearchBar?: boolean;
14
+ disabled?: boolean;
12
15
  label?: string;
16
+ anchor?: 'top' | 'bottom';
17
+ displayTextProps?: TextProps;
13
18
  }
14
- export declare const Select: <Data, Type extends "single" | "multi">({ value, options, keyExtractor, onSelect, type, labelExtractor, placeholder, onSearch, hideSearchBar, label, ...rest }: SelectProps<Data, Type>) => JSX.Element;
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;
15
20
  export default Select;
@@ -34,8 +34,12 @@ const Select = ({
34
34
  labelExtractor,
35
35
  placeholder,
36
36
  onSearch,
37
+ searchBarPlaceholder,
37
38
  hideSearchBar = true,
38
39
  label,
40
+ disabled = false,
41
+ anchor = 'bottom',
42
+ displayTextProps,
39
43
  ...rest
40
44
  }) => {
41
45
  const [dropDownVisible, setDropDownVisible] = _react.default.useState(false);
@@ -44,12 +48,12 @@ const Select = ({
44
48
 
45
49
  (0, _hooks.useClickAwayListener)(refDropDown, setDropDownVisible);
46
50
  const displayValue = (0, _functions.getDisplayValue)(type, value, options, placeholder, keyExtractor, labelExtractor);
47
- return _react.default.createElement(_styled.StyledContainer, {
51
+ return _react.default.createElement(_styled.StyledContainer, _extends({
48
52
  ref: refDropDown
49
- }, _react.default.createElement(_styled.StyledInputContainer, null, _react.default.createElement(_reactCore.PressableInputContainer, _extends({
50
- label: label
51
- }, rest, {
53
+ }, rest), _react.default.createElement(_styled.StyledInputContainer, null, _react.default.createElement(_reactCore.PressableInputContainer, {
54
+ label: label,
52
55
  onPress: () => setDropDownVisible(!dropDownVisible),
56
+ disabled: disabled,
53
57
  rightComponent: _react.default.createElement(_reactCore.Icon, {
54
58
  name: "chevron-down",
55
59
  type: "material-community",
@@ -58,10 +62,10 @@ const Select = ({
58
62
  marginRight: 12
59
63
  }
60
64
  })
61
- }), _react.default.createElement(_reactCore.Text, {
65
+ }, _react.default.createElement(_reactCore.Text, _extends({}, displayTextProps, {
62
66
  ellipsizeMode: "tail",
63
67
  numberOfLines: 1
64
- }, displayValue))), _react.default.createElement(_reactTransitionGroup.Transition, {
68
+ }), displayValue))), _react.default.createElement(_reactTransitionGroup.Transition, {
65
69
  in: dropDownVisible,
66
70
  timeout: 300
67
71
  }, state => _react.default.createElement(_Dropdown.Dropdown, {
@@ -72,10 +76,13 @@ const Select = ({
72
76
  keyExtractor: keyExtractor,
73
77
  labelExtractor: labelExtractor,
74
78
  hideSearchBar: hideSearchBar,
79
+ searchBarPlaceholder: searchBarPlaceholder,
80
+ onSearch: onSearch,
75
81
  style: { ..._animations.defaultStyles,
76
- ..._animations.transition[state]
82
+ ..._animations.transition[anchor][state]
77
83
  },
78
- setDropDownVisible: setDropDownVisible
84
+ setDropDownVisible: setDropDownVisible,
85
+ anchor: anchor
79
86
  })));
80
87
  };
81
88
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/molecules/Select/Select.tsx"],"names":["Select","value","options","keyExtractor","onSelect","type","labelExtractor","placeholder","onSearch","hideSearchBar","label","rest","dropDownVisible","setDropDownVisible","React","useState","refDropDown","useRef","displayValue","marginRight","state","defaultStyles","transition"],"mappings":";;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;;;AAkBO,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,aAAa,GAAG,IAT4C;AAU5DC,EAAAA,KAV4D;AAW5D,KAAGC;AAXyD,CAAxC,KAYsB;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,gCACnBb,IADmB,EAEnBJ,KAFmB,EAGnBC,OAHmB,EAInBK,WAJmB,EAKnBJ,YALmB,EAMnBG,cANmB,CAArB;AASA,SACE,6BAAC,uBAAD;AAAiB,IAAA,GAAG,EAAEU;AAAtB,KACE,6BAAC,4BAAD,QACE,6BAAC,kCAAD;AACE,IAAA,KAAK,EAAEN;AADT,KAEMC,IAFN;AAGE,IAAA,OAAO,EAAE,MAAME,kBAAkB,CAAC,CAACD,eAAF,CAHnC;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;AAAEO,QAAAA,WAAW,EAAE;AAAf;AAJT;AALJ,MAaE,6BAAC,eAAD;AAAM,IAAA,aAAa,EAAC,MAApB;AAA2B,IAAA,aAAa,EAAE;AAA1C,KACGD,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,EAAElB,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,EAAEG,aAPjB;AAQE,IAAA,KAAK,EAAE,EAAE,GAAGY,yBAAL;AAAoB,SAAGC,uBAAWF,KAAX;AAAvB,KART;AASE,IAAA,kBAAkB,EAAEP;AATtB,IAFJ,CApBF,CADF;AAsCD,CAhEM;;;eAkEQb,M","sourcesContent":["import React from 'react';\nimport { Icon, PressableInputContainer, Text } 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 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 label?: string;\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 hideSearchBar = true,\n label,\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}>\n <StyledInputContainer>\n <PressableInputContainer\n label={label}\n {...rest}\n onPress={() => setDropDownVisible(!dropDownVisible)}\n rightComponent={\n <Icon\n name=\"chevron-down\"\n type=\"material-community\"\n size=\"centi\"\n style={{ marginRight: 12 }}\n />\n }\n >\n <Text 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 style={{ ...defaultStyles, ...transition[state] }}\n setDropDownVisible={setDropDownVisible}\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","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"}
@@ -45,7 +45,7 @@ const SelectItem = ({
45
45
  onSelect([...value, key]);
46
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]);
@@ -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,GAAGpB,KAAzB;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","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"}
@@ -4,24 +4,48 @@ export declare const defaultStyles: {
4
4
  visibility: string;
5
5
  };
6
6
  export declare const transition: {
7
- entering: {
8
- transform: string;
9
- opacity: number;
10
- visibility: string;
7
+ bottom: {
8
+ entering: {
9
+ transform: string;
10
+ opacity: number;
11
+ visibility: string;
12
+ };
13
+ entered: {
14
+ transform: string;
15
+ opacity: number;
16
+ visibility: string;
17
+ };
18
+ exiting: {
19
+ transform: string;
20
+ opacity: number;
21
+ visibility: string;
22
+ };
23
+ exited: {
24
+ transform: string;
25
+ opacity: number;
26
+ visibility: string;
27
+ };
11
28
  };
12
- entered: {
13
- transform: string;
14
- opacity: number;
15
- visibility: string;
16
- };
17
- exiting: {
18
- transform: string;
19
- opacity: number;
20
- visibility: string;
21
- };
22
- exited: {
23
- transform: string;
24
- opacity: number;
25
- visibility: string;
29
+ top: {
30
+ entering: {
31
+ transform: string;
32
+ opacity: number;
33
+ visibility: string;
34
+ };
35
+ entered: {
36
+ transform: string;
37
+ opacity: number;
38
+ visibility: string;
39
+ };
40
+ exiting: {
41
+ transform: string;
42
+ opacity: number;
43
+ visibility: string;
44
+ };
45
+ exited: {
46
+ transform: string;
47
+ opacity: number;
48
+ visibility: string;
49
+ };
26
50
  };
27
51
  };
@@ -11,25 +11,49 @@ const defaultStyles = {
11
11
  };
12
12
  exports.defaultStyles = defaultStyles;
13
13
  const transition = {
14
- entering: {
15
- transform: 'translateY(-10%)',
16
- opacity: 0,
17
- visibility: 'hidden'
14
+ bottom: {
15
+ entering: {
16
+ transform: 'translateY(-10%)',
17
+ opacity: 0,
18
+ visibility: 'hidden'
19
+ },
20
+ entered: {
21
+ transform: 'translateY(0%)',
22
+ opacity: 1,
23
+ visibility: 'visible'
24
+ },
25
+ exiting: {
26
+ transform: 'translateY(0%)',
27
+ opacity: 1,
28
+ visibility: 'visible'
29
+ },
30
+ exited: {
31
+ transform: 'translateY(-10%)',
32
+ opacity: 0,
33
+ visibility: 'hidden'
34
+ }
18
35
  },
19
- entered: {
20
- transform: 'translateY(0%)',
21
- opacity: 1,
22
- visibility: 'visible'
23
- },
24
- exiting: {
25
- transform: 'translateY(0%)',
26
- opacity: 1,
27
- visibility: 'visible'
28
- },
29
- exited: {
30
- transform: 'translateY(-10%)',
31
- opacity: 0,
32
- visibility: 'hidden'
36
+ top: {
37
+ entering: {
38
+ transform: 'translateY(10%)',
39
+ opacity: 0,
40
+ visibility: 'hidden'
41
+ },
42
+ entered: {
43
+ transform: 'translateY(0%)',
44
+ opacity: 1,
45
+ visibility: 'visible'
46
+ },
47
+ exiting: {
48
+ transform: 'translateY(0%)',
49
+ opacity: 1,
50
+ visibility: 'visible'
51
+ },
52
+ exited: {
53
+ transform: 'translateY(10%)',
54
+ opacity: 0,
55
+ visibility: 'hidden'
56
+ }
33
57
  }
34
58
  };
35
59
  exports.transition = transition;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/molecules/Select/animations.ts"],"names":["defaultStyles","transition","overflow","visibility","entering","transform","opacity","entered","exiting","exited"],"mappings":";;;;;;AAAO,MAAMA,aAAa,GAAG;AAC3BC,EAAAA,UAAU,EAAE,CACV,sFADU,CADe;AAI3BC,EAAAA,QAAQ,EAAE,QAJiB;AAK3BC,EAAAA,UAAU,EAAE;AALe,CAAtB;;AAQA,MAAMF,UAAU,GAAG;AACxBG,EAAAA,QAAQ,EAAE;AACRC,IAAAA,SAAS,EAAE,kBADH;AAERC,IAAAA,OAAO,EAAE,CAFD;AAGRH,IAAAA,UAAU,EAAE;AAHJ,GADc;AAMxBI,EAAAA,OAAO,EAAE;AAAEF,IAAAA,SAAS,EAAE,gBAAb;AAA+BC,IAAAA,OAAO,EAAE,CAAxC;AAA2CH,IAAAA,UAAU,EAAE;AAAvD,GANe;AAOxBK,EAAAA,OAAO,EAAE;AAAEH,IAAAA,SAAS,EAAE,gBAAb;AAA+BC,IAAAA,OAAO,EAAE,CAAxC;AAA2CH,IAAAA,UAAU,EAAE;AAAvD,GAPe;AAQxBM,EAAAA,MAAM,EAAE;AAAEJ,IAAAA,SAAS,EAAE,kBAAb;AAAiCC,IAAAA,OAAO,EAAE,CAA1C;AAA6CH,IAAAA,UAAU,EAAE;AAAzD;AARgB,CAAnB","sourcesContent":["export const defaultStyles = {\n transition: [\n 'transform 200ms ease-in-out, opacity 200ms ease-in-out, visibility 200ms ease-in-out',\n ],\n overflow: 'hidden',\n visibility: 'hidden',\n};\n\nexport const transition = {\n entering: {\n transform: 'translateY(-10%)',\n opacity: 0,\n visibility: 'hidden',\n },\n entered: { transform: 'translateY(0%)', opacity: 1, visibility: 'visible' },\n exiting: { transform: 'translateY(0%)', opacity: 1, visibility: 'visible' },\n exited: { transform: 'translateY(-10%)', opacity: 0, visibility: 'hidden' },\n};\n"],"file":"animations.js"}
1
+ {"version":3,"sources":["../../../../src/components/molecules/Select/animations.ts"],"names":["defaultStyles","transition","overflow","visibility","bottom","entering","transform","opacity","entered","exiting","exited","top"],"mappings":";;;;;;AAAO,MAAMA,aAAa,GAAG;AAC3BC,EAAAA,UAAU,EAAE,CACV,sFADU,CADe;AAI3BC,EAAAA,QAAQ,EAAE,QAJiB;AAK3BC,EAAAA,UAAU,EAAE;AALe,CAAtB;;AAQA,MAAMF,UAAU,GAAG;AACxBG,EAAAA,MAAM,EAAE;AACNC,IAAAA,QAAQ,EAAE;AACRC,MAAAA,SAAS,EAAE,kBADH;AAERC,MAAAA,OAAO,EAAE,CAFD;AAGRJ,MAAAA,UAAU,EAAE;AAHJ,KADJ;AAMNK,IAAAA,OAAO,EAAE;AACPF,MAAAA,SAAS,EAAE,gBADJ;AAEPC,MAAAA,OAAO,EAAE,CAFF;AAGPJ,MAAAA,UAAU,EAAE;AAHL,KANH;AAWNM,IAAAA,OAAO,EAAE;AACPH,MAAAA,SAAS,EAAE,gBADJ;AAEPC,MAAAA,OAAO,EAAE,CAFF;AAGPJ,MAAAA,UAAU,EAAE;AAHL,KAXH;AAgBNO,IAAAA,MAAM,EAAE;AACNJ,MAAAA,SAAS,EAAE,kBADL;AAENC,MAAAA,OAAO,EAAE,CAFH;AAGNJ,MAAAA,UAAU,EAAE;AAHN;AAhBF,GADgB;AAuBxBQ,EAAAA,GAAG,EAAE;AACHN,IAAAA,QAAQ,EAAE;AACRC,MAAAA,SAAS,EAAE,iBADH;AAERC,MAAAA,OAAO,EAAE,CAFD;AAGRJ,MAAAA,UAAU,EAAE;AAHJ,KADP;AAMHK,IAAAA,OAAO,EAAE;AAAEF,MAAAA,SAAS,EAAE,gBAAb;AAA+BC,MAAAA,OAAO,EAAE,CAAxC;AAA2CJ,MAAAA,UAAU,EAAE;AAAvD,KANN;AAOHM,IAAAA,OAAO,EAAE;AAAEH,MAAAA,SAAS,EAAE,gBAAb;AAA+BC,MAAAA,OAAO,EAAE,CAAxC;AAA2CJ,MAAAA,UAAU,EAAE;AAAvD,KAPN;AAQHO,IAAAA,MAAM,EAAE;AAAEJ,MAAAA,SAAS,EAAE,iBAAb;AAAgCC,MAAAA,OAAO,EAAE,CAAzC;AAA4CJ,MAAAA,UAAU,EAAE;AAAxD;AARL;AAvBmB,CAAnB","sourcesContent":["export const defaultStyles = {\n transition: [\n 'transform 200ms ease-in-out, opacity 200ms ease-in-out, visibility 200ms ease-in-out',\n ],\n overflow: 'hidden',\n visibility: 'hidden',\n};\n\nexport const transition = {\n bottom: {\n entering: {\n transform: 'translateY(-10%)',\n opacity: 0,\n visibility: 'hidden',\n },\n entered: {\n transform: 'translateY(0%)',\n opacity: 1,\n visibility: 'visible',\n },\n exiting: {\n transform: 'translateY(0%)',\n opacity: 1,\n visibility: 'visible',\n },\n exited: {\n transform: 'translateY(-10%)',\n opacity: 0,\n visibility: 'hidden',\n },\n },\n top: {\n entering: {\n transform: 'translateY(10%)',\n opacity: 0,\n visibility: 'hidden',\n },\n entered: { transform: 'translateY(0%)', opacity: 1, visibility: 'visible' },\n exiting: { transform: 'translateY(0%)', opacity: 1, visibility: 'visible' },\n exited: { transform: 'translateY(10%)', opacity: 0, visibility: 'hidden' },\n },\n};\n"],"file":"animations.js"}
@@ -1,6 +1,6 @@
1
- import React, { CSSProperties } from 'react';
1
+ import React from 'react';
2
2
  import { HeadersType } from './types';
3
- export interface DataGridProps<Data> {
3
+ export interface DataGridProps<Data> extends React.HTMLAttributes<HTMLDivElement> {
4
4
  headers: HeadersType<Data>[];
5
5
  data: Data[];
6
6
  rowKeyExtractor: (data: Data) => string;
@@ -22,8 +22,7 @@ export interface DataGridProps<Data> {
22
22
  onPageChange?: (page: number) => void;
23
23
  loading?: boolean;
24
24
  skeletonComponent?: React.ReactNode;
25
- style?: CSSProperties;
26
25
  emptyPlaceholder?: React.ReactNode;
27
26
  }
28
- declare const DataGrid: <Data extends unknown>({ headers, data, rowKeyExtractor, toolbarTitle, toolbarFooter, toolbarRightIcons, selectable, selectedRows, onSelectedRows, pagination, rowsPerPage, onRowsPerPageChange, rowsPerPageOptions: _rowsPerPageOptions, rowsPerPageLabel: _rowsPerPageLabel, exportLabel, exportFunction, rowsCount, page, onPageChange, loading, skeletonComponent, style, emptyPlaceholder, }: DataGridProps<Data>) => JSX.Element;
27
+ declare const DataGrid: <Data extends unknown>({ headers, data, rowKeyExtractor, toolbarTitle, toolbarFooter, toolbarRightIcons, selectable, selectedRows, onSelectedRows, pagination, rowsPerPage, onRowsPerPageChange, rowsPerPageOptions: _rowsPerPageOptions, rowsPerPageLabel: _rowsPerPageLabel, exportLabel, exportFunction, rowsCount, page, onPageChange, loading, skeletonComponent, emptyPlaceholder, ...rest }: DataGridProps<Data>) => JSX.Element;
29
28
  export default DataGrid;
@@ -43,8 +43,8 @@ const DataGrid = ({
43
43
  onPageChange,
44
44
  loading = false,
45
45
  skeletonComponent,
46
- style,
47
- emptyPlaceholder
46
+ emptyPlaceholder,
47
+ ...rest
48
48
  }) => {
49
49
  if (selectable && (!selectedRows || !onSelectedRows)) {
50
50
  throw new Error('[DataGrid] You should specify selection handlers (selectedRows, onSelectedRows)');
@@ -66,9 +66,7 @@ const DataGrid = ({
66
66
  });
67
67
  }, [onSelectedRows, rowKeyExtractor]);
68
68
 
69
- return _react.default.createElement(_Table.TableContainer, {
70
- style: style
71
- }, _react.default.createElement(_Table.TableToolbar, {
69
+ return _react.default.createElement(_Table.TableContainer, rest, _react.default.createElement(_Table.TableToolbar, {
72
70
  title: toolbarTitle,
73
71
  rightIcons: toolbarRightIcons,
74
72
  footer: toolbarFooter
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/organisms/DataGrid/DataGrid.tsx"],"names":["DataGrid","headers","data","rowKeyExtractor","toolbarTitle","toolbarFooter","toolbarRightIcons","selectable","selectedRows","onSelectedRows","pagination","rowsPerPage","onRowsPerPageChange","rowsPerPageOptions","_rowsPerPageOptions","rowsPerPageLabel","_rowsPerPageLabel","exportLabel","exportFunction","rowsCount","page","onPageChange","loading","skeletonComponent","style","emptyPlaceholder","Error","React","useCallback","value","useMemo","handleSelect","current","checked","prevState","idx","findIndex","el","length","map","item","some","sel","Array","keys","padding","width"],"mappings":"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","sourcesContent":["import React, { CSSProperties } from 'react';\nimport {\n Table,\n TableToolbar,\n TableContainer,\n Tr,\n Td,\n TBody,\n} from '../../atoms/Table';\nimport { Header } from './Header';\nimport { Row } from './Row';\nimport { HeadersType } from './types';\nimport { Footer } from './Footer';\nimport { Skeleton } from '../../atoms/Skeleton';\nimport { getData, removeElement } from './utils';\n\nexport interface DataGridProps<Data> {\n headers: HeadersType<Data>[];\n data: Data[];\n /** Unique identifier for row data */\n rowKeyExtractor: (data: Data) => string;\n toolbarRightIcons?: React.ReactNode;\n toolbarFooter?: React.ReactNode;\n toolbarTitle: string;\n /** Enable rows selection */\n selectable?: boolean;\n /** Selected items */\n selectedRows?: Data[];\n /** Selection handler */\n onSelectedRows?: (data: Data[] | ((prevState: Data[]) => Data[])) => void;\n /** Shows pagination controls */\n pagination?: boolean;\n /** Results per page */\n rowsPerPage?: number;\n /** Results per page handler */\n onRowsPerPageChange?: (value: number) => void;\n rowsPerPageOptions?: number[];\n rowsPerPageLabel?: (value: number) => string;\n /** Export button label */\n exportLabel?: string;\n exportFunction?: () => void;\n /** Total data elements. Only specify this property if your data is server-side */\n rowsCount?: number;\n /** Current page. Always start in 0 */\n page?: number;\n /** Current page handler */\n onPageChange?: (page: number) => void;\n /** Loading state. The amount of skeleton rows is based on current rowsPerPage */\n loading?: boolean;\n /** Custom skeleton component for better visual */\n skeletonComponent?: React.ReactNode;\n /** CSS style spread to TableContainer */\n style?: CSSProperties;\n /** Empty state placeholder */\n emptyPlaceholder?: React.ReactNode;\n}\n\n/** Note: Consider memoizing functions for a better performance */\nconst DataGrid = <Data extends unknown>({\n headers,\n data,\n rowKeyExtractor,\n toolbarTitle,\n toolbarFooter,\n toolbarRightIcons,\n selectable = false,\n selectedRows = [],\n onSelectedRows,\n pagination = false,\n rowsPerPage = 10,\n onRowsPerPageChange,\n rowsPerPageOptions: _rowsPerPageOptions,\n rowsPerPageLabel: _rowsPerPageLabel,\n exportLabel = 'Exportar',\n exportFunction,\n rowsCount,\n page = 0,\n onPageChange,\n loading = false,\n skeletonComponent,\n style,\n emptyPlaceholder,\n}: DataGridProps<Data>): JSX.Element => {\n if (selectable && (!selectedRows || !onSelectedRows)) {\n throw new Error(\n '[DataGrid] You should specify selection handlers (selectedRows, onSelectedRows)'\n );\n }\n\n const rowsPerPageLabel = React.useCallback(\n value =>\n _rowsPerPageLabel\n ? _rowsPerPageLabel(value)\n : `Exibir por página: ${value} itens`,\n [_rowsPerPageLabel]\n );\n const rowsPerPageOptions = React.useMemo(\n () => _rowsPerPageOptions ?? [10, 25, 50],\n [_rowsPerPageOptions]\n );\n\n const handleSelect = React.useCallback(\n (current, checked) => {\n if (checked) {\n onSelectedRows?.(prevState => [...prevState, current]);\n return;\n }\n\n onSelectedRows?.(prevState => {\n const idx = prevState.findIndex(\n el => rowKeyExtractor(el) === rowKeyExtractor(current)\n );\n return [...removeElement(prevState, idx)];\n });\n },\n [onSelectedRows, rowKeyExtractor]\n );\n\n return (\n <TableContainer style={style}>\n <TableToolbar\n title={toolbarTitle}\n rightIcons={toolbarRightIcons}\n footer={toolbarFooter}\n />\n <Table>\n <Header\n selectable={selectable}\n headers={headers}\n data={data}\n rowsCount={rowsCount ?? data.length}\n rowKeyExtractor={rowKeyExtractor}\n selectedRows={selectedRows}\n onSelected={onSelectedRows}\n />\n\n {!loading ? (\n <TBody>\n {data.length > 0 ? (\n getData(\n data,\n rowsCount,\n page,\n rowsPerPage,\n pagination\n ).map(item => (\n <Row\n key={rowKeyExtractor(item)}\n rowKeyExtractor={rowKeyExtractor}\n handleSelect={handleSelect}\n selectable={selectable}\n headers={headers}\n data={item}\n checked={selectedRows?.some(\n sel => rowKeyExtractor(sel) === rowKeyExtractor(item)\n )}\n />\n ))\n ) : (\n <tr>\n <td colSpan={99}>{emptyPlaceholder}</td>\n </tr>\n )}\n </TBody>\n ) : (\n <TBody>\n {[...Array(rowsPerPage).keys()].map(idx => (\n <Tr key={`skeleton-${idx}`}>\n <Td colSpan={99} style={{ padding: 0 }}>\n {skeletonComponent ?? (\n <Skeleton height={55} radius=\"mili\" animation=\"wave\">\n <div style={{ width: '100%' }} />\n </Skeleton>\n )}\n </Td>\n </Tr>\n ))}\n </TBody>\n )}\n\n <Footer\n exportFunction={exportFunction}\n exportLabel={exportLabel}\n rowsPerPageLabel={rowsPerPageLabel}\n rowsPerPage={rowsPerPage}\n onRowsPerPageChange={onRowsPerPageChange}\n rowsPerPageOptions={rowsPerPageOptions}\n rowsCount={rowsCount ?? data.length}\n page={page}\n onPageChange={onPageChange}\n pagination={pagination}\n />\n </Table>\n </TableContainer>\n );\n};\n\nexport default DataGrid;\n"],"file":"DataGrid.js"}
1
+ {"version":3,"sources":["../../../../src/components/organisms/DataGrid/DataGrid.tsx"],"names":["DataGrid","headers","data","rowKeyExtractor","toolbarTitle","toolbarFooter","toolbarRightIcons","selectable","selectedRows","onSelectedRows","pagination","rowsPerPage","onRowsPerPageChange","rowsPerPageOptions","_rowsPerPageOptions","rowsPerPageLabel","_rowsPerPageLabel","exportLabel","exportFunction","rowsCount","page","onPageChange","loading","skeletonComponent","emptyPlaceholder","rest","Error","React","useCallback","value","useMemo","handleSelect","current","checked","prevState","idx","findIndex","el","length","map","item","some","sel","Array","keys","padding","width"],"mappings":"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","sourcesContent":["import React from 'react';\nimport {\n Table,\n TableToolbar,\n TableContainer,\n Tr,\n Td,\n TBody,\n} from '../../atoms/Table';\nimport { Header } from './Header';\nimport { Row } from './Row';\nimport { HeadersType } from './types';\nimport { Footer } from './Footer';\nimport { Skeleton } from '../../atoms/Skeleton';\nimport { getData, removeElement } from './utils';\n\nexport interface DataGridProps<Data>\n extends React.HTMLAttributes<HTMLDivElement> {\n headers: HeadersType<Data>[];\n data: Data[];\n /** Unique identifier for row data */\n rowKeyExtractor: (data: Data) => string;\n toolbarRightIcons?: React.ReactNode;\n toolbarFooter?: React.ReactNode;\n toolbarTitle: string;\n /** Enable rows selection */\n selectable?: boolean;\n /** Selected items */\n selectedRows?: Data[];\n /** Selection handler */\n onSelectedRows?: (data: Data[] | ((prevState: Data[]) => Data[])) => void;\n /** Shows pagination controls */\n pagination?: boolean;\n /** Results per page */\n rowsPerPage?: number;\n /** Results per page handler */\n onRowsPerPageChange?: (value: number) => void;\n rowsPerPageOptions?: number[];\n rowsPerPageLabel?: (value: number) => string;\n /** Export button label */\n exportLabel?: string;\n exportFunction?: () => void;\n /** Total data elements. Only specify this property if your data is server-side */\n rowsCount?: number;\n /** Current page. Always start in 0 */\n page?: number;\n /** Current page handler */\n onPageChange?: (page: number) => void;\n /** Loading state. The amount of skeleton rows is based on current rowsPerPage */\n loading?: boolean;\n /** Custom skeleton component for better visual */\n skeletonComponent?: React.ReactNode;\n /** Empty state placeholder */\n emptyPlaceholder?: React.ReactNode;\n}\n\n/** Note: Consider memoizing functions for a better performance */\nconst DataGrid = <Data extends unknown>({\n headers,\n data,\n rowKeyExtractor,\n toolbarTitle,\n toolbarFooter,\n toolbarRightIcons,\n selectable = false,\n selectedRows = [],\n onSelectedRows,\n pagination = false,\n rowsPerPage = 10,\n onRowsPerPageChange,\n rowsPerPageOptions: _rowsPerPageOptions,\n rowsPerPageLabel: _rowsPerPageLabel,\n exportLabel = 'Exportar',\n exportFunction,\n rowsCount,\n page = 0,\n onPageChange,\n loading = false,\n skeletonComponent,\n emptyPlaceholder,\n ...rest\n}: DataGridProps<Data>): JSX.Element => {\n if (selectable && (!selectedRows || !onSelectedRows)) {\n throw new Error(\n '[DataGrid] You should specify selection handlers (selectedRows, onSelectedRows)'\n );\n }\n\n const rowsPerPageLabel = React.useCallback(\n value =>\n _rowsPerPageLabel\n ? _rowsPerPageLabel(value)\n : `Exibir por página: ${value} itens`,\n [_rowsPerPageLabel]\n );\n const rowsPerPageOptions = React.useMemo(\n () => _rowsPerPageOptions ?? [10, 25, 50],\n [_rowsPerPageOptions]\n );\n\n const handleSelect = React.useCallback(\n (current, checked) => {\n if (checked) {\n onSelectedRows?.(prevState => [...prevState, current]);\n return;\n }\n\n onSelectedRows?.(prevState => {\n const idx = prevState.findIndex(\n el => rowKeyExtractor(el) === rowKeyExtractor(current)\n );\n return [...removeElement(prevState, idx)];\n });\n },\n [onSelectedRows, rowKeyExtractor]\n );\n\n return (\n <TableContainer {...rest}>\n <TableToolbar\n title={toolbarTitle}\n rightIcons={toolbarRightIcons}\n footer={toolbarFooter}\n />\n <Table>\n <Header\n selectable={selectable}\n headers={headers}\n data={data}\n rowsCount={rowsCount ?? data.length}\n rowKeyExtractor={rowKeyExtractor}\n selectedRows={selectedRows}\n onSelected={onSelectedRows}\n />\n\n {!loading ? (\n <TBody>\n {data.length > 0 ? (\n getData(\n data,\n rowsCount,\n page,\n rowsPerPage,\n pagination\n ).map(item => (\n <Row\n key={rowKeyExtractor(item)}\n rowKeyExtractor={rowKeyExtractor}\n handleSelect={handleSelect}\n selectable={selectable}\n headers={headers}\n data={item}\n checked={selectedRows?.some(\n sel => rowKeyExtractor(sel) === rowKeyExtractor(item)\n )}\n />\n ))\n ) : (\n <tr>\n <td colSpan={99}>{emptyPlaceholder}</td>\n </tr>\n )}\n </TBody>\n ) : (\n <TBody>\n {[...Array(rowsPerPage).keys()].map(idx => (\n <Tr key={`skeleton-${idx}`}>\n <Td colSpan={99} style={{ padding: 0 }}>\n {skeletonComponent ?? (\n <Skeleton height={55} radius=\"mili\" animation=\"wave\">\n <div style={{ width: '100%' }} />\n </Skeleton>\n )}\n </Td>\n </Tr>\n ))}\n </TBody>\n )}\n\n <Footer\n exportFunction={exportFunction}\n exportLabel={exportLabel}\n rowsPerPageLabel={rowsPerPageLabel}\n rowsPerPage={rowsPerPage}\n onRowsPerPageChange={onRowsPerPageChange}\n rowsPerPageOptions={rowsPerPageOptions}\n rowsCount={rowsCount ?? data.length}\n page={page}\n onPageChange={onPageChange}\n pagination={pagination}\n />\n </Table>\n </TableContainer>\n );\n};\n\nexport default DataGrid;\n"],"file":"DataGrid.js"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@tecsinapse/react-web-kit",
3
3
  "description": "TecSinapse React components",
4
- "version": "1.7.8",
4
+ "version": "1.8.0",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
7
7
  "license": "MIT",
@@ -14,7 +14,8 @@
14
14
  "@emotion/native": "^11.0.0",
15
15
  "@emotion/react": "^11.4.1",
16
16
  "@emotion/styled": "^11.3.0",
17
- "@tecsinapse/react-core": "^1.7.6",
17
+ "@tecsinapse/react-core": "^1.8.0",
18
+ "@types/react-native": "^0.64.4",
18
19
  "react-native-vector-icons": "^8.1.0",
19
20
  "react-transition-group": "^4.4.2"
20
21
  },
@@ -32,5 +33,5 @@
32
33
  "react-dom": ">=16.8.0",
33
34
  "react-native-web": "^0.17.1"
34
35
  },
35
- "gitHead": "505f630140fe4e50cc3ce38a1f2e963cf8d42461"
36
+ "gitHead": "007818f30ad4257a740f6abe53c10495b1187ac1"
36
37
  }
@@ -15,7 +15,7 @@ import {
15
15
  } from './animations';
16
16
  import { useTheme } from '@emotion/react';
17
17
 
18
- export interface AccordionProps {
18
+ export interface AccordionProps extends React.HTMLAttributes<HTMLDivElement> {
19
19
  open?: boolean;
20
20
  onChange?: () => void;
21
21
  title: string;
@@ -29,6 +29,7 @@ const Accordion: React.FC<AccordionProps> = ({
29
29
  onChange,
30
30
  transition = 200,
31
31
  children,
32
+ ...rest
32
33
  }) => {
33
34
  const [open, setOpen] = React.useState(_open);
34
35
  const [contentHeight, setContentHeight] = React.useState(0);
@@ -54,7 +55,7 @@ const Accordion: React.FC<AccordionProps> = ({
54
55
  }, [onChange]);
55
56
 
56
57
  return (
57
- <AccordionContainer>
58
+ <AccordionContainer {...rest}>
58
59
  <TitleContainer onClick={handleClick}>
59
60
  <Transition in={open} timeout={transition}>
60
61
  {state => (
@@ -1,16 +1,21 @@
1
- import React, { CSSProperties } from 'react';
1
+ import React from 'react';
2
2
  import { Transition } from 'react-transition-group';
3
3
  import { Overlay } from '../Overlay';
4
4
  import { ModalContainer } from './styled';
5
5
  import { defaultStyleOverlay, transitionStylesOverlay } from './animations';
6
6
 
7
- export interface ModalProps {
7
+ export interface ModalProps extends React.HTMLAttributes<HTMLDivElement> {
8
8
  open: boolean;
9
9
  onClose: () => void;
10
- style?: CSSProperties;
11
10
  }
12
11
 
13
- const Modal: React.FC<ModalProps> = ({ children, open, onClose, style }) => {
12
+ const Modal: React.FC<ModalProps> = ({
13
+ children,
14
+ open,
15
+ onClose,
16
+ style,
17
+ ...rest
18
+ }) => {
14
19
  return (
15
20
  <>
16
21
  <Overlay open={open} onClose={onClose} zIndex="modal" />
@@ -22,6 +27,7 @@ const Modal: React.FC<ModalProps> = ({ children, open, onClose, style }) => {
22
27
  ...defaultStyleOverlay,
23
28
  ...transitionStylesOverlay[state],
24
29
  }}
30
+ {...rest}
25
31
  >
26
32
  {children}
27
33
  </ModalContainer>
@@ -8,13 +8,13 @@ export type BreadcrumbType = {
8
8
  props?: any;
9
9
  };
10
10
 
11
- export interface BreadcrumbsProps {
11
+ export interface BreadcrumbsProps extends React.HTMLAttributes<HTMLDivElement> {
12
12
  breadcrumbs: BreadcrumbType[];
13
13
  }
14
14
 
15
- const Breadcrumbs: FC<BreadcrumbsProps> = ({ breadcrumbs }) => {
15
+ const Breadcrumbs: FC<BreadcrumbsProps> = ({ breadcrumbs, ...rest }) => {
16
16
  return (
17
- <StyledContainerBreadcrumbs>
17
+ <StyledContainerBreadcrumbs {...rest}>
18
18
  {breadcrumbs.map((item, index) => {
19
19
  const { props, Component = 'a', title } = item;
20
20
  return (
@@ -1,6 +1,6 @@
1
1
  import React, { FC } from 'react';
2
2
  import { StyledContainerDrawer } from './styled';
3
- import { Transition } from 'react-transition-group';
3
+ import { Transition, TransitionStatus } from 'react-transition-group';
4
4
  import { Overlay } from '../../atoms/Overlay';
5
5
  import {
6
6
  transitionStylesTopBottom,
@@ -9,10 +9,12 @@ import {
9
9
  transitionStylesLeftRight,
10
10
  } from './animations';
11
11
 
12
- export interface DrawerProps {
12
+ type AnchorPosition = 'left' | 'right' | 'top' | 'bottom';
13
+
14
+ export interface DrawerProps extends React.HTMLAttributes<HTMLDivElement> {
13
15
  open: boolean;
14
16
  onClose: () => void;
15
- anchorPosition: 'left' | 'right' | 'top' | 'bottom';
17
+ anchorPosition: AnchorPosition;
16
18
  }
17
19
 
18
20
  const Drawer: FC<DrawerProps> = ({
@@ -20,8 +22,13 @@ const Drawer: FC<DrawerProps> = ({
20
22
  anchorPosition = 'right',
21
23
  onClose,
22
24
  children,
25
+ style,
26
+ ...rest
23
27
  }) => {
24
- const getStyles = (anchorPosition: string, state: any) => {
28
+ const getStyles = (
29
+ anchorPosition: AnchorPosition,
30
+ state: TransitionStatus
31
+ ) => {
25
32
  const stylesLeftRight = defaultStylesLeftRight(anchorPosition);
26
33
  const transitionLeftRight = transitionStylesLeftRight(anchorPosition);
27
34
  const stylesTopBottom = defaultStylesTopBottom(anchorPosition);
@@ -46,10 +53,11 @@ const Drawer: FC<DrawerProps> = ({
46
53
  <Transition in={open} timeout={300}>
47
54
  {state => (
48
55
  <StyledContainerDrawer
49
- style={getStyles(anchorPosition, state)}
56
+ style={{ ...style, ...getStyles(anchorPosition, state) }}
50
57
  anchorPosition={anchorPosition}
51
58
  onClose={onClose}
52
59
  open={open}
60
+ {...rest}
53
61
  >
54
62
  {children}
55
63
  </StyledContainerDrawer>
@@ -1,3 +1,5 @@
1
+ import { CSSProperties } from 'react';
2
+
1
3
  export const transformLeftRigthClose = (anchorPosition: string) =>
2
4
  anchorPosition === 'right' ? 'translateX(100%)' : 'translateX(-100%)';
3
5
 
@@ -8,10 +10,12 @@ export const transformTopBottomClose = (anchorPosition: string) =>
8
10
 
9
11
  export const transformTopBottomOpen = 'translateY(0%)';
10
12
 
11
- export const defaultStylesLeftRight = (anchorPosition: string) => {
13
+ export const defaultStylesLeftRight = (
14
+ anchorPosition: string
15
+ ): CSSProperties => {
12
16
  return {
13
17
  transition: 'transform 300ms ease-in-out',
14
- transform: () => transformLeftRigthClose(anchorPosition),
18
+ transform: transformLeftRigthClose(anchorPosition),
15
19
  overflowX: 'hidden',
16
20
  overflowY: 'auto',
17
21
  };
@@ -30,7 +34,9 @@ export const transitionStylesLeftRight = (anchorPosition: string) => {
30
34
  };
31
35
  };
32
36
 
33
- export const defaultStylesTopBottom = (anchorPosition: string) => {
37
+ export const defaultStylesTopBottom = (
38
+ anchorPosition: string
39
+ ): CSSProperties => {
34
40
  return {
35
41
  transition: 'transform 300ms ease-in-out',
36
42
  transform: transformTopBottomClose(anchorPosition),
@@ -22,7 +22,7 @@ import {
22
22
  } from './animations';
23
23
  import { useClickAwayListener } from '../../../hooks';
24
24
 
25
- export interface MenubarProps {
25
+ export interface MenubarProps extends React.HTMLAttributes<HTMLDivElement> {
26
26
  options: OptionsType[];
27
27
  leftComponents?: React.ReactNode;
28
28
  rightComponents?: React.ReactNode;
@@ -43,6 +43,7 @@ const Menubar: React.FC<MenubarProps> = ({
43
43
  mostUsedLabel = 'Mais acessados',
44
44
  searchResultsLabel = 'Resultados da busca',
45
45
  searchable = true,
46
+ ...rest
46
47
  }) => {
47
48
  const [search, setSearch] = React.useState<string>('');
48
49
  const [results, setResults] = React.useState<MostUsedType[]>([]);
@@ -61,7 +62,7 @@ const Menubar: React.FC<MenubarProps> = ({
61
62
  }, [search]);
62
63
 
63
64
  return (
64
- <>
65
+ <div ref={ref => (menuRef.current = ref)} {...rest}>
65
66
  <StyledMenuBar>
66
67
  <StyledMenuButton variant="filled" color="primary" onPress={toggleOpen}>
67
68
  {!open ? (
@@ -103,10 +104,7 @@ const Menubar: React.FC<MenubarProps> = ({
103
104
  </StyledMenuBar>
104
105
  <Transition in={open} timeout={250}>
105
106
  {state => (
106
- <StyledContainerOpenMenu
107
- ref={ref => (menuRef.current = ref)}
108
- style={getContainerOpenMenuStyles(state)}
109
- >
107
+ <StyledContainerOpenMenu style={getContainerOpenMenuStyles(state)}>
110
108
  {!search ? (
111
109
  <>
112
110
  {mostUsed && (
@@ -136,7 +134,7 @@ const Menubar: React.FC<MenubarProps> = ({
136
134
  </StyledContainerOpenMenu>
137
135
  )}
138
136
  </Transition>
139
- </>
137
+ </div>
140
138
  );
141
139
  };
142
140