@tecsinapse/react-web-kit 1.12.11 → 1.14.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +41 -0
- package/dist/components/atoms/Dropdown/index.d.ts +9 -0
- package/dist/components/atoms/Dropdown/index.js +42 -0
- package/dist/components/atoms/Dropdown/index.js.map +1 -0
- package/dist/components/atoms/Dropdown/styled.d.ts +2 -0
- package/dist/components/atoms/Dropdown/styled.js +36 -0
- package/dist/components/atoms/Dropdown/styled.js.map +1 -0
- package/dist/components/molecules/DatePicker/DatePicker.d.ts +1 -1
- package/dist/components/molecules/DatePicker/DatePicker.js +33 -5
- package/dist/components/molecules/DatePicker/DatePicker.js.map +1 -1
- package/dist/components/molecules/DateTimePicker/DateTimePicker.js +3 -4
- package/dist/components/molecules/DateTimePicker/DateTimePicker.js.map +1 -1
- package/dist/components/molecules/Select/SelectItem/SelectItem.d.ts +1 -1
- package/dist/components/molecules/Select/SelectItem/SelectItem.js +9 -4
- package/dist/components/molecules/Select/SelectItem/SelectItem.js.map +1 -1
- package/dist/components/organisms/DataGrid/Footer/styled.js +6 -4
- package/dist/components/organisms/DataGrid/Footer/styled.js.map +1 -1
- package/package.json +3 -3
- package/src/components/atoms/Dropdown/index.tsx +35 -0
- package/src/components/atoms/Dropdown/styled.ts +15 -0
- package/src/components/molecules/DatePicker/DatePicker.stories.tsx +1 -1
- package/src/components/molecules/DatePicker/DatePicker.tsx +53 -13
- package/src/components/molecules/DateTimePicker/DateTimePicker.stories.tsx +8 -3
- package/src/components/molecules/DateTimePicker/DateTimePicker.tsx +22 -20
- package/src/components/molecules/Select/SelectItem/SelectItem.tsx +29 -3
- package/src/components/organisms/DataGrid/Footer/styled.ts +4 -2
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,47 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
# [1.14.0](https://github.com/tecsinapse/design-system/compare/@tecsinapse/react-web-kit@1.13.0...@tecsinapse/react-web-kit@1.14.0) (2022-02-09)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### Bug Fixes
|
|
10
|
+
|
|
11
|
+
* DateTimePicker stories ([e6cf5c1](https://github.com/tecsinapse/design-system/commit/e6cf5c1a4c11eb4113daa77fc4e5beb89c775793))
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
# [1.13.0](https://github.com/tecsinapse/design-system/compare/@tecsinapse/react-web-kit@1.12.13...@tecsinapse/react-web-kit@1.13.0) (2022-02-02)
|
|
18
|
+
|
|
19
|
+
**Note:** Version bump only for package @tecsinapse/react-web-kit
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
## [1.12.13](https://github.com/tecsinapse/design-system/compare/@tecsinapse/react-web-kit@1.12.12...@tecsinapse/react-web-kit@1.12.13) (2022-01-28)
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
### Bug Fixes
|
|
29
|
+
|
|
30
|
+
* using keyExtractor instead of Data to do check validations in Select type multi ([268a4f6](https://github.com/tecsinapse/design-system/commit/268a4f6cf33d0d27d86da74c57f4ce42e485bd5f))
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
## [1.12.12](https://github.com/tecsinapse/design-system/compare/@tecsinapse/react-web-kit@1.12.11...@tecsinapse/react-web-kit@1.12.12) (2022-01-19)
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
### Bug Fixes
|
|
40
|
+
|
|
41
|
+
* fix DataGrid pagination buttons ([c9d40cf](https://github.com/tecsinapse/design-system/commit/c9d40cf9a0655338a6d35d42dbc399768d8cf58d))
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
|
|
6
47
|
## [1.12.11](https://github.com/tecsinapse/design-system/compare/@tecsinapse/react-web-kit@1.12.10...@tecsinapse/react-web-kit@1.12.11) (2022-01-19)
|
|
7
48
|
|
|
8
49
|
**Note:** Version bump only for package @tecsinapse/react-web-kit
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { Dispatch, SetStateAction } from 'react';
|
|
3
|
+
export interface DropdownProps {
|
|
4
|
+
visible: boolean;
|
|
5
|
+
setVisible: Dispatch<SetStateAction<boolean>>;
|
|
6
|
+
}
|
|
7
|
+
export declare const Dropdown: React.FC<DropdownProps & {
|
|
8
|
+
children: JSX.Element;
|
|
9
|
+
}>;
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.Dropdown = void 0;
|
|
7
|
+
|
|
8
|
+
var React = _interopRequireWildcard(require("react"));
|
|
9
|
+
|
|
10
|
+
var _styled = require("./styled");
|
|
11
|
+
|
|
12
|
+
var _reactTransitionGroup = require("react-transition-group");
|
|
13
|
+
|
|
14
|
+
var _animations = require("../../molecules/Select/animations");
|
|
15
|
+
|
|
16
|
+
var _reactWebKit = require("@tecsinapse/react-web-kit");
|
|
17
|
+
|
|
18
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
19
|
+
|
|
20
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
21
|
+
|
|
22
|
+
const Component = ({
|
|
23
|
+
visible,
|
|
24
|
+
setVisible,
|
|
25
|
+
children
|
|
26
|
+
}) => {
|
|
27
|
+
const refDropDown = React.useRef(null);
|
|
28
|
+
(0, _reactWebKit.useClickAwayListener)(refDropDown, setVisible);
|
|
29
|
+
return React.createElement(_reactTransitionGroup.Transition, {
|
|
30
|
+
in: visible,
|
|
31
|
+
timeout: 300
|
|
32
|
+
}, state => React.createElement(_styled.StyledContainerDropdown, {
|
|
33
|
+
style: { ..._animations.defaultStyles,
|
|
34
|
+
..._animations.transition['bottom'][state]
|
|
35
|
+
},
|
|
36
|
+
ref: refDropDown
|
|
37
|
+
}, children));
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
const Dropdown = Component;
|
|
41
|
+
exports.Dropdown = Dropdown;
|
|
42
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/atoms/Dropdown/index.tsx"],"names":["Component","visible","setVisible","children","refDropDown","React","useRef","state","defaultStyles","transition","Dropdown"],"mappings":";;;;;;;AAAA;;AACA;;AACA;;AACA;;AAEA;;;;;;AAOA,MAAMA,SAA8D,GAAG,CAAC;AACtEC,EAAAA,OADsE;AAEtEC,EAAAA,UAFsE;AAGtEC,EAAAA;AAHsE,CAAD,KAIpD;AACjB,QAAMC,WAAW,GAAGC,KAAK,CAACC,MAAN,CAAa,IAAb,CAApB;AACA,yCAAqBF,WAArB,EAAkCF,UAAlC;AAEA,SACE,oBAAC,gCAAD;AAAY,IAAA,EAAE,EAAED,OAAhB;AAAyB,IAAA,OAAO,EAAE;AAAlC,KACGM,KAAK,IACJ,oBAAC,+BAAD;AACE,IAAA,KAAK,EAAE,EAAE,GAAGC,yBAAL;AAAoB,SAAGC,uBAAW,QAAX,EAAqBF,KAArB;AAAvB,KADT;AAEE,IAAA,GAAG,EAAEH;AAFP,KAIGD,QAJH,CAFJ,CADF;AAYD,CApBD;;AAsBO,MAAMO,QAAQ,GAAGV,SAAjB","sourcesContent":["import * as React from 'react';\nimport { StyledContainerDropdown } from './styled';\nimport { Transition } from 'react-transition-group';\nimport { defaultStyles, transition } from '../../molecules/Select/animations';\nimport { Dispatch, SetStateAction } from 'react';\nimport { useClickAwayListener } from '@tecsinapse/react-web-kit';\n\nexport interface DropdownProps {\n visible: boolean;\n setVisible: Dispatch<SetStateAction<boolean>>;\n}\n\nconst Component: React.FC<DropdownProps & { children: JSX.Element }> = ({\n visible,\n setVisible,\n children,\n}): JSX.Element => {\n const refDropDown = React.useRef(null);\n useClickAwayListener(refDropDown, setVisible);\n\n return (\n <Transition in={visible} timeout={300}>\n {state => (\n <StyledContainerDropdown\n style={{ ...defaultStyles, ...transition['bottom'][state] }}\n ref={refDropDown}\n >\n {children}\n </StyledContainerDropdown>\n )}\n </Transition>\n );\n};\n\nexport const Dropdown = Component;\n"],"file":"index.js"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.StyledContainerDropdown = void 0;
|
|
7
|
+
|
|
8
|
+
var _styled = _interopRequireDefault(require("@emotion/styled"));
|
|
9
|
+
|
|
10
|
+
var _reactCore = require("@tecsinapse/react-core");
|
|
11
|
+
|
|
12
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
13
|
+
|
|
14
|
+
const StyledContainerDropdown = (0, _styled.default)('div')`
|
|
15
|
+
width: auto;
|
|
16
|
+
background-color: ${({
|
|
17
|
+
theme
|
|
18
|
+
}) => theme.miscellaneous.surfaceColor};
|
|
19
|
+
border-radius: ${({
|
|
20
|
+
theme
|
|
21
|
+
}) => theme.borderRadius.mili};
|
|
22
|
+
box-shadow: 0 2px 8px
|
|
23
|
+
${({
|
|
24
|
+
theme
|
|
25
|
+
}) => (0, _reactCore.hex2rgba)(theme.miscellaneous.shadow, 0.05)};
|
|
26
|
+
position: absolute;
|
|
27
|
+
padding-bottom: ${({
|
|
28
|
+
theme
|
|
29
|
+
}) => theme.spacing.mili};
|
|
30
|
+
margin-top: 8px;
|
|
31
|
+
z-index: ${({
|
|
32
|
+
theme
|
|
33
|
+
}) => theme.zIndex.select};
|
|
34
|
+
`;
|
|
35
|
+
exports.StyledContainerDropdown = StyledContainerDropdown;
|
|
36
|
+
//# sourceMappingURL=styled.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/atoms/Dropdown/styled.ts"],"names":["StyledContainerDropdown","theme","miscellaneous","surfaceColor","borderRadius","mili","shadow","spacing","zIndex","select"],"mappings":";;;;;;;AAAA;;AACA;;;;AAEO,MAAMA,uBAAuB,GAAG,qBAAO,KAAP,CAAmC;AAC1E;AACA,sBAAsB,CAAC;AAAEC,EAAAA;AAAF,CAAD,KAClBA,KAAK,CAACC,aAAN,CAAoBC,YAAa;AACrC,mBAAmB,CAAC;AAAEF,EAAAA;AAAF,CAAD,KAA2BA,KAAK,CAACG,YAAN,CAAmBC,IAAK;AACtE;AACA,MAAM,CAAC;AAAEJ,EAAAA;AAAF,CAAD,KAA2B,yBAASA,KAAK,CAACC,aAAN,CAAoBI,MAA7B,EAAqC,IAArC,CAA2C;AAC5E;AACA,oBAAoB,CAAC;AAAEL,EAAAA;AAAF,CAAD,KAA2BA,KAAK,CAACM,OAAN,CAAcF,IAAK;AAClE;AACA,aAAa,CAAC;AAAEJ,EAAAA;AAAF,CAAD,KAA2BA,KAAK,CAACO,MAAN,CAAaC,MAAO;AAC5D,CAXO","sourcesContent":["import styled from '@emotion/styled';\nimport { hex2rgba, StyleProps } from '@tecsinapse/react-core';\n\nexport const StyledContainerDropdown = styled('div')<Partial<StyleProps>>`\n width: auto;\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.05)};\n position: absolute;\n padding-bottom: ${({ theme }: StyleProps) => theme.spacing.mili};\n margin-top: 8px;\n z-index: ${({ theme }: StyleProps) => theme.zIndex.select};\n`;\n"],"file":"styled.js"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { DatePickerProps, SelectionType } from '@tecsinapse/react-core';
|
|
2
2
|
export declare type WebDatePickerProps<T extends SelectionType> = Omit<DatePickerProps<T>, 'CalendarComponent' | 'renderCalendar' | 'requestCloseCalendar' | 'requestShowCalendar'>;
|
|
3
|
-
export declare const DatePicker: <T extends any>({ ...rest }: WebDatePickerProps<T>) => JSX.Element;
|
|
3
|
+
export declare const DatePicker: <T extends any>({ value, type, ...rest }: WebDatePickerProps<T>) => JSX.Element;
|
|
@@ -9,7 +9,7 @@ var _reactCore = require("@tecsinapse/react-core");
|
|
|
9
9
|
|
|
10
10
|
var _react = _interopRequireWildcard(require("react"));
|
|
11
11
|
|
|
12
|
-
var
|
|
12
|
+
var _Dropdown = require("../../atoms/Dropdown");
|
|
13
13
|
|
|
14
14
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
15
15
|
|
|
@@ -17,19 +17,47 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
|
|
|
17
17
|
|
|
18
18
|
function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
19
19
|
|
|
20
|
-
const DatePicker = ({
|
|
20
|
+
const DatePicker = ({
|
|
21
|
+
value,
|
|
22
|
+
type,
|
|
23
|
+
...rest
|
|
21
24
|
}) => {
|
|
22
25
|
const [visible, setVisible] = (0, _react.useState)(false);
|
|
23
26
|
const show = (0, _react.useCallback)(() => setVisible(true), []);
|
|
24
27
|
const close = (0, _react.useCallback)(() => setVisible(false), []);
|
|
28
|
+
const getYear = (0, _react.useMemo)(() => {
|
|
29
|
+
if (value) {
|
|
30
|
+
if (type === 'range') {
|
|
31
|
+
if (value.lowest !== undefined) return new Date(value.lowest).getFullYear();
|
|
32
|
+
} else {
|
|
33
|
+
return new Date(value).getFullYear();
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
return undefined;
|
|
38
|
+
}, [value]);
|
|
39
|
+
const getMonth = (0, _react.useMemo)(() => {
|
|
40
|
+
if (value) {
|
|
41
|
+
if (type === 'range') {
|
|
42
|
+
if (value.lowest !== undefined) return new Date(value.lowest).getMonth();
|
|
43
|
+
} else {
|
|
44
|
+
return new Date(value).getMonth();
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
return undefined;
|
|
49
|
+
}, [value]);
|
|
25
50
|
return _react.default.createElement(_reactCore.DatePicker, _extends({}, rest, {
|
|
26
51
|
CalendarComponent: _reactCore.Calendar,
|
|
52
|
+
value: value,
|
|
53
|
+
type: type,
|
|
54
|
+
year: getYear,
|
|
55
|
+
month: getMonth,
|
|
27
56
|
requestShowCalendar: show,
|
|
28
57
|
requestCloseCalendar: close,
|
|
29
|
-
renderCalendar: calendar => _react.default.createElement(
|
|
30
|
-
animationType: "fade",
|
|
58
|
+
renderCalendar: calendar => _react.default.createElement(_Dropdown.Dropdown, {
|
|
31
59
|
visible: visible,
|
|
32
|
-
|
|
60
|
+
setVisible: setVisible
|
|
33
61
|
}, calendar)
|
|
34
62
|
}));
|
|
35
63
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/molecules/DatePicker/DatePicker.tsx"],"names":["DatePicker","rest","visible","setVisible","show","close","Calendar","calendar"],"mappings":";;;;;;;AAAA;;
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/molecules/DatePicker/DatePicker.tsx"],"names":["DatePicker","value","type","rest","visible","setVisible","show","close","getYear","lowest","undefined","Date","getFullYear","getMonth","Calendar","calendar"],"mappings":";;;;;;;AAAA;;AAOA;;AACA;;;;;;;;AAUO,MAAMA,UAAU,GAAG,CAA0B;AAClDC,EAAAA,KADkD;AAElDC,EAAAA,IAFkD;AAGlD,KAAGC;AAH+C,CAA1B,KAIgB;AACxC,QAAM,CAACC,OAAD,EAAUC,UAAV,IAAwB,qBAAS,KAAT,CAA9B;AACA,QAAMC,IAAI,GAAG,wBAAY,MAAMD,UAAU,CAAC,IAAD,CAA5B,EAAoC,EAApC,CAAb;AACA,QAAME,KAAK,GAAG,wBAAY,MAAMF,UAAU,CAAC,KAAD,CAA5B,EAAqC,EAArC,CAAd;AAEA,QAAMG,OAAO,GAAG,oBAAQ,MAAM;AAC5B,QAAIP,KAAJ,EAAW;AACT,UAAIC,IAAI,KAAK,OAAb,EAAsB;AACpB,YAAKD,KAAD,CAAqBQ,MAArB,KAAgCC,SAApC,EACE,OAAO,IAAIC,IAAJ,CAAUV,KAAD,CAAqBQ,MAA9B,EAAsCG,WAAtC,EAAP;AACH,OAHD,MAGO;AACL,eAAO,IAAID,IAAJ,CAASV,KAAT,EAAwBW,WAAxB,EAAP;AACD;AACF;;AACD,WAAOF,SAAP;AACD,GAVe,EAUb,CAACT,KAAD,CAVa,CAAhB;AAYA,QAAMY,QAAQ,GAAG,oBAAQ,MAAM;AAC7B,QAAIZ,KAAJ,EAAW;AACT,UAAIC,IAAI,KAAK,OAAb,EAAsB;AACpB,YAAKD,KAAD,CAAqBQ,MAArB,KAAgCC,SAApC,EACE,OAAO,IAAIC,IAAJ,CAAUV,KAAD,CAAqBQ,MAA9B,EAAsCI,QAAtC,EAAP;AACH,OAHD,MAGO;AACL,eAAO,IAAIF,IAAJ,CAASV,KAAT,EAAwBY,QAAxB,EAAP;AACD;AACF;;AACD,WAAOH,SAAP;AACD,GAVgB,EAUd,CAACT,KAAD,CAVc,CAAjB;AAYA,SACE,6BAAC,qBAAD,eACME,IADN;AAEE,IAAA,iBAAiB,EAAEW,mBAFrB;AAGE,IAAA,KAAK,EAAEb,KAHT;AAIE,IAAA,IAAI,EAAEC,IAJR;AAKE,IAAA,IAAI,EAAEM,OALR;AAME,IAAA,KAAK,EAAEK,QANT;AAOE,IAAA,mBAAmB,EAAEP,IAPvB;AAQE,IAAA,oBAAoB,EAAEC,KARxB;AASE,IAAA,cAAc,EAAEQ,QAAQ,IACtB,6BAAC,kBAAD;AAAU,MAAA,OAAO,EAAEX,OAAnB;AAA4B,MAAA,UAAU,EAAEC;AAAxC,OACGU,QADH;AAVJ,KADF;AAiBD,CAlDM","sourcesContent":["import {\n Calendar,\n DatePicker as DatePickerCore,\n DatePickerProps,\n DateRange,\n SelectionType,\n} from '@tecsinapse/react-core';\nimport React, { useCallback, useMemo, useState } from 'react';\nimport { Dropdown } from '../../atoms/Dropdown';\n\nexport type WebDatePickerProps<T extends SelectionType> = Omit<\n DatePickerProps<T>,\n | 'CalendarComponent'\n | 'renderCalendar'\n | 'requestCloseCalendar'\n | 'requestShowCalendar'\n>;\n\nexport const DatePicker = <T extends SelectionType>({\n value,\n type,\n ...rest\n}: WebDatePickerProps<T>): JSX.Element => {\n const [visible, setVisible] = useState(false);\n const show = useCallback(() => setVisible(true), []);\n const close = useCallback(() => setVisible(false), []);\n\n const getYear = useMemo(() => {\n if (value) {\n if (type === 'range') {\n if ((value as DateRange).lowest !== undefined)\n return new Date((value as DateRange).lowest).getFullYear();\n } else {\n return new Date(value as Date).getFullYear();\n }\n }\n return undefined;\n }, [value]);\n\n const getMonth = useMemo(() => {\n if (value) {\n if (type === 'range') {\n if ((value as DateRange).lowest !== undefined)\n return new Date((value as DateRange).lowest).getMonth();\n } else {\n return new Date(value as Date).getMonth();\n }\n }\n return undefined;\n }, [value]);\n\n return (\n <DatePickerCore\n {...rest}\n CalendarComponent={Calendar}\n value={value}\n type={type}\n year={getYear}\n month={getMonth}\n requestShowCalendar={show}\n requestCloseCalendar={close}\n renderCalendar={calendar => (\n <Dropdown visible={visible} setVisible={setVisible}>\n {calendar}\n </Dropdown>\n )}\n />\n );\n};\n"],"file":"DatePicker.js"}
|
|
@@ -9,7 +9,7 @@ var _reactCore = require("@tecsinapse/react-core");
|
|
|
9
9
|
|
|
10
10
|
var _react = _interopRequireWildcard(require("react"));
|
|
11
11
|
|
|
12
|
-
var
|
|
12
|
+
var _Dropdown = require("../../atoms/Dropdown");
|
|
13
13
|
|
|
14
14
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
15
15
|
|
|
@@ -25,10 +25,9 @@ const DateTimePicker = ({ ...rest
|
|
|
25
25
|
return _react.default.createElement(_reactCore.DateTimePicker, _extends({}, rest, {
|
|
26
26
|
requestShowSelector: show,
|
|
27
27
|
requestCloseSelector: close,
|
|
28
|
-
renderSelector: selector => _react.default.createElement(
|
|
29
|
-
animationType: "fade",
|
|
28
|
+
renderSelector: selector => _react.default.createElement(_Dropdown.Dropdown, {
|
|
30
29
|
visible: visible,
|
|
31
|
-
|
|
30
|
+
setVisible: setVisible
|
|
32
31
|
}, selector)
|
|
33
32
|
}));
|
|
34
33
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/molecules/DateTimePicker/DateTimePicker.tsx"],"names":["DateTimePicker","rest","visible","setVisible","show","close","selector"],"mappings":";;;;;;;AAAA;;AAIA;;AACA;;;;;;;;
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/molecules/DateTimePicker/DateTimePicker.tsx"],"names":["DateTimePicker","rest","visible","setVisible","show","close","selector"],"mappings":";;;;;;;AAAA;;AAIA;;AACA;;;;;;;;AAOO,MAAMA,cAA0C,GAAG,CAAC,EAAE,GAAGC;AAAL,CAAD,KAAiB;AACzE,QAAM,CAACC,OAAD,EAAUC,UAAV,IAAwB,qBAAkB,KAAlB,CAA9B;AAEA,QAAMC,IAAI,GAAG,wBAAY,MAAMD,UAAU,CAAC,IAAD,CAA5B,EAAoC,EAApC,CAAb;AACA,QAAME,KAAK,GAAG,wBAAY,MAAMF,UAAU,CAAC,KAAD,CAA5B,EAAqC,EAArC,CAAd;AAEA,SACE,6BAAC,yBAAD,eACMF,IADN;AAEE,IAAA,mBAAmB,EAAEG,IAFvB;AAGE,IAAA,oBAAoB,EAAEC,KAHxB;AAIE,IAAA,cAAc,EAAEC,QAAQ,IACtB,6BAAC,kBAAD;AAAU,MAAA,OAAO,EAAEJ,OAAnB;AAA4B,MAAA,UAAU,EAAEC;AAAxC,OACGG,QADH;AALJ,KADF;AAYD,CAlBM","sourcesContent":["import {\n DateTimePicker as DateTimePickerCore,\n DateTimePickerProps,\n} from '@tecsinapse/react-core';\nimport React, { FC, useCallback, useState } from 'react';\nimport { Dropdown } from '../../atoms/Dropdown';\n\nexport type WebDateTimePickerProps = Omit<\n DateTimePickerProps,\n 'renderSelector' | 'requestShowSelector' | 'requestCloseSelector'\n>;\n\nexport const DateTimePicker: FC<WebDateTimePickerProps> = ({ ...rest }) => {\n const [visible, setVisible] = useState<boolean>(false);\n\n const show = useCallback(() => setVisible(true), []);\n const close = useCallback(() => setVisible(false), []);\n\n return (\n <DateTimePickerCore\n {...rest}\n requestShowSelector={show}\n requestCloseSelector={close}\n renderSelector={selector => (\n <Dropdown visible={visible} setVisible={setVisible}>\n {selector}\n </Dropdown>\n )}\n />\n );\n};\n"],"file":"DateTimePicker.js"}
|
|
@@ -7,7 +7,7 @@ interface SelectItemProps<Data, Type extends 'single' | 'multi'> {
|
|
|
7
7
|
labelExtractor: (t: Data) => string;
|
|
8
8
|
index: number;
|
|
9
9
|
}
|
|
10
|
-
declare const _default: <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, keyExtractor, }: SelectItemProps<Data, Type> & {
|
|
11
11
|
setDropDownVisible: (t: boolean) => void;
|
|
12
12
|
checkedAll: boolean;
|
|
13
13
|
setCheckedAll: (t: boolean) => void;
|
|
@@ -22,15 +22,20 @@ const SelectItem = ({
|
|
|
22
22
|
setDropDownVisible,
|
|
23
23
|
checkedAll,
|
|
24
24
|
setCheckedAll,
|
|
25
|
-
lenghtOptions
|
|
25
|
+
lenghtOptions,
|
|
26
|
+
keyExtractor
|
|
26
27
|
}) => {
|
|
27
28
|
const isMulti = type === 'multi';
|
|
28
29
|
|
|
29
|
-
const [checked, setChecked] = _react.default.useState(value !== undefined && type === 'multi' && value.
|
|
30
|
+
const [checked, setChecked] = _react.default.useState(value !== undefined && type === 'multi' && value.find(data => keyExtractor(data) === keyExtractor(item)) !== undefined);
|
|
31
|
+
|
|
32
|
+
_react.default.useEffect(() => {
|
|
33
|
+
if (!checked && value !== undefined && (type === 'multi' && value.find(data => keyExtractor(data) === keyExtractor(item)) || type === 'single' && keyExtractor(value) === keyExtractor(item))) setChecked(true);
|
|
34
|
+
}, [value, keyExtractor, type]);
|
|
30
35
|
|
|
31
36
|
_react.default.useEffect(() => {
|
|
32
37
|
if (type === 'multi') {
|
|
33
|
-
checkedAll ? setChecked(true) : setChecked(value.
|
|
38
|
+
checkedAll ? setChecked(true) : setChecked(value.find(data => keyExtractor(data) === keyExtractor(item)) !== undefined);
|
|
34
39
|
}
|
|
35
40
|
}, [checkedAll]);
|
|
36
41
|
|
|
@@ -46,7 +51,7 @@ const SelectItem = ({
|
|
|
46
51
|
[..._value, key].length === lenghtOptions && setCheckedAll(true);
|
|
47
52
|
} else {
|
|
48
53
|
const auxArray = [..._value];
|
|
49
|
-
const indexToExclude = auxArray.
|
|
54
|
+
const indexToExclude = auxArray.findIndex(data => keyExtractor(data) === keyExtractor(key));
|
|
50
55
|
auxArray.splice(indexToExclude, 1);
|
|
51
56
|
onSelect([...auxArray]);
|
|
52
57
|
setCheckedAll(false);
|
|
@@ -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","
|
|
1
|
+
{"version":3,"sources":["../../../../../src/components/molecules/Select/SelectItem/SelectItem.tsx"],"names":["SelectItem","item","onSelect","type","value","labelExtractor","setDropDownVisible","checkedAll","setCheckedAll","lenghtOptions","keyExtractor","isMulti","checked","setChecked","React","useState","undefined","find","data","useEffect","clickItem","useCallback","_value","key","Array","isArray","auxChecked","length","auxArray","indexToExclude","findIndex","splice","memo"],"mappings":"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","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 keyExtractor,\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 &&\n type === 'multi' &&\n (value as Data[]).find(\n data => keyExtractor(data) === keyExtractor(item)\n ) !== undefined\n );\n\n React.useEffect(() => {\n if (\n !checked &&\n value !== undefined &&\n ((type === 'multi' &&\n (value as Data[]).find(\n data => keyExtractor(data) === keyExtractor(item)\n )) ||\n (type === 'single' &&\n keyExtractor(value as Data) === keyExtractor(item)))\n )\n setChecked(true);\n }, [value, keyExtractor, type]);\n\n React.useEffect(() => {\n if (type === 'multi') {\n checkedAll\n ? setChecked(true)\n : setChecked(\n (value as Data[]).find(\n data => keyExtractor(data) === keyExtractor(item)\n ) !== undefined\n );\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.findIndex(\n data => keyExtractor(data) === keyExtractor(key)\n );\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"}
|
|
@@ -45,14 +45,16 @@ const SelectContainer = (0, _styled.default)('div')`
|
|
|
45
45
|
}) => theme.spacing.deca};
|
|
46
46
|
`;
|
|
47
47
|
exports.SelectContainer = SelectContainer;
|
|
48
|
-
const NavigationButton = (0, _native.default)(_Button.Button)`
|
|
49
|
-
padding: ${({
|
|
50
|
-
theme
|
|
51
|
-
}) => theme.spacing.centi};
|
|
48
|
+
const NavigationButton = (0, _native.default)(_Button.Button)`
|
|
52
49
|
border-radius: ${({
|
|
53
50
|
theme
|
|
54
51
|
}) => theme.borderRadius.mili};
|
|
52
|
+
height: 44px;
|
|
55
53
|
justify-content: center;
|
|
54
|
+
padding: ${({
|
|
55
|
+
theme
|
|
56
|
+
}) => theme.spacing.centi};
|
|
57
|
+
width: 44px;
|
|
56
58
|
`;
|
|
57
59
|
exports.NavigationButton = NavigationButton;
|
|
58
60
|
const PageButton = (0, _native.default)(NavigationButton)`
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../src/components/organisms/DataGrid/Footer/styled.ts"],"names":["TdFooterStyled","Td","theme","spacing","centi","FlexContainer","FooterContainer","FooterContainerStart","FooterContainerEnd","SelectContainer","deca","NavigationButton","Button","borderRadius","mili","PageButton","micro","PagesContainer","HoveredText","font","color","light"],"mappings":";;;;;;;AAAA;;AACA;;AAEA;;AACA;;;;AAEO,MAAMA,cAAc,GAAG,qBAAOC,SAAP,CAAgC;AAC9D,aAAa,CAAC;AAAEC,EAAAA;AAAF,CAAD,KAAeA,KAAK,CAACC,OAAN,CAAcC,KAAM;AAChD,CAFO;;AAIA,MAAMC,aAAa,GAAG,qBAAO,KAAP,CAAc;AAC3C;AACA;AACA,CAHO;;AAKA,MAAMC,eAAe,GAAG,qBAAOD,aAAP,CAAsB;AACrD;AACA;AACA,CAHO;;AAKA,MAAME,oBAAoB,GAAG,qBAAOF,aAAP,CAAsB;AAC1D;AACA,CAFO;;AAIA,MAAMG,kBAAkB,GAAG,qBAAOH,aAAP,CAAsB;AACxD;AACA,CAFO;;AAIA,MAAMI,eAAe,GAAG,qBAAO,KAAP,CAAmC;AAClE,kBAAkB,CAAC;AAAEP,EAAAA;AAAF,CAAD,KAAeA,KAAK,CAACC,OAAN,CAAcO,IAAK;AACpD,CAFO;;AAIA,MAAMC,gBAAgB,GAAG,qBAAaC,cAAb,CAA0C;AAC1E,
|
|
1
|
+
{"version":3,"sources":["../../../../../src/components/organisms/DataGrid/Footer/styled.ts"],"names":["TdFooterStyled","Td","theme","spacing","centi","FlexContainer","FooterContainer","FooterContainerStart","FooterContainerEnd","SelectContainer","deca","NavigationButton","Button","borderRadius","mili","PageButton","micro","PagesContainer","HoveredText","font","color","light"],"mappings":";;;;;;;AAAA;;AACA;;AAEA;;AACA;;;;AAEO,MAAMA,cAAc,GAAG,qBAAOC,SAAP,CAAgC;AAC9D,aAAa,CAAC;AAAEC,EAAAA;AAAF,CAAD,KAAeA,KAAK,CAACC,OAAN,CAAcC,KAAM;AAChD,CAFO;;AAIA,MAAMC,aAAa,GAAG,qBAAO,KAAP,CAAc;AAC3C;AACA;AACA,CAHO;;AAKA,MAAMC,eAAe,GAAG,qBAAOD,aAAP,CAAsB;AACrD;AACA;AACA,CAHO;;AAKA,MAAME,oBAAoB,GAAG,qBAAOF,aAAP,CAAsB;AAC1D;AACA,CAFO;;AAIA,MAAMG,kBAAkB,GAAG,qBAAOH,aAAP,CAAsB;AACxD;AACA,CAFO;;AAIA,MAAMI,eAAe,GAAG,qBAAO,KAAP,CAAmC;AAClE,kBAAkB,CAAC;AAAEP,EAAAA;AAAF,CAAD,KAAeA,KAAK,CAACC,OAAN,CAAcO,IAAK;AACpD,CAFO;;AAIA,MAAMC,gBAAgB,GAAG,qBAAaC,cAAb,CAA0C;AAC1E,qBAAqB,CAAC;AAAEV,EAAAA;AAAF,CAAD,KAAeA,KAAK,CAACW,YAAN,CAAmBC,IAAK;AAC5D;AACA;AACA,eAAe,CAAC;AAAEZ,EAAAA;AAAF,CAAD,KAAeA,KAAK,CAACC,OAAN,CAAcC,KAAM;AAClD;AACA,CANO;;AASA,MAAMW,UAAU,GAAG,qBAAaJ,gBAAb,CAAoD;AAC9E,qBAAqB,CAAC;AAAET,EAAAA;AAAF,CAAD,KAAeA,KAAK,CAACC,OAAN,CAAcO,IAAK;AACvD,oBAAoB,CAAC;AAAER,EAAAA;AAAF,CAAD,KAAeA,KAAK,CAACC,OAAN,CAAcO,IAAK;AACtD,qBAAqB,CAAC;AAAER,EAAAA;AAAF,CAAD,KAAeA,KAAK,CAACW,YAAN,CAAmBC,IAAK;AAC5D;AACA,mBAAmB,CAAC;AAAEZ,EAAAA;AAAF,CAAD,KAAeA,KAAK,CAACC,OAAN,CAAca,KAAM;AACtD,oBAAoB,CAAC;AAAEd,EAAAA;AAAF,CAAD,KAAeA,KAAK,CAACC,OAAN,CAAca,KAAM;AACvD,CAPO;;AASA,MAAMC,cAAc,GAAG,qBAAO,KAAP,CAAmC;AACjE;AACA;AACA,CAHO;;AAKA,MAAMC,WAAW,GAAG,qBAAO,KAAP,CAAmC;AAC9D;AACA;AACA,aAAa,CAAC;AAAEhB,EAAAA;AAAF,CAAD,KAAeA,KAAK,CAACiB,IAAN,CAAWC,KAAX,CAAiBC,KAAM;AACnD;AACA,CALO","sourcesContent":["import styled from '@emotion/styled';\nimport { default as nativeStyled } from '@emotion/native';\nimport { StyleProps } from '@tecsinapse/react-core';\nimport { Td } from '../../../atoms/Table';\nimport { Button } from '../../../atoms/Button';\n\nexport const TdFooterStyled = styled(Td)<Partial<StyleProps>>`\n padding: ${({ theme }) => theme.spacing.centi} 0 0 0;\n`;\n\nexport const FlexContainer = styled('div')`\n display: flex;\n flex-grow: 1;\n`;\n\nexport const FooterContainer = styled(FlexContainer)`\n justify-content: space-between;\n align-items: center;\n`;\n\nexport const FooterContainerStart = styled(FlexContainer)`\n justify-content: flex-start;\n`;\n\nexport const FooterContainerEnd = styled(FlexContainer)`\n justify-content: flex-end;\n`;\n\nexport const SelectContainer = styled('div')<Partial<StyleProps>>`\n margin-right: ${({ theme }) => theme.spacing.deca};\n`;\n\nexport const NavigationButton = nativeStyled(Button)<Partial<StyleProps>>` \n border-radius: ${({ theme }) => theme.borderRadius.mili};\n height: 44px;\n justify-content: center;\n padding: ${({ theme }) => theme.spacing.centi};\n width: 44px; \n`;\n\n// Se o botão estiver ativo, renderizar outlined, caso contrario o botão é text\nexport const PageButton = nativeStyled(NavigationButton)<Partial<StyleProps>>`\n padding-right: ${({ theme }) => theme.spacing.deca};\n padding-left: ${({ theme }) => theme.spacing.deca};\n border-radius: ${({ theme }) => theme.borderRadius.mili};\n justify-content: center;\n margin-left: ${({ theme }) => theme.spacing.micro};\n margin-right: ${({ theme }) => theme.spacing.micro};\n`;\n\nexport const PagesContainer = styled('div')<Partial<StyleProps>>`\n margin: 0 20px;\n display: flex;\n`;\n\nexport const HoveredText = styled('div')<Partial<StyleProps>>`\n user-select: none;\n &:hover * {\n color: ${({ theme }) => theme.font.color.light};\n }\n`;\n"],"file":"styled.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.
|
|
4
|
+
"version": "1.14.0",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
7
7
|
"license": "MIT",
|
|
@@ -14,7 +14,7 @@
|
|
|
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.
|
|
17
|
+
"@tecsinapse/react-core": "^1.13.0",
|
|
18
18
|
"@types/react-native": "^0.64.4",
|
|
19
19
|
"react-native-vector-icons": "^8.1.0",
|
|
20
20
|
"react-transition-group": "^4.4.2"
|
|
@@ -33,5 +33,5 @@
|
|
|
33
33
|
"react-dom": ">=16.8.0",
|
|
34
34
|
"react-native-web": "^0.17.1"
|
|
35
35
|
},
|
|
36
|
-
"gitHead": "
|
|
36
|
+
"gitHead": "d5d2193bf8716615751e28b7009da59520e8080c"
|
|
37
37
|
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { StyledContainerDropdown } from './styled';
|
|
3
|
+
import { Transition } from 'react-transition-group';
|
|
4
|
+
import { defaultStyles, transition } from '../../molecules/Select/animations';
|
|
5
|
+
import { Dispatch, SetStateAction } from 'react';
|
|
6
|
+
import { useClickAwayListener } from '@tecsinapse/react-web-kit';
|
|
7
|
+
|
|
8
|
+
export interface DropdownProps {
|
|
9
|
+
visible: boolean;
|
|
10
|
+
setVisible: Dispatch<SetStateAction<boolean>>;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
const Component: React.FC<DropdownProps & { children: JSX.Element }> = ({
|
|
14
|
+
visible,
|
|
15
|
+
setVisible,
|
|
16
|
+
children,
|
|
17
|
+
}): JSX.Element => {
|
|
18
|
+
const refDropDown = React.useRef(null);
|
|
19
|
+
useClickAwayListener(refDropDown, setVisible);
|
|
20
|
+
|
|
21
|
+
return (
|
|
22
|
+
<Transition in={visible} timeout={300}>
|
|
23
|
+
{state => (
|
|
24
|
+
<StyledContainerDropdown
|
|
25
|
+
style={{ ...defaultStyles, ...transition['bottom'][state] }}
|
|
26
|
+
ref={refDropDown}
|
|
27
|
+
>
|
|
28
|
+
{children}
|
|
29
|
+
</StyledContainerDropdown>
|
|
30
|
+
)}
|
|
31
|
+
</Transition>
|
|
32
|
+
);
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
export const Dropdown = Component;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import styled from '@emotion/styled';
|
|
2
|
+
import { hex2rgba, StyleProps } from '@tecsinapse/react-core';
|
|
3
|
+
|
|
4
|
+
export const StyledContainerDropdown = styled('div')<Partial<StyleProps>>`
|
|
5
|
+
width: auto;
|
|
6
|
+
background-color: ${({ theme }: StyleProps) =>
|
|
7
|
+
theme.miscellaneous.surfaceColor};
|
|
8
|
+
border-radius: ${({ theme }: StyleProps) => theme.borderRadius.mili};
|
|
9
|
+
box-shadow: 0 2px 8px
|
|
10
|
+
${({ theme }: StyleProps) => hex2rgba(theme.miscellaneous.shadow, 0.05)};
|
|
11
|
+
position: absolute;
|
|
12
|
+
padding-bottom: ${({ theme }: StyleProps) => theme.spacing.mili};
|
|
13
|
+
margin-top: 8px;
|
|
14
|
+
z-index: ${({ theme }: StyleProps) => theme.zIndex.select};
|
|
15
|
+
`;
|
|
@@ -1,29 +1,69 @@
|
|
|
1
1
|
import {
|
|
2
2
|
Calendar,
|
|
3
|
-
DatePicker as DatePickerCore,
|
|
3
|
+
DatePicker as DatePickerCore,
|
|
4
|
+
DatePickerProps,
|
|
5
|
+
DateRange,
|
|
6
|
+
SelectionType,
|
|
4
7
|
} from '@tecsinapse/react-core';
|
|
5
|
-
import React, { useCallback, useState } from 'react';
|
|
6
|
-
import {
|
|
8
|
+
import React, { useCallback, useMemo, useState } from 'react';
|
|
9
|
+
import { Dropdown } from '../../atoms/Dropdown';
|
|
7
10
|
|
|
8
|
-
export type WebDatePickerProps<T extends SelectionType> = Omit<
|
|
11
|
+
export type WebDatePickerProps<T extends SelectionType> = Omit<
|
|
12
|
+
DatePickerProps<T>,
|
|
13
|
+
| 'CalendarComponent'
|
|
14
|
+
| 'renderCalendar'
|
|
15
|
+
| 'requestCloseCalendar'
|
|
16
|
+
| 'requestShowCalendar'
|
|
17
|
+
>;
|
|
9
18
|
|
|
10
|
-
export const DatePicker = <T extends SelectionType>({
|
|
19
|
+
export const DatePicker = <T extends SelectionType>({
|
|
20
|
+
value,
|
|
21
|
+
type,
|
|
22
|
+
...rest
|
|
23
|
+
}: WebDatePickerProps<T>): JSX.Element => {
|
|
24
|
+
const [visible, setVisible] = useState(false);
|
|
25
|
+
const show = useCallback(() => setVisible(true), []);
|
|
26
|
+
const close = useCallback(() => setVisible(false), []);
|
|
27
|
+
|
|
28
|
+
const getYear = useMemo(() => {
|
|
29
|
+
if (value) {
|
|
30
|
+
if (type === 'range') {
|
|
31
|
+
if ((value as DateRange).lowest !== undefined)
|
|
32
|
+
return new Date((value as DateRange).lowest).getFullYear();
|
|
33
|
+
} else {
|
|
34
|
+
return new Date(value as Date).getFullYear();
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
return undefined;
|
|
38
|
+
}, [value]);
|
|
39
|
+
|
|
40
|
+
const getMonth = useMemo(() => {
|
|
41
|
+
if (value) {
|
|
42
|
+
if (type === 'range') {
|
|
43
|
+
if ((value as DateRange).lowest !== undefined)
|
|
44
|
+
return new Date((value as DateRange).lowest).getMonth();
|
|
45
|
+
} else {
|
|
46
|
+
return new Date(value as Date).getMonth();
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
return undefined;
|
|
50
|
+
}, [value]);
|
|
11
51
|
|
|
12
|
-
const [ visible, setVisible ] = useState(false)
|
|
13
|
-
const show = useCallback(() => setVisible(true), [])
|
|
14
|
-
const close = useCallback(() => setVisible(false), [])
|
|
15
|
-
|
|
16
52
|
return (
|
|
17
53
|
<DatePickerCore
|
|
18
54
|
{...rest}
|
|
19
55
|
CalendarComponent={Calendar}
|
|
56
|
+
value={value}
|
|
57
|
+
type={type}
|
|
58
|
+
year={getYear}
|
|
59
|
+
month={getMonth}
|
|
20
60
|
requestShowCalendar={show}
|
|
21
61
|
requestCloseCalendar={close}
|
|
22
|
-
renderCalendar={
|
|
23
|
-
<
|
|
62
|
+
renderCalendar={calendar => (
|
|
63
|
+
<Dropdown visible={visible} setVisible={setVisible}>
|
|
24
64
|
{calendar}
|
|
25
|
-
</
|
|
65
|
+
</Dropdown>
|
|
26
66
|
)}
|
|
27
67
|
/>
|
|
28
68
|
);
|
|
29
|
-
};
|
|
69
|
+
};
|
|
@@ -14,14 +14,19 @@ const Template: Story<DateTimePickerProps> = ({ ...args }) => {
|
|
|
14
14
|
|
|
15
15
|
return (
|
|
16
16
|
<DateTimePicker
|
|
17
|
-
label={'Select date and time'}
|
|
18
|
-
placeholder={'Select date and time'}
|
|
19
|
-
mode={'datetime'}
|
|
20
17
|
value={value}
|
|
21
18
|
onChange={setValue}
|
|
22
19
|
locale={ptBR}
|
|
20
|
+
{...args}
|
|
23
21
|
/>
|
|
24
22
|
);
|
|
25
23
|
};
|
|
26
24
|
|
|
27
25
|
export const Base = Template.bind({});
|
|
26
|
+
|
|
27
|
+
Base.args = {
|
|
28
|
+
mode: 'datetime',
|
|
29
|
+
format: 'dd/MM/yyyy HH:mm',
|
|
30
|
+
label: 'Select date and time',
|
|
31
|
+
placeholder: 'Select date and time'
|
|
32
|
+
};
|
|
@@ -1,29 +1,31 @@
|
|
|
1
1
|
import {
|
|
2
|
-
|
|
3
|
-
|
|
2
|
+
DateTimePicker as DateTimePickerCore,
|
|
3
|
+
DateTimePickerProps,
|
|
4
4
|
} from '@tecsinapse/react-core';
|
|
5
5
|
import React, { FC, useCallback, useState } from 'react';
|
|
6
|
-
import {
|
|
6
|
+
import { Dropdown } from '../../atoms/Dropdown';
|
|
7
7
|
|
|
8
|
-
|
|
9
|
-
|
|
8
|
+
export type WebDateTimePickerProps = Omit<
|
|
9
|
+
DateTimePickerProps,
|
|
10
|
+
'renderSelector' | 'requestShowSelector' | 'requestCloseSelector'
|
|
11
|
+
>;
|
|
10
12
|
|
|
11
13
|
export const DateTimePicker: FC<WebDateTimePickerProps> = ({ ...rest }) => {
|
|
14
|
+
const [visible, setVisible] = useState<boolean>(false);
|
|
12
15
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
const close = useCallback(() => setVisible(false), [])
|
|
16
|
+
const show = useCallback(() => setVisible(true), []);
|
|
17
|
+
const close = useCallback(() => setVisible(false), []);
|
|
16
18
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
19
|
+
return (
|
|
20
|
+
<DateTimePickerCore
|
|
21
|
+
{...rest}
|
|
22
|
+
requestShowSelector={show}
|
|
23
|
+
requestCloseSelector={close}
|
|
24
|
+
renderSelector={selector => (
|
|
25
|
+
<Dropdown visible={visible} setVisible={setVisible}>
|
|
26
|
+
{selector}
|
|
27
|
+
</Dropdown>
|
|
28
|
+
)}
|
|
29
|
+
/>
|
|
30
|
+
);
|
|
29
31
|
};
|
|
@@ -28,6 +28,7 @@ const SelectItem = <Data, Type extends 'single' | 'multi'>({
|
|
|
28
28
|
checkedAll,
|
|
29
29
|
setCheckedAll,
|
|
30
30
|
lenghtOptions,
|
|
31
|
+
keyExtractor,
|
|
31
32
|
}: SelectItemProps<Data, Type> & {
|
|
32
33
|
setDropDownVisible: (t: boolean) => void;
|
|
33
34
|
checkedAll: boolean;
|
|
@@ -36,13 +37,36 @@ const SelectItem = <Data, Type extends 'single' | 'multi'>({
|
|
|
36
37
|
}): JSX.Element => {
|
|
37
38
|
const isMulti = type === 'multi';
|
|
38
39
|
const [checked, setChecked] = React.useState<boolean>(
|
|
39
|
-
value !== undefined &&
|
|
40
|
+
value !== undefined &&
|
|
41
|
+
type === 'multi' &&
|
|
42
|
+
(value as Data[]).find(
|
|
43
|
+
data => keyExtractor(data) === keyExtractor(item)
|
|
44
|
+
) !== undefined
|
|
40
45
|
);
|
|
46
|
+
|
|
47
|
+
React.useEffect(() => {
|
|
48
|
+
if (
|
|
49
|
+
!checked &&
|
|
50
|
+
value !== undefined &&
|
|
51
|
+
((type === 'multi' &&
|
|
52
|
+
(value as Data[]).find(
|
|
53
|
+
data => keyExtractor(data) === keyExtractor(item)
|
|
54
|
+
)) ||
|
|
55
|
+
(type === 'single' &&
|
|
56
|
+
keyExtractor(value as Data) === keyExtractor(item)))
|
|
57
|
+
)
|
|
58
|
+
setChecked(true);
|
|
59
|
+
}, [value, keyExtractor, type]);
|
|
60
|
+
|
|
41
61
|
React.useEffect(() => {
|
|
42
62
|
if (type === 'multi') {
|
|
43
63
|
checkedAll
|
|
44
64
|
? setChecked(true)
|
|
45
|
-
: setChecked(
|
|
65
|
+
: setChecked(
|
|
66
|
+
(value as Data[]).find(
|
|
67
|
+
data => keyExtractor(data) === keyExtractor(item)
|
|
68
|
+
) !== undefined
|
|
69
|
+
);
|
|
46
70
|
}
|
|
47
71
|
}, [checkedAll]);
|
|
48
72
|
|
|
@@ -59,7 +83,9 @@ const SelectItem = <Data, Type extends 'single' | 'multi'>({
|
|
|
59
83
|
[..._value, key].length === lenghtOptions && setCheckedAll(true);
|
|
60
84
|
} else {
|
|
61
85
|
const auxArray: Data[] = [..._value];
|
|
62
|
-
const indexToExclude = auxArray.
|
|
86
|
+
const indexToExclude = auxArray.findIndex(
|
|
87
|
+
data => keyExtractor(data) === keyExtractor(key)
|
|
88
|
+
);
|
|
63
89
|
auxArray.splice(indexToExclude, 1);
|
|
64
90
|
onSelect([...auxArray] as OnSelectArg);
|
|
65
91
|
setCheckedAll(false);
|
|
@@ -30,10 +30,12 @@ export const SelectContainer = styled('div')<Partial<StyleProps>>`
|
|
|
30
30
|
margin-right: ${({ theme }) => theme.spacing.deca};
|
|
31
31
|
`;
|
|
32
32
|
|
|
33
|
-
export const NavigationButton = nativeStyled(Button)<Partial<StyleProps>>`
|
|
34
|
-
padding: ${({ theme }) => theme.spacing.centi};
|
|
33
|
+
export const NavigationButton = nativeStyled(Button)<Partial<StyleProps>>`
|
|
35
34
|
border-radius: ${({ theme }) => theme.borderRadius.mili};
|
|
35
|
+
height: 44px;
|
|
36
36
|
justify-content: center;
|
|
37
|
+
padding: ${({ theme }) => theme.spacing.centi};
|
|
38
|
+
width: 44px;
|
|
37
39
|
`;
|
|
38
40
|
|
|
39
41
|
// Se o botão estiver ativo, renderizar outlined, caso contrario o botão é text
|