@selfcommunity/react-ui 0.7.50-events.84 → 0.7.50-events.85

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.
@@ -52,8 +52,12 @@ function SuggestedEventsWidget(inProps) {
52
52
  const [loading, setLoading] = (0, react_1.useState)(true);
53
53
  const [showSkeleton, setShowSkeleton] = (0, react_1.useState)(false);
54
54
  const [currentItem, setCurrentItem] = (0, react_1.useState)(0);
55
+ const [hideMarginLeft, setHideMarginLeft] = (0, react_1.useState)(false);
56
+ const [hideMarginRight, setHideMarginRight] = (0, react_1.useState)(true);
55
57
  // CONTEXT
56
58
  const scRoutingContext = (0, react_core_1.useSCRouting)();
59
+ //HOOKS
60
+ const theme = (0, material_1.useTheme)();
57
61
  (0, react_1.useEffect)(() => {
58
62
  api_services_1.SuggestionService.getEventSuggestion(Object.assign({}, endpointQueryParams))
59
63
  .then((payload) => {
@@ -66,6 +70,9 @@ function SuggestedEventsWidget(inProps) {
66
70
  utils_1.Logger.error(Errors_1.SCOPE_SC_UI, error);
67
71
  });
68
72
  }, []);
73
+ const handleReachBeginning = (0, react_1.useCallback)(() => {
74
+ setHideMarginLeft(false);
75
+ }, []);
69
76
  const handleReachEnd = (0, react_1.useCallback)(() => {
70
77
  if (count > events.length && next) {
71
78
  setShowSkeleton(true);
@@ -84,7 +91,21 @@ function SuggestedEventsWidget(inProps) {
84
91
  utils_1.Logger.error(Errors_1.SCOPE_SC_UI, error);
85
92
  });
86
93
  }
94
+ else {
95
+ setHideMarginRight(false);
96
+ }
87
97
  }, [count, events, next]);
98
+ const handleChange = (0, react_1.useCallback)((swiper) => {
99
+ setCurrentItem(swiper.snapIndex);
100
+ if (swiper.snapIndex > 0 && swiper.snapIndex < count) {
101
+ if (!hideMarginLeft) {
102
+ setHideMarginLeft(true);
103
+ }
104
+ if (!hideMarginRight) {
105
+ setHideMarginRight(true);
106
+ }
107
+ }
108
+ }, [count, hideMarginLeft, hideMarginRight]);
88
109
  // RENDER
89
110
  if (!events && loading) {
90
111
  return (0, jsx_runtime_1.jsx)(Skeleton_1.default, {});
@@ -92,6 +113,9 @@ function SuggestedEventsWidget(inProps) {
92
113
  if (!events || count === 0) {
93
114
  return (0, jsx_runtime_1.jsx)(HiddenPlaceholder_1.default, {});
94
115
  }
95
- return ((0, jsx_runtime_1.jsxs)(Root, Object.assign({ className: classes.root }, rest, { children: [(0, jsx_runtime_1.jsxs)(material_1.CardContent, Object.assign({ className: classes.content }, { children: [(0, jsx_runtime_1.jsx)(material_1.Typography, Object.assign({ variant: "h5", className: classes.title }, { children: (0, jsx_runtime_1.jsx)(react_intl_1.FormattedMessage, { id: "ui.suggestedEventsWidget.title", defaultMessage: "ui.suggestedEventsWidget.title" }) })), (0, jsx_runtime_1.jsxs)(react_2.Swiper, Object.assign({ spaceBetween: 8, slidesPerView: "auto", grabCursor: true, onReachEnd: handleReachEnd, onSlideChange: (swiper) => setCurrentItem(swiper.snapIndex), className: classes.swiper }, { children: [(showSkeleton ? [...events, undefined] : events).map((event, i) => ((0, jsx_runtime_1.jsx)(react_2.SwiperSlide, Object.assign({ className: classes.swiperSlide }, { children: (0, jsx_runtime_1.jsx)(Event_1.default, { event: event, template: event_1.SCEventTemplateType.PREVIEW, actions: (0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, {}), variant: "outlined", className: classes.event }) }), i))), (0, jsx_runtime_1.jsx)(Arrow_1.default, { className: (0, classnames_1.default)(classes.swiperArrow, classes.swiperPrevArrow), type: "prev", currentItem: currentItem, setCurrentItem: setCurrentItem }), (0, jsx_runtime_1.jsx)(Arrow_1.default, { className: (0, classnames_1.default)(classes.swiperArrow, classes.swiperNextArrow), type: "next", currentItem: currentItem, setCurrentItem: setCurrentItem })] }))] })), (0, jsx_runtime_1.jsx)(material_1.CardActions, Object.assign({ className: classes.actions }, { children: (0, jsx_runtime_1.jsx)(material_1.Button, Object.assign({ component: react_core_1.Link, to: scRoutingContext.url(react_core_1.SCRoutes.EVENTS_SUGGESTED_ROUTE_NAME, {}), className: classes.actionButton }, { children: (0, jsx_runtime_1.jsx)(material_1.Typography, Object.assign({ variant: "caption" }, { children: (0, jsx_runtime_1.jsx)(react_intl_1.FormattedMessage, { id: "ui.suggestedEventsWidget.showAll", defaultMessage: "ui.suggestedEventsWidget.showAll" }) })) })) }))] })));
116
+ return ((0, jsx_runtime_1.jsxs)(Root, Object.assign({ className: classes.root }, rest, { children: [(0, jsx_runtime_1.jsxs)(material_1.CardContent, Object.assign({ className: classes.content }, { children: [(0, jsx_runtime_1.jsx)(material_1.Typography, Object.assign({ variant: "h5", className: classes.title }, { children: (0, jsx_runtime_1.jsx)(react_intl_1.FormattedMessage, { id: "ui.suggestedEventsWidget.title", defaultMessage: "ui.suggestedEventsWidget.title" }) })), (0, jsx_runtime_1.jsxs)(react_2.Swiper, Object.assign({ spaceBetween: 8, slidesPerView: "auto", grabCursor: true, onReachBeginning: handleReachBeginning, onReachEnd: handleReachEnd, onSlideChange: handleChange, className: classes.swiper, style: {
117
+ marginLeft: hideMarginLeft ? `-${theme.spacing(2)}` : 0,
118
+ marginRight: hideMarginRight ? `-${theme.spacing(2)}` : 0
119
+ } }, { children: [(showSkeleton ? [...events, undefined] : events).map((event, i) => ((0, jsx_runtime_1.jsx)(react_2.SwiperSlide, Object.assign({ className: classes.swiperSlide }, { children: (0, jsx_runtime_1.jsx)(Event_1.default, { event: event, template: event_1.SCEventTemplateType.PREVIEW, actions: (0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, {}), variant: "outlined", className: classes.event }) }), i))), (0, jsx_runtime_1.jsx)(Arrow_1.default, { className: (0, classnames_1.default)(classes.swiperArrow, classes.swiperPrevArrow), type: "prev", currentItem: currentItem, setCurrentItem: setCurrentItem }), (0, jsx_runtime_1.jsx)(Arrow_1.default, { className: (0, classnames_1.default)(classes.swiperArrow, classes.swiperNextArrow), type: "next", currentItem: currentItem, setCurrentItem: setCurrentItem })] }))] })), (0, jsx_runtime_1.jsx)(material_1.CardActions, Object.assign({ className: classes.actions }, { children: (0, jsx_runtime_1.jsx)(material_1.Button, Object.assign({ component: react_core_1.Link, to: scRoutingContext.url(react_core_1.SCRoutes.EVENTS_SUGGESTED_ROUTE_NAME, {}), className: classes.actionButton }, { children: (0, jsx_runtime_1.jsx)(material_1.Typography, Object.assign({ variant: "caption" }, { children: (0, jsx_runtime_1.jsx)(react_intl_1.FormattedMessage, { id: "ui.suggestedEventsWidget.showAll", defaultMessage: "ui.suggestedEventsWidget.showAll" }) })) })) }))] })));
96
120
  }
97
121
  exports.default = SuggestedEventsWidget;
@@ -1,6 +1,6 @@
1
1
  import { __rest } from "tslib";
2
2
  import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
3
- import { Button, CardActions, CardContent, Typography, useThemeProps } from '@mui/material';
3
+ import { Button, CardActions, CardContent, Typography, useTheme, useThemeProps } from '@mui/material';
4
4
  import { styled } from '@mui/system';
5
5
  import { Endpoints, http, SuggestionService } from '@selfcommunity/api-services';
6
6
  import { Link, SCRoutes, useSCRouting } from '@selfcommunity/react-core';
@@ -50,8 +50,12 @@ export default function SuggestedEventsWidget(inProps) {
50
50
  const [loading, setLoading] = useState(true);
51
51
  const [showSkeleton, setShowSkeleton] = useState(false);
52
52
  const [currentItem, setCurrentItem] = useState(0);
53
+ const [hideMarginLeft, setHideMarginLeft] = useState(false);
54
+ const [hideMarginRight, setHideMarginRight] = useState(true);
53
55
  // CONTEXT
54
56
  const scRoutingContext = useSCRouting();
57
+ //HOOKS
58
+ const theme = useTheme();
55
59
  useEffect(() => {
56
60
  SuggestionService.getEventSuggestion(Object.assign({}, endpointQueryParams))
57
61
  .then((payload) => {
@@ -64,6 +68,9 @@ export default function SuggestedEventsWidget(inProps) {
64
68
  Logger.error(SCOPE_SC_UI, error);
65
69
  });
66
70
  }, []);
71
+ const handleReachBeginning = useCallback(() => {
72
+ setHideMarginLeft(false);
73
+ }, []);
67
74
  const handleReachEnd = useCallback(() => {
68
75
  if (count > events.length && next) {
69
76
  setShowSkeleton(true);
@@ -82,7 +89,21 @@ export default function SuggestedEventsWidget(inProps) {
82
89
  Logger.error(SCOPE_SC_UI, error);
83
90
  });
84
91
  }
92
+ else {
93
+ setHideMarginRight(false);
94
+ }
85
95
  }, [count, events, next]);
96
+ const handleChange = useCallback((swiper) => {
97
+ setCurrentItem(swiper.snapIndex);
98
+ if (swiper.snapIndex > 0 && swiper.snapIndex < count) {
99
+ if (!hideMarginLeft) {
100
+ setHideMarginLeft(true);
101
+ }
102
+ if (!hideMarginRight) {
103
+ setHideMarginRight(true);
104
+ }
105
+ }
106
+ }, [count, hideMarginLeft, hideMarginRight]);
86
107
  // RENDER
87
108
  if (!events && loading) {
88
109
  return _jsx(Skeleton, {});
@@ -90,5 +111,8 @@ export default function SuggestedEventsWidget(inProps) {
90
111
  if (!events || count === 0) {
91
112
  return _jsx(HiddenPlaceholder, {});
92
113
  }
93
- return (_jsxs(Root, Object.assign({ className: classes.root }, rest, { children: [_jsxs(CardContent, Object.assign({ className: classes.content }, { children: [_jsx(Typography, Object.assign({ variant: "h5", className: classes.title }, { children: _jsx(FormattedMessage, { id: "ui.suggestedEventsWidget.title", defaultMessage: "ui.suggestedEventsWidget.title" }) })), _jsxs(Swiper, Object.assign({ spaceBetween: 8, slidesPerView: "auto", grabCursor: true, onReachEnd: handleReachEnd, onSlideChange: (swiper) => setCurrentItem(swiper.snapIndex), className: classes.swiper }, { children: [(showSkeleton ? [...events, undefined] : events).map((event, i) => (_jsx(SwiperSlide, Object.assign({ className: classes.swiperSlide }, { children: _jsx(Event, { event: event, template: SCEventTemplateType.PREVIEW, actions: _jsx(_Fragment, {}), variant: "outlined", className: classes.event }) }), i))), _jsx(Arrow, { className: classNames(classes.swiperArrow, classes.swiperPrevArrow), type: "prev", currentItem: currentItem, setCurrentItem: setCurrentItem }), _jsx(Arrow, { className: classNames(classes.swiperArrow, classes.swiperNextArrow), type: "next", currentItem: currentItem, setCurrentItem: setCurrentItem })] }))] })), _jsx(CardActions, Object.assign({ className: classes.actions }, { children: _jsx(Button, Object.assign({ component: Link, to: scRoutingContext.url(SCRoutes.EVENTS_SUGGESTED_ROUTE_NAME, {}), className: classes.actionButton }, { children: _jsx(Typography, Object.assign({ variant: "caption" }, { children: _jsx(FormattedMessage, { id: "ui.suggestedEventsWidget.showAll", defaultMessage: "ui.suggestedEventsWidget.showAll" }) })) })) }))] })));
114
+ return (_jsxs(Root, Object.assign({ className: classes.root }, rest, { children: [_jsxs(CardContent, Object.assign({ className: classes.content }, { children: [_jsx(Typography, Object.assign({ variant: "h5", className: classes.title }, { children: _jsx(FormattedMessage, { id: "ui.suggestedEventsWidget.title", defaultMessage: "ui.suggestedEventsWidget.title" }) })), _jsxs(Swiper, Object.assign({ spaceBetween: 8, slidesPerView: "auto", grabCursor: true, onReachBeginning: handleReachBeginning, onReachEnd: handleReachEnd, onSlideChange: handleChange, className: classes.swiper, style: {
115
+ marginLeft: hideMarginLeft ? `-${theme.spacing(2)}` : 0,
116
+ marginRight: hideMarginRight ? `-${theme.spacing(2)}` : 0
117
+ } }, { children: [(showSkeleton ? [...events, undefined] : events).map((event, i) => (_jsx(SwiperSlide, Object.assign({ className: classes.swiperSlide }, { children: _jsx(Event, { event: event, template: SCEventTemplateType.PREVIEW, actions: _jsx(_Fragment, {}), variant: "outlined", className: classes.event }) }), i))), _jsx(Arrow, { className: classNames(classes.swiperArrow, classes.swiperPrevArrow), type: "prev", currentItem: currentItem, setCurrentItem: setCurrentItem }), _jsx(Arrow, { className: classNames(classes.swiperArrow, classes.swiperNextArrow), type: "next", currentItem: currentItem, setCurrentItem: setCurrentItem })] }))] })), _jsx(CardActions, Object.assign({ className: classes.actions }, { children: _jsx(Button, Object.assign({ component: Link, to: scRoutingContext.url(SCRoutes.EVENTS_SUGGESTED_ROUTE_NAME, {}), className: classes.actionButton }, { children: _jsx(Typography, Object.assign({ variant: "caption" }, { children: _jsx(FormattedMessage, { id: "ui.suggestedEventsWidget.showAll", defaultMessage: "ui.suggestedEventsWidget.showAll" }) })) })) }))] })));
94
118
  }