fuma 1.0.21 → 2.0.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 (195) hide show
  1. package/README.md +1 -1
  2. package/dist/action/list/handlers.d.ts +2 -2
  3. package/dist/action/list/index.d.ts +2 -0
  4. package/dist/action/list/index.js +1 -0
  5. package/dist/action/list/trigger.d.ts +7 -1
  6. package/dist/action/list/trigger.js +2 -2
  7. package/dist/private/Meta.svelte +32 -27
  8. package/dist/private/Meta.svelte.d.ts +29 -17
  9. package/dist/private/api.d.ts +1 -1
  10. package/dist/private/store.d.ts +0 -1
  11. package/dist/server/parseFormData.d.ts +1 -1
  12. package/dist/server/parseQuery.d.ts +1 -1
  13. package/dist/server/sse.d.ts +0 -1
  14. package/dist/store/isSmallScreen.d.ts +0 -1
  15. package/dist/store/param.d.ts +0 -2
  16. package/dist/store/session.d.ts +0 -1
  17. package/dist/ui/badge/Badge.svelte +4 -3
  18. package/dist/ui/badge/Badge.svelte.d.ts +19 -15
  19. package/dist/ui/button/ButtonCopy.svelte +35 -32
  20. package/dist/ui/button/ButtonCopy.svelte.d.ts +23 -21
  21. package/dist/ui/button/ButtonDelete.svelte +23 -21
  22. package/dist/ui/button/ButtonDelete.svelte.d.ts +32 -20
  23. package/dist/ui/card/Card.svelte +13 -10
  24. package/dist/ui/card/Card.svelte.d.ts +39 -24
  25. package/dist/ui/card/CardBasic.svelte +5 -4
  26. package/dist/ui/card/CardBasic.svelte.d.ts +29 -18
  27. package/dist/ui/card/CardCollapse.svelte +35 -31
  28. package/dist/ui/card/CardCollapse.svelte.d.ts +37 -23
  29. package/dist/ui/card/CardFullScreen.svelte +8 -6
  30. package/dist/ui/card/CardFullScreen.svelte.d.ts +35 -20
  31. package/dist/ui/card/CardLink.svelte +5 -4
  32. package/dist/ui/card/CardLink.svelte.d.ts +29 -18
  33. package/dist/ui/dialog/Dialog.svelte +41 -34
  34. package/dist/ui/dialog/Dialog.svelte.d.ts +36 -23
  35. package/dist/ui/dialog/DialogConfirm.svelte +6 -4
  36. package/dist/ui/dialog/DialogConfirm.svelte.d.ts +33 -19
  37. package/dist/ui/drawer/Drawer.svelte +47 -38
  38. package/dist/ui/drawer/Drawer.svelte.d.ts +81 -46
  39. package/dist/ui/drawer/drawerFly.d.ts +0 -1
  40. package/dist/ui/drawer/layers.d.ts +0 -1
  41. package/dist/ui/form/Form.svelte +106 -87
  42. package/dist/ui/form/Form.svelte.d.ts +29 -16
  43. package/dist/ui/form/FormInput.svelte +12 -6
  44. package/dist/ui/form/FormSection.svelte +24 -17
  45. package/dist/ui/form/FormSection.svelte.d.ts +37 -25
  46. package/dist/ui/icon/Icon.svelte +35 -32
  47. package/dist/ui/icon/Icon.svelte.d.ts +25 -21
  48. package/dist/ui/index.d.ts +0 -1
  49. package/dist/ui/index.js +0 -1
  50. package/dist/ui/input/FormControl.svelte +48 -36
  51. package/dist/ui/input/FormControl.svelte.d.ts +32 -30
  52. package/dist/ui/input/InputBoolean.svelte +29 -22
  53. package/dist/ui/input/InputBoolean.svelte.d.ts +43 -35
  54. package/dist/ui/input/InputCheckboxs.svelte +37 -34
  55. package/dist/ui/input/InputCheckboxs.svelte.d.ts +54 -39
  56. package/dist/ui/input/InputCheckboxsMenu.svelte +64 -47
  57. package/dist/ui/input/InputCheckboxsMenu.svelte.d.ts +56 -41
  58. package/dist/ui/input/InputCheckboxsTree.svelte +9 -6
  59. package/dist/ui/input/InputCheckboxsTree.svelte.d.ts +22 -18
  60. package/dist/ui/input/InputCheckboxsTreeNodes.svelte +36 -28
  61. package/dist/ui/input/InputCheckboxsTreeNodes.svelte.d.ts +20 -16
  62. package/dist/ui/input/InputCombo.svelte +76 -65
  63. package/dist/ui/input/InputCombo.svelte.d.ts +55 -39
  64. package/dist/ui/input/InputDate.svelte +36 -29
  65. package/dist/ui/input/InputDate.svelte.d.ts +20 -16
  66. package/dist/ui/input/InputDateTime.svelte +37 -30
  67. package/dist/ui/input/InputDateTime.svelte.d.ts +20 -16
  68. package/dist/ui/input/InputImage.svelte +52 -45
  69. package/dist/ui/input/InputImage.svelte.d.ts +40 -27
  70. package/dist/ui/input/InputImagePreview.svelte +24 -20
  71. package/dist/ui/input/InputImagePreview.svelte.d.ts +25 -21
  72. package/dist/ui/input/InputNumber.svelte +28 -22
  73. package/dist/ui/input/InputNumber.svelte.d.ts +20 -20
  74. package/dist/ui/input/InputOptionInParam.svelte +12 -10
  75. package/dist/ui/input/InputOptionInParam.svelte.d.ts +21 -17
  76. package/dist/ui/input/InputOptions.svelte +40 -34
  77. package/dist/ui/input/InputOptions.svelte.d.ts +19 -15
  78. package/dist/ui/input/InputPassword.svelte +22 -18
  79. package/dist/ui/input/InputPassword.svelte.d.ts +43 -35
  80. package/dist/ui/input/InputRadio.svelte +51 -46
  81. package/dist/ui/input/InputRadio.svelte.d.ts +53 -38
  82. package/dist/ui/input/InputRelation.svelte +129 -112
  83. package/dist/ui/input/InputRelation.svelte.d.ts +39 -53
  84. package/dist/ui/input/InputRelations.svelte +96 -90
  85. package/dist/ui/input/InputRelations.svelte.d.ts +35 -37
  86. package/dist/ui/input/InputSearch.svelte +14 -11
  87. package/dist/ui/input/InputSearch.svelte.d.ts +25 -21
  88. package/dist/ui/input/InputSelect.svelte +59 -46
  89. package/dist/ui/input/InputSelect.svelte.d.ts +23 -19
  90. package/dist/ui/input/InputText.svelte +29 -28
  91. package/dist/ui/input/InputText.svelte.d.ts +41 -28
  92. package/dist/ui/input/InputTextarea.svelte +20 -19
  93. package/dist/ui/input/InputTextarea.svelte.d.ts +20 -20
  94. package/dist/ui/input/InputTime.svelte +43 -36
  95. package/dist/ui/input/InputTime.svelte.d.ts +21 -36
  96. package/dist/ui/input/RelationAfter.svelte +13 -9
  97. package/dist/ui/input/RelationAfter.svelte.d.ts +24 -20
  98. package/dist/ui/input/SelectorList.svelte +16 -12
  99. package/dist/ui/input/SelectorList.svelte.d.ts +29 -20
  100. package/dist/ui/input/textRich/InputTextRich.svelte +63 -59
  101. package/dist/ui/input/textRich/InputTextRich.svelte.d.ts +36 -38
  102. package/dist/ui/input/textRich/SuggesionList.svelte +13 -9
  103. package/dist/ui/input/textRich/SuggesionList.svelte.d.ts +19 -15
  104. package/dist/ui/input/textRich/ToolMark.svelte +12 -9
  105. package/dist/ui/input/textRich/ToolMark.svelte.d.ts +22 -18
  106. package/dist/ui/input/textRich/ToolMarkColor.svelte +16 -12
  107. package/dist/ui/input/textRich/ToolMarkColor.svelte.d.ts +21 -17
  108. package/dist/ui/input/textRich/ToolMarkLink.svelte +46 -38
  109. package/dist/ui/input/textRich/ToolMarkLink.svelte.d.ts +18 -14
  110. package/dist/ui/input/textRich/ToolMenu.svelte +34 -19
  111. package/dist/ui/input/textRich/ToolMenu.svelte.d.ts +30 -26
  112. package/dist/ui/input/textRich/ToolMenuAlign.svelte +13 -9
  113. package/dist/ui/input/textRich/ToolMenuAlign.svelte.d.ts +18 -14
  114. package/dist/ui/input/textRich/ToolMenuInsert.svelte +12 -7
  115. package/dist/ui/input/textRich/ToolMenuInsert.svelte.d.ts +20 -16
  116. package/dist/ui/input/textRich/ToolMenuNode.svelte +14 -10
  117. package/dist/ui/input/textRich/ToolMenuNode.svelte.d.ts +18 -14
  118. package/dist/ui/input/textRich/ToolsBar.svelte +21 -14
  119. package/dist/ui/input/textRich/ToolsBar.svelte.d.ts +19 -17
  120. package/dist/ui/input/textRich/suggestion.d.ts +0 -1
  121. package/dist/ui/login/Login.svelte +37 -31
  122. package/dist/ui/login/Login.svelte.d.ts +18 -14
  123. package/dist/ui/menu/ContextMenu.svelte +37 -31
  124. package/dist/ui/menu/ContextMenu.svelte.d.ts +38 -25
  125. package/dist/ui/menu/DropDown.svelte +92 -83
  126. package/dist/ui/menu/DropDown.svelte.d.ts +46 -33
  127. package/dist/ui/menu/DropDownMenu.svelte +25 -18
  128. package/dist/ui/menu/DropDownMenu.svelte.d.ts +30 -19
  129. package/dist/ui/mode/ToggleMode.svelte +28 -16
  130. package/dist/ui/mode/ToggleMode.svelte.d.ts +34 -17
  131. package/dist/ui/pagination/Pagination.svelte +9 -8
  132. package/dist/ui/pagination/Pagination.svelte.d.ts +18 -14
  133. package/dist/ui/placeholder/Placeholder.svelte +4 -3
  134. package/dist/ui/placeholder/Placeholder.svelte.d.ts +28 -17
  135. package/dist/ui/placeholder/PlaceholderImage.svelte +6 -4
  136. package/dist/ui/placeholder/PlaceholderImage.svelte.d.ts +28 -17
  137. package/dist/ui/range/RangePicker.svelte +76 -63
  138. package/dist/ui/range/RangePicker.svelte.d.ts +29 -24
  139. package/dist/ui/range/RangePickerButton.svelte +45 -40
  140. package/dist/ui/range/RangePickerButton.svelte.d.ts +21 -19
  141. package/dist/ui/table/Table.svelte +35 -28
  142. package/dist/ui/table/Table.svelte.d.ts +24 -19
  143. package/dist/ui/table/TableBody.svelte +18 -12
  144. package/dist/ui/table/TableBody.svelte.d.ts +20 -15
  145. package/dist/ui/table/TableCell.svelte +13 -10
  146. package/dist/ui/table/TableCell.svelte.d.ts +19 -14
  147. package/dist/ui/table/TableFieldsEdition.svelte +58 -52
  148. package/dist/ui/table/TableFieldsEdition.svelte.d.ts +20 -15
  149. package/dist/ui/table/TableHead.svelte +20 -21
  150. package/dist/ui/table/TableHead.svelte.d.ts +19 -14
  151. package/dist/ui/table/TableViewSelect.svelte +50 -37
  152. package/dist/ui/table/TableViewSelect.svelte.d.ts +27 -23
  153. package/dist/ui/table/cell/TableCellArray.svelte +5 -3
  154. package/dist/ui/table/cell/TableCellArray.svelte.d.ts +18 -14
  155. package/dist/ui/table/cell/TableCellBoolean.svelte +4 -3
  156. package/dist/ui/table/cell/TableCellBoolean.svelte.d.ts +18 -14
  157. package/dist/ui/table/cell/TableCellNumber.svelte +2 -1
  158. package/dist/ui/table/cell/TableCellNumber.svelte.d.ts +18 -14
  159. package/dist/ui/table/cell/TableCellString.svelte +5 -2
  160. package/dist/ui/table/cell/TableCellString.svelte.d.ts +19 -25
  161. package/dist/ui/table/field.d.ts +32 -40
  162. package/dist/ui/table/field.js +1 -1
  163. package/dist/ui/table/head/TableHeadBoolean.svelte +6 -3
  164. package/dist/ui/table/head/TableHeadBoolean.svelte.d.ts +18 -24
  165. package/dist/ui/table/head/TableHeadDate.svelte +61 -113
  166. package/dist/ui/table/head/TableHeadDate.svelte.d.ts +18 -24
  167. package/dist/ui/table/head/TableHeadDefault.svelte +5 -2
  168. package/dist/ui/table/head/TableHeadDefault.svelte.d.ts +18 -24
  169. package/dist/ui/table/head/TableHeadNumber.svelte +67 -76
  170. package/dist/ui/table/head/TableHeadNumber.svelte.d.ts +18 -24
  171. package/dist/ui/table/head/TableHeadSelect.svelte +47 -41
  172. package/dist/ui/table/head/TableHeadSelect.svelte.d.ts +21 -27
  173. package/dist/ui/table/head/TableHeadString.svelte +14 -8
  174. package/dist/ui/table/head/TableHeadString.svelte.d.ts +18 -24
  175. package/dist/ui/tabs/Tabs.svelte +8 -5
  176. package/dist/ui/tabs/Tabs.svelte.d.ts +19 -15
  177. package/dist/ui/tabs/TabsIcon.svelte +31 -28
  178. package/dist/ui/tabs/TabsIcon.svelte.d.ts +21 -17
  179. package/dist/utils/eventEmitter.d.ts +4 -4
  180. package/dist/utils/tippy.d.ts +1 -1
  181. package/dist/validation/form.d.ts +0 -1
  182. package/dist/validation/zod.d.ts +96 -162
  183. package/dist/validation/zod.js +2 -4
  184. package/package.json +134 -138
  185. package/dist/ui/form/FormInput.svelte.d.ts +0 -152
  186. package/dist/ui/form/formInput.d.ts +0 -90
  187. package/dist/ui/slot/Slot.svelte +0 -35
  188. package/dist/ui/slot/Slot.svelte.d.ts +0 -22
  189. package/dist/ui/slot/Span.svelte +0 -4
  190. package/dist/ui/slot/Span.svelte.d.ts +0 -16
  191. package/dist/ui/slot/index.d.ts +0 -1
  192. package/dist/ui/slot/index.js +0 -1
  193. package/dist/ui/table/head/OrderButtons.svelte +0 -37
  194. package/dist/ui/table/head/OrderButtons.svelte.d.ts +0 -20
  195. package/dist/ui/table/head/index.d.ts +0 -19
@@ -1,77 +1,64 @@
1
- <script generics="Item extends {id: string}">import { goto } from "$app/navigation";
2
- import { page } from "$app/stores";
3
- import {
4
- mdiCalendarFilterOutline,
5
- mdiSortClockAscendingOutline,
6
- mdiSortClockDescendingOutline
7
- } from "@mdi/js";
8
- import { DropDown } from "../../menu/index.js";
9
- import { InputTime } from "../../input/index.js";
10
- import { formatRange } from "../../range/format.js";
11
- import { RangePicker } from "../../range/index.js";
12
- import { urlParam } from "../../../store/param.js";
13
- import { jsonParse } from "../../../utils/jsonParse.js";
14
- import { Icon } from "../../icon/index.js";
15
- import OrderButtons from "./OrderButtons.svelte";
16
- export let field;
17
- let dropDown;
18
- let rangePicker;
19
- const initialValue = jsonParse(
20
- $page.url.searchParams.get(field.key),
21
- {}
22
- );
23
- let { order } = jsonParse($page.url.searchParams.get(field.key), {});
24
- let range = {
25
- start: initialValue.start ? new Date(initialValue.start) : null,
26
- end: initialValue.end ? new Date(initialValue.end) : null
27
- };
28
- let isValidPeriod = !!range.start && !!range.end;
29
- function updateUrl() {
30
- isValidPeriod = !!range.start && !!range.end;
31
- if (!isValidPeriod && !order) {
32
- goto($urlParam.without(field.key, "skip", "take"), {
33
- replaceState: true,
34
- noScroll: true,
35
- keepFocus: true
36
- });
37
- return;
38
- }
39
- goto(
40
- $urlParam.with(
41
- {
42
- [field.key]: JSON.stringify({
43
- ...isValidPeriod ? {
44
- start: range.start?.toJSON(),
45
- end: range.end?.toJSON()
46
- } : {},
47
- ...order ? { order } : {}
48
- })
49
- },
50
- "skip",
51
- "take"
52
- ),
53
- { replaceState: true, noScroll: true, keepFocus: true }
54
- );
55
- }
56
- function handleReset() {
57
- isValidPeriod = false;
58
- range.start = null;
59
- range = { start: null, end: null };
60
- dropDown.hide();
61
- rangePicker.clear();
62
- goto($urlParam.without(field.key, "skip", "take"), {
63
- replaceState: true,
64
- noScroll: true,
65
- keepFocus: true
66
- });
67
- }
1
+ <script lang="ts">
2
+ import { goto } from '$app/navigation'
3
+ import { page } from '$app/stores'
4
+ import { mdiCalendarFilterOutline } from '@mdi/js'
5
+
6
+ import { DropDown } from '../../menu/index.js'
7
+ import { InputTime } from '../../input/index.js'
8
+ import type { TableField } from '../index.js'
9
+ import { formatRange } from '../../range/format.js'
10
+ import { RangePicker } from '../../range/index.js'
11
+ import { urlParam } from '../../../store/param.js'
12
+ import { jsonParse } from '../../../utils/jsonParse.js'
13
+ import { Icon } from '../../icon/index.js'
14
+
15
+ export let field: Omit<TableField, 'getCell' | 'type'>
16
+
17
+ let dropDown: DropDown
18
+ let rangePicker: RangePicker
19
+ const initialValue = jsonParse<{ start?: string; end?: string }>(
20
+ $page.url.searchParams.get(field.key),
21
+ {}
22
+ )
23
+
24
+ let range = {
25
+ start: initialValue.start ? new Date(initialValue.start) : null,
26
+ end: initialValue.end ? new Date(initialValue.end) : null
27
+ }
28
+
29
+ $: isValidPeriod = !!range.start && !!range.end
30
+
31
+ function handleSubmit() {
32
+ dropDown.hide()
33
+ if (!isValidPeriod) return
34
+ goto(
35
+ $urlParam.with(
36
+ {
37
+ [field.key]: JSON.stringify({
38
+ start: range.start?.toJSON(),
39
+ end: range.end?.toJSON()
40
+ })
41
+ },
42
+ 'skip',
43
+ 'take'
44
+ ),
45
+ { replaceState: true, noScroll: true }
46
+ )
47
+ }
48
+
49
+ function handleReset() {
50
+ dropDown.hide()
51
+ range = { start: null, end: null }
52
+ rangePicker.clear()
53
+ goto($urlParam.without(field.key, 'skip', 'take'), { replaceState: true, noScroll: true })
54
+ }
68
55
  </script>
69
56
 
70
57
  <th class="p-1">
71
58
  <DropDown
72
59
  bind:this={dropDown}
60
+ on:mouseLeave={handleSubmit}
73
61
  tippyProps={{ appendTo: () => document.body }}
74
- hideOnNav={false}
75
62
  class="max-h-none"
76
63
  >
77
64
  <button slot="activator" class="menu-item min-h-8 w-full flex-wrap gap-y-1">
@@ -87,64 +74,25 @@ function handleReset() {
87
74
  {formatRange(range)}
88
75
  </span>
89
76
  {/if}
90
- {#if order}
91
- <Icon
92
- path={order === 'asc' ? mdiSortClockAscendingOutline : mdiSortClockDescendingOutline}
93
- size={18}
94
- class="fill-primary"
95
- />
96
- {/if}
97
77
  </button>
98
78
 
99
- {#if field.sortable !== false}
100
- <OrderButtons
101
- bind:order
102
- on:change={() => {
103
- updateUrl()
104
- dropDown.hide()
105
- }}
106
- iconAsc={mdiSortClockAscendingOutline}
107
- iconDesc={mdiSortClockDescendingOutline}
108
- />
109
- {/if}
110
-
111
79
  <form
112
- on:submit|preventDefault={() => dropDown.hide()}
113
- data-sveltekit-replacestate
114
80
  class="flex flex-col font-normal"
115
- class:mt-6={field.sortable !== false}
81
+ on:submit|preventDefault={handleSubmit}
82
+ data-sveltekit-replacestate
116
83
  >
117
- <RangePicker
118
- bind:this={rangePicker}
119
- numberOfMonths={1}
120
- on:change={({ detail: newRange }) => {
121
- range = newRange
122
- updateUrl()
123
- }}
124
- />
84
+ <RangePicker bind:this={rangePicker} numberOfMonths={1} bind:range />
125
85
 
126
86
  <input class="hidden" type="text" name="start" value={range.start?.toJSON()} />
127
87
  <input class="hidden" type="text" name="end" value={range.end?.toJSON()} />
128
88
 
129
89
  <div class="m-2 flex gap-2">
130
- <InputTime
131
- label="A partir de"
132
- bind:value={range.start}
133
- enhanceDisabled
134
- class="grow"
135
- on:input={updateUrl}
136
- />
137
- <InputTime
138
- label="Jusqu'à"
139
- bind:value={range.end}
140
- enhanceDisabled
141
- class="grow"
142
- on:input={updateUrl}
143
- />
90
+ <InputTime label="A partir de" bind:value={range.start} enhanceDisabled class="grow" />
91
+ <InputTime label="Jusqu'à" bind:value={range.end} enhanceDisabled class="grow" />
144
92
  </div>
145
93
 
146
94
  <div class="m-2 flex flex-row-reverse gap-2">
147
- <button class="btn">Ok</button>
95
+ <button class="btn"> Valider </button>
148
96
  <button class="btn btn-ghost" type="button" on:click={handleReset}>Effacer</button>
149
97
  </div>
150
98
  </form>
@@ -1,27 +1,21 @@
1
- import { SvelteComponent } from "svelte";
2
1
  import type { TableField } from '../index.js';
3
- declare class __sveltets_Render<Item extends {
4
- id: string;
5
- }> {
6
- props(): {
7
- field: Omit<TableField<Item>, "type" | "getCell">;
2
+ interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
3
+ new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
4
+ $$bindings?: Bindings;
5
+ } & Exports;
6
+ (internal: unknown, props: Props & {
7
+ $$events?: Events;
8
+ $$slots?: Slots;
9
+ }): Exports & {
10
+ $set?: any;
11
+ $on?: any;
8
12
  };
9
- events(): {} & {
10
- [evt: string]: CustomEvent<any>;
11
- };
12
- slots(): {};
13
- }
14
- export type TableHeadDateProps<Item extends {
15
- id: string;
16
- }> = ReturnType<__sveltets_Render<Item>['props']>;
17
- export type TableHeadDateEvents<Item extends {
18
- id: string;
19
- }> = ReturnType<__sveltets_Render<Item>['events']>;
20
- export type TableHeadDateSlots<Item extends {
21
- id: string;
22
- }> = ReturnType<__sveltets_Render<Item>['slots']>;
23
- export default class TableHeadDate<Item extends {
24
- id: string;
25
- }> extends SvelteComponent<TableHeadDateProps<Item>, TableHeadDateEvents<Item>, TableHeadDateSlots<Item>> {
13
+ z_$$bindings?: Bindings;
26
14
  }
27
- export {};
15
+ declare const TableHeadDate: $$__sveltets_2_IsomorphicComponent<{
16
+ field: Omit<TableField, "getCell" | "type">;
17
+ }, {
18
+ [evt: string]: CustomEvent<any>;
19
+ }, {}, {}, string>;
20
+ type TableHeadDate = InstanceType<typeof TableHeadDate>;
21
+ export default TableHeadDate;
@@ -1,5 +1,8 @@
1
- <script generics="Item extends {id: string}">import { tip } from "../../../action/tip.js";
2
- export let field;
1
+ <script lang="ts">
2
+ import type { TableField } from '../index.js'
3
+ import { tip } from '../../../action/tip.js'
4
+
5
+ export let field: TableField
3
6
  </script>
4
7
 
5
8
  <th use:tip={{ disable: !field.hint, content: field.hint }}>
@@ -1,27 +1,21 @@
1
- import { SvelteComponent } from "svelte";
2
1
  import type { TableField } from '../index.js';
3
- declare class __sveltets_Render<Item extends {
4
- id: string;
5
- }> {
6
- props(): {
7
- field: TableField<Item>;
2
+ interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
3
+ new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
4
+ $$bindings?: Bindings;
5
+ } & Exports;
6
+ (internal: unknown, props: Props & {
7
+ $$events?: Events;
8
+ $$slots?: Slots;
9
+ }): Exports & {
10
+ $set?: any;
11
+ $on?: any;
8
12
  };
9
- events(): {} & {
10
- [evt: string]: CustomEvent<any>;
11
- };
12
- slots(): {};
13
- }
14
- export type TableHeadDefaultProps<Item extends {
15
- id: string;
16
- }> = ReturnType<__sveltets_Render<Item>['props']>;
17
- export type TableHeadDefaultEvents<Item extends {
18
- id: string;
19
- }> = ReturnType<__sveltets_Render<Item>['events']>;
20
- export type TableHeadDefaultSlots<Item extends {
21
- id: string;
22
- }> = ReturnType<__sveltets_Render<Item>['slots']>;
23
- export default class TableHeadDefault<Item extends {
24
- id: string;
25
- }> extends SvelteComponent<TableHeadDefaultProps<Item>, TableHeadDefaultEvents<Item>, TableHeadDefaultSlots<Item>> {
13
+ z_$$bindings?: Bindings;
26
14
  }
27
- export {};
15
+ declare const TableHeadDefault: $$__sveltets_2_IsomorphicComponent<{
16
+ field: TableField;
17
+ }, {
18
+ [evt: string]: CustomEvent<any>;
19
+ }, {}, {}, string>;
20
+ type TableHeadDefault = InstanceType<typeof TableHeadDefault>;
21
+ export default TableHeadDefault;
@@ -1,59 +1,68 @@
1
- <script generics="Item extends {id: string}">import { onMount } from "svelte";
2
- import debounce from "debounce";
3
- import { goto } from "$app/navigation";
4
- import { page } from "$app/stores";
5
- import { DropDown } from "../../menu/index.js";
6
- import { InputNumber } from "../../input/index.js";
7
- import { urlParam } from "../../../store/param.js";
8
- import { jsonParse } from "../../../utils/jsonParse.js";
9
- import { mdiFilterMultipleOutline, mdiSortAscending, mdiSortDescending } from "@mdi/js";
10
- import { Icon } from "../../icon/index.js";
11
- import OrderButtons from "./OrderButtons.svelte";
12
- export let field;
13
- let tip;
14
- let { min, max, order } = initRange($page.url);
15
- onMount(() => page.subscribe(({ url }) => ({ min, max, order } = initRange(url))));
16
- function initRange({ searchParams }) {
17
- return jsonParse(searchParams.get(field.key), {
18
- min: void 0,
19
- max: void 0,
20
- order: void 0
21
- });
22
- }
23
- const updateUrl = debounce(() => {
24
- if (isDefined(min) || isDefined(max) || order) {
25
- goto(
26
- $urlParam.with(
27
- {
28
- [field.key]: JSON.stringify({
29
- ...isDefined(min) ? { min } : {},
30
- ...isDefined(max) ? { max } : {},
31
- ...order ? { order } : {}
32
- })
33
- },
34
- "skip",
35
- "take"
36
- ),
37
- {
38
- noScroll: true,
39
- keepFocus: true
40
- }
41
- );
42
- return;
43
- }
44
- goto($urlParam.without(field.key, "skip", "take"), { noScroll: true, keepFocus: true });
45
- }, 250);
46
- function handleReset() {
47
- min = void 0;
48
- max = void 0;
49
- tip.hide();
50
- goto($urlParam.without(field.key, "skip", "take"), { noScroll: true, keepFocus: true });
51
- }
52
- function isDefined(v) {
53
- return typeof v === "number";
54
- }
55
- $:
56
- isNegatifRange = isDefined(min) && isDefined(max) && max < min;
1
+ <script lang="ts">
2
+ import { onMount } from 'svelte'
3
+ import type { TippyInstance } from '../../../utils/tippy.js'
4
+ import debounce from 'debounce'
5
+ import { goto } from '$app/navigation'
6
+ import { page } from '$app/stores'
7
+
8
+ import { DropDown } from '../../menu/index.js'
9
+ import { InputNumber } from '../../input/index.js'
10
+ import { urlParam } from '../../../store/param.js'
11
+ import { jsonParse } from '../../../utils/jsonParse.js'
12
+ import type { TableField } from '../field.js'
13
+ import { mdiFilterMultipleOutline } from '@mdi/js'
14
+ import { Icon } from '../../icon/index.js'
15
+
16
+ export let field: TableField
17
+
18
+ let tip: TippyInstance
19
+ type Range = { min: number | undefined; max: number | undefined }
20
+
21
+ let { min, max } = initRange($page.url)
22
+ onMount(() => page.subscribe(({ url }) => ({ min, max } = initRange(url))))
23
+
24
+ function initRange({ searchParams }: URL) {
25
+ return jsonParse<Range>(searchParams.get(field.key), {
26
+ min: undefined,
27
+ max: undefined
28
+ })
29
+ }
30
+
31
+ const udpateUrl = debounce(() => {
32
+ if (isDefined(min) || isDefined(max)) {
33
+ goto(
34
+ $urlParam.with(
35
+ {
36
+ [field.key]: JSON.stringify({
37
+ ...(isDefined(min) ? { min } : {}),
38
+ ...(isDefined(max) ? { max } : {})
39
+ })
40
+ },
41
+ 'skip',
42
+ 'take'
43
+ ),
44
+ {
45
+ noScroll: true,
46
+ keepFocus: true
47
+ }
48
+ )
49
+ return
50
+ }
51
+ goto($urlParam.without(field.key, 'skip', 'take'), { noScroll: true, keepFocus: true })
52
+ }, 250)
53
+
54
+ function handleReset() {
55
+ min = undefined
56
+ max = undefined
57
+ tip.hide()
58
+ goto($urlParam.without(field.key, 'skip', 'take'), { noScroll: true, keepFocus: true })
59
+ }
60
+
61
+ function isDefined(v: number | undefined | null): v is number {
62
+ return typeof v === 'number'
63
+ }
64
+
65
+ $: isNegatifRange = isDefined(min) && isDefined(max) && max < min
57
66
  </script>
58
67
 
59
68
  <th class="p-1">
@@ -83,31 +92,13 @@ $:
83
92
  {/if}
84
93
  </span>
85
94
  {/if}
86
- {#if order}
87
- <Icon
88
- path={order === 'asc' ? mdiSortAscending : mdiSortDescending}
89
- size={18}
90
- class="fill-primary"
91
- />
92
- {/if}
93
95
  </button>
94
96
 
95
- {#if field.sortable !== false}
96
- <OrderButtons
97
- bind:order
98
- on:change={() => {
99
- updateUrl()
100
- tip.hide()
101
- }}
102
- />
103
- <div class="divider"></div>
104
- <span class="p-1 py-1 text-sm font-semibold opacity-70">Filtre:</span>
105
- {/if}
106
97
  <form class="grid grid-cols-2 gap-2 p-1" on:submit|preventDefault={() => tip.hide()}>
107
- <InputNumber bind:value={min} on:input={updateUrl} input={{ placeholder: 'Min' }} />
98
+ <InputNumber bind:value={min} on:input={udpateUrl} input={{ placeholder: 'Min' }} />
108
99
  <InputNumber
109
100
  bind:value={max}
110
- on:input={updateUrl}
101
+ on:input={udpateUrl}
111
102
  hint={isNegatifRange ? 'Doit être plus grand' : ''}
112
103
  input={{ placeholder: 'Max' }}
113
104
  />
@@ -1,27 +1,21 @@
1
- import { SvelteComponent } from "svelte";
2
1
  import type { TableField } from '../field.js';
3
- declare class __sveltets_Render<Item extends {
4
- id: string;
5
- }> {
6
- props(): {
7
- field: TableField<Item>;
2
+ interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
3
+ new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
4
+ $$bindings?: Bindings;
5
+ } & Exports;
6
+ (internal: unknown, props: Props & {
7
+ $$events?: Events;
8
+ $$slots?: Slots;
9
+ }): Exports & {
10
+ $set?: any;
11
+ $on?: any;
8
12
  };
9
- events(): {} & {
10
- [evt: string]: CustomEvent<any>;
11
- };
12
- slots(): {};
13
- }
14
- export type TableHeadNumberProps<Item extends {
15
- id: string;
16
- }> = ReturnType<__sveltets_Render<Item>['props']>;
17
- export type TableHeadNumberEvents<Item extends {
18
- id: string;
19
- }> = ReturnType<__sveltets_Render<Item>['events']>;
20
- export type TableHeadNumberSlots<Item extends {
21
- id: string;
22
- }> = ReturnType<__sveltets_Render<Item>['slots']>;
23
- export default class TableHeadNumber<Item extends {
24
- id: string;
25
- }> extends SvelteComponent<TableHeadNumberProps<Item>, TableHeadNumberEvents<Item>, TableHeadNumberSlots<Item>> {
13
+ z_$$bindings?: Bindings;
26
14
  }
27
- export {};
15
+ declare const TableHeadNumber: $$__sveltets_2_IsomorphicComponent<{
16
+ field: TableField;
17
+ }, {
18
+ [evt: string]: CustomEvent<any>;
19
+ }, {}, {}, string>;
20
+ type TableHeadNumber = InstanceType<typeof TableHeadNumber>;
21
+ export default TableHeadNumber;
@@ -1,44 +1,50 @@
1
- <script generics="Item extends {id: string}">import { derived } from "svelte/store";
2
- import { page } from "$app/stores";
3
- import { jsonParse } from "../../../utils/jsonParse.js";
4
- import { DropDown } from "../../menu/index.js";
5
- import { Icon } from "../../icon/index.js";
6
- import { parseOptions } from "../../../utils/options.js";
7
- import { urlParam } from "../../../store/param.js";
8
- import { mdiOrderBoolAscendingVariant } from "@mdi/js";
9
- export let field;
10
- export let options;
11
- export let multiSelect = false;
12
- export let placeholder = "No option";
13
- let _options = initOptions($page.url);
14
- page.subscribe(({ url }) => _options = initOptions(url));
15
- $:
16
- optionsActive = _options.filter((option) => option.isActive);
17
- function initOptions({ searchParams }) {
18
- const selection = searchParams.get(field.key);
19
- const selections = jsonParse(searchParams.get(field.key), []);
20
- function getActive(value) {
21
- if (!multiSelect)
22
- return selection === value;
23
- return selections.includes(value);
24
- }
25
- return parseOptions(options).map((option) => ({
26
- ...option,
27
- isActive: getActive(option.value)
28
- }));
29
- }
30
- const getHref = derived(urlParam, (params) => (value) => {
31
- const selections = jsonParse(params.get(field.key), []);
32
- if (!multiSelect)
33
- return params.toggle({ [field.key]: value }, "skip", "take");
34
- if (selections.includes(value)) {
35
- const newSelections = selections.filter((v) => v !== value);
36
- if (!newSelections.length)
37
- return params.without(field.key);
38
- return params.with({ [field.key]: JSON.stringify(newSelections) }, "skip", "take");
39
- }
40
- return params.with({ [field.key]: JSON.stringify([...selections, value]) }, "skip", "take");
41
- });
1
+ <script lang="ts">
2
+ import { derived } from 'svelte/store'
3
+ import { page } from '$app/stores'
4
+
5
+ import { jsonParse } from '../../../utils/jsonParse.js'
6
+ import type { TableField } from '../index.js'
7
+ import { DropDown } from '../../menu/index.js'
8
+ import { Icon } from '../../icon/index.js'
9
+ import { type Options, parseOptions } from '../../../utils/options.js'
10
+ import { urlParam } from '../../../store/param.js'
11
+ import { mdiOrderBoolAscendingVariant } from '@mdi/js'
12
+
13
+ export let field: TableField
14
+ export let options: Options
15
+ export let multiSelect = false
16
+ export let placeholder = 'No option'
17
+
18
+ let _options = initOptions($page.url)
19
+ page.subscribe(({ url }) => (_options = initOptions(url)))
20
+
21
+ $: optionsActive = _options.filter((option) => option.isActive)
22
+
23
+ function initOptions({ searchParams }: URL) {
24
+ const selection = searchParams.get(field.key)
25
+ const selections = jsonParse<string[]>(searchParams.get(field.key), [])
26
+
27
+ function getActive(value: string) {
28
+ if (!multiSelect) return selection === value
29
+ return selections.includes(value)
30
+ }
31
+
32
+ return parseOptions(options).map((option) => ({
33
+ ...option,
34
+ isActive: getActive(option.value)
35
+ }))
36
+ }
37
+
38
+ const getHref = derived(urlParam, (params) => (value: string) => {
39
+ const selections = jsonParse<string[]>(params.get(field.key), [])
40
+ if (!multiSelect) return params.toggle({ [field.key]: value }, 'skip', 'take')
41
+ if (selections.includes(value)) {
42
+ const newSelections = selections.filter((v) => v !== value)
43
+ if (!newSelections.length) return params.without(field.key)
44
+ return params.with({ [field.key]: JSON.stringify(newSelections) }, 'skip', 'take')
45
+ }
46
+ return params.with({ [field.key]: JSON.stringify([...selections, value]) }, 'skip', 'take')
47
+ })
42
48
  </script>
43
49
 
44
50
  <th class="p-1">