/* * Нейтральные примеры тем для таблиц Endge. * * Файл использует публичный контракт Table, а не классы RevoGrid. Поэтому * источник остается renderer-neutral, а другой адаптер сможет публиковать те * же parts. Правила применяются ко всем Endge Table. Для одной таблицы добавьте * id или class, например #items-table::part(header). */ /* Стандартная светлая палитра. */ @theme light { --table-surface: #ffffff; --table-text: #333333; --table-header: rgb(183, 198, 213); --table-header-text: #253142; --table-grid-line: #888888; --table-row-odd: rgb(250, 250, 250); --table-row-even: rgb(236, 237, 237); --table-group: linear-gradient(90deg, #d8dde4 0%, #e7ebf0 100%); --table-group-text: #364152; --table-selected-row: rgb(190, 214, 236); --table-multi-selected-row: palevioletred; --table-search-row: rgba(190, 214, 236, 0.5); --table-search-cell: rgba(137, 189, 232, 0.6); --table-selected-cell: rgb(137, 189, 232); --table-selected-cell-outline: blue; } /* * Темная палитра с отдельной заливкой шапки. */ @theme dark { --table-surface: #202434; --table-text: #ffffff; --table-header: #2d3248; --table-header-text: #ffffff; --table-grid-line: #555d76; --table-row-odd: transparent; --table-row-even: rgba(236, 237, 237, 0.1); --table-group: linear-gradient(90deg, #343a52 0%, #414861 100%); --table-group-text: #f1f3f8; --table-selected-row: rgb(36, 129, 213); --table-multi-selected-row: palevioletred; --table-search-row: rgba(36, 129, 213, 0.35); --table-search-cell: rgba(36, 129, 213, 0.55); --table-selected-cell: rgb(137, 189, 232); --table-selected-cell-outline: blue; } /* Спокойная синяя шапка и серые полосы строк. */ @theme light_calm { --table-surface: #e0e0e0; --table-text: #333333; --table-header: #3388bb; --table-header-text: #ffffff; --table-grid-line: #888888; --table-row-odd: #e0e0e0; --table-row-even: #cccccc; --table-group: linear-gradient(90deg, #d8dde4 0%, #e7ebf0 100%); --table-group-text: #364152; --table-selected-row: greenyellow; --table-multi-selected-row: palevioletred; --table-search-row: rgba(173, 255, 47, 0.5); --table-search-cell: rgba(173, 255, 47, 0.75); --table-selected-cell: greenyellow; --table-selected-cell-outline: limegreen; } /* Акцентный вариант: выделение и результат поиска окрашены янтарным. */ @theme light_accent { --table-surface: #e0e0e0; --table-text: #333333; --table-header: #3388bb; --table-header-text: #ffffff; --table-grid-line: #888888; --table-row-odd: #e0e0e0; --table-row-even: #cccccc; --table-group: linear-gradient(90deg, #d8dde4 0%, #e7ebf0 100%); --table-group-text: #364152; --table-selected-row: #ffd25b; --table-multi-selected-row: palevioletred; --table-search-row: rgba(255, 210, 91, 0.5); --table-search-cell: rgba(255, 210, 91, 0.75); --table-selected-cell: #ffd25b; --table-selected-cell-outline: #654f22; } /* Яркая контрастная тема. */ @theme light_contrast { --table-surface: #ffffff; --table-text: #333333; --table-header: #005cf1; --table-header-text: #ffffff; --table-grid-line: #888888; --table-row-odd: rgb(250, 250, 250); --table-row-even: rgb(236, 237, 237); --table-group: linear-gradient(90deg, #d8dde4 0%, #e7ebf0 100%); --table-group-text: #364152; --table-selected-row: greenyellow; --table-multi-selected-row: palevioletred; --table-search-row: rgba(173, 255, 47, 0.5); --table-search-cell: rgba(173, 255, 47, 0.75); --table-selected-cell: greenyellow; --table-selected-cell-outline: limegreen; } /* Весь grid и его прокручиваемая область данных. */ Table::part(grid), Table::part(body) { background-color: var(--table-surface); color: var(--table-text); } /* Публичные adapter-neutral переменные интерактивных состояний. */ Table { --endge-table-selection: var(--table-selected-row); --endge-table-multiple-selection: var(--table-multi-selected-row); --endge-table-selection-marker: var(--table-selected-cell-outline); --endge-table-cell-selection: var(--table-selected-cell); --endge-table-cell-selection-color: var(--table-text); --endge-table-cell-selection-outline: var(--table-selected-cell-outline); } /* Вся полоса шапки. */ Table::part(header) { background-color: var(--table-header) !important; color: var(--table-header-text); } /* Каждая физическая ячейка шапки — именно она рисует видимый фон. */ Table::part(header-cell) { background-color: var(--table-header) !important; color: var(--table-header-text); border-right: 1px solid var(--table-grid-line); border-bottom: 1px solid var(--table-grid-line); font-size: 0.7rem; } /* Заголовок, индикатор сортировки и будущие action-иконки. */ Table::part(header-content) { color: var(--table-header-text); font-weight: 600; text-align: center; } /* Zebra-строки считаются по логическому порядку Endge, без wrapper-узлов RevoGrid. */ Table:nth-child(odd)::part(row) { background-color: var(--table-row-odd); } Table:nth-child(even)::part(row) { background-color: var(--table-row-even); } /* Cell отвечает за grid lines, а cell-content — за текст и выравнивание. */ Table::part(cell) { border-right: 1px solid var(--table-grid-line); border-bottom: 1px solid var(--table-grid-line); } Table::part(cell-content) { color: var(--table-text); font-size: 0.8rem; } /* Group row уже является public surface, хотя SFC grouping будет следующим этапом. */ Table::part(group-row) { background: var(--table-group) !important; color: var(--table-group-text); font-weight: 700; } /* Одна выбранная строка: state опубликован на всех её cell surfaces. */ Table:state(row-selected)::part(cell) { --endge-table-selection: var(--table-selected-row); } /* Строки режима multiple можно оформить отдельно. */ Table:state(multi-selected)::part(cell) { --endge-table-multiple-selection: var(--table-multi-selected-row); } Table:state(search-match)::part(row) { background-color: var(--table-search-row) !important; } Table:state(search-match)::part(cell) { background-color: var(--table-search-cell) !important; } /* Конкретная ячейка перекрывает заливку выбранной строки. */ Table:state(cell-selected)::part(cell) { --endge-table-cell-selection: var(--table-selected-cell); --endge-table-cell-selection-outline: var(--table-selected-cell-outline); }