0f1458cbe9
This PR fixes all followup that @Bonapara add on Discord. - [x] When no group by is set, clicking on group by should open the "field selection" menu - [x] When closed, chevron should be "chevron-right" instead of "chevron-up" - [x] Sort : Add ability to switch from alphabetical to manual when moving a option in sort alphabetical - [x] Add subtext for group by and sort - [x] Group by menu display bug - [x] Changing the sort should not close the menu - [x] Group by Activation -> shows empty state + is slow - [x] Switching from Kanban view Settings to Table Options menu displays an empty menu - [x] Unnecessary spacing under groups - [x] When no "select" are set on an object, redirect the user directly to the new Select field page - [x] Sort : Default should be manual - [x] Hidding "no value" displays all options and remove the "hide empty group" toggle - [x] Hide Empty group option disappeared - [x] Group by should not be persisted on "Locked/Main view" (**For now we just disable the group by on main view**) - [x] Hide Empty group should not be activated by default on Opportunities Kanban view - [ ] Animate the group opening/closing (**We'll be done later**) Performance improvement: https://github.com/user-attachments/assets/fd2acf66-0e56-45d0-8b2f-99c62e57d6f7 https://github.com/user-attachments/assets/80f1a2e1-9f77-4923-b85d-acb9cad96886 Also fix #9036 --------- Co-authored-by: Lucas Bordeau <bordeau.lucas@gmail.com>
38 lines
917 B
TypeScript
38 lines
917 B
TypeScript
import { ExtractPathParams } from '@/types/ExtractPathParams';
|
|
import { SettingsPath } from '@/types/SettingsPath';
|
|
import { isDefined } from '~/utils/isDefined';
|
|
|
|
type Params<V extends string> = {
|
|
[K in ExtractPathParams<V>]: string;
|
|
} & {
|
|
id?: string;
|
|
};
|
|
|
|
export const getSettingsPagePath = <Path extends SettingsPath>(
|
|
path: Path,
|
|
params?: Params<Path>,
|
|
searchParams?: Record<string, string>,
|
|
) => {
|
|
let resultPath = `/settings/${path}`;
|
|
|
|
if (isDefined(params)) {
|
|
resultPath = resultPath.replace(/:([a-zA-Z]+)/g, (_, key) => {
|
|
const value = params[key as keyof Params<Path>];
|
|
|
|
return value;
|
|
});
|
|
}
|
|
|
|
if (isDefined(params?.id)) {
|
|
resultPath = `${resultPath}/${params?.id}`;
|
|
}
|
|
|
|
if (isDefined(searchParams)) {
|
|
const searchParamsString = new URLSearchParams(searchParams).toString();
|
|
|
|
resultPath = `${resultPath}?${searchParamsString}`;
|
|
}
|
|
|
|
return resultPath;
|
|
};
|