@aerogel/core 0.0.0-next.926bde19326fe7b6b24b277666936862b64d8295 → 0.0.0-next.b85327579d32f21c6a9fa21142f0165cdd320d7e
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/aerogel-core.cjs.js +1 -1
- package/dist/aerogel-core.d.ts +213 -53
- package/dist/aerogel-core.esm.js +1 -1
- package/package.json +2 -1
- package/src/bootstrap/index.ts +4 -1
- package/src/components/basic/AGMarkdown.vue +3 -3
- package/src/components/forms/AGButton.vue +21 -8
- package/src/components/forms/AGCheckbox.vue +35 -0
- package/src/components/forms/AGInput.vue +8 -4
- package/src/components/forms/index.ts +2 -1
- package/src/components/headless/forms/AGHeadlessButton.vue +3 -4
- package/src/components/headless/forms/AGHeadlessInput.ts +2 -2
- package/src/components/headless/forms/AGHeadlessInput.vue +3 -3
- package/src/components/headless/forms/AGHeadlessInputError.vue +1 -1
- package/src/components/headless/forms/AGHeadlessInputInput.vue +15 -3
- package/src/components/headless/modals/AGHeadlessModalPanel.vue +5 -1
- package/src/components/modals/AGLoadingModal.vue +19 -0
- package/src/components/modals/AGModal.vue +20 -2
- package/src/components/modals/index.ts +2 -1
- package/src/errors/Errors.state.ts +31 -0
- package/src/errors/Errors.ts +132 -0
- package/src/errors/index.ts +21 -0
- package/src/forms/Form.ts +12 -9
- package/src/forms/utils.ts +17 -0
- package/src/lang/Lang.ts +11 -3
- package/src/lang/index.ts +3 -5
- package/src/lang/utils.ts +4 -0
- package/src/main.ts +1 -0
- package/src/services/App.state.ts +3 -0
- package/src/services/App.ts +11 -1
- package/src/services/Service.ts +126 -44
- package/src/services/index.ts +18 -4
- package/src/services/store.ts +27 -0
- package/src/ui/UI.state.ts +1 -0
- package/src/ui/UI.ts +15 -0
- package/src/ui/index.ts +3 -1
- package/src/utils/composition/forms.ts +11 -0
- package/src/utils/index.ts +1 -0
package/dist/aerogel-core.cjs.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),require("core-js/modules/esnext.async-iterator.map.js"),require("core-js/modules/esnext.iterator.map.js");var e=require("vue");require("core-js/modules/esnext.async-iterator.for-each.js"),require("core-js/modules/esnext.iterator.constructor.js"),require("core-js/modules/esnext.iterator.for-each.js");var t=require("@noeldemartin/utils"),r=require("@babel/runtime/helpers/defineProperty");require("core-js/modules/esnext.async-iterator.reduce.js"),require("core-js/modules/esnext.iterator.reduce.js"),require("core-js/modules/esnext.string.at.js"),require("core-js/modules/esnext.async-iterator.filter.js"),require("core-js/modules/esnext.iterator.filter.js");var o=require("@headlessui/vue"),s=require("dompurify"),n=require("marked");function a(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}require("core-js/modules/esnext.async-iterator.some.js"),require("core-js/modules/esnext.iterator.some.js");var l=a(r),i=a(s);function u(e){return e}function d(){return{type:Boolean,default:arguments.length>0&&void 0!==arguments[0]&&arguments[0]}}function c(){return e.ref()}function p(e){return e}function m(t){const r=e.inject(t);return r?e.reactive(r):void 0}function f(e,r){return m(e)??t.fail(r??`Could not resolve '${e}' injection key`)}function v(){return{type:Object,default:arguments.length>0&&void 0!==arguments[0]?arguments[0]:null}}function h(){return{type:Number,required:!0}}function _(){return{type:Object,required:!0}}function x(){return{type:String,required:!0}}function g(){return{type:String,default:arguments.length>0&&void 0!==arguments[0]?arguments[0]:null}}const b={"initial-focus":{mounted(e,t){let{value:r}=t;!1!==r&&e.focus()}}};var y={install(e){Object.entries(b).forEach((t=>{let[r,o]=t;return e.directive(r,o)}))}};class ServiceBootError extends t.JSError{constructor(e,t){super(`Service '${e}' failed booting`,{cause:t})}}function k(e){return class extends A{getInitialState(){return e.initialState}getComputedStateDefinition(){return e.computed??{}}}}class A extends t.MagicObject{constructor(){super(),l.default(this,"_namespace",void 0),l.default(this,"_booted",void 0),l.default(this,"_state",void 0),l.default(this,"_computedState",void 0),this._namespace=new.target.name,this._booted=new t.PromisedValue,this._state=e.reactive(this.getInitialState()),this._computedState=Object.entries(this.getComputedStateDefinition()).reduce(((t,r)=>{let[o,s]=r;return t[o]=e.computed((()=>s(this._state))),t}),{})}get booted(){return this._booted}launch(e){const handleError=e=>this._booted.reject(new ServiceBootError(this._namespace,e));this._namespace=e??this._namespace;try{this.boot().then((()=>this._booted.resolve())).catch(handleError)}catch(e){handleError(e)}return this._booted}__get(e){return this.hasState(e)?this.getState(e):this.hasComputedState(e)?this.getComputedState(e):super.__get(e)}__set(e,t){this.setState({[e]:t})}hasState(e){return e in this._state}hasComputedState(e){return e in this._computedState}getState(e){return e?this._state[e]:this._state}getComputedState(e){return this._computedState[e]?.value}setState(e){Object.assign(this._state,e)}getInitialState(){return{}}getComputedStateDefinition(){return{}}async boot(){}}var C=k({initialState:{environment:__AG_ENV},computed:{isDevelopment:e=>"development"===e.environment}});class w extends C{}var G=t.facade(new w);class S extends A{constructor(){super(...arguments),l.default(this,"listeners",{})}async emit(e,t){const r=[...this.listeners[e]??[]];await Promise.all(r.map((e=>e(t)))??[])}on(e,r){return(this.listeners[e]??=t.arr([])).push(r),()=>this.off(e,r)}once(e,r){let o=null;return t.tap((()=>o&&this.off(e,o)),(s=>{(this.listeners[e]??=t.arr([])).push(o=function(){return s(),r(...arguments)})}))}off(e,t){const r=this.listeners[e];r&&(r.remove(t),r.isEmpty()&&delete this.listeners[e])}}var j=t.facade(new S);const B={$app:G,$events:j};async function M(e,t){await Promise.all(Object.entries(t).map((async e=>{let[t,r]=e;await r.launch(t.slice(1)).catch((e=>console.error(e)))}))),Object.assign(e.config.globalProperties,t)}var I={async install(e){await M(e,B)}};var q=t.facade(new class extends A{constructor(){super(),l.default(this,"provider",void 0),this.provider={translate:e=>(G.isDevelopment&&console.warn("Lang provider is missing"),e)}}setProvider(e){this.provider=e}translate(e,t){return this.provider.translate(e,t)??e}translateWithDefault(e,t,r){r??=t;const o="string"==typeof t?{}:t,s=this.provider.translate(e,o)??e;return s===e?r:s}});const P={$lang:q},E=q.translate.bind(q),$=q.translateWithDefault.bind(q);var H={async install(e){e.config.globalProperties.$t??=E,e.config.globalProperties.$td=$,await M(e,P)}},V=k({initialState:{modals:[]}});const N={AlertModal:"alert-modal",ConfirmModal:"confirm-modal"};var O=t.facade(new class extends V{constructor(){super(...arguments),l.default(this,"modalCallbacks",{}),l.default(this,"components",{})}alert(e,t){const r="string"==typeof t?{title:e,message:t}:{message:e};this.openModal(this.requireComponent(N.AlertModal),r)}async confirm(e,t){const r="string"==typeof t?{title:e,message:t}:{message:e},o=await this.openModal(this.requireComponent(N.ConfirmModal),r);return await o.beforeClose??!1}registerComponent(e,t){this.components[e]=t}async openModal(r,o){const s=t.uuid(),n={},a={id:s,properties:o??{},component:e.markRaw(r),beforeClose:new Promise((e=>n.willClose=e)),afterClose:new Promise((e=>n.closed=e))},l=this.modals.at(-1),i=this.modals.concat(a);return this.modalCallbacks[a.id]=n,this.setState({modals:i}),await e.nextTick(),await(l&&j.emit("hide-modal",{id:l.id})),await Promise.all([l||j.emit("show-overlays-backdrop"),j.emit("show-modal",{id:a.id})]),a}async closeModal(e,t){await j.emit("close-modal",{id:e,result:t})}async boot(){await super.boot(),this.watchModalEvents()}requireComponent(e){return this.components[e]??t.fail(`UI Component '${e}' is not defined!`)}watchModalEvents(){j.on("modal-will-close",(e=>{let{modal:t,result:r}=e;this.modalCallbacks[t.id]?.willClose?.(r),1===this.modals.length&&j.emit("hide-overlays-backdrop")})),j.on("modal-closed",(async e=>{let{modal:t,result:r}=e;this.setState({modals:this.modals.filter((e=>e.id!==t.id))}),this.modalCallbacks[t.id]?.closed?.(r),delete this.modalCallbacks[t.id];const o=this.modals.at(-1);await(o&&j.emit("show-modal",{id:o.id}))}))}});function D(t,r){const o=j.on(t,r);e.onUnmounted((()=>o()))}var F=e.defineComponent({__name:"AGHeadlessModal",props:{cancellable:d(!0)},setup(t,{expose:r}){const s=t,n=e.ref(null),a=e.ref(!0),l=e.ref(!1),{modal:i}=f("modal","could not obtain modal reference from <AGHeadlessModal>, did you render this component manually? Show it using $ui.openModal() instead");async function u(){n.value?.$el&&(a.value=!0)}async function d(e){l.value||(j.emit("modal-will-close",{modal:i,result:e}),await u(),l.value=!0,j.emit("modal-closed",{modal:i,result:e}))}return D("close-modal",(async({id:e,result:t})=>{e===i.id&&await d(t)})),D("hide-modal",(async({id:e})=>{e===i.id&&await u()})),D("show-modal",(async({id:e})=>{e===i.id&&await async function(){n.value?.$el&&(a.value=!1)}()})),r({close:d,cancellable:e.toRef(s,"cancellable")}),(r,s)=>(e.openBlock(),e.createBlock(e.unref(o.Dialog),{ref_key:"$root",ref:n,open:!0,onClose:s[0]||(s[0]=e=>t.cancellable&&d())},{default:e.withCtx((()=>[e.renderSlot(r.$slots,"default",{close:d})])),_:3},512))}});F.__file="src/components/headless/modals/AGHeadlessModal.vue";var L=e.defineComponent({__name:"AGModalContext",props:{modal:_(),childIndex:h()},setup(t){const r=t;return e.provide("modal",{modal:e.toRef(r,"modal"),childIndex:e.toRef(r,"childIndex")}),(r,o)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(t.modal.component),e.normalizeProps(e.guardReactiveProps(t.modal.properties)),null,16))}});L.__file="src/components/modals/AGModalContext.vue";var T=e.defineComponent({__name:"AGHeadlessModalPanel",setup(t){const r=f("modal","could not obtain modal reference from <AGHeadlessModalPanel>, did you render this component manually? Show it using $ui.openModal() instead"),s=e.computed((()=>O.modals[r.childIndex]??null));return(t,n)=>(e.openBlock(),e.createBlock(e.unref(o.DialogPanel),null,{default:e.withCtx((()=>[e.renderSlot(t.$slots,"default"),s.value?(e.openBlock(),e.createBlock(L,{key:0,"child-index":e.unref(r).childIndex+1,modal:s.value},null,8,["child-index","modal"])):e.createCommentVNode("v-if",!0)])),_:3}))}});T.__file="src/components/headless/modals/AGHeadlessModalPanel.vue";const R={class:"fixed inset-0 flex items-center justify-center"},z={class:"flex max-h-full flex-col overflow-auto p-4"};var U=e.defineComponent({__name:"AGModal",setup:t=>(t,r)=>(e.openBlock(),e.createBlock(F,{class:"relative z-50"},{default:e.withCtx((({close:r})=>[e.createElementVNode("div",R,[e.createVNode(T,{class:"flex max-h-full max-w-full flex-col overflow-hidden bg-white"},{default:e.withCtx((()=>[e.createElementVNode("div",z,[e.renderSlot(t.$slots,"default",{close:r})])])),_:2},1024)])])),_:3}))});function K(e){return t=n.marked(e,{mangle:!1,headerIds:!1}),i.default.sanitize(t,{ADD_ATTR:["target"]});var t}U.__file="src/components/modals/AGModal.vue";var W=e.defineComponent({__name:"AGMarkdown",props:{as:g("div"),langKey:g(),text:g(),inline:d(),raw:d()},setup(t){const r=t,o=e.computed((()=>r.text??(r.langKey&&E(r.langKey)))),s=e.computed((()=>{if(!o.value)return null;let e=K(o.value);return r.inline&&(e=e.replace("<p>","<span>").replace("</p>","</span>")),e})),n=()=>e.h(r.as,{class:r.raw?"":"prose",innerHTML:s.value});return(t,r)=>(e.openBlock(),e.createBlock(n))}});W.__file="src/components/basic/AGMarkdown.vue";var Q=e.defineComponent({__name:"AGAlertModal",props:{title:g(),message:x()},setup:t=>(r,o)=>(e.openBlock(),e.createBlock(U,null,{default:e.withCtx((()=>[t.title?(e.openBlock(),e.createBlock(W,{key:0,text:t.title,as:"h2",class:"font-semibold",raw:"",inline:""},null,8,["text"])):e.createCommentVNode("v-if",!0),e.createVNode(W,{text:t.message},null,8,["text"])])),_:1}))});Q.__file="src/components/modals/AGAlertModal.vue";var J=e.defineComponent({__name:"AGHeadlessButton",props:{url:g(),route:g(),routeParams:v((()=>({}))),routeQuery:v((()=>({}))),submit:d()},setup(r){const{url:o,route:s,routeParams:n,routeQuery:a,submit:l}=r,i=e.computed((()=>s?{tag:"router-link",props:{to:t.objectWithoutEmpty({name:s,params:n,query:a})}}:o?{tag:"a",props:{target:"_blank",href:o}}:{tag:"button",props:{type:l?"submit":"button"}}));return(t,r)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(i.value.tag),e.normalizeProps(e.guardReactiveProps(i.value.props)),{default:e.withCtx((()=>[e.renderSlot(t.$slots,"default")])),_:3},16))}});J.__file="src/components/headless/forms/AGHeadlessButton.vue";var X=e.defineComponent({__name:"AGButton",props:{secondary:d()},setup:t=>(r,o)=>(e.openBlock(),e.createBlock(J,{class:e.normalizeClass(["px-2.5 py-1.5 text-white focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2",{"bg-indigo-600 hover:bg-indigo-500 focus-visible:outline-indigo-600":!t.secondary,"bg-gray-600 hover:bg-gray-500 focus-visible:outline-gray-600":t.secondary}])},{default:e.withCtx((()=>[e.renderSlot(r.$slots,"default")])),_:3},8,["class"]))});X.__file="src/components/forms/AGButton.vue";const Y={class:"mt-2 flex flex-row-reverse gap-2"};var Z=e.defineComponent({__name:"AGConfirmModal",props:{title:g(),message:x()},setup:t=>(r,o)=>(e.openBlock(),e.createBlock(U,{cancellable:!1},{default:e.withCtx((({close:o})=>[t.title?(e.openBlock(),e.createBlock(W,{key:0,text:t.title,as:"h1"},null,8,["text"])):e.createCommentVNode("v-if",!0),e.createVNode(W,{text:t.message},null,8,["text"]),e.createElementVNode("div",Y,[e.createVNode(X,{onClick:e=>o(!0)},{default:e.withCtx((()=>[e.createTextVNode(e.toDisplayString(r.$td("ui.ok","OK")),1)])),_:2},1032,["onClick"]),e.createVNode(X,{secondary:"",onClick:e=>o()},{default:e.withCtx((()=>[e.createTextVNode(e.toDisplayString(r.$td("ui.cancel","Cancel")),1)])),_:2},1032,["onClick"])])])),_:1}))});Z.__file="src/components/modals/AGConfirmModal.vue";const ee={$ui:O};var te={async install(e,t){const r={[N.AlertModal]:Q,[N.ConfirmModal]:Z};Object.entries({...r,...t.components}).forEach((e=>{let[t,r]=e;return O.registerComponent(t,r)})),await M(e,ee)}};const re={key:0};var oe=e.defineComponent({__name:"AGAppOverlays",setup(t){const r=e.ref(null),o=e.ref(!0),s=e.computed((()=>O.modals[0]??null));return D("show-overlays-backdrop",(async()=>{r.value&&o.value&&(o.value=!1,r.value.classList.remove("opacity-0"))})),D("hide-overlays-backdrop",(async()=>{r.value&&!o.value&&(o.value=!0,r.value.classList.add("opacity-0"))})),(t,o)=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[e.createElementVNode("div",{ref_key:"$backdrop",ref:r,class:"pointer-events-none fixed inset-0 z-50 bg-black/30 opacity-0"},null,512),s.value?(e.openBlock(),e.createElementBlock("aside",re,[e.createVNode(L,{"child-index":1,modal:s.value},null,8,["modal"])])):e.createCommentVNode("v-if",!0)],64))}});oe.__file="src/components/AGAppOverlays.vue";const se={class:"flex h-full flex-col text-base font-normal leading-tight text-gray-900 antialiased"};var ne=e.defineComponent({__name:"AGAppLayout",setup:t=>(t,r)=>(e.openBlock(),e.createElementBlock("div",se,[e.renderSlot(t.$slots,"default"),e.createVNode(oe)]))});ne.__file="src/components/AGAppLayout.vue";const ae=["onSubmit"];var le=e.defineComponent({__name:"AGForm",props:{form:v()},emits:["submit"],setup(t,{emit:r}){const o=t;function s(){o.form&&!o.form.submit()||r("submit")}return e.provide("form",o.form),(t,r)=>(e.openBlock(),e.createElementBlock("form",{onSubmit:e.withModifiers(s,["prevent"])},[e.renderSlot(t.$slots,"default")],40,ae))}});le.__file="src/components/forms/AGForm.vue";var ie=e.defineComponent({__name:"AGHeadlessInput",props:{as:g(),name:g(),modelValue:g()},emits:["update:modelValue"],setup(r,{expose:o,emit:s}){const n=r,a=e.computed((()=>l&&n.name?l.errors[n.name]??null:null)),l=e.inject("form",null),i={id:`input-${t.uuid()}`,value:e.computed((()=>l&&n.name?l.getFieldValue(n.name):n.modelValue)),errors:e.readonly(a),update(e){l&&n.name?l.setFieldValue(n.name,e):s("update:modelValue",e)}};return e.provide("input",i),o(i),(t,o)=>r.as?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(r.as),{key:0},{default:e.withCtx((()=>[e.renderSlot(t.$slots,"default")])),_:3})):e.renderSlot(t.$slots,"default",{key:1})}});ie.__file="src/components/headless/forms/AGHeadlessInput.vue";const ue=["id","value","aria-invalid","aria-describedby"];var de=e.defineComponent({__name:"AGHeadlessInputInput",setup(t){const r=e.ref(),o=f("input","<AGHeadlessInputInput> must be a child of a <AGHeadlessInput>"),s=e.computed((()=>o.value));function n(){r.value&&o.update(r.value.value)}return(t,a)=>(e.openBlock(),e.createElementBlock("input",{id:e.unref(o).id,ref_key:"$input",ref:r,type:"text",value:s.value,"aria-invalid":e.unref(o).errors?"true":"false","aria-describedby":e.unref(o).errors?`${e.unref(o).id}-error`:void 0,onInput:n},null,40,ue))}});de.__file="src/components/headless/forms/AGHeadlessInputInput.vue";const ce=["id"];var pe=e.defineComponent({__name:"AGHeadlessInputError",setup(t){const r=f("input","<AGHeadlessInputError> must be a child of a <AGHeadlessInput>"),o=e.computed((()=>r.errors?$(`errors.${r.errors[0]}`,`Error: ${r.errors[0]}`):null));return(t,s)=>o.value?(e.openBlock(),e.createElementBlock("p",{key:0,id:`${e.unref(r).id}-error`},e.toDisplayString(o.value),9,ce)):e.createCommentVNode("v-if",!0)}});pe.__file="src/components/headless/forms/AGHeadlessInputError.vue";var me=e.defineComponent({inheritAttrs:!1,__name:"AGInput",props:{name:g()},setup(t){const r=c();return(o,s)=>(e.openBlock(),e.createBlock(ie,{ref_key:"$input",ref:r,as:"div",class:"flex flex-col items-center",name:t.name},{default:e.withCtx((()=>[e.createVNode(de,e.mergeProps(o.$attrs,{class:["block w-full border-0 py-1.5 text-gray-900 ring-1 ring-inset ring-gray-300 placeholder:text-gray-400 focus:ring-2 focus:ring-inset focus:ring-indigo-600",{"ring-1 ring-red-500":e.unref(r)?.errors}]}),null,16,["class"]),e.createVNode(pe,{class:"mt-1 text-sm text-red-500"})])),_:1},8,["name"]))}});me.__file="src/components/forms/AGInput.vue";const fe=["for"];var ve=e.defineComponent({__name:"AGHeadlessInputLabel",setup(t){const r=f("input","<AGHeadlessInputLabel> must be a child of a <AGHeadlessInput>");return(t,o)=>(e.openBlock(),e.createElementBlock("label",{for:e.unref(r).id},[e.renderSlot(t.$slots,"default")],8,fe))}});ve.__file="src/components/headless/forms/AGHeadlessInputLabel.vue";var he=e.defineComponent({__name:"AGHeadlessModalTitle",props:{as:g("h2")},setup:t=>(r,s)=>(e.openBlock(),e.createBlock(e.unref(o.DialogTitle),{as:t.as},{default:e.withCtx((()=>[e.renderSlot(r.$slots,"default")])),_:3},8,["as"]))});he.__file="src/components/headless/modals/AGHeadlessModalTitle.vue";const _e={String:"string",Number:"number"};class xe extends t.MagicObject{constructor(t){super(),l.default(this,"errors",void 0),l.default(this,"_fields",void 0),l.default(this,"_data",void 0),l.default(this,"_valid",void 0),l.default(this,"_submitted",void 0),l.default(this,"_errors",void 0),this._fields=t,this._submitted=e.ref(!1),this._data=this.getInitialData(t),this._errors=this.getInitialErrors(t),this._valid=e.computed((()=>!Object.values(this._errors).some((e=>null!==e)))),this.errors=e.readonly(this._errors)}get valid(){return this._valid.value}get submitted(){return this._submitted.value}setFieldValue(e,t){this._data[e]=t,this._submitted.value&&this.validate()}getFieldValue(e){return this._data[e]}validate(){const e=Object.entries(this._fields).reduce(((e,t)=>{let[r,o]=t;return e[r]=this.getFieldErrors(r,o),e}),{});return this.resetErrors(e),this.valid}reset(){this._submitted.value=!1,this.resetData(),this.resetErrors()}submit(){return this._submitted.value=!0,this.validate()}__get(e){return e in this._fields?this._data[e]:super.__get(e)}__set(e,t){e in this._fields?Object.assign(this._data,{[e]:t}):super.__set(e,t)}getFieldErrors(e,t){const r=[];return t.rules?.includes("required")&&!this._data[e]&&r.push("required"),r.length>0?r:null}getInitialData(t){if(this.static().isConjuring())return{};const r=Object.entries(t).reduce(((e,t)=>{let[r,o]=t;return e[r]=o.default??null,e}),{});return e.reactive(r)}getInitialErrors(t){if(this.static().isConjuring())return{};const r=Object.keys(t).reduce(((e,t)=>(e[t]=null,e)),{});return e.reactive(r)}resetData(){for(const[e,t]of Object.entries(this._fields))this._data[e]=t.default??null}resetErrors(e){Object.keys(this._errors).forEach((e=>delete this._errors[e])),e&&Object.assign(this._errors,e)}}exports.AGAlertModal=Q,exports.AGAppLayout=ne,exports.AGAppOverlays=oe,exports.AGButton=X,exports.AGConfirmModal=Z,exports.AGForm=le,exports.AGHeadlessButton=J,exports.AGHeadlessInput=ie,exports.AGHeadlessInputError=pe,exports.AGHeadlessInputInput=de,exports.AGHeadlessInputLabel=ve,exports.AGHeadlessModal=F,exports.AGHeadlessModalPanel=T,exports.AGHeadlessModalTitle=he,exports.AGInput=me,exports.AGMarkdown=W,exports.AGModal=U,exports.AGModalContext=L,exports.App=G,exports.AppService=w,exports.Events=j,exports.EventsService=S,exports.FormFieldTypes=_e,exports.Lang=q,exports.Service=A,exports.UI=O,exports.UIComponents=N,exports.arrayProp=function(e){return{type:Array,default:e??(()=>[])}},exports.booleanProp=d,exports.bootServices=M,exports.bootstrapApplication=async function(t){let r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const o=[y,H,I,te,...r.plugins??[]],s=e.createApp(t);await Promise.all(o.map((e=>e.install(s,r)))??[]),s.mount("#app")},exports.componentRef=c,exports.defineDirective=p,exports.definePlugin=u,exports.defineServiceState=k,exports.enumProp=function(e,t){const r=Object.values(e);return{type:String,default:t??r[0]??null,validator:e=>r.includes(e)}},exports.injectOrFail=function(r,o){return e.inject(r)??t.fail(o??`Could not resolve '${r}' injection key`)},exports.injectReactive=m,exports.injectReactiveOrFail=f,exports.mixedProp=function(e){return{type:e,default:null}},exports.numberInput=function(e){return{default:e,type:_e.Number}},exports.numberProp=function(){return{type:Number,default:arguments.length>0&&void 0!==arguments[0]?arguments[0]:null}},exports.objectProp=v,exports.onCleanMounted=function(r){let o=t.noop;e.onMounted((()=>o=r())),e.onUnmounted((()=>o()))},exports.requiredArrayProp=function(){return{type:Array,required:!0}},exports.requiredEnumProp=function(e){const t=Object.values(e);return{type:String,required:!0,validator:e=>t.includes(e)}},exports.requiredMixedProp=function(e){return{type:e,required:!0}},exports.requiredNumberInput=function(e){return{default:e,type:_e.Number,rules:"required"}},exports.requiredNumberProp=h,exports.requiredObjectProp=_,exports.requiredStringInput=function(e){return{default:e,type:_e.String,rules:"required"}},exports.requiredStringProp=x,exports.stringInput=function(e){return{default:e,type:_e.String}},exports.stringProp=g,exports.translate=E,exports.translateWithDefault=$,exports.useEvent=D,exports.useForm=function(e){return new xe(e)};
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),require("core-js/modules/esnext.async-iterator.map.js"),require("core-js/modules/esnext.iterator.map.js");var e=require("vue");require("core-js/modules/esnext.async-iterator.for-each.js"),require("core-js/modules/esnext.iterator.constructor.js"),require("core-js/modules/esnext.iterator.for-each.js");var t=require("@noeldemartin/utils"),r=require("@babel/runtime/helpers/defineProperty");require("core-js/modules/esnext.set.add-all.js"),require("core-js/modules/esnext.set.delete-all.js"),require("core-js/modules/esnext.set.difference.js"),require("core-js/modules/esnext.set.every.js"),require("core-js/modules/esnext.set.filter.js"),require("core-js/modules/esnext.set.find.js"),require("core-js/modules/esnext.set.intersection.js"),require("core-js/modules/esnext.set.is-disjoint-from.js"),require("core-js/modules/esnext.set.is-subset-of.js"),require("core-js/modules/esnext.set.is-superset-of.js"),require("core-js/modules/esnext.set.join.js"),require("core-js/modules/esnext.set.map.js"),require("core-js/modules/esnext.set.reduce.js"),require("core-js/modules/esnext.set.some.js"),require("core-js/modules/esnext.set.symmetric-difference.js"),require("core-js/modules/esnext.set.union.js");var o=require("pinia");require("core-js/modules/esnext.string.at.js"),require("core-js/modules/esnext.async-iterator.filter.js"),require("core-js/modules/esnext.iterator.filter.js"),require("core-js/modules/esnext.async-iterator.reduce.js"),require("core-js/modules/esnext.iterator.reduce.js"),require("core-js/modules/esnext.async-iterator.some.js"),require("core-js/modules/esnext.iterator.some.js");var s=require("@headlessui/vue"),n=require("dompurify"),a=require("marked");function l(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var i=l(r),u=l(n);function c(e){return e}function d(){return{type:Boolean,default:arguments.length>0&&void 0!==arguments[0]&&arguments[0]}}function p(){return e.ref()}function m(e){return e}function f(t){const r=e.inject(t);return r?e.reactive(r):void 0}function h(e,r){return f(e)??t.fail(r??`Could not resolve '${e}' injection key`)}function v(e){return{type:e,default:null}}function g(){return{type:Object,default:arguments.length>0&&void 0!==arguments[0]?arguments[0]:null}}function x(){return{type:Number,required:!0}}function _(){return{type:Object,required:!0}}function b(){return{type:String,required:!0}}function y(){return{type:String,default:arguments.length>0&&void 0!==arguments[0]?arguments[0]:null}}const k={"initial-focus":{mounted(e,t){let{value:r}=t;!1!==r&&e.focus()}}};var j={install(e){Object.entries(k).forEach((t=>{let[r,o]=t;return e.directive(r,o)}))}};class ServiceBootError extends t.JSError{constructor(e,t){super(`Service '${e}' failed booting`,{cause:t})}}let A=null;function S(){return A||(A=o.createPinia(),o.setActivePinia(A)),A}function w(e){var t;return t=class extends C{usesStore(){return!0}getName(){return e.name??null}getInitialState(){return e.initialState}getComputedStateDefinition(){return e.computed??{}}serializePersistedState(t){return e.serialize?.(t)??t}},i.default(t,"persist",e.persist??[]),t}class C extends t.MagicObject{constructor(){super(),i.default(this,"_name",void 0),i.default(this,"_booted",void 0),i.default(this,"_computedStateKeys",void 0),i.default(this,"_store",void 0);const e=this.getComputedStateDefinition();var r,s;this._name=this.getName()??new.target.name,this._booted=new t.PromisedValue,this._computedStateKeys=new Set(Object.keys(e)),this._store=this.usesStore()&&(r=this._name,s={state:()=>this.getInitialState(),getters:e},S(),o.defineStore(r,s)())}get booted(){return this._booted}launch(){const handleError=e=>this._booted.reject(new ServiceBootError(this._name,e));try{this.boot().then((()=>this._booted.resolve())).catch(handleError)}catch(e){handleError(e)}return this._booted}hasState(e){return!!this._store&&(e in this._store.$state||this._computedStateKeys.has(e))}getState(e){const t=this._store;return e?t?t[e]:void 0:t||{}}setState(e,t){if(!this._store)return;const r="string"==typeof e?{[e]:t}:e;Object.assign(this._store.$state,r),this.onStateUpdated(r)}__get(e){return this.hasState(e)?this.getState(e):super.__get(e)}__set(e,t){this.setState({[e]:t})}onStateUpdated(e){const r=this.constructor.persist,o=t.objectOnly(e,r);if(t.isEmpty(o))return;const s=t.Storage.require(this._name);t.Storage.set(this._name,{...s,...this.serializePersistedState(t.objectDeepClone(o))})}usesStore(){return!1}getName(){return null}getInitialState(){return{}}getComputedStateDefinition(){return{}}serializePersistedState(e){return e}async boot(){this.restorePersistedState()}restorePersistedState(){const e=this.constructor.persist;if(this.usesStore()&&!t.isEmpty(e))if(t.Storage.has(this._name)){const e=t.Storage.require(this._name);this.setState(e)}else t.Storage.set(this._name,t.objectOnly(this.getState(),e))}}i.default(C,"persist",[]);class E extends C{constructor(){super(...arguments),i.default(this,"listeners",{})}async emit(e,t){const r=[...this.listeners[e]??[]];await Promise.all(r.map((e=>e(t)))??[])}on(e,r){return(this.listeners[e]??=t.arr([])).push(r),()=>this.off(e,r)}once(e,r){let o=null;return t.tap((()=>o&&this.off(e,o)),(s=>{(this.listeners[e]??=t.arr([])).push(o=function(){return s(),r(...arguments)})}))}off(e,t){const r=this.listeners[e];r&&(r.remove(t),r.isEmpty()&&delete this.listeners[e])}}var G=t.facade(new E),B=w({name:"app",initialState:{environment:__AG_ENV,isMounted:!1},computed:{isDevelopment:e=>"development"===e.environment,isTesting:e=>"testing"===e.environment}});class q extends B{async boot(){await super.boot(),G.once("application-mounted",(()=>this.setState({isMounted:!0})))}}var M=t.facade(new q);const I={$app:M,$events:G};async function P(e,t){await Promise.all(Object.entries(t).map((async e=>{let[t,r]=e;await r.launch().catch((e=>console.error(e)))}))),Object.assign(e.config.globalProperties,t)}var $={async install(e,t){const r={...I,...t.services};e.use(A??S()),await P(e,r)}},N=w({name:"ui",initialState:{modals:[]}});const V={AlertModal:"alert-modal",ConfirmModal:"confirm-modal",LoadingModal:"loading-modal"};var H=t.facade(new class extends N{constructor(){super(...arguments),i.default(this,"modalCallbacks",{}),i.default(this,"components",{})}alert(e,t){const r="string"==typeof t?{title:e,message:t}:{message:e};this.openModal(this.requireComponent(V.AlertModal),r)}async confirm(e,t){const r="string"==typeof t?{title:e,message:t}:{message:e},o=await this.openModal(this.requireComponent(V.ConfirmModal),r);return await o.beforeClose??!1}async loading(e,t){t="string"==typeof e?t:e;const r="string"==typeof e?e:void 0,o=await this.openModal(this.requireComponent(V.LoadingModal),{message:r}),s=await t;return await this.closeModal(o.id),s}registerComponent(e,t){this.components[e]=t}async openModal(r,o){const s=t.uuid(),n={},a={id:s,properties:o??{},component:e.markRaw(r),beforeClose:new Promise((e=>n.willClose=e)),afterClose:new Promise((e=>n.closed=e))},l=this.modals.at(-1),i=this.modals.concat(a);return this.modalCallbacks[a.id]=n,this.setState({modals:i}),await e.nextTick(),await(l&&G.emit("hide-modal",{id:l.id})),await Promise.all([l||G.emit("show-overlays-backdrop"),G.emit("show-modal",{id:a.id})]),a}async closeModal(e,t){await G.emit("close-modal",{id:e,result:t})}async boot(){await super.boot(),this.watchModalEvents()}requireComponent(e){return this.components[e]??t.fail(`UI Component '${e}' is not defined!`)}watchModalEvents(){G.on("modal-will-close",(e=>{let{modal:t,result:r}=e;this.modalCallbacks[t.id]?.willClose?.(r),1===this.modals.length&&G.emit("hide-overlays-backdrop")})),G.on("modal-closed",(async e=>{let{modal:t,result:r}=e;this.setState({modals:this.modals.filter((e=>e.id!==t.id))}),this.modalCallbacks[t.id]?.closed?.(r),delete this.modalCallbacks[t.id];const o=this.modals.at(-1);await(o&&G.emit("show-modal",{id:o.id}))}))}});var O=t.facade(new class extends C{constructor(){super(),i.default(this,"provider",void 0),this.provider={translate:e=>(M.isDevelopment&&console.warn("Lang provider is missing"),e)}}setProvider(e){this.provider=e}translate(e,t){return this.provider.translate(e,t)??e}translateWithDefault(e,r,o){o??=r;const s="string"==typeof r?{}:r??{},n=this.provider.translate(e,s)??e;return n===e?Object.entries(s).reduce(((e,r)=>{let[o,s]=r;return e.replace(new RegExp(`\\{\\s*${o}\\s*\\}`,"g"),t.toString(s))}),o):n}});const D=O.translate.bind(O),R=O.translateWithDefault.bind(O);var L=w({name:"errors",initialState:{logs:[],startupErrors:[]},computed:{hasErrors:e=>{let{logs:t}=e;return t.length>0},hasNewErrors:e=>{let{logs:t}=e;return t.some((e=>!e.seen))},hasStartupErrors:e=>{let{startupErrors:t}=e;return t.length>0}}});var F=t.facade(new class extends L{constructor(){super(...arguments),i.default(this,"forceReporting",!1),i.default(this,"enabled",!0)}enable(){this.enabled=!0}disable(){this.enabled=!1}async inspect(e){Array.isArray(e)||await this.createErrorReport(e)}async report(e,t){if((M.isDevelopment||M.isTesting)&&this.logError(e),!this.enabled)throw e;if(!M.isMounted){const t=await this.createStartupErrorReport(e);return void(t&&this.setState({startupErrors:this.startupErrors.concat(t)}))}const r={report:await this.createErrorReport(e),seen:!1,date:new Date};H.alert(t??"Something went wrong, but it's not your fault! (look at the console for details)"),this.setState({logs:[r].concat(this.logs)})}see(e){this.setState({logs:this.logs.map((t=>t.report!==e?t:{...t,seen:!0}))})}seeAll(){this.setState({logs:this.logs.map((e=>({...e,seen:!0})))})}logError(e){console.error(e),t.isObject(e)&&e.cause&&this.logError(e.cause)}async createErrorReport(e){return"string"==typeof e?{title:e}:e instanceof Error||e instanceof t.JSError?this.createErrorReportFromError(e):{title:D("errors.unknown"),error:e}}async createStartupErrorReport(e){return e instanceof ServiceBootError?e.cause instanceof ServiceBootError?null:this.createErrorReport(e.cause):this.createErrorReport(e)}createErrorReportFromError(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return{title:e.name,description:e.message,details:e.stack,error:e,...t}}});const T={$errors:F};var z={async install(e){await P(e,T)}};const K={$lang:O};var U={async install(e){e.config.globalProperties.$t??=D,e.config.globalProperties.$td=R,await P(e,K)}};function W(t,r){const o=G.on(t,r);e.onUnmounted((()=>o()))}function J(){const r=e.useAttrs(),o=e.computed((()=>r.class));return[e.computed((()=>t.objectWithout(r,"class"))),o]}var Q=e.defineComponent({__name:"AGHeadlessModal",props:{cancellable:d(!0)},setup(t,{expose:r}){const o=t,n=e.ref(null),a=e.ref(!0),l=e.ref(!1),{modal:i}=h("modal","could not obtain modal reference from <AGHeadlessModal>, did you render this component manually? Show it using $ui.openModal() instead");async function u(){n.value?.$el&&(a.value=!0)}async function c(e){l.value||(G.emit("modal-will-close",{modal:i,result:e}),await u(),l.value=!0,G.emit("modal-closed",{modal:i,result:e}))}return W("close-modal",(async({id:e,result:t})=>{e===i.id&&await c(t)})),W("hide-modal",(async({id:e})=>{e===i.id&&await u()})),W("show-modal",(async({id:e})=>{e===i.id&&await async function(){n.value?.$el&&(a.value=!1)}()})),r({close:c,cancellable:e.toRef(o,"cancellable")}),(r,o)=>(e.openBlock(),e.createBlock(e.unref(s.Dialog),{ref_key:"$root",ref:n,open:!0,onClose:o[0]||(o[0]=e=>t.cancellable&&c())},{default:e.withCtx((()=>[e.renderSlot(r.$slots,"default",{close:c})])),_:3},512))}});Q.__file="src/components/headless/modals/AGHeadlessModal.vue";var X=e.defineComponent({__name:"AGModalContext",props:{modal:_(),childIndex:x()},setup(t){const r=t;return e.provide("modal",{modal:e.toRef(r,"modal"),childIndex:e.toRef(r,"childIndex")}),(r,o)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(t.modal.component),e.normalizeProps(e.guardReactiveProps(t.modal.properties)),null,16))}});X.__file="src/components/modals/AGModalContext.vue";const Y=e.createElementVNode("div",{class:"pointer-events-none fixed inset-0 z-50 bg-black/30"},null,-1);var Z=e.defineComponent({__name:"AGHeadlessModalPanel",setup(t){const r=h("modal","could not obtain modal reference from <AGHeadlessModalPanel>, did you render this component manually? Show it using $ui.openModal() instead"),o=e.computed((()=>H.modals[r.childIndex]??null));return(t,n)=>(e.openBlock(),e.createBlock(e.unref(s.DialogPanel),null,{default:e.withCtx((()=>[e.renderSlot(t.$slots,"default"),o.value?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[Y,e.createVNode(X,{"child-index":e.unref(r).childIndex+1,modal:o.value},null,8,["child-index","modal"])],64)):e.createCommentVNode("v-if",!0)])),_:3}))}});Z.__file="src/components/headless/modals/AGHeadlessModalPanel.vue";const ee={class:"fixed inset-0 flex items-center justify-center"},te={class:"flex max-h-full flex-col overflow-auto p-4"};var re=e.defineComponent({__name:"AGModal",props:{cancellable:d(!0)},setup(t,{expose:r}){const o=e.ref();return r({close:async()=>o.value?.close(),cancellable:e.computed((()=>!!o.value?.cancellable))}),(r,s)=>(e.openBlock(),e.createBlock(Q,{ref_key:"$headlessModal",ref:o,cancellable:t.cancellable,class:"relative z-50"},{default:e.withCtx((({close:t})=>[e.createElementVNode("div",ee,[e.createVNode(Z,{class:"flex max-h-full max-w-full flex-col overflow-hidden bg-white"},{default:e.withCtx((()=>[e.createElementVNode("div",te,[e.renderSlot(r.$slots,"default",{close:t})])])),_:2},1024)])])),_:3},8,["cancellable"]))}});function oe(e){return t=a.marked(e,{mangle:!1,headerIds:!1}),u.default.sanitize(t,{ADD_ATTR:["target"]});var t}re.__file="src/components/modals/AGModal.vue";var se=e.defineComponent({__name:"AGMarkdown",props:{as:y("div"),langKey:y(),text:y(),inline:d(),raw:d()},setup(t){const r=t,o=e.computed((()=>r.text??(r.langKey&&D(r.langKey)))),s=e.computed((()=>{if(!o.value)return null;let e=oe(o.value);return r.inline&&(e=e.replace("<p>","<span>").replace("</p>","</span>")),e})),n=()=>e.h(r.as,{class:r.raw?"":"prose",innerHTML:s.value});return(t,r)=>(e.openBlock(),e.createBlock(n))}});se.__file="src/components/basic/AGMarkdown.vue";var ne=e.defineComponent({__name:"AGAlertModal",props:{title:y(),message:b()},setup:t=>(r,o)=>(e.openBlock(),e.createBlock(re,null,{default:e.withCtx((()=>[t.title?(e.openBlock(),e.createBlock(se,{key:0,text:t.title,as:"h2",class:"font-semibold",raw:"",inline:""},null,8,["text"])):e.createCommentVNode("v-if",!0),e.createVNode(se,{text:t.message},null,8,["text"])])),_:1}))});ne.__file="src/components/modals/AGAlertModal.vue";var ae=e.defineComponent({__name:"AGHeadlessButton",props:{url:y(),route:y(),routeParams:g((()=>({}))),routeQuery:g((()=>({}))),submit:d()},setup(r){const{url:o,route:s,routeParams:n,routeQuery:a,submit:l}=r,i=e.computed((()=>s?{tag:"router-link",props:{to:t.objectWithoutEmpty({name:s,params:n,query:a})}}:o?{tag:"a",props:{target:"_blank",href:o}}:{tag:"button",props:{type:l?"submit":"button"}}));return(t,r)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(i.value.tag),e.normalizeProps(e.guardReactiveProps(i.value.props)),{default:e.withCtx((()=>[e.renderSlot(t.$slots,"default")])),_:3},16))}});ae.__file="src/components/headless/forms/AGHeadlessButton.vue";var le=e.defineComponent({__name:"AGButton",props:{clear:d(),secondary:d()},setup(t){const r=t,o=e.computed((()=>r.secondary?"text-white bg-gray-600 hover:bg-gray-500 focus-visible:outline-offset-2 focus-visible:outline-gray-600":r.clear?"hover:bg-gray-500/20 focus-visible:outline-gray-500/60":["text-white bg-indigo-600","hover:bg-indigo-500","focus-visible:outline-offset-2 focus-visible:outline-indigo-600"].join(" ")));return(t,r)=>(e.openBlock(),e.createBlock(ae,{class:e.normalizeClass(["px-2.5 py-1.5 focus-visible:outline focus-visible:outline-2",o.value])},{default:e.withCtx((()=>[e.renderSlot(t.$slots,"default")])),_:3},8,["class"]))}});le.__file="src/components/forms/AGButton.vue";const ie={class:"mt-2 flex flex-row-reverse gap-2"};var ue=e.defineComponent({__name:"AGConfirmModal",props:{title:y(),message:b()},setup:t=>(r,o)=>(e.openBlock(),e.createBlock(re,{cancellable:!1},{default:e.withCtx((({close:o})=>[t.title?(e.openBlock(),e.createBlock(se,{key:0,text:t.title,as:"h1"},null,8,["text"])):e.createCommentVNode("v-if",!0),e.createVNode(se,{text:t.message},null,8,["text"]),e.createElementVNode("div",ie,[e.createVNode(le,{onClick:e=>o(!0)},{default:e.withCtx((()=>[e.createTextVNode(e.toDisplayString(r.$td("ui.ok","OK")),1)])),_:2},1032,["onClick"]),e.createVNode(le,{secondary:"",onClick:e=>o()},{default:e.withCtx((()=>[e.createTextVNode(e.toDisplayString(r.$td("ui.cancel","Cancel")),1)])),_:2},1032,["onClick"])])])),_:1}))});ue.__file="src/components/modals/AGConfirmModal.vue";var ce=e.defineComponent({__name:"AGLoadingModal",props:{message:y()},setup(t){const r=t,o=e.computed((()=>r.message??R("ui.loading","Loading...")));return(t,r)=>(e.openBlock(),e.createBlock(re,{cancellable:!1},{default:e.withCtx((()=>[e.createVNode(se,{text:o.value},null,8,["text"])])),_:1}))}});ce.__file="src/components/modals/AGLoadingModal.vue";const de={$ui:H};var pe={async install(e,t){const r={[V.AlertModal]:ne,[V.ConfirmModal]:ue,[V.LoadingModal]:ce};Object.entries({...r,...t.components}).forEach((e=>{let[t,r]=e;return H.registerComponent(t,r)})),await P(e,de)}};const me={key:0};var fe=e.defineComponent({__name:"AGAppOverlays",setup(t){const r=e.ref(null),o=e.ref(!0),s=e.computed((()=>H.modals[0]??null));return W("show-overlays-backdrop",(async()=>{r.value&&o.value&&(o.value=!1,r.value.classList.remove("opacity-0"))})),W("hide-overlays-backdrop",(async()=>{r.value&&!o.value&&(o.value=!0,r.value.classList.add("opacity-0"))})),(t,o)=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[e.createElementVNode("div",{ref_key:"$backdrop",ref:r,class:"pointer-events-none fixed inset-0 z-50 bg-black/30 opacity-0"},null,512),s.value?(e.openBlock(),e.createElementBlock("aside",me,[e.createVNode(X,{"child-index":1,modal:s.value},null,8,["modal"])])):e.createCommentVNode("v-if",!0)],64))}});fe.__file="src/components/AGAppOverlays.vue";const he={class:"flex h-full flex-col text-base font-normal leading-tight text-gray-900 antialiased"};var ve=e.defineComponent({__name:"AGAppLayout",setup:t=>(t,r)=>(e.openBlock(),e.createElementBlock("div",he,[e.renderSlot(t.$slots,"default"),e.createVNode(fe)]))});ve.__file="src/components/AGAppLayout.vue";var ge=e.defineComponent({__name:"AGHeadlessInput",props:{as:y("div"),name:y(),modelValue:v([String,Number,Boolean])},emits:["update:modelValue"],setup(r,{expose:o,emit:s}){const n=r,a=e.computed((()=>l&&n.name?l.errors[n.name]??null:null)),l=e.inject("form",null),i={id:`input-${t.uuid()}`,value:e.computed((()=>l&&n.name?l.getFieldValue(n.name):n.modelValue)),errors:e.readonly(a),update(e){l&&n.name?l.setFieldValue(n.name,e):s("update:modelValue",e)}};return e.provide("input",i),o(i),(t,o)=>r.as?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(r.as),{key:0},{default:e.withCtx((()=>[e.renderSlot(t.$slots,"default")])),_:3})):e.renderSlot(t.$slots,"default",{key:1})}});ge.__file="src/components/headless/forms/AGHeadlessInput.vue";const xe=["id"];var _e=e.defineComponent({__name:"AGHeadlessInputError",setup(t){const r=h("input","<AGHeadlessInputError> must be a child of a <AGHeadlessInput>"),o=e.computed((()=>r.errors?R(`errors.${r.errors[0]}`,`Error: ${r.errors[0]}`):null));return(t,s)=>o.value?(e.openBlock(),e.createElementBlock("p",{key:0,id:`${e.unref(r).id}-error`},e.toDisplayString(o.value),9,xe)):e.createCommentVNode("v-if",!0)}});_e.__file="src/components/headless/forms/AGHeadlessInputError.vue";const be=["id","type","value","aria-invalid","aria-describedby","checked"];var ye=e.defineComponent({__name:"AGHeadlessInputInput",props:{type:y("text")},setup(t){const r=t,o=e.ref(),s=h("input","<AGHeadlessInputInput> must be a child of a <AGHeadlessInput>"),n=e.computed((()=>s.value)),a=e.computed((()=>{if("checkbox"===r.type)return!!n.value}));function l(){o.value&&s.update("checkbox"===r.type?o.value.checked:o.value.value)}return(r,i)=>(e.openBlock(),e.createElementBlock("input",{id:e.unref(s).id,ref_key:"$input",ref:o,type:t.type,value:n.value,"aria-invalid":e.unref(s).errors?"true":"false","aria-describedby":e.unref(s).errors?`${e.unref(s).id}-error`:void 0,checked:a.value,onInput:l},null,40,be))}});ye.__file="src/components/headless/forms/AGHeadlessInputInput.vue";const ke=["for"];var je=e.defineComponent({__name:"AGHeadlessInputLabel",setup(t){const r=h("input","<AGHeadlessInputLabel> must be a child of a <AGHeadlessInput>");return(t,o)=>(e.openBlock(),e.createElementBlock("label",{for:e.unref(r).id},[e.renderSlot(t.$slots,"default")],8,ke))}});je.__file="src/components/headless/forms/AGHeadlessInputLabel.vue";const Ae={class:"ml-2"};var Se=e.defineComponent({inheritAttrs:!1,__name:"AGCheckbox",props:{name:y()},setup(t){const r=p();return(o,s)=>(e.openBlock(),e.createBlock(ge,{ref_key:"$input",ref:r,name:t.name,class:"flex"},{default:e.withCtx((()=>[e.createVNode(ye,e.mergeProps(o.$attrs,{type:"checkbox",class:{"text-indigo-600 focus:ring-indigo-600":!e.unref(r)?.errors,"border-red-200 text-red-600 focus:ring-red-600":e.unref(r)?.errors}}),null,16,["class"]),e.createElementVNode("div",Ae,[o.$slots.default?(e.openBlock(),e.createBlock(je,{key:0},{default:e.withCtx((()=>[e.renderSlot(o.$slots,"default")])),_:3})):e.createCommentVNode("v-if",!0),e.createVNode(_e,{class:"text-sm text-red-600"})])])),_:3},8,["name"]))}});Se.__file="src/components/forms/AGCheckbox.vue";const we=["onSubmit"];var Ce=e.defineComponent({__name:"AGForm",props:{form:g()},emits:["submit"],setup(t,{emit:r}){const o=t;function s(){o.form&&!o.form.submit()||r("submit")}return e.provide("form",o.form),(t,r)=>(e.openBlock(),e.createElementBlock("form",{onSubmit:e.withModifiers(s,["prevent"])},[e.renderSlot(t.$slots,"default")],40,we))}});Ce.__file="src/components/forms/AGForm.vue";const Ee={class:"absolute bottom-0 left-0 translate-y-full"};var Ge=e.defineComponent({inheritAttrs:!1,__name:"AGInput",props:{name:y()},setup(t){const r=p(),[o,s]=J();return(n,a)=>(e.openBlock(),e.createBlock(ge,{ref_key:"$input",ref:r,class:e.normalizeClass(["relative flex flex-col items-center",e.unref(s)]),name:t.name},{default:e.withCtx((()=>[e.createVNode(ye,e.mergeProps(e.unref(o),{class:["block w-full border-0 py-1.5 text-gray-900 ring-1 ring-inset ring-gray-300 placeholder:text-gray-400 focus:ring-2 focus:ring-inset focus:ring-indigo-600",{"ring-1 ring-red-500":e.unref(r)?.errors}]}),null,16,["class"]),e.createElementVNode("div",Ee,[e.createVNode(_e,{class:"mt-1 text-sm text-red-500"})])])),_:1},8,["class","name"]))}});Ge.__file="src/components/forms/AGInput.vue";var Be=e.defineComponent({__name:"AGHeadlessModalTitle",props:{as:y("h2")},setup:t=>(r,o)=>(e.openBlock(),e.createBlock(e.unref(s.DialogTitle),{as:t.as},{default:e.withCtx((()=>[e.renderSlot(r.$slots,"default")])),_:3},8,["as"]))});Be.__file="src/components/headless/modals/AGHeadlessModalTitle.vue";const qe={String:"string",Number:"number",Boolean:"boolean"};class Me extends t.MagicObject{constructor(t){super(),i.default(this,"errors",void 0),i.default(this,"_fields",void 0),i.default(this,"_data",void 0),i.default(this,"_valid",void 0),i.default(this,"_submitted",void 0),i.default(this,"_errors",void 0),this._fields=t,this._submitted=e.ref(!1),this._data=this.getInitialData(t),this._errors=this.getInitialErrors(t),this._valid=e.computed((()=>!Object.values(this._errors).some((e=>null!==e)))),this.errors=e.readonly(this._errors)}get valid(){return this._valid.value}get submitted(){return this._submitted.value}setFieldValue(e,t){this._data[e]=t,this._submitted.value&&this.validate()}getFieldValue(e){return this._data[e]}validate(){const e=Object.entries(this._fields).reduce(((e,t)=>{let[r,o]=t;return e[r]=this.getFieldErrors(r,o),e}),{});return this.resetErrors(e),this.valid}reset(){this._submitted.value=!1,this.resetData(),this.resetErrors()}submit(){return this._submitted.value=!0,this.validate()}__get(e){return e in this._fields?this._data[e]:super.__get(e)}__set(e,t){e in this._fields?Object.assign(this._data,{[e]:t}):super.__set(e,t)}getFieldErrors(e,t){const r=[];return t.rules?.includes("required")&&!this._data[e]&&r.push("required"),r.length>0?r:null}getInitialData(t){if(this.static().isConjuring())return{};const r=Object.entries(t).reduce(((e,t)=>{let[r,o]=t;return e[r]=o.default??null,e}),{});return e.reactive(r)}getInitialErrors(t){if(this.static().isConjuring())return{};const r=Object.keys(t).reduce(((e,t)=>(e[t]=null,e)),{});return e.reactive(r)}resetData(){for(const[e,t]of Object.entries(this._fields))this._data[e]=t.default??null}resetErrors(e){Object.keys(this._errors).forEach((e=>delete this._errors[e])),e&&Object.assign(this._errors,e)}}exports.AGAlertModal=ne,exports.AGAppLayout=ve,exports.AGAppOverlays=fe,exports.AGButton=le,exports.AGCheckbox=Se,exports.AGConfirmModal=ue,exports.AGForm=Ce,exports.AGHeadlessButton=ae,exports.AGHeadlessInput=ge,exports.AGHeadlessInputError=_e,exports.AGHeadlessInputInput=ye,exports.AGHeadlessInputLabel=je,exports.AGHeadlessModal=Q,exports.AGHeadlessModalPanel=Z,exports.AGHeadlessModalTitle=Be,exports.AGInput=Ge,exports.AGLoadingModal=ce,exports.AGMarkdown=se,exports.AGModal=re,exports.AGModalContext=X,exports.App=M,exports.AppService=q,exports.Errors=F,exports.Events=G,exports.EventsService=E,exports.FormFieldTypes=qe,exports.Lang=O,exports.Service=C,exports.UI=H,exports.UIComponents=V,exports.arrayProp=function(e){return{type:Array,default:e??(()=>[])}},exports.booleanInput=function(e){return{default:e,type:qe.Boolean}},exports.booleanProp=d,exports.bootServices=P,exports.bootstrapApplication=async function(t){let r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const o=[j,z,U,$,pe,...r.plugins??[]],s=e.createApp(t);await Promise.all(o.map((e=>e.install(s,r)))??[]),s.mount("#app"),G.emit("application-mounted")},exports.componentRef=p,exports.defineDirective=m,exports.definePlugin=c,exports.defineServiceState=w,exports.enumProp=function(e,t){const r=Object.values(e);return{type:String,default:t??r[0]??null,validator:e=>r.includes(e)}},exports.injectOrFail=function(r,o){return e.inject(r)??t.fail(o??`Could not resolve '${r}' injection key`)},exports.injectReactive=f,exports.injectReactiveOrFail=h,exports.mixedProp=v,exports.numberInput=function(e){return{default:e,type:qe.Number}},exports.numberProp=function(){return{type:Number,default:arguments.length>0&&void 0!==arguments[0]?arguments[0]:null}},exports.objectProp=g,exports.onCleanMounted=function(r){let o=t.noop;e.onMounted((()=>o=r())),e.onUnmounted((()=>o()))},exports.requiredArrayProp=function(){return{type:Array,required:!0}},exports.requiredBooleanInput=function(e){return{default:e,type:qe.Boolean,rules:"required"}},exports.requiredEnumProp=function(e){const t=Object.values(e);return{type:String,required:!0,validator:e=>t.includes(e)}},exports.requiredMixedProp=function(e){return{type:e,required:!0}},exports.requiredNumberInput=function(e){return{default:e,type:qe.Number,rules:"required"}},exports.requiredNumberProp=x,exports.requiredObjectProp=_,exports.requiredStringInput=function(e){return{default:e,type:qe.String,rules:"required"}},exports.requiredStringProp=b,exports.stringInput=function(e){return{default:e,type:qe.String}},exports.stringProp=y,exports.translate=D,exports.translateWithDefault=R,exports.useEvent=W,exports.useForm=function(e){return new Me(e)},exports.useInputAttrs=J;
|
|
2
2
|
//# sourceMappingURL=aerogel-core.cjs.js.map
|
package/dist/aerogel-core.d.ts
CHANGED
|
@@ -11,7 +11,7 @@ import type { Directive } from 'vue';
|
|
|
11
11
|
import { ExtractPropTypes } from 'vue';
|
|
12
12
|
import { Facade } from '@noeldemartin/utils';
|
|
13
13
|
import type { InjectionKey } from 'vue';
|
|
14
|
-
import type {
|
|
14
|
+
import type { JSError } from '@noeldemartin/utils';
|
|
15
15
|
import { MagicObject } from '@noeldemartin/utils';
|
|
16
16
|
import type { ObjectValues } from '@noeldemartin/utils';
|
|
17
17
|
import { PromisedValue } from '@noeldemartin/utils';
|
|
@@ -19,7 +19,6 @@ import { PropType } from 'vue';
|
|
|
19
19
|
import type { Ref } from 'vue';
|
|
20
20
|
import { RendererElement } from 'vue';
|
|
21
21
|
import { RendererNode } from 'vue';
|
|
22
|
-
import type { RouteParams } from 'vue-router';
|
|
23
22
|
import type { UnwrapNestedRefs } from 'vue';
|
|
24
23
|
import { VNode } from 'vue';
|
|
25
24
|
import { VNodeProps } from 'vue';
|
|
@@ -69,6 +68,12 @@ export declare const AGAppOverlays: DefineComponent< {}, (_ctx: any, _cache:
|
|
|
69
68
|
}>, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, VNodeProps & AllowedComponentProps & ComponentCustomProps, Readonly<ExtractPropTypes< {}>>, {}, {}>;
|
|
70
69
|
|
|
71
70
|
export declare const AGButton: DefineComponent< {
|
|
71
|
+
clear: {
|
|
72
|
+
type: PropType<boolean>;
|
|
73
|
+
validator?(value: unknown): boolean;
|
|
74
|
+
} & {
|
|
75
|
+
default: boolean | (() => boolean) | null;
|
|
76
|
+
};
|
|
72
77
|
secondary: {
|
|
73
78
|
type: PropType<boolean>;
|
|
74
79
|
validator?(value: unknown): boolean;
|
|
@@ -78,6 +83,12 @@ default: boolean | (() => boolean) | null;
|
|
|
78
83
|
}, (_ctx: any, _cache: any) => VNode<RendererNode, RendererElement, {
|
|
79
84
|
[key: string]: any;
|
|
80
85
|
}>, unknown, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, VNodeProps & AllowedComponentProps & ComponentCustomProps, Readonly<ExtractPropTypes< {
|
|
86
|
+
clear: {
|
|
87
|
+
type: PropType<boolean>;
|
|
88
|
+
validator?(value: unknown): boolean;
|
|
89
|
+
} & {
|
|
90
|
+
default: boolean | (() => boolean) | null;
|
|
91
|
+
};
|
|
81
92
|
secondary: {
|
|
82
93
|
type: PropType<boolean>;
|
|
83
94
|
validator?(value: unknown): boolean;
|
|
@@ -85,9 +96,30 @@ validator?(value: unknown): boolean;
|
|
|
85
96
|
default: boolean | (() => boolean) | null;
|
|
86
97
|
};
|
|
87
98
|
}>>, {
|
|
99
|
+
clear: boolean;
|
|
88
100
|
secondary: boolean;
|
|
89
101
|
}, {}>;
|
|
90
102
|
|
|
103
|
+
export declare const AGCheckbox: DefineComponent< {
|
|
104
|
+
name: {
|
|
105
|
+
type: PropType<string | null>;
|
|
106
|
+
validator?(value: unknown): boolean;
|
|
107
|
+
} & {
|
|
108
|
+
default: string | (() => string | null) | null;
|
|
109
|
+
};
|
|
110
|
+
}, (_ctx: any, _cache: any) => VNode<RendererNode, RendererElement, {
|
|
111
|
+
[key: string]: any;
|
|
112
|
+
}>, unknown, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, VNodeProps & AllowedComponentProps & ComponentCustomProps, Readonly<ExtractPropTypes< {
|
|
113
|
+
name: {
|
|
114
|
+
type: PropType<string | null>;
|
|
115
|
+
validator?(value: unknown): boolean;
|
|
116
|
+
} & {
|
|
117
|
+
default: string | (() => string | null) | null;
|
|
118
|
+
};
|
|
119
|
+
}>>, {
|
|
120
|
+
name: string | null;
|
|
121
|
+
}, {}>;
|
|
122
|
+
|
|
91
123
|
export declare const AGConfirmModal: DefineComponent< {
|
|
92
124
|
title: {
|
|
93
125
|
type: PropType<string | null>;
|
|
@@ -156,16 +188,16 @@ validator?(value: unknown): boolean;
|
|
|
156
188
|
default: string | (() => string | null) | null;
|
|
157
189
|
};
|
|
158
190
|
routeParams: {
|
|
159
|
-
type: PropType<
|
|
191
|
+
type: PropType< {}>;
|
|
160
192
|
validator?(value: unknown): boolean;
|
|
161
193
|
} & {
|
|
162
|
-
default:
|
|
194
|
+
default: {} | (() => {}) | null;
|
|
163
195
|
};
|
|
164
196
|
routeQuery: {
|
|
165
|
-
type: PropType<
|
|
197
|
+
type: PropType< {}>;
|
|
166
198
|
validator?(value: unknown): boolean;
|
|
167
199
|
} & {
|
|
168
|
-
default:
|
|
200
|
+
default: {} | (() => {}) | null;
|
|
169
201
|
};
|
|
170
202
|
submit: {
|
|
171
203
|
type: PropType<boolean>;
|
|
@@ -189,16 +221,16 @@ validator?(value: unknown): boolean;
|
|
|
189
221
|
default: string | (() => string | null) | null;
|
|
190
222
|
};
|
|
191
223
|
routeParams: {
|
|
192
|
-
type: PropType<
|
|
224
|
+
type: PropType< {}>;
|
|
193
225
|
validator?(value: unknown): boolean;
|
|
194
226
|
} & {
|
|
195
|
-
default:
|
|
227
|
+
default: {} | (() => {}) | null;
|
|
196
228
|
};
|
|
197
229
|
routeQuery: {
|
|
198
|
-
type: PropType<
|
|
230
|
+
type: PropType< {}>;
|
|
199
231
|
validator?(value: unknown): boolean;
|
|
200
232
|
} & {
|
|
201
|
-
default:
|
|
233
|
+
default: {} | (() => {}) | null;
|
|
202
234
|
};
|
|
203
235
|
submit: {
|
|
204
236
|
type: PropType<boolean>;
|
|
@@ -209,17 +241,17 @@ default: boolean | (() => boolean) | null;
|
|
|
209
241
|
}>>, {
|
|
210
242
|
url: string | null;
|
|
211
243
|
route: string | null;
|
|
212
|
-
routeParams:
|
|
213
|
-
routeQuery:
|
|
244
|
+
routeParams: {};
|
|
245
|
+
routeQuery: {};
|
|
214
246
|
submit: boolean;
|
|
215
247
|
}, {}>;
|
|
216
248
|
|
|
217
249
|
export declare const AGHeadlessInput: DefineComponent< {
|
|
218
250
|
as: {
|
|
219
|
-
type: PropType<string
|
|
251
|
+
type: PropType<string>;
|
|
220
252
|
validator?(value: unknown): boolean;
|
|
221
253
|
} & {
|
|
222
|
-
default: string | (() => string
|
|
254
|
+
default: string | (() => string) | null;
|
|
223
255
|
};
|
|
224
256
|
name: {
|
|
225
257
|
type: PropType<string | null>;
|
|
@@ -228,19 +260,19 @@ validator?(value: unknown): boolean;
|
|
|
228
260
|
default: string | (() => string | null) | null;
|
|
229
261
|
};
|
|
230
262
|
modelValue: {
|
|
231
|
-
type: PropType<string | null>;
|
|
263
|
+
type: PropType<string | number | boolean | null>;
|
|
232
264
|
validator?(value: unknown): boolean;
|
|
233
265
|
} & {
|
|
234
|
-
default: string | (() => string | null) | null;
|
|
266
|
+
default: string | number | boolean | (() => string | number | boolean | null) | null;
|
|
235
267
|
};
|
|
236
268
|
}, (_ctx: any, _cache: any) => VNode<RendererNode, RendererElement, {
|
|
237
269
|
[key: string]: any;
|
|
238
270
|
}>, unknown, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, "update:modelValue"[], "update:modelValue", VNodeProps & AllowedComponentProps & ComponentCustomProps, Readonly<ExtractPropTypes< {
|
|
239
271
|
as: {
|
|
240
|
-
type: PropType<string
|
|
272
|
+
type: PropType<string>;
|
|
241
273
|
validator?(value: unknown): boolean;
|
|
242
274
|
} & {
|
|
243
|
-
default: string | (() => string
|
|
275
|
+
default: string | (() => string) | null;
|
|
244
276
|
};
|
|
245
277
|
name: {
|
|
246
278
|
type: PropType<string | null>;
|
|
@@ -249,26 +281,42 @@ validator?(value: unknown): boolean;
|
|
|
249
281
|
default: string | (() => string | null) | null;
|
|
250
282
|
};
|
|
251
283
|
modelValue: {
|
|
252
|
-
type: PropType<string | null>;
|
|
284
|
+
type: PropType<string | number | boolean | null>;
|
|
253
285
|
validator?(value: unknown): boolean;
|
|
254
286
|
} & {
|
|
255
|
-
default: string | (() => string | null) | null;
|
|
287
|
+
default: string | number | boolean | (() => string | number | boolean | null) | null;
|
|
256
288
|
};
|
|
257
289
|
}>> & {
|
|
258
290
|
"onUpdate:modelValue"?: ((...args: any[]) => any) | undefined;
|
|
259
291
|
}, {
|
|
260
|
-
as: string
|
|
292
|
+
as: string;
|
|
261
293
|
name: string | null;
|
|
262
|
-
modelValue: string | null;
|
|
294
|
+
modelValue: string | number | boolean | null;
|
|
263
295
|
}, {}>;
|
|
264
296
|
|
|
265
297
|
export declare const AGHeadlessInputError: DefineComponent< {}, (_ctx: any, _cache: any) => VNode<RendererNode, RendererElement, {
|
|
266
298
|
[key: string]: any;
|
|
267
299
|
}>, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, VNodeProps & AllowedComponentProps & ComponentCustomProps, Readonly<ExtractPropTypes< {}>>, {}, {}>;
|
|
268
300
|
|
|
269
|
-
export declare const AGHeadlessInputInput: DefineComponent< {
|
|
301
|
+
export declare const AGHeadlessInputInput: DefineComponent< {
|
|
302
|
+
type: {
|
|
303
|
+
type: PropType<string>;
|
|
304
|
+
validator?(value: unknown): boolean;
|
|
305
|
+
} & {
|
|
306
|
+
default: string | (() => string) | null;
|
|
307
|
+
};
|
|
308
|
+
}, (_ctx: any, _cache: any) => VNode<RendererNode, RendererElement, {
|
|
270
309
|
[key: string]: any;
|
|
271
|
-
}>,
|
|
310
|
+
}>, unknown, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, VNodeProps & AllowedComponentProps & ComponentCustomProps, Readonly<ExtractPropTypes< {
|
|
311
|
+
type: {
|
|
312
|
+
type: PropType<string>;
|
|
313
|
+
validator?(value: unknown): boolean;
|
|
314
|
+
} & {
|
|
315
|
+
default: string | (() => string) | null;
|
|
316
|
+
};
|
|
317
|
+
}>>, {
|
|
318
|
+
type: string;
|
|
319
|
+
}, {}>;
|
|
272
320
|
|
|
273
321
|
export declare const AGHeadlessInputLabel: DefineComponent< {}, (_ctx: any, _cache: any) => VNode<RendererNode, RendererElement, {
|
|
274
322
|
[key: string]: any;
|
|
@@ -338,6 +386,26 @@ default: string | (() => string | null) | null;
|
|
|
338
386
|
name: string | null;
|
|
339
387
|
}, {}>;
|
|
340
388
|
|
|
389
|
+
export declare const AGLoadingModal: DefineComponent< {
|
|
390
|
+
message: {
|
|
391
|
+
type: PropType<string | null>;
|
|
392
|
+
validator?(value: unknown): boolean;
|
|
393
|
+
} & {
|
|
394
|
+
default: string | (() => string | null) | null;
|
|
395
|
+
};
|
|
396
|
+
}, (_ctx: any, _cache: any) => VNode<RendererNode, RendererElement, {
|
|
397
|
+
[key: string]: any;
|
|
398
|
+
}>, unknown, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, VNodeProps & AllowedComponentProps & ComponentCustomProps, Readonly<ExtractPropTypes< {
|
|
399
|
+
message: {
|
|
400
|
+
type: PropType<string | null>;
|
|
401
|
+
validator?(value: unknown): boolean;
|
|
402
|
+
} & {
|
|
403
|
+
default: string | (() => string | null) | null;
|
|
404
|
+
};
|
|
405
|
+
}>>, {
|
|
406
|
+
message: string | null;
|
|
407
|
+
}, {}>;
|
|
408
|
+
|
|
341
409
|
export declare const AGMarkdown: DefineComponent< {
|
|
342
410
|
as: {
|
|
343
411
|
type: PropType<string>;
|
|
@@ -410,9 +478,25 @@ inline: boolean;
|
|
|
410
478
|
raw: boolean;
|
|
411
479
|
}, {}>;
|
|
412
480
|
|
|
413
|
-
export declare const AGModal: DefineComponent< {
|
|
481
|
+
export declare const AGModal: DefineComponent< {
|
|
482
|
+
cancellable: {
|
|
483
|
+
type: PropType<boolean>;
|
|
484
|
+
validator?(value: unknown): boolean;
|
|
485
|
+
} & {
|
|
486
|
+
default: boolean | (() => boolean) | null;
|
|
487
|
+
};
|
|
488
|
+
}, (_ctx: any, _cache: any) => VNode<RendererNode, RendererElement, {
|
|
414
489
|
[key: string]: any;
|
|
415
|
-
}>,
|
|
490
|
+
}>, unknown, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, VNodeProps & AllowedComponentProps & ComponentCustomProps, Readonly<ExtractPropTypes< {
|
|
491
|
+
cancellable: {
|
|
492
|
+
type: PropType<boolean>;
|
|
493
|
+
validator?(value: unknown): boolean;
|
|
494
|
+
} & {
|
|
495
|
+
default: boolean | (() => boolean) | null;
|
|
496
|
+
};
|
|
497
|
+
}>>, {
|
|
498
|
+
cancellable: boolean;
|
|
499
|
+
}, {}>;
|
|
416
500
|
|
|
417
501
|
export declare const AGModalContext: DefineComponent< {
|
|
418
502
|
modal: {
|
|
@@ -446,7 +530,8 @@ required: true;
|
|
|
446
530
|
|
|
447
531
|
export declare const App: Facade<AppService, Constructor<AppService>>;
|
|
448
532
|
|
|
449
|
-
export declare class AppService extends
|
|
533
|
+
export declare class AppService extends _default_2 {
|
|
534
|
+
protected boot(): Promise<void>;
|
|
450
535
|
}
|
|
451
536
|
|
|
452
537
|
export declare function arrayProp<T>(defaultValue?: () => T[]): OptionalProp<T[]>;
|
|
@@ -456,6 +541,8 @@ declare type BaseProp<T> = {
|
|
|
456
541
|
validator?(value: unknown): boolean;
|
|
457
542
|
};
|
|
458
543
|
|
|
544
|
+
export declare function booleanInput(defaultValue?: boolean): FormFieldDefinition<typeof FormFieldTypes.Boolean>;
|
|
545
|
+
|
|
459
546
|
export declare function booleanProp(defaultValue?: boolean): OptionalProp<boolean>;
|
|
460
547
|
|
|
461
548
|
export declare function bootServices(app: App_2, services: Record<string, Service>): Promise<void>;
|
|
@@ -466,17 +553,30 @@ export declare function componentRef<T>(): Ref<UnwrapNestedRefs<T> | undefined>;
|
|
|
466
553
|
|
|
467
554
|
export declare type ComputedStateDefinition<TState extends ServiceState, TComputedState extends ServiceState> = {
|
|
468
555
|
[K in keyof TComputedState]: (state: TState) => TComputedState[K];
|
|
469
|
-
}
|
|
556
|
+
} & ThisType<{
|
|
557
|
+
readonly [K in keyof TComputedState]: TComputedState[K];
|
|
558
|
+
}>;
|
|
470
559
|
|
|
471
560
|
declare const _default: Constructor< {
|
|
561
|
+
logs: ErrorReportLog[];
|
|
562
|
+
startupErrors: ErrorReport[];
|
|
563
|
+
}> & Constructor< {
|
|
564
|
+
hasErrors: boolean;
|
|
565
|
+
hasNewErrors: boolean;
|
|
566
|
+
hasStartupErrors: boolean;
|
|
567
|
+
}> & Constructor<Service<DefaultServiceState, {}, Partial<DefaultServiceState>>> & Service;
|
|
568
|
+
|
|
569
|
+
declare const _default_2: Constructor< {
|
|
472
570
|
environment: "production" | "development" | "testing";
|
|
571
|
+
isMounted: boolean;
|
|
473
572
|
}> & Constructor< {
|
|
474
573
|
isDevelopment: boolean;
|
|
475
|
-
|
|
574
|
+
isTesting: boolean;
|
|
575
|
+
}> & Constructor<Service<DefaultServiceState, {}, Partial<DefaultServiceState>>> & Service;
|
|
476
576
|
|
|
477
|
-
declare const
|
|
577
|
+
declare const _default_3: Constructor< {
|
|
478
578
|
modals: Modal<unknown>[];
|
|
479
|
-
}> & Constructor< {}> & Constructor<Service<DefaultServiceState, {}
|
|
579
|
+
}> & Constructor< {}> & Constructor<Service<DefaultServiceState, {}, Partial<DefaultServiceState>>> & Service;
|
|
480
580
|
|
|
481
581
|
export declare type DefaultServices = typeof defaultServices;
|
|
482
582
|
|
|
@@ -485,19 +585,56 @@ declare const defaultServices: {
|
|
|
485
585
|
$events: Facade<EventsService, Constructor<EventsService>>;
|
|
486
586
|
};
|
|
487
587
|
|
|
488
|
-
export declare type DefaultServiceState =
|
|
588
|
+
export declare type DefaultServiceState = any;
|
|
489
589
|
|
|
490
590
|
export declare function defineDirective(directive: Directive): Directive;
|
|
491
591
|
|
|
492
592
|
export declare function definePlugin<T extends Plugin_2>(plugin: T): T;
|
|
493
593
|
|
|
494
594
|
export declare function defineServiceState<State extends ServiceState = ServiceState, ComputedState extends ServiceState = {}>(options: {
|
|
595
|
+
name: string;
|
|
495
596
|
initialState: State;
|
|
597
|
+
persist?: (keyof State)[];
|
|
496
598
|
computed?: ComputedStateDefinition<State, ComputedState>;
|
|
497
|
-
|
|
599
|
+
serialize?: (state: Partial<State>) => Partial<State>;
|
|
600
|
+
}): Constructor<State> & Constructor<ComputedState> & Constructor<Service<State, ComputedState, Partial<State>>>;
|
|
498
601
|
|
|
499
602
|
export declare function enumProp<Enum extends Record<string, unknown>>(enumeration: Enum, defaultValue?: Enum[keyof Enum]): OptionalProp<Enum[keyof Enum]>;
|
|
500
603
|
|
|
604
|
+
export declare interface ErrorReport {
|
|
605
|
+
title: string;
|
|
606
|
+
description?: string;
|
|
607
|
+
details?: string;
|
|
608
|
+
error?: Error | JSError | unknown;
|
|
609
|
+
}
|
|
610
|
+
|
|
611
|
+
export declare interface ErrorReportLog {
|
|
612
|
+
report: ErrorReport;
|
|
613
|
+
seen: boolean;
|
|
614
|
+
date: Date;
|
|
615
|
+
}
|
|
616
|
+
|
|
617
|
+
export declare const Errors: Facade<ErrorsService, Constructor<ErrorsService>>;
|
|
618
|
+
|
|
619
|
+
export declare type ErrorSource = string | Error | JSError | unknown;
|
|
620
|
+
|
|
621
|
+
declare class ErrorsService extends _default {
|
|
622
|
+
forceReporting: boolean;
|
|
623
|
+
private enabled;
|
|
624
|
+
enable(): void;
|
|
625
|
+
disable(): void;
|
|
626
|
+
inspect(error: ErrorSource | ErrorReport[]): Promise<void>;
|
|
627
|
+
report(error: ErrorSource, message?: string): Promise<void>;
|
|
628
|
+
see(report: ErrorReport): void;
|
|
629
|
+
seeAll(): void;
|
|
630
|
+
private logError;
|
|
631
|
+
private createErrorReport;
|
|
632
|
+
private createStartupErrorReport;
|
|
633
|
+
private createErrorReportFromError;
|
|
634
|
+
}
|
|
635
|
+
|
|
636
|
+
export declare type ErrorsServices = typeof services;
|
|
637
|
+
|
|
501
638
|
declare type EventListener_2<T = unknown> = (payload: T) => unknown;
|
|
502
639
|
export { EventListener_2 as EventListener }
|
|
503
640
|
|
|
@@ -574,15 +711,16 @@ export declare type FormFieldType = ObjectValues<typeof FormFieldTypes>;
|
|
|
574
711
|
export declare const FormFieldTypes: {
|
|
575
712
|
readonly String: "string";
|
|
576
713
|
readonly Number: "number";
|
|
714
|
+
readonly Boolean: "boolean";
|
|
577
715
|
};
|
|
578
716
|
|
|
579
|
-
export declare type GetFormFieldValue<TType> = TType extends typeof FormFieldTypes.String ? string : TType extends typeof FormFieldTypes.Number ? number : never;
|
|
717
|
+
export declare type GetFormFieldValue<TType> = TType extends typeof FormFieldTypes.String ? string : TType extends typeof FormFieldTypes.Number ? number : TType extends typeof FormFieldTypes.Boolean ? boolean : never;
|
|
580
718
|
|
|
581
719
|
export declare interface IAGHeadlessInput {
|
|
582
720
|
id: string;
|
|
583
|
-
value: ComputedRef<string | number | null>;
|
|
721
|
+
value: ComputedRef<string | number | boolean | null>;
|
|
584
722
|
errors: DeepReadonly<Ref<string[] | null>>;
|
|
585
|
-
update(value: string | number | null): void;
|
|
723
|
+
update(value: string | number | boolean | null): void;
|
|
586
724
|
}
|
|
587
725
|
|
|
588
726
|
export declare interface IAGHeadlessModal extends IAGModal {
|
|
@@ -614,7 +752,7 @@ declare class LangService extends Service {
|
|
|
614
752
|
translateWithDefault(key: string, parameters: Record<string, unknown>, defaultMessage: string): string;
|
|
615
753
|
}
|
|
616
754
|
|
|
617
|
-
export declare type LangServices = typeof
|
|
755
|
+
export declare type LangServices = typeof services_2;
|
|
618
756
|
|
|
619
757
|
export declare function mixedProp<T>(type: PropType<T>): OptionalProp<T | null>;
|
|
620
758
|
|
|
@@ -656,6 +794,8 @@ export { Plugin_2 as Plugin }
|
|
|
656
794
|
|
|
657
795
|
export declare function requiredArrayProp<T>(): RequiredProp<T[]>;
|
|
658
796
|
|
|
797
|
+
export declare function requiredBooleanInput(defaultValue?: boolean): FormFieldDefinition<typeof FormFieldTypes.Boolean, 'required'>;
|
|
798
|
+
|
|
659
799
|
export declare function requiredEnumProp<Enum extends Record<string, unknown>>(enumeration: Enum): RequiredProp<Enum[keyof Enum]>;
|
|
660
800
|
|
|
661
801
|
export declare function requiredMixedProp<T>(type: PropType<T>): RequiredProp<T>;
|
|
@@ -674,25 +814,30 @@ export declare function requiredStringInput(defaultValue?: string): FormFieldDef
|
|
|
674
814
|
|
|
675
815
|
export declare function requiredStringProp(): RequiredProp<string>;
|
|
676
816
|
|
|
677
|
-
export declare class Service<State extends ServiceState = DefaultServiceState, ComputedState extends ServiceState = {}> extends MagicObject {
|
|
678
|
-
|
|
817
|
+
export declare class Service<State extends ServiceState = DefaultServiceState, ComputedState extends ServiceState = {}, ServiceStorage extends Partial<State> = Partial<State>> extends MagicObject {
|
|
818
|
+
static persist: string[];
|
|
819
|
+
protected _name: string;
|
|
679
820
|
private _booted;
|
|
680
|
-
private
|
|
681
|
-
private
|
|
821
|
+
private _computedStateKeys;
|
|
822
|
+
private _store?;
|
|
682
823
|
constructor();
|
|
683
824
|
get booted(): PromisedValue<void>;
|
|
684
|
-
launch(
|
|
825
|
+
launch(): Promise<void>;
|
|
826
|
+
hasState<P extends keyof State>(property: P): boolean;
|
|
827
|
+
getState(): State;
|
|
828
|
+
getState<P extends keyof State>(property: P): State[P];
|
|
829
|
+
setState<P extends keyof State>(property: P, value: State[P]): void;
|
|
830
|
+
setState(state: Partial<State>): void;
|
|
685
831
|
protected __get(property: string): unknown;
|
|
686
832
|
protected __set(property: string, value: unknown): void;
|
|
687
|
-
protected
|
|
688
|
-
protected
|
|
689
|
-
protected
|
|
690
|
-
protected getState<P extends keyof State>(property: P): State[P];
|
|
691
|
-
protected getComputedState<P extends keyof ComputedState>(property: P): ComputedState[P];
|
|
692
|
-
protected setState(state: Partial<State>): void;
|
|
833
|
+
protected onStateUpdated(state: Partial<State>): void;
|
|
834
|
+
protected usesStore(): boolean;
|
|
835
|
+
protected getName(): string | null;
|
|
693
836
|
protected getInitialState(): State;
|
|
694
837
|
protected getComputedStateDefinition(): ComputedStateDefinition<State, ComputedState>;
|
|
838
|
+
protected serializePersistedState(state: Partial<State>): Partial<State>;
|
|
695
839
|
protected boot(): Promise<void>;
|
|
840
|
+
protected restorePersistedState(): void;
|
|
696
841
|
}
|
|
697
842
|
|
|
698
843
|
export declare type ServiceConstructor<T extends Service = Service> = Constructor<T> & typeof Service;
|
|
@@ -701,10 +846,14 @@ export declare interface Services extends DefaultServices {
|
|
|
701
846
|
}
|
|
702
847
|
|
|
703
848
|
declare const services: {
|
|
704
|
-
$
|
|
849
|
+
$errors: Facade<ErrorsService, Constructor<ErrorsService>>;
|
|
705
850
|
};
|
|
706
851
|
|
|
707
852
|
declare const services_2: {
|
|
853
|
+
$lang: Facade<LangService, Constructor<LangService>>;
|
|
854
|
+
};
|
|
855
|
+
|
|
856
|
+
declare const services_3: {
|
|
708
857
|
$ui: Facade<UIService, Constructor<UIService>>;
|
|
709
858
|
};
|
|
710
859
|
|
|
@@ -730,15 +879,18 @@ export declare type UIComponent = ObjectValues<typeof UIComponents>;
|
|
|
730
879
|
export declare const UIComponents: {
|
|
731
880
|
readonly AlertModal: "alert-modal";
|
|
732
881
|
readonly ConfirmModal: "confirm-modal";
|
|
882
|
+
readonly LoadingModal: "loading-modal";
|
|
733
883
|
};
|
|
734
884
|
|
|
735
|
-
declare class UIService extends
|
|
885
|
+
declare class UIService extends _default_3 {
|
|
736
886
|
private modalCallbacks;
|
|
737
887
|
private components;
|
|
738
888
|
alert(message: string): void;
|
|
739
889
|
alert(title: string, message: string): void;
|
|
740
890
|
confirm(message: string): Promise<boolean>;
|
|
741
891
|
confirm(title: string, message: string): Promise<boolean>;
|
|
892
|
+
loading<T>(operation: Promise<T>): Promise<T>;
|
|
893
|
+
loading<T>(message: string, operation: Promise<T>): Promise<T>;
|
|
742
894
|
registerComponent(name: UIComponent, component: Component): void;
|
|
743
895
|
openModal<TModalComponent extends ModalComponent>(component: TModalComponent, properties?: ModalProperties<TModalComponent>): Promise<Modal<ModalResult<TModalComponent>>>;
|
|
744
896
|
closeModal(id: string, result?: unknown): Promise<void>;
|
|
@@ -747,7 +899,7 @@ declare class UIService extends _default_2 {
|
|
|
747
899
|
private watchModalEvents;
|
|
748
900
|
}
|
|
749
901
|
|
|
750
|
-
export declare type UIServices = typeof
|
|
902
|
+
export declare type UIServices = typeof services_3;
|
|
751
903
|
|
|
752
904
|
export declare type UnknownEvent<T> = T extends keyof EventsPayload ? never : T;
|
|
753
905
|
|
|
@@ -759,14 +911,18 @@ export declare function useEvent<Event extends string>(event: UnknownEvent<Event
|
|
|
759
911
|
|
|
760
912
|
export declare function useForm<const T extends FormFieldDefinitions>(fields: T): Form<T> & FormData_2<T>;
|
|
761
913
|
|
|
914
|
+
export declare function useInputAttrs(): [ComputedRef<{}>, ComputedRef<unknown>];
|
|
915
|
+
|
|
762
916
|
export { }
|
|
763
917
|
|
|
918
|
+
export interface Services extends ErrorsServices {}
|
|
919
|
+
|
|
764
920
|
declare global {
|
|
765
921
|
export const __AG_BASE_PATH: string | undefined;
|
|
766
922
|
export const __AG_ENV: 'production' | 'development' | 'testing';
|
|
767
923
|
}
|
|
768
924
|
|
|
769
|
-
interface Services extends LangServices {}
|
|
925
|
+
export interface Services extends LangServices {}
|
|
770
926
|
|
|
771
927
|
declare module '@vue/runtime-core' {
|
|
772
928
|
interface ComponentCustomProperties {
|
|
@@ -774,6 +930,10 @@ declare module '@vue/runtime-core' {
|
|
|
774
930
|
}
|
|
775
931
|
}
|
|
776
932
|
|
|
933
|
+
interface AerogelOptions {
|
|
934
|
+
services?: Record<string, Service>;
|
|
935
|
+
}
|
|
936
|
+
|
|
777
937
|
declare module '@vue/runtime-core' {
|
|
778
938
|
interface ComponentCustomProperties extends Services {}
|
|
779
939
|
}
|
|
@@ -790,4 +950,4 @@ declare module '@vue/runtime-core' {
|
|
|
790
950
|
components?: Partial<Record<UIComponent, Component>>;
|
|
791
951
|
}
|
|
792
952
|
|
|
793
|
-
interface Services extends UIServices {}
|
|
953
|
+
export interface Services extends UIServices {}
|