@duskmoon-dev/el-popover 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,106 @@
1
+ /**
2
+ * DuskMoon Popover Element
3
+ *
4
+ * A contextual overlay/popup component that appears relative to a trigger element.
5
+ * Supports multiple trigger modes, placements, and auto-flip when near viewport edges.
6
+ *
7
+ * @element el-dm-popover
8
+ *
9
+ * @attr {boolean} open - Whether the popover is visible
10
+ * @attr {string} trigger - Trigger mode: click, hover, focus, manual
11
+ * @attr {string} placement - Popover position relative to trigger
12
+ * @attr {number} offset - Distance from trigger element in pixels
13
+ * @attr {boolean} arrow - Whether to show arrow pointing to trigger
14
+ *
15
+ * @slot trigger - The element that triggers the popover
16
+ * @slot - Default slot for popover content
17
+ *
18
+ * @fires open - Fired when popover opens
19
+ * @fires close - Fired when popover closes
20
+ *
21
+ * @csspart popover - The popover container
22
+ * @csspart content - The popover content area
23
+ * @csspart arrow - The popover arrow
24
+ */
25
+ import { BaseElement } from '@duskmoon-dev/el-core';
26
+ export type PopoverPlacement = 'top' | 'top-start' | 'top-end' | 'bottom' | 'bottom-start' | 'bottom-end' | 'left' | 'left-start' | 'left-end' | 'right' | 'right-start' | 'right-end';
27
+ export type PopoverTrigger = 'click' | 'hover' | 'focus' | 'manual';
28
+ export declare class ElDmPopover extends BaseElement {
29
+ static properties: {
30
+ open: {
31
+ type: BooleanConstructor;
32
+ reflect: boolean;
33
+ default: boolean;
34
+ };
35
+ trigger: {
36
+ type: StringConstructor;
37
+ reflect: boolean;
38
+ default: string;
39
+ };
40
+ placement: {
41
+ type: StringConstructor;
42
+ reflect: boolean;
43
+ default: string;
44
+ };
45
+ offset: {
46
+ type: NumberConstructor;
47
+ reflect: boolean;
48
+ default: number;
49
+ };
50
+ arrow: {
51
+ type: BooleanConstructor;
52
+ reflect: boolean;
53
+ default: boolean;
54
+ };
55
+ };
56
+ open: boolean;
57
+ trigger: PopoverTrigger;
58
+ placement: PopoverPlacement;
59
+ offset: number;
60
+ arrow: boolean;
61
+ private _boundHandleClickOutside;
62
+ private _boundHandleKeyDown;
63
+ private _boundHandleScroll;
64
+ private _boundUpdatePosition;
65
+ private _hoverTimeout;
66
+ private _currentPlacement;
67
+ constructor();
68
+ connectedCallback(): void;
69
+ disconnectedCallback(): void;
70
+ /**
71
+ * Show the popover
72
+ */
73
+ show(): void;
74
+ /**
75
+ * Hide the popover
76
+ */
77
+ hide(): void;
78
+ /**
79
+ * Toggle the popover visibility
80
+ */
81
+ toggle(): void;
82
+ private _setVisible;
83
+ private _setupTriggerListeners;
84
+ private _attachTriggerEvents;
85
+ private _detachTriggerEvents;
86
+ private _removeTriggerListeners;
87
+ private _getTriggerElement;
88
+ private _handleTriggerClick;
89
+ private _handleTriggerMouseEnter;
90
+ private _handleTriggerMouseLeave;
91
+ private _handlePopoverMouseEnter;
92
+ private _handlePopoverMouseLeave;
93
+ private _handleTriggerFocus;
94
+ private _handleTriggerBlur;
95
+ private _addGlobalListeners;
96
+ private _removeGlobalListeners;
97
+ private _handleClickOutside;
98
+ private _handleKeyDown;
99
+ private _handleScroll;
100
+ private _updatePosition;
101
+ private _getEffectivePlacement;
102
+ private _calculatePosition;
103
+ update(): void;
104
+ render(): string;
105
+ }
106
+ //# sourceMappingURL=el-dm-popover.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"el-dm-popover.d.ts","sourceRoot":"","sources":["../../src/el-dm-popover.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,EAAE,WAAW,EAAO,MAAM,uBAAuB,CAAC;AAEzD,MAAM,MAAM,gBAAgB,GACxB,KAAK,GACL,WAAW,GACX,SAAS,GACT,QAAQ,GACR,cAAc,GACd,YAAY,GACZ,MAAM,GACN,YAAY,GACZ,UAAU,GACV,OAAO,GACP,aAAa,GACb,WAAW,CAAC;AAEhB,MAAM,MAAM,cAAc,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,QAAQ,CAAC;AA4HpE,qBAAa,WAAY,SAAQ,WAAW;IAC1C,MAAM,CAAC,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;MAMf;IAEM,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,cAAc,CAAC;IACxB,SAAS,EAAE,gBAAgB,CAAC;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,OAAO,CAAC;IAEvB,OAAO,CAAC,wBAAwB,CAA0B;IAC1D,OAAO,CAAC,mBAAmB,CAA6B;IACxD,OAAO,CAAC,kBAAkB,CAAa;IACvC,OAAO,CAAC,oBAAoB,CAAa;IACzC,OAAO,CAAC,aAAa,CAAuB;IAC5C,OAAO,CAAC,iBAAiB,CAA8B;;IAWvD,iBAAiB,IAAI,IAAI;IAKzB,oBAAoB,IAAI,IAAI;IAM5B;;OAEG;IACH,IAAI,IAAI,IAAI;IAUZ;;OAEG;IACH,IAAI,IAAI,IAAI;IAQZ;;OAEG;IACH,MAAM,IAAI,IAAI;IAQd,OAAO,CAAC,WAAW;IAOnB,OAAO,CAAC,sBAAsB;IAe9B,OAAO,CAAC,oBAAoB;IAqB5B,OAAO,CAAC,oBAAoB;IAU5B,OAAO,CAAC,uBAAuB;IAO/B,OAAO,CAAC,kBAAkB;IAS1B,OAAO,CAAC,mBAAmB,CAEzB;IAEF,OAAO,CAAC,wBAAwB,CAM9B;IAEF,OAAO,CAAC,wBAAwB,CAI9B;IAEF,OAAO,CAAC,wBAAwB,CAK9B;IAEF,OAAO,CAAC,wBAAwB,CAI9B;IAEF,OAAO,CAAC,mBAAmB,CAEzB;IAEF,OAAO,CAAC,kBAAkB,CAOxB;IAEF,OAAO,CAAC,mBAAmB;IAO3B,OAAO,CAAC,sBAAsB;IAO9B,OAAO,CAAC,mBAAmB;IAS3B,OAAO,CAAC,cAAc;IAStB,OAAO,CAAC,aAAa;IAMrB,OAAO,CAAC,eAAe;IA8BvB,OAAO,CAAC,sBAAsB;IA2C9B,OAAO,CAAC,kBAAkB;IAiE1B,MAAM,IAAI,IAAI;IAWd,MAAM,IAAI,MAAM;CAmBjB"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * @duskmoon-dev/el-popover
3
+ *
4
+ * DuskMoon Popover custom element
5
+ */
6
+ import { ElDmPopover } from './el-dm-popover.js';
7
+ export { ElDmPopover };
8
+ export type { PopoverPlacement, PopoverTrigger } from './el-dm-popover.js';
9
+ /**
10
+ * Register the el-dm-popover custom element
11
+ *
12
+ * @example
13
+ * ```ts
14
+ * import { register } from '@duskmoon-dev/el-popover';
15
+ * register();
16
+ * ```
17
+ */
18
+ export declare function register(): void;
19
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD,OAAO,EAAE,WAAW,EAAE,CAAC;AACvB,YAAY,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAE3E;;;;;;;;GAQG;AACH,wBAAgB,QAAQ,IAAI,IAAI,CAI/B"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=register.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../../src/register.ts"],"names":[],"mappings":""}
package/package.json ADDED
@@ -0,0 +1,62 @@
1
+ {
2
+ "name": "@duskmoon-dev/el-popover",
3
+ "version": "0.4.0",
4
+ "type": "module",
5
+ "main": "./dist/cjs/index.js",
6
+ "module": "./dist/esm/index.js",
7
+ "types": "./dist/types/index.d.ts",
8
+ "exports": {
9
+ ".": {
10
+ "types": "./dist/types/index.d.ts",
11
+ "import": "./dist/esm/index.js",
12
+ "require": "./dist/cjs/index.js"
13
+ },
14
+ "./register": {
15
+ "types": "./dist/types/register.d.ts",
16
+ "import": "./dist/esm/register.js",
17
+ "require": "./dist/cjs/register.js"
18
+ }
19
+ },
20
+ "files": [
21
+ "dist"
22
+ ],
23
+ "scripts": {
24
+ "prebuild": "bun run clean",
25
+ "build": "bun run build:esm && bun run build:cjs && bun run build:types",
26
+ "build:esm": "bun build ./src/index.ts ./src/register.ts --outdir ./dist/esm --format esm --sourcemap --external @duskmoon-dev/el-core --external @duskmoon-dev/core",
27
+ "build:cjs": "bun build ./src/index.ts ./src/register.ts --outdir ./dist/cjs --format cjs --sourcemap --external @duskmoon-dev/el-core --external @duskmoon-dev/core",
28
+ "build:types": "tsc --emitDeclarationOnly --outDir ./dist/types",
29
+ "dev": "bun build ./src/index.ts --outdir ./dist/esm --format esm --sourcemap --external @duskmoon-dev/el-core --watch",
30
+ "clean": "del-cli dist",
31
+ "test": "bun test",
32
+ "typecheck": "tsc --noEmit",
33
+ "format": "prettier --write 'src/**/*.ts' '*.json'",
34
+ "format:check": "prettier --check 'src/**/*.ts' '*.json'",
35
+ "lint": "eslint src",
36
+ "lint:check": "eslint src --max-warnings 0",
37
+ "lint:fix": "eslint src --fix",
38
+ "release": "bun publish",
39
+ "release:dry-run": "bun publish --dry-run"
40
+ },
41
+ "dependencies": {
42
+ "@duskmoon-dev/el-core": "0.3.0"
43
+ },
44
+ "devDependencies": {
45
+ "typescript": "^5.7.2"
46
+ },
47
+ "publishConfig": {
48
+ "access": "public"
49
+ },
50
+ "customElements": "custom-elements.json",
51
+ "keywords": [
52
+ "duskmoon-dev",
53
+ "duskmoon",
54
+ "custom-elements",
55
+ "customelements",
56
+ "web-components",
57
+ "webcomponents",
58
+ "popover",
59
+ "popup",
60
+ "html"
61
+ ]
62
+ }