Rewire operation/tag DOM ids; implement hash scroll-to
This commit is contained in:
@@ -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
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user