import React from 'react';
import EventBus from '../../../../../modules/helpers/eventbus';
import DragHandleIcon from '@material-ui/icons/DragIndicator';
import { sortableContainer, sortableElement } from 'react-sortable-hoc';
import { toast } from 'react-toastify';
const enabled = (setting) => {
switch (setting) {
case 'quicklinks':
return (localStorage.getItem('quicklinksenabled') === 'true');
default:
return (localStorage.getItem(setting) === 'true');
}
};
const settings = window.language.modals.main.settings.sections;
const widget_name = {
greeting: settings.greeting.title,
time: settings.time.title,
quicklinks: settings.quicklinks.title,
quote: settings.quote.title,
date: settings.time.date.title
};
const SortableItem = sortableElement(({ value }) => (
{widget_name[value]}
));
const SortableContainer = sortableContainer(({ children }) => {
return ;
});
export default class OrderSettings extends React.PureComponent {
constructor() {
super();
this.state = {
items: JSON.parse(localStorage.getItem('order'))
};
this.language = window.language.modals.main.settings;
}
// based on https://stackoverflow.com/a/48301905
arrayMove(array, oldIndex, newIndex) {
if (oldIndex === newIndex) {
return array;
}
const newArray = [...array];
const target = newArray[oldIndex];
const inc = newIndex < oldIndex ? -1 : 1;
for (let i = oldIndex; i !== newIndex; i += inc) {
newArray[i] = newArray[i + inc];
}
newArray[newIndex] = target;
return newArray;
}
onSortEnd = ({ oldIndex, newIndex }) => {
this.setState({
items: this.arrayMove(this.state.items, oldIndex, newIndex)
});
}
reset = () => {
localStorage.setItem('order', JSON.stringify(['greeting', 'time', 'quicklinks', 'quote', 'date']));
this.setState({
items: JSON.parse(localStorage.getItem('order'))
});
toast(window.language.toasts.reset);
}
componentDidUpdate() {
localStorage.setItem('order', JSON.stringify(this.state.items));
EventBus.dispatch('refresh', 'widgets');
}
render() {
return (
<>
{this.language.sections.order.title}
{this.language.buttons.reset}
{this.state.items.map((value, index) => (
))}
>
);
}
}