Compare commits
4 Commits
codex/cale
...
chore/fron
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
42057ddb1c | ||
| 1a37afd16f | |||
|
|
f7b611bbbe | ||
| 55fc23ec64 |
4
frontend/package-lock.json
generated
4
frontend/package-lock.json
generated
@@ -1,12 +1,12 @@
|
||||
{
|
||||
"name": "calendar-run-frontend",
|
||||
"version": "0.5.0",
|
||||
"version": "0.5.1",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "calendar-run-frontend",
|
||||
"version": "0.5.0",
|
||||
"version": "0.5.1",
|
||||
"dependencies": {
|
||||
"react": "^18.3.1",
|
||||
"react-dom": "^18.3.1",
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "calendar-run-frontend",
|
||||
"private": true,
|
||||
"version": "0.5.0",
|
||||
"version": "0.5.1",
|
||||
"type": "module",
|
||||
"scripts": {
|
||||
"dev": "vite",
|
||||
|
||||
@@ -228,6 +228,25 @@ export function RacesPage(): JSX.Element {
|
||||
}),
|
||||
[races],
|
||||
);
|
||||
const statusMessage = useMemo(() => {
|
||||
if (errorMessage && !isLoading) {
|
||||
return errorMessage;
|
||||
}
|
||||
if (isLoading) {
|
||||
return "Загружаем данные...";
|
||||
}
|
||||
if (viewMode === "calendar" && monthFilter === "") {
|
||||
return "Выберите месяц, чтобы увидеть его крупным планом.";
|
||||
}
|
||||
return "";
|
||||
}, [errorMessage, isLoading, monthFilter, viewMode]);
|
||||
const statusClassName = [
|
||||
"races-status__message",
|
||||
!statusMessage ? "races-status__message--empty" : "",
|
||||
errorMessage && !isLoading ? "races-status__message--error" : "",
|
||||
]
|
||||
.filter(Boolean)
|
||||
.join(" ");
|
||||
|
||||
if (errorMessage && races.length === 0 && !isLoading) {
|
||||
return (
|
||||
@@ -301,21 +320,16 @@ export function RacesPage(): JSX.Element {
|
||||
</div>
|
||||
</section>
|
||||
|
||||
{errorMessage && !isLoading ? (
|
||||
<p className="page__subtitle page__subtitle--error" role="alert" style={{ marginTop: "var(--space-4)" }}>
|
||||
{errorMessage}
|
||||
<div className="races-status" aria-live="polite">
|
||||
<p
|
||||
className={statusClassName}
|
||||
role={errorMessage && !isLoading ? "alert" : undefined}
|
||||
aria-busy={isLoading || undefined}
|
||||
aria-hidden={!statusMessage || undefined}
|
||||
>
|
||||
{statusMessage || "\u00a0"}
|
||||
</p>
|
||||
) : null}
|
||||
|
||||
{viewMode === "calendar" && monthFilter === "" ? (
|
||||
<p className="page__subtitle races-cal__filter-hint">Выберите месяц, чтобы увидеть его крупным планом.</p>
|
||||
) : null}
|
||||
|
||||
{isLoading ? (
|
||||
<p className="page__subtitle" aria-busy="true">
|
||||
Загружаем данные...
|
||||
</p>
|
||||
) : null}
|
||||
</div>
|
||||
|
||||
{viewMode === "list" ? (
|
||||
<div className="race-lists">
|
||||
|
||||
@@ -967,6 +967,25 @@ a {
|
||||
margin-top: var(--space-6);
|
||||
}
|
||||
|
||||
.races-status {
|
||||
min-height: calc(var(--line-height-base) * var(--font-size-caption));
|
||||
margin-top: var(--space-4);
|
||||
}
|
||||
|
||||
.races-status__message {
|
||||
margin: 0;
|
||||
color: var(--color-text-muted);
|
||||
font-size: var(--font-size-caption);
|
||||
}
|
||||
|
||||
.races-status__message--empty {
|
||||
visibility: hidden;
|
||||
}
|
||||
|
||||
.races-status__message--error {
|
||||
color: var(--color-danger);
|
||||
}
|
||||
|
||||
.races-cal__filter-hint {
|
||||
margin-top: var(--space-3);
|
||||
color: var(--color-text-muted);
|
||||
|
||||
Reference in New Issue
Block a user