@likable-hair/svelte 4.2.1 → 4.2.3

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.
@@ -1,4 +1,4 @@
1
- <script lang="ts">import './DashboardShaper.css';
1
+ <script lang="ts" generics="Data, WidgetName extends string">import './DashboardShaper.css';
2
2
  import lodash from 'lodash';
3
3
  import { Dialog, Icon } from "../../..";
4
4
  import { createId } from "@paralleldrive/cuid2";
@@ -21,11 +21,12 @@ function calculateLocalWidgetsFromWidgets() {
21
21
  return {
22
22
  widget: {
23
23
  id: w.id,
24
- componentName: w.componentName,
24
+ name: w.name,
25
25
  height: w.height,
26
26
  width: w.width,
27
27
  left: w.left,
28
28
  top: w.top,
29
+ data: w.data,
29
30
  },
30
31
  columnSpanFrom: w.left,
31
32
  columnSpanTo: w.left + w.width,
@@ -149,7 +150,7 @@ function calculateWidgetsFromLocalWidgets() {
149
150
  widgets = widgetCells?.map((lWidget) => {
150
151
  return {
151
152
  id: lWidget.widget.id,
152
- componentName: lWidget.widget.componentName,
153
+ name: lWidget.widget.name,
153
154
  height: lWidget.widget.height,
154
155
  width: lWidget.widget.width,
155
156
  left: lWidget.widget.left,
@@ -180,9 +181,15 @@ function availableSizes(params) {
180
181
  <div class="widget-cell-preview"></div>
181
182
  {:else}
182
183
  {#if widgetCellSnippet}
183
- {@render widgetCellSnippet({ widgetCell, removeWidgetCell })}
184
+ {@render widgetCellSnippet({
185
+ widgetCell: {
186
+ ...widgetCell,
187
+ title: availableWidgetCells.find((awc) => awc.name === widgetCell.widget?.name)?.title
188
+ },
189
+ removeWidgetCell
190
+ })}
184
191
  {:else}
185
- {widgetCell.widget.componentName}
192
+ {widgetCell.widget.name}
186
193
  {/if}
187
194
  {/if}
188
195
  </div>
@@ -245,9 +252,9 @@ function availableSizes(params) {
245
252
  availableSizes: ws.availableSizes
246
253
  }).length > 0)
247
254
  .sort((a, b) => {
248
- if (a.label == 'Placeholder') return -1
249
- if (a.label < b.label) return -1
250
- if (a.label > b.label) return 1
255
+ if (a.title == 'Placeholder') return -1
256
+ if (a.title < b.title) return -1
257
+ if (a.title > b.title) return 1
251
258
  return 0
252
259
  }) as widgetSpec
253
260
  }
@@ -256,7 +263,7 @@ function availableSizes(params) {
256
263
  {#if widgetSpec.icon}
257
264
  <Icon name={widgetSpec.icon} --icon-size="30px" />
258
265
  {/if}
259
- <div class="widget-title">{widgetSpec.label}</div>
266
+ <div class="widget-title">{widgetSpec.title}</div>
260
267
  <div class="widget-desc">{widgetSpec.description}</div>
261
268
  </div>
262
269
 
@@ -273,7 +280,7 @@ function availableSizes(params) {
273
280
  addWidgetCell({
274
281
  widget: {
275
282
  id: createId(),
276
- componentName: widgetSpec.widgetComponentName,
283
+ name: widgetSpec.name,
277
284
  height: sizes[0],
278
285
  width: sizes[1],
279
286
  top: addWidgetInfo!.fromRow,
@@ -337,15 +344,15 @@ function availableSizes(params) {
337
344
 
338
345
  .header {
339
346
  display: flex;
340
- padding: 30px 24px 16px;
347
+ padding: 20px;
341
348
  gap: 12px;
342
349
  background-color: var(--dashboard-shaper-dialog-header-background-color, var(--dashboard-shaper-default-dialog-header-background-color));
343
350
  border-block-end: 1px solid rgb(var(--global-color-contrast-100));
344
- height: 35px;
351
+ height: min-content;
345
352
  }
346
353
 
347
354
  .title {
348
- font-size: x-large;
355
+ font-size: 1.35rem;
349
356
  font-weight: bold;
350
357
  text-align: center;
351
358
  }
@@ -1,104 +1,77 @@
1
1
  import './DashboardShaper.css';
2
2
  import type { Snippet } from "svelte";
3
- declare const DashboardShaper: import("svelte").Component<{
4
- layoutWidth?: number;
5
- layoutHeight?: number;
6
- widgets: {
7
- id: number | string;
8
- componentName: string;
9
- height: number;
10
- width: number;
11
- left: number;
12
- top: number;
13
- }[];
14
- availableWidgetCells: {
15
- widgetComponentName: string;
16
- label: string;
17
- description?: string;
18
- icon: string;
19
- availableSizes: [number, number][];
20
- }[];
21
- someRowSlotEmpty?: boolean;
22
- preview?: boolean;
23
- canAdd?: boolean;
24
- lang?: "it" | "en";
25
- onaddWidgetCell?: (event: {
26
- widgetCell: {
27
- widget: {
28
- id: number | string;
29
- componentName: string;
30
- height: number;
31
- width: number;
32
- left: number;
33
- top: number;
34
- };
35
- columnSpanFrom: number;
36
- columnSpanTo: number;
37
- rowSpanFrom: number;
38
- rowSpanTo: number;
39
- availableHeight?: number;
40
- availableWidth?: number;
41
- };
42
- }) => void;
43
- onremoveWidgetCell?: (event: {
44
- widgetCell: {
45
- widget: {
46
- id: number | string;
47
- componentName: string;
48
- height: number;
49
- width: number;
50
- left: number;
51
- top: number;
3
+ declare class __sveltets_Render<Data, WidgetName extends string> {
4
+ props(): {
5
+ layoutWidth?: number;
6
+ layoutHeight?: number;
7
+ widgets: {
8
+ id: number | string;
9
+ name: WidgetName;
10
+ height: number;
11
+ width: number;
12
+ left: number;
13
+ top: number;
14
+ data?: Data | undefined;
15
+ }[];
16
+ availableWidgetCells: {
17
+ name: WidgetName;
18
+ title: string;
19
+ description?: string;
20
+ icon: string;
21
+ availableSizes: [number, number][];
22
+ }[];
23
+ someRowSlotEmpty?: boolean;
24
+ preview?: boolean;
25
+ canAdd?: boolean;
26
+ lang?: "it" | "en";
27
+ onaddWidgetCell?: ((event: {
28
+ widgetCell: {
29
+ widget: {
30
+ id: number | string;
31
+ name: WidgetName;
32
+ height: number;
33
+ width: number;
34
+ left: number;
35
+ top: number;
36
+ data?: Data | undefined;
37
+ };
38
+ columnSpanFrom: number;
39
+ columnSpanTo: number;
40
+ rowSpanFrom: number;
41
+ rowSpanTo: number;
42
+ availableHeight?: number;
43
+ availableWidth?: number;
52
44
  };
53
- columnSpanFrom: number;
54
- columnSpanTo: number;
55
- rowSpanFrom: number;
56
- rowSpanTo: number;
57
- availableHeight?: number;
58
- availableWidth?: number;
59
- };
60
- }) => void;
61
- widgetCellSnippet?: Snippet<[{
62
- widgetCell: Omit<{
63
- widget: {
64
- id: number | string;
65
- componentName: string;
66
- height: number;
67
- width: number;
68
- left: number;
69
- top: number;
45
+ }) => void) | undefined;
46
+ onremoveWidgetCell?: ((event: {
47
+ widgetCell: {
48
+ widget: {
49
+ id: number | string;
50
+ name: WidgetName;
51
+ height: number;
52
+ width: number;
53
+ left: number;
54
+ top: number;
55
+ data?: Data | undefined;
56
+ };
57
+ columnSpanFrom: number;
58
+ columnSpanTo: number;
59
+ rowSpanFrom: number;
60
+ rowSpanTo: number;
61
+ availableHeight?: number;
62
+ availableWidth?: number;
70
63
  };
71
- columnSpanFrom: number;
72
- columnSpanTo: number;
73
- rowSpanFrom: number;
74
- rowSpanTo: number;
75
- availableHeight?: number;
76
- availableWidth?: number;
77
- }, "widget"> & {
78
- widget?: {
79
- id: number | string;
80
- componentName: string;
81
- height: number;
82
- width: number;
83
- left: number;
84
- top: number;
85
- } | undefined;
86
- };
87
- removeWidgetCell: (params: {
88
- id: string | number;
89
- }) => void;
90
- }]>;
91
- widgetSelectionDialogHeaderSnippet?: Snippet<[]>;
92
- addWidgetButtonSnippet?: Snippet<[{
93
- handleAddClick: (params: {
94
- slot: Omit<{
64
+ }) => void) | undefined;
65
+ widgetCellSnippet?: Snippet<[{
66
+ widgetCell: Omit<{
95
67
  widget: {
96
68
  id: number | string;
97
- componentName: string;
69
+ name: WidgetName;
98
70
  height: number;
99
71
  width: number;
100
72
  left: number;
101
73
  top: number;
74
+ data?: Data | undefined;
102
75
  };
103
76
  columnSpanFrom: number;
104
77
  columnSpanTo: number;
@@ -109,23 +82,60 @@ declare const DashboardShaper: import("svelte").Component<{
109
82
  }, "widget"> & {
110
83
  widget?: {
111
84
  id: number | string;
112
- componentName: string;
85
+ name: WidgetName;
113
86
  height: number;
114
87
  width: number;
115
88
  left: number;
116
89
  top: number;
90
+ data?: Data | undefined;
117
91
  } | undefined;
92
+ } & {
93
+ title?: string;
118
94
  };
119
- }) => void;
120
- slot: Parameters<(params: {
95
+ removeWidgetCell: (params: {
96
+ id: string | number;
97
+ }) => void;
98
+ }]> | undefined;
99
+ widgetSelectionDialogHeaderSnippet?: Snippet<[]>;
100
+ addWidgetButtonSnippet?: Snippet<[{
101
+ handleAddClick: (params: {
102
+ slot: Omit<{
103
+ widget: {
104
+ id: number | string;
105
+ name: WidgetName;
106
+ height: number;
107
+ width: number;
108
+ left: number;
109
+ top: number;
110
+ data?: Data | undefined;
111
+ };
112
+ columnSpanFrom: number;
113
+ columnSpanTo: number;
114
+ rowSpanFrom: number;
115
+ rowSpanTo: number;
116
+ availableHeight?: number;
117
+ availableWidth?: number;
118
+ }, "widget"> & {
119
+ widget?: {
120
+ id: number | string;
121
+ name: WidgetName;
122
+ height: number;
123
+ width: number;
124
+ left: number;
125
+ top: number;
126
+ data?: Data | undefined;
127
+ } | undefined;
128
+ };
129
+ }) => void;
121
130
  slot: Omit<{
122
131
  widget: {
123
132
  id: number | string;
124
- componentName: string;
133
+ name: WidgetName;
125
134
  height: number;
126
135
  width: number;
127
136
  left: number;
128
137
  top: number;
138
+ data?: Data | undefined;
129
139
  };
130
140
  columnSpanFrom: number;
131
141
  columnSpanTo: number;
@@ -136,15 +146,28 @@ declare const DashboardShaper: import("svelte").Component<{
136
146
  }, "widget"> & {
137
147
  widget?: {
138
148
  id: number | string;
139
- componentName: string;
149
+ name: WidgetName;
140
150
  height: number;
141
151
  width: number;
142
152
  left: number;
143
153
  top: number;
154
+ data?: Data | undefined;
144
155
  } | undefined;
145
156
  };
146
- }) => void>[0]["slot"];
147
- }]>;
148
- }, {}, "widgets" | "someRowSlotEmpty">;
149
- type DashboardShaper = ReturnType<typeof DashboardShaper>;
157
+ }]> | undefined;
158
+ };
159
+ events(): {};
160
+ slots(): {};
161
+ bindings(): "widgets" | "someRowSlotEmpty";
162
+ exports(): {};
163
+ }
164
+ interface $$IsomorphicComponent {
165
+ new <Data, WidgetName extends string>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<Data, WidgetName>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<Data, WidgetName>['props']>, ReturnType<__sveltets_Render<Data, WidgetName>['events']>, ReturnType<__sveltets_Render<Data, WidgetName>['slots']>> & {
166
+ $$bindings?: ReturnType<__sveltets_Render<Data, WidgetName>['bindings']>;
167
+ } & ReturnType<__sveltets_Render<Data, WidgetName>['exports']>;
168
+ <Data, WidgetName extends string>(internal: unknown, props: ReturnType<__sveltets_Render<Data, WidgetName>['props']> & {}): ReturnType<__sveltets_Render<Data, WidgetName>['exports']>;
169
+ z_$$bindings?: ReturnType<__sveltets_Render<any, any>['bindings']>;
170
+ }
171
+ declare const DashboardShaper: $$IsomorphicComponent;
172
+ type DashboardShaper<Data, WidgetName extends string> = InstanceType<typeof DashboardShaper<Data, WidgetName>>;
150
173
  export default DashboardShaper;
@@ -1,32 +1,36 @@
1
1
  <script lang="ts" generics="Data extends string">import SimpleTextField from "../../simple/forms/SimpleTextField.svelte";
2
2
  import MenuOrDrawer from "../common/MenuOrDrawer.svelte";
3
- import PeriodSelector from "./PeriodSelector.svelte";
3
+ import PeriodSelector, { getPeriodLabel } from "./PeriodSelector.svelte"; // Import helper
4
4
  import Button from "../../simple/buttons/Button.svelte";
5
5
  import { fly } from "svelte/transition";
6
6
  import Icon from "../../simple/media/Icon.svelte";
7
- let { onchange, timespanSettings = $bindable(), valid = $bindable(), isSelectionMode = $bindable(), lang = 'en', timeRangeLabel = lang == 'en' ? 'Select range mode' : 'Seleziona una modalità', ...rest } = $props();
8
- let open = $state(false), input = $state(), text = $derived(timeRangeLabel);
7
+ let { onchange, timespanSettings = $bindable(), valid = $bindable(), isSelectionMode = $bindable(), lang = 'en', quickSelectOptions, ...rest } = $props();
8
+ let open = $state(false), input = $state(), text = $derived(getPeriodLabel(timespanSettings, lang, quickSelectOptions));
9
9
  function handleChange(event) {
10
10
  if (timespanSettings?.method == 'quick') {
11
11
  open = false;
12
12
  }
13
13
  onchange?.(event);
14
14
  }
15
+ function openMenu() {
16
+ if (!open)
17
+ open = true;
18
+ else if (valid)
19
+ open = false;
20
+ }
15
21
  </script>
16
22
 
17
23
  <SimpleTextField
18
24
  onfocus={() => open = true}
19
- oninput={() => text = timeRangeLabel}
20
- bind:value={text}
25
+ value={text}
21
26
  bind:input
27
+ disabled
22
28
  >
23
29
  {#snippet appendInnerSnippet()}
24
30
  <Icon
25
31
  name='mdi-chevron-down'
26
- onclick={() => {
27
- if (!open) open = true
28
- else if (valid) open = false
29
- }}
32
+ onclick={openMenu}
33
+ --icon-size="20px"
30
34
  ></Icon>
31
35
  {/snippet}
32
36
  </SimpleTextField>
@@ -59,8 +63,8 @@ function handleChange(event) {
59
63
  onchange={handleChange}
60
64
  bind:timespanSettings
61
65
  bind:valid
62
- bind:timeRangeLabel
63
66
  bind:isSelectionMode
67
+ {quickSelectOptions}
64
68
  {lang}
65
69
  {...rest}
66
70
  ></PeriodSelector>
@@ -1,15 +1,4 @@
1
- <script module lang="ts">"use strict";
2
- </script>
3
-
4
- <script lang="ts" generics="T extends string = string">import Dropdown from "./Dropdown.svelte";
5
- import SimpleTextField from "../../simple/forms/SimpleTextField.svelte";
6
- import SelectableVerticalList from "../../simple/lists/SelectableVerticalList.svelte";
7
- import DatePicker from "../../simple/dates/DatePicker.svelte";
8
- import { fly } from "svelte/transition";
9
- import Icon from "../../simple/media/Icon.svelte";
10
- import Chip from "../../simple/navigation/Chip.svelte";
11
- import { tick } from "svelte";
12
- const defaultQuickOptions = {
1
+ <script module lang="ts">export const defaultQuickOptions = {
13
2
  'it': [
14
3
  { value: 'today', label: 'Oggi' },
15
4
  { value: 'this-week', label: 'Questa settimana' },
@@ -29,7 +18,56 @@ const defaultQuickOptions = {
29
18
  { value: 'total', label: 'All time' },
30
19
  ],
31
20
  };
32
- let { timespanSettings = $bindable(), lang = 'en', quickSelectOptions = defaultQuickOptions[lang], valid = $bindable(), mode = 'default', locale = lang, showTimeRangeLabel = false, isSelectionMode = $bindable(), timeRangeLabel = $bindable(), onchange, quickRangeConvertor, } = $props();
21
+ export function getPeriodLabel(settings, lang = 'en', quickOptions = defaultQuickOptions[lang]) {
22
+ if (!settings?.method)
23
+ return lang == 'en' ? 'Select range mode' : 'Seleziona una modalità';
24
+ if (settings.method === 'picker') {
25
+ let fromStr = settings.values?.from ? new Date(settings.values.from).toLocaleDateString(lang) : '';
26
+ let toStr = settings.values?.to ? new Date(settings.values.to).toLocaleDateString(lang) : '';
27
+ if (fromStr && toStr)
28
+ return `${lang == 'en' ? 'From' : 'Dal'} ${fromStr} ${lang == 'en' ? 'to' : 'al'} ${toStr}`;
29
+ if (fromStr)
30
+ return `${lang == 'en' ? 'From' : 'Dal'} ${fromStr}`;
31
+ if (toStr)
32
+ return `${lang == 'en' ? 'Until' : 'Fino al'} ${toStr}`;
33
+ return lang == 'en' ? 'Select dates' : 'Seleziona date';
34
+ }
35
+ if (settings.method === 'quick') {
36
+ return quickOptions.find(o => o.value === settings.values)?.label || (lang == 'en' ? 'Select a period' : 'Seleziona un periodo');
37
+ }
38
+ if (settings.method === 'rolling') {
39
+ const num = settings.values?.numberOfUnits;
40
+ const unit = settings.values?.measurementUnit;
41
+ const dir = settings.values?.direction ?? 'last';
42
+ if (!unit || !num)
43
+ return lang == 'en' ? 'Configure rolling window' : 'Configura periodo';
44
+ let unitLabel = '';
45
+ if (unit === 'days')
46
+ unitLabel = lang == 'en' ? 'Days' : 'Giorni';
47
+ if (unit === 'weeks')
48
+ unitLabel = lang == 'en' ? 'Weeks' : 'Settimane';
49
+ if (unit === 'months')
50
+ unitLabel = lang == 'en' ? 'Months' : 'Mesi';
51
+ if (unit === 'years')
52
+ unitLabel = lang == 'en' ? 'Years' : 'Anni';
53
+ const dirLabel = dir === 'next'
54
+ ? (lang == 'en' ? 'Next' : unit == 'weeks' ? 'Prossime' : 'Prossimi')
55
+ : (lang == 'en' ? 'Last' : unit == 'weeks' ? 'Ultime' : 'Ultimi');
56
+ return `${dirLabel} ${num} ${unitLabel}`;
57
+ }
58
+ return lang == 'en' ? 'Select range mode' : 'Seleziona una modalità';
59
+ }
60
+ </script>
61
+
62
+ <script lang="ts" generics="T extends string = string">import Dropdown from "./Dropdown.svelte";
63
+ import SimpleTextField from "../../simple/forms/SimpleTextField.svelte";
64
+ import SelectableVerticalList from "../../simple/lists/SelectableVerticalList.svelte";
65
+ import DatePicker from "../../simple/dates/DatePicker.svelte";
66
+ import { fly } from "svelte/transition";
67
+ import Icon from "../../simple/media/Icon.svelte";
68
+ import Chip from "../../simple/navigation/Chip.svelte";
69
+ import { tick } from "svelte";
70
+ let { timespanSettings = $bindable(), lang = 'en', quickSelectOptions = defaultQuickOptions[lang], valid = $bindable(), mode = 'default', locale = lang, showTimeRangeLabel = false, isSelectionMode = $bindable(), onchange, quickRangeConvertor, setTimespanLabel, } = $props();
33
71
  if (!timespanSettings) {
34
72
  timespanSettings = {};
35
73
  }
@@ -40,33 +78,7 @@ $effect(() => {
40
78
  if (localValid != valid)
41
79
  valid = localValid;
42
80
  });
43
- $effect(() => {
44
- if (!timespanSettings?.method) {
45
- timeRangeLabel = lang == 'en' ? 'Select range mode' : 'Seleziona una modalità';
46
- return;
47
- }
48
- if (timespanSettings.method == 'picker') {
49
- timeRangeLabel = formatDateLabel(timespanSettings.values?.from, timespanSettings.values?.to);
50
- return;
51
- }
52
- else if (timespanSettings.method == 'quick') {
53
- timeRangeLabel = quickSelectOptions.find(o => o.value == timespanSettings?.values)?.label || (lang == 'en' ? 'Select a period' : 'Seleziona un periodo');
54
- return;
55
- }
56
- else if (timespanSettings.method == 'rolling') {
57
- const num = rollingNumberOfUnits ?? undefined;
58
- const unitLabel = rollingMeasurementOfUnit?.label;
59
- const dirLabel = rollingDirection === 'next'
60
- ? lang == 'en' ? 'Next' : rollingMeasurementOfUnit?.value == 'weeks' ? 'Prossime' : 'Prossimi'
61
- : lang == 'en' ? 'Last' : rollingMeasurementOfUnit?.value == 'weeks' ? 'Ultime' : 'Ultimi';
62
- if (!unitLabel || !num) {
63
- timeRangeLabel = lang == 'en' ? 'Configure rolling window' : 'Configura periodo';
64
- return;
65
- }
66
- timeRangeLabel = `${dirLabel} ${num} ${unitLabel}`;
67
- return;
68
- }
69
- });
81
+ let timeRangeLabel = $derived(setTimespanLabel ? setTimespanLabel({ timespanSettings }) : getPeriodLabel(timespanSettings, lang, quickSelectOptions));
70
82
  let rollingAutocompleteValues = [
71
83
  { value: 'days', label: lang == 'en' ? 'Days' : 'Giorni' },
72
84
  { value: 'weeks', label: lang == 'en' ? 'Weeks' : 'Settimane' },
@@ -14,12 +14,26 @@ type TimespanMap<T extends string> = {
14
14
  rolling: RollingSelectValues;
15
15
  picker: PickerSelectValues;
16
16
  };
17
- type TimespanSettings<T extends string = string> = {
17
+ export type TimespanSettings<T extends string = string> = {
18
18
  [K in keyof TimespanMap<T>]: {
19
19
  method?: K;
20
20
  values?: TimespanMap<T>[K];
21
21
  };
22
22
  }[keyof TimespanMap<T>];
23
+ export declare const defaultQuickOptions: {
24
+ it: {
25
+ value: string;
26
+ label: string;
27
+ }[];
28
+ en: {
29
+ value: string;
30
+ label: string;
31
+ }[];
32
+ };
33
+ export declare function getPeriodLabel<T extends string>(settings: TimespanSettings<T> | undefined, lang?: 'en' | 'it', quickOptions?: {
34
+ value: string | T;
35
+ label: string;
36
+ }[]): string;
23
37
  declare class __sveltets_Render<T extends string = string> {
24
38
  props(): {
25
39
  timespanSettings?: TimespanSettings<T> | undefined;
@@ -32,7 +46,6 @@ declare class __sveltets_Render<T extends string = string> {
32
46
  lang?: "it" | "en";
33
47
  locale?: "it" | "en";
34
48
  showTimeRangeLabel?: boolean;
35
- timeRangeLabel?: string;
36
49
  isSelectionMode?: boolean;
37
50
  onchange?: ((event: {
38
51
  timespanSettings?: TimespanSettings<T> | undefined;
@@ -41,10 +54,13 @@ declare class __sveltets_Render<T extends string = string> {
41
54
  from?: Date;
42
55
  to: Date;
43
56
  } | undefined) | undefined;
57
+ setTimespanLabel?: ((params: {
58
+ timespanSettings: TimespanSettings<T> | undefined;
59
+ }) => string) | undefined;
44
60
  };
45
61
  events(): {};
46
62
  slots(): {};
47
- bindings(): "timespanSettings" | "valid" | "isSelectionMode" | "timeRangeLabel";
63
+ bindings(): "timespanSettings" | "valid" | "isSelectionMode";
48
64
  exports(): {};
49
65
  }
50
66
  interface $$IsomorphicComponent {
@@ -257,6 +257,7 @@ function handleSelect(item, shiftKeyPressed) {
257
257
  <div
258
258
  style:display=flex
259
259
  style:align-items=middle
260
+ style:justify-content=center
260
261
  style:padding="8px 0px"
261
262
  >
262
263
  <Checkbox
@@ -460,7 +460,6 @@ function resizeHeader(th, header) {
460
460
  >
461
461
  <div
462
462
  class="row-append-cell"
463
- style="display: inline-block; white-space: nowrap;"
464
463
  >
465
464
  {@render appendSnippet?.({ index: i, item })}
466
465
  </div>
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@likable-hair/svelte",
3
3
  "description": "A Svelte component for likablehair and others",
4
- "version": "4.2.1",
4
+ "version": "4.2.3",
5
5
  "scripts": {
6
6
  "host": "vite --host",
7
7
  "dev": "vite dev",