@humandialog/forms.svelte 0.5.7 → 0.5.9
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/components/kanban/internal/kanban.card.svelte +3 -3
- package/components/kanban/internal/kanban.props.svelte +2 -1
- package/components/kanban/kanban.svelte +7 -0
- package/components/kanban/kanban.svelte.d.ts +2 -0
- package/components/kanban/kanban.tags.svelte +4 -2
- package/components/kanban/kanban.tags.svelte.d.ts +2 -1
- package/components/list/List.d.ts +2 -1
- package/components/list/List.js +2 -1
- package/components/list/internal/list.element.svelte +13 -2
- package/components/list/internal/list.element.svelte.d.ts +2 -0
- package/components/list/list.svelte +15 -2
- package/components/list/list.svelte.d.ts +4 -4
- package/components/menu.d.ts +2 -1
- package/components/menu.js +1 -0
- package/components/tag.colors.svelte +92 -0
- package/components/tag.colors.svelte.d.ts +17 -0
- package/components/tag.svelte +43 -13
- package/components/tag.svelte.d.ts +1 -0
- package/components/tags.svelte +27 -4
- package/components/tags.svelte.d.ts +2 -1
- package/package.json +2 -1
- package/page.svelte +1 -1
|
@@ -53,8 +53,8 @@ export function _scrollViewToCard() {
|
|
|
53
53
|
card?.scrollIntoView(
|
|
54
54
|
{
|
|
55
55
|
behavior: "smooth",
|
|
56
|
-
block: "
|
|
57
|
-
inline: "
|
|
56
|
+
block: "nearest",
|
|
57
|
+
inline: "nearest"
|
|
58
58
|
}
|
|
59
59
|
);
|
|
60
60
|
}
|
|
@@ -131,7 +131,7 @@ export async function editProperty(field) {
|
|
|
131
131
|
|
|
132
132
|
<!-- svelte-ignore a11y-click-events-have-key-events -->
|
|
133
133
|
|
|
134
|
-
<li class="mx-2 pt-2 pb-4 px-1 rounded-md border border-transparent {selectedClass} {focusedClass}"
|
|
134
|
+
<li class="mx-2 pt-2 pb-4 px-1 rounded-md border border-transparent {selectedClass} {focusedClass} scroll-mt-[50px] sm:scroll-mt-[40px]"
|
|
135
135
|
class:cursor-pointer={!isCardActive}
|
|
136
136
|
on:click={activate}
|
|
137
137
|
use:selectable={item}
|
|
@@ -131,7 +131,8 @@ async function editTags(field, propIdx) {
|
|
|
131
131
|
getGlobalTags={prop.getAllTags}
|
|
132
132
|
s="xs"
|
|
133
133
|
onSelect={prop.onSelect}
|
|
134
|
-
|
|
134
|
+
onUpdateAllTags={prop.onUpdateAllTags}
|
|
135
|
+
canChangeColor={prop.canChangeColor}
|
|
135
136
|
bind:this={propElements[idx]}
|
|
136
137
|
/>
|
|
137
138
|
{/if}
|
|
@@ -150,6 +150,13 @@ afterUpdate(() => {
|
|
|
150
150
|
}
|
|
151
151
|
}
|
|
152
152
|
});
|
|
153
|
+
export function scrollViewToCard(item) {
|
|
154
|
+
columns.forEach((c2) => {
|
|
155
|
+
const card = c2.findCardByItem(item);
|
|
156
|
+
if (card)
|
|
157
|
+
card._scrollViewToCard();
|
|
158
|
+
});
|
|
159
|
+
}
|
|
153
160
|
export function moveUp(item) {
|
|
154
161
|
const columnIdx = getColumnIdx(item);
|
|
155
162
|
let allItems = definition.getItems();
|
|
@@ -13,6 +13,7 @@ declare const __propDef: {
|
|
|
13
13
|
reload?: ((data: object | object[], selectElement?: number) => Promise<void>) | undefined;
|
|
14
14
|
getColumnIdx?: ((item: any) => number) | undefined;
|
|
15
15
|
edit?: ((item: object, field: string) => void) | undefined;
|
|
16
|
+
scrollViewToCard?: ((item: any) => void) | undefined;
|
|
16
17
|
moveUp?: ((item: object) => void) | undefined;
|
|
17
18
|
moveDown?: ((item: object) => void) | undefined;
|
|
18
19
|
replace?: ((item: any, toColumnIdx: any, afterElement: any) => void) | undefined;
|
|
@@ -51,6 +52,7 @@ export default class Kanban extends SvelteComponentTyped<KanbanProps, KanbanEven
|
|
|
51
52
|
get reload(): (data: object | object[], selectElement?: number) => Promise<void>;
|
|
52
53
|
get getColumnIdx(): (item: any) => number;
|
|
53
54
|
get edit(): (item: object, field: string) => void;
|
|
55
|
+
get scrollViewToCard(): (item: any) => void;
|
|
54
56
|
get moveUp(): (item: object) => void;
|
|
55
57
|
get moveDown(): (item: object) => void;
|
|
56
58
|
get replace(): (item: any, toColumnIdx: any, afterElement: any) => void;
|
|
@@ -4,8 +4,9 @@ import { rList_property_tags } from "../list/List";
|
|
|
4
4
|
export let name = "";
|
|
5
5
|
export let a = "";
|
|
6
6
|
export let getAllTags = void 0;
|
|
7
|
-
export let
|
|
7
|
+
export let onUpdateAllTags = void 0;
|
|
8
8
|
export let onSelect = void 0;
|
|
9
|
+
export let canChangeColor = false;
|
|
9
10
|
export let top = false;
|
|
10
11
|
export let middle = true;
|
|
11
12
|
export let bottom = false;
|
|
@@ -22,7 +23,8 @@ if (!a && name) {
|
|
|
22
23
|
tagsProperty.name = name;
|
|
23
24
|
}
|
|
24
25
|
tagsProperty.onSelect = onSelect;
|
|
25
|
-
tagsProperty.
|
|
26
|
+
tagsProperty.onUpdateAllTags = onUpdateAllTags;
|
|
27
|
+
tagsProperty.canChangeColor = canChangeColor;
|
|
26
28
|
tagsProperty.getAllTags = getAllTags;
|
|
27
29
|
if (top)
|
|
28
30
|
tagsProperty.position = KanbanCardTop;
|
|
@@ -4,8 +4,9 @@ declare const __propDef: {
|
|
|
4
4
|
name?: string | undefined;
|
|
5
5
|
a?: string | undefined;
|
|
6
6
|
getAllTags?: Function | undefined;
|
|
7
|
-
|
|
7
|
+
onUpdateAllTags?: Function | undefined;
|
|
8
8
|
onSelect?: Function | undefined;
|
|
9
|
+
canChangeColor?: boolean | undefined;
|
|
9
10
|
top?: boolean | undefined;
|
|
10
11
|
middle?: boolean | undefined;
|
|
11
12
|
bottom?: boolean | undefined;
|
|
@@ -22,8 +22,9 @@ export declare class rList_property_combo extends rList_property {
|
|
|
22
22
|
}
|
|
23
23
|
export declare class rList_property_tags extends rList_property {
|
|
24
24
|
constructor();
|
|
25
|
-
|
|
25
|
+
canChangeColor: boolean;
|
|
26
26
|
getAllTags: Function | undefined;
|
|
27
|
+
onUpdateAllTags: Function | undefined;
|
|
27
28
|
}
|
|
28
29
|
export declare class rList_definition {
|
|
29
30
|
title: string;
|
package/components/list/List.js
CHANGED
|
@@ -30,8 +30,9 @@ export class rList_property_tags extends rList_property {
|
|
|
30
30
|
constructor() {
|
|
31
31
|
super(rList_property_type.Tags);
|
|
32
32
|
}
|
|
33
|
-
|
|
33
|
+
canChangeColor = false;
|
|
34
34
|
getAllTags = undefined;
|
|
35
|
+
onUpdateAllTags = undefined;
|
|
35
36
|
}
|
|
36
37
|
export class rList_definition {
|
|
37
38
|
title = '';
|
|
@@ -189,16 +189,27 @@ function setSelectionAtEnd(element) {
|
|
|
189
189
|
sel.removeAllRanges();
|
|
190
190
|
sel.addRange(range);
|
|
191
191
|
}
|
|
192
|
+
let rootElement;
|
|
193
|
+
export function scrollToView() {
|
|
194
|
+
rootElement.scrollIntoView(
|
|
195
|
+
{
|
|
196
|
+
behavior: "smooth",
|
|
197
|
+
block: "nearest",
|
|
198
|
+
inline: "nearest"
|
|
199
|
+
}
|
|
200
|
+
);
|
|
201
|
+
}
|
|
192
202
|
</script>
|
|
193
203
|
|
|
194
204
|
<!-- svelte-ignore a11y-click-events-have-key-events -->
|
|
195
205
|
{#if item}
|
|
196
206
|
{@const element_title = item[title]}
|
|
197
207
|
|
|
198
|
-
<section class="mt-3 flex flex-row my-0 w-full text-sm text-stone-700 dark:text-stone-300 cursor-default rounded-md border border-transparent {selected_class} {focused_class}"
|
|
208
|
+
<section class="mt-3 flex flex-row my-0 w-full text-sm text-stone-700 dark:text-stone-300 cursor-default rounded-md border border-transparent {selected_class} {focused_class} scroll-mt-[50px] sm:scroll-mt-[40px]"
|
|
199
209
|
on:contextmenu={on_contextmenu}
|
|
200
210
|
role="menu"
|
|
201
|
-
tabindex="-1"
|
|
211
|
+
tabindex="-1"
|
|
212
|
+
bind:this={rootElement}>
|
|
202
213
|
|
|
203
214
|
<slot name="left" element={item}/>
|
|
204
215
|
|
|
@@ -9,6 +9,7 @@ declare const __propDef: {
|
|
|
9
9
|
contextMenu: any;
|
|
10
10
|
activate?: (() => void) | undefined;
|
|
11
11
|
editProperty?: ((field: string) => void) | undefined;
|
|
12
|
+
scrollToView?: (() => void) | undefined;
|
|
12
13
|
};
|
|
13
14
|
events: {
|
|
14
15
|
[evt: string]: CustomEvent<any>;
|
|
@@ -25,5 +26,6 @@ export type ListSlots = typeof __propDef.slots;
|
|
|
25
26
|
export default class List extends SvelteComponentTyped<ListProps, ListEvents, ListSlots> {
|
|
26
27
|
get activate(): () => void;
|
|
27
28
|
get editProperty(): (field: string) => void;
|
|
29
|
+
get scrollToView(): () => void;
|
|
28
30
|
}
|
|
29
31
|
export {};
|
|
@@ -135,7 +135,7 @@ export function reload(data, selectElement = KEEP_SELECTION) {
|
|
|
135
135
|
if (!activate_after_dom_update)
|
|
136
136
|
activateItem("props", null, []);
|
|
137
137
|
}
|
|
138
|
-
export function moveUp(element) {
|
|
138
|
+
export async function moveUp(element) {
|
|
139
139
|
if (!orderAttrib)
|
|
140
140
|
return;
|
|
141
141
|
let prev = getPrev(items, element);
|
|
@@ -143,11 +143,13 @@ export function moveUp(element) {
|
|
|
143
143
|
return;
|
|
144
144
|
items = swapElements(items, element, prev);
|
|
145
145
|
[element[orderAttrib], prev[orderAttrib]] = [prev[orderAttrib], element[orderAttrib]];
|
|
146
|
+
await tick();
|
|
147
|
+
scrollToSelectedElement();
|
|
146
148
|
informModification(element, orderAttrib);
|
|
147
149
|
informModification(prev, orderAttrib);
|
|
148
150
|
pushChanges();
|
|
149
151
|
}
|
|
150
|
-
export function moveDown(element) {
|
|
152
|
+
export async function moveDown(element) {
|
|
151
153
|
if (!orderAttrib)
|
|
152
154
|
return;
|
|
153
155
|
let next = getNext(items, element);
|
|
@@ -155,6 +157,8 @@ export function moveDown(element) {
|
|
|
155
157
|
return;
|
|
156
158
|
items = swapElements(items, element, next);
|
|
157
159
|
[element[orderAttrib], next[orderAttrib]] = [next[orderAttrib], element[orderAttrib]];
|
|
160
|
+
await tick();
|
|
161
|
+
scrollToSelectedElement();
|
|
158
162
|
informModification(element, orderAttrib);
|
|
159
163
|
informModification(next, orderAttrib);
|
|
160
164
|
pushChanges();
|
|
@@ -182,6 +186,15 @@ export async function addRowAfter(after = null) {
|
|
|
182
186
|
}
|
|
183
187
|
});
|
|
184
188
|
}
|
|
189
|
+
function scrollToSelectedElement() {
|
|
190
|
+
const activeItem = getActive("props");
|
|
191
|
+
if (!activeItem)
|
|
192
|
+
return;
|
|
193
|
+
const activeItemKey = getItemKey(activeItem);
|
|
194
|
+
const activeIdx = items?.findIndex((i) => getItemKey(i) == activeItemKey);
|
|
195
|
+
if (activeIdx >= 0)
|
|
196
|
+
rows[activeIdx].scrollToView();
|
|
197
|
+
}
|
|
185
198
|
export function remove(element) {
|
|
186
199
|
let removing_idx = items?.findIndex((e) => e == element);
|
|
187
200
|
if (removing_idx < 0)
|
|
@@ -21,8 +21,8 @@ declare const __propDef: {
|
|
|
21
21
|
MIN_ORDER?: 0 | undefined;
|
|
22
22
|
rereder?: (() => void) | undefined;
|
|
23
23
|
reload?: ((data: object | object[], selectElement?: number) => void) | undefined;
|
|
24
|
-
moveUp?: ((element: object) => void) | undefined;
|
|
25
|
-
moveDown?: ((element: object) => void) | undefined;
|
|
24
|
+
moveUp?: ((element: object) => Promise<void>) | undefined;
|
|
25
|
+
moveDown?: ((element: object) => Promise<void>) | undefined;
|
|
26
26
|
addRowAfter?: ((after?: object | null) => Promise<void>) | undefined;
|
|
27
27
|
remove?: ((element: object) => void) | undefined;
|
|
28
28
|
edit?: ((element: object, property_name: string) => void) | undefined;
|
|
@@ -50,8 +50,8 @@ export default class List extends SvelteComponentTyped<ListProps, ListEvents, Li
|
|
|
50
50
|
get MIN_ORDER(): 0;
|
|
51
51
|
get rereder(): () => void;
|
|
52
52
|
get reload(): (data: object | object[], selectElement?: number) => void;
|
|
53
|
-
get moveUp(): (element: object) => void
|
|
54
|
-
get moveDown(): (element: object) => void
|
|
53
|
+
get moveUp(): (element: object) => Promise<void>;
|
|
54
|
+
get moveDown(): (element: object) => Promise<void>;
|
|
55
55
|
get addRowAfter(): (after?: object | null) => Promise<void>;
|
|
56
56
|
get remove(): (element: object) => void;
|
|
57
57
|
get edit(): (element: object, property_name: string) => void;
|
package/components/menu.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
+
import Floating_container from './Floating_container.svelte';
|
|
1
2
|
export declare function showMenu(around: DOMRect | DOMPoint, operations: any): void;
|
|
2
3
|
export declare function hideWholeContextMenu(): void;
|
|
3
|
-
export declare function showFloatingToolbar(around: DOMRect | DOMPoint, toolbar: any, props?: {}):
|
|
4
|
+
export declare function showFloatingToolbar(around: DOMRect | DOMPoint, toolbar: any, props?: {}): Floating_container | null;
|
|
4
5
|
export declare function showGridMenu(around: DOMRect | DOMPoint, operations: any): void;
|
package/components/menu.js
CHANGED
|
@@ -50,6 +50,7 @@ export function showFloatingToolbar(around, toolbar, props = {}) {
|
|
|
50
50
|
}
|
|
51
51
|
else
|
|
52
52
|
console.error('what now?');
|
|
53
|
+
return toolbar_component;
|
|
53
54
|
}
|
|
54
55
|
export function showGridMenu(around, operations) {
|
|
55
56
|
showFloatingToolbar(around, Grid, { operations: operations });
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
<script>export let brightntess = "medium";
|
|
2
|
+
export let onSelect;
|
|
3
|
+
$:
|
|
4
|
+
colors = getColors(brightntess);
|
|
5
|
+
function getColors(brightntess2) {
|
|
6
|
+
switch (brightntess2) {
|
|
7
|
+
case "light":
|
|
8
|
+
return [
|
|
9
|
+
"bg-red-300",
|
|
10
|
+
"bg-orange-300",
|
|
11
|
+
"bg-amber-300",
|
|
12
|
+
"bg-yellow-300",
|
|
13
|
+
"bg-lime-300",
|
|
14
|
+
"bg-green-300",
|
|
15
|
+
"bg-indigo-300",
|
|
16
|
+
"bg-blue-300",
|
|
17
|
+
"bg-sky-300",
|
|
18
|
+
"bg-cyan-300",
|
|
19
|
+
"bg-teal-300",
|
|
20
|
+
"bg-emerald-300",
|
|
21
|
+
"bg-violet-300",
|
|
22
|
+
"bg-purple-300",
|
|
23
|
+
"bg-fuchsia-300",
|
|
24
|
+
"bg-pink-300",
|
|
25
|
+
"bg-rose-300",
|
|
26
|
+
"bg-slate-300"
|
|
27
|
+
];
|
|
28
|
+
case "medium":
|
|
29
|
+
return [
|
|
30
|
+
"bg-red-600",
|
|
31
|
+
"bg-orange-600",
|
|
32
|
+
"bg-amber-600",
|
|
33
|
+
"bg-yellow-600",
|
|
34
|
+
"bg-lime-600",
|
|
35
|
+
"bg-green-600",
|
|
36
|
+
"bg-indigo-600",
|
|
37
|
+
"bg-blue-600",
|
|
38
|
+
"bg-sky-600",
|
|
39
|
+
"bg-cyan-600",
|
|
40
|
+
"bg-teal-600",
|
|
41
|
+
"bg-emerald-600",
|
|
42
|
+
"bg-violet-600",
|
|
43
|
+
"bg-purple-600",
|
|
44
|
+
"bg-fuchsia-600",
|
|
45
|
+
"bg-pink-600",
|
|
46
|
+
"bg-rose-600",
|
|
47
|
+
"bg-slate-600"
|
|
48
|
+
];
|
|
49
|
+
case "dark":
|
|
50
|
+
return [
|
|
51
|
+
"bg-red-800",
|
|
52
|
+
"bg-orange-800",
|
|
53
|
+
"bg-amber-800",
|
|
54
|
+
"bg-yellow-800",
|
|
55
|
+
"bg-lime-800",
|
|
56
|
+
"bg-green-800",
|
|
57
|
+
"bg-indigo-800",
|
|
58
|
+
"bg-blue-800",
|
|
59
|
+
"bg-sky-800",
|
|
60
|
+
"bg-cyan-800",
|
|
61
|
+
"bg-teal-800",
|
|
62
|
+
"bg-emerald-800",
|
|
63
|
+
"bg-violet-800",
|
|
64
|
+
"bg-purple-800",
|
|
65
|
+
"bg-fuchsia-800",
|
|
66
|
+
"bg-pink-800",
|
|
67
|
+
"bg-rose-800",
|
|
68
|
+
"bg-slate-800"
|
|
69
|
+
];
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
</script>
|
|
73
|
+
|
|
74
|
+
<menu class="grid grid-cols-6">
|
|
75
|
+
{#each colors as color, idx}
|
|
76
|
+
{@const isTL = idx == 0}
|
|
77
|
+
{@const isTR = idx == 5}
|
|
78
|
+
{@const isBL = idx == colors.length-6}
|
|
79
|
+
{@const isBR = idx == colors.length-1}
|
|
80
|
+
|
|
81
|
+
{@const borderTL = isTL ? "rounded-tl-lg": ""}
|
|
82
|
+
{@const borderTR = isTR ? "rounded-tr-lg": ""}
|
|
83
|
+
{@const borderBL = isBL ? "rounded-bl-lg": ""}
|
|
84
|
+
{@const borderBR = isBR ? "rounded-br-lg": ""}
|
|
85
|
+
|
|
86
|
+
<button class="{color} w-10 h-10 {borderTL} {borderTR} {borderBL} {borderBR}"
|
|
87
|
+
on:click={() => onSelect(color)}>
|
|
88
|
+
|
|
89
|
+
</button>
|
|
90
|
+
{/each}
|
|
91
|
+
|
|
92
|
+
</menu>
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { SvelteComponentTyped } from "svelte";
|
|
2
|
+
declare const __propDef: {
|
|
3
|
+
props: {
|
|
4
|
+
brightntess?: string | undefined;
|
|
5
|
+
onSelect: Function;
|
|
6
|
+
};
|
|
7
|
+
events: {
|
|
8
|
+
[evt: string]: CustomEvent<any>;
|
|
9
|
+
};
|
|
10
|
+
slots: {};
|
|
11
|
+
};
|
|
12
|
+
export type TagProps = typeof __propDef.props;
|
|
13
|
+
export type TagEvents = typeof __propDef.events;
|
|
14
|
+
export type TagSlots = typeof __propDef.slots;
|
|
15
|
+
export default class Tag extends SvelteComponentTyped<TagProps, TagEvents, TagSlots> {
|
|
16
|
+
}
|
|
17
|
+
export {};
|
package/components/tag.svelte
CHANGED
|
@@ -1,8 +1,20 @@
|
|
|
1
1
|
<script>import FaTimes from "svelte-icons/fa/FaTimes.svelte";
|
|
2
|
+
import { showFloatingToolbar } from "./menu";
|
|
3
|
+
import TagColors from "./tag.colors.svelte";
|
|
4
|
+
import { onMount } from "svelte";
|
|
2
5
|
export let name;
|
|
3
6
|
export let color;
|
|
4
7
|
export let onRemove = void 0;
|
|
8
|
+
export let onColor = void 0;
|
|
5
9
|
export let s = "sm";
|
|
10
|
+
onMount(() => {
|
|
11
|
+
if (onColor && rootElement) {
|
|
12
|
+
rootElement.addEventListener("click", showColorPicker);
|
|
13
|
+
rootElement.classList.add("cursor-pointer");
|
|
14
|
+
}
|
|
15
|
+
return () => {
|
|
16
|
+
};
|
|
17
|
+
});
|
|
6
18
|
let pr = onRemove ? "pr-1" : "pr-2";
|
|
7
19
|
let font;
|
|
8
20
|
let x_size;
|
|
@@ -20,21 +32,39 @@ switch (s) {
|
|
|
20
32
|
x_size = "ml-3 sm:ml-1 mt-0.5 sm:mt-1 w-3 sm:w-2 h-3 sm:h-2";
|
|
21
33
|
break;
|
|
22
34
|
}
|
|
35
|
+
let rootElement;
|
|
36
|
+
let colorPicker = null;
|
|
37
|
+
function showColorPicker(e) {
|
|
38
|
+
const rect = rootElement.getBoundingClientRect();
|
|
39
|
+
colorPicker = showFloatingToolbar(rect, TagColors, {
|
|
40
|
+
onSelect: onSelectColor
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
function onSelectColor(color2) {
|
|
44
|
+
onColor(name, color2);
|
|
45
|
+
colorPicker?.hide();
|
|
46
|
+
}
|
|
23
47
|
</script>
|
|
24
48
|
|
|
25
|
-
<div
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
49
|
+
<div
|
|
50
|
+
class="mt-1 pl-2 {pr} rounded text-white flex flex-row {color}"
|
|
51
|
+
|
|
52
|
+
bind:this={rootElement}>
|
|
53
|
+
<div class={font}>{name}</div>
|
|
54
|
+
{#if onRemove}
|
|
55
|
+
<div
|
|
56
|
+
class="no-print inline-block {x_size} hover:cursor-pointer"
|
|
57
|
+
on:click|stopPropagation={onRemove}>
|
|
58
|
+
<FaTimes />
|
|
59
|
+
</div>
|
|
60
|
+
{/if}
|
|
31
61
|
</div>
|
|
32
62
|
|
|
33
63
|
<style>
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
</style>
|
|
64
|
+
@media print {
|
|
65
|
+
.no-print,
|
|
66
|
+
.no-print * {
|
|
67
|
+
display: none !important;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
</style>
|
package/components/tags.svelte
CHANGED
|
@@ -12,7 +12,8 @@ export let a = "";
|
|
|
12
12
|
export let context = "";
|
|
13
13
|
export let typename = "";
|
|
14
14
|
export let onSelect = void 0;
|
|
15
|
-
export let
|
|
15
|
+
export let onUpdateAllTags = void 0;
|
|
16
|
+
export let canChangeColor = false;
|
|
16
17
|
export let compact = true;
|
|
17
18
|
export let inContext = "";
|
|
18
19
|
export let pushChangesImmediately = true;
|
|
@@ -110,7 +111,26 @@ function onNewTagCreated(key, name) {
|
|
|
110
111
|
globalTagsTable = decomposeTags(globalTags);
|
|
111
112
|
tagsTable = decomposeTags(tags, globalTagsTable);
|
|
112
113
|
applyChange();
|
|
113
|
-
|
|
114
|
+
onUpdateAllTags(globalTags);
|
|
115
|
+
}
|
|
116
|
+
function onColorizeTag(name, color) {
|
|
117
|
+
let globalTags = getGlobalTags();
|
|
118
|
+
globalTagsTable = decomposeTags(globalTags);
|
|
119
|
+
const srcGlobalTag = globalTagsTable.find((i) => i.label == name);
|
|
120
|
+
srcGlobalTag.color = color;
|
|
121
|
+
tagsTable = decomposeTags(tags, globalTagsTable);
|
|
122
|
+
const srcTag = tagsTable.find((i) => i.label == name);
|
|
123
|
+
srcTag.color = color;
|
|
124
|
+
globalTags = "";
|
|
125
|
+
for (let i = 0; i < globalTagsTable.length; i++) {
|
|
126
|
+
const tag = globalTagsTable[i];
|
|
127
|
+
if (tag.color)
|
|
128
|
+
globalTags += `#${tag.label}:${tag.color} `;
|
|
129
|
+
else
|
|
130
|
+
globalTags += `#${tag.label} `;
|
|
131
|
+
}
|
|
132
|
+
applyChange();
|
|
133
|
+
onUpdateAllTags(globalTags);
|
|
114
134
|
}
|
|
115
135
|
function decomposeTags(tags2, referenceTable = void 0) {
|
|
116
136
|
let table = [];
|
|
@@ -135,8 +155,10 @@ function decomposeTags(tags2, referenceTable = void 0) {
|
|
|
135
155
|
color = referenceItem.color;
|
|
136
156
|
}
|
|
137
157
|
if (!color)
|
|
138
|
-
color = "
|
|
158
|
+
color = "bg-stone-400";
|
|
139
159
|
}
|
|
160
|
+
if (!color.startsWith("bg-"))
|
|
161
|
+
color = "bg-stone-400";
|
|
140
162
|
table.push({
|
|
141
163
|
label,
|
|
142
164
|
color
|
|
@@ -175,7 +197,8 @@ switch (s) {
|
|
|
175
197
|
{#each tagsTable as tag}
|
|
176
198
|
{#if isEditable}
|
|
177
199
|
<Tag name={tag.label} color={tag.color} {s}
|
|
178
|
-
onRemove={(e) => {onRemoveTag(tag.label)}}
|
|
200
|
+
onRemove={(e) => {onRemoveTag(tag.label)}}
|
|
201
|
+
onColor={canChangeColor ? onColorizeTag : null}/>
|
|
179
202
|
{:else}
|
|
180
203
|
<Tag name={tag.label} color={tag.color} {s}/>
|
|
181
204
|
{/if}
|
|
@@ -9,7 +9,8 @@ declare const __propDef: {
|
|
|
9
9
|
context?: string | undefined;
|
|
10
10
|
typename?: string | undefined;
|
|
11
11
|
onSelect?: any | undefined;
|
|
12
|
-
|
|
12
|
+
onUpdateAllTags?: any | undefined;
|
|
13
|
+
canChangeColor?: boolean | undefined;
|
|
13
14
|
compact?: boolean | undefined;
|
|
14
15
|
inContext?: string | undefined;
|
|
15
16
|
pushChangesImmediately?: boolean | undefined;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@humandialog/forms.svelte",
|
|
3
|
-
"version": "0.5.
|
|
3
|
+
"version": "0.5.9",
|
|
4
4
|
"description": "Basic Svelte UI components for Object Reef applications",
|
|
5
5
|
"devDependencies": {
|
|
6
6
|
"@playwright/test": "^1.28.1",
|
|
@@ -114,6 +114,7 @@
|
|
|
114
114
|
"./components/table/item.svelte": "./components/table/item.svelte",
|
|
115
115
|
"./components/table/table.svelte": "./components/table/table.svelte",
|
|
116
116
|
"./components/table/table": "./components/table/table.js",
|
|
117
|
+
"./components/tag.colors.svelte": "./components/tag.colors.svelte",
|
|
117
118
|
"./components/tag.svelte": "./components/tag.svelte",
|
|
118
119
|
"./components/tags.svelte": "./components/tags.svelte",
|
|
119
120
|
"./components/textarea.ltop.svelte": "./components/textarea.ltop.svelte",
|
package/page.svelte
CHANGED
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
export let focused_only = false;
|
|
19
19
|
export let inContext = '';
|
|
20
20
|
export let cl =
|
|
21
|
-
'w-full
|
|
21
|
+
'w-full flex flex-col bg-white dark:bg-stone-900 overflow-x-hidden py-1 px-1 border-0'; // border-green-500
|
|
22
22
|
export let c = '';
|
|
23
23
|
|
|
24
24
|
export let toolbarOperations = undefined;
|