- Fixed selection breaking on multiple indent changes
- Fixed multi-indent showing numbers on empty child list until the nodes
are fully re-rendered.
if ($isListNode(parent) && parent.getListType() === 'check') {
updateListItemChecked(dom, this);
}
if ($isListNode(parent) && parent.getListType() === 'check') {
updateListItemChecked(dom, this);
}
+
+ dom.style.listStyle = $hasNestedListWithoutLabel(this) ? 'none' : '';
// @ts-expect-error - this is always HTMLListItemElement
dom.value = this.__value;
// @ts-expect-error - this is always HTMLListItemElement
dom.value = this.__value;
-- List selection can get lost on nesting/unnesting
\ No newline at end of file
+//
\ No newline at end of file
import {$createCustomListItemNode, $isCustomListItemNode, CustomListItemNode} from "../nodes/custom-list-item";
import {$createCustomListNode, $isCustomListNode} from "../nodes/custom-list";
import {$createCustomListItemNode, $isCustomListItemNode, CustomListItemNode} from "../nodes/custom-list-item";
import {$createCustomListNode, $isCustomListNode} from "../nodes/custom-list";
-import {BaseSelection, LexicalEditor} from "lexical";
-import {$getBlockElementNodesInSelection, $selectNodes, $toggleSelection, getLastSelection} from "./selection";
+import {$getSelection, BaseSelection, LexicalEditor} from "lexical";
+import {$getBlockElementNodesInSelection, $selectNodes, $toggleSelection} from "./selection";
import {nodeHasInset} from "./nodes";
import {nodeHasInset} from "./nodes";
-export function $nestListItem(node: CustomListItemNode) {
+export function $nestListItem(node: CustomListItemNode): CustomListItemNode {
const list = node.getParent();
if (!$isCustomListNode(list)) {
const list = node.getParent();
if (!$isCustomListNode(list)) {
}
const listItems = list.getChildren() as CustomListItemNode[];
}
const listItems = list.getChildren() as CustomListItemNode[];
prevListItem.append(newList);
node.remove();
}
prevListItem.append(newList);
node.remove();
}
-export function $unnestListItem(node: CustomListItemNode) {
+export function $unnestListItem(node: CustomListItemNode): CustomListItemNode {
const list = node.getParent();
const parentListItem = list?.getParent();
const outerList = parentListItem?.getParent();
if (!$isCustomListNode(list) || !$isCustomListNode(outerList) || !$isCustomListItemNode(parentListItem)) {
const list = node.getParent();
const parentListItem = list?.getParent();
const outerList = parentListItem?.getParent();
if (!$isCustomListNode(list) || !$isCustomListNode(outerList) || !$isCustomListItemNode(parentListItem)) {
}
parentListItem.insertAfter(node);
}
parentListItem.insertAfter(node);
if (parentListItem.getChildren().length === 0) {
parentListItem.remove();
}
if (parentListItem.getChildren().length === 0) {
parentListItem.remove();
}
}
function getListItemsForSelection(selection: BaseSelection|null): (CustomListItemNode|null)[] {
}
function getListItemsForSelection(selection: BaseSelection|null): (CustomListItemNode|null)[] {
}
export function $setInsetForSelection(editor: LexicalEditor, change: number): void {
}
export function $setInsetForSelection(editor: LexicalEditor, change: number): void {
- const selection = getLastSelection(editor);
-
+ const selection = $getSelection();
const listItemsInSelection = getListItemsForSelection(selection);
const isListSelection = listItemsInSelection.length > 0 && !listItemsInSelection.includes(null);
if (isListSelection) {
const listItemsInSelection = getListItemsForSelection(selection);
const isListSelection = listItemsInSelection.length > 0 && !listItemsInSelection.includes(null);
if (isListSelection) {
+ const alteredListItems = [];
const listItems = $reduceDedupeListItems(listItemsInSelection);
if (change > 0) {
for (const listItem of listItems) {
const listItems = $reduceDedupeListItems(listItemsInSelection);
if (change > 0) {
for (const listItem of listItems) {
- $nestListItem(listItem);
+ alteredListItems.push($nestListItem(listItem));
}
} else if (change < 0) {
for (const listItem of [...listItems].reverse()) {
}
} else if (change < 0) {
for (const listItem of [...listItems].reverse()) {
- $unnestListItem(listItem);
+ alteredListItems.push($unnestListItem(listItem));
+ alteredListItems.reverse();
- $selectNodes(listItems);
+ $selectNodes(alteredListItems);