@ctrliq/quantic-components 1.67.3 → 1.67.5
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/card/card.component.d.ts +1 -2
- package/dist/card/card.component.js +9 -14
- package/dist/dropdown-menu/group.component.d.ts +1 -2
- package/dist/dropdown-menu/group.component.js +11 -10
- package/dist/field/field.component.d.ts +0 -3
- package/dist/field/field.component.js +20 -21
- package/dist/index.js.map +1 -1
- package/dist/inline-edit/index.d.ts +1 -2
- package/dist/inline-edit/index.js +11 -11
- package/dist/layout/index.stories.js +14 -4
- package/dist/layout/layout.component.js +58 -11
- package/dist/meta/index.js.map +1 -1
- package/dist/quantic-components.js +176 -103
- package/dist/quantic-components.js.map +1 -1
- package/dist/quantic-components.min.js +1919 -1860
- package/dist/quantic-components.min.js.map +1 -1
- package/dist/shared/auto-hide-empty-slots.mixin.js +8 -5
- package/dist/shared/slot-utils.d.ts +19 -0
- package/dist/shared/slot-utils.js +26 -0
- package/dist/table/table.component.js +1 -1
- package/dist/types/card/card.component.d.ts +1 -2
- package/dist/types/dropdown-menu/group.component.d.ts +1 -2
- package/dist/types/field/field.component.d.ts +0 -3
- package/dist/types/inline-edit/index.d.ts +1 -2
- package/dist/types/shared/slot-utils.d.ts +19 -0
- package/package.json +1 -1
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { unsafeCSS, } from 'lit';
|
|
2
|
+
import { escapeCssString, whenSlotPresent } from './slot-utils';
|
|
2
3
|
/**
|
|
3
4
|
* Mixin that automatically hides empty named slots using CSS only.
|
|
4
5
|
*
|
|
@@ -31,11 +32,13 @@ export const AutoHideEmptySlotsMixin = (superClass, namedSlots = []) => {
|
|
|
31
32
|
? style.cssText
|
|
32
33
|
: Array.from(style.cssRules, (rule) => rule.cssText).join('\n');
|
|
33
34
|
const slotRulesCSS = namedSlots
|
|
34
|
-
.map((name) =>
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
35
|
+
.map((name) => {
|
|
36
|
+
const escaped = escapeCssString(name);
|
|
37
|
+
return [
|
|
38
|
+
`slot[name="${escaped}"] { display: none; }`,
|
|
39
|
+
whenSlotPresent(name, unsafeCSS(`slot[name="${escaped}"] { display: revert-layer; }`)).cssText,
|
|
40
|
+
].join(' ');
|
|
41
|
+
})
|
|
39
42
|
.join(' ');
|
|
40
43
|
class AutoHideEmptySlotsClass extends superClass {
|
|
41
44
|
static finalizeStyles(styles) {
|
|
@@ -22,3 +22,22 @@ export declare function onSlotChange(setter: (has: boolean) => void): (e: Event)
|
|
|
22
22
|
* html`<slot @slotchange=${onSlotTextChange((t) => (this._labelText = t))}></slot>`
|
|
23
23
|
*/
|
|
24
24
|
export declare function onSlotTextChange(setter: (text: string) => void): (e: Event) => void;
|
|
25
|
+
import { type CSSResult } from 'lit';
|
|
26
|
+
/**
|
|
27
|
+
* Generates a CSSResult that applies `rules` when the host has a light DOM
|
|
28
|
+
* child with the given slot name. Two forms are emitted for cross-browser
|
|
29
|
+
* Declarative Shadow DOM compatibility:
|
|
30
|
+
*
|
|
31
|
+
* - `:host(:has([slot="name"])) { rules }` — standard shadow DOM (Safari, Firefox)
|
|
32
|
+
* - `@scope { :scope:has([slot="name"]) { rules } }` — Chrome DSD
|
|
33
|
+
*
|
|
34
|
+
* @example
|
|
35
|
+
* whenSlotPresent('action-icon', css`
|
|
36
|
+
* .main { padding-right: calc(var(--quantic-component-card-padding) * 2); }
|
|
37
|
+
* `)
|
|
38
|
+
*/
|
|
39
|
+
export declare function whenSlotPresent(slotName: string, rules: CSSResult): CSSResult;
|
|
40
|
+
/**
|
|
41
|
+
* Escapes a value for safe interpolation inside a double-quoted CSS string.
|
|
42
|
+
*/
|
|
43
|
+
export declare function escapeCssString(value: string): string;
|
|
@@ -36,3 +36,29 @@ export function onSlotChange(setter) {
|
|
|
36
36
|
export function onSlotTextChange(setter) {
|
|
37
37
|
return (e) => setter(slotTextContent(e.target));
|
|
38
38
|
}
|
|
39
|
+
import { unsafeCSS } from 'lit';
|
|
40
|
+
/**
|
|
41
|
+
* Generates a CSSResult that applies `rules` when the host has a light DOM
|
|
42
|
+
* child with the given slot name. Two forms are emitted for cross-browser
|
|
43
|
+
* Declarative Shadow DOM compatibility:
|
|
44
|
+
*
|
|
45
|
+
* - `:host(:has([slot="name"])) { rules }` — standard shadow DOM (Safari, Firefox)
|
|
46
|
+
* - `@scope { :scope:has([slot="name"]) { rules } }` — Chrome DSD
|
|
47
|
+
*
|
|
48
|
+
* @example
|
|
49
|
+
* whenSlotPresent('action-icon', css`
|
|
50
|
+
* .main { padding-right: calc(var(--quantic-component-card-padding) * 2); }
|
|
51
|
+
* `)
|
|
52
|
+
*/
|
|
53
|
+
export function whenSlotPresent(slotName, rules) {
|
|
54
|
+
const r = rules.cssText;
|
|
55
|
+
const name = escapeCssString(slotName);
|
|
56
|
+
return unsafeCSS(`:host(:has([slot="${name}"])) { ${r} } ` +
|
|
57
|
+
`@scope { :scope:has([slot="${name}"]) { ${r} } }`);
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Escapes a value for safe interpolation inside a double-quoted CSS string.
|
|
61
|
+
*/
|
|
62
|
+
export function escapeCssString(value) {
|
|
63
|
+
return value.replace(/["\\]/g, '\\$&');
|
|
64
|
+
}
|
|
@@ -148,7 +148,7 @@ __decorate([
|
|
|
148
148
|
prop({ type: 'TableVariant', options: Object.values(TableVariant), default: TableVariant.Outline, reflect: true, description: 'Visual style. "outline" adds row borders; "striped" alternates row backgrounds; "minimal" removes borders.' })
|
|
149
149
|
], Table.prototype, "variant", void 0);
|
|
150
150
|
__decorate([
|
|
151
|
-
prop({ type: 'boolean', default: 'false', description: 'Reduces cell padding for compact display.' })
|
|
151
|
+
prop({ type: 'boolean', default: 'false', reflect: true, description: 'Reduces cell padding for compact display.' })
|
|
152
152
|
], Table.prototype, "dense", void 0);
|
|
153
153
|
__decorate([
|
|
154
154
|
prop({ type: 'string', attribute: 'aria-label', description: 'Accessible label for the table.' })
|
|
@@ -13,8 +13,7 @@ export declare class Card extends Card_base {
|
|
|
13
13
|
target: string | undefined;
|
|
14
14
|
rel: string | undefined;
|
|
15
15
|
download: string | undefined;
|
|
16
|
-
|
|
17
|
-
static styles: import("lit").CSSResult;
|
|
16
|
+
static styles: import("lit").CSSResult[];
|
|
18
17
|
render(): import("lit").TemplateResult;
|
|
19
18
|
}
|
|
20
19
|
export {};
|
|
@@ -4,8 +4,7 @@ declare const DropdownMenuGroup_base: typeof QuanticElement;
|
|
|
4
4
|
export declare class DropdownMenuGroup extends DropdownMenuGroup_base {
|
|
5
5
|
static meta: ComponentMeta;
|
|
6
6
|
label: string;
|
|
7
|
-
|
|
8
|
-
static styles: import("lit").CSSResult;
|
|
7
|
+
static styles: import("lit").CSSResult[];
|
|
9
8
|
render(): import("lit").TemplateResult<1>;
|
|
10
9
|
}
|
|
11
10
|
export {};
|
|
@@ -11,9 +11,6 @@ export declare class Field extends QuanticElement {
|
|
|
11
11
|
status: FieldValidationStatus | undefined;
|
|
12
12
|
size: FieldSize;
|
|
13
13
|
hintPosition: FieldHintPosition;
|
|
14
|
-
private hasLabelSlot;
|
|
15
|
-
private hasHintSlot;
|
|
16
|
-
private hasMessageSlot;
|
|
17
14
|
static styles: import("lit").CSSResult[];
|
|
18
15
|
render(): import("lit").TemplateResult<1>;
|
|
19
16
|
}
|
|
@@ -5,10 +5,9 @@ export declare class InlineEdit extends QuanticElement {
|
|
|
5
5
|
label: string;
|
|
6
6
|
active: boolean;
|
|
7
7
|
invalid: boolean;
|
|
8
|
-
private hasLabelSlot;
|
|
9
8
|
connectedCallback(): void;
|
|
10
9
|
disconnectedCallback(): void;
|
|
11
|
-
static styles: import("lit").CSSResult;
|
|
10
|
+
static styles: import("lit").CSSResult[];
|
|
12
11
|
private activate;
|
|
13
12
|
private deactivate;
|
|
14
13
|
private handleActivateClick;
|
|
@@ -22,3 +22,22 @@ export declare function onSlotChange(setter: (has: boolean) => void): (e: Event)
|
|
|
22
22
|
* html`<slot @slotchange=${onSlotTextChange((t) => (this._labelText = t))}></slot>`
|
|
23
23
|
*/
|
|
24
24
|
export declare function onSlotTextChange(setter: (text: string) => void): (e: Event) => void;
|
|
25
|
+
import { type CSSResult } from 'lit';
|
|
26
|
+
/**
|
|
27
|
+
* Generates a CSSResult that applies `rules` when the host has a light DOM
|
|
28
|
+
* child with the given slot name. Two forms are emitted for cross-browser
|
|
29
|
+
* Declarative Shadow DOM compatibility:
|
|
30
|
+
*
|
|
31
|
+
* - `:host(:has([slot="name"])) { rules }` — standard shadow DOM (Safari, Firefox)
|
|
32
|
+
* - `@scope { :scope:has([slot="name"]) { rules } }` — Chrome DSD
|
|
33
|
+
*
|
|
34
|
+
* @example
|
|
35
|
+
* whenSlotPresent('action-icon', css`
|
|
36
|
+
* .main { padding-right: calc(var(--quantic-component-card-padding) * 2); }
|
|
37
|
+
* `)
|
|
38
|
+
*/
|
|
39
|
+
export declare function whenSlotPresent(slotName: string, rules: CSSResult): CSSResult;
|
|
40
|
+
/**
|
|
41
|
+
* Escapes a value for safe interpolation inside a double-quoted CSS string.
|
|
42
|
+
*/
|
|
43
|
+
export declare function escapeCssString(value: string): string;
|