@onsvisual/svelte-components 0.1.88-component.toolbar → 0.1.88
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/dist/@types/index.d.ts +1 -8
- package/dist/@types/inputs/AccessibleSelect/AccessibleSelect.svelte.d.ts +49 -0
- package/dist/@types/inputs/AccessibleSelect/options.d.ts +6 -0
- package/dist/@types/inputs/Button/Button.svelte.d.ts +4 -2
- package/dist/@types/inputs/Dropdown/Dropdown.svelte.d.ts +2 -2
- package/dist/@types/inputs/Select/Select.svelte.d.ts +12 -12
- package/dist/css/main.css +221 -1
- package/dist/index.js +1 -8
- package/dist/inputs/AccessibleSelect/AccessibleSelect.svelte +170 -0
- package/dist/inputs/AccessibleSelect/options.js +263 -0
- package/dist/inputs/Button/Button.svelte +6 -0
- package/package.json +6 -14
- package/dist/@types/inputs/Toolbar/HelpModal.svelte.d.ts +0 -19
- package/dist/@types/inputs/Toolbar/Icon.svelte.d.ts +0 -31
- package/dist/@types/inputs/Toolbar/ToolControl.svelte.d.ts +0 -27
- package/dist/@types/inputs/Toolbar/ToolControls.svelte.d.ts +0 -27
- package/dist/@types/inputs/Toolbar/Toolbar.svelte.d.ts +0 -33
- package/dist/@types/inputs/Toolbar/ToolbarButton.svelte.d.ts +0 -29
- package/dist/@types/inputs/Toolbar/ToolbarDivider.svelte.d.ts +0 -16
- package/dist/@types/inputs/Toolbar/ToolbarsContainer.svelte.d.ts +0 -16
- package/dist/inputs/Toolbar/HelpModal.svelte +0 -220
- package/dist/inputs/Toolbar/Icon.svelte +0 -136
- package/dist/inputs/Toolbar/ToolControl.svelte +0 -19
- package/dist/inputs/Toolbar/ToolControls.svelte +0 -8
- package/dist/inputs/Toolbar/Toolbar.svelte +0 -66
- package/dist/inputs/Toolbar/ToolbarButton.svelte +0 -104
- package/dist/inputs/Toolbar/ToolbarDivider.svelte +0 -28
- package/dist/inputs/Toolbar/ToolbarsContainer.svelte +0 -46
- /package/dist/layout/{BackLink → Backlink}/Backlink.svelte +0 -0
|
@@ -1,104 +0,0 @@
|
|
|
1
|
-
<script>import { onMount, onDestroy, createEventDispatcher, getContext } from "svelte";
|
|
2
|
-
import Icon from "./Icon.svelte";
|
|
3
|
-
import HelpModal from "./HelpModal.svelte";
|
|
4
|
-
import { nanoid } from "nanoid";
|
|
5
|
-
// Props for the ToolbarButton
|
|
6
|
-
export let id = nanoid(6);
|
|
7
|
-
export let icon = "";
|
|
8
|
-
export let label = "";
|
|
9
|
-
export let disabled = false;
|
|
10
|
-
export let classes = "";
|
|
11
|
-
export let helpText = null;
|
|
12
|
-
export let selected = false;
|
|
13
|
-
export let custom = false;
|
|
14
|
-
export let hasAriaControls = false;
|
|
15
|
-
const dispatch = createEventDispatcher();
|
|
16
|
-
let buttonElement;
|
|
17
|
-
// Get activeModalId store from context
|
|
18
|
-
const activeModalId = getContext("activeModalId");
|
|
19
|
-
// Retrieve button registry from context
|
|
20
|
-
const { register, unregister } = getContext("buttonIds");
|
|
21
|
-
// Register button on mount
|
|
22
|
-
onMount(() => {
|
|
23
|
-
register(id);
|
|
24
|
-
});
|
|
25
|
-
// Unregister button on destroy
|
|
26
|
-
onDestroy(() => {
|
|
27
|
-
unregister(id);
|
|
28
|
-
});
|
|
29
|
-
// Reactive store subscription
|
|
30
|
-
$: isActive = $activeModalId === id;
|
|
31
|
-
// Subscribe to the store to determine if this modal is active
|
|
32
|
-
function handleClick() {
|
|
33
|
-
if (!disabled) {
|
|
34
|
-
dispatch("click");
|
|
35
|
-
activeModalId.set(isActive ? null : id); // Toggle the modal
|
|
36
|
-
// maybe something here to check if selected
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
</script>
|
|
40
|
-
|
|
41
|
-
<div class="toolbar-button-wrapper">
|
|
42
|
-
{#if custom}
|
|
43
|
-
<div on:click="{handleClick}" bind:this="{buttonElement}">
|
|
44
|
-
<slot name="custom" />
|
|
45
|
-
</div>
|
|
46
|
-
{:else}
|
|
47
|
-
<button
|
|
48
|
-
type="button"
|
|
49
|
-
aria-label="{label}"
|
|
50
|
-
class="{`toolbar-button ${disabled ? 'disabled' : ''} ${
|
|
51
|
-
isActive ? 'selected' : ''
|
|
52
|
-
} ${classes}`}"
|
|
53
|
-
on:click="{handleClick}"
|
|
54
|
-
disabled="{disabled}"
|
|
55
|
-
bind:this="{buttonElement}"
|
|
56
|
-
id="button-{id}"
|
|
57
|
-
aria-controls="{hasAriaControls ? `panel-${id}` : undefined}"
|
|
58
|
-
>
|
|
59
|
-
{#if icon}
|
|
60
|
-
<Icon type="{icon}" selected="{isActive ? true : false}" disabled="{disabled}" />
|
|
61
|
-
{:else}
|
|
62
|
-
{label}
|
|
63
|
-
{/if}
|
|
64
|
-
</button>
|
|
65
|
-
{/if}
|
|
66
|
-
|
|
67
|
-
{#if isActive}
|
|
68
|
-
{#if helpText}
|
|
69
|
-
<HelpModal triggerElement="{buttonElement}" onClose="{() => activeModalId.set(null)}">
|
|
70
|
-
<p>{helpText}</p>
|
|
71
|
-
</HelpModal>
|
|
72
|
-
{:else if !helpText}
|
|
73
|
-
<HelpModal triggerElement="{buttonElement}" onClose="{() => activeModalId.set(null)}">
|
|
74
|
-
<slot />
|
|
75
|
-
</HelpModal>
|
|
76
|
-
{/if}
|
|
77
|
-
{/if}
|
|
78
|
-
</div>
|
|
79
|
-
|
|
80
|
-
<style>
|
|
81
|
-
.toolbar-button-wrapper {
|
|
82
|
-
position: relative;
|
|
83
|
-
}
|
|
84
|
-
.toolbar-button {
|
|
85
|
-
display: flex;
|
|
86
|
-
align-items: center;
|
|
87
|
-
justify-content: center;
|
|
88
|
-
padding: 0.5rem;
|
|
89
|
-
background: none;
|
|
90
|
-
border: none;
|
|
91
|
-
cursor: pointer;
|
|
92
|
-
flex-shrink: 0;
|
|
93
|
-
flex-grow: 0;
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
.toolbar-button.disabled {
|
|
97
|
-
/* opacity: 0.5; */
|
|
98
|
-
cursor: not-allowed;
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
.selected {
|
|
102
|
-
background: #e9eff4;
|
|
103
|
-
border-radius: 8px;
|
|
104
|
-
}</style>
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
<script>import { getContext } from "svelte";
|
|
2
|
-
export let classes = "";
|
|
3
|
-
// Get the orientation store from context
|
|
4
|
-
const orientationStore = getContext("orientation");
|
|
5
|
-
// Subscribe to the store to get its value
|
|
6
|
-
let orientation;
|
|
7
|
-
orientationStore.subscribe((value) => {
|
|
8
|
-
orientation = value;
|
|
9
|
-
});
|
|
10
|
-
</script>
|
|
11
|
-
|
|
12
|
-
<div class="{`toolbar-divider ${orientation} ${classes}`}" aria-hidden="true"></div>
|
|
13
|
-
|
|
14
|
-
<style>
|
|
15
|
-
.toolbar-divider {
|
|
16
|
-
background-color: #ccc;
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
.toolbar-divider.horizontal {
|
|
20
|
-
width: 1px;
|
|
21
|
-
margin: 0 0.5rem;
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
.toolbar-divider.vertical {
|
|
25
|
-
width: 100%;
|
|
26
|
-
height: 1px;
|
|
27
|
-
margin: 0.5rem 0;
|
|
28
|
-
}</style>
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
<script>import { setContext, onMount } from "svelte";
|
|
2
|
-
import { writable } from "svelte/store";
|
|
3
|
-
// Initialize a store for button IDs
|
|
4
|
-
const buttonIds = writable([]);
|
|
5
|
-
setContext("buttonIds", {
|
|
6
|
-
register: (id) => {
|
|
7
|
-
buttonIds.update((ids) => [...ids, id]);
|
|
8
|
-
},
|
|
9
|
-
unregister: (id) => {
|
|
10
|
-
buttonIds.update((ids) => ids.filter((btnId) => btnId !== id));
|
|
11
|
-
},
|
|
12
|
-
buttonIds,
|
|
13
|
-
});
|
|
14
|
-
// Initial state: true unless explicitly set to 'false' in either localStorage or sessionStorage
|
|
15
|
-
const initialState = sessionStorage.getItem("showHelpModals") === "false"
|
|
16
|
-
? false
|
|
17
|
-
: localStorage.getItem("showHelpModals") === "false"
|
|
18
|
-
? false
|
|
19
|
-
: true;
|
|
20
|
-
const showHelpModals = writable(initialState ?? true);
|
|
21
|
-
// Subscribe to store changes to persist in localStorage
|
|
22
|
-
// showHelpModals.subscribe((value) => {
|
|
23
|
-
// localStorage.setItem("showHelpModals", value);
|
|
24
|
-
// });
|
|
25
|
-
// Set context for showHelpModals
|
|
26
|
-
setContext("showHelpModals", showHelpModals);
|
|
27
|
-
const activeModalStore = writable(null); // Tracks the ID of the active modal
|
|
28
|
-
setContext("activeModalId", activeModalStore);
|
|
29
|
-
onMount(() => {
|
|
30
|
-
window.addEventListener("beforeunload", () => {
|
|
31
|
-
sessionStorage.removeItem("showHelpModals");
|
|
32
|
-
});
|
|
33
|
-
});
|
|
34
|
-
</script>
|
|
35
|
-
|
|
36
|
-
<div class="multi-toolbar-container">
|
|
37
|
-
<slot />
|
|
38
|
-
</div>
|
|
39
|
-
|
|
40
|
-
<style>
|
|
41
|
-
.multi-toolbar-container {
|
|
42
|
-
display: flex;
|
|
43
|
-
flex-direction: row;
|
|
44
|
-
gap: 1rem;
|
|
45
|
-
justify-content: space-between;
|
|
46
|
-
}</style>
|
|
File without changes
|