diff options
Diffstat (limited to 'client')
13 files changed, 69 insertions, 74 deletions
diff --git a/client/src/app/+admin/config/edit-custom-config/edit-basic-configuration.component.html b/client/src/app/+admin/config/edit-custom-config/edit-basic-configuration.component.html index 68126281f..315cd1749 100644 --- a/client/src/app/+admin/config/edit-custom-config/edit-basic-configuration.component.html +++ b/client/src/app/+admin/config/edit-custom-config/edit-basic-configuration.component.html | |||
@@ -132,8 +132,8 @@ | |||
132 | <label i18n for="broadcastMessageMessage">Message</label><my-help helpType="markdownText"></my-help> | 132 | <label i18n for="broadcastMessageMessage">Message</label><my-help helpType="markdownText"></my-help> |
133 | 133 | ||
134 | <my-markdown-textarea | 134 | <my-markdown-textarea |
135 | name="broadcastMessageMessage" formControlName="message" textareaMaxWidth="500px" | 135 | name="broadcastMessageMessage" formControlName="message" |
136 | [classes]="{ 'input-error': formErrors['broadcastMessage.message'] }" | 136 | [formError]="formErrors['broadcastMessage.message']" |
137 | ></my-markdown-textarea> | 137 | ></my-markdown-textarea> |
138 | 138 | ||
139 | <div *ngIf="formErrors.broadcastMessage.message" class="form-error">{{ formErrors.broadcastMessage.message }}</div> | 139 | <div *ngIf="formErrors.broadcastMessage.message" class="form-error">{{ formErrors.broadcastMessage.message }}</div> |
diff --git a/client/src/app/+admin/config/edit-custom-config/edit-custom-config.component.scss b/client/src/app/+admin/config/edit-custom-config/edit-custom-config.component.scss index f3bce8ee0..df523cedc 100644 --- a/client/src/app/+admin/config/edit-custom-config/edit-custom-config.component.scss +++ b/client/src/app/+admin/config/edit-custom-config/edit-custom-config.component.scss | |||
@@ -7,12 +7,21 @@ form { | |||
7 | padding-bottom: 1.5rem; | 7 | padding-bottom: 1.5rem; |
8 | } | 8 | } |
9 | 9 | ||
10 | input[type=text] { | 10 | my-markdown-textarea { |
11 | @include peertube-input-text($form-base-input-width); | 11 | display: block; |
12 | max-width: 500px; | ||
13 | } | ||
12 | 14 | ||
15 | .homepage my-markdown-textarea { | ||
13 | display: block; | 16 | display: block; |
17 | max-width: 90%; | ||
18 | |||
19 | ::ng-deep textarea { | ||
20 | height: 300px !important; | ||
21 | } | ||
14 | } | 22 | } |
15 | 23 | ||
24 | input[type=text], | ||
16 | input[type=number] { | 25 | input[type=number] { |
17 | @include peertube-input-text($form-base-input-width); | 26 | @include peertube-input-text($form-base-input-width); |
18 | 27 | ||
diff --git a/client/src/app/+admin/config/edit-custom-config/edit-homepage.component.html b/client/src/app/+admin/config/edit-custom-config/edit-homepage.component.html index 701c3c0c1..5339240bb 100644 --- a/client/src/app/+admin/config/edit-custom-config/edit-homepage.component.html +++ b/client/src/app/+admin/config/edit-custom-config/edit-homepage.component.html | |||
@@ -2,7 +2,7 @@ | |||
2 | 2 | ||
3 | <ng-container formGroupName="instanceCustomHomepage"> | 3 | <ng-container formGroupName="instanceCustomHomepage"> |
4 | 4 | ||
5 | <div class="row mt-5"> <!-- homepage grid --> | 5 | <div class="homepage row mt-5"> <!-- homepage grid --> |
6 | <div class="col-12 col-lg-4 col-xl-3"> | 6 | <div class="col-12 col-lg-4 col-xl-3"> |
7 | <div i18n class="inner-form-title">INSTANCE HOMEPAGE</div> | 7 | <div i18n class="inner-form-title">INSTANCE HOMEPAGE</div> |
8 | </div> | 8 | </div> |
@@ -16,9 +16,9 @@ | |||
16 | </div> | 16 | </div> |
17 | 17 | ||
18 | <my-markdown-textarea | 18 | <my-markdown-textarea |
19 | name="instanceCustomHomepageContent" formControlName="content" textareaMaxWidth="90%" textareaHeight="300px" | 19 | name="instanceCustomHomepageContent" formControlName="content" |
20 | [customMarkdownRenderer]="getCustomMarkdownRenderer()" | 20 | [customMarkdownRenderer]="getCustomMarkdownRenderer()" |
21 | [classes]="{ 'input-error': formErrors['instanceCustomHomepage.content'] }" | 21 | [formError]="formErrors['instanceCustomHomepage.content']" |
22 | ></my-markdown-textarea> | 22 | ></my-markdown-textarea> |
23 | 23 | ||
24 | <div *ngIf="formErrors.instanceCustomHomepage.content" class="form-error">{{ formErrors.instanceCustomHomepage.content }}</div> | 24 | <div *ngIf="formErrors.instanceCustomHomepage.content" class="form-error">{{ formErrors.instanceCustomHomepage.content }}</div> |
diff --git a/client/src/app/+admin/config/edit-custom-config/edit-instance-information.component.html b/client/src/app/+admin/config/edit-custom-config/edit-instance-information.component.html index 5931cb459..b54733327 100644 --- a/client/src/app/+admin/config/edit-custom-config/edit-instance-information.component.html +++ b/client/src/app/+admin/config/edit-custom-config/edit-instance-information.component.html | |||
@@ -37,12 +37,10 @@ | |||
37 | </div> | 37 | </div> |
38 | 38 | ||
39 | <my-markdown-textarea | 39 | <my-markdown-textarea |
40 | name="instanceDescription" formControlName="description" textareaMaxWidth="500px" | 40 | name="instanceDescription" formControlName="description" |
41 | [customMarkdownRenderer]="getCustomMarkdownRenderer()" | 41 | [customMarkdownRenderer]="getCustomMarkdownRenderer()" |
42 | [classes]="{ 'input-error': formErrors['instance.description'] }" | 42 | [formError]="formErrors['instance.description']" |
43 | ></my-markdown-textarea> | 43 | ></my-markdown-textarea> |
44 | |||
45 | <div *ngIf="formErrors.instance.description" class="form-error">{{ formErrors.instance.description }}</div> | ||
46 | </div> | 44 | </div> |
47 | 45 | ||
48 | <div class="form-group"> | 46 | <div class="form-group"> |
@@ -127,22 +125,18 @@ | |||
127 | <label i18n for="instanceTerms">Terms</label><my-help helpType="markdownText"></my-help> | 125 | <label i18n for="instanceTerms">Terms</label><my-help helpType="markdownText"></my-help> |
128 | 126 | ||
129 | <my-markdown-textarea | 127 | <my-markdown-textarea |
130 | name="instanceTerms" formControlName="terms" textareaMaxWidth="500px" | 128 | name="instanceTerms" formControlName="terms" |
131 | [ngClass]="{ 'input-error': formErrors['instance.terms'] }" | 129 | [formError]="formErrors['instance.terms']" |
132 | ></my-markdown-textarea> | 130 | ></my-markdown-textarea> |
133 | |||
134 | <div *ngIf="formErrors.instance.terms" class="form-error">{{ formErrors.instance.terms }}</div> | ||
135 | </div> | 131 | </div> |
136 | 132 | ||
137 | <div class="form-group"> | 133 | <div class="form-group"> |
138 | <label i18n for="instanceCodeOfConduct">Code of conduct</label><my-help helpType="markdownText"></my-help> | 134 | <label i18n for="instanceCodeOfConduct">Code of conduct</label><my-help helpType="markdownText"></my-help> |
139 | 135 | ||
140 | <my-markdown-textarea | 136 | <my-markdown-textarea |
141 | name="instanceCodeOfConduct" formControlName="codeOfConduct" textareaMaxWidth="500px" | 137 | name="instanceCodeOfConduct" formControlName="codeOfConduct" |
142 | [ngClass]="{ 'input-error': formErrors['instance.codeOfConduct'] }" | 138 | [formError]="formErrors['instance.codeOfConduct']" |
143 | ></my-markdown-textarea> | 139 | ></my-markdown-textarea> |
144 | |||
145 | <div *ngIf="formErrors.instance.codeOfConduct" class="form-error">{{ formErrors.instance.codeOfConduct }}</div> | ||
146 | </div> | 140 | </div> |
147 | 141 | ||
148 | <div class="form-group"> | 142 | <div class="form-group"> |
@@ -150,11 +144,9 @@ | |||
150 | <div i18n class="label-small-info">Who moderates the instance? What is the policy regarding NSFW videos? Political videos? etc</div> | 144 | <div i18n class="label-small-info">Who moderates the instance? What is the policy regarding NSFW videos? Political videos? etc</div> |
151 | 145 | ||
152 | <my-markdown-textarea | 146 | <my-markdown-textarea |
153 | name="instanceModerationInformation" formControlName="moderationInformation" textareaMaxWidth="500px" | 147 | name="instanceModerationInformation" formControlName="moderationInformation" |
154 | [ngClass]="{ 'input-error': formErrors['instance.moderationInformation'] }" | 148 | [formError]="formErrors['instance.moderationInformation']" |
155 | ></my-markdown-textarea> | 149 | ></my-markdown-textarea> |
156 | |||
157 | <div *ngIf="formErrors.instance.moderationInformation" class="form-error">{{ formErrors.instance.moderationInformation }}</div> | ||
158 | </div> | 150 | </div> |
159 | 151 | ||
160 | </div> | 152 | </div> |
@@ -172,11 +164,9 @@ | |||
172 | <div i18n class="label-small-info">A single person? A non-profit? A company?</div> | 164 | <div i18n class="label-small-info">A single person? A non-profit? A company?</div> |
173 | 165 | ||
174 | <my-markdown-textarea | 166 | <my-markdown-textarea |
175 | name="instanceAdministrator" formControlName="administrator" textareaMaxWidth="500px" | 167 | name="instanceAdministrator" formControlName="administrator" |
176 | [classes]="{ 'input-error': formErrors['instance.administrator'] }" | 168 | [formError]="formErrors['instance.administrator']" |
177 | ></my-markdown-textarea> | 169 | ></my-markdown-textarea> |
178 | |||
179 | <div *ngIf="formErrors.instance.administrator" class="form-error">{{ formErrors.instance.administrator }}</div> | ||
180 | </div> | 170 | </div> |
181 | 171 | ||
182 | <div class="form-group"> | 172 | <div class="form-group"> |
@@ -184,11 +174,9 @@ | |||
184 | <div i18n class="label-small-info">To share your personal videos? To open registrations and allow people to upload what they want?</div> | 174 | <div i18n class="label-small-info">To share your personal videos? To open registrations and allow people to upload what they want?</div> |
185 | 175 | ||
186 | <my-markdown-textarea | 176 | <my-markdown-textarea |
187 | name="instanceCreationReason" formControlName="creationReason" textareaMaxWidth="500px" | 177 | name="instanceCreationReason" formControlName="creationReason" |
188 | [ngClass]="{ 'input-error': formErrors['instance.creationReason'] }" | 178 | [formError]="formErrors['instance.creationReason']" |
189 | ></my-markdown-textarea> | 179 | ></my-markdown-textarea> |
190 | |||
191 | <div *ngIf="formErrors.instance.creationReason" class="form-error">{{ formErrors.instance.creationReason }}</div> | ||
192 | </div> | 180 | </div> |
193 | 181 | ||
194 | <div class="form-group"> | 182 | <div class="form-group"> |
@@ -196,11 +184,9 @@ | |||
196 | <div i18n class="label-small-info">It's important to know for users who want to register on your instance</div> | 184 | <div i18n class="label-small-info">It's important to know for users who want to register on your instance</div> |
197 | 185 | ||
198 | <my-markdown-textarea | 186 | <my-markdown-textarea |
199 | name="instanceMaintenanceLifetime" formControlName="maintenanceLifetime" textareaMaxWidth="500px" | 187 | name="instanceMaintenanceLifetime" formControlName="maintenanceLifetime" |
200 | [ngClass]="{ 'input-error': formErrors['instance.maintenanceLifetime'] }" | 188 | [formError]="formErrors['instance.maintenanceLifetime']" |
201 | ></my-markdown-textarea> | 189 | ></my-markdown-textarea> |
202 | |||
203 | <div *ngIf="formErrors.instance.maintenanceLifetime" class="form-error">{{ formErrors.instance.maintenanceLifetime }}</div> | ||
204 | </div> | 190 | </div> |
205 | 191 | ||
206 | <div class="form-group"> | 192 | <div class="form-group"> |
@@ -208,11 +194,9 @@ | |||
208 | <div i18n class="label-small-info">With your own funds? With user donations? Advertising?</div> | 194 | <div i18n class="label-small-info">With your own funds? With user donations? Advertising?</div> |
209 | 195 | ||
210 | <my-markdown-textarea | 196 | <my-markdown-textarea |
211 | name="instanceBusinessModel" formControlName="businessModel" textareaMaxWidth="500px" | 197 | name="instanceBusinessModel" formControlName="businessModel" |
212 | [ngClass]="{ 'input-error': formErrors['instance.businessModel'] }" | 198 | [formError]="formErrors['instance.businessModel']" |
213 | ></my-markdown-textarea> | 199 | ></my-markdown-textarea> |
214 | |||
215 | <div *ngIf="formErrors.instance.businessModel" class="form-error">{{ formErrors.instance.businessModel }}</div> | ||
216 | </div> | 200 | </div> |
217 | 201 | ||
218 | </div> | 202 | </div> |
@@ -230,11 +214,9 @@ | |||
230 | <div i18n class="label-small-info">i.e. 2vCore 2GB RAM, a direct the link to the server you rent, etc.</div> | 214 | <div i18n class="label-small-info">i.e. 2vCore 2GB RAM, a direct the link to the server you rent, etc.</div> |
231 | 215 | ||
232 | <my-markdown-textarea | 216 | <my-markdown-textarea |
233 | name="instanceHardwareInformation" formControlName="hardwareInformation" textareaMaxWidth="500px" | 217 | name="instanceHardwareInformation" formControlName="hardwareInformation" |
234 | [classes]="{ 'input-error': formErrors['instance.hardwareInformation'] }" | 218 | [formError]="formErrors['instance.hardwareInformation']" |
235 | ></my-markdown-textarea> | 219 | ></my-markdown-textarea> |
236 | |||
237 | <div *ngIf="formErrors.instance.hardwareInformation" class="form-error">{{ formErrors.instance.hardwareInformation }}</div> | ||
238 | </div> | 220 | </div> |
239 | 221 | ||
240 | </div> | 222 | </div> |
diff --git a/client/src/app/+manage/video-channel-edit/video-channel-edit.component.html b/client/src/app/+manage/video-channel-edit/video-channel-edit.component.html index 420881f5a..b557fb011 100644 --- a/client/src/app/+manage/video-channel-edit/video-channel-edit.component.html +++ b/client/src/app/+manage/video-channel-edit/video-channel-edit.component.html | |||
@@ -68,7 +68,7 @@ | |||
68 | ></my-help> | 68 | ></my-help> |
69 | 69 | ||
70 | <my-markdown-textarea | 70 | <my-markdown-textarea |
71 | id="support" formControlName="support" textareaMaxWidth="500px" markdownType="enhanced" | 71 | id="support" formControlName="support" markdownType="enhanced" |
72 | [formError]="formErrors['support']" | 72 | [formError]="formErrors['support']" |
73 | ></my-markdown-textarea> | 73 | ></my-markdown-textarea> |
74 | </div> | 74 | </div> |
diff --git a/client/src/app/+manage/video-channel-edit/video-channel-edit.component.scss b/client/src/app/+manage/video-channel-edit/video-channel-edit.component.scss index 008397a7a..cde848da6 100644 --- a/client/src/app/+manage/video-channel-edit/video-channel-edit.component.scss +++ b/client/src/app/+manage/video-channel-edit/video-channel-edit.component.scss | |||
@@ -42,6 +42,11 @@ textarea { | |||
42 | display: block; | 42 | display: block; |
43 | } | 43 | } |
44 | 44 | ||
45 | my-markdown-textarea { | ||
46 | display: block; | ||
47 | max-width: 500px; | ||
48 | } | ||
49 | |||
45 | .peertube-select-container { | 50 | .peertube-select-container { |
46 | @include peertube-select-container(340px); | 51 | @include peertube-select-container(340px); |
47 | } | 52 | } |
diff --git a/client/src/app/+my-library/my-video-playlists/my-video-playlist-edit.component.html b/client/src/app/+my-library/my-video-playlists/my-video-playlist-edit.component.html index 35682cf81..e867f63b8 100644 --- a/client/src/app/+my-library/my-video-playlists/my-video-playlist-edit.component.html +++ b/client/src/app/+my-library/my-video-playlists/my-video-playlist-edit.component.html | |||
@@ -42,13 +42,7 @@ | |||
42 | 42 | ||
43 | <div class="form-group"> | 43 | <div class="form-group"> |
44 | <label i18n for="description">Description</label><my-help helpType="markdownText"></my-help> | 44 | <label i18n for="description">Description</label><my-help helpType="markdownText"></my-help> |
45 | <my-markdown-textarea | 45 | <my-markdown-textarea id="description" formControlName="description" [formError]="formErrors['description']"></my-markdown-textarea> |
46 | id="description" formControlName="description" | ||
47 | [ngClass]="{ 'input-error': formErrors['description'] }" | ||
48 | ></my-markdown-textarea> | ||
49 | <div *ngIf="formErrors.description" class="form-error"> | ||
50 | {{ formErrors.description }} | ||
51 | </div> | ||
52 | </div> | 46 | </div> |
53 | </div> | 47 | </div> |
54 | 48 | ||
diff --git a/client/src/app/+videos/+video-edit/shared/video-edit.component.html b/client/src/app/+videos/+video-edit/shared/video-edit.component.html index b99e430dd..595200c3b 100644 --- a/client/src/app/+videos/+video-edit/shared/video-edit.component.html +++ b/client/src/app/+videos/+video-edit/shared/video-edit.component.html | |||
@@ -51,11 +51,10 @@ | |||
51 | </ng-template> | 51 | </ng-template> |
52 | </my-help> | 52 | </my-help> |
53 | 53 | ||
54 | <my-markdown-textarea [truncate]="250" formControlName="description" [markdownVideo]="videoToUpdate"></my-markdown-textarea> | 54 | <my-markdown-textarea |
55 | 55 | formControlName="description" [markdownVideo]="videoToUpdate" | |
56 | <div *ngIf="formErrors.description" class="form-error"> | 56 | [formError]="formErrors.description" [truncate]="250" |
57 | {{ formErrors.description }} | 57 | ></my-markdown-textarea> |
58 | </div> | ||
59 | </div> | 58 | </div> |
60 | </div> | 59 | </div> |
61 | 60 | ||
@@ -332,13 +331,11 @@ | |||
332 | </ng-container> | 331 | </ng-container> |
333 | </ng-template> | 332 | </ng-template> |
334 | </my-help> | 333 | </my-help> |
334 | |||
335 | <my-markdown-textarea | 335 | <my-markdown-textarea |
336 | id="support" formControlName="support" markdownType="enhanced" | 336 | id="support" formControlName="support" markdownType="enhanced" |
337 | [classes]="{ 'input-error': formErrors['support'] }" | 337 | [formError]="formErrors['support']" |
338 | ></my-markdown-textarea> | 338 | ></my-markdown-textarea> |
339 | <div *ngIf="formErrors.support" class="form-error"> | ||
340 | {{ formErrors.support }} | ||
341 | </div> | ||
342 | </div> | 339 | </div> |
343 | </div> | 340 | </div> |
344 | 341 | ||
diff --git a/client/src/app/shared/shared-forms/dynamic-form-field.component.html b/client/src/app/shared/shared-forms/dynamic-form-field.component.html index 2ec436ac6..61f9ae8ff 100644 --- a/client/src/app/shared/shared-forms/dynamic-form-field.component.html +++ b/client/src/app/shared/shared-forms/dynamic-form-field.component.html | |||
@@ -28,19 +28,19 @@ | |||
28 | 28 | ||
29 | <my-markdown-textarea | 29 | <my-markdown-textarea |
30 | *ngIf="setting.type === 'markdown-text'" | 30 | *ngIf="setting.type === 'markdown-text'" |
31 | markdownType="text" [id]="setting.name" [formControlName]="setting.name" textareaWidth="500px" | 31 | markdownType="text" [id]="setting.name" [formControlName]="setting.name" |
32 | [classes]="{ 'input-error': formErrors['settings.name'] }" | 32 | [formError]="formErrors['settings.name']" |
33 | ></my-markdown-textarea> | 33 | ></my-markdown-textarea> |
34 | 34 | ||
35 | <my-markdown-textarea | 35 | <my-markdown-textarea |
36 | *ngIf="setting.type === 'markdown-enhanced'" | 36 | *ngIf="setting.type === 'markdown-enhanced'" |
37 | markdownType="enhanced" [id]="setting.name" [formControlName]="setting.name" textareaWidth="500px" | 37 | markdownType="enhanced" [id]="setting.name" [formControlName]="setting.name" |
38 | [classes]="{ 'input-error': formErrors['settings.name'] }" | 38 | [formError]="formErrors['settings.name']" |
39 | ></my-markdown-textarea> | 39 | ></my-markdown-textarea> |
40 | 40 | ||
41 | <div *ngIf="setting.type === 'html'" [innerHTML]="setting.html"></div> | 41 | <div *ngIf="setting.type === 'html'" [innerHTML]="setting.html"></div> |
42 | 42 | ||
43 | <div *ngIf="formErrors[setting.name]" class="form-error"> | 43 | <div *ngIf="setting.type !== 'markdown-text' && setting.type !== 'markdown-enhanced' && formErrors[setting.name]" class="form-error"> |
44 | {{ formErrors[setting.name] }} | 44 | {{ formErrors[setting.name] }} |
45 | </div> | 45 | </div> |
46 | 46 | ||
diff --git a/client/src/app/shared/shared-forms/dynamic-form-field.component.scss b/client/src/app/shared/shared-forms/dynamic-form-field.component.scss index 31bf59edb..0737f372a 100644 --- a/client/src/app/shared/shared-forms/dynamic-form-field.component.scss +++ b/client/src/app/shared/shared-forms/dynamic-form-field.component.scss | |||
@@ -26,3 +26,8 @@ textarea { | |||
26 | my-peertube-checkbox + .label-small-info { | 26 | my-peertube-checkbox + .label-small-info { |
27 | margin-top: 5px; | 27 | margin-top: 5px; |
28 | } | 28 | } |
29 | |||
30 | my-markdown-textarea { | ||
31 | display: block; | ||
32 | max-width: 500px; | ||
33 | } | ||
diff --git a/client/src/app/shared/shared-forms/markdown-textarea.component.html b/client/src/app/shared/shared-forms/markdown-textarea.component.html index afb046c7f..5a9ff1a15 100644 --- a/client/src/app/shared/shared-forms/markdown-textarea.component.html +++ b/client/src/app/shared/shared-forms/markdown-textarea.component.html | |||
@@ -1,10 +1,9 @@ | |||
1 | <div class="root" [ngClass]="{ 'maximized': isMaximized }" [ngStyle]="{ 'max-width': textareaMaxWidth }"> | 1 | <div class="root" [ngClass]="{ 'maximized': isMaximized }"> |
2 | 2 | ||
3 | <textarea #textarea | 3 | <textarea #textarea |
4 | [(ngModel)]="content" (ngModelChange)="onModelChange()" | 4 | [(ngModel)]="content" (ngModelChange)="onModelChange()" |
5 | class="form-control" [ngClass]="{ 'input-error': formError }" | 5 | class="form-control" [ngClass]="{ 'input-error': formError }" |
6 | [attr.disabled]="disabled || null" | 6 | [attr.disabled]="disabled || null" |
7 | [ngStyle]="{ height: textareaHeight }" | ||
8 | [id]="name" [name]="name"> | 7 | [id]="name" [name]="name"> |
9 | </textarea> | 8 | </textarea> |
10 | 9 | ||
diff --git a/client/src/app/shared/shared-forms/markdown-textarea.component.ts b/client/src/app/shared/shared-forms/markdown-textarea.component.ts index 5a603c157..089991884 100644 --- a/client/src/app/shared/shared-forms/markdown-textarea.component.ts +++ b/client/src/app/shared/shared-forms/markdown-textarea.component.ts | |||
@@ -25,10 +25,6 @@ export class MarkdownTextareaComponent implements ControlValueAccessor, OnInit { | |||
25 | @Input() content = '' | 25 | @Input() content = '' |
26 | 26 | ||
27 | @Input() formError: string | 27 | @Input() formError: string |
28 | @Input() classes: string[] | { [klass: string]: any[] | any } = [] | ||
29 | |||
30 | @Input() textareaMaxWidth = '100%' | ||
31 | @Input() textareaHeight = '150px' | ||
32 | 28 | ||
33 | @Input() truncate: number | 29 | @Input() truncate: number |
34 | 30 | ||
diff --git a/client/src/sass/class-helpers.scss b/client/src/sass/class-helpers.scss index 87ad6a45d..f09d84882 100644 --- a/client/src/sass/class-helpers.scss +++ b/client/src/sass/class-helpers.scss | |||
@@ -70,7 +70,11 @@ | |||
70 | } | 70 | } |
71 | 71 | ||
72 | .input-error:not(:focus) { | 72 | .input-error:not(:focus) { |
73 | border-color: $red !important; | 73 | &, |
74 | & + .nav-preview, // Markdown textarea | ||
75 | & + * + .tab-content { | ||
76 | border-color: $red !important; | ||
77 | } | ||
74 | } | 78 | } |
75 | 79 | ||
76 | .form-error, | 80 | .form-error, |
@@ -83,8 +87,12 @@ | |||
83 | color: $red; | 87 | color: $red; |
84 | } | 88 | } |
85 | 89 | ||
86 | .input-error:focus + .form-error { | 90 | .input-error:focus { |
87 | color: pvar(--mainForegroundColor); | 91 | & + .form-error, |
92 | & + * + .form-error, // Markdown textarea | ||
93 | & + * + * + .form-error { | ||
94 | color: pvar(--mainForegroundColor); | ||
95 | } | ||
88 | } | 96 | } |
89 | 97 | ||
90 | .form-group-description { | 98 | .form-group-description { |