@humandialog/forms.svelte 0.5.3 → 0.5.5
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/Fab.svelte +5 -3
- package/components/combo/combo.svelte +1 -1
- package/components/document/rich.edit.svelte +30 -7
- package/components/document/rich.edit.svelte.d.ts +2 -2
- package/components/kanban/Kanban.d.ts +24 -4
- package/components/kanban/Kanban.js +60 -4
- package/components/kanban/internal/kanban.card.svelte +148 -70
- package/components/kanban/internal/kanban.card.svelte.d.ts +2 -5
- package/components/kanban/internal/kanban.column.svelte +116 -72
- package/components/kanban/internal/kanban.column.svelte.d.ts +9 -9
- package/components/kanban/internal/kanban.inserter.svelte +1 -1
- package/components/kanban/internal/kanban.move.menu.svelte +11 -8
- package/components/kanban/internal/kanban.move.menu.svelte.d.ts +3 -0
- package/components/kanban/internal/kanban.props.svelte +140 -0
- package/components/kanban/internal/kanban.props.svelte.d.ts +19 -0
- package/components/kanban/kanban.callbacks.svelte +2 -8
- package/components/kanban/kanban.callbacks.svelte.d.ts +1 -4
- package/components/kanban/kanban.column.svelte +8 -8
- package/components/kanban/kanban.column.svelte.d.ts +4 -4
- package/components/kanban/kanban.combo.svelte +36 -0
- package/components/kanban/kanban.combo.svelte.d.ts +24 -0
- package/components/kanban/kanban.date.svelte +30 -0
- package/components/kanban/kanban.date.svelte.d.ts +21 -0
- package/components/kanban/kanban.source.svelte +25 -0
- package/components/kanban/kanban.source.svelte.d.ts +23 -0
- package/components/kanban/kanban.static.svelte +28 -0
- package/components/kanban/kanban.static.svelte.d.ts +20 -0
- package/components/kanban/kanban.summary.svelte +4 -0
- package/components/kanban/kanban.summary.svelte.d.ts +2 -0
- package/components/kanban/kanban.svelte +390 -55
- package/components/kanban/kanban.svelte.d.ts +32 -12
- package/components/kanban/kanban.tags.svelte +34 -0
- package/components/kanban/kanban.tags.svelte.d.ts +23 -0
- package/components/kanban/kanban.title.svelte +2 -0
- package/components/kanban/kanban.title.svelte.d.ts +1 -0
- package/components/list/List.d.ts +8 -1
- package/components/list/List.js +9 -0
- package/components/list/internal/list.element.summary.svelte +21 -7
- package/components/list/internal/list.element.summary.svelte.d.ts +1 -0
- package/components/list/internal/list.element.svelte +16 -11
- package/components/list/list.svelte +1 -1
- package/components/sidebar/sidebar.group.svelte +41 -3
- package/components/sidebar/sidebar.group.svelte.d.ts +6 -0
- package/components/sidebar/sidebar.list.svelte +3 -1
- package/components/tag.svelte +40 -0
- package/components/tag.svelte.d.ts +19 -0
- package/components/tags.svelte +203 -0
- package/components/tags.svelte.d.ts +31 -0
- package/horizontal.toolbar.svelte +23 -4
- package/horizontal.toolbar.svelte.d.ts +2 -0
- package/index.d.ts +9 -2
- package/index.js +9 -2
- package/operations.svelte +52 -23
- package/package.json +9 -1
- package/page.svelte +3 -3
- package/page.svelte.d.ts +2 -2
- package/tenant.members.svelte +1 -1
- package/updates.d.ts +1 -0
- package/updates.js +16 -0
- package/utils.js +11 -1
- package/vertical.toolbar.svelte +31 -6
- package/vertical.toolbar.svelte.d.ts +2 -0
package/components/Fab.svelte
CHANGED
|
@@ -136,9 +136,11 @@ function mousedown(e) {
|
|
|
136
136
|
<li class="flex flex-row px-0 py-0 justify-end group"
|
|
137
137
|
on:click|stopPropagation={(e) => {on_click(e, operation)}}
|
|
138
138
|
on:mousedown={mousedown}>
|
|
139
|
-
|
|
140
|
-
<
|
|
141
|
-
|
|
139
|
+
{#if operation.caption}
|
|
140
|
+
<div>
|
|
141
|
+
<span class="block whitespace-nowrap text-sm mt-3 font-semibold text-white mr-3 select-none bg-stone-700 group-hover:bg-stone-800 px-1 shadow-lg rounded">{operation.caption}</span>
|
|
142
|
+
</div>
|
|
143
|
+
{/if}
|
|
142
144
|
<button class=" bg-transparent
|
|
143
145
|
mx-0 mb-4 w-[55px] h-[55px]
|
|
144
146
|
flex items-center justify-center
|
|
@@ -26,7 +26,7 @@ export function run(onStop = void 0) {
|
|
|
26
26
|
onBlur = onStop;
|
|
27
27
|
editable_div?.focus();
|
|
28
28
|
}
|
|
29
|
-
export function
|
|
29
|
+
export function getFormattingOperations() {
|
|
30
30
|
let result = [];
|
|
31
31
|
commands.forEach((c2) => {
|
|
32
32
|
result.push({
|
|
@@ -884,23 +884,45 @@ function navigate_command_palette(key) {
|
|
|
884
884
|
}
|
|
885
885
|
function on_selection_changed() {
|
|
886
886
|
}
|
|
887
|
+
let intervalId = 0;
|
|
888
|
+
function on_focus() {
|
|
889
|
+
if (pushChangesImmediately) {
|
|
890
|
+
intervalId = setInterval(
|
|
891
|
+
() => {
|
|
892
|
+
saveData();
|
|
893
|
+
},
|
|
894
|
+
2e3
|
|
895
|
+
);
|
|
896
|
+
}
|
|
897
|
+
}
|
|
887
898
|
function on_blur() {
|
|
888
899
|
let active_range = Selection_helper.get_selection(editable_div);
|
|
900
|
+
if (intervalId) {
|
|
901
|
+
clearInterval(intervalId);
|
|
902
|
+
intervalId = 0;
|
|
903
|
+
}
|
|
889
904
|
if (onBlur) {
|
|
890
905
|
onBlur();
|
|
891
906
|
onBlur = void 0;
|
|
892
907
|
}
|
|
908
|
+
if (saveData()) {
|
|
909
|
+
last_tick = $data_tick_store + 1;
|
|
910
|
+
$data_tick_store = last_tick;
|
|
911
|
+
}
|
|
912
|
+
}
|
|
913
|
+
function saveData() {
|
|
893
914
|
if (item && a && has_changed_value) {
|
|
894
915
|
item[a] = changed_value;
|
|
895
916
|
has_changed_value = false;
|
|
896
|
-
if (typename)
|
|
917
|
+
if (typename)
|
|
897
918
|
informModification(item, a, typename);
|
|
898
|
-
|
|
899
|
-
|
|
900
|
-
|
|
901
|
-
|
|
902
|
-
|
|
919
|
+
else
|
|
920
|
+
informModification(item, a);
|
|
921
|
+
if (pushChangesImmediately)
|
|
922
|
+
pushChanges();
|
|
923
|
+
return true;
|
|
903
924
|
}
|
|
925
|
+
return false;
|
|
904
926
|
}
|
|
905
927
|
let commands = [
|
|
906
928
|
{ caption: "Normal", description: "This is normal text style", tags: "text", icon: FaFont, on_choice: () => {
|
|
@@ -940,6 +962,7 @@ let commands = [
|
|
|
940
962
|
class="{cs} {appearance_class}
|
|
941
963
|
prose prose-base sm:prose-base dark:prose-invert {additional_class} overflow-y-auto"
|
|
942
964
|
on:blur={on_blur}
|
|
965
|
+
on:focus={on_focus}
|
|
943
966
|
on:focus
|
|
944
967
|
on:blur
|
|
945
968
|
>
|
|
@@ -12,7 +12,7 @@ declare const __propDef: {
|
|
|
12
12
|
c?: string | undefined;
|
|
13
13
|
pushChangesImmediately?: boolean | undefined;
|
|
14
14
|
run?: ((onStop?: undefined) => void) | undefined;
|
|
15
|
-
|
|
15
|
+
getFormattingOperations?: (() => any[]) | undefined;
|
|
16
16
|
};
|
|
17
17
|
events: {
|
|
18
18
|
focus: FocusEvent;
|
|
@@ -27,6 +27,6 @@ export type RichEvents = typeof __propDef.events;
|
|
|
27
27
|
export type RichSlots = typeof __propDef.slots;
|
|
28
28
|
export default class Rich extends SvelteComponentTyped<RichProps, RichEvents, RichSlots> {
|
|
29
29
|
get run(): (onStop?: undefined) => void;
|
|
30
|
-
get
|
|
30
|
+
get getFormattingOperations(): () => any[];
|
|
31
31
|
}
|
|
32
32
|
export {};
|
|
@@ -1,23 +1,43 @@
|
|
|
1
|
+
import type { rList_property } from "../list/List";
|
|
2
|
+
export declare const KanbanCardTop = 1;
|
|
3
|
+
export declare const KanbanCardMiddle = 2;
|
|
4
|
+
export declare const KanbanCardBottom = 3;
|
|
1
5
|
export declare class rKanban_column {
|
|
2
6
|
id: number;
|
|
3
7
|
title: string;
|
|
4
8
|
width: string;
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
+
state: any;
|
|
10
|
+
finishing: boolean;
|
|
11
|
+
operations: object[] | undefined;
|
|
12
|
+
onTitleChanged: Function | undefined;
|
|
9
13
|
}
|
|
10
14
|
export declare class rKanban_definition {
|
|
11
15
|
columns: rKanban_column[];
|
|
12
16
|
titleAttrib: string;
|
|
13
17
|
titleOnChange: Function | undefined;
|
|
18
|
+
titleReadOnly: boolean;
|
|
14
19
|
summaryAttrib: string;
|
|
20
|
+
summaryOnChange: Function | undefined;
|
|
21
|
+
summaryReadOnly: boolean;
|
|
22
|
+
properties: rList_property[];
|
|
23
|
+
self: object | undefined;
|
|
24
|
+
a: string;
|
|
25
|
+
objects: object[] | undefined;
|
|
26
|
+
context: string;
|
|
27
|
+
key: string;
|
|
28
|
+
typename: string;
|
|
29
|
+
stateAttrib: string;
|
|
30
|
+
orderAttrib: string;
|
|
15
31
|
onUp: Function | undefined;
|
|
16
32
|
onDown: Function | undefined;
|
|
17
33
|
onAdd: Function | undefined;
|
|
18
34
|
onRemove: Function | undefined;
|
|
19
35
|
onReplace: Function | undefined;
|
|
20
36
|
onOpen: Function | undefined;
|
|
37
|
+
getCardOperations: Function | undefined;
|
|
38
|
+
private items;
|
|
39
|
+
getItems(): object[];
|
|
40
|
+
clear(): void;
|
|
21
41
|
}
|
|
22
42
|
export declare const KanbanColumnTop = -1;
|
|
23
43
|
export declare const KanbanColumnBottom = -2;
|
|
@@ -1,23 +1,79 @@
|
|
|
1
|
+
export const KanbanCardTop = 1;
|
|
2
|
+
export const KanbanCardMiddle = 2;
|
|
3
|
+
export const KanbanCardBottom = 3;
|
|
1
4
|
export class rKanban_column {
|
|
2
5
|
id;
|
|
3
6
|
title = '';
|
|
4
7
|
width = 'w-[240px]';
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
8
|
+
state = '';
|
|
9
|
+
finishing = false;
|
|
10
|
+
operations = undefined;
|
|
11
|
+
onTitleChanged = undefined;
|
|
9
12
|
}
|
|
10
13
|
export class rKanban_definition {
|
|
11
14
|
columns = [];
|
|
12
15
|
titleAttrib = '';
|
|
13
16
|
titleOnChange = undefined;
|
|
17
|
+
titleReadOnly = false;
|
|
14
18
|
summaryAttrib = '';
|
|
19
|
+
summaryOnChange = undefined;
|
|
20
|
+
summaryReadOnly = false;
|
|
21
|
+
properties = [];
|
|
22
|
+
self = undefined;
|
|
23
|
+
a = '';
|
|
24
|
+
objects = undefined;
|
|
25
|
+
context = '';
|
|
26
|
+
key = '';
|
|
27
|
+
typename = '';
|
|
28
|
+
stateAttrib = '';
|
|
29
|
+
orderAttrib = '';
|
|
15
30
|
onUp = undefined;
|
|
16
31
|
onDown = undefined;
|
|
17
32
|
onAdd = undefined;
|
|
18
33
|
onRemove = undefined;
|
|
19
34
|
onReplace = undefined;
|
|
20
35
|
onOpen = undefined;
|
|
36
|
+
getCardOperations = undefined;
|
|
37
|
+
items = null;
|
|
38
|
+
getItems() {
|
|
39
|
+
if (this.items == null) {
|
|
40
|
+
let item = this.self;
|
|
41
|
+
this.items = null;
|
|
42
|
+
if (this.objects)
|
|
43
|
+
this.items = this.objects;
|
|
44
|
+
else if (item && this.a)
|
|
45
|
+
this.items = item[this.a];
|
|
46
|
+
if (this.items == null)
|
|
47
|
+
this.items = [];
|
|
48
|
+
}
|
|
49
|
+
return this.items;
|
|
50
|
+
}
|
|
51
|
+
clear() {
|
|
52
|
+
this.columns = [];
|
|
53
|
+
this.titleAttrib = '';
|
|
54
|
+
this.titleOnChange = undefined;
|
|
55
|
+
this.titleReadOnly = false;
|
|
56
|
+
this.summaryAttrib = '';
|
|
57
|
+
this.summaryOnChange = undefined;
|
|
58
|
+
this.summaryReadOnly = false;
|
|
59
|
+
this.properties = [];
|
|
60
|
+
this.self = undefined;
|
|
61
|
+
this.a = '';
|
|
62
|
+
this.objects = undefined;
|
|
63
|
+
this.context = '';
|
|
64
|
+
this.key = '';
|
|
65
|
+
this.typename = '';
|
|
66
|
+
this.stateAttrib = '';
|
|
67
|
+
this.orderAttrib = '';
|
|
68
|
+
this.onUp = undefined;
|
|
69
|
+
this.onDown = undefined;
|
|
70
|
+
this.onAdd = undefined;
|
|
71
|
+
this.onRemove = undefined;
|
|
72
|
+
this.onReplace = undefined;
|
|
73
|
+
this.onOpen = undefined;
|
|
74
|
+
this.getCardOperations = undefined;
|
|
75
|
+
this.items = null;
|
|
76
|
+
}
|
|
21
77
|
}
|
|
22
78
|
export const KanbanColumnTop = -1;
|
|
23
79
|
export const KanbanColumnBottom = -2;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
<script>import { getContext } from "svelte";
|
|
1
|
+
<script>import { getContext, tick } from "svelte";
|
|
2
2
|
import {
|
|
3
3
|
contextItemsStore,
|
|
4
4
|
isActive,
|
|
@@ -6,23 +6,24 @@ import {
|
|
|
6
6
|
activateItem,
|
|
7
7
|
selectable,
|
|
8
8
|
editable,
|
|
9
|
-
showFloatingToolbar
|
|
9
|
+
showFloatingToolbar,
|
|
10
|
+
informModification,
|
|
11
|
+
pushChanges
|
|
10
12
|
} from "../../..";
|
|
11
|
-
import { FaArrowsAlt, FaTrash, FaPlus,
|
|
13
|
+
import { FaArrowsAlt, FaTrash, FaPlus, FaExternalLinkAlt } from "svelte-icons/fa";
|
|
12
14
|
import MoveOperations from "./kanban.move.menu.svelte";
|
|
15
|
+
import Properties from "./kanban.props.svelte";
|
|
16
|
+
import { KanbanCardTop, KanbanCardMiddle, KanbanCardBottom } from "../Kanban";
|
|
13
17
|
export let item;
|
|
14
|
-
export let showMoveOperationsForItem = void 0;
|
|
15
|
-
export let scrollViewToCard = void 0;
|
|
16
|
-
export let runInserter = void 0;
|
|
17
18
|
let definition = getContext("rKanban-definition");
|
|
18
19
|
$:
|
|
19
|
-
|
|
20
|
+
isCardActive = calculate_active(item, $contextItemsStore);
|
|
20
21
|
$:
|
|
21
|
-
|
|
22
|
+
isCardSelected = selected(item, $contextItemsStore);
|
|
22
23
|
$:
|
|
23
|
-
|
|
24
|
+
selectedClass = isCardSelected ? "!border-blue-300" : "";
|
|
24
25
|
$:
|
|
25
|
-
|
|
26
|
+
focusedClass = isCardActive ? "bg-stone-100 dark:bg-stone-700" : "";
|
|
26
27
|
function calculate_active(...args) {
|
|
27
28
|
return isActive("props", item);
|
|
28
29
|
}
|
|
@@ -35,47 +36,19 @@ export function activate(e) {
|
|
|
35
36
|
if (isActive("props", item)) {
|
|
36
37
|
return;
|
|
37
38
|
}
|
|
39
|
+
let operations = getOperations();
|
|
38
40
|
activateItem("props", item, operations);
|
|
39
41
|
}
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
runInserter(item);
|
|
47
|
-
}
|
|
48
|
-
},
|
|
49
|
-
{
|
|
50
|
-
caption: "",
|
|
51
|
-
icon: FaArrowsAlt,
|
|
52
|
-
toolbar: MoveOperations,
|
|
53
|
-
props: {
|
|
54
|
-
definition,
|
|
55
|
-
item,
|
|
56
|
-
afterActionOperation: scrollViewToCard
|
|
57
|
-
}
|
|
58
|
-
},
|
|
59
|
-
{
|
|
60
|
-
caption: "",
|
|
61
|
-
icon: FaTrash,
|
|
62
|
-
action: (f) => definition.onRemove(item)
|
|
42
|
+
function getOperations() {
|
|
43
|
+
let operations = [];
|
|
44
|
+
const getCustomOperations = definition.getCardOperations;
|
|
45
|
+
if (getCustomOperations) {
|
|
46
|
+
const cutomOperations = getCustomOperations(item);
|
|
47
|
+
cutomOperations.forEach((o) => operations.push(o));
|
|
63
48
|
}
|
|
64
|
-
|
|
65
|
-
let moveButton;
|
|
66
|
-
let card;
|
|
67
|
-
export function showMoveOperations() {
|
|
68
|
-
let rect = moveButton.getBoundingClientRect();
|
|
69
|
-
showFloatingToolbar(
|
|
70
|
-
rect,
|
|
71
|
-
MoveOperations,
|
|
72
|
-
{
|
|
73
|
-
definition,
|
|
74
|
-
item,
|
|
75
|
-
afterActionOperation: showMoveOperationsForItem
|
|
76
|
-
}
|
|
77
|
-
);
|
|
49
|
+
return operations;
|
|
78
50
|
}
|
|
51
|
+
let card;
|
|
79
52
|
export function _scrollViewToCard() {
|
|
80
53
|
card?.scrollIntoView(
|
|
81
54
|
{
|
|
@@ -85,12 +58,81 @@ export function _scrollViewToCard() {
|
|
|
85
58
|
}
|
|
86
59
|
);
|
|
87
60
|
}
|
|
61
|
+
function onTitleChanged(text) {
|
|
62
|
+
if (definition.titleOnChange)
|
|
63
|
+
definition.titleOnChange(text, item);
|
|
64
|
+
else {
|
|
65
|
+
item[definition.titleAttrib] = text;
|
|
66
|
+
informModification(item, definition.titleAttrib);
|
|
67
|
+
pushChanges();
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
function onSummaryChanged(text) {
|
|
71
|
+
if (definition.summaryOnChange)
|
|
72
|
+
definition.summaryOnChange(text, item);
|
|
73
|
+
else {
|
|
74
|
+
item[definition.summaryAttrib] = text;
|
|
75
|
+
informModification(item, definition.summaryAttrib);
|
|
76
|
+
pushChanges();
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
function setSelectionAtEnd(element) {
|
|
80
|
+
const textNode = element.childNodes[0];
|
|
81
|
+
const text = textNode.textContent;
|
|
82
|
+
let range = document.createRange();
|
|
83
|
+
let end_offset = text.length;
|
|
84
|
+
let end_container = textNode;
|
|
85
|
+
range.setStart(end_container, end_offset);
|
|
86
|
+
range.setEnd(end_container, end_offset);
|
|
87
|
+
let sel = window.getSelection();
|
|
88
|
+
sel.removeAllRanges();
|
|
89
|
+
sel.addRange(range);
|
|
90
|
+
}
|
|
91
|
+
let topProps;
|
|
92
|
+
let middleProps;
|
|
93
|
+
let bottomProps;
|
|
94
|
+
let titleElement;
|
|
95
|
+
let summaryElement;
|
|
96
|
+
let summaryPlaceholder = false;
|
|
97
|
+
export async function editProperty(field) {
|
|
98
|
+
if (field == "Title") {
|
|
99
|
+
titleElement.focus();
|
|
100
|
+
await tick();
|
|
101
|
+
setSelectionAtEnd(titleElement);
|
|
102
|
+
} else if (field == "Summary") {
|
|
103
|
+
if (!!summaryElement) {
|
|
104
|
+
summaryElement.focus();
|
|
105
|
+
await tick();
|
|
106
|
+
setSelectionAtEnd(summaryElement);
|
|
107
|
+
} else {
|
|
108
|
+
summaryPlaceholder = true;
|
|
109
|
+
await tick();
|
|
110
|
+
if (!!summaryElement)
|
|
111
|
+
summaryElement.focus();
|
|
112
|
+
}
|
|
113
|
+
} else {
|
|
114
|
+
const property = definition.properties.find((p) => p.name == field);
|
|
115
|
+
if (!property)
|
|
116
|
+
return;
|
|
117
|
+
switch (property.position) {
|
|
118
|
+
case KanbanCardTop:
|
|
119
|
+
topProps.editProperty(field);
|
|
120
|
+
break;
|
|
121
|
+
case KanbanCardMiddle:
|
|
122
|
+
middleProps.editProperty(field);
|
|
123
|
+
break;
|
|
124
|
+
case KanbanCardBottom:
|
|
125
|
+
bottomProps.editProperty(field);
|
|
126
|
+
break;
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
}
|
|
88
130
|
</script>
|
|
89
131
|
|
|
90
132
|
<!-- svelte-ignore a11y-click-events-have-key-events -->
|
|
91
133
|
|
|
92
|
-
<li class="mx-2 pt-2 pb-4 px-1 rounded-md border border-transparent {
|
|
93
|
-
class:cursor-pointer={!
|
|
134
|
+
<li class="mx-2 pt-2 pb-4 px-1 rounded-md border border-transparent {selectedClass} {focusedClass}"
|
|
135
|
+
class:cursor-pointer={!isCardActive}
|
|
94
136
|
on:click={activate}
|
|
95
137
|
use:selectable={item}
|
|
96
138
|
bind:this={card}>
|
|
@@ -98,7 +140,7 @@ export function _scrollViewToCard() {
|
|
|
98
140
|
<!-- -->
|
|
99
141
|
<!--section class="h-6 w-full flex flex-row ">
|
|
100
142
|
<button class="h-3 w-3"
|
|
101
|
-
class:hidden={!
|
|
143
|
+
class:hidden={!isCardActive}
|
|
102
144
|
on:click={(e) => showMoveOperations()}
|
|
103
145
|
bind:this={moveButton}>
|
|
104
146
|
<FaArrowsAlt/>
|
|
@@ -116,25 +158,39 @@ export function _scrollViewToCard() {
|
|
|
116
158
|
<slot name="kanbanCardTopProps" element={item}/>
|
|
117
159
|
</section>
|
|
118
160
|
{/if}
|
|
161
|
+
<Properties position={KanbanCardTop} {item} bind:this={topProps}/>
|
|
119
162
|
|
|
120
163
|
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
164
|
+
{#if isCardActive}
|
|
165
|
+
<h3 class=" text-lg font-semibold min-h-[1.75rem]
|
|
166
|
+
sm:text-sm sm:font-semibold sm:min-h-[1.25rem]
|
|
167
|
+
whitespace-nowrap overflow-clip truncate w-full sm:flex-none
|
|
168
|
+
relative"
|
|
169
|
+
use:editable={{
|
|
170
|
+
action: (text) => onTitleChanged(text),
|
|
171
|
+
active: true,
|
|
172
|
+
readonly: definition.titleReadOnly,
|
|
173
|
+
onFinish: (d) => {titleElement.blur()}}}
|
|
174
|
+
bind:this={titleElement}>
|
|
175
|
+
{item[definition.titleAttrib]}
|
|
176
|
+
|
|
130
177
|
{#if definition.onOpen}
|
|
131
178
|
<button class="absolute top-1 right-0 w-5 h-5 sm:w-3 sm:h-3"
|
|
132
|
-
class:hidden={!is_row_active}
|
|
133
179
|
on:click={(e) => definition.onOpen(item)}>
|
|
134
|
-
<
|
|
180
|
+
<FaExternalLinkAlt/>
|
|
135
181
|
</button>
|
|
136
182
|
{/if}
|
|
137
|
-
|
|
183
|
+
</h3>
|
|
184
|
+
{:else}
|
|
185
|
+
<h3 class=" text-lg font-semibold min-h-[1.75rem]
|
|
186
|
+
sm:text-sm sm:font-semibold sm:min-h-[1.25rem]
|
|
187
|
+
whitespace-nowrap overflow-clip truncate w-full sm:flex-none
|
|
188
|
+
relative">
|
|
189
|
+
{item[definition.titleAttrib]}
|
|
190
|
+
|
|
191
|
+
</h3>
|
|
192
|
+
{/if}
|
|
193
|
+
|
|
138
194
|
|
|
139
195
|
{#if $$slots.kanbanCardMiddleProps}
|
|
140
196
|
<section class="w-full flex flex-row">
|
|
@@ -142,17 +198,39 @@ export function _scrollViewToCard() {
|
|
|
142
198
|
</section>
|
|
143
199
|
{/if}
|
|
144
200
|
|
|
145
|
-
{
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
201
|
+
<Properties position={KanbanCardMiddle} {item} bind:this={middleProps}/>
|
|
202
|
+
|
|
203
|
+
{#if item[definition.summaryAttrib] || summaryPlaceholder}
|
|
204
|
+
{#key item[definition.summaryAttrib]}
|
|
205
|
+
{#if isCardActive}
|
|
206
|
+
<summary class=" sm:text-xs sm:min-h-[1rem]
|
|
207
|
+
text-base min-h-[1.5rem]
|
|
208
|
+
text-stone-400
|
|
209
|
+
max-h-[75px] sm:max-h-[64px]
|
|
210
|
+
overflow-hidden"
|
|
211
|
+
use:editable={{
|
|
212
|
+
action: (text) => onSummaryChanged(text),
|
|
213
|
+
active: true,
|
|
214
|
+
readonly: definition.summaryReadOnly,
|
|
215
|
+
onFinish: (d) => {summaryPlaceholder = false}}}
|
|
216
|
+
bind:this={summaryElement}>
|
|
217
|
+
{item[definition.summaryAttrib]}
|
|
218
|
+
</summary>
|
|
219
|
+
{:else}
|
|
220
|
+
<summary class=" sm:text-xs sm:min-h-[1rem]
|
|
221
|
+
text-base min-h-[1.5rem]
|
|
222
|
+
text-stone-400
|
|
223
|
+
max-h-[75px] sm:max-h-[64px]
|
|
224
|
+
overflow-hidden">
|
|
225
|
+
{item[definition.summaryAttrib]}
|
|
226
|
+
</summary>
|
|
227
|
+
{/if}
|
|
228
|
+
{/key}
|
|
153
229
|
{/if}
|
|
154
230
|
|
|
155
231
|
{#if $$slots.kanbanCardBottomProps}
|
|
156
232
|
<slot name="kanbanCardBottomProps" element={item} />
|
|
157
233
|
{/if}
|
|
234
|
+
|
|
235
|
+
<Properties position={KanbanCardBottom} {item} bind:this={bottomProps}/>
|
|
158
236
|
</li>
|
|
@@ -2,12 +2,9 @@ import { SvelteComponentTyped } from "svelte";
|
|
|
2
2
|
declare const __propDef: {
|
|
3
3
|
props: {
|
|
4
4
|
item: object;
|
|
5
|
-
showMoveOperationsForItem?: Function | undefined;
|
|
6
|
-
scrollViewToCard?: Function | undefined;
|
|
7
|
-
runInserter?: Function | undefined;
|
|
8
5
|
activate?: ((e: any) => void) | undefined;
|
|
9
|
-
showMoveOperations?: (() => void) | undefined;
|
|
10
6
|
_scrollViewToCard?: (() => void) | undefined;
|
|
7
|
+
editProperty?: ((field: string) => Promise<void>) | undefined;
|
|
11
8
|
};
|
|
12
9
|
events: {
|
|
13
10
|
[evt: string]: CustomEvent<any>;
|
|
@@ -29,7 +26,7 @@ export type KanbanEvents = typeof __propDef.events;
|
|
|
29
26
|
export type KanbanSlots = typeof __propDef.slots;
|
|
30
27
|
export default class Kanban extends SvelteComponentTyped<KanbanProps, KanbanEvents, KanbanSlots> {
|
|
31
28
|
get activate(): (e: any) => void;
|
|
32
|
-
get showMoveOperations(): () => void;
|
|
33
29
|
get _scrollViewToCard(): () => void;
|
|
30
|
+
get editProperty(): (field: string) => Promise<void>;
|
|
34
31
|
}
|
|
35
32
|
export {};
|