@aquera/nile-elements 1.6.0 → 1.6.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/README.md +9 -0
- package/dist/index.cjs.js +1 -1
- package/dist/index.esm.js +1 -1
- package/dist/index.js +1103 -629
- package/dist/internal/enum.cjs.js +1 -1
- package/dist/internal/enum.cjs.js.map +1 -1
- package/dist/internal/enum.esm.js +1 -1
- package/dist/nile-badge/index.cjs.js +1 -1
- package/dist/nile-badge/index.esm.js +1 -1
- package/dist/nile-badge/nile-badge.cjs.js +1 -1
- package/dist/nile-badge/nile-badge.cjs.js.map +1 -1
- package/dist/nile-badge/nile-badge.esm.js +1 -1
- package/dist/nile-button/index.cjs.js +1 -1
- package/dist/nile-button/index.esm.js +1 -1
- package/dist/nile-button/nile-button.cjs.js +1 -1
- package/dist/nile-button/nile-button.cjs.js.map +1 -1
- package/dist/nile-button/nile-button.esm.js +1 -1
- package/dist/nile-carousel/index.cjs.js +1 -1
- package/dist/nile-carousel/index.esm.js +1 -1
- package/dist/nile-carousel/nile-carousel.cjs.js +1 -1
- package/dist/nile-carousel/nile-carousel.cjs.js.map +1 -1
- package/dist/nile-carousel/nile-carousel.esm.js +1 -1
- package/dist/nile-dialog/index.cjs.js +1 -1
- package/dist/nile-dialog/index.esm.js +1 -1
- package/dist/nile-dialog/nile-dialog.cjs.js +1 -1
- package/dist/nile-dialog/nile-dialog.cjs.js.map +1 -1
- package/dist/nile-dialog/nile-dialog.esm.js +1 -1
- package/dist/nile-drawer/index.cjs.js +1 -1
- package/dist/nile-drawer/index.esm.js +1 -1
- package/dist/nile-drawer/nile-drawer.cjs.js +1 -1
- package/dist/nile-drawer/nile-drawer.cjs.js.map +1 -1
- package/dist/nile-drawer/nile-drawer.esm.js +1 -1
- package/dist/nile-floating-panel/index.cjs.js +1 -1
- package/dist/nile-floating-panel/index.esm.js +1 -1
- package/dist/nile-floating-panel/nile-floating-panel.cjs.js +1 -1
- package/dist/nile-floating-panel/nile-floating-panel.cjs.js.map +1 -1
- package/dist/nile-floating-panel/nile-floating-panel.css.cjs.js +1 -1
- package/dist/nile-floating-panel/nile-floating-panel.css.cjs.js.map +1 -1
- package/dist/nile-floating-panel/nile-floating-panel.css.esm.js +137 -21
- package/dist/nile-floating-panel/nile-floating-panel.esm.js +1 -1
- package/dist/nile-icon/icons/svg/folder_delete.cjs.js +2 -0
- package/dist/nile-icon/icons/svg/folder_delete.cjs.js.map +1 -0
- package/dist/nile-icon/icons/svg/folder_delete.esm.js +1 -0
- package/dist/nile-icon/icons/svg/index.cjs.js +1 -1
- package/dist/nile-icon/icons/svg/index.esm.js +1 -1
- package/dist/nile-icon/icons/svg/layers-three-02.cjs.js +1 -1
- package/dist/nile-icon/icons/svg/layers-three-02.cjs.js.map +1 -1
- package/dist/nile-icon/icons/svg/layers-three-02.esm.js +1 -1
- package/dist/nile-icon/index.cjs.js +1 -1
- package/dist/nile-icon/index.cjs.js.map +1 -1
- package/dist/nile-icon/index.esm.js +1 -1
- package/dist/nile-icon-button/index.cjs.js +1 -1
- package/dist/nile-icon-button/index.esm.js +1 -1
- package/dist/nile-icon-button/nile-icon-button.cjs.js +1 -1
- package/dist/nile-icon-button/nile-icon-button.cjs.js.map +1 -1
- package/dist/nile-icon-button/nile-icon-button.esm.js +1 -1
- package/dist/nile-input/index.cjs.js +1 -1
- package/dist/nile-input/index.esm.js +1 -1
- package/dist/nile-input/nile-input.cjs.js +1 -1
- package/dist/nile-input/nile-input.cjs.js.map +1 -1
- package/dist/nile-input/nile-input.esm.js +1 -1
- package/dist/nile-lite-tooltip/index.cjs.js +1 -1
- package/dist/nile-lite-tooltip/index.esm.js +1 -1
- package/dist/nile-lite-tooltip/nile-lite-tooltip.cjs.js +1 -1
- package/dist/nile-lite-tooltip/nile-lite-tooltip.cjs.js.map +1 -1
- package/dist/nile-lite-tooltip/nile-lite-tooltip.esm.js +1 -1
- package/dist/nile-menu-item/index.cjs.js +1 -1
- package/dist/nile-menu-item/index.esm.js +1 -1
- package/dist/nile-menu-item/nile-menu-item.cjs.js +1 -1
- package/dist/nile-menu-item/nile-menu-item.cjs.js.map +1 -1
- package/dist/nile-menu-item/nile-menu-item.esm.js +1 -1
- package/dist/nile-option/index.cjs.js +1 -1
- package/dist/nile-option/index.esm.js +1 -1
- package/dist/nile-option/nile-option.cjs.js +1 -1
- package/dist/nile-option/nile-option.cjs.js.map +1 -1
- package/dist/nile-option/nile-option.esm.js +1 -1
- package/dist/nile-otp-input/index.cjs.js +2 -0
- package/dist/nile-otp-input/index.cjs.js.map +1 -0
- package/dist/nile-otp-input/index.esm.js +1 -0
- package/dist/nile-otp-input/nile-otp-input.cjs.js +2 -0
- package/dist/nile-otp-input/nile-otp-input.cjs.js.map +1 -0
- package/dist/nile-otp-input/nile-otp-input.css.cjs.js +2 -0
- package/dist/nile-otp-input/nile-otp-input.css.cjs.js.map +1 -0
- package/dist/nile-otp-input/nile-otp-input.css.esm.js +257 -0
- package/dist/nile-otp-input/nile-otp-input.enum.cjs.js +2 -0
- package/dist/nile-otp-input/nile-otp-input.enum.cjs.js.map +1 -0
- package/dist/nile-otp-input/nile-otp-input.enum.esm.js +1 -0
- package/dist/nile-otp-input/nile-otp-input.esm.js +103 -0
- package/dist/nile-select/index.cjs.js +1 -1
- package/dist/nile-select/index.esm.js +1 -1
- package/dist/nile-select/nile-select.cjs.js +1 -1
- package/dist/nile-select/nile-select.cjs.js.map +1 -1
- package/dist/nile-select/nile-select.esm.js +1 -1
- package/dist/nile-side-bar-action-menu-item/index.cjs.js +1 -1
- package/dist/nile-side-bar-action-menu-item/index.esm.js +1 -1
- package/dist/nile-side-bar-action-menu-item/nile-side-bar-action-menu-item.cjs.js +1 -1
- package/dist/nile-side-bar-action-menu-item/nile-side-bar-action-menu-item.cjs.js.map +1 -1
- package/dist/nile-side-bar-action-menu-item/nile-side-bar-action-menu-item.esm.js +1 -1
- package/dist/nile-tab/index.cjs.js +1 -1
- package/dist/nile-tab/index.esm.js +1 -1
- package/dist/nile-tab/nile-tab.cjs.js +1 -1
- package/dist/nile-tab/nile-tab.cjs.js.map +1 -1
- package/dist/nile-tab/nile-tab.esm.js +1 -1
- package/dist/nile-tab-group/index.cjs.js +1 -1
- package/dist/nile-tab-group/index.esm.js +1 -1
- package/dist/nile-tab-group/nile-tab-group.cjs.js +1 -1
- package/dist/nile-tab-group/nile-tab-group.cjs.js.map +1 -1
- package/dist/nile-tab-group/nile-tab-group.esm.js +1 -1
- package/dist/nile-tag/index.cjs.js +1 -1
- package/dist/nile-tag/index.esm.js +1 -1
- package/dist/nile-tag/nile-tag.cjs.js +1 -1
- package/dist/nile-tag/nile-tag.cjs.js.map +1 -1
- package/dist/nile-tag/nile-tag.esm.js +1 -1
- package/dist/nile-toast/index.cjs.js +1 -1
- package/dist/nile-toast/index.esm.js +1 -1
- package/dist/nile-toast/nile-toast.cjs.js +1 -1
- package/dist/nile-toast/nile-toast.cjs.js.map +1 -1
- package/dist/nile-toast/nile-toast.esm.js +1 -1
- package/dist/nile-tree/index.cjs.js +1 -1
- package/dist/nile-tree/index.esm.js +1 -1
- package/dist/nile-tree/nile-tree.cjs.js +1 -1
- package/dist/nile-tree/nile-tree.cjs.js.map +1 -1
- package/dist/nile-tree/nile-tree.esm.js +1 -1
- package/dist/nile-tree-item/index.cjs.js +1 -1
- package/dist/nile-tree-item/index.esm.js +1 -1
- package/dist/nile-tree-item/nile-tree-item.cjs.js +1 -1
- package/dist/nile-tree-item/nile-tree-item.cjs.js.map +1 -1
- package/dist/nile-tree-item/nile-tree-item.esm.js +1 -1
- package/dist/nile-virtual-select/index.cjs.js +1 -1
- package/dist/nile-virtual-select/index.esm.js +1 -1
- package/dist/nile-virtual-select/nile-virtual-select.cjs.js +2 -2
- package/dist/nile-virtual-select/nile-virtual-select.esm.js +1 -1
- package/dist/src/index.d.ts +2 -1
- package/dist/src/index.js +2 -1
- package/dist/src/index.js.map +1 -1
- package/dist/src/internal/enum.d.ts +21 -0
- package/dist/src/internal/enum.js +23 -1
- package/dist/src/internal/enum.js.map +1 -1
- package/dist/src/nile-floating-panel/index.js.map +1 -1
- package/dist/src/nile-floating-panel/nile-floating-panel.css.d.ts +1 -1
- package/dist/src/nile-floating-panel/nile-floating-panel.css.js +147 -20
- package/dist/src/nile-floating-panel/nile-floating-panel.css.js.map +1 -1
- package/dist/src/nile-floating-panel/nile-floating-panel.d.ts +92 -24
- package/dist/src/nile-floating-panel/nile-floating-panel.js +489 -159
- package/dist/src/nile-floating-panel/nile-floating-panel.js.map +1 -1
- package/dist/src/nile-icon/icons/svg/folder_delete.d.ts +5 -0
- package/dist/src/nile-icon/icons/svg/folder_delete.js +5 -0
- package/dist/src/nile-icon/icons/svg/folder_delete.js.map +1 -0
- package/dist/src/nile-icon/icons/svg/index.d.ts +1 -0
- package/dist/src/nile-icon/icons/svg/index.js +1 -0
- package/dist/src/nile-icon/icons/svg/index.js.map +1 -1
- package/dist/src/nile-icon/icons/svg/layers-three-02.d.ts +1 -1
- package/dist/src/nile-icon/icons/svg/layers-three-02.js +1 -1
- package/dist/src/nile-icon/icons/svg/layers-three-02.js.map +1 -1
- package/dist/src/nile-otp-input/index.d.ts +1 -0
- package/dist/src/nile-otp-input/index.js +2 -0
- package/dist/src/nile-otp-input/index.js.map +1 -0
- package/dist/src/nile-otp-input/nile-otp-input.css.d.ts +12 -0
- package/dist/src/nile-otp-input/nile-otp-input.css.js +269 -0
- package/dist/src/nile-otp-input/nile-otp-input.css.js.map +1 -0
- package/dist/src/nile-otp-input/nile-otp-input.d.ts +156 -0
- package/dist/src/nile-otp-input/nile-otp-input.enum.d.ts +26 -0
- package/dist/src/nile-otp-input/nile-otp-input.enum.js +32 -0
- package/dist/src/nile-otp-input/nile-otp-input.enum.js.map +1 -0
- package/dist/src/nile-otp-input/nile-otp-input.js +762 -0
- package/dist/src/nile-otp-input/nile-otp-input.js.map +1 -0
- package/dist/src/nile-otp-input/nile-otp-input.test.d.ts +1 -0
- package/dist/src/nile-otp-input/nile-otp-input.test.js +493 -0
- package/dist/src/nile-otp-input/nile-otp-input.test.js.map +1 -0
- package/dist/src/version.js +2 -2
- package/dist/src/version.js.map +1 -1
- package/dist/tippy.esm-57628c2b.esm.js +1 -0
- package/dist/tippy.esm-78baa8f2.cjs.js +2 -0
- package/dist/tippy.esm-78baa8f2.cjs.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +5 -3
- package/plop-templates/lit/index.ts.hbs +1 -1
- package/plop-templates/lit/lit.css.ts.hbs +1 -1
- package/plop-templates/lit/lit.ts.hbs +1 -1
- package/src/index.ts +3 -2
- package/src/internal/enum.ts +23 -1
- package/src/nile-floating-panel/index.ts +0 -1
- package/src/nile-floating-panel/nile-floating-panel.css.ts +149 -21
- package/src/nile-floating-panel/nile-floating-panel.ts +498 -190
- package/src/nile-icon/icons/svg/folder_delete.ts +5 -0
- package/src/nile-icon/icons/svg/index.ts +1 -0
- package/src/nile-icon/icons/svg/layers-three-02.ts +1 -1
- package/src/nile-otp-input/index.ts +1 -0
- package/src/nile-otp-input/nile-otp-input.css.ts +271 -0
- package/src/nile-otp-input/nile-otp-input.enum.ts +30 -0
- package/src/nile-otp-input/nile-otp-input.test.ts +732 -0
- package/src/nile-otp-input/nile-otp-input.ts +835 -0
- package/vscode-html-custom-data.json +383 -23
- package/dist/nile-floating-panel/anchor-manager.cjs.js +0 -2
- package/dist/nile-floating-panel/anchor-manager.cjs.js.map +0 -1
- package/dist/nile-floating-panel/anchor-manager.esm.js +0 -1
- package/dist/nile-floating-panel/content-manager.cjs.js +0 -2
- package/dist/nile-floating-panel/content-manager.cjs.js.map +0 -1
- package/dist/nile-floating-panel/content-manager.esm.js +0 -1
- package/dist/nile-floating-panel/event-manager.cjs.js +0 -2
- package/dist/nile-floating-panel/event-manager.cjs.js.map +0 -1
- package/dist/nile-floating-panel/event-manager.esm.js +0 -1
- package/dist/nile-floating-panel/position-manager.cjs.js +0 -2
- package/dist/nile-floating-panel/position-manager.cjs.js.map +0 -1
- package/dist/nile-floating-panel/position-manager.esm.js +0 -1
- package/dist/nile-floating-panel/style-manager.cjs.js +0 -2
- package/dist/nile-floating-panel/style-manager.cjs.js.map +0 -1
- package/dist/nile-floating-panel/style-manager.esm.js +0 -1
- package/dist/nile-floating-panel/types.cjs.js +0 -2
- package/dist/nile-floating-panel/types.cjs.js.map +0 -1
- package/dist/nile-floating-panel/types.esm.js +0 -1
- package/dist/src/nile-floating-panel/anchor-manager.d.ts +0 -6
- package/dist/src/nile-floating-panel/anchor-manager.js +0 -27
- package/dist/src/nile-floating-panel/anchor-manager.js.map +0 -1
- package/dist/src/nile-floating-panel/content-manager.d.ts +0 -5
- package/dist/src/nile-floating-panel/content-manager.js +0 -44
- package/dist/src/nile-floating-panel/content-manager.js.map +0 -1
- package/dist/src/nile-floating-panel/event-manager.d.ts +0 -14
- package/dist/src/nile-floating-panel/event-manager.js +0 -52
- package/dist/src/nile-floating-panel/event-manager.js.map +0 -1
- package/dist/src/nile-floating-panel/position-manager.d.ts +0 -17
- package/dist/src/nile-floating-panel/position-manager.js +0 -72
- package/dist/src/nile-floating-panel/position-manager.js.map +0 -1
- package/dist/src/nile-floating-panel/style-manager.d.ts +0 -9
- package/dist/src/nile-floating-panel/style-manager.js +0 -44
- package/dist/src/nile-floating-panel/style-manager.js.map +0 -1
- package/dist/src/nile-floating-panel/types.d.ts +0 -11
- package/dist/src/nile-floating-panel/types.js +0 -2
- package/dist/src/nile-floating-panel/types.js.map +0 -1
- package/src/nile-floating-panel/anchor-manager.ts +0 -33
- package/src/nile-floating-panel/content-manager.ts +0 -54
- package/src/nile-floating-panel/event-manager.ts +0 -74
- package/src/nile-floating-panel/position-manager.ts +0 -102
- package/src/nile-floating-panel/style-manager.ts +0 -54
- package/src/nile-floating-panel/types.ts +0 -15
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{b as t,c as s,o as i,f as e,a as h}from"../floating-ui.dom-cc9126da.esm.js";class a{constructor(t,s,i,e=8,h=8){this.cleanup=null,this.referenceElement=t,this.floatingElement=s,this.position=i,this.offsetValue=e,this.shiftPadding=h}setupAutoUpdate(){this.cleanupAutoUpdate(),this.cleanup=t(this.referenceElement,this.floatingElement,(()=>{this.reposition()}),{ancestorScroll:!0,ancestorResize:!0,elementResize:!0,layoutShift:!0,animationFrame:!1})}cleanupAutoUpdate(){this.cleanup&&(this.cleanup(),this.cleanup=null)}reposition(){const t=this.position;s(this.referenceElement,this.floatingElement,{placement:t,strategy:"fixed",middleware:[i(this.offsetValue),e(),h({padding:this.shiftPadding})]}).then((({x:t,y:s,placement:i})=>{let e=s;i.startsWith("bottom")?e=s+10:i.startsWith("top")&&(e=s-20),Object.assign(this.floatingElement.style,{left:`${t}px`,top:`${e}px`,position:"fixed"})}))}updatePosition(t){this.position=t,this.reposition()}updateOffset(t){this.offsetValue=t,this.reposition()}updateShiftPadding(t){this.shiftPadding=t,this.reposition()}destroy(){this.cleanupAutoUpdate()}}export{a as P};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
System.register(["./nile-floating-panel.css.cjs.js","lit"],function(_export,_context){"use strict";var t,e;function _typeof(o){"@babel/helpers - typeof";return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(o){return typeof o;}:function(o){return o&&"function"==typeof Symbol&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":typeof o;},_typeof(o);}function _classCallCheck(a,n){if(!(a instanceof n))throw new TypeError("Cannot call a class as a function");}function _defineProperties(e,r){for(var t=0;t<r.length;t++){var o=r[t];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,_toPropertyKey(o.key),o);}}function _createClass(e,r,t){return r&&_defineProperties(e.prototype,r),t&&_defineProperties(e,t),Object.defineProperty(e,"prototype",{writable:!1}),e;}function _toPropertyKey(t){var i=_toPrimitive(t,"string");return"symbol"==_typeof(i)?i:i+"";}function _toPrimitive(t,r){if("object"!=_typeof(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var i=e.call(t,r||"default");if("object"!=_typeof(i))return i;throw new TypeError("@@toPrimitive must return a primitive value.");}return("string"===r?String:Number)(t);}return{setters:[function(_nileFloatingPanelCssCjsJs){t=_nileFloatingPanelCssCjsJs.p;},function(_lit){}],execute:function execute(){_export("S",e=/*#__PURE__*/function(){function e(){_classCallCheck(this,e);this.injectedStyleId=null;}return _createClass(e,[{key:"injectStyles",value:function injectStyles(t){var s="nile-floating-panel-styles-global";if(e.injectedStyleIds.has(s))return;if(this.injectedStyleId&&document.getElementById(this.injectedStyleId))return;this.injectedStyleId=s,e.injectedStyleIds.add(s);var n=this.extractCSSFromStyles(t),l=document.createElement("style");l.id=s,l.textContent=n,document.head.appendChild(l);}},{key:"extractCSSFromStyles",value:function extractCSSFromStyles(_e){return(t.cssText||"")+"\n"+_e.map(function(t){return"string"==typeof t?t:t&&"cssText"in t?t.cssText:"";}).join("\n");}},{key:"cleanupStyles",value:function cleanupStyles(){}},{key:"getInjectedStyleId",value:function getInjectedStyleId(){return this.injectedStyleId;}}]);}());e.injectedStyleIds=new Set();}};});
|
|
2
|
-
//# sourceMappingURL=style-manager.cjs.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"style-manager.cjs.js","sources":["../../../src/nile-floating-panel/style-manager.ts"],"sourcesContent":["import type { CSSResultArray } from 'lit';\nimport { panelContainerStyles } from './nile-floating-panel.css';\n\nexport class StyleManager {\n private injectedStyleId: string | null = null;\n private static injectedStyleIds: Set<string> = new Set();\n\n injectStyles(componentStyles: CSSResultArray): void {\n const globalStyleId = 'nile-floating-panel-styles-global';\n if (StyleManager.injectedStyleIds.has(globalStyleId)) {\n return;\n }\n\n if (this.injectedStyleId && document.getElementById(this.injectedStyleId)) {\n return;\n }\n\n this.injectedStyleId = globalStyleId;\n StyleManager.injectedStyleIds.add(globalStyleId);\n\n const cssText = this.extractCSSFromStyles(componentStyles);\n\n const styleElement = document.createElement('style');\n styleElement.id = globalStyleId;\n styleElement.textContent = cssText;\n document.head.appendChild(styleElement);\n }\n\n private extractCSSFromStyles(styles: CSSResultArray): string {\n const containerStyles = panelContainerStyles.cssText || '';\n\n const componentStyles = styles\n .map(style => {\n if (typeof style === 'string') {\n return style;\n }\n if (style && 'cssText' in style) {\n return (style as any).cssText;\n }\n return '';\n })\n .join('\\n');\n\n return containerStyles + '\\n' + componentStyles;\n }\n\n cleanupStyles(): void {\n }\n\n getInjectedStyleId(): string | null {\n return this.injectedStyleId;\n }\n}\n\n"],"names":["StyleManager","e","this","injectedStyleId","_createClass","key","value","injectStyles","componentStyles","globalStyleId","injectedStyleIds","has","document","getElementById","add","cssText","extractCSSFromStyles","styleElement","createElement","id","textContent","head","appendChild","styles","panelContainerStyles","map","style","join","cleanupStyles","getInjectedStyleId","Set"],"mappings":"60CAGaA,CAAAA,yBAAb,SAAAC,EAAA,CACUC,CAAAA,eAAAA,MAAAA,CAAAA,EAAAA,IAAAA,CAAeC,gBAAkB,IAgD1C,EA7CC,OAAAC,YAAA,CAAAH,CAAA,GAAAI,GAAA,gBAAAC,KAAA,UAAAC,YAAAA,CAAaC,CAAAA,CAAAA,CACX,GAAMC,CAAAA,CAAgB,CAAA,mCAAA,CACtB,GAAIT,CAAaU,CAAAA,gBAAAA,CAAiBC,IAAIF,CACpC,CAAA,CAAA,OAGF,GAAIP,IAAKC,CAAAA,eAAAA,EAAmBS,SAASC,cAAeX,CAAAA,IAAAA,CAAKC,iBACvD,OAGFD,IAAAA,CAAKC,gBAAkBM,CACvBT,CAAAA,CAAAA,CAAaU,iBAAiBI,GAAIL,CAAAA,CAAAA,CAAAA,CAElC,GAAMM,CAAAA,CAAUb,CAAAA,IAAAA,CAAKc,qBAAqBR,CAEpCS,CAAAA,CAAAA,CAAAA,CAAeL,SAASM,aAAc,CAAA,OAAA,CAAA,CAC5CD,EAAaE,EAAKV,CAAAA,CAAAA,CAClBQ,EAAaG,WAAcL,CAAAA,CAAAA,CAC3BH,SAASS,IAAKC,CAAAA,WAAAA,CAAYL,EAC3B,EAEO,GAAAZ,GAAA,wBAAAC,KAAA,UAAAU,oBAAAA,CAAqBO,EAe3B,CAAA,CAAA,MAAA,CAdwBC,EAAqBT,OAAW,EAAA,EAAA,EAc/B,KAZDQ,EACrBE,CAAAA,GAAAA,CAAIC,SAAAA,SACkB,QAAVA,EAAAA,MAAAA,CAAAA,CAAAA,CACFA,EAELA,CAAS,EAAA,SAAA,EAAaA,CAAAA,EAChBA,CAAcX,CAAAA,OAAAA,CAEjB,MAERY,IAAK,CAAA,IAAA,CAGT,EAED,GAAAtB,GAAA,iBAAAC,KAAA,UAAAsB,aAAAA,CAAAA,CAAAA,CACC,CAED,GAAAvB,GAAA,sBAAAC,KAAA,UAAAuB,kBAAAA,CAAAA,CAAAA,CACE,MAAO3B,KAAKC,CAAAA,eACb,WA9CcH,CAAAU,CAAAA,gBAAAA,CAAgC,GAAIoB,CAAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{p as t}from"./nile-floating-panel.css.esm.js";import"lit";class e{constructor(){this.injectedStyleId=null}injectStyles(t){const s="nile-floating-panel-styles-global";if(e.injectedStyleIds.has(s))return;if(this.injectedStyleId&&document.getElementById(this.injectedStyleId))return;this.injectedStyleId=s,e.injectedStyleIds.add(s);const n=this.extractCSSFromStyles(t),l=document.createElement("style");l.id=s,l.textContent=n,document.head.appendChild(l)}extractCSSFromStyles(e){return(t.cssText||"")+"\n"+e.map((t=>"string"==typeof t?t:t&&"cssText"in t?t.cssText:"")).join("\n")}cleanupStyles(){}getInjectedStyleId(){return this.injectedStyleId}}e.injectedStyleIds=new Set;export{e as S};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.cjs.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import type { FloatingPanelAnchor } from './types';
|
|
2
|
-
export declare class AnchorManager {
|
|
3
|
-
static resolveAnchor(anchor: FloatingPanelAnchor): HTMLElement;
|
|
4
|
-
static appendToAnchor(anchor: HTMLElement, panelContainer: HTMLElement): void;
|
|
5
|
-
static removeFromAnchor(panelContainer: HTMLElement): void;
|
|
6
|
-
}
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
export class AnchorManager {
|
|
2
|
-
static resolveAnchor(anchor) {
|
|
3
|
-
if (anchor instanceof HTMLElement) {
|
|
4
|
-
return anchor;
|
|
5
|
-
}
|
|
6
|
-
if (typeof anchor === 'string') {
|
|
7
|
-
const element = document.querySelector(anchor);
|
|
8
|
-
if (element) {
|
|
9
|
-
return element;
|
|
10
|
-
}
|
|
11
|
-
const byId = document.getElementById(anchor);
|
|
12
|
-
if (byId) {
|
|
13
|
-
return byId;
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
return document.body;
|
|
17
|
-
}
|
|
18
|
-
static appendToAnchor(anchor, panelContainer) {
|
|
19
|
-
anchor.appendChild(panelContainer);
|
|
20
|
-
}
|
|
21
|
-
static removeFromAnchor(panelContainer) {
|
|
22
|
-
if (panelContainer.parentNode) {
|
|
23
|
-
panelContainer.parentNode.removeChild(panelContainer);
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
//# sourceMappingURL=anchor-manager.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"anchor-manager.js","sourceRoot":"","sources":["../../../src/nile-floating-panel/anchor-manager.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,aAAa;IACxB,MAAM,CAAC,aAAa,CAAC,MAA2B;QAC9C,IAAI,MAAM,YAAY,WAAW,EAAE,CAAC;YAClC,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;YAC/B,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAgB,CAAC;YAC9D,IAAI,OAAO,EAAE,CAAC;gBACZ,OAAO,OAAO,CAAC;YACjB,CAAC;YACD,MAAM,IAAI,GAAG,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;YAC7C,IAAI,IAAI,EAAE,CAAC;gBACT,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;QAED,OAAO,QAAQ,CAAC,IAAI,CAAC;IACvB,CAAC;IAED,MAAM,CAAC,cAAc,CAAC,MAAmB,EAAE,cAA2B;QACpE,MAAM,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;IACrC,CAAC;IAED,MAAM,CAAC,gBAAgB,CAAC,cAA2B;QACjD,IAAI,cAAc,CAAC,UAAU,EAAE,CAAC;YAC9B,cAAc,CAAC,UAAU,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;QACxD,CAAC;IACH,CAAC;CACF","sourcesContent":["import type { FloatingPanelAnchor } from './types';\n\nexport class AnchorManager {\n static resolveAnchor(anchor: FloatingPanelAnchor): HTMLElement {\n if (anchor instanceof HTMLElement) {\n return anchor;\n }\n\n if (typeof anchor === 'string') {\n const element = document.querySelector(anchor) as HTMLElement;\n if (element) {\n return element;\n }\n const byId = document.getElementById(anchor);\n if (byId) {\n return byId;\n }\n }\n\n return document.body;\n }\n\n static appendToAnchor(anchor: HTMLElement, panelContainer: HTMLElement): void {\n anchor.appendChild(panelContainer);\n }\n\n static removeFromAnchor(panelContainer: HTMLElement): void {\n if (panelContainer.parentNode) {\n panelContainer.parentNode.removeChild(panelContainer);\n }\n }\n}\n\n"]}
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
export declare class ContentManager {
|
|
2
|
-
static updatePanelContent(panelContainer: HTMLElement, slot: HTMLSlotElement | null, dataContent: string): void;
|
|
3
|
-
static hasSlotContent(slot: HTMLSlotElement | null): boolean;
|
|
4
|
-
static getSlotContent(slot: HTMLSlotElement | null): Node[];
|
|
5
|
-
}
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
export class ContentManager {
|
|
2
|
-
static updatePanelContent(panelContainer, slot, dataContent) {
|
|
3
|
-
panelContainer.innerHTML = '';
|
|
4
|
-
const slotContent = slot ? slot.assignedNodes({ flatten: true }) : [];
|
|
5
|
-
const hasSlotContent = slotContent.length > 0 &&
|
|
6
|
-
slotContent.some(node => {
|
|
7
|
-
if (node.nodeType === Node.TEXT_NODE) {
|
|
8
|
-
return node.textContent?.trim() !== '';
|
|
9
|
-
}
|
|
10
|
-
return node instanceof HTMLElement;
|
|
11
|
-
});
|
|
12
|
-
if (hasSlotContent) {
|
|
13
|
-
slotContent.forEach(node => {
|
|
14
|
-
if (node.nodeType === Node.TEXT_NODE) {
|
|
15
|
-
const textNode = document.createTextNode(node.textContent || '');
|
|
16
|
-
panelContainer.appendChild(textNode);
|
|
17
|
-
}
|
|
18
|
-
else if (node instanceof HTMLElement) {
|
|
19
|
-
panelContainer.appendChild(node.cloneNode(true));
|
|
20
|
-
}
|
|
21
|
-
});
|
|
22
|
-
}
|
|
23
|
-
else if (dataContent) {
|
|
24
|
-
panelContainer.textContent = dataContent;
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
static hasSlotContent(slot) {
|
|
28
|
-
if (!slot) {
|
|
29
|
-
return false;
|
|
30
|
-
}
|
|
31
|
-
const slotContent = slot.assignedNodes({ flatten: true });
|
|
32
|
-
return slotContent.length > 0 &&
|
|
33
|
-
slotContent.some(node => {
|
|
34
|
-
if (node.nodeType === Node.TEXT_NODE) {
|
|
35
|
-
return node.textContent?.trim() !== '';
|
|
36
|
-
}
|
|
37
|
-
return node instanceof HTMLElement;
|
|
38
|
-
});
|
|
39
|
-
}
|
|
40
|
-
static getSlotContent(slot) {
|
|
41
|
-
return slot ? slot.assignedNodes({ flatten: true }) : [];
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
//# sourceMappingURL=content-manager.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"content-manager.js","sourceRoot":"","sources":["../../../src/nile-floating-panel/content-manager.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,cAAc;IACzB,MAAM,CAAC,kBAAkB,CACvB,cAA2B,EAC3B,IAA4B,EAC5B,WAAmB;QAEnB,cAAc,CAAC,SAAS,GAAG,EAAE,CAAC;QAE9B,MAAM,WAAW,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAEtE,MAAM,cAAc,GAAG,WAAW,CAAC,MAAM,GAAG,CAAC;YAC3C,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;gBACtB,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,SAAS,EAAE,CAAC;oBACrC,OAAO,IAAI,CAAC,WAAW,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;gBACzC,CAAC;gBACD,OAAO,IAAI,YAAY,WAAW,CAAC;YACrC,CAAC,CAAC,CAAC;QAEL,IAAI,cAAc,EAAE,CAAC;YACnB,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;gBACzB,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,SAAS,EAAE,CAAC;oBACrC,MAAM,QAAQ,GAAG,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC;oBACjE,cAAc,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;gBACvC,CAAC;qBAAM,IAAI,IAAI,YAAY,WAAW,EAAE,CAAC;oBACvC,cAAc,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;gBACnD,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC;aAAM,IAAI,WAAW,EAAE,CAAC;YACvB,cAAc,CAAC,WAAW,GAAG,WAAW,CAAC;QAC3C,CAAC;IACH,CAAC;IAED,MAAM,CAAC,cAAc,CAAC,IAA4B;QAChD,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1D,OAAO,WAAW,CAAC,MAAM,GAAG,CAAC;YAC3B,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;gBACtB,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,SAAS,EAAE,CAAC;oBACrC,OAAO,IAAI,CAAC,WAAW,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;gBACzC,CAAC;gBACD,OAAO,IAAI,YAAY,WAAW,CAAC;YACrC,CAAC,CAAC,CAAC;IACP,CAAC;IAED,MAAM,CAAC,cAAc,CAAC,IAA4B;QAChD,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC3D,CAAC;CACF","sourcesContent":["import type { FloatingPanelContentConfig } from './types';\n\nexport class ContentManager {\n static updatePanelContent(\n panelContainer: HTMLElement,\n slot: HTMLSlotElement | null,\n dataContent: string\n ): void {\n panelContainer.innerHTML = '';\n\n const slotContent = slot ? slot.assignedNodes({ flatten: true }) : [];\n\n const hasSlotContent = slotContent.length > 0 &&\n slotContent.some(node => {\n if (node.nodeType === Node.TEXT_NODE) {\n return node.textContent?.trim() !== '';\n }\n return node instanceof HTMLElement;\n });\n\n if (hasSlotContent) {\n slotContent.forEach(node => {\n if (node.nodeType === Node.TEXT_NODE) {\n const textNode = document.createTextNode(node.textContent || '');\n panelContainer.appendChild(textNode);\n } else if (node instanceof HTMLElement) {\n panelContainer.appendChild(node.cloneNode(true));\n }\n });\n } else if (dataContent) {\n panelContainer.textContent = dataContent;\n }\n }\n\n static hasSlotContent(slot: HTMLSlotElement | null): boolean {\n if (!slot) {\n return false;\n }\n\n const slotContent = slot.assignedNodes({ flatten: true });\n return slotContent.length > 0 &&\n slotContent.some(node => {\n if (node.nodeType === Node.TEXT_NODE) {\n return node.textContent?.trim() !== '';\n }\n return node instanceof HTMLElement;\n });\n }\n\n static getSlotContent(slot: HTMLSlotElement | null): Node[] {\n return slot ? slot.assignedNodes({ flatten: true }) : [];\n }\n}\n\n"]}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
export declare class EventManager {
|
|
2
|
-
private component;
|
|
3
|
-
private panelContainer;
|
|
4
|
-
private closeOnOutsideClick;
|
|
5
|
-
private isOpen;
|
|
6
|
-
private boundHandleDocumentClick;
|
|
7
|
-
private onCloseCallback;
|
|
8
|
-
constructor(component: HTMLElement);
|
|
9
|
-
setupOutsideClickHandler(panelContainer: HTMLElement, closeOnOutsideClick: boolean, isOpen: boolean, onClose: () => void): void;
|
|
10
|
-
updateOutsideClickHandler(panelContainer: HTMLElement | null, closeOnOutsideClick: boolean, isOpen: boolean): void;
|
|
11
|
-
cleanupOutsideClickHandler(): void;
|
|
12
|
-
private handleDocumentClick;
|
|
13
|
-
destroy(): void;
|
|
14
|
-
}
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
export class EventManager {
|
|
2
|
-
constructor(component) {
|
|
3
|
-
this.panelContainer = null;
|
|
4
|
-
this.closeOnOutsideClick = true;
|
|
5
|
-
this.isOpen = false;
|
|
6
|
-
this.boundHandleDocumentClick = null;
|
|
7
|
-
this.onCloseCallback = null;
|
|
8
|
-
this.component = component;
|
|
9
|
-
}
|
|
10
|
-
setupOutsideClickHandler(panelContainer, closeOnOutsideClick, isOpen, onClose) {
|
|
11
|
-
this.panelContainer = panelContainer;
|
|
12
|
-
this.closeOnOutsideClick = closeOnOutsideClick;
|
|
13
|
-
this.isOpen = isOpen;
|
|
14
|
-
this.onCloseCallback = onClose;
|
|
15
|
-
if (!this.closeOnOutsideClick || this.boundHandleDocumentClick) {
|
|
16
|
-
return;
|
|
17
|
-
}
|
|
18
|
-
this.boundHandleDocumentClick = this.handleDocumentClick.bind(this);
|
|
19
|
-
document.addEventListener('mousedown', this.boundHandleDocumentClick, true);
|
|
20
|
-
}
|
|
21
|
-
updateOutsideClickHandler(panelContainer, closeOnOutsideClick, isOpen) {
|
|
22
|
-
this.panelContainer = panelContainer;
|
|
23
|
-
this.closeOnOutsideClick = closeOnOutsideClick;
|
|
24
|
-
this.isOpen = isOpen;
|
|
25
|
-
this.cleanupOutsideClickHandler();
|
|
26
|
-
if (isOpen && closeOnOutsideClick && panelContainer) {
|
|
27
|
-
this.boundHandleDocumentClick = this.handleDocumentClick.bind(this);
|
|
28
|
-
document.addEventListener('mousedown', this.boundHandleDocumentClick, true);
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
cleanupOutsideClickHandler() {
|
|
32
|
-
if (this.boundHandleDocumentClick) {
|
|
33
|
-
document.removeEventListener('mousedown', this.boundHandleDocumentClick, true);
|
|
34
|
-
this.boundHandleDocumentClick = null;
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
handleDocumentClick(event) {
|
|
38
|
-
if (!this.isOpen || !this.closeOnOutsideClick || !this.panelContainer || !this.onCloseCallback) {
|
|
39
|
-
return;
|
|
40
|
-
}
|
|
41
|
-
const target = event.target;
|
|
42
|
-
if (!this.panelContainer.contains(target) && !this.component.contains(target)) {
|
|
43
|
-
this.onCloseCallback();
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
destroy() {
|
|
47
|
-
this.cleanupOutsideClickHandler();
|
|
48
|
-
this.panelContainer = null;
|
|
49
|
-
this.onCloseCallback = null;
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
//# sourceMappingURL=event-manager.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"event-manager.js","sourceRoot":"","sources":["../../../src/nile-floating-panel/event-manager.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,YAAY;IAQvB,YAAY,SAAsB;QAN1B,mBAAc,GAAuB,IAAI,CAAC;QAC1C,wBAAmB,GAAY,IAAI,CAAC;QACpC,WAAM,GAAY,KAAK,CAAC;QACxB,6BAAwB,GAAyC,IAAI,CAAC;QACtE,oBAAe,GAAwB,IAAI,CAAC;QAGlD,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;IAED,wBAAwB,CACtB,cAA2B,EAC3B,mBAA4B,EAC5B,MAAe,EACf,OAAmB;QAEnB,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;QACrC,IAAI,CAAC,mBAAmB,GAAG,mBAAmB,CAAC;QAC/C,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC;QAE/B,IAAI,CAAC,IAAI,CAAC,mBAAmB,IAAI,IAAI,CAAC,wBAAwB,EAAE,CAAC;YAC/D,OAAO;QACT,CAAC;QAED,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpE,QAAQ,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,wBAAwB,EAAE,IAAI,CAAC,CAAC;IAC9E,CAAC;IAED,yBAAyB,CACvB,cAAkC,EAClC,mBAA4B,EAC5B,MAAe;QAEf,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;QACrC,IAAI,CAAC,mBAAmB,GAAG,mBAAmB,CAAC;QAC/C,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QAErB,IAAI,CAAC,0BAA0B,EAAE,CAAC;QAElC,IAAI,MAAM,IAAI,mBAAmB,IAAI,cAAc,EAAE,CAAC;YACpD,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACpE,QAAQ,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,wBAAwB,EAAE,IAAI,CAAC,CAAC;QAC9E,CAAC;IACH,CAAC;IAED,0BAA0B;QACxB,IAAI,IAAI,CAAC,wBAAwB,EAAE,CAAC;YAClC,QAAQ,CAAC,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAAC,wBAAwB,EAAE,IAAI,CAAC,CAAC;YAC/E,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC;QACvC,CAAC;IACH,CAAC;IAEO,mBAAmB,CAAC,KAAiB;QAC3C,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,mBAAmB,IAAI,CAAC,IAAI,CAAC,cAAc,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;YAC/F,OAAO;QACT,CAAC;QAED,MAAM,MAAM,GAAG,KAAK,CAAC,MAAc,CAAC;QAEpC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YAC9E,IAAI,CAAC,eAAe,EAAE,CAAC;QACzB,CAAC;IACH,CAAC;IAED,OAAO;QACL,IAAI,CAAC,0BAA0B,EAAE,CAAC;QAClC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAC3B,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;IAC9B,CAAC;CACF","sourcesContent":["export class EventManager {\n private component: HTMLElement;\n private panelContainer: HTMLElement | null = null;\n private closeOnOutsideClick: boolean = true;\n private isOpen: boolean = false;\n private boundHandleDocumentClick: ((event: MouseEvent) => void) | null = null;\n private onCloseCallback: (() => void) | null = null;\n\n constructor(component: HTMLElement) {\n this.component = component;\n }\n\n setupOutsideClickHandler(\n panelContainer: HTMLElement,\n closeOnOutsideClick: boolean,\n isOpen: boolean,\n onClose: () => void\n ): void {\n this.panelContainer = panelContainer;\n this.closeOnOutsideClick = closeOnOutsideClick;\n this.isOpen = isOpen;\n this.onCloseCallback = onClose;\n\n if (!this.closeOnOutsideClick || this.boundHandleDocumentClick) {\n return;\n }\n\n this.boundHandleDocumentClick = this.handleDocumentClick.bind(this);\n document.addEventListener('mousedown', this.boundHandleDocumentClick, true);\n }\n\n updateOutsideClickHandler(\n panelContainer: HTMLElement | null,\n closeOnOutsideClick: boolean,\n isOpen: boolean\n ): void {\n this.panelContainer = panelContainer;\n this.closeOnOutsideClick = closeOnOutsideClick;\n this.isOpen = isOpen;\n\n this.cleanupOutsideClickHandler();\n\n if (isOpen && closeOnOutsideClick && panelContainer) {\n this.boundHandleDocumentClick = this.handleDocumentClick.bind(this);\n document.addEventListener('mousedown', this.boundHandleDocumentClick, true);\n }\n }\n\n cleanupOutsideClickHandler(): void {\n if (this.boundHandleDocumentClick) {\n document.removeEventListener('mousedown', this.boundHandleDocumentClick, true);\n this.boundHandleDocumentClick = null;\n }\n }\n\n private handleDocumentClick(event: MouseEvent): void {\n if (!this.isOpen || !this.closeOnOutsideClick || !this.panelContainer || !this.onCloseCallback) {\n return;\n }\n\n const target = event.target as Node;\n\n if (!this.panelContainer.contains(target) && !this.component.contains(target)) {\n this.onCloseCallback();\n }\n }\n\n destroy(): void {\n this.cleanupOutsideClickHandler();\n this.panelContainer = null;\n this.onCloseCallback = null;\n }\n}\n\n"]}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import type { FloatingPanelPosition } from './types';
|
|
2
|
-
export declare class PositionManager {
|
|
3
|
-
private cleanup;
|
|
4
|
-
private referenceElement;
|
|
5
|
-
private floatingElement;
|
|
6
|
-
private position;
|
|
7
|
-
private offsetValue;
|
|
8
|
-
private shiftPadding;
|
|
9
|
-
constructor(referenceElement: HTMLElement, floatingElement: HTMLElement, position: FloatingPanelPosition, offsetValue?: number, shiftPadding?: number);
|
|
10
|
-
setupAutoUpdate(): void;
|
|
11
|
-
cleanupAutoUpdate(): void;
|
|
12
|
-
reposition(): void;
|
|
13
|
-
updatePosition(position: FloatingPanelPosition): void;
|
|
14
|
-
updateOffset(offset: number): void;
|
|
15
|
-
updateShiftPadding(padding: number): void;
|
|
16
|
-
destroy(): void;
|
|
17
|
-
}
|
|
@@ -1,72 +0,0 @@
|
|
|
1
|
-
import { autoUpdate, computePosition, offset, shift, flip } from '@floating-ui/dom';
|
|
2
|
-
export class PositionManager {
|
|
3
|
-
constructor(referenceElement, floatingElement, position, offsetValue = 8, shiftPadding = 8) {
|
|
4
|
-
this.cleanup = null;
|
|
5
|
-
this.referenceElement = referenceElement;
|
|
6
|
-
this.floatingElement = floatingElement;
|
|
7
|
-
this.position = position;
|
|
8
|
-
this.offsetValue = offsetValue;
|
|
9
|
-
this.shiftPadding = shiftPadding;
|
|
10
|
-
}
|
|
11
|
-
setupAutoUpdate() {
|
|
12
|
-
this.cleanupAutoUpdate();
|
|
13
|
-
this.cleanup = autoUpdate(this.referenceElement, this.floatingElement, () => {
|
|
14
|
-
this.reposition();
|
|
15
|
-
}, {
|
|
16
|
-
ancestorScroll: true,
|
|
17
|
-
ancestorResize: true,
|
|
18
|
-
elementResize: true,
|
|
19
|
-
layoutShift: true,
|
|
20
|
-
animationFrame: false,
|
|
21
|
-
});
|
|
22
|
-
}
|
|
23
|
-
cleanupAutoUpdate() {
|
|
24
|
-
if (this.cleanup) {
|
|
25
|
-
this.cleanup();
|
|
26
|
-
this.cleanup = null;
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
reposition() {
|
|
30
|
-
const placement = this.position;
|
|
31
|
-
computePosition(this.referenceElement, this.floatingElement, {
|
|
32
|
-
placement,
|
|
33
|
-
strategy: 'fixed',
|
|
34
|
-
middleware: [
|
|
35
|
-
offset(this.offsetValue),
|
|
36
|
-
flip(),
|
|
37
|
-
shift({
|
|
38
|
-
padding: this.shiftPadding,
|
|
39
|
-
}),
|
|
40
|
-
],
|
|
41
|
-
}).then(({ x, y, placement: finalPlacement }) => {
|
|
42
|
-
let adjustedY = y;
|
|
43
|
-
if (finalPlacement.startsWith('bottom')) {
|
|
44
|
-
adjustedY = y + 10;
|
|
45
|
-
}
|
|
46
|
-
else if (finalPlacement.startsWith('top')) {
|
|
47
|
-
adjustedY = y - 20;
|
|
48
|
-
}
|
|
49
|
-
Object.assign(this.floatingElement.style, {
|
|
50
|
-
left: `${x}px`,
|
|
51
|
-
top: `${adjustedY}px`,
|
|
52
|
-
position: 'fixed',
|
|
53
|
-
});
|
|
54
|
-
});
|
|
55
|
-
}
|
|
56
|
-
updatePosition(position) {
|
|
57
|
-
this.position = position;
|
|
58
|
-
this.reposition();
|
|
59
|
-
}
|
|
60
|
-
updateOffset(offset) {
|
|
61
|
-
this.offsetValue = offset;
|
|
62
|
-
this.reposition();
|
|
63
|
-
}
|
|
64
|
-
updateShiftPadding(padding) {
|
|
65
|
-
this.shiftPadding = padding;
|
|
66
|
-
this.reposition();
|
|
67
|
-
}
|
|
68
|
-
destroy() {
|
|
69
|
-
this.cleanupAutoUpdate();
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
//# sourceMappingURL=position-manager.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"position-manager.js","sourceRoot":"","sources":["../../../src/nile-floating-panel/position-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAIpF,MAAM,OAAO,eAAe;IAQ1B,YACE,gBAA6B,EAC7B,eAA4B,EAC5B,QAA+B,EAC/B,cAAsB,CAAC,EACvB,eAAuB,CAAC;QAZlB,YAAO,GAAwB,IAAI,CAAC;QAc1C,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;QACzC,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;QACvC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;IACnC,CAAC;IAED,eAAe;QACb,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAEzB,IAAI,CAAC,OAAO,GAAG,UAAU,CACvB,IAAI,CAAC,gBAAgB,EACrB,IAAI,CAAC,eAAe,EACpB,GAAG,EAAE;YACH,IAAI,CAAC,UAAU,EAAE,CAAC;QACpB,CAAC,EACD;YACE,cAAc,EAAE,IAAI;YACpB,cAAc,EAAE,IAAI;YACpB,aAAa,EAAE,IAAI;YACnB,WAAW,EAAE,IAAI;YACjB,cAAc,EAAE,KAAK;SACtB,CACF,CAAC;IACJ,CAAC;IAED,iBAAiB;QACf,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,IAAI,CAAC,OAAO,EAAE,CAAC;YACf,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACtB,CAAC;IACH,CAAC;IAED,UAAU;QACR,MAAM,SAAS,GAAc,IAAI,CAAC,QAAQ,CAAC;QAE3C,eAAe,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,eAAe,EAAE;YAC3D,SAAS;YACT,QAAQ,EAAE,OAAO;YACjB,UAAU,EAAE;gBACV,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC;gBACxB,IAAI,EAAE;gBACN,KAAK,CAAC;oBACJ,OAAO,EAAE,IAAI,CAAC,YAAY;iBAC3B,CAAC;aACH;SACF,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,SAAS,EAAE,cAAc,EAAE,EAAE,EAAE;YAC9C,IAAI,SAAS,GAAG,CAAC,CAAC;YAElB,IAAI,cAAc,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACxC,SAAS,GAAG,CAAC,GAAG,EAAE,CAAC;YACrB,CAAC;iBAAM,IAAI,cAAc,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC5C,SAAS,GAAG,CAAC,GAAG,EAAE,CAAC;YACrB,CAAC;YAED,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE;gBACxC,IAAI,EAAE,GAAG,CAAC,IAAI;gBACd,GAAG,EAAE,GAAG,SAAS,IAAI;gBACrB,QAAQ,EAAE,OAAO;aAClB,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAED,cAAc,CAAC,QAA+B;QAC5C,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,UAAU,EAAE,CAAC;IACpB,CAAC;IAED,YAAY,CAAC,MAAc;QACzB,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC;QAC1B,IAAI,CAAC,UAAU,EAAE,CAAC;IACpB,CAAC;IAED,kBAAkB,CAAC,OAAe;QAChC,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC;QAC5B,IAAI,CAAC,UAAU,EAAE,CAAC;IACpB,CAAC;IAED,OAAO;QACL,IAAI,CAAC,iBAAiB,EAAE,CAAC;IAC3B,CAAC;CACF","sourcesContent":["import { autoUpdate, computePosition, offset, shift, flip } from '@floating-ui/dom';\nimport type { Placement } from '@floating-ui/dom';\nimport type { FloatingPanelPosition } from './types';\n\nexport class PositionManager {\n private cleanup: (() => void) | null = null;\n private referenceElement: HTMLElement;\n private floatingElement: HTMLElement;\n private position: FloatingPanelPosition;\n private offsetValue: number;\n private shiftPadding: number;\n\n constructor(\n referenceElement: HTMLElement,\n floatingElement: HTMLElement,\n position: FloatingPanelPosition,\n offsetValue: number = 8,\n shiftPadding: number = 8\n ) {\n this.referenceElement = referenceElement;\n this.floatingElement = floatingElement;\n this.position = position;\n this.offsetValue = offsetValue;\n this.shiftPadding = shiftPadding;\n }\n\n setupAutoUpdate(): void {\n this.cleanupAutoUpdate();\n\n this.cleanup = autoUpdate(\n this.referenceElement,\n this.floatingElement,\n () => {\n this.reposition();\n },\n {\n ancestorScroll: true,\n ancestorResize: true,\n elementResize: true,\n layoutShift: true,\n animationFrame: false,\n }\n );\n }\n\n cleanupAutoUpdate(): void {\n if (this.cleanup) {\n this.cleanup();\n this.cleanup = null;\n }\n }\n\n reposition(): void {\n const placement: Placement = this.position;\n\n computePosition(this.referenceElement, this.floatingElement, {\n placement,\n strategy: 'fixed',\n middleware: [\n offset(this.offsetValue),\n flip(),\n shift({\n padding: this.shiftPadding,\n }),\n ],\n }).then(({ x, y, placement: finalPlacement }) => {\n let adjustedY = y;\n \n if (finalPlacement.startsWith('bottom')) {\n adjustedY = y + 10;\n } else if (finalPlacement.startsWith('top')) {\n adjustedY = y - 20;\n }\n \n Object.assign(this.floatingElement.style, {\n left: `${x}px`,\n top: `${adjustedY}px`,\n position: 'fixed',\n });\n });\n }\n\n updatePosition(position: FloatingPanelPosition): void {\n this.position = position;\n this.reposition();\n }\n\n updateOffset(offset: number): void {\n this.offsetValue = offset;\n this.reposition();\n }\n\n updateShiftPadding(padding: number): void {\n this.shiftPadding = padding;\n this.reposition();\n }\n\n destroy(): void {\n this.cleanupAutoUpdate();\n }\n}\n\n"]}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import type { CSSResultArray } from 'lit';
|
|
2
|
-
export declare class StyleManager {
|
|
3
|
-
private injectedStyleId;
|
|
4
|
-
private static injectedStyleIds;
|
|
5
|
-
injectStyles(componentStyles: CSSResultArray): void;
|
|
6
|
-
private extractCSSFromStyles;
|
|
7
|
-
cleanupStyles(): void;
|
|
8
|
-
getInjectedStyleId(): string | null;
|
|
9
|
-
}
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
import { panelContainerStyles } from './nile-floating-panel.css';
|
|
2
|
-
export class StyleManager {
|
|
3
|
-
constructor() {
|
|
4
|
-
this.injectedStyleId = null;
|
|
5
|
-
}
|
|
6
|
-
injectStyles(componentStyles) {
|
|
7
|
-
const globalStyleId = 'nile-floating-panel-styles-global';
|
|
8
|
-
if (StyleManager.injectedStyleIds.has(globalStyleId)) {
|
|
9
|
-
return;
|
|
10
|
-
}
|
|
11
|
-
if (this.injectedStyleId && document.getElementById(this.injectedStyleId)) {
|
|
12
|
-
return;
|
|
13
|
-
}
|
|
14
|
-
this.injectedStyleId = globalStyleId;
|
|
15
|
-
StyleManager.injectedStyleIds.add(globalStyleId);
|
|
16
|
-
const cssText = this.extractCSSFromStyles(componentStyles);
|
|
17
|
-
const styleElement = document.createElement('style');
|
|
18
|
-
styleElement.id = globalStyleId;
|
|
19
|
-
styleElement.textContent = cssText;
|
|
20
|
-
document.head.appendChild(styleElement);
|
|
21
|
-
}
|
|
22
|
-
extractCSSFromStyles(styles) {
|
|
23
|
-
const containerStyles = panelContainerStyles.cssText || '';
|
|
24
|
-
const componentStyles = styles
|
|
25
|
-
.map(style => {
|
|
26
|
-
if (typeof style === 'string') {
|
|
27
|
-
return style;
|
|
28
|
-
}
|
|
29
|
-
if (style && 'cssText' in style) {
|
|
30
|
-
return style.cssText;
|
|
31
|
-
}
|
|
32
|
-
return '';
|
|
33
|
-
})
|
|
34
|
-
.join('\n');
|
|
35
|
-
return containerStyles + '\n' + componentStyles;
|
|
36
|
-
}
|
|
37
|
-
cleanupStyles() {
|
|
38
|
-
}
|
|
39
|
-
getInjectedStyleId() {
|
|
40
|
-
return this.injectedStyleId;
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
StyleManager.injectedStyleIds = new Set();
|
|
44
|
-
//# sourceMappingURL=style-manager.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"style-manager.js","sourceRoot":"","sources":["../../../src/nile-floating-panel/style-manager.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAEjE,MAAM,OAAO,YAAY;IAAzB;QACU,oBAAe,GAAkB,IAAI,CAAC;IAgDhD,CAAC;IA7CC,YAAY,CAAC,eAA+B;QAC1C,MAAM,aAAa,GAAG,mCAAmC,CAAC;QAC1D,IAAI,YAAY,CAAC,gBAAgB,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,CAAC;YACrD,OAAO;QACT,CAAC;QAED,IAAI,IAAI,CAAC,eAAe,IAAI,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC;YAC1E,OAAO;QACT,CAAC;QAED,IAAI,CAAC,eAAe,GAAG,aAAa,CAAC;QACrC,YAAY,CAAC,gBAAgB,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;QAEjD,MAAM,OAAO,GAAG,IAAI,CAAC,oBAAoB,CAAC,eAAe,CAAC,CAAC;QAE3D,MAAM,YAAY,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QACrD,YAAY,CAAC,EAAE,GAAG,aAAa,CAAC;QAChC,YAAY,CAAC,WAAW,GAAG,OAAO,CAAC;QACnC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;IAC1C,CAAC;IAEO,oBAAoB,CAAC,MAAsB;QACjD,MAAM,eAAe,GAAG,oBAAoB,CAAC,OAAO,IAAI,EAAE,CAAC;QAE3D,MAAM,eAAe,GAAG,MAAM;aAC3B,GAAG,CAAC,KAAK,CAAC,EAAE;YACX,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;gBAC9B,OAAO,KAAK,CAAC;YACf,CAAC;YACD,IAAI,KAAK,IAAI,SAAS,IAAI,KAAK,EAAE,CAAC;gBAChC,OAAQ,KAAa,CAAC,OAAO,CAAC;YAChC,CAAC;YACD,OAAO,EAAE,CAAC;QACZ,CAAC,CAAC;aACD,IAAI,CAAC,IAAI,CAAC,CAAC;QAEd,OAAO,eAAe,GAAG,IAAI,GAAG,eAAe,CAAC;IAClD,CAAC;IAED,aAAa;IACb,CAAC;IAED,kBAAkB;QAChB,OAAO,IAAI,CAAC,eAAe,CAAC;IAC9B,CAAC;;AA9Cc,6BAAgB,GAAgB,IAAI,GAAG,EAAE,AAAzB,CAA0B","sourcesContent":["import type { CSSResultArray } from 'lit';\nimport { panelContainerStyles } from './nile-floating-panel.css';\n\nexport class StyleManager {\n private injectedStyleId: string | null = null;\n private static injectedStyleIds: Set<string> = new Set();\n\n injectStyles(componentStyles: CSSResultArray): void {\n const globalStyleId = 'nile-floating-panel-styles-global';\n if (StyleManager.injectedStyleIds.has(globalStyleId)) {\n return;\n }\n\n if (this.injectedStyleId && document.getElementById(this.injectedStyleId)) {\n return;\n }\n\n this.injectedStyleId = globalStyleId;\n StyleManager.injectedStyleIds.add(globalStyleId);\n\n const cssText = this.extractCSSFromStyles(componentStyles);\n\n const styleElement = document.createElement('style');\n styleElement.id = globalStyleId;\n styleElement.textContent = cssText;\n document.head.appendChild(styleElement);\n }\n\n private extractCSSFromStyles(styles: CSSResultArray): string {\n const containerStyles = panelContainerStyles.cssText || '';\n\n const componentStyles = styles\n .map(style => {\n if (typeof style === 'string') {\n return style;\n }\n if (style && 'cssText' in style) {\n return (style as any).cssText;\n }\n return '';\n })\n .join('\\n');\n\n return containerStyles + '\\n' + componentStyles;\n }\n\n cleanupStyles(): void {\n }\n\n getInjectedStyleId(): string | null {\n return this.injectedStyleId;\n }\n}\n\n"]}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
export type FloatingPanelPosition = 'top' | 'bottom' | 'left' | 'right';
|
|
2
|
-
export type FloatingPanelAnchor = HTMLElement | string | null;
|
|
3
|
-
export interface FloatingPanelPositionConfig {
|
|
4
|
-
position: FloatingPanelPosition;
|
|
5
|
-
offset?: number;
|
|
6
|
-
shiftPadding?: number;
|
|
7
|
-
}
|
|
8
|
-
export interface FloatingPanelContentConfig {
|
|
9
|
-
slotContent: Node[];
|
|
10
|
-
dataContent: string;
|
|
11
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/nile-floating-panel/types.ts"],"names":[],"mappings":"","sourcesContent":["export type FloatingPanelPosition = 'top' | 'bottom' | 'left' | 'right';\n\nexport type FloatingPanelAnchor = HTMLElement | string | null;\n\nexport interface FloatingPanelPositionConfig {\n position: FloatingPanelPosition;\n offset?: number;\n shiftPadding?: number;\n}\n\nexport interface FloatingPanelContentConfig {\n slotContent: Node[];\n dataContent: string;\n}\n\n"]}
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
import type { FloatingPanelAnchor } from './types';
|
|
2
|
-
|
|
3
|
-
export class AnchorManager {
|
|
4
|
-
static resolveAnchor(anchor: FloatingPanelAnchor): HTMLElement {
|
|
5
|
-
if (anchor instanceof HTMLElement) {
|
|
6
|
-
return anchor;
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
if (typeof anchor === 'string') {
|
|
10
|
-
const element = document.querySelector(anchor) as HTMLElement;
|
|
11
|
-
if (element) {
|
|
12
|
-
return element;
|
|
13
|
-
}
|
|
14
|
-
const byId = document.getElementById(anchor);
|
|
15
|
-
if (byId) {
|
|
16
|
-
return byId;
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
return document.body;
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
static appendToAnchor(anchor: HTMLElement, panelContainer: HTMLElement): void {
|
|
24
|
-
anchor.appendChild(panelContainer);
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
static removeFromAnchor(panelContainer: HTMLElement): void {
|
|
28
|
-
if (panelContainer.parentNode) {
|
|
29
|
-
panelContainer.parentNode.removeChild(panelContainer);
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
import type { FloatingPanelContentConfig } from './types';
|
|
2
|
-
|
|
3
|
-
export class ContentManager {
|
|
4
|
-
static updatePanelContent(
|
|
5
|
-
panelContainer: HTMLElement,
|
|
6
|
-
slot: HTMLSlotElement | null,
|
|
7
|
-
dataContent: string
|
|
8
|
-
): void {
|
|
9
|
-
panelContainer.innerHTML = '';
|
|
10
|
-
|
|
11
|
-
const slotContent = slot ? slot.assignedNodes({ flatten: true }) : [];
|
|
12
|
-
|
|
13
|
-
const hasSlotContent = slotContent.length > 0 &&
|
|
14
|
-
slotContent.some(node => {
|
|
15
|
-
if (node.nodeType === Node.TEXT_NODE) {
|
|
16
|
-
return node.textContent?.trim() !== '';
|
|
17
|
-
}
|
|
18
|
-
return node instanceof HTMLElement;
|
|
19
|
-
});
|
|
20
|
-
|
|
21
|
-
if (hasSlotContent) {
|
|
22
|
-
slotContent.forEach(node => {
|
|
23
|
-
if (node.nodeType === Node.TEXT_NODE) {
|
|
24
|
-
const textNode = document.createTextNode(node.textContent || '');
|
|
25
|
-
panelContainer.appendChild(textNode);
|
|
26
|
-
} else if (node instanceof HTMLElement) {
|
|
27
|
-
panelContainer.appendChild(node.cloneNode(true));
|
|
28
|
-
}
|
|
29
|
-
});
|
|
30
|
-
} else if (dataContent) {
|
|
31
|
-
panelContainer.textContent = dataContent;
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
static hasSlotContent(slot: HTMLSlotElement | null): boolean {
|
|
36
|
-
if (!slot) {
|
|
37
|
-
return false;
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
const slotContent = slot.assignedNodes({ flatten: true });
|
|
41
|
-
return slotContent.length > 0 &&
|
|
42
|
-
slotContent.some(node => {
|
|
43
|
-
if (node.nodeType === Node.TEXT_NODE) {
|
|
44
|
-
return node.textContent?.trim() !== '';
|
|
45
|
-
}
|
|
46
|
-
return node instanceof HTMLElement;
|
|
47
|
-
});
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
static getSlotContent(slot: HTMLSlotElement | null): Node[] {
|
|
51
|
-
return slot ? slot.assignedNodes({ flatten: true }) : [];
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
|
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
export class EventManager {
|
|
2
|
-
private component: HTMLElement;
|
|
3
|
-
private panelContainer: HTMLElement | null = null;
|
|
4
|
-
private closeOnOutsideClick: boolean = true;
|
|
5
|
-
private isOpen: boolean = false;
|
|
6
|
-
private boundHandleDocumentClick: ((event: MouseEvent) => void) | null = null;
|
|
7
|
-
private onCloseCallback: (() => void) | null = null;
|
|
8
|
-
|
|
9
|
-
constructor(component: HTMLElement) {
|
|
10
|
-
this.component = component;
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
setupOutsideClickHandler(
|
|
14
|
-
panelContainer: HTMLElement,
|
|
15
|
-
closeOnOutsideClick: boolean,
|
|
16
|
-
isOpen: boolean,
|
|
17
|
-
onClose: () => void
|
|
18
|
-
): void {
|
|
19
|
-
this.panelContainer = panelContainer;
|
|
20
|
-
this.closeOnOutsideClick = closeOnOutsideClick;
|
|
21
|
-
this.isOpen = isOpen;
|
|
22
|
-
this.onCloseCallback = onClose;
|
|
23
|
-
|
|
24
|
-
if (!this.closeOnOutsideClick || this.boundHandleDocumentClick) {
|
|
25
|
-
return;
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
this.boundHandleDocumentClick = this.handleDocumentClick.bind(this);
|
|
29
|
-
document.addEventListener('mousedown', this.boundHandleDocumentClick, true);
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
updateOutsideClickHandler(
|
|
33
|
-
panelContainer: HTMLElement | null,
|
|
34
|
-
closeOnOutsideClick: boolean,
|
|
35
|
-
isOpen: boolean
|
|
36
|
-
): void {
|
|
37
|
-
this.panelContainer = panelContainer;
|
|
38
|
-
this.closeOnOutsideClick = closeOnOutsideClick;
|
|
39
|
-
this.isOpen = isOpen;
|
|
40
|
-
|
|
41
|
-
this.cleanupOutsideClickHandler();
|
|
42
|
-
|
|
43
|
-
if (isOpen && closeOnOutsideClick && panelContainer) {
|
|
44
|
-
this.boundHandleDocumentClick = this.handleDocumentClick.bind(this);
|
|
45
|
-
document.addEventListener('mousedown', this.boundHandleDocumentClick, true);
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
cleanupOutsideClickHandler(): void {
|
|
50
|
-
if (this.boundHandleDocumentClick) {
|
|
51
|
-
document.removeEventListener('mousedown', this.boundHandleDocumentClick, true);
|
|
52
|
-
this.boundHandleDocumentClick = null;
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
private handleDocumentClick(event: MouseEvent): void {
|
|
57
|
-
if (!this.isOpen || !this.closeOnOutsideClick || !this.panelContainer || !this.onCloseCallback) {
|
|
58
|
-
return;
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
const target = event.target as Node;
|
|
62
|
-
|
|
63
|
-
if (!this.panelContainer.contains(target) && !this.component.contains(target)) {
|
|
64
|
-
this.onCloseCallback();
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
destroy(): void {
|
|
69
|
-
this.cleanupOutsideClickHandler();
|
|
70
|
-
this.panelContainer = null;
|
|
71
|
-
this.onCloseCallback = null;
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
|