@medyll/idae-slotui-svelte 0.26.0 → 0.28.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 (187) hide show
  1. package/dist/base/alert/Alert.demo.svelte +10 -8
  2. package/dist/base/alert/Alert.svelte +56 -48
  3. package/dist/base/alert/types.d.ts +4 -4
  4. package/dist/base/alert/types.js +11 -11
  5. package/dist/base/avatar/Avatar.demo.svelte +12 -8
  6. package/dist/base/avatar/Avatar.preview.svelte +3 -2
  7. package/dist/base/avatar/Avatar.svelte +24 -19
  8. package/dist/base/avatar/types.d.ts +5 -5
  9. package/dist/base/avatar/types.js +9 -9
  10. package/dist/base/backdrop/Backdrop.demo.svelte +13 -9
  11. package/dist/base/backdrop/Backdrop.svelte +45 -37
  12. package/dist/base/backdrop/types.d.ts +7 -7
  13. package/dist/base/backdrop/types.js +10 -10
  14. package/dist/base/badge/Badge.svelte +22 -18
  15. package/dist/base/box/Box.demo.svelte +12 -9
  16. package/dist/base/box/Box.svelte +44 -36
  17. package/dist/base/box/types.d.ts +3 -3
  18. package/dist/base/box/types.js +16 -16
  19. package/dist/base/breadCrumb/BreadCrumb.svelte +12 -8
  20. package/dist/base/cartouche/Cartouche.demo.svelte +13 -9
  21. package/dist/base/cartouche/Cartouche.svelte +50 -43
  22. package/dist/base/cartouche/types.d.ts +7 -7
  23. package/dist/base/cartouche/types.js +20 -20
  24. package/dist/base/chipper/Chipper.demo.svelte +14 -10
  25. package/dist/base/chipper/Chipper.svelte +19 -14
  26. package/dist/base/chipper/types.d.ts +5 -5
  27. package/dist/base/chipper/types.js +10 -10
  28. package/dist/base/columner/Column.svelte +39 -31
  29. package/dist/base/columner/Columner.demo.svelte +4 -3
  30. package/dist/base/columner/Columner.svelte +12 -5
  31. package/dist/base/contentSwitcher/ContentSwitcher.demo.svelte +11 -8
  32. package/dist/base/contentSwitcher/ContentSwitcher.svelte +40 -30
  33. package/dist/base/contentSwitcher/types.d.ts +3 -3
  34. package/dist/base/contentSwitcher/types.js +6 -6
  35. package/dist/base/debug/Debug.svelte +14 -11
  36. package/dist/base/demoer/DemoPage.svelte +18 -12
  37. package/dist/base/demoer/Demoer.svelte +20 -16
  38. package/dist/base/demoer/DemoerCode.svelte +28 -6
  39. package/dist/base/demoer/DemoerComponent.svelte +33 -13
  40. package/dist/base/demoer/demoer.utils.d.ts +2 -1
  41. package/dist/base/demoer/demoer.utils.js +4 -1
  42. package/dist/base/divider/Divider.demo.svelte +12 -6
  43. package/dist/base/divider/Divider.svelte +58 -41
  44. package/dist/base/divider/types.d.ts +5 -5
  45. package/dist/base/divider/types.js +10 -10
  46. package/dist/base/icon/Icon.demo.svelte +8 -5
  47. package/dist/base/icon/Icon.svelte +34 -27
  48. package/dist/base/icon/types.d.ts +4 -4
  49. package/dist/base/icon/types.js +9 -9
  50. package/dist/base/paper/Paper.demo.svelte +12 -9
  51. package/dist/base/paper/Paper.svelte +13 -9
  52. package/dist/base/paper/type.d.ts +3 -3
  53. package/dist/base/paper/type.js +4 -4
  54. package/dist/base/titleBar/TitleBar.demo.svelte +11 -9
  55. package/dist/base/titleBar/TitleBar.svelte +16 -12
  56. package/dist/base/titleBar/types.d.ts +4 -4
  57. package/dist/base/titleBar/types.js +8 -8
  58. package/dist/controls/autocomplete/AutoComplete.demo.svelte +21 -16
  59. package/dist/controls/autocomplete/AutoComplete.svelte +81 -62
  60. package/dist/controls/button/Button.demo.svelte +71 -45
  61. package/dist/controls/button/Button.svelte +130 -155
  62. package/dist/controls/button/Button.svelte.d.ts +2 -27
  63. package/dist/controls/button/ButtonAction.svelte +122 -133
  64. package/dist/controls/button/ButtonAction.svelte.d.ts +3 -2
  65. package/dist/controls/button/ButtonMenu.svelte +22 -16
  66. package/dist/controls/button/IconButton.svelte +40 -14
  67. package/dist/controls/button/button-action.scss +1 -1
  68. package/dist/controls/button/button.scss +22 -47
  69. package/dist/controls/button/types.d.ts +19 -16
  70. package/dist/controls/button/types.js +26 -24
  71. package/dist/controls/checkbox/Checkbox.demo.svelte +13 -9
  72. package/dist/controls/checkbox/Checkbox.svelte +18 -14
  73. package/dist/controls/confirm/Confirm.demo.svelte +12 -8
  74. package/dist/controls/confirm/Confirm.preview.svelte +3 -2
  75. package/dist/controls/confirm/Confirm.svelte +87 -64
  76. package/dist/controls/inplaceedit/InPlaceEdit.demo.svelte +12 -8
  77. package/dist/controls/inplaceedit/InPlaceEdit.svelte +74 -55
  78. package/dist/controls/progress/Progress.demo.svelte +14 -9
  79. package/dist/controls/progress/Progress.svelte +19 -13
  80. package/dist/controls/rating/Rating.demo.svelte +11 -8
  81. package/dist/controls/rating/Rating.svelte +21 -16
  82. package/dist/controls/select/Select.demo.svelte +46 -37
  83. package/dist/controls/select/Select.svelte +76 -29
  84. package/dist/controls/slider/Slider.demo.svelte +14 -7
  85. package/dist/controls/slider/Slider.svelte +104 -89
  86. package/dist/controls/stepper/Stepper.demo.svelte +9 -6
  87. package/dist/controls/stepper/Stepper.svelte +19 -13
  88. package/dist/controls/switch/Switch.demo.svelte +31 -24
  89. package/dist/controls/switch/Switch.svelte +20 -15
  90. package/dist/controls/textfield/TextField.demo.svelte +28 -23
  91. package/dist/controls/textfield/TextField.svelte +42 -34
  92. package/dist/data/dataList/DataList.demo.svelte +44 -37
  93. package/dist/data/dataList/DataList.preview.svelte +8 -6
  94. package/dist/data/dataList/DataList.svelte +139 -115
  95. package/dist/data/dataList/DataList.svelte.d.ts +7 -8
  96. package/dist/data/dataList/DataListCell.svelte +146 -96
  97. package/dist/data/dataList/DataListHead.svelte +52 -36
  98. package/dist/data/dataList/DataListRow.svelte +57 -43
  99. package/dist/data/dataList/types.d.ts +16 -14
  100. package/dist/data/dataList/types.js +33 -33
  101. package/dist/data/finder/Finder.demo.svelte +15 -11
  102. package/dist/data/finder/Finder.svelte +64 -46
  103. package/dist/data/grouper/Grouper.demo.svelte +14 -8
  104. package/dist/data/grouper/Grouper.svelte +62 -50
  105. package/dist/data/jsoner/Jsoner.svelte +14 -10
  106. package/dist/data/list/List.svelte +6 -2
  107. package/dist/data/list/ListItem.svelte +5 -2
  108. package/dist/data/list/ListTitle.svelte +5 -2
  109. package/dist/data/loader/Loader.demo.svelte +16 -8
  110. package/dist/data/loader/Loader.preview.svelte +2 -1
  111. package/dist/data/loader/Loader.svelte +56 -49
  112. package/dist/data/sorter/Sorter.demo.svelte +20 -17
  113. package/dist/data/sorter/Sorter.svelte +40 -33
  114. package/dist/data/sorter/Sorterer.svelte +17 -15
  115. package/dist/index.d.ts +4 -4
  116. package/dist/index.js +4 -4
  117. package/dist/navigation/drawer/Drawer.demo.svelte +11 -7
  118. package/dist/navigation/drawer/Drawer.svelte +92 -81
  119. package/dist/navigation/tabs/Tabs.demo.svelte +23 -18
  120. package/dist/navigation/tabs/Tabs.preview.svelte +17 -14
  121. package/dist/navigation/tabs/Tabs.svelte +73 -61
  122. package/dist/slotui-css/button-action.css +1 -0
  123. package/dist/slotui-css/button-action.min.css +1 -0
  124. package/dist/slotui-css/button.css +83 -108
  125. package/dist/slotui-css/button.min.css +83 -108
  126. package/dist/slotui-css/slotui-combined.css +111 -135
  127. package/dist/styles/slotuisheet/SlotuiSheet.svelte +14 -11
  128. package/dist/styles/slotuisheet/SlotyuiSheet.demo.svelte +21 -17
  129. package/dist/ui/bootstrapp/BootStrApp.svelte +21 -15
  130. package/dist/ui/chromeFrame/ChromeFrame.svelte +19 -10
  131. package/dist/ui/chromeFrame/ChromeFrameButtonList.svelte +6 -4
  132. package/dist/ui/chromeFrame/ChromeFrameList.svelte +97 -58
  133. package/dist/ui/frame/Frame.demo.svelte +6 -4
  134. package/dist/ui/frame/Frame.svelte +51 -44
  135. package/dist/ui/frame/types.d.ts +5 -4
  136. package/dist/ui/frame/types.js +6 -5
  137. package/dist/ui/login/Login.demo.svelte +29 -21
  138. package/dist/ui/login/Login.svelte +49 -41
  139. package/dist/ui/marquee/Marque.demo.svelte +9 -6
  140. package/dist/ui/marquee/Marquee.svelte +69 -27
  141. package/dist/ui/menu/Menu.svelte +6 -2
  142. package/dist/ui/menu/MenuItem.svelte +6 -2
  143. package/dist/ui/menu/MenuTitle.svelte +5 -2
  144. package/dist/ui/menuList/MenuList.demo.svelte +14 -9
  145. package/dist/ui/menuList/MenuList.svelte +109 -96
  146. package/dist/ui/menuList/MenuListItem.svelte +85 -70
  147. package/dist/ui/menuList/MenuListTitle.svelte +5 -2
  148. package/dist/ui/panel/Panel.demo.svelte +37 -28
  149. package/dist/ui/panel/Panel.svelte +44 -34
  150. package/dist/ui/panel/PanelGrid.svelte +18 -14
  151. package/dist/ui/panel/PanelSlide.svelte +121 -79
  152. package/dist/ui/panel/Paneler.svelte +51 -24
  153. package/dist/ui/popper/Popper.demo.svelte +33 -25
  154. package/dist/ui/popper/Popper.svelte +105 -87
  155. package/dist/ui/popper/usePopper.d.ts +2 -2
  156. package/dist/ui/popper/usePopper.js +6 -6
  157. package/dist/ui/preview/Preview.svelte +18 -14
  158. package/dist/ui/serviceBox/ServiceBox.svelte +8 -6
  159. package/dist/ui/startMenu/BootMenu.svelte +32 -24
  160. package/dist/ui/taskbar/TaskBarContent.svelte +8 -7
  161. package/dist/ui/taskbar/Taskbar.svelte +15 -10
  162. package/dist/ui/themeswitcher/ThemeSwitcher.svelte +9 -7
  163. package/dist/ui/toast/Toast.demo.svelte +15 -10
  164. package/dist/ui/toast/Toast.svelte +57 -45
  165. package/dist/ui/toast/Toaster.svelte +4 -2
  166. package/dist/ui/toggleBar/ToggleBar.demo.svelte +69 -60
  167. package/dist/ui/toggleBar/ToggleBar.svelte +27 -23
  168. package/dist/ui/toolBar/ToolBar.demo.svelte +48 -38
  169. package/dist/ui/toolBar/ToolBar.svelte +16 -11
  170. package/dist/ui/tree/Tree.demo.svelte +53 -42
  171. package/dist/ui/tree/Tree.preview.svelte +14 -11
  172. package/dist/ui/tree/Tree.svelte +120 -67
  173. package/dist/ui/window/Window.demo.svelte +27 -19
  174. package/dist/ui/window/Window.svelte +95 -85
  175. package/dist/utils/content/Content.svelte +49 -43
  176. package/dist/utils/contextRooter/ContextRooter.demo.svelte +12 -8
  177. package/dist/utils/contextRooter/ContextRooter.svelte +5 -3
  178. package/dist/utils/css/Css.demo.svelte +2 -1
  179. package/dist/utils/css/Css.svelte +2 -1
  180. package/dist/utils/looper/Looper.demo.svelte +8 -6
  181. package/dist/utils/looper/Looper.svelte +27 -22
  182. package/dist/utils/slotted/Slotted.svelte +10 -1
  183. package/dist/utils/stylesheet/StyleSheet.demo.svelte +21 -17
  184. package/dist/utils/stylesheet/StyleSheet.svelte +14 -11
  185. package/package.json +3 -3
  186. package/dist/base/cartouche/Cartouche.preview.svelte +0 -25
  187. package/dist/base/cartouche/Cartouche.preview.svelte.d.ts +0 -27
@@ -1,25 +1,29 @@
1
- <script lang="ts">import ComponentDemo from "../../base/demoer/DemoerComponent.svelte";
2
- import Demoer from "../../base/demoer/Demoer.svelte";
3
- import DemoPage from "../../base/demoer/DemoPage.svelte";
4
- import Icon from "../../base/icon/Icon.svelte";
5
- import TextField from "./TextField.svelte";
6
- import { componentArgs, parameters } from "./types.js";
7
- let parametersProps = {
8
- icon: {
9
- type: "icon",
10
- values: ["search", void 0]
11
- },
12
- endIcon: {
13
- type: "endIcon",
14
- values: ["search", void 0]
15
- },
16
- height: {
17
- type: "tall",
18
- values: ["small", "tiny", "small", "large"]
19
- },
20
- ...parameters
21
- };
22
- let code = `
1
+ <script lang="ts">
2
+ import ComponentDemo from '../../base/demoer/DemoerComponent.svelte';
3
+ import Demoer from '../../base/demoer/Demoer.svelte';
4
+ import DemoPage from '../../base/demoer/DemoPage.svelte';
5
+ import Icon from '../../base/icon/Icon.svelte';
6
+
7
+ import TextField from './TextField.svelte';
8
+ import { componentArgs, parameters } from './types.js';
9
+
10
+ let parametersProps: any = {
11
+ icon: {
12
+ type: 'icon',
13
+ values: ['search', undefined]
14
+ },
15
+ endIcon: {
16
+ type: 'endIcon',
17
+ values: ['search', undefined]
18
+ },
19
+ height: {
20
+ type: 'tall',
21
+ values: ['small', 'tiny', 'small', 'large']
22
+ },
23
+ ...parameters
24
+ };
25
+
26
+ let code = `
23
27
  <TextField >
24
28
  {#snippet inputFirst()}
25
29
  <Icon icon="close" />
@@ -28,7 +32,8 @@ let code = `
28
32
  <Icon icon="close" />
29
33
  {/snippet}
30
34
  </TextField>`;
31
- let codeSlotProps = `
35
+
36
+ let codeSlotProps = `
32
37
  <Input icon={icon} endIcon={icon} />`;
33
38
  </script>
34
39
 
@@ -1,39 +1,47 @@
1
1
  <svelte:options />
2
2
 
3
- <script lang="ts">import { popper } from "../../ui/popper/usePopper.js";
4
- import Button from "../button/Button.svelte";
5
- import Icon from "../../base/icon/Icon.svelte";
6
- import Slotted from "../../utils/slotted/Slotted.svelte";
7
- let inputType = "text";
8
- export { inputType as type };
9
- let {
10
- class: className = "",
11
- element = $bindable(),
12
- style,
13
- icon,
14
- iconColor = "#666",
15
- endIcon,
16
- endIconColor = "#666",
17
- usePopper,
18
- width = $bindable(),
19
- tall = "default",
20
- borderless = false,
21
- transparent = false,
22
- value = $bindable(),
23
- children,
24
- inputFirst,
25
- inputLast,
26
- ...rest
27
- } = $props();
28
- let niceIconStyle = $state("");
29
- niceIconStyle += icon || inputFirst ? "padding-left:2.2rem;" : "";
30
- niceIconStyle += endIcon || inputLast ? "padding-right:2.2rem;" : "";
31
- if (usePopper) {
32
- usePopper.disabled = false;
33
- usePopper.parentNode = element;
34
- } else {
35
- usePopper = { disabled: true };
36
- }
3
+ <script lang="ts">
4
+ import { popper } from '../../ui/popper/usePopper.js';
5
+ import Button from '../button/Button.svelte';
6
+ import Icon from '../../base/icon/Icon.svelte';
7
+ import type { TextFieldProps } from './types.js';
8
+ import Slotted from '../../utils/slotted/Slotted.svelte';
9
+ import type { ExpandProps } from '../../types/index.js';
10
+
11
+ let inputType = 'text';
12
+ export { inputType as type };
13
+
14
+ let {
15
+ class: className = '',
16
+ element = $bindable(),
17
+ style,
18
+ icon,
19
+ iconColor = '#666',
20
+ endIcon,
21
+ endIconColor = '#666',
22
+ usePopper,
23
+ width = $bindable(),
24
+ tall = 'default',
25
+ borderless = false,
26
+ transparent = false,
27
+ value = $bindable(),
28
+ children,
29
+ inputFirst,
30
+ inputLast,
31
+ ...rest
32
+ }: ExpandProps<TextFieldProps> & Partial<HTMLInputElement> = $props();
33
+
34
+ let niceIconStyle = $state('');
35
+
36
+ niceIconStyle += icon || inputFirst ? 'padding-left:2.2rem;' : '';
37
+ niceIconStyle += endIcon || inputLast ? 'padding-right:2.2rem;' : '';
38
+
39
+ if (usePopper) {
40
+ usePopper.disabled = false;
41
+ usePopper.parentNode = element;
42
+ } else {
43
+ usePopper = { disabled: true };
44
+ }
37
45
  </script>
38
46
 
39
47
  <div class="textfield-container">
@@ -1,40 +1,47 @@
1
- <script lang="ts">import DataList from "./DataList.svelte";
2
- import DataListRow from "./DataListRow.svelte";
3
- import DataListCell from "./DataListCell.svelte";
4
- import DataListHead from "./DataListHead.svelte";
5
- import ComponentDemo from "../../base/demoer/DemoerComponent.svelte";
6
- import Demoer from "../../base/demoer/Demoer.svelte";
7
- import { parameters, componentArgs } from "./types.js";
8
- import DemoPage from "../../base/demoer/DemoPage.svelte";
9
- let data = [...Array(50)].map((caches, index) => {
10
- return {
11
- id: index,
12
- index,
13
- name: "name " + index,
14
- lastName: "lastName " + index,
15
- group: "group-" + getRandomInt(7),
16
- groupByArrayObjectKey: [
17
- { name: "nested" + getRandomInt(4) },
18
- { name: "nested" + getRandomInt(4) }
19
- ],
20
- groupByObjectKey: { group: "group-" + getRandomInt(4) }
21
- };
22
- });
23
- let columns = {
24
- index: { field: "index" },
25
- name: { field: "name", width: "90px" },
26
- group: { field: "group" },
27
- lastName: {
28
- field: "lastName",
29
- getter: (data2) => {
30
- return data2.lastName + " - getter";
31
- }
32
- }
33
- };
34
- function getRandomInt(max) {
35
- return Math.floor(Math.random() * max);
36
- }
37
- let isOpen = false;
1
+ <script lang="ts">
2
+ import DataList from './DataList.svelte';
3
+ import DataListRow from './DataListRow.svelte';
4
+ import DataListCell from './DataListCell.svelte';
5
+ import DataListHead from './DataListHead.svelte';
6
+ import ComponentDemo from '../../base/demoer/DemoerComponent.svelte';
7
+ import type { DataCellType, DataListProps } from './types.js';
8
+ import Demoer from '../../base/demoer/Demoer.svelte';
9
+
10
+ import { parameters, componentArgs } from './types.js';
11
+ import DemoPage from '../../base/demoer/DemoPage.svelte';
12
+
13
+ let data = [...Array(50)].map((caches, index: number) => {
14
+ return {
15
+ id: index,
16
+ index,
17
+ name: 'name ' + index,
18
+ lastName: 'lastName ' + index,
19
+ group: 'group-' + getRandomInt(7),
20
+ groupByArrayObjectKey: [
21
+ { name: 'nested' + getRandomInt(4) },
22
+ { name: 'nested' + getRandomInt(4) }
23
+ ],
24
+ groupByObjectKey: { group: 'group-' + getRandomInt(4) }
25
+ };
26
+ });
27
+
28
+ let columns: Record<string, Partial<DataCellType>> = {
29
+ index: { field: 'index' },
30
+ name: { field: 'name', width: '90px' },
31
+ group: { field: 'group' },
32
+ lastName: {
33
+ field: 'lastName',
34
+ getter: (data: any) => {
35
+ return data.lastName + ' - getter';
36
+ }
37
+ }
38
+ };
39
+
40
+ function getRandomInt(max: number) {
41
+ return Math.floor(Math.random() * max);
42
+ }
43
+
44
+ let isOpen = false;
38
45
  </script>
39
46
 
40
47
  <ComponentDemo
@@ -1,9 +1,11 @@
1
- <script lang="ts">import DataList from "./DataList.svelte";
2
- import DataListCell from "./DataListCell.svelte";
3
- import DataListHead from "./DataListHead.svelte";
4
- let data = [...Array(200)].map((caches, index) => {
5
- return { index, name: "name " + index, otherName: "otherName " + index };
6
- });
1
+ <script lang="ts">
2
+ import DataList from './DataList.svelte';
3
+ import DataListCell from './DataListCell.svelte';
4
+ import DataListHead from './DataListHead.svelte';
5
+
6
+ let data = [...Array(200)].map((caches, index: number) => {
7
+ return { index, name: 'name ' + index, otherName: 'otherName ' + index };
8
+ });
7
9
  </script>
8
10
 
9
11
  <div style="height:350px;width:450px;" class="what pos-rel overflow-hidden pad-1">
@@ -1,118 +1,142 @@
1
- <script lang="ts" generics="T=Data">import { getContext, hasContext, setContext } from "svelte";
2
- import { writable } from "svelte/store";
3
- import DataListRow from "./DataListRow.svelte";
4
- import { dataOp } from "../../utils/engine/utils.js";
5
- import DataListHead from "./DataListHead.svelte";
6
- import Icon from "../../base/icon/Icon.svelte";
7
- import Button from "../../controls/button/Button.svelte";
8
- import ContextRooter from "../../utils/contextRooter/ContextRooter.svelte";
9
- import sanitizeHtml from "sanitize-html";
10
- import Slotted from "../../utils/slotted/Slotted.svelte";
11
- export const sortingIcons = {
12
- default: ["mdi:dots-horizontal", "mdi:sort-bool-ascending", "mdi:sort-bool-descending"],
13
- numeric: ["mdi:dots-horizontal", "mdi:sort-bool-ascending", "mdi:sort-bool-descending"]
14
- };
15
- let {
16
- class: className = "",
17
- style = "",
18
- element = null,
19
- showHeader = true,
20
- isSortable = true,
21
- sortByOrder = "none",
22
- groupByField = void 0,
23
- groupByOptions = {
24
- showMainHeader: true,
25
- showSubGroupsHeader: true,
26
- showEmptyGroup: false
27
- },
28
- selectorField = "id",
29
- selectorFieldValue = void 0,
30
- activeCommonSortField = "",
31
- noWrap = true,
32
- noWrapHeader = true,
33
- dataTypes = void 0,
34
- data = [],
35
- idField = void 0,
36
- columns = {},
37
- virtualizer = false,
38
- isLoading = false,
39
- fieldValue,
40
- dataListRow,
41
- dataListHead,
42
- dataListCell,
43
- dataListFooter,
44
- groupTitleSlot
45
- } = $props();
46
- let hidedGroups = {};
47
- let sortedData = $derived(data?.filter((x) => x));
48
- let groups = $derived(
49
- groupByField ? dataOp.groupBy(data, groupByField, {
50
- keepUngroupedData: Boolean(groupByOptions.showEmptyGroup)
51
- }) : {}
52
- );
53
- let dataListContext;
54
- if (hasContext("dataListContext")) {
55
- getContext("dataListContext");
56
- } else {
57
- let dataListStore = writable({
58
- config: {
59
- isSortable,
60
- defaultSortByField: void 0,
61
- defaultSortByOrder: sortByOrder,
62
- sortingIcons,
63
- noWrap,
64
- dataTypes
65
- },
66
- sortBy: {
67
- activeSortByField: void 0,
68
- activeSortByOrder: "none"
69
- },
70
- groupBy: {
71
- groupByField,
72
- groupByOptions
73
- },
74
- idField,
75
- columns,
76
- hasColumnsProps: Boolean(Object.keys(columns).length),
77
- data
78
- });
79
- setContext("dataListContext", dataListStore);
80
- }
81
- function doSort(e) {
82
- if (e.detail.field) {
83
- activeCommonSortField = e.detail.field;
84
- sortByOrder = e.detail.order;
85
- if (e.detail.order === "none") {
86
- } else {
87
- }
88
- }
89
- }
90
- function doSelect(e) {
91
- const selectedItem = e.detail;
92
- selectorFieldValue = selectedItem?.[selectorField];
93
- }
94
- function getGroupProps(content) {
95
- return {
96
- ...content,
97
- columns,
98
- style,
99
- groupByField: void 0,
100
- groupByOptions,
101
- showHeader: groupByOptions.showSubGroupsHeader,
102
- selectorField,
103
- selectorFieldValue,
104
- virtualizer,
105
- isLoading
106
- };
107
- }
108
- function checkGetter(columns2, field, data2) {
109
- const ret = columns2[field]?.getter ? columns2[field]?.getter(data2) : dataOp.resolveDotPath(data2, field);
110
- return sanitizeHtml(ret);
111
- }
112
- $effect(() => {
113
- element?.addEventListener("datalist:sorted", doSort);
114
- element?.addEventListener("datalist:select", doSelect);
115
- });
1
+ <script lang="ts" generics="T=Data">
2
+ import { getContext, hasContext, setContext } from 'svelte';
3
+ import { writable, type Writable } from 'svelte/store';
4
+ import DataListRow from './DataListRow.svelte';
5
+ import type { DataCellType, DataListProps, DataListStoreType } from './types.js';
6
+ import { dataOp } from '../../utils/engine/utils.js';
7
+ import DataListHead from './DataListHead.svelte';
8
+ import Icon from '../../base/icon/Icon.svelte';
9
+ import Button from '../../controls/button/Button.svelte';
10
+ import type { Data, ExpandProps } from '../../types/index.js';
11
+ import ContextRooter from '../../utils/contextRooter/ContextRooter.svelte';
12
+ import sanitizeHtml from 'sanitize-html';
13
+ import Slotted from '../../utils/slotted/Slotted.svelte';
14
+
15
+ export const sortingIcons = {
16
+ default: ['mdi:dots-horizontal', 'mdi:sort-bool-ascending', 'mdi:sort-bool-descending'],
17
+ numeric: ['mdi:dots-horizontal', 'mdi:sort-bool-ascending', 'mdi:sort-bool-descending']
18
+ };
19
+
20
+ let {
21
+ class: className = '',
22
+ style = '',
23
+ element = null,
24
+ showHeader = true,
25
+ isSortable = true,
26
+ sortByOrder = 'none',
27
+ groupByField = undefined,
28
+ groupByOptions = {
29
+ showMainHeader: true,
30
+ showSubGroupsHeader: true,
31
+ showEmptyGroup: false
32
+ },
33
+ selectorField = 'id',
34
+ selectorFieldValue = undefined,
35
+ activeCommonSortField = '',
36
+ noWrap = true,
37
+ noWrapHeader = true,
38
+ dataTypes = undefined,
39
+ data = [],
40
+ idField = undefined,
41
+ columns = {},
42
+ virtualizer = false,
43
+ isLoading = false,
44
+ fieldValue,
45
+ dataListRow,
46
+ dataListHead,
47
+ dataListCell,
48
+ dataListFooter,
49
+ groupTitleSlot
50
+ }: ExpandProps<DataListProps<T>> = $props();
51
+
52
+ let hidedGroups: Data = {};
53
+
54
+ let sortedData: any[] = $derived(data?.filter((x) => x));
55
+
56
+ let groups = $derived(
57
+ groupByField
58
+ ? dataOp.groupBy(data, groupByField, {
59
+ keepUngroupedData: Boolean(groupByOptions.showEmptyGroup)
60
+ })
61
+ : {}
62
+ );
63
+
64
+ let dataListContext: Writable<DataListStoreType>;
65
+
66
+ if (hasContext('dataListContext')) {
67
+ getContext<Writable<DataListStoreType>>('dataListContext');
68
+ } else {
69
+ /** context store for dataList config and state */
70
+ let dataListStore = writable<DataListStoreType>({
71
+ config: {
72
+ isSortable,
73
+ defaultSortByField: undefined,
74
+ defaultSortByOrder: sortByOrder,
75
+ sortingIcons,
76
+ noWrap,
77
+ dataTypes
78
+ },
79
+ sortBy: {
80
+ activeSortByField: undefined,
81
+ activeSortByOrder: 'none'
82
+ },
83
+ groupBy: {
84
+ groupByField,
85
+ groupByOptions
86
+ },
87
+ idField,
88
+ columns,
89
+ hasColumnsProps: Boolean(Object.keys(columns).length),
90
+ data
91
+ });
92
+
93
+ setContext<Writable<DataListStoreType>>('dataListContext', dataListStore);
94
+ }
95
+
96
+ function doSort(e: CustomEvent<{ field: string; order: string }>) {
97
+ if (e.detail.field) {
98
+ activeCommonSortField = e.detail.field;
99
+ sortByOrder = e.detail.order;
100
+
101
+ if (e.detail.order === 'none') {
102
+ //sortedData = data;
103
+ } else {
104
+ //sortedData = dataOp.sortBy(data, e.detail.field, e.detail.order);
105
+ }
106
+ }
107
+ }
108
+
109
+ function doSelect(e: CustomEvent<Data>) {
110
+ const selectedItem = e.detail;
111
+ selectorFieldValue = selectedItem?.[selectorField];
112
+ }
113
+
114
+ function getGroupProps(content: any) {
115
+ return {
116
+ ...content,
117
+ columns,
118
+ style,
119
+ groupByField: undefined,
120
+ groupByOptions,
121
+ showHeader: groupByOptions.showSubGroupsHeader,
122
+ selectorField,
123
+ selectorFieldValue,
124
+ virtualizer,
125
+ isLoading
126
+ };
127
+ }
128
+
129
+ function checkGetter(columns: Record<string, DataCellType>, field: string, data: Data) {
130
+ const ret = columns[field]?.getter
131
+ ? columns[field]?.getter(data)
132
+ : dataOp.resolveDotPath(data, field);
133
+ return sanitizeHtml(ret);
134
+ }
135
+
136
+ $effect(() => {
137
+ element?.addEventListener('datalist:sorted', doSort);
138
+ element?.addEventListener('datalist:select', doSelect);
139
+ });
116
140
  </script>
117
141
 
118
142
  {#snippet listCell(item, inItem)}
@@ -1,5 +1,4 @@
1
- import { type Snippet } from 'svelte';
2
- import type { DataCellType, groupByOptions } from './types.js';
1
+ import type { DataCellType } from './types.js';
3
2
  import type { Data } from '../../types/index.js';
4
3
  declare class __sveltets_Render<T = Data> {
5
4
  props(): {
@@ -10,7 +9,7 @@ declare class __sveltets_Render<T = Data> {
10
9
  isSortable?: boolean | undefined;
11
10
  sortByOrder?: ("asc" | "desc" | "none" | string) | undefined;
12
11
  groupByField?: (string | string[]) | undefined;
13
- groupByOptions?: groupByOptions | undefined;
12
+ groupByOptions?: import("./types.js").dataListGroupByOptions | undefined;
14
13
  selectorField?: string | undefined;
15
14
  fieldValue?: any;
16
15
  selectorFieldValue?: any;
@@ -23,18 +22,18 @@ declare class __sveltets_Render<T = Data> {
23
22
  columns?: Record<string, DataCellType> | undefined;
24
23
  virtualizer?: boolean | undefined;
25
24
  isLoadingDrawerProps?: boolean | undefined;
26
- dataListHead?: Snippet | undefined;
27
- dataListFooter?: Snippet | undefined;
28
- dataListRow?: Snippet<[{
25
+ dataListHead?: import("svelte").Snippet | undefined;
26
+ dataListFooter?: import("svelte").Snippet | undefined;
27
+ dataListRow?: import("svelte").Snippet<[{
29
28
  rawData: Data;
30
29
  item: Data;
31
30
  }]> | undefined;
32
- dataListCell?: Snippet<[{
31
+ dataListCell?: import("svelte").Snippet<[{
33
32
  fieldType: string;
34
33
  fieldName: string;
35
34
  fieldValue: any;
36
35
  }]> | undefined;
37
- groupTitleSlot?: Snippet<[{
36
+ groupTitleSlot?: import("svelte").Snippet<[{
38
37
  item: Data;
39
38
  }]> | undefined;
40
39
  };