* refactor admin settings feature * separated save-restart bar to separate component * created new CE dir to facilitate code split * created separate ee dir and exporting everything we have in ce file. * little mod * minor fix * splitting settings types config * using object literals for category types instead of enums * CE: support use of component for each category * minor style fix * authentication page UI changes implemented * github signup doc url added back * removed comments * routing updates * made subcategories listing in left pane optional * added muted saml to auth listing * added breadcrumbs and enabled button * created separate component for auth page and auth config * added callout and disconnect components * updated breadcrumbs component * minor updates to common components * updated warning callout and added icon * ce: test cases fixed * updated test file name * warning banner callout added on auth page * updated callout banner for form login * CE: Split config files * CE: moved the window declaration in EE file as its dependency will be updated in EE * CE: Splitting ApiConstants and SocialLogin constants * CE: split login page * CE: moved getSocialLoginButtonProps func to EE file as it's dependencies will be updated in EE * added key icon * CE: created a factory class to share social auths list * Minor style fix for social btns * Updated the third party auth styles * Small fixes to styling * ce: splitting forms constants * breadcrumbs implemented for all pages in admin settings * Settings breadcrumbs separated * splitted settings breadcrumbs between ce and ee * renamed default import * minor style fix * added login form config. * updated login/signup pages to use form login disabled config * removed common functionality outside * implemented breadcrumb component from scratch without using blueprint * removed unwanted code * Small style update * updated breadcrumb categories file name and breadcrumb icon * added cypress tests for admin settings auth page * added comments * update locator for upgrade button * added link for intercom on upgrade button * removed unnecessary file * minor style fix * style fix for auth option cards * split messages constant * fixed imports for message constants splitting. * added message constants * updated unit test cases * fixed messages import in cypress index * fixed messages import again, cypress fails to read re-exported objs. * added OIDC auth method on authentication page * updated import statements from ee to @appsmith * removed dead code * updated read more link UI * PR comments fixes * some UI fixes * used color and fonts from theme * fixed some imports * fixed some imports * removed warning imports * updated OIDC logo and auth method desc copies * css changes * css changes * css changes * updated cypress test for breadcrumb * moved callout component to ads as calloutv2 * UI changes for form fields * updated css for spacing between form fields * added sub-text on auth pages * added active class for breadcrumb item * added config for disable signup toggle and fixed UI issues of restart banner * fixed admin settings page bugs * assigned true as default state for signup * fixed messages import statements * updated code for PR comments related suggestions * reverted file path change in cypress support * updated cypress test * updated cypress test Co-authored-by: Ankita Kinger <ankita@appsmith.com>
118 lines
2.5 KiB
TypeScript
118 lines
2.5 KiB
TypeScript
import React, { ReactNode } from "react";
|
|
import { Link, useLocation } from "react-router-dom";
|
|
import styled from "styled-components";
|
|
import Icon from "./Icon";
|
|
import { Colors } from "constants/Colors";
|
|
|
|
export interface BreadcrumbsProps {
|
|
items: {
|
|
href: string;
|
|
text: string;
|
|
}[];
|
|
}
|
|
export interface BreadcrumbProps {
|
|
children: ReactNode;
|
|
}
|
|
|
|
export const StyledBreadcrumbList = styled.ol`
|
|
list-style: none;
|
|
display: flex;
|
|
align-items: center;
|
|
font-size: 16px;
|
|
color: #716e6e;
|
|
margin-bottom: 23px;
|
|
|
|
.breadcrumb-separator {
|
|
color: #716e6e;
|
|
margin: auto 6px;
|
|
user-select: none;
|
|
}
|
|
|
|
.t--breadcrumb-item {
|
|
&.active {
|
|
color: ${Colors.COD_GRAY};
|
|
font-size: 20px;
|
|
}
|
|
}
|
|
`;
|
|
|
|
function BreadcrumbSeparator({ children, ...props }: { children: ReactNode }) {
|
|
return (
|
|
<li className="breadcrumb-separator" {...props}>
|
|
{children}
|
|
</li>
|
|
);
|
|
}
|
|
|
|
function BreadcrumbItem({ children, ...props }: { children: ReactNode }) {
|
|
return (
|
|
<li className="breadcrumb-item" {...props}>
|
|
{children}
|
|
</li>
|
|
);
|
|
}
|
|
|
|
function BreadcrumbList(props: BreadcrumbProps) {
|
|
let children = React.Children.toArray(props.children);
|
|
|
|
children = children.map((child, index) => (
|
|
<BreadcrumbItem key={`breadcrumb_item${index}`}>{child}</BreadcrumbItem>
|
|
));
|
|
|
|
const lastIndex = children.length - 1;
|
|
|
|
const childrenNew = children.reduce((acc: ReactNode[], child, index) => {
|
|
const notLast = index < lastIndex;
|
|
|
|
if (notLast) {
|
|
acc.push(
|
|
child,
|
|
<BreadcrumbSeparator key={`breadcrumb_sep${index}`}>
|
|
<Icon name="right-arrow-2" />
|
|
</BreadcrumbSeparator>,
|
|
);
|
|
} else {
|
|
acc.push(child);
|
|
}
|
|
return acc;
|
|
}, []);
|
|
|
|
return (
|
|
<StyledBreadcrumbList className="t--breadcrumb-list">
|
|
{childrenNew}
|
|
</StyledBreadcrumbList>
|
|
);
|
|
}
|
|
|
|
function Breadcrumbs(props: BreadcrumbsProps) {
|
|
const { pathname } = useLocation();
|
|
return (
|
|
<BreadcrumbList>
|
|
{props.items.map(({ href, text }) =>
|
|
href === pathname ? (
|
|
<span
|
|
className={`t--breadcrumb-item ${
|
|
href === pathname ? `active` : ``
|
|
}`}
|
|
key={href}
|
|
>
|
|
{text}
|
|
</span>
|
|
) : (
|
|
<Link
|
|
className={`t--breadcrumb-item ${
|
|
href === pathname ? `active` : ``
|
|
}`}
|
|
key={href}
|
|
to={href}
|
|
>
|
|
{text}
|
|
</Link>
|
|
),
|
|
)}
|
|
</BreadcrumbList>
|
|
);
|
|
}
|
|
|
|
export default Breadcrumbs;
|