1
0
Fork 0
mirror of https://github.com/portainer/portainer.git synced 2025-08-02 20:35:25 +02:00

refactor(app-templates): convert list to react [EE-6205] (#10439)

This commit is contained in:
Chaim Lev-Ari 2023-10-23 19:04:18 +03:00 committed by GitHub
parent 1fa63f6ab7
commit 14129632a3
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
22 changed files with 393 additions and 351 deletions

View file

@ -1,32 +0,0 @@
import { Select } from '@@/form-components/ReactSelect';
interface Filter {
label?: string;
}
interface Props {
options: string[];
onChange: (value: string | null) => void;
placeholder?: string;
value: string;
}
export function TemplateListDropdown({
options,
onChange,
placeholder,
value,
}: Props) {
const filterOptions: Filter[] = options.map((value) => ({ label: value }));
const filterValue: Filter | null = value ? { label: value } : null;
return (
<Select
placeholder={placeholder}
options={filterOptions}
value={filterValue}
isClearable
onChange={(option) => onChange(option?.label ?? null)}
/>
);
}

View file

@ -1,11 +0,0 @@
import { react2angular } from '@/react-tools/react2angular';
import { TemplateListDropdown } from './TemplateListDropdown';
const TemplateListDropdownAngular = react2angular(TemplateListDropdown, [
'options',
'onChange',
'placeholder',
'value',
]);
export { TemplateListDropdown, TemplateListDropdownAngular };

View file

@ -1,24 +0,0 @@
.sort-by-container {
display: flex;
align-items: center;
justify-content: flex-end;
}
.sort-by-element {
display: inline-block;
}
.sort-button {
--text-color: var(--grey-6);
background-color: var(--bg-sortbutton-color);
color: var(--text-color);
border: 1px solid var(--border-sortbutton);
display: inline-block;
padding: 8px 10px;
border-radius: 5px;
}
:global([theme='dark']) .sort-button,
:global([theme='highcontrast']) .sort-button {
--text-color: var(--white-color);
}

View file

@ -1,56 +0,0 @@
import clsx from 'clsx';
import { TableHeaderSortIcons } from '@@/datatables/TableHeaderSortIcons';
import { TemplateListDropdown } from '../TemplateListDropdown';
import styles from './TemplateListSort.module.css';
interface Props {
options: string[];
onChange: (value: string | null) => void;
onDescending: () => void;
placeholder?: string;
sortByDescending: boolean;
sortByButton: boolean;
value: string;
}
export function TemplateListSort({
options,
onChange,
onDescending,
placeholder,
sortByDescending,
sortByButton,
value,
}: Props) {
return (
<div className={styles.sortByContainer}>
<div className={styles.sortByElement}>
<TemplateListDropdown
placeholder={placeholder}
options={options}
onChange={onChange}
value={value}
/>
</div>
<div className={styles.sortByElement}>
<button
className={clsx(styles.sortButton, 'h-[34px]')}
type="button"
disabled={!sortByButton || !value}
onClick={(e) => {
e.preventDefault();
onDescending();
}}
>
<TableHeaderSortIcons
sorted={sortByButton && !!value}
descending={sortByDescending}
/>
</button>
</div>
</div>
);
}

View file

@ -1,14 +0,0 @@
import { react2angular } from '@/react-tools/react2angular';
import { TemplateListSort } from './TemplateListSort';
const TemplateListSortAngular = react2angular(TemplateListSort, [
'options',
'onChange',
'onDescending',
'placeholder',
'sortByDescending',
'sortByButton',
'value',
]);
export { TemplateListSort, TemplateListSortAngular };