Skip to content

Commit 2483a9c

Browse files
committed
Merge 'origin/website-redesign' into layout
# Conflicts: # app/routes/project-version/functions/function.js # app/routes/project-version/modules/module.js # app/routes/project-version/namespaces/namespace.js # app/templates/project-version/functions/function.hbs # package.json # pnpm-lock.yaml
2 parents 791a69c + 9960a2f commit 2483a9c

File tree

28 files changed

+2266
-2183
lines changed

28 files changed

+2266
-2183
lines changed

.github/workflows/gh-pages.yml

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,14 @@ jobs:
1010
deploy:
1111
runs-on: ubuntu-latest
1212
steps:
13-
- uses: actions/checkout@v2
14-
- uses: actions/setup-node@v2
13+
- uses: actions/checkout@v4
14+
15+
- uses: pnpm/action-setup@v4
16+
- uses: actions/setup-node@v4
1517
with:
16-
node-version: '14'
17-
- run: npm install -g npm@7
18-
- run: npm install
18+
cache: 'pnpm'
19+
node-version: 20
20+
- run: pnpm i --frozen-lockfile
1921
- run: npx lint-to-the-future output -o lttfOutput --rootUrl ember-api-docs --previous-results https://ember-learn.github.io/ember-api-docs/data.json
2022
- name: Deploy
2123
uses: peaceiris/actions-gh-pages@v3

app/app.js

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,12 @@ import Application from '@ember/application';
22
import Resolver from 'ember-resolver';
33
import loadInitializers from 'ember-load-initializers';
44
import config from 'ember-api-docs/config/environment';
5+
import { importSync, isDevelopingApp, macroCondition } from '@embroider/macros';
6+
import 'ember-power-select/styles';
57

6-
import './deprecation-workflow';
8+
if (macroCondition(isDevelopingApp())) {
9+
importSync('./deprecation-workflow');
10+
}
711

812
export default class App extends Application {
913
modulePrefix = config.modulePrefix;

app/components/search-input.hbs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,9 @@
1616
@targetAttachment='bottom left'
1717
@attachment='top left'
1818
@constraints={{this._resultTetherConstraints}}
19-
@class='ds-dropdown-results'
19+
class='ds-dropdown-results'
2020
>
2121
<SearchInput::Dropdown
22-
@isVisible={{this._focused}}
2322
@results={{this.searchService.results}}
2423
@noResults={{if
2524
(and

app/components/search-input/dropdown.js

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,6 @@ export default class Dropdown extends Component {
1414
// Public API
1515
role = 'listbox';
1616

17-
isVisible = false;
18-
1917
// show
2018
// Massage data to make it easier for displaying on the template
2119
// Returned object:

app/controllers/project-version.js

Lines changed: 109 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
import { action, computed, set } from '@ember/object';
33
import { inject as service } from '@ember/service';
44
import { readOnly, alias } from '@ember/object/computed';
5-
import Controller from '@ember/controller';
5+
import Controller, { inject as controller } from '@ember/controller';
66
import { A } from '@ember/array';
77
import values from 'lodash.values';
88
import groupBy from 'lodash.groupby';
@@ -19,6 +19,16 @@ export default class ProjectVersionController extends Controller {
1919
@service
2020
project;
2121

22+
@service router;
23+
@service('project') projectService;
24+
25+
@controller('project-version.classes.class') classController;
26+
@controller('project-version.modules.module') moduleController;
27+
@controller('project-version.namespaces.namespace') namespaceController;
28+
@controller('project-version.classes.class.methods') methodsController;
29+
@controller('project-version.classes.class.events') eventsController;
30+
@controller('project-version.classes.class.properties') propertiesController;
31+
2232
@alias('filterData.sideNav.showPrivate')
2333
showPrivateClasses;
2434

@@ -128,4 +138,102 @@ export default class ProjectVersionController extends Controller {
128138
togglePrivateClasses() {
129139
set(this, 'showPrivateClasses', !this.showPrivateClasses);
130140
}
141+
142+
@action
143+
updateProject(project, ver /*, component */) {
144+
let projectVersionID = ver.compactVersion;
145+
let endingRoute;
146+
switch (this.router.currentRouteName) {
147+
case 'project-version.classes.class': {
148+
let className = this._getEncodedNameForCurrentClass();
149+
endingRoute = `classes/${className}`;
150+
break;
151+
}
152+
case 'project-version.classes.class.index': {
153+
let className = this._getEncodedNameForCurrentClass();
154+
endingRoute = `classes/${className}`;
155+
break;
156+
}
157+
case 'project-version.modules.module.index': {
158+
let moduleName = encodeURIComponent(this.moduleController.model.name);
159+
endingRoute = `modules/${moduleName}`;
160+
break;
161+
}
162+
case 'project-version.namespaces.namespace.index': {
163+
let namespaceName = this.namespaceController.model.name;
164+
endingRoute = `namespaces/${namespaceName}`;
165+
break;
166+
}
167+
case 'project-version.classes.class.methods.index': {
168+
let className = this._getEncodedNameForCurrentClass();
169+
endingRoute = `classes/${className}/methods`;
170+
break;
171+
}
172+
case 'project-version.classes.class.events.index': {
173+
let className = this._getEncodedNameForCurrentClass();
174+
endingRoute = `classes/${className}/events`;
175+
break;
176+
}
177+
case 'project-version.classes.class.properties.index': {
178+
let className = this._getEncodedNameForCurrentClass();
179+
endingRoute = `classes/${className}/properties`;
180+
break;
181+
}
182+
case 'project-version.classes.class.methods.method': {
183+
let className = this._getEncodedNameForCurrentClass();
184+
let methodName = this.methodsController.anchor;
185+
endingRoute = `classes/${className}/methods/${methodName}?anchor=${methodName}`;
186+
break;
187+
}
188+
case 'project-version.classes.class.events.event': {
189+
let className = this._getEncodedNameForCurrentClass();
190+
let eventName = this.eventsController.anchor;
191+
endingRoute = `classes/${className}/events/${eventName}?anchor=${eventName}`;
192+
break;
193+
}
194+
case 'project-version.classes.class.properties.property': {
195+
let className = this._getEncodedNameForCurrentClass();
196+
let propertyName = this.propertiesController.anchor;
197+
endingRoute = `classes/${className}/properties/${propertyName}?anchor=${propertyName}`;
198+
break;
199+
}
200+
default:
201+
endingRoute = '';
202+
break;
203+
}
204+
// if the user is navigating to/from api versions >= 2.16, take them
205+
// to the home page instead of trying to translate the url
206+
let shouldConvertPackages = this._shouldConvertPackages(
207+
ver,
208+
this.projectService.version
209+
);
210+
let isEmberProject = project === 'ember';
211+
212+
if (!isEmberProject || !shouldConvertPackages) {
213+
this.router.transitionTo(
214+
`/${project}/${projectVersionID}/${endingRoute}`
215+
);
216+
} else {
217+
this.router.transitionTo(`/${project}/${projectVersionID}`);
218+
}
219+
}
220+
221+
_getEncodedNameForCurrentClass() {
222+
// escape any reserved characters for url, like slashes
223+
return encodeURIComponent(this.classController.model.get('name'));
224+
}
225+
226+
// Input some version info, returns a boolean based on
227+
// whether the user is switching versions for a 2.16 docs release or later.
228+
// The urls for pre-2.16 classes and later packages are quite different
229+
_shouldConvertPackages(targetVer, previousVer) {
230+
let targetVersion = getCompactVersion(targetVer.id);
231+
let previousVersion = getCompactVersion(previousVer);
232+
let previousComparison = semverCompare(previousVersion, '2.16');
233+
let targetComparison = semverCompare(targetVersion, '2.16');
234+
return (
235+
(previousComparison < 0 && targetComparison >= 0) ||
236+
(previousComparison >= 0 && targetComparison < 0)
237+
);
238+
}
131239
}

app/deprecation-workflow.js

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,14 @@
11
import setupDeprecationWorkflow from 'ember-cli-deprecation-workflow';
22

33
setupDeprecationWorkflow({
4+
throwOnUnhandled: true,
45
workflow: [
5-
{ handler: 'silence', matchId: 'ember.component.reopen' },
6-
{ handler: 'silence', matchId: 'implicit-injections' },
7-
{ handler: 'silence', matchId: 'this-property-fallback' },
8-
{ handler: 'silence', matchId: 'ember-component.is-visible' },
6+
{ handler: 'throw', matchId: 'ember.component.reopen' },
7+
{ handler: 'throw', matchId: 'implicit-injections' },
8+
{ handler: 'throw', matchId: 'this-property-fallback' },
9+
{ handler: 'throw', matchId: 'ember-component.is-visible' },
910
{
10-
handler: 'silence',
11+
handler: 'throw',
1112
matchId: 'deprecated-run-loop-and-computed-dot-access',
1213
},
1314
],

app/helpers/github-link.js

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,17 @@ import { helper } from '@ember/component/helper';
22
import githubMap, { mainDir } from '../utils/github-map';
33

44
export function githubLink([project, version, file, line], { isEdit = false }) {
5+
const isEmberProject = project === 'ember';
6+
const majorVersion = parseInt(version?.split('.')[0].replace('v', ''), 10);
7+
8+
// Check if the project is 'ember' and adjust the tag only if the major version is >= 6 to match the Git tags
9+
const adjustedVersion =
10+
isEmberProject && majorVersion >= 6 ? `${version}-ember-source` : version;
11+
512
if (isEdit) {
613
return `https://github.com/${githubMap[project]}/edit/release${mainDir(
714
project,
8-
version
15+
adjustedVersion
916
)}${file}#L${line}`;
1017
}
1118

@@ -22,9 +29,11 @@ export function githubLink([project, version, file, line], { isEdit = false }) {
2229
// 'https://github.com/emberjs/data/tree/v4.10.0/packages/packages/store/addon/-private/record-arrays/identifier-array.ts#L118'
2330
const fixedFile = file?.replace('../packages/', '../');
2431

25-
return `https://github.com/${githubMap[project]}/tree/v${version}${mainDir(
32+
return `https://github.com/${
33+
githubMap[project]
34+
}/tree/v${adjustedVersion}${mainDir(
2635
project,
27-
version
36+
adjustedVersion
2837
)}${fixedFile}#L${line}`;
2938
}
3039

app/routes/application.js

Lines changed: 0 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ import { inject as service } from '@ember/service';
22
import Route from '@ember/routing/route';
33
import { set } from '@ember/object';
44
import ENV from 'ember-api-docs/config/environment';
5-
import getCompactVersion from 'ember-api-docs/utils/get-compact-version';
65

76
export default class ApplicationRoute extends Route {
87
@service
@@ -11,22 +10,6 @@ export default class ApplicationRoute extends Route {
1110
@service
1211
legacyModuleMappings;
1312

14-
title(tokens) {
15-
let [version, entity] = tokens;
16-
if (!entity) {
17-
entity = 'Ember';
18-
}
19-
if (version) {
20-
const compactVersion = getCompactVersion(version);
21-
const title = `${[entity, compactVersion].join(
22-
' - '
23-
)} - Ember API Documentation`;
24-
set(this, 'headData.title', title);
25-
return title;
26-
}
27-
return '';
28-
}
29-
3013
async afterModel() {
3114
set(this, 'headData.cdnDomain', ENV.API_HOST);
3215
await this.legacyModuleMappings.initMappings();

app/routes/ember-cli.js

Lines changed: 0 additions & 7 deletions
This file was deleted.

0 commit comments

Comments
 (0)