@design.estate/dees-catalog 12.3.0 → 12.5.0
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_bundle/bundle.js +2483 -1137
- package/dist_bundle/bundle.js.map +1 -1
- package/dist_ts_web/00_commitinfo_data.js +3 -3
- package/dist_ts_web/elements/00group-appui/dees-appui-mainmenu/dees-appui-mainmenu.d.ts +5 -0
- package/dist_ts_web/elements/00group-form/dees-form/dees-form.d.ts +2 -1
- package/dist_ts_web/elements/00group-form/dees-form/dees-form.js +2 -1
- package/dist_ts_web/elements/00group-input/dees-input-dropdown/dees-input-dropdown-popup.d.ts +13 -0
- package/dist_ts_web/elements/00group-input/dees-input-dropdown/dees-input-dropdown-popup.js +76 -7
- package/dist_ts_web/elements/00group-input/dees-input-reference/dees-input-reference.d.ts +42 -0
- package/dist_ts_web/elements/00group-input/dees-input-reference/dees-input-reference.demo.d.ts +1 -0
- package/dist_ts_web/elements/00group-input/dees-input-reference/dees-input-reference.demo.js +8 -0
- package/dist_ts_web/elements/00group-input/dees-input-reference/dees-input-reference.js +347 -0
- package/dist_ts_web/elements/00group-input/dees-input-reference/document.d.ts +5 -0
- package/dist_ts_web/elements/00group-input/dees-input-reference/document.js +45 -0
- package/dist_ts_web/elements/00group-input/dees-input-reference/index.d.ts +2 -0
- package/dist_ts_web/elements/00group-input/dees-input-reference/index.js +3 -0
- package/dist_ts_web/elements/00group-input/dees-input-reference/interfaces.d.ts +16 -0
- package/dist_ts_web/elements/00group-input/dees-input-reference/interfaces.js +2 -0
- package/dist_ts_web/elements/00group-input/dees-input-wysiwyg/dees-input-wysiwyg.d.ts +12 -2
- package/dist_ts_web/elements/00group-input/dees-input-wysiwyg/dees-input-wysiwyg.js +11 -1
- package/dist_ts_web/elements/00group-input/index.d.ts +1 -0
- package/dist_ts_web/elements/00group-input/index.js +2 -1
- package/dist_ts_web/elements/00group-kanban/dees-kanban/dees-kanban.d.ts +58 -0
- package/dist_ts_web/elements/00group-kanban/dees-kanban/dees-kanban.demo.d.ts +1 -0
- package/dist_ts_web/elements/00group-kanban/dees-kanban/dees-kanban.demo.js +9 -0
- package/dist_ts_web/elements/00group-kanban/dees-kanban/dees-kanban.js +536 -0
- package/dist_ts_web/elements/00group-kanban/dees-kanban-card/dees-kanban-card.d.ts +20 -0
- package/dist_ts_web/elements/00group-kanban/dees-kanban-card/dees-kanban-card.js +157 -0
- package/dist_ts_web/elements/00group-kanban/dees-kanban-column/dees-kanban-column.d.ts +23 -0
- package/dist_ts_web/elements/00group-kanban/dees-kanban-column/dees-kanban-column.js +192 -0
- package/dist_ts_web/elements/00group-kanban/dees-kanban-discussion/dees-kanban-discussion.d.ts +24 -0
- package/dist_ts_web/elements/00group-kanban/dees-kanban-discussion/dees-kanban-discussion.js +211 -0
- package/dist_ts_web/elements/00group-kanban/dees-kanban-ticket-detail/dees-kanban-ticket-detail.d.ts +35 -0
- package/dist_ts_web/elements/00group-kanban/dees-kanban-ticket-detail/dees-kanban-ticket-detail.js +269 -0
- package/dist_ts_web/elements/00group-kanban/index.d.ts +6 -0
- package/dist_ts_web/elements/00group-kanban/index.js +7 -0
- package/dist_ts_web/elements/00group-kanban/interfaces.d.ts +84 -0
- package/dist_ts_web/elements/00group-kanban/interfaces.js +2 -0
- package/dist_ts_web/elements/00group-kanban/kanban.demodata.d.ts +7 -0
- package/dist_ts_web/elements/00group-kanban/kanban.demodata.js +60 -0
- package/dist_ts_web/elements/00group-kanban/kanban.helpers.d.ts +6 -0
- package/dist_ts_web/elements/00group-kanban/kanban.helpers.js +11 -0
- package/dist_ts_web/elements/00group-kanban/kanban.styles.d.ts +1 -0
- package/dist_ts_web/elements/00group-kanban/kanban.styles.js +18 -0
- package/dist_ts_web/elements/00group-simple/dees-simple-appdash/dees-simple-appdash.js +7 -2
- package/dist_ts_web/elements/00group-workspace/dees-workspace/dees-workspace.js +3 -3
- package/dist_ts_web/elements/00group-workspace/dees-workspace/styles.js +10 -2
- package/dist_ts_web/elements/index.d.ts +1 -0
- package/dist_ts_web/elements/index.js +2 -1
- package/dist_ts_web/services/DeesServiceLibLoader.d.ts +1 -0
- package/dist_ts_web/services/DeesServiceLibLoader.js +2 -1
- package/package.json +1 -1
- package/readme.md +154 -0
- package/scripts/check-packed-consumer.mjs +1 -1
- package/ts_web/00_commitinfo_data.ts +3 -3
- package/ts_web/elements/00group-appui/dees-appui-mainmenu/dees-appui-mainmenu.ts +6 -0
- package/ts_web/elements/00group-form/dees-form/dees-form.ts +2 -1
- package/ts_web/elements/00group-input/dees-input-dropdown/dees-input-dropdown-popup.ts +40 -5
- package/ts_web/elements/00group-input/dees-input-reference/dees-input-reference.demo.ts +9 -0
- package/ts_web/elements/00group-input/dees-input-reference/dees-input-reference.ts +221 -0
- package/ts_web/elements/00group-input/dees-input-reference/document.ts +38 -0
- package/ts_web/elements/00group-input/dees-input-reference/index.ts +2 -0
- package/ts_web/elements/00group-input/dees-input-reference/interfaces.ts +8 -0
- package/ts_web/elements/00group-input/dees-input-wysiwyg/dees-input-wysiwyg.ts +11 -1
- package/ts_web/elements/00group-input/index.ts +1 -0
- package/ts_web/elements/00group-kanban/dees-kanban/dees-kanban.demo.ts +9 -0
- package/ts_web/elements/00group-kanban/dees-kanban/dees-kanban.ts +315 -0
- package/ts_web/elements/00group-kanban/dees-kanban-card/dees-kanban-card.ts +58 -0
- package/ts_web/elements/00group-kanban/dees-kanban-column/dees-kanban-column.ts +60 -0
- package/ts_web/elements/00group-kanban/dees-kanban-discussion/dees-kanban-discussion.ts +81 -0
- package/ts_web/elements/00group-kanban/dees-kanban-ticket-detail/dees-kanban-ticket-detail.ts +114 -0
- package/ts_web/elements/00group-kanban/index.ts +6 -0
- package/ts_web/elements/00group-kanban/interfaces.ts +67 -0
- package/ts_web/elements/00group-kanban/kanban.demodata.ts +56 -0
- package/ts_web/elements/00group-kanban/kanban.helpers.ts +13 -0
- package/ts_web/elements/00group-kanban/kanban.styles.ts +18 -0
- package/ts_web/elements/00group-simple/dees-simple-appdash/dees-simple-appdash.ts +6 -1
- package/ts_web/elements/00group-workspace/dees-workspace/dees-workspace.ts +2 -2
- package/ts_web/elements/00group-workspace/dees-workspace/styles.ts +9 -1
- package/ts_web/elements/index.ts +1 -0
- package/ts_web/services/DeesServiceLibLoader.ts +2 -0
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
|
|
2
|
+
function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
|
|
3
|
+
var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
|
|
4
|
+
var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
|
|
5
|
+
var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
|
|
6
|
+
var _, done = false;
|
|
7
|
+
for (var i = decorators.length - 1; i >= 0; i--) {
|
|
8
|
+
var context = {};
|
|
9
|
+
for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
|
|
10
|
+
for (var p in contextIn.access) context.access[p] = contextIn.access[p];
|
|
11
|
+
context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
|
|
12
|
+
var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
|
|
13
|
+
if (kind === "accessor") {
|
|
14
|
+
if (result === void 0) continue;
|
|
15
|
+
if (result === null || typeof result !== "object") throw new TypeError("Object expected");
|
|
16
|
+
if (_ = accept(result.get)) descriptor.get = _;
|
|
17
|
+
if (_ = accept(result.set)) descriptor.set = _;
|
|
18
|
+
if (_ = accept(result.init)) initializers.unshift(_);
|
|
19
|
+
}
|
|
20
|
+
else if (_ = accept(result)) {
|
|
21
|
+
if (kind === "field") initializers.unshift(_);
|
|
22
|
+
else descriptor[key] = _;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
if (target) Object.defineProperty(target, contextIn.name, descriptor);
|
|
26
|
+
done = true;
|
|
27
|
+
};
|
|
28
|
+
var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
|
|
29
|
+
var useValue = arguments.length > 2;
|
|
30
|
+
for (var i = 0; i < initializers.length; i++) {
|
|
31
|
+
value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
|
|
32
|
+
}
|
|
33
|
+
return useValue ? value : void 0;
|
|
34
|
+
};
|
|
35
|
+
import { DeesElement, customElement, property, html, css } from '@design.estate/dees-element';
|
|
36
|
+
import { kanbanStyles } from '../kanban.styles.js';
|
|
37
|
+
import { kanbanEvent } from '../kanban.helpers.js';
|
|
38
|
+
import '../../00group-button/dees-button/dees-button.js';
|
|
39
|
+
import '../../00group-utility/dees-icon/dees-icon.js';
|
|
40
|
+
let DeesKanbanCard = (() => {
|
|
41
|
+
let _classDecorators = [customElement('dees-kanban-card')];
|
|
42
|
+
let _classDescriptor;
|
|
43
|
+
let _classExtraInitializers = [];
|
|
44
|
+
let _classThis;
|
|
45
|
+
let _classSuper = DeesElement;
|
|
46
|
+
let _ticket_decorators;
|
|
47
|
+
let _ticket_initializers = [];
|
|
48
|
+
let _ticket_extraInitializers = [];
|
|
49
|
+
let _epic_decorators;
|
|
50
|
+
let _epic_initializers = [];
|
|
51
|
+
let _epic_extraInitializers = [];
|
|
52
|
+
let _subtasks_decorators;
|
|
53
|
+
let _subtasks_initializers = [];
|
|
54
|
+
let _subtasks_extraInitializers = [];
|
|
55
|
+
let _columns_decorators;
|
|
56
|
+
let _columns_initializers = [];
|
|
57
|
+
let _columns_extraInitializers = [];
|
|
58
|
+
let _movable_decorators;
|
|
59
|
+
let _movable_initializers = [];
|
|
60
|
+
let _movable_extraInitializers = [];
|
|
61
|
+
let _pending_decorators;
|
|
62
|
+
let _pending_initializers = [];
|
|
63
|
+
let _pending_extraInitializers = [];
|
|
64
|
+
var DeesKanbanCard = class extends _classSuper {
|
|
65
|
+
static { _classThis = this; }
|
|
66
|
+
static {
|
|
67
|
+
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
|
|
68
|
+
_ticket_decorators = [property({ attribute: false })];
|
|
69
|
+
_epic_decorators = [property({ attribute: false })];
|
|
70
|
+
_subtasks_decorators = [property({ attribute: false })];
|
|
71
|
+
_columns_decorators = [property({ attribute: false })];
|
|
72
|
+
_movable_decorators = [property({ type: Boolean })];
|
|
73
|
+
_pending_decorators = [property({ type: Boolean })];
|
|
74
|
+
__esDecorate(this, null, _ticket_decorators, { kind: "accessor", name: "ticket", static: false, private: false, access: { has: obj => "ticket" in obj, get: obj => obj.ticket, set: (obj, value) => { obj.ticket = value; } }, metadata: _metadata }, _ticket_initializers, _ticket_extraInitializers);
|
|
75
|
+
__esDecorate(this, null, _epic_decorators, { kind: "accessor", name: "epic", static: false, private: false, access: { has: obj => "epic" in obj, get: obj => obj.epic, set: (obj, value) => { obj.epic = value; } }, metadata: _metadata }, _epic_initializers, _epic_extraInitializers);
|
|
76
|
+
__esDecorate(this, null, _subtasks_decorators, { kind: "accessor", name: "subtasks", static: false, private: false, access: { has: obj => "subtasks" in obj, get: obj => obj.subtasks, set: (obj, value) => { obj.subtasks = value; } }, metadata: _metadata }, _subtasks_initializers, _subtasks_extraInitializers);
|
|
77
|
+
__esDecorate(this, null, _columns_decorators, { kind: "accessor", name: "columns", static: false, private: false, access: { has: obj => "columns" in obj, get: obj => obj.columns, set: (obj, value) => { obj.columns = value; } }, metadata: _metadata }, _columns_initializers, _columns_extraInitializers);
|
|
78
|
+
__esDecorate(this, null, _movable_decorators, { kind: "accessor", name: "movable", static: false, private: false, access: { has: obj => "movable" in obj, get: obj => obj.movable, set: (obj, value) => { obj.movable = value; } }, metadata: _metadata }, _movable_initializers, _movable_extraInitializers);
|
|
79
|
+
__esDecorate(this, null, _pending_decorators, { kind: "accessor", name: "pending", static: false, private: false, access: { has: obj => "pending" in obj, get: obj => obj.pending, set: (obj, value) => { obj.pending = value; } }, metadata: _metadata }, _pending_initializers, _pending_extraInitializers);
|
|
80
|
+
__esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
|
|
81
|
+
DeesKanbanCard = _classThis = _classDescriptor.value;
|
|
82
|
+
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
83
|
+
}
|
|
84
|
+
#ticket_accessor_storage = __runInitializers(this, _ticket_initializers, void 0);
|
|
85
|
+
get ticket() { return this.#ticket_accessor_storage; }
|
|
86
|
+
set ticket(value) { this.#ticket_accessor_storage = value; }
|
|
87
|
+
#epic_accessor_storage = (__runInitializers(this, _ticket_extraInitializers), __runInitializers(this, _epic_initializers, void 0));
|
|
88
|
+
get epic() { return this.#epic_accessor_storage; }
|
|
89
|
+
set epic(value) { this.#epic_accessor_storage = value; }
|
|
90
|
+
#subtasks_accessor_storage = (__runInitializers(this, _epic_extraInitializers), __runInitializers(this, _subtasks_initializers, []));
|
|
91
|
+
get subtasks() { return this.#subtasks_accessor_storage; }
|
|
92
|
+
set subtasks(value) { this.#subtasks_accessor_storage = value; }
|
|
93
|
+
#columns_accessor_storage = (__runInitializers(this, _subtasks_extraInitializers), __runInitializers(this, _columns_initializers, []));
|
|
94
|
+
get columns() { return this.#columns_accessor_storage; }
|
|
95
|
+
set columns(value) { this.#columns_accessor_storage = value; }
|
|
96
|
+
#movable_accessor_storage = (__runInitializers(this, _columns_extraInitializers), __runInitializers(this, _movable_initializers, false));
|
|
97
|
+
get movable() { return this.#movable_accessor_storage; }
|
|
98
|
+
set movable(value) { this.#movable_accessor_storage = value; }
|
|
99
|
+
#pending_accessor_storage = (__runInitializers(this, _movable_extraInitializers), __runInitializers(this, _pending_initializers, false));
|
|
100
|
+
get pending() { return this.#pending_accessor_storage; }
|
|
101
|
+
set pending(value) { this.#pending_accessor_storage = value; }
|
|
102
|
+
static styles = [...kanbanStyles, css `
|
|
103
|
+
article { padding: 14px; border: 1px solid var(--dees-color-border-default); border-radius: var(--dees-radius-lg); background: var(--dees-color-bg-primary); box-shadow: var(--dees-shadow-xs); }
|
|
104
|
+
article:hover { border-color: var(--dees-color-border-strong); }
|
|
105
|
+
article[aria-busy=true] { opacity: .65; }
|
|
106
|
+
.title { display: block; width: 100%; border: 0; background: transparent; padding: 8px 0 12px; color: inherit; text-align: left; cursor: pointer; font: inherit; font-weight: 550; line-height: 1.45; overflow-wrap: anywhere; }
|
|
107
|
+
.key { font-variant-numeric: tabular-nums; }
|
|
108
|
+
.link.epic { margin-bottom: 5px; max-width: 100%; font-size: var(--dees-font-caption1-size); }
|
|
109
|
+
.labels { margin-bottom: 10px; }
|
|
110
|
+
.priority[data-priority=urgent], .priority[data-priority=high] { color: var(--dees-color-text-warning); }
|
|
111
|
+
.avatar { width: 24px; height: 24px; border-radius: 50%; background: var(--dees-color-badge-default-bg); display: inline-grid; place-items: center; font-size: 10px; font-weight: 600; }
|
|
112
|
+
summary { cursor: pointer; padding: 10px 0 2px; font-size: var(--dees-font-footnote-size); color: var(--dees-color-text-secondary); }
|
|
113
|
+
.subtask { display: flex; gap: 6px; align-items: baseline; padding-top: 8px; font-size: var(--dees-font-footnote-size); }
|
|
114
|
+
`];
|
|
115
|
+
open(ticketId) { kanbanEvent(this, 'kanban-ticket-open', { ticketId }); }
|
|
116
|
+
render() {
|
|
117
|
+
const ticket = this.ticket;
|
|
118
|
+
if (!ticket)
|
|
119
|
+
return html ``;
|
|
120
|
+
const completed = this.subtasks.filter(task => this.columns.some(column => column.id === task.columnId && column.done)).length;
|
|
121
|
+
return html `<article aria-busy=${String(this.pending)} draggable=${this.movable && !this.pending ? 'true' : 'false'}
|
|
122
|
+
@dragstart=${(event) => {
|
|
123
|
+
if (!this.movable || this.pending || !event.dataTransfer) {
|
|
124
|
+
event.preventDefault();
|
|
125
|
+
return;
|
|
126
|
+
}
|
|
127
|
+
event.dataTransfer.setData('application/x-dees-kanban-ticket', ticket.id);
|
|
128
|
+
event.dataTransfer.effectAllowed = 'move';
|
|
129
|
+
kanbanEvent(this, 'kanban-drag-start', { ticketId: ticket.id });
|
|
130
|
+
}} @dragend=${() => kanbanEvent(this, 'kanban-drag-end', {})}>
|
|
131
|
+
${this.epic ? html `<button class="link epic" @click=${() => this.open(this.epic.id)}>${this.epic.title}</button>` : ''}
|
|
132
|
+
<div class="row caption"><span class="key">${ticket.key}</span><span class="spacer"></span>
|
|
133
|
+
${ticket.priority && ticket.priority !== 'none' ? html `<span class="priority" data-priority=${ticket.priority}>${ticket.priority}</span>` : ''}</div>
|
|
134
|
+
<button class="title" @click=${() => this.open(ticket.id)}>${ticket.title}</button>
|
|
135
|
+
${ticket.labels?.length ? html `<div class="row labels">${ticket.labels.map(label => html `<span class="badge">${label}</span>`)}</div>` : ''}
|
|
136
|
+
<div class="row caption"><span class="avatar" title=${ticket.assignee?.name ?? 'Unassigned'}>${ticket.assignee?.name.split(/\s+/).map(part => part[0]).join('').slice(0, 2) ?? '–'}</span>
|
|
137
|
+
<span>${ticket.assignee?.name ?? 'Unassigned'}</span><span class="spacer"></span>
|
|
138
|
+
${this.movable ? html `<dees-button size="icon" type="ghost" icon="lucide:Ellipsis" text="Move ticket" .disabled=${this.pending}
|
|
139
|
+
@clicked=${(event) => kanbanEvent(this, 'kanban-move-menu', { ticketId: ticket.id, anchor: event.currentTarget })}></dees-button>` : ''}
|
|
140
|
+
</div>
|
|
141
|
+
${this.subtasks.length ? html `<details><summary>${completed}/${this.subtasks.length} subtasks complete</summary>
|
|
142
|
+
${this.subtasks.map(task => html `<div class="subtask"><span>${this.columns.some(column => column.id === task.columnId && column.done) ? '✓' : '○'}</span>
|
|
143
|
+
<button class="link" @click=${() => this.open(task.id)}>${task.title}</button></div>`)}</details>` : ''}
|
|
144
|
+
</article>`;
|
|
145
|
+
}
|
|
146
|
+
constructor() {
|
|
147
|
+
super(...arguments);
|
|
148
|
+
__runInitializers(this, _pending_extraInitializers);
|
|
149
|
+
}
|
|
150
|
+
static {
|
|
151
|
+
__runInitializers(_classThis, _classExtraInitializers);
|
|
152
|
+
}
|
|
153
|
+
};
|
|
154
|
+
return DeesKanbanCard = _classThis;
|
|
155
|
+
})();
|
|
156
|
+
export { DeesKanbanCard };
|
|
157
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVlcy1rYW5iYW4tY2FyZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3RzX3dlYi9lbGVtZW50cy8wMGdyb3VwLWthbmJhbi9kZWVzLWthbmJhbi1jYXJkL2RlZXMta2FuYmFuLWNhcmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsYUFBYSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFFOUYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNuRCxPQUFPLGlEQUFpRCxDQUFDO0FBQ3pELE9BQU8sOENBQThDLENBQUM7SUFLekMsY0FBYzs0QkFEMUIsYUFBYSxDQUFDLGtCQUFrQixDQUFDOzs7O3NCQUNFLFdBQVc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OEJBQW5CLFNBQVEsV0FBVzs7OztrQ0FDNUMsUUFBUSxDQUFDLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDO2dDQUM5QixRQUFRLENBQUMsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUM7b0NBQzlCLFFBQVEsQ0FBQyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQzttQ0FDOUIsUUFBUSxDQUFDLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDO21DQUM5QixRQUFRLENBQUMsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLENBQUM7bUNBQzNCLFFBQVEsQ0FBQyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsQ0FBQztZQUxJLHVLQUFTLE1BQU0sNkJBQU4sTUFBTSx1RkFBNEI7WUFDM0MsaUtBQVMsSUFBSSw2QkFBSixJQUFJLG1GQUE0QjtZQUN6Qyw2S0FBUyxRQUFRLDZCQUFSLFFBQVEsMkZBQXVC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
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { DeesElement } from '@design.estate/dees-element';
|
|
2
|
+
import type { IKanbanColumn, IKanbanTicket } from '../interfaces.js';
|
|
3
|
+
import '../dees-kanban-card/dees-kanban-card.js';
|
|
4
|
+
declare global {
|
|
5
|
+
interface HTMLElementTagNameMap {
|
|
6
|
+
'dees-kanban-column': DeesKanbanColumn;
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
export declare class DeesKanbanColumn extends DeesElement {
|
|
10
|
+
accessor column: IKanbanColumn | undefined;
|
|
11
|
+
accessor tickets: IKanbanTicket[];
|
|
12
|
+
accessor allTickets: IKanbanTicket[];
|
|
13
|
+
accessor columns: IKanbanColumn[];
|
|
14
|
+
accessor movable: boolean;
|
|
15
|
+
accessor canCreate: boolean;
|
|
16
|
+
accessor pendingTicketId: string;
|
|
17
|
+
accessor draggingTicketId: string;
|
|
18
|
+
private accessor dropBefore;
|
|
19
|
+
private accessor draggingOver;
|
|
20
|
+
static styles: import("@design.estate/dees-element").CSSResult[];
|
|
21
|
+
updated(): void;
|
|
22
|
+
render(): import("@design.estate/dees-element").TemplateResult<1>;
|
|
23
|
+
}
|
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
|
|
2
|
+
function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
|
|
3
|
+
var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
|
|
4
|
+
var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
|
|
5
|
+
var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
|
|
6
|
+
var _, done = false;
|
|
7
|
+
for (var i = decorators.length - 1; i >= 0; i--) {
|
|
8
|
+
var context = {};
|
|
9
|
+
for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
|
|
10
|
+
for (var p in contextIn.access) context.access[p] = contextIn.access[p];
|
|
11
|
+
context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
|
|
12
|
+
var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
|
|
13
|
+
if (kind === "accessor") {
|
|
14
|
+
if (result === void 0) continue;
|
|
15
|
+
if (result === null || typeof result !== "object") throw new TypeError("Object expected");
|
|
16
|
+
if (_ = accept(result.get)) descriptor.get = _;
|
|
17
|
+
if (_ = accept(result.set)) descriptor.set = _;
|
|
18
|
+
if (_ = accept(result.init)) initializers.unshift(_);
|
|
19
|
+
}
|
|
20
|
+
else if (_ = accept(result)) {
|
|
21
|
+
if (kind === "field") initializers.unshift(_);
|
|
22
|
+
else descriptor[key] = _;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
if (target) Object.defineProperty(target, contextIn.name, descriptor);
|
|
26
|
+
done = true;
|
|
27
|
+
};
|
|
28
|
+
var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
|
|
29
|
+
var useValue = arguments.length > 2;
|
|
30
|
+
for (var i = 0; i < initializers.length; i++) {
|
|
31
|
+
value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
|
|
32
|
+
}
|
|
33
|
+
return useValue ? value : void 0;
|
|
34
|
+
};
|
|
35
|
+
import { DeesElement, customElement, property, state, html, css } from '@design.estate/dees-element';
|
|
36
|
+
import { kanbanStyles } from '../kanban.styles.js';
|
|
37
|
+
import { kanbanEvent, sortKanbanTickets } from '../kanban.helpers.js';
|
|
38
|
+
import '../dees-kanban-card/dees-kanban-card.js';
|
|
39
|
+
let DeesKanbanColumn = (() => {
|
|
40
|
+
let _classDecorators = [customElement('dees-kanban-column')];
|
|
41
|
+
let _classDescriptor;
|
|
42
|
+
let _classExtraInitializers = [];
|
|
43
|
+
let _classThis;
|
|
44
|
+
let _classSuper = DeesElement;
|
|
45
|
+
let _column_decorators;
|
|
46
|
+
let _column_initializers = [];
|
|
47
|
+
let _column_extraInitializers = [];
|
|
48
|
+
let _tickets_decorators;
|
|
49
|
+
let _tickets_initializers = [];
|
|
50
|
+
let _tickets_extraInitializers = [];
|
|
51
|
+
let _allTickets_decorators;
|
|
52
|
+
let _allTickets_initializers = [];
|
|
53
|
+
let _allTickets_extraInitializers = [];
|
|
54
|
+
let _columns_decorators;
|
|
55
|
+
let _columns_initializers = [];
|
|
56
|
+
let _columns_extraInitializers = [];
|
|
57
|
+
let _movable_decorators;
|
|
58
|
+
let _movable_initializers = [];
|
|
59
|
+
let _movable_extraInitializers = [];
|
|
60
|
+
let _canCreate_decorators;
|
|
61
|
+
let _canCreate_initializers = [];
|
|
62
|
+
let _canCreate_extraInitializers = [];
|
|
63
|
+
let _pendingTicketId_decorators;
|
|
64
|
+
let _pendingTicketId_initializers = [];
|
|
65
|
+
let _pendingTicketId_extraInitializers = [];
|
|
66
|
+
let _draggingTicketId_decorators;
|
|
67
|
+
let _draggingTicketId_initializers = [];
|
|
68
|
+
let _draggingTicketId_extraInitializers = [];
|
|
69
|
+
let _dropBefore_decorators;
|
|
70
|
+
let _dropBefore_initializers = [];
|
|
71
|
+
let _dropBefore_extraInitializers = [];
|
|
72
|
+
let _draggingOver_decorators;
|
|
73
|
+
let _draggingOver_initializers = [];
|
|
74
|
+
let _draggingOver_extraInitializers = [];
|
|
75
|
+
var DeesKanbanColumn = class extends _classSuper {
|
|
76
|
+
static { _classThis = this; }
|
|
77
|
+
static {
|
|
78
|
+
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
|
|
79
|
+
_column_decorators = [property({ attribute: false })];
|
|
80
|
+
_tickets_decorators = [property({ attribute: false })];
|
|
81
|
+
_allTickets_decorators = [property({ attribute: false })];
|
|
82
|
+
_columns_decorators = [property({ attribute: false })];
|
|
83
|
+
_movable_decorators = [property({ type: Boolean })];
|
|
84
|
+
_canCreate_decorators = [property({ type: Boolean })];
|
|
85
|
+
_pendingTicketId_decorators = [property({ type: String })];
|
|
86
|
+
_draggingTicketId_decorators = [property({ type: String })];
|
|
87
|
+
_dropBefore_decorators = [state()];
|
|
88
|
+
_draggingOver_decorators = [state()];
|
|
89
|
+
__esDecorate(this, null, _column_decorators, { kind: "accessor", name: "column", static: false, private: false, access: { has: obj => "column" in obj, get: obj => obj.column, set: (obj, value) => { obj.column = value; } }, metadata: _metadata }, _column_initializers, _column_extraInitializers);
|
|
90
|
+
__esDecorate(this, null, _tickets_decorators, { kind: "accessor", name: "tickets", static: false, private: false, access: { has: obj => "tickets" in obj, get: obj => obj.tickets, set: (obj, value) => { obj.tickets = value; } }, metadata: _metadata }, _tickets_initializers, _tickets_extraInitializers);
|
|
91
|
+
__esDecorate(this, null, _allTickets_decorators, { kind: "accessor", name: "allTickets", static: false, private: false, access: { has: obj => "allTickets" in obj, get: obj => obj.allTickets, set: (obj, value) => { obj.allTickets = value; } }, metadata: _metadata }, _allTickets_initializers, _allTickets_extraInitializers);
|
|
92
|
+
__esDecorate(this, null, _columns_decorators, { kind: "accessor", name: "columns", static: false, private: false, access: { has: obj => "columns" in obj, get: obj => obj.columns, set: (obj, value) => { obj.columns = value; } }, metadata: _metadata }, _columns_initializers, _columns_extraInitializers);
|
|
93
|
+
__esDecorate(this, null, _movable_decorators, { kind: "accessor", name: "movable", static: false, private: false, access: { has: obj => "movable" in obj, get: obj => obj.movable, set: (obj, value) => { obj.movable = value; } }, metadata: _metadata }, _movable_initializers, _movable_extraInitializers);
|
|
94
|
+
__esDecorate(this, null, _canCreate_decorators, { kind: "accessor", name: "canCreate", static: false, private: false, access: { has: obj => "canCreate" in obj, get: obj => obj.canCreate, set: (obj, value) => { obj.canCreate = value; } }, metadata: _metadata }, _canCreate_initializers, _canCreate_extraInitializers);
|
|
95
|
+
__esDecorate(this, null, _pendingTicketId_decorators, { kind: "accessor", name: "pendingTicketId", static: false, private: false, access: { has: obj => "pendingTicketId" in obj, get: obj => obj.pendingTicketId, set: (obj, value) => { obj.pendingTicketId = value; } }, metadata: _metadata }, _pendingTicketId_initializers, _pendingTicketId_extraInitializers);
|
|
96
|
+
__esDecorate(this, null, _draggingTicketId_decorators, { kind: "accessor", name: "draggingTicketId", static: false, private: false, access: { has: obj => "draggingTicketId" in obj, get: obj => obj.draggingTicketId, set: (obj, value) => { obj.draggingTicketId = value; } }, metadata: _metadata }, _draggingTicketId_initializers, _draggingTicketId_extraInitializers);
|
|
97
|
+
__esDecorate(this, null, _dropBefore_decorators, { kind: "accessor", name: "dropBefore", static: false, private: false, access: { has: obj => "dropBefore" in obj, get: obj => obj.dropBefore, set: (obj, value) => { obj.dropBefore = value; } }, metadata: _metadata }, _dropBefore_initializers, _dropBefore_extraInitializers);
|
|
98
|
+
__esDecorate(this, null, _draggingOver_decorators, { kind: "accessor", name: "draggingOver", static: false, private: false, access: { has: obj => "draggingOver" in obj, get: obj => obj.draggingOver, set: (obj, value) => { obj.draggingOver = value; } }, metadata: _metadata }, _draggingOver_initializers, _draggingOver_extraInitializers);
|
|
99
|
+
__esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
|
|
100
|
+
DeesKanbanColumn = _classThis = _classDescriptor.value;
|
|
101
|
+
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
102
|
+
}
|
|
103
|
+
#column_accessor_storage = __runInitializers(this, _column_initializers, void 0);
|
|
104
|
+
get column() { return this.#column_accessor_storage; }
|
|
105
|
+
set column(value) { this.#column_accessor_storage = value; }
|
|
106
|
+
#tickets_accessor_storage = (__runInitializers(this, _column_extraInitializers), __runInitializers(this, _tickets_initializers, []));
|
|
107
|
+
get tickets() { return this.#tickets_accessor_storage; }
|
|
108
|
+
set tickets(value) { this.#tickets_accessor_storage = value; }
|
|
109
|
+
#allTickets_accessor_storage = (__runInitializers(this, _tickets_extraInitializers), __runInitializers(this, _allTickets_initializers, []));
|
|
110
|
+
get allTickets() { return this.#allTickets_accessor_storage; }
|
|
111
|
+
set allTickets(value) { this.#allTickets_accessor_storage = value; }
|
|
112
|
+
#columns_accessor_storage = (__runInitializers(this, _allTickets_extraInitializers), __runInitializers(this, _columns_initializers, []));
|
|
113
|
+
get columns() { return this.#columns_accessor_storage; }
|
|
114
|
+
set columns(value) { this.#columns_accessor_storage = value; }
|
|
115
|
+
#movable_accessor_storage = (__runInitializers(this, _columns_extraInitializers), __runInitializers(this, _movable_initializers, false));
|
|
116
|
+
get movable() { return this.#movable_accessor_storage; }
|
|
117
|
+
set movable(value) { this.#movable_accessor_storage = value; }
|
|
118
|
+
#canCreate_accessor_storage = (__runInitializers(this, _movable_extraInitializers), __runInitializers(this, _canCreate_initializers, false));
|
|
119
|
+
get canCreate() { return this.#canCreate_accessor_storage; }
|
|
120
|
+
set canCreate(value) { this.#canCreate_accessor_storage = value; }
|
|
121
|
+
#pendingTicketId_accessor_storage = (__runInitializers(this, _canCreate_extraInitializers), __runInitializers(this, _pendingTicketId_initializers, ''));
|
|
122
|
+
get pendingTicketId() { return this.#pendingTicketId_accessor_storage; }
|
|
123
|
+
set pendingTicketId(value) { this.#pendingTicketId_accessor_storage = value; }
|
|
124
|
+
#draggingTicketId_accessor_storage = (__runInitializers(this, _pendingTicketId_extraInitializers), __runInitializers(this, _draggingTicketId_initializers, ''));
|
|
125
|
+
get draggingTicketId() { return this.#draggingTicketId_accessor_storage; }
|
|
126
|
+
set draggingTicketId(value) { this.#draggingTicketId_accessor_storage = value; }
|
|
127
|
+
#dropBefore_accessor_storage = (__runInitializers(this, _draggingTicketId_extraInitializers), __runInitializers(this, _dropBefore_initializers, void 0));
|
|
128
|
+
get dropBefore() { return this.#dropBefore_accessor_storage; }
|
|
129
|
+
set dropBefore(value) { this.#dropBefore_accessor_storage = value; }
|
|
130
|
+
#draggingOver_accessor_storage = (__runInitializers(this, _dropBefore_extraInitializers), __runInitializers(this, _draggingOver_initializers, false));
|
|
131
|
+
get draggingOver() { return this.#draggingOver_accessor_storage; }
|
|
132
|
+
set draggingOver(value) { this.#draggingOver_accessor_storage = value; }
|
|
133
|
+
static styles = [...kanbanStyles, css `
|
|
134
|
+
:host { display: flex; flex-direction: column; width: 300px; min-width: 270px; flex: 1 0 270px; }
|
|
135
|
+
section { min-height: 220px; height: 100%; border-radius: var(--dees-radius-lg); background: var(--dees-color-bg-secondary); padding: 10px; }
|
|
136
|
+
header { display: flex; align-items: center; gap: 8px; padding: 3px 3px 12px; }
|
|
137
|
+
h3 { font-size: var(--dees-font-body-size); font-weight: 600; }
|
|
138
|
+
.count { font-size: var(--dees-font-caption1-size); color: var(--dees-color-text-secondary); }
|
|
139
|
+
.stack { display: grid; gap: 10px; min-height: 80px; align-content: start; }
|
|
140
|
+
.target { position: relative; }
|
|
141
|
+
.target.before::before, .end-target.before::before { content: ''; display: block; height: 3px; background: var(--dees-color-accent-primary); border-radius: 2px; margin-bottom: 7px; }
|
|
142
|
+
.end-target { min-height: 20px; padding-top: 10px; }
|
|
143
|
+
section.over { outline: 2px solid var(--dees-color-focus-ring); outline-offset: 1px; }
|
|
144
|
+
`];
|
|
145
|
+
updated() { if (!this.draggingTicketId)
|
|
146
|
+
this.draggingOver = false; }
|
|
147
|
+
render() {
|
|
148
|
+
if (!this.column)
|
|
149
|
+
return html ``;
|
|
150
|
+
return html `<section class=${this.draggingOver ? 'over' : ''} aria-label=${this.column.title}
|
|
151
|
+
@dragover=${(event) => { if (this.draggingTicketId && this.movable) {
|
|
152
|
+
event.preventDefault();
|
|
153
|
+
this.draggingOver = true;
|
|
154
|
+
if (event.dataTransfer)
|
|
155
|
+
event.dataTransfer.dropEffect = 'move';
|
|
156
|
+
} }}
|
|
157
|
+
@dragleave=${(event) => { if (!(event.relatedTarget instanceof Node) || !event.currentTarget.contains(event.relatedTarget))
|
|
158
|
+
this.draggingOver = false; }}
|
|
159
|
+
@drop=${(event) => {
|
|
160
|
+
event.preventDefault();
|
|
161
|
+
this.draggingOver = false;
|
|
162
|
+
if (this.movable && this.draggingTicketId && event.dataTransfer?.getData('application/x-dees-kanban-ticket') === this.draggingTicketId)
|
|
163
|
+
kanbanEvent(this, 'kanban-ticket-move', { ticketId: this.draggingTicketId, columnId: this.column.id, beforeTicketId: this.dropBefore });
|
|
164
|
+
}}>
|
|
165
|
+
<header><h3>${this.column.title}</h3><span class="count">${this.tickets.length}</span><span class="spacer"></span>
|
|
166
|
+
${this.canCreate ? html `<dees-button type="ghost" size="icon" icon="lucide:Plus" text=${`Add task to ${this.column.title}`}
|
|
167
|
+
@clicked=${() => kanbanEvent(this, 'kanban-ticket-create', { kind: 'task', columnId: this.column.id })}></dees-button>` : ''}</header>
|
|
168
|
+
<div class="stack">${sortKanbanTickets(this.tickets).map(ticket => html `
|
|
169
|
+
<div class="target ${this.draggingOver && this.dropBefore === ticket.id ? 'before' : ''}"
|
|
170
|
+
@dragover=${() => { this.dropBefore = ticket.id; }}>
|
|
171
|
+
<dees-kanban-card .ticket=${ticket} .columns=${this.columns}
|
|
172
|
+
.epic=${this.allTickets.find(item => item.id === ticket.parentId && item.kind === 'epic')}
|
|
173
|
+
.subtasks=${sortKanbanTickets(this.allTickets.filter(item => item.parentId === ticket.id && item.kind === 'subtask'))}
|
|
174
|
+
.movable=${this.movable && ticket.permissions?.move !== false} .pending=${this.pendingTicketId === ticket.id}></dees-kanban-card>
|
|
175
|
+
</div>`)}
|
|
176
|
+
${!this.tickets.length ? html `<div class="empty" @dragover=${() => { this.dropBefore = undefined; }}>No tasks</div>` : ''}
|
|
177
|
+
</div>
|
|
178
|
+
<div class="end-target ${this.draggingOver && !this.dropBefore ? 'before' : ''}" @dragover=${() => { this.dropBefore = undefined; }}></div>
|
|
179
|
+
</section>`;
|
|
180
|
+
}
|
|
181
|
+
constructor() {
|
|
182
|
+
super(...arguments);
|
|
183
|
+
__runInitializers(this, _draggingOver_extraInitializers);
|
|
184
|
+
}
|
|
185
|
+
static {
|
|
186
|
+
__runInitializers(_classThis, _classExtraInitializers);
|
|
187
|
+
}
|
|
188
|
+
};
|
|
189
|
+
return DeesKanbanColumn = _classThis;
|
|
190
|
+
})();
|
|
191
|
+
export { DeesKanbanColumn };
|
|
192
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVlcy1rYW5iYW4tY29sdW1uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdHNfd2ViL2VsZW1lbnRzLzAwZ3JvdXAta2FuYmFuL2RlZXMta2FuYmFuLWNvbHVtbi9kZWVzLWthbmJhbi1jb2x1bW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsYUFBYSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRXJHLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsV0FBVyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdEUsT0FBTyx5Q0FBeUMsQ0FBQztJQUtwQyxnQkFBZ0I7NEJBRDVCLGFBQWEsQ0FBQyxvQkFBb0IsQ0FBQzs7OztzQkFDRSxXQUFXOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2dDQUFuQixTQUFRLFdBQVc7Ozs7a0NBQzlDLFFBQVEsQ0FBQyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQzttQ0FDOUIsUUFBUSxDQUFDLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDO3NDQUM5QixRQUFRLENBQUMsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUM7bUNBQzlCLFFBQVEsQ0FBQyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQzttQ0FDOUIsUUFBUSxDQUFDLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxDQUFDO3FDQUMzQixRQUFRLENBQUMsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLENBQUM7MkNBQzNCLFFBQVEsQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQzs0Q0FDMUIsUUFBUSxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0s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
|
package/dist_ts_web/elements/00group-kanban/dees-kanban-discussion/dees-kanban-discussion.d.ts
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { DeesElement } from '@design.estate/dees-element';
|
|
2
|
+
import type { IKanbanComment, IKanbanProvider } from '../interfaces.js';
|
|
3
|
+
import { type TReferenceContent, type TReferenceSearch } from '../../00group-input/dees-input-reference/index.js';
|
|
4
|
+
import '../../00group-button/dees-button/dees-button.js';
|
|
5
|
+
declare global {
|
|
6
|
+
interface HTMLElementTagNameMap {
|
|
7
|
+
'dees-kanban-discussion': DeesKanbanDiscussion;
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
export declare class DeesKanbanDiscussion extends DeesElement {
|
|
11
|
+
accessor ticketId: string;
|
|
12
|
+
accessor comments: IKanbanComment[];
|
|
13
|
+
accessor draft: TReferenceContent;
|
|
14
|
+
accessor searchTickets: TReferenceSearch | undefined;
|
|
15
|
+
accessor addComment: IKanbanProvider['addComment'];
|
|
16
|
+
accessor loading: boolean;
|
|
17
|
+
accessor readOnly: boolean;
|
|
18
|
+
accessor error: string;
|
|
19
|
+
private accessor pending;
|
|
20
|
+
private accessor failures;
|
|
21
|
+
static styles: import("@design.estate/dees-element").CSSResult[];
|
|
22
|
+
render(): import("@design.estate/dees-element").TemplateResult<1>;
|
|
23
|
+
submit(): Promise<void>;
|
|
24
|
+
}
|