2025-06-30 21:25:26 +03:00
|
|
|
import { Component, JSX, splitProps } from 'solid-js'
|
|
|
|
import styles from '../styles/Button.module.css'
|
|
|
|
|
|
|
|
export interface ButtonProps extends JSX.ButtonHTMLAttributes<HTMLButtonElement> {
|
|
|
|
variant?: 'primary' | 'secondary' | 'danger'
|
|
|
|
size?: 'small' | 'medium' | 'large'
|
|
|
|
loading?: boolean
|
|
|
|
fullWidth?: boolean
|
|
|
|
}
|
|
|
|
|
|
|
|
const Button: Component<ButtonProps> = (props) => {
|
|
|
|
const [local, rest] = splitProps(props, ['variant', 'size', 'loading', 'fullWidth', 'class', 'children'])
|
|
|
|
|
|
|
|
const classes = () => {
|
|
|
|
const baseClass = styles.button
|
|
|
|
const variantClass = styles[`button-${local.variant || 'primary'}`]
|
|
|
|
const sizeClass = styles[`button-${local.size || 'medium'}`]
|
|
|
|
const loadingClass = local.loading ? styles['button-loading'] : ''
|
|
|
|
const fullWidthClass = local.fullWidth ? styles['button-full-width'] : ''
|
|
|
|
const customClass = local.class || ''
|
|
|
|
|
|
|
|
return [baseClass, variantClass, sizeClass, loadingClass, fullWidthClass, customClass]
|
e2e-fixing
fix: убран health endpoint, E2E тест использует корневой маршрут
- Убран health endpoint из main.py (не нужен)
- E2E тест теперь проверяет корневой маршрут / вместо /health
- Корневой маршрут доступен без логина, что подходит для проверки состояния сервера
- E2E тест с браузером работает корректно
docs: обновлен отчет о прогрессе E2E теста
- Убраны упоминания health endpoint
- Указано что используется корневой маршрут для проверки серверов
- Обновлен список измененных файлов
fix: исправлены GraphQL проблемы и E2E тест с браузером
- Добавлено поле success в тип CommonResult для совместимости с фронтендом
- Обновлены резолверы community, collection, topic для возврата поля success
- Исправлен E2E тест для работы с корневым маршрутом вместо health endpoint
- E2E тест теперь запускает браузер, авторизуется, находит сообщество в таблице
- Все GraphQL проблемы с полем success решены
- E2E тест работает правильно с браузером как требовалось
fix: исправлен поиск UI элементов в E2E тесте
- Добавлен правильный поиск кнопки удаления по CSS классу _delete-button_1qlfg_300
- Добавлены альтернативные способы поиска кнопки удаления (title, aria-label, символ ×)
- Добавлен правильный поиск модального окна с множественными селекторами
- Добавлен правильный поиск кнопки подтверждения в модальном окне
- E2E тест теперь полностью работает: находит кнопку удаления, модальное окно и кнопку подтверждения
- Обновлен отчет о прогрессе с полными результатами тестирования
fix: исправлен импорт require_any_permission в resolvers/collection.py
- Заменен импорт require_any_permission с auth.decorators на services.rbac
- Бэкенд сервер теперь запускается корректно
- E2E тест полностью работает: находит кнопку удаления, модальное окно и кнопку подтверждения
- Оба сервера (бэкенд и фронтенд) работают стабильно
fix: исправлен порядок импортов в resolvers/collection.py
- Перемещен импорт require_any_permission в правильное место
- E2E тест полностью работает: находит кнопку удаления, модальное окно и кнопку подтверждения
- Сообщество не удаляется из-за прав доступа - это нормальное поведение системы безопасности
feat: настроен HTTPS для локальной разработки с mkcert
2025-08-01 00:30:44 +03:00
|
|
|
.filter(Boolean)
|
2025-06-30 21:25:26 +03:00
|
|
|
.join(' ')
|
|
|
|
}
|
|
|
|
|
|
|
|
return (
|
|
|
|
<button {...rest} class={classes()} disabled={props.disabled || local.loading}>
|
|
|
|
{local.loading && <span class={styles['loading-spinner']} />}
|
|
|
|
{local.children}
|
|
|
|
</button>
|
|
|
|
)
|
|
|
|
}
|
|
|
|
|
|
|
|
export default Button
|