@likable-hair/svelte 4.2.0 → 4.2.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 +1 -1
- package/dist/components/composed/common/MenuOrDrawerOptions.svelte +1 -1
- package/dist/components/composed/forms/AsyncAutocomplete.svelte.d.ts +1 -0
- package/dist/components/composed/forms/DatePickerTextField.svelte +10 -2
- package/dist/components/composed/forms/DatePickerTextField.svelte.d.ts +1 -0
- package/dist/components/composed/forms/Dropdown.svelte +15 -6
- package/dist/components/composed/forms/PeriodPicker.svelte +111 -0
- package/dist/components/composed/forms/PeriodPicker.svelte.d.ts +21 -0
- package/dist/components/composed/forms/PeriodSelector.svelte +621 -0
- package/dist/components/composed/forms/PeriodSelector.svelte.d.ts +59 -0
- package/dist/components/composed/list/DynamicTable.svelte +130 -82
- package/dist/components/composed/list/DynamicTable.svelte.d.ts +2 -0
- package/dist/components/composed/list/EnhancedPaginatedTable.svelte +1 -2
- package/dist/components/composed/list/EnhancedPaginatedTable.svelte.d.ts +2 -1
- package/dist/components/composed/list/PaginatedTable.svelte +19 -16
- package/dist/components/composed/list/PaginatedTable.svelte.d.ts +2 -1
- package/dist/components/composed/search/DynamicFilters.svelte +10 -10
- package/dist/components/composed/search/DynamicFilters.svelte.d.ts +6 -0
- package/dist/components/composed/search/FilterEditor.svelte +10 -9
- package/dist/components/simple/buttons/Button.css +1 -0
- package/dist/components/simple/buttons/Button.svelte +4 -1
- package/dist/components/simple/common/Menu.svelte +124 -104
- package/dist/components/simple/common/Menu.svelte.d.ts +2 -0
- package/dist/components/simple/dates/Calendar.css +2 -2
- package/dist/components/simple/dates/Calendar.svelte +76 -27
- package/dist/components/simple/dates/Calendar.svelte.d.ts +1 -0
- package/dist/components/simple/dates/DatePicker.svelte +30 -12
- package/dist/components/simple/dates/DatePicker.svelte.d.ts +8 -1
- package/dist/components/simple/forms/Autocomplete.svelte +2 -2
- package/dist/components/simple/forms/Autocomplete.svelte.d.ts +1 -0
- package/dist/components/simple/lists/SelectableVerticalList.svelte +5 -4
- package/dist/components/simple/lists/SimpleTable.svelte +86 -54
- package/dist/components/simple/lists/SimpleTable.svelte.d.ts +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.js +2 -0
- package/package.json +1 -1
|
@@ -3,7 +3,7 @@ import Drawer from '../../simple/navigation/Drawer.svelte';
|
|
|
3
3
|
import Menu from '../../simple/common/Menu.svelte';
|
|
4
4
|
import MediaQuery from '../../simple/common/MediaQuery.svelte';
|
|
5
5
|
import lodash from 'lodash';
|
|
6
|
-
let { open = $bindable(
|
|
6
|
+
let { open = $bindable(), drawerProps, menuProps, children, } = $props();
|
|
7
7
|
const menuPropsDefaultValue = {
|
|
8
8
|
closeOnClickOutside: true,
|
|
9
9
|
_boxShadow: "rgb(var(--global-color-grey-900), .5) 0px 2px 4px",
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
import MenuOrDrawer from "./MenuOrDrawer.svelte";
|
|
6
6
|
import SelectableVerticalList from '../../simple/lists/SelectableVerticalList.svelte';
|
|
7
7
|
import lodash from 'lodash';
|
|
8
|
-
let { open = $bindable(
|
|
8
|
+
let { open = $bindable(), elements = [], onselect, menuProps, drawerProps, } = $props();
|
|
9
9
|
const menuPropsDefaultValue = {
|
|
10
10
|
anchor: 'bottom-center',
|
|
11
11
|
stayInViewport: true,
|
|
@@ -48,6 +48,7 @@ declare class __sveltets_Render<Data> {
|
|
|
48
48
|
menuAnchor?: ComponentProps<typeof Menu>["anchor"];
|
|
49
49
|
menuStayInViewport?: ComponentProps<typeof Menu>["stayInViewport"];
|
|
50
50
|
menuFlipOnOverflow?: ComponentProps<typeof Menu>["flipOnOverflow"];
|
|
51
|
+
menuMaxHeight?: string;
|
|
51
52
|
adaptInputWidth?: boolean;
|
|
52
53
|
class?: {
|
|
53
54
|
activator?: string;
|
|
@@ -49,6 +49,10 @@ let activator = $state(), refreshPosition = $state(false), menuElement = $state(
|
|
|
49
49
|
}
|
|
50
50
|
}
|
|
51
51
|
};
|
|
52
|
+
let selectableYears = $derived.by(() => {
|
|
53
|
+
const range = maxYearInRange - minYearInRange + 1;
|
|
54
|
+
return Array.from({ length: range }, (_, i) => minYearInRange + i);
|
|
55
|
+
});
|
|
52
56
|
function handleTextFieldFocus(mobile) {
|
|
53
57
|
if (!mobile || !mobileDialog) {
|
|
54
58
|
menuOpened = true;
|
|
@@ -128,10 +132,11 @@ function handleInputChange(e) {
|
|
|
128
132
|
selectedDateTo = undefined;
|
|
129
133
|
}
|
|
130
134
|
}
|
|
131
|
-
if (oninput) {
|
|
135
|
+
if (oninput && (id == 'to' || id == 'from')) {
|
|
132
136
|
oninput({
|
|
133
137
|
detail: {
|
|
134
|
-
datetime: id == "to" ? selectedDateTo : selectedDate
|
|
138
|
+
datetime: id == "to" ? selectedDateTo : selectedDate,
|
|
139
|
+
type: id,
|
|
135
140
|
}
|
|
136
141
|
});
|
|
137
142
|
}
|
|
@@ -210,6 +215,7 @@ $effect(() => {
|
|
|
210
215
|
{appendInnerSnippet}
|
|
211
216
|
{prependSnippet}
|
|
212
217
|
{appendSnippet}
|
|
218
|
+
autocomplete='off'
|
|
213
219
|
--simple-textfield-default-padding='0.65rem 0.8rem'
|
|
214
220
|
--simple-textfield-default-inner-gap='4px'
|
|
215
221
|
>
|
|
@@ -248,6 +254,7 @@ $effect(() => {
|
|
|
248
254
|
onyearClick={handleYearSelect}
|
|
249
255
|
onmonthClick={handleMonthSelect}
|
|
250
256
|
skipTabs
|
|
257
|
+
{selectableYears}
|
|
251
258
|
{disabled}
|
|
252
259
|
{type}
|
|
253
260
|
></DatePicker>
|
|
@@ -281,6 +288,7 @@ $effect(() => {
|
|
|
281
288
|
onyearClick={handleYearSelect}
|
|
282
289
|
onmonthClick={handleMonthSelect}
|
|
283
290
|
skipTabs
|
|
291
|
+
{selectableYears}
|
|
284
292
|
{disabled}
|
|
285
293
|
{type}
|
|
286
294
|
></DatePicker>
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import Autocomplete, {} from "../../../components/simple/forms/Autocomplete.svelte";
|
|
3
3
|
import Button from '../../simple/buttons/Button.svelte';
|
|
4
4
|
import Icon from '../../simple/media/Icon.svelte';
|
|
5
|
-
let { items = [], values = $bindable([]), multiple = false, lang = 'en', searchText = $bindable(), maxVisibleChips, placeholder = lang === 'en' ? "Select" : "Seleziona", clearable = true, mandatory = true, icon, menuOpened = $bindable(false), openingId = $bindable("autocomplete-menu"), width, height, minWidth, menuWidth = width, mobileDrawer = false, disabled = false, onchange, itemLabelSnippet, labelSnippet, } = $props();
|
|
5
|
+
let { items = [], values = $bindable([]), multiple = false, lang = 'en', searchText = $bindable(), maxVisibleChips, placeholder = lang === 'en' ? "Select" : "Seleziona", clearable = true, mandatory = true, icon, menuOpened = $bindable(false), openingId = $bindable("autocomplete-menu"), width, height, minWidth = 'none', menuWidth = width, mobileDrawer = false, disabled = false, onchange, itemLabelSnippet, labelSnippet, } = $props();
|
|
6
6
|
let generatedLabel = $derived(values.length == 1 ? values[0].label : `${values.length} Selezionati`);
|
|
7
7
|
function handleCloseClick(event) {
|
|
8
8
|
if (event) {
|
|
@@ -44,11 +44,6 @@ function handleCloseClick(event) {
|
|
|
44
44
|
>
|
|
45
45
|
{#snippet selectionContainerSnippet({ openMenu, handleKeyDown })}
|
|
46
46
|
<Button
|
|
47
|
-
--button-default-background-color="transparent"
|
|
48
|
-
--button-default-focus-background-color="rgb(var(--global-color-primary-400), .3)"
|
|
49
|
-
--button-default-focus-color="rgb(var(--global-color-contrast-900))"
|
|
50
|
-
--button-default-border="2px solid rgb(var(--global-color-primary-400))"
|
|
51
|
-
--button-default-color="rgb(var(--global-color-contrast-800))"
|
|
52
47
|
onclick={openMenu}
|
|
53
48
|
onkeydown={(event) => {
|
|
54
49
|
handleKeyDown(event.detail.nativeEvent)
|
|
@@ -57,6 +52,20 @@ function handleCloseClick(event) {
|
|
|
57
52
|
event.detail.nativeEvent.preventDefault()
|
|
58
53
|
}
|
|
59
54
|
}}
|
|
55
|
+
--button-padding="var(--dropdown-button-padding, 10px 12px)"
|
|
56
|
+
--button-border='var(--dropdown-button-border, none)'
|
|
57
|
+
--button-background-color='var(--dropdown-button-background-color, rgb(var(--global-color-background-300), .6))'
|
|
58
|
+
--button-hover-background-color='var(--dropdown-button-hover-color, rgb(var(--global-color-background-300), .6))'
|
|
59
|
+
--button-focus-background-color='var(--dropdown-button-focus-color, rgb(var(--global-color-background-300), .6))'
|
|
60
|
+
--button-active-background-color='var(--dropdown-button-active-color, rgb(var(--global-color-background-300), .6))'
|
|
61
|
+
--button-hover-color='var(--dropdown-button-hover-color, rgb(var(--global-color-contrast-800)))'
|
|
62
|
+
--button-color='var(--dropdown-button-color, rgb(var(--global-color-contrast-800)))'
|
|
63
|
+
--button-focus-color='var(--dropdown-button-focus-color, rgb(var(--global-color-contrast-800)))'
|
|
64
|
+
--button-border-radius='var(--dropdown-button-border-radius, 4px)'
|
|
65
|
+
--button-height='var(--dropdown-button-height, 38.78px)'
|
|
66
|
+
--button-active-box-shadow='var(--dropdown-button-active-box-shadow)'
|
|
67
|
+
--button-focus-box-shadow='var(--dropdown-button-focus-box-shadow)'
|
|
68
|
+
--button-box-sizing='var(--dropdown-button-box-sizing, border-box)'
|
|
60
69
|
>
|
|
61
70
|
{#if labelSnippet}
|
|
62
71
|
{@render labelSnippet({
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
<script lang="ts" generics="Data extends string">import SimpleTextField from "../../simple/forms/SimpleTextField.svelte";
|
|
2
|
+
import MenuOrDrawer from "../common/MenuOrDrawer.svelte";
|
|
3
|
+
import PeriodSelector from "./PeriodSelector.svelte";
|
|
4
|
+
import Button from "../../simple/buttons/Button.svelte";
|
|
5
|
+
import { fly } from "svelte/transition";
|
|
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);
|
|
9
|
+
function handleChange(event) {
|
|
10
|
+
if (timespanSettings?.method == 'quick') {
|
|
11
|
+
open = false;
|
|
12
|
+
}
|
|
13
|
+
onchange?.(event);
|
|
14
|
+
}
|
|
15
|
+
</script>
|
|
16
|
+
|
|
17
|
+
<SimpleTextField
|
|
18
|
+
onfocus={() => open = true}
|
|
19
|
+
oninput={() => text = timeRangeLabel}
|
|
20
|
+
bind:value={text}
|
|
21
|
+
bind:input
|
|
22
|
+
>
|
|
23
|
+
{#snippet appendInnerSnippet()}
|
|
24
|
+
<Icon
|
|
25
|
+
name='mdi-chevron-down'
|
|
26
|
+
onclick={() => {
|
|
27
|
+
if (!open) open = true
|
|
28
|
+
else if (valid) open = false
|
|
29
|
+
}}
|
|
30
|
+
></Icon>
|
|
31
|
+
{/snippet}
|
|
32
|
+
</SimpleTextField>
|
|
33
|
+
<MenuOrDrawer
|
|
34
|
+
bind:open
|
|
35
|
+
menuProps={{
|
|
36
|
+
activator: input,
|
|
37
|
+
_activatorGap: 16,
|
|
38
|
+
closeOnClickOutside: valid,
|
|
39
|
+
_offsetLeft: -16,
|
|
40
|
+
anchor: 'bottom',
|
|
41
|
+
flipOnOverflow: true,
|
|
42
|
+
stayInViewport: true,
|
|
43
|
+
openingId: 'period-picker',
|
|
44
|
+
_overflow: 'hidden',
|
|
45
|
+
}}
|
|
46
|
+
drawerProps={{
|
|
47
|
+
closeOnClickOutside: valid,
|
|
48
|
+
_space: 'min(50%,420px)',
|
|
49
|
+
_borderRadius: '4px',
|
|
50
|
+
_overflow: 'hidden',
|
|
51
|
+
}}
|
|
52
|
+
>
|
|
53
|
+
{#snippet children({ isDrawer, isMenu })}
|
|
54
|
+
<div
|
|
55
|
+
class:menu={isMenu}
|
|
56
|
+
class:drawer={isDrawer}
|
|
57
|
+
>
|
|
58
|
+
<PeriodSelector
|
|
59
|
+
onchange={handleChange}
|
|
60
|
+
bind:timespanSettings
|
|
61
|
+
bind:valid
|
|
62
|
+
bind:timeRangeLabel
|
|
63
|
+
bind:isSelectionMode
|
|
64
|
+
{lang}
|
|
65
|
+
{...rest}
|
|
66
|
+
></PeriodSelector>
|
|
67
|
+
{#if !isSelectionMode}
|
|
68
|
+
<div
|
|
69
|
+
class:button-end={isMenu}
|
|
70
|
+
class:button-full={isDrawer}
|
|
71
|
+
in:fly={{ x: 200, duration: 250, delay: 200 }}
|
|
72
|
+
out:fly={{ x: 200, duration: 250 }}
|
|
73
|
+
>
|
|
74
|
+
<Button
|
|
75
|
+
disabled={!valid}
|
|
76
|
+
onclick={() => open = false}
|
|
77
|
+
>
|
|
78
|
+
{lang == 'en' ? 'Apply' : 'Applica'}
|
|
79
|
+
</Button>
|
|
80
|
+
</div>
|
|
81
|
+
{/if}
|
|
82
|
+
</div>
|
|
83
|
+
{/snippet}
|
|
84
|
+
</MenuOrDrawer>
|
|
85
|
+
|
|
86
|
+
<style>
|
|
87
|
+
.menu {
|
|
88
|
+
padding: 8px;
|
|
89
|
+
box-shadow: 2px 2px 2px 2px rgba(0, 0, 0, 0.2);
|
|
90
|
+
border-radius: 4px;
|
|
91
|
+
background-color: rgb(var(--global-color-background-200));
|
|
92
|
+
width: 400px;
|
|
93
|
+
--period-selector-min-height: 290px;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
.drawer {
|
|
97
|
+
padding: 12px;
|
|
98
|
+
--period-selector-max-width: none;
|
|
99
|
+
--period-selector-list-element-padding: 8px;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
.button-end {
|
|
103
|
+
display: flex;
|
|
104
|
+
justify-content: end;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
.button-full {
|
|
108
|
+
display: flex;
|
|
109
|
+
--button-width: 100%
|
|
110
|
+
}
|
|
111
|
+
</style>
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { ComponentProps } from "svelte";
|
|
2
|
+
import PeriodSelector from "./PeriodSelector.svelte";
|
|
3
|
+
interface Props extends Omit<ComponentProps<typeof PeriodSelector<Data>>, 'showTimeRangeLabel'> {
|
|
4
|
+
}
|
|
5
|
+
declare class __sveltets_Render<Data extends string> {
|
|
6
|
+
props(): Props;
|
|
7
|
+
events(): {};
|
|
8
|
+
slots(): {};
|
|
9
|
+
bindings(): "timespanSettings" | "valid" | "isSelectionMode";
|
|
10
|
+
exports(): {};
|
|
11
|
+
}
|
|
12
|
+
interface $$IsomorphicComponent {
|
|
13
|
+
new <Data extends string>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<Data>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<Data>['props']>, ReturnType<__sveltets_Render<Data>['events']>, ReturnType<__sveltets_Render<Data>['slots']>> & {
|
|
14
|
+
$$bindings?: ReturnType<__sveltets_Render<Data>['bindings']>;
|
|
15
|
+
} & ReturnType<__sveltets_Render<Data>['exports']>;
|
|
16
|
+
<Data extends string>(internal: unknown, props: ReturnType<__sveltets_Render<Data>['props']> & {}): ReturnType<__sveltets_Render<Data>['exports']>;
|
|
17
|
+
z_$$bindings?: ReturnType<__sveltets_Render<any>['bindings']>;
|
|
18
|
+
}
|
|
19
|
+
declare const PeriodPicker: $$IsomorphicComponent;
|
|
20
|
+
type PeriodPicker<Data extends string> = InstanceType<typeof PeriodPicker<Data>>;
|
|
21
|
+
export default PeriodPicker;
|