|
1 | | -import { wrap } from "@suspensive/react"; |
2 | | -import React from "react"; |
3 | | -import * as R from "remeda"; |
4 | | -import styled from "styled-components"; |
| 1 | +import { wrap } from "@suspensive/react" |
| 2 | +import React from "react" |
| 3 | +import * as R from "remeda" |
| 4 | +import styled from "styled-components" |
5 | 5 |
|
6 | | -import Page from "components/common/Page"; |
7 | | -import { APIPretalxSessions } from "models/api/session"; |
8 | | -import { useNavigate } from "react-router"; |
9 | | -import { useListSessionsQuery } from "utils/hooks/useAPI"; |
10 | | -import useTranslation from "utils/hooks/useTranslation"; |
| 6 | +import Page from "components/common/Page" |
| 7 | +import { APIPretalxSessions } from "models/api/session" |
| 8 | +import { useNavigate } from "react-router" |
| 9 | +import { useListSessionsQuery } from "utils/hooks/useAPI" |
| 10 | +import useTranslation from "utils/hooks/useTranslation" |
11 | 11 |
|
12 | 12 | const TD_HEIGHT = 2.5; |
13 | 13 | const TD_WIDTH = 12.5; |
@@ -110,10 +110,11 @@ const SessionColumn: React.FC<{ |
110 | 110 | const clickable = R.isArray(session.speakers) && !R.isEmpty(session.speakers); |
111 | 111 | // Firefox는 rowSpan된 td의 height를 계산할 때 rowSpan을 고려하지 않습니다. 따라서 직접 계산하여 height를 설정합니다. |
112 | 112 | const sessionBoxHeight = `${TD_HEIGHT * rowSpan}rem`; |
| 113 | + const urlSafeTitle = session.title.replace(/ /g, "-").replace(/(?![A-Za-zㄱ-ㅣ가-힣-])./g, "") |
113 | 114 | return ( |
114 | 115 | <td rowSpan={rowSpan} colSpan={colSpan}> |
115 | 116 | <SessionBox |
116 | | - onClick={() => clickable && navigate(`/session/${session.code}`)} |
| 117 | + onClick={() => clickable && navigate(`/session/${session.code}#${urlSafeTitle}`)} |
117 | 118 | className={clickable ? "clickable" : ""} |
118 | 119 | style={{ height: sessionBoxHeight }} |
119 | 120 | > |
|
0 commit comments