From b54a15b9349f7deeafdeae2f1738e1710ae2f599 Mon Sep 17 00:00:00 2001 From: Matthew Irish Date: Wed, 4 Dec 2019 21:14:35 -0600 Subject: [PATCH] add ember support for docs-mode --- addons/docs/src/frameworks/ember/config.js | 10 ++++++++ addons/docs/src/frameworks/ember/jsondoc.js | 27 +++++++++++++++++++++ app/ember/src/client/index.js | 2 ++ app/ember/src/client/jsondoc.js | 6 +++++ 4 files changed, 45 insertions(+) create mode 100644 addons/docs/src/frameworks/ember/config.js create mode 100644 addons/docs/src/frameworks/ember/jsondoc.js create mode 100644 app/ember/src/client/jsondoc.js diff --git a/addons/docs/src/frameworks/ember/config.js b/addons/docs/src/frameworks/ember/config.js new file mode 100644 index 00000000000..921905db071 --- /dev/null +++ b/addons/docs/src/frameworks/ember/config.js @@ -0,0 +1,10 @@ +/* eslint-disable import/no-extraneous-dependencies */ +import { addParameters } from '@storybook/client-api'; +import { extractProps, extractComponentDescription } from './jsondoc'; + +addParameters({ + docs: { + extractProps, + extractComponentDescription, + }, +}); diff --git a/addons/docs/src/frameworks/ember/jsondoc.js b/addons/docs/src/frameworks/ember/jsondoc.js new file mode 100644 index 00000000000..217386d4158 --- /dev/null +++ b/addons/docs/src/frameworks/ember/jsondoc.js @@ -0,0 +1,27 @@ +/* eslint-disable no-underscore-dangle */ +/* global window */ + +function getJSONDoc() { + return window.__EMBER_GENERATED_DOC_JSON__; +} + +export const extractProps = componentName => { + const json = getJSONDoc(); + const componentDoc = json.included.find(doc => doc.attributes.name === componentName); + const rows = componentDoc.attributes.arguments.map(prop => { + return { + name: prop.name, + type: prop.type, + required: prop.tags.length ? prop.tags.some(tag => tag.name === 'required') : false, + defaultValue: prop.defaultValue, + description: prop.description, + }; + }); + return { rows }; +}; + +export const extractComponentDescription = componentName => { + const json = getJSONDoc(); + const componentDoc = json.included.find(doc => doc.attributes.name === componentName); + return componentDoc.attributes.description; +}; diff --git a/app/ember/src/client/index.js b/app/ember/src/client/index.js index 8034a9d6433..532a29b268f 100644 --- a/app/ember/src/client/index.js +++ b/app/ember/src/client/index.js @@ -9,6 +9,8 @@ export { raw, } from './preview'; +export { setJSONDoc } from './jsondoc'; + if (module && module.hot && module.hot.decline) { module.hot.decline(); } diff --git a/app/ember/src/client/jsondoc.js b/app/ember/src/client/jsondoc.js new file mode 100644 index 00000000000..5bb061b1c77 --- /dev/null +++ b/app/ember/src/client/jsondoc.js @@ -0,0 +1,6 @@ +/* eslint-disable no-underscore-dangle */ +/* global window */ + +export function setJSONDoc(jsondoc) { + window.__EMBER_GENERATED_DOC_JSON__ = jsondoc; +}