webcimes-modal 1.1.2 → 1.1.3
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 +15 -3
- package/dist/js/webcimes-modal.esm.d.ts +21 -4
- package/dist/js/webcimes-modal.esm.js +1 -1
- package/dist/js/webcimes-modal.esm.js.map +1 -1
- package/dist/js/webcimes-modal.udm.d.ts +21 -4
- package/dist/js/webcimes-modal.udm.js +1 -1
- package/dist/js/webcimes-modal.udm.js.map +1 -1
- package/package.json +1 -1
- package/src/ts/webcimes-modal.d.ts +21 -3
- package/src/ts/webcimes-modal.d.ts.map +1 -1
- package/src/ts/webcimes-modal.ts +51 -12
- package/test/script.js +5 -1
- package/tsconfig.json +3 -1
- package/webpack.config.ts +8 -10
package/README.md
CHANGED
|
@@ -220,6 +220,18 @@ const myModal = new WebcimesModal({
|
|
|
220
220
|
});
|
|
221
221
|
```
|
|
222
222
|
|
|
223
|
+
You can also use `addEventListener` for get the events from the instance like this:
|
|
224
|
+
|
|
225
|
+
```javascript
|
|
226
|
+
// Get the instance
|
|
227
|
+
const myModal = new WebcimesModal(...);
|
|
228
|
+
|
|
229
|
+
// Create an event on the current modal
|
|
230
|
+
myModal.modal.addEventListener("afterDestroy", () => {
|
|
231
|
+
console.log("after destroy");
|
|
232
|
+
});
|
|
233
|
+
```
|
|
234
|
+
|
|
223
235
|
### Destroy
|
|
224
236
|
To destroy the modal, you have several ways:
|
|
225
237
|
|
|
@@ -242,7 +254,7 @@ myModal.destroy();
|
|
|
242
254
|
```
|
|
243
255
|
|
|
244
256
|
### Get dom element
|
|
245
|
-
You can get the
|
|
257
|
+
You can get the dom element of the current modal like this:
|
|
246
258
|
|
|
247
259
|
```javascript
|
|
248
260
|
// Get the instance
|
|
@@ -250,7 +262,7 @@ const myModal = new WebcimesModal(...);
|
|
|
250
262
|
|
|
251
263
|
// Things
|
|
252
264
|
|
|
253
|
-
// Then get the dom element
|
|
265
|
+
// Then get the dom element of the current modal
|
|
254
266
|
myModal.modal;
|
|
255
267
|
```
|
|
256
268
|
|
|
@@ -262,7 +274,7 @@ const myModal = new WebcimesModal(...);
|
|
|
262
274
|
|
|
263
275
|
// Things
|
|
264
276
|
|
|
265
|
-
// Then get the dom element
|
|
277
|
+
// Then get the dom element containing all modals
|
|
266
278
|
myModal.webcimesModals;
|
|
267
279
|
```
|
|
268
280
|
|
|
@@ -3,6 +3,20 @@
|
|
|
3
3
|
* MIT License - https://choosealicense.com/licenses/mit/
|
|
4
4
|
* Date: 2023-03-25
|
|
5
5
|
*/
|
|
6
|
+
/**
|
|
7
|
+
* Global
|
|
8
|
+
*/
|
|
9
|
+
declare global {
|
|
10
|
+
/** Events */
|
|
11
|
+
interface GlobalEventHandlersEventMap {
|
|
12
|
+
beforeShow: CustomEvent;
|
|
13
|
+
afterShow: CustomEvent;
|
|
14
|
+
beforeDestroy: CustomEvent;
|
|
15
|
+
afterDestroy: CustomEvent;
|
|
16
|
+
onCancelButton: CustomEvent;
|
|
17
|
+
onConfirmButton: CustomEvent;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
6
20
|
/**
|
|
7
21
|
* Options
|
|
8
22
|
*/
|
|
@@ -68,8 +82,11 @@ interface Options {
|
|
|
68
82
|
* Class WebcimesModal
|
|
69
83
|
*/
|
|
70
84
|
export declare class WebcimesModal {
|
|
85
|
+
/** Get the dom element containing all modals */
|
|
71
86
|
webcimesModals: HTMLElement;
|
|
87
|
+
/** Get the dom element of the current modal */
|
|
72
88
|
modal: HTMLElement;
|
|
89
|
+
/** Options of the current modal */
|
|
73
90
|
private options;
|
|
74
91
|
private eventCancelButton;
|
|
75
92
|
private eventConfirmButton;
|
|
@@ -90,13 +107,13 @@ export declare class WebcimesModal {
|
|
|
90
107
|
*/
|
|
91
108
|
constructor(options: Options);
|
|
92
109
|
/**
|
|
93
|
-
*
|
|
110
|
+
* Initialization of the current modal
|
|
94
111
|
*/
|
|
95
|
-
init
|
|
112
|
+
private init;
|
|
96
113
|
/**
|
|
97
|
-
* Destroy modal
|
|
114
|
+
* Destroy current modal
|
|
98
115
|
*/
|
|
99
116
|
destroy(): void;
|
|
100
117
|
}
|
|
101
118
|
export {};
|
|
102
|
-
|
|
119
|
+
//# sourceMappingURL=webcimes-modal.d.ts.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var t={d:(o,e)=>{for(var s in e)t.o(e,s)&&!t.o(o,s)&&Object.defineProperty(o,s,{enumerable:!0,get:e[s]})},o:(t,o)=>Object.prototype.hasOwnProperty.call(t,o)},o={};t.d(o,{V:()=>e});class e{webcimesModals;modal;options;eventCancelButton=()=>{"function"==typeof this.options.onCancelButton&&this.options.onCancelButton()};eventConfirmButton=()=>{"function"==typeof this.options.onConfirmButton&&this.options.onConfirmButton()};eventClickOutside=t=>{t.target==this.webcimesModals&&(this.options.allowCloseOutside?this.destroy():(this.modal.classList.add("animGrowShrink"),setTimeout((()=>{this.modal.classList.remove("animGrowShrink")}),this.options.animationDuration)))};eventClickCloseButton=()=>{this.destroy()};eventDragModalOnTop=t=>{if(!t.target.closest(".close")&&document.querySelectorAll(".modal").length>1&&null!==this.modal.nextElementSibling){let t=this.modal.scrollTop;this.webcimesModals.insertAdjacentElement("beforeend",this.modal),this.modal.scrollTop=t}};position;offset;isDragging=!1;moveFromElements=[];eventDragStart=t=>{t.target.closest("button")||(this.isDragging=!0,t.clientX?this.offset={x:this.modal.offsetLeft-t.clientX,y:this.modal.offsetTop-t.clientY}:t.touches&&(this.offset={x:this.modal.offsetLeft-t.touches[0].clientX,y:this.modal.offsetTop-t.touches[0].clientY}))};eventMove=t=>{this.isDragging&&(t.clientX?this.position={x:t.clientX,y:t.clientY}:t.touches&&(this.position={x:t.touches[0].clientX,y:t.touches[0].clientY}),this.modal.style.left=this.position.x+this.offset.x+"px",this.modal.style.top=this.position.y+this.offset.y+"px")};eventDragStop=()=>{this.isDragging=!1};eventPreventSelectText=t=>{this.isDragging&&t.preventDefault()};eventResize=()=>{this.modal.style.removeProperty("left"),this.modal.style.removeProperty("top")};constructor(t){this.options={setId:null,setClass:null,width:"auto",height:"auto",titleHtml:null,bodyHtml:null,buttonCancelHtml:null,buttonConfirmHtml:null,closeOnCancelButton:!0,closeOnConfirmButton:!0,showCloseButton:!0,allowCloseOutside:!0,allowMovement:!0,moveFromHeader:!0,moveFromBody:!1,moveFromFooter:!0,stickyHeader:!0,stickyFooter:!0,style:null,animationOnShow:"animDropDown",animationOnDestroy:"animDropUp",animationDuration:500,beforeShow:()=>{},afterShow:()=>{},beforeDestroy:()=>{},afterDestroy:()=>{},onCancelButton:()=>{},onConfirmButton:()=>{},...t},this.init()}init(){if(document.querySelector(".webcimesModals")?(this.webcimesModals=document.querySelector(".webcimesModals"),this.webcimesModals.classList.remove("animFadeOut")):(document.body.insertAdjacentHTML("beforeend",'<div class="webcimesModals animFadeIn"></div>'),this.webcimesModals=document.querySelector(".webcimesModals"),this.webcimesModals.style.setProperty("animation-duration",this.options.animationDuration+"ms"),setTimeout((()=>{this.webcimesModals.classList.remove("animFadeIn")}),this.options.animationDuration)),this.webcimesModals.insertAdjacentHTML("beforeend",'<div class="modal '+(this.options.setClass?this.options.setClass:"")+" "+this.options.animationOnShow+'" '+(this.options.setId?'id="'+this.options.setId+'"':"")+">\n\t\t\t\t"+(this.options.titleHtml||this.options.showCloseButton?'<div class="modalHeader '+(this.options.stickyHeader?"sticky":"")+" "+(this.options.moveFromHeader?"movable":"")+'">\n\t\t\t\t\t\t'+(this.options.titleHtml?'<div class="title">'+this.options.titleHtml+"</div>":"")+"\n\t\t\t\t\t\t"+(this.options.showCloseButton?'<button class="close"></button>':"")+"\n\t\t\t\t\t</div>":"")+"\n\t\t\t\t"+(this.options.bodyHtml?'<div class="modalBody '+(this.options.moveFromBody?"movable":"")+'">\n\t\t\t\t\t\t'+this.options.bodyHtml+"\n\t\t\t\t\t</div>":"")+"\n\t\t\t\t"+(this.options.buttonCancelHtml||this.options.buttonConfirmHtml?'<div class="modalFooter '+(this.options.stickyFooter?"sticky":"")+" "+(this.options.moveFromFooter?"movable":"")+'">\n\t\t\t\t\t\t'+(this.options.buttonCancelHtml?'<button class="cancel '+(this.options.closeOnCancelButton?"close":"")+'">'+this.options.buttonCancelHtml+"</button>":"")+"\n\t\t\t\t\t\t"+(this.options.buttonConfirmHtml?'<button class="confirm '+(this.options.closeOnConfirmButton?"close":"")+'">'+this.options.buttonConfirmHtml+"</button>":"")+"\n\t\t\t\t\t</div>":"")+"\n\t\t\t</div>"),this.modal=this.webcimesModals.lastElementChild,"function"==typeof this.options.beforeShow&&
|
|
1
|
+
var t={d:(o,e)=>{for(var s in e)t.o(e,s)&&!t.o(o,s)&&Object.defineProperty(o,s,{enumerable:!0,get:e[s]})},o:(t,o)=>Object.prototype.hasOwnProperty.call(t,o)},o={};t.d(o,{V:()=>e});class e{webcimesModals;modal;options;eventCancelButton=()=>{this.modal.dispatchEvent(new CustomEvent("onCancelButton")),"function"==typeof this.options.onCancelButton&&this.options.onCancelButton()};eventConfirmButton=()=>{this.modal.dispatchEvent(new CustomEvent("onConfirmButton")),"function"==typeof this.options.onConfirmButton&&this.options.onConfirmButton()};eventClickOutside=t=>{t.target==this.webcimesModals&&(this.options.allowCloseOutside?this.destroy():(this.modal.classList.add("animGrowShrink"),setTimeout((()=>{this.modal.classList.remove("animGrowShrink")}),this.options.animationDuration)))};eventClickCloseButton=()=>{this.destroy()};eventDragModalOnTop=t=>{if(!t.target.closest(".close")&&document.querySelectorAll(".modal").length>1&&null!==this.modal.nextElementSibling){let t=this.modal.scrollTop;this.webcimesModals.insertAdjacentElement("beforeend",this.modal),this.modal.scrollTop=t}};position;offset;isDragging=!1;moveFromElements=[];eventDragStart=t=>{t.target.closest("button")||(this.isDragging=!0,t.clientX?this.offset={x:this.modal.offsetLeft-t.clientX,y:this.modal.offsetTop-t.clientY}:t.touches&&(this.offset={x:this.modal.offsetLeft-t.touches[0].clientX,y:this.modal.offsetTop-t.touches[0].clientY}))};eventMove=t=>{this.isDragging&&(t.clientX?this.position={x:t.clientX,y:t.clientY}:t.touches&&(this.position={x:t.touches[0].clientX,y:t.touches[0].clientY}),this.modal.style.left=this.position.x+this.offset.x+"px",this.modal.style.top=this.position.y+this.offset.y+"px")};eventDragStop=()=>{this.isDragging=!1};eventPreventSelectText=t=>{this.isDragging&&t.preventDefault()};eventResize=()=>{this.modal.style.removeProperty("left"),this.modal.style.removeProperty("top")};constructor(t){this.options={setId:null,setClass:null,width:"auto",height:"auto",titleHtml:null,bodyHtml:null,buttonCancelHtml:null,buttonConfirmHtml:null,closeOnCancelButton:!0,closeOnConfirmButton:!0,showCloseButton:!0,allowCloseOutside:!0,allowMovement:!0,moveFromHeader:!0,moveFromBody:!1,moveFromFooter:!0,stickyHeader:!0,stickyFooter:!0,style:null,animationOnShow:"animDropDown",animationOnDestroy:"animDropUp",animationDuration:500,beforeShow:()=>{},afterShow:()=>{},beforeDestroy:()=>{},afterDestroy:()=>{},onCancelButton:()=>{},onConfirmButton:()=>{},...t},this.init()}init(){if(document.querySelector(".webcimesModals")?(this.webcimesModals=document.querySelector(".webcimesModals"),this.webcimesModals.classList.remove("animFadeOut")):(document.body.insertAdjacentHTML("beforeend",'<div class="webcimesModals animFadeIn"></div>'),this.webcimesModals=document.querySelector(".webcimesModals"),this.webcimesModals.style.setProperty("animation-duration",this.options.animationDuration+"ms"),setTimeout((()=>{this.webcimesModals.classList.remove("animFadeIn")}),this.options.animationDuration)),this.webcimesModals.insertAdjacentHTML("beforeend",'<div class="modal '+(this.options.setClass?this.options.setClass:"")+" "+this.options.animationOnShow+'" '+(this.options.setId?'id="'+this.options.setId+'"':"")+">\n\t\t\t\t"+(this.options.titleHtml||this.options.showCloseButton?'<div class="modalHeader '+(this.options.stickyHeader?"sticky":"")+" "+(this.options.moveFromHeader?"movable":"")+'">\n\t\t\t\t\t\t'+(this.options.titleHtml?'<div class="title">'+this.options.titleHtml+"</div>":"")+"\n\t\t\t\t\t\t"+(this.options.showCloseButton?'<button class="close"></button>':"")+"\n\t\t\t\t\t</div>":"")+"\n\t\t\t\t"+(this.options.bodyHtml?'<div class="modalBody '+(this.options.moveFromBody?"movable":"")+'">\n\t\t\t\t\t\t'+this.options.bodyHtml+"\n\t\t\t\t\t</div>":"")+"\n\t\t\t\t"+(this.options.buttonCancelHtml||this.options.buttonConfirmHtml?'<div class="modalFooter '+(this.options.stickyFooter?"sticky":"")+" "+(this.options.moveFromFooter?"movable":"")+'">\n\t\t\t\t\t\t'+(this.options.buttonCancelHtml?'<button class="cancel '+(this.options.closeOnCancelButton?"close":"")+'">'+this.options.buttonCancelHtml+"</button>":"")+"\n\t\t\t\t\t\t"+(this.options.buttonConfirmHtml?'<button class="confirm '+(this.options.closeOnConfirmButton?"close":"")+'">'+this.options.buttonConfirmHtml+"</button>":"")+"\n\t\t\t\t\t</div>":"")+"\n\t\t\t</div>"),this.modal=this.webcimesModals.lastElementChild,setTimeout((()=>{this.modal.dispatchEvent(new CustomEvent("beforeShow")),"function"==typeof this.options.beforeShow&&this.options.beforeShow()}),0),this.modal.style.setProperty("animation-duration",this.options.animationDuration+"ms"),setTimeout((()=>{this.modal.classList.remove(this.options.animationOnShow),this.modal.dispatchEvent(new CustomEvent("afterShow")),"function"==typeof this.options.afterShow&&this.options.afterShow()}),this.options.animationDuration),this.modal.style.setProperty("max-width","90%"),"auto"!=this.options.width&&this.options.width?this.modal.style.setProperty("width",this.options.width):this.modal.style.setProperty("width","max-content"),this.modal.style.setProperty("max-height","90%"),"auto"!=this.options.height&&this.options.height?this.modal.style.setProperty("height",this.options.height):this.modal.style.setProperty("height","max-content"),this.options.style){let t=this.modal.getAttribute("style");this.modal.setAttribute("style",t+this.options.style)}this.options.buttonCancelHtml&&this.modal.querySelector(".cancel")?.addEventListener("click",this.eventCancelButton),this.options.buttonConfirmHtml&&this.modal.querySelector(".confirm")?.addEventListener("click",this.eventConfirmButton),this.webcimesModals.addEventListener("click",this.eventClickOutside),this.modal.querySelectorAll(".close").forEach((t=>{t.addEventListener("click",this.eventClickCloseButton)})),["mousedown","touchstart"].forEach((t=>{this.modal.addEventListener(t,this.eventDragModalOnTop)})),this.options.allowMovement&&(this.options.moveFromHeader||this.options.moveFromBody||this.options.moveFromFooter)&&(this.options.moveFromHeader&&this.modal.querySelector(".modalHeader")&&this.moveFromElements.push(this.modal.querySelector(".modalHeader")),this.options.moveFromBody&&this.modal.querySelector(".modalBody")&&this.moveFromElements.push(this.modal.querySelector(".modalBody")),this.options.moveFromFooter&&this.modal.querySelector(".modalFooter")&&this.moveFromElements.push(this.modal.querySelector(".modalFooter")),["mousedown","touchstart"].forEach((t=>{this.moveFromElements.forEach((o=>{o.addEventListener(t,this.eventDragStart)}))})),["mousemove","touchmove"].forEach((t=>{document.addEventListener(t,this.eventMove)})),["mouseup","touchend"].forEach((t=>{document.addEventListener(t,this.eventDragStop)})),document.addEventListener("selectstart",this.eventPreventSelectText)),window.addEventListener("resize",this.eventResize)}destroy(){this.modal.getAttribute("data-destroying")||(this.modal.dispatchEvent(new CustomEvent("beforeDestroy")),"function"==typeof this.options.beforeDestroy&&this.options.beforeDestroy(),1==document.querySelectorAll(".modal:not([data-destroying])").length&&this.webcimesModals.classList.add("animFadeOut"),this.modal.setAttribute("data-destroying","1"),this.modal.classList.add(this.options.animationOnDestroy),setTimeout((()=>{void 0!==this.modal&&(this.options.buttonCancelHtml&&this.modal.querySelector(".cancel")?.removeEventListener("click",this.eventCancelButton),this.options.buttonConfirmHtml&&this.modal.querySelector(".confirm")?.removeEventListener("click",this.eventConfirmButton),this.webcimesModals.removeEventListener("click",this.eventClickOutside),this.modal.querySelectorAll(".close").forEach((t=>{t.removeEventListener("click",this.eventClickCloseButton)})),["mousedown","touchstart"].forEach((t=>{this.modal.removeEventListener(t,this.eventDragModalOnTop)})),this.options.allowMovement&&(this.options.moveFromHeader||this.options.moveFromBody||this.options.moveFromFooter)&&(["mousedown","touchstart"].forEach((t=>{this.moveFromElements.forEach((o=>{o.removeEventListener(t,this.eventDragStart)}))})),["mousemove","touchmove"].forEach((t=>{document.removeEventListener(t,this.eventMove)})),["mouseup","touchend"].forEach((t=>{document.removeEventListener(t,this.eventDragStop)})),document.removeEventListener("selectstart",this.eventPreventSelectText)),window.removeEventListener("resize",this.eventResize),(document.querySelectorAll(".modal").length>1?this.modal:this.webcimesModals).remove()),this.modal.dispatchEvent(new CustomEvent("afterDestroy")),"function"==typeof this.options.afterDestroy&&this.options.afterDestroy()}),this.options.animationDuration))}}var s=o.V;export{s as WebcimesModal};
|
|
2
2
|
//# sourceMappingURL=webcimes-modal.esm.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"js/webcimes-modal.esm.js","mappings":"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","sources":["webpack://webcimes-modal/webpack/bootstrap","webpack://webcimes-modal/webpack/runtime/define property getters","webpack://webcimes-modal/webpack/runtime/hasOwnProperty shorthand","webpack://webcimes-modal/./src/ts/webcimes-modal.ts"],"sourcesContent":["// The require scope\nvar __webpack_require__ = {};\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","/**\r\n * Copyright (c) 2023 WebCimes - RICHARD Florian (https://webcimes.com)\r\n * MIT License - https://choosealicense.com/licenses/mit/\r\n * Date: 2023-03-25\r\n */\r\n\r\n\"use strict\";\r\n\r\n/**\r\n * Options\r\n */\r\ninterface Options {\r\n\t/** set a specific id on the modal. default \"null\" */\r\n\tsetId: string | null;\r\n\t/** set a specific class on the modal, default \"null\" */\r\n\tsetClass: string | null;\r\n\t/** width (specify unit), default \"auto\" */\r\n\twidth: string;\r\n\t/** height (specify unit), default \"auto\" */\r\n\theight: string;\r\n\t/** html for title, default \"null\" */\r\n\ttitleHtml: string | null;\r\n\t/** html for body, default \"null\" */\r\n\tbodyHtml: string | null;\r\n\t/** html for cancel button, default \"null\" */\r\n\tbuttonCancelHtml: string | null;\r\n\t/** html for confirm button, default \"null\" */\r\n\tbuttonConfirmHtml: string | null;\r\n\t/** close modal after trigger cancel button, default \"true\" */\r\n\tcloseOnCancelButton: boolean;\r\n\t/** close modal after trigger confirm button, default \"true\" */\r\n\tcloseOnConfirmButton: boolean;\r\n\t/** show close button, default \"true\" */\r\n\tshowCloseButton: boolean;\r\n\t/** allow the modal to close when clicked outside, default \"true\" */\r\n\tallowCloseOutside: boolean;\r\n\t/** ability to move modal, default \"true\" */\r\n\tallowMovement: boolean;\r\n\t/** if allowMovement is set to \"true\", ability to move modal from header, default \"true\" */\r\n\tmoveFromHeader: boolean;\r\n\t/** if allowMovement is set to \"true\", ability to move modal from body, default \"false\" */\r\n\tmoveFromBody: boolean;\r\n\t/** if allowMovement is set to \"true\", ability to move modal from footer, default \"true\" */\r\n\tmoveFromFooter: boolean;\r\n\t/** keep header sticky (visible) when scrolling, default \"true\" */\r\n\tstickyHeader: boolean;\r\n\t/** keep footer sticky (visible) when scrolling, default \"true\" */\r\n\tstickyFooter: boolean;\r\n\t/** add extra css style to modal, default null */\r\n\tstyle: string | null;\r\n\t/** \"animDropDown\" or \"animFadeIn\" for show animation, default \"animDropDown\" */\r\n\tanimationOnShow: \"animDropDown\" | \"animFadeIn\";\r\n\t/** \"animDropUp\" or \"animFadeOut\" for destroy animation, default \"animDropUp\" */\r\n\tanimationOnDestroy: \"animDropUp\" | \"animFadeOut\";\r\n\t/** animation duration in ms, default \"500\" */\r\n\tanimationDuration: number;\r\n\t/** callback before show modal */\r\n\tbeforeShow: () => void;\r\n\t/** callback after show modal */\r\n\tafterShow: () => void;\r\n\t/** callback before destroy modal */\r\n\tbeforeDestroy: () => void;\r\n\t/** callback after destroy modal */\r\n\tafterDestroy: () => void;\r\n\t/** callback after triggering cancel button */\r\n\tonCancelButton: () => void;\r\n\t/** callback after triggering confirm button */\r\n\tonConfirmButton: () => void;\r\n}\r\n\r\n/**\r\n * Class WebcimesModal\r\n */\r\nexport class WebcimesModal\r\n{\r\n\tpublic webcimesModals: HTMLElement;\r\n\tpublic modal: HTMLElement;\r\n\tprivate options: Options;\r\n\tprivate eventCancelButton: () => void = () => {\r\n\t\t// Callback on cancel button\r\n\t\tif(typeof this.options.onCancelButton === 'function')\r\n\t\t{\r\n\t\t\tthis.options.onCancelButton();\r\n\t\t}\r\n\t};\r\n\tprivate eventConfirmButton: () => void = () => {\r\n\t\t// Callback on confirm button\r\n\t\tif(typeof this.options.onConfirmButton === 'function')\r\n\t\t{\r\n\t\t\tthis.options.onConfirmButton();\r\n\t\t}\r\n\t};\r\n\tprivate eventClickOutside: (e: Event) => void = (e) => {\r\n\t\tif(e.target == this.webcimesModals)\r\n\t\t{\r\n\t\t\tif(this.options.allowCloseOutside)\r\n\t\t\t{\r\n\t\t\t\t// Destroy modal\r\n\t\t\t\tthis.destroy();\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\t// Add animation for show modal who can't be close\r\n\t\t\t\tthis.modal.classList.add(\"animGrowShrink\");\r\n\r\n\t\t\t\t// Delete animation after the animation delay\r\n\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\tthis.modal.classList.remove(\"animGrowShrink\");\r\n\t\t\t\t}, this.options.animationDuration);\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\tprivate eventClickCloseButton: () => void = () => {\r\n\t\t// Destroy modal\r\n\t\tthis.destroy();\r\n\t};\r\n\tprivate eventDragModalOnTop: (e: Event) => void = (e) => {\r\n\t\t// Only if target is not close button (for bug in chrome)\r\n\t\tif(!(<HTMLElement>e.target).closest(\".close\"))\r\n\t\t{\r\n\t\t\t// If multiple modal, and modal not already on top (no next sibling), we place the current modal on the top\r\n\t\t\tif(document.querySelectorAll(\".modal\").length > 1 && this.modal.nextElementSibling !== null)\r\n\t\t\t{\r\n\t\t\t\tlet oldScrollTop = this.modal.scrollTop;\r\n\t\t\t\tthis.webcimesModals.insertAdjacentElement(\"beforeend\", this.modal);\r\n\t\t\t\tthis.modal.scrollTop = oldScrollTop;\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\tprivate position: {x: number, y: number};\r\n\tprivate offset: {x: number, y: number};\r\n\tprivate isDragging: boolean = false;\r\n\tprivate moveFromElements: HTMLElement[] = [];\r\n\tprivate eventDragStart: (e: Event) => void = (e) => {\r\n\t\t// Start drag only if it's not a button\r\n\t\tif(!(<HTMLElement>e.target).closest(\"button\"))\r\n\t\t{\r\n\t\t\tthis.isDragging = true;\r\n\r\n\t\t\t// Mouse\r\n\t\t\tif((<MouseEvent>e).clientX)\r\n\t\t\t{\r\n\t\t\t\tthis.offset = {\r\n\t\t\t\t\tx: this.modal.offsetLeft - (<MouseEvent>e).clientX,\r\n\t\t\t\t\ty: this.modal.offsetTop - (<MouseEvent>e).clientY\r\n\t\t\t\t};\r\n\t\t\t}\r\n\t\t\t// Touch device (use the first touch only)\r\n\t\t\telse if((<TouchEvent>e).touches)\r\n\t\t\t{\r\n\t\t\t\tthis.offset = {\r\n\t\t\t\t\tx: this.modal.offsetLeft - (<TouchEvent>e).touches[0].clientX,\r\n\t\t\t\t\ty: this.modal.offsetTop - (<TouchEvent>e).touches[0].clientY\r\n\t\t\t\t};\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\tprivate eventMove: (e: Event) => void = (e) => {\r\n\t\tif(this.isDragging)\r\n\t\t{\r\n\t\t\t// Mouse\r\n\t\t\tif((<MouseEvent>e).clientX)\r\n\t\t\t{\r\n\t\t\t\tthis.position = {\r\n\t\t\t\t\tx: (<MouseEvent>e).clientX,\r\n\t\t\t\t\ty: (<MouseEvent>e).clientY\r\n\t\t\t\t};\r\n\t\t\t}\r\n\t\t\t// Touch device (use the first touch only)\r\n\t\t\telse if((<TouchEvent>e).touches)\r\n\t\t\t{\r\n\t\t\t\tthis.position = {\r\n\t\t\t\t\tx: (<TouchEvent>e).touches[0].clientX,\r\n\t\t\t\t\ty: (<TouchEvent>e).touches[0].clientY\r\n\t\t\t\t};\r\n\t\t\t}\r\n\t\t\tthis.modal.style.left = (this.position.x + this.offset.x)+'px';\r\n\t\t\tthis.modal.style.top = (this.position.y + this.offset.y)+'px';\r\n\t\t}\r\n\t};\r\n\tprivate eventDragStop: () => void = () => {\r\n\t\tthis.isDragging = false;\r\n\t};\r\n\tprivate eventPreventSelectText: (e: Event) => void = (e) => {\r\n\t\tif(this.isDragging)\r\n\t\t{\r\n\t\t\te.preventDefault();\r\n\t\t}\r\n\t};\r\n\tprivate eventResize: () => void = () => {\r\n\t\tthis.modal.style.removeProperty(\"left\");\r\n\t\tthis.modal.style.removeProperty(\"top\");\r\n\t\t\r\n\t};\r\n\r\n\t/**\r\n\t * Create modal\r\n\t */\r\n\tconstructor(options: Options)\r\n\t{\r\n\t\t// Defaults\r\n\t\tconst defaults: Options = {\r\n\t\t\tsetId: null,\r\n\t\t\tsetClass: null,\r\n\t\t\twidth: 'auto',\r\n\t\t\theight: 'auto',\r\n\t\t\ttitleHtml: null,\r\n\t\t\tbodyHtml: null,\r\n\t\t\tbuttonCancelHtml: null,\r\n\t\t\tbuttonConfirmHtml: null,\r\n\t\t\tcloseOnCancelButton: true,\r\n\t\t\tcloseOnConfirmButton: true,\r\n\t\t\tshowCloseButton: true,\r\n\t\t\tallowCloseOutside: true,\r\n\t\t\tallowMovement: true,\r\n\t\t\tmoveFromHeader: true,\r\n\t\t\tmoveFromBody: false,\r\n\t\t\tmoveFromFooter: true,\r\n\t\t\tstickyHeader: true,\r\n\t\t\tstickyFooter: true,\r\n\t\t\tstyle: null,\r\n\t\t\tanimationOnShow: 'animDropDown',\r\n\t\t\tanimationOnDestroy: 'animDropUp',\r\n\t\t\tanimationDuration: 500,\r\n\t\t\tbeforeShow: () => {},\r\n\t\t\tafterShow: () => {},\r\n\t\t\tbeforeDestroy: () => {},\r\n\t\t\tafterDestroy: () => {},\r\n\t\t\tonCancelButton: () => {},\r\n\t\t\tonConfirmButton: () => {},\r\n\t\t}\r\n\t\tthis.options = {...defaults, ...options};\r\n\t\t\r\n\t\t// Call init method\r\n\t\tthis.init();\r\n\t}\r\n\r\n\t/**\r\n\t * Init modal\r\n\t */\r\n init()\r\n\t{\r\n\t\t// Create webcimesModals\r\n\t\tif(!document.querySelector(\".webcimesModals\"))\r\n\t\t{\r\n\t\t\t// Create webcimesModals\r\n\t\t\tdocument.body.insertAdjacentHTML(\"beforeend\", '<div class=\"webcimesModals animFadeIn\"></div>');\r\n\t\t\tthis.webcimesModals = <HTMLElement>document.querySelector(\".webcimesModals\");\r\n\t\t\t\r\n\t\t\t// Set animation duration for webcimesModals\r\n\t\t\tthis.webcimesModals.style.setProperty(\"animation-duration\", this.options.animationDuration+\"ms\");\r\n\t\r\n\t\t\t// Delete enter animation after animation delay\r\n\t\t\tsetTimeout(() => {\r\n\t\t\t\tthis.webcimesModals.classList.remove(\"animFadeIn\");\r\n\t\t\t}, this.options.animationDuration);\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\t// Get webcimesModals\r\n\t\t\tthis.webcimesModals = <HTMLElement>document.querySelector(\".webcimesModals\");\r\n\r\n\t\t\t// Remove animFadeOut in case of create new modal after destroy the last one before (during animation duration)\r\n\t\t\tthis.webcimesModals.classList.remove(\"animFadeOut\");\r\n\t\t}\r\n\t\r\n\t\t// Create modal\r\n\t\tthis.webcimesModals.insertAdjacentHTML(\"beforeend\", \r\n\t\t\t`<div class=\"modal `+(this.options.setClass?this.options.setClass:'')+` `+this.options.animationOnShow+`\" `+(this.options.setId?'id=\"'+this.options.setId+'\"':'')+`>\r\n\t\t\t\t`+(this.options.titleHtml||this.options.showCloseButton?\r\n\t\t\t\t\t`<div class=\"modalHeader `+(this.options.stickyHeader?'sticky':'')+` `+(this.options.moveFromHeader?'movable':'')+`\">\r\n\t\t\t\t\t\t`+(this.options.titleHtml?'<div class=\"title\">'+this.options.titleHtml+'</div>':'')+`\r\n\t\t\t\t\t\t`+(this.options.showCloseButton?'<button class=\"close\"></button>':'')+`\r\n\t\t\t\t\t</div>`\r\n\t\t\t\t:'')+`\r\n\t\t\t\t`+(this.options.bodyHtml?\r\n\t\t\t\t\t`<div class=\"modalBody `+(this.options.moveFromBody?'movable':'')+`\">\r\n\t\t\t\t\t\t`+this.options.bodyHtml+`\r\n\t\t\t\t\t</div>`\r\n\t\t\t\t:'')+`\r\n\t\t\t\t`+(this.options.buttonCancelHtml||this.options.buttonConfirmHtml?\r\n\t\t\t\t\t`<div class=\"modalFooter `+(this.options.stickyFooter?'sticky':'')+` `+(this.options.moveFromFooter?'movable':'')+`\">\r\n\t\t\t\t\t\t`+(this.options.buttonCancelHtml?'<button class=\"cancel '+(this.options.closeOnCancelButton?'close':'')+'\">'+this.options.buttonCancelHtml+'</button>':'')+`\r\n\t\t\t\t\t\t`+(this.options.buttonConfirmHtml?'<button class=\"confirm '+(this.options.closeOnConfirmButton?'close':'')+'\">'+this.options.buttonConfirmHtml+'</button>':'')+`\r\n\t\t\t\t\t</div>`\r\n\t\t\t\t:'')+`\r\n\t\t\t</div>`\r\n\t\t);\r\n\t\tthis.modal = <HTMLElement>this.webcimesModals.lastElementChild;\r\n\t\t\r\n\t\t// Callback before show modal\r\n\t\tif(typeof this.options.beforeShow === 'function')\r\n\t\t{\r\n\t\t\t// Set a timeout of zero, to wait for some dom to load\r\n\t\t\tsetTimeout(() => {\r\n\t\t\t\tthis.options.beforeShow();\r\n\t\t\t}, 0);\r\n\t\t}\r\n\t\t\r\n\t\t// Set animation duration for modal\r\n\t\tthis.modal.style.setProperty(\"animation-duration\", this.options.animationDuration+\"ms\");\r\n\t\t\r\n\t\t// Delete animation of enter after the animation delay\r\n\t\tsetTimeout(() => {\r\n\t\t\tthis.modal.classList.remove(this.options.animationOnShow);\r\n\t\r\n\t\t\t// Callback after show modal\r\n\t\t\tif(typeof this.options.afterShow === 'function')\r\n\t\t\t{\r\n\t\t\t\tthis.options.afterShow();\r\n\t\t\t}\r\n\t\t}, this.options.animationDuration);\r\n\t\r\n\t\t// Width of modal\r\n\t\tthis.modal.style.setProperty(\"max-width\", \"90%\");\r\n\t\tif(this.options.width != \"auto\" && this.options.width)\r\n\t\t{\r\n\t\t\tthis.modal.style.setProperty(\"width\", this.options.width);\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\t// \"max-content\" is for keep size in \"auto\" and for maximum to max-width\r\n\t\t\tthis.modal.style.setProperty(\"width\", \"max-content\");\r\n\t\t}\r\n\t\r\n\t\t// Height of modal\r\n\t\tthis.modal.style.setProperty(\"max-height\", \"90%\");\r\n\t\tif(this.options.height != \"auto\" && this.options.height)\r\n\t\t{\r\n\t\t\tthis.modal.style.setProperty(\"height\", this.options.height);\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\t// \"max-content\" is for keep size in \"auto\" and for maximum to max-height\r\n\t\t\tthis.modal.style.setProperty(\"height\", \"max-content\");\r\n\t\t}\r\n\t\r\n\t\t// Style\r\n\t\tif(this.options.style)\r\n\t\t{\r\n\t\t\tlet oldStyle = this.modal.getAttribute(\"style\");\r\n\t\t\tthis.modal.setAttribute(\"style\", oldStyle+this.options.style);\r\n\t\t}\r\n\t\r\n\t\t// Event on cancel button\r\n\t\tif(this.options.buttonCancelHtml)\r\n\t\t{\r\n\t\t\tthis.modal.querySelector(\".cancel\")?.addEventListener(\"click\", this.eventCancelButton);\r\n\t\t}\r\n\t\r\n\t\t// Event on confirm button\r\n\t\tif(this.options.buttonConfirmHtml)\r\n\t\t{\r\n\t\t\tthis.modal.querySelector(\".confirm\")?.addEventListener(\"click\", this.eventConfirmButton);\r\n\t\t}\r\n\t\t\r\n\t\t// Event click outside (on webcimesModals)\r\n\t\tthis.webcimesModals.addEventListener(\"click\", this.eventClickOutside);\r\n\t\r\n\t\t// Event close modal when click on close button\r\n\t\tthis.modal.querySelectorAll(\".close\").forEach((el) => {\r\n\t\t\tel.addEventListener(\"click\", this.eventClickCloseButton);\r\n\t\t});\r\n\t\r\n\t\t// Place selected modal on top\r\n\t\t['mousedown', 'touchstart'].forEach((typeEvent) => {\r\n\t\t\tthis.modal.addEventListener(typeEvent, this.eventDragModalOnTop);\r\n\t\t});\r\n\t\t\r\n\t\t// Move modal\r\n\t\tif(this.options.allowMovement && (this.options.moveFromHeader || this.options.moveFromBody || this.options.moveFromFooter))\r\n\t\t{\r\n\t\t\tif(this.options.moveFromHeader && this.modal.querySelector(\".modalHeader\"))\r\n\t\t\t{\r\n\t\t\t\tthis.moveFromElements.push(<HTMLElement>this.modal.querySelector(\".modalHeader\"));\r\n\t\t\t}\r\n\t\t\tif(this.options.moveFromBody && this.modal.querySelector(\".modalBody\"))\r\n\t\t\t{\r\n\t\t\t\tthis.moveFromElements.push(<HTMLElement>this.modal.querySelector(\".modalBody\"));\r\n\t\t\t}\r\n\t\t\tif(this.options.moveFromFooter && this.modal.querySelector(\".modalFooter\"))\r\n\t\t\t{\r\n\t\t\t\tthis.moveFromElements.push(<HTMLElement>this.modal.querySelector(\".modalFooter\"));\r\n\t\t\t}\r\n\t\r\n\t\t\t['mousedown', 'touchstart'].forEach((typeEvent) => {\r\n\t\t\t\tthis.moveFromElements.forEach((el) => {\r\n\t\t\t\t\tel.addEventListener(typeEvent, this.eventDragStart);\r\n\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\t\t['mousemove', 'touchmove'].forEach((typeEvent) => {\r\n\t\t\t\tdocument.addEventListener(typeEvent, this.eventMove);\r\n\t\t\t});\r\n\r\n\t\t\t['mouseup', 'touchend'].forEach((typeEvent) => {\r\n\t\t\t\tdocument.addEventListener(typeEvent, this.eventDragStop);\r\n\t\t\t});\r\n\r\n\t\t\tdocument.addEventListener(\"selectstart\", this.eventPreventSelectText);\r\n\t\t}\r\n\r\n\t\t// When resizing window, reset modal position to center\r\n\t\twindow.addEventListener(\"resize\", this.eventResize);\r\n }\r\n\r\n\t/**\r\n\t * Destroy modal\r\n\t */\r\n\tdestroy()\r\n\t{\r\n\t\t// If modal is not already destroying\r\n\t\tif(!this.modal.getAttribute(\"data-destroying\"))\r\n\t\t{\r\n\t\t\t// Callback before destroy modal\r\n\t\t\tif(typeof this.options.beforeDestroy === 'function')\r\n\t\t\t{\r\n\t\t\t\tthis.options.beforeDestroy();\r\n\t\t\t}\r\n\r\n\t\t\t// Close webcimesModals (according the number of modal not already destroying)\r\n\t\t\tif(document.querySelectorAll(\".modal:not([data-destroying])\").length == 1)\r\n\t\t\t{\r\n\t\t\t\tthis.webcimesModals.classList.add(\"animFadeOut\");\r\n\t\t\t}\r\n\r\n\t\t\t// Close modal\r\n\t\t\tthis.modal.setAttribute(\"data-destroying\", \"1\");\r\n\t\t\tthis.modal.classList.add(this.options.animationOnDestroy);\r\n\r\n\t\t\t// Destroy all events from modal and remove webcimesModals or modal after animation duration\r\n\t\t\tsetTimeout(() => {\r\n\t\t\t\tif(typeof this.modal !== 'undefined')\r\n\t\t\t\t{\r\n\t\t\t\t\t// Destroy all events from modal\r\n\r\n\t\t\t\t\tif(this.options.buttonCancelHtml)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis.modal.querySelector(\".cancel\")?.removeEventListener(\"click\", this.eventCancelButton);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif(this.options.buttonConfirmHtml)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis.modal.querySelector(\".confirm\")?.removeEventListener(\"click\", this.eventConfirmButton);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tthis.webcimesModals.removeEventListener(\"click\", this.eventClickOutside);\r\n\r\n\t\t\t\t\tthis.modal.querySelectorAll(\".close\").forEach((el) => {\r\n\t\t\t\t\t\tel.removeEventListener(\"click\", this.eventClickCloseButton);\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\t['mousedown', 'touchstart'].forEach((typeEvent) => {\r\n\t\t\t\t\t\tthis.modal.removeEventListener(typeEvent, this.eventDragModalOnTop);\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tif(this.options.allowMovement && (this.options.moveFromHeader || this.options.moveFromBody || this.options.moveFromFooter))\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t['mousedown', 'touchstart'].forEach((typeEvent) => {\r\n\t\t\t\t\t\t\tthis.moveFromElements.forEach((el) => {\r\n\t\t\t\t\t\t\t\tel.removeEventListener(typeEvent, this.eventDragStart);\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t});\r\n\t\t\t\r\n\t\t\t\t\t\t['mousemove', 'touchmove'].forEach((typeEvent) => {\r\n\t\t\t\t\t\t\tdocument.removeEventListener(typeEvent, this.eventMove);\r\n\t\t\t\t\t\t});\r\n\t\t\t\r\n\t\t\t\t\t\t['mouseup', 'touchend'].forEach((typeEvent) => {\r\n\t\t\t\t\t\t\tdocument.removeEventListener(typeEvent, this.eventDragStop);\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tdocument.removeEventListener(\"selectstart\", this.eventPreventSelectText);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\twindow.removeEventListener(\"resize\", this.eventResize);\r\n\t\t\t\t\t\r\n\t\t\t\t\t// Remove webcimesModals or modal according the number of modal\r\n\t\t\t\t\t(document.querySelectorAll(\".modal\").length>1?this.modal:this.webcimesModals).remove();\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Callback after destroy modal\r\n\t\t\t\tif(typeof this.options.afterDestroy === 'function')\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.options.afterDestroy();\r\n\t\t\t\t}\r\n\t\t\t}, this.options.animationDuration);\r\n\t\t}\r\n\t}\r\n}"],"names":["__webpack_require__","exports","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","WebcimesModal","webcimesModals","modal","options","eventCancelButton","this","onCancelButton","eventConfirmButton","onConfirmButton","eventClickOutside","e","target","allowCloseOutside","destroy","classList","add","setTimeout","remove","animationDuration","eventClickCloseButton","eventDragModalOnTop","closest","document","querySelectorAll","length","nextElementSibling","oldScrollTop","scrollTop","insertAdjacentElement","position","offset","isDragging","moveFromElements","eventDragStart","clientX","x","offsetLeft","y","offsetTop","clientY","touches","eventMove","style","left","top","eventDragStop","eventPreventSelectText","preventDefault","eventResize","removeProperty","constructor","setId","setClass","width","height","titleHtml","bodyHtml","buttonCancelHtml","buttonConfirmHtml","closeOnCancelButton","closeOnConfirmButton","showCloseButton","allowMovement","moveFromHeader","moveFromBody","moveFromFooter","stickyHeader","stickyFooter","animationOnShow","animationOnDestroy","beforeShow","afterShow","beforeDestroy","afterDestroy","init","querySelector","body","insertAdjacentHTML","setProperty","lastElementChild","oldStyle","getAttribute","setAttribute","addEventListener","forEach","el","typeEvent","push","window","removeEventListener"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"file":"js/webcimes-modal.esm.js","mappings":"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","sources":["webpack://webcimes-modal/webpack/bootstrap","webpack://webcimes-modal/webpack/runtime/define property getters","webpack://webcimes-modal/webpack/runtime/hasOwnProperty shorthand","webpack://webcimes-modal/./src/ts/webcimes-modal.ts"],"sourcesContent":["// The require scope\nvar __webpack_require__ = {};\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","/**\r\n * Copyright (c) 2023 WebCimes - RICHARD Florian (https://webcimes.com)\r\n * MIT License - https://choosealicense.com/licenses/mit/\r\n * Date: 2023-03-25\r\n */\r\n\r\n\"use strict\";\r\n\r\n/**\r\n * Global\r\n */\r\ndeclare global {\r\n\t/** Events */\r\n\tinterface GlobalEventHandlersEventMap {\r\n\t\tbeforeShow: CustomEvent;\r\n\t\tafterShow: CustomEvent;\r\n\t\tbeforeDestroy: CustomEvent;\r\n\t\tafterDestroy: CustomEvent;\r\n\t\tonCancelButton: CustomEvent;\r\n\t\tonConfirmButton: CustomEvent;\r\n\t}\r\n}\r\n\r\n/**\r\n * Options\r\n */\r\ninterface Options {\r\n\t/** set a specific id on the modal. default \"null\" */\r\n\tsetId: string | null;\r\n\t/** set a specific class on the modal, default \"null\" */\r\n\tsetClass: string | null;\r\n\t/** width (specify unit), default \"auto\" */\r\n\twidth: string;\r\n\t/** height (specify unit), default \"auto\" */\r\n\theight: string;\r\n\t/** html for title, default \"null\" */\r\n\ttitleHtml: string | null;\r\n\t/** html for body, default \"null\" */\r\n\tbodyHtml: string | null;\r\n\t/** html for cancel button, default \"null\" */\r\n\tbuttonCancelHtml: string | null;\r\n\t/** html for confirm button, default \"null\" */\r\n\tbuttonConfirmHtml: string | null;\r\n\t/** close modal after trigger cancel button, default \"true\" */\r\n\tcloseOnCancelButton: boolean;\r\n\t/** close modal after trigger confirm button, default \"true\" */\r\n\tcloseOnConfirmButton: boolean;\r\n\t/** show close button, default \"true\" */\r\n\tshowCloseButton: boolean;\r\n\t/** allow the modal to close when clicked outside, default \"true\" */\r\n\tallowCloseOutside: boolean;\r\n\t/** ability to move modal, default \"true\" */\r\n\tallowMovement: boolean;\r\n\t/** if allowMovement is set to \"true\", ability to move modal from header, default \"true\" */\r\n\tmoveFromHeader: boolean;\r\n\t/** if allowMovement is set to \"true\", ability to move modal from body, default \"false\" */\r\n\tmoveFromBody: boolean;\r\n\t/** if allowMovement is set to \"true\", ability to move modal from footer, default \"true\" */\r\n\tmoveFromFooter: boolean;\r\n\t/** keep header sticky (visible) when scrolling, default \"true\" */\r\n\tstickyHeader: boolean;\r\n\t/** keep footer sticky (visible) when scrolling, default \"true\" */\r\n\tstickyFooter: boolean;\r\n\t/** add extra css style to modal, default null */\r\n\tstyle: string | null;\r\n\t/** \"animDropDown\" or \"animFadeIn\" for show animation, default \"animDropDown\" */\r\n\tanimationOnShow: \"animDropDown\" | \"animFadeIn\";\r\n\t/** \"animDropUp\" or \"animFadeOut\" for destroy animation, default \"animDropUp\" */\r\n\tanimationOnDestroy: \"animDropUp\" | \"animFadeOut\";\r\n\t/** animation duration in ms, default \"500\" */\r\n\tanimationDuration: number;\r\n\t/** callback before show modal */\r\n\tbeforeShow: () => void;\r\n\t/** callback after show modal */\r\n\tafterShow: () => void;\r\n\t/** callback before destroy modal */\r\n\tbeforeDestroy: () => void;\r\n\t/** callback after destroy modal */\r\n\tafterDestroy: () => void;\r\n\t/** callback after triggering cancel button */\r\n\tonCancelButton: () => void;\r\n\t/** callback after triggering confirm button */\r\n\tonConfirmButton: () => void;\r\n}\r\n\r\n/**\r\n * Class WebcimesModal\r\n */\r\nexport class WebcimesModal\r\n{\r\n\t/** Get the dom element containing all modals */\r\n\tpublic webcimesModals: HTMLElement;\r\n\r\n\t/** Get the dom element of the current modal */\r\n\tpublic modal: HTMLElement;\r\n\r\n\t/** Options of the current modal */\r\n\tprivate options: Options;\r\n\r\n\tprivate eventCancelButton: () => void = () => {\r\n\t\t// Callback on cancel button\r\n\t\tthis.modal.dispatchEvent(new CustomEvent(\"onCancelButton\"));\r\n\t\tif(typeof this.options.onCancelButton === 'function')\r\n\t\t{\r\n\t\t\tthis.options.onCancelButton();\r\n\t\t}\r\n\t};\r\n\r\n\tprivate eventConfirmButton: () => void = () => {\r\n\t\t// Callback on confirm button\r\n\t\tthis.modal.dispatchEvent(new CustomEvent(\"onConfirmButton\"));\r\n\t\tif(typeof this.options.onConfirmButton === 'function')\r\n\t\t{\r\n\t\t\tthis.options.onConfirmButton();\r\n\t\t}\r\n\t};\r\n\r\n\tprivate eventClickOutside: (e: Event) => void = (e) => {\r\n\t\tif(e.target == this.webcimesModals)\r\n\t\t{\r\n\t\t\tif(this.options.allowCloseOutside)\r\n\t\t\t{\r\n\t\t\t\t// Destroy modal\r\n\t\t\t\tthis.destroy();\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\t// Add animation for show modal who can't be close\r\n\t\t\t\tthis.modal.classList.add(\"animGrowShrink\");\r\n\r\n\t\t\t\t// Delete animation after the animation delay\r\n\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\tthis.modal.classList.remove(\"animGrowShrink\");\r\n\t\t\t\t}, this.options.animationDuration);\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\tprivate eventClickCloseButton: () => void = () => {\r\n\t\t// Destroy modal\r\n\t\tthis.destroy();\r\n\t};\r\n\r\n\tprivate eventDragModalOnTop: (e: Event) => void = (e) => {\r\n\t\t// Only if target is not close button (for bug in chrome)\r\n\t\tif(!(<HTMLElement>e.target).closest(\".close\"))\r\n\t\t{\r\n\t\t\t// If multiple modal, and modal not already on top (no next sibling), we place the current modal on the top\r\n\t\t\tif(document.querySelectorAll(\".modal\").length > 1 && this.modal.nextElementSibling !== null)\r\n\t\t\t{\r\n\t\t\t\tlet oldScrollTop = this.modal.scrollTop;\r\n\t\t\t\tthis.webcimesModals.insertAdjacentElement(\"beforeend\", this.modal);\r\n\t\t\t\tthis.modal.scrollTop = oldScrollTop;\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\tprivate position: {x: number, y: number};\r\n\r\n\tprivate offset: {x: number, y: number};\r\n\r\n\tprivate isDragging: boolean = false;\r\n\r\n\tprivate moveFromElements: HTMLElement[] = [];\r\n\r\n\tprivate eventDragStart: (e: Event) => void = (e) => {\r\n\t\t// Start drag only if it's not a button\r\n\t\tif(!(<HTMLElement>e.target).closest(\"button\"))\r\n\t\t{\r\n\t\t\tthis.isDragging = true;\r\n\r\n\t\t\t// Mouse\r\n\t\t\tif((<MouseEvent>e).clientX)\r\n\t\t\t{\r\n\t\t\t\tthis.offset = {\r\n\t\t\t\t\tx: this.modal.offsetLeft - (<MouseEvent>e).clientX,\r\n\t\t\t\t\ty: this.modal.offsetTop - (<MouseEvent>e).clientY\r\n\t\t\t\t};\r\n\t\t\t}\r\n\t\t\t// Touch device (use the first touch only)\r\n\t\t\telse if((<TouchEvent>e).touches)\r\n\t\t\t{\r\n\t\t\t\tthis.offset = {\r\n\t\t\t\t\tx: this.modal.offsetLeft - (<TouchEvent>e).touches[0].clientX,\r\n\t\t\t\t\ty: this.modal.offsetTop - (<TouchEvent>e).touches[0].clientY\r\n\t\t\t\t};\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\tprivate eventMove: (e: Event) => void = (e) => {\r\n\t\tif(this.isDragging)\r\n\t\t{\r\n\t\t\t// Mouse\r\n\t\t\tif((<MouseEvent>e).clientX)\r\n\t\t\t{\r\n\t\t\t\tthis.position = {\r\n\t\t\t\t\tx: (<MouseEvent>e).clientX,\r\n\t\t\t\t\ty: (<MouseEvent>e).clientY\r\n\t\t\t\t};\r\n\t\t\t}\r\n\t\t\t// Touch device (use the first touch only)\r\n\t\t\telse if((<TouchEvent>e).touches)\r\n\t\t\t{\r\n\t\t\t\tthis.position = {\r\n\t\t\t\t\tx: (<TouchEvent>e).touches[0].clientX,\r\n\t\t\t\t\ty: (<TouchEvent>e).touches[0].clientY\r\n\t\t\t\t};\r\n\t\t\t}\r\n\t\t\tthis.modal.style.left = (this.position.x + this.offset.x)+'px';\r\n\t\t\tthis.modal.style.top = (this.position.y + this.offset.y)+'px';\r\n\t\t}\r\n\t};\r\n\r\n\tprivate eventDragStop: () => void = () => {\r\n\t\tthis.isDragging = false;\r\n\t};\r\n\t\r\n\tprivate eventPreventSelectText: (e: Event) => void = (e) => {\r\n\t\tif(this.isDragging)\r\n\t\t{\r\n\t\t\te.preventDefault();\r\n\t\t}\r\n\t};\r\n\r\n\tprivate eventResize: () => void = () => {\r\n\t\tthis.modal.style.removeProperty(\"left\");\r\n\t\tthis.modal.style.removeProperty(\"top\");\r\n\t\t\r\n\t};\r\n\r\n\t/**\r\n\t * Create modal\r\n\t */\r\n\tconstructor(options: Options)\r\n\t{\r\n\t\t// Defaults\r\n\t\tconst defaults: Options = {\r\n\t\t\tsetId: null,\r\n\t\t\tsetClass: null,\r\n\t\t\twidth: 'auto',\r\n\t\t\theight: 'auto',\r\n\t\t\ttitleHtml: null,\r\n\t\t\tbodyHtml: null,\r\n\t\t\tbuttonCancelHtml: null,\r\n\t\t\tbuttonConfirmHtml: null,\r\n\t\t\tcloseOnCancelButton: true,\r\n\t\t\tcloseOnConfirmButton: true,\r\n\t\t\tshowCloseButton: true,\r\n\t\t\tallowCloseOutside: true,\r\n\t\t\tallowMovement: true,\r\n\t\t\tmoveFromHeader: true,\r\n\t\t\tmoveFromBody: false,\r\n\t\t\tmoveFromFooter: true,\r\n\t\t\tstickyHeader: true,\r\n\t\t\tstickyFooter: true,\r\n\t\t\tstyle: null,\r\n\t\t\tanimationOnShow: 'animDropDown',\r\n\t\t\tanimationOnDestroy: 'animDropUp',\r\n\t\t\tanimationDuration: 500,\r\n\t\t\tbeforeShow: () => {},\r\n\t\t\tafterShow: () => {},\r\n\t\t\tbeforeDestroy: () => {},\r\n\t\t\tafterDestroy: () => {},\r\n\t\t\tonCancelButton: () => {},\r\n\t\t\tonConfirmButton: () => {},\r\n\t\t}\r\n\t\tthis.options = {...defaults, ...options};\r\n\t\t\r\n\t\t// Call init method\r\n\t\tthis.init();\r\n\t}\r\n\r\n\t/**\r\n\t * Initialization of the current modal\r\n\t */\r\n private init()\r\n\t{\r\n\t\t// Create webcimesModals\r\n\t\tif(!document.querySelector(\".webcimesModals\"))\r\n\t\t{\r\n\t\t\t// Create webcimesModals\r\n\t\t\tdocument.body.insertAdjacentHTML(\"beforeend\", '<div class=\"webcimesModals animFadeIn\"></div>');\r\n\t\t\tthis.webcimesModals = <HTMLElement>document.querySelector(\".webcimesModals\");\r\n\t\t\t\r\n\t\t\t// Set animation duration for webcimesModals\r\n\t\t\tthis.webcimesModals.style.setProperty(\"animation-duration\", this.options.animationDuration+\"ms\");\r\n\t\r\n\t\t\t// Delete enter animation after animation delay\r\n\t\t\tsetTimeout(() => {\r\n\t\t\t\tthis.webcimesModals.classList.remove(\"animFadeIn\");\r\n\t\t\t}, this.options.animationDuration);\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\t// Get webcimesModals\r\n\t\t\tthis.webcimesModals = <HTMLElement>document.querySelector(\".webcimesModals\");\r\n\r\n\t\t\t// Remove animFadeOut in case of create new modal after destroy the last one before (during animation duration)\r\n\t\t\tthis.webcimesModals.classList.remove(\"animFadeOut\");\r\n\t\t}\r\n\t\r\n\t\t// Create modal\r\n\t\tthis.webcimesModals.insertAdjacentHTML(\"beforeend\", \r\n\t\t\t`<div class=\"modal `+(this.options.setClass?this.options.setClass:'')+` `+this.options.animationOnShow+`\" `+(this.options.setId?'id=\"'+this.options.setId+'\"':'')+`>\r\n\t\t\t\t`+(this.options.titleHtml||this.options.showCloseButton?\r\n\t\t\t\t\t`<div class=\"modalHeader `+(this.options.stickyHeader?'sticky':'')+` `+(this.options.moveFromHeader?'movable':'')+`\">\r\n\t\t\t\t\t\t`+(this.options.titleHtml?'<div class=\"title\">'+this.options.titleHtml+'</div>':'')+`\r\n\t\t\t\t\t\t`+(this.options.showCloseButton?'<button class=\"close\"></button>':'')+`\r\n\t\t\t\t\t</div>`\r\n\t\t\t\t:'')+`\r\n\t\t\t\t`+(this.options.bodyHtml?\r\n\t\t\t\t\t`<div class=\"modalBody `+(this.options.moveFromBody?'movable':'')+`\">\r\n\t\t\t\t\t\t`+this.options.bodyHtml+`\r\n\t\t\t\t\t</div>`\r\n\t\t\t\t:'')+`\r\n\t\t\t\t`+(this.options.buttonCancelHtml||this.options.buttonConfirmHtml?\r\n\t\t\t\t\t`<div class=\"modalFooter `+(this.options.stickyFooter?'sticky':'')+` `+(this.options.moveFromFooter?'movable':'')+`\">\r\n\t\t\t\t\t\t`+(this.options.buttonCancelHtml?'<button class=\"cancel '+(this.options.closeOnCancelButton?'close':'')+'\">'+this.options.buttonCancelHtml+'</button>':'')+`\r\n\t\t\t\t\t\t`+(this.options.buttonConfirmHtml?'<button class=\"confirm '+(this.options.closeOnConfirmButton?'close':'')+'\">'+this.options.buttonConfirmHtml+'</button>':'')+`\r\n\t\t\t\t\t</div>`\r\n\t\t\t\t:'')+`\r\n\t\t\t</div>`\r\n\t\t);\r\n\t\tthis.modal = <HTMLElement>this.webcimesModals.lastElementChild;\r\n\t\t\r\n\t\t// Callback before show modal (set a timeout of zero, to wait for some dom to load)\r\n\t\tsetTimeout(() => {\r\n\t\t\tthis.modal.dispatchEvent(new CustomEvent(\"beforeShow\"));\r\n\t\t\tif(typeof this.options.beforeShow === 'function')\r\n\t\t\t{\r\n\t\t\t\t\tthis.options.beforeShow();\r\n\t\t\t}\r\n\t\t}, 0);\r\n\t\t\r\n\t\t// Set animation duration for modal\r\n\t\tthis.modal.style.setProperty(\"animation-duration\", this.options.animationDuration+\"ms\");\r\n\t\t\r\n\t\t// Delete animation of enter after the animation delay\r\n\t\tsetTimeout(() => {\r\n\t\t\tthis.modal.classList.remove(this.options.animationOnShow);\r\n\t\r\n\t\t\t// Callback after show modal\r\n\t\t\tthis.modal.dispatchEvent(new CustomEvent(\"afterShow\"));\r\n\t\t\tif(typeof this.options.afterShow === 'function')\r\n\t\t\t{\r\n\t\t\t\tthis.options.afterShow();\r\n\t\t\t}\r\n\t\t}, this.options.animationDuration);\r\n\t\r\n\t\t// Width of modal\r\n\t\tthis.modal.style.setProperty(\"max-width\", \"90%\");\r\n\t\tif(this.options.width != \"auto\" && this.options.width)\r\n\t\t{\r\n\t\t\tthis.modal.style.setProperty(\"width\", this.options.width);\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\t// \"max-content\" is for keep size in \"auto\" and for maximum to max-width\r\n\t\t\tthis.modal.style.setProperty(\"width\", \"max-content\");\r\n\t\t}\r\n\t\r\n\t\t// Height of modal\r\n\t\tthis.modal.style.setProperty(\"max-height\", \"90%\");\r\n\t\tif(this.options.height != \"auto\" && this.options.height)\r\n\t\t{\r\n\t\t\tthis.modal.style.setProperty(\"height\", this.options.height);\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\t// \"max-content\" is for keep size in \"auto\" and for maximum to max-height\r\n\t\t\tthis.modal.style.setProperty(\"height\", \"max-content\");\r\n\t\t}\r\n\t\r\n\t\t// Style\r\n\t\tif(this.options.style)\r\n\t\t{\r\n\t\t\tlet oldStyle = this.modal.getAttribute(\"style\");\r\n\t\t\tthis.modal.setAttribute(\"style\", oldStyle+this.options.style);\r\n\t\t}\r\n\t\r\n\t\t// Event on cancel button\r\n\t\tif(this.options.buttonCancelHtml)\r\n\t\t{\r\n\t\t\tthis.modal.querySelector(\".cancel\")?.addEventListener(\"click\", this.eventCancelButton);\r\n\t\t}\r\n\t\r\n\t\t// Event on confirm button\r\n\t\tif(this.options.buttonConfirmHtml)\r\n\t\t{\r\n\t\t\tthis.modal.querySelector(\".confirm\")?.addEventListener(\"click\", this.eventConfirmButton);\r\n\t\t}\r\n\t\t\r\n\t\t// Event click outside (on webcimesModals)\r\n\t\tthis.webcimesModals.addEventListener(\"click\", this.eventClickOutside);\r\n\t\r\n\t\t// Event close modal when click on close button\r\n\t\tthis.modal.querySelectorAll(\".close\").forEach((el) => {\r\n\t\t\tel.addEventListener(\"click\", this.eventClickCloseButton);\r\n\t\t});\r\n\t\r\n\t\t// Place selected modal on top\r\n\t\t['mousedown', 'touchstart'].forEach((typeEvent) => {\r\n\t\t\tthis.modal.addEventListener(typeEvent, this.eventDragModalOnTop);\r\n\t\t});\r\n\t\t\r\n\t\t// Move modal\r\n\t\tif(this.options.allowMovement && (this.options.moveFromHeader || this.options.moveFromBody || this.options.moveFromFooter))\r\n\t\t{\r\n\t\t\tif(this.options.moveFromHeader && this.modal.querySelector(\".modalHeader\"))\r\n\t\t\t{\r\n\t\t\t\tthis.moveFromElements.push(<HTMLElement>this.modal.querySelector(\".modalHeader\"));\r\n\t\t\t}\r\n\t\t\tif(this.options.moveFromBody && this.modal.querySelector(\".modalBody\"))\r\n\t\t\t{\r\n\t\t\t\tthis.moveFromElements.push(<HTMLElement>this.modal.querySelector(\".modalBody\"));\r\n\t\t\t}\r\n\t\t\tif(this.options.moveFromFooter && this.modal.querySelector(\".modalFooter\"))\r\n\t\t\t{\r\n\t\t\t\tthis.moveFromElements.push(<HTMLElement>this.modal.querySelector(\".modalFooter\"));\r\n\t\t\t}\r\n\t\r\n\t\t\t['mousedown', 'touchstart'].forEach((typeEvent) => {\r\n\t\t\t\tthis.moveFromElements.forEach((el) => {\r\n\t\t\t\t\tel.addEventListener(typeEvent, this.eventDragStart);\r\n\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\t\t['mousemove', 'touchmove'].forEach((typeEvent) => {\r\n\t\t\t\tdocument.addEventListener(typeEvent, this.eventMove);\r\n\t\t\t});\r\n\r\n\t\t\t['mouseup', 'touchend'].forEach((typeEvent) => {\r\n\t\t\t\tdocument.addEventListener(typeEvent, this.eventDragStop);\r\n\t\t\t});\r\n\r\n\t\t\tdocument.addEventListener(\"selectstart\", this.eventPreventSelectText);\r\n\t\t}\r\n\r\n\t\t// When resizing window, reset modal position to center\r\n\t\twindow.addEventListener(\"resize\", this.eventResize);\r\n }\r\n\r\n\t/**\r\n\t * Destroy current modal\r\n\t */\r\n\tpublic destroy()\r\n\t{\r\n\t\t// If modal is not already destroying\r\n\t\tif(!this.modal.getAttribute(\"data-destroying\"))\r\n\t\t{\r\n\t\t\t// Callback before destroy modal\r\n\t\t\tthis.modal.dispatchEvent(new CustomEvent(\"beforeDestroy\"));\r\n\t\t\tif(typeof this.options.beforeDestroy === 'function')\r\n\t\t\t{\r\n\t\t\t\tthis.options.beforeDestroy();\r\n\t\t\t}\r\n\r\n\t\t\t// Close webcimesModals (according the number of modal not already destroying)\r\n\t\t\tif(document.querySelectorAll(\".modal:not([data-destroying])\").length == 1)\r\n\t\t\t{\r\n\t\t\t\tthis.webcimesModals.classList.add(\"animFadeOut\");\r\n\t\t\t}\r\n\r\n\t\t\t// Close modal\r\n\t\t\tthis.modal.setAttribute(\"data-destroying\", \"1\");\r\n\t\t\tthis.modal.classList.add(this.options.animationOnDestroy);\r\n\r\n\t\t\t// Destroy all events from modal and remove webcimesModals or modal after animation duration\r\n\t\t\tsetTimeout(() => {\r\n\t\t\t\tif(typeof this.modal !== 'undefined')\r\n\t\t\t\t{\r\n\t\t\t\t\t// Destroy all events from modal\r\n\r\n\t\t\t\t\tif(this.options.buttonCancelHtml)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis.modal.querySelector(\".cancel\")?.removeEventListener(\"click\", this.eventCancelButton);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif(this.options.buttonConfirmHtml)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis.modal.querySelector(\".confirm\")?.removeEventListener(\"click\", this.eventConfirmButton);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tthis.webcimesModals.removeEventListener(\"click\", this.eventClickOutside);\r\n\r\n\t\t\t\t\tthis.modal.querySelectorAll(\".close\").forEach((el) => {\r\n\t\t\t\t\t\tel.removeEventListener(\"click\", this.eventClickCloseButton);\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\t['mousedown', 'touchstart'].forEach((typeEvent) => {\r\n\t\t\t\t\t\tthis.modal.removeEventListener(typeEvent, this.eventDragModalOnTop);\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tif(this.options.allowMovement && (this.options.moveFromHeader || this.options.moveFromBody || this.options.moveFromFooter))\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t['mousedown', 'touchstart'].forEach((typeEvent) => {\r\n\t\t\t\t\t\t\tthis.moveFromElements.forEach((el) => {\r\n\t\t\t\t\t\t\t\tel.removeEventListener(typeEvent, this.eventDragStart);\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t});\r\n\t\t\t\r\n\t\t\t\t\t\t['mousemove', 'touchmove'].forEach((typeEvent) => {\r\n\t\t\t\t\t\t\tdocument.removeEventListener(typeEvent, this.eventMove);\r\n\t\t\t\t\t\t});\r\n\t\t\t\r\n\t\t\t\t\t\t['mouseup', 'touchend'].forEach((typeEvent) => {\r\n\t\t\t\t\t\t\tdocument.removeEventListener(typeEvent, this.eventDragStop);\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tdocument.removeEventListener(\"selectstart\", this.eventPreventSelectText);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\twindow.removeEventListener(\"resize\", this.eventResize);\r\n\t\t\t\t\t\r\n\t\t\t\t\t// Remove webcimesModals or modal according the number of modal\r\n\t\t\t\t\t(document.querySelectorAll(\".modal\").length>1?this.modal:this.webcimesModals).remove();\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Callback after destroy modal\r\n\t\t\t\tthis.modal.dispatchEvent(new CustomEvent(\"afterDestroy\"));\r\n\t\t\t\tif(typeof this.options.afterDestroy === 'function')\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.options.afterDestroy();\r\n\t\t\t\t}\r\n\t\t\t}, this.options.animationDuration);\r\n\t\t}\r\n\t}\r\n}"],"names":["__webpack_require__","exports","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","WebcimesModal","webcimesModals","modal","options","eventCancelButton","this","dispatchEvent","CustomEvent","onCancelButton","eventConfirmButton","onConfirmButton","eventClickOutside","e","target","allowCloseOutside","destroy","classList","add","setTimeout","remove","animationDuration","eventClickCloseButton","eventDragModalOnTop","closest","document","querySelectorAll","length","nextElementSibling","oldScrollTop","scrollTop","insertAdjacentElement","position","offset","isDragging","moveFromElements","eventDragStart","clientX","x","offsetLeft","y","offsetTop","clientY","touches","eventMove","style","left","top","eventDragStop","eventPreventSelectText","preventDefault","eventResize","removeProperty","constructor","setId","setClass","width","height","titleHtml","bodyHtml","buttonCancelHtml","buttonConfirmHtml","closeOnCancelButton","closeOnConfirmButton","showCloseButton","allowMovement","moveFromHeader","moveFromBody","moveFromFooter","stickyHeader","stickyFooter","animationOnShow","animationOnDestroy","beforeShow","afterShow","beforeDestroy","afterDestroy","init","querySelector","body","insertAdjacentHTML","setProperty","lastElementChild","oldStyle","getAttribute","setAttribute","addEventListener","forEach","el","typeEvent","push","window","removeEventListener"],"sourceRoot":""}
|
|
@@ -3,6 +3,20 @@
|
|
|
3
3
|
* MIT License - https://choosealicense.com/licenses/mit/
|
|
4
4
|
* Date: 2023-03-25
|
|
5
5
|
*/
|
|
6
|
+
/**
|
|
7
|
+
* Global
|
|
8
|
+
*/
|
|
9
|
+
declare global {
|
|
10
|
+
/** Events */
|
|
11
|
+
interface GlobalEventHandlersEventMap {
|
|
12
|
+
beforeShow: CustomEvent;
|
|
13
|
+
afterShow: CustomEvent;
|
|
14
|
+
beforeDestroy: CustomEvent;
|
|
15
|
+
afterDestroy: CustomEvent;
|
|
16
|
+
onCancelButton: CustomEvent;
|
|
17
|
+
onConfirmButton: CustomEvent;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
6
20
|
/**
|
|
7
21
|
* Options
|
|
8
22
|
*/
|
|
@@ -68,8 +82,11 @@ interface Options {
|
|
|
68
82
|
* Class WebcimesModal
|
|
69
83
|
*/
|
|
70
84
|
export declare class WebcimesModal {
|
|
85
|
+
/** Get the dom element containing all modals */
|
|
71
86
|
webcimesModals: HTMLElement;
|
|
87
|
+
/** Get the dom element of the current modal */
|
|
72
88
|
modal: HTMLElement;
|
|
89
|
+
/** Options of the current modal */
|
|
73
90
|
private options;
|
|
74
91
|
private eventCancelButton;
|
|
75
92
|
private eventConfirmButton;
|
|
@@ -90,13 +107,13 @@ export declare class WebcimesModal {
|
|
|
90
107
|
*/
|
|
91
108
|
constructor(options: Options);
|
|
92
109
|
/**
|
|
93
|
-
*
|
|
110
|
+
* Initialization of the current modal
|
|
94
111
|
*/
|
|
95
|
-
init
|
|
112
|
+
private init;
|
|
96
113
|
/**
|
|
97
|
-
* Destroy modal
|
|
114
|
+
* Destroy current modal
|
|
98
115
|
*/
|
|
99
116
|
destroy(): void;
|
|
100
117
|
}
|
|
101
118
|
export {};
|
|
102
|
-
|
|
119
|
+
//# sourceMappingURL=webcimes-modal.d.ts.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
!function(t,
|
|
1
|
+
!function(t,e){if("object"==typeof exports&&"object"==typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var o=e();for(var s in o)("object"==typeof exports?exports:t)[s]=o[s]}}(self,(()=>(()=>{"use strict";var t={d:(e,o)=>{for(var s in o)t.o(o,s)&&!t.o(e,s)&&Object.defineProperty(e,s,{enumerable:!0,get:o[s]})},o:(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r:t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})}},e={};t.r(e),t.d(e,{WebcimesModal:()=>o});class o{webcimesModals;modal;options;eventCancelButton=()=>{this.modal.dispatchEvent(new CustomEvent("onCancelButton")),"function"==typeof this.options.onCancelButton&&this.options.onCancelButton()};eventConfirmButton=()=>{this.modal.dispatchEvent(new CustomEvent("onConfirmButton")),"function"==typeof this.options.onConfirmButton&&this.options.onConfirmButton()};eventClickOutside=t=>{t.target==this.webcimesModals&&(this.options.allowCloseOutside?this.destroy():(this.modal.classList.add("animGrowShrink"),setTimeout((()=>{this.modal.classList.remove("animGrowShrink")}),this.options.animationDuration)))};eventClickCloseButton=()=>{this.destroy()};eventDragModalOnTop=t=>{if(!t.target.closest(".close")&&document.querySelectorAll(".modal").length>1&&null!==this.modal.nextElementSibling){let t=this.modal.scrollTop;this.webcimesModals.insertAdjacentElement("beforeend",this.modal),this.modal.scrollTop=t}};position;offset;isDragging=!1;moveFromElements=[];eventDragStart=t=>{t.target.closest("button")||(this.isDragging=!0,t.clientX?this.offset={x:this.modal.offsetLeft-t.clientX,y:this.modal.offsetTop-t.clientY}:t.touches&&(this.offset={x:this.modal.offsetLeft-t.touches[0].clientX,y:this.modal.offsetTop-t.touches[0].clientY}))};eventMove=t=>{this.isDragging&&(t.clientX?this.position={x:t.clientX,y:t.clientY}:t.touches&&(this.position={x:t.touches[0].clientX,y:t.touches[0].clientY}),this.modal.style.left=this.position.x+this.offset.x+"px",this.modal.style.top=this.position.y+this.offset.y+"px")};eventDragStop=()=>{this.isDragging=!1};eventPreventSelectText=t=>{this.isDragging&&t.preventDefault()};eventResize=()=>{this.modal.style.removeProperty("left"),this.modal.style.removeProperty("top")};constructor(t){this.options={setId:null,setClass:null,width:"auto",height:"auto",titleHtml:null,bodyHtml:null,buttonCancelHtml:null,buttonConfirmHtml:null,closeOnCancelButton:!0,closeOnConfirmButton:!0,showCloseButton:!0,allowCloseOutside:!0,allowMovement:!0,moveFromHeader:!0,moveFromBody:!1,moveFromFooter:!0,stickyHeader:!0,stickyFooter:!0,style:null,animationOnShow:"animDropDown",animationOnDestroy:"animDropUp",animationDuration:500,beforeShow:()=>{},afterShow:()=>{},beforeDestroy:()=>{},afterDestroy:()=>{},onCancelButton:()=>{},onConfirmButton:()=>{},...t},this.init()}init(){if(document.querySelector(".webcimesModals")?(this.webcimesModals=document.querySelector(".webcimesModals"),this.webcimesModals.classList.remove("animFadeOut")):(document.body.insertAdjacentHTML("beforeend",'<div class="webcimesModals animFadeIn"></div>'),this.webcimesModals=document.querySelector(".webcimesModals"),this.webcimesModals.style.setProperty("animation-duration",this.options.animationDuration+"ms"),setTimeout((()=>{this.webcimesModals.classList.remove("animFadeIn")}),this.options.animationDuration)),this.webcimesModals.insertAdjacentHTML("beforeend",'<div class="modal '+(this.options.setClass?this.options.setClass:"")+" "+this.options.animationOnShow+'" '+(this.options.setId?'id="'+this.options.setId+'"':"")+">\n\t\t\t\t"+(this.options.titleHtml||this.options.showCloseButton?'<div class="modalHeader '+(this.options.stickyHeader?"sticky":"")+" "+(this.options.moveFromHeader?"movable":"")+'">\n\t\t\t\t\t\t'+(this.options.titleHtml?'<div class="title">'+this.options.titleHtml+"</div>":"")+"\n\t\t\t\t\t\t"+(this.options.showCloseButton?'<button class="close"></button>':"")+"\n\t\t\t\t\t</div>":"")+"\n\t\t\t\t"+(this.options.bodyHtml?'<div class="modalBody '+(this.options.moveFromBody?"movable":"")+'">\n\t\t\t\t\t\t'+this.options.bodyHtml+"\n\t\t\t\t\t</div>":"")+"\n\t\t\t\t"+(this.options.buttonCancelHtml||this.options.buttonConfirmHtml?'<div class="modalFooter '+(this.options.stickyFooter?"sticky":"")+" "+(this.options.moveFromFooter?"movable":"")+'">\n\t\t\t\t\t\t'+(this.options.buttonCancelHtml?'<button class="cancel '+(this.options.closeOnCancelButton?"close":"")+'">'+this.options.buttonCancelHtml+"</button>":"")+"\n\t\t\t\t\t\t"+(this.options.buttonConfirmHtml?'<button class="confirm '+(this.options.closeOnConfirmButton?"close":"")+'">'+this.options.buttonConfirmHtml+"</button>":"")+"\n\t\t\t\t\t</div>":"")+"\n\t\t\t</div>"),this.modal=this.webcimesModals.lastElementChild,setTimeout((()=>{this.modal.dispatchEvent(new CustomEvent("beforeShow")),"function"==typeof this.options.beforeShow&&this.options.beforeShow()}),0),this.modal.style.setProperty("animation-duration",this.options.animationDuration+"ms"),setTimeout((()=>{this.modal.classList.remove(this.options.animationOnShow),this.modal.dispatchEvent(new CustomEvent("afterShow")),"function"==typeof this.options.afterShow&&this.options.afterShow()}),this.options.animationDuration),this.modal.style.setProperty("max-width","90%"),"auto"!=this.options.width&&this.options.width?this.modal.style.setProperty("width",this.options.width):this.modal.style.setProperty("width","max-content"),this.modal.style.setProperty("max-height","90%"),"auto"!=this.options.height&&this.options.height?this.modal.style.setProperty("height",this.options.height):this.modal.style.setProperty("height","max-content"),this.options.style){let t=this.modal.getAttribute("style");this.modal.setAttribute("style",t+this.options.style)}this.options.buttonCancelHtml&&this.modal.querySelector(".cancel")?.addEventListener("click",this.eventCancelButton),this.options.buttonConfirmHtml&&this.modal.querySelector(".confirm")?.addEventListener("click",this.eventConfirmButton),this.webcimesModals.addEventListener("click",this.eventClickOutside),this.modal.querySelectorAll(".close").forEach((t=>{t.addEventListener("click",this.eventClickCloseButton)})),["mousedown","touchstart"].forEach((t=>{this.modal.addEventListener(t,this.eventDragModalOnTop)})),this.options.allowMovement&&(this.options.moveFromHeader||this.options.moveFromBody||this.options.moveFromFooter)&&(this.options.moveFromHeader&&this.modal.querySelector(".modalHeader")&&this.moveFromElements.push(this.modal.querySelector(".modalHeader")),this.options.moveFromBody&&this.modal.querySelector(".modalBody")&&this.moveFromElements.push(this.modal.querySelector(".modalBody")),this.options.moveFromFooter&&this.modal.querySelector(".modalFooter")&&this.moveFromElements.push(this.modal.querySelector(".modalFooter")),["mousedown","touchstart"].forEach((t=>{this.moveFromElements.forEach((e=>{e.addEventListener(t,this.eventDragStart)}))})),["mousemove","touchmove"].forEach((t=>{document.addEventListener(t,this.eventMove)})),["mouseup","touchend"].forEach((t=>{document.addEventListener(t,this.eventDragStop)})),document.addEventListener("selectstart",this.eventPreventSelectText)),window.addEventListener("resize",this.eventResize)}destroy(){this.modal.getAttribute("data-destroying")||(this.modal.dispatchEvent(new CustomEvent("beforeDestroy")),"function"==typeof this.options.beforeDestroy&&this.options.beforeDestroy(),1==document.querySelectorAll(".modal:not([data-destroying])").length&&this.webcimesModals.classList.add("animFadeOut"),this.modal.setAttribute("data-destroying","1"),this.modal.classList.add(this.options.animationOnDestroy),setTimeout((()=>{void 0!==this.modal&&(this.options.buttonCancelHtml&&this.modal.querySelector(".cancel")?.removeEventListener("click",this.eventCancelButton),this.options.buttonConfirmHtml&&this.modal.querySelector(".confirm")?.removeEventListener("click",this.eventConfirmButton),this.webcimesModals.removeEventListener("click",this.eventClickOutside),this.modal.querySelectorAll(".close").forEach((t=>{t.removeEventListener("click",this.eventClickCloseButton)})),["mousedown","touchstart"].forEach((t=>{this.modal.removeEventListener(t,this.eventDragModalOnTop)})),this.options.allowMovement&&(this.options.moveFromHeader||this.options.moveFromBody||this.options.moveFromFooter)&&(["mousedown","touchstart"].forEach((t=>{this.moveFromElements.forEach((e=>{e.removeEventListener(t,this.eventDragStart)}))})),["mousemove","touchmove"].forEach((t=>{document.removeEventListener(t,this.eventMove)})),["mouseup","touchend"].forEach((t=>{document.removeEventListener(t,this.eventDragStop)})),document.removeEventListener("selectstart",this.eventPreventSelectText)),window.removeEventListener("resize",this.eventResize),(document.querySelectorAll(".modal").length>1?this.modal:this.webcimesModals).remove()),this.modal.dispatchEvent(new CustomEvent("afterDestroy")),"function"==typeof this.options.afterDestroy&&this.options.afterDestroy()}),this.options.animationDuration))}}return e})()));
|
|
2
2
|
//# sourceMappingURL=webcimes-modal.udm.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"js/webcimes-modal.udm.js","mappings":"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","sources":["webpack://webcimes-modal/webpack/universalModuleDefinition","webpack://webcimes-modal/webpack/bootstrap","webpack://webcimes-modal/webpack/runtime/define property getters","webpack://webcimes-modal/webpack/runtime/hasOwnProperty shorthand","webpack://webcimes-modal/webpack/runtime/make namespace object","webpack://webcimes-modal/./src/ts/webcimes-modal.ts"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(self, () => {\nreturn ","// The require scope\nvar __webpack_require__ = {};\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","/**\r\n * Copyright (c) 2023 WebCimes - RICHARD Florian (https://webcimes.com)\r\n * MIT License - https://choosealicense.com/licenses/mit/\r\n * Date: 2023-03-25\r\n */\r\n\r\n\"use strict\";\r\n\r\n/**\r\n * Options\r\n */\r\ninterface Options {\r\n\t/** set a specific id on the modal. default \"null\" */\r\n\tsetId: string | null;\r\n\t/** set a specific class on the modal, default \"null\" */\r\n\tsetClass: string | null;\r\n\t/** width (specify unit), default \"auto\" */\r\n\twidth: string;\r\n\t/** height (specify unit), default \"auto\" */\r\n\theight: string;\r\n\t/** html for title, default \"null\" */\r\n\ttitleHtml: string | null;\r\n\t/** html for body, default \"null\" */\r\n\tbodyHtml: string | null;\r\n\t/** html for cancel button, default \"null\" */\r\n\tbuttonCancelHtml: string | null;\r\n\t/** html for confirm button, default \"null\" */\r\n\tbuttonConfirmHtml: string | null;\r\n\t/** close modal after trigger cancel button, default \"true\" */\r\n\tcloseOnCancelButton: boolean;\r\n\t/** close modal after trigger confirm button, default \"true\" */\r\n\tcloseOnConfirmButton: boolean;\r\n\t/** show close button, default \"true\" */\r\n\tshowCloseButton: boolean;\r\n\t/** allow the modal to close when clicked outside, default \"true\" */\r\n\tallowCloseOutside: boolean;\r\n\t/** ability to move modal, default \"true\" */\r\n\tallowMovement: boolean;\r\n\t/** if allowMovement is set to \"true\", ability to move modal from header, default \"true\" */\r\n\tmoveFromHeader: boolean;\r\n\t/** if allowMovement is set to \"true\", ability to move modal from body, default \"false\" */\r\n\tmoveFromBody: boolean;\r\n\t/** if allowMovement is set to \"true\", ability to move modal from footer, default \"true\" */\r\n\tmoveFromFooter: boolean;\r\n\t/** keep header sticky (visible) when scrolling, default \"true\" */\r\n\tstickyHeader: boolean;\r\n\t/** keep footer sticky (visible) when scrolling, default \"true\" */\r\n\tstickyFooter: boolean;\r\n\t/** add extra css style to modal, default null */\r\n\tstyle: string | null;\r\n\t/** \"animDropDown\" or \"animFadeIn\" for show animation, default \"animDropDown\" */\r\n\tanimationOnShow: \"animDropDown\" | \"animFadeIn\";\r\n\t/** \"animDropUp\" or \"animFadeOut\" for destroy animation, default \"animDropUp\" */\r\n\tanimationOnDestroy: \"animDropUp\" | \"animFadeOut\";\r\n\t/** animation duration in ms, default \"500\" */\r\n\tanimationDuration: number;\r\n\t/** callback before show modal */\r\n\tbeforeShow: () => void;\r\n\t/** callback after show modal */\r\n\tafterShow: () => void;\r\n\t/** callback before destroy modal */\r\n\tbeforeDestroy: () => void;\r\n\t/** callback after destroy modal */\r\n\tafterDestroy: () => void;\r\n\t/** callback after triggering cancel button */\r\n\tonCancelButton: () => void;\r\n\t/** callback after triggering confirm button */\r\n\tonConfirmButton: () => void;\r\n}\r\n\r\n/**\r\n * Class WebcimesModal\r\n */\r\nexport class WebcimesModal\r\n{\r\n\tpublic webcimesModals: HTMLElement;\r\n\tpublic modal: HTMLElement;\r\n\tprivate options: Options;\r\n\tprivate eventCancelButton: () => void = () => {\r\n\t\t// Callback on cancel button\r\n\t\tif(typeof this.options.onCancelButton === 'function')\r\n\t\t{\r\n\t\t\tthis.options.onCancelButton();\r\n\t\t}\r\n\t};\r\n\tprivate eventConfirmButton: () => void = () => {\r\n\t\t// Callback on confirm button\r\n\t\tif(typeof this.options.onConfirmButton === 'function')\r\n\t\t{\r\n\t\t\tthis.options.onConfirmButton();\r\n\t\t}\r\n\t};\r\n\tprivate eventClickOutside: (e: Event) => void = (e) => {\r\n\t\tif(e.target == this.webcimesModals)\r\n\t\t{\r\n\t\t\tif(this.options.allowCloseOutside)\r\n\t\t\t{\r\n\t\t\t\t// Destroy modal\r\n\t\t\t\tthis.destroy();\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\t// Add animation for show modal who can't be close\r\n\t\t\t\tthis.modal.classList.add(\"animGrowShrink\");\r\n\r\n\t\t\t\t// Delete animation after the animation delay\r\n\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\tthis.modal.classList.remove(\"animGrowShrink\");\r\n\t\t\t\t}, this.options.animationDuration);\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\tprivate eventClickCloseButton: () => void = () => {\r\n\t\t// Destroy modal\r\n\t\tthis.destroy();\r\n\t};\r\n\tprivate eventDragModalOnTop: (e: Event) => void = (e) => {\r\n\t\t// Only if target is not close button (for bug in chrome)\r\n\t\tif(!(<HTMLElement>e.target).closest(\".close\"))\r\n\t\t{\r\n\t\t\t// If multiple modal, and modal not already on top (no next sibling), we place the current modal on the top\r\n\t\t\tif(document.querySelectorAll(\".modal\").length > 1 && this.modal.nextElementSibling !== null)\r\n\t\t\t{\r\n\t\t\t\tlet oldScrollTop = this.modal.scrollTop;\r\n\t\t\t\tthis.webcimesModals.insertAdjacentElement(\"beforeend\", this.modal);\r\n\t\t\t\tthis.modal.scrollTop = oldScrollTop;\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\tprivate position: {x: number, y: number};\r\n\tprivate offset: {x: number, y: number};\r\n\tprivate isDragging: boolean = false;\r\n\tprivate moveFromElements: HTMLElement[] = [];\r\n\tprivate eventDragStart: (e: Event) => void = (e) => {\r\n\t\t// Start drag only if it's not a button\r\n\t\tif(!(<HTMLElement>e.target).closest(\"button\"))\r\n\t\t{\r\n\t\t\tthis.isDragging = true;\r\n\r\n\t\t\t// Mouse\r\n\t\t\tif((<MouseEvent>e).clientX)\r\n\t\t\t{\r\n\t\t\t\tthis.offset = {\r\n\t\t\t\t\tx: this.modal.offsetLeft - (<MouseEvent>e).clientX,\r\n\t\t\t\t\ty: this.modal.offsetTop - (<MouseEvent>e).clientY\r\n\t\t\t\t};\r\n\t\t\t}\r\n\t\t\t// Touch device (use the first touch only)\r\n\t\t\telse if((<TouchEvent>e).touches)\r\n\t\t\t{\r\n\t\t\t\tthis.offset = {\r\n\t\t\t\t\tx: this.modal.offsetLeft - (<TouchEvent>e).touches[0].clientX,\r\n\t\t\t\t\ty: this.modal.offsetTop - (<TouchEvent>e).touches[0].clientY\r\n\t\t\t\t};\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\tprivate eventMove: (e: Event) => void = (e) => {\r\n\t\tif(this.isDragging)\r\n\t\t{\r\n\t\t\t// Mouse\r\n\t\t\tif((<MouseEvent>e).clientX)\r\n\t\t\t{\r\n\t\t\t\tthis.position = {\r\n\t\t\t\t\tx: (<MouseEvent>e).clientX,\r\n\t\t\t\t\ty: (<MouseEvent>e).clientY\r\n\t\t\t\t};\r\n\t\t\t}\r\n\t\t\t// Touch device (use the first touch only)\r\n\t\t\telse if((<TouchEvent>e).touches)\r\n\t\t\t{\r\n\t\t\t\tthis.position = {\r\n\t\t\t\t\tx: (<TouchEvent>e).touches[0].clientX,\r\n\t\t\t\t\ty: (<TouchEvent>e).touches[0].clientY\r\n\t\t\t\t};\r\n\t\t\t}\r\n\t\t\tthis.modal.style.left = (this.position.x + this.offset.x)+'px';\r\n\t\t\tthis.modal.style.top = (this.position.y + this.offset.y)+'px';\r\n\t\t}\r\n\t};\r\n\tprivate eventDragStop: () => void = () => {\r\n\t\tthis.isDragging = false;\r\n\t};\r\n\tprivate eventPreventSelectText: (e: Event) => void = (e) => {\r\n\t\tif(this.isDragging)\r\n\t\t{\r\n\t\t\te.preventDefault();\r\n\t\t}\r\n\t};\r\n\tprivate eventResize: () => void = () => {\r\n\t\tthis.modal.style.removeProperty(\"left\");\r\n\t\tthis.modal.style.removeProperty(\"top\");\r\n\t\t\r\n\t};\r\n\r\n\t/**\r\n\t * Create modal\r\n\t */\r\n\tconstructor(options: Options)\r\n\t{\r\n\t\t// Defaults\r\n\t\tconst defaults: Options = {\r\n\t\t\tsetId: null,\r\n\t\t\tsetClass: null,\r\n\t\t\twidth: 'auto',\r\n\t\t\theight: 'auto',\r\n\t\t\ttitleHtml: null,\r\n\t\t\tbodyHtml: null,\r\n\t\t\tbuttonCancelHtml: null,\r\n\t\t\tbuttonConfirmHtml: null,\r\n\t\t\tcloseOnCancelButton: true,\r\n\t\t\tcloseOnConfirmButton: true,\r\n\t\t\tshowCloseButton: true,\r\n\t\t\tallowCloseOutside: true,\r\n\t\t\tallowMovement: true,\r\n\t\t\tmoveFromHeader: true,\r\n\t\t\tmoveFromBody: false,\r\n\t\t\tmoveFromFooter: true,\r\n\t\t\tstickyHeader: true,\r\n\t\t\tstickyFooter: true,\r\n\t\t\tstyle: null,\r\n\t\t\tanimationOnShow: 'animDropDown',\r\n\t\t\tanimationOnDestroy: 'animDropUp',\r\n\t\t\tanimationDuration: 500,\r\n\t\t\tbeforeShow: () => {},\r\n\t\t\tafterShow: () => {},\r\n\t\t\tbeforeDestroy: () => {},\r\n\t\t\tafterDestroy: () => {},\r\n\t\t\tonCancelButton: () => {},\r\n\t\t\tonConfirmButton: () => {},\r\n\t\t}\r\n\t\tthis.options = {...defaults, ...options};\r\n\t\t\r\n\t\t// Call init method\r\n\t\tthis.init();\r\n\t}\r\n\r\n\t/**\r\n\t * Init modal\r\n\t */\r\n init()\r\n\t{\r\n\t\t// Create webcimesModals\r\n\t\tif(!document.querySelector(\".webcimesModals\"))\r\n\t\t{\r\n\t\t\t// Create webcimesModals\r\n\t\t\tdocument.body.insertAdjacentHTML(\"beforeend\", '<div class=\"webcimesModals animFadeIn\"></div>');\r\n\t\t\tthis.webcimesModals = <HTMLElement>document.querySelector(\".webcimesModals\");\r\n\t\t\t\r\n\t\t\t// Set animation duration for webcimesModals\r\n\t\t\tthis.webcimesModals.style.setProperty(\"animation-duration\", this.options.animationDuration+\"ms\");\r\n\t\r\n\t\t\t// Delete enter animation after animation delay\r\n\t\t\tsetTimeout(() => {\r\n\t\t\t\tthis.webcimesModals.classList.remove(\"animFadeIn\");\r\n\t\t\t}, this.options.animationDuration);\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\t// Get webcimesModals\r\n\t\t\tthis.webcimesModals = <HTMLElement>document.querySelector(\".webcimesModals\");\r\n\r\n\t\t\t// Remove animFadeOut in case of create new modal after destroy the last one before (during animation duration)\r\n\t\t\tthis.webcimesModals.classList.remove(\"animFadeOut\");\r\n\t\t}\r\n\t\r\n\t\t// Create modal\r\n\t\tthis.webcimesModals.insertAdjacentHTML(\"beforeend\", \r\n\t\t\t`<div class=\"modal `+(this.options.setClass?this.options.setClass:'')+` `+this.options.animationOnShow+`\" `+(this.options.setId?'id=\"'+this.options.setId+'\"':'')+`>\r\n\t\t\t\t`+(this.options.titleHtml||this.options.showCloseButton?\r\n\t\t\t\t\t`<div class=\"modalHeader `+(this.options.stickyHeader?'sticky':'')+` `+(this.options.moveFromHeader?'movable':'')+`\">\r\n\t\t\t\t\t\t`+(this.options.titleHtml?'<div class=\"title\">'+this.options.titleHtml+'</div>':'')+`\r\n\t\t\t\t\t\t`+(this.options.showCloseButton?'<button class=\"close\"></button>':'')+`\r\n\t\t\t\t\t</div>`\r\n\t\t\t\t:'')+`\r\n\t\t\t\t`+(this.options.bodyHtml?\r\n\t\t\t\t\t`<div class=\"modalBody `+(this.options.moveFromBody?'movable':'')+`\">\r\n\t\t\t\t\t\t`+this.options.bodyHtml+`\r\n\t\t\t\t\t</div>`\r\n\t\t\t\t:'')+`\r\n\t\t\t\t`+(this.options.buttonCancelHtml||this.options.buttonConfirmHtml?\r\n\t\t\t\t\t`<div class=\"modalFooter `+(this.options.stickyFooter?'sticky':'')+` `+(this.options.moveFromFooter?'movable':'')+`\">\r\n\t\t\t\t\t\t`+(this.options.buttonCancelHtml?'<button class=\"cancel '+(this.options.closeOnCancelButton?'close':'')+'\">'+this.options.buttonCancelHtml+'</button>':'')+`\r\n\t\t\t\t\t\t`+(this.options.buttonConfirmHtml?'<button class=\"confirm '+(this.options.closeOnConfirmButton?'close':'')+'\">'+this.options.buttonConfirmHtml+'</button>':'')+`\r\n\t\t\t\t\t</div>`\r\n\t\t\t\t:'')+`\r\n\t\t\t</div>`\r\n\t\t);\r\n\t\tthis.modal = <HTMLElement>this.webcimesModals.lastElementChild;\r\n\t\t\r\n\t\t// Callback before show modal\r\n\t\tif(typeof this.options.beforeShow === 'function')\r\n\t\t{\r\n\t\t\t// Set a timeout of zero, to wait for some dom to load\r\n\t\t\tsetTimeout(() => {\r\n\t\t\t\tthis.options.beforeShow();\r\n\t\t\t}, 0);\r\n\t\t}\r\n\t\t\r\n\t\t// Set animation duration for modal\r\n\t\tthis.modal.style.setProperty(\"animation-duration\", this.options.animationDuration+\"ms\");\r\n\t\t\r\n\t\t// Delete animation of enter after the animation delay\r\n\t\tsetTimeout(() => {\r\n\t\t\tthis.modal.classList.remove(this.options.animationOnShow);\r\n\t\r\n\t\t\t// Callback after show modal\r\n\t\t\tif(typeof this.options.afterShow === 'function')\r\n\t\t\t{\r\n\t\t\t\tthis.options.afterShow();\r\n\t\t\t}\r\n\t\t}, this.options.animationDuration);\r\n\t\r\n\t\t// Width of modal\r\n\t\tthis.modal.style.setProperty(\"max-width\", \"90%\");\r\n\t\tif(this.options.width != \"auto\" && this.options.width)\r\n\t\t{\r\n\t\t\tthis.modal.style.setProperty(\"width\", this.options.width);\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\t// \"max-content\" is for keep size in \"auto\" and for maximum to max-width\r\n\t\t\tthis.modal.style.setProperty(\"width\", \"max-content\");\r\n\t\t}\r\n\t\r\n\t\t// Height of modal\r\n\t\tthis.modal.style.setProperty(\"max-height\", \"90%\");\r\n\t\tif(this.options.height != \"auto\" && this.options.height)\r\n\t\t{\r\n\t\t\tthis.modal.style.setProperty(\"height\", this.options.height);\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\t// \"max-content\" is for keep size in \"auto\" and for maximum to max-height\r\n\t\t\tthis.modal.style.setProperty(\"height\", \"max-content\");\r\n\t\t}\r\n\t\r\n\t\t// Style\r\n\t\tif(this.options.style)\r\n\t\t{\r\n\t\t\tlet oldStyle = this.modal.getAttribute(\"style\");\r\n\t\t\tthis.modal.setAttribute(\"style\", oldStyle+this.options.style);\r\n\t\t}\r\n\t\r\n\t\t// Event on cancel button\r\n\t\tif(this.options.buttonCancelHtml)\r\n\t\t{\r\n\t\t\tthis.modal.querySelector(\".cancel\")?.addEventListener(\"click\", this.eventCancelButton);\r\n\t\t}\r\n\t\r\n\t\t// Event on confirm button\r\n\t\tif(this.options.buttonConfirmHtml)\r\n\t\t{\r\n\t\t\tthis.modal.querySelector(\".confirm\")?.addEventListener(\"click\", this.eventConfirmButton);\r\n\t\t}\r\n\t\t\r\n\t\t// Event click outside (on webcimesModals)\r\n\t\tthis.webcimesModals.addEventListener(\"click\", this.eventClickOutside);\r\n\t\r\n\t\t// Event close modal when click on close button\r\n\t\tthis.modal.querySelectorAll(\".close\").forEach((el) => {\r\n\t\t\tel.addEventListener(\"click\", this.eventClickCloseButton);\r\n\t\t});\r\n\t\r\n\t\t// Place selected modal on top\r\n\t\t['mousedown', 'touchstart'].forEach((typeEvent) => {\r\n\t\t\tthis.modal.addEventListener(typeEvent, this.eventDragModalOnTop);\r\n\t\t});\r\n\t\t\r\n\t\t// Move modal\r\n\t\tif(this.options.allowMovement && (this.options.moveFromHeader || this.options.moveFromBody || this.options.moveFromFooter))\r\n\t\t{\r\n\t\t\tif(this.options.moveFromHeader && this.modal.querySelector(\".modalHeader\"))\r\n\t\t\t{\r\n\t\t\t\tthis.moveFromElements.push(<HTMLElement>this.modal.querySelector(\".modalHeader\"));\r\n\t\t\t}\r\n\t\t\tif(this.options.moveFromBody && this.modal.querySelector(\".modalBody\"))\r\n\t\t\t{\r\n\t\t\t\tthis.moveFromElements.push(<HTMLElement>this.modal.querySelector(\".modalBody\"));\r\n\t\t\t}\r\n\t\t\tif(this.options.moveFromFooter && this.modal.querySelector(\".modalFooter\"))\r\n\t\t\t{\r\n\t\t\t\tthis.moveFromElements.push(<HTMLElement>this.modal.querySelector(\".modalFooter\"));\r\n\t\t\t}\r\n\t\r\n\t\t\t['mousedown', 'touchstart'].forEach((typeEvent) => {\r\n\t\t\t\tthis.moveFromElements.forEach((el) => {\r\n\t\t\t\t\tel.addEventListener(typeEvent, this.eventDragStart);\r\n\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\t\t['mousemove', 'touchmove'].forEach((typeEvent) => {\r\n\t\t\t\tdocument.addEventListener(typeEvent, this.eventMove);\r\n\t\t\t});\r\n\r\n\t\t\t['mouseup', 'touchend'].forEach((typeEvent) => {\r\n\t\t\t\tdocument.addEventListener(typeEvent, this.eventDragStop);\r\n\t\t\t});\r\n\r\n\t\t\tdocument.addEventListener(\"selectstart\", this.eventPreventSelectText);\r\n\t\t}\r\n\r\n\t\t// When resizing window, reset modal position to center\r\n\t\twindow.addEventListener(\"resize\", this.eventResize);\r\n }\r\n\r\n\t/**\r\n\t * Destroy modal\r\n\t */\r\n\tdestroy()\r\n\t{\r\n\t\t// If modal is not already destroying\r\n\t\tif(!this.modal.getAttribute(\"data-destroying\"))\r\n\t\t{\r\n\t\t\t// Callback before destroy modal\r\n\t\t\tif(typeof this.options.beforeDestroy === 'function')\r\n\t\t\t{\r\n\t\t\t\tthis.options.beforeDestroy();\r\n\t\t\t}\r\n\r\n\t\t\t// Close webcimesModals (according the number of modal not already destroying)\r\n\t\t\tif(document.querySelectorAll(\".modal:not([data-destroying])\").length == 1)\r\n\t\t\t{\r\n\t\t\t\tthis.webcimesModals.classList.add(\"animFadeOut\");\r\n\t\t\t}\r\n\r\n\t\t\t// Close modal\r\n\t\t\tthis.modal.setAttribute(\"data-destroying\", \"1\");\r\n\t\t\tthis.modal.classList.add(this.options.animationOnDestroy);\r\n\r\n\t\t\t// Destroy all events from modal and remove webcimesModals or modal after animation duration\r\n\t\t\tsetTimeout(() => {\r\n\t\t\t\tif(typeof this.modal !== 'undefined')\r\n\t\t\t\t{\r\n\t\t\t\t\t// Destroy all events from modal\r\n\r\n\t\t\t\t\tif(this.options.buttonCancelHtml)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis.modal.querySelector(\".cancel\")?.removeEventListener(\"click\", this.eventCancelButton);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif(this.options.buttonConfirmHtml)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis.modal.querySelector(\".confirm\")?.removeEventListener(\"click\", this.eventConfirmButton);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tthis.webcimesModals.removeEventListener(\"click\", this.eventClickOutside);\r\n\r\n\t\t\t\t\tthis.modal.querySelectorAll(\".close\").forEach((el) => {\r\n\t\t\t\t\t\tel.removeEventListener(\"click\", this.eventClickCloseButton);\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\t['mousedown', 'touchstart'].forEach((typeEvent) => {\r\n\t\t\t\t\t\tthis.modal.removeEventListener(typeEvent, this.eventDragModalOnTop);\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tif(this.options.allowMovement && (this.options.moveFromHeader || this.options.moveFromBody || this.options.moveFromFooter))\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t['mousedown', 'touchstart'].forEach((typeEvent) => {\r\n\t\t\t\t\t\t\tthis.moveFromElements.forEach((el) => {\r\n\t\t\t\t\t\t\t\tel.removeEventListener(typeEvent, this.eventDragStart);\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t});\r\n\t\t\t\r\n\t\t\t\t\t\t['mousemove', 'touchmove'].forEach((typeEvent) => {\r\n\t\t\t\t\t\t\tdocument.removeEventListener(typeEvent, this.eventMove);\r\n\t\t\t\t\t\t});\r\n\t\t\t\r\n\t\t\t\t\t\t['mouseup', 'touchend'].forEach((typeEvent) => {\r\n\t\t\t\t\t\t\tdocument.removeEventListener(typeEvent, this.eventDragStop);\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tdocument.removeEventListener(\"selectstart\", this.eventPreventSelectText);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\twindow.removeEventListener(\"resize\", this.eventResize);\r\n\t\t\t\t\t\r\n\t\t\t\t\t// Remove webcimesModals or modal according the number of modal\r\n\t\t\t\t\t(document.querySelectorAll(\".modal\").length>1?this.modal:this.webcimesModals).remove();\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Callback after destroy modal\r\n\t\t\t\tif(typeof this.options.afterDestroy === 'function')\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.options.afterDestroy();\r\n\t\t\t\t}\r\n\t\t\t}, this.options.animationDuration);\r\n\t\t}\r\n\t}\r\n}"],"names":["root","factory","exports","module","define","amd","a","i","self","__webpack_require__","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","Symbol","toStringTag","value","WebcimesModal","webcimesModals","modal","options","eventCancelButton","this","onCancelButton","eventConfirmButton","onConfirmButton","eventClickOutside","e","target","allowCloseOutside","destroy","classList","add","setTimeout","remove","animationDuration","eventClickCloseButton","eventDragModalOnTop","closest","document","querySelectorAll","length","nextElementSibling","oldScrollTop","scrollTop","insertAdjacentElement","position","offset","isDragging","moveFromElements","eventDragStart","clientX","x","offsetLeft","y","offsetTop","clientY","touches","eventMove","style","left","top","eventDragStop","eventPreventSelectText","preventDefault","eventResize","removeProperty","constructor","setId","setClass","width","height","titleHtml","bodyHtml","buttonCancelHtml","buttonConfirmHtml","closeOnCancelButton","closeOnConfirmButton","showCloseButton","allowMovement","moveFromHeader","moveFromBody","moveFromFooter","stickyHeader","stickyFooter","animationOnShow","animationOnDestroy","beforeShow","afterShow","beforeDestroy","afterDestroy","init","querySelector","body","insertAdjacentHTML","setProperty","lastElementChild","oldStyle","getAttribute","setAttribute","addEventListener","forEach","el","typeEvent","push","window","removeEventListener"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"file":"js/webcimes-modal.udm.js","mappings":"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","sources":["webpack://webcimes-modal/webpack/universalModuleDefinition","webpack://webcimes-modal/webpack/bootstrap","webpack://webcimes-modal/webpack/runtime/define property getters","webpack://webcimes-modal/webpack/runtime/hasOwnProperty shorthand","webpack://webcimes-modal/webpack/runtime/make namespace object","webpack://webcimes-modal/./src/ts/webcimes-modal.ts"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(self, () => {\nreturn ","// The require scope\nvar __webpack_require__ = {};\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","/**\r\n * Copyright (c) 2023 WebCimes - RICHARD Florian (https://webcimes.com)\r\n * MIT License - https://choosealicense.com/licenses/mit/\r\n * Date: 2023-03-25\r\n */\r\n\r\n\"use strict\";\r\n\r\n/**\r\n * Global\r\n */\r\ndeclare global {\r\n\t/** Events */\r\n\tinterface GlobalEventHandlersEventMap {\r\n\t\tbeforeShow: CustomEvent;\r\n\t\tafterShow: CustomEvent;\r\n\t\tbeforeDestroy: CustomEvent;\r\n\t\tafterDestroy: CustomEvent;\r\n\t\tonCancelButton: CustomEvent;\r\n\t\tonConfirmButton: CustomEvent;\r\n\t}\r\n}\r\n\r\n/**\r\n * Options\r\n */\r\ninterface Options {\r\n\t/** set a specific id on the modal. default \"null\" */\r\n\tsetId: string | null;\r\n\t/** set a specific class on the modal, default \"null\" */\r\n\tsetClass: string | null;\r\n\t/** width (specify unit), default \"auto\" */\r\n\twidth: string;\r\n\t/** height (specify unit), default \"auto\" */\r\n\theight: string;\r\n\t/** html for title, default \"null\" */\r\n\ttitleHtml: string | null;\r\n\t/** html for body, default \"null\" */\r\n\tbodyHtml: string | null;\r\n\t/** html for cancel button, default \"null\" */\r\n\tbuttonCancelHtml: string | null;\r\n\t/** html for confirm button, default \"null\" */\r\n\tbuttonConfirmHtml: string | null;\r\n\t/** close modal after trigger cancel button, default \"true\" */\r\n\tcloseOnCancelButton: boolean;\r\n\t/** close modal after trigger confirm button, default \"true\" */\r\n\tcloseOnConfirmButton: boolean;\r\n\t/** show close button, default \"true\" */\r\n\tshowCloseButton: boolean;\r\n\t/** allow the modal to close when clicked outside, default \"true\" */\r\n\tallowCloseOutside: boolean;\r\n\t/** ability to move modal, default \"true\" */\r\n\tallowMovement: boolean;\r\n\t/** if allowMovement is set to \"true\", ability to move modal from header, default \"true\" */\r\n\tmoveFromHeader: boolean;\r\n\t/** if allowMovement is set to \"true\", ability to move modal from body, default \"false\" */\r\n\tmoveFromBody: boolean;\r\n\t/** if allowMovement is set to \"true\", ability to move modal from footer, default \"true\" */\r\n\tmoveFromFooter: boolean;\r\n\t/** keep header sticky (visible) when scrolling, default \"true\" */\r\n\tstickyHeader: boolean;\r\n\t/** keep footer sticky (visible) when scrolling, default \"true\" */\r\n\tstickyFooter: boolean;\r\n\t/** add extra css style to modal, default null */\r\n\tstyle: string | null;\r\n\t/** \"animDropDown\" or \"animFadeIn\" for show animation, default \"animDropDown\" */\r\n\tanimationOnShow: \"animDropDown\" | \"animFadeIn\";\r\n\t/** \"animDropUp\" or \"animFadeOut\" for destroy animation, default \"animDropUp\" */\r\n\tanimationOnDestroy: \"animDropUp\" | \"animFadeOut\";\r\n\t/** animation duration in ms, default \"500\" */\r\n\tanimationDuration: number;\r\n\t/** callback before show modal */\r\n\tbeforeShow: () => void;\r\n\t/** callback after show modal */\r\n\tafterShow: () => void;\r\n\t/** callback before destroy modal */\r\n\tbeforeDestroy: () => void;\r\n\t/** callback after destroy modal */\r\n\tafterDestroy: () => void;\r\n\t/** callback after triggering cancel button */\r\n\tonCancelButton: () => void;\r\n\t/** callback after triggering confirm button */\r\n\tonConfirmButton: () => void;\r\n}\r\n\r\n/**\r\n * Class WebcimesModal\r\n */\r\nexport class WebcimesModal\r\n{\r\n\t/** Get the dom element containing all modals */\r\n\tpublic webcimesModals: HTMLElement;\r\n\r\n\t/** Get the dom element of the current modal */\r\n\tpublic modal: HTMLElement;\r\n\r\n\t/** Options of the current modal */\r\n\tprivate options: Options;\r\n\r\n\tprivate eventCancelButton: () => void = () => {\r\n\t\t// Callback on cancel button\r\n\t\tthis.modal.dispatchEvent(new CustomEvent(\"onCancelButton\"));\r\n\t\tif(typeof this.options.onCancelButton === 'function')\r\n\t\t{\r\n\t\t\tthis.options.onCancelButton();\r\n\t\t}\r\n\t};\r\n\r\n\tprivate eventConfirmButton: () => void = () => {\r\n\t\t// Callback on confirm button\r\n\t\tthis.modal.dispatchEvent(new CustomEvent(\"onConfirmButton\"));\r\n\t\tif(typeof this.options.onConfirmButton === 'function')\r\n\t\t{\r\n\t\t\tthis.options.onConfirmButton();\r\n\t\t}\r\n\t};\r\n\r\n\tprivate eventClickOutside: (e: Event) => void = (e) => {\r\n\t\tif(e.target == this.webcimesModals)\r\n\t\t{\r\n\t\t\tif(this.options.allowCloseOutside)\r\n\t\t\t{\r\n\t\t\t\t// Destroy modal\r\n\t\t\t\tthis.destroy();\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\t// Add animation for show modal who can't be close\r\n\t\t\t\tthis.modal.classList.add(\"animGrowShrink\");\r\n\r\n\t\t\t\t// Delete animation after the animation delay\r\n\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\tthis.modal.classList.remove(\"animGrowShrink\");\r\n\t\t\t\t}, this.options.animationDuration);\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\tprivate eventClickCloseButton: () => void = () => {\r\n\t\t// Destroy modal\r\n\t\tthis.destroy();\r\n\t};\r\n\r\n\tprivate eventDragModalOnTop: (e: Event) => void = (e) => {\r\n\t\t// Only if target is not close button (for bug in chrome)\r\n\t\tif(!(<HTMLElement>e.target).closest(\".close\"))\r\n\t\t{\r\n\t\t\t// If multiple modal, and modal not already on top (no next sibling), we place the current modal on the top\r\n\t\t\tif(document.querySelectorAll(\".modal\").length > 1 && this.modal.nextElementSibling !== null)\r\n\t\t\t{\r\n\t\t\t\tlet oldScrollTop = this.modal.scrollTop;\r\n\t\t\t\tthis.webcimesModals.insertAdjacentElement(\"beforeend\", this.modal);\r\n\t\t\t\tthis.modal.scrollTop = oldScrollTop;\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\tprivate position: {x: number, y: number};\r\n\r\n\tprivate offset: {x: number, y: number};\r\n\r\n\tprivate isDragging: boolean = false;\r\n\r\n\tprivate moveFromElements: HTMLElement[] = [];\r\n\r\n\tprivate eventDragStart: (e: Event) => void = (e) => {\r\n\t\t// Start drag only if it's not a button\r\n\t\tif(!(<HTMLElement>e.target).closest(\"button\"))\r\n\t\t{\r\n\t\t\tthis.isDragging = true;\r\n\r\n\t\t\t// Mouse\r\n\t\t\tif((<MouseEvent>e).clientX)\r\n\t\t\t{\r\n\t\t\t\tthis.offset = {\r\n\t\t\t\t\tx: this.modal.offsetLeft - (<MouseEvent>e).clientX,\r\n\t\t\t\t\ty: this.modal.offsetTop - (<MouseEvent>e).clientY\r\n\t\t\t\t};\r\n\t\t\t}\r\n\t\t\t// Touch device (use the first touch only)\r\n\t\t\telse if((<TouchEvent>e).touches)\r\n\t\t\t{\r\n\t\t\t\tthis.offset = {\r\n\t\t\t\t\tx: this.modal.offsetLeft - (<TouchEvent>e).touches[0].clientX,\r\n\t\t\t\t\ty: this.modal.offsetTop - (<TouchEvent>e).touches[0].clientY\r\n\t\t\t\t};\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\tprivate eventMove: (e: Event) => void = (e) => {\r\n\t\tif(this.isDragging)\r\n\t\t{\r\n\t\t\t// Mouse\r\n\t\t\tif((<MouseEvent>e).clientX)\r\n\t\t\t{\r\n\t\t\t\tthis.position = {\r\n\t\t\t\t\tx: (<MouseEvent>e).clientX,\r\n\t\t\t\t\ty: (<MouseEvent>e).clientY\r\n\t\t\t\t};\r\n\t\t\t}\r\n\t\t\t// Touch device (use the first touch only)\r\n\t\t\telse if((<TouchEvent>e).touches)\r\n\t\t\t{\r\n\t\t\t\tthis.position = {\r\n\t\t\t\t\tx: (<TouchEvent>e).touches[0].clientX,\r\n\t\t\t\t\ty: (<TouchEvent>e).touches[0].clientY\r\n\t\t\t\t};\r\n\t\t\t}\r\n\t\t\tthis.modal.style.left = (this.position.x + this.offset.x)+'px';\r\n\t\t\tthis.modal.style.top = (this.position.y + this.offset.y)+'px';\r\n\t\t}\r\n\t};\r\n\r\n\tprivate eventDragStop: () => void = () => {\r\n\t\tthis.isDragging = false;\r\n\t};\r\n\t\r\n\tprivate eventPreventSelectText: (e: Event) => void = (e) => {\r\n\t\tif(this.isDragging)\r\n\t\t{\r\n\t\t\te.preventDefault();\r\n\t\t}\r\n\t};\r\n\r\n\tprivate eventResize: () => void = () => {\r\n\t\tthis.modal.style.removeProperty(\"left\");\r\n\t\tthis.modal.style.removeProperty(\"top\");\r\n\t\t\r\n\t};\r\n\r\n\t/**\r\n\t * Create modal\r\n\t */\r\n\tconstructor(options: Options)\r\n\t{\r\n\t\t// Defaults\r\n\t\tconst defaults: Options = {\r\n\t\t\tsetId: null,\r\n\t\t\tsetClass: null,\r\n\t\t\twidth: 'auto',\r\n\t\t\theight: 'auto',\r\n\t\t\ttitleHtml: null,\r\n\t\t\tbodyHtml: null,\r\n\t\t\tbuttonCancelHtml: null,\r\n\t\t\tbuttonConfirmHtml: null,\r\n\t\t\tcloseOnCancelButton: true,\r\n\t\t\tcloseOnConfirmButton: true,\r\n\t\t\tshowCloseButton: true,\r\n\t\t\tallowCloseOutside: true,\r\n\t\t\tallowMovement: true,\r\n\t\t\tmoveFromHeader: true,\r\n\t\t\tmoveFromBody: false,\r\n\t\t\tmoveFromFooter: true,\r\n\t\t\tstickyHeader: true,\r\n\t\t\tstickyFooter: true,\r\n\t\t\tstyle: null,\r\n\t\t\tanimationOnShow: 'animDropDown',\r\n\t\t\tanimationOnDestroy: 'animDropUp',\r\n\t\t\tanimationDuration: 500,\r\n\t\t\tbeforeShow: () => {},\r\n\t\t\tafterShow: () => {},\r\n\t\t\tbeforeDestroy: () => {},\r\n\t\t\tafterDestroy: () => {},\r\n\t\t\tonCancelButton: () => {},\r\n\t\t\tonConfirmButton: () => {},\r\n\t\t}\r\n\t\tthis.options = {...defaults, ...options};\r\n\t\t\r\n\t\t// Call init method\r\n\t\tthis.init();\r\n\t}\r\n\r\n\t/**\r\n\t * Initialization of the current modal\r\n\t */\r\n private init()\r\n\t{\r\n\t\t// Create webcimesModals\r\n\t\tif(!document.querySelector(\".webcimesModals\"))\r\n\t\t{\r\n\t\t\t// Create webcimesModals\r\n\t\t\tdocument.body.insertAdjacentHTML(\"beforeend\", '<div class=\"webcimesModals animFadeIn\"></div>');\r\n\t\t\tthis.webcimesModals = <HTMLElement>document.querySelector(\".webcimesModals\");\r\n\t\t\t\r\n\t\t\t// Set animation duration for webcimesModals\r\n\t\t\tthis.webcimesModals.style.setProperty(\"animation-duration\", this.options.animationDuration+\"ms\");\r\n\t\r\n\t\t\t// Delete enter animation after animation delay\r\n\t\t\tsetTimeout(() => {\r\n\t\t\t\tthis.webcimesModals.classList.remove(\"animFadeIn\");\r\n\t\t\t}, this.options.animationDuration);\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\t// Get webcimesModals\r\n\t\t\tthis.webcimesModals = <HTMLElement>document.querySelector(\".webcimesModals\");\r\n\r\n\t\t\t// Remove animFadeOut in case of create new modal after destroy the last one before (during animation duration)\r\n\t\t\tthis.webcimesModals.classList.remove(\"animFadeOut\");\r\n\t\t}\r\n\t\r\n\t\t// Create modal\r\n\t\tthis.webcimesModals.insertAdjacentHTML(\"beforeend\", \r\n\t\t\t`<div class=\"modal `+(this.options.setClass?this.options.setClass:'')+` `+this.options.animationOnShow+`\" `+(this.options.setId?'id=\"'+this.options.setId+'\"':'')+`>\r\n\t\t\t\t`+(this.options.titleHtml||this.options.showCloseButton?\r\n\t\t\t\t\t`<div class=\"modalHeader `+(this.options.stickyHeader?'sticky':'')+` `+(this.options.moveFromHeader?'movable':'')+`\">\r\n\t\t\t\t\t\t`+(this.options.titleHtml?'<div class=\"title\">'+this.options.titleHtml+'</div>':'')+`\r\n\t\t\t\t\t\t`+(this.options.showCloseButton?'<button class=\"close\"></button>':'')+`\r\n\t\t\t\t\t</div>`\r\n\t\t\t\t:'')+`\r\n\t\t\t\t`+(this.options.bodyHtml?\r\n\t\t\t\t\t`<div class=\"modalBody `+(this.options.moveFromBody?'movable':'')+`\">\r\n\t\t\t\t\t\t`+this.options.bodyHtml+`\r\n\t\t\t\t\t</div>`\r\n\t\t\t\t:'')+`\r\n\t\t\t\t`+(this.options.buttonCancelHtml||this.options.buttonConfirmHtml?\r\n\t\t\t\t\t`<div class=\"modalFooter `+(this.options.stickyFooter?'sticky':'')+` `+(this.options.moveFromFooter?'movable':'')+`\">\r\n\t\t\t\t\t\t`+(this.options.buttonCancelHtml?'<button class=\"cancel '+(this.options.closeOnCancelButton?'close':'')+'\">'+this.options.buttonCancelHtml+'</button>':'')+`\r\n\t\t\t\t\t\t`+(this.options.buttonConfirmHtml?'<button class=\"confirm '+(this.options.closeOnConfirmButton?'close':'')+'\">'+this.options.buttonConfirmHtml+'</button>':'')+`\r\n\t\t\t\t\t</div>`\r\n\t\t\t\t:'')+`\r\n\t\t\t</div>`\r\n\t\t);\r\n\t\tthis.modal = <HTMLElement>this.webcimesModals.lastElementChild;\r\n\t\t\r\n\t\t// Callback before show modal (set a timeout of zero, to wait for some dom to load)\r\n\t\tsetTimeout(() => {\r\n\t\t\tthis.modal.dispatchEvent(new CustomEvent(\"beforeShow\"));\r\n\t\t\tif(typeof this.options.beforeShow === 'function')\r\n\t\t\t{\r\n\t\t\t\t\tthis.options.beforeShow();\r\n\t\t\t}\r\n\t\t}, 0);\r\n\t\t\r\n\t\t// Set animation duration for modal\r\n\t\tthis.modal.style.setProperty(\"animation-duration\", this.options.animationDuration+\"ms\");\r\n\t\t\r\n\t\t// Delete animation of enter after the animation delay\r\n\t\tsetTimeout(() => {\r\n\t\t\tthis.modal.classList.remove(this.options.animationOnShow);\r\n\t\r\n\t\t\t// Callback after show modal\r\n\t\t\tthis.modal.dispatchEvent(new CustomEvent(\"afterShow\"));\r\n\t\t\tif(typeof this.options.afterShow === 'function')\r\n\t\t\t{\r\n\t\t\t\tthis.options.afterShow();\r\n\t\t\t}\r\n\t\t}, this.options.animationDuration);\r\n\t\r\n\t\t// Width of modal\r\n\t\tthis.modal.style.setProperty(\"max-width\", \"90%\");\r\n\t\tif(this.options.width != \"auto\" && this.options.width)\r\n\t\t{\r\n\t\t\tthis.modal.style.setProperty(\"width\", this.options.width);\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\t// \"max-content\" is for keep size in \"auto\" and for maximum to max-width\r\n\t\t\tthis.modal.style.setProperty(\"width\", \"max-content\");\r\n\t\t}\r\n\t\r\n\t\t// Height of modal\r\n\t\tthis.modal.style.setProperty(\"max-height\", \"90%\");\r\n\t\tif(this.options.height != \"auto\" && this.options.height)\r\n\t\t{\r\n\t\t\tthis.modal.style.setProperty(\"height\", this.options.height);\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\t// \"max-content\" is for keep size in \"auto\" and for maximum to max-height\r\n\t\t\tthis.modal.style.setProperty(\"height\", \"max-content\");\r\n\t\t}\r\n\t\r\n\t\t// Style\r\n\t\tif(this.options.style)\r\n\t\t{\r\n\t\t\tlet oldStyle = this.modal.getAttribute(\"style\");\r\n\t\t\tthis.modal.setAttribute(\"style\", oldStyle+this.options.style);\r\n\t\t}\r\n\t\r\n\t\t// Event on cancel button\r\n\t\tif(this.options.buttonCancelHtml)\r\n\t\t{\r\n\t\t\tthis.modal.querySelector(\".cancel\")?.addEventListener(\"click\", this.eventCancelButton);\r\n\t\t}\r\n\t\r\n\t\t// Event on confirm button\r\n\t\tif(this.options.buttonConfirmHtml)\r\n\t\t{\r\n\t\t\tthis.modal.querySelector(\".confirm\")?.addEventListener(\"click\", this.eventConfirmButton);\r\n\t\t}\r\n\t\t\r\n\t\t// Event click outside (on webcimesModals)\r\n\t\tthis.webcimesModals.addEventListener(\"click\", this.eventClickOutside);\r\n\t\r\n\t\t// Event close modal when click on close button\r\n\t\tthis.modal.querySelectorAll(\".close\").forEach((el) => {\r\n\t\t\tel.addEventListener(\"click\", this.eventClickCloseButton);\r\n\t\t});\r\n\t\r\n\t\t// Place selected modal on top\r\n\t\t['mousedown', 'touchstart'].forEach((typeEvent) => {\r\n\t\t\tthis.modal.addEventListener(typeEvent, this.eventDragModalOnTop);\r\n\t\t});\r\n\t\t\r\n\t\t// Move modal\r\n\t\tif(this.options.allowMovement && (this.options.moveFromHeader || this.options.moveFromBody || this.options.moveFromFooter))\r\n\t\t{\r\n\t\t\tif(this.options.moveFromHeader && this.modal.querySelector(\".modalHeader\"))\r\n\t\t\t{\r\n\t\t\t\tthis.moveFromElements.push(<HTMLElement>this.modal.querySelector(\".modalHeader\"));\r\n\t\t\t}\r\n\t\t\tif(this.options.moveFromBody && this.modal.querySelector(\".modalBody\"))\r\n\t\t\t{\r\n\t\t\t\tthis.moveFromElements.push(<HTMLElement>this.modal.querySelector(\".modalBody\"));\r\n\t\t\t}\r\n\t\t\tif(this.options.moveFromFooter && this.modal.querySelector(\".modalFooter\"))\r\n\t\t\t{\r\n\t\t\t\tthis.moveFromElements.push(<HTMLElement>this.modal.querySelector(\".modalFooter\"));\r\n\t\t\t}\r\n\t\r\n\t\t\t['mousedown', 'touchstart'].forEach((typeEvent) => {\r\n\t\t\t\tthis.moveFromElements.forEach((el) => {\r\n\t\t\t\t\tel.addEventListener(typeEvent, this.eventDragStart);\r\n\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\t\t['mousemove', 'touchmove'].forEach((typeEvent) => {\r\n\t\t\t\tdocument.addEventListener(typeEvent, this.eventMove);\r\n\t\t\t});\r\n\r\n\t\t\t['mouseup', 'touchend'].forEach((typeEvent) => {\r\n\t\t\t\tdocument.addEventListener(typeEvent, this.eventDragStop);\r\n\t\t\t});\r\n\r\n\t\t\tdocument.addEventListener(\"selectstart\", this.eventPreventSelectText);\r\n\t\t}\r\n\r\n\t\t// When resizing window, reset modal position to center\r\n\t\twindow.addEventListener(\"resize\", this.eventResize);\r\n }\r\n\r\n\t/**\r\n\t * Destroy current modal\r\n\t */\r\n\tpublic destroy()\r\n\t{\r\n\t\t// If modal is not already destroying\r\n\t\tif(!this.modal.getAttribute(\"data-destroying\"))\r\n\t\t{\r\n\t\t\t// Callback before destroy modal\r\n\t\t\tthis.modal.dispatchEvent(new CustomEvent(\"beforeDestroy\"));\r\n\t\t\tif(typeof this.options.beforeDestroy === 'function')\r\n\t\t\t{\r\n\t\t\t\tthis.options.beforeDestroy();\r\n\t\t\t}\r\n\r\n\t\t\t// Close webcimesModals (according the number of modal not already destroying)\r\n\t\t\tif(document.querySelectorAll(\".modal:not([data-destroying])\").length == 1)\r\n\t\t\t{\r\n\t\t\t\tthis.webcimesModals.classList.add(\"animFadeOut\");\r\n\t\t\t}\r\n\r\n\t\t\t// Close modal\r\n\t\t\tthis.modal.setAttribute(\"data-destroying\", \"1\");\r\n\t\t\tthis.modal.classList.add(this.options.animationOnDestroy);\r\n\r\n\t\t\t// Destroy all events from modal and remove webcimesModals or modal after animation duration\r\n\t\t\tsetTimeout(() => {\r\n\t\t\t\tif(typeof this.modal !== 'undefined')\r\n\t\t\t\t{\r\n\t\t\t\t\t// Destroy all events from modal\r\n\r\n\t\t\t\t\tif(this.options.buttonCancelHtml)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis.modal.querySelector(\".cancel\")?.removeEventListener(\"click\", this.eventCancelButton);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif(this.options.buttonConfirmHtml)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tthis.modal.querySelector(\".confirm\")?.removeEventListener(\"click\", this.eventConfirmButton);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tthis.webcimesModals.removeEventListener(\"click\", this.eventClickOutside);\r\n\r\n\t\t\t\t\tthis.modal.querySelectorAll(\".close\").forEach((el) => {\r\n\t\t\t\t\t\tel.removeEventListener(\"click\", this.eventClickCloseButton);\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\t['mousedown', 'touchstart'].forEach((typeEvent) => {\r\n\t\t\t\t\t\tthis.modal.removeEventListener(typeEvent, this.eventDragModalOnTop);\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tif(this.options.allowMovement && (this.options.moveFromHeader || this.options.moveFromBody || this.options.moveFromFooter))\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t['mousedown', 'touchstart'].forEach((typeEvent) => {\r\n\t\t\t\t\t\t\tthis.moveFromElements.forEach((el) => {\r\n\t\t\t\t\t\t\t\tel.removeEventListener(typeEvent, this.eventDragStart);\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t});\r\n\t\t\t\r\n\t\t\t\t\t\t['mousemove', 'touchmove'].forEach((typeEvent) => {\r\n\t\t\t\t\t\t\tdocument.removeEventListener(typeEvent, this.eventMove);\r\n\t\t\t\t\t\t});\r\n\t\t\t\r\n\t\t\t\t\t\t['mouseup', 'touchend'].forEach((typeEvent) => {\r\n\t\t\t\t\t\t\tdocument.removeEventListener(typeEvent, this.eventDragStop);\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tdocument.removeEventListener(\"selectstart\", this.eventPreventSelectText);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\twindow.removeEventListener(\"resize\", this.eventResize);\r\n\t\t\t\t\t\r\n\t\t\t\t\t// Remove webcimesModals or modal according the number of modal\r\n\t\t\t\t\t(document.querySelectorAll(\".modal\").length>1?this.modal:this.webcimesModals).remove();\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Callback after destroy modal\r\n\t\t\t\tthis.modal.dispatchEvent(new CustomEvent(\"afterDestroy\"));\r\n\t\t\t\tif(typeof this.options.afterDestroy === 'function')\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.options.afterDestroy();\r\n\t\t\t\t}\r\n\t\t\t}, this.options.animationDuration);\r\n\t\t}\r\n\t}\r\n}"],"names":["root","factory","exports","module","define","amd","a","i","self","__webpack_require__","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","Symbol","toStringTag","value","WebcimesModal","webcimesModals","modal","options","eventCancelButton","this","dispatchEvent","CustomEvent","onCancelButton","eventConfirmButton","onConfirmButton","eventClickOutside","e","target","allowCloseOutside","destroy","classList","add","setTimeout","remove","animationDuration","eventClickCloseButton","eventDragModalOnTop","closest","document","querySelectorAll","length","nextElementSibling","oldScrollTop","scrollTop","insertAdjacentElement","position","offset","isDragging","moveFromElements","eventDragStart","clientX","x","offsetLeft","y","offsetTop","clientY","touches","eventMove","style","left","top","eventDragStop","eventPreventSelectText","preventDefault","eventResize","removeProperty","constructor","setId","setClass","width","height","titleHtml","bodyHtml","buttonCancelHtml","buttonConfirmHtml","closeOnCancelButton","closeOnConfirmButton","showCloseButton","allowMovement","moveFromHeader","moveFromBody","moveFromFooter","stickyHeader","stickyFooter","animationOnShow","animationOnDestroy","beforeShow","afterShow","beforeDestroy","afterDestroy","init","querySelector","body","insertAdjacentHTML","setProperty","lastElementChild","oldStyle","getAttribute","setAttribute","addEventListener","forEach","el","typeEvent","push","window","removeEventListener"],"sourceRoot":""}
|
package/package.json
CHANGED
|
@@ -3,6 +3,20 @@
|
|
|
3
3
|
* MIT License - https://choosealicense.com/licenses/mit/
|
|
4
4
|
* Date: 2023-03-25
|
|
5
5
|
*/
|
|
6
|
+
/**
|
|
7
|
+
* Global
|
|
8
|
+
*/
|
|
9
|
+
declare global {
|
|
10
|
+
/** Events */
|
|
11
|
+
interface GlobalEventHandlersEventMap {
|
|
12
|
+
beforeShow: CustomEvent;
|
|
13
|
+
afterShow: CustomEvent;
|
|
14
|
+
beforeDestroy: CustomEvent;
|
|
15
|
+
afterDestroy: CustomEvent;
|
|
16
|
+
onCancelButton: CustomEvent;
|
|
17
|
+
onConfirmButton: CustomEvent;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
6
20
|
/**
|
|
7
21
|
* Options
|
|
8
22
|
*/
|
|
@@ -68,8 +82,11 @@ interface Options {
|
|
|
68
82
|
* Class WebcimesModal
|
|
69
83
|
*/
|
|
70
84
|
export declare class WebcimesModal {
|
|
85
|
+
/** Get the dom element containing all modals */
|
|
71
86
|
webcimesModals: HTMLElement;
|
|
87
|
+
/** Get the dom element of the current modal */
|
|
72
88
|
modal: HTMLElement;
|
|
89
|
+
/** Options of the current modal */
|
|
73
90
|
private options;
|
|
74
91
|
private eventCancelButton;
|
|
75
92
|
private eventConfirmButton;
|
|
@@ -90,12 +107,13 @@ export declare class WebcimesModal {
|
|
|
90
107
|
*/
|
|
91
108
|
constructor(options: Options);
|
|
92
109
|
/**
|
|
93
|
-
*
|
|
110
|
+
* Initialization of the current modal
|
|
94
111
|
*/
|
|
95
|
-
init
|
|
112
|
+
private init;
|
|
96
113
|
/**
|
|
97
|
-
* Destroy modal
|
|
114
|
+
* Destroy current modal
|
|
98
115
|
*/
|
|
99
116
|
destroy(): void;
|
|
100
117
|
}
|
|
101
118
|
export {};
|
|
119
|
+
//# sourceMappingURL=webcimes-modal.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"webcimes-modal.d.ts","sourceRoot":"","sources":["webcimes-modal.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH;;GAEG;AACH,UAAU,OAAO;IAChB,qDAAqD;IACrD,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,wDAAwD;IACxD,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,2CAA2C;IAC3C,KAAK,EAAE,MAAM,CAAC;IACd,4CAA4C;IAC5C,MAAM,EAAE,MAAM,CAAC;IACf,qCAAqC;IACrC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,oCAAoC;IACpC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,6CAA6C;IAC7C,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,8CAA8C;IAC9C,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,8DAA8D;IAC9D,mBAAmB,EAAE,OAAO,CAAC;IAC7B,+DAA+D;IAC/D,oBAAoB,EAAE,OAAO,CAAC;IAC9B,wCAAwC;IACxC,eAAe,EAAE,OAAO,CAAC;IACzB,oEAAoE;IACpE,iBAAiB,EAAE,OAAO,CAAC;IAC3B,4CAA4C;IAC5C,aAAa,EAAE,OAAO,CAAC;IACvB,2FAA2F;IAC3F,cAAc,EAAE,OAAO,CAAC;IACxB,0FAA0F;IAC1F,YAAY,EAAE,OAAO,CAAC;IACtB,2FAA2F;IAC3F,cAAc,EAAE,OAAO,CAAC;IACxB,kEAAkE;IAClE,YAAY,EAAE,OAAO,CAAC;IACtB,kEAAkE;IAClE,YAAY,EAAE,OAAO,CAAC;IACtB,iDAAiD;IACjD,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,gFAAgF;IAChF,eAAe,EAAE,cAAc,GAAG,YAAY,CAAC;IAC/C,gFAAgF;IAChF,kBAAkB,EAAE,YAAY,GAAG,aAAa,CAAC;IACjD,8CAA8C;IAC9C,iBAAiB,EAAE,MAAM,CAAC;IAC1B,iCAAiC;IACjC,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,gCAAgC;IAChC,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,oCAAoC;IACpC,aAAa,EAAE,MAAM,IAAI,CAAC;IAC1B,mCAAmC;IACnC,YAAY,EAAE,MAAM,IAAI,CAAC;IACzB,8CAA8C;IAC9C,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,+CAA+C;IAC/C,eAAe,EAAE,MAAM,IAAI,CAAC;CAC5B;AAED;;GAEG;AACH,qBAAa,aAAa;
|
|
1
|
+
{"version":3,"file":"webcimes-modal.d.ts","sourceRoot":"","sources":["webcimes-modal.ts"],"names":[],"mappings":"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"}
|
package/src/ts/webcimes-modal.ts
CHANGED
|
@@ -6,6 +6,21 @@
|
|
|
6
6
|
|
|
7
7
|
"use strict";
|
|
8
8
|
|
|
9
|
+
/**
|
|
10
|
+
* Global
|
|
11
|
+
*/
|
|
12
|
+
declare global {
|
|
13
|
+
/** Events */
|
|
14
|
+
interface GlobalEventHandlersEventMap {
|
|
15
|
+
beforeShow: CustomEvent;
|
|
16
|
+
afterShow: CustomEvent;
|
|
17
|
+
beforeDestroy: CustomEvent;
|
|
18
|
+
afterDestroy: CustomEvent;
|
|
19
|
+
onCancelButton: CustomEvent;
|
|
20
|
+
onConfirmButton: CustomEvent;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
|
|
9
24
|
/**
|
|
10
25
|
* Options
|
|
11
26
|
*/
|
|
@@ -73,23 +88,33 @@ interface Options {
|
|
|
73
88
|
*/
|
|
74
89
|
export class WebcimesModal
|
|
75
90
|
{
|
|
91
|
+
/** Get the dom element containing all modals */
|
|
76
92
|
public webcimesModals: HTMLElement;
|
|
93
|
+
|
|
94
|
+
/** Get the dom element of the current modal */
|
|
77
95
|
public modal: HTMLElement;
|
|
96
|
+
|
|
97
|
+
/** Options of the current modal */
|
|
78
98
|
private options: Options;
|
|
99
|
+
|
|
79
100
|
private eventCancelButton: () => void = () => {
|
|
80
101
|
// Callback on cancel button
|
|
102
|
+
this.modal.dispatchEvent(new CustomEvent("onCancelButton"));
|
|
81
103
|
if(typeof this.options.onCancelButton === 'function')
|
|
82
104
|
{
|
|
83
105
|
this.options.onCancelButton();
|
|
84
106
|
}
|
|
85
107
|
};
|
|
108
|
+
|
|
86
109
|
private eventConfirmButton: () => void = () => {
|
|
87
110
|
// Callback on confirm button
|
|
111
|
+
this.modal.dispatchEvent(new CustomEvent("onConfirmButton"));
|
|
88
112
|
if(typeof this.options.onConfirmButton === 'function')
|
|
89
113
|
{
|
|
90
114
|
this.options.onConfirmButton();
|
|
91
115
|
}
|
|
92
116
|
};
|
|
117
|
+
|
|
93
118
|
private eventClickOutside: (e: Event) => void = (e) => {
|
|
94
119
|
if(e.target == this.webcimesModals)
|
|
95
120
|
{
|
|
@@ -110,10 +135,12 @@ export class WebcimesModal
|
|
|
110
135
|
}
|
|
111
136
|
}
|
|
112
137
|
};
|
|
138
|
+
|
|
113
139
|
private eventClickCloseButton: () => void = () => {
|
|
114
140
|
// Destroy modal
|
|
115
141
|
this.destroy();
|
|
116
142
|
};
|
|
143
|
+
|
|
117
144
|
private eventDragModalOnTop: (e: Event) => void = (e) => {
|
|
118
145
|
// Only if target is not close button (for bug in chrome)
|
|
119
146
|
if(!(<HTMLElement>e.target).closest(".close"))
|
|
@@ -127,10 +154,15 @@ export class WebcimesModal
|
|
|
127
154
|
}
|
|
128
155
|
}
|
|
129
156
|
};
|
|
157
|
+
|
|
130
158
|
private position: {x: number, y: number};
|
|
159
|
+
|
|
131
160
|
private offset: {x: number, y: number};
|
|
161
|
+
|
|
132
162
|
private isDragging: boolean = false;
|
|
163
|
+
|
|
133
164
|
private moveFromElements: HTMLElement[] = [];
|
|
165
|
+
|
|
134
166
|
private eventDragStart: (e: Event) => void = (e) => {
|
|
135
167
|
// Start drag only if it's not a button
|
|
136
168
|
if(!(<HTMLElement>e.target).closest("button"))
|
|
@@ -155,6 +187,7 @@ export class WebcimesModal
|
|
|
155
187
|
}
|
|
156
188
|
}
|
|
157
189
|
};
|
|
190
|
+
|
|
158
191
|
private eventMove: (e: Event) => void = (e) => {
|
|
159
192
|
if(this.isDragging)
|
|
160
193
|
{
|
|
@@ -178,15 +211,18 @@ export class WebcimesModal
|
|
|
178
211
|
this.modal.style.top = (this.position.y + this.offset.y)+'px';
|
|
179
212
|
}
|
|
180
213
|
};
|
|
214
|
+
|
|
181
215
|
private eventDragStop: () => void = () => {
|
|
182
216
|
this.isDragging = false;
|
|
183
217
|
};
|
|
218
|
+
|
|
184
219
|
private eventPreventSelectText: (e: Event) => void = (e) => {
|
|
185
220
|
if(this.isDragging)
|
|
186
221
|
{
|
|
187
222
|
e.preventDefault();
|
|
188
223
|
}
|
|
189
224
|
};
|
|
225
|
+
|
|
190
226
|
private eventResize: () => void = () => {
|
|
191
227
|
this.modal.style.removeProperty("left");
|
|
192
228
|
this.modal.style.removeProperty("top");
|
|
@@ -236,9 +272,9 @@ export class WebcimesModal
|
|
|
236
272
|
}
|
|
237
273
|
|
|
238
274
|
/**
|
|
239
|
-
*
|
|
275
|
+
* Initialization of the current modal
|
|
240
276
|
*/
|
|
241
|
-
init()
|
|
277
|
+
private init()
|
|
242
278
|
{
|
|
243
279
|
// Create webcimesModals
|
|
244
280
|
if(!document.querySelector(".webcimesModals"))
|
|
@@ -288,14 +324,14 @@ export class WebcimesModal
|
|
|
288
324
|
);
|
|
289
325
|
this.modal = <HTMLElement>this.webcimesModals.lastElementChild;
|
|
290
326
|
|
|
291
|
-
// Callback before show modal
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
}
|
|
298
|
-
}
|
|
327
|
+
// Callback before show modal (set a timeout of zero, to wait for some dom to load)
|
|
328
|
+
setTimeout(() => {
|
|
329
|
+
this.modal.dispatchEvent(new CustomEvent("beforeShow"));
|
|
330
|
+
if(typeof this.options.beforeShow === 'function')
|
|
331
|
+
{
|
|
332
|
+
this.options.beforeShow();
|
|
333
|
+
}
|
|
334
|
+
}, 0);
|
|
299
335
|
|
|
300
336
|
// Set animation duration for modal
|
|
301
337
|
this.modal.style.setProperty("animation-duration", this.options.animationDuration+"ms");
|
|
@@ -305,6 +341,7 @@ export class WebcimesModal
|
|
|
305
341
|
this.modal.classList.remove(this.options.animationOnShow);
|
|
306
342
|
|
|
307
343
|
// Callback after show modal
|
|
344
|
+
this.modal.dispatchEvent(new CustomEvent("afterShow"));
|
|
308
345
|
if(typeof this.options.afterShow === 'function')
|
|
309
346
|
{
|
|
310
347
|
this.options.afterShow();
|
|
@@ -405,14 +442,15 @@ export class WebcimesModal
|
|
|
405
442
|
}
|
|
406
443
|
|
|
407
444
|
/**
|
|
408
|
-
* Destroy modal
|
|
445
|
+
* Destroy current modal
|
|
409
446
|
*/
|
|
410
|
-
destroy()
|
|
447
|
+
public destroy()
|
|
411
448
|
{
|
|
412
449
|
// If modal is not already destroying
|
|
413
450
|
if(!this.modal.getAttribute("data-destroying"))
|
|
414
451
|
{
|
|
415
452
|
// Callback before destroy modal
|
|
453
|
+
this.modal.dispatchEvent(new CustomEvent("beforeDestroy"));
|
|
416
454
|
if(typeof this.options.beforeDestroy === 'function')
|
|
417
455
|
{
|
|
418
456
|
this.options.beforeDestroy();
|
|
@@ -480,6 +518,7 @@ export class WebcimesModal
|
|
|
480
518
|
}
|
|
481
519
|
|
|
482
520
|
// Callback after destroy modal
|
|
521
|
+
this.modal.dispatchEvent(new CustomEvent("afterDestroy"));
|
|
483
522
|
if(typeof this.options.afterDestroy === 'function')
|
|
484
523
|
{
|
|
485
524
|
this.options.afterDestroy();
|
package/test/script.js
CHANGED
|
@@ -13,7 +13,11 @@ document.addEventListener("DOMContentLoaded", function()
|
|
|
13
13
|
});
|
|
14
14
|
|
|
15
15
|
document.querySelector(".modalBody")?.addEventListener("click", (e) => {
|
|
16
|
-
|
|
16
|
+
|
|
17
|
+
modal1.modal.addEventListener("afterDestroy", () => {
|
|
18
|
+
console.log("event");
|
|
19
|
+
});
|
|
20
|
+
|
|
17
21
|
new WebcimesModal({
|
|
18
22
|
titleHtml: "My title 2",
|
|
19
23
|
bodyHtml: "My Body 2",
|
package/tsconfig.json
CHANGED
|
@@ -4,11 +4,13 @@
|
|
|
4
4
|
"target": "ESNext",
|
|
5
5
|
"removeComments": false,
|
|
6
6
|
"declaration": true,
|
|
7
|
+
"declarationMap": true,
|
|
7
8
|
"sourceMap": true,
|
|
8
9
|
"noImplicitAny": true,
|
|
9
10
|
"strictNullChecks": true,
|
|
10
11
|
"allowSyntheticDefaultImports": true,
|
|
11
|
-
"esModuleInterop": true
|
|
12
|
+
"esModuleInterop": true,
|
|
13
|
+
"moduleResolution": "node",
|
|
12
14
|
},
|
|
13
15
|
"ts-node": {
|
|
14
16
|
"compilerOptions": {
|
package/webpack.config.ts
CHANGED
|
@@ -1,13 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
import path from 'path';
|
|
1
|
+
import path from "path";
|
|
4
2
|
import webpack from "webpack";
|
|
5
3
|
import TerserPlugin from "terser-webpack-plugin";
|
|
6
4
|
import MiniCssExtractPlugin from "mini-css-extract-plugin";
|
|
7
5
|
import CssMinimizerPlugin from "css-minimizer-webpack-plugin";
|
|
8
6
|
import RemovePlugin from "remove-files-webpack-plugin";
|
|
9
7
|
import TypescriptDeclarationPlugin from "typescript-declaration-webpack-plugin";
|
|
10
|
-
// const isProduction = process.env.NODE_ENV ==
|
|
8
|
+
// const isProduction = process.env.NODE_ENV == "production";
|
|
11
9
|
|
|
12
10
|
// Config UDM
|
|
13
11
|
const configUDM: webpack.Configuration = {
|
|
@@ -16,6 +14,12 @@ const configUDM: webpack.Configuration = {
|
|
|
16
14
|
entry: {
|
|
17
15
|
"webcimes-modal.udm": "./src/ts/webcimes-modal.ts",
|
|
18
16
|
},
|
|
17
|
+
output: {
|
|
18
|
+
filename: "js/[name].js",
|
|
19
|
+
path: path.resolve(__dirname, "dist"),
|
|
20
|
+
libraryTarget: "umd",
|
|
21
|
+
clean: false, // Clean the output directory before emit.
|
|
22
|
+
},
|
|
19
23
|
optimization: {
|
|
20
24
|
minimize: true,
|
|
21
25
|
minimizer: [
|
|
@@ -25,12 +29,6 @@ const configUDM: webpack.Configuration = {
|
|
|
25
29
|
}),
|
|
26
30
|
],
|
|
27
31
|
},
|
|
28
|
-
output: {
|
|
29
|
-
filename: "js/[name].js",
|
|
30
|
-
path: path.resolve(__dirname, "dist"),
|
|
31
|
-
libraryTarget: "umd",
|
|
32
|
-
clean: false, // Clean the output directory before emit.
|
|
33
|
-
},
|
|
34
32
|
module: {
|
|
35
33
|
rules: [
|
|
36
34
|
{
|