2019-08-24 03:06:57 +00:00
< template >
2019-11-01 11:15:53 +00:00
< div class = "wrapper" >
< header class = "header" >
2019-11-12 04:18:57 +00:00
< div class = "flex-wrap" >
2019-09-02 04:48:01 +00:00
< div class = "slide-in" >
< nuxt-link to = "/" >
2019-11-01 11:15:53 +00:00
< h1 class = "logo" > Postwoman < / h1 >
2019-09-02 04:48:01 +00:00
< / nuxt-link >
< / div >
2019-11-12 04:18:57 +00:00
< div class = "flex-wrap" >
< a
href = "https://github.com/liyasthomas/postwoman"
target = "_blank"
rel = "noopener"
2019-11-12 05:14:52 +00:00
v - tooltip = "'GitHub'"
2019-11-12 04:18:57 +00:00
>
< button class = "icon" >
< img
id = "imgGitHub"
src = "~static/icons/github.svg"
alt = "GitHub"
: style = "logoStyle()"
/ >
< / button >
< / a >
2019-11-12 05:14:52 +00:00
< button
class = "icon"
id = "installPWA"
@ click . prevent = "showInstallPrompt()"
v - tooltip = "'Install PWA'"
>
< i class = "material-icons" > offline _bolt < / i >
< / button >
2019-11-12 04:18:57 +00:00
< v-popover >
2019-11-12 05:14:52 +00:00
< button class = "tooltip-target icon" v-tooltip = "'More'" >
2019-11-12 04:18:57 +00:00
< i class = "material-icons" > more _vert < / i >
< / button >
< template slot = "popover" >
< div >
< a
href = "https://opencollective.com/postwoman"
target = "_blank"
rel = "noopener"
>
< button class = "icon" >
< i class = "material-icons" > favorite < / i >
< span > Donate < / span >
< / button >
< / a >
< / div >
< div >
< button
class = "icon"
onClick = "window.open('https://twitter.com/share?text=👽 Postwoman • API request builder - Helps you create your requests faster, saving you precious time on your development&url=https://postwoman.io&hashtags=postwoman&via=liyasthomas');"
>
< svg
xmlns = "http://www.w3.org/2000/svg"
width = "24"
height = "24"
viewBox = "0 0 24 24"
>
< path
d = "M24 4.557c-.883.392-1.832.656-2.828.775 1.017-.609 1.798-1.574 2.165-2.724-.951.564-2.005.974-3.127 1.195-.897-.957-2.178-1.555-3.594-1.555-3.179 0-5.515 2.966-4.797 6.045-4.091-.205-7.719-2.165-10.148-5.144-1.29 2.213-.669 5.108 1.523 6.574-.806-.026-1.566-.247-2.229-.616-.054 2.281 1.581 4.415 3.949 4.89-.693.188-1.452.232-2.224.084.626 1.956 2.444 3.379 4.6 3.419-2.07 1.623-4.678 2.348-7.29 2.04 2.179 1.397 4.768 2.212 7.548 2.212 9.142 0 14.307-7.721 13.995-14.646.962-.695 1.797-1.562 2.457-2.549z"
/ >
< / svg >
< span > Tweet < / span >
< / button >
< / div >
< / template >
< / v-popover >
< / div >
2019-09-02 04:48:01 +00:00
< / div >
< / header >
2019-11-01 11:15:53 +00:00
< div class = "content" >
< div class = "columns" >
< aside class = "nav-first" >
< nav class = "primary-nav" >
<!--
We ' re using manual checks for linkActive because the query string
seems to mess up the nuxt - link active class .
-- >
2019-11-12 04:18:57 +00:00
< nuxt-link
to = "/"
: class = "linkActive('/')"
v - tooltip . right = "'Home'"
aria - label = "Home"
>
2019-11-01 11:15:53 +00:00
< logo alt style = "height: 24px;" > < / logo >
< / nuxt-link >
2019-11-02 05:32:21 +00:00
< nuxt-link
to = "/websocket"
: class = "linkActive('/websocket')"
v - tooltip . right = "'WebSocket'"
>
2019-11-01 11:15:53 +00:00
< i class = "material-icons" > cloud < / i >
< / nuxt-link >
< nuxt-link
to = "/settings"
: class = "linkActive('/settings')"
2019-11-01 11:43:55 +00:00
v - tooltip . right = "'Settings'"
2019-11-01 11:15:53 +00:00
aria - label = "Settings"
>
< i class = "material-icons" > settings < / i >
< / nuxt-link >
< / nav >
< div v-if = "['/'].includes($route.path)" >
< nav class = "secondary-nav" >
< ul >
< li >
2019-11-01 11:43:55 +00:00
< a href = "#request" v -tooltip .right = " ' Request ' " >
2019-11-01 11:15:53 +00:00
< i class = "material-icons" > cloud _upload < / i >
< / a >
< / li >
< li >
2019-11-01 11:43:55 +00:00
< a href = "#options" v -tooltip .right = " ' Options ' " >
2019-11-01 11:15:53 +00:00
< i class = "material-icons" > toc < / i >
< / a >
< / li >
< li >
2019-11-01 11:43:55 +00:00
< a href = "#response" v -tooltip .right = " ' Response ' " >
2019-11-01 11:15:53 +00:00
< i class = "material-icons" > cloud _download < / i >
< / a >
< / li >
< li >
2019-11-01 11:43:55 +00:00
< a href = "#collections" v -tooltip .right = " ' Collections ' " >
2019-11-01 11:15:53 +00:00
< i class = "material-icons" > folder _special < / i >
< / a >
< / li >
< li >
2019-11-01 11:43:55 +00:00
< a href = "#history" v -tooltip .right = " ' History ' " >
2019-11-01 11:15:53 +00:00
< i class = "material-icons" > watch _later < / i >
< / a >
< / li >
< / ul >
< / nav >
< / div >
< div v -else -if = " [ ' / websocket ' ] .includes ( $ route.path ) " >
< nav class = "secondary-nav" >
< ul >
< li >
2019-11-01 11:43:55 +00:00
< a href = "#request" v -tooltip .right = " ' Request ' " >
2019-11-01 11:15:53 +00:00
< i class = "material-icons" > cloud _upload < / i >
< / a >
< / li >
< li >
2019-11-01 11:43:55 +00:00
< a href = "#response" v -tooltip .right = " ' Response ' " >
2019-11-01 11:15:53 +00:00
< i class = "material-icons" > cloud _download < / i >
< / a >
< / li >
< / ul >
< / nav >
< / div >
< div v -else -if = " [ ' / settings ' ] .includes ( $ route.path ) " >
< nav class = "secondary-nav" >
< ul >
< li >
2019-11-01 11:43:55 +00:00
< a href = "#theme" v -tooltip .right = " ' Theme ' " >
2019-11-01 11:15:53 +00:00
< i class = "material-icons" > brush < / i >
< / a >
< / li >
< li >
2019-11-01 11:43:55 +00:00
< a href = "#proxy" v -tooltip .right = " ' Proxy ' " >
2019-11-01 11:15:53 +00:00
< i class = "material-icons" > public < / i >
< / a >
< / li >
< / ul >
< / nav >
< / div >
< / aside >
2019-11-01 14:12:40 +00:00
< nuxt id = "main" class = "main" / >
2019-11-01 11:15:53 +00:00
< aside class = "nav-second" > < / aside >
< / div >
< / div >
< footer class = "footer" >
2019-09-02 04:48:01 +00:00
<!-- Bottom section of footer : version / author information -- >
2019-11-09 15:40:00 +00:00
< p class = "align-center mono" >
2019-09-05 08:49:38 +00:00
< span v-if = "version.name" >
2019-10-25 08:14:34 +00:00
< a
2019-11-12 04:18:57 +00:00
v - bind : href = "
'https://github.com/liyasthomas/postwoman/releases/tag/' +
version . name
"
2019-10-25 08:14:34 +00:00
target = "_blank"
rel = "noopener"
2019-11-12 04:18:57 +00:00
> { { version . name } } < / a
>
2019-11-09 16:01:20 +00:00
<!-- < span v-if = "version.hash" >
2019-10-25 08:14:34 +00:00
-
< a
v - bind : href = "'https://github.com/liyasthomas/postwoman/commit/' + version.hash"
target = "_blank"
rel = "noopener"
> { { version . hash } } < / a >
2019-11-09 16:01:20 +00:00
< / span > -- >
<!-- < span v-if = "version.variant" > ( {{ version.variant }} ) < / span > - - >
2019-09-16 08:20:28 +00:00
& # x2022 ;
2019-11-09 16:01:20 +00:00
< / span >
2019-11-12 04:18:57 +00:00
< a href = "https://liyasthomas.web.app" target = "_blank" rel = "noopener"
> 🦄 < / a
>
& # x2022 ;
< a href = "https://postwoman.launchaco.com" target = "_blank" rel = "noopener"
> Subscribe < / a
>
2019-09-02 04:48:01 +00:00
< / p >
< / footer >
< / div >
2019-08-24 03:06:57 +00:00
< / template >
2019-10-25 08:14:34 +00:00
2019-11-12 04:18:57 +00:00
< style lang = "scss" > < / style >
2019-10-25 08:14:34 +00:00
2019-09-02 04:48:01 +00:00
< script >
2019-11-12 04:18:57 +00:00
import intializePwa from "../assets/js/pwa" ;
import logo from "../components/logo" ;
import * as version from "../.postwoman/version.json" ;
2019-09-02 04:48:01 +00:00
2019-11-12 04:18:57 +00:00
export default {
components : {
logo
} ,
2019-10-20 00:57:47 +00:00
2019-11-12 04:18:57 +00:00
methods : {
linkActive ( path ) {
2019-09-02 04:48:01 +00:00
return {
2019-11-12 04:18:57 +00:00
"nuxt-link-exact-active" : this . $route . path === path ,
"nuxt-link-active" : this . $route . path === path
2019-10-25 08:14:34 +00:00
} ;
2019-11-12 04:18:57 +00:00
}
} ,
2019-09-02 04:48:01 +00:00
2019-11-12 04:18:57 +00:00
data ( ) {
return {
// Once the PWA code is initialized, this holds a method
// that can be called to show the user the installation
// prompt.
showInstallPrompt : null ,
logoStyle ( ) {
return (
this . $store . state . postwoman . settings . THEME _CLASS || ""
) . includes ( "light" )
? " filter: invert(100%); -webkit-filter: invert(100%);"
: "" ;
} ,
2019-09-02 04:48:01 +00:00
2019-11-12 04:18:57 +00:00
version : { }
} ;
} ,
2019-09-02 04:48:01 +00:00
2019-11-12 04:18:57 +00:00
beforeMount ( ) {
// Set version data
this . version = version . default ;
2019-11-01 11:15:53 +00:00
2019-11-12 04:18:57 +00:00
// Load theme settings
( ( ) => {
// Apply theme from settings.
document . documentElement . className =
this . $store . state . postwoman . settings . THEME _CLASS || "" ;
// Load theme color data from settings, or use default color.
let color = this . $store . state . postwoman . settings . THEME _COLOR || "#50fa7b" ;
let vibrant = this . $store . state . postwoman . settings . THEME _COLOR _VIBRANT ;
if ( vibrant == null ) vibrant = true ;
document . documentElement . style . setProperty ( "--ac-color" , color ) ;
document . documentElement . style . setProperty (
"--act-color" ,
vibrant ? "rgb(37, 38, 40)" : "#ffffff"
) ;
} ) ( ) ;
} ,
2019-10-20 00:57:47 +00:00
2019-11-12 04:18:57 +00:00
mounted ( ) {
if ( process . client ) {
document . body . classList . add ( "afterLoad" ) ;
}
2019-11-01 11:15:53 +00:00
2019-11-12 04:18:57 +00:00
document
. querySelector ( "meta[name=theme-color]" )
. setAttribute (
"content" ,
this . $store . state . postwoman . settings . THEME _TAB _COLOR || "#252628"
) ;
2019-11-01 11:15:53 +00:00
2019-11-12 04:18:57 +00:00
// Initializes the PWA code - checks if the app is installed,
// etc.
( async ( ) => {
this . showInstallPrompt = await intializePwa ( ) ;
let cookiesAllowed = localStorage . getItem ( "cookiesAllowed" ) === "yes" ;
if ( ! cookiesAllowed ) {
this . $toast . show ( "We use cookies" , {
icon : "info" ,
duration : 5000 ,
theme : "toasted-primary" ,
action : [
{
text : "Dismiss" ,
onClick : ( e , toastObject ) => {
localStorage . setItem ( "cookiesAllowed" , "yes" ) ;
toastObject . goAway ( 0 ) ;
}
}
]
2019-11-01 11:15:53 +00:00
} ) ;
2019-11-12 04:18:57 +00:00
}
} ) ( ) ;
window . addEventListener ( "scroll" , event => {
let mainNavLinks = document . querySelectorAll ( "nav ul li a" ) ;
let fromTop = window . scrollY ;
mainNavLinks . forEach ( link => {
let section = document . querySelector ( link . hash ) ;
if (
section &&
section . offsetTop <= fromTop &&
section . offsetTop + section . offsetHeight > fromTop
) {
link . classList . add ( "current" ) ;
} else {
link . classList . remove ( "current" ) ;
}
2019-11-01 11:15:53 +00:00
} ) ;
2019-11-12 04:18:57 +00:00
} ) ;
} ,
2019-10-20 00:57:47 +00:00
2019-11-12 04:18:57 +00:00
watch : {
$route ( ) {
this . $toast . clear ( ) ;
2019-08-24 03:06:57 +00:00
}
2019-11-12 04:18:57 +00:00
}
} ;
2019-08-24 03:06:57 +00:00
< / script >