react-asc 21.3.1 → 22.0.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.
@@ -0,0 +1,8 @@
1
+ import React from "react";
2
+ interface ICssTransitionProps {
3
+ className: string;
4
+ children: React.ReactNode;
5
+ show: boolean | undefined;
6
+ }
7
+ export declare const CssTransition: (props: ICssTransitionProps) => JSX.Element;
8
+ export {};
@@ -0,0 +1 @@
1
+ export * from './CssTransition';
@@ -10,6 +10,7 @@ export * from './Card';
10
10
  export * from './ConditionalWrapper';
11
11
  export * from './Checkbox';
12
12
  export * from './Chip';
13
+ export * from './CssTransition';
13
14
  export * from './DateSelect';
14
15
  export * from './Drawer';
15
16
  export * from './Menu';
package/index.es.js CHANGED
@@ -776,6 +776,71 @@ const Chip = (props) => {
776
776
  isDeletable && (React.createElement("div", { className: styles$C.deleteIcon, onClick: e => handleClickOnDelete(e) }, deleteIcon))));
777
777
  };
778
778
 
779
+ const CssTransition = (props) => {
780
+ const { className, children, show } = props;
781
+ const [isShow, setIsShow] = useState(undefined);
782
+ const [cssState, setCssState] = useState({
783
+ hidden: true
784
+ });
785
+ const transitionConainter = useRef(null);
786
+ useEffect(() => {
787
+ if (show !== undefined) {
788
+ setIsShow(show);
789
+ }
790
+ }, [show]);
791
+ const nextFrame = () => {
792
+ return new Promise((resolve) => {
793
+ requestAnimationFrame(() => {
794
+ requestAnimationFrame(resolve);
795
+ });
796
+ });
797
+ };
798
+ const afterTransition = (element) => {
799
+ return new Promise((resolve) => {
800
+ if (element) {
801
+ const duration = Number(getComputedStyle(element).transitionDuration.replace("s", "")) * 1000;
802
+ setTimeout(() => { resolve(); }, duration);
803
+ }
804
+ else {
805
+ resolve();
806
+ }
807
+ });
808
+ };
809
+ const renderAnimation = async (show) => {
810
+ if (show === true) {
811
+ setCssState({ enter: true, enterStart: true });
812
+ await nextFrame();
813
+ setCssState({ enter: true, enterEnd: true });
814
+ await afterTransition(transitionConainter.current);
815
+ setCssState(undefined);
816
+ }
817
+ if (show === false) {
818
+ setCssState({ leave: true, leaveStart: true });
819
+ await nextFrame();
820
+ setCssState({ leave: true, leaveEnd: true });
821
+ await afterTransition(transitionConainter.current);
822
+ setCssState({ hidden: true });
823
+ }
824
+ };
825
+ useEffect(() => {
826
+ if (isShow !== undefined && (isShow === true || isShow === false)) {
827
+ renderAnimation(isShow);
828
+ }
829
+ }, [isShow]);
830
+ const getCssClasses = () => {
831
+ const cssClasses = [];
832
+ (cssState === null || cssState === void 0 ? void 0 : cssState.hidden) && cssClasses.push(`hidden`);
833
+ (cssState === null || cssState === void 0 ? void 0 : cssState.enter) && cssClasses.push(`${className}-enter`);
834
+ (cssState === null || cssState === void 0 ? void 0 : cssState.enterStart) && cssClasses.push(`${className}-enter-start`);
835
+ (cssState === null || cssState === void 0 ? void 0 : cssState.enterEnd) && cssClasses.push(`${className}-enter-end`);
836
+ (cssState === null || cssState === void 0 ? void 0 : cssState.leave) && cssClasses.push(`${className}-leave`);
837
+ (cssState === null || cssState === void 0 ? void 0 : cssState.leaveStart) && cssClasses.push(`${className}-leave-start`);
838
+ (cssState === null || cssState === void 0 ? void 0 : cssState.leaveEnd) && cssClasses.push(`${className}-leave-end`);
839
+ return cssClasses.filter((css) => css).join(" ");
840
+ };
841
+ return (React.createElement("div", { ref: transitionConainter, className: getCssClasses() }, children));
842
+ };
843
+
779
844
  var css_248z$B = ".Column-module_column__fcTgl {\n flex: 1 0 0%; }\n\n@media (max-width: 575.98px) {\n .Column-module_column__fcTgl {\n flex: 1; } }\n";
780
845
  var styles$B = {"column":"Column-module_column__fcTgl"};
781
846
  styleInject(css_248z$B);
@@ -2651,4 +2716,4 @@ const TreeItem = (props) => {
2651
2716
  children && _isExpanded ? React.createElement("ul", null, children) : null));
2652
2717
  };
2653
2718
 
2654
- export { Alert, AppBar, AppBarTitle, AutoComplete, Backdrop, Badge, Breadcrumb, BreadcrumbItem, Button, ButtonGroup, COLOR, Card, CardBody, CardFooter, CardImage, CardSubtitle, CardText, CardTitle, CaretDownSolidIcon, CheckSolidIcon, CheckSquareRegularIcon, Checkbox, ChevronDownSolidIcon, ChevronLeftSolidIcon, ChevronRightSolidIcon, ChevronUpSolidIcon, Chip, CircleSolidIcon, Column, ConditionalWrapper, DATEMODE, DateSelect, DaySelect, Drawer, EmailValidator, ExpansionPanel, ExpansionPanelContent, ExpansionPanelHeader, FileInput, FloatingActionButton, Form, FormControl, FormError, FormGroup, FormHint, FormInput, FormLabel, GlobalModal, HomeSolidIcon, HourSelect, Icon, IconButton, IsEmptyValidator, IsEqualValidator, Link, List, ListItem, ListItemAction, ListItemAvatar, ListItemIcon, ListItemText, LoadingIndicator, LoadingIndicatorContainer, MODALBUTTONTYPE, MODALTYPE, Menu, MenuBody, MenuDivider, MenuItem, MenuToggle, MilliSecondSelect, MinuteSelect, Modal, ModalBody, ModalFooter, ModalHeader, MonthSelect, NumberSelect, POSITION, PlusSolidIcon, Row, SIZE, STATUS, SecondSelect, Select, Sidebar, Snackbar, SpeedDial, SpeedDialAction, SpeedDialIcon, SpinnerSolidIcon, SquareRegularIcon, Step, Stepper, StepperActions, TIMEMODE, Tab, TabPanel, Table, TableBody, TableCell, TableHead, TableRow, Tabs, Textarea, TimeSelect, TimesCircleSolidIcon, TimesSolidIcon, Tooltip, TreeItem, TreeView, Typography, VARIANT, YearSelect, loadingIndicatorService, modalService, snackbarService, useConstructor, useCssClasses, useDebounce, useHover, useWindowSize };
2719
+ export { Alert, AppBar, AppBarTitle, AutoComplete, Backdrop, Badge, Breadcrumb, BreadcrumbItem, Button, ButtonGroup, COLOR, Card, CardBody, CardFooter, CardImage, CardSubtitle, CardText, CardTitle, CaretDownSolidIcon, CheckSolidIcon, CheckSquareRegularIcon, Checkbox, ChevronDownSolidIcon, ChevronLeftSolidIcon, ChevronRightSolidIcon, ChevronUpSolidIcon, Chip, CircleSolidIcon, Column, ConditionalWrapper, CssTransition, DATEMODE, DateSelect, DaySelect, Drawer, EmailValidator, ExpansionPanel, ExpansionPanelContent, ExpansionPanelHeader, FileInput, FloatingActionButton, Form, FormControl, FormError, FormGroup, FormHint, FormInput, FormLabel, GlobalModal, HomeSolidIcon, HourSelect, Icon, IconButton, IsEmptyValidator, IsEqualValidator, Link, List, ListItem, ListItemAction, ListItemAvatar, ListItemIcon, ListItemText, LoadingIndicator, LoadingIndicatorContainer, MODALBUTTONTYPE, MODALTYPE, Menu, MenuBody, MenuDivider, MenuItem, MenuToggle, MilliSecondSelect, MinuteSelect, Modal, ModalBody, ModalFooter, ModalHeader, MonthSelect, NumberSelect, POSITION, PlusSolidIcon, Row, SIZE, STATUS, SecondSelect, Select, Sidebar, Snackbar, SpeedDial, SpeedDialAction, SpeedDialIcon, SpinnerSolidIcon, SquareRegularIcon, Step, Stepper, StepperActions, TIMEMODE, Tab, TabPanel, Table, TableBody, TableCell, TableHead, TableRow, Tabs, Textarea, TimeSelect, TimesCircleSolidIcon, TimesSolidIcon, Tooltip, TreeItem, TreeView, Typography, VARIANT, YearSelect, loadingIndicatorService, modalService, snackbarService, useConstructor, useCssClasses, useDebounce, useHover, useWindowSize };
package/index.js CHANGED
@@ -784,6 +784,71 @@ const Chip = (props) => {
784
784
  isDeletable && (React__default["default"].createElement("div", { className: styles$C.deleteIcon, onClick: e => handleClickOnDelete(e) }, deleteIcon))));
785
785
  };
786
786
 
787
+ const CssTransition = (props) => {
788
+ const { className, children, show } = props;
789
+ const [isShow, setIsShow] = React.useState(undefined);
790
+ const [cssState, setCssState] = React.useState({
791
+ hidden: true
792
+ });
793
+ const transitionConainter = React.useRef(null);
794
+ React.useEffect(() => {
795
+ if (show !== undefined) {
796
+ setIsShow(show);
797
+ }
798
+ }, [show]);
799
+ const nextFrame = () => {
800
+ return new Promise((resolve) => {
801
+ requestAnimationFrame(() => {
802
+ requestAnimationFrame(resolve);
803
+ });
804
+ });
805
+ };
806
+ const afterTransition = (element) => {
807
+ return new Promise((resolve) => {
808
+ if (element) {
809
+ const duration = Number(getComputedStyle(element).transitionDuration.replace("s", "")) * 1000;
810
+ setTimeout(() => { resolve(); }, duration);
811
+ }
812
+ else {
813
+ resolve();
814
+ }
815
+ });
816
+ };
817
+ const renderAnimation = async (show) => {
818
+ if (show === true) {
819
+ setCssState({ enter: true, enterStart: true });
820
+ await nextFrame();
821
+ setCssState({ enter: true, enterEnd: true });
822
+ await afterTransition(transitionConainter.current);
823
+ setCssState(undefined);
824
+ }
825
+ if (show === false) {
826
+ setCssState({ leave: true, leaveStart: true });
827
+ await nextFrame();
828
+ setCssState({ leave: true, leaveEnd: true });
829
+ await afterTransition(transitionConainter.current);
830
+ setCssState({ hidden: true });
831
+ }
832
+ };
833
+ React.useEffect(() => {
834
+ if (isShow !== undefined && (isShow === true || isShow === false)) {
835
+ renderAnimation(isShow);
836
+ }
837
+ }, [isShow]);
838
+ const getCssClasses = () => {
839
+ const cssClasses = [];
840
+ (cssState === null || cssState === void 0 ? void 0 : cssState.hidden) && cssClasses.push(`hidden`);
841
+ (cssState === null || cssState === void 0 ? void 0 : cssState.enter) && cssClasses.push(`${className}-enter`);
842
+ (cssState === null || cssState === void 0 ? void 0 : cssState.enterStart) && cssClasses.push(`${className}-enter-start`);
843
+ (cssState === null || cssState === void 0 ? void 0 : cssState.enterEnd) && cssClasses.push(`${className}-enter-end`);
844
+ (cssState === null || cssState === void 0 ? void 0 : cssState.leave) && cssClasses.push(`${className}-leave`);
845
+ (cssState === null || cssState === void 0 ? void 0 : cssState.leaveStart) && cssClasses.push(`${className}-leave-start`);
846
+ (cssState === null || cssState === void 0 ? void 0 : cssState.leaveEnd) && cssClasses.push(`${className}-leave-end`);
847
+ return cssClasses.filter((css) => css).join(" ");
848
+ };
849
+ return (React__default["default"].createElement("div", { ref: transitionConainter, className: getCssClasses() }, children));
850
+ };
851
+
787
852
  var css_248z$B = ".Column-module_column__fcTgl {\n flex: 1 0 0%; }\n\n@media (max-width: 575.98px) {\n .Column-module_column__fcTgl {\n flex: 1; } }\n";
788
853
  var styles$B = {"column":"Column-module_column__fcTgl"};
789
854
  styleInject(css_248z$B);
@@ -2688,6 +2753,7 @@ exports.Chip = Chip;
2688
2753
  exports.CircleSolidIcon = CircleSolidIcon;
2689
2754
  exports.Column = Column;
2690
2755
  exports.ConditionalWrapper = ConditionalWrapper;
2756
+ exports.CssTransition = CssTransition;
2691
2757
  exports.DateSelect = DateSelect;
2692
2758
  exports.DaySelect = DaySelect;
2693
2759
  exports.Drawer = Drawer;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-asc",
3
- "version": "21.3.1",
3
+ "version": "22.0.0",
4
4
  "description": "handcrafted react components",
5
5
  "main": "index.js",
6
6
  "module": "index.es.js",
package/readme.md CHANGED
@@ -47,6 +47,7 @@ const MyApp = () => {
47
47
  - Card
48
48
  - Checkbox
49
49
  - Chip
50
+ - CssTransition
50
51
  - ConditionalWrapper
51
52
  - DateSelect
52
53
  - Drawer