Skip to content

Commit a0efcd2

Browse files
committed
applied codemod
1 parent 2814896 commit a0efcd2

File tree

108 files changed

+4543
-3750
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

108 files changed

+4543
-3750
lines changed

app/components/color-scheme-menu.gjs

Lines changed: 31 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,38 @@
1+
import { fn } from '@ember/helper';
2+
import { on } from '@ember/modifier';
13
import { service } from '@ember/service';
24
import Component from '@glimmer/component';
35

6+
import scopedClass from 'ember-scoped-css/helpers/scoped-class';
7+
import svgJar from 'ember-svg-jar/helpers/svg-jar';
8+
import eq from 'ember-truth-helpers/helpers/eq';
9+
10+
import Dropdown from 'crates-io/components/dropdown';
11+
412
export default class Header extends Component {
13+
<template>
14+
<Dropdown data-test-dark-mode-menu ...attributes class='dropdown' as |dd|>
15+
<dd.Trigger @hideArrow={{true}} class='trigger' data-test-dark-mode-toggle>
16+
{{svgJar this.icon class=(scopedClass 'icon')}}
17+
<span class='sr-only'>Change color scheme</span>
18+
</dd.Trigger>
19+
20+
<dd.Menu class='menu' as |menu|>
21+
{{#each this.colorSchemes as |colorScheme|}}
22+
<menu.Item>
23+
<button
24+
class='menu-button button-reset {{if (eq colorScheme.mode this.colorScheme.scheme) "selected"}}'
25+
type='button'
26+
{{on 'click' (fn this.colorScheme.set colorScheme.mode)}}
27+
>
28+
{{svgJar colorScheme.svg class=(scopedClass 'icon')}}
29+
{{colorScheme.mode}}
30+
</button>
31+
</menu.Item>
32+
{{/each}}
33+
</dd.Menu>
34+
</Dropdown>
35+
</template>
536
/** @type {import("../services/dark-mode").default} */
637
@service colorScheme;
738

@@ -15,24 +46,3 @@ export default class Header extends Component {
1546
return this.colorSchemes.find(({ mode }) => mode === this.colorScheme.scheme)?.svg;
1647
}
1748
}
18-
19-
<Dropdown data-test-dark-mode-menu ...attributes class="dropdown" as |dd|>
20-
<dd.Trigger @hideArrow={{true}} class="trigger" data-test-dark-mode-toggle>
21-
{{svg-jar this.icon class=(scoped-class "icon")}}
22-
<span class="sr-only">Change color scheme</span>
23-
</dd.Trigger>
24-
25-
<dd.Menu class="menu" as |menu|>
26-
{{#each this.colorSchemes as |colorScheme|}}
27-
<menu.Item>
28-
<button
29-
class="menu-button button-reset {{if (eq colorScheme.mode this.colorScheme.scheme) 'selected'}}"
30-
type="button"
31-
{{on 'click' (fn this.colorScheme.set colorScheme.mode)}}
32-
>
33-
{{svg-jar colorScheme.svg class=(scoped-class "icon")}} {{colorScheme.mode}}
34-
</button>
35-
</menu.Item>
36-
{{/each}}
37-
</dd.Menu>
38-
</Dropdown>

app/components/copy-button.gjs

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,16 @@
1+
import { on } from '@ember/modifier';
12
import { service } from '@ember/service';
23
import Component from '@glimmer/component';
34

45
import { restartableTask } from 'ember-concurrency';
6+
import perform from 'ember-concurrency/helpers/perform';
57

68
export default class CrateTomlCopy extends Component {
9+
<template>
10+
<button type='button' ...attributes {{on 'click' (perform this.copyTask)}}>
11+
{{yield}}
12+
</button>
13+
</template>
714
@service notifications;
815

916
copyTask = restartableTask(async () => {
@@ -16,7 +23,3 @@ export default class CrateTomlCopy extends Component {
1623
}
1724
});
1825
}
19-
20-
<button type="button" ...attributes {{on "click" (perform this.copyTask)}}>
21-
{{yield}}
22-
</button>
Lines changed: 20 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,20 @@
1-
<ul class="list">
2-
{{#each @crates as |crate|}}
3-
<li>
4-
<LinkTo @route="crate" @model={{crate.id}} class="link">
5-
{{ crate.name }} ({{ crate.max_version }})
6-
{{svg-jar "download-arrow" class=(scoped-class "download-icon")}}
7-
{{ format-num crate.downloads }}
8-
</LinkTo>
9-
</li>
10-
{{/each}}
11-
</ul>
1+
import { LinkTo } from '@ember/routing';
2+
3+
import scopedClass from 'ember-scoped-css/helpers/scoped-class';
4+
import svgJar from 'ember-svg-jar/helpers/svg-jar';
5+
6+
import formatNum from 'crates-io/helpers/format-num';
7+
<template>
8+
<ul class='list'>
9+
{{#each @crates as |crate|}}
10+
<li>
11+
<LinkTo @route='crate' @model={{crate.id}} class='link'>
12+
{{crate.name}}
13+
({{crate.max_version}})
14+
{{svgJar 'download-arrow' class=(scopedClass 'download-icon')}}
15+
{{formatNum crate.downloads}}
16+
</LinkTo>
17+
</li>
18+
{{/each}}
19+
</ul>
20+
</template>

app/components/crate-header.gjs

Lines changed: 87 additions & 81 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,97 @@
1+
import { LinkTo } from '@ember/routing';
12
import { service } from '@ember/service';
23
import Component from '@glimmer/component';
34

45
import { task } from 'ember-concurrency';
6+
import pluralize from 'ember-inflector/helpers/pluralize';
7+
import link_ from 'ember-link/helpers/link';
8+
import svgJar from 'ember-svg-jar/helpers/svg-jar';
59
import { alias } from 'macro-decorators';
610

11+
import FollowButton from 'crates-io/components/follow-button';
12+
import NavTabs from 'crates-io/components/nav-tabs';
13+
import PageHeader from 'crates-io/components/page-header';
14+
import Tooltip from 'crates-io/components/tooltip';
15+
716
export default class CrateHeader extends Component {
17+
<template>
18+
<PageHeader class='header' data-test-heading>
19+
<h1 class='heading'>
20+
<span data-test-crate-name>{{@crate.name}}</span>
21+
{{#if @version}}
22+
<small data-test-crate-version>v{{@version.num}}</small>
23+
24+
{{#if @version.yanked}}
25+
<span class='yanked-badge' data-test-yanked>
26+
{{svgJar 'trash'}}
27+
Yanked
28+
29+
<Tooltip>
30+
This crate has been yanked, but it is still available for download for other crates that may be
31+
depending on it.
32+
</Tooltip>
33+
</span>
34+
{{/if}}
35+
{{/if}}
36+
</h1>
37+
38+
{{#if @crate.description}}
39+
<div class='description'>
40+
{{@crate.description}}
41+
</div>
42+
{{/if}}
43+
44+
{{#if this.keywords}}
45+
<ul class='keywords'>
46+
{{#each this.keywords as |keyword|}}
47+
<li>
48+
<LinkTo @route='keyword' @model={{keyword.id}} data-test-keyword={{keyword.id}}>
49+
<span class='hash'>#</span>{{keyword.id}}
50+
</LinkTo>
51+
</li>
52+
{{/each}}
53+
</ul>
54+
{{/if}}
55+
56+
{{#if this.session.currentUser}}
57+
<FollowButton @crate={{@crate}} class='follow-button' />
58+
{{/if}}
59+
</PageHeader>
60+
61+
<NavTabs aria-label='{{@crate.name}} crate subpages' class='nav' as |nav|>
62+
<nav.Tab
63+
@link={{if @versionNum (link_ 'crate.version' @crate @versionNum) (link_ 'crate.index' @crate)}}
64+
data-test-readme-tab
65+
>
66+
Readme
67+
</nav.Tab>
68+
69+
<nav.Tab @link={{link_ 'crate.versions' @crate}} data-test-versions-tab>
70+
{{pluralize @crate.num_versions 'Version'}}
71+
</nav.Tab>
72+
73+
<nav.Tab
74+
@link={{if
75+
@versionNum
76+
(link_ 'crate.version-dependencies' @crate @versionNum)
77+
(link_ 'crate.dependencies' @crate)
78+
}}
79+
data-test-deps-tab
80+
>
81+
Dependencies
82+
</nav.Tab>
83+
84+
<nav.Tab @link={{link_ 'crate.reverse-dependencies' @crate}} data-test-rev-deps-tab>
85+
Dependents
86+
</nav.Tab>
87+
88+
{{#if this.isOwner}}
89+
<nav.Tab @link={{link_ 'crate.settings' @crate}} data-test-settings-tab>
90+
Settings
91+
</nav.Tab>
92+
{{/if}}
93+
</NavTabs>
94+
</template>
895
@service session;
996

1097
@alias('loadKeywordsTask.last.value') keywords;
@@ -26,84 +113,3 @@ export default class CrateHeader extends Component {
26113
return (await this.args.crate?.keywords) ?? [];
27114
});
28115
}
29-
30-
<PageHeader class="header" data-test-heading>
31-
<h1 class="heading">
32-
<span data-test-crate-name>{{@crate.name}}</span>
33-
{{#if @version}}
34-
<small data-test-crate-version>v{{@version.num}}</small>
35-
36-
{{#if @version.yanked}}
37-
<span class="yanked-badge" data-test-yanked>
38-
{{svg-jar "trash"}}
39-
Yanked
40-
41-
<Tooltip>
42-
This crate has been yanked, but it is still available for download for other crates that
43-
may be depending on it.
44-
</Tooltip>
45-
</span>
46-
{{/if}}
47-
{{/if}}
48-
</h1>
49-
50-
{{#if @crate.description}}
51-
<div class="description">
52-
{{@crate.description}}
53-
</div>
54-
{{/if}}
55-
56-
{{#if this.keywords}}
57-
<ul class="keywords">
58-
{{#each this.keywords as |keyword|}}
59-
<li>
60-
<LinkTo @route="keyword" @model={{keyword.id}} data-test-keyword={{keyword.id}}>
61-
<span class="hash">#</span>{{keyword.id}}
62-
</LinkTo>
63-
</li>
64-
{{/each}}
65-
</ul>
66-
{{/if}}
67-
68-
{{#if this.session.currentUser}}
69-
<FollowButton @crate={{@crate}} class="follow-button"/>
70-
{{/if}}
71-
</PageHeader>
72-
73-
<NavTabs aria-label="{{@crate.name}} crate subpages" class="nav" as |nav|>
74-
<nav.Tab
75-
@link={{if
76-
@versionNum
77-
(link "crate.version" @crate @versionNum)
78-
(link "crate.index" @crate)
79-
}}
80-
data-test-readme-tab
81-
>
82-
Readme
83-
</nav.Tab>
84-
85-
<nav.Tab @link={{link "crate.versions" @crate}} data-test-versions-tab>
86-
{{pluralize @crate.num_versions "Version"}}
87-
</nav.Tab>
88-
89-
<nav.Tab
90-
@link={{if
91-
@versionNum
92-
(link "crate.version-dependencies" @crate @versionNum)
93-
(link "crate.dependencies" @crate)
94-
}}
95-
data-test-deps-tab
96-
>
97-
Dependencies
98-
</nav.Tab>
99-
100-
<nav.Tab @link={{link "crate.reverse-dependencies" @crate}} data-test-rev-deps-tab>
101-
Dependents
102-
</nav.Tab>
103-
104-
{{#if this.isOwner}}
105-
<nav.Tab @link={{link "crate.settings" @crate}} data-test-settings-tab>
106-
Settings
107-
</nav.Tab>
108-
{{/if}}
109-
</NavTabs>

app/components/crate-list.gjs

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,13 @@
1-
<div ...attributes>
2-
{{!-- The extra div wrapper is needed for specificity issues with `margin` --}}
3-
<ol class="list">
4-
{{#each @crates as |crate index|}}
5-
<li>
6-
<CrateRow @crate={{crate}} data-test-crate-row={{index}} />
7-
</li>
8-
{{/each}}
9-
</ol>
10-
</div>
1+
import CrateRow from 'crates-io/components/crate-row';
2+
<template>
3+
<div ...attributes>
4+
{{! The extra div wrapper is needed for specificity issues with `margin` }}
5+
<ol class='list'>
6+
{{#each @crates as |crate index|}}
7+
<li>
8+
<CrateRow @crate={{crate}} data-test-crate-row={{index}} />
9+
</li>
10+
{{/each}}
11+
</ol>
12+
</div>
13+
</template>

0 commit comments

Comments
 (0)