@medyll/idae-slotui-svelte 0.119.0 → 0.121.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 (305) hide show
  1. package/README.md +47 -47
  2. package/dist/base/alert/Alert.demo.svelte +62 -62
  3. package/dist/base/alert/Alert.svelte +121 -121
  4. package/dist/base/alert/alert.scss +93 -93
  5. package/dist/base/avatar/Avatar.demo.svelte +41 -41
  6. package/dist/base/avatar/Avatar.preview.svelte +6 -6
  7. package/dist/base/avatar/Avatar.svelte +65 -65
  8. package/dist/base/avatar/avatar.scss +17 -17
  9. package/dist/base/backdrop/Backdrop.demo.svelte +49 -49
  10. package/dist/base/backdrop/Backdrop.svelte +78 -78
  11. package/dist/base/backdrop/backdrop.scss +34 -34
  12. package/dist/base/badge/Badge.svelte +31 -31
  13. package/dist/base/badge/badge.scss +19 -19
  14. package/dist/base/box/Box.demo.svelte +54 -54
  15. package/dist/base/box/Box.svelte +72 -72
  16. package/dist/base/box/box.scss +33 -33
  17. package/dist/base/breadCrumb/BreadCrumb.svelte +23 -23
  18. package/dist/base/breadCrumb/breadcrumb.scss +11 -11
  19. package/dist/base/cartouche/Cartouche.demo.svelte +108 -108
  20. package/dist/base/cartouche/Cartouche.svelte +114 -114
  21. package/dist/base/cartouche/cartouche.scss +114 -114
  22. package/dist/base/chipper/Chipper.demo.svelte +45 -45
  23. package/dist/base/chipper/Chipper.svelte +36 -36
  24. package/dist/base/chipper/chipper.scss +65 -65
  25. package/dist/base/columner/Column.svelte +62 -62
  26. package/dist/base/columner/Columner.demo.svelte +15 -15
  27. package/dist/base/columner/Columner.svelte +21 -21
  28. package/dist/base/contentSwitcher/ContentSwitcher.demo.svelte +45 -45
  29. package/dist/base/contentSwitcher/ContentSwitcher.svelte +63 -63
  30. package/dist/base/contentSwitcher/content-switcher.scss +22 -22
  31. package/dist/base/debug/Debug.svelte +21 -21
  32. package/dist/base/demoer/DemoPage.svelte +40 -40
  33. package/dist/base/demoer/Demoer.svelte +170 -170
  34. package/dist/base/demoer/DemoerCode.svelte +45 -45
  35. package/dist/base/demoer/DemoerComponent.svelte +50 -50
  36. package/dist/base/divider/Divider.demo.svelte +34 -34
  37. package/dist/base/divider/Divider.svelte +68 -68
  38. package/dist/base/divider/divider.scss +19 -19
  39. package/dist/base/icon/Icon.demo.svelte +24 -24
  40. package/dist/base/icon/Icon.svelte +117 -117
  41. package/dist/base/icon/icon.scss +17 -17
  42. package/dist/base/paper/Paper.demo.svelte +31 -31
  43. package/dist/base/paper/Paper.svelte +20 -20
  44. package/dist/base/paper/paper.scss +15 -15
  45. package/dist/base/titleBar/TitleBar.demo.svelte +30 -30
  46. package/dist/base/titleBar/TitleBar.svelte +40 -40
  47. package/dist/base/titleBar/title-bar.scss +29 -29
  48. package/dist/controls/autocomplete/AutoComplete.demo.svelte +88 -88
  49. package/dist/controls/autocomplete/AutoComplete.svelte +152 -152
  50. package/dist/controls/autocomplete/auto-complete.scss +15 -15
  51. package/dist/controls/button/Button.demo.svelte +165 -165
  52. package/dist/controls/button/Button.svelte +95 -95
  53. package/dist/controls/button/ButtonAction.svelte +55 -55
  54. package/dist/controls/button/ButtonMenu.svelte +55 -55
  55. package/dist/controls/button/IconButton.svelte +45 -45
  56. package/dist/controls/button/button-action.scss +8 -8
  57. package/dist/controls/button/button-menu.scss +36 -36
  58. package/dist/controls/button/button.scss +293 -293
  59. package/dist/controls/checkbox/Checkbox.demo.svelte +29 -29
  60. package/dist/controls/checkbox/Checkbox.svelte +59 -59
  61. package/dist/controls/checkbox/checkbox.scss +115 -115
  62. package/dist/controls/confirm/Confirm.demo.svelte +60 -60
  63. package/dist/controls/confirm/Confirm.preview.svelte +14 -14
  64. package/dist/controls/confirm/Confirm.svelte +156 -156
  65. package/dist/controls/confirm/confirm.scss +12 -12
  66. package/dist/controls/inplaceedit/InPlaceEdit.demo.svelte +41 -41
  67. package/dist/controls/inplaceedit/InPlaceEdit.svelte +109 -109
  68. package/dist/controls/progress/Progress.demo.svelte +30 -30
  69. package/dist/controls/progress/Progress.svelte +26 -26
  70. package/dist/controls/progress/progress.scss +23 -23
  71. package/dist/controls/rating/Rating.demo.svelte +45 -45
  72. package/dist/controls/rating/Rating.svelte +44 -44
  73. package/dist/controls/rating/rating.scss +9 -9
  74. package/dist/controls/select/Select.demo.svelte +101 -101
  75. package/dist/controls/select/Select.svelte +125 -125
  76. package/dist/controls/select/select.scss +13 -13
  77. package/dist/controls/slider/Slider.demo.svelte +34 -34
  78. package/dist/controls/slider/Slider.svelte +153 -153
  79. package/dist/controls/slider/slider.scss +51 -51
  80. package/dist/controls/stepper/Stepper.demo.svelte +32 -32
  81. package/dist/controls/stepper/Stepper.svelte +30 -30
  82. package/dist/controls/stepper/stepper.scss +23 -23
  83. package/dist/controls/switch/Switch.demo.svelte +61 -61
  84. package/dist/controls/switch/Switch.svelte +45 -45
  85. package/dist/controls/switch/switch.scss +73 -73
  86. package/dist/controls/textfield/TextField.demo.svelte +79 -79
  87. package/dist/controls/textfield/TextField.svelte +86 -86
  88. package/dist/controls/textfield/textfield.scss +68 -68
  89. package/dist/csss/csss.scss +10 -10
  90. package/dist/data/dataList/DataList.demo.svelte +151 -151
  91. package/dist/data/dataList/DataList.preview.svelte +23 -23
  92. package/dist/data/dataList/DataList.svelte +233 -233
  93. package/dist/data/dataList/DataListCell.svelte +212 -212
  94. package/dist/data/dataList/DataListHead.svelte +75 -75
  95. package/dist/data/dataList/DataListRow.svelte +93 -93
  96. package/dist/data/dataList/datalist.scss +157 -157
  97. package/dist/data/finder/Finder.demo.svelte +55 -55
  98. package/dist/data/finder/Finder.svelte +166 -166
  99. package/dist/data/finder/finder.scss +14 -14
  100. package/dist/data/grouper/Grouper.demo.svelte +36 -36
  101. package/dist/data/grouper/Grouper.svelte +85 -85
  102. package/dist/data/jsoner/Jsoner.svelte +40 -40
  103. package/dist/data/list/List.svelte +16 -16
  104. package/dist/data/list/ListItem.svelte +10 -10
  105. package/dist/data/list/ListTitle.svelte +8 -8
  106. package/dist/data/loader/Loader.demo.svelte +95 -95
  107. package/dist/data/loader/Loader.preview.svelte +7 -7
  108. package/dist/data/loader/Loader.svelte +99 -99
  109. package/dist/data/loader/loader.scss +50 -50
  110. package/dist/data/sorter/Sorter.demo.svelte +62 -62
  111. package/dist/data/sorter/Sorter.svelte +80 -80
  112. package/dist/data/sorter/Sorterer.svelte +27 -27
  113. package/dist/data/sorter/sorterer.scss +11 -11
  114. package/dist/index.d.ts +42 -43
  115. package/dist/index.js +42 -43
  116. package/dist/navigation/drawer/Drawer.demo.svelte +52 -52
  117. package/dist/navigation/drawer/Drawer.svelte +163 -163
  118. package/dist/navigation/drawer/drawer.scss +69 -69
  119. package/dist/navigation/tabs/Tabs.demo.svelte +83 -83
  120. package/dist/navigation/tabs/Tabs.preview.svelte +22 -22
  121. package/dist/navigation/tabs/Tabs.svelte +158 -158
  122. package/dist/navigation/tabs/tabs.scss +92 -92
  123. package/dist/slotui-css/alert.css +95 -95
  124. package/dist/slotui-css/alert.min.css +95 -95
  125. package/dist/slotui-css/auto-complete.css +11 -11
  126. package/dist/slotui-css/auto-complete.min.css +11 -11
  127. package/dist/slotui-css/avatar.css +12 -12
  128. package/dist/slotui-css/avatar.min.css +12 -12
  129. package/dist/slotui-css/backdrop.css +31 -31
  130. package/dist/slotui-css/backdrop.min.css +31 -31
  131. package/dist/slotui-css/badge.css +15 -15
  132. package/dist/slotui-css/badge.min.css +15 -15
  133. package/dist/slotui-css/boot-menu.css +76 -76
  134. package/dist/slotui-css/boot-menu.min.css +76 -76
  135. package/dist/slotui-css/box.css +28 -28
  136. package/dist/slotui-css/box.min.css +28 -28
  137. package/dist/slotui-css/breadcrumb.css +2 -2
  138. package/dist/slotui-css/breadcrumb.min.css +2 -2
  139. package/dist/slotui-css/button-action.css +7 -7
  140. package/dist/slotui-css/button-action.min.css +7 -7
  141. package/dist/slotui-css/button-menu.css +30 -30
  142. package/dist/slotui-css/button-menu.min.css +30 -30
  143. package/dist/slotui-css/button.css +760 -760
  144. package/dist/slotui-css/button.min.css +760 -760
  145. package/dist/slotui-css/cartouche.css +113 -113
  146. package/dist/slotui-css/cartouche.min.css +113 -113
  147. package/dist/slotui-css/checkbox.css +126 -126
  148. package/dist/slotui-css/checkbox.min.css +126 -126
  149. package/dist/slotui-css/chipper.css +55 -55
  150. package/dist/slotui-css/chipper.min.css +55 -55
  151. package/dist/slotui-css/chrome-frame.css +33 -33
  152. package/dist/slotui-css/chrome-frame.min.css +33 -33
  153. package/dist/slotui-css/confirm.css +8 -8
  154. package/dist/slotui-css/confirm.min.css +8 -8
  155. package/dist/slotui-css/containerConfig.css +6 -6
  156. package/dist/slotui-css/containerConfig.min.css +6 -6
  157. package/dist/slotui-css/content-switcher.css +20 -20
  158. package/dist/slotui-css/content-switcher.min.css +20 -20
  159. package/dist/slotui-css/csss.css +9 -9
  160. package/dist/slotui-css/csss.min.css +9 -9
  161. package/dist/slotui-css/datalist.css +135 -135
  162. package/dist/slotui-css/datalist.min.css +135 -135
  163. package/dist/slotui-css/divider.css +15 -15
  164. package/dist/slotui-css/divider.min.css +15 -15
  165. package/dist/slotui-css/drawer.css +87 -87
  166. package/dist/slotui-css/drawer.min.css +87 -87
  167. package/dist/slotui-css/finder.css +73 -73
  168. package/dist/slotui-css/finder.min.css +73 -73
  169. package/dist/slotui-css/frame.css +48 -48
  170. package/dist/slotui-css/frame.min.css +48 -48
  171. package/dist/slotui-css/icon.css +15 -15
  172. package/dist/slotui-css/icon.min.css +15 -15
  173. package/dist/slotui-css/loader.css +45 -45
  174. package/dist/slotui-css/loader.min.css +45 -45
  175. package/dist/slotui-css/marquee.css +57 -57
  176. package/dist/slotui-css/marquee.min.css +57 -57
  177. package/dist/slotui-css/menu-list.css +216 -216
  178. package/dist/slotui-css/menu-list.min.css +216 -216
  179. package/dist/slotui-css/menu.css +95 -95
  180. package/dist/slotui-css/menu.min.css +95 -95
  181. package/dist/slotui-css/panel.css +24 -24
  182. package/dist/slotui-css/panel.min.css +24 -24
  183. package/dist/slotui-css/paper.css +20 -20
  184. package/dist/slotui-css/paper.min.css +20 -20
  185. package/dist/slotui-css/popper.css +84 -84
  186. package/dist/slotui-css/popper.min.css +84 -84
  187. package/dist/slotui-css/progress.css +19 -19
  188. package/dist/slotui-css/progress.min.css +19 -19
  189. package/dist/slotui-css/rating.css +8 -8
  190. package/dist/slotui-css/rating.min.css +8 -8
  191. package/dist/slotui-css/select.css +10 -10
  192. package/dist/slotui-css/select.min.css +10 -10
  193. package/dist/slotui-css/sheetConfig.css +6 -6
  194. package/dist/slotui-css/sheetConfig.min.css +6 -6
  195. package/dist/slotui-css/slider.css +73 -73
  196. package/dist/slotui-css/slider.min.css +73 -73
  197. package/dist/slotui-css/slotui-css.css +4574 -4574
  198. package/dist/slotui-css/slotui-min-css.css +4574 -4574
  199. package/dist/slotui-css/slotui-sheet.css +294 -294
  200. package/dist/slotui-css/slotui-sheet.min.css +294 -294
  201. package/dist/slotui-css/sorterer.css +10 -10
  202. package/dist/slotui-css/sorterer.min.css +10 -10
  203. package/dist/slotui-css/stepper.css +19 -19
  204. package/dist/slotui-css/stepper.min.css +19 -19
  205. package/dist/slotui-css/stylesheet-container.css +373 -373
  206. package/dist/slotui-css/stylesheet-container.min.css +373 -373
  207. package/dist/slotui-css/stylesheet.css +370 -370
  208. package/dist/slotui-css/stylesheet.min.css +370 -370
  209. package/dist/slotui-css/switch.css +62 -62
  210. package/dist/slotui-css/switch.min.css +62 -62
  211. package/dist/slotui-css/tabs.css +84 -84
  212. package/dist/slotui-css/tabs.min.css +84 -84
  213. package/dist/slotui-css/taskbar.css +24 -24
  214. package/dist/slotui-css/taskbar.min.css +24 -24
  215. package/dist/slotui-css/textfield.css +127 -127
  216. package/dist/slotui-css/textfield.min.css +127 -127
  217. package/dist/slotui-css/title-bar.css +27 -27
  218. package/dist/slotui-css/title-bar.min.css +27 -27
  219. package/dist/slotui-css/toggle-bar.css +40 -40
  220. package/dist/slotui-css/toggle-bar.min.css +40 -40
  221. package/dist/slotui-css/toolbar.css +27 -27
  222. package/dist/slotui-css/toolbar.min.css +27 -27
  223. package/dist/slotui-css/tree.css +49 -49
  224. package/dist/slotui-css/tree.min.css +49 -49
  225. package/dist/slotui-css/window.css +59 -59
  226. package/dist/slotui-css/window.min.css +59 -59
  227. package/dist/styles/slotui-mixins.scss +168 -168
  228. package/dist/styles/slotui-presets.scss +56 -56
  229. package/dist/styles/slotuisheet/SlotuiSheet.svelte +36 -36
  230. package/dist/styles/slotuisheet/SlotyuiSheet.demo.svelte +28 -28
  231. package/dist/styles/slotuisheet/sheetConfig.scss +7 -7
  232. package/dist/styles/slotuisheet/slotui-sheet.scss +192 -192
  233. package/dist/styles/slotuisheet/stylesheet-container.scss +147 -147
  234. package/dist/styles/slotuisheet/stylesheet.scss +156 -156
  235. package/dist/types/slotui-ambient.d.ts +27 -27
  236. package/dist/ui/bootstrapp/BootStrApp.svelte +92 -92
  237. package/dist/ui/chromeFrame/ChromeFrame.svelte +43 -43
  238. package/dist/ui/chromeFrame/ChromeFrameButtonList.svelte +33 -33
  239. package/dist/ui/chromeFrame/ChromeFrameList.svelte +106 -106
  240. package/dist/ui/chromeFrame/chrome-frame.scss +34 -34
  241. package/dist/ui/frame/Frame.demo.svelte +48 -48
  242. package/dist/ui/frame/Frame.svelte +90 -90
  243. package/dist/ui/frame/frame.scss +46 -46
  244. package/dist/ui/login/Login.demo.svelte +62 -62
  245. package/dist/ui/login/Login.svelte +102 -102
  246. package/dist/ui/marquee/Marquee.demo.svelte +33 -33
  247. package/dist/ui/marquee/Marquee.svelte +97 -97
  248. package/dist/ui/marquee/marquee.scss +34 -34
  249. package/dist/ui/menu/Menu.svelte +9 -9
  250. package/dist/ui/menu/MenuItem.svelte +9 -9
  251. package/dist/ui/menu/MenuTitle.svelte +10 -10
  252. package/dist/ui/menu/menu.scss +61 -61
  253. package/dist/ui/menuList/MenuList.demo.svelte +73 -73
  254. package/dist/ui/menuList/MenuList.svelte +143 -143
  255. package/dist/ui/menuList/MenuListItem.svelte +134 -134
  256. package/dist/ui/menuList/MenuListTitle.svelte +10 -10
  257. package/dist/ui/menuList/menu-list.scss +120 -120
  258. package/dist/ui/panel/Panel.demo.svelte +169 -169
  259. package/dist/ui/panel/Panel.svelte +96 -96
  260. package/dist/ui/panel/PanelGrid.svelte +62 -62
  261. package/dist/ui/panel/PanelSlide.svelte +156 -156
  262. package/dist/ui/panel/Paneler.svelte +63 -63
  263. package/dist/ui/panel/panel.scss +32 -32
  264. package/dist/ui/popper/Popper.demo.svelte +92 -92
  265. package/dist/ui/popper/Popper.svelte +160 -160
  266. package/dist/ui/popper/popper.scss +108 -108
  267. package/dist/ui/preview/Preview.svelte +41 -41
  268. package/dist/ui/serviceBox/ServiceBox.svelte +24 -24
  269. package/dist/ui/startMenu/BootMenu.svelte +102 -102
  270. package/dist/ui/startMenu/boot-menu.scss +86 -86
  271. package/dist/ui/taskbar/TaskBarContent.svelte +20 -20
  272. package/dist/ui/taskbar/Taskbar.svelte +26 -26
  273. package/dist/ui/taskbar/taskbar.scss +28 -28
  274. package/dist/ui/themeswitcher/ThemeSwitcher.svelte +18 -18
  275. package/dist/ui/toast/Toast.demo.svelte +19 -19
  276. package/dist/ui/toast/Toast.svelte +60 -60
  277. package/dist/ui/toast/Toaster.svelte +18 -18
  278. package/dist/ui/toggleBar/ToggleBar.demo.svelte +114 -114
  279. package/dist/ui/toggleBar/ToggleBar.svelte +58 -58
  280. package/dist/ui/toggleBar/toggle-bar.scss +45 -45
  281. package/dist/ui/toolBar/ToolBar.demo.svelte +98 -98
  282. package/dist/ui/toolBar/ToolBar.svelte +30 -30
  283. package/dist/ui/toolBar/toolbar.scss +32 -32
  284. package/dist/ui/tree/Tree.demo.svelte +84 -84
  285. package/dist/ui/tree/Tree.preview.svelte +19 -19
  286. package/dist/ui/tree/Tree.svelte +182 -182
  287. package/dist/ui/tree/tree.scss +38 -38
  288. package/dist/ui/window/Window.demo.svelte +111 -111
  289. package/dist/ui/window/Window.svelte +177 -177
  290. package/dist/ui/window/window.scss +66 -66
  291. package/dist/utils/content/Content.svelte +78 -78
  292. package/dist/utils/contextRooter/ContextRooter.demo.svelte +33 -33
  293. package/dist/utils/contextRooter/ContextRooter.svelte +6 -6
  294. package/dist/utils/css/Css.demo.svelte +5 -5
  295. package/dist/utils/css/Css.svelte +64 -64
  296. package/dist/utils/effects/transitions.js +6 -6
  297. package/dist/utils/looper/Looper.demo.svelte +36 -36
  298. package/dist/utils/looper/Looper.svelte +47 -47
  299. package/dist/utils/slotted/Slotted.svelte +21 -21
  300. package/dist/utils/stylesheet/StyleSheet.demo.svelte +28 -28
  301. package/dist/utils/stylesheet/StyleSheet.svelte +30 -30
  302. package/dist/utils/stylesheet/containerConfig.scss +7 -7
  303. package/dist/utils/stylesheet/stylesheet.scss +147 -147
  304. package/dist/utils/uses/sx4u/sx4uPreprocess.js +34 -34
  305. package/package.json +3 -3
@@ -1,98 +1,98 @@
1
- <script lang="ts" generics="T=Data">
2
- import sanitizeHtml from 'sanitize-html';
3
- import type { Data } from '../../types/index.js';
4
- import { writable, type Writable } from 'svelte/store';
5
- import DataListCell from './DataListCell.svelte';
6
- import type { DataCellType, DataListRowProps, DataListStoreType } from './types.js';
7
- import type { RowType } from './types.js';
8
- import { dataOp } from '../../utils/engine/utils.js';
9
- import { getContext, setContext } from 'svelte';
10
- import Slotted from '../../utils/slotted/Slotted.svelte';
11
- import { onEvent } from '../../utils/uses/event.js';
12
-
13
- let {
14
- class: className = '',
15
- element = $bindable(),
16
- style = '',
17
- data,
18
- children,
19
- ...rest
20
- }: DataListRowProps<T> = $props();
21
-
22
- const dataStore = writable<RowType>({ data });
23
- setContext('dataListRow', dataStore);
24
-
25
- const dataListContext = getContext<Writable<DataListStoreType>>('dataListContext');
26
-
27
- function handleClick(item: Data) {
28
- const event = new CustomEvent('datalist:click', { detail: item, bubbles: true });
29
- if (element) element.dispatchEvent(event);
30
- }
31
-
32
- function handleSelect(item: Data) {
33
- const event = new CustomEvent('datalist:select', { detail: item, bubbles: true });
34
- if (element) element.dispatchEvent(event);
35
- }
36
-
37
- function fieldOrFunction(item: Data, field: string, defaultValue?: any): string {
38
- const resolved = dataOp.resolveDotPath(item, field);
39
- return typeof resolved === 'function' ? resolved(item) : resolved;
40
- }
41
-
42
- function checkGetter(columns: Record<string, DataCellType>, field: string, data: Data) {
43
- const ret = columns[field]?.getter
44
- ? columns[field]?.getter(data)
45
- : dataOp.resolveDotPath(data, field);
46
- return sanitizeHtml(ret);
47
- }
48
-
49
- let cssVars = $derived(() => {
50
- return Object.values($dataListContext.columns ?? []).reduce(
51
- (previous, current, currentIndex) => {
52
- const witdh = current?.width ?? 'auto';
53
- return `${previous} minmax(${witdh},${witdh})`;
54
- },
55
- '--template-columns:'
56
- );
57
- });
58
- </script>
59
-
60
- <!-- svelte-ignore a11y_click_events_have_key_events -->
61
- <!-- svelte-ignore a11y_no_static_element_interactions -->
62
- <tr
63
- bind:this={element}
64
- use:onEvent={{ event: 'datalist:sort:clicked', action: () => {} }}
65
- onclick={() => {
66
- if (data) handleClick(data);
67
- if (data) handleSelect(data);
68
- }}
69
- class="dataListRow {className}"
70
- style="{style};{cssVars}"
71
- {...rest}
72
- >
73
- {#if children}
74
- <Slotted child={children}></Slotted>
75
- {:else if $dataListContext.hasColumnsProps}
76
- {#each Object.keys($dataListContext.columns) as inItem}
77
- {@const field = $dataListContext.columns[inItem].field}
78
- {@const final = checkGetter($dataListContext.columns, field, data)}
79
- <!-- fieldOrFunction(data?.[field], field) -->
80
- <DataListCell title={final} {field}>
81
- {@html sanitizeHtml(checkGetter({ ...$dataListContext.columns }, field, data)) ?? ''}
82
- </DataListCell>
83
- {/each}
84
- {:else}
85
- {#each Object.keys(data) as inItem}
86
- <DataListCell field={inItem}>
87
- <Slotted child={children}></Slotted>
88
- </DataListCell>
89
- {/each}
90
- {/if}
91
- </tr>
92
-
1
+ <script lang="ts" generics="T=Data">
2
+ import sanitizeHtml from 'sanitize-html';
3
+ import type { Data } from '../../types/index.js';
4
+ import { writable, type Writable } from 'svelte/store';
5
+ import DataListCell from './DataListCell.svelte';
6
+ import type { DataCellType, DataListRowProps, DataListStoreType } from './types.js';
7
+ import type { RowType } from './types.js';
8
+ import { dataOp } from '../../utils/engine/utils.js';
9
+ import { getContext, setContext } from 'svelte';
10
+ import Slotted from '../../utils/slotted/Slotted.svelte';
11
+ import { onEvent } from '../../utils/uses/event.js';
12
+
13
+ let {
14
+ class: className = '',
15
+ element = $bindable(),
16
+ style = '',
17
+ data,
18
+ children,
19
+ ...rest
20
+ }: DataListRowProps<T> = $props();
21
+
22
+ const dataStore = writable<RowType>({ data });
23
+ setContext('dataListRow', dataStore);
24
+
25
+ const dataListContext = getContext<Writable<DataListStoreType>>('dataListContext');
26
+
27
+ function handleClick(item: Data) {
28
+ const event = new CustomEvent('datalist:click', { detail: item, bubbles: true });
29
+ if (element) element.dispatchEvent(event);
30
+ }
31
+
32
+ function handleSelect(item: Data) {
33
+ const event = new CustomEvent('datalist:select', { detail: item, bubbles: true });
34
+ if (element) element.dispatchEvent(event);
35
+ }
36
+
37
+ function fieldOrFunction(item: Data, field: string, defaultValue?: any): string {
38
+ const resolved = dataOp.resolveDotPath(item, field);
39
+ return typeof resolved === 'function' ? resolved(item) : resolved;
40
+ }
41
+
42
+ function checkGetter(columns: Record<string, DataCellType>, field: string, data: Data) {
43
+ const ret = columns[field]?.getter
44
+ ? columns[field]?.getter(data)
45
+ : dataOp.resolveDotPath(data, field);
46
+ return sanitizeHtml(ret);
47
+ }
48
+
49
+ let cssVars = $derived(() => {
50
+ return Object.values($dataListContext.columns ?? []).reduce(
51
+ (previous, current, currentIndex) => {
52
+ const witdh = current?.width ?? 'auto';
53
+ return `${previous} minmax(${witdh},${witdh})`;
54
+ },
55
+ '--template-columns:'
56
+ );
57
+ });
58
+ </script>
59
+
60
+ <!-- svelte-ignore a11y_click_events_have_key_events -->
61
+ <!-- svelte-ignore a11y_no_static_element_interactions -->
62
+ <tr
63
+ bind:this={element}
64
+ use:onEvent={{ event: 'datalist:sort:clicked', action: () => {} }}
65
+ onclick={() => {
66
+ if (data) handleClick(data);
67
+ if (data) handleSelect(data);
68
+ }}
69
+ class="dataListRow {className}"
70
+ style="{style};{cssVars}"
71
+ {...rest}
72
+ >
73
+ {#if children}
74
+ <Slotted child={children}></Slotted>
75
+ {:else if $dataListContext.hasColumnsProps}
76
+ {#each Object.keys($dataListContext.columns) as inItem}
77
+ {@const field = $dataListContext.columns[inItem].field}
78
+ {@const final = checkGetter($dataListContext.columns, field, data)}
79
+ <!-- fieldOrFunction(data?.[field], field) -->
80
+ <DataListCell title={final} {field}>
81
+ {@html sanitizeHtml(checkGetter({ ...$dataListContext.columns }, field, data)) ?? ''}
82
+ </DataListCell>
83
+ {/each}
84
+ {:else}
85
+ {#each Object.keys(data) as inItem}
86
+ <DataListCell field={inItem}>
87
+ <Slotted child={children}></Slotted>
88
+ </DataListCell>
89
+ {/each}
90
+ {/if}
91
+ </tr>
92
+
93
93
  <style>.dataListRow {
94
94
  /* grid-template-columns: var(--template-columns);
95
95
  grid-auto-columns: min-content; */
96
96
  content-visibility: auto;
97
97
  contain-intrinsic-size: 30px 500px;
98
- }</style>
98
+ }</style>
@@ -1,157 +1,157 @@
1
- @use "../../styles/slotui-mixins.scss";
2
-
3
- :root {
4
- --datalist-pad: var(--sld-pad-med);
5
- --datalist-gap: var(--sld-gap-med);
6
- --datalist-icon-color: #999;
7
- --datalist-icon-color-hover: var(--sld-color-primary);
8
- --datalist-divider-border: transparent;
9
- --datalist-divider-border-hover: var(--sld-color-primary, red);
10
- --datalist-background-color: var(--sld-color-paper-alpha-low);
11
- --datalist-radius: var(--sld-radius-tiny);
12
- --datalist-box-shadow: var(--sld-elevation-1);
13
- --datalist-border: var(--sld-color-border);
14
- --datalist-cell-border: var(--sld-color-border);
15
- --datalist-cell-border-hover: var(--sld-color-primary-alpha);
16
- --datalist-row-border: var(--sld-color-border);
17
- --datalist-row-background-color-hover: var(--sld-color-paper);
18
- --datalist-cell-color: var(--sld-color-foreground);
19
- --datalist-cell-background-color-selected: var(--sld-color-primary);
20
- --datalist-cell-color-selected: white;
21
- }
22
-
23
- .datalist {
24
- height: 100%;
25
- position: relative;
26
-
27
- &-group {
28
- @include slotui-mixins.flex(column);
29
- &-wrapper {
30
- @include slotui-mixins.flex(column);
31
- height: 100%;
32
- }
33
-
34
- &-head {
35
- @include slotui-mixins.flex(row, center);
36
- padding: var(--datalist-pad);
37
- gap: var(--datalist-gap);
38
- cursor: pointer;
39
-
40
- &-icon {
41
- color: var(--datalist-icon-color);
42
- }
43
-
44
- &-divider {
45
- border-bottom: 1px solid var(--datalist-divider-border);
46
- }
47
-
48
- &:hover {
49
- &-icon {
50
- color: var(--datalist-icon-color-hover);
51
- }
52
-
53
- &-divider {
54
- flex: 1;
55
- border-bottom-width: 1px;
56
- border-color: var(--datalist-divider-border-hover);
57
- cursor: pointer;
58
- }
59
- }
60
- }
61
-
62
- &-body {
63
- flex: 1;
64
- position: relative;
65
- }
66
- }
67
- }
68
-
69
- .datalist-group-head {
70
- margin: 0.5rem 0;
71
- align-items: stretch;
72
- height: 32px;
73
- z-index: 100;
74
- background-color: var(--datalist-background-color);
75
- backdrop-filter: blur(20px);
76
- border-radius: var(--datalist-radius);
77
- box-shadow: var(--datalist-box-shadow);
78
- border: 1px solid var(--datalist-border);
79
-
80
- .dataListCell {
81
- display: flex;
82
- align-items: stretch;
83
- overflow: hidden;
84
- border-right: 1px solid var(--datalist-cell-border);
85
- position: relative;
86
- -webkit-user-select: none;
87
- -moz-user-select: none;
88
- -ms-user-select: none;
89
- user-select: none;
90
-
91
- &:last-of-type {
92
- border-right: 1px solid transparent;
93
- }
94
-
95
- &[data-sortable="true"] {
96
- cursor: pointer;
97
- &:hover {
98
- background-color: var(--datalist-cell-border-hover);
99
- }
100
- }
101
-
102
- .cellHeader {
103
- display: flex;
104
- align-items: center;
105
- min-width: 0;
106
- width: 100%;
107
-
108
- .cellHeaderContent {
109
- flex: 1;
110
- overflow: hidden;
111
- padding: 0 8px;
112
- }
113
-
114
- .cellHeaderSorter {
115
- }
116
- }
117
- }
118
- }
119
-
120
- :global(.dataListRow) {
121
- border-bottom: 1px solid var(--datalist-row-border);
122
- --webkit-content-visibility: auto;
123
- webkit-content-visibility: auto;
124
-
125
- &:last-of-type {
126
- border-bottom: 1px solid transparent;
127
- }
128
-
129
- &:hover {
130
- background-color: var(--datalist-row-background-color-hover);
131
- }
132
-
133
- &[aria-selected="true"] {
134
- background-color: var(--datalist-cell-background-color-selected);
135
-
136
- .dataListCell {
137
- color: var(--datalist-cell-color-selected);
138
- }
139
- }
140
-
141
- .dataListCell {
142
- padding: 0.5rem 0.5rem;
143
- color: var(--datalist-cell-color);
144
- border-right: 1px solid var(--datalist-cell-border);
145
-
146
- &:last-of-type {
147
- border-right: 1px solid transparent;
148
- }
149
-
150
- &[data-noWrap="true"] {
151
- display: box;
152
- overflow: hidden;
153
- text-overflow: ellipsis;
154
- white-space: nowrap;
155
- }
156
- }
157
- }
1
+ @use "../../styles/slotui-mixins.scss";
2
+
3
+ :root {
4
+ --datalist-pad: var(--sld-pad-med);
5
+ --datalist-gap: var(--sld-gap-med);
6
+ --datalist-icon-color: #999;
7
+ --datalist-icon-color-hover: var(--sld-color-primary);
8
+ --datalist-divider-border: transparent;
9
+ --datalist-divider-border-hover: var(--sld-color-primary, red);
10
+ --datalist-background-color: var(--sld-color-paper-alpha-low);
11
+ --datalist-radius: var(--sld-radius-tiny);
12
+ --datalist-box-shadow: var(--sld-elevation-1);
13
+ --datalist-border: var(--sld-color-border);
14
+ --datalist-cell-border: var(--sld-color-border);
15
+ --datalist-cell-border-hover: var(--sld-color-primary-alpha);
16
+ --datalist-row-border: var(--sld-color-border);
17
+ --datalist-row-background-color-hover: var(--sld-color-paper);
18
+ --datalist-cell-color: var(--sld-color-foreground);
19
+ --datalist-cell-background-color-selected: var(--sld-color-primary);
20
+ --datalist-cell-color-selected: white;
21
+ }
22
+
23
+ .datalist {
24
+ height: 100%;
25
+ position: relative;
26
+
27
+ &-group {
28
+ @include slotui-mixins.flex(column);
29
+ &-wrapper {
30
+ @include slotui-mixins.flex(column);
31
+ height: 100%;
32
+ }
33
+
34
+ &-head {
35
+ @include slotui-mixins.flex(row, center);
36
+ padding: var(--datalist-pad);
37
+ gap: var(--datalist-gap);
38
+ cursor: pointer;
39
+
40
+ &-icon {
41
+ color: var(--datalist-icon-color);
42
+ }
43
+
44
+ &-divider {
45
+ border-bottom: 1px solid var(--datalist-divider-border);
46
+ }
47
+
48
+ &:hover {
49
+ &-icon {
50
+ color: var(--datalist-icon-color-hover);
51
+ }
52
+
53
+ &-divider {
54
+ flex: 1;
55
+ border-bottom-width: 1px;
56
+ border-color: var(--datalist-divider-border-hover);
57
+ cursor: pointer;
58
+ }
59
+ }
60
+ }
61
+
62
+ &-body {
63
+ flex: 1;
64
+ position: relative;
65
+ }
66
+ }
67
+ }
68
+
69
+ .datalist-group-head {
70
+ margin: 0.5rem 0;
71
+ align-items: stretch;
72
+ height: 32px;
73
+ z-index: 100;
74
+ background-color: var(--datalist-background-color);
75
+ backdrop-filter: blur(20px);
76
+ border-radius: var(--datalist-radius);
77
+ box-shadow: var(--datalist-box-shadow);
78
+ border: 1px solid var(--datalist-border);
79
+
80
+ .dataListCell {
81
+ display: flex;
82
+ align-items: stretch;
83
+ overflow: hidden;
84
+ border-right: 1px solid var(--datalist-cell-border);
85
+ position: relative;
86
+ -webkit-user-select: none;
87
+ -moz-user-select: none;
88
+ -ms-user-select: none;
89
+ user-select: none;
90
+
91
+ &:last-of-type {
92
+ border-right: 1px solid transparent;
93
+ }
94
+
95
+ &[data-sortable="true"] {
96
+ cursor: pointer;
97
+ &:hover {
98
+ background-color: var(--datalist-cell-border-hover);
99
+ }
100
+ }
101
+
102
+ .cellHeader {
103
+ display: flex;
104
+ align-items: center;
105
+ min-width: 0;
106
+ width: 100%;
107
+
108
+ .cellHeaderContent {
109
+ flex: 1;
110
+ overflow: hidden;
111
+ padding: 0 8px;
112
+ }
113
+
114
+ .cellHeaderSorter {
115
+ }
116
+ }
117
+ }
118
+ }
119
+
120
+ :global(.dataListRow) {
121
+ border-bottom: 1px solid var(--datalist-row-border);
122
+ --webkit-content-visibility: auto;
123
+ webkit-content-visibility: auto;
124
+
125
+ &:last-of-type {
126
+ border-bottom: 1px solid transparent;
127
+ }
128
+
129
+ &:hover {
130
+ background-color: var(--datalist-row-background-color-hover);
131
+ }
132
+
133
+ &[aria-selected="true"] {
134
+ background-color: var(--datalist-cell-background-color-selected);
135
+
136
+ .dataListCell {
137
+ color: var(--datalist-cell-color-selected);
138
+ }
139
+ }
140
+
141
+ .dataListCell {
142
+ padding: 0.5rem 0.5rem;
143
+ color: var(--datalist-cell-color);
144
+ border-right: 1px solid var(--datalist-cell-border);
145
+
146
+ &:last-of-type {
147
+ border-right: 1px solid transparent;
148
+ }
149
+
150
+ &[data-noWrap="true"] {
151
+ display: box;
152
+ overflow: hidden;
153
+ text-overflow: ellipsis;
154
+ white-space: nowrap;
155
+ }
156
+ }
157
+ }
@@ -1,55 +1,55 @@
1
- <script lang="ts">
2
- import Demoer from '../../base/demoer/Demoer.svelte';
3
- import ComponentDemo from '../../base/demoer/DemoerComponent.svelte';
4
- import Jsoner from '../jsoner/Jsoner.svelte';
5
- import Finder from './Finder.svelte';
6
-
7
- import { parameters, componentArgs } from './types.js';
8
-
9
- let data = [
10
- { id: 1, name: 'i', surname: 'am', lastname: 'groot' },
11
- { id: 2, name: 'he', surname: 'is', lastname: 'groot' },
12
- { id: 3, name: 'you', surname: 'are', lastname: 'groot' }
13
- ];
14
-
15
- let filteredData: any = [];
16
- </script>
17
-
18
- <ComponentDemo
19
- component="Finder"
20
- cite="This constant need about knowing what i was looking for, this need, i gave it a name.<br /> H.
21
- Maifield, 1996"
22
- >
23
- <div class="flex-v gap-medium">
24
- <Demoer {parameters}>
25
- {#snippet children({ activeParams })}
26
- <Finder {...activeParams} style="width:200px" bind:filteredData {data} />
27
- {/snippet}
28
- </Demoer>
29
- <h5>Props</h5>
30
- <div class="flex-v gap-medium">
31
- <h6>Default props</h6>
32
- <div>
33
- <Finder defaultField="id" class="marg-b" style="width:200px" bind:filteredData {data} />
34
- </div>
35
- <h6>Automatic fields menu</h6>
36
- <div>
37
- <Finder
38
- defaultField="id"
39
- class="marg-b"
40
- showSortMenu={true}
41
- style="width:200px"
42
- bind:filteredData
43
- {data}
44
- />
45
- </div>
46
- </div>
47
- </div>
48
- <br />
49
- <div class="flex-v gap-medium">
50
- <h5>Results</h5>
51
- <div class="flex-h gap-medium">
52
- <div class="w-large flex-main"><Jsoner data={filteredData} /></div>
53
- </div>
54
- </div>
55
- </ComponentDemo>
1
+ <script lang="ts">
2
+ import Demoer from '../../base/demoer/Demoer.svelte';
3
+ import ComponentDemo from '../../base/demoer/DemoerComponent.svelte';
4
+ import Jsoner from '../jsoner/Jsoner.svelte';
5
+ import Finder from './Finder.svelte';
6
+
7
+ import { parameters, componentArgs } from './types.js';
8
+
9
+ let data = [
10
+ { id: 1, name: 'i', surname: 'am', lastname: 'groot' },
11
+ { id: 2, name: 'he', surname: 'is', lastname: 'groot' },
12
+ { id: 3, name: 'you', surname: 'are', lastname: 'groot' }
13
+ ];
14
+
15
+ let filteredData: any = [];
16
+ </script>
17
+
18
+ <ComponentDemo
19
+ component="Finder"
20
+ cite="This constant need about knowing what i was looking for, this need, i gave it a name.<br /> H.
21
+ Maifield, 1996"
22
+ >
23
+ <div class="flex-v gap-medium">
24
+ <Demoer {parameters}>
25
+ {#snippet children({ activeParams })}
26
+ <Finder {...activeParams} style="width:200px" bind:filteredData {data} />
27
+ {/snippet}
28
+ </Demoer>
29
+ <h5>Props</h5>
30
+ <div class="flex-v gap-medium">
31
+ <h6>Default props</h6>
32
+ <div>
33
+ <Finder defaultField="id" class="marg-b" style="width:200px" bind:filteredData {data} />
34
+ </div>
35
+ <h6>Automatic fields menu</h6>
36
+ <div>
37
+ <Finder
38
+ defaultField="id"
39
+ class="marg-b"
40
+ showSortMenu={true}
41
+ style="width:200px"
42
+ bind:filteredData
43
+ {data}
44
+ />
45
+ </div>
46
+ </div>
47
+ </div>
48
+ <br />
49
+ <div class="flex-v gap-medium">
50
+ <h5>Results</h5>
51
+ <div class="flex-h gap-medium">
52
+ <div class="w-large flex-main"><Jsoner data={filteredData} /></div>
53
+ </div>
54
+ </div>
55
+ </ComponentDemo>