@design.estate/dees-catalog 12.4.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.
Files changed (67) hide show
  1. package/dist_bundle/bundle.js +2455 -1133
  2. package/dist_bundle/bundle.js.map +1 -1
  3. package/dist_ts_web/00_commitinfo_data.js +3 -3
  4. package/dist_ts_web/elements/00group-input/dees-input-dropdown/dees-input-dropdown-popup.d.ts +13 -0
  5. package/dist_ts_web/elements/00group-input/dees-input-dropdown/dees-input-dropdown-popup.js +76 -7
  6. package/dist_ts_web/elements/00group-input/dees-input-reference/dees-input-reference.d.ts +42 -0
  7. package/dist_ts_web/elements/00group-input/dees-input-reference/dees-input-reference.demo.d.ts +1 -0
  8. package/dist_ts_web/elements/00group-input/dees-input-reference/dees-input-reference.demo.js +8 -0
  9. package/dist_ts_web/elements/00group-input/dees-input-reference/dees-input-reference.js +347 -0
  10. package/dist_ts_web/elements/00group-input/dees-input-reference/document.d.ts +5 -0
  11. package/dist_ts_web/elements/00group-input/dees-input-reference/document.js +45 -0
  12. package/dist_ts_web/elements/00group-input/dees-input-reference/index.d.ts +2 -0
  13. package/dist_ts_web/elements/00group-input/dees-input-reference/index.js +3 -0
  14. package/dist_ts_web/elements/00group-input/dees-input-reference/interfaces.d.ts +16 -0
  15. package/dist_ts_web/elements/00group-input/dees-input-reference/interfaces.js +2 -0
  16. package/dist_ts_web/elements/00group-input/index.d.ts +1 -0
  17. package/dist_ts_web/elements/00group-input/index.js +2 -1
  18. package/dist_ts_web/elements/00group-kanban/dees-kanban/dees-kanban.d.ts +58 -0
  19. package/dist_ts_web/elements/00group-kanban/dees-kanban/dees-kanban.demo.d.ts +1 -0
  20. package/dist_ts_web/elements/00group-kanban/dees-kanban/dees-kanban.demo.js +9 -0
  21. package/dist_ts_web/elements/00group-kanban/dees-kanban/dees-kanban.js +536 -0
  22. package/dist_ts_web/elements/00group-kanban/dees-kanban-card/dees-kanban-card.d.ts +20 -0
  23. package/dist_ts_web/elements/00group-kanban/dees-kanban-card/dees-kanban-card.js +157 -0
  24. package/dist_ts_web/elements/00group-kanban/dees-kanban-column/dees-kanban-column.d.ts +23 -0
  25. package/dist_ts_web/elements/00group-kanban/dees-kanban-column/dees-kanban-column.js +192 -0
  26. package/dist_ts_web/elements/00group-kanban/dees-kanban-discussion/dees-kanban-discussion.d.ts +24 -0
  27. package/dist_ts_web/elements/00group-kanban/dees-kanban-discussion/dees-kanban-discussion.js +211 -0
  28. package/dist_ts_web/elements/00group-kanban/dees-kanban-ticket-detail/dees-kanban-ticket-detail.d.ts +35 -0
  29. package/dist_ts_web/elements/00group-kanban/dees-kanban-ticket-detail/dees-kanban-ticket-detail.js +269 -0
  30. package/dist_ts_web/elements/00group-kanban/index.d.ts +6 -0
  31. package/dist_ts_web/elements/00group-kanban/index.js +7 -0
  32. package/dist_ts_web/elements/00group-kanban/interfaces.d.ts +84 -0
  33. package/dist_ts_web/elements/00group-kanban/interfaces.js +2 -0
  34. package/dist_ts_web/elements/00group-kanban/kanban.demodata.d.ts +7 -0
  35. package/dist_ts_web/elements/00group-kanban/kanban.demodata.js +60 -0
  36. package/dist_ts_web/elements/00group-kanban/kanban.helpers.d.ts +6 -0
  37. package/dist_ts_web/elements/00group-kanban/kanban.helpers.js +11 -0
  38. package/dist_ts_web/elements/00group-kanban/kanban.styles.d.ts +1 -0
  39. package/dist_ts_web/elements/00group-kanban/kanban.styles.js +18 -0
  40. package/dist_ts_web/elements/index.d.ts +1 -0
  41. package/dist_ts_web/elements/index.js +2 -1
  42. package/dist_ts_web/services/DeesServiceLibLoader.d.ts +1 -0
  43. package/dist_ts_web/services/DeesServiceLibLoader.js +2 -1
  44. package/package.json +1 -1
  45. package/readme.md +154 -0
  46. package/scripts/check-packed-consumer.mjs +1 -1
  47. package/ts_web/00_commitinfo_data.ts +3 -3
  48. package/ts_web/elements/00group-input/dees-input-dropdown/dees-input-dropdown-popup.ts +40 -5
  49. package/ts_web/elements/00group-input/dees-input-reference/dees-input-reference.demo.ts +9 -0
  50. package/ts_web/elements/00group-input/dees-input-reference/dees-input-reference.ts +221 -0
  51. package/ts_web/elements/00group-input/dees-input-reference/document.ts +38 -0
  52. package/ts_web/elements/00group-input/dees-input-reference/index.ts +2 -0
  53. package/ts_web/elements/00group-input/dees-input-reference/interfaces.ts +8 -0
  54. package/ts_web/elements/00group-input/index.ts +1 -0
  55. package/ts_web/elements/00group-kanban/dees-kanban/dees-kanban.demo.ts +9 -0
  56. package/ts_web/elements/00group-kanban/dees-kanban/dees-kanban.ts +315 -0
  57. package/ts_web/elements/00group-kanban/dees-kanban-card/dees-kanban-card.ts +58 -0
  58. package/ts_web/elements/00group-kanban/dees-kanban-column/dees-kanban-column.ts +60 -0
  59. package/ts_web/elements/00group-kanban/dees-kanban-discussion/dees-kanban-discussion.ts +81 -0
  60. package/ts_web/elements/00group-kanban/dees-kanban-ticket-detail/dees-kanban-ticket-detail.ts +114 -0
  61. package/ts_web/elements/00group-kanban/index.ts +6 -0
  62. package/ts_web/elements/00group-kanban/interfaces.ts +67 -0
  63. package/ts_web/elements/00group-kanban/kanban.demodata.ts +56 -0
  64. package/ts_web/elements/00group-kanban/kanban.helpers.ts +13 -0
  65. package/ts_web/elements/00group-kanban/kanban.styles.ts +18 -0
  66. package/ts_web/elements/index.ts +1 -0
  67. 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVlcy1rYW5iYW4tY2FyZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3RzX3dlYi9lbGVtZW50cy8wMGdyb3VwLWthbmJhbi9kZWVzLWthbmJhbi1jYXJkL2RlZXMta2FuYmFuLWNhcmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsYUFBYSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFFOUYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNuRCxPQUFPLGlEQUFpRCxDQUFDO0FBQ3pELE9BQU8sOENBQThDLENBQUM7SUFLekMsY0FBYzs0QkFEMUIsYUFBYSxDQUFDLGtCQUFrQixDQUFDOzs7O3NCQUNFLFdBQVc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OEJBQW5CLFNBQVEsV0FBVzs7OztrQ0FDNUMsUUFBUSxDQUFDLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDO2dDQUM5QixRQUFRLENBQUMsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUM7b0NBQzlCLFFBQVEsQ0FBQyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQzttQ0FDOUIsUUFBUSxDQUFDLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDO21DQUM5QixRQUFRLENBQUMsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLENBQUM7bUNBQzNCLFFBQVEsQ0FBQyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsQ0FBQztZQUxJLHVLQUFTLE1BQU0sNkJBQU4sTUFBTSx1RkFBNEI7WUFDM0MsaUtBQVMsSUFBSSw2QkFBSixJQUFJLG1GQUE0QjtZQUN6Qyw2S0FBUyxRQUFRLDZCQUFSLFFBQVEsMkZBQXVCO1lBQ3hDLDBLQUFTLE9BQU8sNkJBQVAsT0FBTyx5RkFBdUI7WUFDMUMsMEtBQVMsT0FBTyw2QkFBUCxPQUFPLHlGQUFTO1lBQ3pCLDBLQUFTLE9BQU8sNkJBQVAsT0FBTyx5RkFBUztZQU54RCw2S0ErQ0M7Ozs7UUE5Q2lDLGlGQUEyQztRQUEzQyxJQUFTLE1BQU0sNENBQTRCO1FBQTNDLElBQVMsTUFBTSxrREFBNEI7UUFDM0MsbUlBQXlDO1FBQXpDLElBQVMsSUFBSSwwQ0FBNEI7UUFBekMsSUFBUyxJQUFJLGdEQUE0QjtRQUN6QyxnSUFBcUMsRUFBRSxHQUFDO1FBQXhDLElBQVMsUUFBUSw4Q0FBdUI7UUFBeEMsSUFBUyxRQUFRLG9EQUF1QjtRQUN4QyxrSUFBb0MsRUFBRSxHQUFDO1FBQXZDLElBQVMsT0FBTyw2Q0FBdUI7UUFBdkMsSUFBUyxPQUFPLG1EQUF1QjtRQUMxQyxpSUFBbUIsS0FBSyxHQUFDO1FBQXpCLElBQVMsT0FBTyw2Q0FBUztRQUF6QixJQUFTLE9BQU8sbURBQVM7UUFDekIsaUlBQW1CLEtBQUssR0FBQztRQUF6QixJQUFTLE9BQU8sNkNBQVM7UUFBekIsSUFBUyxPQUFPLG1EQUFTO1FBQy9DLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxHQUFHLFlBQVksRUFBRSxHQUFHLENBQUE7Ozs7Ozs7Ozs7OztHQVkzQyxDQUFDLENBQUM7UUFDSyxJQUFJLENBQUMsUUFBZ0IsSUFBVSxXQUFXLENBQUMsSUFBSSxFQUFFLG9CQUFvQixFQUFFLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDeEYsTUFBTTtZQUNYLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7WUFDM0IsSUFBSSxDQUFDLE1BQU07Z0JBQUUsT0FBTyxJQUFJLENBQUEsRUFBRSxDQUFDO1lBQzNCLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFBRSxLQUFLLElBQUksQ0FBQyxRQUFRLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO1lBQy9ILE9BQU8sSUFBSSxDQUFBLHNCQUFzQixNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLElBQUksQ0FBQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE9BQU87bUJBQ3BHLENBQUMsS0FBZ0IsRUFBRSxFQUFFO2dCQUNoQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksRUFBRSxDQUFDO29CQUFDLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztvQkFBQyxPQUFPO2dCQUFDLENBQUM7Z0JBQzdGLEtBQUssQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLGtDQUFrQyxFQUFFLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDMUUsS0FBSyxDQUFDLFlBQVksQ0FBQyxhQUFhLEdBQUcsTUFBTSxDQUFDO2dCQUMxQyxXQUFXLENBQUMsSUFBSSxFQUFFLG1CQUFtQixFQUFFLEVBQUUsUUFBUSxFQUFFLE1BQU0sQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ2xFLENBQUMsYUFBYSxHQUFHLEVBQUUsQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLGlCQUFpQixFQUFFLEVBQUUsQ0FBQztRQUMxRCxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUEsb0NBQW9DLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUFFO21EQUMxRSxNQUFNLENBQUMsR0FBRztVQUNuRCxNQUFNLENBQUMsUUFBUSxJQUFJLE1BQU0sQ0FBQyxRQUFRLEtBQUssTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUEsd0NBQXdDLE1BQU0sQ0FBQyxRQUFRLElBQUksTUFBTSxDQUFDLFFBQVEsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFO3FDQUNqSCxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsSUFBSSxNQUFNLENBQUMsS0FBSztRQUN2RSxNQUFNLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFBLDJCQUEyQixNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQSx1QkFBdUIsS0FBSyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFOzREQUNyRixNQUFNLENBQUMsUUFBUSxFQUFFLElBQUksSUFBSSxZQUFZLElBQUksTUFBTSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLEdBQUc7Z0JBQ3hLLE1BQU0sQ0FBQyxRQUFRLEVBQUUsSUFBSSxJQUFJLFlBQVk7VUFDM0MsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFBLDZGQUE2RixJQUFJLENBQUMsT0FBTztxQkFDakgsQ0FBQyxLQUFZLEVBQUUsRUFBRSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsa0JBQWtCLEVBQUUsRUFBRSxRQUFRLEVBQUUsTUFBTSxDQUFDLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxDQUFDLGFBQTRCLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsRUFBRTs7UUFFL0osSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQSxxQkFBcUIsU0FBUyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTTtVQUMvRSxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQSw4QkFBOEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFBRSxLQUFLLElBQUksQ0FBQyxRQUFRLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUc7d0NBQ2pILEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLElBQUksQ0FBQyxLQUFLLGlCQUFpQixDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsRUFBRTtlQUNsRyxDQUFDO1FBQ2QsQ0FBQzs7Ozs7O1lBOUNVLHVEQUFjOzs7OztTQUFkLGNBQWMifQ==
@@ -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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
@@ -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
+ }