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