Skip to content

Add support for :read-only and :read-write pseudo-selectors #1496

Closed
@jed

Description

@jed

I'd love to help add support for :read-only and :read-write pseudo-selectors. I've currently got this in the pseudos export of pseudos.ts:

    "read-only"(elem, { adapter }) {
        const readonly = adapter.hasAttrib(elem, "readonly");
        if (!readonly) return false;

        const name = adapter.getName(elem);
        if (name === "TEXTAREA") return true;
        if (name !== "INPUT") return false;

        const type = adapter.getAttributeValue(elem, "type");
        return type && readonlyTypePattern.test(type);
    },
    "read-write"(elem, { adapter }) {
        const readonly = adapter.hasAttrib(elem, "readonly");
        if (readonly) return false;

        const name = adapter.getName(elem);
        if (name === "TEXTAREA") return true;
        if (name !== "INPUT") return false;

        const type = adapter.getAttributeValue(elem, "type");
        return type && readonlyTypePattern.test(type);
    },

but I'm not too well-versed with TypeScript and am getting this error:

ts: Type '<Node, ElementNode extends Node>(elem: ElementNode, { adapter }: InternalOptions<Node, ElementNode>) => boolean | "" | undefined' is not assignable to type 'Pseudo'.
Type 'string | boolean | undefined' is not assignable to type 'boolean'.
Type 'undefined' is not assignable to type 'boolean'.

If I can clear this error I'd love to start adding tests and putting together a PR. Thanks for your help, and for a great library!

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions