index.jsx 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. import styles from "@components/GameTabs/styles.module.scss";
  2. import React, {Fragment, useState} from "react";
  3. import symbol from '@assets/symbol-defs.svg';
  4. import AllWidgets from "@widgets/index";
  5. const GameTabs=({data})=>{
  6. const [tabIndex, setTabIndex] = useState(1);
  7. // data={
  8. // tabs:[
  9. // {type:0,title:'Lobby',icon:'icon_Lobby'},
  10. // {type:1,title:'Top Picks',icon: 'icon_ClassicDice'},
  11. // {type:2,title:'Slots',icon: 'icon_Slots'},
  12. // {type:3,title:'Hot Games',icon: 'icon_HotGame'},
  13. // {type:4,title:'Live Casino',icon: 'icon_LiveCasino'},
  14. // {type:5,title:'Table Games',icon: 'icon_TableGame'},
  15. // {type:6,title:'New Releases',icon: 'icon_NewReleases'},
  16. // ],
  17. // data:{
  18. //
  19. // }
  20. // }
  21. const changeTab=(tabIndex)=>{
  22. setTabIndex(tabIndex);
  23. }
  24. const renderTabs=()=>{
  25. let tabs=data.tabs;
  26. if (tabs==null)tabs=[];
  27. return (
  28. <div className={styles.game_tabs}>
  29. {
  30. tabs.map((item,index)=>{
  31. return (
  32. <button key={index} onClick={()=>{
  33. changeTab(item.tabtype);
  34. }} className={`${styles.tab_item} ${item.tabtype==tabIndex?styles.active:''}`}>
  35. <svg className={styles.icon}>
  36. <use xlinkHref={`${symbol}#${item.icon}`} />
  37. </svg>
  38. {item.title}
  39. </button>
  40. )
  41. })
  42. }
  43. </div>
  44. )
  45. }
  46. const getModules=()=>{
  47. let modules=data.data;
  48. let list=[];
  49. if (modules){
  50. for (let i = 0; i < modules.length; i++) {
  51. let item=modules[i];
  52. if (item.tabtype===tabIndex){
  53. list.push(item);
  54. }
  55. }
  56. }
  57. return list;
  58. }
  59. const renderModule=()=>{
  60. let list=getModules();
  61. return (
  62. <>
  63. {
  64. list.map((item,index)=>{
  65. let Comp=AllWidgets[item.type];
  66. if (Comp==null)return (<></>);
  67. return (
  68. <Fragment key={index}>
  69. <Comp data={item}></Comp>
  70. </Fragment>
  71. )
  72. })
  73. }
  74. </>
  75. )
  76. }
  77. return (
  78. <div className={`w-100 layout ${styles.container}`}>
  79. {renderTabs()}
  80. {renderModule()}
  81. </div>
  82. )
  83. }
  84. export default GameTabs;