@tecsinapse/react-web-kit 1.13.0 → 1.15.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +38 -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/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/atoms/Input/Input.stories.tsx +71 -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/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,44 @@
|
|
|
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.15.2](https://github.com/tecsinapse/design-system/compare/@tecsinapse/react-web-kit@1.15.1...@tecsinapse/react-web-kit@1.15.2) (2022-02-15)
|
|
7
|
+
|
|
8
|
+
**Note:** Version bump only for package @tecsinapse/react-web-kit
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
## [1.15.1](https://github.com/tecsinapse/design-system/compare/@tecsinapse/react-web-kit@1.15.0...@tecsinapse/react-web-kit@1.15.1) (2022-02-15)
|
|
15
|
+
|
|
16
|
+
**Note:** Version bump only for package @tecsinapse/react-web-kit
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
# [1.15.0](https://github.com/tecsinapse/design-system/compare/@tecsinapse/react-web-kit@1.14.0...@tecsinapse/react-web-kit@1.15.0) (2022-02-14)
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
### Bug Fixes
|
|
26
|
+
|
|
27
|
+
* formatWithMask util. Refactoring on useNumberMask and useStringMask hooks. ([76920f6](https://github.com/tecsinapse/design-system/commit/76920f62fb8cf9070b9b2e477dc720e9b7b24077))
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
# [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)
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
### Bug Fixes
|
|
37
|
+
|
|
38
|
+
* DateTimePicker stories ([e6cf5c1](https://github.com/tecsinapse/design-system/commit/e6cf5c1a4c11eb4113daa77fc4e5beb89c775793))
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
|
|
6
44
|
# [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)
|
|
7
45
|
|
|
8
46
|
**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"}
|
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.15.2",
|
|
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.14.2",
|
|
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": "77f184e195dd967e7ed41aca0f562b25808e2126"
|
|
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
|
+
`;
|
|
@@ -2,6 +2,8 @@ import { action } from '@storybook/addon-actions';
|
|
|
2
2
|
import { Story } from '@storybook/react';
|
|
3
3
|
import React, { useState } from 'react';
|
|
4
4
|
import Input, { InputWebProps } from './Input';
|
|
5
|
+
import { Masks } from '@tecsinapse/react-core/src';
|
|
6
|
+
import { CurrencyOptions } from '@tecsinapse/react-core/src/components/atoms/Input/hooks/useNumberMask';
|
|
5
7
|
|
|
6
8
|
export default {
|
|
7
9
|
title: 'Hybrid/Input',
|
|
@@ -37,3 +39,72 @@ Base.args = {
|
|
|
37
39
|
disabled: false,
|
|
38
40
|
label: 'Login',
|
|
39
41
|
};
|
|
42
|
+
|
|
43
|
+
const TemplateStringMask: Story<InputWebProps> = args => {
|
|
44
|
+
const [value, setValue] = useState<string>('');
|
|
45
|
+
|
|
46
|
+
const onChange = text => {
|
|
47
|
+
setValue(text);
|
|
48
|
+
if (args.onChange) {
|
|
49
|
+
args.onChange(text);
|
|
50
|
+
}
|
|
51
|
+
};
|
|
52
|
+
|
|
53
|
+
return (
|
|
54
|
+
<Input
|
|
55
|
+
{...args}
|
|
56
|
+
label={args.label}
|
|
57
|
+
value={value}
|
|
58
|
+
onChange={onChange}
|
|
59
|
+
placeholder={args.placeholder}
|
|
60
|
+
mask={Masks.COMBINED_PHONE}
|
|
61
|
+
/>
|
|
62
|
+
);
|
|
63
|
+
};
|
|
64
|
+
|
|
65
|
+
export const StringMask = TemplateStringMask.bind({});
|
|
66
|
+
|
|
67
|
+
StringMask.args = {
|
|
68
|
+
onChange: value => action('onChange')(value),
|
|
69
|
+
placeholder: 'Type your phone',
|
|
70
|
+
disabled: false,
|
|
71
|
+
label: 'Phone',
|
|
72
|
+
};
|
|
73
|
+
|
|
74
|
+
const TemplateNumberMask: Story<InputWebProps> = args => {
|
|
75
|
+
const [value, setValue] = useState<number>(1200.2);
|
|
76
|
+
|
|
77
|
+
const onChange = text => {
|
|
78
|
+
setValue(text);
|
|
79
|
+
if (args.onChange) {
|
|
80
|
+
args.onChange(text);
|
|
81
|
+
}
|
|
82
|
+
};
|
|
83
|
+
|
|
84
|
+
const numberMaskExample: CurrencyOptions = {
|
|
85
|
+
symbol: 'R$ ',
|
|
86
|
+
separator: '.',
|
|
87
|
+
decimal: ',',
|
|
88
|
+
precision: 2,
|
|
89
|
+
};
|
|
90
|
+
|
|
91
|
+
return (
|
|
92
|
+
<Input
|
|
93
|
+
{...args}
|
|
94
|
+
label={args.label}
|
|
95
|
+
value={value}
|
|
96
|
+
onChange={onChange}
|
|
97
|
+
placeholder={args.placeholder}
|
|
98
|
+
mask={numberMaskExample}
|
|
99
|
+
/>
|
|
100
|
+
);
|
|
101
|
+
};
|
|
102
|
+
|
|
103
|
+
export const NumberMask = TemplateNumberMask.bind({});
|
|
104
|
+
|
|
105
|
+
NumberMask.args = {
|
|
106
|
+
onChange: value => action('onChange')(value),
|
|
107
|
+
placeholder: 'Type the price in R$',
|
|
108
|
+
disabled: false,
|
|
109
|
+
label: 'Price',
|
|
110
|
+
};
|
|
@@ -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
|
};
|