Skip to content

Commit 4f80734

Browse files
committed
copy test dirs
1 parent 8d67013 commit 4f80734

33 files changed

+4452
-102
lines changed

pnpm-lock.yaml

Lines changed: 3885 additions & 102 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pnpm-workspace.yaml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
packages:
2+
- '.'
3+
- './test-projects/*'
4+
- './test-projects/rules/*'
5+
- './test-projects/configs/*'
Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
import globals from 'globals';
2+
import js from '@eslint/js';
3+
import e from 'eslint-plugin-ember';
4+
5+
import ember from 'eslint-plugin-ember/configs/recommended';
6+
import emberGJS from 'eslint-plugin-ember/configs/recommended-gjs';
7+
8+
import emberParser from 'ember-eslint-parser';
9+
import babelParser from '@babel/eslint-parser';
10+
11+
export default [
12+
js.configs.recommended,
13+
{
14+
linterOptions: {
15+
reportUnusedDisableDirectives: 'error',
16+
},
17+
},
18+
{
19+
files: ['**/*.js'],
20+
languageOptions: {
21+
parser: babelParser,
22+
parserOptions: {
23+
ecmaFeatures: { modules: true },
24+
ecmaVersion: 'latest',
25+
requireConfigFile: false,
26+
babelOptions: {
27+
plugins: [['@babel/plugin-proposal-decorators', { decoratorsBeforeExport: true }]],
28+
},
29+
},
30+
globals: {
31+
...globals.browser,
32+
},
33+
},
34+
plugins: {
35+
ember: e,
36+
},
37+
rules: {
38+
...ember.rules,
39+
...emberGJS.rules,
40+
},
41+
},
42+
{
43+
files: ['**/*.gjs'],
44+
languageOptions: {
45+
parser: emberParser,
46+
parserOptions: {
47+
ecmaFeatures: { modules: true },
48+
ecmaVersion: 'latest',
49+
requireConfigFile: false,
50+
babelOptions: {
51+
plugins: [['@babel/plugin-proposal-decorators', { decoratorsBeforeExport: true }]],
52+
},
53+
},
54+
globals: {
55+
...globals.browser,
56+
},
57+
},
58+
plugins: {
59+
ember: e,
60+
},
61+
rules: {
62+
...ember.rules,
63+
...emberGJS.rules,
64+
},
65+
},
66+
];
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
{
2+
"name": "@test-project/configs-flat-js",
3+
"private": true,
4+
"scripts": {
5+
"test:notes": "This isn't just 'eslint .' because we aren't in a type=module package",
6+
"test": "pnpm eslint:with-config .",
7+
"eslint:with-config": "ESLINT_USE_FLAT_CONFIG=true eslint --config ./eslint.config.mjs --max-warnings=0",
8+
"eslint:debug-file": "pnpm eslint:with-config --print-config"
9+
},
10+
"devDependencies": {
11+
"@babel/eslint-parser": "7.23.10",
12+
"@babel/plugin-proposal-decorators": "7.23.9",
13+
"eslint-plugin-ember-template-lint": "workspace:*",
14+
"ember-eslint-parser": "^0.5.6",
15+
"eslint": "^8.0.1",
16+
"eslint-plugin-ember": "^12.0.0",
17+
"globals": "^13.24.0"
18+
},
19+
"dependencies": {
20+
"@eslint/js": "^8.56.0"
21+
}
22+
}
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
import Component from '@glimmer/component';
2+
import { tracked } from '@glimmer/tracking';
3+
import { isDestroyed, isDestroying } from '@ember/destroyable';
4+
import { waitForPromise } from '@ember/test-waiters';
5+
6+
export class Await extends Component {
7+
@tracked resolved;
8+
@tracked error;
9+
10+
constructor(owner, args) {
11+
super(owner, args);
12+
13+
let promise = args.promise
14+
.then((resolved) => {
15+
if (isDestroying(this) || isDestroyed(this)) return;
16+
17+
this.resolved = resolved;
18+
})
19+
.catch((error) => {
20+
if (isDestroying(this) || isDestroyed(this)) return;
21+
22+
this.error = error;
23+
this.resolved = undefined;
24+
});
25+
26+
waitForPromise(promise);
27+
}
28+
29+
get isPending() {
30+
return !this.resolved;
31+
}
32+
33+
<template>
34+
{{#if this.error}}
35+
Error:
36+
{{this.error.toString}}
37+
{{else if this.isPending}}
38+
Building...
39+
{{else}}
40+
<this.resolved />
41+
{{/if}}
42+
</template>
43+
}
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
import Component from '@glimmer/component';
2+
import { on } from '@ember/modifier';
3+
4+
import { getSnippetElement, toClipboard, withExtraStyles } from './copy-utils';
5+
import Menu from './menu';
6+
7+
/**
8+
* This component is injected via the markdown rendering
9+
*/
10+
export default class CopyMenu extends Component {
11+
copyAsText = (event) => {
12+
let code = getSnippetElement(event);
13+
14+
navigator.clipboard.writeText(code.innerText);
15+
};
16+
17+
copyAsImage = async (event) => {
18+
let code = getSnippetElement(event);
19+
20+
await withExtraStyles(code, () => toClipboard(code));
21+
};
22+
23+
<template>
24+
<Menu data-test-copy-menu>
25+
<:trigger as |t|>
26+
<t.Default class="absolute top-3 right-4 z-10" data-test-copy-menu>
27+
📋
28+
</t.Default>
29+
</:trigger>
30+
31+
<:options as |Item|>
32+
<Item {{on "click" this.copyAsText}}>
33+
Copy as text
34+
</Item>
35+
<Item {{on "click" this.copyAsImage}}>
36+
Copy as image
37+
</Item>
38+
</:options>
39+
</Menu>
40+
</template>
41+
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
import Component from '@glimmer/component';
2+
3+
export class DeconstructArray extends Component {
4+
testFunction = async () => {
5+
const [, ...remaining] = await Promise.all([1, 2, 3]);
6+
return remaining;
7+
}
8+
9+
<template>
10+
This is a template
11+
</template>
12+
}
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
import FaIcon from '@fortawesome/ember-fontawesome/components/fa-icon';
2+
3+
import { ExternalLink } from 'limber-ui';
4+
5+
export const Footer = <template>
6+
<footer class="p-2 w-full grid shadow border-t">
7+
<nav class="mx-auto flex gap-4">
8+
<ExternalLink href="https://github.com/nullvoxpopuli/limber">
9+
<:custom as |DefaultContent|>
10+
<span class="hidden sm:block">
11+
<DefaultContent>
12+
GitHub
13+
</DefaultContent>
14+
</span>
15+
<span class="block sm:hidden px-2">
16+
<FaIcon @icon="github" @prefix="fab" />
17+
</span>
18+
</:custom>
19+
</ExternalLink>
20+
<ExternalLink href="https://guides.emberjs.com/">
21+
Guides
22+
</ExternalLink>
23+
<ExternalLink href="https://api.emberjs.com">
24+
API Reference
25+
</ExternalLink>
26+
<ExternalLink href="http://new.emberjs.com">
27+
Blitz
28+
</ExternalLink>
29+
</nav>
30+
</footer>
31+
</template>;
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
/**
2+
* Copied from font-awesome directly,
3+
* but with the addition of fill="currentColor"
4+
*/
5+
6+
export const Sun = <template>
7+
<svg
8+
class="fa-sun"
9+
xmlns="http://www.w3.org/2000/svg"
10+
viewBox="0 0 512 512"
11+
>{{!! Font Awesome Pro 6.4.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2023 Fonticons, Inc. }}<path
12+
d="M361.5 1.2c5 2.1 8.6 6.6 9.6 11.9L391 121l107.9 19.8c5.3 1 9.8 4.6 11.9 9.6s1.5 10.7-1.6 15.2L446.9 256l62.3 90.3c3.1 4.5 3.7 10.2 1.6 15.2s-6.6 8.6-11.9 9.6L391 391 371.1 498.9c-1 5.3-4.6 9.8-9.6 11.9s-10.7 1.5-15.2-1.6L256 446.9l-90.3 62.3c-4.5 3.1-10.2 3.7-15.2 1.6s-8.6-6.6-9.6-11.9L121 391 13.1 371.1c-5.3-1-9.8-4.6-11.9-9.6s-1.5-10.7 1.6-15.2L65.1 256 2.8 165.7c-3.1-4.5-3.7-10.2-1.6-15.2s6.6-8.6 11.9-9.6L121 121 140.9 13.1c1-5.3 4.6-9.8 9.6-11.9s10.7-1.5 15.2 1.6L256 65.1 346.3 2.8c4.5-3.1 10.2-3.7 15.2-1.6zM160 256a96 96 0 1 1 192 0 96 96 0 1 1 -192 0zm224 0a128 128 0 1 0 -256 0 128 128 0 1 0 256 0z"
13+
/></svg>
14+
</template>;
Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
1+
import { hash } from '@ember/helper';
2+
3+
import HeadlessMenu from 'ember-headlessui/components/menu';
4+
import { Popover } from 'ember-primitives';
5+
6+
const Button = <template>
7+
<@item as |i|>
8+
<i.Element
9+
@tagName="button"
10+
class="bg-transparent block w-full select-none py-2 px-4 text-left text-black hover:bg-gray-100 focus:ring-4 ring-inset focus:outline-none"
11+
tabindex="0"
12+
data-test-menu-button
13+
...attributes
14+
>
15+
{{yield}}
16+
</i.Element>
17+
</@item>
18+
</template>;
19+
20+
const DefaultTrigger = <template>
21+
<@menu.Button
22+
{{@trigger}}
23+
class="text-black rounded border bg-white px-2 py-1 -my-1 text-left transition ease-in-out duration-150 sm:text-sm drop-shadow-md hover:drop-shadow-xl focus:ring-4 focus-visible:outline-none ring-ember-brand focus:outline-none"
24+
...attributes
25+
>
26+
{{yield @menu}}
27+
</@menu.Button>
28+
</template>;
29+
30+
const PlainTrigger = <template>
31+
<@menu.Button {{@trigger}} ...attributes>
32+
{{yield @menu}}
33+
</@menu.Button>
34+
</template>;
35+
36+
const Items = <template>
37+
<@items
38+
class="z-20 grid rounded border bg-white drop-shadow-xl min-w-max"
39+
data-test-menu-items
40+
...attributes
41+
as |items|
42+
>
43+
{{yield (component Button item=items.Item)}}
44+
</@items>
45+
</template>;
46+
47+
const Menu = <template>
48+
<Popover
49+
@inline={{@inline}}
50+
@placement="bottom"
51+
@offsetOptions={{8}}
52+
@shiftOptions={{hash padding=8}}
53+
@flipOptions={{hash padding=8}}
54+
as |p|
55+
>
56+
<HeadlessMenu as |menu|>
57+
58+
{{yield
59+
(hash
60+
menu=menu
61+
isOpen=menu.isOpen
62+
Button=(component PlainTrigger menu=menu trigger=p.hook)
63+
Default=(component DefaultTrigger menu=menu trigger=p.hook)
64+
)
65+
to="trigger"
66+
}}
67+
68+
{{#if menu.isOpen}}
69+
{{! template-lint-disable no-inline-styles }}
70+
<p.Content style="width: max-content;z-index:1;">
71+
{{! template-lint-disable no-inline-styles }}
72+
<div
73+
class="border"
74+
style="
75+
position: absolute;
76+
background: white;
77+
width: 8px;
78+
height: 8px;
79+
transform: rotate(45deg);
80+
z-index: 0;
81+
"
82+
{{p.arrow}}
83+
></div>
84+
<Items @items={{menu.Items}} ...attributes as |Button|>
85+
{{yield Button to="options"}}
86+
</Items>
87+
</p.Content>
88+
{{/if}}
89+
90+
</HeadlessMenu>
91+
</Popover>
92+
</template>;
93+
94+
export default Menu;

0 commit comments

Comments
 (0)