@likable-hair/svelte 4.3.0 → 4.3.1
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/components/composed/common/MenuOrDrawer.svelte +17 -9
- package/dist/components/composed/common/MenuOrDrawer.svelte.d.ts +1 -1
- package/dist/components/composed/common/QuickActions.svelte +7 -3
- package/dist/components/composed/common/QuickActions.svelte.d.ts +2 -1
- package/dist/components/composed/dashboard/DashboardShaper.svelte +1 -10
- package/dist/components/composed/forms/Dropdown.svelte +3 -0
- package/dist/components/composed/forms/Dropdown.svelte.d.ts +1 -0
- package/dist/components/composed/forms/PeriodSelector.svelte +3 -1
- package/dist/components/composed/list/EnhancedPaginatedTable.svelte.d.ts +1 -0
- package/dist/components/composed/list/PaginatedTable.svelte +3 -0
- package/dist/components/composed/list/PaginatedTable.svelte.d.ts +2 -0
- package/dist/components/simple/common/Menu.svelte +3 -3
- package/dist/components/simple/forms/Autocomplete.svelte +48 -48
- package/dist/components/simple/forms/SimpleTextField.svelte +1 -1
- package/dist/components/simple/forms/SimpleTextField.svelte.d.ts +1 -1
- package/dist/utils/filters/filters.js +12 -3
- package/package.json +1 -1
|
@@ -18,14 +18,16 @@
|
|
|
18
18
|
]>
|
|
19
19
|
}
|
|
20
20
|
|
|
21
|
-
let {
|
|
21
|
+
let {
|
|
22
22
|
open = $bindable(),
|
|
23
23
|
drawerProps,
|
|
24
|
-
menuProps,
|
|
24
|
+
menuProps = $bindable(),
|
|
25
25
|
children,
|
|
26
26
|
}: Props = $props();
|
|
27
27
|
|
|
28
|
-
|
|
28
|
+
if (!menuProps) menuProps = {}
|
|
29
|
+
|
|
30
|
+
const menuPropsDefaultValue: Omit<ComponentProps<typeof Menu>, 'open'> = {
|
|
29
31
|
closeOnClickOutside: true,
|
|
30
32
|
_boxShadow: "rgb(var(--global-color-grey-900), .5) 0px 2px 4px",
|
|
31
33
|
_height: "fit-content",
|
|
@@ -37,31 +39,37 @@
|
|
|
37
39
|
}
|
|
38
40
|
|
|
39
41
|
let finalMenuProps = $derived(
|
|
40
|
-
lodash.
|
|
42
|
+
lodash.merge({}, menuPropsDefaultValue, menuProps)
|
|
41
43
|
)
|
|
42
44
|
|
|
43
|
-
const drawerPropsDefaultValue = {
|
|
45
|
+
const drawerPropsDefaultValue: Omit<ComponentProps<typeof Drawer>, 'open'> = {
|
|
44
46
|
position: 'bottom'
|
|
45
47
|
}
|
|
46
48
|
|
|
47
49
|
let finalDrawerProps = $derived(
|
|
48
|
-
lodash.
|
|
50
|
+
lodash.merge({}, drawerPropsDefaultValue, drawerProps)
|
|
49
51
|
)
|
|
50
52
|
</script>
|
|
51
53
|
|
|
52
54
|
<MediaQuery>
|
|
53
|
-
{#snippet defaultSnippet({ mAndDown})}
|
|
55
|
+
{#snippet defaultSnippet({ mAndDown })}
|
|
54
56
|
{#if mAndDown}
|
|
55
57
|
<Drawer
|
|
56
|
-
bind:open={open}
|
|
57
58
|
{...finalDrawerProps}
|
|
59
|
+
bind:open={open}
|
|
58
60
|
>
|
|
59
61
|
{@render children?.({ isDrawer: true, isMenu: false })}
|
|
60
62
|
</Drawer>
|
|
61
63
|
{:else}
|
|
62
64
|
<Menu
|
|
63
|
-
bind:open={open}
|
|
64
65
|
{...finalMenuProps}
|
|
66
|
+
bind:open
|
|
67
|
+
bind:flipOnOverflow={menuProps.flipOnOverflow}
|
|
68
|
+
bind:refreshPosition={menuProps.refreshPosition}
|
|
69
|
+
bind:stayInViewport={menuProps.stayInViewport}
|
|
70
|
+
bind:activator={menuProps.activator}
|
|
71
|
+
bind:menuElement={menuProps.menuElement}
|
|
72
|
+
bind:openingId={menuProps.openingId}
|
|
65
73
|
>
|
|
66
74
|
{@render children?.({ isDrawer: false, isMenu: true })}
|
|
67
75
|
</Menu>
|
|
@@ -13,6 +13,6 @@ export interface Props {
|
|
|
13
13
|
}
|
|
14
14
|
]>;
|
|
15
15
|
}
|
|
16
|
-
declare const MenuOrDrawer: import("svelte").Component<Props, {}, "open">;
|
|
16
|
+
declare const MenuOrDrawer: import("svelte").Component<Props, {}, "open" | "menuProps">;
|
|
17
17
|
type MenuOrDrawer = ReturnType<typeof MenuOrDrawer>;
|
|
18
18
|
export default MenuOrDrawer;
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
|
|
13
13
|
<script lang="ts">
|
|
14
14
|
import { Button, Icon, mediaQuery, ToolTip } from "../../..";
|
|
15
|
-
import type { ComponentProps } from "svelte";
|
|
15
|
+
import type { ComponentProps, Snippet } from "svelte";
|
|
16
16
|
import { fly } from "svelte/transition";
|
|
17
17
|
import { cubicIn } from "svelte/easing";
|
|
18
18
|
import MenuOrDrawer from "./MenuOrDrawer.svelte";
|
|
@@ -25,6 +25,7 @@
|
|
|
25
25
|
position?: 'top' | 'bottom';
|
|
26
26
|
lang?: 'it' | 'en';
|
|
27
27
|
onClose?: () => void
|
|
28
|
+
selectedItemsTextSnippet?: Snippet<[]>
|
|
28
29
|
}
|
|
29
30
|
|
|
30
31
|
let {
|
|
@@ -34,6 +35,7 @@
|
|
|
34
35
|
position = 'top',
|
|
35
36
|
lang = 'en',
|
|
36
37
|
onClose,
|
|
38
|
+
selectedItemsTextSnippet,
|
|
37
39
|
}: Props = $props();
|
|
38
40
|
|
|
39
41
|
let actions: Action[] = $state([]),
|
|
@@ -110,8 +112,10 @@
|
|
|
110
112
|
if(onClose) onClose()
|
|
111
113
|
}}
|
|
112
114
|
>
|
|
113
|
-
{
|
|
114
|
-
|
|
115
|
+
{#if selectedItemsTextSnippet}{@render selectedItemsTextSnippet()}{:else}
|
|
116
|
+
{selectedItems} {lang == 'en' ? 'items selected' : 'righe selezionate'}
|
|
117
|
+
<Icon name="mdi-close" />
|
|
118
|
+
{/if}
|
|
115
119
|
</button>
|
|
116
120
|
</div>
|
|
117
121
|
<div class="select-actions-container">
|
|
@@ -8,7 +8,7 @@ export type Action = {
|
|
|
8
8
|
onClick: NonNullable<ComponentProps<typeof Button>['onclick']>;
|
|
9
9
|
};
|
|
10
10
|
import { Button } from "../../..";
|
|
11
|
-
import type { ComponentProps } from "svelte";
|
|
11
|
+
import type { ComponentProps, Snippet } from "svelte";
|
|
12
12
|
import './QuickActions.css';
|
|
13
13
|
interface Props {
|
|
14
14
|
selectedItems: number;
|
|
@@ -17,6 +17,7 @@ interface Props {
|
|
|
17
17
|
position?: 'top' | 'bottom';
|
|
18
18
|
lang?: 'it' | 'en';
|
|
19
19
|
onClose?: () => void;
|
|
20
|
+
selectedItemsTextSnippet?: Snippet<[]>;
|
|
20
21
|
}
|
|
21
22
|
declare const QuickActions: import("svelte").Component<Props, {}, "">;
|
|
22
23
|
type QuickActions = ReturnType<typeof QuickActions>;
|
|
@@ -272,16 +272,7 @@
|
|
|
272
272
|
}
|
|
273
273
|
|
|
274
274
|
function calculateWidgetsFromLocalWidgets() {
|
|
275
|
-
widgets = widgetCells?.map((lWidget) =>
|
|
276
|
-
return {
|
|
277
|
-
id: lWidget.widget.id,
|
|
278
|
-
name: lWidget.widget.name,
|
|
279
|
-
height: lWidget.widget.height,
|
|
280
|
-
width: lWidget.widget.width,
|
|
281
|
-
left: lWidget.widget.left,
|
|
282
|
-
top: lWidget.widget.top,
|
|
283
|
-
}
|
|
284
|
-
})
|
|
275
|
+
widgets = widgetCells?.map((lWidget) => lWidget.widget)
|
|
285
276
|
}
|
|
286
277
|
|
|
287
278
|
function closeAddWidgetDialog() {
|
|
@@ -23,6 +23,7 @@
|
|
|
23
23
|
height?: string;
|
|
24
24
|
minWidth?: string;
|
|
25
25
|
menuWidth?: string;
|
|
26
|
+
menuAnchor?: ComponentProps<typeof Autocomplete>['menuAnchor'];
|
|
26
27
|
mobileDrawer?: boolean;
|
|
27
28
|
disabled?: boolean;
|
|
28
29
|
onchange?: (event: {
|
|
@@ -61,6 +62,7 @@
|
|
|
61
62
|
height,
|
|
62
63
|
minWidth = 'none',
|
|
63
64
|
menuWidth = width,
|
|
65
|
+
menuAnchor,
|
|
64
66
|
mobileDrawer = false,
|
|
65
67
|
disabled = false,
|
|
66
68
|
onchange,
|
|
@@ -108,6 +110,7 @@
|
|
|
108
110
|
{height}
|
|
109
111
|
{menuWidth}
|
|
110
112
|
{itemLabelSnippet}
|
|
113
|
+
{menuAnchor}
|
|
111
114
|
>
|
|
112
115
|
{#snippet selectionContainerSnippet({ openMenu, handleKeyDown })}
|
|
113
116
|
<Button
|
|
@@ -83,7 +83,7 @@
|
|
|
83
83
|
|
|
84
84
|
const dirLabel = dir === 'next'
|
|
85
85
|
? (lang == 'en' ? 'Next' : unit == 'weeks' ? 'Prossime' : 'Prossimi')
|
|
86
|
-
: (lang == 'en' ? 'Last' : unit == 'weeks' ? '
|
|
86
|
+
: (lang == 'en' ? 'Last' : unit == 'weeks' ? 'Scorse' : 'Scorsi');
|
|
87
87
|
|
|
88
88
|
return `${dirLabel} ${num} ${unitLabel}`;
|
|
89
89
|
}
|
|
@@ -570,6 +570,7 @@
|
|
|
570
570
|
mobileDrawer
|
|
571
571
|
clearable={false}
|
|
572
572
|
menuWidth='fit-content'
|
|
573
|
+
menuAnchor='bottom'
|
|
573
574
|
openingId='rolling-direction'
|
|
574
575
|
></Dropdown>
|
|
575
576
|
</div>
|
|
@@ -581,6 +582,7 @@
|
|
|
581
582
|
oninput={() => handleRollingInput()}
|
|
582
583
|
--simple-textfield-width="100%"
|
|
583
584
|
--simple-textfield-margin-bottom="0px"
|
|
585
|
+
--simple-textfield-border-radius="4px"
|
|
584
586
|
></SimpleTextField>
|
|
585
587
|
</div>
|
|
586
588
|
|
|
@@ -146,6 +146,7 @@ declare function $$render<Item extends {
|
|
|
146
146
|
rowsPerPage: number;
|
|
147
147
|
}]> | undefined;
|
|
148
148
|
totalsSnippet?: import("svelte").Snippet<[]>;
|
|
149
|
+
selectedItemsTextSnippet?: ComponentProps<typeof import("../../..").QuickActions>["selectedItemsTextSnippet"];
|
|
149
150
|
} & {
|
|
150
151
|
headersToShowInTable: ComponentProps<typeof PaginatedTable<Item, Data>>["headers"];
|
|
151
152
|
pinnableColumns?: boolean;
|
|
@@ -105,6 +105,7 @@
|
|
|
105
105
|
]
|
|
106
106
|
>;
|
|
107
107
|
totalsSnippet?: Snippet<[]>
|
|
108
|
+
selectedItemsTextSnippet?: ComponentProps<typeof QuickActions>['selectedItemsTextSnippet']
|
|
108
109
|
}
|
|
109
110
|
|
|
110
111
|
let {
|
|
@@ -172,6 +173,7 @@
|
|
|
172
173
|
totalsSnippet,
|
|
173
174
|
oncolumnResize,
|
|
174
175
|
prependSnippet: prependSnippetInternal,
|
|
176
|
+
selectedItemsTextSnippet,
|
|
175
177
|
...rest
|
|
176
178
|
}: Props = $props();
|
|
177
179
|
|
|
@@ -374,6 +376,7 @@
|
|
|
374
376
|
selectedAll = false
|
|
375
377
|
selectedItems = []
|
|
376
378
|
}}
|
|
379
|
+
{selectedItemsTextSnippet}
|
|
377
380
|
/>
|
|
378
381
|
{/if}
|
|
379
382
|
|
|
@@ -5,6 +5,7 @@ import { type ComponentProps, type Snippet } from "svelte";
|
|
|
5
5
|
import Filters from "../search/Filters.svelte";
|
|
6
6
|
import type Builder from "../../../utils/filters/builder";
|
|
7
7
|
import QuickFilters from "../search/QuickFilters.svelte";
|
|
8
|
+
import { QuickActions } from "../../..";
|
|
8
9
|
import type { Action } from "../common/QuickActions.svelte";
|
|
9
10
|
declare function $$render<Item extends {
|
|
10
11
|
[key: string]: any;
|
|
@@ -145,6 +146,7 @@ declare function $$render<Item extends {
|
|
|
145
146
|
rowsPerPage: number;
|
|
146
147
|
}]>;
|
|
147
148
|
totalsSnippet?: Snippet<[]>;
|
|
149
|
+
selectedItemsTextSnippet?: ComponentProps<typeof QuickActions>["selectedItemsTextSnippet"];
|
|
148
150
|
};
|
|
149
151
|
exports: {};
|
|
150
152
|
bindings: "page" | "sortedBy" | "sortDirection" | "resizedColumnSizeWithPadding" | "filters" | "selectedItems" | "rowsPerPage" | "quickFilters" | "selectedAll";
|
|
@@ -56,7 +56,7 @@
|
|
|
56
56
|
_width = 'auto',
|
|
57
57
|
anchor = 'bottom',
|
|
58
58
|
closeOnClickOutside = false,
|
|
59
|
-
flipOnOverflow = $bindable(
|
|
59
|
+
flipOnOverflow = $bindable(),
|
|
60
60
|
inAnimation = fly,
|
|
61
61
|
inAnimationConfig = {
|
|
62
62
|
duration: 100,
|
|
@@ -68,8 +68,8 @@
|
|
|
68
68
|
duration: 100,
|
|
69
69
|
y: 10,
|
|
70
70
|
},
|
|
71
|
-
refreshPosition = $bindable(
|
|
72
|
-
stayInViewport = $bindable(
|
|
71
|
+
refreshPosition = $bindable(),
|
|
72
|
+
stayInViewport = $bindable(),
|
|
73
73
|
_borderRadius = undefined,
|
|
74
74
|
_boxShadow = undefined,
|
|
75
75
|
_left = undefined,
|
|
@@ -11,6 +11,13 @@
|
|
|
11
11
|
import "../../../css/main.css";
|
|
12
12
|
import "./Autocomplete.css";
|
|
13
13
|
import { scrollInMenu } from "../common/scroller";
|
|
14
|
+
import Chip from "../navigation/Chip.svelte";
|
|
15
|
+
import Menu from "../common/Menu.svelte";
|
|
16
|
+
import { type ComponentProps, type Snippet } from "svelte";
|
|
17
|
+
import SimpleTextField from "./SimpleTextField.svelte";
|
|
18
|
+
import MenuOrDrawer from "../../composed/common/MenuOrDrawer.svelte";
|
|
19
|
+
import Drawer from "../navigation/Drawer.svelte";
|
|
20
|
+
import Icon from "../media/Icon.svelte";
|
|
14
21
|
|
|
15
22
|
type ItemData = Item<Data>;
|
|
16
23
|
interface Props {
|
|
@@ -166,9 +173,35 @@
|
|
|
166
173
|
onclose,
|
|
167
174
|
}: Props = $props();
|
|
168
175
|
|
|
169
|
-
let
|
|
170
|
-
|
|
171
|
-
|
|
176
|
+
let focusedIndex: number | undefined = $state(undefined),
|
|
177
|
+
input: HTMLElement | undefined = $state(),
|
|
178
|
+
filteredItems: ItemData[] = $state(items),
|
|
179
|
+
notVisibleChipNumber = $derived(
|
|
180
|
+
Math.max(((values || []).length || 0) - (maxVisibleChips || 0), 0),
|
|
181
|
+
),
|
|
182
|
+
menuProps: NonNullable<ComponentProps<typeof MenuOrDrawer>['menuProps']> = $state({
|
|
183
|
+
_width: "",
|
|
184
|
+
_height: "auto",
|
|
185
|
+
_maxHeight: menuMaxHeight,
|
|
186
|
+
_boxShadow: menuBoxShadow,
|
|
187
|
+
_borderRadius: menuBorderRadius,
|
|
188
|
+
anchor: menuAnchor,
|
|
189
|
+
closeOnClickOutside: true,
|
|
190
|
+
stayInViewport: menuStayInViewport,
|
|
191
|
+
flipOnOverflow: menuFlipOnOverflow,
|
|
192
|
+
refreshPosition: false,
|
|
193
|
+
openingId: "autocomplete-menu",
|
|
194
|
+
menuElement: undefined,
|
|
195
|
+
})
|
|
196
|
+
|
|
197
|
+
$effect(() => {
|
|
198
|
+
menuProps._maxHeight = menuMaxHeight
|
|
199
|
+
menuProps._boxShadow = menuBoxShadow
|
|
200
|
+
menuProps._borderRadius = menuBorderRadius
|
|
201
|
+
menuProps.anchor = menuAnchor
|
|
202
|
+
menuProps.stayInViewport = menuStayInViewport
|
|
203
|
+
menuProps.flipOnOverflow = menuFlipOnOverflow
|
|
204
|
+
})
|
|
172
205
|
|
|
173
206
|
function select(item: ItemData) {
|
|
174
207
|
if (disabled) return;
|
|
@@ -238,10 +271,6 @@
|
|
|
238
271
|
else select(item);
|
|
239
272
|
}
|
|
240
273
|
|
|
241
|
-
let localMenuWidth: string | undefined | null = $state(undefined),
|
|
242
|
-
menuHeight = "auto",
|
|
243
|
-
refreshPosition = $state(false);
|
|
244
|
-
|
|
245
274
|
function openMenu() {
|
|
246
275
|
refreshMenuWidth();
|
|
247
276
|
menuOpened = true;
|
|
@@ -249,17 +278,15 @@
|
|
|
249
278
|
|
|
250
279
|
function refreshMenuWidth() {
|
|
251
280
|
setTimeout(() => {
|
|
252
|
-
if (menuWidth !== undefined)
|
|
253
|
-
else if (!!activator)
|
|
281
|
+
if (menuWidth !== undefined && menuWidth != null) menuProps._width = menuWidth;
|
|
282
|
+
else if (!!menuProps.activator) menuProps._width = menuProps.activator.offsetWidth + "px";
|
|
254
283
|
|
|
255
284
|
setTimeout(() => {
|
|
256
|
-
refreshPosition = true;
|
|
285
|
+
menuProps.refreshPosition = true;
|
|
257
286
|
}, 1);
|
|
258
287
|
}, 1);
|
|
259
288
|
}
|
|
260
289
|
|
|
261
|
-
let activator: HTMLElement | undefined = $state(),
|
|
262
|
-
focusedIndex: number | undefined = $state(undefined);
|
|
263
290
|
function handleTextFieldFocus() {
|
|
264
291
|
if (onfocus) {
|
|
265
292
|
onfocus();
|
|
@@ -277,7 +304,6 @@
|
|
|
277
304
|
// closeMenu()
|
|
278
305
|
}
|
|
279
306
|
|
|
280
|
-
let menuElement: HTMLElement | undefined = $state();
|
|
281
307
|
function handleKeyDown(event: KeyboardEvent) {
|
|
282
308
|
if (onkeydown) {
|
|
283
309
|
onkeydown(event);
|
|
@@ -307,16 +333,15 @@
|
|
|
307
333
|
menuOpened = false;
|
|
308
334
|
}
|
|
309
335
|
|
|
310
|
-
if (focusedIndex !== undefined && !!menuElement) {
|
|
311
|
-
let child = menuElement.querySelector<HTMLElement>(
|
|
336
|
+
if (focusedIndex !== undefined && !!menuProps.menuElement) {
|
|
337
|
+
let child = menuProps.menuElement.querySelector<HTMLElement>(
|
|
312
338
|
".item-" + focusedIndex,
|
|
313
339
|
);
|
|
314
340
|
|
|
315
|
-
if (!!child) scrollInMenu(menuElement, child, "instant");
|
|
341
|
+
if (!!child) scrollInMenu(menuProps.menuElement, child, "instant");
|
|
316
342
|
}
|
|
317
343
|
}
|
|
318
344
|
|
|
319
|
-
let input: HTMLElement | undefined = $state();
|
|
320
345
|
function handleContainerClick() {
|
|
321
346
|
if (disabled) return;
|
|
322
347
|
|
|
@@ -330,7 +355,6 @@
|
|
|
330
355
|
}
|
|
331
356
|
}
|
|
332
357
|
|
|
333
|
-
let filteredItems: ItemData[] = $state(items);
|
|
334
358
|
$effect(() => {
|
|
335
359
|
if (searchText) {
|
|
336
360
|
focusedIndex = undefined;
|
|
@@ -368,20 +392,12 @@
|
|
|
368
392
|
}
|
|
369
393
|
}
|
|
370
394
|
});
|
|
371
|
-
|
|
372
|
-
import Chip from "../navigation/Chip.svelte";
|
|
373
|
-
import Menu from "../common/Menu.svelte";
|
|
374
|
-
import { type ComponentProps, type Snippet } from "svelte";
|
|
375
|
-
import SimpleTextField from "./SimpleTextField.svelte";
|
|
376
|
-
import MenuOrDrawer from "../../composed/common/MenuOrDrawer.svelte";
|
|
377
|
-
import Drawer from "../navigation/Drawer.svelte";
|
|
378
|
-
import Icon from "../media/Icon.svelte";
|
|
379
395
|
</script>
|
|
380
396
|
|
|
381
397
|
<svelte:window />
|
|
382
398
|
|
|
383
399
|
<div
|
|
384
|
-
bind:this={activator}
|
|
400
|
+
bind:this={menuProps.activator}
|
|
385
401
|
style:width
|
|
386
402
|
style:max-width={maxWidth}
|
|
387
403
|
style:min-width={minWidth}
|
|
@@ -470,20 +486,11 @@
|
|
|
470
486
|
{@render menuSnippet()}
|
|
471
487
|
{:else if !mobileDrawer}
|
|
472
488
|
<Menu
|
|
473
|
-
{
|
|
474
|
-
_width={localMenuWidth || ""}
|
|
475
|
-
_height={menuHeight}
|
|
476
|
-
_maxHeight={menuMaxHeight}
|
|
477
|
-
_boxShadow={menuBoxShadow}
|
|
478
|
-
_borderRadius={menuBorderRadius}
|
|
489
|
+
{...menuProps}
|
|
479
490
|
bind:open={menuOpened}
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
flipOnOverflow={menuFlipOnOverflow}
|
|
484
|
-
bind:refreshPosition
|
|
485
|
-
bind:menuElement
|
|
486
|
-
bind:openingId
|
|
491
|
+
bind:refreshPosition={menuProps.refreshPosition}
|
|
492
|
+
bind:menuElement={menuProps.menuElement}
|
|
493
|
+
bind:openingId={menuProps.openingId}
|
|
487
494
|
>
|
|
488
495
|
<ul
|
|
489
496
|
class={clazz.menu || ""}
|
|
@@ -528,14 +535,7 @@
|
|
|
528
535
|
</Menu>
|
|
529
536
|
{:else}
|
|
530
537
|
<MenuOrDrawer
|
|
531
|
-
menuProps
|
|
532
|
-
activator,
|
|
533
|
-
_width: localMenuWidth || "",
|
|
534
|
-
_height: menuHeight,
|
|
535
|
-
_maxHeight: "300px",
|
|
536
|
-
_boxShadow: menuBoxShadow,
|
|
537
|
-
_borderRadius: menuBorderRadius,
|
|
538
|
-
}}
|
|
538
|
+
bind:menuProps
|
|
539
539
|
drawerProps={{
|
|
540
540
|
onclose
|
|
541
541
|
}}
|
|
@@ -3,7 +3,7 @@ import './SimpleTextField.css';
|
|
|
3
3
|
import type { HTMLInputAttributes } from 'svelte/elements';
|
|
4
4
|
import type { Snippet } from 'svelte';
|
|
5
5
|
interface Props extends HTMLInputAttributes {
|
|
6
|
-
value?: string | number;
|
|
6
|
+
value?: string | number | null;
|
|
7
7
|
valueTo?: string | number;
|
|
8
8
|
type?: "text" | "password" | "number" | "time" | "date";
|
|
9
9
|
range?: boolean;
|
|
@@ -98,7 +98,12 @@ export default class Converter {
|
|
|
98
98
|
}
|
|
99
99
|
applyDateFilter(params) {
|
|
100
100
|
if (params.filter.mode == 'equal' && !!params.filter.value) {
|
|
101
|
-
|
|
101
|
+
const startOfDay = new Date(params.filter.value);
|
|
102
|
+
startOfDay.setHours(0, 0, 0, 0);
|
|
103
|
+
const endOfDay = new Date(params.filter.value);
|
|
104
|
+
endOfDay.setHours(23, 59, 59, 999);
|
|
105
|
+
params.builder.where(params.filter.column, '>=', startOfDay);
|
|
106
|
+
params.builder.where(params.filter.column, '<=', endOfDay);
|
|
102
107
|
}
|
|
103
108
|
else if (params.filter.mode == 'greater' && !!params.filter.value) {
|
|
104
109
|
params.builder.where(params.filter.column, '>', params.filter.value);
|
|
@@ -108,10 +113,14 @@ export default class Converter {
|
|
|
108
113
|
}
|
|
109
114
|
else if (params.filter.mode == 'between') {
|
|
110
115
|
if (!!params.filter.from) {
|
|
111
|
-
|
|
116
|
+
const from = new Date(params.filter.from);
|
|
117
|
+
from.setHours(0, 0, 0, 0);
|
|
118
|
+
params.builder.where(params.filter.column, '>=', from);
|
|
112
119
|
}
|
|
113
120
|
if (!!params.filter.to) {
|
|
114
|
-
|
|
121
|
+
const to = new Date(params.filter.to);
|
|
122
|
+
to.setHours(23, 59, 59, 999);
|
|
123
|
+
params.builder.where(params.filter.column, '<=', to);
|
|
115
124
|
}
|
|
116
125
|
}
|
|
117
126
|
return params.builder;
|