superman66 on check-tree-picker
test(CheckTreePicker): replace … (compare)
SevenOutman on Whisper-ref-types
fix(Whisper): correct type decl… docs(Whisper): add description … feat: export WhisperInstance (compare)
const RTable = ({ tableData }: RTableInterface) => {
const { Column, HeaderCell } = Table;
const [limit, setLimit] = useState(10);
const [page, setPage] = useState(1);
//const [data, setData] = useState(filterData(tableData));
const [sortColumn, setSortColumn] = useState("");
const [sortType, setSortType] = useState<SortType | undefined>();
const [loading, setLoading] = useState(false);
const handleChangeLimit = (dataKey) => {
setPage(1);
setLimit(dataKey);
};
const getData = () => {
if (sortColumn && sortType) {
return fakeData.sort((a, b) => {
let x = a[sortColumn];
let y = b[sortColumn];
if (typeof x === "string") {
x = x.charCodeAt(0);
}
if (typeof y === "string") {
y = y.charCodeAt(0);
}
if (sortType === "asc") {
return x - y;
} else {
return y - x;
}
});
}
return tableData;
};
const filterData = fakeData.filter((v, i) => {
const start = limit * (page - 1);
const end = start + limit;
return i >= start && i < end;
});
const handleSortColumn = (sortColumn, sortType) => {
setLoading(true);
setTimeout(() => {
setLoading(false);
setSortColumn(sortColumn);
setSortType(sortType);
}, 500);
};
return (
<div>
<Table
height={420}
data={filterData}
sortColumn={sortColumn}
sortType={sortType}
onSortColumn={handleSortColumn}
loading={loading}
onRowClick={(data) => {
console.log(data);
}}
>
<Column width={70} align="center" fixed>
<HeaderCell>Id</HeaderCell>
<Cell dataKey="id" />
</Column>
<Column width={200} fixed sortable>
<HeaderCell>First Name</HeaderCell>
<Cell dataKey="firstName" />
</Column>
<Column width={200} sortable>
<HeaderCell>Last Name</HeaderCell>
<Cell dataKey="lastName" />
</Column>
<Column width={200} sortable>
<HeaderCell>City</HeaderCell>
<Cell dataKey="city" />
</Column>
<Column width={200} sortable>
<HeaderCell>Street</HeaderCell>
<Cell dataKey="street" />
</Column>
<Column width={300} sortable>
<HeaderCell>Company Name</HeaderCell>
<Cell dataKey="companyName" />
</Column>
<Column width={300} sortable>
<HeaderCell>Email</HeaderCell>
<Cell dataKey="email" />
</Column>
<Column width={120} fixed="right">
<HeaderCell>Action</HeaderCell>
<Cell>
{(rowData) => {
function handleAction() {
alert(`id:${rowData.id}`);
}
return (
<span>
<a onClick={handleAction}> Edit </a> |{" "}
<a onClick={handleAction}> Remove </a>
</span>
);
}}
</Cell>
</Column>
</Table>
<div style={{ padding: 20 }}>
<Pagination
prev
next
first
last
ellipsis
boundaryLinks
maxButtons={5}
size="xs"
layout={["total", "-", "limit", "|", "pager", "skip"]}
total={tableData.length}
limitOptions={[10, 20]}
limit={limit}
activePage={page}
onChangePage={setPage}
onChangeLimit={handleChangeLimit}
/>
</div>
</div>
);
};
anyone who has managed to setup rsuite to work with react@17.0.2?
Using npm, adding the --legacy-peer-deps to my npm install command resovled the peer dependency issues I was having.
npm i --save --legacy-peer-deps rsuite
store.subscribe(() => {
const theme = store.getState().theme;
if (theme.name === 'dark') {
require('rsuite/dist/styles/rsuite-dark.min.css');
} else {
require('rsuite/dist/styles/rsuite-default.min.css');
}
});
navigator.onLine
to get a boolean when the page was just rendered
offline
document.addEventListener('offline', () => {/*your code*/})
you can use it with React state, like this (pseudo code)
function App() {
const [online, setOnline] = useState(navigator.onLine);
useEffect(() => {
document.addEventListener('offline', () => setOnline(false));
/* Or Jquery
* $(document).on('offline', () => setOnline(false);
*/
}, []);
return online ? <MyWebApp /> : <MyWebAppPlaceHolderWhenOffline />
}
or class
class App extends React.Component {
constructor(props) {
super(props);
this.state = { online: navigator.onLine }
document.addEventListener('offline', () => this.setState({online: false}));
/* Or Jquery
* $(document).on('offline', () => this.setState({online: false}));
*/
}
render() {
return this.state.online ? <MyWebApp /> : <MyWebAppPlaceHolderWhenOffline />
}
}