Skip to content

Removing the tabbed-layout and moving it to an on-this-page layout #909

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 24 commits into
base: website-redesign
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
323cb8e
Update styleguide to have the on-this-page styling
MinThaMie Jun 14, 2024
8a98942
Move private toggle up in the sidebar
MinThaMie Jun 14, 2024
b87e1d0
move templates to components + remove EmberAnchor from the templates …
MinThaMie Jun 14, 2024
49a3cba
Make styling work, remove ember-anchor + updateAnchor implementation
MinThaMie Jun 14, 2024
fbe8859
fix pnpm version
mansona Jul 11, 2024
ae125c6
delete all scroll-tracker stuff
mansona Jul 11, 2024
36e1d6c
remove all traces of ember-anchor
mansona Jul 11, 2024
791a69c
Fix function layout
MinThaMie Jul 26, 2024
2483a9c
Merge 'origin/website-redesign' into layout
mansona May 24, 2025
50a3342
add redirects for methods
mansona Oct 15, 2024
5873677
fix redirects
mansona May 22, 2025
4015814
speed up builds
mansona May 24, 2025
0391a39
Add all method, properties & events redirects to classes, modules, na…
MinThaMie May 24, 2025
9b7e6ad
Merge pull request #931 from ember-learn/test-redirects
MinThaMie May 24, 2025
e2ceca9
WIP stuff
MinThaMie May 24, 2025
0324674
Tiny bit of CSS, fix pnpm-lock and route file after merge
MinThaMie May 24, 2025
9675bf5
Fix linting
MinThaMie May 24, 2025
2d3415d
remove events, methods, properties sub-routes
mansona May 26, 2025
bdbac7d
remove unused function
mansona May 26, 2025
ea43141
remove unused packages
mansona May 26, 2025
1b255ae
update the ember landing page to use anchors correctly
mansona May 26, 2025
0f8f1be
remove unused Percy snapshots
mansona May 26, 2025
6082c26
Merge pull request #951 from ember-learn/remove-routes
mansona May 26, 2025
4f03c69
fix namespace percy snapshot
mansona May 29, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions app/components/class-field-description.hbs
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<section class='{{@type}}'>
<h3 data-anchor='{{@field.name}}'>
<h3 id='{{@field.name}}'>
<span class='{{@type}}-name'>{{@field.name}}</span>
{{#if @field.params}}
<span class='args'>
Expand All @@ -16,7 +16,7 @@
<span class='access'>deprecated</span>
{{/if}}
{{!-- TODO: Fix this link for a11y --}}
<a class='class-field-description--link' data-test-anchor="{{@field.name}}" role='link' {{on 'click' (fn this.updateAnchor @field.name)}} {{!-- template-lint-disable link-href-attributes --}}>
<a class='class-field-description--link' href="#{{@field.name}}" role='link'>
{{svg-jar 'link' width='20px' height='20px'}}
</a>
</h3>
Expand Down
12 changes: 0 additions & 12 deletions app/components/class-field-description.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
import { inject as service } from '@ember/service';
import Component from '@glimmer/component';
import { action } from '@ember/object';

export default class ClassFieldDescription extends Component {
@service
Expand All @@ -12,15 +11,4 @@ export default class ClassFieldDescription extends Component {
this.args.field.class
);
}

/**
* Callback for updating the anchor with the field name that was clicked by a user.
*
* @method updateAnchor
* @method fieldName String The name representing the field that was clicked.
*/
@action
updateAnchor(fieldName) {
this.args.updateAnchor?.(fieldName);
}
}
29 changes: 0 additions & 29 deletions app/components/ember-anchor.js

This file was deleted.

24 changes: 20 additions & 4 deletions app/components/ember-landing-page.hbs
Original file line number Diff line number Diff line change
Expand Up @@ -18,11 +18,27 @@
<li><LinkTo @route='project-version.classes.class' @model='ComputedProperty'>Computed Properties</LinkTo> - declare functions as properties</li>
{{! template-lint-disable no-potential-path-strings }}
<li><LinkTo @route='project-version.classes.class' @model='@ember/object/computed'>Computed Macros</LinkTo> - shorter ways of expressing certain types of computed properties</li>
<li><LinkTo @route='project-version.classes.class' @model='EmberArray'>EmberArray</LinkTo> - contains methods like <LinkTo @route='project-version.classes.class.methods.method' @models={{array 'EmberArray' 'forEach'}} @query={{hash anchor='forEach'}}>forEach</LinkTo> and <LinkTo @route='project-version.classes.class.methods.method' @models={{array 'EmberArray' 'mapBy'}} @query={{hash anchor='mapBy'}}>mapBy</LinkTo> that help you iterate over Ember Objects</li>
<li><LinkTo @route='project-version.classes.class' @model='EmberObject'>EmberObject</LinkTo> - the main base class for all Ember objects, including the <LinkTo @route='project-version.classes.class.methods.method' @models={{array 'EmberObject' 'get'}} @query={{hash anchor='get'}}>get</LinkTo> and <LinkTo @route='project-version.classes.class.methods.method' @models={{array 'EmberObject' 'set'}} @query={{hash anchor='set'}}>set</LinkTo> methods</li>
<li><LinkTo @route='project-version.classes.class' @model='Ember.Templates.helpers'>Ember.Templates.helpers</LinkTo> - built-in functions that can be used in templates, such as the <LinkTo @route='project-version.classes.class.methods.method' @models={{array 'Ember.Templates.helpers' 'each'}} @query={{hash anchor='each'}}>each</LinkTo>, <LinkTo @route='project-version.classes.class.methods.method' @models={{array 'Ember.Templates.helpers' 'on'}} @query={{hash anchor='on'}}>on</LinkTo> and <LinkTo @route='project-version.classes.class.methods.method' @models={{array 'Ember.Templates.helpers' 'fn'}} @query={{hash anchor='fn'}}>fn</LinkTo> helpers</li>
<li>
<LinkTo @route='project-version.classes.class' @model='EmberArray'>EmberArray</LinkTo> - contains methods like
<a href="/ember/{{@version}}/classes/EmberArray#forEach">forEach</a> and
<a href="/ember/{{@version}}/classes/EmberArray#mapBy">mapBy</a>
that help you iterate over Ember Objects
</li>
<li>
<LinkTo @route='project-version.classes.class' @model='EmberObject'>EmberObject</LinkTo> - the main base class for all Ember objects, including the
<a href="/ember/{{@version}}/classes/EmberObject#get">get</a> and
<a href="/ember/{{@version}}/classes/EmberObject#set">set</a> methods
</li>
<li>
<LinkTo @route='project-version.classes.class' @model='Ember.Templates.helpers'>Ember.Templates.helpers</LinkTo> - built-in functions that can be used in templates, such as the
<a href="/ember/{{@version}}/classes/Ember.Templates.helpers#each">each</a> and
<a href="/ember/{{@version}}/classes/Ember.Templates.helpers#on">on</a> helpers
</li>
<li><LinkTo @route='project-version.classes.class' @model='Helper'>Helpers</LinkTo> - a way to define custom display functions that are used in templates</li>
<li><LinkTo @route='project-version.classes.class' @model='Route'>Route</LinkTo> - used to define individual routes, including the <LinkTo @route='project-version.classes.class.methods.method' @models={{array 'Route' 'model'}} @query={{hash anchor='model'}}>model</LinkTo> hook for loading data</li>
<li>
<LinkTo @route='project-version.classes.class' @model='Route'>Route</LinkTo> - used to define individual routes, including the
<a href="/ember/{{@version}}/classes/Route#model">model</a> hook for loading data
</li>
<li><LinkTo @route='project-version.classes.class' @model='Service'>Service</LinkTo> - an Ember object that lives for the duration of the application, and can be made available in different parts of your application</li>
</ul>
<h2>Useful links</h2>
Expand Down
3 changes: 1 addition & 2 deletions app/templates/events.hbs → app/components/events.hbs
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
<EmberAnchor @a={{this.anchor}} />
<ApiIndexFilter @model={{this.model}} @filterData={{this.filterData}} as |filteredModel|>
<ApiIndexFilter @model={{@model}} @filterData={{@filterData}} as |filteredModel|>
{{#each filteredModel.events as |event|}}
<ClassFieldDescription @type="event" @field={{event}} @model={{this.model}} />
{{/each}}
Expand Down
5 changes: 5 additions & 0 deletions app/components/methods.hbs
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
<ApiIndexFilter @model={{@model}} @filterData={{@filterData}} as |filteredModel|>
{{#each filteredModel.methods as |method|}}
<ClassFieldDescription @type="method" @field={{method}} @model={{this.model}} />
{{/each}}
</ApiIndexFilter>
5 changes: 5 additions & 0 deletions app/components/properties.hbs
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
<ApiIndexFilter @model={{@model}} @filterData={{@filterData}} as |filteredModel|>
{{#each filteredModel.properties as |property|}}
<ClassFieldDescription @type="property" @field={{property}} @model={{this.model}} />
{{/each}}
</ApiIndexFilter>
8 changes: 4 additions & 4 deletions app/components/table-of-contents.hbs
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
<label class='toc-private-toggle'>
<input type='checkbox' checked={{@showPrivateClasses}} onchange={{@togglePrivateClasses}} class='private-deprecated-toggle' />
Show Private / Deprecated packages
</label>
<ul class='table-of-contents '>
<li class='toc-item toc-group' data-test-toc-title="packages">
Packages
Expand Down Expand Up @@ -38,7 +42,3 @@
</ul>
</li>
</ul>
<label class='toc-private-toggle'>
<input type='checkbox' checked={{@showPrivateClasses}} onchange={{@togglePrivateClasses}} class='private-deprecated-toggle' />
Show Private / Deprecated
</label>
7 changes: 1 addition & 6 deletions app/controllers/events.js
Original file line number Diff line number Diff line change
@@ -1,12 +1,7 @@
import { inject as service } from '@ember/service';
import Controller from '@ember/controller';
import AnchorControllerSupport from 'ember-anchor/mixins/controller-support';

export default class EventsController extends Controller.extend(
AnchorControllerSupport
) {
export default class EventsController extends Controller {
@service
filterData;

queryParams = ['anchor'];
}
15 changes: 1 addition & 14 deletions app/controllers/methods.js
Original file line number Diff line number Diff line change
@@ -1,20 +1,7 @@
import { inject as service } from '@ember/service';
import Controller from '@ember/controller';
import AnchorControllerSupport from 'ember-anchor/mixins/controller-support';
import { tracked } from '@glimmer/tracking';

export default class MethodsController extends Controller.extend(
AnchorControllerSupport
) {
export default class MethodsController extends Controller {
@service
filterData;

@tracked
anchor;

queryParams = ['anchor'];

updateAnchor(fieldName) {
this.anchor = fieldName;
}
}
15 changes: 5 additions & 10 deletions app/controllers/project-version.js
Original file line number Diff line number Diff line change
Expand Up @@ -149,32 +149,27 @@ export default class ProjectVersionController extends Controller {
endingRoute = `classes/${className}`;
break;
}
case 'project-version.classes.class.index': {
let className = this._getEncodedNameForCurrentClass();
endingRoute = `classes/${className}`;
break;
}
case 'project-version.modules.module.index': {
case 'project-version.modules.module': {
let moduleName = encodeURIComponent(this.moduleController.model.name);
endingRoute = `modules/${moduleName}`;
break;
}
case 'project-version.namespaces.namespace.index': {
case 'project-version.namespaces.namespace': {
let namespaceName = this.namespaceController.model.name;
endingRoute = `namespaces/${namespaceName}`;
break;
}
case 'project-version.classes.class.methods.index': {
case 'project-version.classes.class.methods': {
let className = this._getEncodedNameForCurrentClass();
endingRoute = `classes/${className}/methods`;
break;
}
case 'project-version.classes.class.events.index': {
case 'project-version.classes.class.events': {
let className = this._getEncodedNameForCurrentClass();
endingRoute = `classes/${className}/events`;
break;
}
case 'project-version.classes.class.properties.index': {
case 'project-version.classes.class.properties': {
let className = this._getEncodedNameForCurrentClass();
endingRoute = `classes/${className}/properties`;
break;
Expand Down
14 changes: 1 addition & 13 deletions app/controllers/properties.js
Original file line number Diff line number Diff line change
@@ -1,19 +1,7 @@
/* eslint-disable ember/classic-decorator-no-classic-methods */
import { action } from '@ember/object';
import { inject as service } from '@ember/service';
import Controller from '@ember/controller';
import AnchorControllerSupport from 'ember-anchor/mixins/controller-support';

export default class PropertiesController extends Controller.extend(
AnchorControllerSupport
) {
export default class PropertiesController extends Controller {
@service
filterData;

queryParams = ['anchor'];

@action
updateAnchor(fieldName) {
this.set('anchor', fieldName);
}
}
42 changes: 0 additions & 42 deletions app/mixins/scroll-tracker.js

This file was deleted.

37 changes: 3 additions & 34 deletions app/router.js
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ AppRouter.map(function () {
// project-version.classes-redirect => project-version.classes.index
// project-version.class => project-version.classes.class
this.route('classes', function () {
this.route('class', { path: '/:class' }, itemRoutes);
this.route('class', { path: '/:class' });
});
// this.route('class', {path: '/classes/:class'}, itemRoutes);

Expand All @@ -58,7 +58,7 @@ AppRouter.map(function () {
// project-version.namespace => project-version.namespaces.namespace
// routes/project-version/namespace => routes/project-version/namespaces/namespace
this.route('namespaces', function () {
this.route('namespace', { path: '/:namespace' }, itemRoutes);
this.route('namespace', { path: '/:namespace' });
});
// this.route('namespace', {path: '/namespaces/:namespace'}, itemRoutes);

Expand All @@ -67,22 +67,9 @@ AppRouter.map(function () {
// routes/project-version/module => routes/project-version/modules/module
// routes/project-version/module/* => routes/project-version/modules/module/*
this.route('modules', function () {
this.route('module', { path: '/:module' }, itemRoutes);
this.route('module', { path: '/:module' });
});
// this.route('module', {path: '/modules/:module'}, itemRoutes);

// Common sub-routes
function itemRoutes() {
this.route('methods', function () {
this.route('method', { path: '/:method' });
});
this.route('properties', function () {
this.route('property', { path: '/:property' });
});
this.route('events', function () {
this.route('event', { path: '/:event' });
});
}
}
);
this.route('class', { path: '/classes/:class' });
Expand All @@ -97,24 +84,6 @@ AppRouter.map(function () {
ember-cli
project

/:project/:project_version
/classes/:class
/methods, /properties, /events
/functions/:module (no sub routes)
/namespaces/:namespace
/methods, /properties, /events
/modules/:module
/methods, /properties, /events

SUB ROUTES

Instead of https://api.emberjs.com/ember/4.6/classes/Engine/methods/unregister?anchor=unregister
We can do https://api.emberjs.com/ember/4.6/classes/Engine/methods?anchor=unregister

/methods/:method
/properties/:property
/events/:event

OTHER STATES
private, deprecated, inherited, protected
inherited is not reflected in URL state but it's checked by default
Expand Down
1 change: 1 addition & 0 deletions app/routes/project-version.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ import Route from '@ember/routing/route';
import semverCompare from 'semver-compare';
import getFullVersion from 'ember-api-docs/utils/get-full-version';
import getLastVersion from 'ember-api-docs/utils/get-last-version';

import config from 'ember-api-docs/config/environment';

export default class ProjectVersionRoute extends Route {
Expand Down
4 changes: 2 additions & 2 deletions app/routes/project-version/classes/class.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,12 @@ import { inject as service } from '@ember/service';
import { resolve, all } from 'rsvp';
import Route from '@ember/routing/route';
import { set } from '@ember/object';
import ScrollTracker from 'ember-api-docs/mixins/scroll-tracker';

import { pluralize } from 'ember-inflector';
import getFullVersion from 'ember-api-docs/utils/get-full-version';
import createExcerpt from 'ember-api-docs/utils/create-excerpt';

export default class ClassRoute extends Route.extend(ScrollTracker) {
export default class ClassRoute extends Route {
/** @type {import('@ember/routing/router-service').default} */
@service
router;
Expand Down
5 changes: 0 additions & 5 deletions app/routes/project-version/classes/class/events.js

This file was deleted.

5 changes: 0 additions & 5 deletions app/routes/project-version/classes/class/index.js

This file was deleted.

5 changes: 0 additions & 5 deletions app/routes/project-version/classes/class/methods.js

This file was deleted.

5 changes: 0 additions & 5 deletions app/routes/project-version/classes/class/properties.js

This file was deleted.

Loading
Loading