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.
- package/components/CssTransition/CssTransition.d.ts +8 -0
- package/components/CssTransition/index.d.ts +1 -0
- package/components/index.d.ts +1 -0
- package/index.es.js +66 -1
- package/index.js +66 -0
- package/package.json +1 -1
- package/readme.md +1 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './CssTransition';
|
package/components/index.d.ts
CHANGED
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