@@ -68,6 +68,7 @@ | |||||
"redux-logger": "*", | "redux-logger": "*", | ||||
"reselect": "2.5.3", | "reselect": "2.5.3", | ||||
"sanitize-html": "^1.14.1", | "sanitize-html": "^1.14.1", | ||||
"scroll-to-element": "^2.0.0", | |||||
"serialize-error": "2.0.0", | "serialize-error": "2.0.0", | ||||
"shallowequal": "0.2.2", | "shallowequal": "0.2.2", | ||||
"swagger-client": "3.0.17", | "swagger-client": "3.0.17", | ||||
@@ -62,7 +62,10 @@ export default class Operations extends React.Component { | |||||
return ( | return ( | ||||
<div className={showTag ? "opblock-tag-section is-open" : "opblock-tag-section"} key={"operation-" + tag}> | <div className={showTag ? "opblock-tag-section is-open" : "opblock-tag-section"} key={"operation-" + tag}> | ||||
<h4 onClick={() => layoutActions.show(isShownKey, !showTag)} className={!tagDescription ? "opblock-tag no-desc" : "opblock-tag" }> | |||||
<h4 | |||||
onClick={() => layoutActions.show(isShownKey, !showTag)} | |||||
className={!tagDescription ? "opblock-tag no-desc" : "opblock-tag" } | |||||
id={isShownKey.join("-")}> | |||||
<span>{tag}</span> | <span>{tag}</span> | ||||
{ !tagDescription ? null : | { !tagDescription ? null : | ||||
<small> | <small> | ||||
@@ -0,0 +1,43 @@ | |||||
import scrollTo from "scroll-to-element" | |||||
const SCROLL_OFFSET = -5 | |||||
let hasHashBeenParsed = false | |||||
export const updateResolved = (ori, { layoutActions }) => (...args) => { | |||||
ori(...args) | |||||
if(window.location.hash && !hasHashBeenParsed ) { | |||||
let hash = window.location.hash.slice(1) // # is first character | |||||
if(hash[0] === "!") { | |||||
// Parse UI 2.x shebangs | |||||
hash = hash.slice(1) | |||||
} | |||||
if(hash[0] === "/") { | |||||
// "/pet/addPet" => "pet/addPet" | |||||
// makes the split result cleaner | |||||
// also handles forgotten leading slash | |||||
hash = hash.slice(1) | |||||
} | |||||
let [tag, operationId] = hash.split("/") | |||||
if(tag && operationId) { | |||||
// Pre-expand and scroll to the operation | |||||
scrollTo(`#operations-${tag}-${operationId}`, { | |||||
offset: SCROLL_OFFSET | |||||
}) | |||||
layoutActions.show(["operations", tag, operationId], true) | |||||
} else if(tag) { | |||||
// Pre-expand and scroll to the tag | |||||
scrollTo(`#operations-tag-${tag}`, { | |||||
offset: SCROLL_OFFSET | |||||
}) | |||||
layoutActions.show(["operations-tag", tag], true) | |||||
} | |||||
} | |||||
hasHashBeenParsed = true | |||||
} |