@fusion.dev/helix 0.101.0 → 0.103.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/types/vue.d.ts CHANGED
@@ -64,6 +64,7 @@ import type {
64
64
  HelixList,
65
65
  HelixListbox,
66
66
  HelixLoader,
67
+ HelixMap,
67
68
  HelixMegamenu,
68
69
  HelixMenuItem,
69
70
  HelixMenu,
@@ -163,6 +164,8 @@ import type {
163
164
  HelixShortcutEvent,
164
165
  HelixActivateEvent,
165
166
  HelixBeforeActivateEvent,
167
+ HelixMapPanEvent,
168
+ HelixMapZoomEvent,
166
169
  HelixReadEvent,
167
170
  HelixCompleteEvent,
168
171
  HelixConsoleEvent,
@@ -5867,6 +5870,124 @@ around a logo reads as chrome bolted to the brand. */
5867
5870
 
5868
5871
  export type HelixLoaderVueEvents = {};
5869
5872
 
5873
+ /** `HelixMap` component event */
5874
+ export type HelixMapElementEvent<E = Event> = TypedEvent<HelixMap, E>;
5875
+ /** `helix-map-pan` event type */
5876
+ export type HelixMapHelixMapPanElementEvent =
5877
+ HelixMapElementEvent<HelixMapPanEvent>;
5878
+ /** `helix-map-zoom` event type */
5879
+ export type HelixMapHelixMapZoomElementEvent =
5880
+ HelixMapElementEvent<HelixMapZoomEvent>;
5881
+
5882
+ export type HelixMapVueProps = {
5883
+ /** Which of the controls this frame draws, as a list of what to keep.
5884
+
5885
+ **A list rather than a switch, because the overlap is not symmetric.**
5886
+ Every map library draws zoom controls and none of them draws pan buttons:
5887
+ MapLibre's navigation control is zoom and a compass, Leaflet's is zoom,
5888
+ Google's is zoom. So a consumer slotting one of those has our zoom twice
5889
+ over and our pan pad not at all, and a single switch would make them choose
5890
+ between a duplicate and nothing.
5891
+
5892
+ `none` draws none of them, which is the right answer where the slotted map
5893
+ already has controls a reader can find: what this family argues for is that
5894
+ *a* findable control exists, never that it is ours. The methods stay public
5895
+ either way, so a consumer drawing their own chrome can still drive the
5896
+ frame.
5897
+
5898
+ Absent is all three, which is this library's rule that a resting value is an
5899
+ attribute's absence, and it is what the stylesheet asks about: the layout
5900
+ rules are written against `[controls]:not([controls~="zoom"])` rather than
5901
+ the bare negation, or a frame that named no list at all would be laid out as
5902
+ though it had dropped everything. */
5903
+ controls?: (HelixMap["controls"]) | undefined;
5904
+ /** Which corner the controls sit in.
5905
+
5906
+ **Configurable because there is no safe default**, and this is a collision
5907
+ rather than a taste: MapLibre puts its own controls at the top end, Leaflet
5908
+ and OpenLayers at the top start, Google's zoom at the bottom end. Whichever
5909
+ corner this took would land on somebody's, which is why every one of those
5910
+ libraries made it a setting too.
5911
+
5912
+ Logical corners rather than left and right, so a right-to-left page moves
5913
+ them without a consumer writing a second rule.
5914
+
5915
+ Absent is the top end, which is this library's rule that a resting value is
5916
+ an attribute's absence: a default that reflected would write an attribute
5917
+ onto every host that no server sent and nobody asked for. */
5918
+ "controls-placement"?: (HelixMap["controlsPlacement"]) | undefined;
5919
+ /** Which corner the controls sit in.
5920
+
5921
+ **Configurable because there is no safe default**, and this is a collision
5922
+ rather than a taste: MapLibre puts its own controls at the top end, Leaflet
5923
+ and OpenLayers at the top start, Google's zoom at the bottom end. Whichever
5924
+ corner this took would land on somebody's, which is why every one of those
5925
+ libraries made it a setting too.
5926
+
5927
+ Logical corners rather than left and right, so a right-to-left page moves
5928
+ them without a consumer writing a second rule.
5929
+
5930
+ Absent is the top end, which is this library's rule that a resting value is
5931
+ an attribute's absence: a default that reflected would write an attribute
5932
+ onto every host that no server sent and nobody asked for. */
5933
+ controlsPlacement?: (HelixMap["controlsPlacement"]) | undefined;
5934
+ /** What the control that fills the screen is called. */
5935
+ "fullscreen-label"?: (HelixMap["fullscreenLabel"]) | undefined;
5936
+ /** What the control that fills the screen is called. */
5937
+ fullscreenLabel?: (HelixMap["fullscreenLabel"]) | undefined;
5938
+ /** How long the reader may be still before the chrome hides, in milliseconds.
5939
+
5940
+ Zero keeps it up, which is the default: a map's controls are how a keyboard
5941
+ reader operates it, and chrome that hides itself by default would be this
5942
+ component undoing its own argument. Set it for a display map nobody drives. */
5943
+ "idle-delay"?: (HelixMap["idleDelay"] | `${number}`) | undefined;
5944
+ /** How long the reader may be still before the chrome hides, in milliseconds.
5945
+
5946
+ Zero keeps it up, which is the default: a map's controls are how a keyboard
5947
+ reader operates it, and chrome that hides itself by default would be this
5948
+ component undoing its own argument. Set it for a display map nobody drives. */
5949
+ idleDelay?: (HelixMap["idleDelay"]) | undefined;
5950
+ /** Accessible name for the map, which is the one thing a consumer must write.
5951
+
5952
+ There is no sensible default. "Map" names the widget rather than the place,
5953
+ and a reader meeting three of them on a page learns nothing from hearing the
5954
+ same word three times. */
5955
+ label?: (HelixMap["label"]) | undefined;
5956
+ /** What the controls are called, for a page not in English. */
5957
+ "pan-label"?: (HelixMap["panLabel"]) | undefined;
5958
+ /** What the controls are called, for a page not in English. */
5959
+ panLabel?: (HelixMap["panLabel"]) | undefined;
5960
+ /** How far one press moves the map, as a fraction of what is on screen.
5961
+
5962
+ A fraction rather than a distance, because this frame does not know the
5963
+ scale of what is inside it: a quarter of the viewport is the same gesture at
5964
+ street level and at country level, and a consumer who wants metres can
5965
+ multiply by their own. */
5966
+ "pan-step"?: (HelixMap["panStep"] | `${number}`) | undefined;
5967
+ /** How far one press moves the map, as a fraction of what is on screen.
5968
+
5969
+ A fraction rather than a distance, because this frame does not know the
5970
+ scale of what is inside it: a quarter of the viewport is the same gesture at
5971
+ street level and at country level, and a consumer who wants metres can
5972
+ multiply by their own. */
5973
+ panStep?: (HelixMap["panStep"]) | undefined;
5974
+ /** What the zoom controls are called. */
5975
+ "zoom-in-label"?: (HelixMap["zoomInLabel"]) | undefined;
5976
+ /** What the zoom controls are called. */
5977
+ zoomInLabel?: (HelixMap["zoomInLabel"]) | undefined;
5978
+ /** What the zoom control that goes the other way is called. */
5979
+ "zoom-out-label"?: (HelixMap["zoomOutLabel"]) | undefined;
5980
+ /** What the zoom control that goes the other way is called. */
5981
+ zoomOutLabel?: (HelixMap["zoomOutLabel"]) | undefined;
5982
+ };
5983
+
5984
+ export type HelixMapVueEvents = {
5985
+ /** The reader asked the map to move. Answer it against your own map. */
5986
+ "helix-map-pan": HelixMapHelixMapPanElementEvent;
5987
+ /** The reader asked the map to zoom, by a direction rather than to a level. */
5988
+ "helix-map-zoom": HelixMapHelixMapZoomElementEvent;
5989
+ };
5990
+
5870
5991
  /** `HelixMegamenu` component event */
5871
5992
  export type HelixMegamenuElementEvent<E = Event> = TypedEvent<HelixMegamenu, E>;
5872
5993
  /** `helix-before-close` event type */
@@ -11643,6 +11764,14 @@ export type CustomCssProperties = {
11643
11764
  "--loader-size"?: (string) | undefined;
11644
11765
  /** Color of the circle behind it. */
11645
11766
  "--loader-track-color"?: (string) | undefined;
11767
+ /** The well behind the map, seen while tiles are on their way. */
11768
+ "--map-background-color"?: (string) | undefined;
11769
+ /** How tall the frame is. A length, since the map fills it. */
11770
+ "--map-block-size"?: (string) | undefined;
11771
+ /** Color of the frame's edge. */
11772
+ "--map-border-color"?: (string) | undefined;
11773
+ /** The ground under the pan and zoom buttons. */
11774
+ "--map-control-background-color"?: (string) | undefined;
11646
11775
  /** A filter behind the panel, which is `none` until one is asked for: this family carries no `material`, so the pair is two hooks rather than a word. */
11647
11776
  "--megamenu-backdrop"?: (string) | undefined;
11648
11777
  /** The panel's own fill. */
@@ -12547,6 +12676,12 @@ export interface WcToolkitVueGlobalComponents {
12547
12676
  HelixLoaderVueProps,
12548
12677
  HelixLoaderVueEvents
12549
12678
  >;
12679
+ /** Presentation only: a bordered well with the controls over it, at the corner every map puts them. What the frame is for, and why the controls are buttons rather than arrow keys, is the base class. **The controls do not fade with the chrome.** A reader who has gone still has not stopped needing the only controls this frame offers, so the idle state takes the header and footer a consumer slotted and leaves the buttons alone. */
12680
+ "helix-map": DefineCustomElement<
12681
+ HelixMap,
12682
+ HelixMapVueProps,
12683
+ HelixMapVueEvents
12684
+ >;
12550
12685
  /** Presentation only: the trigger, and the panel it opens as a grid of columns. Everything about what opens it and what closes it is the base class. */
12551
12686
  "helix-megamenu": DefineCustomElement<
12552
12687
  HelixMegamenu,