@onsvisual/svelte-components 1.0.25 → 1.0.27

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.
Files changed (31) hide show
  1. package/dist/css/main.css +1 -1
  2. package/dist/index.d.ts +10 -0
  3. package/dist/index.js +10 -0
  4. package/dist/inputs/ButtonGroup/ButtonGroup.stories.svelte +40 -0
  5. package/dist/inputs/ButtonGroup/ButtonGroup.stories.svelte.d.ts +23 -0
  6. package/dist/inputs/ButtonGroup/ButtonGroup.svelte +57 -0
  7. package/dist/inputs/ButtonGroup/ButtonGroup.svelte.d.ts +27 -0
  8. package/dist/inputs/ButtonGroup/ButtonGroupItem.svelte +101 -0
  9. package/dist/inputs/ButtonGroup/ButtonGroupItem.svelte.d.ts +23 -0
  10. package/dist/inputs/ButtonGroup/docs/component.md +21 -0
  11. package/dist/inputs/Toolbar/HelpModal.svelte +234 -0
  12. package/dist/inputs/Toolbar/HelpModal.svelte.d.ts +16 -0
  13. package/dist/inputs/Toolbar/ToolControl.svelte +23 -0
  14. package/dist/inputs/Toolbar/ToolControl.svelte.d.ts +27 -0
  15. package/dist/inputs/Toolbar/ToolControls.svelte +9 -0
  16. package/dist/inputs/Toolbar/ToolControls.svelte.d.ts +27 -0
  17. package/dist/inputs/Toolbar/Toolbar.stories.svelte +148 -0
  18. package/dist/inputs/Toolbar/Toolbar.stories.svelte.d.ts +23 -0
  19. package/dist/inputs/Toolbar/Toolbar.svelte +70 -0
  20. package/dist/inputs/Toolbar/Toolbar.svelte.d.ts +29 -0
  21. package/dist/inputs/Toolbar/ToolbarButton.svelte +184 -0
  22. package/dist/inputs/Toolbar/ToolbarButton.svelte.d.ts +19 -0
  23. package/dist/inputs/Toolbar/ToolbarDivider.svelte +29 -0
  24. package/dist/inputs/Toolbar/ToolbarDivider.svelte.d.ts +14 -0
  25. package/dist/inputs/Toolbar/ToolbarIcon.svelte +106 -0
  26. package/dist/inputs/Toolbar/ToolbarIcon.svelte.d.ts +23 -0
  27. package/dist/inputs/Toolbar/ToolbarsContainer.svelte +69 -0
  28. package/dist/inputs/Toolbar/ToolbarsContainer.svelte.d.ts +19 -0
  29. package/dist/inputs/Toolbar/docs/component.md +99 -0
  30. package/dist/inputs/Toolbar/img/movepan.png +0 -0
  31. package/package.json +1 -1
@@ -0,0 +1,69 @@
1
+ <script lang="ts">
2
+ import { setContext, onMount } from "svelte";
3
+ import { writable } from "svelte/store";
4
+
5
+ // Initialize a store for button IDs
6
+ const buttonIds = writable([]);
7
+ setContext("buttonIds", {
8
+ register: (id: string) => {
9
+ buttonIds.update((ids) => [...ids, id]);
10
+ },
11
+ unregister: (id: string) => {
12
+ buttonIds.update((ids) => ids.filter((btnId) => btnId !== id));
13
+ },
14
+ buttonIds
15
+ });
16
+
17
+ let showHelpState = $state(true);
18
+
19
+ $effect(() => {
20
+ const sessionValue = sessionStorage.getItem("showHelpModals");
21
+ const localValue = localStorage.getItem("showHelpModals");
22
+ showHelpState = sessionValue === "false" ? false : localValue === "false" ? false : true;
23
+ });
24
+
25
+ const showHelpModals = writable(showHelpState);
26
+ // Set context for showHelpModals
27
+ setContext("showHelpModals", showHelpModals);
28
+
29
+ // Reactively update the initial state
30
+ $effect(() => {
31
+ showHelpModals.set(showHelpState);
32
+ });
33
+
34
+ const activeModalStore = writable(null); // Tracks the ID of the active modal
35
+ setContext("activeModalId", activeModalStore);
36
+
37
+ onMount(() => {
38
+ window.addEventListener("beforeunload", () => {
39
+ sessionStorage.removeItem("showHelpModals");
40
+ });
41
+ let unsubscribe = buttonIds.subscribe((ids) => {
42
+ if (ids.length > 0) {
43
+ activeModalStore.set(ids[0]); // Set first button as active
44
+ }
45
+ });
46
+
47
+ return unsubscribe;
48
+ });
49
+
50
+ export function resetHelp() {
51
+ sessionStorage.setItem("showHelpModals", "true");
52
+ showHelpModals.set(true);
53
+ }
54
+ </script>
55
+
56
+ <div class="multi-toolbar-container">
57
+ <slot />
58
+ </div>
59
+
60
+ <style>
61
+ .multi-toolbar-container {
62
+ display: flex;
63
+ flex-direction: row;
64
+ gap: 1rem;
65
+ justify-content: space-between;
66
+ pointer-events: none;
67
+ flex-wrap: wrap;
68
+ }
69
+ </style>
@@ -0,0 +1,19 @@
1
+ import { SvelteComponentTyped } from "svelte";
2
+ declare const __propDef: {
3
+ props: {
4
+ resetHelp?: () => void;
5
+ };
6
+ events: {
7
+ [evt: string]: CustomEvent<any>;
8
+ };
9
+ slots: {
10
+ default: {};
11
+ };
12
+ };
13
+ export type ToolbarsContainerProps = typeof __propDef.props;
14
+ export type ToolbarsContainerEvents = typeof __propDef.events;
15
+ export type ToolbarsContainerSlots = typeof __propDef.slots;
16
+ export default class ToolbarsContainer extends SvelteComponentTyped<ToolbarsContainerProps, ToolbarsContainerEvents, ToolbarsContainerSlots> {
17
+ get resetHelp(): () => void;
18
+ }
19
+ export {};
@@ -0,0 +1,99 @@
1
+ A toolbar component. Use `ToolbarsContainer` even if using one toolbar as it contains a store for all the IDs and the activeID.
2
+
3
+ There's a slot on ToolbarButton if you want to put in custom help text otherwise, there's the prop `helpText`.
4
+
5
+ Each `ToolControl` will display content underneath the row of buttons. The `id` needs to match the `id` of the button.
6
+
7
+ Use the prop `hasAriaControls` on a button to link the controls to the button.
8
+
9
+ <!-- prettier-ignore -->
10
+ ```html
11
+ <script>
12
+ import { ToolbarsContainer,Toolbar,ToolbarButton, ToolbarDivider,ToolControls,ToolControl, HelpModal } from "@onsvisual/svelte-components";
13
+ </script>
14
+
15
+ <ToolbarsContainer>
16
+
17
+ <Toolbar orientation="horizontal">
18
+ <ToolbarButton icon="polygon" label="Draw a polygon" helpText="Draw a polygon on the map" hasAriaControls>
19
+ <HelpModal>
20
+ <h3>Detailed Help</h3>
21
+ <p>More complex help text or even HTML content</p>
22
+ <ul>
23
+ <li>With lists</li>
24
+ <li>Or other elements</li>
25
+ </ul>
26
+ </HelpModal>
27
+ </ToolbarButton>
28
+ <ToolbarButton
29
+ icon="radius"
30
+ label="Draw a circle"
31
+ helpText="Draw a circle using this tool"
32
+ />
33
+ <ToolbarDivider />
34
+ <ToolbarButton
35
+ icon="zoomin"
36
+ label="Zoom in"
37
+ />
38
+ <ToolbarButton icon="zoomout" label="Zoom out" />
39
+ <ToolControls>
40
+ <ToolControl id="polygon">
41
+ <p>Text to display when polygon tool is selected, or even an input</p>
42
+ </ToolControl>
43
+ </Toolbar>
44
+
45
+
46
+ // Second toolbar
47
+ <Toolbar>
48
+ <ToolbarButton id="upload" icon="upload"/>
49
+ <ToolbarButton id="download" icon="download"/>
50
+ </Toolbar>
51
+ </ToolbarsContainer>
52
+ ```
53
+
54
+ ## Sticky buttons
55
+
56
+ ```html
57
+ <ToolbarsContainer>
58
+ <Toolbar>
59
+ <ToolbarButton id="move" icon="move" label="Move and Pan" sticky />
60
+ <ToolbarButton id="polygon" icon="polygon" label="Draw a polygon" sticky />
61
+ <ToolbarButton id="circle" icon="radius" label="Draw a circle" sticky />
62
+ </Toolbar>
63
+ </ToolbarsContainer>
64
+ ```
65
+
66
+ ## Transient buttons
67
+
68
+ ```html
69
+ <ToolbarsContainer>
70
+ <Toolbar>
71
+ <ToolbarButton
72
+ id="zoomin"
73
+ icon="zoomin"
74
+ label="Zoom in"
75
+ transient="{true}"
76
+ selected="{false}"
77
+ />
78
+ <ToolbarButton id="zoomout" icon="zoomout" label="zoom out" transient />
79
+ </Toolbar>
80
+ </ToolbarsContainer>
81
+ ```
82
+
83
+ ## No help modal
84
+
85
+ ```html
86
+ <ToolbarsContainer>
87
+ <Toolbar>
88
+ <ToolbarButton
89
+ id="zoomin"
90
+ icon="zoomin"
91
+ label="Zoom in"
92
+ transient="{true}"
93
+ selected="{false}"
94
+ disableHelp="{true}"
95
+ />
96
+ <ToolbarButton id="zoomout" icon="zoomout" label="zoom out" disableHelp="{true}" transient />
97
+ </Toolbar>
98
+ </ToolbarsContainer>
99
+ ```
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@onsvisual/svelte-components",
3
- "version": "1.0.25",
3
+ "version": "1.0.27",
4
4
  "scripts": {
5
5
  "dev": "vite dev",
6
6
  "build": "npm run build:package && npm run build:docs",