Parcourir la source

Rewire operation/tag DOM ids; implement hash scroll-to

bubble
Kyle Shockey il y a 7 ans
Parent
révision
41ecceed87
Aucune clé connue n'a été trouvée dans la base pour cette signature ID de la clé GPG: DC20D559FFBC0D36
3 fichiers modifiés avec 48 ajouts et 1 suppressions
  1. +1
    -0
      package.json
  2. +4
    -1
      src/core/components/operations.jsx
  3. +43
    -0
      src/core/plugins/deep-linking/spec-wrap-actions.js

+ 1
- 0
package.json Voir le fichier

@@ -68,6 +68,7 @@
"redux-logger": "*",
"reselect": "2.5.3",
"sanitize-html": "^1.14.1",
"scroll-to-element": "^2.0.0",
"serialize-error": "2.0.0",
"shallowequal": "0.2.2",
"swagger-client": "3.0.17",


+ 4
- 1
src/core/components/operations.jsx Voir le fichier

@@ -62,7 +62,10 @@ export default class Operations extends React.Component {
return (
<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>
{ !tagDescription ? null :
<small>


+ 43
- 0
src/core/plugins/deep-linking/spec-wrap-actions.js Voir le fichier

@@ -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
}

Chargement…
Annuler
Enregistrer