Skip to content

Commit

Permalink
updated sort modal
Browse files Browse the repository at this point in the history
  • Loading branch information
abilpraju-aot committed Jan 21, 2025
1 parent efaee06 commit 5e14b80
Show file tree
Hide file tree
Showing 12 changed files with 299 additions and 15 deletions.
144 changes: 144 additions & 0 deletions forms-flow-components/src/components/CustomComponents/SortModal.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,144 @@
import React, { useEffect, useState } from "react";
import Modal from "react-bootstrap/Modal";
import { CustomButton } from "./Button";
import { CloseIcon } from "../SvgIcons/index";
import { useTranslation } from "react-i18next";
import { InputDropdown } from "./InputDropdown";

interface SortModalProps {
showSortModal: boolean;
onClose?: () => void;
primaryBtnAction?: (selectedOption: string, order: string) => void;
secondaryBtnAction?: () => void;
modalHeader?: string;
primaryBtnLabel?: string;
secondaryBtnLabel?: string;
optionSortBy: { value: string; label: string }[];
optionSortOrder: { value: string; label: string }[];
defaultSortOption?: string;
defaultSortOrder?: string;
firstItemLabel?: string;
secondItemLabel?: string;
primaryBtndataTestid?: string;
secondaryBtndataTestid?: string;
primaryBtnariaLabel?: string;
secondaryBtnariaLabel?: string;
closedataTestid?: string;
}

export const SortModal: React.FC<SortModalProps> = React.memo(
({
showSortModal,
onClose,
primaryBtnAction,
secondaryBtnAction = onClose,
modalHeader = "Sort",
primaryBtnLabel = "Sort Results",
secondaryBtnLabel = "Cancel",
optionSortBy = [],
optionSortOrder = [],
defaultSortOption = "",
defaultSortOrder = "",
firstItemLabel = "Sort By",
secondItemLabel = "In a",
primaryBtndataTestid = "apply-sort-button",
secondaryBtndataTestid = "cancel-sort-button",
primaryBtnariaLabel = "Apply sorting",
secondaryBtnariaLabel = "Cancel",
closedataTestid = "close-sort-modal",
}) => {
const { t } = useTranslation();
const [selectedOption, setSelectedOption] = useState(defaultSortOption);
const [selectedOrder, setSelectedOrder] = useState(defaultSortOrder);

const handlePrimaryAction = () => {
if (primaryBtnAction) {
primaryBtnAction(selectedOption, selectedOrder);
}
};

useEffect(() => {
if (!showSortModal) {
setSelectedOption(defaultSortOption);
setSelectedOrder(defaultSortOrder);
}
}, [showSortModal, defaultSortOption, defaultSortOrder]);

return (
<Modal show={showSortModal} onHide={onClose} size="sm" centered={true}>
<Modal.Header>
<Modal.Title>
<b>{t(modalHeader)}</b>
</Modal.Title>
<div className="d-flex align-items-center">
<CloseIcon onClick={onClose} data-testid={closedataTestid} />
</div>
</Modal.Header>
<Modal.Body className="sort-settings p-0">
<div className="sortbody-settings">
<InputDropdown
firstItemLabel={t(firstItemLabel)}
isAllowInput={false}
Options={optionSortBy.map((option) => ({
label: t(option.label),
onClick: () => setSelectedOption(option.value),
}))}
dropdownLabel={t(firstItemLabel)}
selectedOption={t(
optionSortBy.find((option) => option.value === selectedOption)
?.label || ""
)}
isInvalid={false}
ariaLabelforDropdown={t("Sort By Dropdown")}
ariaLabelforInput={t("Sort By Input")}
dataTestIdforDropdown="dropdown-sort-by"
dataTestIdforInput="input-sort-by"
/>
<InputDropdown
firstItemLabel={t(secondItemLabel)}
isAllowInput={false}
Options={optionSortOrder.map((option) => ({
label: t(option.label),
onClick: () => setSelectedOrder(option.value),
}))}
dropdownLabel={t(secondItemLabel)}
selectedOption={t(
optionSortOrder.find((option) => option.value === selectedOrder)
?.label || ""
)}
isInvalid={false}
ariaLabelforDropdown={t("Order Dropdown")}
ariaLabelforInput={t("Order Input")}
dataTestIdforDropdown="dropdown-sort-order"
dataTestIdforInput="input-sort-order"
/>
</div>
</Modal.Body>

<Modal.Footer className="d-flex justify-content-start">
<CustomButton
variant="primary"
size="md"
disabled={!selectedOption || !selectedOrder}
label={t(primaryBtnLabel)}
onClick={handlePrimaryAction}
name="applyButton"
dataTestid={primaryBtndataTestid}
ariaLabel={t(primaryBtnariaLabel)}
/>
<CustomButton
variant="secondary"
size="md"
name="cancelButton"
label={t(secondaryBtnLabel)}
onClick={secondaryBtnAction}
dataTestid={secondaryBtndataTestid}
ariaLabel={t(secondaryBtnariaLabel)}
/>
</Modal.Footer>
</Modal>
);
}
);

export default SortModal;
53 changes: 53 additions & 0 deletions forms-flow-components/src/components/SvgIcons/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -687,6 +687,59 @@ export const StarPremiumIcon = ({ color = baseColor,...props }) => (
</svg>
);

export const RefreshIcon = ({ color = baseColor, onClick, ...props }) => (
<svg
className="icon-wrapper-change"
width="43"
height="43"
viewBox="0 0 43 43"
fill="none"
onClick={onClick}
xmlns="http://www.w3.org/2000/svg"
>
<circle cx="21.5" cy="21.5" r="21.5" fill="#E2E1FC" />
<path
d="M14.5901 18.4524C15.724 15.5458 18.431 13.5 21.5901 13.5C24.7492 13.5 27.4562 15.5458 28.5901 18.4524M28.5901 24.5476C27.4562 27.4542 24.7492 29.5 21.5901 29.5C18.431 29.5 15.724 27.4542 14.5901 24.5476M25.1829 24.4777L29.2603 23.2539L30.4841 27.3312M18.0872 18.2866L14.0945 19.8652L12.5159 15.8725"
stroke={color}
strokeWidth="2"
stroke-linecap="round"
stroke-linejoin="round"
/>
</svg>
);

export const FilterIcon = ({ color = baseColor, onClick, ...props }) => (
<svg
className="icon-wrapper-change"
width="43"
height="43"
viewBox="0 0 43 43"
fill="none"
onClick={onClick}
xmlns="http://www.w3.org/2000/svg"
>
<circle cx="21.5" cy="21.5" r="21.5" fill="#E2E1FC" />
<path
d="M13.5312 17.5H29.4688"
stroke={color}
strokeWidth="2"
stroke-linecap="round"
/>
<path
d="M13.5312 25.5H19.0312"
stroke={color}
strokeWidth="2"
stroke-linecap="round"
/>
<path
d="M13.5312 21.5H23.5312"
stroke={color}
strokeWidth="2"
stroke-linecap="round"
/>
</svg>
);

export const SortIcon = ({ color = grayColor, ...props }) => (
<svg
width="12"
Expand Down
1 change: 1 addition & 0 deletions forms-flow-components/src/components/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ export * from "./CustomComponents/FormTextArea";
export * from "./CustomComponents/Search";
export * from "./CustomComponents/ProgressBar";
export * from "./CustomComponents/FormBuilderModal";
export * from "./CustomComponents/SortModal";
export * from "./CustomComponents/HistoryModal";
export * from "./CustomComponents/InputDropdown";
export * from './CustomComponents/ReusableProcessTableRow';
Expand Down
12 changes: 11 additions & 1 deletion forms-flow-service/src/resourceBundles/bg/resourceBundles.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1213,5 +1213,15 @@ export const RESOURCE_BUNDLES_BG = {
"previous": "Предишна",
"next": "Следваща",
"Month": "Месец",
"Year": "Година"
"Year": "Година",
"Sort": "Сортирай",
"Sort Results": "Резултати от сортирането",
"Sort By": "Сортиране по",
"In a": "В",
"Sort By Dropdown": "Раздел Сортиране по",
"Sort By Input": "Вход Сортиране по",
"Order Dropdown": "Раздел Ред",
"Order Input": "Вход Ред",
"Apply sorting": "Приложи сортиране",
"Last Edited": "Последна редакция",
}
12 changes: 11 additions & 1 deletion forms-flow-service/src/resourceBundles/de/resourceBundles.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1218,5 +1218,15 @@ export const RESOURCE_BUNDLES_DE = {
"previous": "vorherige",
"next": "nächste",
"Month": "Monat",
"Year": "Jahr"
"Year": "Jahr",
"Sort": "Sortieren",
"Sort Results": "Sortierergebnisse",
"Sort By": "Sortieren nach",
"In a": "In einer",
"Sort By Dropdown": "Dropdown Sortieren nach",
"Sort By Input": "Eingabe Sortieren nach",
"Order Dropdown": "Dropdown Reihenfolge",
"Order Input": "Eingabe Reihenfolge",
"Apply sorting": "Sortierung anwenden",
"Last Edited": "Zuletzt Bearbeitet",
}
12 changes: 11 additions & 1 deletion forms-flow-service/src/resourceBundles/en/resourceBundles.ts
Original file line number Diff line number Diff line change
Expand Up @@ -720,5 +720,15 @@ export const RESOURCE_BUNDLES_EN ={
"Date / Time": "Date / Time",
"Month": "Month",
"Day": "Day",
"Year": "Year"
"Year": "Year",
"Sort": "Sort",
"Sort Results": "Sort Results",
"Sort By": "Sort By",
"In a": "In a",
"Sort By Dropdown": "Sort By Dropdown",
"Sort By Input": "Sort By Input",
"Order Dropdown": "Order Dropdown",
"Order Input": "Order Input",
"Apply sorting": "Apply sorting",
"Last Edited": "Last Edited",
}
12 changes: 11 additions & 1 deletion forms-flow-service/src/resourceBundles/es/resourceBundles.ts
Original file line number Diff line number Diff line change
Expand Up @@ -704,5 +704,15 @@ export const RESOURCE_BUNDLES_ES = {
"Date / Time": "Fecha / Hora",
"Month": "Mes",
"Day": "Día",
"Year": "Año"
"Year": "Año",
"Sort": "Ordenar",
"Sort Results": "Resultados del Ordenamiento",
"Sort By": "Ordenar Por",
"In a": "En una",
"Sort By Dropdown": "Menú desplegable Ordenar Por",
"Sort By Input": "Entrada Ordenar Por",
"Order Dropdown": "Menú desplegable de Orden",
"Order Input": "Entrada de Orden",
"Apply sorting": "Aplicar orden",
"Last Edited": "Última Edición",
}
12 changes: 11 additions & 1 deletion forms-flow-service/src/resourceBundles/fr/resourceBundles.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1216,7 +1216,17 @@ export const RESOURCE_BUNDLES_FR ={
"previous": "précédent",
"next": "suivant",
"Month": "Mois",
"Year": "Année"
"Year": "Année",
"Sort": "Trier",
"Sort Results": "Résultats du tri",
"Sort By": "Trier par",
"In a": "Dans un",
"Sort By Dropdown": "Menu déroulant Trier par",
"Sort By Input": "Entrée Trier par",
"Order Dropdown": "Menu déroulant de l'ordre",
"Order Input": "Entrée de l'ordre",
"Apply sorting": "Appliquer le tri",
"Last Edited": "Dernière Modification",
}


Expand Down
12 changes: 11 additions & 1 deletion forms-flow-service/src/resourceBundles/pt/resourceBundles.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1215,5 +1215,15 @@ export const RESOURCE_BUNDLES_PT ={
"previous": "anterior",
"next": "próximo",
"Month": "Mês",
"Year": "Ano"
"Year": "Ano",
"Sort": "Ordenar",
"Sort Results": "Resultados da Ordenação",
"Sort By": "Ordenar Por",
"In a": "Em uma",
"Sort By Dropdown": "Menu suspenso de Ordenar Por",
"Sort By Input": "Entrada de Ordenar Por",
"Order Dropdown": "Menu suspenso de Ordem",
"Order Input": "Entrada de Ordem",
"Apply sorting": "Aplicar ordenação",
"Last Edited": "Última Edição",
};
12 changes: 11 additions & 1 deletion forms-flow-service/src/resourceBundles/zh/resourceBundles.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1202,5 +1202,15 @@ export const RESOURCE_BUNDLES_ZH = {
"previous": "上一页",
"next": "下一页",
"Month": "月",
"Year": "年"
"Year": "年",
"Sort": "排序",
"Sort Results": "排序结果",
"Sort By": "排序依据",
"In a": "以",
"Sort By Dropdown": "排序依据下拉菜单",
"Sort By Input": "排序依据输入框",
"Order Dropdown": "排序顺序下拉菜单",
"Order Input": "排序顺序输入框",
"Apply sorting": "应用排序",
"Last Edited": "最后编辑",
}
8 changes: 8 additions & 0 deletions forms-flow-theme/scss/_icon.scss
Original file line number Diff line number Diff line change
Expand Up @@ -6,3 +6,11 @@
i.fa.fa-question-circle.text-muted {
color: var(--ff-primary-300) !important;
}
.icon-wrapper-change {
cursor: pointer;
transition: transform 0.5s, color 0.5s;
}

.icon-wrapper-change:hover {
opacity: 0.8;
}
24 changes: 16 additions & 8 deletions forms-flow-theme/scss/_modal.scss
Original file line number Diff line number Diff line change
Expand Up @@ -940,11 +940,19 @@ $secondary: var(--ff-secondary);
margin-top: 1.5rem;
}
}








.sort-settings{
.sortbody-settings{
display: flex;
padding: var(--spacer-200) var(--spacer-250);
gap: var(--rem-150, 24px);
flex-direction: column;
align-items: flex-start;
align-self: stretch;
}
.input-dropdown .list-group {
min-height: auto !important;
}
}
.button-align{
gap: var(--spacer-100);
}

0 comments on commit 5e14b80

Please sign in to comment.