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 @@
@@ -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);
}