FPSMS-frontend
Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.

SearchPage.tsx 1.5 KiB

3 meses atrás
2 meses atrás
3 meses atrás
2 meses atrás
3 meses atrás
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. "use client";
  2. import SearchBox, { Criterion } from "../SearchBox";
  3. import { useCallback, useMemo, useState } from "react";
  4. import { useTranslation } from "react-i18next";
  5. import SearchResults, { Column } from "../SearchResults/index";
  6. import { StockIssueResult } from "./action";
  7. interface Props {
  8. dataList: StockIssueResult[];
  9. };
  10. type SearchQuery = Partial<Omit<StockIssueResult, "id">>;
  11. type SearchParamNames = keyof SearchQuery;
  12. const SearchPage: React.FC<Props> = ({dataList}) => {
  13. const { t } = useTranslation("user");
  14. const [filteredList, setFilteredList] = useState(dataList);
  15. const searchCriteria: Criterion<SearchParamNames>[] = useMemo(
  16. () => [
  17. {
  18. label: t("Lot No."),
  19. paramName: "lotNo",
  20. type: "text",
  21. },
  22. ],
  23. [t],
  24. );
  25. const columns = useMemo<Column<StockIssueResult>[]>(
  26. () => [
  27. { name: "itemCode", label: t("Item Code") },
  28. { name: "itemDescription", label: t("Item") },
  29. { name: "lotNo", label: t("Lot No.") },
  30. { name: "storeLocation", label: t("Location") },
  31. { name: "badItemQty", label: t("Defective Qty") }
  32. ],
  33. [t],
  34. );
  35. return (
  36. <>
  37. <SearchBox
  38. criteria={searchCriteria}
  39. onSearch={(query) => {
  40. }}
  41. />
  42. <SearchResults<StockIssueResult>
  43. items={filteredList}
  44. columns={columns}
  45. pagingController={{ pageNum: 1, pageSize: 10 }}
  46. />
  47. </>
  48. );
  49. };
  50. export default SearchPage;