From 8170df1e9e468d13c25c3f65abf04dc1c99829cd Mon Sep 17 00:00:00 2001 From: ShimaginAndrey Date: Wed, 2 Jun 2021 18:33:27 +0300 Subject: [PATCH] Create multi-level list --- .../mobile/resources/less/common-ios.less | 5 +- .../resources/less/common-material.less | 5 +- apps/documenteditor/mobile/locale/en.json | 3 +- .../mobile/src/controller/Main.jsx | 8 ++ .../mobile/src/controller/edit/EditText.jsx | 6 + apps/documenteditor/mobile/src/less/app.less | 8 ++ .../mobile/src/store/textSettings.js | 7 ++ .../mobile/src/view/edit/Edit.jsx | 6 +- .../mobile/src/view/edit/EditText.jsx | 115 +++++++++++++----- 9 files changed, 124 insertions(+), 39 deletions(-) diff --git a/apps/common/mobile/resources/less/common-ios.less b/apps/common/mobile/resources/less/common-ios.less index 396a2051a..768c89836 100644 --- a/apps/common/mobile/resources/less/common-ios.less +++ b/apps/common/mobile/resources/less/common-ios.less @@ -123,9 +123,10 @@ } } - // Bullets and numbers + // Bullets, numbers and multilevels .bullets, - .numbers { + .numbers, + .multilevels { .page-content { background: @white; } diff --git a/apps/common/mobile/resources/less/common-material.less b/apps/common/mobile/resources/less/common-material.less index c3cf6f0d3..a5dac86cb 100644 --- a/apps/common/mobile/resources/less/common-material.less +++ b/apps/common/mobile/resources/less/common-material.less @@ -272,9 +272,10 @@ } } } - // Bullets and numbers + // Bullets, numbers and multilevels .bullets, - .numbers { + .numbers, + .multilevels { .page-content { background: @white; } diff --git a/apps/documenteditor/mobile/locale/en.json b/apps/documenteditor/mobile/locale/en.json index eb22ff811..a76f25460 100644 --- a/apps/documenteditor/mobile/locale/en.json +++ b/apps/documenteditor/mobile/locale/en.json @@ -360,8 +360,7 @@ "textHighlightColor": "Highlight Color", "textAdditionalFormatting": "Additional Formatting", "textAdditional": "Additional", - "textBullets": "Bullets", - "textNumbers": "Numbers", + "textBulletsAndNumbers": "Bullets & Numbers", "textLineSpacing": "Line Spacing", "textFonts": "Fonts", "textAuto": "Auto", diff --git a/apps/documenteditor/mobile/src/controller/Main.jsx b/apps/documenteditor/mobile/src/controller/Main.jsx index 161971b67..c0abeec6d 100644 --- a/apps/documenteditor/mobile/src/controller/Main.jsx +++ b/apps/documenteditor/mobile/src/controller/Main.jsx @@ -544,14 +544,22 @@ class MainController extends Component { case 0: storeTextSettings.resetBullets(subtype); storeTextSettings.resetNumbers(-1); + storeTextSettings.resetMultiLevel(-1); break; case 1: storeTextSettings.resetNumbers(subtype); storeTextSettings.resetBullets(-1); + storeTextSettings.resetMultiLevel(-1); + break; + case 2: + storeTextSettings.resetMultiLevel(subtype); + storeTextSettings.resetBullets(-1); + storeTextSettings.resetNumbers(-1); break; default: storeTextSettings.resetBullets(-1); storeTextSettings.resetNumbers(-1); + storeTextSettings.resetMultiLevel(-1); } }); this.api.asc_registerCallback('asc_onPrAlign', (align) => { diff --git a/apps/documenteditor/mobile/src/controller/edit/EditText.jsx b/apps/documenteditor/mobile/src/controller/edit/EditText.jsx index 922458b4b..af59de04a 100644 --- a/apps/documenteditor/mobile/src/controller/edit/EditText.jsx +++ b/apps/documenteditor/mobile/src/controller/edit/EditText.jsx @@ -183,6 +183,11 @@ class EditTextController extends Component { } } + onMultiLevelList(type) { + const api = Common.EditorApi.get(); + if (api) api.put_ListType(2, parseInt(type)); + } + onLineSpacing(value) { const api = Common.EditorApi.get(); if (api) { @@ -210,6 +215,7 @@ class EditTextController extends Component { onParagraphMove={this.onParagraphMove} onBullet={this.onBullet} onNumber={this.onNumber} + onMultiLevelList={this.onMultiLevelList} onLineSpacing={this.onLineSpacing} /> ) diff --git a/apps/documenteditor/mobile/src/less/app.less b/apps/documenteditor/mobile/src/less/app.less index 959e96f05..f3c36c7d0 100644 --- a/apps/documenteditor/mobile/src/less/app.less +++ b/apps/documenteditor/mobile/src/less/app.less @@ -96,3 +96,11 @@ } } +.phone, .tablet { + .swiper-container{ + position: static; + } +} + + + diff --git a/apps/documenteditor/mobile/src/store/textSettings.js b/apps/documenteditor/mobile/src/store/textSettings.js index 9f3efa926..7ebb9c62f 100644 --- a/apps/documenteditor/mobile/src/store/textSettings.js +++ b/apps/documenteditor/mobile/src/store/textSettings.js @@ -14,6 +14,7 @@ export class storeTextSettings { listType: observable, typeBullets: observable, typeNumbers: observable, + typeMultiLevel: observable, paragraphAlign: observable, textColor: observable, customTextColors: observable, @@ -32,6 +33,7 @@ export class storeTextSettings { resetListType: action, resetBullets: action, resetNumbers: action, + resetMultiLevel: action, resetParagraphAlign: action, resetTextColor: action, changeCustomTextColors: action, @@ -52,6 +54,7 @@ export class storeTextSettings { listType = undefined; typeBullets = undefined; typeNumbers = undefined; + typeMultiLevel = undefined; paragraphAlign = undefined; textColor = undefined; customTextColors = []; @@ -115,6 +118,10 @@ export class storeTextSettings { this.typeNumbers = type; } + resetMultiLevel(type) { + this.typeMultiLevel = type; + } + resetParagraphAlign (align) { let value; switch (align) { diff --git a/apps/documenteditor/mobile/src/view/edit/Edit.jsx b/apps/documenteditor/mobile/src/view/edit/Edit.jsx index bd9bb4c7a..e6d60c3f5 100644 --- a/apps/documenteditor/mobile/src/view/edit/Edit.jsx +++ b/apps/documenteditor/mobile/src/view/edit/Edit.jsx @@ -14,7 +14,7 @@ import EditChartController from "../../controller/edit/EditChart"; import EditHyperlinkController from "../../controller/edit/EditHyperlink"; import EditHeaderController from "../../controller/edit/EditHeader"; -import {PageTextFonts, PageTextAddFormatting, PageTextBullets, PageTextNumbers, PageTextLineSpacing, PageTextFontColor, PageTextCustomFontColor, PageTextBackgroundColor, PageTextCustomBackColor} from "./EditText"; +import {PageTextFonts, PageTextAddFormatting, PageTextBullets, PageTextNumbers, PageTextBulletsAndNumbers, PageTextLineSpacing, PageTextFontColor, PageTextCustomFontColor, PageTextBackgroundColor, PageTextCustomBackColor} from "./EditText"; import {ParagraphAdvSettings, PageParagraphBackColor, PageParagraphCustomColor} from "./EditParagraph"; import {PageShapeStyleNoFill, PageShapeStyle, PageShapeCustomFillColor, PageShapeBorderColor, PageShapeCustomBorderColor, PageWrap, PageReorder, PageReplace} from "./EditShape"; import {PageImageReorder, PageImageReplace, PageImageWrap, PageLinkSettings} from "./EditImage"; @@ -39,6 +39,10 @@ const routes = [ path: '/edit-text-numbers/', component: PageTextNumbers, }, + { + path: '/edit-bullets-and-numbers/', + component: PageTextBulletsAndNumbers, + }, { path: '/edit-text-line-spacing/', component: PageTextLineSpacing, diff --git a/apps/documenteditor/mobile/src/view/edit/EditText.jsx b/apps/documenteditor/mobile/src/view/edit/EditText.jsx index e14cf43ed..696eb33bc 100644 --- a/apps/documenteditor/mobile/src/view/edit/EditText.jsx +++ b/apps/documenteditor/mobile/src/view/edit/EditText.jsx @@ -1,6 +1,6 @@ import React, {Fragment, useState } from 'react'; import {observer, inject} from "mobx-react"; -import {f7, List, ListItem, Icon, Row, Button, Page, Navbar, NavRight, Segmented, BlockTitle, Link} from 'framework7-react'; +import {f7, Swiper, SwiperSlide, List, ListItem, Icon, Row, Button, Page, Navbar, NavRight, Segmented, BlockTitle, Link} from 'framework7-react'; import { useTranslation } from 'react-i18next'; import {Device} from '../../../../../common/mobile/utils/device'; @@ -154,19 +154,10 @@ const PageBullets = props => { ] ]; const storeTextSettings = props.storeTextSettings; - const typeBullets = storeTextSettings.typeBullets; + const typeBullets = props.typeBullets; return( - - - {Device.phone && - - - - - - } - +
{bulletArrays.map((bullets, index) => (
    {bullets.map((bullet) => ( @@ -187,7 +178,7 @@ const PageBullets = props => { ))}
))} - +
) }; @@ -207,19 +198,12 @@ const PageNumbers = props => { {type: 7, thumb: 'number-07.png'} ] ]; + const storeTextSettings = props.storeTextSettings; - const typeNumbers = storeTextSettings.typeNumbers; + const typeNumbers = props.typeNumbers; + return( - - - {Device.phone && - - - - - - } - +
{numberArrays.map((numbers, index) => (
    {numbers.map((number) => ( @@ -240,10 +224,78 @@ const PageNumbers = props => { ))}
))} - +
) }; +const PageMultiLevel = props => { + const { t } = useTranslation(); + + const arrayMultiLevel = [ + {type: -1, thumb: ''}, + {type: 1, thumb: 'multi-bracket.png'}, + {type: 2, thumb: 'multi-dot.png'}, + {type: 3, thumb: 'multi-bullets.png'}, + ]; + + const storeTextSettings = props.storeTextSettings; + const typeMultiLevel = props.typeMultiLevel; + + console.log(typeMultiLevel) + + return( +
+
    + {arrayMultiLevel.map((item) => ( +
  • { + if (item.type === -1) { + storeTextSettings.resetMultiLevel(-1); + } + props.onMultiLevelList(item.type); + }}> + {item.thumb.length < 1 ? +
    + +
    : +
    + } +
  • + ))} +
+
+ ) + +} + +const PageBulletsAndNumbers = props => { + const { t } = useTranslation(); + + const storeTextSettings = props.storeTextSettings; + const typeNumbers = storeTextSettings.typeNumbers; + const typeBullets = storeTextSettings.typeBullets; + const typeMultiLevel = storeTextSettings.typeMultiLevel; + + return ( + + + {Device.phone && + + + + + + } + + + + + + + + ) +} + const PageLineSpacing = props => { const { t } = useTranslation(); const storeTextSettings = props.storeTextSettings; @@ -501,16 +553,13 @@ const EditText = props => { - {!isAndroid && } - - {!isAndroid && } - @@ -526,6 +575,7 @@ const PageTextFonts = inject("storeTextSettings", "storeFocusObjects")(observer( const PageTextAddFormatting = inject("storeTextSettings", "storeFocusObjects")(observer(PageAdditionalFormatting)); const PageTextBullets = inject("storeTextSettings")(observer(PageBullets)); const PageTextNumbers = inject("storeTextSettings")(observer(PageNumbers)); +const PageTextBulletsAndNumbers = inject("storeTextSettings")(observer(PageBulletsAndNumbers)); const PageTextLineSpacing = inject("storeTextSettings")(observer(PageLineSpacing)); const PageTextFontColor = inject("storeTextSettings", "storePalette")(observer(PageFontColor)); const PageTextCustomFontColor = inject("storeTextSettings", "storePalette")(observer(PageCustomFontColor)); @@ -539,6 +589,7 @@ export { PageTextAddFormatting, PageTextBullets, PageTextNumbers, + PageTextBulletsAndNumbers, PageTextLineSpacing, PageTextFontColor, PageTextCustomFontColor,