Improve list table readability (#4497)

* fixes mandatory columns bug and consistency issues
This commit is contained in:
CJ
2024-02-05 17:18:24 -06:00
committed by GitHub
parent 0b82dbf666
commit 1d0fa27c71
6 changed files with 39 additions and 36 deletions

View File

@@ -85,7 +85,7 @@ export const GalleryListTable: React.FC<IGalleryListTableProps> = (
}; };
const TagCell = (gallery: GQL.SlimGalleryDataFragment) => ( const TagCell = (gallery: GQL.SlimGalleryDataFragment) => (
<ul className="comma-list"> <ul className="comma-list overflowable">
{gallery.tags.map((tag) => ( {gallery.tags.map((tag) => (
<li key={tag.id}> <li key={tag.id}>
<Link to={NavUtils.makeTagGalleriesUrl(tag)}> <Link to={NavUtils.makeTagGalleriesUrl(tag)}>
@@ -97,7 +97,7 @@ export const GalleryListTable: React.FC<IGalleryListTableProps> = (
); );
const PerformersCell = (gallery: GQL.SlimGalleryDataFragment) => ( const PerformersCell = (gallery: GQL.SlimGalleryDataFragment) => (
<ul className="comma-list"> <ul className="comma-list overflowable">
{gallery.performers.map((performer) => ( {gallery.performers.map((performer) => (
<li key={performer.id}> <li key={performer.id}>
<Link to={NavUtils.makePerformerGalleriesUrl(performer)}> <Link to={NavUtils.makePerformerGalleriesUrl(performer)}>

View File

@@ -18,7 +18,7 @@ export const ColumnSelector: React.FC<{
return allColumns.map((col) => { return allColumns.map((col) => {
return { return {
...col, ...col,
disabled: col.mandatory, isDisabled: col.mandatory,
}; };
}); });
}, [allColumns]); }, [allColumns]);

View File

@@ -391,6 +391,15 @@ input[type="range"].zoom-slider {
top: 0; top: 0;
z-index: 100; z-index: 100;
} }
td:first-child {
padding: 0;
}
label {
margin: 0;
padding: 0.5rem;
}
} }
.column-select { .column-select {
@@ -398,14 +407,14 @@ input[type="range"].zoom-slider {
padding: 7px; padding: 7px;
} }
.select-col {
width: 20px;
}
.comma-list { .comma-list {
list-style: none; list-style: none;
margin: 0; margin: 0;
overflow: hidden;
padding: 4px 2px; padding: 4px 2px;
text-overflow: ellipsis;
white-space: nowrap;
width: 190px;
li { li {
display: inline; display: inline;
@@ -420,7 +429,14 @@ input[type="range"].zoom-slider {
} }
} }
.comma-list:hover { .comma-list.overflowable {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
width: 190px;
}
.comma-list.overflowable:hover {
background: #28343c; background: #28343c;
border: 1px solid #414c53; border: 1px solid #414c53;
box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.28); box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.28);
@@ -438,11 +454,13 @@ input[type="range"].zoom-slider {
z-index: 100; z-index: 100;
} }
.comma-list li .ellips-data:hover { .comma-list.overflowable li .ellips-data:hover {
max-width: fit-content; max-width: fit-content;
} }
td { td {
color: hsla(0, 0%, 100%, 0.6);
font-weight: 500;
position: relative; position: relative;
text-align: left; text-align: left;
white-space: nowrap; white-space: nowrap;

View File

@@ -87,7 +87,7 @@ export const SceneListTable: React.FC<ISceneListTableProps> = (
}; };
const TagCell = (scene: GQL.SlimSceneDataFragment) => ( const TagCell = (scene: GQL.SlimSceneDataFragment) => (
<ul className="comma-list"> <ul className="comma-list overflowable">
{scene.tags.map((tag) => ( {scene.tags.map((tag) => (
<li key={tag.id}> <li key={tag.id}>
<Link to={NavUtils.makeTagScenesUrl(tag)}> <Link to={NavUtils.makeTagScenesUrl(tag)}>
@@ -99,7 +99,7 @@ export const SceneListTable: React.FC<ISceneListTableProps> = (
); );
const PerformersCell = (scene: GQL.SlimSceneDataFragment) => ( const PerformersCell = (scene: GQL.SlimSceneDataFragment) => (
<ul className="comma-list"> <ul className="comma-list overflowable">
{scene.performers.map((performer) => ( {scene.performers.map((performer) => (
<li key={performer.id}> <li key={performer.id}>
<Link to={NavUtils.makePerformerScenesUrl(performer)}> <Link to={NavUtils.makePerformerScenesUrl(performer)}>
@@ -124,7 +124,7 @@ export const SceneListTable: React.FC<ISceneListTableProps> = (
}; };
const MovieCell = (scene: GQL.SlimSceneDataFragment) => ( const MovieCell = (scene: GQL.SlimSceneDataFragment) => (
<ul className="comma-list"> <ul className="comma-list overflowable">
{scene.movies.map((sceneMovie) => ( {scene.movies.map((sceneMovie) => (
<li key={sceneMovie.movie.id}> <li key={sceneMovie.movie.id}>
<Link to={NavUtils.makeMovieScenesUrl(sceneMovie.movie)}> <Link to={NavUtils.makeMovieScenesUrl(sceneMovie.movie)}>
@@ -136,7 +136,7 @@ export const SceneListTable: React.FC<ISceneListTableProps> = (
); );
const GalleriesCell = (scene: GQL.SlimSceneDataFragment) => ( const GalleriesCell = (scene: GQL.SlimSceneDataFragment) => (
<ul className="comma-list"> <ul className="comma-list overflowable">
{scene.galleries.map((gallery) => ( {scene.galleries.map((gallery) => (
<li key={gallery.id}> <li key={gallery.id}>
<Link to={`/galleries/${gallery.id}`}> <Link to={`/galleries/${gallery.id}`}>
@@ -271,10 +271,10 @@ export const SceneListTable: React.FC<ISceneListTableProps> = (
render: DurationCell, render: DurationCell,
}, },
{ {
value: "tags", value: "studio",
label: intl.formatMessage({ id: "tags" }), label: intl.formatMessage({ id: "studio" }),
defaultShow: true, defaultShow: true,
render: TagCell, render: StudioCell,
}, },
{ {
value: "performers", value: "performers",
@@ -283,10 +283,10 @@ export const SceneListTable: React.FC<ISceneListTableProps> = (
render: PerformersCell, render: PerformersCell,
}, },
{ {
value: "studio", value: "tags",
label: intl.formatMessage({ id: "studio" }), label: intl.formatMessage({ id: "tags" }),
defaultShow: true, defaultShow: true,
render: StudioCell, render: TagCell,
}, },
{ {
value: "movies", value: "movies",

View File

@@ -689,21 +689,6 @@ input[type="range"].blue-slider {
} }
} }
.scene-table {
td:first-child {
padding: 0;
}
label {
margin: 0;
padding: 0.5rem;
}
}
.select-col {
width: 20px;
}
.scrape-dialog .rating-number.disabled { .scrape-dialog .rating-number.disabled {
padding-left: 0.5em; padding-left: 0.5em;
} }

View File

@@ -843,7 +843,7 @@ export const ListSelect = <T extends {}>(props: IListSelect<T>) => {
}; };
type DisableOption = Option & { type DisableOption = Option & {
disabled?: boolean; isDisabled?: boolean;
}; };
interface ICheckBoxSelectProps { interface ICheckBoxSelectProps {
@@ -861,7 +861,7 @@ export const CheckBoxSelect: React.FC<ICheckBoxSelectProps> = ({
<reactSelectComponents.Option {...props}> <reactSelectComponents.Option {...props}>
<input <input
type="checkbox" type="checkbox"
disabled={props.data.disabled} disabled={props.isDisabled}
checked={props.isSelected} checked={props.isSelected}
onChange={() => null} onChange={() => null}
className="mr-1" className="mr-1"