From 86f25061dee5721fe9f6acb8ce17a7b7258e9a6a Mon Sep 17 00:00:00 2001 From: Fawad Mirzad Date: Mon, 13 Sep 2021 15:30:46 +0200 Subject: [PATCH] Add docs folder --- .npmignore | 1 + docs/.npmignore | 12 ++ docs/src/.vuepress/components/Foo/Bar.vue | 15 ++ .../.vuepress/components/OtherComponent.vue | 3 + .../.vuepress/components/demo-component.vue | 15 ++ docs/src/.vuepress/config.js | 99 +++++++++++++ docs/src/.vuepress/enhanceApp.js | 14 ++ docs/src/.vuepress/public/assets/logo.jpg | Bin 0 -> 25583 bytes docs/src/.vuepress/styles/index.styl | 8 + docs/src/.vuepress/styles/palette.styl | 10 ++ docs/src/components/README.md | 24 +++ docs/src/components/autocomplete.md | 61 ++++++++ docs/src/components/circle.md | 87 +++++++++++ docs/src/components/cluster.md | 70 +++++++++ docs/src/components/info-window.md | 127 ++++++++++++++++ docs/src/components/map.md | 137 ++++++++++++++++++ docs/src/components/marker.md | 113 +++++++++++++++ docs/src/components/polygon.md | 63 ++++++++ docs/src/components/polyline.md | 73 ++++++++++ docs/src/components/rectangle.md | 81 +++++++++++ docs/src/components/using-vue.md | 9 ++ docs/src/config/README.md | 15 ++ docs/src/docs/README.md | 83 +++++++++++ docs/src/examples/README.md | 10 ++ docs/src/examples/introduction.md | 10 ++ docs/src/examples/points-in-polygon.md | 77 ++++++++++ docs/src/index.md | 84 +++++++++++ package.json | 2 +- 28 files changed, 1302 insertions(+), 1 deletion(-) create mode 100644 docs/.npmignore create mode 100644 docs/src/.vuepress/components/Foo/Bar.vue create mode 100644 docs/src/.vuepress/components/OtherComponent.vue create mode 100644 docs/src/.vuepress/components/demo-component.vue create mode 100644 docs/src/.vuepress/config.js create mode 100644 docs/src/.vuepress/enhanceApp.js create mode 100644 docs/src/.vuepress/public/assets/logo.jpg create mode 100644 docs/src/.vuepress/styles/index.styl create mode 100644 docs/src/.vuepress/styles/palette.styl create mode 100644 docs/src/components/README.md create mode 100644 docs/src/components/autocomplete.md create mode 100644 docs/src/components/circle.md create mode 100644 docs/src/components/cluster.md create mode 100644 docs/src/components/info-window.md create mode 100644 docs/src/components/map.md create mode 100644 docs/src/components/marker.md create mode 100644 docs/src/components/polygon.md create mode 100644 docs/src/components/polyline.md create mode 100644 docs/src/components/rectangle.md create mode 100644 docs/src/components/using-vue.md create mode 100644 docs/src/config/README.md create mode 100644 docs/src/docs/README.md create mode 100644 docs/src/examples/README.md create mode 100644 docs/src/examples/introduction.md create mode 100644 docs/src/examples/points-in-polygon.md create mode 100644 docs/src/index.md diff --git a/.npmignore b/.npmignore index 3f7adfb..76d87a0 100644 --- a/.npmignore +++ b/.npmignore @@ -10,3 +10,4 @@ babel.config.js build-copy.js CONTRIBUTING.md jsconfig.json +docs diff --git a/docs/.npmignore b/docs/.npmignore new file mode 100644 index 0000000..595e215 --- /dev/null +++ b/docs/.npmignore @@ -0,0 +1,12 @@ +pids +logs +node_modules +npm-debug.log +coverage/ +run +dist +.DS_Store +.nyc_output +.basement +config.local.js +basement_dist diff --git a/docs/src/.vuepress/components/Foo/Bar.vue b/docs/src/.vuepress/components/Foo/Bar.vue new file mode 100644 index 0000000..7ee8286 --- /dev/null +++ b/docs/src/.vuepress/components/Foo/Bar.vue @@ -0,0 +1,15 @@ + + + diff --git a/docs/src/.vuepress/components/OtherComponent.vue b/docs/src/.vuepress/components/OtherComponent.vue new file mode 100644 index 0000000..1d97c7c --- /dev/null +++ b/docs/src/.vuepress/components/OtherComponent.vue @@ -0,0 +1,3 @@ + diff --git a/docs/src/.vuepress/components/demo-component.vue b/docs/src/.vuepress/components/demo-component.vue new file mode 100644 index 0000000..7d49de7 --- /dev/null +++ b/docs/src/.vuepress/components/demo-component.vue @@ -0,0 +1,15 @@ + + + diff --git a/docs/src/.vuepress/config.js b/docs/src/.vuepress/config.js new file mode 100644 index 0000000..7ccdb7b --- /dev/null +++ b/docs/src/.vuepress/config.js @@ -0,0 +1,99 @@ +const { description } = require('../../package') + +module.exports = { + /** + * Ref:https://v1.vuepress.vuejs.org/config/#title + */ + title: 'Vue 3 Google maps', + /** + * Ref:https://v1.vuepress.vuejs.org/config/#description + */ + description: description, + + /** + * Extra tags to be injected to the page HTML `` + * + * ref:https://v1.vuepress.vuejs.org/config/#head + */ + head: [ + ['meta', { name: 'theme-color', content: '#3eaf7c' }], + ['meta', { name: 'apple-mobile-web-app-capable', content: 'yes' }], + ['meta', { name: 'apple-mobile-web-app-status-bar-style', content: 'black' }] + ], + + /** + * Theme configuration, here is the default theme configuration for VuePress. + * + * ref:https://v1.vuepress.vuejs.org/theme/default-theme-config.html + */ + themeConfig: { + repo: '', + editLinks: true, + docsDir: '', + editLinkText: '', + logo: '/assets/logo.jpg', + head: [ + ['meta', { name: 'theme-color', content: '#000' }], + ], + lastUpdated: false, + nav: [ + { + text: 'Docs', + link: '/docs/', + }, + { + text: 'Github', + link: 'https://github.com/fawmi/vue-google-maps' + }, + { + text: 'NPM', + link: 'https://www.npmjs.com/package/@fawmi/vue-google-maps' + } + ], + sidebar: [ + { + title: 'Getting started', + path: '/docs/', + collapsable: false, + sidebarDepth: 0, + }, + { + title: 'Components', + collapsable: false, + path: '/components/', + collapsable: false, + sidebarDepth: 0, + children: [ + '/components/map', + '/components/marker', + '/components/info-window', + '/components/cluster', + '/components/circle', + '/components/polygon', + '/components/polyline', + '/components/rectangle', + '/components/autocomplete', + ] + }, + { + title: 'Examples', + collapsable: false, + collapsable: false, + sidebarDepth: 0, + path: '/examples/', + children: [ + '/examples/points-in-polygon', + ] + }, + + ] + }, + + /** + * Apply plugins,ref:https://v1.vuepress.vuejs.org/zh/plugin/ + */ + plugins: [ + '@vuepress/plugin-back-to-top', + '@vuepress/plugin-medium-zoom', + ] +} diff --git a/docs/src/.vuepress/enhanceApp.js b/docs/src/.vuepress/enhanceApp.js new file mode 100644 index 0000000..8452a86 --- /dev/null +++ b/docs/src/.vuepress/enhanceApp.js @@ -0,0 +1,14 @@ +/** + * Client app enhancement file. + * + * https://v1.vuepress.vuejs.org/guide/basic-config.html#app-level-enhancements + */ + +export default ({ + Vue, // the version of Vue being used in the VuePress app + options, // the options for the root Vue instance + router, // the router instance for the app + siteData // site metadata +}) => { + // ...apply enhancements for the site. +} diff --git a/docs/src/.vuepress/public/assets/logo.jpg b/docs/src/.vuepress/public/assets/logo.jpg new file mode 100644 index 0000000000000000000000000000000000000000..95138528bf89a3f13ccbb9e0de6fd88e7103639d GIT binary patch literal 25583 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 +``` + + +## Add autocomplete to your components +You can add autocomplete to your maps using GMapAutocomplete component. +```vue + + + +``` + +## Custom options +You can pass google maps auto complete options using options prop + +```vue{9} + +``` diff --git a/docs/src/components/circle.md b/docs/src/components/circle.md new file mode 100644 index 0000000..2e3fb5c --- /dev/null +++ b/docs/src/components/circle.md @@ -0,0 +1,87 @@ +# Circle +[[toc]] +## Add circle to your maps +To add circles, just add the `GMapCircle` component inside `GMapMap` component. + +```vue + + + +``` + +## Add custom circle style + +Circle style and all other circle options can be added using `options` prop. + + +```vue + + + + +``` \ No newline at end of file diff --git a/docs/src/components/cluster.md b/docs/src/components/cluster.md new file mode 100644 index 0000000..1ae37ec --- /dev/null +++ b/docs/src/components/cluster.md @@ -0,0 +1,70 @@ +# Cluster +[[toc]] +## Cluster your markers +To cluster objects you simply wrap your markers with the cluster component. + + +```vue + + +``` + +## Props +The following props can be passed to control behavior of clusters. + +### minimumClusterSize + +Defines the minimum distance of markers to cluster them + +``` js +:minimumClusterSize="2" +``` + +### styles +With styles prop, you can control style and icon of clusters. + +``` js +:styles="clusterIcon" +``` + +### zoomOnClick +Defines whether clusters should zoom in, when clicked. + +``` js +:zoomOnClick="true" +``` diff --git a/docs/src/components/info-window.md b/docs/src/components/info-window.md new file mode 100644 index 0000000..8bebd7c --- /dev/null +++ b/docs/src/components/info-window.md @@ -0,0 +1,127 @@ +# Info Window +[[toc]] +## Add info window to your components +You can create info window by passing custom HTML or Vue components as the child of `Marker` component. +```vue + + + +
I am in info window +
+
+
+
+``` + +## Open/close info window +You can pass `opened` prop to open and close InfoWindows. + +```vue{7} + + + +
I am in info window +
+
+
+
+``` + + +### Open/close info window on marker click +You can open open and close info windows after marker click, by modifying the `:opened` prop and maintaining a state variable containing ID of the opened marker. + + +Check out [this interactive example on stackblitz](https://stackblitz.com/edit/vue-google-maps-marker-w4hxvd?file=src/components/ComponentWithMap.vue). + +Example: +```vue + + + + + +``` + + +## Options +You can pass any Google map InfoWindow component using `options` prop + + +```vue{8-14} + + + +
I am in info window +
+
+
+
+``` diff --git a/docs/src/components/map.md b/docs/src/components/map.md new file mode 100644 index 0000000..535ff2b --- /dev/null +++ b/docs/src/components/map.md @@ -0,0 +1,137 @@ +# Map +[[toc]] +## Install + +This is the base Map component. If no props are provided, it shows an empty map component with default controls. + +```vue + +``` +Example on [stackblitz](https://stackblitz.com/edit/vue-google-maps-basic-example) + +## Provide your own style +You can provide custom map styling by providing `style` property to the `options` prop. + +You can generate custom map styles at [https://mapstyle.withgoogle.com/](https://mapstyle.withgoogle.com/) +```vue{4} + +``` + +Example on [stackblitz](https://stackblitz.com/edit/vue-google-maps-marker-ssnfbn?file=src/components/ComponentWithMap.vue) + + +## Disable ui elements +You can disable all ui components at once +```vue{4} + +``` +You can also disable specific UI components + +```vue{4-11} + +``` + + +## Access google maps instance +You can easily access Map instance by accessing map ref in your component. + +```vue + +``` + +## Add custom button +You can use the map instance to add custom buttons to your map. + +```vue + + +``` diff --git a/docs/src/components/marker.md b/docs/src/components/marker.md new file mode 100644 index 0000000..045af93 --- /dev/null +++ b/docs/src/components/marker.md @@ -0,0 +1,113 @@ +# Marker +[[toc]] + +## Add marker to your components +With a marker, you can show specific locations on the map +```vue + + + +``` + +## Enable/Disable events +You can enable or disable map events by passing props. + +```vue{9,10} + +``` + +## Register events +You can register events like click, the same as you do in your vue components + +```vue{9} + +``` + +## Add custom icon +To use custom icon, pass `:icon` prop. You can pass a local resource or an image from internet. +```vue{9} + +``` + + +You can also pass an object to the icon `prop` to define custom size and label origin: + +```vue{9-13} + +``` diff --git a/docs/src/components/polygon.md b/docs/src/components/polygon.md new file mode 100644 index 0000000..8c622d8 --- /dev/null +++ b/docs/src/components/polygon.md @@ -0,0 +1,63 @@ +# Polygon +[[toc]] + +## Add polygon to the map + +You can add polygons to the map using polygon component. + +```vue + + +``` + + +## Set polygon options +You can set polygon style and other options using `options` prop. + +```vue + + +``` \ No newline at end of file diff --git a/docs/src/components/polyline.md b/docs/src/components/polyline.md new file mode 100644 index 0000000..8add8b6 --- /dev/null +++ b/docs/src/components/polyline.md @@ -0,0 +1,73 @@ +# Polyline +[[toc]] + +## Add Polyline to the map + +You can add Polyline to the map using `GMapPolyline` component. + +```vue + + +``` + +## Make polyline editable +You can make Polyline editable using `editable` prop. + +```vue + + +``` + +## Polyline options +You can set Polyline options using `options` prop. + +```vue + + +``` diff --git a/docs/src/components/rectangle.md b/docs/src/components/rectangle.md new file mode 100644 index 0000000..4d83b3c --- /dev/null +++ b/docs/src/components/rectangle.md @@ -0,0 +1,81 @@ +# Rectangle +[[toc]] + +## Add Rectangle to your map + +You can add rectangles to your map using `GMapRectangle` component + + +```vue + + + +``` + +## Add custom Rectangle options + +Like almost all components, you can pass all available Google maps rectangle options as prop. + +```vue + + + +``` diff --git a/docs/src/components/using-vue.md b/docs/src/components/using-vue.md new file mode 100644 index 0000000..71ac45b --- /dev/null +++ b/docs/src/components/using-vue.md @@ -0,0 +1,9 @@ +# Using Vue in Markdown + +## Browser API Access Restrictions + +Because VuePress applications are server-rendered in Node.js when generating static builds, any Vue usage must conform to the [universal code requirements](https://ssr.vuejs.org/en/universal.html). In short, make sure to only access Browser / DOM APIs in `beforeMount` or `mounted` hooks. + +If you are using or demoing components that are not SSR friendly (for example containing custom directives), you can wrap them inside the built-in `` component: + +## diff --git a/docs/src/config/README.md b/docs/src/config/README.md new file mode 100644 index 0000000..63a04b9 --- /dev/null +++ b/docs/src/config/README.md @@ -0,0 +1,15 @@ +--- +sidebar: auto +--- + +# Config + +## foo + +- Type: `string` +- Default: `/` + +## bar + +- Type: `string` +- Default: `/` diff --git a/docs/src/docs/README.md b/docs/src/docs/README.md new file mode 100644 index 0000000..18b08df --- /dev/null +++ b/docs/src/docs/README.md @@ -0,0 +1,83 @@ +# Introduction +`@fawmi/vue-google-maps` provides a set of Vue.js 3 components wrapping the Google Maps API v3. + +The following components are currently supported: + +`Map`, `Marker`, `Cluster`, `InfoWindow`, `Circle`, `Polygon`, `Polyline`, `Rectangle`, `Autocomplete` + +## Install + +To install it via NPM +```bash +npm install -S @fawmi/vue-google-maps +``` + +## Basic usage +You need an API Key. Learn how to [get an Api key ](https://developers.google.com/maps/documentation/javascript/get-api-key). + +Initialise the plugin in your `main.js`: +```js +import { createApp } from 'vue' +import VueGoogleMaps from '@fawmi/vue-google-maps' + +const app = createApp(App); +app.use(VueGoogleMaps, { + load: { + key: 'YOUR_API_KEY_COMES_HERE', + }, +}).mount('#app') +``` + +Use it anywhere in your components + +```vue + + + +``` + + +## Register google maps events + +In order to use Google maps events, they should either be enabled globally + +``` +app.use(VueGoogleMaps, { + load: { + key: 'YOUR_API_KEY_COMES_HERE', + }, + autobindAllEvents: true, +}).mount('#app') +``` + +Or better yet, they should be activated when needed. + + +In this example, we enable `closeclick` event for `GMapInfoWindow` component and register the event. + +``` + +
I am in info window {{ m.id }}
+
+``` diff --git a/docs/src/examples/README.md b/docs/src/examples/README.md new file mode 100644 index 0000000..12c1972 --- /dev/null +++ b/docs/src/examples/README.md @@ -0,0 +1,10 @@ +# List + +`@fawmi/vue-google-maps` provides a set of Vue.js 3 components wrapping the Google Maps API v3. + +Currently `Map`, `Marker`, `InfoWindow`, `Polyline`, `Polygon` and `Rectangle` are supported. + +Other components are still under development. + + +Checkout getting started to read, how to install and use vue-google-maps diff --git a/docs/src/examples/introduction.md b/docs/src/examples/introduction.md new file mode 100644 index 0000000..201b960 --- /dev/null +++ b/docs/src/examples/introduction.md @@ -0,0 +1,10 @@ +# Advanced + +`@fawmi/vue-google-maps` provides a set of Vue.js 3 components wrapping the Google Maps API v3. + +Currently `Map`, `Marker`, `InfoWindow`, `Polyline`, `Polygon` and `Rectangle` are supported. + +Other components are still under development. + + +Checkout getting started to read, how to install and use vue-google-maps diff --git a/docs/src/examples/points-in-polygon.md b/docs/src/examples/points-in-polygon.md new file mode 100644 index 0000000..3525db7 --- /dev/null +++ b/docs/src/examples/points-in-polygon.md @@ -0,0 +1,77 @@ +# How to get if a clicked area is within polygon in Google Maps. + + + +[Interactive example on Condesandbox](https://stackblitz.com/edit/vue-google-maps-marker-fnzw4j?file=src%2Fcomponents%2FComponentWithMap.vue) + + + +## Example + +```bash + +// Source of JS implementation: https://github.com/mattwilliamson/Google-Maps-Point-in-Polygon/blob/master/maps.google.polygon.containsLatLng.js + + + + +``` diff --git a/docs/src/index.md b/docs/src/index.md new file mode 100644 index 0000000..2e7d04b --- /dev/null +++ b/docs/src/index.md @@ -0,0 +1,84 @@ +--- +home: true +heroImage: 'assets/logo.jpg' +tagline: Reactive Vue 3 components for Google maps. +actionText: Read Docs → +actionLink: /docs/ +--- + + + +## Installation +You can install it using npm +``` +npm install -S @fawmi/vue-google-maps +``` + +## Basic usage +You need an API Key. Learn how to [get an Api key ](https://developers.google.com/maps/documentation/javascript/get-api-key). + +### Configure Vue to use the Components + +In your `main.js` or inside a Nuxt plugin: + +```js +import { createApp } from 'vue' +import VueGoogleMaps from '@fawmi/vue-google-maps' + +const app = createApp(App); +app.use(VueGoogleMaps, { + load: { + key: 'YOUR_API_KEY_COMES_HERE', + }, +}).mount('#app') + +``` +### Use it anywhere in your components +```vue + + +``` diff --git a/package.json b/package.json index 4f47b2f..3ccaa2d 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "@fawmi/vue-google-maps", "description": "Google Map components for Vue.js 3", - "version": "0.9.2", + "version": "0.9.3", "private": false, "main": "src/main.js", "keywords": [