VisualLabelList.tsx 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. import React, { useMemo } from "react";
  2. import { LoV, useLovListMemo } from "taipy-gui";
  3. interface VisualLabelListProps {
  4. lov?: LoV;
  5. defaultLov?: string;
  6. sort?: "asc" | "desc";
  7. }
  8. const styles = {
  9. listItem: {
  10. display: "flex",
  11. alignItems: "center",
  12. },
  13. image: {
  14. marginRight: "8px",
  15. width: "1em",
  16. height: "1em",
  17. },
  18. };
  19. const VisualLabelList: React.FC<VisualLabelListProps> = ({ lov, defaultLov = "", sort }) => {
  20. const lovList = useLovListMemo(lov, defaultLov);
  21. const sortedLovList = useMemo(() => {
  22. if (sort) {
  23. return lovList.slice().sort((a, b) => {
  24. return sort === "asc" ? a.id.localeCompare(b.id) : b.id.localeCompare(a.id);
  25. });
  26. }
  27. return lovList;
  28. }, [lovList, sort]);
  29. return (
  30. <div>
  31. <ul>
  32. {sortedLovList.map((item, index) => (
  33. <li key={index} style={styles.listItem}>
  34. {typeof item.item === "string" ? null : (
  35. <img src={item.item.path} alt={item.item.text} style={styles.image} />
  36. )}
  37. {item.id}
  38. </li>
  39. ))}
  40. </ul>
  41. </div>
  42. );
  43. };
  44. export default VisualLabelList;