Merge pull request #507 from metosin/feature/improve-frontend-docs

Improve parameter names and docstrings on reitit frontend functions
This commit is contained in:
Juho Teperi 2021-11-03 12:53:54 +02:00 committed by GitHub
commit 22461f638e
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 119 additions and 49 deletions

View file

@ -10,7 +10,8 @@
;; Differences: ;; Differences:
;; This one automatically removes previous event listeners. ;; This one automatically removes previous event listeners.
(defn start! (defn ^{:see-also ["reitit.frontend.history/start!"]}
start!
"This registers event listeners on HTML5 history and hashchange events. "This registers event listeners on HTML5 history and hashchange events.
Automatically removes previous event listeners so it is safe to call this repeatedly, for example when using Automatically removes previous event listeners so it is safe to call this repeatedly, for example when using
@ -39,28 +40,64 @@
(on-navigate m this)) (on-navigate m this))
opts)) opts))
(defn href (defn
([k] ^{:see-also ["reitit.frontend.history/href"]}
(rfh/href @history k nil nil)) href
([k params] "Generate a URL for a route defined by name, with given path-params and query-params.
(rfh/href @history k params nil))
([k params query]
(rfh/href @history k params query)))
(defn push-state The URL is formatted using Reitit frontend history handler, so using it with
"Sets the new route, leaving previous route in history." anchor element href will correctly trigger route change event.
([k]
(rfh/push-state @history k nil nil))
([k params]
(rfh/push-state @history k params nil))
([k params query]
(rfh/push-state @history k params query)))
(defn replace-state Note: currently collections in query-parameters are encoded as field-value
"Replaces current route. I.e. current route is not left on history." pairs separated by &, i.e. \"?a=1&a=2\", if you want to encode them
([k] differently, convert the collections to strings first."
(rfh/replace-state @history k nil nil)) ([name]
([k params] (rfh/href @history name nil nil))
(rfh/replace-state @history k params nil)) ([name path-params]
([k params query] (rfh/href @history name path-params nil))
(rfh/replace-state @history k params query))) ([name path-params query-params]
(rfh/href @history name path-params query-params)))
(defn
^{:see-also ["reitit.frontend.history/push-state"]}
push-state
"Updates the browser location and pushes new entry to the history stack using
URL built from a route defined by name, with given path-params and
query-params.
Will also trigger on-navigate callback on Reitit frontend History handler.
Note: currently collections in query parameters are encoded as field-value
pairs separated by &, i.e. \"?a=1&a=2\", if you want to encode them
differently, convert the collections to strings first.
See also:
https://developer.mozilla.org/en-US/docs/Web/API/History/pushState"
([name]
(rfh/push-state @history name nil nil))
([name path-params]
(rfh/push-state @history name path-params nil))
([name path-params query-params]
(rfh/push-state @history name path-params query-params)))
(defn
^{:see-also ["reitit.frontend.history/replace-state"]}
replace-state
"Updates the browser location and replaces latest entry in the history stack
using URL built from a route defined by name, with given path-params and
query-params.
Will also trigger on-navigate callback on Reitit frontend History handler.
Note: currently collections in query-parameters are encoded as field-value
pairs separated by &, i.e. \"?a=1&a=2\", if you want to encode them
differently, convert the collections to strings first.
See also:
https://developer.mozilla.org/en-US/docs/Web/API/History/replaceState"
([name]
(rfh/replace-state @history name nil nil))
([name path-params]
(rfh/replace-state @history name path-params nil))
([name path-params query-params]
(rfh/replace-state @history name path-params query-params)))

View file

@ -171,40 +171,73 @@
(map->FragmentHistory opts) (map->FragmentHistory opts)
(map->Html5History opts)))))) (map->Html5History opts))))))
(defn stop! [history] (defn stop!
"Stops the given history handler, removing the event handlers."
[history]
(if history (if history
(-stop history))) (-stop history)))
(defn href (defn href
([history k] "Generate a URL for a route defined by name, with given path-params and query-params.
(href history k nil))
([history k params]
(href history k params nil))
([history k params query]
(let [match (rf/match-by-name! (:router history) k params)]
(-href history (reitit/match->path match query)))))
(defn push-state The URL is formatted using Reitit frontend history handler, so using it with
"Sets the new route, leaving previous route in history." anchor element href will correctly trigger route change event.
([history k]
(push-state history k nil nil)) Note: currently collections in query parameters are encoded as field-value
([history k params] pairs separated by &, i.e. \"?a=1&a=2\", if you want to encode them
(push-state history k params nil)) differently, convert the collections to strings first."
([history k params query] ([history name]
(let [match (rf/match-by-name! (:router history) k params) (href history name nil))
path (reitit/match->path match query)] ([history name path-params]
(href history name path-params nil))
([history name path-params query-params]
(let [match (rf/match-by-name! (:router history) name path-params)]
(-href history (reitit/match->path match query-params)))))
(defn
^{:see-also ["reitit.core/match->path"]}
push-state
"Updates the browser URL and pushes new entry to the history stack using
a route defined by name, with given path-params and query-params.
Will also trigger on-navigate callback on Reitit frontend History handler.
Note: currently collections in query-parameters are encoded as field-value
pairs separated by &, i.e. \"?a=1&a=2\", if you want to encode them
differently, convert the collections to strings first.
See also:
https://developer.mozilla.org/en-US/docs/Web/API/History/pushState"
([history name]
(push-state history name nil nil))
([history name path-params]
(push-state history name path-params nil))
([history name path-params query-params]
(let [match (rf/match-by-name! (:router history) name path-params)
path (reitit/match->path match query-params)]
;; pushState and replaceState don't trigger popstate event so call on-navigate manually ;; pushState and replaceState don't trigger popstate event so call on-navigate manually
(.pushState js/window.history nil "" (-href history path)) (.pushState js/window.history nil "" (-href history path))
(-on-navigate history path)))) (-on-navigate history path))))
(defn replace-state (defn replace-state
"Replaces current route. I.e. current route is not left on history." "Updates the browser location and replaces latest entry in the history stack
([history k] using URL built from a route defined by name, with given path-params and
(replace-state history k nil nil)) query-params.
([history k params]
(replace-state history k params nil)) Will also trigger on-navigate callback on Reitit frontend History handler.
([history k params query]
(let [match (rf/match-by-name! (:router history) k params) Note: currently collections in query-parameters are encoded as field-value
path (reitit/match->path match query)] pairs separated by &, i.e. \"?a=1&a=2\", if you want to encode them
differently, convert the collections to strings first.
See also:
https://developer.mozilla.org/en-US/docs/Web/API/History/replaceState"
([history name]
(replace-state history name nil nil))
([history name path-params]
(replace-state history name path-params nil))
([history name path-params query-params]
(let [match (rf/match-by-name! (:router history) name path-params)
path (reitit/match->path match query-params)]
(.replaceState js/window.history nil "" (-href history path)) (.replaceState js/window.history nil "" (-href history path))
(-on-navigate history path)))) (-on-navigate history path))))