@fiscozen/dialog 0.1.25 → 0.1.26
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/CHANGELOG.md +13 -0
- package/dist/dialog.js +1556 -0
- package/dist/dialog.umd.cjs +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/src/FzConfirmDialog.vue.d.ts +66 -0
- package/dist/src/FzDialog.vue.d.ts +50 -0
- package/dist/src/index.d.ts +3 -0
- package/dist/src/types.d.ts +82 -0
- package/dist/style.css +1 -0
- package/package.json +7 -8
- package/src/__tests__/FzDialog.spec.ts +1191 -0
- package/src/__tests__/__snapshots__/FzDialog.spec.ts.snap +13 -0
- package/tsconfig.tsbuildinfo +1 -1
- package/vitest.config.ts +9 -1
- package/src/__test__/FzDialog.test.ts +0 -66
- package/src/__test__/__snapshots__/FzDialog.test.ts.snap +0 -211
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(function(f,a){typeof exports=="object"&&typeof module<"u"?a(exports,require("vue"),require("@fiscozen/button")):typeof define=="function"&&define.amd?define(["exports","vue","@fiscozen/button"],a):(f=typeof globalThis<"u"?globalThis:f||self,a(f.FzDialog={},f.Vue,f.button))})(this,function(f,a,S){"use strict";new DOMRect(0,0,window.innerWidth,window.innerHeight);function I(e,t,o){if(!e)throw new Error("A target component has to be provided.");if(!t)throw new Error("A callback has to be provided.");const l=n=>{!e.value||n.target===e.value||n.composedPath().includes(e.value)||typeof t=="function"&&t()};o&&a.watch(o,(n,r)=>{r&&r.removeEventListener("click",l),n==null||n.addEventListener("click",l)}),a.onMounted(()=>{o||document.addEventListener("click",l)}),a.onBeforeUnmount(()=>{var n;if(o){(n=o.value)==null||n.removeEventListener("click",l);return}document.removeEventListener("click",l)})}function P(e,t){if(!e||typeof e!="function")throw new Error("A callback has to be provided.");const o=l=>{e(l)};a.onMounted(()=>{{document.addEventListener("keyup",o);return}}),a.onBeforeUnmount(()=>{{document.removeEventListener("keyup",o);return}})}const k={global:{blue:{50:{value:"#eff1ff",type:"color"},100:{value:"#dee2ff",type:"color"},200:{value:"#bdc5ff",type:"color"},300:{value:"#9ca8ff",type:"color"},400:{value:"#7b8bff",type:"color"},500:{value:"#5a6eff",type:"color"},600:{value:"#4858cc",type:"color"},700:{value:"#364299",type:"color"},800:{value:"#242c66",type:"color"},900:{value:"#1b214c",type:"color"}},purple:{50:{value:"#f8f4ff",type:"color"},100:{value:"#f0e9ff",type:"color"},200:{value:"#e1d3ff",type:"color"},300:{value:"#d2bdff",type:"color"},400:{value:"#c3a7ff",type:"color"},500:{value:"#b491ff",type:"color"},600:{value:"#9074cc",type:"color"},700:{value:"#6c5799",type:"color"},800:{value:"#483a66",type:"color"},900:{value:"#241d33",type:"color"}},orange:{50:{value:"#fff2ef",type:"color"},100:{value:"#ffe4de",type:"color"},200:{value:"#ffc9bd",type:"color"},300:{value:"#ffae9c",type:"color"},400:{value:"#ff937b",type:"color"},500:{value:"#ff785a",type:"color"},600:{value:"#cc6048",type:"color"},700:{value:"#994836",type:"color"},800:{value:"#663024",type:"color"},900:{value:"#331812",type:"color"}},pink:{50:{value:"#fff5f5",type:"color"},100:{value:"#ffe0e0",type:"color"},200:{value:"#ffcbcb",type:"color"},300:{value:"#ffc0c0",type:"color"},400:{value:"#ffabab",type:"color"},500:{value:"#ff9696",type:"color"},600:{value:"#cc7878",type:"color"},700:{value:"#995a5a",type:"color"},800:{value:"#663c3c",type:"color"},900:{value:"#331e1e",type:"color"}},yellow:{50:{value:"#fffbf4",type:"color"},100:{value:"#fff3de",type:"color"},200:{value:"#ffebc8",type:"color"},300:{value:"#ffe7bd",type:"color"},400:{value:"#ffdfa7",type:"color"},500:{value:"#ffd791",type:"color"},600:{value:"#ccac74",type:"color"},700:{value:"#998157",type:"color"},800:{value:"#806c49",type:"color"},900:{value:"#4c402b",type:"color"}},semantic:{error:{50:{value:"#fef3f3",type:"color"},100:{value:"#f8baba",type:"color"},200:{value:"#f04242",type:"color"},300:{value:"#aa2f2f",type:"color"}},warning:{50:{value:"#fff8f3",type:"color"},100:{value:"#ffdabd",type:"color"},200:{value:"#ffae4f",type:"color"},300:{value:"#b47b38",type:"color"}},success:{50:{value:"#f2f8f6",type:"color"},100:{value:"#b5d8ce",type:"color"},200:{value:"#0fa88c",type:"color"},300:{value:"#0b7763",type:"color"}},info:{50:{value:"#f3f7ff",type:"color"},100:{value:"#b4c8e1",type:"color"},200:{value:"#4e9fff",type:"color"},300:{value:"#3770b4",type:"color"}}},background:{"white-smoke":{value:"#f7f6f3",type:"color"},seashell:{value:"#f8ece7",type:"color"},"pale-purple":{value:"#f2e6ff",type:"color"},"alice-blue":{value:"#ecf2fc",type:"color"}},grey:{100:{value:"#e9edf0",type:"color"},200:{value:"#d1dde6",type:"color"},300:{value:"#9da9b2",type:"color"},400:{value:"#6e777e",type:"color"},500:{value:"#596167",type:"color"}},core:{white:{value:"#ffffff",type:"color"},black:{value:"#2c282f",type:"color"}},"font-sans":{"sharp-grotesk":{value:'"Sharp Grotesk", sans-serif',type:"fontFamilies"},inter:{value:'"Inter", sans-serif',type:"fontFamilies"}},font:{light:{value:"300",type:"fontWeights"},normal:{value:"400",type:"fontWeights"},medium:{value:"500",type:"fontWeights"}},spacing:{0:{value:"0px",type:"spacing"},1:{value:"1px",type:"spacing"},2:{value:"2px",type:"spacing"},4:{value:"4px",type:"spacing"},6:{value:"6px",type:"spacing"},8:{value:"8px",type:"spacing"},10:{value:"10px",type:"spacing"},12:{value:"12px",type:"spacing"},14:{value:"14px",type:"spacing"},16:{value:"16px",type:"spacing"},20:{value:"20px",type:"spacing"},24:{value:"24px",type:"spacing"},28:{value:"28px",type:"spacing"},32:{value:"32px",type:"spacing"},36:{value:"36px",type:"spacing"},40:{value:"40px",type:"spacing"},44:{value:"44px",type:"spacing"},48:{value:"48px",type:"spacing"},56:{value:"56px",type:"spacing"},64:{value:"64px",type:"spacing"},80:{value:"80px",type:"spacing"},96:{value:"96px",type:"spacing"},112:{value:"112px",type:"spacing"},128:{value:"128px",type:"spacing"},144:{value:"144px",type:"spacing"},160:{value:"160px",type:"spacing"},176:{value:"176px",type:"spacing"},192:{value:"192px",type:"spacing"},208:{value:"208px",type:"spacing"},224:{value:"224px",type:"spacing"},240:{value:"240px",type:"spacing"},256:{value:"256px",type:"spacing"},288:{value:"288px",type:"spacing"},320:{value:"320px",type:"spacing"},384:{value:"384px",type:"spacing"}},border:{0:{value:"0px",type:"borderWidth"},1:{value:"1px",type:"borderWidth"},2:{value:"2px",type:"borderWidth"},4:{value:"4px",type:"borderWidth"},8:{value:"8px",type:"borderWidth"}},rounded:{none:{value:"0px",type:"borderRadius"},sm:{value:"2px",type:"borderRadius"},base:{value:"4px",type:"borderRadius"},md:{value:"6px",type:"borderRadius"},lg:{value:"8px",type:"borderRadius"},xl:{value:"12px",type:"borderRadius"},"2xl":{value:"16px",type:"borderRadius"},"3xl":{value:"24px",type:"borderRadius"},full:{value:"9999px",type:"borderRadius"}},breakpoint:{xs:{value:"376px",type:"sizing"},sm:{value:"640px",type:"sizing"},md:{value:"768px",type:"sizing"},lg:{value:"1024px",type:"sizing"},xl:{value:"1280px",type:"sizing"},"2xl":{value:"1440px",type:"sizing"},"3xl":{value:"1536px",type:"sizing"}},shadow:{none:{value:{color:"#000000",type:"dropShadow",x:"0",y:"0",blur:"0",spread:"0"},type:"boxShadow"},sm:{value:{color:"#0000000d",type:"dropShadow",x:"0",y:"1",blur:"2",spread:"0"},type:"boxShadow"},base:{value:[{color:"#0000000f",type:"dropShadow",x:"0",y:"1",blur:"2",spread:"0"},{color:"#0000001a",type:"dropShadow",x:"0",y:"1",blur:"3",spread:"0"}],type:"boxShadow"},md:{value:[{color:"#0000000f",type:"dropShadow",x:"0",y:"2",blur:"4",spread:"-1"},{color:"#0000001a",type:"dropShadow",x:"0",y:"4",blur:"6",spread:"-1"}],type:"boxShadow"},lg:{value:[{color:"#0000000d",type:"dropShadow",x:"0",y:"4",blur:"6",spread:"-2"},{color:"#0000001a",type:"dropShadow",x:"0",y:"10",blur:"15",spread:"-3"}],type:"boxShadow"},xl:{value:[{color:"#0000000a",type:"dropShadow",x:"0",y:"10",blur:"10",spread:"-5"},{color:"#0000001a",type:"dropShadow",x:"0",y:"20",blur:"25",spread:"-5"}],type:"boxShadow"},"2xl":{value:{color:"#00000040",type:"dropShadow",x:"0",y:"25",blur:"50",spread:"-12"},type:"boxShadow"},inner:{value:{color:"#0000000f",type:"innerShadow",x:"0",y:"2",blur:"4",spread:"0"},type:"boxShadow"}},underline:{value:"underline",type:"textDecoration"},text:{xs:{value:"12px",type:"fontSizes"},sm:{value:"14px",type:"fontSizes"},base:{value:"16px",type:"fontSizes"},lg:{value:"18px",type:"fontSizes"},xl:{value:"20px",type:"fontSizes"},"2xl":{value:"24px",type:"fontSizes"},"3xl":{value:"30px",type:"fontSizes"},"4xl":{value:"36px",type:"fontSizes"},"5xl":{value:"48px",type:"fontSizes"},"6xl":{value:"60px",type:"fontSizes"},"7xl":{value:"72px",type:"fontSizes"},"8xl":{value:"96px",type:"fontSizes"},"9xl":{value:"128px",type:"fontSizes"}},leading:{xs:{value:"16px",type:"lineHeights"},sm:{value:"18px",type:"lineHeights"},base:{value:"20px",type:"lineHeights"},lg:{value:"24px",type:"lineHeights"},xl:{value:"28px",type:"lineHeights"},"2xl":{value:"32px",type:"lineHeights"},"3xl":{value:"36px",type:"lineHeights"},"4xl":{value:"40px",type:"lineHeights"},"5xl":{value:"48px",type:"lineHeights"},"6xl":{value:"60px",type:"lineHeights"},"7xl":{value:"72px",type:"lineHeights"},"8xl":{value:"96px",type:"lineHeights"},"9xl":{value:"128px",type:"lineHeights"}}}},V={safeColorNames:["blue","purple","orange","pink","yellow","grey","core"]},j={semanticColorNames:["error","warning","success","info"]},$=V.safeColorNames,K=j.semanticColorNames,y={};$.forEach(e=>{const t=k.global[e];t&&Object.keys(t).forEach(o=>{var n;const l=(n=t[o])==null?void 0:n.value;l&&(y[e]||(y[e]={}),y[e][o]=l)})});const z=k.global.semantic;z&&K.forEach(e=>{const t=z[e];t&&typeof t=="object"&&Object.keys(t).forEach(o=>{var n;const l=(n=t[o])==null?void 0:n.value;if(l){const r=`semantic-${e}`;y[r]||(y[r]={}),y[r][o]=l}})}),Object.entries(k.global.breakpoint).reduce((e,[t,o])=>(e[t]=o.value,e),{});var m=window.CustomEvent;(!m||typeof m=="object")&&(m=function(t,o){o=o||{};var l=document.createEvent("CustomEvent");return l.initCustomEvent(t,!!o.bubbles,!!o.cancelable,o.detail||null),l},m.prototype=window.Event.prototype);function N(e,t){var o="on"+t.type.toLowerCase();return typeof e[o]=="function"&&e[o](t),e.dispatchEvent(t)}function U(e){for(;e&&e!==document.body;){var t=window.getComputedStyle(e),o=function(l,n){return!(t[l]===void 0||t[l]===n)};if(t.opacity<1||o("zIndex","auto")||o("transform","none")||o("mixBlendMode","normal")||o("filter","none")||o("perspective","none")||t.isolation==="isolate"||t.position==="fixed"||t.webkitOverflowScrolling==="touch")return!0;e=e.parentElement}return!1}function g(e){for(;e;){if(e.localName==="dialog")return e;e.parentElement?e=e.parentElement:e.parentNode?e=e.parentNode.host:e=null}return null}function B(e){for(;e&&e.shadowRoot&&e.shadowRoot.activeElement;)e=e.shadowRoot.activeElement;e&&e.blur&&e!==document.body&&e.blur()}function W(e,t){for(var o=0;o<e.length;++o)if(e[o]===t)return!0;return!1}function C(e){return!e||!e.hasAttribute("method")?!1:e.getAttribute("method").toLowerCase()==="dialog"}function O(e){var t=["button","input","keygen","select","textarea"],o=t.map(function(s){return s+":not([disabled])"});o.push('[tabindex]:not([disabled]):not([tabindex=""])');var l=e.querySelector(o.join(", "));if(!l&&"attachShadow"in Element.prototype)for(var n=e.querySelectorAll("*"),r=0;r<n.length&&!(n[r].tagName&&n[r].shadowRoot&&(l=O(n[r].shadowRoot),l));r++);return l}function A(e){return e.isConnected||document.body.contains(e)}function L(e){if(e.submitter)return e.submitter;var t=e.target;if(!(t instanceof HTMLFormElement))return null;var o=i.formSubmitter;if(!o){var l=e.target,n="getRootNode"in l&&l.getRootNode()||document;o=n.activeElement}return!o||o.form!==t?null:o}function q(e){if(!e.defaultPrevented){var t=e.target,o=i.imagemapUseValue,l=L(e);o===null&&l&&(o=l.value);var n=g(t);if(n){var r=l&&l.getAttribute("formmethod")||t.getAttribute("method");r==="dialog"&&(e.preventDefault(),o!=null?n.close(o):n.close())}}}function T(e){if(this.dialog_=e,this.replacedStyleTop_=!1,this.openAsModal_=!1,e.hasAttribute("role")||e.setAttribute("role","dialog"),e.show=this.show.bind(this),e.showModal=this.showModal.bind(this),e.close=this.close.bind(this),e.addEventListener("submit",q,!1),"returnValue"in e||(e.returnValue=""),"MutationObserver"in window){var t=new MutationObserver(this.maybeHideModal.bind(this));t.observe(e,{attributes:!0,attributeFilter:["open"]})}else{var o=!1,l=(function(){o?this.downgradeModal():this.maybeHideModal(),o=!1}).bind(this),n,r=function(s){if(s.target===e){var u="DOMNodeRemoved";o|=s.type.substr(0,u.length)===u,window.clearTimeout(n),n=window.setTimeout(l,0)}};["DOMAttrModified","DOMNodeRemoved","DOMNodeRemovedFromDocument"].forEach(function(s){e.addEventListener(s,r)})}Object.defineProperty(e,"open",{set:this.setOpen.bind(this),get:e.hasAttribute.bind(e,"open")}),this.backdrop_=document.createElement("div"),this.backdrop_.className="backdrop",this.backdrop_.addEventListener("mouseup",this.backdropMouseEvent_.bind(this)),this.backdrop_.addEventListener("mousedown",this.backdropMouseEvent_.bind(this)),this.backdrop_.addEventListener("click",this.backdropMouseEvent_.bind(this))}T.prototype={get dialog(){return this.dialog_},maybeHideModal:function(){this.dialog_.hasAttribute("open")&&A(this.dialog_)||this.downgradeModal()},downgradeModal:function(){this.openAsModal_&&(this.openAsModal_=!1,this.dialog_.style.zIndex="",this.replacedStyleTop_&&(this.dialog_.style.top="",this.replacedStyleTop_=!1),this.backdrop_.parentNode&&this.backdrop_.parentNode.removeChild(this.backdrop_),i.dm.removeDialog(this))},setOpen:function(e){e?this.dialog_.hasAttribute("open")||this.dialog_.setAttribute("open",""):(this.dialog_.removeAttribute("open"),this.maybeHideModal())},backdropMouseEvent_:function(e){if(this.dialog_.hasAttribute("tabindex"))this.dialog_.focus();else{var t=document.createElement("div");this.dialog_.insertBefore(t,this.dialog_.firstChild),t.tabIndex=-1,t.focus(),this.dialog_.removeChild(t)}var o=document.createEvent("MouseEvents");o.initMouseEvent(e.type,e.bubbles,e.cancelable,window,e.detail,e.screenX,e.screenY,e.clientX,e.clientY,e.ctrlKey,e.altKey,e.shiftKey,e.metaKey,e.button,e.relatedTarget),this.dialog_.dispatchEvent(o),e.stopPropagation()},focus_:function(){var e=this.dialog_.querySelector("[autofocus]:not([disabled])");!e&&this.dialog_.tabIndex>=0&&(e=this.dialog_),e||(e=O(this.dialog_)),B(document.activeElement),e&&e.focus()},updateZIndex:function(e,t){if(e<t)throw new Error("dialogZ should never be < backdropZ");this.dialog_.style.zIndex=e,this.backdrop_.style.zIndex=t},show:function(){this.dialog_.open||(this.setOpen(!0),this.focus_())},showModal:function(){if(this.dialog_.hasAttribute("open"))throw new Error("Failed to execute 'showModal' on dialog: The element is already open, and therefore cannot be opened modally.");if(!A(this.dialog_))throw new Error("Failed to execute 'showModal' on dialog: The element is not in a Document.");if(!i.dm.pushDialog(this))throw new Error("Failed to execute 'showModal' on dialog: There are too many open modal dialogs.");U(this.dialog_.parentElement)&&console.warn("A dialog is being shown inside a stacking context. This may cause it to be unusable. For more information, see this link: https://github.com/GoogleChrome/dialog-polyfill/#stacking-context"),this.setOpen(!0),this.openAsModal_=!0,i.needsCentering(this.dialog_)?(i.reposition(this.dialog_),this.replacedStyleTop_=!0):this.replacedStyleTop_=!1,this.dialog_.parentNode.insertBefore(this.backdrop_,this.dialog_.nextSibling),this.focus_()},close:function(e){if(!this.dialog_.hasAttribute("open"))throw new Error("Failed to execute 'close' on dialog: The element does not have an 'open' attribute, and therefore cannot be closed.");this.setOpen(!1),e!==void 0&&(this.dialog_.returnValue=e);var t=new m("close",{bubbles:!1,cancelable:!1});N(this.dialog_,t)}};var i={};if(i.reposition=function(e){var t=document.body.scrollTop||document.documentElement.scrollTop,o=t+(window.innerHeight-e.offsetHeight)/2;e.style.top=Math.max(t,o)+"px"},i.isInlinePositionSetByStylesheet=function(e){for(var t=0;t<document.styleSheets.length;++t){var o=document.styleSheets[t],l=null;try{l=o.cssRules}catch{}if(l)for(var n=0;n<l.length;++n){var r=l[n],s=null;try{s=document.querySelectorAll(r.selectorText)}catch{}if(!(!s||!W(s,e))){var u=r.style.getPropertyValue("top"),p=r.style.getPropertyValue("bottom");if(u&&u!=="auto"||p&&p!=="auto")return!0}}}return!1},i.needsCentering=function(e){var t=window.getComputedStyle(e);return t.position!=="absolute"||e.style.top!=="auto"&&e.style.top!==""||e.style.bottom!=="auto"&&e.style.bottom!==""?!1:!i.isInlinePositionSetByStylesheet(e)},i.forceRegisterDialog=function(e){if((window.HTMLDialogElement||e.showModal)&&console.warn("This browser already supports <dialog>, the polyfill may not work correctly",e),e.localName!=="dialog")throw new Error("Failed to register dialog: The element is not a dialog.");new T(e)},i.registerDialog=function(e){e.showModal||i.forceRegisterDialog(e)},i.DialogManager=function(){this.pendingDialogStack=[];var e=this.checkDOM_.bind(this);this.overlay=document.createElement("div"),this.overlay.className="_dialog_overlay",this.overlay.addEventListener("click",(function(t){this.forwardTab_=void 0,t.stopPropagation(),e([])}).bind(this)),this.handleKey_=this.handleKey_.bind(this),this.handleFocus_=this.handleFocus_.bind(this),this.zIndexLow_=1e5,this.zIndexHigh_=100150,this.forwardTab_=void 0,"MutationObserver"in window&&(this.mo_=new MutationObserver(function(t){var o=[];t.forEach(function(l){for(var n=0,r;r=l.removedNodes[n];++n){if(r instanceof Element)r.localName==="dialog"&&o.push(r);else continue;o=o.concat(r.querySelectorAll("dialog"))}}),o.length&&e(o)}))},i.DialogManager.prototype.blockDocument=function(){document.documentElement.addEventListener("focus",this.handleFocus_,!0),document.addEventListener("keydown",this.handleKey_),this.mo_&&this.mo_.observe(document,{childList:!0,subtree:!0})},i.DialogManager.prototype.unblockDocument=function(){document.documentElement.removeEventListener("focus",this.handleFocus_,!0),document.removeEventListener("keydown",this.handleKey_),this.mo_&&this.mo_.disconnect()},i.DialogManager.prototype.updateStacking=function(){for(var e=this.zIndexHigh_,t=0,o;o=this.pendingDialogStack[t];++t)o.updateZIndex(--e,--e),t===0&&(this.overlay.style.zIndex=--e);var l=this.pendingDialogStack[0];if(l){var n=l.dialog.parentNode||document.body;n.appendChild(this.overlay)}else this.overlay.parentNode&&this.overlay.parentNode.removeChild(this.overlay)},i.DialogManager.prototype.containedByTopDialog_=function(e){for(;e=g(e);){for(var t=0,o;o=this.pendingDialogStack[t];++t)if(o.dialog===e)return t===0;e=e.parentElement}return!1},i.DialogManager.prototype.handleFocus_=function(e){var t=e.composedPath?e.composedPath()[0]:e.target;if(!this.containedByTopDialog_(t)&&document.activeElement!==document.documentElement&&(e.preventDefault(),e.stopPropagation(),B(t),this.forwardTab_!==void 0)){var o=this.pendingDialogStack[0],l=o.dialog,n=l.compareDocumentPosition(t);return n&Node.DOCUMENT_POSITION_PRECEDING&&(this.forwardTab_?o.focus_():t!==document.documentElement&&document.documentElement.focus()),!1}},i.DialogManager.prototype.handleKey_=function(e){if(this.forwardTab_=void 0,e.keyCode===27){e.preventDefault(),e.stopPropagation();var t=new m("cancel",{bubbles:!1,cancelable:!0}),o=this.pendingDialogStack[0];o&&N(o.dialog,t)&&o.dialog.close()}else e.keyCode===9&&(this.forwardTab_=!e.shiftKey)},i.DialogManager.prototype.checkDOM_=function(e){var t=this.pendingDialogStack.slice();t.forEach(function(o){e.indexOf(o.dialog)!==-1?o.downgradeModal():o.maybeHideModal()})},i.DialogManager.prototype.pushDialog=function(e){var t=(this.zIndexHigh_-this.zIndexLow_)/2-1;return this.pendingDialogStack.length>=t?!1:(this.pendingDialogStack.unshift(e)===1&&this.blockDocument(),this.updateStacking(),!0)},i.DialogManager.prototype.removeDialog=function(e){var t=this.pendingDialogStack.indexOf(e);t!==-1&&(this.pendingDialogStack.splice(t,1),this.pendingDialogStack.length===0&&this.unblockDocument(),this.updateStacking())},i.dm=new i.DialogManager,i.formSubmitter=null,i.imagemapUseValue=null,window.HTMLDialogElement===void 0){var H=document.createElement("form");if(H.setAttribute("method","dialog"),H.method!=="dialog"){var v=Object.getOwnPropertyDescriptor(HTMLFormElement.prototype,"method");if(v){var G=v.get;v.get=function(){return C(this)?"dialog":G.call(this)};var X=v.set;v.set=function(e){return typeof e=="string"&&e.toLowerCase()==="dialog"?this.setAttribute("method",e):X.call(this,e)},Object.defineProperty(HTMLFormElement.prototype,"method",v)}}document.addEventListener("click",function(e){if(i.formSubmitter=null,i.imagemapUseValue=null,!e.defaultPrevented){var t=e.target;if("composedPath"in e){var o=e.composedPath();t=o.shift()||t}if(!(!t||!C(t.form))){var l=t.type==="submit"&&["button","input"].indexOf(t.localName)>-1;if(!l){if(!(t.localName==="input"&&t.type==="image"))return;i.imagemapUseValue=e.offsetX+","+e.offsetY}var n=g(t);n&&(i.formSubmitter=t)}}},!1),document.addEventListener("submit",function(e){var t=e.target,o=g(t);if(!o){var l=L(e),n=l&&l.getAttribute("formmethod")||t.getAttribute("method");n==="dialog"&&e.preventDefault()}});var Y=HTMLFormElement.prototype.submit,Z=function(){if(!C(this))return Y.call(this);var e=g(this);e&&e.close()};HTMLFormElement.prototype.submit=Z}const J={class:"flex items-center p-12 w-full border-b-1 border-grey-100 border-solid"},Q={key:0,class:"flex flex-row p-12 border-t-1 border-grey-100 items-center border-solid"},ee="flex flex-col bg-core-white",te="border-1 rounded border-grey-100 p-0 z-[42] top-0 bottom-0",F=((e,t)=>{const o=e.__vccOpts||e;for(const[l,n]of t)o[l]=n;return o})(a.defineComponent({__name:"FzDialog",props:{size:{default:"md"},title:{},confirmLabel:{},cancelLabel:{},text:{},isDrawer:{type:Boolean},closeOnBackdrop:{type:Boolean,default:!0},closeOnEscape:{type:Boolean,default:!0},bodyClasses:{},shouldAlwaysRender:{type:Boolean}},emits:["fzmodal:cancel"],setup(e,{expose:t,emit:o}){const l=e,n=o,r=a.ref(),s=a.ref(),u=a.ref(),p=a.ref(!1),h=a.ref(!1);function b(){var d;(d=r.value)==null||d.style.setProperty("--innerHeight",`${window.innerHeight}px`)}function w(){b(),i.registerDialog(r.value),r.value.show(),p.value=!0}a.onMounted(()=>{window.addEventListener("resize",b)}),a.onUnmounted(()=>{window.removeEventListener("resize",b)});const D=()=>{l.shouldAlwaysRender?w():h.value=!0},x=d=>{var M;(M=r.value)==null||M.close(d)};function E(){p.value=!1,l.shouldAlwaysRender||(h.value=!1)}a.watch(r,d=>{d&&h.value&&w()}),t({show:D,close:x,visible:p}),I(u,()=>{l.closeOnBackdrop&&(r.value.close(),n("fzmodal:cancel"))},s),P(d=>{!p.value||d.key!=="Escape"||!l.closeOnEscape||(r.value.close(),n("fzmodal:cancel"))});const _=a.computed(()=>{if(l.isDrawer)return"m-0 fixed top-0 ml-auto max-h-screen";switch(l.size){case"md":return"xs:max-sm:m-0 xs:max-sm:max-h-screen xs:max-sm:h-dvh xs:max-sm:w-dvw xs:max-sm:max-w-screen-xl";case"lg":return"xs:max-md:m-0 xs:max-md:max-h-screen xs:max-md:h-dvh xs:max-md:w-dvw xs:max-md:max-w-screen-xl";case"xl":return"xs:max-xl:m-0 xs:max-xl:max-h-screen xs:max-xl:h-dvh xs:max-xl:w-dvw xs:max-xl:max-w-screen-xl"}}),R=a.computed(()=>{if(l.isDrawer)return"w-[480px] h-dvh";switch(l.size){case"sm":return"w-[320px] min-h-[200px] max-h-[432px]";case"md":return"w-dvw sm:w-[480px] min-h-[300px] sm:max-h-[600px] h-dvh sm:h-auto";case"lg":return"w-dvw md:w-[640px] min-h-[300px] md:max-h-[600px] h-dvh md:h-auto";case"xl":return"w-dvw xl:w-[960px] min-h-[400px] xl:max-h-[600px] h-dvh xl:h-auto"}});return(d,M)=>h.value||e.shouldAlwaysRender?a.withDirectives((a.openBlock(),a.createElementBlock("div",{key:0,ref_key:"backdrop",ref:s,class:"fz-dialog__backdrop w-screen h-screen fixed flex flex-col items-center justify-start sm:justify-center z-20"},[a.createElementVNode("dialog",{ref_key:"dialog",ref:r,onClose:E,class:a.normalizeClass([te,_.value])},[a.createElementVNode("div",{ref_key:"innerDialog",ref:u,class:a.normalizeClass([ee,R.value])},[a.createElementVNode("div",J,[a.renderSlot(d.$slots,"header",{},void 0,!0)]),a.createElementVNode("div",{class:a.normalizeClass(["grow p-12 overflow-auto",e.bodyClasses])},[a.renderSlot(d.$slots,"body",{},void 0,!0)],2),d.$slots.footer?(a.openBlock(),a.createElementBlock("div",Q,[a.renderSlot(d.$slots,"footer",{},void 0,!0)])):a.createCommentVNode("",!0)],2)],34)],512)),[[a.vShow,p.value]]):a.createCommentVNode("",!0)}}),[["__scopeId","data-v-ba12262d"]]),oe={class:"grow h-28 font-medium"},ae={method:"dialog",class:"w-full h-full"},le=a.defineComponent({__name:"FzConfirmDialog",props:{size:{default:"md"},title:{},confirmLabel:{},cancelLabel:{},text:{},isDrawer:{type:Boolean},closeOnBackdrop:{type:Boolean},closeOnEscape:{type:Boolean},bodyClasses:{},shouldAlwaysRender:{type:Boolean},footerEnabled:{type:Boolean,default:!0},cancelButtonEnabled:{type:Boolean,default:!0},disableConfirm:{type:Boolean,default:!1},confirmButtonEnabled:{type:Boolean,default:!0},confirmButtonVariant:{},doesConfirmButtonCloseDialog:{type:Boolean,default:!0},doesCancelButtonCloseDialog:{type:Boolean,default:!0},footerClasses:{}},emits:["fzmodal:confirm","fzmodal:cancel"],setup(e,{expose:t,emit:o}){const l=e,n=o,r=a.ref(),s=a.ref(!1),u=["flex flex-row items-center text-xl grow"],p=a.computed(()=>({"h-32":l.isDrawer,"h-28":!l.isDrawer})),h=["flex flex-row items-center h-32 grow justify-end"],b={"h-32":!l.isDrawer,"h-40":l.isDrawer},w=()=>{var c;(c=r.value)==null||c.show(),s.value=!0},D=()=>{var c;(c=r.value)==null||c.close(),s.value=!1},x=()=>{var c;l.doesCancelButtonCloseDialog&&((c=r.value)==null||c.close(),s.value=!1),n("fzmodal:cancel")},E=()=>{var c;l.doesConfirmButtonCloseDialog&&((c=r.value)==null||c.close(),s.value=!1),n("fzmodal:confirm")};return t({handleCancel:x,handleConfirm:E,visible:s,show:w,close:D}),(c,_)=>(a.openBlock(),a.createBlock(F,a.mergeProps(l,{ref_key:"dialog",ref:r,"onFzmodal:cancel":_[0]||(_[0]=R=>n("fzmodal:cancel"))}),a.createSlots({header:a.withCtx(()=>[a.renderSlot(c.$slots,"header",{},()=>[a.createElementVNode("div",{class:a.normalizeClass([u,p.value])},[a.createElementVNode("div",oe,a.toDisplayString(e.title),1),a.createVNode(a.unref(S.FzIconButton),{onClick:x,class:"ml-12",iconName:"xmark-large",size:"sm",variant:"invisible"})],2)])]),body:a.withCtx(()=>[a.renderSlot(c.$slots,"body")]),_:2},[e.footerEnabled?{name:"footer",fn:a.withCtx(()=>[a.renderSlot(c.$slots,"footer",{},()=>[a.createElementVNode("form",ae,[a.createElementVNode("div",{class:a.normalizeClass([h,b,e.footerClasses])},[e.cancelButtonEnabled?(a.openBlock(),a.createBlock(a.unref(S.FzButton),{key:0,variant:"invisible",onClick:a.withModifiers(x,["prevent"]),value:"false"},{default:a.withCtx(()=>[a.createTextVNode(a.toDisplayString(e.cancelLabel),1)]),_:1})):a.createCommentVNode("",!0),e.confirmButtonEnabled?(a.openBlock(),a.createBlock(a.unref(S.FzButton),{key:1,class:"ml-12",onClick:a.withModifiers(E,["prevent"]),disabled:e.disableConfirm,value:"true",variant:e.confirmButtonVariant},{default:a.withCtx(()=>[a.createTextVNode(a.toDisplayString(e.confirmLabel),1)]),_:1},8,["disabled","variant"])):a.createCommentVNode("",!0)],2)])])]),key:"0"}:void 0]),1040))}});f.FzConfirmDialog=le,f.FzDialog=F,Object.defineProperty(f,Symbol.toStringTag,{value:"Module"})});
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './src/index'
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { FzConfirmDialogProps } from './types';
|
|
2
|
+
|
|
3
|
+
declare const _default: __VLS_WithTemplateSlots<import('vue').DefineComponent<import('vue').ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<FzConfirmDialogProps>, {
|
|
4
|
+
size: string;
|
|
5
|
+
footerEnabled: boolean;
|
|
6
|
+
cancelButtonEnabled: boolean;
|
|
7
|
+
disableConfirm: boolean;
|
|
8
|
+
confirmButtonEnabled: boolean;
|
|
9
|
+
doesCancelButtonCloseDialog: boolean;
|
|
10
|
+
doesConfirmButtonCloseDialog: boolean;
|
|
11
|
+
}>>, {
|
|
12
|
+
handleCancel: () => void;
|
|
13
|
+
handleConfirm: () => void;
|
|
14
|
+
visible: import('vue').Ref<boolean, boolean>;
|
|
15
|
+
show: () => void;
|
|
16
|
+
close: () => void;
|
|
17
|
+
}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
|
|
18
|
+
"fzmodal:cancel": (...args: any[]) => void;
|
|
19
|
+
"fzmodal:confirm": (...args: any[]) => void;
|
|
20
|
+
}, string, import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<FzConfirmDialogProps>, {
|
|
21
|
+
size: string;
|
|
22
|
+
footerEnabled: boolean;
|
|
23
|
+
cancelButtonEnabled: boolean;
|
|
24
|
+
disableConfirm: boolean;
|
|
25
|
+
confirmButtonEnabled: boolean;
|
|
26
|
+
doesCancelButtonCloseDialog: boolean;
|
|
27
|
+
doesConfirmButtonCloseDialog: boolean;
|
|
28
|
+
}>>> & Readonly<{
|
|
29
|
+
"onFzmodal:cancel"?: ((...args: any[]) => any) | undefined;
|
|
30
|
+
"onFzmodal:confirm"?: ((...args: any[]) => any) | undefined;
|
|
31
|
+
}>, {
|
|
32
|
+
size: import('./types').FzDialogSizes;
|
|
33
|
+
footerEnabled: boolean;
|
|
34
|
+
cancelButtonEnabled: boolean;
|
|
35
|
+
disableConfirm: boolean;
|
|
36
|
+
confirmButtonEnabled: boolean;
|
|
37
|
+
doesConfirmButtonCloseDialog: boolean;
|
|
38
|
+
doesCancelButtonCloseDialog: boolean;
|
|
39
|
+
}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>, {
|
|
40
|
+
header?(_: {}): any;
|
|
41
|
+
body?(_: {}): any;
|
|
42
|
+
footer?(_: {}): any;
|
|
43
|
+
}>;
|
|
44
|
+
export default _default;
|
|
45
|
+
type __VLS_NonUndefinedable<T> = T extends undefined ? never : T;
|
|
46
|
+
type __VLS_TypePropsToRuntimeProps<T> = {
|
|
47
|
+
[K in keyof T]-?: {} extends Pick<T, K> ? {
|
|
48
|
+
type: import('vue').PropType<__VLS_NonUndefinedable<T[K]>>;
|
|
49
|
+
} : {
|
|
50
|
+
type: import('vue').PropType<T[K]>;
|
|
51
|
+
required: true;
|
|
52
|
+
};
|
|
53
|
+
};
|
|
54
|
+
type __VLS_WithDefaults<P, D> = {
|
|
55
|
+
[K in keyof Pick<P, keyof P>]: K extends keyof D ? __VLS_Prettify<P[K] & {
|
|
56
|
+
default: D[K];
|
|
57
|
+
}> : P[K];
|
|
58
|
+
};
|
|
59
|
+
type __VLS_Prettify<T> = {
|
|
60
|
+
[K in keyof T]: T[K];
|
|
61
|
+
} & {};
|
|
62
|
+
type __VLS_WithTemplateSlots<T, S> = T & {
|
|
63
|
+
new (): {
|
|
64
|
+
$slots: S;
|
|
65
|
+
};
|
|
66
|
+
};
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { FzDialogProps } from './types';
|
|
2
|
+
|
|
3
|
+
declare const _default: __VLS_WithTemplateSlots<import('vue').DefineComponent<import('vue').ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<FzDialogProps>, {
|
|
4
|
+
size: string;
|
|
5
|
+
closeOnBackdrop: boolean;
|
|
6
|
+
closeOnEscape: boolean;
|
|
7
|
+
}>>, {
|
|
8
|
+
show: () => void;
|
|
9
|
+
close: (returnVal?: string | undefined) => void;
|
|
10
|
+
visible: import('vue').Ref<boolean, boolean>;
|
|
11
|
+
}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
|
|
12
|
+
"fzmodal:cancel": (...args: any[]) => void;
|
|
13
|
+
}, string, import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<FzDialogProps>, {
|
|
14
|
+
size: string;
|
|
15
|
+
closeOnBackdrop: boolean;
|
|
16
|
+
closeOnEscape: boolean;
|
|
17
|
+
}>>> & Readonly<{
|
|
18
|
+
"onFzmodal:cancel"?: ((...args: any[]) => any) | undefined;
|
|
19
|
+
}>, {
|
|
20
|
+
size: import('./types').FzDialogSizes;
|
|
21
|
+
closeOnBackdrop: boolean;
|
|
22
|
+
closeOnEscape: boolean;
|
|
23
|
+
}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>, {
|
|
24
|
+
header?(_: {}): any;
|
|
25
|
+
body?(_: {}): any;
|
|
26
|
+
footer?(_: {}): any;
|
|
27
|
+
}>;
|
|
28
|
+
export default _default;
|
|
29
|
+
type __VLS_NonUndefinedable<T> = T extends undefined ? never : T;
|
|
30
|
+
type __VLS_TypePropsToRuntimeProps<T> = {
|
|
31
|
+
[K in keyof T]-?: {} extends Pick<T, K> ? {
|
|
32
|
+
type: import('vue').PropType<__VLS_NonUndefinedable<T[K]>>;
|
|
33
|
+
} : {
|
|
34
|
+
type: import('vue').PropType<T[K]>;
|
|
35
|
+
required: true;
|
|
36
|
+
};
|
|
37
|
+
};
|
|
38
|
+
type __VLS_WithDefaults<P, D> = {
|
|
39
|
+
[K in keyof Pick<P, keyof P>]: K extends keyof D ? __VLS_Prettify<P[K] & {
|
|
40
|
+
default: D[K];
|
|
41
|
+
}> : P[K];
|
|
42
|
+
};
|
|
43
|
+
type __VLS_Prettify<T> = {
|
|
44
|
+
[K in keyof T]: T[K];
|
|
45
|
+
} & {};
|
|
46
|
+
type __VLS_WithTemplateSlots<T, S> = T & {
|
|
47
|
+
new (): {
|
|
48
|
+
$slots: S;
|
|
49
|
+
};
|
|
50
|
+
};
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { ButtonVariant } from '@fiscozen/button';
|
|
2
|
+
|
|
3
|
+
export type FzDialogSizes = "sm" | "md" | "lg" | "xl";
|
|
4
|
+
export type FzDialogProps = {
|
|
5
|
+
/**
|
|
6
|
+
* The general size of the dialog
|
|
7
|
+
*/
|
|
8
|
+
size?: FzDialogSizes;
|
|
9
|
+
/**
|
|
10
|
+
* Text content in the header
|
|
11
|
+
*/
|
|
12
|
+
title?: string;
|
|
13
|
+
/**
|
|
14
|
+
* Text content in the confirm button
|
|
15
|
+
*/
|
|
16
|
+
confirmLabel?: string;
|
|
17
|
+
/**
|
|
18
|
+
* Text content in the cancel button
|
|
19
|
+
*/
|
|
20
|
+
cancelLabel?: string;
|
|
21
|
+
/**
|
|
22
|
+
* Text content in the body slot
|
|
23
|
+
*/
|
|
24
|
+
text?: string;
|
|
25
|
+
/**
|
|
26
|
+
* Whether to show the modal as a drawer
|
|
27
|
+
*/
|
|
28
|
+
isDrawer?: boolean;
|
|
29
|
+
/**
|
|
30
|
+
* Whether to close the dialog on backdrop click
|
|
31
|
+
*/
|
|
32
|
+
closeOnBackdrop?: boolean;
|
|
33
|
+
/**
|
|
34
|
+
* classes to apply to body
|
|
35
|
+
*/
|
|
36
|
+
/**
|
|
37
|
+
* Whether to close the dialog on escape key press
|
|
38
|
+
*/
|
|
39
|
+
closeOnEscape?: boolean;
|
|
40
|
+
/**
|
|
41
|
+
* classes to apply to body
|
|
42
|
+
*/
|
|
43
|
+
bodyClasses?: string | string[] | Record<string, boolean | undefined> | Array<string | Record<string, boolean | undefined>>;
|
|
44
|
+
/**
|
|
45
|
+
* Whether the component is rendered even when closed
|
|
46
|
+
*/
|
|
47
|
+
shouldAlwaysRender?: boolean;
|
|
48
|
+
};
|
|
49
|
+
export type FzConfirmDialogProps = FzDialogProps & {
|
|
50
|
+
/**
|
|
51
|
+
* Whether to show or not the footer
|
|
52
|
+
*/
|
|
53
|
+
footerEnabled?: boolean;
|
|
54
|
+
/**
|
|
55
|
+
* Whether to show the cancel button
|
|
56
|
+
*/
|
|
57
|
+
cancelButtonEnabled?: boolean;
|
|
58
|
+
/**
|
|
59
|
+
* Whether to enable the confirm button
|
|
60
|
+
*/
|
|
61
|
+
disableConfirm?: boolean;
|
|
62
|
+
/**
|
|
63
|
+
* Whether to show the confirm button
|
|
64
|
+
*/
|
|
65
|
+
confirmButtonEnabled?: boolean;
|
|
66
|
+
/**
|
|
67
|
+
* Custom variant of the confirm button
|
|
68
|
+
*/
|
|
69
|
+
confirmButtonVariant?: ButtonVariant;
|
|
70
|
+
/**
|
|
71
|
+
* Whether confirm button should close dialog
|
|
72
|
+
*/
|
|
73
|
+
doesConfirmButtonCloseDialog?: boolean;
|
|
74
|
+
/**
|
|
75
|
+
* Whether cancel button should close dialog
|
|
76
|
+
*/
|
|
77
|
+
doesCancelButtonCloseDialog?: boolean;
|
|
78
|
+
/**
|
|
79
|
+
* classes to apply to footer
|
|
80
|
+
*/
|
|
81
|
+
footerClasses?: string | string[] | Record<string, boolean | undefined> | Array<string | Record<string, boolean | undefined>>;
|
|
82
|
+
};
|
package/dist/style.css
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
dialog{position:absolute;left:0;right:0;width:-moz-fit-content;width:-webkit-fit-content;width:fit-content;height:-moz-fit-content;height:-webkit-fit-content;height:fit-content;margin:auto;border:solid;padding:1em;background:#fff;color:#000;display:block}dialog:not([open]){display:none}dialog+.backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0000001a}._dialog_overlay{position:fixed;top:0;right:0;bottom:0;left:0}dialog.fixed{position:fixed;top:50%;transform:translateY(-50%)}dialog[data-v-ba12262d]::backdrop{background:var(--core-black, #2c282f);opacity:.8}.fz-dialog__backdrop[data-v-ba12262d]{background-color:#2c282fcc;top:0;left:0}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fiscozen/dialog",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.26",
|
|
4
4
|
"description": "Design System Dialog component",
|
|
5
5
|
"main": "src/index.ts",
|
|
6
6
|
"type": "module",
|
|
@@ -8,10 +8,7 @@
|
|
|
8
8
|
"author": "Riccardo Agnoletto",
|
|
9
9
|
"peerDependencies": {
|
|
10
10
|
"tailwindcss": "^3.4.1",
|
|
11
|
-
"vue": "^3.4.13"
|
|
12
|
-
"@fiscozen/composables": "^0.1.37",
|
|
13
|
-
"@fiscozen/button": "^0.1.13",
|
|
14
|
-
"@fiscozen/style": "^0.1.7"
|
|
11
|
+
"vue": "^3.4.13"
|
|
15
12
|
},
|
|
16
13
|
"devDependencies": {
|
|
17
14
|
"@fortawesome/fontawesome-svg-core": "^6.5.1",
|
|
@@ -31,14 +28,16 @@
|
|
|
31
28
|
"vite-plugin-dts": "^3.8.3",
|
|
32
29
|
"vitest": "^1.2.0",
|
|
33
30
|
"vue-tsc": "^1.8.25",
|
|
34
|
-
"@fiscozen/
|
|
31
|
+
"@fiscozen/eslint-config": "^0.1.0",
|
|
35
32
|
"@fiscozen/prettier-config": "^0.1.0",
|
|
36
|
-
"@fiscozen/
|
|
33
|
+
"@fiscozen/tsconfig": "^0.1.0"
|
|
37
34
|
},
|
|
38
35
|
"license": "MIT",
|
|
39
36
|
"dependencies": {
|
|
40
37
|
"dialog-polyfill": "^0.5.6",
|
|
41
|
-
"@fiscozen/
|
|
38
|
+
"@fiscozen/button": "1.0.1",
|
|
39
|
+
"@fiscozen/composables": "1.0.1",
|
|
40
|
+
"@fiscozen/style": "0.2.0"
|
|
42
41
|
},
|
|
43
42
|
"scripts": {
|
|
44
43
|
"coverage": "vitest run --coverage",
|