Skip to content

Commit b035ef6

Browse files
authored
fix(blazorui): resolve issues of ordered lists in BitMarkdownEditor #10276 (#10277)
1 parent 709ac05 commit b035ef6

File tree

1 file changed

+24
-31
lines changed

1 file changed

+24
-31
lines changed

src/BlazorUI/Bit.BlazorUI.Extras/Components/MarkdownEditor/BitMarkdownEditor.ts

+24-31
Original file line numberDiff line numberDiff line change
@@ -163,23 +163,23 @@ namespace BitBlazorUI {
163163
this.textArea.focus();
164164
}
165165

166-
add(content: Content) {
167-
const end = this.end;
168-
const start = this.start;
166+
add(content: Content, start?: number, end?: number) {
167+
const s = start || this.start;
168+
const e = end || this.end;
169169

170-
this.insert(content, start, end);
171-
this.setCaret(content.value, start, end);
170+
this.insert(content, s, e);
171+
this.setCaret(content.value, s, e);
172172
}
173173

174-
getLists(str: string | undefined) {
174+
getRepeat(str: string | undefined) {
175175
if (!str) return;
176176

177177
if (startsWithDash(str)) {
178178
return '- ';
179179
}
180180

181-
const listNum = startsWithNumber(str);
182-
if (listNum) return `${listNum}. `;
181+
const n = startsWithNumber(str);
182+
if (n) return `${n}. `;
183183
}
184184

185185
correct(cur: number, isDec = false) {
@@ -188,31 +188,21 @@ namespace BitBlazorUI {
188188
const l = total[i];
189189
if (!l) continue;
190190

191-
if (startsWithDash(l)) {
192-
if (l.length > 2) {
193-
total[i] = l;
191+
const number = startsWithNumber(l);
192+
if (!number) break;
193+
194+
let newNumber: number;
195+
if (isDec) {
196+
if (number > 1) {
197+
newNumber = number - 1;
194198
} else {
195-
continue;
196-
}
197-
} else {
198-
const number = startsWithNumber(l);
199-
if (!number) {
200199
break;
201-
} else {
202-
let newNumber: number;
203-
if (isDec) {
204-
if (number > 1) {
205-
newNumber = number - 1;
206-
} else {
207-
break;
208-
}
209-
} else {
210-
newNumber = number + 1;
211-
}
212-
total[i] = l.slice(String(number).length);
213-
total[i] = String(newNumber) + total[i];
214200
}
201+
} else {
202+
newNumber = number + 1;
215203
}
204+
total[i] = l.slice(String(number).length);
205+
total[i] = String(newNumber) + total[i];
216206
}
217207
this.value = total.join('\n');
218208
}
@@ -269,16 +259,19 @@ namespace BitBlazorUI {
269259
} else if (e.key === 'Enter') {
270260
const { total, num, col } = this.getLine();
271261
const line = total.at(num);
272-
let rep = this.getLists(line);
262+
let rep = this.getRepeat(line);
273263
const orig = rep;
274264

275265
const n = startsWithNumber(rep);
276266
if (n) rep = `${n + 1}. `;
277267

278268
if (rep && (orig && orig.length < col)) {
279269
e.preventDefault();
270+
const start = this.start;
271+
const end = this.end;
272+
280273
if (n) this.correct(num);
281-
this.add({ type: 'inline', value: `\n${rep}` });
274+
this.add({ type: 'inline', value: `\n${rep}` }, start, end);
282275
} else if (rep && (orig && orig.length === col)) {
283276
e.preventDefault();
284277

0 commit comments

Comments
 (0)