Skip to content

Commit 69b37c9

Browse files
committed
feat(ol-layer-*): support common events on components
The common events are now handled by default: - `change` (BaseEvent) - Generic change event. Triggered when the revision counter is increased. - `change:extent` (ObjectEvent) - `change:maxResolution` (ObjectEvent) - `change:maxZoom` (ObjectEvent) - `change:minResolution` (ObjectEvent) - `change:minZoom` (ObjectEvent) - `change:opacity` (ObjectEvent) - `change:source` (ObjectEvent) - `change:visible` (ObjectEvent) - `change:zIndex` (ObjectEvent) - `error` (BaseEvent) - Generic error event. Triggered when an error occurs. - `postrender` (RenderEvent) - Triggered after a layer is rendered. - `prerender` (RenderEvent) - Triggered before a layer is rendered. - `propertychange` (ObjectEvent) - Triggered when a property is changed. - `sourceready` (BaseEvent)
1 parent 8171eea commit 69b37c9

File tree

3 files changed

+23
-7
lines changed

3 files changed

+23
-7
lines changed

Diff for: docs/pluginsguide/index.md

+2-1
Original file line numberDiff line numberDiff line change
@@ -44,8 +44,9 @@ const props = withDefaults(
4444
// Create the layer
4545
// Changes will be applied and the layer will be removed on unmount.
4646
// The last parameter will receive the event names which should be handled by the target component.
47+
// Common Layer events (https://openlayers.org/en/latest/apidoc/module-ol_layer_Layer-Layer.html) are already handled within the composable
4748
// Check out the sources of the composable for more details.
48-
const { layer } = useLayer(FooLayer, props, ['change:opacity']);
49+
const { layer } = useLayer(FooLayer, props, ['foo']);
4950
5051
// source components will rely on the layer (depends on the source type)
5152
provide("vectorLayer", layer);

Diff for: src/composables/useLayer.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import type { Map } from "ol";
44
import type LayerGroup from "ol/layer/Group";
55
import type { Layer } from "ol/layer";
66
import usePropsAsObjectProperties from "./usePropsAsObjectProperties";
7-
import { useOpenLayersEvents } from "./useOpenLayersEvents";
7+
import { LAYER_EVENTS, useOpenLayersEvents } from "./useOpenLayersEvents";
88
import type { OverviewMap } from "ol/control";
99

1010
/**
@@ -23,7 +23,7 @@ export default function useLayer<T extends Layer>(
2323

2424
const layer = shallowRef(new LayerClass(properties));
2525

26-
useOpenLayersEvents(layer, eventsToHandle);
26+
useOpenLayersEvents(layer, [...LAYER_EVENTS, ...eventsToHandle]);
2727

2828
const map = inject<Map>("map");
2929
const layerGroup = inject<LayerGroup | null>("layerGroup", null);

Diff for: src/composables/useOpenLayersEvents.ts

+19-4
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,32 @@
11
import {
2-
type Ref,
3-
onMounted,
4-
getCurrentInstance,
52
type ComputedRef,
6-
isRef,
3+
getCurrentInstance,
74
inject,
5+
isRef,
6+
onMounted,
7+
type Ref,
88
type ShallowRef,
99
} from "vue";
1010
import type BaseObject from "ol/Object";
1111
import type { EventTypes } from "ol/Observable";
1212

1313
export const COMMON_EVENTS = ["change", "error", "propertychange"];
1414

15+
export const LAYER_EVENTS = [
16+
"change:extent",
17+
"change:maxResolution",
18+
"change:maxZoom",
19+
"change:minResolution",
20+
"change:minZoom",
21+
"change:opacity",
22+
"change:source",
23+
"change:visible",
24+
"change:zIndex",
25+
"postrender",
26+
"prerender",
27+
"sourceready",
28+
];
29+
1530
export const TILE_SOURCE_EVENTS = [
1631
"tileloadend",
1732
"tileloaderror",

0 commit comments

Comments
 (0)