@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="Any Feature"
236
- icon="cursor-fill"
235
+ title="Cluster Tool"
236
+ icon="speedometer2"
237
237
  iconOnlyWhenCollapsed={useIconHeaders}
238
238
  onAction={handleProcessFeatures}
239
- actionButtonLabel="Process Features"
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 = 'Feature Selection',
45
- icon = 'check2-square',
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 handleToggleMode() {
95
- store.toggleSelectionMode();
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 ? 'feature' : 'features'} selected
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 features selected</div>
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 */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@smartnet360/svelte-components",
3
- "version": "0.0.80",
3
+ "version": "0.0.81",
4
4
  "scripts": {
5
5
  "dev": "vite dev",
6
6
  "build": "vite build && npm run prepack",