Skip to content

Commit

Permalink
feat(preset_tw): add group-{modifier}
Browse files Browse the repository at this point in the history
  • Loading branch information
TomokiMiyauci committed Mar 4, 2022
1 parent 10fe024 commit 7f1da38
Show file tree
Hide file tree
Showing 2 changed files with 148 additions and 8 deletions.
89 changes: 89 additions & 0 deletions _e2e/preset_tw/modifier.ts
Expand Up @@ -125,6 +125,95 @@ const simple: [string, string][] = [
],
["group:block", ""],
["group-hover:block", ".group:hover .group-hover\\:block{display:block}"],
["group-focus:block", ".group:focus .group-focus\\:block{display:block}"],
[
"group-focus-within:block",
".group:focus-within .group-focus-within\\:block{display:block}",
],
[
"group-focus-visible:block",
".group:focus-visible .group-focus-visible\\:block{display:block}",
],
["group-active:block", ".group:active .group-active\\:block{display:block}"],
[
"group-visited:block",
".group:visited .group-visited\\:block{display:block}",
],
["group-target:block", ".group:target .group-target\\:block{display:block}"],
[
"group-first:block",
".group:first-child .group-first\\:block{display:block}",
],
[
"group-first-of-type:block",
".group:first-of-type .group-first-of-type\\:block{display:block}",
],
[
"group-last:block",
".group:last-child .group-last\\:block{display:block}",
],
[
"group-last-of-type:block",
".group:last-of-type .group-last-of-type\\:block{display:block}",
],
["group-empty:block", ".group:empty .group-empty\\:block{display:block}"],
[
"group-disabled:block",
".group:disabled .group-disabled\\:block{display:block}",
],
[
"group-checked:block",
".group:checked .group-checked\\:block{display:block}",
],
[
"group-indeterminate:block",
".group:indeterminate .group-indeterminate\\:block{display:block}",
],
[
"group-default:block",
".group:default .group-default\\:block{display:block}",
],
[
"group-required:block",
".group:required .group-required\\:block{display:block}",
],
["group-valid:block", ".group:valid .group-valid\\:block{display:block}"],
[
"group-invalid:block",
".group:invalid .group-invalid\\:block{display:block}",
],
[
"group-in-range:block",
".group:in-range .group-in-range\\:block{display:block}",
],
[
"group-out-of-range:block",
".group:out-of-range .group-out-of-range\\:block{display:block}",
],
[
"group-placeholder-shown:block",
".group:placeholder-shown .group-placeholder-shown\\:block{display:block}",
],
[
"group-autofill:block",
".group:autofill .group-autofill\\:block{display:block}",
],
[
"group-read-only:block",
".group:read-only .group-read-only\\:block{display:block}",
],
[
"group-open:block",
".group[open] .group-open\\:block{display:block}",
],
[
"group-odd:block",
".group:nth-child(odd) .group-odd\\:block{display:block}",
],
[
"group-even:block",
".group:nth-child(even) .group-even\\:block{display:block}",
],
];

const complex: [string, string][] = [
Expand Down
67 changes: 59 additions & 8 deletions preset_tw/modifier/group.ts
@@ -1,11 +1,62 @@
import type { Modifier } from "../../core/types.ts";
import { selectorTransform } from "./_utils.ts";
import type { ModifierDefinition, ModifierMap } from "../../core/types.ts";

export const group: Modifier = {
hover: (parent, context) => {
const selector = context.path.join(":");
parent.walkRules((rule) => {
rule.selector = `.${selector} ${rule.selector}`;
});
return parent;
function createGroup(value: string): ModifierDefinition {
return selectorTransform((selector) => `.group${value} ${selector}`);
}

export const group: ModifierMap = {
hover: createGroup(":hover"),
focus: {
DEFAULT: createGroup(":focus"),
within: createGroup(":focus-within"),
visible: createGroup(":focus-visible"),
},
active: createGroup(":active"),
visited: createGroup(":visited"),
target: createGroup(":target"),
first: {
DEFAULT: createGroup(":first-child"),
of: {
type: createGroup(":first-of-type"),
},
},
last: {
DEFAULT: createGroup(":last-child"),
of: {
type: createGroup(":last-of-type"),
},
},
only: {
DEFAULT: createGroup(":only-child"),
of: {
type: createGroup(":only-of-type"),
},
},
empty: createGroup(":empty"),
disabled: createGroup(":disabled"),
checked: createGroup(":checked"),
indeterminate: createGroup(":indeterminate"),
default: createGroup(":default"),
required: createGroup(":required"),
valid: createGroup(":valid"),
invalid: createGroup(":invalid"),
in: {
range: createGroup(":in-range"),
},
out: {
of: {
range: createGroup(":out-of-range"),
},
},
placeholder: {
shown: createGroup(":placeholder-shown"),
},
autofill: createGroup(":autofill"),
read: {
only: createGroup(":read-only"),
},
open: createGroup("[open]"),
odd: createGroup(":nth-child(odd)"),
even: createGroup(":nth-child(even)"),
};

0 comments on commit 7f1da38

Please sign in to comment.