@geops/rvf-mobility-web-component 0.1.117 → 0.1.118

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/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@geops/rvf-mobility-web-component",
3
3
  "license": "UNLICENSED",
4
4
  "description": "Web components for rvf in the domains of mobility and logistics.",
5
- "version": "0.1.117",
5
+ "version": "0.1.118",
6
6
  "homepage": "https://rvf-mobility-web-component.vercel.app/",
7
7
  "type": "module",
8
8
  "main": "index.js",
@@ -64,7 +64,9 @@ function SituationDetails({
64
64
  useShortMonth?: boolean;
65
65
  }) {
66
66
  const { locale, t } = useI18n();
67
- const [isOpen, setIsOpen] = useState(!canToggle);
67
+ const [openByPublicationId, setOpenByPublicationId] = useState<
68
+ Record<string, boolean>
69
+ >({});
68
70
 
69
71
  if (!situation) {
70
72
  return null;
@@ -227,50 +229,72 @@ function SituationDetails({
227
229
  ? toShortDate(new Date(endTime), false, true, useShortMonth)
228
230
  : undefined;
229
231
 
230
- return (
231
- <button
232
+ const renderTimeInterval = (
233
+ <div
232
234
  className={twMerge(
233
- "flex w-full items-center",
234
- canToggle && "cursor-pointer",
235
+ "flex-1 text-left text-sm font-bold text-balance",
236
+ timeIntervalClassName,
235
237
  )}
236
238
  key={startTime}
237
- onClick={() => {
238
- setIsOpen(!isOpen);
239
- }}
240
- tabIndex={canToggle ? 0 : -1}
241
239
  >
242
- <div
243
- className={twMerge(
244
- "flex-1 text-left text-sm font-bold text-balance",
245
- timeIntervalClassName,
246
- )}
240
+ <span>
241
+ {from && to ? `${from} – ${to}` : null}
242
+ {from && !to ? t("from", { from }) : null}
243
+ </span>
244
+ {hasDailyTime && (
245
+ <span>{` (${t("daily_from_to", {
246
+ from: dailyStartTime,
247
+ to: dailyEndTime,
248
+ })})`}</span>
249
+ )}
250
+ </div>
251
+ );
252
+
253
+ if (canToggle) {
254
+ return (
255
+ <button
256
+ className={"flex w-full cursor-pointer items-center"}
247
257
  key={startTime}
258
+ onClick={() => {
259
+ if (canToggle) {
260
+ setOpenByPublicationId({
261
+ ...openByPublicationId,
262
+ [id]: !openByPublicationId[id],
263
+ });
264
+ }
265
+ }}
248
266
  >
249
- <span>
250
- {from && to ? `${from} – ${to}` : null}
251
- {from && !to ? t("from", { from }) : null}
252
- </span>
253
- {hasDailyTime && (
254
- <span>{` (${t("daily_from_to", {
255
- from: dailyStartTime,
256
- to: dailyEndTime,
257
- })})`}</span>
267
+ {renderTimeInterval}
268
+ {index == 0 && (
269
+ <>
270
+ {openByPublicationId[id] ? (
271
+ <ArrowUp className="text-red" />
272
+ ) : (
273
+ <ArrowDown className="text-red" />
274
+ )}
275
+ </>
258
276
  )}
277
+ </button>
278
+ );
279
+ } else {
280
+ return (
281
+ <div
282
+ className={"flex w-full items-center"}
283
+ key={startTime}
284
+ >
285
+ {renderTimeInterval}
259
286
  </div>
260
- {canToggle && index == 0 && (
261
- <>
262
- {isOpen ? (
263
- <ArrowUp className="text-red" />
264
- ) : (
265
- <ArrowDown className="text-red" />
266
- )}
267
- </>
268
- )}
269
- </button>
270
- );
287
+ );
288
+ }
271
289
  },
272
290
  )}
273
- <div className={isOpen ? "my-4 flex flex-col gap-4" : "hidden"}>
291
+ <div
292
+ className={
293
+ !canToggle || openByPublicationId[id]
294
+ ? "my-4 flex flex-col gap-4"
295
+ : "hidden"
296
+ }
297
+ >
274
298
  {textualContent?.description && (
275
299
  <div
276
300
  dangerouslySetInnerHTML={{