@likable-hair/svelte 4.2.5 → 4.3.0

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.
Files changed (117) hide show
  1. package/dist/components/composed/buttons/ActivableButton.svelte +25 -7
  2. package/dist/components/composed/common/HeadersDrawer.svelte +66 -28
  3. package/dist/components/composed/common/HeadersDrawer.svelte.d.ts +22 -12
  4. package/dist/components/composed/common/MenuOrDrawer.svelte +40 -12
  5. package/dist/components/composed/common/MenuOrDrawerOptions.svelte +51 -27
  6. package/dist/components/composed/common/MenuOrDrawerOptions.svelte.d.ts +15 -10
  7. package/dist/components/composed/common/QuickActions.svelte +59 -23
  8. package/dist/components/composed/common/ToolTip.svelte +51 -32
  9. package/dist/components/composed/dashboard/DashboardShaper.svelte +280 -147
  10. package/dist/components/composed/dashboard/DashboardShaper.svelte.d.ts +54 -45
  11. package/dist/components/composed/forms/AsyncAutocomplete.svelte +81 -30
  12. package/dist/components/composed/forms/AsyncAutocomplete.svelte.d.ts +12 -5
  13. package/dist/components/composed/forms/AvatarDropdown.svelte +146 -70
  14. package/dist/components/composed/forms/AvatarDropdown.svelte.d.ts +27 -22
  15. package/dist/components/composed/forms/ConfirmOrCancelButtons.svelte +65 -19
  16. package/dist/components/composed/forms/CountriesAutocomplete.svelte +33 -4
  17. package/dist/components/composed/forms/DatePickerTextField.svelte +266 -161
  18. package/dist/components/composed/forms/Dropdown.svelte +88 -21
  19. package/dist/components/composed/forms/Dropdown.svelte.d.ts +18 -13
  20. package/dist/components/composed/forms/IconsDropdown.svelte +85 -40
  21. package/dist/components/composed/forms/IconsDropdown.svelte.d.ts +15 -8
  22. package/dist/components/composed/forms/LabelAndSelect.svelte +46 -5
  23. package/dist/components/composed/forms/LabelAndTextField.svelte +56 -3
  24. package/dist/components/composed/forms/PeriodPicker.svelte +38 -18
  25. package/dist/components/composed/forms/PeriodPicker.svelte.d.ts +32 -7
  26. package/dist/components/composed/forms/PeriodSelector.svelte +427 -312
  27. package/dist/components/composed/forms/PeriodSelector.svelte.d.ts +20 -13
  28. package/dist/components/composed/forms/ToggleList.svelte +71 -37
  29. package/dist/components/composed/forms/ToggleList.svelte.d.ts +14 -7
  30. package/dist/components/composed/forms/YearPickerTextField.svelte +154 -82
  31. package/dist/components/composed/list/DynamicTable.svelte +1372 -809
  32. package/dist/components/composed/list/DynamicTable.svelte.d.ts +85 -70
  33. package/dist/components/composed/list/EnhancedPaginatedTable.svelte +75 -32
  34. package/dist/components/composed/list/EnhancedPaginatedTable.svelte.d.ts +16 -6
  35. package/dist/components/composed/list/PaginatedTable.svelte +324 -116
  36. package/dist/components/composed/list/PaginatedTable.svelte.d.ts +26 -22
  37. package/dist/components/composed/progress/HorizontalStackedProgress.svelte +67 -29
  38. package/dist/components/composed/search/DynamicFilters.svelte +126 -91
  39. package/dist/components/composed/search/FilterEditor.svelte +169 -109
  40. package/dist/components/composed/search/Filters.svelte +385 -275
  41. package/dist/components/composed/search/GlobalSearchTextField.svelte +102 -42
  42. package/dist/components/composed/search/GlobalSearchTextField.svelte.d.ts +23 -20
  43. package/dist/components/composed/search/MobileFilterEditor.svelte +174 -120
  44. package/dist/components/composed/search/QuickFilters.svelte +124 -75
  45. package/dist/components/composed/search/SearchBar.svelte +42 -3
  46. package/dist/components/composed/search/SearchResults.svelte +48 -5
  47. package/dist/components/composed/search/SearchResults.svelte.d.ts +17 -17
  48. package/dist/components/layouts/CollapsibleSideBarLayout.svelte +100 -24
  49. package/dist/components/layouts/StableDividedSideBarLayout.svelte +74 -24
  50. package/dist/components/layouts/UnstableDividedSideBarLayout.svelte +140 -57
  51. package/dist/components/simple/buttons/Button.svelte +86 -36
  52. package/dist/components/simple/buttons/LinkButton.svelte +81 -25
  53. package/dist/components/simple/charts/BarChart.svelte +137 -105
  54. package/dist/components/simple/charts/LineChart.svelte +124 -92
  55. package/dist/components/simple/charts/PieChart.svelte +51 -23
  56. package/dist/components/simple/common/CollapsibleDivider.svelte +58 -26
  57. package/dist/components/simple/common/Divider.svelte +2 -1
  58. package/dist/components/simple/common/InfiniteScroll.svelte +60 -34
  59. package/dist/components/simple/common/MediaQuery.svelte +28 -3
  60. package/dist/components/simple/common/Menu.svelte +516 -371
  61. package/dist/components/simple/common/NoData.svelte +18 -4
  62. package/dist/components/simple/common/VerticalDraggableList.svelte +52 -26
  63. package/dist/components/simple/common/VerticalDraggableList.svelte.d.ts +20 -9
  64. package/dist/components/simple/dashboards/DashboardGridShaper.svelte +28 -22
  65. package/dist/components/simple/dates/Calendar.svelte +142 -72
  66. package/dist/components/simple/dates/DatePicker.svelte +138 -71
  67. package/dist/components/simple/dates/MonthSelector.svelte +49 -13
  68. package/dist/components/simple/dates/YearSelector.svelte +73 -30
  69. package/dist/components/simple/dialogs/Dialog.svelte +109 -59
  70. package/dist/components/simple/forms/Autocomplete.svelte +341 -164
  71. package/dist/components/simple/forms/Autocomplete.svelte.d.ts +27 -20
  72. package/dist/components/simple/forms/Checkbox.svelte +57 -29
  73. package/dist/components/simple/forms/FileInput.svelte +103 -58
  74. package/dist/components/simple/forms/FileInputList.svelte +115 -51
  75. package/dist/components/simple/forms/RadioButton.svelte +36 -3
  76. package/dist/components/simple/forms/Select.svelte +30 -3
  77. package/dist/components/simple/forms/SimpleTextField.svelte +94 -4
  78. package/dist/components/simple/forms/Switch.svelte +33 -11
  79. package/dist/components/simple/forms/Textarea.svelte +22 -5
  80. package/dist/components/simple/forms/VerticalSwitch.svelte +19 -2
  81. package/dist/components/simple/forms/VerticalTextSwitch.svelte +35 -3
  82. package/dist/components/simple/lists/BoxList.svelte +42 -11
  83. package/dist/components/simple/lists/ColorInvertedSelector.svelte +83 -25
  84. package/dist/components/simple/lists/HierarchyMenu.svelte +55 -20
  85. package/dist/components/simple/lists/Paginator.svelte +53 -34
  86. package/dist/components/simple/lists/SelectableMenuList.svelte +52 -16
  87. package/dist/components/simple/lists/SelectableVerticalList.svelte +169 -85
  88. package/dist/components/simple/lists/SelectableVerticalList.svelte.d.ts +21 -14
  89. package/dist/components/simple/lists/SidebarMenuList.svelte +127 -79
  90. package/dist/components/simple/lists/SimpleTable.svelte +442 -245
  91. package/dist/components/simple/lists/SimpleTable.svelte.d.ts +31 -22
  92. package/dist/components/simple/loaders/CircularLoader.css +1 -1
  93. package/dist/components/simple/loaders/CircularLoader.svelte +11 -3
  94. package/dist/components/simple/loaders/Skeleton.svelte +3 -2
  95. package/dist/components/simple/media/Avatar.svelte +35 -15
  96. package/dist/components/simple/media/DescriptiveAvatar.svelte +30 -4
  97. package/dist/components/simple/media/FlagIcon.svelte +13 -3
  98. package/dist/components/simple/media/Icon.svelte +21 -6
  99. package/dist/components/simple/navigation/Breadcrumb.svelte +41 -9
  100. package/dist/components/simple/navigation/Chip.svelte +65 -29
  101. package/dist/components/simple/navigation/Drawer.svelte +132 -71
  102. package/dist/components/simple/navigation/HeaderMenu.svelte +69 -25
  103. package/dist/components/simple/navigation/Navigator.svelte +45 -11
  104. package/dist/components/simple/navigation/TabSwitcher.svelte +60 -19
  105. package/dist/components/simple/notifiers/AlertBanner.svelte +59 -11
  106. package/dist/components/simple/progress/ProgressBar.svelte +26 -10
  107. package/dist/components/simple/timeline/SimpleTimeLine.svelte +52 -5
  108. package/dist/components/simple/timeline/SimpleTimeLine.svelte.d.ts +16 -9
  109. package/dist/components/simple/typography/Code.svelte +41 -12
  110. package/dist/stores/layouts/unstableSidebarOpened.d.ts +1 -1
  111. package/dist/stores/layouts/unstableSidebarOpened.js +1 -1
  112. package/dist/stores/theme.js +2 -2
  113. package/dist/utils/filters/builder.d.ts +2 -2
  114. package/dist/utils/filters/builder.js +7 -7
  115. package/dist/utils/filters/modifiers/where.d.ts +1 -1
  116. package/dist/utils/teleporter.js +4 -4
  117. package/package.json +39 -33
@@ -1,11 +1,29 @@
1
- <script lang="ts">import Button from "../../simple/buttons/Button.svelte";
2
- let { active = $bindable(false), buttonProps = {}, onclick, children, appendSnippet: appendInternalSnippet, } = $props();
3
- function handleOnClick(e) {
4
- active = !active;
5
- if (onclick) {
6
- onclick(e);
1
+ <script lang="ts">
2
+ import Button from "../../simple/buttons/Button.svelte";
3
+ import type { ComponentProps, Snippet } from "svelte";
4
+ interface Props {
5
+ active?: boolean;
6
+ buttonProps?: ComponentProps<typeof Button>;
7
+ onclick?: ComponentProps<typeof Button>['onclick']
8
+ children?: Snippet<[]>
9
+ appendSnippet?: Snippet<[]>
10
+ }
11
+
12
+ let {
13
+ active = $bindable(false),
14
+ buttonProps = {},
15
+ onclick,
16
+ children,
17
+ appendSnippet: appendInternalSnippet,
18
+ }: Props = $props();
19
+
20
+ function handleOnClick(e: Parameters<NonNullable<typeof onclick>>[0]) {
21
+ active = !active
22
+
23
+ if(onclick) {
24
+ onclick(e)
7
25
  }
8
- }
26
+ }
9
27
  </script>
10
28
 
11
29
  <Button
@@ -1,39 +1,77 @@
1
- <script lang="ts" generics="Item extends {[key: string]: any}, Data">import { Button, Divider, Drawer, Icon, MediaQuery, Switch, VerticalDraggableList } from "../../..";
2
- import { flip } from "svelte/animate";
3
- import { quintOut } from "svelte/easing";
4
- import { crossfade } from "svelte/transition";
5
- import EnhancedPaginatedTable from "../list/EnhancedPaginatedTable.svelte";
6
- import lodash from "lodash";
7
- const deepClone = lodash.cloneDeep;
8
- let { drawerProps, open = $bindable(), lang, availableHeaders, headersToShow = $bindable(), pinnableColumns, onsaveHeadersToShow, itemSnippet: internalItemSnippet, headersToAddSnippet, contentSnippet, } = $props();
9
- const [send, receive] = crossfade({
1
+ <script lang="ts" generics="Item extends {[key: string]: any}, Data">
2
+ import { Button, Divider, Drawer, Icon, MediaQuery, Switch, VerticalDraggableList } from "../../..";
3
+ import type { ComponentProps, Snippet } from "svelte";
4
+ import { flip } from "svelte/animate";
5
+ import { quintOut } from "svelte/easing";
6
+ import { crossfade } from "svelte/transition";
7
+ import EnhancedPaginatedTable from "../list/EnhancedPaginatedTable.svelte";
8
+ import lodash from "lodash";
9
+
10
+ const deepClone = lodash.cloneDeep;
11
+
12
+ interface Props {
13
+ drawerProps?: Omit<ComponentProps<typeof Drawer>, 'open'>
14
+ open?: boolean,
15
+ lang: 'en' | 'it',
16
+ availableHeaders: ComponentProps<typeof EnhancedPaginatedTable<Item, Data>>['headers'],
17
+ headersToShow: ComponentProps<typeof EnhancedPaginatedTable<Item, Data>>['headers'],
18
+ pinnableColumns?: boolean,
19
+ onsaveHeadersToShow?: (event: {
20
+ detail: {
21
+ headersToShow: ComponentProps<typeof EnhancedPaginatedTable<Item, Data>>['headers'];
22
+ }
23
+ }) => void
24
+ itemSnippet?: ComponentProps<typeof VerticalDraggableList>['itemSnippet']
25
+ headersToAddSnippet?: Snippet<[{ header: ComponentProps<typeof EnhancedPaginatedTable<Item, Data>>['headers'][number] }]>
26
+ contentSnippet?: Snippet<[]>
27
+ }
28
+
29
+ let {
30
+ drawerProps,
31
+ open = $bindable(),
32
+ lang,
33
+ availableHeaders,
34
+ headersToShow = $bindable(),
35
+ pinnableColumns,
36
+ onsaveHeadersToShow,
37
+ itemSnippet: internalItemSnippet,
38
+ headersToAddSnippet,
39
+ contentSnippet,
40
+ }: Props = $props()
41
+
42
+ const [send, receive] = crossfade({
10
43
  duration: 500,
11
44
  fallback(node, params) {
12
- const style = getComputedStyle(node);
13
- const transform = style.transform === "none" ? "" : style.transform;
14
- return {
15
- duration: 500,
16
- easing: quintOut,
17
- css: (t) => `
45
+ const style = getComputedStyle(node);
46
+ const transform = style.transform === "none" ? "" : style.transform;
47
+
48
+ return {
49
+ duration: 500,
50
+ easing: quintOut,
51
+ css: (t) => `
18
52
  transform: ${transform} scale(${t});
19
53
  opacity: ${t}
20
54
  `,
21
- };
55
+ };
22
56
  },
23
- });
24
- let internalHeadersToShow = $state(deepClone(headersToShow));
25
- $effect(() => {
26
- internalHeadersToShow = deepClone(headersToShow);
27
- });
28
- function saveHeadersToShow() {
29
- headersToShow = internalHeadersToShow;
57
+ });
58
+
59
+ let internalHeadersToShow = $state(deepClone(headersToShow))
60
+ $effect(() => {
61
+ internalHeadersToShow = deepClone(headersToShow)
62
+ })
63
+
64
+ function saveHeadersToShow() {
65
+ headersToShow = internalHeadersToShow
66
+
30
67
  onsaveHeadersToShow?.({
31
- detail: {
32
- headersToShow,
33
- }
34
- });
68
+ detail: {
69
+ headersToShow,
70
+ }
71
+ })
72
+
35
73
  open = false;
36
- }
74
+ }
37
75
  </script>
38
76
 
39
77
  <MediaQuery>
@@ -1,28 +1,38 @@
1
1
  import { Drawer, VerticalDraggableList } from "../../..";
2
2
  import type { ComponentProps, Snippet } from "svelte";
3
- declare class __sveltets_Render<Item extends {
3
+ import EnhancedPaginatedTable from "../list/EnhancedPaginatedTable.svelte";
4
+ declare function $$render<Item extends {
4
5
  [key: string]: any;
5
- }, Data> {
6
- props(): {
6
+ }, Data>(): {
7
+ props: {
7
8
  drawerProps?: Omit<ComponentProps<typeof Drawer>, "open">;
8
9
  open?: boolean;
9
10
  lang: "en" | "it";
10
- availableHeaders: import("../../simple/lists/SimpleTable.svelte").Header<Data>[];
11
- headersToShow: import("../../simple/lists/SimpleTable.svelte").Header<Data>[];
11
+ availableHeaders: ComponentProps<typeof EnhancedPaginatedTable<Item, Data>>["headers"];
12
+ headersToShow: ComponentProps<typeof EnhancedPaginatedTable<Item, Data>>["headers"];
12
13
  pinnableColumns?: boolean;
13
- onsaveHeadersToShow?: ((event: {
14
+ onsaveHeadersToShow?: (event: {
14
15
  detail: {
15
- headersToShow: import("../../simple/lists/SimpleTable.svelte").Header<Data>[];
16
+ headersToShow: ComponentProps<typeof EnhancedPaginatedTable<Item, Data>>["headers"];
16
17
  };
17
- }) => void) | undefined;
18
+ }) => void;
18
19
  itemSnippet?: ComponentProps<typeof VerticalDraggableList>["itemSnippet"];
19
20
  headersToAddSnippet?: Snippet<[{
20
- header: import("../../simple/lists/SimpleTable.svelte").Header<Data>;
21
- }]> | undefined;
21
+ header: ComponentProps<typeof EnhancedPaginatedTable<Item, Data>>["headers"][number];
22
+ }]>;
22
23
  contentSnippet?: Snippet<[]>;
23
24
  };
24
- events(): {};
25
- slots(): {};
25
+ exports: {};
26
+ bindings: "open" | "headersToShow";
27
+ slots: {};
28
+ events: {};
29
+ };
30
+ declare class __sveltets_Render<Item extends {
31
+ [key: string]: any;
32
+ }, Data> {
33
+ props(): ReturnType<typeof $$render<Item, Data>>['props'];
34
+ events(): ReturnType<typeof $$render<Item, Data>>['events'];
35
+ slots(): ReturnType<typeof $$render<Item, Data>>['slots'];
26
36
  bindings(): "open" | "headersToShow";
27
37
  exports(): {};
28
38
  }
@@ -1,10 +1,31 @@
1
- <script lang="ts">import '../../../css/main.css';
2
- import Drawer from '../../simple/navigation/Drawer.svelte';
3
- import Menu from '../../simple/common/Menu.svelte';
4
- import MediaQuery from '../../simple/common/MediaQuery.svelte';
5
- import lodash from 'lodash';
6
- let { open = $bindable(), drawerProps, menuProps, children, } = $props();
7
- const menuPropsDefaultValue = {
1
+ <script lang="ts">
2
+ import '../../../css/main.css'
3
+ import Drawer from '../../simple/navigation/Drawer.svelte';
4
+ import Menu from '../../simple/common/Menu.svelte';
5
+ import MediaQuery from '../../simple/common/MediaQuery.svelte';
6
+ import type { ComponentProps, Snippet } from 'svelte';
7
+ import lodash from 'lodash'
8
+
9
+ export interface Props {
10
+ open?: boolean
11
+ drawerProps?: Omit<ComponentProps<typeof Drawer>, 'open'>
12
+ menuProps?: Omit<ComponentProps<typeof Menu>, 'open'>
13
+ children?: Snippet<[
14
+ {
15
+ isDrawer: boolean,
16
+ isMenu: boolean
17
+ }
18
+ ]>
19
+ }
20
+
21
+ let {
22
+ open = $bindable(),
23
+ drawerProps,
24
+ menuProps,
25
+ children,
26
+ }: Props = $props();
27
+
28
+ const menuPropsDefaultValue = {
8
29
  closeOnClickOutside: true,
9
30
  _boxShadow: "rgb(var(--global-color-grey-900), .5) 0px 2px 4px",
10
31
  _height: "fit-content",
@@ -13,12 +34,19 @@ const menuPropsDefaultValue = {
13
34
  _width: "",
14
35
  anchor: 'bottom-center',
15
36
  stayInViewport: true
16
- };
17
- let finalMenuProps = $derived(lodash.clone(lodash.merge(menuPropsDefaultValue, menuProps)));
18
- const drawerPropsDefaultValue = {
37
+ }
38
+
39
+ let finalMenuProps = $derived(
40
+ lodash.clone(lodash.merge(menuPropsDefaultValue, menuProps))
41
+ )
42
+
43
+ const drawerPropsDefaultValue = {
19
44
  position: 'bottom'
20
- };
21
- let finalDrawerProps = $derived(lodash.clone(lodash.merge(drawerPropsDefaultValue, drawerProps)));
45
+ }
46
+
47
+ let finalDrawerProps = $derived(
48
+ lodash.clone(lodash.merge(drawerPropsDefaultValue, drawerProps))
49
+ )
22
50
  </script>
23
51
 
24
52
  <MediaQuery>
@@ -1,12 +1,28 @@
1
- <script lang="ts" module>export {};
1
+ <script lang="ts" module>
2
+ export type ArrayElement<ArrayType extends readonly unknown[]> = ArrayType extends readonly (infer ElementType)[] ? ElementType : never;
2
3
  </script>
3
4
 
4
- <script lang="ts" generics="Data">import '../../../css/main.css';
5
- import MenuOrDrawer from "./MenuOrDrawer.svelte";
6
- import SelectableVerticalList from '../../simple/lists/SelectableVerticalList.svelte';
7
- import lodash from 'lodash';
8
- let { open = $bindable(), elements = [], onselect, menuProps, drawerProps, } = $props();
9
- const menuPropsDefaultValue = {
5
+ <script lang="ts" generics="Data">
6
+ import '../../../css/main.css'
7
+ import type { ComponentProps } from 'svelte';
8
+ import MenuOrDrawer from "./MenuOrDrawer.svelte";
9
+ import SelectableVerticalList from '../../simple/lists/SelectableVerticalList.svelte';
10
+ import lodash from 'lodash'
11
+
12
+ interface Props extends ComponentProps<typeof MenuOrDrawer> {
13
+ elements?: ComponentProps<typeof SelectableVerticalList<Data>>['elements'];
14
+ onselect?: ComponentProps<typeof SelectableVerticalList<Data>>['onselect']
15
+ }
16
+
17
+ let {
18
+ open = $bindable(),
19
+ elements = [],
20
+ onselect,
21
+ menuProps,
22
+ drawerProps,
23
+ }: Props = $props();
24
+
25
+ const menuPropsDefaultValue = {
10
26
  anchor: 'bottom-center',
11
27
  stayInViewport: true,
12
28
  flipOnOverflow: false,
@@ -16,28 +32,36 @@ const menuPropsDefaultValue = {
16
32
  _minWidth: '100px',
17
33
  _borderRadius: '5px',
18
34
  openingId: undefined
19
- };
20
- let finalMenuProps = $derived(lodash.clone(lodash.merge(menuPropsDefaultValue, menuProps)));
21
- const drawerPropsDefaultValue = {
35
+ }
36
+
37
+ let finalMenuProps = $derived(
38
+ lodash.clone(lodash.merge(menuPropsDefaultValue, menuProps))
39
+ )
40
+
41
+ const drawerPropsDefaultValue = {
22
42
  position: 'bottom'
23
- };
24
- let finalDrawerProps = $derived(lodash.clone(lodash.merge(drawerPropsDefaultValue, drawerProps)));
25
- let selected = $state();
26
- let focused = $state();
27
- $effect(() => {
28
- if (!!selected)
29
- selected = undefined;
30
- });
31
- $effect(() => {
32
- if (!!focused && !open)
33
- focused = undefined;
34
- });
35
- function handleOnSelect(e) {
36
- open = false;
37
- if (onselect) {
38
- onselect(e);
43
+ }
44
+
45
+ let finalDrawerProps = $derived(
46
+ lodash.clone(lodash.merge(drawerPropsDefaultValue, drawerProps))
47
+ )
48
+
49
+ let selected: ArrayElement<NonNullable<ComponentProps<typeof SelectableVerticalList<Data>>['elements']>>['name'] | undefined = $state()
50
+ let focused: ArrayElement<NonNullable<ComponentProps<typeof SelectableVerticalList<Data>>['elements']>>['name'] | undefined = $state()
51
+ $effect(() => {
52
+ if(!!selected) selected = undefined
53
+ })
54
+ $effect(() => {
55
+ if(!!focused && !open) focused = undefined
56
+ })
57
+
58
+ function handleOnSelect(e: Parameters<NonNullable<ComponentProps<typeof SelectableVerticalList<Data>>['onselect']>>[0]){
59
+ open = false
60
+
61
+ if(onselect){
62
+ onselect(e)
39
63
  }
40
- }
64
+ }
41
65
  </script>
42
66
 
43
67
  <MenuOrDrawer
@@ -1,16 +1,21 @@
1
1
  export type ArrayElement<ArrayType extends readonly unknown[]> = ArrayType extends readonly (infer ElementType)[] ? ElementType : never;
2
2
  import '../../../css/main.css';
3
- declare class __sveltets_Render<Data> {
4
- props(): import("./MenuOrDrawer.svelte").Props & {
5
- elements?: import("../../simple/lists/SelectableVerticalList.svelte").Element<Data>[] | undefined;
6
- onselect?: ((event: {
7
- detail: {
8
- element: import("../../simple/lists/SelectableVerticalList.svelte").Element<Data>;
9
- };
10
- }) => void) | undefined;
3
+ import type { ComponentProps } from 'svelte';
4
+ import SelectableVerticalList from '../../simple/lists/SelectableVerticalList.svelte';
5
+ declare function $$render<Data>(): {
6
+ props: import("./MenuOrDrawer.svelte").Props & {
7
+ elements?: ComponentProps<typeof SelectableVerticalList<Data>>["elements"];
8
+ onselect?: ComponentProps<typeof SelectableVerticalList<Data>>["onselect"];
11
9
  };
12
- events(): {};
13
- slots(): {};
10
+ exports: {};
11
+ bindings: "open";
12
+ slots: {};
13
+ events: {};
14
+ };
15
+ declare class __sveltets_Render<Data> {
16
+ props(): ReturnType<typeof $$render<Data>>['props'];
17
+ events(): ReturnType<typeof $$render<Data>>['events'];
18
+ slots(): ReturnType<typeof $$render<Data>>['slots'];
14
19
  bindings(): "open";
15
20
  exports(): {};
16
21
  }
@@ -1,30 +1,66 @@
1
- <script module lang="ts">export {};
1
+ <script module lang="ts">
2
+ export type Action = {
3
+ label: string;
4
+ icon?: string;
5
+ disabled?: boolean;
6
+ loading?: boolean;
7
+ info?: string;
8
+ disabledInfo?: string
9
+ onClick: NonNullable<ComponentProps<typeof Button>['onclick']>
10
+ };
2
11
  </script>
3
12
 
4
- <script lang="ts">import { Button, Icon, mediaQuery, ToolTip } from "../../..";
5
- import { fly } from "svelte/transition";
6
- import { cubicIn } from "svelte/easing";
7
- import MenuOrDrawer from "./MenuOrDrawer.svelte";
8
- import './QuickActions.css';
9
- let { selectedItems, disabled, actionsForSelectedItems, position = 'top', lang = 'en', onClose, } = $props();
10
- let actions = $state([]), extraActions = $state([]), slotSelectActionsContainer = $state(), moreActionsActivator = $state(), openMoreActions = $state(false), infoActivators = $state({}), disabledInfoActivators = $state({});
11
- $effect(() => {
13
+ <script lang="ts">
14
+ import { Button, Icon, mediaQuery, ToolTip } from "../../..";
15
+ import type { ComponentProps } from "svelte";
16
+ import { fly } from "svelte/transition";
17
+ import { cubicIn } from "svelte/easing";
18
+ import MenuOrDrawer from "./MenuOrDrawer.svelte";
19
+ import './QuickActions.css'
20
+
21
+ interface Props {
22
+ selectedItems: number;
23
+ disabled?: boolean;
24
+ actionsForSelectedItems: Action[];
25
+ position?: 'top' | 'bottom';
26
+ lang?: 'it' | 'en';
27
+ onClose?: () => void
28
+ }
29
+
30
+ let {
31
+ selectedItems,
32
+ disabled,
33
+ actionsForSelectedItems,
34
+ position = 'top',
35
+ lang = 'en',
36
+ onClose,
37
+ }: Props = $props();
38
+
39
+ let actions: Action[] = $state([]),
40
+ extraActions: Action[] = $state([]),
41
+ slotSelectActionsContainer: HTMLElement | undefined = $state(),
42
+ moreActionsActivator: HTMLElement | undefined = $state(),
43
+ openMoreActions: boolean = $state(false),
44
+ infoActivators: { [actionLabel: string]: HTMLElement } = $state({}),
45
+ disabledInfoActivators: { [actionLabel: string]: HTMLElement } = $state({});
46
+
47
+ $effect(() => {
12
48
  if (!!slotSelectActionsContainer) {
13
- let numberOfSplit = $mediaQuery.xl ? 5 :
14
- $mediaQuery.l ? 4 :
15
- $mediaQuery.m ? 2 :
16
- $mediaQuery.s ? 0 :
17
- $mediaQuery.xs ? 0 : 3;
18
- if (actionsForSelectedItems.length > numberOfSplit) {
19
- extraActions = actionsForSelectedItems.slice(numberOfSplit);
20
- actions = actionsForSelectedItems.slice(0, numberOfSplit);
21
- }
22
- else {
23
- actions = actionsForSelectedItems;
24
- extraActions = [];
25
- }
49
+ let numberOfSplit = $mediaQuery.xl ? 5 :
50
+ $mediaQuery.l ? 4 :
51
+ $mediaQuery.m ? 2 :
52
+ $mediaQuery.s ? 0 :
53
+ $mediaQuery.xs ? 0 : 3
54
+
55
+ if (actionsForSelectedItems.length > numberOfSplit) {
56
+ extraActions = actionsForSelectedItems.slice(numberOfSplit);
57
+ actions = actionsForSelectedItems.slice(0, numberOfSplit);
58
+ } else {
59
+ actions = actionsForSelectedItems;
60
+ extraActions = [];
61
+ }
26
62
  }
27
- });
63
+ })
28
64
  </script>
29
65
 
30
66
  {#if selectedItems > 0}
@@ -1,36 +1,55 @@
1
- <script lang="ts">import '../../../css/main.css';
2
- import Menu from "../../simple/common/Menu.svelte";
3
- import { tick } from 'svelte';
4
- let { activator = $bindable(), menuOpen = $bindable(false), menuProps = {}, appearTimeout = undefined, children, } = $props();
5
- let mouseEnterHandler = undefined, mouseLeaveHandler = undefined, appearTimeoutId = undefined;
6
- $effect(() => {
7
- if (!!activator) {
8
- if (!!mouseEnterHandler)
9
- activator.removeEventListener('mouseenter', mouseEnterHandler);
10
- if (!!mouseLeaveHandler)
11
- activator.removeEventListener('mouseleave', mouseLeaveHandler);
12
- mouseEnterHandler = () => {
13
- if (appearTimeout !== undefined) {
14
- if (appearTimeoutId !== undefined)
15
- clearTimeout(appearTimeoutId);
16
- appearTimeoutId = setTimeout(async () => {
17
- menuOpen = true;
18
- await tick();
19
- }, appearTimeout);
20
- }
21
- else {
22
- menuOpen = true;
23
- }
24
- };
25
- activator.addEventListener('mouseenter', mouseEnterHandler);
26
- mouseLeaveHandler = () => {
27
- if (appearTimeoutId !== undefined)
28
- clearTimeout(appearTimeoutId);
29
- menuOpen = false;
30
- };
31
- activator.addEventListener('mouseleave', mouseLeaveHandler);
1
+ <script lang="ts">
2
+ import '../../../css/main.css'
3
+ import Menu from "../../simple/common/Menu.svelte";
4
+ import { tick, type ComponentProps, type Snippet } from 'svelte';
5
+
6
+ interface Props {
7
+ activator: HTMLElement;
8
+ menuOpen?: boolean;
9
+ menuProps?: ComponentProps<typeof Menu>;
10
+ appearTimeout?: number;
11
+ children?: Snippet<[]>
12
+ }
13
+
14
+ let {
15
+ activator = $bindable(),
16
+ menuOpen = $bindable(false),
17
+ menuProps = {},
18
+ appearTimeout = undefined,
19
+ children,
20
+ }: Props = $props();
21
+
22
+ let mouseEnterHandler: (() => void) | undefined = undefined,
23
+ mouseLeaveHandler: (() => void) | undefined = undefined,
24
+ appearTimeoutId: NodeJS.Timeout | undefined = undefined
25
+
26
+ $effect(() => {
27
+ if(!!activator) {
28
+ if(!!mouseEnterHandler) activator.removeEventListener('mouseenter', mouseEnterHandler)
29
+ if(!!mouseLeaveHandler) activator.removeEventListener('mouseleave', mouseLeaveHandler)
30
+
31
+ mouseEnterHandler = () => {
32
+ if(appearTimeout !== undefined) {
33
+ if(appearTimeoutId !== undefined) clearTimeout(appearTimeoutId)
34
+
35
+ appearTimeoutId = setTimeout(async () => {
36
+ menuOpen = true
37
+ await tick()
38
+ }, appearTimeout);
39
+ } else {
40
+ menuOpen = true
41
+ }
42
+ }
43
+ activator.addEventListener('mouseenter', mouseEnterHandler)
44
+
45
+ mouseLeaveHandler = () => {
46
+ if(appearTimeoutId !== undefined) clearTimeout(appearTimeoutId)
47
+ menuOpen = false
48
+ }
49
+ activator.addEventListener('mouseleave', mouseLeaveHandler)
32
50
  }
33
- });
51
+ })
52
+
34
53
  </script>
35
54
 
36
55
  <Menu