@tecsinapse/react-web-kit 1.12.13 → 1.15.1

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 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.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)
7
+
8
+ **Note:** Version bump only for package @tecsinapse/react-web-kit
9
+
10
+
11
+
12
+
13
+
14
+ # [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)
15
+
16
+
17
+ ### Bug Fixes
18
+
19
+ * formatWithMask util. Refactoring on useNumberMask and useStringMask hooks. ([76920f6](https://github.com/tecsinapse/design-system/commit/76920f62fb8cf9070b9b2e477dc720e9b7b24077))
20
+
21
+
22
+
23
+
24
+
25
+ # [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)
26
+
27
+
28
+ ### Bug Fixes
29
+
30
+ * DateTimePicker stories ([e6cf5c1](https://github.com/tecsinapse/design-system/commit/e6cf5c1a4c11eb4113daa77fc4e5beb89c775793))
31
+
32
+
33
+
34
+
35
+
36
+ # [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)
37
+
38
+ **Note:** Version bump only for package @tecsinapse/react-web-kit
39
+
40
+
41
+
42
+
43
+
6
44
  ## [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)
7
45
 
8
46
 
@@ -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,2 @@
1
+ /// <reference types="react" />
2
+ export declare const StyledContainerDropdown: import("@emotion/styled").StyledComponent<any, import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
@@ -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 _Modal = require("./Modal");
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 = ({ ...rest
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(_Modal.Modal, {
30
- animationType: "fade",
58
+ renderCalendar: calendar => _react.default.createElement(_Dropdown.Dropdown, {
31
59
  visible: visible,
32
- onRequestClose: close
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;;AAIA;;AACA;;;;;;;;AAIO,MAAMA,UAAU,GAAG,CAA0B,EAAE,GAAGC;AAAL,CAA1B,KAA8E;AAEtG,QAAM,CAAEC,OAAF,EAAWC,UAAX,IAA0B,qBAAS,KAAT,CAAhC;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,SACE,6BAAC,qBAAD,eACMF,IADN;AAEE,IAAA,iBAAiB,EAAEK,mBAFrB;AAGE,IAAA,mBAAmB,EAAEF,IAHvB;AAIE,IAAA,oBAAoB,EAAEC,KAJxB;AAKE,IAAA,cAAc,EAAGE,QAAD,IACd,6BAAC,YAAD;AAAO,MAAA,aAAa,EAAC,MAArB;AAA4B,MAAA,OAAO,EAAEL,OAArC;AAA8C,MAAA,cAAc,EAAEG;AAA9D,OACGE,QADH;AANJ,KADF;AAaD,CAnBM","sourcesContent":["import {\n Calendar,\n DatePicker as DatePickerCore, DatePickerProps, SelectionType\n} from '@tecsinapse/react-core';\nimport React, { useCallback, useState } from 'react';\nimport { Modal } from './Modal';\n\nexport type WebDatePickerProps<T extends SelectionType> = Omit<DatePickerProps<T>, 'CalendarComponent' | 'renderCalendar' | 'requestCloseCalendar' | 'requestShowCalendar'>\n\nexport const DatePicker = <T extends SelectionType>({ ...rest }: WebDatePickerProps<T>): JSX.Element => {\n\n const [ visible, setVisible ] = useState(false)\n const show = useCallback(() => setVisible(true), [])\n const close = useCallback(() => setVisible(false), [])\n \n return (\n <DatePickerCore\n {...rest}\n CalendarComponent={Calendar}\n requestShowCalendar={show}\n requestCloseCalendar={close}\n renderCalendar={(calendar) => (\n <Modal animationType='fade' visible={visible} onRequestClose={close}>\n {calendar}\n </Modal>\n )}\n />\n );\n};"],"file":"DatePicker.js"}
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 _Modal = require("./Modal");
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(_Modal.Modal, {
29
- animationType: "fade",
28
+ renderSelector: selector => _react.default.createElement(_Dropdown.Dropdown, {
30
29
  visible: visible,
31
- onRequestClose: close
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;;;;;;;;AAKO,MAAMA,cAA0C,GAAG,CAAC,EAAE,GAAGC;AAAL,CAAD,KAAiB;AAEvE,QAAM,CAAEC,OAAF,EAAWC,UAAX,IAA0B,qBAAS,KAAT,CAAhC;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,SACI,6BAAC,yBAAD,eACQF,IADR;AAEI,IAAA,mBAAmB,EAAEG,IAFzB;AAGI,IAAA,oBAAoB,EAAEC,KAH1B;AAII,IAAA,cAAc,EAAGC,QAAD,IACZ,6BAAC,YAAD;AAAO,MAAA,aAAa,EAAC,MAArB;AAA4B,MAAA,OAAO,EAAEJ,OAArC;AAA8C,MAAA,cAAc,EAAEG;AAA9D,OACKC,QADL;AALR,KADJ;AAYH,CAlBM","sourcesContent":["import {\n DateTimePicker as DateTimePickerCore,\n DateTimePickerProps\n} from '@tecsinapse/react-core';\nimport React, { FC, useCallback, useState } from 'react';\nimport { Modal } from './Modal';\n\n\nexport type WebDateTimePickerProps = Omit<DateTimePickerProps, 'renderSelector' | 'requestShowSelector' | 'requestCloseSelector'>\n\nexport const DateTimePicker: FC<WebDateTimePickerProps> = ({ ...rest }) => {\n\n const [ visible, setVisible ] = useState(false)\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 <Modal animationType='fade' visible={visible} onRequestClose={close}>\n {selector}\n </Modal>\n )}\n />\n );\n};\n"],"file":"DateTimePicker.js"}
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.12.13",
4
+ "version": "1.15.1",
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.12.10",
17
+ "@tecsinapse/react-core": "^1.14.1",
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": "89853e05d039d029e66401700b450dc9be58de3e"
36
+ "gitHead": "ef157467114bc242b024128fda8ed09b672f3167"
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
+ };
@@ -23,7 +23,7 @@ Range.args = {
23
23
  label: 'Select date',
24
24
  placeholder: 'Select date',
25
25
  type: 'range',
26
- closeOnPick: true,
26
+ closeOnPick: false,
27
27
  };
28
28
 
29
29
  const TemplateDay: Story<DatePickerProps<'day'>> = args => {
@@ -1,29 +1,69 @@
1
1
  import {
2
2
  Calendar,
3
- DatePicker as DatePickerCore, DatePickerProps, SelectionType
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 { Modal } from './Modal';
8
+ import React, { useCallback, useMemo, useState } from 'react';
9
+ import { Dropdown } from '../../atoms/Dropdown';
7
10
 
8
- export type WebDatePickerProps<T extends SelectionType> = Omit<DatePickerProps<T>, 'CalendarComponent' | 'renderCalendar' | 'requestCloseCalendar' | 'requestShowCalendar'>
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>({ ...rest }: WebDatePickerProps<T>): JSX.Element => {
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={(calendar) => (
23
- <Modal animationType='fade' visible={visible} onRequestClose={close}>
62
+ renderCalendar={calendar => (
63
+ <Dropdown visible={visible} setVisible={setVisible}>
24
64
  {calendar}
25
- </Modal>
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
- DateTimePicker as DateTimePickerCore,
3
- DateTimePickerProps
2
+ DateTimePicker as DateTimePickerCore,
3
+ DateTimePickerProps,
4
4
  } from '@tecsinapse/react-core';
5
5
  import React, { FC, useCallback, useState } from 'react';
6
- import { Modal } from './Modal';
6
+ import { Dropdown } from '../../atoms/Dropdown';
7
7
 
8
-
9
- export type WebDateTimePickerProps = Omit<DateTimePickerProps, 'renderSelector' | 'requestShowSelector' | 'requestCloseSelector'>
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
- const [ visible, setVisible ] = useState(false)
14
- const show = useCallback(() => setVisible(true), [])
15
- const close = useCallback(() => setVisible(false), [])
16
+ const show = useCallback(() => setVisible(true), []);
17
+ const close = useCallback(() => setVisible(false), []);
16
18
 
17
- return (
18
- <DateTimePickerCore
19
- {...rest}
20
- requestShowSelector={show}
21
- requestCloseSelector={close}
22
- renderSelector={(selector) => (
23
- <Modal animationType='fade' visible={visible} onRequestClose={close}>
24
- {selector}
25
- </Modal>
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
  };