fuma 1.0.15 → 1.0.17
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.
- package/dist/private/Meta.svelte +27 -32
- package/dist/private/Meta.svelte.d.ts +0 -1
- package/dist/private/api.d.ts +1 -1
- package/dist/ui/badge/Badge.svelte +3 -4
- package/dist/ui/button/ButtonCopy.svelte +31 -37
- package/dist/ui/button/ButtonDelete.svelte +21 -23
- package/dist/ui/button/ButtonDelete.svelte.d.ts +0 -1
- package/dist/ui/card/Card.svelte +10 -13
- package/dist/ui/card/Card.svelte.d.ts +0 -1
- package/dist/ui/card/CardBasic.svelte +4 -5
- package/dist/ui/card/CardBasic.svelte.d.ts +0 -1
- package/dist/ui/card/CardCollapse.svelte +31 -35
- package/dist/ui/card/CardCollapse.svelte.d.ts +0 -1
- package/dist/ui/card/CardFullScreen.svelte +6 -8
- package/dist/ui/card/CardFullScreen.svelte.d.ts +0 -3
- package/dist/ui/card/CardLink.svelte +4 -5
- package/dist/ui/card/CardLink.svelte.d.ts +0 -1
- package/dist/ui/dialog/Dialog.svelte +34 -41
- package/dist/ui/dialog/Dialog.svelte.d.ts +0 -1
- package/dist/ui/dialog/DialogConfirm.svelte +4 -6
- package/dist/ui/dialog/DialogConfirm.svelte.d.ts +0 -1
- package/dist/ui/drawer/Drawer.svelte +37 -46
- package/dist/ui/drawer/Drawer.svelte.d.ts +0 -16
- package/dist/ui/form/Form.svelte +82 -100
- package/dist/ui/form/Form.svelte.d.ts +0 -1
- package/dist/ui/form/FormInput.svelte +6 -12
- package/dist/ui/form/FormInput.svelte.d.ts +0 -18
- package/dist/ui/form/FormSection.svelte +16 -23
- package/dist/ui/form/formInput.d.ts +0 -1
- package/dist/ui/icon/Icon.svelte +32 -35
- package/dist/ui/input/FormControl.svelte +32 -38
- package/dist/ui/input/FormControl.svelte.d.ts +0 -3
- package/dist/ui/input/InputBoolean.svelte +8 -13
- package/dist/ui/input/InputBoolean.svelte.d.ts +0 -3
- package/dist/ui/input/InputCheckboxs.svelte +20 -22
- package/dist/ui/input/InputCheckboxs.svelte.d.ts +0 -3
- package/dist/ui/input/InputCheckboxsMenu.svelte +35 -51
- package/dist/ui/input/InputCheckboxsMenu.svelte.d.ts +0 -3
- package/dist/ui/input/InputCheckboxsTree.svelte +6 -9
- package/dist/ui/input/InputCheckboxsTreeNodes.svelte +27 -35
- package/dist/ui/input/InputCombo.svelte +34 -43
- package/dist/ui/input/InputCombo.svelte.d.ts +0 -3
- package/dist/ui/input/InputDate.svelte +17 -22
- package/dist/ui/input/InputDateTime.svelte +18 -23
- package/dist/ui/input/InputImage.svelte +45 -52
- package/dist/ui/input/InputImage.svelte.d.ts +0 -1
- package/dist/ui/input/InputImagePreview.svelte +20 -24
- package/dist/ui/input/InputNumber.svelte +5 -10
- package/dist/ui/input/InputOptionInParam.svelte +10 -12
- package/dist/ui/input/InputOptions.svelte +34 -40
- package/dist/ui/input/InputPassword.svelte +5 -7
- package/dist/ui/input/InputPassword.svelte.d.ts +0 -3
- package/dist/ui/input/InputRadio.svelte +32 -36
- package/dist/ui/input/InputRadio.svelte.d.ts +0 -3
- package/dist/ui/input/InputRelation.svelte +67 -83
- package/dist/ui/input/InputRelation.svelte.d.ts +0 -1
- package/dist/ui/input/InputRelations.svelte +79 -92
- package/dist/ui/input/InputSearch.svelte +10 -13
- package/dist/ui/input/InputSelect.svelte +28 -39
- package/dist/ui/input/InputText.svelte +7 -8
- package/dist/ui/input/InputTextarea.svelte +6 -6
- package/dist/ui/input/InputTime.svelte +23 -29
- package/dist/ui/input/RelationAfter.svelte +9 -13
- package/dist/ui/input/SelectorList.svelte +12 -16
- package/dist/ui/input/SelectorList.svelte.d.ts +0 -4
- package/dist/ui/input/textRich/InputTextRich.svelte +50 -52
- package/dist/ui/input/textRich/InputTextRich.svelte.d.ts +9 -3
- package/dist/ui/input/textRich/SuggesionList.svelte +9 -13
- package/dist/ui/input/textRich/ToolMark.svelte +9 -12
- package/dist/ui/input/textRich/ToolMarkColor.svelte +11 -15
- package/dist/ui/input/textRich/ToolMarkLink.svelte +38 -46
- package/dist/ui/input/textRich/ToolMenu.svelte +19 -34
- package/dist/ui/input/textRich/ToolMenuAlign.svelte +9 -13
- package/dist/ui/input/textRich/ToolMenuInsert.svelte +7 -12
- package/dist/ui/input/textRich/ToolMenuNode.svelte +10 -14
- package/dist/ui/input/textRich/ToolsBar.svelte +11 -15
- package/dist/ui/login/Login.svelte +30 -36
- package/dist/ui/menu/ContextMenu.svelte +31 -37
- package/dist/ui/menu/ContextMenu.svelte.d.ts +0 -1
- package/dist/ui/menu/DropDown.svelte +83 -92
- package/dist/ui/menu/DropDown.svelte.d.ts +0 -1
- package/dist/ui/menu/DropDownMenu.svelte +18 -25
- package/dist/ui/menu/DropDownMenu.svelte.d.ts +0 -1
- package/dist/ui/mode/ToggleMode.svelte +14 -15
- package/dist/ui/mode/ToggleMode.svelte.d.ts +1 -6
- package/dist/ui/pagination/Pagination.svelte +8 -9
- package/dist/ui/placeholder/Placeholder.svelte +3 -4
- package/dist/ui/placeholder/Placeholder.svelte.d.ts +0 -1
- package/dist/ui/placeholder/PlaceholderImage.svelte +4 -6
- package/dist/ui/placeholder/PlaceholderImage.svelte.d.ts +0 -1
- package/dist/ui/range/RangePicker.svelte +62 -75
- package/dist/ui/range/RangePicker.svelte.d.ts +2 -2
- package/dist/ui/range/RangePickerButton.svelte +35 -43
- package/dist/ui/slot/Slot.svelte +25 -42
- package/dist/ui/slot/Span.svelte +1 -2
- package/dist/ui/table/Table.svelte +28 -35
- package/dist/ui/table/TableBody.svelte +12 -18
- package/dist/ui/table/TableCell.svelte +10 -13
- package/dist/ui/table/TableFieldsEdition.svelte +51 -57
- package/dist/ui/table/TableHead.svelte +20 -19
- package/dist/ui/table/TableViewSelect.svelte +37 -50
- package/dist/ui/table/cell/TableCellArray.svelte +3 -5
- package/dist/ui/table/cell/TableCellBoolean.svelte +3 -4
- package/dist/ui/table/cell/TableCellNumber.svelte +1 -2
- package/dist/ui/table/cell/TableCellString.svelte +2 -5
- package/dist/ui/table/head/OrderButtons.svelte +37 -0
- package/dist/ui/table/head/OrderButtons.svelte.d.ts +20 -0
- package/dist/ui/table/head/TableHeadBoolean.svelte +3 -6
- package/dist/ui/table/head/TableHeadDate.svelte +110 -61
- package/dist/ui/table/head/TableHeadDefault.svelte +2 -5
- package/dist/ui/table/head/TableHeadNumber.svelte +76 -67
- package/dist/ui/table/head/TableHeadSelect.svelte +41 -47
- package/dist/ui/table/head/TableHeadString.svelte +8 -14
- package/dist/ui/tabs/Tabs.svelte +5 -8
- package/dist/ui/tabs/TabsIcon.svelte +28 -31
- package/dist/validation/zod.d.ts +12 -0
- package/dist/validation/zod.js +4 -2
- package/package.json +1 -1
|
@@ -1,78 +1,65 @@
|
|
|
1
|
-
<script
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
}
|
|
64
|
-
})
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
const getAbsoluteDate = (date: Date) =>
|
|
68
|
-
[date.getFullYear(), date.getMonth() + 1, date.getDate()]
|
|
69
|
-
.map((n) => n.toString().padStart(2, '0'))
|
|
70
|
-
.join('-')
|
|
71
|
-
|
|
72
|
-
const getAbsoluteTime = (date?: RangeDate, defaultTime = '00:00:00') => {
|
|
73
|
-
if (!date) return defaultTime
|
|
74
|
-
return dayjs(date).format('HH:mm:ss')
|
|
75
|
-
}
|
|
1
|
+
<script>import { onMount, onDestroy, createEventDispatcher } from "svelte";
|
|
2
|
+
import dayjs from "dayjs";
|
|
3
|
+
export let numberOfMonths = 3;
|
|
4
|
+
export let numberOfColumns = numberOfMonths;
|
|
5
|
+
export let showWeekNumbers = true;
|
|
6
|
+
export let range = void 0;
|
|
7
|
+
export let minDate = void 0;
|
|
8
|
+
export let maxDate = void 0;
|
|
9
|
+
let startElement;
|
|
10
|
+
let endElement;
|
|
11
|
+
let picker;
|
|
12
|
+
let parentEl;
|
|
13
|
+
const dispatch = createEventDispatcher();
|
|
14
|
+
onMount(() => {
|
|
15
|
+
initTimePicker();
|
|
16
|
+
});
|
|
17
|
+
onDestroy(() => {
|
|
18
|
+
picker?.destroy();
|
|
19
|
+
});
|
|
20
|
+
export function clear() {
|
|
21
|
+
picker?.clearSelection();
|
|
22
|
+
}
|
|
23
|
+
async function initTimePicker() {
|
|
24
|
+
const _Litepicker = (await import("litepicker")).Litepicker;
|
|
25
|
+
picker?.destroy();
|
|
26
|
+
picker = new _Litepicker({
|
|
27
|
+
element: startElement,
|
|
28
|
+
elementEnd: endElement,
|
|
29
|
+
// Nécéssaire pour traquer le theme
|
|
30
|
+
parentEl,
|
|
31
|
+
inlineMode: true,
|
|
32
|
+
singleMode: false,
|
|
33
|
+
allowRepick: false,
|
|
34
|
+
lang: navigator.language,
|
|
35
|
+
numberOfMonths,
|
|
36
|
+
numberOfColumns,
|
|
37
|
+
showWeekNumbers,
|
|
38
|
+
minDate,
|
|
39
|
+
maxDate,
|
|
40
|
+
startDate: range?.start ? dayjs(range.start).toDate() : void 0,
|
|
41
|
+
endDate: range?.end ? dayjs(range.end).toDate() : void 0,
|
|
42
|
+
setup: (picker2) => {
|
|
43
|
+
picker2.on("selected", (date1, date2) => {
|
|
44
|
+
range = {
|
|
45
|
+
start: /* @__PURE__ */ new Date(
|
|
46
|
+
`${getAbsoluteDate(date1.dateInstance)}T${getAbsoluteTime(range?.start)}`
|
|
47
|
+
),
|
|
48
|
+
end: /* @__PURE__ */ new Date(
|
|
49
|
+
`${getAbsoluteDate(date2.dateInstance)}T${getAbsoluteTime(range?.end, "23:59:00")}`
|
|
50
|
+
)
|
|
51
|
+
};
|
|
52
|
+
dispatch("change", range);
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
const getAbsoluteDate = (date) => [date.getFullYear(), date.getMonth() + 1, date.getDate()].map((n) => n.toString().padStart(2, "0")).join("-");
|
|
58
|
+
const getAbsoluteTime = (date, defaultTime = "00:00:00") => {
|
|
59
|
+
if (!date)
|
|
60
|
+
return defaultTime;
|
|
61
|
+
return dayjs(date).format("HH:mm:ss");
|
|
62
|
+
};
|
|
76
63
|
</script>
|
|
77
64
|
|
|
78
65
|
<input type="hidden" bind:this={startElement} />
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { SvelteComponent } from "svelte";
|
|
2
|
-
import type {
|
|
2
|
+
import type { RangeAsDate } from './types.js';
|
|
3
3
|
declare const __propDef: {
|
|
4
4
|
props: {
|
|
5
5
|
numberOfMonths?: number | undefined;
|
|
@@ -11,7 +11,7 @@ declare const __propDef: {
|
|
|
11
11
|
clear?: (() => void) | undefined;
|
|
12
12
|
};
|
|
13
13
|
events: {
|
|
14
|
-
change: CustomEvent<
|
|
14
|
+
change: CustomEvent<RangeAsDate>;
|
|
15
15
|
} & {
|
|
16
16
|
[evt: string]: CustomEvent<any>;
|
|
17
17
|
};
|
|
@@ -1,46 +1,38 @@
|
|
|
1
|
-
<script
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
: $urlParam.with({
|
|
37
|
-
[key]: JSON.stringify({
|
|
38
|
-
start: range.start?.toJSON(),
|
|
39
|
-
end: range.end?.toJSON()
|
|
40
|
-
})
|
|
41
|
-
})
|
|
42
|
-
return goto(url, { replaceState: true, noScroll: true })
|
|
43
|
-
}
|
|
1
|
+
<script>import { mdiCalendarMonthOutline } from "@mdi/js";
|
|
2
|
+
import { goto } from "$app/navigation";
|
|
3
|
+
import { slide } from "svelte/transition";
|
|
4
|
+
import { urlParam } from "../../store/param.js";
|
|
5
|
+
import { formatRangeShort } from "./format.js";
|
|
6
|
+
import { Icon } from "../icon/index.js";
|
|
7
|
+
import { DropDown } from "../menu/index.js";
|
|
8
|
+
import { InputTime } from "../input/index.js";
|
|
9
|
+
import { RangePicker } from "./index.js";
|
|
10
|
+
import { jsonParse } from "../../utils/jsonParse.js";
|
|
11
|
+
export let minDate = void 0;
|
|
12
|
+
export let maxDate = void 0;
|
|
13
|
+
let dropDown;
|
|
14
|
+
let rangePicker;
|
|
15
|
+
export let key = "range";
|
|
16
|
+
export let range = jsonParse($urlParam.get(key), {
|
|
17
|
+
start: null,
|
|
18
|
+
end: null
|
|
19
|
+
});
|
|
20
|
+
$:
|
|
21
|
+
isValidPeriod = !!range.start && !!range.end;
|
|
22
|
+
function getLabel(_range) {
|
|
23
|
+
if (!_range || !_range.start || !_range.end)
|
|
24
|
+
return "";
|
|
25
|
+
return formatRangeShort(_range);
|
|
26
|
+
}
|
|
27
|
+
async function writeURL() {
|
|
28
|
+
const url = !range.start && !range.end ? $urlParam.without(key) : $urlParam.with({
|
|
29
|
+
[key]: JSON.stringify({
|
|
30
|
+
start: range.start?.toJSON(),
|
|
31
|
+
end: range.end?.toJSON()
|
|
32
|
+
})
|
|
33
|
+
});
|
|
34
|
+
return goto(url, { replaceState: true, noScroll: true });
|
|
35
|
+
}
|
|
44
36
|
</script>
|
|
45
37
|
|
|
46
38
|
<DropDown bind:this={dropDown} tippyProps={{ onHidden: writeURL }} class="max-h-full">
|
package/dist/ui/slot/Slot.svelte
CHANGED
|
@@ -1,45 +1,28 @@
|
|
|
1
|
-
<script
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
function getComponentAndProps(_slot: Slot): ComponentAndProps | null {
|
|
27
|
-
if (typeof _slot === 'function') {
|
|
28
|
-
if (isComponentType(_slot)) return { component: _slot, props: {} }
|
|
29
|
-
if (!args) {
|
|
30
|
-
console.error('args prop is required with slot as function')
|
|
31
|
-
return null
|
|
32
|
-
}
|
|
33
|
-
const result = _slot(args) as Slot
|
|
34
|
-
return getComponentAndProps(result)
|
|
35
|
-
}
|
|
36
|
-
if (typeof _slot === 'object') return _slot
|
|
37
|
-
return component(Span, { content: _slot })
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
function isComponentType(fun: Function): fun is ComponentType {
|
|
41
|
-
return !!fun.prototype?.constructor?.name
|
|
42
|
-
}
|
|
1
|
+
<script context="module"></script>
|
|
2
|
+
|
|
3
|
+
<script generics="Slot extends _Slot">import {} from "svelte";
|
|
4
|
+
import { component } from "../../utils/component.js";
|
|
5
|
+
import Span from "./Span.svelte";
|
|
6
|
+
export let slot = void 0;
|
|
7
|
+
export let args = void 0;
|
|
8
|
+
function getComponentAndProps(_slot) {
|
|
9
|
+
if (typeof _slot === "function") {
|
|
10
|
+
if (isComponentType(_slot))
|
|
11
|
+
return { component: _slot, props: {} };
|
|
12
|
+
if (!args) {
|
|
13
|
+
console.error("args prop is required with slot as function");
|
|
14
|
+
return null;
|
|
15
|
+
}
|
|
16
|
+
const result = _slot(args);
|
|
17
|
+
return getComponentAndProps(result);
|
|
18
|
+
}
|
|
19
|
+
if (typeof _slot === "object")
|
|
20
|
+
return _slot;
|
|
21
|
+
return component(Span, { content: _slot });
|
|
22
|
+
}
|
|
23
|
+
function isComponentType(fun) {
|
|
24
|
+
return !!fun.prototype?.constructor?.name;
|
|
25
|
+
}
|
|
43
26
|
</script>
|
|
44
27
|
|
|
45
28
|
{#if slot}
|
package/dist/ui/slot/Span.svelte
CHANGED
|
@@ -1,38 +1,31 @@
|
|
|
1
|
-
<script
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
KEY_FIELDS_HIDDEN,
|
|
30
|
-
KEY_FIELDS_ORDER
|
|
31
|
-
})
|
|
32
|
-
|
|
33
|
-
const initFields = () => (fields = syncFieldsWithParams(key, fields))
|
|
34
|
-
initFields()
|
|
35
|
-
afterNavigate(initFields)
|
|
1
|
+
<script generics="Item extends {id: string}">import { afterNavigate } from "$app/navigation";
|
|
2
|
+
import { Placeholder } from "../placeholder/index.js";
|
|
3
|
+
import {
|
|
4
|
+
TableHead,
|
|
5
|
+
TableBody,
|
|
6
|
+
context,
|
|
7
|
+
createKeys,
|
|
8
|
+
syncFieldsWithParams
|
|
9
|
+
} from "./index.js";
|
|
10
|
+
export let key = "table";
|
|
11
|
+
export let fields;
|
|
12
|
+
export let items;
|
|
13
|
+
export let slotAction = void 0;
|
|
14
|
+
export let placholder = "Aucun \xE9l\xE9ment trouv\xE9";
|
|
15
|
+
let klass = "";
|
|
16
|
+
export { klass as class };
|
|
17
|
+
export let classRow = "";
|
|
18
|
+
export let hideBody = false;
|
|
19
|
+
export let onCreateField = void 0;
|
|
20
|
+
const { KEY_FIELDS_VISIBLE, KEY_FIELDS_HIDDEN, KEY_FIELDS_ORDER } = createKeys(key);
|
|
21
|
+
context.set(key, {
|
|
22
|
+
KEY_FIELDS_VISIBLE,
|
|
23
|
+
KEY_FIELDS_HIDDEN,
|
|
24
|
+
KEY_FIELDS_ORDER
|
|
25
|
+
});
|
|
26
|
+
const initFields = () => fields = syncFieldsWithParams(key, fields);
|
|
27
|
+
initFields();
|
|
28
|
+
afterNavigate(initFields);
|
|
36
29
|
</script>
|
|
37
30
|
|
|
38
31
|
<div class="{klass} overflow-x-auto rounded-lg border bg-base-100" class:min-h-[320px]={!hideBody}>
|
|
@@ -1,21 +1,15 @@
|
|
|
1
|
-
<script
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
$: _fields = fields.filter((f) => f.$visible)
|
|
15
|
-
|
|
16
|
-
function handleClickRow(event: MouseEvent, item: Item) {
|
|
17
|
-
dispatch('click', item)
|
|
18
|
-
}
|
|
1
|
+
<script generics="Item extends {id: string}">import { createEventDispatcher } from "svelte";
|
|
2
|
+
import { TableCell } from "./index.js";
|
|
3
|
+
export let items;
|
|
4
|
+
export let fields;
|
|
5
|
+
export let action = void 0;
|
|
6
|
+
export let classRow = "";
|
|
7
|
+
const dispatch = createEventDispatcher();
|
|
8
|
+
$:
|
|
9
|
+
_fields = fields.filter((f) => f.$visible);
|
|
10
|
+
function handleClickRow(event, item) {
|
|
11
|
+
dispatch("click", item);
|
|
12
|
+
}
|
|
19
13
|
</script>
|
|
20
14
|
|
|
21
15
|
<tbody>
|
|
@@ -1,16 +1,13 @@
|
|
|
1
|
-
<script
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
export let field: TableField<Item>
|
|
12
|
-
|
|
13
|
-
$: value = field.getCell(item)
|
|
1
|
+
<script generics="Item extends {id: string}">import {
|
|
2
|
+
TableCellArray,
|
|
3
|
+
TableCellBoolean,
|
|
4
|
+
TableCellNumber,
|
|
5
|
+
TableCellString
|
|
6
|
+
} from "./cell/index.js";
|
|
7
|
+
export let item;
|
|
8
|
+
export let field;
|
|
9
|
+
$:
|
|
10
|
+
value = field.getCell(item);
|
|
14
11
|
</script>
|
|
15
12
|
|
|
16
13
|
{#if Array.isArray(value)}
|
|
@@ -1,60 +1,54 @@
|
|
|
1
|
-
<script
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
function handleReorder(newFieldsOrder: TableField<Item>[]) {
|
|
53
|
-
fields = newFieldsOrder
|
|
54
|
-
const fieldsOrder = fields.map((f) => f.key)
|
|
55
|
-
const newUrl = $urlParam.with({ [KEY_FIELDS_ORDER]: JSON.stringify(fieldsOrder) })
|
|
56
|
-
goto(newUrl, { replaceState: true, noScroll: true, keepFocus: true })
|
|
57
|
-
}
|
|
1
|
+
<script generics="Item extends {id: string}">import {
|
|
2
|
+
mdiCheck,
|
|
3
|
+
mdiCheckCircleOutline,
|
|
4
|
+
mdiCircleSmall,
|
|
5
|
+
mdiDotsHorizontal,
|
|
6
|
+
mdiDrag,
|
|
7
|
+
mdiPlus
|
|
8
|
+
} from "@mdi/js";
|
|
9
|
+
import { goto } from "$app/navigation";
|
|
10
|
+
import { page } from "$app/stores";
|
|
11
|
+
import { urlParam } from "../../store/param.js";
|
|
12
|
+
import { listEditable } from "../../action/list/index.js";
|
|
13
|
+
import { jsonParse } from "../../utils/jsonParse.js";
|
|
14
|
+
import { context } from "./context.js";
|
|
15
|
+
import { Icon } from "../icon/index.js";
|
|
16
|
+
import { DropDown } from "../menu/index.js";
|
|
17
|
+
export let fields;
|
|
18
|
+
export let key;
|
|
19
|
+
export let onCreateField = void 0;
|
|
20
|
+
let tip;
|
|
21
|
+
const { KEY_FIELDS_VISIBLE, KEY_FIELDS_HIDDEN, KEY_FIELDS_ORDER } = context.get(key);
|
|
22
|
+
function getFieldHref(field) {
|
|
23
|
+
if (field.locked)
|
|
24
|
+
return;
|
|
25
|
+
const url = toggleParam(field.visible ? KEY_FIELDS_HIDDEN : KEY_FIELDS_VISIBLE, field.key);
|
|
26
|
+
if (url.searchParams.has(field.key)) {
|
|
27
|
+
url.searchParams.delete(field.key);
|
|
28
|
+
url.searchParams.delete("skip");
|
|
29
|
+
url.searchParams.delete("take");
|
|
30
|
+
}
|
|
31
|
+
return url.pathname + url.search;
|
|
32
|
+
}
|
|
33
|
+
function toggleParam(paramKey, fieldKey) {
|
|
34
|
+
const url = new URL($page.url);
|
|
35
|
+
const fieldsKeys = jsonParse($page.url.searchParams.get(paramKey), []);
|
|
36
|
+
if (!fieldsKeys.includes(fieldKey))
|
|
37
|
+
fieldsKeys.push(fieldKey);
|
|
38
|
+
else
|
|
39
|
+
fieldsKeys.splice(fieldsKeys.indexOf(fieldKey), 1);
|
|
40
|
+
if (fieldsKeys.length)
|
|
41
|
+
url.searchParams.set(paramKey, JSON.stringify(fieldsKeys));
|
|
42
|
+
else
|
|
43
|
+
url.searchParams.delete(paramKey);
|
|
44
|
+
return url;
|
|
45
|
+
}
|
|
46
|
+
function handleReorder(newFieldsOrder) {
|
|
47
|
+
fields = newFieldsOrder;
|
|
48
|
+
const fieldsOrder = fields.map((f) => f.key);
|
|
49
|
+
const newUrl = $urlParam.with({ [KEY_FIELDS_ORDER]: JSON.stringify(fieldsOrder) });
|
|
50
|
+
goto(newUrl, { replaceState: true, noScroll: true, keepFocus: true });
|
|
51
|
+
}
|
|
58
52
|
</script>
|
|
59
53
|
|
|
60
54
|
<th class="sticky right-0 z-10 p-0 px-1" align="right">
|
|
@@ -1,22 +1,23 @@
|
|
|
1
|
-
<script
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
1
|
+
<script generics="Item extends {id: string}">import { component } from "../../utils/component.js";
|
|
2
|
+
import { TableFieldsEdition } from "./index.js";
|
|
3
|
+
import { tableHeadComponent } from "./head/index.js";
|
|
4
|
+
import TableHeadDefault from "./head/TableHeadDefault.svelte";
|
|
5
|
+
export let fields;
|
|
6
|
+
export let key;
|
|
7
|
+
export let onCreateField = void 0;
|
|
8
|
+
function getComponent(field) {
|
|
9
|
+
if (field.type === "select" || field.type === "multiselect")
|
|
10
|
+
return tableHeadComponent(field.type, { options: field.options || [] })(field);
|
|
11
|
+
if (field.type)
|
|
12
|
+
return tableHeadComponent(field.type, {})(field);
|
|
13
|
+
if (!field.head)
|
|
14
|
+
return component(TableHeadDefault, { field });
|
|
15
|
+
if (typeof field.head === "function")
|
|
16
|
+
return field.head(field);
|
|
17
|
+
if (typeof field.head === "string")
|
|
18
|
+
return tableHeadComponent(field.head, {})(field);
|
|
19
|
+
return field.head;
|
|
20
|
+
}
|
|
20
21
|
</script>
|
|
21
22
|
|
|
22
23
|
<thead>
|