@ctrliq/quantic-components 1.67.0 → 1.67.2
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/alert/alert.d.ts +1 -1
- package/dist/alert/alert.js +4 -12
- package/dist/card/card-title.component.d.ts +1 -1
- package/dist/card/card-title.component.js +4 -12
- package/dist/card/card.component.d.ts +2 -1
- package/dist/card/card.component.js +9 -10
- package/dist/dialog/dialog-title.d.ts +1 -1
- package/dist/dialog/dialog-title.js +3 -11
- package/dist/dialog/dialog.d.ts +1 -1
- package/dist/dialog/dialog.js +4 -13
- package/dist/dropdown-menu/group.component.d.ts +2 -1
- package/dist/dropdown-menu/group.component.js +9 -3
- package/dist/field/field.component.d.ts +4 -3
- package/dist/field/field.component.js +59 -35
- package/dist/field/render-as-field.hoc.d.ts +1 -1
- package/dist/field/render-as-field.hoc.js +21 -8
- package/dist/index.js.map +1 -1
- package/dist/inline-edit/index.d.ts +2 -3
- package/dist/inline-edit/index.js +16 -8
- package/dist/layout/layout.component.d.ts +5 -2
- package/dist/layout/layout.component.js +28 -14
- package/dist/layout/sidebar.component.d.ts +1 -1
- package/dist/layout/sidebar.component.js +5 -5
- package/dist/meta/index.js.map +1 -1
- package/dist/option-card/option-card.component.d.ts +1 -1
- package/dist/option-card/option-card.component.js +4 -12
- package/dist/panel/panel-header.component.d.ts +1 -1
- package/dist/panel/panel-header.component.js +4 -16
- package/dist/panel/panel.component.d.ts +1 -1
- package/dist/panel/panel.component.js +4 -12
- package/dist/popover/popover-popup.d.ts +1 -1
- package/dist/popover/popover-popup.js +3 -3
- package/dist/popover/popover.d.ts +2 -2
- package/dist/quantic-components.js +252 -307
- package/dist/quantic-components.js.map +1 -1
- package/dist/quantic-components.min.js +1917 -1977
- package/dist/quantic-components.min.js.map +1 -1
- package/dist/shared/auto-hide-empty-slots.mixin.d.ts +19 -20
- package/dist/shared/auto-hide-empty-slots.mixin.js +43 -43
- package/dist/shared/quantic-element.d.ts +11 -1
- package/dist/shared/slot-utils.d.ts +24 -0
- package/dist/shared/slot-utils.js +38 -0
- package/dist/table/index.stories.d.ts +1 -0
- package/dist/table/index.stories.js +19 -0
- package/dist/table/table.component.d.ts +1 -1
- package/dist/table/table.component.js +3 -11
- package/dist/toast/toast.d.ts +1 -1
- package/dist/toast/toast.js +4 -12
- package/dist/toggle/index.d.ts +1 -1
- package/dist/toggle/index.js +1 -2
- package/dist/types/alert/alert.d.ts +1 -1
- package/dist/types/card/card-title.component.d.ts +1 -1
- package/dist/types/card/card.component.d.ts +2 -1
- package/dist/types/dialog/dialog-title.d.ts +1 -1
- package/dist/types/dialog/dialog.d.ts +1 -1
- package/dist/types/dropdown-menu/group.component.d.ts +2 -1
- package/dist/types/field/field.component.d.ts +4 -3
- package/dist/types/field/render-as-field.hoc.d.ts +1 -1
- package/dist/types/inline-edit/index.d.ts +2 -3
- package/dist/types/layout/layout.component.d.ts +5 -2
- package/dist/types/layout/sidebar.component.d.ts +1 -1
- package/dist/types/option-card/option-card.component.d.ts +1 -1
- package/dist/types/panel/panel-header.component.d.ts +1 -1
- package/dist/types/panel/panel.component.d.ts +1 -1
- package/dist/types/popover/popover-popup.d.ts +1 -1
- package/dist/types/popover/popover.d.ts +2 -2
- package/dist/types/shared/auto-hide-empty-slots.mixin.d.ts +19 -20
- package/dist/types/shared/quantic-element.d.ts +11 -1
- package/dist/types/shared/slot-utils.d.ts +24 -0
- package/dist/types/table/index.stories.d.ts +1 -0
- package/dist/types/table/table.component.d.ts +1 -1
- package/dist/types/toast/toast.d.ts +1 -1
- package/dist/types/toggle/index.d.ts +1 -1
- package/package.json +4 -4
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { QuanticElement } from '../shared/quantic-element';
|
|
2
2
|
import type { ComponentMeta } from '../shared/meta.types';
|
|
3
|
-
declare
|
|
4
|
-
export declare class InlineEdit extends InlineEdit_base {
|
|
3
|
+
export declare class InlineEdit extends QuanticElement {
|
|
5
4
|
static meta: ComponentMeta;
|
|
6
5
|
label: string;
|
|
7
6
|
active: boolean;
|
|
8
7
|
invalid: boolean;
|
|
8
|
+
private hasLabelSlot;
|
|
9
9
|
connectedCallback(): void;
|
|
10
10
|
disconnectedCallback(): void;
|
|
11
11
|
static styles: import("lit").CSSResult;
|
|
@@ -17,4 +17,3 @@ export declare class InlineEdit extends InlineEdit_base {
|
|
|
17
17
|
private handleFocusOut;
|
|
18
18
|
render(): import("lit").TemplateResult<1>;
|
|
19
19
|
}
|
|
20
|
-
export {};
|
|
@@ -5,19 +5,21 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
5
5
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
6
|
};
|
|
7
7
|
import { css, html } from 'lit';
|
|
8
|
+
import { state } from 'lit/decorators.js';
|
|
8
9
|
import { quanticElement, QuanticElement } from '../shared/quantic-element';
|
|
9
|
-
import {
|
|
10
|
+
import { onSlotChange } from '../shared/slot-utils';
|
|
10
11
|
import { IconSize } from '../icon/index.constants';
|
|
11
12
|
import { LucideIconPencil } from '../icon/__generated__/lucide/pencil';
|
|
12
13
|
import { classMap } from 'lit/directives/class-map.js';
|
|
13
14
|
import { event, prop } from '../shared/component-meta.decorators';
|
|
14
15
|
LucideIconPencil.ensureDefined();
|
|
15
|
-
let InlineEdit = class InlineEdit extends
|
|
16
|
+
let InlineEdit = class InlineEdit extends QuanticElement {
|
|
16
17
|
constructor() {
|
|
17
18
|
super(...arguments);
|
|
18
19
|
this.label = '';
|
|
19
20
|
this.active = false;
|
|
20
21
|
this.invalid = false;
|
|
22
|
+
this.hasLabelSlot = false;
|
|
21
23
|
this.handleActivateClick = () => {
|
|
22
24
|
if (!this.active)
|
|
23
25
|
this.activate();
|
|
@@ -75,7 +77,7 @@ let InlineEdit = class InlineEdit extends SlotContentMixin(QuanticElement) {
|
|
|
75
77
|
}
|
|
76
78
|
}
|
|
77
79
|
render() {
|
|
78
|
-
const hasLabel = this.
|
|
80
|
+
const hasLabel = this.hasLabelSlot || !!this.label;
|
|
79
81
|
return html `
|
|
80
82
|
<div
|
|
81
83
|
class="${classMap({
|
|
@@ -87,11 +89,9 @@ let InlineEdit = class InlineEdit extends SlotContentMixin(QuanticElement) {
|
|
|
87
89
|
@click=${this.handleActivateClick}
|
|
88
90
|
@keydown=${this.handleTriggerKey}
|
|
89
91
|
>
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
>`
|
|
94
|
-
: ''}
|
|
92
|
+
<span class=${classMap({ label: true, 'is-empty': !hasLabel })}
|
|
93
|
+
><slot name="label" @slotchange=${onSlotChange((has) => (this.hasLabelSlot = has))}>${this.label}</slot></span
|
|
94
|
+
>
|
|
95
95
|
<span class="value">
|
|
96
96
|
<span class="display">
|
|
97
97
|
<slot name="display"><span>—</span></slot>
|
|
@@ -164,6 +164,11 @@ InlineEdit.styles = css `
|
|
|
164
164
|
);
|
|
165
165
|
}
|
|
166
166
|
|
|
167
|
+
/* The label renders unconditionally so its slot exists to fire slotchange. */
|
|
168
|
+
.label.is-empty {
|
|
169
|
+
display: none;
|
|
170
|
+
}
|
|
171
|
+
|
|
167
172
|
.value {
|
|
168
173
|
min-width: 0;
|
|
169
174
|
display: flex;
|
|
@@ -239,6 +244,9 @@ __decorate([
|
|
|
239
244
|
__decorate([
|
|
240
245
|
prop({ type: 'boolean', default: 'false', description: 'When true, focusout does not close the editor. The editor stays open until the value is valid or the user cancels.' })
|
|
241
246
|
], InlineEdit.prototype, "invalid", void 0);
|
|
247
|
+
__decorate([
|
|
248
|
+
state()
|
|
249
|
+
], InlineEdit.prototype, "hasLabelSlot", void 0);
|
|
242
250
|
InlineEdit = __decorate([
|
|
243
251
|
event('cancel', { description: 'Fired on Escape. Consumer should revert optimistic state.' }),
|
|
244
252
|
quanticElement('quantic-inline-edit')
|
|
@@ -2,12 +2,16 @@ import { type PropertyValues } from 'lit';
|
|
|
2
2
|
import { LayoutVariant } from './index.constants';
|
|
3
3
|
import { QuanticElement } from '../shared/quantic-element';
|
|
4
4
|
import type { ComponentMeta } from '../shared/meta.types';
|
|
5
|
-
declare const Layout_base: typeof QuanticElement
|
|
5
|
+
declare const Layout_base: typeof QuanticElement;
|
|
6
6
|
export declare class Layout extends Layout_base {
|
|
7
7
|
static meta: ComponentMeta;
|
|
8
8
|
variant: LayoutVariant;
|
|
9
9
|
private isSmallViewport;
|
|
10
10
|
private previousIsSmallViewport?;
|
|
11
|
+
private hasSidebarSlot;
|
|
12
|
+
private hasTitlebarSlot;
|
|
13
|
+
private hasNavbarSlot;
|
|
14
|
+
private hasLogoSlot;
|
|
11
15
|
private asideElement?;
|
|
12
16
|
private toggleButtonElement?;
|
|
13
17
|
private focusTrap?;
|
|
@@ -23,7 +27,6 @@ export declare class Layout extends Layout_base {
|
|
|
23
27
|
disconnectedCallback(): void;
|
|
24
28
|
protected willUpdate(_props: PropertyValues): void;
|
|
25
29
|
protected updated(props: PropertyValues): void;
|
|
26
|
-
private handleSlotChange;
|
|
27
30
|
static styles: import("lit").CSSResult;
|
|
28
31
|
private get isAsideCollapsible();
|
|
29
32
|
private get hasSidebar();
|
|
@@ -5,11 +5,12 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
5
5
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
6
|
};
|
|
7
7
|
import { css } from 'lit';
|
|
8
|
-
import { query } from 'lit/decorators.js';
|
|
8
|
+
import { query, state } from 'lit/decorators.js';
|
|
9
9
|
import { html } from 'lit/static-html.js';
|
|
10
10
|
import { classMap } from 'lit/directives/class-map.js';
|
|
11
11
|
import { provide } from '@lit/context';
|
|
12
12
|
import { AutoHideEmptySlotsMixin } from '../shared/auto-hide-empty-slots.mixin';
|
|
13
|
+
import { onSlotChange } from '../shared/slot-utils';
|
|
13
14
|
import { respond, Breakpoint } from '../shared/respond.decorator';
|
|
14
15
|
import { LayoutVariant } from './index.constants';
|
|
15
16
|
import { asideExpandedContext } from './index.context';
|
|
@@ -20,10 +21,14 @@ import { QuanticElement, quanticElement } from '../shared/quantic-element';
|
|
|
20
21
|
import { prop } from '../shared/component-meta.decorators';
|
|
21
22
|
Button.ensureDefined();
|
|
22
23
|
LucideIconMenu.ensureDefined();
|
|
23
|
-
let Layout = class Layout extends AutoHideEmptySlotsMixin(QuanticElement) {
|
|
24
|
+
let Layout = class Layout extends AutoHideEmptySlotsMixin(QuanticElement, ['logo', 'titlebar', 'toolbar', 'navbar', 'sidebar']) {
|
|
24
25
|
constructor() {
|
|
25
26
|
super(...arguments);
|
|
26
27
|
this.variant = LayoutVariant.Default;
|
|
28
|
+
this.hasSidebarSlot = false;
|
|
29
|
+
this.hasTitlebarSlot = false;
|
|
30
|
+
this.hasNavbarSlot = false;
|
|
31
|
+
this.hasLogoSlot = false;
|
|
27
32
|
this._isAsideExpanded = true;
|
|
28
33
|
this.handleAsideExpand = (event) => {
|
|
29
34
|
this.isAsideExpanded = event.detail.expanded;
|
|
@@ -33,10 +38,6 @@ let Layout = class Layout extends AutoHideEmptySlotsMixin(QuanticElement) {
|
|
|
33
38
|
this.isAsideExpanded = false;
|
|
34
39
|
}
|
|
35
40
|
};
|
|
36
|
-
this.handleSlotChange = (event) => {
|
|
37
|
-
this.handleAutoHide(event);
|
|
38
|
-
this.requestUpdate();
|
|
39
|
-
};
|
|
40
41
|
}
|
|
41
42
|
get isAsideExpanded() {
|
|
42
43
|
return this._isAsideExpanded;
|
|
@@ -119,14 +120,16 @@ let Layout = class Layout extends AutoHideEmptySlotsMixin(QuanticElement) {
|
|
|
119
120
|
return this.isSmallViewport && this.hasSidebar;
|
|
120
121
|
}
|
|
121
122
|
get hasSidebar() {
|
|
122
|
-
return
|
|
123
|
+
return this.hasSidebarSlot;
|
|
123
124
|
}
|
|
124
125
|
get hasTitlebar() {
|
|
125
|
-
return
|
|
126
|
+
return this.hasTitlebarSlot;
|
|
126
127
|
}
|
|
127
128
|
get hasHeader() {
|
|
128
129
|
return (this.isAsideCollapsible ||
|
|
129
|
-
|
|
130
|
+
this.hasTitlebarSlot ||
|
|
131
|
+
this.hasNavbarSlot ||
|
|
132
|
+
this.hasLogoSlot);
|
|
130
133
|
}
|
|
131
134
|
render() {
|
|
132
135
|
const toggleButton = html `<quantic-button
|
|
@@ -143,12 +146,12 @@ let Layout = class Layout extends AutoHideEmptySlotsMixin(QuanticElement) {
|
|
|
143
146
|
const logo = html `<slot
|
|
144
147
|
name="logo"
|
|
145
148
|
class="logo"
|
|
146
|
-
@slotchange=${this.
|
|
149
|
+
@slotchange=${onSlotChange((has) => (this.hasLogoSlot = has))}
|
|
147
150
|
></slot>`;
|
|
148
151
|
const titlebar = html `<slot
|
|
149
152
|
class="titlebar"
|
|
150
153
|
name="titlebar"
|
|
151
|
-
@slotchange=${this.
|
|
154
|
+
@slotchange=${onSlotChange((has) => (this.hasTitlebarSlot = has))}
|
|
152
155
|
></slot> `;
|
|
153
156
|
return html `
|
|
154
157
|
<div
|
|
@@ -167,7 +170,7 @@ let Layout = class Layout extends AutoHideEmptySlotsMixin(QuanticElement) {
|
|
|
167
170
|
<slot
|
|
168
171
|
class="navbar"
|
|
169
172
|
name="navbar"
|
|
170
|
-
@slotchange=${this.
|
|
173
|
+
@slotchange=${onSlotChange((has) => (this.hasNavbarSlot = has))}
|
|
171
174
|
></slot>
|
|
172
175
|
</header>
|
|
173
176
|
|
|
@@ -176,7 +179,6 @@ let Layout = class Layout extends AutoHideEmptySlotsMixin(QuanticElement) {
|
|
|
176
179
|
<slot
|
|
177
180
|
name="toolbar"
|
|
178
181
|
class="toolbar"
|
|
179
|
-
@slotchange=${this.handleSlotChange}
|
|
180
182
|
></slot>
|
|
181
183
|
|
|
182
184
|
<div
|
|
@@ -196,7 +198,7 @@ let Layout = class Layout extends AutoHideEmptySlotsMixin(QuanticElement) {
|
|
|
196
198
|
<slot
|
|
197
199
|
class="sidebar"
|
|
198
200
|
name="sidebar"
|
|
199
|
-
@slotchange=${this.
|
|
201
|
+
@slotchange=${onSlotChange((has) => (this.hasSidebarSlot = has))}
|
|
200
202
|
></slot>
|
|
201
203
|
</aside>
|
|
202
204
|
|
|
@@ -482,6 +484,18 @@ __decorate([
|
|
|
482
484
|
__decorate([
|
|
483
485
|
respond(Breakpoint.below(1024))
|
|
484
486
|
], Layout.prototype, "isSmallViewport", void 0);
|
|
487
|
+
__decorate([
|
|
488
|
+
state()
|
|
489
|
+
], Layout.prototype, "hasSidebarSlot", void 0);
|
|
490
|
+
__decorate([
|
|
491
|
+
state()
|
|
492
|
+
], Layout.prototype, "hasTitlebarSlot", void 0);
|
|
493
|
+
__decorate([
|
|
494
|
+
state()
|
|
495
|
+
], Layout.prototype, "hasNavbarSlot", void 0);
|
|
496
|
+
__decorate([
|
|
497
|
+
state()
|
|
498
|
+
], Layout.prototype, "hasLogoSlot", void 0);
|
|
485
499
|
__decorate([
|
|
486
500
|
query('.aside')
|
|
487
501
|
], Layout.prototype, "asideElement", void 0);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { QuanticElement } from '../shared/quantic-element';
|
|
2
2
|
import type { ComponentMeta } from '../shared/meta.types';
|
|
3
|
-
declare const Sidebar_base: typeof QuanticElement
|
|
3
|
+
declare const Sidebar_base: typeof QuanticElement;
|
|
4
4
|
export declare class Sidebar extends Sidebar_base {
|
|
5
5
|
static meta: ComponentMeta;
|
|
6
6
|
isAsideExpanded?: boolean;
|
|
@@ -20,7 +20,7 @@ import { prop } from '../shared/component-meta.decorators';
|
|
|
20
20
|
SidebarMenuItem.ensureDefined();
|
|
21
21
|
LucideIconPanelLeftClose.ensureDefined();
|
|
22
22
|
LucideIconPanelLeft.ensureDefined();
|
|
23
|
-
let Sidebar = class Sidebar extends AutoHideEmptySlotsMixin(QuanticElement) {
|
|
23
|
+
let Sidebar = class Sidebar extends AutoHideEmptySlotsMixin(QuanticElement, ['header', 'footer']) {
|
|
24
24
|
constructor() {
|
|
25
25
|
super(...arguments);
|
|
26
26
|
this.ariaLabel = 'Sidebar navigation';
|
|
@@ -42,16 +42,16 @@ let Sidebar = class Sidebar extends AutoHideEmptySlotsMixin(QuanticElement) {
|
|
|
42
42
|
aria-expanded=${this.isAsideExpanded !== false ? 'true' : 'false'}
|
|
43
43
|
>
|
|
44
44
|
<div class="header">
|
|
45
|
-
<slot name="header"
|
|
45
|
+
<slot name="header"></slot>
|
|
46
46
|
</div>
|
|
47
47
|
|
|
48
48
|
<div class="scroll-area">
|
|
49
49
|
<div class="body">
|
|
50
|
-
<slot
|
|
50
|
+
<slot></slot>
|
|
51
51
|
</div>
|
|
52
52
|
|
|
53
53
|
<div class="footer">
|
|
54
|
-
<slot name="footer"
|
|
54
|
+
<slot name="footer"></slot>
|
|
55
55
|
</div>
|
|
56
56
|
|
|
57
57
|
${this.isDesktopViewport && this.collapsible
|
|
@@ -114,7 +114,7 @@ Sidebar.styles = css `
|
|
|
114
114
|
flex-shrink: 0;
|
|
115
115
|
}
|
|
116
116
|
|
|
117
|
-
|
|
117
|
+
:host(:not(:has([slot="header"]))) .header {
|
|
118
118
|
display: none;
|
|
119
119
|
}
|
|
120
120
|
|