@humandialog/forms.svelte 0.5.8 → 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.props.svelte +2 -1
- 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/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
|
@@ -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}
|
|
@@ -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 = '';
|
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;
|