{"ast":null,"code":"import { jsxDEV as _jsxDEV } from \"react/jsx-dev-runtime\";\nimport { Fragment as _Fragment } from \"react/jsx-dev-runtime\";\nvar _jsxFileName = \"/home/gkkdzdg/www/src/components/list/List.js\";\nimport cn from 'classnames';\nimport BoxButton from 'components/gui/BoxButton';\nimport Button from 'components/gui/Button';\nimport CircleButton from 'components/gui/CircleButton';\nimport ListFilters from 'components/listFilters/ListFilters';\nimport SearchBox from 'components/searchBox/SearchBox';\nimport { useIsDesktop } from 'hooks/useIsDevice';\nimport { useEffect, useState } from 'react';\nimport styles from './List.module.scss';\n\nconst List = ({\n  classNameSearch,\n  classNameList,\n  items,\n  renderItem,\n  limit = 0,\n  searchFilter,\n  placeholder,\n  loadMore,\n  filters\n}) => {\n  const {\n    0: input,\n    1: setInput\n  } = useState('');\n  const {\n    0: showAll,\n    1: setShowAll\n  } = useState(true);\n\n  const onSearch = input => setInput(input);\n\n  const {\n    0: currentFilter,\n    1: setCurrentFilter\n  } = useState(filters && filters.length && filters[0]);\n\n  const onChangeFilter = label => {\n    setCurrentFilter(label);\n  };\n\n  const isDesktop = useIsDesktop();\n  useEffect(() => {\n    if (!isDesktop) setShowAll(false);\n  }, [isDesktop]);\n  let listedItems = items;\n  if (searchFilter && input != '') listedItems = listedItems.filter(item => searchFilter(item, input));\n\n  if (currentFilter) {\n    listedItems = listedItems.filter(currentFilter.filter);\n  }\n\n  const hasMoreToShow = limit > 0 && input == '' && !showAll && listedItems.length > limit;\n\n  if (hasMoreToShow) {\n    listedItems = listedItems.slice(0, limit);\n  }\n\n  return /*#__PURE__*/_jsxDEV(_Fragment, {\n    children: [searchFilter && /*#__PURE__*/_jsxDEV(SearchBox, {\n      className: cn(classNameSearch),\n      onSearch: onSearch,\n      placeholder: placeholder\n    }, void 0, false, {\n      fileName: _jsxFileName,\n      lineNumber: 46,\n      columnNumber: 27\n    }, this), filters && /*#__PURE__*/_jsxDEV(ListFilters, {\n      title: 'Filtrer :',\n      onChange: onChangeFilter,\n      filteredList: items,\n      filters: filters\n    }, void 0, false, {\n      fileName: _jsxFileName,\n      lineNumber: 51,\n      columnNumber: 22\n    }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n      className: styles.listCont,\n      children: /*#__PURE__*/_jsxDEV(\"ul\", {\n        className: cn(styles.list, classNameList),\n        children: listedItems.map(item => renderItem(item))\n      }, void 0, false, {\n        fileName: _jsxFileName,\n        lineNumber: 59,\n        columnNumber: 13\n      }, this)\n    }, void 0, false, {\n      fileName: _jsxFileName,\n      lineNumber: 58,\n      columnNumber: 10\n    }, this), hasMoreToShow && /*#__PURE__*/_jsxDEV(Button, {\n      className: cn(styles.button),\n      onClick: () => setShowAll(true),\n      children: [/*#__PURE__*/_jsxDEV(CircleButton, {\n        color: \"white\",\n        icon: \"plus\"\n      }, void 0, false, {\n        fileName: _jsxFileName,\n        lineNumber: 68,\n        columnNumber: 13\n      }, this), /*#__PURE__*/_jsxDEV(\"p\", {\n        className: cn('p--m'),\n        children: loadMore\n      }, void 0, false, {\n        fileName: _jsxFileName,\n        lineNumber: 72,\n        columnNumber: 13\n      }, this)]\n    }, void 0, true, {\n      fileName: _jsxFileName,\n      lineNumber: 64,\n      columnNumber: 10\n    }, this)]\n  }, void 0, true);\n};\n\nexport default List;","map":{"version":3,"sources":["/home/gkkdzdg/www/src/components/list/List.js"],"names":["cn","BoxButton","Button","CircleButton","ListFilters","SearchBox","useIsDesktop","useEffect","useState","styles","List","classNameSearch","classNameList","items","renderItem","limit","searchFilter","placeholder","loadMore","filters","input","setInput","showAll","setShowAll","onSearch","currentFilter","setCurrentFilter","length","onChangeFilter","label","isDesktop","listedItems","filter","item","hasMoreToShow","slice","listCont","list","map","button"],"mappings":"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","sourcesContent":["\nimport cn from 'classnames'\nimport BoxButton from 'components/gui/BoxButton'\nimport Button from 'components/gui/Button'\nimport CircleButton from 'components/gui/CircleButton'\nimport ListFilters from 'components/listFilters/ListFilters'\nimport SearchBox from 'components/searchBox/SearchBox'\nimport { useIsDesktop } from 'hooks/useIsDevice'\nimport { useEffect, useState } from 'react'\nimport styles from './List.module.scss'\n\nconst List = ({ classNameSearch, classNameList, items, renderItem, limit=0, searchFilter, placeholder, loadMore, filters, }) => {\n\n   const [input, setInput] = useState('')\n   const [showAll, setShowAll] = useState(true)\n\n   const onSearch = input => setInput(input)\n\n   const [currentFilter, setCurrentFilter] = useState(filters && filters.length && filters[0])\n   const onChangeFilter = (label) => {\n      setCurrentFilter(label)\n   }\n\n   const isDesktop = useIsDesktop()\n\n   useEffect(() => {\n      if (!isDesktop) setShowAll(false)\n   }, [isDesktop])\n\n   let listedItems = items\n\n   if (searchFilter && input != '') listedItems = listedItems.filter(item => searchFilter(item, input))\n\n   if(currentFilter) {\n      listedItems = listedItems.filter(currentFilter.filter)\n   }\n\n   const hasMoreToShow = limit > 0 && input == '' && !showAll && listedItems.length > limit\n   if (hasMoreToShow) {\n      listedItems = listedItems.slice(0, limit)\n   }\n\n\n   return (\n      <>\n         {searchFilter && <SearchBox\n            className={cn(classNameSearch)}\n            onSearch={onSearch}\n            placeholder={placeholder}\n         />}\n         {filters && <ListFilters\n            title={'Filtrer :'}\n            onChange={onChangeFilter}\n            filteredList={items}\n            filters={filters}\n         />\n         }\n         <div className={styles.listCont}>\n            <ul className={cn(styles.list, classNameList)}>\n               {listedItems.map(item => renderItem(item))}\n            </ul>\n         </div>\n         {hasMoreToShow &&\n         <Button\n            className={cn(styles.button)}\n            onClick={() => setShowAll(true)}\n            >\n            <CircleButton\n               color='white'\n               icon='plus'\n               />\n            <p className={cn('p--m')}>{loadMore}</p>\n         </Button>\n         }\n      </>\n   )\n}\n\nexport default List"]},"metadata":{},"sourceType":"module"}