aeico-components 0.1.2 → 0.1.4
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.cjs +6 -0
- package/dist/alert.cjs.map +1 -0
- package/dist/alert.js +6 -0
- package/dist/alert.js.map +1 -0
- package/dist/badge.cjs +6 -0
- package/dist/badge.cjs.map +1 -0
- package/dist/badge.js +6 -0
- package/dist/badge.js.map +1 -0
- package/dist/breadcrumb.cjs +7 -0
- package/dist/breadcrumb.cjs.map +1 -0
- package/dist/breadcrumb.js +7 -0
- package/dist/breadcrumb.js.map +1 -0
- package/dist/button-group.cjs +6 -0
- package/dist/button-group.cjs.map +1 -0
- package/dist/button-group.js +6 -0
- package/dist/button-group.js.map +1 -0
- package/dist/button.cjs +6 -0
- package/dist/button.cjs.map +1 -0
- package/dist/button.js +6 -0
- package/dist/button.js.map +1 -0
- package/dist/card.cjs +6 -0
- package/dist/card.cjs.map +1 -0
- package/dist/card.js +6 -0
- package/dist/card.js.map +1 -0
- package/dist/checkbox.cjs +6 -0
- package/dist/checkbox.cjs.map +1 -0
- package/dist/checkbox.js +6 -0
- package/dist/checkbox.js.map +1 -0
- package/dist/chunks/aeico-component.cjs +17 -0
- package/dist/chunks/aeico-component.cjs.map +1 -0
- package/dist/chunks/aeico-component.js +18 -0
- package/dist/chunks/aeico-component.js.map +1 -0
- package/dist/chunks/aeico-field.cjs +179 -0
- package/dist/chunks/aeico-field.cjs.map +1 -0
- package/dist/chunks/aeico-field.js +180 -0
- package/dist/chunks/aeico-field.js.map +1 -0
- package/dist/chunks/alert.cjs +170 -0
- package/dist/chunks/alert.cjs.map +1 -0
- package/dist/chunks/alert.js +171 -0
- package/dist/chunks/alert.js.map +1 -0
- package/dist/chunks/badge.cjs +85 -0
- package/dist/chunks/badge.cjs.map +1 -0
- package/dist/chunks/badge.js +86 -0
- package/dist/chunks/badge.js.map +1 -0
- package/dist/chunks/breadcrumb-item.cjs +261 -0
- package/dist/chunks/breadcrumb-item.cjs.map +1 -0
- package/dist/chunks/breadcrumb-item.js +262 -0
- package/dist/chunks/breadcrumb-item.js.map +1 -0
- package/dist/chunks/button-group.cjs +79 -0
- package/dist/chunks/button-group.cjs.map +1 -0
- package/dist/chunks/button-group.js +80 -0
- package/dist/chunks/button-group.js.map +1 -0
- package/dist/chunks/button.cjs +351 -0
- package/dist/chunks/button.cjs.map +1 -0
- package/dist/chunks/button.js +352 -0
- package/dist/chunks/button.js.map +1 -0
- package/dist/chunks/card.cjs +93 -0
- package/dist/chunks/card.cjs.map +1 -0
- package/dist/chunks/card.js +94 -0
- package/dist/chunks/card.js.map +1 -0
- package/dist/chunks/checkbox.cjs +73 -0
- package/dist/chunks/checkbox.cjs.map +1 -0
- package/dist/chunks/checkbox.js +74 -0
- package/dist/chunks/checkbox.js.map +1 -0
- package/dist/chunks/color.cjs +4 -0
- package/dist/chunks/color.cjs.map +1 -0
- package/dist/chunks/color.js +5 -0
- package/dist/chunks/color.js.map +1 -0
- package/dist/chunks/detail.cjs +143 -0
- package/dist/chunks/detail.cjs.map +1 -0
- package/dist/chunks/detail.js +144 -0
- package/dist/chunks/detail.js.map +1 -0
- package/dist/chunks/dialog.cjs +117 -0
- package/dist/chunks/dialog.cjs.map +1 -0
- package/dist/chunks/dialog.js +118 -0
- package/dist/chunks/dialog.js.map +1 -0
- package/dist/chunks/divider.cjs +80 -0
- package/dist/chunks/divider.cjs.map +1 -0
- package/dist/chunks/divider.js +81 -0
- package/dist/chunks/divider.js.map +1 -0
- package/dist/chunks/dropdown-button.cjs +534 -0
- package/dist/chunks/dropdown-button.cjs.map +1 -0
- package/dist/chunks/dropdown-button.js +535 -0
- package/dist/chunks/dropdown-button.js.map +1 -0
- package/dist/chunks/icon-button.cjs +35 -0
- package/dist/chunks/icon-button.cjs.map +1 -0
- package/dist/chunks/icon-button.js +36 -0
- package/dist/chunks/icon-button.js.map +1 -0
- package/dist/chunks/icon.cjs +78 -0
- package/dist/chunks/icon.cjs.map +1 -0
- package/dist/chunks/icon.js +79 -0
- package/dist/chunks/icon.js.map +1 -0
- package/dist/chunks/navbar.cjs +143 -0
- package/dist/chunks/navbar.cjs.map +1 -0
- package/dist/chunks/navbar.js +144 -0
- package/dist/chunks/navbar.js.map +1 -0
- package/dist/chunks/radio.cjs +181 -0
- package/dist/chunks/radio.cjs.map +1 -0
- package/dist/chunks/radio.js +182 -0
- package/dist/chunks/radio.js.map +1 -0
- package/dist/chunks/select.cjs +350 -0
- package/dist/chunks/select.cjs.map +1 -0
- package/dist/chunks/select.js +351 -0
- package/dist/chunks/select.js.map +1 -0
- package/dist/chunks/size.cjs +4 -0
- package/dist/chunks/size.cjs.map +1 -0
- package/dist/chunks/size.js +5 -0
- package/dist/chunks/size.js.map +1 -0
- package/dist/chunks/slider.cjs +648 -0
- package/dist/chunks/slider.cjs.map +1 -0
- package/dist/chunks/slider.js +649 -0
- package/dist/chunks/slider.js.map +1 -0
- package/dist/chunks/switch.cjs +73 -0
- package/dist/chunks/switch.cjs.map +1 -0
- package/dist/chunks/switch.js +74 -0
- package/dist/chunks/switch.js.map +1 -0
- package/dist/chunks/tab-panel.cjs +166 -0
- package/dist/chunks/tab-panel.cjs.map +1 -0
- package/dist/chunks/tab-panel.js +167 -0
- package/dist/chunks/tab-panel.js.map +1 -0
- package/dist/chunks/tag.cjs +108 -0
- package/dist/chunks/tag.cjs.map +1 -0
- package/dist/chunks/tag.js +109 -0
- package/dist/chunks/tag.js.map +1 -0
- package/dist/chunks/text-input.cjs +59 -0
- package/dist/chunks/text-input.cjs.map +1 -0
- package/dist/chunks/text-input.js +60 -0
- package/dist/chunks/text-input.js.map +1 -0
- package/dist/chunks/variables.cjs +372 -0
- package/dist/chunks/variables.cjs.map +1 -0
- package/dist/chunks/variables.js +373 -0
- package/dist/chunks/variables.js.map +1 -0
- package/dist/detail.cjs +6 -0
- package/dist/detail.cjs.map +1 -0
- package/dist/detail.js +6 -0
- package/dist/detail.js.map +1 -0
- package/dist/dialog.cjs +6 -0
- package/dist/dialog.cjs.map +1 -0
- package/dist/dialog.js +6 -0
- package/dist/dialog.js.map +1 -0
- package/dist/divider.cjs +6 -0
- package/dist/divider.cjs.map +1 -0
- package/dist/divider.js +6 -0
- package/dist/divider.js.map +1 -0
- package/dist/dropdown.cjs +7 -0
- package/dist/dropdown.cjs.map +1 -0
- package/dist/dropdown.js +7 -0
- package/dist/dropdown.js.map +1 -0
- package/dist/icon-button.cjs +6 -0
- package/dist/icon-button.cjs.map +1 -0
- package/dist/icon-button.js +6 -0
- package/dist/icon-button.js.map +1 -0
- package/dist/icon.cjs +6 -0
- package/dist/icon.cjs.map +1 -0
- package/dist/icon.js +6 -0
- package/dist/icon.js.map +1 -0
- package/dist/index.cjs +49 -4223
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +49 -4223
- package/dist/index.js.map +1 -1
- package/dist/navbar.cjs +6 -0
- package/dist/navbar.cjs.map +1 -0
- package/dist/navbar.js +6 -0
- package/dist/navbar.js.map +1 -0
- package/dist/radio-group.cjs +7 -0
- package/dist/radio-group.cjs.map +1 -0
- package/dist/radio-group.js +7 -0
- package/dist/radio-group.js.map +1 -0
- package/dist/select.cjs +99 -0
- package/dist/select.cjs.map +1 -0
- package/dist/select.js +99 -0
- package/dist/select.js.map +1 -0
- package/dist/slider.cjs +6 -0
- package/dist/slider.cjs.map +1 -0
- package/dist/slider.js +6 -0
- package/dist/slider.js.map +1 -0
- package/dist/switch.cjs +6 -0
- package/dist/switch.cjs.map +1 -0
- package/dist/switch.js +6 -0
- package/dist/switch.js.map +1 -0
- package/dist/tabs.cjs +8 -0
- package/dist/tabs.cjs.map +1 -0
- package/dist/tabs.js +8 -0
- package/dist/tabs.js.map +1 -0
- package/dist/tag.cjs +5 -0
- package/dist/tag.cjs.map +1 -0
- package/dist/tag.js +5 -0
- package/dist/tag.js.map +1 -0
- package/dist/text-input.cjs +6 -0
- package/dist/text-input.cjs.map +1 -0
- package/dist/text-input.js +6 -0
- package/dist/text-input.js.map +1 -0
- package/package.json +75 -63
- package/src/styles/color.css +117 -117
- package/src/styles/components/alert.css +104 -104
- package/src/styles/components/badge.css +67 -67
- package/src/styles/components/breadcrumb-item.css +59 -59
- package/src/styles/components/breadcrumb.css +19 -19
- package/src/styles/components/button-group.css +25 -25
- package/src/styles/components/button.css +213 -213
- package/src/styles/components/card.css +64 -64
- package/src/styles/components/checkbox.css +78 -78
- package/src/styles/components/detail.css +127 -127
- package/src/styles/components/dialog.css +103 -103
- package/src/styles/components/divider.css +18 -18
- package/src/styles/components/dropdown-item.css +91 -91
- package/src/styles/components/dropdown.css +179 -179
- package/src/styles/components/icon-button.css +116 -116
- package/src/styles/components/icon.css +29 -29
- package/src/styles/components/navbar.css +250 -250
- package/src/styles/components/radio-group.css +360 -360
- package/src/styles/components/select-option.css +43 -43
- package/src/styles/components/select.css +222 -222
- package/src/styles/components/slider.css +326 -326
- package/src/styles/components/switch.css +117 -117
- package/src/styles/components/tab-panel.css +8 -8
- package/src/styles/components/tab.css +44 -44
- package/src/styles/components/tabs.css +16 -16
- package/src/styles/components/tag.css +107 -107
- package/src/styles/components/text-input.css +110 -110
- package/src/styles/layout.css +43 -43
- package/src/styles/size.css +7 -7
- package/src/styles/variables.css +368 -368
- package/src/utils.ts +1 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"checkbox.cjs","sources":["../../src/checkbox/checkbox.ts"],"sourcesContent":["import AeicoField from '../aeico-field';\nimport type { InferProps, Props } from 'aeico';\nimport { html } from 'aeico';\nimport styleVariables from '../styles/variables.css?inline';\nimport sizeCSS from '../styles/size.css?inline';\nimport colorCSS from '../styles/color.css?inline';\nimport styles from '../styles/components/checkbox.css?inline';\nimport { CheckboxVariant } from './defines';\n\nclass Checkbox extends AeicoField {\n protected fieldElement: HTMLInputElement | null = null;\n\n static tagName = 'checkbox';\n\n static props: Props = {\n checked: { type: Boolean },\n defaultChecked: { type: Boolean },\n variant: { type: String },\n };\n\n declare checked?: boolean;\n declare defaultChecked?: boolean;\n declare variant?: CheckboxVariant;\n\n protected static styles = [styleVariables, sizeCSS, colorCSS, styles];\n\n protected getValue(): boolean {\n return this.fieldElement?.checked ?? false;\n }\n\n protected writeValue(checked: boolean): void {\n if (this.fieldElement) {\n this.fieldElement.checked = Boolean(checked);\n }\n }\n\n protected getEventPayload(checked: boolean, oldChecked: boolean, action: any) {\n return { checked, oldChecked, action };\n }\n\n protected setValue(checked: boolean, options?: { silent?: boolean; action?: any }): void {\n const oldChecked = this.getValue();\n this.checked = checked;\n this.writeValue(checked);\n if (options?.silent === false) {\n this.emit('change', {\n detail: this.getEventPayload(checked, oldChecked, options.action || 'change'),\n });\n }\n }\n\n public reset(checked?: boolean, options?: { silent?: boolean }): void {\n this.setValue(checked !== undefined ? checked : (this.defaultChecked ?? false), {\n ...options,\n action: 'reset',\n });\n }\n\n public clear(options?: { silent?: boolean }): void {\n this.setValue(false, { ...options, action: 'clear' });\n }\n\n render() {\n return html(({ div, input }) => {\n div({ className: 'checkbox-container', variant: this.variant }, () => {\n div({ className: 'checkbox-wrapper' }, () => {\n this.fieldElement = input({\n type: 'checkbox',\n className: 'field-input',\n checked: Boolean(this.checked),\n disabled: Boolean(this.disabled),\n '@change': this.boundOnChange,\n });\n });\n this.renderActionButtons();\n });\n });\n }\n}\n\nCheckbox.register();\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ae-checkbox': Checkbox;\n }\n}\n\nexport default Checkbox;\nexport type CheckboxProps = InferProps<typeof Checkbox>;\n"],"names":["AeicoField","html","styleVariables","sizeCSS","colorCSS"],"mappings":";;;;;;;;;;AASA,MAAM,iBAAiBA,WAAAA,WAAW;AAAA,EAAlC;AAAA;AACY,wCAAwC;AAAA;AAAA,EAgBxC,WAAoB;;AAC5B,aAAO,UAAK,iBAAL,mBAAmB,YAAW;AAAA,EACvC;AAAA,EAEU,WAAW,SAAwB;AAC3C,QAAI,KAAK,cAAc;AACrB,WAAK,aAAa,UAAU,QAAQ,OAAO;AAAA,IAC7C;AAAA,EACF;AAAA,EAEU,gBAAgB,SAAkB,YAAqB,QAAa;AAC5E,WAAO,EAAE,SAAS,YAAY,OAAA;AAAA,EAChC;AAAA,EAEU,SAAS,SAAkB,SAAoD;AACvF,UAAM,aAAa,KAAK,SAAA;AACxB,SAAK,UAAU;AACf,SAAK,WAAW,OAAO;AACvB,SAAI,mCAAS,YAAW,OAAO;AAC7B,WAAK,KAAK,UAAU;AAAA,QAClB,QAAQ,KAAK,gBAAgB,SAAS,YAAY,QAAQ,UAAU,QAAQ;AAAA,MAAA,CAC7E;AAAA,IACH;AAAA,EACF;AAAA,EAEO,MAAM,SAAmB,SAAsC;AACpE,SAAK,SAAS,YAAY,SAAY,UAAW,KAAK,kBAAkB,OAAQ;AAAA,MAC9E,GAAG;AAAA,MACH,QAAQ;AAAA,IAAA,CACT;AAAA,EACH;AAAA,EAEO,MAAM,SAAsC;AACjD,SAAK,SAAS,OAAO,EAAE,GAAG,SAAS,QAAQ,SAAS;AAAA,EACtD;AAAA,EAEA,SAAS;AACP,WAAOC,WAAK,CAAC,EAAE,KAAK,YAAY;AAC9B,UAAI,EAAE,WAAW,sBAAsB,SAAS,KAAK,QAAA,GAAW,MAAM;AACpE,YAAI,EAAE,WAAW,mBAAA,GAAsB,MAAM;AAC3C,eAAK,eAAe,MAAM;AAAA,YACxB,MAAM;AAAA,YACN,WAAW;AAAA,YACX,SAAS,QAAQ,KAAK,OAAO;AAAA,YAC7B,UAAU,QAAQ,KAAK,QAAQ;AAAA,YAC/B,WAAW,KAAK;AAAA,UAAA,CACjB;AAAA,QACH,CAAC;AACD,aAAK,oBAAA;AAAA,MACP,CAAC;AAAA,IACH,CAAC;AAAA,EACH;AACF;AAlEE,cAHI,UAGG,WAAU;AAEjB,cALI,UAKG,SAAe;AAAA,EACpB,SAAS,EAAE,MAAM,QAAA;AAAA,EACjB,gBAAgB,EAAE,MAAM,QAAA;AAAA,EACxB,SAAS,EAAE,MAAM,OAAA;AAAO;AAO1B,cAfI,UAea,UAAS,CAACC,UAAAA,gBAAgBC,KAAAA,SAASC,MAAAA,UAAU,MAAM;AAwDtE,SAAS,SAAA;;"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
3
|
+
var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
4
|
+
import { A as AeicoField } from "./aeico-field.js";
|
|
5
|
+
import { html } from "aeico";
|
|
6
|
+
import { s as styleVariables } from "./variables.js";
|
|
7
|
+
import { s as sizeCSS } from "./size.js";
|
|
8
|
+
import { c as colorCSS } from "./color.js";
|
|
9
|
+
const styles = ":host {\n display: block;\n flex: 1;\n min-width: 0;\n font-size: var(--size-base);\n\n /* Layout */\n --checkbox-field-gap: 4px;\n\n /* Checkbox */\n --checkbox-size: 1.167em;\n --checkbox-border-width: 1px;\n --checkbox-border-radius: 2px;\n --checkbox-border-color: var(--border-subtle);\n --checkbox-bg: var(--surface-base);\n --checkbox-accent-color: var(--color-solid);\n\n /* Default color when no [color] attribute — overridden by color.css :host([color=...]) */\n --color-solid: var(--color-primary);\n}\n\n.checkbox-container {\n display: flex;\n align-items: center;\n gap: var(--checkbox-field-gap);\n width: 100%;\n}\n\n.checkbox-wrapper {\n position: relative;\n display: inline-flex;\n align-items: center;\n}\n\n.field-input {\n width: var(--checkbox-size);\n height: var(--checkbox-size);\n cursor: pointer;\n border: var(--checkbox-border-width) solid var(--checkbox-border-color);\n border-radius: var(--checkbox-border-radius);\n background: var(--checkbox-bg);\n accent-color: var(--checkbox-accent-color);\n margin: 0;\n flex-shrink: 0;\n}\n\n.field-input:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n/* action buttons */\n.reset-btn,\n.clear-btn {\n width: 1.333em;\n height: 1.333em;\n border: none;\n border-radius: var(--reset-btn-border-radius);\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--reset-btn-bg);\n color: var(--reset-btn-color);\n transition: var(--reset-btn-transition);\n flex-shrink: 0;\n line-height: 1;\n}\n\n.reset-btn:hover {\n background: var(--reset-btn-bg-hover);\n color: var(--reset-btn-color-hover);\n}\n\n.clear-btn:hover {\n background: var(--clear-btn-bg-hover);\n color: var(--clear-btn-color-hover);\n}\n";
|
|
10
|
+
class Checkbox extends AeicoField {
|
|
11
|
+
constructor() {
|
|
12
|
+
super(...arguments);
|
|
13
|
+
__publicField(this, "fieldElement", null);
|
|
14
|
+
}
|
|
15
|
+
getValue() {
|
|
16
|
+
var _a;
|
|
17
|
+
return ((_a = this.fieldElement) == null ? void 0 : _a.checked) ?? false;
|
|
18
|
+
}
|
|
19
|
+
writeValue(checked) {
|
|
20
|
+
if (this.fieldElement) {
|
|
21
|
+
this.fieldElement.checked = Boolean(checked);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
getEventPayload(checked, oldChecked, action) {
|
|
25
|
+
return { checked, oldChecked, action };
|
|
26
|
+
}
|
|
27
|
+
setValue(checked, options) {
|
|
28
|
+
const oldChecked = this.getValue();
|
|
29
|
+
this.checked = checked;
|
|
30
|
+
this.writeValue(checked);
|
|
31
|
+
if ((options == null ? void 0 : options.silent) === false) {
|
|
32
|
+
this.emit("change", {
|
|
33
|
+
detail: this.getEventPayload(checked, oldChecked, options.action || "change")
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
reset(checked, options) {
|
|
38
|
+
this.setValue(checked !== void 0 ? checked : this.defaultChecked ?? false, {
|
|
39
|
+
...options,
|
|
40
|
+
action: "reset"
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
clear(options) {
|
|
44
|
+
this.setValue(false, { ...options, action: "clear" });
|
|
45
|
+
}
|
|
46
|
+
render() {
|
|
47
|
+
return html(({ div, input }) => {
|
|
48
|
+
div({ className: "checkbox-container", variant: this.variant }, () => {
|
|
49
|
+
div({ className: "checkbox-wrapper" }, () => {
|
|
50
|
+
this.fieldElement = input({
|
|
51
|
+
type: "checkbox",
|
|
52
|
+
className: "field-input",
|
|
53
|
+
checked: Boolean(this.checked),
|
|
54
|
+
disabled: Boolean(this.disabled),
|
|
55
|
+
"@change": this.boundOnChange
|
|
56
|
+
});
|
|
57
|
+
});
|
|
58
|
+
this.renderActionButtons();
|
|
59
|
+
});
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
__publicField(Checkbox, "tagName", "checkbox");
|
|
64
|
+
__publicField(Checkbox, "props", {
|
|
65
|
+
checked: { type: Boolean },
|
|
66
|
+
defaultChecked: { type: Boolean },
|
|
67
|
+
variant: { type: String }
|
|
68
|
+
});
|
|
69
|
+
__publicField(Checkbox, "styles", [styleVariables, sizeCSS, colorCSS, styles]);
|
|
70
|
+
Checkbox.register();
|
|
71
|
+
export {
|
|
72
|
+
Checkbox as C
|
|
73
|
+
};
|
|
74
|
+
//# sourceMappingURL=checkbox.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"checkbox.js","sources":["../../src/checkbox/checkbox.ts"],"sourcesContent":["import AeicoField from '../aeico-field';\nimport type { InferProps, Props } from 'aeico';\nimport { html } from 'aeico';\nimport styleVariables from '../styles/variables.css?inline';\nimport sizeCSS from '../styles/size.css?inline';\nimport colorCSS from '../styles/color.css?inline';\nimport styles from '../styles/components/checkbox.css?inline';\nimport { CheckboxVariant } from './defines';\n\nclass Checkbox extends AeicoField {\n protected fieldElement: HTMLInputElement | null = null;\n\n static tagName = 'checkbox';\n\n static props: Props = {\n checked: { type: Boolean },\n defaultChecked: { type: Boolean },\n variant: { type: String },\n };\n\n declare checked?: boolean;\n declare defaultChecked?: boolean;\n declare variant?: CheckboxVariant;\n\n protected static styles = [styleVariables, sizeCSS, colorCSS, styles];\n\n protected getValue(): boolean {\n return this.fieldElement?.checked ?? false;\n }\n\n protected writeValue(checked: boolean): void {\n if (this.fieldElement) {\n this.fieldElement.checked = Boolean(checked);\n }\n }\n\n protected getEventPayload(checked: boolean, oldChecked: boolean, action: any) {\n return { checked, oldChecked, action };\n }\n\n protected setValue(checked: boolean, options?: { silent?: boolean; action?: any }): void {\n const oldChecked = this.getValue();\n this.checked = checked;\n this.writeValue(checked);\n if (options?.silent === false) {\n this.emit('change', {\n detail: this.getEventPayload(checked, oldChecked, options.action || 'change'),\n });\n }\n }\n\n public reset(checked?: boolean, options?: { silent?: boolean }): void {\n this.setValue(checked !== undefined ? checked : (this.defaultChecked ?? false), {\n ...options,\n action: 'reset',\n });\n }\n\n public clear(options?: { silent?: boolean }): void {\n this.setValue(false, { ...options, action: 'clear' });\n }\n\n render() {\n return html(({ div, input }) => {\n div({ className: 'checkbox-container', variant: this.variant }, () => {\n div({ className: 'checkbox-wrapper' }, () => {\n this.fieldElement = input({\n type: 'checkbox',\n className: 'field-input',\n checked: Boolean(this.checked),\n disabled: Boolean(this.disabled),\n '@change': this.boundOnChange,\n });\n });\n this.renderActionButtons();\n });\n });\n }\n}\n\nCheckbox.register();\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ae-checkbox': Checkbox;\n }\n}\n\nexport default Checkbox;\nexport type CheckboxProps = InferProps<typeof Checkbox>;\n"],"names":[],"mappings":";;;;;;;;;AASA,MAAM,iBAAiB,WAAW;AAAA,EAAlC;AAAA;AACY,wCAAwC;AAAA;AAAA,EAgBxC,WAAoB;;AAC5B,aAAO,UAAK,iBAAL,mBAAmB,YAAW;AAAA,EACvC;AAAA,EAEU,WAAW,SAAwB;AAC3C,QAAI,KAAK,cAAc;AACrB,WAAK,aAAa,UAAU,QAAQ,OAAO;AAAA,IAC7C;AAAA,EACF;AAAA,EAEU,gBAAgB,SAAkB,YAAqB,QAAa;AAC5E,WAAO,EAAE,SAAS,YAAY,OAAA;AAAA,EAChC;AAAA,EAEU,SAAS,SAAkB,SAAoD;AACvF,UAAM,aAAa,KAAK,SAAA;AACxB,SAAK,UAAU;AACf,SAAK,WAAW,OAAO;AACvB,SAAI,mCAAS,YAAW,OAAO;AAC7B,WAAK,KAAK,UAAU;AAAA,QAClB,QAAQ,KAAK,gBAAgB,SAAS,YAAY,QAAQ,UAAU,QAAQ;AAAA,MAAA,CAC7E;AAAA,IACH;AAAA,EACF;AAAA,EAEO,MAAM,SAAmB,SAAsC;AACpE,SAAK,SAAS,YAAY,SAAY,UAAW,KAAK,kBAAkB,OAAQ;AAAA,MAC9E,GAAG;AAAA,MACH,QAAQ;AAAA,IAAA,CACT;AAAA,EACH;AAAA,EAEO,MAAM,SAAsC;AACjD,SAAK,SAAS,OAAO,EAAE,GAAG,SAAS,QAAQ,SAAS;AAAA,EACtD;AAAA,EAEA,SAAS;AACP,WAAO,KAAK,CAAC,EAAE,KAAK,YAAY;AAC9B,UAAI,EAAE,WAAW,sBAAsB,SAAS,KAAK,QAAA,GAAW,MAAM;AACpE,YAAI,EAAE,WAAW,mBAAA,GAAsB,MAAM;AAC3C,eAAK,eAAe,MAAM;AAAA,YACxB,MAAM;AAAA,YACN,WAAW;AAAA,YACX,SAAS,QAAQ,KAAK,OAAO;AAAA,YAC7B,UAAU,QAAQ,KAAK,QAAQ;AAAA,YAC/B,WAAW,KAAK;AAAA,UAAA,CACjB;AAAA,QACH,CAAC;AACD,aAAK,oBAAA;AAAA,MACP,CAAC;AAAA,IACH,CAAC;AAAA,EACH;AACF;AAlEE,cAHI,UAGG,WAAU;AAEjB,cALI,UAKG,SAAe;AAAA,EACpB,SAAS,EAAE,MAAM,QAAA;AAAA,EACjB,gBAAgB,EAAE,MAAM,QAAA;AAAA,EACxB,SAAS,EAAE,MAAM,OAAA;AAAO;AAO1B,cAfI,UAea,UAAS,CAAC,gBAAgB,SAAS,UAAU,MAAM;AAwDtE,SAAS,SAAA;"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
const colorCSS = ':host {\n --color-solid: var(--color-gray);\n --color-solid-hover: color-mix(in srgb, var(--color-solid), var(--color-mix-hover));\n --color-solid-active: color-mix(in srgb, var(--color-solid), var(--color-mix-active));\n --color-on-solid: var(--color-text-main);\n --color-border: var(--color-gray);\n --color-border-hover: color-mix(in srgb, var(--color-border), var(--color-mix-hover));\n --color-accent: var(--color-text-muted);\n --color-accent-hover: var(--color-text-main);\n --color-subtle: var(--border-subtle);\n --color-subtle-hover: var(--border-default);\n --color-bg-subtle: var(--border-subtle);\n --color-text-subtle: var(--color-text-muted);\n --color-border-subtle: var(--border-default);\n}\n\n:host([color="primary"]) {\n --color-solid: var(--color-primary);\n --color-on-solid: white;\n --color-border: var(--color-primary);\n --color-accent: var(--color-text-link);\n --color-accent-hover: var(--color-text-link-hover);\n --color-subtle: var(--color-primary-bg-subtle);\n --color-subtle-hover: rgb(from var(--blue) r g b / 0.15);\n --color-bg-subtle: var(--color-primary-bg-subtle);\n --color-text-subtle: var(--color-primary-text-emphasis);\n --color-border-subtle: var(--color-primary-border-subtle);\n}\n\n:host([color="secondary"]) {\n --color-solid: var(--color-secondary);\n --color-on-solid: white;\n --color-border: var(--color-secondary-hover);\n --color-accent: var(--color-secondary-text-emphasis);\n --color-accent-hover: var(--color-text-main);\n --color-subtle: rgb(from var(--slate) r g b / 0.06);\n --color-subtle-hover: rgb(from var(--slate) r g b / 0.12);\n --color-bg-subtle: var(--color-secondary-bg-subtle);\n --color-text-subtle: var(--color-secondary-text-emphasis);\n --color-border-subtle: var(--color-secondary-border-subtle);\n}\n\n:host([color="success"]) {\n --color-solid: var(--color-success);\n --color-on-solid: white;\n --color-border: var(--color-success);\n --color-accent: var(--color-success-text-emphasis);\n --color-accent-hover: var(--color-success-hover);\n --color-subtle: var(--color-success-bg-subtle);\n --color-subtle-hover: rgb(from var(--green) r g b / 0.15);\n --color-bg-subtle: var(--color-success-bg-subtle);\n --color-text-subtle: var(--color-success-text-emphasis);\n --color-border-subtle: var(--color-success-border-subtle);\n}\n\n:host([color="danger"]) {\n --color-solid: var(--color-danger);\n --color-on-solid: white;\n --color-border: var(--color-danger);\n --color-accent: var(--color-danger-text-emphasis);\n --color-accent-hover: var(--color-danger-hover);\n --color-subtle: var(--color-danger-bg-subtle);\n --color-subtle-hover: rgb(from var(--red) r g b / 0.15);\n --color-bg-subtle: var(--color-danger-bg-subtle);\n --color-text-subtle: var(--color-danger-text-emphasis);\n --color-border-subtle: var(--color-danger-border-subtle);\n}\n\n:host([color="warning"]) {\n --color-solid: var(--color-warning);\n --color-on-solid: var(--gray-900);\n --color-border: var(--color-warning);\n --color-accent: var(--color-warning-text-emphasis);\n --color-accent-hover: var(--color-warning-hover);\n --color-subtle: var(--color-warning-bg-subtle);\n --color-subtle-hover: rgb(from var(--yellow) r g b / 0.15);\n --color-bg-subtle: var(--color-warning-bg-subtle);\n --color-text-subtle: var(--color-warning-text-emphasis);\n --color-border-subtle: var(--color-warning-border-subtle);\n}\n\n:host([color="info"]) {\n --color-solid: var(--color-info);\n --color-on-solid: white;\n --color-border: var(--color-info);\n --color-accent: var(--color-info-text-emphasis);\n --color-accent-hover: var(--color-info-hover);\n --color-subtle: var(--color-info-bg-subtle);\n --color-subtle-hover: rgb(from var(--cyan) r g b / 0.15);\n --color-bg-subtle: var(--color-info-bg-subtle);\n --color-text-subtle: var(--color-info-text-emphasis);\n --color-border-subtle: var(--color-info-border-subtle);\n}\n\n:host([color="light"]) {\n --color-solid: var(--light);\n --color-on-solid: var(--gray-900);\n --color-border: var(--border-hover);\n --color-subtle: var(--color-light-bg-subtle);\n --color-subtle-hover: var(--color-light-border-subtle);\n --color-bg-subtle: var(--color-light-bg-subtle);\n --color-text-subtle: var(--color-text-muted);\n --color-border-subtle: var(--color-light-border-subtle);\n}\n\n:host([color="dark"]) {\n --color-solid: var(--dark-500);\n --color-on-solid: white;\n --color-border: var(--dark-500);\n --color-accent: var(--color-text-main);\n --color-accent-hover: var(--color-text-main);\n --color-subtle: var(--color-dark-bg-subtle);\n --color-subtle-hover: var(--color-dark-border-subtle);\n --color-bg-subtle: var(--color-dark-bg-subtle);\n --color-text-subtle: var(--color-text-main);\n --color-border-subtle: var(--color-dark-border-subtle);\n}\n';
|
|
3
|
+
exports.colorCSS = colorCSS;
|
|
4
|
+
//# sourceMappingURL=color.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"color.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
const colorCSS = ':host {\n --color-solid: var(--color-gray);\n --color-solid-hover: color-mix(in srgb, var(--color-solid), var(--color-mix-hover));\n --color-solid-active: color-mix(in srgb, var(--color-solid), var(--color-mix-active));\n --color-on-solid: var(--color-text-main);\n --color-border: var(--color-gray);\n --color-border-hover: color-mix(in srgb, var(--color-border), var(--color-mix-hover));\n --color-accent: var(--color-text-muted);\n --color-accent-hover: var(--color-text-main);\n --color-subtle: var(--border-subtle);\n --color-subtle-hover: var(--border-default);\n --color-bg-subtle: var(--border-subtle);\n --color-text-subtle: var(--color-text-muted);\n --color-border-subtle: var(--border-default);\n}\n\n:host([color="primary"]) {\n --color-solid: var(--color-primary);\n --color-on-solid: white;\n --color-border: var(--color-primary);\n --color-accent: var(--color-text-link);\n --color-accent-hover: var(--color-text-link-hover);\n --color-subtle: var(--color-primary-bg-subtle);\n --color-subtle-hover: rgb(from var(--blue) r g b / 0.15);\n --color-bg-subtle: var(--color-primary-bg-subtle);\n --color-text-subtle: var(--color-primary-text-emphasis);\n --color-border-subtle: var(--color-primary-border-subtle);\n}\n\n:host([color="secondary"]) {\n --color-solid: var(--color-secondary);\n --color-on-solid: white;\n --color-border: var(--color-secondary-hover);\n --color-accent: var(--color-secondary-text-emphasis);\n --color-accent-hover: var(--color-text-main);\n --color-subtle: rgb(from var(--slate) r g b / 0.06);\n --color-subtle-hover: rgb(from var(--slate) r g b / 0.12);\n --color-bg-subtle: var(--color-secondary-bg-subtle);\n --color-text-subtle: var(--color-secondary-text-emphasis);\n --color-border-subtle: var(--color-secondary-border-subtle);\n}\n\n:host([color="success"]) {\n --color-solid: var(--color-success);\n --color-on-solid: white;\n --color-border: var(--color-success);\n --color-accent: var(--color-success-text-emphasis);\n --color-accent-hover: var(--color-success-hover);\n --color-subtle: var(--color-success-bg-subtle);\n --color-subtle-hover: rgb(from var(--green) r g b / 0.15);\n --color-bg-subtle: var(--color-success-bg-subtle);\n --color-text-subtle: var(--color-success-text-emphasis);\n --color-border-subtle: var(--color-success-border-subtle);\n}\n\n:host([color="danger"]) {\n --color-solid: var(--color-danger);\n --color-on-solid: white;\n --color-border: var(--color-danger);\n --color-accent: var(--color-danger-text-emphasis);\n --color-accent-hover: var(--color-danger-hover);\n --color-subtle: var(--color-danger-bg-subtle);\n --color-subtle-hover: rgb(from var(--red) r g b / 0.15);\n --color-bg-subtle: var(--color-danger-bg-subtle);\n --color-text-subtle: var(--color-danger-text-emphasis);\n --color-border-subtle: var(--color-danger-border-subtle);\n}\n\n:host([color="warning"]) {\n --color-solid: var(--color-warning);\n --color-on-solid: var(--gray-900);\n --color-border: var(--color-warning);\n --color-accent: var(--color-warning-text-emphasis);\n --color-accent-hover: var(--color-warning-hover);\n --color-subtle: var(--color-warning-bg-subtle);\n --color-subtle-hover: rgb(from var(--yellow) r g b / 0.15);\n --color-bg-subtle: var(--color-warning-bg-subtle);\n --color-text-subtle: var(--color-warning-text-emphasis);\n --color-border-subtle: var(--color-warning-border-subtle);\n}\n\n:host([color="info"]) {\n --color-solid: var(--color-info);\n --color-on-solid: white;\n --color-border: var(--color-info);\n --color-accent: var(--color-info-text-emphasis);\n --color-accent-hover: var(--color-info-hover);\n --color-subtle: var(--color-info-bg-subtle);\n --color-subtle-hover: rgb(from var(--cyan) r g b / 0.15);\n --color-bg-subtle: var(--color-info-bg-subtle);\n --color-text-subtle: var(--color-info-text-emphasis);\n --color-border-subtle: var(--color-info-border-subtle);\n}\n\n:host([color="light"]) {\n --color-solid: var(--light);\n --color-on-solid: var(--gray-900);\n --color-border: var(--border-hover);\n --color-subtle: var(--color-light-bg-subtle);\n --color-subtle-hover: var(--color-light-border-subtle);\n --color-bg-subtle: var(--color-light-bg-subtle);\n --color-text-subtle: var(--color-text-muted);\n --color-border-subtle: var(--color-light-border-subtle);\n}\n\n:host([color="dark"]) {\n --color-solid: var(--dark-500);\n --color-on-solid: white;\n --color-border: var(--dark-500);\n --color-accent: var(--color-text-main);\n --color-accent-hover: var(--color-text-main);\n --color-subtle: var(--color-dark-bg-subtle);\n --color-subtle-hover: var(--color-dark-border-subtle);\n --color-bg-subtle: var(--color-dark-bg-subtle);\n --color-text-subtle: var(--color-text-main);\n --color-border-subtle: var(--color-dark-border-subtle);\n}\n';
|
|
2
|
+
export {
|
|
3
|
+
colorCSS as c
|
|
4
|
+
};
|
|
5
|
+
//# sourceMappingURL=color.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"color.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
const variables = require("./variables.cjs");
|
|
3
|
+
const color = require("./color.cjs");
|
|
4
|
+
const aeicoComponent = require("./aeico-component.cjs");
|
|
5
|
+
const aeico = require("aeico");
|
|
6
|
+
const detailStyle = ':host {\n display: block;\n\n --detail-bg: var(--color-solid);\n --detail-color: var(--color-on-solid);\n --detail-border: var(--color-solid);\n --detail-header-bg: color-mix(in srgb, var(--color-solid), black 10%);\n --detail-radius: 6px;\n}\n\n:host([variant="faint"]) {\n --detail-bg: var(--color-bg-subtle);\n --detail-color: var(--color-text-subtle);\n --detail-border: var(--color-border-subtle);\n --detail-header-bg: var(--color-bg-subtle);\n}\n\n:host([variant="subtle"]) {\n --detail-bg: transparent;\n --detail-color: var(--color-text-main);\n --detail-border: transparent;\n --detail-header-bg: transparent;\n}\n\n:host([variant="filled"]) {\n --detail-bg: var(--color-solid);\n --detail-color: var(--color-on-solid);\n --detail-border: var(--color-solid);\n --detail-header-bg: color-mix(in srgb, var(--color-solid), black 10%);\n}\n\n:host([variant="outlined"]) {\n --detail-bg: transparent;\n --detail-color: var(--color-text-subtle);\n --detail-border: var(--color-border);\n --detail-header-bg: transparent;\n}\n\n:host([disabled]) {\n opacity: 0.5;\n pointer-events: none;\n}\n\n.detail {\n border: 1px solid var(--detail-border);\n border-radius: var(--detail-radius);\n color: var(--detail-color);\n background: var(--detail-bg);\n overflow: hidden;\n}\n\n.summary {\n display: flex;\n align-items: center;\n gap: 6px;\n width: 100%;\n padding: 10px 14px;\n background: var(--detail-header-bg);\n color: inherit;\n font-size: inherit;\n font-family: inherit;\n font-weight: 500;\n border: none;\n cursor: pointer;\n text-align: left;\n outline-offset: -2px;\n user-select: none;\n}\n\n.summary:hover {\n filter: brightness(0.93);\n}\n\n.summary:focus-visible {\n outline: 2px solid var(--color-border);\n}\n\nslot[name="summary"] {\n display: flex;\n align-items: center;\n flex: 1;\n min-width: 0;\n}\n\n.label {\n flex: 1;\n}\n\nslot[name="expand"],\nslot[name="collapse"] {\n display: inline-flex;\n align-items: center;\n flex-shrink: 0;\n}\n\nslot[name="collapse"] {\n display: none;\n}\n\n:host([open]) slot[name="expand"] {\n display: none;\n}\n\n:host([open]) slot[name="collapse"] {\n display: inline-flex;\n}\n\n.content-outer {\n display: grid;\n grid-template-rows: 0fr;\n transition: grid-template-rows 0.25s ease;\n}\n\n:host([open]) .content-outer {\n grid-template-rows: 1fr;\n}\n\n.content {\n overflow: hidden;\n padding: 0 14px;\n transition: padding 0.25s ease;\n}\n\n:host([open]) .content {\n padding: 12px 14px;\n}\n\n';
|
|
7
|
+
var __create = Object.create;
|
|
8
|
+
var __defProp = Object.defineProperty;
|
|
9
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
10
|
+
var __knownSymbol = (name, symbol) => (symbol = Symbol[name]) ? symbol : Symbol.for("Symbol." + name);
|
|
11
|
+
var __typeError = (msg) => {
|
|
12
|
+
throw TypeError(msg);
|
|
13
|
+
};
|
|
14
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
15
|
+
var __decoratorStart = (base) => [, , , __create((base == null ? void 0 : base[__knownSymbol("metadata")]) ?? null)];
|
|
16
|
+
var __decoratorStrings = ["class", "method", "getter", "setter", "accessor", "field", "value", "get", "set"];
|
|
17
|
+
var __expectFn = (fn) => fn !== void 0 && typeof fn !== "function" ? __typeError("Function expected") : fn;
|
|
18
|
+
var __decoratorContext = (kind, name, done, metadata, fns) => ({ kind: __decoratorStrings[kind], name, metadata, addInitializer: (fn) => done._ ? __typeError("Already initialized") : fns.push(__expectFn(fn || null)) });
|
|
19
|
+
var __decoratorMetadata = (array, target) => __defNormalProp(target, __knownSymbol("metadata"), array[3]);
|
|
20
|
+
var __runInitializers = (array, flags, self, value) => {
|
|
21
|
+
for (var i = 0, fns = array[flags >> 1], n = fns && fns.length; i < n; i++) flags & 1 ? fns[i].call(self) : value = fns[i].call(self, value);
|
|
22
|
+
return value;
|
|
23
|
+
};
|
|
24
|
+
var __decorateElement = (array, flags, name, decorators, target, extra) => {
|
|
25
|
+
var fn, it, done, ctx, access, k = flags & 7, s = false, p = false;
|
|
26
|
+
var j = array.length + 1, key = __decoratorStrings[k + 5];
|
|
27
|
+
var initializers = array[j - 1] = [], extraInitializers = array[j] || (array[j] = []);
|
|
28
|
+
var desc = (target = target.prototype, __getOwnPropDesc({ get [name]() {
|
|
29
|
+
return __privateGet(this, extra);
|
|
30
|
+
}, set [name](x) {
|
|
31
|
+
return __privateSet(this, extra, x);
|
|
32
|
+
} }, name));
|
|
33
|
+
for (var i = decorators.length - 1; i >= 0; i--) {
|
|
34
|
+
ctx = __decoratorContext(k, name, done = {}, array[3], extraInitializers);
|
|
35
|
+
{
|
|
36
|
+
ctx.static = s, ctx.private = p, access = ctx.access = { has: (x) => name in x };
|
|
37
|
+
access.get = (x) => x[name];
|
|
38
|
+
access.set = (x, y) => x[name] = y;
|
|
39
|
+
}
|
|
40
|
+
it = (0, decorators[i])({ get: desc.get, set: desc.set }, ctx), done._ = 1;
|
|
41
|
+
if (it === void 0) __expectFn(it) && (desc[key] = it);
|
|
42
|
+
else if (typeof it !== "object" || it === null) __typeError("Object expected");
|
|
43
|
+
else __expectFn(fn = it.get) && (desc.get = fn), __expectFn(fn = it.set) && (desc.set = fn), __expectFn(fn = it.init) && initializers.unshift(fn);
|
|
44
|
+
}
|
|
45
|
+
return desc && __defProp(target, name, desc), target;
|
|
46
|
+
};
|
|
47
|
+
var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
48
|
+
var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg);
|
|
49
|
+
var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), member.get(obj));
|
|
50
|
+
var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
|
|
51
|
+
var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), member.set(obj, value), value);
|
|
52
|
+
var _disabled_dec, _color_dec, _variant_dec, _summary_dec, _a, _init, _summary, _variant, _color, _disabled;
|
|
53
|
+
class Detail extends (_a = aeicoComponent.AeicoComponent, _summary_dec = [aeico.prop({ type: String })], _variant_dec = [aeico.prop({ type: String })], _color_dec = [aeico.prop({ type: String })], _disabled_dec = [aeico.prop({ type: Boolean })], _a) {
|
|
54
|
+
constructor() {
|
|
55
|
+
super(...arguments);
|
|
56
|
+
__privateAdd(this, _summary, __runInitializers(_init, 8, this, "")), __runInitializers(_init, 11, this);
|
|
57
|
+
__privateAdd(this, _variant, __runInitializers(_init, 12, this, "filled")), __runInitializers(_init, 15, this);
|
|
58
|
+
__privateAdd(this, _color, __runInitializers(_init, 16, this, "default")), __runInitializers(_init, 19, this);
|
|
59
|
+
__privateAdd(this, _disabled, __runInitializers(_init, 20, this, false)), __runInitializers(_init, 23, this);
|
|
60
|
+
__publicField(this, "_open", false);
|
|
61
|
+
__publicField(this, "_handleSummaryClick", () => {
|
|
62
|
+
this.toggle();
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
/** Opens the detail panel. */
|
|
66
|
+
open() {
|
|
67
|
+
if (this.disabled || this._open) return;
|
|
68
|
+
this._open = true;
|
|
69
|
+
this.toggleAttribute("open", true);
|
|
70
|
+
this.update();
|
|
71
|
+
this.emit("open");
|
|
72
|
+
}
|
|
73
|
+
/** Closes the detail panel. */
|
|
74
|
+
close() {
|
|
75
|
+
if (!this._open) return;
|
|
76
|
+
this._open = false;
|
|
77
|
+
this.toggleAttribute("open", false);
|
|
78
|
+
this.update();
|
|
79
|
+
this.emit("close");
|
|
80
|
+
}
|
|
81
|
+
/** Toggles the detail panel open/closed. */
|
|
82
|
+
toggle() {
|
|
83
|
+
if (this._open) {
|
|
84
|
+
this.close();
|
|
85
|
+
} else {
|
|
86
|
+
this.open();
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
/** Returns whether the detail panel is currently open. */
|
|
90
|
+
isOpen() {
|
|
91
|
+
return this._open;
|
|
92
|
+
}
|
|
93
|
+
render() {
|
|
94
|
+
return aeico.html(({ div, button, span, slot }) => {
|
|
95
|
+
div({ className: "detail", part: "detail" }, () => {
|
|
96
|
+
button(
|
|
97
|
+
{
|
|
98
|
+
className: "summary",
|
|
99
|
+
part: "summary",
|
|
100
|
+
type: "button",
|
|
101
|
+
"aria-expanded": String(this._open),
|
|
102
|
+
disabled: this.disabled || void 0,
|
|
103
|
+
"@click": this._handleSummaryClick
|
|
104
|
+
},
|
|
105
|
+
() => {
|
|
106
|
+
slot({ name: "summary" }, () => {
|
|
107
|
+
span({ className: "label", textContent: this.summary });
|
|
108
|
+
});
|
|
109
|
+
slot({ name: "expand" });
|
|
110
|
+
slot({ name: "collapse" });
|
|
111
|
+
}
|
|
112
|
+
);
|
|
113
|
+
div({ className: "content-outer" }, () => {
|
|
114
|
+
div(
|
|
115
|
+
{
|
|
116
|
+
className: "content",
|
|
117
|
+
part: "content",
|
|
118
|
+
role: "region"
|
|
119
|
+
},
|
|
120
|
+
() => {
|
|
121
|
+
slot();
|
|
122
|
+
}
|
|
123
|
+
);
|
|
124
|
+
});
|
|
125
|
+
});
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
_init = __decoratorStart(_a);
|
|
130
|
+
_summary = /* @__PURE__ */ new WeakMap();
|
|
131
|
+
_variant = /* @__PURE__ */ new WeakMap();
|
|
132
|
+
_color = /* @__PURE__ */ new WeakMap();
|
|
133
|
+
_disabled = /* @__PURE__ */ new WeakMap();
|
|
134
|
+
__decorateElement(_init, 4, "summary", _summary_dec, Detail, _summary);
|
|
135
|
+
__decorateElement(_init, 4, "variant", _variant_dec, Detail, _variant);
|
|
136
|
+
__decorateElement(_init, 4, "color", _color_dec, Detail, _color);
|
|
137
|
+
__decorateElement(_init, 4, "disabled", _disabled_dec, Detail, _disabled);
|
|
138
|
+
__decoratorMetadata(_init, Detail);
|
|
139
|
+
__publicField(Detail, "tagName", "detail");
|
|
140
|
+
__publicField(Detail, "styles", [variables.styleVariables, color.colorCSS, detailStyle]);
|
|
141
|
+
Detail.register();
|
|
142
|
+
exports.Detail = Detail;
|
|
143
|
+
//# sourceMappingURL=detail.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"detail.cjs","sources":["../../src/detail/detail.ts"],"sourcesContent":["import type { InferProps } from 'aeico';\nimport styleVariables from '../styles/variables.css?inline';\nimport colorCSS from '../styles/color.css?inline';\nimport detailStyle from '../styles/components/detail.css?inline';\nimport AeicoComponent from '../aeico-component';\nimport { html } from 'aeico';\nimport { prop } from 'aeico';\nimport type { DetailColor, DetailVariant } from './defines';\n\n/**\n * Detail component that can be used to show/hide additional content.\n *\n * @example\n * ```html\n * <ae-detail summary=\"Click Me\">\n * <ae-icon name=\"plus\" slot=\"expand\"></ae-icon>\n * <ae-icon name=\"minus\" slot=\"collapse\"></ae-icon>\n * Detail.....\n * </ae-detail>\n */\nclass Detail extends AeicoComponent {\n static tagName = 'detail';\n\n protected static styles = [styleVariables, colorCSS, detailStyle];\n\n @prop({ type: String })\n accessor summary: string = '';\n\n @prop({ type: String })\n accessor variant: DetailVariant = 'filled';\n\n @prop({ type: String })\n accessor color: DetailColor = 'default';\n\n @prop({ type: Boolean })\n accessor disabled: boolean = false;\n\n private _open: boolean = false;\n\n /** Opens the detail panel. */\n open(): void {\n if (this.disabled || this._open) return;\n this._open = true;\n this.toggleAttribute('open', true);\n this.update();\n this.emit('open');\n }\n\n /** Closes the detail panel. */\n close(): void {\n if (!this._open) return;\n this._open = false;\n this.toggleAttribute('open', false);\n this.update();\n this.emit('close');\n }\n\n /** Toggles the detail panel open/closed. */\n toggle(): void {\n if (this._open) {\n this.close();\n } else {\n this.open();\n }\n }\n\n /** Returns whether the detail panel is currently open. */\n isOpen(): boolean {\n return this._open;\n }\n\n private _handleSummaryClick = (): void => {\n this.toggle();\n };\n\n protected render() {\n return html(({ div, button, span, slot }) => {\n div({ className: 'detail', part: 'detail' }, () => {\n button(\n {\n className: 'summary',\n part: 'summary',\n type: 'button',\n 'aria-expanded': String(this._open),\n disabled: this.disabled || undefined,\n '@click': this._handleSummaryClick,\n },\n () => {\n slot({ name: 'summary' }, () => {\n span({ className: 'label', textContent: this.summary });\n });\n slot({ name: 'expand' });\n slot({ name: 'collapse' });\n },\n );\n div({ className: 'content-outer' }, () => {\n div(\n {\n className: 'content',\n part: 'content',\n role: 'region',\n },\n () => {\n slot();\n },\n );\n });\n });\n });\n }\n}\n\nDetail.register();\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ae-detail': Detail;\n }\n}\n\nexport default Detail;\nexport type DetailProps = InferProps<typeof Detail>;\n"],"names":["AeicoComponent","prop","html","styleVariables","colorCSS"],"mappings":"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"}
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
import { s as styleVariables } from "./variables.js";
|
|
2
|
+
import { c as colorCSS } from "./color.js";
|
|
3
|
+
import { A as AeicoComponent } from "./aeico-component.js";
|
|
4
|
+
import { prop, html } from "aeico";
|
|
5
|
+
const detailStyle = ':host {\n display: block;\n\n --detail-bg: var(--color-solid);\n --detail-color: var(--color-on-solid);\n --detail-border: var(--color-solid);\n --detail-header-bg: color-mix(in srgb, var(--color-solid), black 10%);\n --detail-radius: 6px;\n}\n\n:host([variant="faint"]) {\n --detail-bg: var(--color-bg-subtle);\n --detail-color: var(--color-text-subtle);\n --detail-border: var(--color-border-subtle);\n --detail-header-bg: var(--color-bg-subtle);\n}\n\n:host([variant="subtle"]) {\n --detail-bg: transparent;\n --detail-color: var(--color-text-main);\n --detail-border: transparent;\n --detail-header-bg: transparent;\n}\n\n:host([variant="filled"]) {\n --detail-bg: var(--color-solid);\n --detail-color: var(--color-on-solid);\n --detail-border: var(--color-solid);\n --detail-header-bg: color-mix(in srgb, var(--color-solid), black 10%);\n}\n\n:host([variant="outlined"]) {\n --detail-bg: transparent;\n --detail-color: var(--color-text-subtle);\n --detail-border: var(--color-border);\n --detail-header-bg: transparent;\n}\n\n:host([disabled]) {\n opacity: 0.5;\n pointer-events: none;\n}\n\n.detail {\n border: 1px solid var(--detail-border);\n border-radius: var(--detail-radius);\n color: var(--detail-color);\n background: var(--detail-bg);\n overflow: hidden;\n}\n\n.summary {\n display: flex;\n align-items: center;\n gap: 6px;\n width: 100%;\n padding: 10px 14px;\n background: var(--detail-header-bg);\n color: inherit;\n font-size: inherit;\n font-family: inherit;\n font-weight: 500;\n border: none;\n cursor: pointer;\n text-align: left;\n outline-offset: -2px;\n user-select: none;\n}\n\n.summary:hover {\n filter: brightness(0.93);\n}\n\n.summary:focus-visible {\n outline: 2px solid var(--color-border);\n}\n\nslot[name="summary"] {\n display: flex;\n align-items: center;\n flex: 1;\n min-width: 0;\n}\n\n.label {\n flex: 1;\n}\n\nslot[name="expand"],\nslot[name="collapse"] {\n display: inline-flex;\n align-items: center;\n flex-shrink: 0;\n}\n\nslot[name="collapse"] {\n display: none;\n}\n\n:host([open]) slot[name="expand"] {\n display: none;\n}\n\n:host([open]) slot[name="collapse"] {\n display: inline-flex;\n}\n\n.content-outer {\n display: grid;\n grid-template-rows: 0fr;\n transition: grid-template-rows 0.25s ease;\n}\n\n:host([open]) .content-outer {\n grid-template-rows: 1fr;\n}\n\n.content {\n overflow: hidden;\n padding: 0 14px;\n transition: padding 0.25s ease;\n}\n\n:host([open]) .content {\n padding: 12px 14px;\n}\n\n';
|
|
6
|
+
var __create = Object.create;
|
|
7
|
+
var __defProp = Object.defineProperty;
|
|
8
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
9
|
+
var __knownSymbol = (name, symbol) => (symbol = Symbol[name]) ? symbol : Symbol.for("Symbol." + name);
|
|
10
|
+
var __typeError = (msg) => {
|
|
11
|
+
throw TypeError(msg);
|
|
12
|
+
};
|
|
13
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
14
|
+
var __decoratorStart = (base) => [, , , __create((base == null ? void 0 : base[__knownSymbol("metadata")]) ?? null)];
|
|
15
|
+
var __decoratorStrings = ["class", "method", "getter", "setter", "accessor", "field", "value", "get", "set"];
|
|
16
|
+
var __expectFn = (fn) => fn !== void 0 && typeof fn !== "function" ? __typeError("Function expected") : fn;
|
|
17
|
+
var __decoratorContext = (kind, name, done, metadata, fns) => ({ kind: __decoratorStrings[kind], name, metadata, addInitializer: (fn) => done._ ? __typeError("Already initialized") : fns.push(__expectFn(fn || null)) });
|
|
18
|
+
var __decoratorMetadata = (array, target) => __defNormalProp(target, __knownSymbol("metadata"), array[3]);
|
|
19
|
+
var __runInitializers = (array, flags, self, value) => {
|
|
20
|
+
for (var i = 0, fns = array[flags >> 1], n = fns && fns.length; i < n; i++) flags & 1 ? fns[i].call(self) : value = fns[i].call(self, value);
|
|
21
|
+
return value;
|
|
22
|
+
};
|
|
23
|
+
var __decorateElement = (array, flags, name, decorators, target, extra) => {
|
|
24
|
+
var fn, it, done, ctx, access, k = flags & 7, s = false, p = false;
|
|
25
|
+
var j = array.length + 1, key = __decoratorStrings[k + 5];
|
|
26
|
+
var initializers = array[j - 1] = [], extraInitializers = array[j] || (array[j] = []);
|
|
27
|
+
var desc = (target = target.prototype, __getOwnPropDesc({ get [name]() {
|
|
28
|
+
return __privateGet(this, extra);
|
|
29
|
+
}, set [name](x) {
|
|
30
|
+
return __privateSet(this, extra, x);
|
|
31
|
+
} }, name));
|
|
32
|
+
for (var i = decorators.length - 1; i >= 0; i--) {
|
|
33
|
+
ctx = __decoratorContext(k, name, done = {}, array[3], extraInitializers);
|
|
34
|
+
{
|
|
35
|
+
ctx.static = s, ctx.private = p, access = ctx.access = { has: (x) => name in x };
|
|
36
|
+
access.get = (x) => x[name];
|
|
37
|
+
access.set = (x, y) => x[name] = y;
|
|
38
|
+
}
|
|
39
|
+
it = (0, decorators[i])({ get: desc.get, set: desc.set }, ctx), done._ = 1;
|
|
40
|
+
if (it === void 0) __expectFn(it) && (desc[key] = it);
|
|
41
|
+
else if (typeof it !== "object" || it === null) __typeError("Object expected");
|
|
42
|
+
else __expectFn(fn = it.get) && (desc.get = fn), __expectFn(fn = it.set) && (desc.set = fn), __expectFn(fn = it.init) && initializers.unshift(fn);
|
|
43
|
+
}
|
|
44
|
+
return desc && __defProp(target, name, desc), target;
|
|
45
|
+
};
|
|
46
|
+
var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
47
|
+
var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg);
|
|
48
|
+
var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), member.get(obj));
|
|
49
|
+
var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
|
|
50
|
+
var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), member.set(obj, value), value);
|
|
51
|
+
var _disabled_dec, _color_dec, _variant_dec, _summary_dec, _a, _init, _summary, _variant, _color, _disabled;
|
|
52
|
+
class Detail extends (_a = AeicoComponent, _summary_dec = [prop({ type: String })], _variant_dec = [prop({ type: String })], _color_dec = [prop({ type: String })], _disabled_dec = [prop({ type: Boolean })], _a) {
|
|
53
|
+
constructor() {
|
|
54
|
+
super(...arguments);
|
|
55
|
+
__privateAdd(this, _summary, __runInitializers(_init, 8, this, "")), __runInitializers(_init, 11, this);
|
|
56
|
+
__privateAdd(this, _variant, __runInitializers(_init, 12, this, "filled")), __runInitializers(_init, 15, this);
|
|
57
|
+
__privateAdd(this, _color, __runInitializers(_init, 16, this, "default")), __runInitializers(_init, 19, this);
|
|
58
|
+
__privateAdd(this, _disabled, __runInitializers(_init, 20, this, false)), __runInitializers(_init, 23, this);
|
|
59
|
+
__publicField(this, "_open", false);
|
|
60
|
+
__publicField(this, "_handleSummaryClick", () => {
|
|
61
|
+
this.toggle();
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
/** Opens the detail panel. */
|
|
65
|
+
open() {
|
|
66
|
+
if (this.disabled || this._open) return;
|
|
67
|
+
this._open = true;
|
|
68
|
+
this.toggleAttribute("open", true);
|
|
69
|
+
this.update();
|
|
70
|
+
this.emit("open");
|
|
71
|
+
}
|
|
72
|
+
/** Closes the detail panel. */
|
|
73
|
+
close() {
|
|
74
|
+
if (!this._open) return;
|
|
75
|
+
this._open = false;
|
|
76
|
+
this.toggleAttribute("open", false);
|
|
77
|
+
this.update();
|
|
78
|
+
this.emit("close");
|
|
79
|
+
}
|
|
80
|
+
/** Toggles the detail panel open/closed. */
|
|
81
|
+
toggle() {
|
|
82
|
+
if (this._open) {
|
|
83
|
+
this.close();
|
|
84
|
+
} else {
|
|
85
|
+
this.open();
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
/** Returns whether the detail panel is currently open. */
|
|
89
|
+
isOpen() {
|
|
90
|
+
return this._open;
|
|
91
|
+
}
|
|
92
|
+
render() {
|
|
93
|
+
return html(({ div, button, span, slot }) => {
|
|
94
|
+
div({ className: "detail", part: "detail" }, () => {
|
|
95
|
+
button(
|
|
96
|
+
{
|
|
97
|
+
className: "summary",
|
|
98
|
+
part: "summary",
|
|
99
|
+
type: "button",
|
|
100
|
+
"aria-expanded": String(this._open),
|
|
101
|
+
disabled: this.disabled || void 0,
|
|
102
|
+
"@click": this._handleSummaryClick
|
|
103
|
+
},
|
|
104
|
+
() => {
|
|
105
|
+
slot({ name: "summary" }, () => {
|
|
106
|
+
span({ className: "label", textContent: this.summary });
|
|
107
|
+
});
|
|
108
|
+
slot({ name: "expand" });
|
|
109
|
+
slot({ name: "collapse" });
|
|
110
|
+
}
|
|
111
|
+
);
|
|
112
|
+
div({ className: "content-outer" }, () => {
|
|
113
|
+
div(
|
|
114
|
+
{
|
|
115
|
+
className: "content",
|
|
116
|
+
part: "content",
|
|
117
|
+
role: "region"
|
|
118
|
+
},
|
|
119
|
+
() => {
|
|
120
|
+
slot();
|
|
121
|
+
}
|
|
122
|
+
);
|
|
123
|
+
});
|
|
124
|
+
});
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
_init = __decoratorStart(_a);
|
|
129
|
+
_summary = /* @__PURE__ */ new WeakMap();
|
|
130
|
+
_variant = /* @__PURE__ */ new WeakMap();
|
|
131
|
+
_color = /* @__PURE__ */ new WeakMap();
|
|
132
|
+
_disabled = /* @__PURE__ */ new WeakMap();
|
|
133
|
+
__decorateElement(_init, 4, "summary", _summary_dec, Detail, _summary);
|
|
134
|
+
__decorateElement(_init, 4, "variant", _variant_dec, Detail, _variant);
|
|
135
|
+
__decorateElement(_init, 4, "color", _color_dec, Detail, _color);
|
|
136
|
+
__decorateElement(_init, 4, "disabled", _disabled_dec, Detail, _disabled);
|
|
137
|
+
__decoratorMetadata(_init, Detail);
|
|
138
|
+
__publicField(Detail, "tagName", "detail");
|
|
139
|
+
__publicField(Detail, "styles", [styleVariables, colorCSS, detailStyle]);
|
|
140
|
+
Detail.register();
|
|
141
|
+
export {
|
|
142
|
+
Detail as D
|
|
143
|
+
};
|
|
144
|
+
//# sourceMappingURL=detail.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"detail.js","sources":["../../src/detail/detail.ts"],"sourcesContent":["import type { InferProps } from 'aeico';\nimport styleVariables from '../styles/variables.css?inline';\nimport colorCSS from '../styles/color.css?inline';\nimport detailStyle from '../styles/components/detail.css?inline';\nimport AeicoComponent from '../aeico-component';\nimport { html } from 'aeico';\nimport { prop } from 'aeico';\nimport type { DetailColor, DetailVariant } from './defines';\n\n/**\n * Detail component that can be used to show/hide additional content.\n *\n * @example\n * ```html\n * <ae-detail summary=\"Click Me\">\n * <ae-icon name=\"plus\" slot=\"expand\"></ae-icon>\n * <ae-icon name=\"minus\" slot=\"collapse\"></ae-icon>\n * Detail.....\n * </ae-detail>\n */\nclass Detail extends AeicoComponent {\n static tagName = 'detail';\n\n protected static styles = [styleVariables, colorCSS, detailStyle];\n\n @prop({ type: String })\n accessor summary: string = '';\n\n @prop({ type: String })\n accessor variant: DetailVariant = 'filled';\n\n @prop({ type: String })\n accessor color: DetailColor = 'default';\n\n @prop({ type: Boolean })\n accessor disabled: boolean = false;\n\n private _open: boolean = false;\n\n /** Opens the detail panel. */\n open(): void {\n if (this.disabled || this._open) return;\n this._open = true;\n this.toggleAttribute('open', true);\n this.update();\n this.emit('open');\n }\n\n /** Closes the detail panel. */\n close(): void {\n if (!this._open) return;\n this._open = false;\n this.toggleAttribute('open', false);\n this.update();\n this.emit('close');\n }\n\n /** Toggles the detail panel open/closed. */\n toggle(): void {\n if (this._open) {\n this.close();\n } else {\n this.open();\n }\n }\n\n /** Returns whether the detail panel is currently open. */\n isOpen(): boolean {\n return this._open;\n }\n\n private _handleSummaryClick = (): void => {\n this.toggle();\n };\n\n protected render() {\n return html(({ div, button, span, slot }) => {\n div({ className: 'detail', part: 'detail' }, () => {\n button(\n {\n className: 'summary',\n part: 'summary',\n type: 'button',\n 'aria-expanded': String(this._open),\n disabled: this.disabled || undefined,\n '@click': this._handleSummaryClick,\n },\n () => {\n slot({ name: 'summary' }, () => {\n span({ className: 'label', textContent: this.summary });\n });\n slot({ name: 'expand' });\n slot({ name: 'collapse' });\n },\n );\n div({ className: 'content-outer' }, () => {\n div(\n {\n className: 'content',\n part: 'content',\n role: 'region',\n },\n () => {\n slot();\n },\n );\n });\n });\n });\n }\n}\n\nDetail.register();\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ae-detail': Detail;\n }\n}\n\nexport default Detail;\nexport type DetailProps = InferProps<typeof Detail>;\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
4
|
+
var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
5
|
+
const variables = require("./variables.cjs");
|
|
6
|
+
const aeicoComponent = require("./aeico-component.cjs");
|
|
7
|
+
const aeico = require("aeico");
|
|
8
|
+
const style = ":host {\n display: contents;\n}\n\ndialog {\n display: none;\n flex-direction: column;\n border: none;\n border-radius: 8px;\n padding: 0;\n max-width: min(90vw, 600px);\n max-height: 90vh;\n background: var(--surface-overlay);\n color: var(--color-text-main);\n box-shadow: 0 8px 32px rgba(0, 0, 0, 0.2);\n overflow: hidden;\n}\n\ndialog[open] {\n display: flex;\n animation: dialog-slide-in 0.2s ease;\n}\n\ndialog::backdrop {\n background: var(--color-overlay);\n animation: dialog-backdrop-in 0.2s ease;\n}\n\n@keyframes dialog-backdrop-in {\n from { opacity: 0; }\n to { opacity: 1; }\n}\n\n@keyframes dialog-slide-in {\n from {\n opacity: 0;\n transform: scale(0.96) translateY(-8px);\n }\n to {\n opacity: 1;\n transform: scale(1) translateY(0);\n }\n}\n\nheader {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 16px 20px;\n border-bottom: 1px solid var(--border-subtle);\n flex-shrink: 0;\n}\n\n.label {\n flex: 1;\n font-size: var(--size-m, 1rem);\n font-weight: 500;\n margin: 0;\n color: var(--color-text-main);\n}\n\n.close-btn {\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n width: 28px;\n height: 28px;\n padding: 0;\n border: none;\n border-radius: 4px;\n background: transparent;\n color: var(--color-text-muted);\n font-size: 18px;\n line-height: 1;\n cursor: pointer;\n transition: background 0.15s, color 0.15s;\n}\n\n.close-btn:hover {\n background: var(--border-subtle);\n color: var(--color-text-main);\n}\n\n.body {\n flex: 1;\n overflow-y: auto;\n padding: 20px;\n}\n\nfooter {\n display: flex;\n align-items: center;\n justify-content: flex-end;\n gap: 8px;\n padding: 12px 20px;\n border-top: 1px solid var(--border-subtle);\n flex-shrink: 0;\n}\n\n::slotted([data-align-left]) {\n margin-right: auto;\n}\n";
|
|
9
|
+
class Dialog extends aeicoComponent.AeicoComponent {
|
|
10
|
+
constructor() {
|
|
11
|
+
super(...arguments);
|
|
12
|
+
__publicField(this, "_dialogEl", null);
|
|
13
|
+
__publicField(this, "_hasFooter", false);
|
|
14
|
+
__publicField(this, "_handleDialogClick", (e) => {
|
|
15
|
+
const mouseEvent = e;
|
|
16
|
+
const path = mouseEvent.composedPath();
|
|
17
|
+
for (const el of path) {
|
|
18
|
+
if (el instanceof Element && el.hasAttribute("data-close")) {
|
|
19
|
+
this.close();
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
if (el === this._dialogEl) break;
|
|
23
|
+
}
|
|
24
|
+
if (this.modal !== false && this.closeOnOverlayClick !== false) {
|
|
25
|
+
if (mouseEvent.target === this._dialogEl) {
|
|
26
|
+
const rect = this._dialogEl.getBoundingClientRect();
|
|
27
|
+
const outside = mouseEvent.clientX < rect.left || mouseEvent.clientX > rect.right || mouseEvent.clientY < rect.top || mouseEvent.clientY > rect.bottom;
|
|
28
|
+
if (outside) {
|
|
29
|
+
this.close();
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
});
|
|
34
|
+
__publicField(this, "_handleNativeClose", () => {
|
|
35
|
+
this.emit("close", { detail: { target: this } });
|
|
36
|
+
});
|
|
37
|
+
__publicField(this, "_handleFooterSlotChange", (e) => {
|
|
38
|
+
const slotEl = e.target;
|
|
39
|
+
const hasContent = slotEl.assignedElements().length > 0;
|
|
40
|
+
if (hasContent !== this._hasFooter) {
|
|
41
|
+
this._hasFooter = hasContent;
|
|
42
|
+
this.update();
|
|
43
|
+
}
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
render() {
|
|
47
|
+
return aeico.html(({ dialog, div, header, footer, span, button, slot }) => {
|
|
48
|
+
this._dialogEl = dialog(
|
|
49
|
+
{
|
|
50
|
+
"@click": this._handleDialogClick,
|
|
51
|
+
"@close": this._handleNativeClose,
|
|
52
|
+
style: {
|
|
53
|
+
width: this.width || "",
|
|
54
|
+
height: this.height || ""
|
|
55
|
+
}
|
|
56
|
+
},
|
|
57
|
+
() => {
|
|
58
|
+
if (this.header !== false) {
|
|
59
|
+
header({}, () => {
|
|
60
|
+
slot({ name: "header" }, () => {
|
|
61
|
+
span({ className: "label", textContent: this.label || "" });
|
|
62
|
+
});
|
|
63
|
+
if (this.closable !== false) {
|
|
64
|
+
button({
|
|
65
|
+
className: "close-btn",
|
|
66
|
+
textContent: "×",
|
|
67
|
+
"@click": () => this.close()
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
div({ className: "body" }, () => {
|
|
73
|
+
slot();
|
|
74
|
+
});
|
|
75
|
+
footer(
|
|
76
|
+
{
|
|
77
|
+
style: { display: this._hasFooter ? "" : "none" }
|
|
78
|
+
},
|
|
79
|
+
() => {
|
|
80
|
+
slot({ name: "footer", "@slotchange": this._handleFooterSlotChange });
|
|
81
|
+
}
|
|
82
|
+
);
|
|
83
|
+
}
|
|
84
|
+
);
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
open() {
|
|
88
|
+
if (!this._dialogEl) return;
|
|
89
|
+
if (this.modal !== false) {
|
|
90
|
+
this._dialogEl.showModal();
|
|
91
|
+
} else {
|
|
92
|
+
this._dialogEl.show();
|
|
93
|
+
}
|
|
94
|
+
this.emit("open", { detail: { target: this } });
|
|
95
|
+
}
|
|
96
|
+
close() {
|
|
97
|
+
var _a;
|
|
98
|
+
(_a = this._dialogEl) == null ? void 0 : _a.close();
|
|
99
|
+
}
|
|
100
|
+
isOpen() {
|
|
101
|
+
var _a;
|
|
102
|
+
return ((_a = this._dialogEl) == null ? void 0 : _a.open) ?? false;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
__publicField(Dialog, "props", {
|
|
106
|
+
label: { type: String },
|
|
107
|
+
width: { type: String },
|
|
108
|
+
height: { type: String },
|
|
109
|
+
modal: { type: Boolean },
|
|
110
|
+
closable: { type: Boolean },
|
|
111
|
+
header: { type: Boolean },
|
|
112
|
+
closeOnOverlayClick: { type: Boolean }
|
|
113
|
+
});
|
|
114
|
+
__publicField(Dialog, "styles", [variables.styleVariables, style]);
|
|
115
|
+
Dialog.register();
|
|
116
|
+
exports.Dialog = Dialog;
|
|
117
|
+
//# sourceMappingURL=dialog.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dialog.cjs","sources":["../../src/dialog/dialog.ts"],"sourcesContent":["import type { InferProps, Props } from 'aeico';\nimport styleVariables from '../styles/variables.css?inline';\nimport style from '../styles/components/dialog.css?inline';\nimport AeicoComponent from '../aeico-component';\nimport { html } from 'aeico';\n\nclass Dialog extends AeicoComponent {\n static props: Props = {\n label: { type: String },\n width: { type: String },\n height: { type: String },\n modal: { type: Boolean },\n closable: { type: Boolean },\n header: { type: Boolean },\n closeOnOverlayClick: { type: Boolean },\n };\n\n declare label?: string;\n declare width?: string;\n declare height?: string;\n declare modal?: boolean;\n declare closable?: boolean;\n declare header?: boolean;\n declare closeOnOverlayClick?: boolean;\n\n protected static styles = [styleVariables, style];\n\n private _dialogEl: HTMLDialogElement | null = null;\n private _hasFooter = false;\n\n protected render() {\n return html(({ dialog, div, header, footer, span, button, slot }) => {\n this._dialogEl = dialog(\n {\n '@click': this._handleDialogClick,\n '@close': this._handleNativeClose,\n style: {\n width: this.width || '',\n height: this.height || '',\n },\n },\n () => {\n // Header\n if (this.header !== false) {\n header({}, () => {\n slot({ name: 'header' }, () => {\n span({ className: 'label', textContent: this.label || '' });\n });\n if (this.closable !== false) {\n button({\n className: 'close-btn',\n textContent: '×',\n '@click': () => this.close(),\n });\n }\n });\n }\n\n // Body\n div({ className: 'body' }, () => {\n slot();\n });\n\n // Footer — always rendered to capture slotchange, hidden when empty\n footer(\n {\n style: { display: this._hasFooter ? '' : 'none' },\n },\n () => {\n slot({ name: 'footer', '@slotchange': this._handleFooterSlotChange });\n },\n );\n },\n );\n });\n }\n\n private _handleDialogClick = (e: Event) => {\n const mouseEvent = e as MouseEvent;\n const path = mouseEvent.composedPath();\n\n // data-close: any slotted element with [data-close] closes the dialog\n for (const el of path) {\n if (el instanceof Element && el.hasAttribute('data-close')) {\n this.close();\n return;\n }\n if (el === this._dialogEl) break;\n }\n\n // Backdrop click (modal mode only)\n if (this.modal !== false && this.closeOnOverlayClick !== false) {\n if (mouseEvent.target === this._dialogEl) {\n const rect = this._dialogEl!.getBoundingClientRect();\n const outside =\n mouseEvent.clientX < rect.left ||\n mouseEvent.clientX > rect.right ||\n mouseEvent.clientY < rect.top ||\n mouseEvent.clientY > rect.bottom;\n if (outside) {\n this.close();\n }\n }\n }\n };\n\n private _handleNativeClose = () => {\n this.emit('close', { detail: { target: this } });\n };\n\n private _handleFooterSlotChange = (e: Event) => {\n const slotEl = e.target as HTMLSlotElement;\n const hasContent = slotEl.assignedElements().length > 0;\n if (hasContent !== this._hasFooter) {\n this._hasFooter = hasContent;\n this.update();\n }\n };\n\n open() {\n if (!this._dialogEl) return;\n if (this.modal !== false) {\n this._dialogEl.showModal();\n } else {\n this._dialogEl.show();\n }\n this.emit('open', { detail: { target: this } });\n }\n\n close() {\n this._dialogEl?.close();\n // emit('close') is handled by _handleNativeClose via the native 'close' event\n }\n\n isOpen(): boolean {\n return this._dialogEl?.open ?? false;\n }\n}\n\nDialog.register();\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ae-dialog': Dialog;\n }\n}\n\nexport default Dialog;\nexport type DialogProps = InferProps<typeof Dialog>;\n"],"names":["AeicoComponent","html","styleVariables"],"mappings":"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"}
|