firstly 0.2.0 → 0.2.1
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/CHANGELOG.md +10 -0
- package/esm/auth/server/AuthController.server.js +32 -12
- package/esm/auth/static/assets/Page-BRNWcY5Z.js +1 -0
- package/esm/auth/static/assets/Page-CFcEsGK8.d.ts +2 -0
- package/esm/auth/static/assets/Page-CFcEsGK8.js +7 -0
- package/esm/auth/static/assets/Page-tLVs5slF.js +1 -0
- package/esm/auth/static/assets/index-D38rqu4x.d.ts +201 -0
- package/esm/auth/static/assets/index-D38rqu4x.js +2 -0
- package/esm/auth/static/index.html +1 -1
- package/esm/bin/cmd.js +2 -2
- package/esm/feedback/FeedbackController.d.ts +6 -2
- package/esm/feedback/FeedbackController.js +145 -143
- package/esm/feedback/server/index.d.ts +2 -2
- package/esm/feedback/server/index.js +3 -3
- package/esm/feedback/types.d.ts +5 -0
- package/esm/feedback/ui/DialogIssue.svelte +5 -5
- package/esm/feedback/ui/DialogIssues.svelte +5 -5
- package/esm/feedback/ui/DialogMilestones.svelte +1 -1
- package/esm/internals/BaseEnum.d.ts +1 -0
- package/esm/internals/FF_Fields.d.ts +4 -3
- package/esm/internals/FF_Fields.js +14 -55
- package/esm/internals/cellsBuildor.d.ts +2 -1
- package/esm/internals/index.d.ts +6 -7
- package/esm/internals/storeItem.d.ts +1 -0
- package/esm/mail/server/index.d.ts +8 -2
- package/esm/mail/server/index.js +35 -7
- package/esm/server/index.d.ts +1 -1
- package/esm/svelte/FF_Cell.svelte +3 -5
- package/esm/svelte/FF_Cell.svelte.d.ts +4 -2
- package/esm/svelte/FF_Form.svelte +4 -5
- package/esm/svelte/FF_Grid.svelte +2 -2
- package/esm/svelte/FF_Layout.svelte +3 -3
- package/esm/svelte/dialog/DialogManagement.svelte +2 -5
- package/esm/svelte/dialog/DialogPrimitive.svelte +1 -2
- package/esm/svelte/dialog/dialog.js +2 -2
- package/esm/svelte/ff_Config.svelte.js +2 -2
- package/esm/svelte/index.d.ts +2 -7
- package/esm/svelte/index.js +2 -7
- package/esm/ui/Button.svelte +38 -22
- package/esm/ui/Button.svelte.d.ts +10 -34
- package/esm/ui/Clipboardable.svelte +13 -17
- package/esm/ui/Clipboardable.svelte.d.ts +9 -33
- package/esm/ui/Field.svelte +38 -8
- package/esm/ui/FieldGroup.svelte.d.ts +1 -1
- package/esm/ui/Grid.svelte +11 -82
- package/esm/ui/Grid.svelte.d.ts +0 -1
- package/esm/ui/Grid2.svelte +25 -86
- package/esm/ui/Grid2.svelte.d.ts +1 -2
- package/esm/ui/GridPaginate.svelte +1 -1
- package/esm/ui/GridPaginate2.svelte +2 -2
- package/esm/ui/Icon.svelte +2 -18
- package/esm/ui/Icon.svelte.d.ts +0 -2
- package/esm/ui/LibIcon.js +2 -2
- package/esm/ui/Loading.svelte +1 -1
- package/esm/ui/dialog/DialogManagement.svelte +14 -5
- package/esm/ui/dialog/DialogPrimitive.svelte +3 -3
- package/esm/ui/dialog/FormEditAction.svelte +4 -4
- package/esm/ui/dialog/dialog.d.ts +5 -2
- package/esm/ui/dialog/dialog.js +2 -2
- package/esm/ui/index.d.ts +1 -0
- package/esm/ui/index.js +1 -0
- package/esm/ui/internals/FieldContainer.svelte +25 -14
- package/esm/ui/internals/FieldContainer.svelte.d.ts +9 -30
- package/esm/ui/internals/Input.svelte.d.ts +1 -1
- package/esm/ui/internals/Textarea.svelte +2 -5
- package/esm/ui/internals/select/MultiSelectMelt.svelte +6 -4
- package/esm/ui/internals/select/Select2.svelte +88 -0
- package/esm/ui/internals/select/Select2.svelte.d.ts +12 -0
- package/esm/ui/internals/select/SelectMelt.svelte +5 -5
- package/esm/ui/internals/select/SelectRadio.svelte +1 -1
- package/esm/ui/link/Link.svelte +1 -1
- package/esm/ui/link/LinkPlus.svelte +9 -5
- package/esm/ui/link/LinkPlus.svelte.d.ts +5 -19
- package/esm/virtual/Customer.js +1 -2
- package/esm/virtual/UIEntity.js +9 -5
- package/package.json +7 -8
- package/esm/auth/static/assets/Page-9Ytj29NS.js +0 -1
- package/esm/auth/static/assets/Page-C1pM-UDt.d.ts +0 -2
- package/esm/auth/static/assets/Page-C1pM-UDt.js +0 -20
- package/esm/auth/static/assets/Page-CPz6KCw_.js +0 -1
- package/esm/auth/static/assets/index-AoBb9Ds5.d.ts +0 -232
- package/esm/auth/static/assets/index-AoBb9Ds5.js +0 -2
- package/esm/svelte/FF_Display.svelte +0 -51
- package/esm/svelte/FF_Display.svelte.d.ts +0 -29
- package/esm/svelte/FF_Edit.svelte +0 -104
- package/esm/svelte/FF_Edit.svelte.d.ts +0 -32
- package/esm/svelte/FF_Error.svelte +0 -23
- package/esm/svelte/FF_Error.svelte.d.ts +0 -29
- package/esm/svelte/FF_Field.svelte +0 -62
- package/esm/svelte/FF_Field.svelte.d.ts +0 -29
- package/esm/svelte/FF_Hint.svelte +0 -21
- package/esm/svelte/FF_Hint.svelte.d.ts +0 -29
- package/esm/svelte/FF_Label.svelte +0 -23
- package/esm/svelte/FF_Label.svelte.d.ts +0 -29
- /package/esm/auth/static/assets/{Page-CPz6KCw_.d.ts → Page-BRNWcY5Z.d.ts} +0 -0
- /package/esm/auth/static/assets/{Page-9Ytj29NS.d.ts → Page-tLVs5slF.d.ts} +0 -0
|
@@ -26,8 +26,8 @@
|
|
|
26
26
|
{#if wDelete}
|
|
27
27
|
<Button
|
|
28
28
|
type="button"
|
|
29
|
-
|
|
30
|
-
class="
|
|
29
|
+
onclick={dispatchDelete}
|
|
30
|
+
class="mr-4 btn-error"
|
|
31
31
|
isLoading={$store.loading}
|
|
32
32
|
>
|
|
33
33
|
<Icon data={LibIcon_Delete} />
|
|
@@ -41,7 +41,7 @@
|
|
|
41
41
|
</div>
|
|
42
42
|
</div>
|
|
43
43
|
|
|
44
|
-
<Button class="
|
|
44
|
+
<Button class="btn-primary" {...$$restProps} isLoading={$store.loading}>
|
|
45
45
|
<Icon data={LibIcon_Check} />
|
|
46
46
|
<p>Sauvegarder</p>
|
|
47
47
|
</Button>
|
|
@@ -54,7 +54,7 @@
|
|
|
54
54
|
{/if}
|
|
55
55
|
</div>
|
|
56
56
|
|
|
57
|
-
<Button class="
|
|
57
|
+
<Button class="btn-primary" {...$$restProps} isLoading={$store.loading}>
|
|
58
58
|
<Icon data={LibIcon_Add} />
|
|
59
59
|
<p>{textCreate}</p>
|
|
60
60
|
</Button>
|
|
@@ -1,6 +1,8 @@
|
|
|
1
|
-
import type { SvelteComponent } from 'svelte';
|
|
1
|
+
import type { Component, SvelteComponent } from 'svelte';
|
|
2
2
|
import { type Repository } from 'remult';
|
|
3
|
-
import {
|
|
3
|
+
import type { BaseItemLight } from '../../internals/BaseEnum';
|
|
4
|
+
import type { CellsInput } from '../../internals/cellsBuildor';
|
|
5
|
+
import type { StoreItem } from '../../internals/storeItem';
|
|
4
6
|
import type { FF_Repo } from '../../svelte';
|
|
5
7
|
export type DialogClasses = {
|
|
6
8
|
/**
|
|
@@ -18,6 +20,7 @@ export type DialogMetaData<entityType = any> = {
|
|
|
18
20
|
defaults?: Partial<entityType>;
|
|
19
21
|
classes?: DialogClasses;
|
|
20
22
|
component?: new (...args: any[]) => SvelteComponent;
|
|
23
|
+
componentS5?: Component;
|
|
21
24
|
props?: any;
|
|
22
25
|
children?: any;
|
|
23
26
|
reThrow?: boolean;
|
package/esm/ui/dialog/dialog.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { writable } from 'svelte/store';
|
|
2
2
|
import {} from 'remult';
|
|
3
|
-
import { LibIcon_Add, LibIcon_Delete, LibIcon_Edit, LibIcon_Search
|
|
3
|
+
import { LibIcon_Add, LibIcon_Delete, LibIcon_Edit, LibIcon_Search } from '../LibIcon';
|
|
4
4
|
const createDialogManagement = () => {
|
|
5
5
|
const { subscribe, update } = writable([]);
|
|
6
6
|
// internal...
|
|
@@ -18,7 +18,7 @@ const createDialogManagement = () => {
|
|
|
18
18
|
confirm: (topic, text, icon) => {
|
|
19
19
|
const detail = {
|
|
20
20
|
detail: {
|
|
21
|
-
caption: '
|
|
21
|
+
caption: 'A Confirmer',
|
|
22
22
|
icon: { data: icon },
|
|
23
23
|
},
|
|
24
24
|
children: `
|
package/esm/ui/index.d.ts
CHANGED
|
@@ -3,3 +3,4 @@ import type { Cell } from '../internals';
|
|
|
3
3
|
export type Align = 'text-left' | 'text-center' | 'text-right';
|
|
4
4
|
export declare const align: (f?: FieldMetadata, isSlot?: boolean) => Align;
|
|
5
5
|
export declare const getAligns: (cells: Cell<any>[], withAction: boolean) => Align[];
|
|
6
|
+
export declare const baseTable = "overflow-x-auto rounded-box bg-base-300/60";
|
package/esm/ui/index.js
CHANGED
|
@@ -1,20 +1,31 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
2
|
import { tw } from '../../utils/tailwind'
|
|
3
3
|
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
4
|
+
interface Props {
|
|
5
|
+
label?: string
|
|
6
|
+
forId: string
|
|
7
|
+
required?: boolean
|
|
8
|
+
error?: string
|
|
9
|
+
/**
|
|
10
|
+
* example usage for paginate
|
|
11
|
+
* classes={{ label: 'justify-end' }}
|
|
12
|
+
*/
|
|
13
|
+
classes?: { label?: string; slot?: string }
|
|
14
|
+
children?: import('svelte').Snippet
|
|
15
|
+
}
|
|
8
16
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
17
|
+
let {
|
|
18
|
+
label = 'label',
|
|
19
|
+
forId,
|
|
20
|
+
required = false,
|
|
21
|
+
error = '',
|
|
22
|
+
classes = {},
|
|
23
|
+
children,
|
|
24
|
+
}: Props = $props()
|
|
14
25
|
</script>
|
|
15
26
|
|
|
16
|
-
<
|
|
17
|
-
<label for={forId} class={tw(`label flex gap-1 px-2
|
|
27
|
+
<fieldset class="fieldset w-full">
|
|
28
|
+
<label for={forId} class={tw(`label flex gap-1 px-2 justify-between`, classes.label)}>
|
|
18
29
|
<span class="label-text pl-2 text-xs text-base-content/60">
|
|
19
30
|
{label}{required ? ' *' : ''}
|
|
20
31
|
</span>
|
|
@@ -22,7 +33,7 @@
|
|
|
22
33
|
<span class="label-text-alt truncate text-error">{error}</span>
|
|
23
34
|
{/if}
|
|
24
35
|
</label>
|
|
25
|
-
<div class={tw('grid h-12 w-full', classes.slot)}>
|
|
26
|
-
|
|
36
|
+
<div class={tw('grid h-12 w-full text-base', classes.slot)}>
|
|
37
|
+
{@render children?.()}
|
|
27
38
|
</div>
|
|
28
|
-
</
|
|
39
|
+
</fieldset>
|
|
@@ -1,39 +1,18 @@
|
|
|
1
|
-
interface
|
|
2
|
-
new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
|
|
3
|
-
$$bindings?: Bindings;
|
|
4
|
-
} & Exports;
|
|
5
|
-
(internal: unknown, props: Props & {
|
|
6
|
-
$$events?: Events;
|
|
7
|
-
$$slots?: Slots;
|
|
8
|
-
}): Exports & {
|
|
9
|
-
$set?: any;
|
|
10
|
-
$on?: any;
|
|
11
|
-
};
|
|
12
|
-
z_$$bindings?: Bindings;
|
|
13
|
-
}
|
|
14
|
-
type $$__sveltets_2_PropsWithChildren<Props, Slots> = Props & (Slots extends {
|
|
15
|
-
default: any;
|
|
16
|
-
} ? Props extends Record<string, never> ? any : {
|
|
17
|
-
children?: any;
|
|
18
|
-
} : {});
|
|
19
|
-
declare const FieldContainer: $$__sveltets_2_IsomorphicComponent<$$__sveltets_2_PropsWithChildren<{
|
|
1
|
+
interface Props {
|
|
20
2
|
label?: string;
|
|
21
3
|
forId: string;
|
|
22
4
|
required?: boolean;
|
|
23
5
|
error?: string;
|
|
24
6
|
/**
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
7
|
+
* example usage for paginate
|
|
8
|
+
* classes={{ label: 'justify-end' }}
|
|
9
|
+
*/
|
|
10
|
+
classes?: {
|
|
28
11
|
label?: string;
|
|
29
12
|
slot?: string;
|
|
30
13
|
};
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
}, {
|
|
36
|
-
default: {};
|
|
37
|
-
}, {}, string>;
|
|
38
|
-
type FieldContainer = InstanceType<typeof FieldContainer>;
|
|
14
|
+
children?: import('svelte').Snippet;
|
|
15
|
+
}
|
|
16
|
+
declare const FieldContainer: import("svelte").Component<Props, {}, "">;
|
|
17
|
+
type FieldContainer = ReturnType<typeof FieldContainer>;
|
|
39
18
|
export default FieldContainer;
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
2
|
import { createEventDispatcher, onMount } from 'svelte'
|
|
3
3
|
|
|
4
|
-
import { scrollbar } from '../../internals/theme'
|
|
5
|
-
|
|
6
4
|
export let name: string | null = null
|
|
7
5
|
export let id = ''
|
|
8
6
|
export let rows = 4
|
|
@@ -50,10 +48,9 @@
|
|
|
50
48
|
use:focusNow
|
|
51
49
|
{...$$restProps}
|
|
52
50
|
class="shadow-neutral-focus md:rounded-xls
|
|
53
|
-
textarea
|
|
51
|
+
textarea flex h-max min-h-8
|
|
54
52
|
w-full items-center rounded-lg bg-transparent text-xs
|
|
55
|
-
shadow-sm md:text-sm lg:min-h-[2.5rem]
|
|
56
|
-
{scrollbar.thin}"
|
|
53
|
+
shadow-sm md:text-sm lg:min-h-[2.5rem]"
|
|
57
54
|
id={id || name || 'default-textarea-id'}
|
|
58
55
|
{name}
|
|
59
56
|
{placeholder}
|
|
@@ -97,6 +97,8 @@
|
|
|
97
97
|
const list = (v ?? []).map((c) => c.value.id)
|
|
98
98
|
|
|
99
99
|
// Create a map to count occurrences of each element
|
|
100
|
+
// TODO: switch to: Use SvelteMap instead svelte/prefer-svelte-reactivity
|
|
101
|
+
// eslint-disable-next-line
|
|
100
102
|
const countMap: Map<string, number> = new Map()
|
|
101
103
|
|
|
102
104
|
list.forEach((item) => {
|
|
@@ -174,7 +176,7 @@
|
|
|
174
176
|
$: calcFilteredItems($touchedInput, $inputValue, values)
|
|
175
177
|
</script>
|
|
176
178
|
|
|
177
|
-
<div class="input
|
|
179
|
+
<div class="input flex min-w-0 items-center">
|
|
178
180
|
<div class="relative">
|
|
179
181
|
{#if iconToDisplayInInput($localSelected)}
|
|
180
182
|
{@const ico = iconToDisplayInInput($localSelected)}
|
|
@@ -186,7 +188,7 @@
|
|
|
186
188
|
<input
|
|
187
189
|
{...$input}
|
|
188
190
|
use:$input.action
|
|
189
|
-
class="-
|
|
191
|
+
class="-mr-5 -ml-8 h-full min-w-0 flex-grow bg-transparent px-10"
|
|
190
192
|
{placeholder}
|
|
191
193
|
/>
|
|
192
194
|
<div class="pointer-events-none relative right-0 flex gap-2">
|
|
@@ -218,9 +220,9 @@
|
|
|
218
220
|
use:$option.action
|
|
219
221
|
class="relative flex cursor-pointer scroll-my-2 items-center rounded-md px-1
|
|
220
222
|
py-2
|
|
223
|
+
data-[disabled]:opacity-50
|
|
221
224
|
data-[highlighted]:bg-primary
|
|
222
|
-
|
|
223
|
-
data-[disabled]:opacity-50"
|
|
225
|
+
data-[highlighted]:text-primary-content"
|
|
224
226
|
>
|
|
225
227
|
{#if isChecked($localSelected, item)}
|
|
226
228
|
<Icon data={LibIcon_Check} class="w-6"></Icon>
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import Svelecte from 'svelecte'
|
|
3
|
+
|
|
4
|
+
import { LibIcon_Search, type BaseItem } from '../../../internals'
|
|
5
|
+
import Icon from '../../Icon.svelte'
|
|
6
|
+
|
|
7
|
+
interface Props {
|
|
8
|
+
value?: string | undefined
|
|
9
|
+
clearable?: boolean
|
|
10
|
+
items?: BaseItem[] | undefined
|
|
11
|
+
placeholder?: string | undefined
|
|
12
|
+
|
|
13
|
+
onChange?: (value: string | undefined) => void
|
|
14
|
+
|
|
15
|
+
multiple?: boolean
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
let {
|
|
19
|
+
value = $bindable(undefined),
|
|
20
|
+
clearable = false,
|
|
21
|
+
items = [],
|
|
22
|
+
placeholder = '',
|
|
23
|
+
multiple = false,
|
|
24
|
+
onChange,
|
|
25
|
+
}: Props = $props()
|
|
26
|
+
</script>
|
|
27
|
+
|
|
28
|
+
<Svelecte
|
|
29
|
+
i18n={{
|
|
30
|
+
nomatch: 'Aucun résultat',
|
|
31
|
+
}}
|
|
32
|
+
options={items}
|
|
33
|
+
bind:value
|
|
34
|
+
{clearable}
|
|
35
|
+
{placeholder}
|
|
36
|
+
{multiple}
|
|
37
|
+
{onChange}
|
|
38
|
+
>
|
|
39
|
+
{#snippet prepend()}
|
|
40
|
+
{value}
|
|
41
|
+
<Icon data={LibIcon_Search} class="mr-2 ml-3"></Icon>
|
|
42
|
+
{/snippet}
|
|
43
|
+
|
|
44
|
+
{#snippet option(opt, inputValue)}
|
|
45
|
+
{@const item = opt as BaseItem}
|
|
46
|
+
<div class="flex items-center">
|
|
47
|
+
<Icon data={item.icon?.data} class="mr-2"></Icon>
|
|
48
|
+
{item.caption}
|
|
49
|
+
</div>
|
|
50
|
+
{/snippet}
|
|
51
|
+
</Svelecte>
|
|
52
|
+
|
|
53
|
+
<style>
|
|
54
|
+
:global(.svelecte) {
|
|
55
|
+
--sv-min-height: 3rem;
|
|
56
|
+
--sv-bg: var(--color-base-100, #fff);
|
|
57
|
+
--sv-disabled-bg: #eee;
|
|
58
|
+
--sv-border: 1px solid #414a54;
|
|
59
|
+
--sv-border-radius: var(--radius-field, 4px);
|
|
60
|
+
--sv-general-padding: 4px;
|
|
61
|
+
--sv-control-bg: var(--sv-bg);
|
|
62
|
+
--sv-item-wrap-padding: 3px 3px 3px 6px;
|
|
63
|
+
--sv-item-selected-bg: var(--color-base-200, #efefef);
|
|
64
|
+
--sv-item-btn-color: var(--color-base-content, #000);
|
|
65
|
+
--sv-item-btn-color-hover: #777; /* same as icon-color-hover in default theme */
|
|
66
|
+
--sv-item-btn-bg: var(--color-base-100, #efefef);
|
|
67
|
+
--sv-item-btn-bg-hover: var(--color-base-200, #ddd);
|
|
68
|
+
--sv-icon-color: var(--color-base-content, #efefef);
|
|
69
|
+
--sv-icon-color-hover: #777;
|
|
70
|
+
--sv-icon-bg: transparent;
|
|
71
|
+
--sv-icon-size: 20px;
|
|
72
|
+
--sv-separator-bg: var(--color-neutral-content, #ccc);
|
|
73
|
+
--sv-btn-border: 0;
|
|
74
|
+
--sv-placeholder-color: #ccccd6;
|
|
75
|
+
--sv-dropdown-bg: var(--sv-bg);
|
|
76
|
+
--sv-dropdown-offset: 1px;
|
|
77
|
+
--sv-dropdown-border: 1px solid rgba(0, 0, 0, 0.15);
|
|
78
|
+
--sv-dropdown-width: auto;
|
|
79
|
+
--sv-dropdown-shadow: 0 6px 12px #0000002d;
|
|
80
|
+
--sv-dropdown-height: 320px;
|
|
81
|
+
--sv-dropdown-active-bg: var(--color-primary, #f2f5f8);
|
|
82
|
+
--sv-dropdown-selected-bg: var(--color-neutral);
|
|
83
|
+
--sv-create-kbd-border: var(--border, 1px) solid var(--color-base-200, #efefef);
|
|
84
|
+
--sv-create-kbd-bg: var(--color-base-100, #fff);
|
|
85
|
+
--sv-create-disabled-bg: var(--color-error, #fcbaba);
|
|
86
|
+
--sv-loader-border: var(--border, 2px) solid var(--color-base-200, #ccc);
|
|
87
|
+
}
|
|
88
|
+
</style>
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { type BaseItem } from '../../../internals';
|
|
2
|
+
interface Props {
|
|
3
|
+
value?: string | undefined;
|
|
4
|
+
clearable?: boolean;
|
|
5
|
+
items?: BaseItem[] | undefined;
|
|
6
|
+
placeholder?: string | undefined;
|
|
7
|
+
onChange?: (value: string | undefined) => void;
|
|
8
|
+
multiple?: boolean;
|
|
9
|
+
}
|
|
10
|
+
declare const Select2: import("svelte").Component<Props, {}, "value">;
|
|
11
|
+
type Select2 = ReturnType<typeof Select2>;
|
|
12
|
+
export default Select2;
|
|
@@ -165,7 +165,7 @@
|
|
|
165
165
|
$: calcFilteredItems($touchedInput, $inputValue, value)
|
|
166
166
|
</script>
|
|
167
167
|
|
|
168
|
-
<div class="input
|
|
168
|
+
<div class="input flex w-full min-w-0 items-center {disabled && 'opacity-40'}">
|
|
169
169
|
<div class="relative">
|
|
170
170
|
{#if $localSelected?.value?.icon?.data}
|
|
171
171
|
<Icon
|
|
@@ -182,7 +182,7 @@
|
|
|
182
182
|
<input
|
|
183
183
|
{...$input}
|
|
184
184
|
use:$input.action
|
|
185
|
-
class="-
|
|
185
|
+
class="-mr-5 -ml-8 h-full min-w-0 flex-grow bg-transparent px-10"
|
|
186
186
|
{placeholder}
|
|
187
187
|
use:focusNow
|
|
188
188
|
/>
|
|
@@ -215,9 +215,9 @@
|
|
|
215
215
|
use:$option.action
|
|
216
216
|
class="relative flex cursor-pointer scroll-my-2 items-center rounded-md px-1
|
|
217
217
|
py-2
|
|
218
|
+
data-[disabled]:opacity-50
|
|
218
219
|
data-[highlighted]:bg-primary
|
|
219
|
-
|
|
220
|
-
data-[disabled]:opacity-50"
|
|
220
|
+
data-[highlighted]:text-primary-content"
|
|
221
221
|
>
|
|
222
222
|
{#if $localSelected?.value?.id === item.id}
|
|
223
223
|
<Icon data={LibIcon_Check} class="w-6"></Icon>
|
|
@@ -243,7 +243,7 @@
|
|
|
243
243
|
<div class="p-4">
|
|
244
244
|
<Button
|
|
245
245
|
class="w-full"
|
|
246
|
-
|
|
246
|
+
onclick={async () => {
|
|
247
247
|
createRequest?.({ input: $inputValue, id })
|
|
248
248
|
$open = false
|
|
249
249
|
}}
|
package/esm/ui/link/Link.svelte
CHANGED
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
</script>
|
|
13
13
|
|
|
14
14
|
<a
|
|
15
|
-
class={`${daisy[kind]}
|
|
15
|
+
class={`${daisy[kind]} inline-block link text-left no-underline hover:underline ${className ?? ''}`}
|
|
16
16
|
{href}
|
|
17
17
|
rel="noopener"
|
|
18
18
|
{target}
|
|
@@ -4,9 +4,13 @@
|
|
|
4
4
|
import Tooltip from '../Tooltip.svelte'
|
|
5
5
|
import Link from './Link.svelte'
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
7
|
+
interface Props {
|
|
8
|
+
item: BaseItemLight | undefined
|
|
9
|
+
noIcon?: boolean
|
|
10
|
+
captionSubStyle?: 'under' | 'inline' | 'none'
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
let { item, noIcon = false, captionSubStyle = 'under' }: Props = $props()
|
|
10
14
|
|
|
11
15
|
const hasSomethingToDisplay = (item: BaseItemLight) => {
|
|
12
16
|
if (item.href) {
|
|
@@ -39,7 +43,7 @@
|
|
|
39
43
|
<div>
|
|
40
44
|
<Link href={item.href}>{item.caption}</Link>
|
|
41
45
|
{#if item.captionSub && captionSubStyle === 'inline'}
|
|
42
|
-
<span class="text-xs
|
|
46
|
+
<span class="text-xs text-base-content/70 italic">{item.captionSub}</span>
|
|
43
47
|
{/if}
|
|
44
48
|
</div>
|
|
45
49
|
{:else}
|
|
@@ -51,7 +55,7 @@
|
|
|
51
55
|
</span>
|
|
52
56
|
{/if}
|
|
53
57
|
{#if item.captionSub && captionSubStyle === 'under'}
|
|
54
|
-
<span class="text-xs
|
|
58
|
+
<span class="text-xs text-base-content/70 italic">{item.captionSub}</span>
|
|
55
59
|
{/if}
|
|
56
60
|
</div>
|
|
57
61
|
{/if}
|
|
@@ -1,23 +1,9 @@
|
|
|
1
1
|
import { type BaseItemLight } from '../../internals';
|
|
2
|
-
interface
|
|
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;
|
|
12
|
-
};
|
|
13
|
-
z_$$bindings?: Bindings;
|
|
14
|
-
}
|
|
15
|
-
declare const LinkPlus: $$__sveltets_2_IsomorphicComponent<{
|
|
2
|
+
interface Props {
|
|
16
3
|
item: BaseItemLight | undefined;
|
|
17
4
|
noIcon?: boolean;
|
|
18
|
-
captionSubStyle?:
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
type LinkPlus = InstanceType<typeof LinkPlus>;
|
|
5
|
+
captionSubStyle?: 'under' | 'inline' | 'none';
|
|
6
|
+
}
|
|
7
|
+
declare const LinkPlus: import("svelte").Component<Props, {}, "">;
|
|
8
|
+
type LinkPlus = ReturnType<typeof LinkPlus>;
|
|
23
9
|
export default LinkPlus;
|
package/esm/virtual/Customer.js
CHANGED
|
@@ -5,7 +5,6 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
5
5
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
6
|
};
|
|
7
7
|
import { Entity, Fields } from 'remult';
|
|
8
|
-
import { FF_Fields } from '../internals/FF_Fields';
|
|
9
8
|
let Customer = class Customer {
|
|
10
9
|
id;
|
|
11
10
|
name;
|
|
@@ -14,7 +13,7 @@ __decorate([
|
|
|
14
13
|
Fields.id()
|
|
15
14
|
], Customer.prototype, "id", void 0);
|
|
16
15
|
__decorate([
|
|
17
|
-
|
|
16
|
+
Fields.string({ required: true, caption: 'Nom de la société', placeholder: 'Dynamic Process' })
|
|
18
17
|
], Customer.prototype, "name", void 0);
|
|
19
18
|
Customer = __decorate([
|
|
20
19
|
Entity('customers', {
|
package/esm/virtual/UIEntity.js
CHANGED
|
@@ -5,7 +5,6 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
5
5
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
6
|
};
|
|
7
7
|
import { Entity, Field, Fields } from 'remult';
|
|
8
|
-
import { FF_Fields } from '../internals/FF_Fields.js';
|
|
9
8
|
import { StateDemoEnum } from './StateDemoEnum.js';
|
|
10
9
|
let UIEntity = class UIEntity {
|
|
11
10
|
id;
|
|
@@ -39,19 +38,24 @@ __decorate([
|
|
|
39
38
|
Fields.updatedAt()
|
|
40
39
|
], UIEntity.prototype, "updatedAt", void 0);
|
|
41
40
|
__decorate([
|
|
42
|
-
|
|
41
|
+
Fields.string({
|
|
42
|
+
required: true,
|
|
43
|
+
caption: "Nom de l'utilisateur",
|
|
44
|
+
placeholder: 'Jean-Yves',
|
|
45
|
+
suffix: 'SUF!',
|
|
46
|
+
})
|
|
43
47
|
], UIEntity.prototype, "username", void 0);
|
|
44
48
|
__decorate([
|
|
45
49
|
Fields.string({ caption: 'E Mail', inputType: 'email', placeholder: 'prénom.nom@se.com' })
|
|
46
50
|
], UIEntity.prototype, "email", void 0);
|
|
47
51
|
__decorate([
|
|
48
|
-
|
|
52
|
+
Fields.string({
|
|
49
53
|
caption: 'Mot de passe',
|
|
50
54
|
inputType: 'password',
|
|
51
55
|
placeholder: '********',
|
|
52
56
|
includeInApi: false,
|
|
53
57
|
minLength: 6,
|
|
54
|
-
|
|
58
|
+
required: true,
|
|
55
59
|
})
|
|
56
60
|
], UIEntity.prototype, "password", void 0);
|
|
57
61
|
__decorate([
|
|
@@ -73,7 +77,7 @@ __decorate([
|
|
|
73
77
|
Fields.date({ allowNull: true, allowApiUpdate: false })
|
|
74
78
|
], UIEntity.prototype, "arrivalDate", void 0);
|
|
75
79
|
__decorate([
|
|
76
|
-
|
|
80
|
+
Fields.dateOnly({ allowNull: true })
|
|
77
81
|
], UIEntity.prototype, "arrivalDateOnly", void 0);
|
|
78
82
|
UIEntity = __decorate([
|
|
79
83
|
Entity('uiEntities', {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "firstly",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.1",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Firstly, an opinionated Remult setup!",
|
|
6
6
|
"funding": "https://github.com/sponsors/jycouet",
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
},
|
|
17
17
|
"peerDependencies": {
|
|
18
18
|
"@sveltejs/kit": ">=1.0.0 <3.0.0",
|
|
19
|
-
"remult": ">=3.
|
|
19
|
+
"remult": ">=3.3.2",
|
|
20
20
|
"svelte": ">=5"
|
|
21
21
|
},
|
|
22
22
|
"peerDependenciesMeta": {
|
|
@@ -40,18 +40,17 @@
|
|
|
40
40
|
"@oslojs/crypto": "1.0.1",
|
|
41
41
|
"@oslojs/encoding": "1.1.0",
|
|
42
42
|
"@oslojs/otp": "1.1.0",
|
|
43
|
-
"@types/nodemailer": "
|
|
43
|
+
"@types/nodemailer": "7.0.2",
|
|
44
44
|
"arctic": "3.7.0",
|
|
45
45
|
"bcryptjs": "3.0.2",
|
|
46
46
|
"clsx": "2.1.1",
|
|
47
|
-
"cron": "4.
|
|
48
|
-
"daisyui": "
|
|
47
|
+
"cron": "4.4.0",
|
|
48
|
+
"daisyui": "5.5.3",
|
|
49
49
|
"esm-env": "1.2.2",
|
|
50
|
-
"mjml": "4.15.3",
|
|
51
50
|
"nodemailer": "7.0.4",
|
|
52
|
-
"
|
|
51
|
+
"svelecte": "5.3.0",
|
|
53
52
|
"tailwind-merge": "2.6.0",
|
|
54
|
-
"tailwindcss": "
|
|
53
|
+
"tailwindcss": "4.1.14",
|
|
55
54
|
"vite-plugin-kit-routes": "1.0.2",
|
|
56
55
|
"vite-plugin-stripper": "0.9.2"
|
|
57
56
|
},
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{aa as e,U as o}from"./index-AoBb9Ds5.js";function f(a){var t=e("Hello from admin");o(a,t)}export{f as default};
|