import React from 'react';
import PropTypes from 'prop-types';
import {
Modal, ModalBody, Nav, NavItem, NavLink, TabContent, TabPane,
} from 'reactstrap';
import { withTranslation } from 'react-i18next';
import PageListIcon from './Icons/PageListIcon';
import TimeLineIcon from './Icons/TimeLineIcon';
import RecentChangesIcon from './Icons/RecentChangesIcon';
import AttachmentIcon from './Icons/AttachmentIcon';
import ShareLinkIcon from './Icons/ShareLinkIcon';
import { withUnstatedContainers } from './UnstatedUtils';
import PageAccessoriesContainer from '../services/PageAccessoriesContainer';
import PageAttachment from './PageAttachment';
import PageTimeline from './PageTimeline';
import PageList from './PageList';
import PageHistory from './PageHistory';
import ShareLink from './ShareLink/ShareLink';
const PageAccessoriesModal = (props) => {
const { t, pageAccessoriesContainer } = props;
const { switchActiveTab } = pageAccessoriesContainer;
const { activeTab } = pageAccessoriesContainer.state;
function closeModalHandler() {
if (props.onClose == null) {
return;
}
props.onClose();
}
const menu = document.getElementsByClassName('nav'); // 上部に持ってきた
const navId = document.getElementById('nav-width');
// Values are set.
// Might make this dynamic for px, %, pt, em
function getPercentage(min, max) {
return min / max * 100;
}
// Not using reduce, because IE8 doesn't supprt it
function getArraySum(arr) {
let sum = 0;
[].forEach.call(arr, (el, index) => {
sum += el;
});
return sum;
}
function navSlider(menu, callback) { // ok
const arrayMenu1 = Array.from(menu);
const menuWidth = arrayMenu1.offsetWidth; // not ok
// We only want the
tags
const navTabs = document.querySelectorAll('li.nav-link');
if (menu.length > 0) {
const marginLeft = [];
// Loop through nav children i.e li
[].forEach.call(navTabs, (el, index) => {
// Dynamic width/margin calculation for hr
const width = getPercentage(el.offsetWidth, navId.offsetWidth);
let tempMarginLeft = 0;
// We don't want to modify first elements positioning
if (index !== 0) {
tempMarginLeft = getArraySum(marginLeft);
}
// Set mouse event [click]
callback(el, width, tempMarginLeft);
/* We store it in array because the later accumulated value is used for positioning */
marginLeft.push(width);
});
}
}
if (menu) {
// CLICK
const menuSliderClick = document.getElementById('nav_slide_click');
console.log('menu clicked');
if (menuSliderClick) {
const arrayMenu = Array.from(menu); // 変換してみた
navSlider(arrayMenu, (el, width, tempMarginLeft) => {
el.onclick = () => {
menuSliderClick.style.width = `${width}%`;
menuSliderClick.style.marginLeft = `${tempMarginLeft}%`;
};
});
}
} // endif
return (
{pageAccessoriesContainer.state.activeComponents.has('pagelist') && }
{pageAccessoriesContainer.state.activeComponents.has('timeline') && }