Skip to content

Instantly share code, notes, and snippets.

View DmitryMarkov's full-sized avatar
🎯
Focusing

Dmitry Markov DmitryMarkov

🎯
Focusing
View GitHub Profile
@DmitryMarkov
DmitryMarkov / save-scroll-position.js
Created August 9, 2020 09:47
Save and restore scroll position
let sidebar = document.querySelector(".sidebar");
let top = localStorage.getItem("sidebar-scroll");
if (top !== null) {
sidebar.scrollTop = parseInt(top, 10);
}
window.addEventListener("beforeunload", () => {
localStorage.setItem("sidebar-scroll", sidebar.scrollTop);
});
var mongoObjectId = function () {
var timestamp = (new Date().getTime() / 1000 | 0).toString(16);
return timestamp + 'xxxxxxxxxxxxxxxx'.replace(/[x]/g, function() {
return (Math.random() * 16 | 0).toString(16);
}).toLowerCase();
};

Keybase proof

I hereby claim:

  • I am dmitrymarkov on github.
  • I am dmitrymarkov (https://keybase.io/dmitrymarkov) on keybase.
  • I have a public key ASDHtPHLTXvzuIGkQy1b5-PDzmsTZwTwOsMadRNgWD25Ego

To claim this, I am signing this object:

@DmitryMarkov
DmitryMarkov / Selector.js
Created January 20, 2019 12:10
Selector.js
const Selector = ({ folders }) => (
<form>
<label for="example">Select folder</label>
<select class="form-control" id="example">
<TreeComponent folders={folders}>
{({ folder: { id, name } }) => (<option key={id}>{name}</option>)}
</TreeComponent>
</select>
</form>
)
@DmitryMarkov
DmitryMarkov / FolderList.js
Created January 20, 2019 12:09
FolderList
const FolderName = ({ folder: { name }, level }) => (
<div style={{ paddingLeft: level * 20 }}>{name}</div>
)
const FolderList = ({ folders }) => (
<>
<TreeComponent folders={folders}>
{(props) => (<FolderName {...props} />)}
</TreeComponent>
</>
@DmitryMarkov
DmitryMarkov / TreeComponent.js
Last active January 20, 2019 16:58
TreeComponent
const TreeComponent = ({ folders, children }) => {
const renderTree = (folders, level = 0) =>
folders.length && folders.map(folder => {
if (folder.children && folder.children.length) {
return [
children({ folder, level }),
...renderTree(folder.children, level + 1)
]
}
return children({ folder, level })
@DmitryMarkov
DmitryMarkov / folders.js
Created January 20, 2019 11:56
Folders example
const folders = [{
id: 1,
name: 'JavaScript',
children: [{
id: 2,
name: 'Frameworks',
children: [{
id: 3,
name: 'Angular'
}, {