diff --git a/src/app/app.config.ts b/src/app/app.config.ts
index e4a46b42b..8a29002df 100644
--- a/src/app/app.config.ts
+++ b/src/app/app.config.ts
@@ -236,4 +236,4 @@ export interface CustomEditorialConvention {
};
}
-export type TextFlow = 'prose' | 'verses';
+export type TextFlow = 'prose' | 'prose_mixed' | 'verses';
diff --git a/src/app/app.module.ts b/src/app/app.module.ts
index 4a549dba2..91593257e 100644
--- a/src/app/app.module.ts
+++ b/src/app/app.module.ts
@@ -141,6 +141,7 @@ import { TitleStmtComponent } from './components/title-stmt/title-stmt.component
import { VerseComponent } from './components/verse/verse.component';
import { VersesGroupComponent } from './components/verses-group/verses-group.component';
import { VersionPanelComponent } from './panels/version-panel/version-panel.component';
+import { VerseProseSelectComponent } from './components/verse-prose-select/verse-prose-select.component';
import { WordComponent } from './components/word/word.component';
import { WitnessPanelComponent } from './panels/witness-panel/witness-panel.component';
import { XmlBeautifyPipe } from './pipes/xml-beautify.pipe';
@@ -275,6 +276,7 @@ const DynamicComponents = [
TextTextComponent,
TextVersionsComponent,
VersionPanelComponent,
+ VerseProseSelectComponent,
WitnessPanelComponent,
XmlBeautifyPipe,
...DynamicComponents,
diff --git a/src/app/components/lb/lb.component.html b/src/app/components/lb/lb.component.html
index 1f1ceabfb..55851415e 100644
--- a/src/app/components/lb/lb.component.html
+++ b/src/app/components/lb/lb.component.html
@@ -3,7 +3,7 @@
[attr.id]="data.id" [attr.data-rend]="data.rend || ''" [attr.data-facs]="data.facs || ''">
- {{data.n}}
+ {{data.n}}
diff --git a/src/app/components/verse-prose-select/verse-prose-select.component.html b/src/app/components/verse-prose-select/verse-prose-select.component.html
new file mode 100644
index 000000000..e7b91e27d
--- /dev/null
+++ b/src/app/components/verse-prose-select/verse-prose-select.component.html
@@ -0,0 +1,22 @@
+
+
+
+ {{'option_' + item | translate}}
+
+
+
+
+ {{'option_' + item | translate}}
+
+
diff --git a/src/app/components/verse-prose-select/verse-prose-select.component.scss b/src/app/components/verse-prose-select/verse-prose-select.component.scss
new file mode 100644
index 000000000..98fc37f13
--- /dev/null
+++ b/src/app/components/verse-prose-select/verse-prose-select.component.scss
@@ -0,0 +1,34 @@
+ng-select {
+ width: 13.5rem;
+ margin-left: 0.3rem;
+}
+
+// ng-select overrides
+::ng-deep .ng-select {
+ min-width: 150px;
+}
+
+::ng-deep .ng-dropdown-panel {
+ .ng-dropdown-panel-items {
+ .ng-optgroup {
+ font-size: 90%;
+ font-variant: small-caps;
+ }
+
+ .ng-option {
+ padding-left: 10px !important;
+ }
+ }
+}
+
+.entities-select-toolbar {
+ display: flex;
+
+ .btn {
+ flex-grow: 1;
+ }
+}
+
+.select-all-btn {
+ cursor: pointer;
+}
\ No newline at end of file
diff --git a/src/app/components/verse-prose-select/verse-prose-select.component.spec.ts b/src/app/components/verse-prose-select/verse-prose-select.component.spec.ts
new file mode 100644
index 000000000..f5de84a98
--- /dev/null
+++ b/src/app/components/verse-prose-select/verse-prose-select.component.spec.ts
@@ -0,0 +1,25 @@
+import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing';
+
+import { VerseProseSelectComponent } from './verse-prose-select.component';
+
+describe('VerseProseSelectComponent', () => {
+ let component: VerseProseSelectComponent;
+ let fixture: ComponentFixture;
+
+ beforeEach(waitForAsync(() => {
+ TestBed.configureTestingModule({
+ declarations: [ VerseProseSelectComponent ],
+ })
+ .compileComponents();
+ }));
+
+ beforeEach(() => {
+ fixture = TestBed.createComponent(VerseProseSelectComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it('should create', () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/src/app/components/verse-prose-select/verse-prose-select.component.ts b/src/app/components/verse-prose-select/verse-prose-select.component.ts
new file mode 100644
index 000000000..a1d7ebd36
--- /dev/null
+++ b/src/app/components/verse-prose-select/verse-prose-select.component.ts
@@ -0,0 +1,27 @@
+import { Component, EventEmitter, Output } from '@angular/core';
+import { TextFlow } from 'src/app/app.config';
+import { EvtIconInfo } from 'src/app/ui-components/icon/icon.component';
+
+@Component({
+ selector: 'evt-verse-prose-select',
+ templateUrl: './verse-prose-select.component.html',
+ styleUrls: ['./verse-prose-select.component.scss'],
+})
+
+export class VerseProseSelectComponent {
+
+ @Output() textModeSelectionChange: EventEmitter = new EventEmitter();
+
+ public textFlowTypes: TextFlow[] = ['prose', 'prose_mixed', 'verses'];
+
+ public selectedType: TextFlow = 'prose';
+
+ getProseVersesTogglerIcon(textFlowMode: TextFlow): EvtIconInfo {
+ return { icon: textFlowMode === 'verses' ? 'align-justify' : 'align-left', iconSet: 'fas' };
+ }
+
+ updateSelectedType(textFlowType: TextFlow) {
+ this.textModeSelectionChange.emit(textFlowType);
+ };
+
+}
diff --git a/src/app/components/verse/verse.component.html b/src/app/components/verse/verse.component.html
index 24212b46d..78f5aaa7d 100644
--- a/src/app/components/verse/verse.component.html
+++ b/src/app/components/verse/verse.component.html
@@ -1,6 +1,6 @@
- {{data.n}}
+ {{data.n}}
diff --git a/src/app/components/verse/verse.component.scss b/src/app/components/verse/verse.component.scss
index ba1a24aae..fc1ac74e8 100644
--- a/src/app/components/verse/verse.component.scss
+++ b/src/app/components/verse/verse.component.scss
@@ -38,4 +38,10 @@
}
}
}
+ .verse-baloon {
+ border: 1px solid #000000b5;
+ border-radius: 8px;
+ padding-bottom: 1rem;
+ padding-right: 0.1rem;
+ }
}
diff --git a/src/app/components/verse/verse.component.ts b/src/app/components/verse/verse.component.ts
index bd0a1902b..bd5fad5da 100644
--- a/src/app/components/verse/verse.component.ts
+++ b/src/app/components/verse/verse.component.ts
@@ -28,6 +28,7 @@ export class VerseComponent {
// unless current text flow is prose
// In critical edition verses are always shown as block items, unless current text flow is prose
switch (this.editionLevel) {
+ case 'changesView':
case 'diplomatic':
case 'interpretative':
return this.textFlow === 'verses' || !hasLines;
@@ -45,6 +46,14 @@ export class VerseComponent {
return !isNaN(num) && num % this.verseNumberPrinter !== 0;
}
+ get baloon() {
+ return this.textFlow !== 'verses';
+ }
+
+ get plainTextFlow() {
+ return this.textFlow === 'prose';
+ }
+
constructor(
private evtModelService: EVTModelService,
) {
diff --git a/src/app/components/verses-group/verses-group.component.ts b/src/app/components/verses-group/verses-group.component.ts
index 6d97bfaa1..1bbdda300 100644
--- a/src/app/components/verses-group/verses-group.component.ts
+++ b/src/app/components/verses-group/verses-group.component.ts
@@ -25,6 +25,7 @@ export class VersesGroupComponent {
// In diplomatic and interpretative edition, if the text doesn't have any line, verses group are shown as block items
// In critical edition verses are always shown as block items
switch (this.editionLevel) {
+ case 'changesView':
case 'diplomatic':
case 'interpretative':
return !hasLines;
diff --git a/src/app/panels/text-panel/text-panel.component.html b/src/app/panels/text-panel/text-panel.component.html
index 1220af59d..eb2231ff4 100644
--- a/src/app/panels/text-panel/text-panel.component.html
+++ b/src/app/panels/text-panel/text-panel.component.html
@@ -44,12 +44,7 @@
[active]="secondaryContent === 'SEARCH_RESULTS'">
-
-
+
.active {
evt-main-header .svg-inline--fa {
height: 0.85em;
+}
+
+evt-page :not(evt-apparatus-entry-detail) .head {
+ font-weight: bold;
+ display: block;
+ padding: 0.5em 0.1em 0.5em 0em;
+}
+
+[ng-reflect-text-flow="verses"] evt-verse {
+ display: block;
}
\ No newline at end of file