From ba88ae89cf1402f79c341d5378b617de8895e455 Mon Sep 17 00:00:00 2001 From: Xavier Cambar Date: Sun, 26 Aug 2018 22:22:52 +0200 Subject: [PATCH 1/4] un-nest API routes from docs routes. --- addon/components/api/x-section/template.hbs | 2 +- .../docs-header/search-result/component.js | 2 +- .../docs-header/search-results/component.js | 4 +-- .../docs-viewer/x-main/component.js | 2 +- .../components/docs-viewer/x-nav/component.js | 2 +- addon/router.js | 3 +-- addon/routes/api.js | 12 +++++++++ addon/routes/api/index.js | 13 ++++++++++ addon/routes/{docs => }/api/item.js | 0 app/templates/api.hbs | 25 +++++++++++++++++++ app/templates/{docs => }/api/item.hbs | 0 11 files changed, 57 insertions(+), 8 deletions(-) create mode 100644 addon/routes/api.js create mode 100644 addon/routes/api/index.js rename addon/routes/{docs => }/api/item.js (100%) create mode 100644 app/templates/api.hbs rename app/templates/{docs => }/api/item.hbs (100%) diff --git a/addon/components/api/x-section/template.hbs b/addon/components/api/x-section/template.hbs index 4c43943ec..228c6b773 100644 --- a/addon/components/api/x-section/template.hbs +++ b/addon/components/api/x-section/template.hbs @@ -12,7 +12,7 @@ {{/if}} {{#if (or item.isClass item.isComponent)}} - {{#link-to 'docs.api.item' (concat 'modules/' item.id) class='hover:underline'}} + {{#link-to 'api.item' (concat 'modules/' item.id) class='hover:underline'}} {{item.name}} {{/link-to}} {{else}} diff --git a/addon/components/docs-header/search-result/component.js b/addon/components/docs-header/search-result/component.js index 33f7a7d6f..734cbb06c 100644 --- a/addon/components/docs-header/search-result/component.js +++ b/addon/components/docs-header/search-result/component.js @@ -16,7 +16,7 @@ export default Component.extend({ args = [ this.get('result.document.route') ]; } else { - args = [ 'docs.api.item', this.get('result.model.routingId') ]; + args = [ 'api.item', this.get('result.model.routingId') ]; } return args; diff --git a/addon/components/docs-header/search-results/component.js b/addon/components/docs-header/search-results/component.js index feb86f69e..714ee811f 100644 --- a/addon/components/docs-header/search-results/component.js +++ b/addon/components/docs-header/search-results/component.js @@ -73,7 +73,7 @@ export default Component.extend(EKMixin, { // Filter out the templates of the API items' pages, since we handle them separately .filter(({ document }) => { - let isApiItemTemplate = (document.route === 'docs.api.item' && document.type === 'template'); + let isApiItemTemplate = (document.route === 'api.item' && document.type === 'template'); return !isApiItemTemplate; }) @@ -106,7 +106,7 @@ export default Component.extend(EKMixin, { if (selectedResult.document.type === 'template') { this.get('router').transitionTo(selectedResult.document.route); } else { - this.get('router').transitionTo('docs.api.item', selectedResult.model.get('routingId')); + this.get('router').transitionTo('api.item', selectedResult.model.get('routingId')); } } diff --git a/addon/components/docs-viewer/x-main/component.js b/addon/components/docs-viewer/x-main/component.js index f682039b3..06ac18d35 100644 --- a/addon/components/docs-viewer/x-main/component.js +++ b/addon/components/docs-viewer/x-main/component.js @@ -72,7 +72,7 @@ export default Component.extend({ path = path.replace(/\./g, '/'); if (path === 'docs/api/item') { - let { path } = getOwner(this).lookup('route:application').paramsFor('docs.api.item'); + let { path } = getOwner(this).lookup('route:application').paramsFor('api.item'); let file = addonFiles.find(f => f.match(path)); if (file) { diff --git a/addon/components/docs-viewer/x-nav/component.js b/addon/components/docs-viewer/x-nav/component.js index 92afe303f..da079eab3 100644 --- a/addon/components/docs-viewer/x-nav/component.js +++ b/addon/components/docs-viewer/x-nav/component.js @@ -12,7 +12,7 @@ export default Component.extend({ layout, tagName: '', - root: 'docs', + root: 'api', store: service(), diff --git a/addon/router.js b/addon/router.js index 082fe1ba0..48fa83f36 100644 --- a/addon/router.js +++ b/addon/router.js @@ -41,9 +41,8 @@ export default EmberRouter.extend(RouterScroll); export function docsRoute(router, callback) { router.route('docs', function() { callback.apply(this); - - apiRoute(this); }); + apiRoute(router); } export function apiRoute(router) { diff --git a/addon/routes/api.js b/addon/routes/api.js new file mode 100644 index 000000000..bfd89dc5d --- /dev/null +++ b/addon/routes/api.js @@ -0,0 +1,12 @@ +import Route from '@ember/routing/route'; +import config from 'dummy/config/environment'; + +const projectName = config['ember-cli-addon-docs'].projectName; + +export default Route.extend({ + + model() { + return this.store.findRecord('project', projectName); + } + +}); diff --git a/addon/routes/api/index.js b/addon/routes/api/index.js new file mode 100644 index 000000000..647269311 --- /dev/null +++ b/addon/routes/api/index.js @@ -0,0 +1,13 @@ +import Route from '@ember/routing/route'; + +export default Route.extend({ + + beforeModel() { + let parentModel = this.modelFor('api'); + let modules = parentModel.getWithDefault('navigationIndex.modules', []); + if (modules.length) { + return this.transitionTo('api.item', modules[0].path); + } + return this.transitionTo('docs'); + } +}); diff --git a/addon/routes/docs/api/item.js b/addon/routes/api/item.js similarity index 100% rename from addon/routes/docs/api/item.js rename to addon/routes/api/item.js diff --git a/app/templates/api.hbs b/app/templates/api.hbs new file mode 100644 index 000000000..b54363d8d --- /dev/null +++ b/app/templates/api.hbs @@ -0,0 +1,25 @@ +{{#docs-viewer as |viewer|}} + + {{#viewer.nav as |nav|}} + {{!-- Autogenerated API docs --}} + {{#if (gt model.modules.length 0)}} + {{docs-viewer/x-section 'API Reference' style='large'}} + + {{#each-in model.navigationIndex as |type items|}} + {{docs-viewer/x-section type}} + + {{#each items as |item|}} + {{docs-viewer/x-nav-item (break-on item.name '/') 'api.item' item.path}} + {{/each}} + {{/each-in}} + {{/if}} + {{/viewer.nav}} + + {{#viewer.main}} +
+ {{outlet}} +
+ {{/viewer.main}} + +{{/docs-viewer}} + diff --git a/app/templates/docs/api/item.hbs b/app/templates/api/item.hbs similarity index 100% rename from app/templates/docs/api/item.hbs rename to app/templates/api/item.hbs From b01cbc4bbc23af5871132131647f65c66263cc42 Mon Sep 17 00:00:00 2001 From: Xavier Cambar Date: Sun, 26 Aug 2018 22:24:23 +0200 Subject: [PATCH 2/4] Adds a tol-level link to the API reference --- addon/components/docs-header/template.hbs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/addon/components/docs-header/template.hbs b/addon/components/docs-header/template.hbs index 797f12c3c..4a136688b 100644 --- a/addon/components/docs-header/template.hbs +++ b/addon/components/docs-header/template.hbs @@ -16,6 +16,10 @@ Documentation {{/docs-header/link}} + {{#docs-header/link 'api'}} + API Reference + {{/docs-header/link}} + {{yield (hash link=(component 'docs-header/link') )}} From e5a928ad37a0aad3cbf04b4add373046becf0476 Mon Sep 17 00:00:00 2001 From: Xavier Cambar Date: Sun, 26 Aug 2018 22:25:02 +0200 Subject: [PATCH 3/4] Removes API references from docs navbar --- addon/components/docs-viewer/x-nav/template.hbs | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/addon/components/docs-viewer/x-nav/template.hbs b/addon/components/docs-viewer/x-nav/template.hbs index c61c6e006..4d72feb33 100644 --- a/addon/components/docs-viewer/x-nav/template.hbs +++ b/addon/components/docs-viewer/x-nav/template.hbs @@ -34,18 +34,6 @@ subnav=(component 'docs-viewer/x-nav-list' class='ml-4') )}} - {{!-- Autogenerated API docs --}} - {{#if (gt project.modules.length 0)}} - {{docs-viewer/x-section 'API Reference' style='large'}} - - {{#each-in project.navigationIndex as |type items|}} - {{docs-viewer/x-section type}} - - {{#each items as |item|}} - {{docs-viewer/x-nav-item (break-on item.name '/') (concat root '.api.item') item.path}} - {{/each}} - {{/each-in}} - {{/if}} {{/docs-viewer/x-nav-list}}
From 1dfdf38d3d334a0679c363c398d97476aa9ed1f0 Mon Sep 17 00:00:00 2001 From: Xavier Cambar Date: Sun, 26 Aug 2018 22:25:46 +0200 Subject: [PATCH 4/4] Hides API link when no module is documented --- addon/components/docs-header/component.js | 6 ++++++ addon/components/docs-header/template.hbs | 8 +++++--- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/addon/components/docs-header/component.js b/addon/components/docs-header/component.js index 1f018c029..7d9f25f25 100644 --- a/addon/components/docs-header/component.js +++ b/addon/components/docs-header/component.js @@ -35,6 +35,8 @@ export default Component.extend({ projectVersion: service(), + store: service(), + projectHref, latestVersionName, @@ -56,6 +58,10 @@ export default Component.extend({ currentVersion: reads('projectVersion.currentVersion'), + project: computed('store', function() { + return this.get('store').peekRecord('project', projectName); + }), + actions: { didVisitPage() { this.set('query', null); diff --git a/addon/components/docs-header/template.hbs b/addon/components/docs-header/template.hbs index 4a136688b..fb32e2c05 100644 --- a/addon/components/docs-header/template.hbs +++ b/addon/components/docs-header/template.hbs @@ -16,9 +16,11 @@ Documentation {{/docs-header/link}} - {{#docs-header/link 'api'}} - API Reference - {{/docs-header/link}} + {{#if (gt project.modules.length 0)}} + {{#docs-header/link 'api'}} + API Reference + {{/docs-header/link}} + {{/if}} {{yield (hash link=(component 'docs-header/link')