From 6398d71001d839d7113e763d299d6b62bb933d5c Mon Sep 17 00:00:00 2001 From: William French Date: Tue, 21 Apr 2026 08:25:43 -0700 Subject: [PATCH] feat: Migrates the web-components-events sample to js-api-samples. --- samples/web-components-events/README.md | 41 +++++++++++++++++++++ samples/web-components-events/index.html | 39 ++++++++++++++++++++ samples/web-components-events/index.ts | 35 ++++++++++++++++++ samples/web-components-events/package.json | 14 +++++++ samples/web-components-events/style.css | 18 +++++++++ samples/web-components-events/tsconfig.json | 9 +++++ 6 files changed, 156 insertions(+) create mode 100644 samples/web-components-events/README.md create mode 100644 samples/web-components-events/index.html create mode 100644 samples/web-components-events/index.ts create mode 100644 samples/web-components-events/package.json create mode 100644 samples/web-components-events/style.css create mode 100644 samples/web-components-events/tsconfig.json diff --git a/samples/web-components-events/README.md b/samples/web-components-events/README.md new file mode 100644 index 000000000..c7d8b8989 --- /dev/null +++ b/samples/web-components-events/README.md @@ -0,0 +1,41 @@ +# Google Maps JavaScript Sample + +## web-components-events + +This sample demonstrates map events using the Maps JavaScript API web components. + +## Setup + +### Before starting run: + +`npm i` + +### Run an example on a local web server + +`cd samples/web-components-events` +`npm start` + +### Build an individual example + +`cd samples/web-components-events` +`npm run build` + +From 'samples': + +`npm run build --workspace=web-components-events/` + +### Build all of the examples. + +From 'samples': + +`npm run build-all` + +### Run lint to check for problems + +`cd samples/web-components-events` +`npx eslint index.ts` + +## Feedback + +For feedback related to this sample, please open a new issue on +[GitHub](https://github.com/googlemaps-samples/js-api-samples/issues). diff --git a/samples/web-components-events/index.html b/samples/web-components-events/index.html new file mode 100644 index 000000000..f6f8b9390 --- /dev/null +++ b/samples/web-components-events/index.html @@ -0,0 +1,39 @@ + + + + + + Add a Map Web Component with Events + + + + + + + + + + + + + + + diff --git a/samples/web-components-events/index.ts b/samples/web-components-events/index.ts new file mode 100644 index 000000000..c7c820af5 --- /dev/null +++ b/samples/web-components-events/index.ts @@ -0,0 +1,35 @@ +/** + * @license + * Copyright 2026 Google LLC. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0 + */ + +// [START maps_web_components_events] +// This example adds a map using web components. +async function initMap(): Promise { + await google.maps.importLibrary("maps"); + await google.maps.importLibrary("marker"); + + console.log('Maps JavaScript API loaded.'); + + const advancedMarkers = document.querySelectorAll("#marker-click-event-example gmp-advanced-marker"); + + for (const markerElement of advancedMarkers) { + const advancedMarker = markerElement as google.maps.marker.AdvancedMarkerElement; + + customElements.whenDefined(advancedMarker.localName).then(async () => { + advancedMarker.addEventListener('gmp-click', () => { + const infoWindow = new google.maps.InfoWindow({ + content: advancedMarker.title, + }); + + infoWindow.open({ + anchor: advancedMarker, + }); + }); + }); + } +} + +initMap(); +// [END maps_web_components_events] diff --git a/samples/web-components-events/package.json b/samples/web-components-events/package.json new file mode 100644 index 000000000..91e619b93 --- /dev/null +++ b/samples/web-components-events/package.json @@ -0,0 +1,14 @@ +{ + "name": "@js-api-samples/web-components-events", + "version": "1.0.0", + "scripts": { + "build": "tsc && bash ../jsfiddle.sh web-components-events && bash ../app.sh web-components-events && bash ../docs.sh web-components-events && npm run build:vite --workspace=. && bash ../dist.sh web-components-events", + "test": "tsc && npm run build:vite --workspace=.", + "start": "tsc && vite build --base './' && vite", + "build:vite": "vite build --base './'", + "preview": "vite preview" + }, + "dependencies": { + + } +} diff --git a/samples/web-components-events/style.css b/samples/web-components-events/style.css new file mode 100644 index 000000000..a2eaae43e --- /dev/null +++ b/samples/web-components-events/style.css @@ -0,0 +1,18 @@ +/** + * @license + * Copyright 2026 Google LLC. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0 + */ +/* [START maps_web_components_events] */ + +/* + * Optional: Makes the sample page fill the window. + */ +html, +body { + height: 100%; + margin: 0; + padding: 0; +} + +/* [END maps_web_components_events] */ \ No newline at end of file diff --git a/samples/web-components-events/tsconfig.json b/samples/web-components-events/tsconfig.json new file mode 100644 index 000000000..5ba470c05 --- /dev/null +++ b/samples/web-components-events/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "../../tsconfig.base.json", + "compilerOptions": { + "rootDir": "." + }, + "include": [ + "./*.ts", + ] +}