@smartnet360/svelte-components 0.0.80 → 0.0.81
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.
|
@@ -232,11 +232,11 @@
|
|
|
232
232
|
<!-- Generic feature selection control - works with any layer -->
|
|
233
233
|
<FeatureSelectionControl
|
|
234
234
|
position="bottom-left"
|
|
235
|
-
title="
|
|
236
|
-
icon="
|
|
235
|
+
title="Cluster Tool"
|
|
236
|
+
icon="speedometer2"
|
|
237
237
|
iconOnlyWhenCollapsed={useIconHeaders}
|
|
238
238
|
onAction={handleProcessFeatures}
|
|
239
|
-
actionButtonLabel="Process
|
|
239
|
+
actionButtonLabel="Process Cluster"
|
|
240
240
|
featureIcon="pin-map-fill"
|
|
241
241
|
/>
|
|
242
242
|
|
|
@@ -41,11 +41,11 @@
|
|
|
41
41
|
|
|
42
42
|
let {
|
|
43
43
|
position = 'top-left',
|
|
44
|
-
title = '
|
|
45
|
-
icon = '
|
|
44
|
+
title = 'Cluster Tool',
|
|
45
|
+
icon = 'speedometer2',
|
|
46
46
|
iconOnlyWhenCollapsed = true,
|
|
47
47
|
onAction,
|
|
48
|
-
actionButtonLabel = 'Process',
|
|
48
|
+
actionButtonLabel = 'Process Cluster',
|
|
49
49
|
featureIcon = 'geo-alt-fill',
|
|
50
50
|
idPropertyOptions = ['siteId', 'cellName','id'],
|
|
51
51
|
defaultIdProperty = 'siteId'
|
|
@@ -66,6 +66,9 @@
|
|
|
66
66
|
let selectionCount = $derived(store.count);
|
|
67
67
|
let hasSelection = $derived(selectionCount > 0);
|
|
68
68
|
|
|
69
|
+
// Track collapsed state
|
|
70
|
+
let isCollapsed = $state(false);
|
|
71
|
+
|
|
69
72
|
// Subscribe to map store and initialize when map becomes available
|
|
70
73
|
let unsubscribe: (() => void) | null = null;
|
|
71
74
|
|
|
@@ -78,6 +81,8 @@
|
|
|
78
81
|
if (map && !store['map']) {
|
|
79
82
|
console.log('[FeatureSelectionControl] Setting map on selection store');
|
|
80
83
|
store.setMap(map);
|
|
84
|
+
// Enable selection mode on mount (control starts collapsed=false by default)
|
|
85
|
+
store.enableSelectionMode();
|
|
81
86
|
}
|
|
82
87
|
});
|
|
83
88
|
});
|
|
@@ -91,8 +96,15 @@
|
|
|
91
96
|
store.destroy();
|
|
92
97
|
});
|
|
93
98
|
|
|
94
|
-
function
|
|
95
|
-
|
|
99
|
+
function handleCollapseToggle(collapsed: boolean) {
|
|
100
|
+
isCollapsed = collapsed;
|
|
101
|
+
// When control is expanded, enable selection mode
|
|
102
|
+
// When control is collapsed, disable selection mode
|
|
103
|
+
if (collapsed) {
|
|
104
|
+
store.disableSelectionMode();
|
|
105
|
+
} else {
|
|
106
|
+
store.enableSelectionMode();
|
|
107
|
+
}
|
|
96
108
|
}
|
|
97
109
|
|
|
98
110
|
function handleIdPropertyChange(event: Event) {
|
|
@@ -127,32 +139,8 @@
|
|
|
127
139
|
}
|
|
128
140
|
</script>
|
|
129
141
|
|
|
130
|
-
<MapControl {position} {title} {icon} {iconOnlyWhenCollapsed} collapsible={true}>
|
|
142
|
+
<MapControl {position} {title} {icon} {iconOnlyWhenCollapsed} collapsible={true} onCollapseToggle={handleCollapseToggle}>
|
|
131
143
|
<div class="feature-selection-control">
|
|
132
|
-
<!-- Selection Mode Toggle -->
|
|
133
|
-
<div class="selection-mode-toggle mb-3">
|
|
134
|
-
<div class="form-check form-switch">
|
|
135
|
-
<input
|
|
136
|
-
type="checkbox"
|
|
137
|
-
class="form-check-input"
|
|
138
|
-
id="feature-selection-mode-toggle"
|
|
139
|
-
checked={store.selectionMode}
|
|
140
|
-
onchange={handleToggleMode}
|
|
141
|
-
/>
|
|
142
|
-
<label class="form-check-label" for="feature-selection-mode-toggle">
|
|
143
|
-
Selection Mode
|
|
144
|
-
<span class="badge ms-2" class:bg-success={store.selectionMode} class:bg-secondary={!store.selectionMode}>
|
|
145
|
-
{store.selectionMode ? 'ON' : 'OFF'}
|
|
146
|
-
</span>
|
|
147
|
-
</label>
|
|
148
|
-
</div>
|
|
149
|
-
{#if store.selectionMode}
|
|
150
|
-
<small class="text-muted d-block mt-1">
|
|
151
|
-
Click any feature on the map to select
|
|
152
|
-
</small>
|
|
153
|
-
{/if}
|
|
154
|
-
</div>
|
|
155
|
-
|
|
156
144
|
<!-- ID Property Selector -->
|
|
157
145
|
<div class="mb-3">
|
|
158
146
|
<label for="id-property-select" class="form-label small">Select By</label>
|
|
@@ -171,7 +159,7 @@
|
|
|
171
159
|
<!-- Selection Stats -->
|
|
172
160
|
<div class="selection-stats mb-2">
|
|
173
161
|
<strong>{selectionCount}</strong>
|
|
174
|
-
{selectionCount === 1 ? '
|
|
162
|
+
{selectionCount === 1 ? 'item' : 'items'} selected
|
|
175
163
|
</div>
|
|
176
164
|
|
|
177
165
|
<!-- Action Buttons -->
|
|
@@ -225,7 +213,8 @@
|
|
|
225
213
|
{:else}
|
|
226
214
|
<div class="text-muted small text-center py-2">
|
|
227
215
|
<i class="bi bi-inbox"></i>
|
|
228
|
-
<div class="mt-1">No
|
|
216
|
+
<div class="mt-1">No items selected</div>
|
|
217
|
+
<div class="mt-1">Click on cells or sites</div>
|
|
229
218
|
</div>
|
|
230
219
|
{/if}
|
|
231
220
|
|
|
@@ -27,6 +27,8 @@
|
|
|
27
27
|
collapsible?: boolean;
|
|
28
28
|
/** Initial collapsed state */
|
|
29
29
|
initiallyCollapsed?: boolean;
|
|
30
|
+
/** Optional callback when collapse state changes */
|
|
31
|
+
onCollapseToggle?: (collapsed: boolean) => void;
|
|
30
32
|
/** Custom CSS class for the container */
|
|
31
33
|
className?: string;
|
|
32
34
|
/** Child content */
|
|
@@ -44,13 +46,12 @@
|
|
|
44
46
|
iconOnlyWhenCollapsed = true,
|
|
45
47
|
collapsible = true,
|
|
46
48
|
initiallyCollapsed = true,
|
|
49
|
+
onCollapseToggle,
|
|
47
50
|
className = '',
|
|
48
51
|
children,
|
|
49
52
|
edgeOffset = '12px',
|
|
50
53
|
controlWidth = '420px'
|
|
51
54
|
}: Props = $props();
|
|
52
|
-
|
|
53
|
-
|
|
54
55
|
const mapStore = tryUseMapbox();
|
|
55
56
|
|
|
56
57
|
if (!mapStore) {
|
|
@@ -113,6 +114,10 @@
|
|
|
113
114
|
|
|
114
115
|
function toggleCollapse() {
|
|
115
116
|
collapsed = !collapsed;
|
|
117
|
+
// Call the callback if provided
|
|
118
|
+
if (onCollapseToggle) {
|
|
119
|
+
onCollapseToggle(collapsed);
|
|
120
|
+
}
|
|
116
121
|
}
|
|
117
122
|
</script>
|
|
118
123
|
|
|
@@ -11,6 +11,8 @@ interface Props {
|
|
|
11
11
|
collapsible?: boolean;
|
|
12
12
|
/** Initial collapsed state */
|
|
13
13
|
initiallyCollapsed?: boolean;
|
|
14
|
+
/** Optional callback when collapse state changes */
|
|
15
|
+
onCollapseToggle?: (collapsed: boolean) => void;
|
|
14
16
|
/** Custom CSS class for the container */
|
|
15
17
|
className?: string;
|
|
16
18
|
/** Child content */
|