diff --git a/client/components/Reader/ContentsPage/ContentsPage.vue b/client/components/Reader/ContentsPage/ContentsPage.vue index c880ab48..8144fdfa 100644 --- a/client/components/Reader/ContentsPage/ContentsPage.vue +++ b/client/components/Reader/ContentsPage/ContentsPage.vue @@ -27,13 +27,14 @@
- +
+
-
+
{{ item.perc }}%
@@ -43,7 +44,7 @@
-
+
{{ subitem.perc }}%
@@ -97,18 +98,8 @@ class ContentsPage extends Vue { this.contents = []; await this.$nextTick(); - const prepareLabel = (title, bolder = false) => { - let titleParts = title.split('

'); - const textParts = titleParts.filter(v => v).map(v => `

${utils.removeHtmlTags(v)}
`); - if (bolder && textParts.length > 1) - textParts[0] = `${textParts[0]}`; - return textParts.join(''); - } - - const insetStyle = inset => `width: ${inset*20}px`; const pc = parsed.contents; const newpc = []; - //преобразуем все, кроме первого, разделы body в title-subtitle let curSubtitles = []; let prevBodyIndex = -1; @@ -130,25 +121,43 @@ class ContentsPage extends Vue { } } + const prepareLabel = (title, bolder = false) => { + let titleParts = title.split('

'); + const textParts = titleParts.filter(v => v).map(v => `

${utils.removeHtmlTags(v)}
`); + if (bolder && textParts.length > 1) + textParts[0] = `${textParts[0]}`; + return textParts.join(''); + } + + const getIndentStyle = inset => `width: ${inset*20}px`; + + const getLabelStyle = (inset) => { + const fontSizes = ['110%', '100%', '90%', '85%']; + inset = (inset > 3 ? 3 : inset); + return `font-size: ${fontSizes[inset]}`; + }; + //формируем newContents let i = 0; const newContents = []; newpc.forEach((cont) => { const label = prepareLabel(cont.title, true); - const indentStyle = insetStyle(cont.inset); + const indentStyle = getIndentStyle(cont.inset); + const labelStyle = getLabelStyle(cont.inset); let j = 0; const list = []; cont.subtitles.forEach((sub) => { const l = prepareLabel(sub.title); - const s = insetStyle(sub.inset + 1); + const s = getIndentStyle(sub.inset + 1); + const ls = getLabelStyle(cont.inset + 1); const p = parsed.para[sub.paraIndex]; - list[j] = {perc: (p.offset/parsed.textLength*100).toFixed(2), label: l, key: j, offset: p.offset, indentStyle: s}; + list[j] = {perc: (p.offset/parsed.textLength*100).toFixed(2), label: l, key: j, offset: p.offset, indentStyle: s, labelStyle: ls}; j++; }); const p = parsed.para[cont.paraIndex]; - newContents[i] = {perc: (p.offset/parsed.textLength*100).toFixed(0), label, key: i, offset: p.offset, indentStyle, expanded: false, list}; + newContents[i] = {perc: (p.offset/parsed.textLength*100).toFixed(0), label, key: i, offset: p.offset, indentStyle, labelStyle, expanded: false, list}; i++; }); @@ -204,10 +213,10 @@ class ContentsPage extends Vue { .clickable { cursor: pointer; + padding: 10px 0 10px 0; } .item, .subitem { - height: 40px; border-bottom: 1px solid #e0e0e0; } @@ -219,12 +228,6 @@ class ContentsPage extends Vue { width: 40px; } -.expand-button:hover { - background-color: white; - border-radius: 15px; - border: 1px solid #d0d0d0; -} - .subitems-transition { height: 0; transition: height 0.2s linear; @@ -236,6 +239,6 @@ class ContentsPage extends Vue { } .expanded-icon { - transform: rotate(180deg); + transform: rotate(90deg); }