@design.estate/dees-catalog 13.0.0 → 13.0.1
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 +192 -109
- package/dist_bundle/bundle.js.map +1 -1
- package/dist_ts_web/00_commitinfo_data.js +1 -1
- package/dist_ts_web/elements/00group-input/dees-input-reference/dees-input-reference.js +4 -4
- package/dist_ts_web/elements/00group-kanban/dees-kanban/dees-kanban.js +32 -18
- package/dist_ts_web/elements/00group-kanban/dees-kanban-card/dees-kanban-card.js +37 -21
- package/dist_ts_web/elements/00group-kanban/dees-kanban-column/dees-kanban-column.js +16 -12
- package/dist_ts_web/elements/00group-kanban/dees-kanban-discussion/dees-kanban-discussion.js +26 -15
- package/dist_ts_web/elements/00group-kanban/dees-kanban-ticket-detail/dees-kanban-ticket-detail.d.ts +2 -0
- package/dist_ts_web/elements/00group-kanban/dees-kanban-ticket-detail/dees-kanban-ticket-detail.js +73 -40
- package/dist_ts_web/elements/00group-kanban/kanban.helpers.d.ts +3 -1
- package/dist_ts_web/elements/00group-kanban/kanban.helpers.js +3 -1
- package/dist_ts_web/elements/00group-kanban/kanban.styles.js +11 -3
- package/package.json +1 -1
- package/readme.md +8 -0
- package/ts_web/00_commitinfo_data.ts +1 -1
- package/ts_web/elements/00group-input/dees-input-reference/dees-input-reference.ts +3 -3
- package/ts_web/elements/00group-kanban/dees-kanban/dees-kanban.ts +31 -17
- package/ts_web/elements/00group-kanban/dees-kanban-card/dees-kanban-card.ts +36 -20
- package/ts_web/elements/00group-kanban/dees-kanban-column/dees-kanban-column.ts +15 -11
- package/ts_web/elements/00group-kanban/dees-kanban-discussion/dees-kanban-discussion.ts +25 -14
- package/ts_web/elements/00group-kanban/dees-kanban-ticket-detail/dees-kanban-ticket-detail.ts +64 -38
- package/ts_web/elements/00group-kanban/kanban.helpers.ts +5 -1
- package/ts_web/elements/00group-kanban/kanban.styles.ts +10 -2
package/dist_ts_web/elements/00group-kanban/dees-kanban-discussion/dees-kanban-discussion.js
CHANGED
|
@@ -34,7 +34,7 @@ var __runInitializers = (this && this.__runInitializers) || function (thisArg, i
|
|
|
34
34
|
};
|
|
35
35
|
import { DeesElement, customElement, property, state, html, css } from '@design.estate/dees-element';
|
|
36
36
|
import { kanbanStyles } from '../kanban.styles.js';
|
|
37
|
-
import { kanbanError, kanbanEvent } from '../kanban.helpers.js';
|
|
37
|
+
import { kanbanError, kanbanEvent, kanbanInitials } from '../kanban.helpers.js';
|
|
38
38
|
import { referenceText } from '../../00group-input/dees-input-reference/index.js';
|
|
39
39
|
import '../../00group-button/dees-button/dees-button.js';
|
|
40
40
|
let DeesKanbanDiscussion = (() => {
|
|
@@ -132,31 +132,42 @@ let DeesKanbanDiscussion = (() => {
|
|
|
132
132
|
get failures() { return this.#failures_accessor_storage; }
|
|
133
133
|
set failures(value) { this.#failures_accessor_storage = value; }
|
|
134
134
|
static styles = [...kanbanStyles, css `
|
|
135
|
-
header { display: flex; align-items: center; margin-bottom:
|
|
136
|
-
h3 { font-size: var(--dees-font-
|
|
135
|
+
header { display: flex; align-items: center; gap: 8px; margin-bottom: 8px; }
|
|
136
|
+
h3 { font-size: var(--dees-font-footnote-size); font-weight: 600; }
|
|
137
|
+
.refresh::part(button) { width: 28px; height: 28px; min-height: 28px; }
|
|
137
138
|
ol { list-style: none; padding: 0; margin: 0; }
|
|
138
|
-
li {
|
|
139
|
-
.
|
|
139
|
+
li { display: grid; grid-template-columns: 28px minmax(0, 1fr); gap: 10px; padding: 10px 0; }
|
|
140
|
+
li > .avatar { width: 28px; height: 28px; margin-top: 1px; }
|
|
141
|
+
.author { font-weight: 600; font-size: var(--dees-font-footnote-size); }
|
|
142
|
+
.meta { gap: 4px 10px; }
|
|
140
143
|
time { font-size: var(--dees-font-caption1-size); color: var(--dees-color-text-secondary); }
|
|
141
|
-
.message { white-space: pre-wrap; overflow-wrap: anywhere; line-height:
|
|
142
|
-
.reference { display: inline; border: 0; border-radius: var(--dees-radius-sm); padding: 1px
|
|
143
|
-
.compose { padding-
|
|
144
|
-
.compose
|
|
144
|
+
.message { white-space: pre-wrap; overflow-wrap: anywhere; font-size: var(--dees-font-subhead-size); line-height: 22px; margin-top: 2px; }
|
|
145
|
+
.reference { display: inline; border: 0; border-radius: var(--dees-radius-sm); padding: 1px 5px; color: var(--dees-color-link); background: var(--dees-color-fill-tertiary); font: inherit; font-weight: 500; cursor: pointer; text-align: left; overflow-wrap: anywhere; }
|
|
146
|
+
.compose { margin: 14px 0 0 38px; padding: 0; border: 1px solid var(--dees-color-control-border); border-radius: var(--dees-radius-xl); corner-shape: var(--dees-corner-shape); background: var(--dees-color-control-bg); }
|
|
147
|
+
.compose:has(dees-input-reference:focus-within) { outline: 2px solid var(--dees-color-focus-ring); outline-offset: 1px; }
|
|
148
|
+
dees-input-reference { --dees-reference-min-height: 64px; --dees-reference-font-size: var(--dees-font-subhead-size); }
|
|
149
|
+
dees-input-reference::part(editor) { border: 0; background: transparent; outline: none; }
|
|
150
|
+
.compose .row { padding: 4px 10px 10px; gap: 8px; }
|
|
151
|
+
.compose .caption { font-size: var(--dees-font-caption1-size); }
|
|
152
|
+
.shortcut { white-space: nowrap; }
|
|
153
|
+
.compose .error { padding: 0 12px 10px; }
|
|
154
|
+
@media (max-width: 600px) { .compose { margin-left: 0; } .compose .caption { flex-basis: 100%; } }
|
|
145
155
|
`];
|
|
146
156
|
render() {
|
|
147
157
|
const pending = this.pending.has(this.ticketId);
|
|
148
158
|
const comments = this.comments.filter(comment => comment.ticketId === this.ticketId)
|
|
149
159
|
.slice().sort((a, b) => Date.parse(a.createdAt) - Date.parse(b.createdAt));
|
|
150
|
-
return html `<header><h3>Discussion
|
|
151
|
-
<dees-button size="
|
|
160
|
+
return html `<header><h3>Discussion</h3><span class="count">${comments.length}</span><span class="spacer"></span>
|
|
161
|
+
<dees-button class="refresh" size="icon" type="ghost" icon="lucide:RefreshCw" text="Refresh" .disabled=${this.loading}
|
|
152
162
|
@clicked=${() => kanbanEvent(this, 'kanban-comments-refresh', { ticketId: this.ticketId })}></dees-button></header>
|
|
153
163
|
${this.loading ? html `<p class="caption" role="status">Loading comments…</p>` : ''}
|
|
154
164
|
${this.error ? html `<p class="error" role="alert">${this.error}</p>` : ''}
|
|
155
165
|
<ol aria-label="Comments">${comments.map(comment => html `<li>
|
|
156
|
-
<
|
|
166
|
+
<span class="avatar" aria-hidden="true">${kanbanInitials(comment.author.name)}</span><div>
|
|
167
|
+
<div class="row meta"><span class="author">${comment.author.name}</span><time datetime=${comment.createdAt} title=${comment.createdAt}>${new Date(comment.createdAt).toLocaleString(undefined, { dateStyle: 'medium', timeStyle: 'short' })}</time></div>
|
|
157
168
|
<div class="message">${comment.body.map(part => part.type === 'text' ? part.text : html `<button class="reference"
|
|
158
169
|
@click=${() => kanbanEvent(this, 'kanban-ticket-open', { ticketId: part.id })}>${part.label}</button>`)}</div>
|
|
159
|
-
</li>`)}</ol>
|
|
170
|
+
</div></li>`)}</ol>
|
|
160
171
|
${!comments.length && !this.loading && !this.error ? html `<p class="empty">Start the conversation.</p>` : ''}
|
|
161
172
|
${this.addComment && !this.readOnly ? html `<div class="compose">
|
|
162
173
|
<dees-input-reference label="Comment" placeholder="Write a comment…" .documentKey=${this.ticketId} .value=${this.draft} .disabled=${pending}
|
|
@@ -167,7 +178,7 @@ let DeesKanbanDiscussion = (() => {
|
|
|
167
178
|
}}
|
|
168
179
|
@reference-open=${(event) => kanbanEvent(this, 'kanban-ticket-open', { ticketId: event.detail.id })}
|
|
169
180
|
@reference-submit=${() => { void this.submit(); }}></dees-input-reference>
|
|
170
|
-
<div class="row"><span class="caption">Type
|
|
181
|
+
<div class="row"><span class="caption">Type <strong>#_</strong> to link a ticket · <span class="shortcut">Ctrl/⌘ Enter to send</span></span><span class="spacer"></span>
|
|
171
182
|
<dees-button type="accent" size="sm" text="Comment" .disabled=${pending || !referenceText(this.draft).trim()}
|
|
172
183
|
.status=${pending ? 'pending' : 'normal'} @clicked=${() => { void this.submit(); }}></dees-button></div>
|
|
173
184
|
${this.failures.get(this.ticketId) ? html `<p class="error" role="alert">${this.failures.get(this.ticketId)}</p>` : ''}
|
|
@@ -208,4 +219,4 @@ let DeesKanbanDiscussion = (() => {
|
|
|
208
219
|
return DeesKanbanDiscussion = _classThis;
|
|
209
220
|
})();
|
|
210
221
|
export { DeesKanbanDiscussion };
|
|
211
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
222
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVlcy1rYW5iYW4tZGlzY3Vzc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3RzX3dlYi9lbGVtZW50cy8wMGdyb3VwLWthbmJhbi9kZWVzLWthbmJhbi1kaXNjdXNzaW9uL2RlZXMta2FuYmFuLWRpc2N1c3Npb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsYUFBYSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRXJHLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxjQUFjLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNoRixPQUFPLEVBQUUsYUFBYSxFQUFpRCxNQUFNLG1EQUFtRCxDQUFDO0FBQ2pJLE9BQU8saURBQWlELENBQUM7SUFLNUMsb0JBQW9COzRCQURoQyxhQUFhLENBQUMsd0JBQXdCLENBQUM7Ozs7c0JBQ0UsV0FBVzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztvQ0FBbkIsU0FBUSxXQUFXOzs7O29DQUNsRCxRQUFRLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUM7b0NBQzFCLFFBQVEsQ0FBQyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQztpQ0FDOUIsUUFBUSxDQUFDLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDO3lDQUM5QixRQUFRLENBQUMsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUM7c0NBQzlCLFFBQVEsQ0FBQyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQzttQ0FDOUIsUUFBUSxDQUFDLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxDQUFDO29DQUMzQixRQUFRLENBQUMsRUFB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
|
package/dist_ts_web/elements/00group-kanban/dees-kanban-ticket-detail/dees-kanban-ticket-detail.d.ts
CHANGED
|
@@ -25,6 +25,8 @@ export declare class DeesKanbanTicketDetail extends DeesElement {
|
|
|
25
25
|
accessor error: string;
|
|
26
26
|
accessor saving: boolean;
|
|
27
27
|
accessor canGoBack: boolean;
|
|
28
|
+
/** Keep the identifier visible unless the containing surface already labels the ticket. */
|
|
29
|
+
accessor showTicketKey: boolean;
|
|
28
30
|
private accessor editing;
|
|
29
31
|
static styles: import("@design.estate/dees-element").CSSResult[];
|
|
30
32
|
updated(changed: Map<string, unknown>): void;
|
package/dist_ts_web/elements/00group-kanban/dees-kanban-ticket-detail/dees-kanban-ticket-detail.js
CHANGED
|
@@ -34,7 +34,7 @@ var __runInitializers = (this && this.__runInitializers) || function (thisArg, i
|
|
|
34
34
|
};
|
|
35
35
|
import { DeesElement, customElement, property, state, html, css } from '@design.estate/dees-element';
|
|
36
36
|
import { kanbanStyles } from '../kanban.styles.js';
|
|
37
|
-
import { kanbanEvent, sortKanbanTickets, ticketDraft, ticketLabel } from '../kanban.helpers.js';
|
|
37
|
+
import { kanbanEvent, kanbanInitials, kanbanPriorityIcon, sortKanbanTickets, ticketDraft, ticketLabel } from '../kanban.helpers.js';
|
|
38
38
|
import '../../00group-input/dees-input-text/dees-input-text.js';
|
|
39
39
|
import '../../00group-input/dees-input-textarea/dees-input-textarea.js';
|
|
40
40
|
import '../../00group-input/dees-input-dropdown/dees-input-dropdown.js';
|
|
@@ -87,6 +87,9 @@ let DeesKanbanTicketDetail = (() => {
|
|
|
87
87
|
let _canGoBack_decorators;
|
|
88
88
|
let _canGoBack_initializers = [];
|
|
89
89
|
let _canGoBack_extraInitializers = [];
|
|
90
|
+
let _showTicketKey_decorators;
|
|
91
|
+
let _showTicketKey_initializers = [];
|
|
92
|
+
let _showTicketKey_extraInitializers = [];
|
|
90
93
|
let _editing_decorators;
|
|
91
94
|
let _editing_initializers = [];
|
|
92
95
|
let _editing_extraInitializers = [];
|
|
@@ -108,6 +111,7 @@ let DeesKanbanTicketDetail = (() => {
|
|
|
108
111
|
_error_decorators = [property({ type: String })];
|
|
109
112
|
_saving_decorators = [property({ type: Boolean })];
|
|
110
113
|
_canGoBack_decorators = [property({ type: Boolean })];
|
|
114
|
+
_showTicketKey_decorators = [property({ type: Boolean })];
|
|
111
115
|
_editing_decorators = [state()];
|
|
112
116
|
__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);
|
|
113
117
|
__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);
|
|
@@ -123,6 +127,7 @@ let DeesKanbanTicketDetail = (() => {
|
|
|
123
127
|
__esDecorate(this, null, _error_decorators, { kind: "accessor", name: "error", static: false, private: false, access: { has: obj => "error" in obj, get: obj => obj.error, set: (obj, value) => { obj.error = value; } }, metadata: _metadata }, _error_initializers, _error_extraInitializers);
|
|
124
128
|
__esDecorate(this, null, _saving_decorators, { kind: "accessor", name: "saving", static: false, private: false, access: { has: obj => "saving" in obj, get: obj => obj.saving, set: (obj, value) => { obj.saving = value; } }, metadata: _metadata }, _saving_initializers, _saving_extraInitializers);
|
|
125
129
|
__esDecorate(this, null, _canGoBack_decorators, { kind: "accessor", name: "canGoBack", static: false, private: false, access: { has: obj => "canGoBack" in obj, get: obj => obj.canGoBack, set: (obj, value) => { obj.canGoBack = value; } }, metadata: _metadata }, _canGoBack_initializers, _canGoBack_extraInitializers);
|
|
130
|
+
__esDecorate(this, null, _showTicketKey_decorators, { kind: "accessor", name: "showTicketKey", static: false, private: false, access: { has: obj => "showTicketKey" in obj, get: obj => obj.showTicketKey, set: (obj, value) => { obj.showTicketKey = value; } }, metadata: _metadata }, _showTicketKey_initializers, _showTicketKey_extraInitializers);
|
|
126
131
|
__esDecorate(this, null, _editing_decorators, { kind: "accessor", name: "editing", static: false, private: false, access: { has: obj => "editing" in obj, get: obj => obj.editing, set: (obj, value) => { obj.editing = value; } }, metadata: _metadata }, _editing_initializers, _editing_extraInitializers);
|
|
127
132
|
__esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
|
|
128
133
|
DeesKanbanTicketDetail = _classThis = _classDescriptor.value;
|
|
@@ -170,24 +175,48 @@ let DeesKanbanTicketDetail = (() => {
|
|
|
170
175
|
#canGoBack_accessor_storage = (__runInitializers(this, _saving_extraInitializers), __runInitializers(this, _canGoBack_initializers, false));
|
|
171
176
|
get canGoBack() { return this.#canGoBack_accessor_storage; }
|
|
172
177
|
set canGoBack(value) { this.#canGoBack_accessor_storage = value; }
|
|
173
|
-
#
|
|
178
|
+
#showTicketKey_accessor_storage = (__runInitializers(this, _canGoBack_extraInitializers), __runInitializers(this, _showTicketKey_initializers, true));
|
|
179
|
+
/** Keep the identifier visible unless the containing surface already labels the ticket. */
|
|
180
|
+
get showTicketKey() { return this.#showTicketKey_accessor_storage; }
|
|
181
|
+
set showTicketKey(value) { this.#showTicketKey_accessor_storage = value; }
|
|
182
|
+
#editing_accessor_storage = (__runInitializers(this, _showTicketKey_extraInitializers), __runInitializers(this, _editing_initializers, false));
|
|
174
183
|
get editing() { return this.#editing_accessor_storage; }
|
|
175
184
|
set editing(value) { this.#editing_accessor_storage = value; }
|
|
176
185
|
static styles = [...kanbanStyles, css `
|
|
177
|
-
|
|
178
|
-
.
|
|
179
|
-
.
|
|
180
|
-
|
|
181
|
-
.
|
|
182
|
-
|
|
183
|
-
.
|
|
184
|
-
.
|
|
185
|
-
|
|
186
|
+
:host { padding: 24px; }
|
|
187
|
+
.layout { display: grid; grid-template-columns: minmax(0, 1fr) 248px; grid-template-areas: 'lead props' 'body props'; gap: 24px; align-items: start; }
|
|
188
|
+
.lead { grid-area: lead; min-width: 0; }
|
|
189
|
+
.body { grid-area: body; min-width: 0; }
|
|
190
|
+
.toolbar { margin-bottom: 20px; flex-wrap: nowrap; min-width: 0; }
|
|
191
|
+
.toolbar .badge { text-transform: capitalize; flex-shrink: 0; }
|
|
192
|
+
.ticket-key { flex-shrink: 0; font-variant-numeric: tabular-nums; }
|
|
193
|
+
.link.parent { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: var(--dees-font-footnote-size); }
|
|
194
|
+
.toolbar dees-button { flex-shrink: 0; }
|
|
195
|
+
h2 { font-size: var(--dees-font-title2-size); line-height: 1.3; font-weight: 600; margin-bottom: 12px; letter-spacing: -.015em; overflow-wrap: anywhere; }
|
|
196
|
+
.description { white-space: pre-wrap; font-size: var(--dees-font-subhead-size); line-height: 22px; overflow-wrap: anywhere; max-width: 64ch; }
|
|
197
|
+
aside { grid-area: props; min-width: 0; padding: 14px 16px; border-radius: var(--dees-radius-xl); corner-shape: var(--dees-corner-shape); background: var(--dees-color-settings-group); }
|
|
198
|
+
.fields { display: grid; gap: 14px; font-size: var(--dees-font-footnote-size); font-weight: 500; }
|
|
199
|
+
.fields label { display: block; margin-bottom: 5px; font-size: var(--dees-font-caption1-size); font-weight: 400; }
|
|
200
|
+
.value { min-height: var(--dees-control-height-lg); display: flex; align-items: center; }
|
|
201
|
+
.person { display: flex; align-items: center; gap: 7px; }
|
|
186
202
|
.children { margin-bottom: 24px; }
|
|
187
|
-
.child {
|
|
188
|
-
.
|
|
189
|
-
.
|
|
190
|
-
|
|
203
|
+
.child-list { border-radius: var(--dees-radius-xl); corner-shape: var(--dees-corner-shape); background: var(--dees-color-settings-group); overflow: hidden; }
|
|
204
|
+
.child { display: flex; width: 100%; align-items: center; gap: 10px; min-height: 44px; padding: 10px 12px; border: 0; background: transparent; color: inherit; font: inherit; text-align: left; cursor: pointer; }
|
|
205
|
+
.child + .child { border-top: 1px solid var(--dees-color-border-subtle); }
|
|
206
|
+
.child:hover { background: var(--dees-color-row-hover); }
|
|
207
|
+
.child:focus-visible { outline-offset: -3px; }
|
|
208
|
+
.child-key { font-size: var(--dees-font-caption1-size); color: var(--dees-color-text-secondary); font-variant-numeric: tabular-nums; flex-shrink: 0; }
|
|
209
|
+
.child-title { flex: 1; min-width: 0; font-size: var(--dees-font-footnote-size); font-weight: 500; overflow-wrap: anywhere; }
|
|
210
|
+
.child .badge { flex-shrink: 0; }
|
|
211
|
+
.discussion { border-top: 1px solid var(--dees-color-border-subtle); padding-top: 20px; }
|
|
212
|
+
.edit { display: grid; gap: 14px; }
|
|
213
|
+
@media (max-width: 700px) {
|
|
214
|
+
:host { padding: 16px; }
|
|
215
|
+
.layout { grid-template-columns: minmax(0, 1fr); grid-template-areas: 'lead' 'props' 'body'; gap: 20px; }
|
|
216
|
+
.fields { grid-template-columns: repeat(2, minmax(0, 1fr)); }
|
|
217
|
+
.toolbar { gap: 6px; margin-bottom: 16px; }
|
|
218
|
+
.child { gap: 7px; }
|
|
219
|
+
}
|
|
191
220
|
`];
|
|
192
221
|
updated(changed) {
|
|
193
222
|
const previous = changed.get('ticket');
|
|
@@ -211,12 +240,13 @@ let DeesKanbanTicketDetail = (() => {
|
|
|
211
240
|
const parents = this.tickets.filter(item => item.kind === (ticket.kind === 'subtask' ? 'task' : 'epic'));
|
|
212
241
|
return html `<div class="toolbar row">
|
|
213
242
|
${this.canGoBack ? html `<dees-button size="sm" type="ghost" icon="lucide:ArrowLeft" text="Back" @clicked=${() => kanbanEvent(this, 'kanban-detail-back', {})}></dees-button>` : ''}
|
|
214
|
-
<span class="badge">${ticket.kind}</span
|
|
215
|
-
${
|
|
243
|
+
<span class="badge">${ticket.kind}</span>
|
|
244
|
+
${this.showTicketKey ? html `<span class="caption ticket-key">${ticket.key}</span>` : ''}
|
|
245
|
+
${parent ? html `<span class="caption" aria-hidden="true">/</span><button class="link parent" title=${parent.title} @click=${() => kanbanEvent(this, 'kanban-ticket-open', { ticketId: parent.id })}>${parent.title}</button>` : ''}
|
|
216
246
|
<span class="spacer"></span>${editable && !this.editing ? html `<dees-button size="sm" type="ghost" text="Edit ticket" icon="lucide:Pencil" @clicked=${() => { this.editing = true; this.changeDraft({}); }}></dees-button>` : ''}
|
|
217
247
|
</div>
|
|
218
248
|
${this.error ? html `<p class="error" role="alert">${this.error}</p>` : ''}
|
|
219
|
-
<div class="layout"><
|
|
249
|
+
<div class="layout"><section class="lead">
|
|
220
250
|
${this.editing && editable ? html `<div class="edit">
|
|
221
251
|
<dees-input-text label="Title" .value=${draft.title} .disabled=${this.saving}
|
|
222
252
|
@input=${(event) => this.changeDraft({ title: String(event.currentTarget.value ?? '') })}></dees-input-text>
|
|
@@ -230,33 +260,36 @@ let DeesKanbanTicketDetail = (() => {
|
|
|
230
260
|
kanbanEvent(this, 'kanban-ticket-draft', { ticketId: ticket.id, draft: undefined });
|
|
231
261
|
}}></dees-button></div>
|
|
232
262
|
</div>` : html `<h2>${ticket.title}</h2><div class="description ${ticket.description ? '' : 'muted'}">${ticket.description || 'No description yet.'}</div>`}
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
@clicked=${() => kanbanEvent(this, 'kanban-ticket-create', { kind: ticket.kind === 'epic' ? 'task' : 'subtask', parentId: ticket.id, columnId: this.columns[0]?.id ?? ticket.columnId })}></dees-button>` : ''}</div>
|
|
236
|
-
${children.map(child => html `<div class="child"><button class="link" @click=${() => kanbanEvent(this, 'kanban-ticket-open', { ticketId: child.id })}>${ticketLabel(child)}</button>
|
|
237
|
-
<span class="badge">${this.columns.find(column => column.id === child.columnId)?.title ?? child.columnId}</span></div>`)}
|
|
238
|
-
${!children.length ? html `<p class="caption">No ${ticket.kind === 'epic' ? 'tasks' : 'subtasks'} yet.</p>` : ''}</section>` : ''}
|
|
239
|
-
<dees-kanban-discussion class="discussion" .ticketId=${ticket.id} .comments=${this.comments} .draft=${this.commentDraft}
|
|
240
|
-
.loading=${this.loadingComments} .error=${this.commentsError} .readOnly=${ticket.permissions?.comment === false}
|
|
241
|
-
.searchTickets=${this.searchTickets} .addComment=${this.provider.addComment ? this.addComment : undefined}></dees-kanban-discussion>
|
|
242
|
-
</div><aside><div class="fields">
|
|
243
|
-
<dees-input-dropdown label="Status" .options=${this.columns.map(column => ({ key: column.id, option: column.title }))}
|
|
263
|
+
</section><aside><div class="fields">
|
|
264
|
+
<div><label class="caption">Status</label><dees-input-dropdown label="Status" .labelPosition=${'none'} .options=${this.columns.map(column => ({ key: column.id, option: column.title }))}
|
|
244
265
|
.value=${{ key: ticket.columnId, option: this.columns.find(column => column.id === ticket.columnId)?.title ?? ticket.columnId }}
|
|
245
|
-
.disabled=${!movable || this.saving} @selectedOption=${(event) => kanbanEvent(this, 'kanban-ticket-move', { ticketId: ticket.id, columnId: event.detail.key })}></dees-input-dropdown>
|
|
266
|
+
.disabled=${!movable || this.saving} @selectedOption=${(event) => kanbanEvent(this, 'kanban-ticket-move', { ticketId: ticket.id, columnId: event.detail.key })}></dees-input-dropdown></div>
|
|
246
267
|
${this.editing && editable ? html `
|
|
247
|
-
<dees-input-dropdown label="Priority" .disabled=${this.saving} .value=${{ key: draft.priority, option: draft.priority }}
|
|
268
|
+
<div><label class="caption">Priority</label><dees-input-dropdown label="Priority" .labelPosition=${'none'} .disabled=${this.saving} .value=${{ key: draft.priority, option: draft.priority }}
|
|
248
269
|
.options=${['none', 'low', 'normal', 'high', 'urgent'].map(key => ({ key, option: key }))}
|
|
249
|
-
@selectedOption=${(event) => this.changeDraft({ priority: event.detail.key })}></dees-input-dropdown>
|
|
250
|
-
<dees-input-dropdown label="Assignee" .disabled=${this.saving} .value=${{ key: draft.assigneeId, option: this.people.find(person => person.id === draft.assigneeId)?.name ?? ticket.assignee?.name ?? 'Unassigned' }}
|
|
270
|
+
@selectedOption=${(event) => this.changeDraft({ priority: event.detail.key })}></dees-input-dropdown></div>
|
|
271
|
+
<div><label class="caption">Assignee</label><dees-input-dropdown label="Assignee" .labelPosition=${'none'} .disabled=${this.saving} .value=${{ key: draft.assigneeId, option: this.people.find(person => person.id === draft.assigneeId)?.name ?? ticket.assignee?.name ?? 'Unassigned' }}
|
|
251
272
|
.options=${[{ key: '', option: 'Unassigned' }, ...this.people.map(person => ({ key: person.id, option: person.name }))]}
|
|
252
|
-
@selectedOption=${(event) => this.changeDraft({ assigneeId: event.detail.key })}></dees-input-dropdown>
|
|
253
|
-
${ticket.kind !== 'epic' ? html `<dees-input-dropdown label=${ticket.kind === 'task' ? 'Epic' : 'Parent task'} .disabled=${this.saving}
|
|
273
|
+
@selectedOption=${(event) => this.changeDraft({ assigneeId: event.detail.key })}></dees-input-dropdown></div>
|
|
274
|
+
${ticket.kind !== 'epic' ? html `<div><label class="caption">${ticket.kind === 'task' ? 'Epic' : 'Parent task'}</label><dees-input-dropdown label=${ticket.kind === 'task' ? 'Epic' : 'Parent task'} .labelPosition=${'none'} .disabled=${this.saving}
|
|
254
275
|
.value=${{ key: draft.parentId, option: parents.find(item => item.id === draft.parentId)?.title ?? 'None' }}
|
|
255
276
|
.options=${[...(ticket.kind === 'task' ? [{ key: '', option: 'None' }] : []), ...parents.map(item => ({ key: item.id, option: ticketLabel(item) }))]}
|
|
256
|
-
@selectedOption=${(event) => this.changeDraft({ parentId: event.detail.key })}></dees-input-dropdown>` : ''}
|
|
257
|
-
` : html `<div><label class="caption">Priority</label
|
|
258
|
-
|
|
259
|
-
|
|
277
|
+
@selectedOption=${(event) => this.changeDraft({ parentId: event.detail.key })}></dees-input-dropdown></div>` : ''}
|
|
278
|
+
` : html `<div><label class="caption">Priority</label><span class="priority value" data-priority=${ticket.priority ?? 'none'}><dees-icon .icon=${kanbanPriorityIcon(ticket.priority)} iconSize="13" aria-hidden="true"></dees-icon>${ticket.priority ?? 'none'}</span></div>
|
|
279
|
+
<div><label class="caption">Assignee</label><span class="person value"><span class="avatar" aria-hidden="true">${ticket.assignee ? kanbanInitials(ticket.assignee.name) : '–'}</span>${ticket.assignee?.name ?? 'Unassigned'}</span></div>`}
|
|
280
|
+
${ticket.labels?.length ? html `<div><label class="caption">Labels</label><div class="row value">${ticket.labels.map(label => html `<span class="badge">${label}</span>`)}</div></div>` : ''}
|
|
281
|
+
</div></aside><div class="body">
|
|
282
|
+
${ticket.kind !== 'subtask' ? html `<section class="children"><div class="section-title"><h3>${ticket.kind === 'epic' ? 'Tasks' : 'Subtasks'}</h3><span class="count">${children.length}</span><span class="spacer"></span>
|
|
283
|
+
${this.provider.createTicket && ticket.permissions?.createChild !== false ? html `<dees-button size="sm" type="ghost" icon="lucide:Plus" text=${ticket.kind === 'epic' ? 'Add task' : 'Add subtask'}
|
|
284
|
+
@clicked=${() => kanbanEvent(this, 'kanban-ticket-create', { kind: ticket.kind === 'epic' ? 'task' : 'subtask', parentId: ticket.id, columnId: this.columns[0]?.id ?? ticket.columnId })}></dees-button>` : ''}</div>
|
|
285
|
+
<div class="child-list">${children.map(child => html `<button class="child" @click=${() => kanbanEvent(this, 'kanban-ticket-open', { ticketId: child.id })}>
|
|
286
|
+
<span class="child-key">${child.key}</span><span class="child-title">${child.title}</span>
|
|
287
|
+
<span class="badge">${this.columns.find(column => column.id === child.columnId)?.title ?? child.columnId}</span></button>`)}</div>
|
|
288
|
+
${!children.length ? html `<p class="caption">No ${ticket.kind === 'epic' ? 'tasks' : 'subtasks'} yet.</p>` : ''}</section>` : ''}
|
|
289
|
+
<dees-kanban-discussion class="discussion" .ticketId=${ticket.id} .comments=${this.comments} .draft=${this.commentDraft}
|
|
290
|
+
.loading=${this.loadingComments} .error=${this.commentsError} .readOnly=${ticket.permissions?.comment === false}
|
|
291
|
+
.searchTickets=${this.searchTickets} .addComment=${this.provider.addComment ? this.addComment : undefined}></dees-kanban-discussion>
|
|
292
|
+
</div></div>`;
|
|
260
293
|
}
|
|
261
294
|
finishEditing() { this.editing = false; }
|
|
262
295
|
static {
|
|
@@ -266,4 +299,4 @@ let DeesKanbanTicketDetail = (() => {
|
|
|
266
299
|
return DeesKanbanTicketDetail = _classThis;
|
|
267
300
|
})();
|
|
268
301
|
export { DeesKanbanTicketDetail };
|
|
269
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVlcy1rYW5iYW4tdGlja2V0LWRldGFpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3RzX3dlYi9lbGVtZW50cy8wMGdyb3VwLWthbmJhbi9kZWVzLWthbmJhbi10aWNrZXQtZGV0YWlsL2RlZXMta2FuYmFuLXRpY2tldC1kZXRhaWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsYUFBYSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBR3JHLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsV0FBVyxFQUFFLGlCQUFpQixFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUdoRyxPQUFPLHdEQUF3RCxDQUFDO0FBQ2hFLE9BQU8sZ0VBQWdFLENBQUM7QUFDeEUsT0FBTyxnRUFBZ0UsQ0FBQztBQUN4RSxPQUFPLHFEQUFxRCxDQUFDO0lBS2hELHNCQUFzQjs0QkFEbEMsYUFBYSxDQUFDLDJCQUEyQixDQUFDOzs7O3NCQUNDLFdBQVc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7c0NBQW5CLFNBQVEsV0FBVzs7OztrQ0FDcEQsUUFBUSxDQUFDLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDO21DQUM5QixRQUFRLENBQUMsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUM7bUNBQzlCLFFBQVEsQ0FBQyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQztrQ0FDOUIsUUFBUSxDQUFDLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDO29DQUM5QixRQUFRLENBQUMsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUM7aUNBQzlC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NEJBQ3ZFLENBQUMsS0FBNEMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFLFFBQVEsRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDOzBEQUNwRSxJQUFJLENBQUMsTUFBTSxXQUFXLEVBQUUsR0FBRyxFQUFFLEtBQUssQ0FBQyxVQUFVLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLEVBQUUsS0FBSyxLQUFLLENBQUMsVUFBVSxDQUFDLEVBQUUsSUFBSSxJQUFJLE1BQU0sQ0FBQyxRQUFRLEVBQUUsSUFBSSxJQUFJLFlBQVksRUFBRTtxQkFDdk0sQ0FBQyxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxFQUFFLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLE1BQU0sQ0FBQyxFQUFFLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7NEJBQ3JHLENBQUMsS0FBbUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFLFVBQVUsRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDO1VBQzdHLE1BQU0sQ0FBQyxJQUFJLEtBQUssTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUEsOEJBQThCLE1BQU0sQ0FBQyxJQUFJLEtBQUssTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLGFBQWEsY0FBYyxJQUFJLENBQUMsTUFBTTttQkFDMUgsRUFBRSxHQUFHLEVBQUUsS0FBSyxDQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUUsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssS0FBSyxDQUFDLFFBQVEsQ0FBQyxFQUFFLEtBQUssSUFBSSxNQUFNLEVBQUU7cUJBQ2hHLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEtBQUssTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFLE1BQU0sRUFBRSxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7NEJBQ2xJLENBQUMsS0FBbUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFLFFBQVEsRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLHlCQUF5QixDQUFDLENBQUMsQ0FBQyxFQUFFO09BQzVJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQSwrQ0FBK0MsTUFBTSxDQUFDLFFBQVEsSUFBSSxNQUFNLHFEQUFxRCxNQUFNLENBQUMsUUFBUSxFQUFFLElBQUksSUFBSSxZQUFZLFFBQVE7UUFDaEwsTUFBTSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQSw4REFBOEQsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUEsdUJBQXVCLEtBQUssU0FBUyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsRUFBRTt5QkFDakssQ0FBQztRQUN4QixDQUFDO1FBQ00sYUFBYSxLQUFXLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQzs7WUFqRzNDLHVEQUFzQjs7Ozs7U0FBdEIsc0JBQXNCIn0=
|
|
302
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVlcy1rYW5iYW4tdGlja2V0LWRldGFpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3RzX3dlYi9lbGVtZW50cy8wMGdyb3VwLWthbmJhbi9kZWVzLWthbmJhbi10aWNrZXQtZGV0YWlsL2RlZXMta2FuYmFuLXRpY2tldC1kZXRhaWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsYUFBYSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBR3JHLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsV0FBVyxFQUFFLGNBQWMsRUFBRSxrQkFBa0IsRUFBRSxpQkFBaUIsRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFHcEksT0FBTyx3REFBd0QsQ0FBQztBQUNoRSxPQUFPLGdFQUFnRSxDQUFDO0FBQ3hFLE9BQU8sZ0VBQWdFLENBQUM7QUFDeEUsT0FBTyxxREFBcUQsQ0FBQztJQUtoRCxzQkFBc0I7NEJBRGxDLGFBQWEsQ0FBQywyQkFBMkIsQ0FBQzs7OztzQkFDQyxXQUFXOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3NDQUFuQixTQUFRLFdBQVc7Ozs7a0NBQ3BELFFBQVEsQ0FBQyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQzttQ0FDOUIsUUFBUSxDQUFDLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDO21DQUM5QixRQUFRLENBQUMsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUM7a0NBQzlCLFFBQVEsQ0FBQyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQztvQ0FDOUIsUUFBUSxDQUFDLEVBQUUsU0FBUyxF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
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
import type { IKanbanTicket, IKanbanTicketDraft } from './interfaces.js';
|
|
1
|
+
import type { IKanbanTicket, IKanbanTicketDraft, TKanbanPriority } from './interfaces.js';
|
|
2
|
+
export declare const kanbanInitials: (name: string) => string;
|
|
3
|
+
export declare const kanbanPriorityIcon: (priority?: TKanbanPriority) => string;
|
|
2
4
|
export declare const sortKanbanTickets: (tickets: readonly IKanbanTicket[]) => IKanbanTicket[];
|
|
3
5
|
export declare const ticketLabel: (ticket: IKanbanTicket) => string;
|
|
4
6
|
export declare const ticketDraft: (ticket: IKanbanTicket) => IKanbanTicketDraft;
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
export const kanbanInitials = (name) => name.trim().split(/\s+/).map(part => part[0]).join('').slice(0, 2);
|
|
2
|
+
export const kanbanPriorityIcon = (priority) => priority === 'urgent' ? 'lucide:ChevronsUp' : priority === 'high' ? 'lucide:ChevronUp' : priority === 'low' ? 'lucide:ChevronDown' : 'lucide:Minus';
|
|
1
3
|
export const sortKanbanTickets = (tickets) => [...tickets].sort((a, b) => a.order - b.order || a.id.localeCompare(b.id));
|
|
2
4
|
export const ticketLabel = (ticket) => `#${ticket.key} ${ticket.title}`;
|
|
3
5
|
export const ticketDraft = (ticket) => ({
|
|
@@ -8,4 +10,4 @@ export const kanbanEvent = (owner, name, detail) => {
|
|
|
8
10
|
owner.dispatchEvent(new CustomEvent(name, { detail, bubbles: true, composed: true }));
|
|
9
11
|
};
|
|
10
12
|
export const kanbanError = (error) => error instanceof Error ? error.message : String(error);
|
|
11
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
13
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2FuYmFuLmhlbHBlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90c193ZWIvZWxlbWVudHMvMDBncm91cC1rYW5iYW4va2FuYmFuLmhlbHBlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLENBQUMsSUFBWSxFQUFVLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQzNILE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLENBQUMsUUFBMEIsRUFBVSxFQUFFLENBQ3ZFLFFBQVEsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxRQUFRLEtBQUssTUFBTSxDQUFDLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsUUFBUSxLQUFLLEtBQUssQ0FBQyxDQUFDLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQztBQUV0SixNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLE9BQWlDLEVBQW1CLEVBQUUsQ0FDdEYsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUM3RSxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsQ0FBQyxNQUFxQixFQUFVLEVBQUUsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxHQUFHLElBQUksTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO0FBQy9GLE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxDQUFDLE1BQXFCLEVBQXNCLEVBQUUsQ0FBQyxDQUFDO0lBQ3pFLEtBQUssRUFBRSxNQUFNLENBQUMsS0FBSyxFQUFFLFdBQVcsRUFBRSxNQUFNLENBQUMsV0FBVyxJQUFJLEVBQUUsRUFBRSxRQUFRLEVBQUUsTUFBTSxDQUFDLFFBQVEsSUFBSSxNQUFNO0lBQy9GLFVBQVUsRUFBRSxNQUFNLENBQUMsUUFBUSxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsUUFBUSxFQUFFLE1BQU0sQ0FBQyxRQUFRLElBQUksRUFBRTtDQUN2RSxDQUFDLENBQUM7QUFDSCxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsQ0FBSSxLQUFrQixFQUFFLElBQVksRUFBRSxNQUFTLEVBQVEsRUFBRTtJQUNsRixLQUFLLENBQUMsYUFBYSxDQUFDLElBQUksV0FBVyxDQUFDLElBQUksRUFBRSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDeEYsQ0FBQyxDQUFDO0FBQ0YsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLENBQUMsS0FBYyxFQUFVLEVBQUUsQ0FBQyxLQUFLLFlBQVksS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMifQ==
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { css, cssManager } from '@design.estate/dees-element';
|
|
2
2
|
import { themeDefaultStyles } from '../00theme.js';
|
|
3
3
|
export const kanbanStyles = [themeDefaultStyles, cssManager.defaultStyles, css `
|
|
4
|
-
:host { display: block; min-width: 0; font-family: var(--dees-font-family); color: var(--dees-color-text-primary); font-size: var(--dees-font-
|
|
4
|
+
:host { display: block; min-width: 0; font-family: var(--dees-font-family); color: var(--dees-color-text-primary); font-size: var(--dees-font-subhead-size); line-height: 1.5; }
|
|
5
5
|
* { box-sizing: border-box; }
|
|
6
6
|
h2, h3, p { margin: 0; }
|
|
7
7
|
.muted { color: var(--dees-color-text-secondary); }
|
|
@@ -13,6 +13,14 @@ export const kanbanStyles = [themeDefaultStyles, cssManager.defaultStyles, css `
|
|
|
13
13
|
button.link { border: 0; background: transparent; font: inherit; color: var(--dees-color-link); padding: 2px 0; text-align: left; cursor: pointer; overflow-wrap: anywhere; }
|
|
14
14
|
button:focus-visible, summary:focus-visible { outline: 2px solid var(--dees-color-focus-ring); outline-offset: 3px; border-radius: var(--dees-radius-sm); }
|
|
15
15
|
dees-icon { font-size: 16px; }
|
|
16
|
-
.badge { display: inline-flex; align-items: center; gap: 4px; background: var(--dees-color-
|
|
16
|
+
.badge { display: inline-flex; align-items: center; gap: 4px; background: var(--dees-color-fill-tertiary); padding: 3px 7px; border-radius: var(--dees-radius-sm); font-size: var(--dees-font-caption1-size); color: var(--dees-color-text-secondary); }
|
|
17
|
+
.avatar { flex: 0 0 auto; width: 24px; height: 24px; border-radius: 50%; background: var(--dees-color-fill-secondary); color: var(--dees-color-text-secondary); display: inline-grid; place-items: center; font-size: 10px; font-weight: 600; line-height: 1; }
|
|
18
|
+
.priority { display: inline-flex; align-items: center; gap: 3px; font-size: var(--dees-font-caption1-size); color: var(--dees-color-text-secondary); text-transform: capitalize; }
|
|
19
|
+
.priority[data-priority=urgent] { color: var(--dees-color-text-error); }
|
|
20
|
+
.priority[data-priority=high] { color: var(--dees-color-text-warning); }
|
|
21
|
+
.priority dees-icon { font-size: 13px; }
|
|
22
|
+
.section-title { display: flex; align-items: center; gap: 8px; margin-bottom: 10px; }
|
|
23
|
+
.section-title h3 { font-size: var(--dees-font-footnote-size); font-weight: 600; }
|
|
24
|
+
.count { display: inline-grid; place-items: center; min-width: 20px; height: 20px; padding: 0 5px; border-radius: var(--dees-radius-sm); background: var(--dees-color-fill-tertiary); color: var(--dees-color-text-secondary); font-size: var(--dees-font-caption1-size); font-weight: 500; font-variant-numeric: tabular-nums; }
|
|
17
25
|
`];
|
|
18
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
26
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2FuYmFuLnN0eWxlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3RzX3dlYi9lbGVtZW50cy8wMGdyb3VwLWthbmJhbi9rYW5iYW4uc3R5bGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxHQUFHLEVBQUUsVUFBVSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDOUQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRW5ELE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxDQUFDLGtCQUFrQixFQUFFLFVBQVUsQ0FBQyxhQUFhLEVBQUUsR0FBRyxDQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBc0I3RSxDQUFDLENBQUMifQ==
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@design.estate/dees-catalog",
|
|
3
|
-
"version": "13.0.
|
|
3
|
+
"version": "13.0.1",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "A comprehensive library that provides dynamic web components for building sophisticated and modern web applications using JavaScript and TypeScript.",
|
|
6
6
|
"main": "dist_ts_web/index.js",
|
package/readme.md
CHANGED
|
@@ -2689,6 +2689,8 @@ discussion. It accepts `.ticket`, `.tickets`, `.columns`, `.people`, `.provider`
|
|
|
2689
2689
|
`.draft`, `.comments` and `.commentDraft`. It emits `kanban-ticket-save` and
|
|
2690
2690
|
`kanban-ticket-draft` intents; `dees-kanban` owns persistence, navigation and draft
|
|
2691
2691
|
caching. `finishEditing()` returns to the saved view after a successful update.
|
|
2692
|
+
The ticket key is visible by default. Set `.showTicketKey = false` only when the
|
|
2693
|
+
containing surface already displays it, as the board's modal heading does.
|
|
2692
2694
|
|
|
2693
2695
|
#### DeesKanbanDiscussion
|
|
2694
2696
|
|
|
@@ -2733,6 +2735,12 @@ and cancels obsolete searches. References participate in editor undo and clipboa
|
|
|
2733
2735
|
operations. Changing `.documentKey` resets history so undo cannot cross tickets.
|
|
2734
2736
|
|
|
2735
2737
|
Set `.trigger`, `.label`, `.placeholder`, `.searchLabel` and `.disabled` as needed.
|
|
2738
|
+
For an integrated composer, style `::part(editor)` and set
|
|
2739
|
+
`--dees-reference-min-height` (default `84px`) or `--dees-reference-font-size`
|
|
2740
|
+
(default `var(--dees-font-body-size)`). Keep a visible focus indicator when
|
|
2741
|
+
overriding the editor's border or outline; the Kanban discussion applies it to
|
|
2742
|
+
the surrounding composer.
|
|
2743
|
+
|
|
2736
2744
|
`reference-input` emits `{ value }`, `reference-open` emits `{ id, label }`, and
|
|
2737
2745
|
`reference-submit` requests submission on Ctrl/⌘ Enter. `referenceText(value)`
|
|
2738
2746
|
returns a plain-text representation. No callback means no reference picker.
|
|
@@ -3,6 +3,6 @@
|
|
|
3
3
|
*/
|
|
4
4
|
export const commitinfo = {
|
|
5
5
|
name: '@design.estate/dees-catalog',
|
|
6
|
-
version: '13.0.
|
|
6
|
+
version: '13.0.1',
|
|
7
7
|
description: 'A comprehensive library that provides dynamic web components for building sophisticated and modern web applications using JavaScript and TypeScript.'
|
|
8
8
|
}
|
|
@@ -35,18 +35,18 @@ export class DeesInputReference extends DeesElement {
|
|
|
35
35
|
:host { display: block; min-width: 0; color: var(--dees-color-text-primary); font-family: var(--dees-font-family); }
|
|
36
36
|
.editor { border: 1px solid var(--dees-color-border-default); border-radius: var(--dees-radius-lg); background: var(--dees-color-bg-primary); }
|
|
37
37
|
.editor:focus-within { outline: 2px solid var(--dees-color-focus-ring); outline-offset: 1px; }
|
|
38
|
-
.ProseMirror { padding: 12px; min-height: 84px; max-height: 260px; overflow: auto; outline: none; white-space: pre-wrap; overflow-wrap: anywhere; font-size: var(--dees-font-body-size); line-height: 1.6; }
|
|
38
|
+
.ProseMirror { padding: 12px; min-height: var(--dees-reference-min-height, 84px); max-height: 260px; overflow: auto; outline: none; white-space: pre-wrap; overflow-wrap: anywhere; font-size: var(--dees-reference-font-size, var(--dees-font-body-size)); line-height: 1.6; }
|
|
39
39
|
.ProseMirror p { margin: 0; }
|
|
40
40
|
.ProseMirror p + p { margin-top: 0; }
|
|
41
41
|
.ProseMirror:has(> p:only-child > br:only-child)::before { content: attr(data-placeholder); float: left; color: var(--dees-color-text-muted); pointer-events: none; height: 0; }
|
|
42
|
-
.ProseMirror [data-reference-id] { display: inline; padding: 1px 5px; border-radius: var(--dees-radius-sm); color: var(--dees-color-link); background: var(--dees-color-
|
|
42
|
+
.ProseMirror [data-reference-id] { display: inline; padding: 1px 5px; border-radius: var(--dees-radius-sm); color: var(--dees-color-link); background: var(--dees-color-fill-tertiary); cursor: pointer; font-weight: 500; }
|
|
43
43
|
.ProseMirror [data-reference-id]:focus-visible, .ProseMirror .ProseMirror-selectednode { outline: 2px solid var(--dees-color-focus-ring); }
|
|
44
44
|
.ProseMirror[contenteditable=false] { opacity: .65; }
|
|
45
45
|
.error { color: var(--dees-color-text-error); font-size: var(--dees-font-footnote-size); }
|
|
46
46
|
`];
|
|
47
47
|
|
|
48
48
|
public render() {
|
|
49
|
-
return html`<div class="editor"></div>${this.loadError ? html`<p class="error" role="alert">${this.loadError}</p>` : ''}`;
|
|
49
|
+
return html`<div class="editor" part="editor"></div>${this.loadError ? html`<p class="error" role="alert">${this.loadError}</p>` : ''}`;
|
|
50
50
|
}
|
|
51
51
|
|
|
52
52
|
public async connectedCallback(): Promise<void> {
|
|
@@ -63,14 +63,27 @@ export class DeesKanban extends DeesElement {
|
|
|
63
63
|
private resolvedTickets = new Map<string, IKanbanTicket>();
|
|
64
64
|
|
|
65
65
|
public static styles = [...kanbanStyles, css`
|
|
66
|
-
:host { padding: 24px; background: var(--dees-color-bg-canvas); min-height: 100%; }
|
|
67
|
-
.heading { display: flex; gap: 12px; align-items: center; flex-wrap: wrap; margin-bottom:
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
.
|
|
71
|
-
.filters
|
|
72
|
-
.
|
|
73
|
-
|
|
66
|
+
:host { padding: 20px 24px; background: var(--dees-color-bg-canvas); min-height: 100%; }
|
|
67
|
+
.heading { display: flex; gap: 12px; align-items: center; flex-wrap: wrap; margin-bottom: 16px; }
|
|
68
|
+
.identity { display: flex; gap: 12px; align-items: baseline; flex: 1; min-width: 220px; flex-wrap: wrap; }
|
|
69
|
+
h2 { font-size: var(--dees-font-title3-size); font-weight: 600; letter-spacing: -.02em; line-height: 1.3; overflow-wrap: anywhere; }
|
|
70
|
+
.totals { font-size: var(--dees-font-caption1-size); color: var(--dees-color-text-secondary); white-space: nowrap; }
|
|
71
|
+
.filters { display: flex; align-items: center; gap: 8px; }
|
|
72
|
+
.filters dees-input-text { width: 230px; min-width: 140px; }
|
|
73
|
+
.filters dees-input-dropdown { width: 180px; min-width: 140px; }
|
|
74
|
+
.actions { display: flex; gap: 8px; margin-left: auto; }
|
|
75
|
+
.columns { display: flex; gap: 20px; overflow-x: auto; padding: 3px 2px 16px; align-items: stretch; }
|
|
76
|
+
@media (max-width: 1100px) { .filters { order: 3; flex-basis: 100%; } .filters dees-input-text { flex: 1; max-width: 320px; } }
|
|
77
|
+
@media (max-width: 600px) {
|
|
78
|
+
:host { padding: 12px 16px; }
|
|
79
|
+
.heading { gap: 12px 8px; }
|
|
80
|
+
.identity { min-width: 100%; gap: 6px 10px; }
|
|
81
|
+
.actions { margin-left: 0; }
|
|
82
|
+
.filters { flex-wrap: wrap; }
|
|
83
|
+
.filters dees-input-text, .filters dees-input-dropdown { flex: 1; width: auto; min-width: 130px; }
|
|
84
|
+
.columns { margin: 0 -16px; padding: 3px 16px 16px; scroll-snap-type: x proximity; scroll-padding-inline: 16px; gap: 14px; }
|
|
85
|
+
dees-kanban-column { scroll-snap-align: start; flex: 0 0 86%; min-width: 0; max-width: none; }
|
|
86
|
+
}
|
|
74
87
|
`];
|
|
75
88
|
|
|
76
89
|
public async connectedCallback(): Promise<void> {
|
|
@@ -86,18 +99,18 @@ export class DeesKanban extends DeesElement {
|
|
|
86
99
|
(!query || [ticket.key, ticket.title, ticket.assignee?.name, ...ticket.labels ?? [],
|
|
87
100
|
...this.tickets.filter(child => child.parentId === ticket.id).map(child => `${child.key} ${child.title}`)].join(' ').toLocaleLowerCase().includes(query)));
|
|
88
101
|
const epic = epics.find(ticket => ticket.id === this.epicId);
|
|
89
|
-
return html`<header class="heading"><h2>${this.heading}</h2><span class="
|
|
90
|
-
|
|
91
|
-
@clicked=${() => { void this.createTicket({ kind: 'epic', columnId: this.columns[0].id }); }}></dees-button>
|
|
92
|
-
<dees-button type="accent" size="sm" icon="lucide:Plus" text="New task" .disabled=${!this.columns.length}
|
|
93
|
-
@clicked=${() => { void this.createTicket({ kind: 'task', columnId: this.columns[0].id, parentId: this.epicId || undefined }); }}></dees-button>` : ''}</header>
|
|
94
|
-
<div class="filters"><dees-input-text label="Search tickets" placeholder="Title, ticket number, assignee…" .value=${this.query}
|
|
102
|
+
return html`<header class="heading"><div class="identity"><h2>${this.heading}</h2><span class="totals">${tasks.length} tasks · ${epics.length} epics</span></div>
|
|
103
|
+
<div class="filters"><dees-input-text label="Search tickets" .labelPosition=${'none'} placeholder="Search tickets…" .value=${this.query}
|
|
95
104
|
@input=${(event: Event) => { this.query = String((event.currentTarget as DeesInputText).value ?? ''); }}></dees-input-text>
|
|
96
|
-
<dees-input-dropdown label="Epic" .value=${{ key: this.epicId, option: epic?.title ?? 'All epics' }}
|
|
105
|
+
<dees-input-dropdown label="Epic" .labelPosition=${'none'} .value=${{ key: this.epicId, option: epic?.title ?? 'All epics' }}
|
|
97
106
|
.options=${[{ key: '', option: 'All epics' }, ...epics.map(ticket => ({ key: ticket.id, option: ticket.title }))]}
|
|
98
107
|
@selectedOption=${(event: CustomEvent<{ key: string }>) => { this.epicId = event.detail.key; }}></dees-input-dropdown>
|
|
99
|
-
${epic ? html`<dees-button type="ghost"
|
|
108
|
+
${epic ? html`<dees-button type="ghost" text="Open epic" @clicked=${() => { void this.openTicket(epic.id); }}></dees-button>` : ''}
|
|
100
109
|
</div>
|
|
110
|
+
${this.provider.createTicket ? html`<div class="actions"><dees-button type="secondary" text="New epic" .disabled=${!this.columns.length}
|
|
111
|
+
@clicked=${() => { void this.createTicket({ kind: 'epic', columnId: this.columns[0].id }); }}></dees-button>
|
|
112
|
+
<dees-button type="accent" icon="lucide:Plus" text="New task" .disabled=${!this.columns.length}
|
|
113
|
+
@clicked=${() => { void this.createTicket({ kind: 'task', columnId: this.columns[0].id, parentId: this.epicId || undefined }); }}></dees-button></div>` : ''}</header>
|
|
101
114
|
${this.loading || this.openingTicket ? html`<p class="caption" role="status">${this.loading ? 'Loading board…' : 'Opening ticket…'}</p>` : ''}
|
|
102
115
|
${this.error || this.operationError ? html`<p class="error" role="alert">${this.error || this.operationError}</p>` : ''}
|
|
103
116
|
${!this.columns.length ? html`<p class="empty">No columns configured.</p>` : html`<div class="columns" aria-label=${this.heading}>
|
|
@@ -131,6 +144,7 @@ export class DeesKanban extends DeesElement {
|
|
|
131
144
|
this.selectedId = id;
|
|
132
145
|
if (!this.detail) {
|
|
133
146
|
this.detail = new DeesKanbanTicketDetail();
|
|
147
|
+
this.detail.showTicketKey = false;
|
|
134
148
|
for (const name of interactionEvents) this.detail.addEventListener(name, this.handleInteraction);
|
|
135
149
|
}
|
|
136
150
|
this.detail.ticket = ticket;
|
|
@@ -138,7 +152,7 @@ export class DeesKanban extends DeesElement {
|
|
|
138
152
|
this.syncDetail();
|
|
139
153
|
if (!this.modal && !this.modalOpening) {
|
|
140
154
|
this.modalOpening = DeesModal.createAndShow({ heading: ticket.key, width: 1000, maxWidth: 1040,
|
|
141
|
-
mobileFullscreen: true, content: html`${this.detail}`, menuOptions: [] });
|
|
155
|
+
mobileFullscreen: true, contentPadding: 0, content: html`${this.detail}`, menuOptions: [] });
|
|
142
156
|
const modal = await this.modalOpening;
|
|
143
157
|
this.modalOpening = undefined;
|
|
144
158
|
if (!this.isConnected) { await modal.destroy(); return; }
|