@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,88 +1,137 @@
1
- <script lang="ts">import "../../../css/main.css";
2
- import "./QuickFilters.css";
3
- import { ENGLISH_LABELS_MAPPER, ITALIAN_LABELS_MAPPER, } from "../../../utils/filters/filters";
4
- import Icon from "../../simple/media/Icon.svelte";
5
- import Menu from "../../simple/common/Menu.svelte";
6
- import FilterEditor from "./FilterEditor.svelte";
7
- import Button from "../../simple/buttons/Button.svelte";
8
- import MediaQuery from "../../simple/common/MediaQuery.svelte";
9
- import Drawer from "../../simple/navigation/Drawer.svelte";
10
- let { filters = $bindable(), buttonLabelSnippet, onapply, lang, } = $props();
11
- let activators = $state({}), openMenus = $state({});
12
- function handleClick(params) {
1
+ <script lang="ts">
2
+ import "../../../css/main.css";
3
+ import "./QuickFilters.css";
4
+ import {
5
+ ENGLISH_LABELS_MAPPER,
6
+ ITALIAN_LABELS_MAPPER,
7
+ type Filter,
8
+ } from "../../../utils/filters/filters";
9
+ import Icon from "../../simple/media/Icon.svelte";
10
+ import type { Snippet } from "svelte";
11
+ import Menu from "../../simple/common/Menu.svelte";
12
+ import FilterEditor from "./FilterEditor.svelte";
13
+ import Button from "../../simple/buttons/Button.svelte";
14
+ import MediaQuery from "../../simple/common/MediaQuery.svelte";
15
+ import Drawer from "../../simple/navigation/Drawer.svelte";
16
+
17
+ type QuickFilter = Filter & {
18
+ icon?: string;
19
+ };
20
+
21
+ type Props = {
22
+ filters?: QuickFilter[];
23
+ lang?: "it" | "en";
24
+ onapply?: (params: { filter: QuickFilter; filters: QuickFilter[] }) => void;
25
+ buttonLabelSnippet?: Snippet<
26
+ [
27
+ {
28
+ filter: QuickFilter;
29
+ },
30
+ ]
31
+ >;
32
+ };
33
+
34
+ let {
35
+ filters = $bindable(),
36
+ buttonLabelSnippet,
37
+ onapply,
38
+ lang,
39
+ }: Props = $props();
40
+
41
+ let activators: Record<string, HTMLElement> = $state({}),
42
+ openMenus: Record<string, boolean> = $state({});
43
+
44
+ function handleClick(params: { index: number }) {
13
45
  if (filters) {
14
- let filter = filters[params.index];
15
- if (filter.type == 'bool') {
16
- filter.value = !filter.value;
17
- handleApplyFilter(params);
18
- }
19
- else {
20
- openMenus[filter.name] = true;
21
- }
46
+ let filter = filters[params.index]
47
+
48
+ if (filter.type == 'bool') {
49
+ filter.value = !filter.value
50
+ handleApplyFilter(params)
51
+ } else {
52
+ openMenus[filter.name] = true
53
+ }
22
54
  }
23
- }
24
- function handleApplyFilter(params) {
55
+ }
56
+
57
+ function handleApplyFilter(params: { index: number }) {
25
58
  if (!!filters) {
26
- filters[params.index].active = isActiveFilter(params);
27
- openMenus[filters[params.index].name] = false;
28
- onapply?.({ filter: filters[params.index], filters: filters || [] });
59
+ filters[params.index].active = isActiveFilter(params);
60
+ openMenus[filters[params.index].name] = false;
61
+ onapply?.({ filter: filters[params.index], filters: filters || [] });
29
62
  }
30
- }
31
- function handleClearFilter(params) {
63
+ }
64
+
65
+ function handleClearFilter(params: { index: number }) {
32
66
  if (!!filters) {
33
- let filter = filters[params.index];
34
- if (filter.type == 'string' ||
35
- filter.type == 'bool' ||
36
- filter.type == 'choice' ||
37
- filter.type == 'custom' ||
38
- filter.type == 'multiString') {
39
- filter.value = undefined;
40
- }
41
- else if (filter.type == 'select') {
42
- filter.values = undefined;
43
- }
44
- else if (filter.type == 'number' ||
45
- filter.type == 'date') {
46
- if (filter.mode == 'between') {
47
- filter.from = undefined;
48
- filter.to = undefined;
49
- }
50
- else if (filter.mode == 'equal' ||
51
- filter.mode == 'greater' ||
52
- filter.mode == 'lower') {
53
- filter.value = undefined;
54
- }
67
+ let filter = filters[params.index]
68
+
69
+ if (
70
+ filter.type == 'string' ||
71
+ filter.type == 'bool' ||
72
+ filter.type == 'choice' ||
73
+ filter.type == 'custom' ||
74
+ filter.type == 'multiString'
75
+ ) {
76
+ filter.value = undefined
77
+ }
78
+ else if (filter.type == 'select') {
79
+ filter.values = undefined
80
+ }
81
+ else if (
82
+ filter.type == 'number' ||
83
+ filter.type == 'date'
84
+ ) {
85
+ if (filter.mode == 'between') {
86
+ filter.from = undefined
87
+ filter.to = undefined
88
+ } else if (
89
+ filter.mode == 'equal' ||
90
+ filter.mode == 'greater' ||
91
+ filter.mode == 'lower'
92
+ ) {
93
+ filter.value = undefined
55
94
  }
56
- handleApplyFilter(params);
95
+ }
96
+
97
+ handleApplyFilter(params)
57
98
  }
58
- }
59
- function isActiveFilter(params) {
99
+ }
100
+
101
+ function isActiveFilter(params: { index: number }): boolean {
60
102
  if (filters) {
61
- let filter = filters[params.index];
62
- if (filter.type == 'string' ||
63
- filter.type == 'bool' ||
64
- filter.type == 'choice' ||
65
- filter.type == 'custom' ||
66
- filter.type == 'multiString') {
67
- return !!filter.value && filter.value != undefined;
68
- }
69
- else if (filter.type == 'select') {
70
- return !!filter.values?.length;
71
- }
72
- else if (filter.type == 'number' ||
73
- filter.type == 'date') {
74
- if (filter.mode == 'between') {
75
- return filter.from != undefined || filter.to != undefined;
76
- }
77
- else if (filter.mode == 'equal' ||
78
- filter.mode == 'greater' ||
79
- filter.mode == 'lower') {
80
- return filter.value != undefined;
81
- }
103
+ let filter = filters[params.index]
104
+
105
+ if (
106
+ filter.type == 'string' ||
107
+ filter.type == 'bool' ||
108
+ filter.type == 'choice' ||
109
+ filter.type == 'custom' ||
110
+ filter.type == 'multiString'
111
+ ) {
112
+ return !!filter.value && filter.value != undefined
113
+ }
114
+ else if (filter.type == 'select') {
115
+ return !!filter.values?.length
116
+ }
117
+ else if (
118
+ filter.type == 'number' ||
119
+ filter.type == 'date'
120
+ ) {
121
+ if (filter.mode == 'between') {
122
+ return filter.from != undefined || filter.to != undefined
123
+ } else if (
124
+ filter.mode == 'equal' ||
125
+ filter.mode == 'greater' ||
126
+ filter.mode == 'lower'
127
+ ) {
128
+ return filter.value != undefined
82
129
  }
130
+ }
83
131
  }
84
- return false;
85
- }
132
+
133
+ return false
134
+ }
86
135
  </script>
87
136
 
88
137
  <div class="quick-filters-container">
@@ -1,6 +1,45 @@
1
- <script lang="ts">import "../../../css/main.css";
2
- import "./SearchBar.css";
3
- let { input = $bindable(undefined), value = $bindable(undefined), placeholder = undefined, class: clazz = {}, onblur, onchange, onfocus, oninput, onkeydown, iconSnippet, inputSnippet, } = $props();
1
+ <script lang="ts">
2
+ import type {
3
+ ChangeEventHandler,
4
+ FocusEventHandler,
5
+ FormEventHandler,
6
+ KeyboardEventHandler,
7
+ } from "svelte/elements";
8
+ import "../../../css/main.css";
9
+ import "./SearchBar.css";
10
+ import type { Snippet } from "svelte";
11
+
12
+ interface Props {
13
+ input?: HTMLElement;
14
+ value?: string;
15
+ placeholder?: string;
16
+ class?: {
17
+ container?: string;
18
+ icon?: string;
19
+ input?: string;
20
+ };
21
+ oninput?: FormEventHandler<HTMLInputElement>;
22
+ onchange?: ChangeEventHandler<HTMLInputElement>;
23
+ onkeydown?: KeyboardEventHandler<HTMLInputElement>;
24
+ onfocus?: FocusEventHandler<HTMLInputElement>;
25
+ onblur?: FocusEventHandler<HTMLInputElement>;
26
+ iconSnippet?: Snippet<[]>;
27
+ inputSnippet?: Snippet<[]>;
28
+ }
29
+
30
+ let {
31
+ input = $bindable(undefined),
32
+ value = $bindable(undefined),
33
+ placeholder = undefined,
34
+ class: clazz = {},
35
+ onblur,
36
+ onchange,
37
+ onfocus,
38
+ oninput,
39
+ onkeydown,
40
+ iconSnippet,
41
+ inputSnippet,
42
+ }: Props = $props();
4
43
  </script>
5
44
 
6
45
  <div class="search-bar-container {clazz.container}">
@@ -1,10 +1,53 @@
1
- <script lang="ts" module>export {};
1
+ <script lang="ts" module>
2
+ export type Result<Data = Record<string, any>> = {
3
+ title: string
4
+ name: string | number,
5
+ subtitle?: string
6
+ url?: string,
7
+ data?: Data
8
+ };
2
9
  </script>
3
10
 
4
- <script lang="ts" generics="Data">import '../../../css/main.css';
5
- import './SearchResults.css';
6
- import SelectableVerticalList from "../../simple/lists/SelectableVerticalList.svelte";
7
- let { noDataText = "Sorry, nothing found", loadingText = "Searching for references ...", results = $bindable([]), loading = false, footer = true, activeKeyboard = false, class: clazz = {}, footerSnippet, loadingSnippet, noDataSnippet, onfocus, onselect, } = $props();
11
+ <script lang="ts" generics="Data">
12
+ import '../../../css/main.css'
13
+ import './SearchResults.css'
14
+ import SelectableVerticalList from "../../simple/lists/SelectableVerticalList.svelte";
15
+ import type { ComponentProps, Snippet } from 'svelte';
16
+
17
+ interface Props {
18
+ noDataText?: string;
19
+ loadingText?: string;
20
+ results?: Result<Data>[];
21
+ loading?: boolean;
22
+ footer?: boolean;
23
+ activeKeyboard?: boolean;
24
+ class?: {
25
+ container?: string,
26
+ loading?: string,
27
+ noData?: string,
28
+ results?: string
29
+ }
30
+ loadingSnippet?: Snippet<[]>
31
+ noDataSnippet?: Snippet<[]>
32
+ footerSnippet?: Snippet<[]>
33
+ onfocus?: ComponentProps<typeof SelectableVerticalList<Data>>['onfocus']
34
+ onselect?: ComponentProps<typeof SelectableVerticalList<Data>>['onselect']
35
+ }
36
+
37
+ let {
38
+ noDataText = "Sorry, nothing found",
39
+ loadingText = "Searching for references ...",
40
+ results = $bindable([]),
41
+ loading = false,
42
+ footer = true,
43
+ activeKeyboard = false,
44
+ class: clazz = {},
45
+ footerSnippet,
46
+ loadingSnippet,
47
+ noDataSnippet,
48
+ onfocus,
49
+ onselect,
50
+ }: Props = $props();
8
51
  </script>
9
52
 
10
53
  <div
@@ -7,12 +7,13 @@ export type Result<Data = Record<string, any>> = {
7
7
  };
8
8
  import '../../../css/main.css';
9
9
  import './SearchResults.css';
10
- import type { Snippet } from 'svelte';
11
- declare class __sveltets_Render<Data> {
12
- props(): {
10
+ import SelectableVerticalList from "../../simple/lists/SelectableVerticalList.svelte";
11
+ import type { ComponentProps, Snippet } from 'svelte';
12
+ declare function $$render<Data>(): {
13
+ props: {
13
14
  noDataText?: string;
14
15
  loadingText?: string;
15
- results?: Result<Data>[] | undefined;
16
+ results?: Result<Data>[];
16
17
  loading?: boolean;
17
18
  footer?: boolean;
18
19
  activeKeyboard?: boolean;
@@ -21,23 +22,22 @@ declare class __sveltets_Render<Data> {
21
22
  loading?: string;
22
23
  noData?: string;
23
24
  results?: string;
24
- } | undefined;
25
+ };
25
26
  loadingSnippet?: Snippet<[]>;
26
27
  noDataSnippet?: Snippet<[]>;
27
28
  footerSnippet?: Snippet<[]>;
28
- onfocus?: ((event: {
29
- detail: {
30
- element: import("../../simple/lists/SelectableVerticalList.svelte").Element<Data>;
31
- };
32
- }) => void) | undefined;
33
- onselect?: ((event: {
34
- detail: {
35
- element: import("../../simple/lists/SelectableVerticalList.svelte").Element<Data>;
36
- };
37
- }) => void) | undefined;
29
+ onfocus?: ComponentProps<typeof SelectableVerticalList<Data>>["onfocus"];
30
+ onselect?: ComponentProps<typeof SelectableVerticalList<Data>>["onselect"];
38
31
  };
39
- events(): {};
40
- slots(): {};
32
+ exports: {};
33
+ bindings: "results";
34
+ slots: {};
35
+ events: {};
36
+ };
37
+ declare class __sveltets_Render<Data> {
38
+ props(): ReturnType<typeof $$render<Data>>['props'];
39
+ events(): ReturnType<typeof $$render<Data>>['events'];
40
+ slots(): ReturnType<typeof $$render<Data>>['slots'];
41
41
  bindings(): "results";
42
42
  exports(): {};
43
43
  }
@@ -1,37 +1,113 @@
1
- <script lang="ts">import "../../css/main.css";
2
- import "./CollapsibleSideBarLayout.css";
3
- import MediaQuery from "../simple/common/MediaQuery.svelte";
4
- import Icon from "../simple/media/Icon.svelte";
5
- import {} from "../simple/lists/ColorInvertedSelector.svelte";
6
- import { writable } from "svelte/store";
7
- import {} from "svelte";
8
- import mediaQuery from "../../stores/mediaQuery";
9
- let { drawerOpened = $bindable(false), sidebarExpanded = $bindable(false), class: clazz = {}, ondrawerChange, onsidebarToggle, headerSnippet, innerMenuSnippet, sidebarSnippet, logoSnippet, menuSnippet, userSnippet, children, } = $props();
10
- const sidebarPinned = writable(false);
11
- let headerElement;
12
- function toggleMenu() {
1
+ <script lang="ts">
2
+ import "../../css/main.css";
3
+ import "./CollapsibleSideBarLayout.css";
4
+ import MediaQuery from "../simple/common/MediaQuery.svelte";
5
+ import Icon from "../simple/media/Icon.svelte";
6
+ import { type Option } from "../simple/lists/ColorInvertedSelector.svelte";
7
+ import { writable } from "svelte/store";
8
+ import { type Snippet } from "svelte";
9
+ import mediaQuery from "../../stores/mediaQuery";
10
+
11
+ interface Props {
12
+ drawerOpened?: boolean;
13
+ sidebarExpanded?: boolean;
14
+ class?: {
15
+ container?: string;
16
+ header?: string;
17
+ mainSection?: string;
18
+ overlay?: string;
19
+ };
20
+ ondrawerChange?: (event: {
21
+ detail: {
22
+ opened: boolean;
23
+ };
24
+ }) => void;
25
+ onmenuSelect?: (event: {
26
+ detail: {
27
+ option: Option;
28
+ };
29
+ }) => void;
30
+ onpinnedChange?: (event: {
31
+ detail: {
32
+ pinned: boolean;
33
+ };
34
+ }) => void;
35
+ onsidebarToggle?: (event: {
36
+ detail: {
37
+ expanded: boolean;
38
+ };
39
+ }) => void;
40
+ headerSnippet?: Snippet<[{
41
+ hamburgerVisible: boolean;
42
+ sidebarExpanded: boolean;
43
+ }]>;
44
+ innerMenuSnippet?: Snippet<[{
45
+ hamburgerVisible: boolean;
46
+ }]>;
47
+ sidebarSnippet?: Snippet<[{
48
+ hamburgerVisible: boolean;
49
+ sidebarExpanded: boolean;
50
+ }]>;
51
+ logoSnippet?: Snippet<[{
52
+ hamburgerVisible: boolean;
53
+ sidebarExpanded: boolean;
54
+ }]>;
55
+ menuSnippet?: Snippet<[{
56
+ hamburgerVisible: boolean;
57
+ sidebarExpanded: boolean;
58
+ }]>;
59
+ userSnippet?: Snippet<[{
60
+ hamburgerVisible: boolean;
61
+ sidebarExpanded: boolean;
62
+ }]>;
63
+ children?: Snippet<[]>;
64
+ }
65
+
66
+ let {
67
+ drawerOpened = $bindable(false),
68
+ sidebarExpanded = $bindable(false),
69
+ class: clazz = {},
70
+ ondrawerChange,
71
+ onsidebarToggle,
72
+ headerSnippet,
73
+ innerMenuSnippet,
74
+ sidebarSnippet,
75
+ logoSnippet,
76
+ menuSnippet,
77
+ userSnippet,
78
+ children,
79
+ }: Props = $props();
80
+
81
+ const sidebarPinned = writable(false);
82
+
83
+ let headerElement: HTMLElement;
84
+
85
+ function toggleMenu(): void {
13
86
  drawerOpened = !drawerOpened;
14
87
  if (ondrawerChange) {
15
- ondrawerChange({ detail: { opened: drawerOpened } });
88
+ ondrawerChange({ detail: { opened: drawerOpened } });
16
89
  }
17
- }
18
- function handleOverlayClick() {
90
+ }
91
+
92
+ function handleOverlayClick(): void {
19
93
  drawerOpened = false;
20
94
  if (ondrawerChange) {
21
- ondrawerChange({ detail: { opened: drawerOpened } });
95
+ ondrawerChange({ detail: { opened: drawerOpened } });
22
96
  }
23
- }
24
- function toggleSidebar() {
97
+ }
98
+
99
+ function toggleSidebar(): void {
25
100
  sidebarExpanded = !sidebarExpanded;
26
101
  if (onsidebarToggle) {
27
- onsidebarToggle({ detail: { expanded: sidebarExpanded } });
102
+ onsidebarToggle({ detail: { expanded: sidebarExpanded } });
28
103
  }
29
- }
30
- $effect(() => {
31
- if ($mediaQuery.m || $mediaQuery.s || $mediaQuery.xs) {
32
- sidebarExpanded = false;
104
+ }
105
+
106
+ $effect(() => {
107
+ if($mediaQuery.m || $mediaQuery.s || $mediaQuery.xs) {
108
+ sidebarExpanded = false
33
109
  }
34
- });
110
+ })
35
111
  </script>
36
112
 
37
113
  <MediaQuery>
@@ -1,29 +1,79 @@
1
- <script lang="ts">import '../../css/main.css';
2
- import './StableDividedSideBarLayout.css';
3
- import MediaQuery from "../simple/common/MediaQuery.svelte";
4
- import Icon from "../simple/media/Icon.svelte";
5
- import {} from "svelte";
6
- let { drawerOpened = $bindable(false), ondrawerChange, children, innerMenuSnippet, menuSnippet, sidebarSnippet, class: clazz = {} } = $props();
7
- function toggleMenu() {
8
- drawerOpened = !drawerOpened;
9
- if (ondrawerChange) {
10
- ondrawerChange({
11
- detail: {
12
- opened: drawerOpened
13
- }
14
- });
1
+ <script lang="ts">
2
+ import '../../css/main.css'
3
+ import './StableDividedSideBarLayout.css'
4
+ import MediaQuery from "../simple/common/MediaQuery.svelte";
5
+ import Icon from "../simple/media/Icon.svelte"
6
+ import { type Snippet } from "svelte";
7
+
8
+ /*
9
+ Styles:
10
+
11
+ --stable-divided-side-bar-layout-content-padding
12
+ --stable-divided-side-bar-layout-side-bar-width
13
+ --stable-divided-side-bar-layout-side-bar-border-color
14
+ --stable-divided-side-bar-layout-side-bar-padding
15
+ --stable-divided-side-bar-layout-header-menu-height
16
+ --stable-divided-side-bar-layout-header-menu-border-color
17
+ --stable-divided-side-bar-layout-header-menu-padding
18
+ --stable-divided-side-bar-layout-inner-header-menu-background-color
19
+ --stable-divided-side-bar-layout-drawer-background-color
20
+ --stable-divided-side-bar-layout-drawer-width
21
+ */
22
+
23
+ interface Props {
24
+ drawerOpened?: boolean;
25
+ class?: {
26
+ container?: string,
27
+ header?: string,
28
+ mainSection?: string,
29
+ overlay?: string
30
+ }
31
+ ondrawerChange?: (event: {
32
+ detail: {
33
+ opened: boolean
34
+ }
35
+ }) => void
36
+ children?: Snippet<[]>
37
+ menuSnippet?: Snippet<[]>
38
+ innerMenuSnippet?: Snippet<[{
39
+ hamburgerVisible: boolean
40
+ }]>
41
+ sidebarSnippet?: Snippet<[{
42
+ hamburgerVisible: boolean
43
+ }]>
44
+ }
45
+
46
+ let {
47
+ drawerOpened = $bindable(false),
48
+ ondrawerChange,
49
+ children,
50
+ innerMenuSnippet,
51
+ menuSnippet,
52
+ sidebarSnippet,
53
+ class: clazz = {}
54
+ }: Props = $props();
55
+
56
+ function toggleMenu() {
57
+ drawerOpened = !drawerOpened
58
+ if(ondrawerChange) {
59
+ ondrawerChange({
60
+ detail: {
61
+ opened: drawerOpened
62
+ }
63
+ })
15
64
  }
16
- }
17
- function handleOverlayClick() {
18
- drawerOpened = false;
19
- if (ondrawerChange) {
20
- ondrawerChange({
21
- detail: {
22
- opened: drawerOpened
23
- }
24
- });
65
+ }
66
+
67
+ function handleOverlayClick() {
68
+ drawerOpened = false
69
+ if(ondrawerChange) {
70
+ ondrawerChange({
71
+ detail: {
72
+ opened: drawerOpened
73
+ }
74
+ })
25
75
  }
26
- }
76
+ }
27
77
  </script>
28
78
 
29
79
  <MediaQuery>