@aerogel/core 0.0.0-next.5436b378dff7e64898bb7046afa2d5d574255b54
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/.eslintrc.js +3 -0
- package/dist/aerogel-core.cjs.js +2 -0
- package/dist/aerogel-core.cjs.js.map +1 -0
- package/dist/aerogel-core.d.ts +609 -0
- package/dist/aerogel-core.esm.js +2 -0
- package/dist/aerogel-core.esm.js.map +1 -0
- package/noeldemartin.config.js +2 -0
- package/package.json +49 -0
- package/src/bootstrap/bootstrap.test.ts +113 -0
- package/src/bootstrap/hooks.ts +19 -0
- package/src/bootstrap/index.ts +36 -0
- package/src/bootstrap/options.ts +1 -0
- package/src/components/AGAppLayout.vue +11 -0
- package/src/components/AGAppOverlays.vue +39 -0
- package/src/components/basic/AGMarkdown.vue +20 -0
- package/src/components/basic/index.ts +3 -0
- package/src/components/forms/AGButton.vue +11 -0
- package/src/components/forms/AGForm.vue +26 -0
- package/src/components/forms/AGInput.vue +32 -0
- package/src/components/forms/index.ts +5 -0
- package/src/components/headless/forms/AGHeadlessButton.vue +51 -0
- package/src/components/headless/forms/AGHeadlessInput.ts +8 -0
- package/src/components/headless/forms/AGHeadlessInput.vue +54 -0
- package/src/components/headless/forms/AGHeadlessInputError.vue +22 -0
- package/src/components/headless/forms/AGHeadlessInputInput.vue +29 -0
- package/src/components/headless/forms/index.ts +4 -0
- package/src/components/headless/index.ts +2 -0
- package/src/components/headless/modals/AGHeadlessModal.ts +7 -0
- package/src/components/headless/modals/AGHeadlessModal.vue +84 -0
- package/src/components/headless/modals/AGHeadlessModalPanel.vue +20 -0
- package/src/components/headless/modals/AGHeadlessModalTitle.vue +13 -0
- package/src/components/headless/modals/index.ts +6 -0
- package/src/components/index.ts +8 -0
- package/src/components/modals/AGAlertModal.vue +15 -0
- package/src/components/modals/AGModal.ts +6 -0
- package/src/components/modals/AGModal.vue +18 -0
- package/src/components/modals/AGModalContext.ts +8 -0
- package/src/components/modals/AGModalContext.vue +22 -0
- package/src/components/modals/index.ts +5 -0
- package/src/directives/index.ts +13 -0
- package/src/directives/initial-focus.ts +11 -0
- package/src/errors/ServiceBootError.ts +9 -0
- package/src/forms/Form.test.ts +37 -0
- package/src/forms/Form.ts +154 -0
- package/src/forms/composition.ts +6 -0
- package/src/forms/index.ts +3 -0
- package/src/forms/utils.ts +36 -0
- package/src/lang/Lang.ts +21 -0
- package/src/lang/helpers.ts +5 -0
- package/src/lang/index.ts +89 -0
- package/src/main.ts +7 -0
- package/src/models/index.ts +18 -0
- package/src/routing/index.ts +33 -0
- package/src/services/Events.ts +85 -0
- package/src/services/Service.ts +91 -0
- package/src/services/index.ts +35 -0
- package/src/testing/stubs/lang/en.yaml +1 -0
- package/src/testing/stubs/models/User.ts +3 -0
- package/src/types/shims.d.ts +7 -0
- package/src/types/ts-reset.d.ts +1 -0
- package/src/types/vite.d.ts +3 -0
- package/src/ui/UI.state.ts +26 -0
- package/src/ui/UI.ts +118 -0
- package/src/ui/index.ts +37 -0
- package/src/utils/composition/events.ts +23 -0
- package/src/utils/index.ts +1 -0
- package/src/utils/markdown.ts +12 -0
- package/src/utils/vue.ts +144 -0
- package/tsconfig.json +19 -0
- package/vite.config.ts +17 -0
package/.eslintrc.js
ADDED
|
@@ -0,0 +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");require("core-js/modules/esnext.async-iterator.reduce.js"),require("core-js/modules/esnext.iterator.reduce.js");var r=require("vue-i18n"),o=require("@babel/runtime/helpers/defineProperty"),s=require("soukai"),n=require("vue-router");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 a=require("@headlessui/vue"),l=require("dompurify"),i=require("marked");function u(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 d=u(o),c=u(l);const p=[];function m(){return{type:Boolean,default:arguments.length>0&&void 0!==arguments[0]&&arguments[0]}}function f(){return e.ref()}function v(e){return e}function h(t){const r=e.inject(t);return r?e.reactive(r):void 0}function _(e,r){return h(e)??t.fail(r??`Could not resolve '${e}' injection key`)}function x(){return{type:Object,default:arguments.length>0&&void 0!==arguments[0]?arguments[0]:null}}function g(){return{type:Number,required:!0}}function y(){return{type:Object,required:!0}}function b(){return{type:String,required:!0}}function k(){return{type:String,default:arguments.length>0&&void 0!==arguments[0]?arguments[0]:null}}const A={"initial-focus":{mounted(e,t){let{value:r}=t;!1!==r&&e.focus()}}};var w=async e=>{Object.entries(A).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 j(e){return class extends C{getInitialState(){return e.initialState}}}class C extends t.MagicObject{constructor(){super(),d.default(this,"_namespace",void 0),d.default(this,"_booted",void 0),d.default(this,"_state",void 0),this._namespace=new.target.name,this._booted=new t.PromisedValue,this._state=e.reactive(this.getInitialState())}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):super.__get(e)}__set(e,t){this.setState({[e]:t})}hasState(e){return e in this._state}getState(e){return e?this._state[e]:this._state}setState(e){Object.assign(this._state,e)}getInitialState(){return{}}async boot(){}}class B extends C{constructor(){super(...arguments),d.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 B);const S={$events:G};async function q(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 M=e=>q(e,S);var P=t.facade(new class extends C{constructor(){super(...arguments),d.default(this,"i18n",void 0)}setup(){this.i18n=r.useI18n()}translate(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.i18n?.t(e,t)??e}});function I(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return P.translate(e,t)}const E={$lang:P};async function $(e){const o=e.defaultLocale??"en",s=e.fallbackLocale??"en",n=function(e){return Object.entries(e).reduce(((e,r)=>{let[o,s]=r;const n=t.stringMatch(o,/.*\/lang\/(.+)\.yaml/)?.[1];return n&&(e[n]=()=>s().then((e=>{let{default:t}=e;return t}))),e}),{})}(e.messages),a=n[o]??t.fail(`Missing messages for '${o}' locale`),l={[o]:await a()};return r.createI18n({locale:o,fallbackLocale:s,messages:l})}var O=async(e,t)=>{const r=function(e){return e.lang?e.lang:e.langMessages?{messages:e.langMessages}:null}(t);if(!r)return;var o;o=()=>P.setup(),p.push(o);const s=await $(r);e.use(s),await q(e,E)},H=async(e,t)=>{t.models&&(s.setEngine(new s.IndexedDBEngine),s.bootModelsFromViteGlob(t.models))};var V=async(e,t)=>{if(!t.routes)return;const r=function(e){return n.createRouter({history:n.createWebHistory(e.basePath),routes:e.routes})}({routes:t.routes,basePath:t.basePath??__AG_BASE_PATH});e.use(r)},N=j({initialState:{modals:[]}});const F={AlertModal:"alert-modal"};var D=t.facade(new class extends N{constructor(){super(...arguments),d.default(this,"modalCallbacks",{}),d.default(this,"components",{})}alert(e){this.openModal(this.requireComponent(F.AlertModal),{message:e})}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}))}))}});function R(t,r){const o=G.on(t,r);e.onUnmounted((()=>o()))}var L=e.defineComponent({__name:"AGHeadlessModal",props:{cancellable:m(!0)},setup(t,{expose:r}){const o=t,s=e.ref(null),n=e.ref(!0),l=e.ref(!1),{modal:i}=_("modal");async function u(){s.value?.$el&&(n.value=!0)}async function d(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 R("close-modal",(async({id:e,result:t})=>{e===i.id&&await d(t)})),R("hide-modal",(async({id:e})=>{e===i.id&&await u()})),R("show-modal",(async({id:e})=>{e===i.id&&await async function(){s.value?.$el&&(n.value=!1)}()})),r({close:d,cancellable:e.toRef(o,"cancellable")}),(r,o)=>(e.openBlock(),e.createBlock(e.unref(a.Dialog),{ref_key:"$root",ref:s,open:!0,onClose:o[0]||(o[0]=e=>t.cancellable&&d())},{default:e.withCtx((()=>[e.renderSlot(r.$slots,"default",{close:d})])),_:3},512))}});L.__file="src/components/headless/modals/AGHeadlessModal.vue";var T=e.defineComponent({__name:"AGModalContext",props:{modal:y(),childIndex:g()},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))}});T.__file="src/components/modals/AGModalContext.vue";var z=e.defineComponent({__name:"AGHeadlessModalPanel",setup(t){const r=_("modal"),o=e.computed((()=>D.modals[r.childIndex]??null));return(t,s)=>(e.openBlock(),e.createBlock(e.unref(a.DialogPanel),null,{default:e.withCtx((()=>[e.renderSlot(t.$slots,"default"),o.value?(e.openBlock(),e.createBlock(T,{key:0,"child-index":e.unref(r).childIndex+1,modal:o.value},null,8,["child-index","modal"])):e.createCommentVNode("v-if",!0)])),_:3}))}});z.__file="src/components/headless/modals/AGHeadlessModalPanel.vue";const U={class:"fixed inset-0 flex items-center justify-center"},K={class:"flex max-h-full flex-col overflow-auto p-4"};var Q=e.defineComponent({__name:"AGModal",setup:t=>(t,r)=>(e.openBlock(),e.createBlock(L,{class:"relative z-50"},{default:e.withCtx((({close:r})=>[e.createElementVNode("div",U,[e.createVNode(z,{class:"flex max-h-full max-w-full flex-col overflow-hidden bg-white"},{default:e.withCtx((()=>[e.createElementVNode("div",K,[e.renderSlot(t.$slots,"default",{close:r})])])),_:2},1024)])])),_:3}))});function W(e){return t=i.marked(e,{mangle:!1,headerIds:!1}),c.default.sanitize(t,{ADD_ATTR:["target"]});var t}Q.__file="src/components/modals/AGModal.vue";var J=e.defineComponent({__name:"AGMarkdown",props:{langKey:k(),text:k()},setup(t){const r=t,o=e.computed((()=>r.text??(r.langKey&&I(r.langKey)))),s=e.computed((()=>o.value&&W(o.value))),n=()=>e.h("div",{class:"prose",innerHTML:s.value});return(t,r)=>(e.openBlock(),e.createBlock(n))}});J.__file="src/components/basic/AGMarkdown.vue";var X=e.defineComponent({__name:"AGAlertModal",props:{message:b()},setup:t=>(r,o)=>(e.openBlock(),e.createBlock(Q,null,{default:e.withCtx((()=>[e.createVNode(J,{text:t.message},null,8,["text"])])),_:1}))});X.__file="src/components/modals/AGAlertModal.vue";const Y={$ui:D};var Z=async(e,t)=>{const r={[F.AlertModal]:X};Object.entries({...r,...t.components}).forEach((e=>{let[t,r]=e;return D.registerComponent(t,r)})),await q(e,Y)};const ee={key:0};var te=e.defineComponent({__name:"AGAppOverlays",setup(t){const r=e.ref(null),o=e.ref(!0),s=e.computed((()=>D.modals[0]??null));return R("show-overlays-backdrop",(async()=>{r.value&&o.value&&(o.value=!1,r.value.classList.remove("opacity-0"))})),R("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",ee,[e.createVNode(T,{"child-index":1,modal:s.value},null,8,["modal"])])):e.createCommentVNode("v-if",!0)],64))}});te.__file="src/components/AGAppOverlays.vue";const re={class:"flex h-full flex-col text-base font-normal leading-tight text-gray-900 antialiased"};var oe=e.defineComponent({__name:"AGAppLayout",setup:t=>(t,r)=>(e.openBlock(),e.createElementBlock("div",re,[e.renderSlot(t.$slots,"default"),e.createVNode(te)]))});oe.__file="src/components/AGAppLayout.vue";var se=e.defineComponent({__name:"AGHeadlessButton",props:{url:k(),route:k(),routeParams:x((()=>({}))),routeQuery:x((()=>({}))),submit:m()},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))}});se.__file="src/components/headless/forms/AGHeadlessButton.vue";var ne=e.defineComponent({__name:"AGButton",setup:t=>(t,r)=>(e.openBlock(),e.createBlock(se,{class:"bg-indigo-600 px-2.5 py-1.5 text-white hover:bg-indigo-500 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600"},{default:e.withCtx((()=>[e.renderSlot(t.$slots,"default")])),_:3}))});ne.__file="src/components/forms/AGButton.vue";const ae=["onSubmit"];var le=e.defineComponent({__name:"AGForm",props:{form:x()},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:k(),name:k(),modelValue:k()},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"),i={id: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=["value","aria-invalid","aria-describedby"];var de=e.defineComponent({__name:"AGHeadlessInputInput",setup(t){const r=e.ref(),o=_("input"),s=e.computed((()=>o.value));function n(){r.value&&o.update(r.value.value)}return(t,a)=>(e.openBlock(),e.createElementBlock("input",{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=_("input"),o=e.computed((()=>r.errors?I(`errors.${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:k()},setup(t){const r=f();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";var fe=e.defineComponent({__name:"AGHeadlessModalTitle",props:{as:k("h2")},setup:t=>(r,o)=>(e.openBlock(),e.createBlock(e.unref(a.DialogTitle),{as:t.as},{default:e.withCtx((()=>[e.renderSlot(r.$slots,"default")])),_:3},8,["as"]))});fe.__file="src/components/headless/modals/AGHeadlessModalTitle.vue";const ve={String:"string",Number:"number"};class he extends t.MagicObject{constructor(t){super(),d.default(this,"errors",void 0),d.default(this,"_fields",void 0),d.default(this,"_data",void 0),d.default(this,"_valid",void 0),d.default(this,"_submitted",void 0),d.default(this,"_errors",void 0),this._fields=t,this._submitted=e.ref(!1),this._valid=e.ref(!0),this._data=this.getInitialData(t),this._errors=this.getInitialErrors(t),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 Object.assign(this._errors,e),this._valid.value=!Object.values(e).some((e=>null!==e))}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)}}exports.AGAppLayout=oe,exports.AGButton=ne,exports.AGForm=le,exports.AGHeadlessButton=se,exports.AGHeadlessInput=ie,exports.AGHeadlessModal=L,exports.AGHeadlessModalPanel=z,exports.AGHeadlessModalTitle=fe,exports.AGInput=me,exports.AGMarkdown=J,exports.AGModal=Q,exports.AGModalContext=T,exports.Events=G,exports.EventsService=B,exports.FormFieldTypes=ve,exports.Lang=P,exports.Service=C,exports.UI=D,exports.UIComponents=F,exports.arrayProp=function(e){return{type:Array,default:e??(()=>[])}},exports.booleanProp=m,exports.bootServices=q,exports.bootstrapApplication=async function(t){let r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const o=[w,O,H,V,M,Z],s=e.createApp({data:()=>({ready:!1}),mounted(){p.forEach((e=>e())),this.ready=!0},render(){return this.ready?e.h(t):null}});await Promise.all(o.map((e=>e(s,r)))),s.mount("#app")},exports.componentRef=f,exports.defineDirective=v,exports.defineServiceState=j,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=h,exports.injectReactiveOrFail=_,exports.lang=I,exports.mixedProp=function(e){return{type:e,default:null}},exports.numberInput=function(e){return{default:e,type:ve.Number}},exports.numberProp=function(){return{type:Number,default:arguments.length>0&&void 0!==arguments[0]?arguments[0]:null}},exports.objectProp=x,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:ve.Number,rules:"required"}},exports.requiredNumberProp=g,exports.requiredObjectProp=y,exports.requiredStringInput=function(e){return{default:e,type:ve.String,rules:"required"}},exports.requiredStringProp=b,exports.stringInput=function(e){return{default:e,type:ve.String}},exports.stringProp=k,exports.useForm=function(e){return new he(e)};
|
|
2
|
+
//# sourceMappingURL=aerogel-core.cjs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"aerogel-core.cjs.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -0,0 +1,609 @@
|
|
|
1
|
+
import { AllowedComponentProps } from 'vue';
|
|
2
|
+
import type { App } from 'vue';
|
|
3
|
+
import type { Component } from 'vue';
|
|
4
|
+
import { ComponentCustomProps } from 'vue';
|
|
5
|
+
import { ComponentOptionsMixin } from 'vue';
|
|
6
|
+
import { Constructor } from '@noeldemartin/utils';
|
|
7
|
+
import type { DeepReadonly } from 'vue';
|
|
8
|
+
import { DefineComponent } from 'vue';
|
|
9
|
+
import type { Directive } from 'vue';
|
|
10
|
+
import { ExtractPropTypes } from 'vue';
|
|
11
|
+
import { Facade } from '@noeldemartin/utils';
|
|
12
|
+
import type { InjectionKey } from 'vue';
|
|
13
|
+
import type { LocationQuery } from 'vue-router';
|
|
14
|
+
import { MagicObject } from '@noeldemartin/utils';
|
|
15
|
+
import type { ObjectValues } from '@noeldemartin/utils';
|
|
16
|
+
import { PromisedValue } from '@noeldemartin/utils';
|
|
17
|
+
import { PropType } from 'vue';
|
|
18
|
+
import type { Ref } from 'vue';
|
|
19
|
+
import { RendererElement } from 'vue';
|
|
20
|
+
import { RendererNode } from 'vue';
|
|
21
|
+
import type { RouteParams } from 'vue-router';
|
|
22
|
+
import type { UnwrapNestedRefs } from 'vue';
|
|
23
|
+
import { VNode } from 'vue';
|
|
24
|
+
import { VNodeProps } from 'vue';
|
|
25
|
+
|
|
26
|
+
export declare const AGAppLayout: DefineComponent< {}, (_ctx: any, _cache: any) => VNode<RendererNode, RendererElement, {
|
|
27
|
+
[key: string]: any;
|
|
28
|
+
}>, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, VNodeProps & AllowedComponentProps & ComponentCustomProps, Readonly<ExtractPropTypes< {}>>, {}, {}>;
|
|
29
|
+
|
|
30
|
+
export declare const AGButton: DefineComponent< {}, (_ctx: any, _cache: any) => VNode<RendererNode, RendererElement, {
|
|
31
|
+
[key: string]: any;
|
|
32
|
+
}>, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, VNodeProps & AllowedComponentProps & ComponentCustomProps, Readonly<ExtractPropTypes< {}>>, {}, {}>;
|
|
33
|
+
|
|
34
|
+
export declare const AGForm: DefineComponent< {
|
|
35
|
+
form: {
|
|
36
|
+
type: PropType<Form<FormFieldDefinitions> | null>;
|
|
37
|
+
validator?(value: unknown): boolean;
|
|
38
|
+
} & {
|
|
39
|
+
default: Form<FormFieldDefinitions> | (() => Form<FormFieldDefinitions> | null) | null;
|
|
40
|
+
};
|
|
41
|
+
}, (_ctx: any, _cache: any) => VNode<RendererNode, RendererElement, {
|
|
42
|
+
[key: string]: any;
|
|
43
|
+
}>, unknown, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, "submit"[], "submit", VNodeProps & AllowedComponentProps & ComponentCustomProps, Readonly<ExtractPropTypes< {
|
|
44
|
+
form: {
|
|
45
|
+
type: PropType<Form<FormFieldDefinitions> | null>;
|
|
46
|
+
validator?(value: unknown): boolean;
|
|
47
|
+
} & {
|
|
48
|
+
default: Form<FormFieldDefinitions> | (() => Form<FormFieldDefinitions> | null) | null;
|
|
49
|
+
};
|
|
50
|
+
}>> & {
|
|
51
|
+
onSubmit?: ((...args: any[]) => any) | undefined;
|
|
52
|
+
}, {
|
|
53
|
+
form: Form<FormFieldDefinitions> | null;
|
|
54
|
+
}, {}>;
|
|
55
|
+
|
|
56
|
+
export declare const AGHeadlessButton: DefineComponent< {
|
|
57
|
+
url: {
|
|
58
|
+
type: PropType<string | null>;
|
|
59
|
+
validator?(value: unknown): boolean;
|
|
60
|
+
} & {
|
|
61
|
+
default: string | (() => string | null) | null;
|
|
62
|
+
};
|
|
63
|
+
route: {
|
|
64
|
+
type: PropType<string | null>;
|
|
65
|
+
validator?(value: unknown): boolean;
|
|
66
|
+
} & {
|
|
67
|
+
default: string | (() => string | null) | null;
|
|
68
|
+
};
|
|
69
|
+
routeParams: {
|
|
70
|
+
type: PropType<RouteParams>;
|
|
71
|
+
validator?(value: unknown): boolean;
|
|
72
|
+
} & {
|
|
73
|
+
default: RouteParams | (() => RouteParams) | null;
|
|
74
|
+
};
|
|
75
|
+
routeQuery: {
|
|
76
|
+
type: PropType<LocationQuery>;
|
|
77
|
+
validator?(value: unknown): boolean;
|
|
78
|
+
} & {
|
|
79
|
+
default: LocationQuery | (() => LocationQuery) | null;
|
|
80
|
+
};
|
|
81
|
+
submit: {
|
|
82
|
+
type: PropType<boolean>;
|
|
83
|
+
validator?(value: unknown): boolean;
|
|
84
|
+
} & {
|
|
85
|
+
default: boolean | (() => boolean) | null;
|
|
86
|
+
};
|
|
87
|
+
}, (_ctx: any, _cache: any) => VNode<RendererNode, RendererElement, {
|
|
88
|
+
[key: string]: any;
|
|
89
|
+
}>, unknown, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, VNodeProps & AllowedComponentProps & ComponentCustomProps, Readonly<ExtractPropTypes< {
|
|
90
|
+
url: {
|
|
91
|
+
type: PropType<string | null>;
|
|
92
|
+
validator?(value: unknown): boolean;
|
|
93
|
+
} & {
|
|
94
|
+
default: string | (() => string | null) | null;
|
|
95
|
+
};
|
|
96
|
+
route: {
|
|
97
|
+
type: PropType<string | null>;
|
|
98
|
+
validator?(value: unknown): boolean;
|
|
99
|
+
} & {
|
|
100
|
+
default: string | (() => string | null) | null;
|
|
101
|
+
};
|
|
102
|
+
routeParams: {
|
|
103
|
+
type: PropType<RouteParams>;
|
|
104
|
+
validator?(value: unknown): boolean;
|
|
105
|
+
} & {
|
|
106
|
+
default: RouteParams | (() => RouteParams) | null;
|
|
107
|
+
};
|
|
108
|
+
routeQuery: {
|
|
109
|
+
type: PropType<LocationQuery>;
|
|
110
|
+
validator?(value: unknown): boolean;
|
|
111
|
+
} & {
|
|
112
|
+
default: LocationQuery | (() => LocationQuery) | null;
|
|
113
|
+
};
|
|
114
|
+
submit: {
|
|
115
|
+
type: PropType<boolean>;
|
|
116
|
+
validator?(value: unknown): boolean;
|
|
117
|
+
} & {
|
|
118
|
+
default: boolean | (() => boolean) | null;
|
|
119
|
+
};
|
|
120
|
+
}>>, {
|
|
121
|
+
url: string | null;
|
|
122
|
+
route: string | null;
|
|
123
|
+
routeParams: RouteParams;
|
|
124
|
+
routeQuery: LocationQuery;
|
|
125
|
+
submit: boolean;
|
|
126
|
+
}, {}>;
|
|
127
|
+
|
|
128
|
+
export declare const AGHeadlessInput: DefineComponent< {
|
|
129
|
+
as: {
|
|
130
|
+
type: PropType<string | null>;
|
|
131
|
+
validator?(value: unknown): boolean;
|
|
132
|
+
} & {
|
|
133
|
+
default: string | (() => string | null) | null;
|
|
134
|
+
};
|
|
135
|
+
name: {
|
|
136
|
+
type: PropType<string | null>;
|
|
137
|
+
validator?(value: unknown): boolean;
|
|
138
|
+
} & {
|
|
139
|
+
default: string | (() => string | null) | null;
|
|
140
|
+
};
|
|
141
|
+
modelValue: {
|
|
142
|
+
type: PropType<string | null>;
|
|
143
|
+
validator?(value: unknown): boolean;
|
|
144
|
+
} & {
|
|
145
|
+
default: string | (() => string | null) | null;
|
|
146
|
+
};
|
|
147
|
+
}, (_ctx: any, _cache: any) => VNode<RendererNode, RendererElement, {
|
|
148
|
+
[key: string]: any;
|
|
149
|
+
}>, unknown, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, "update:modelValue"[], "update:modelValue", VNodeProps & AllowedComponentProps & ComponentCustomProps, Readonly<ExtractPropTypes< {
|
|
150
|
+
as: {
|
|
151
|
+
type: PropType<string | null>;
|
|
152
|
+
validator?(value: unknown): boolean;
|
|
153
|
+
} & {
|
|
154
|
+
default: string | (() => string | null) | null;
|
|
155
|
+
};
|
|
156
|
+
name: {
|
|
157
|
+
type: PropType<string | null>;
|
|
158
|
+
validator?(value: unknown): boolean;
|
|
159
|
+
} & {
|
|
160
|
+
default: string | (() => string | null) | null;
|
|
161
|
+
};
|
|
162
|
+
modelValue: {
|
|
163
|
+
type: PropType<string | null>;
|
|
164
|
+
validator?(value: unknown): boolean;
|
|
165
|
+
} & {
|
|
166
|
+
default: string | (() => string | null) | null;
|
|
167
|
+
};
|
|
168
|
+
}>> & {
|
|
169
|
+
"onUpdate:modelValue"?: ((...args: any[]) => any) | undefined;
|
|
170
|
+
}, {
|
|
171
|
+
as: string | null;
|
|
172
|
+
name: string | null;
|
|
173
|
+
modelValue: string | null;
|
|
174
|
+
}, {}>;
|
|
175
|
+
|
|
176
|
+
export declare const AGHeadlessModal: DefineComponent< {
|
|
177
|
+
cancellable: {
|
|
178
|
+
type: PropType<boolean>;
|
|
179
|
+
validator?(value: unknown): boolean;
|
|
180
|
+
} & {
|
|
181
|
+
default: boolean | (() => boolean) | null;
|
|
182
|
+
};
|
|
183
|
+
}, (_ctx: any, _cache: any) => VNode<RendererNode, RendererElement, {
|
|
184
|
+
[key: string]: any;
|
|
185
|
+
}>, unknown, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, VNodeProps & AllowedComponentProps & ComponentCustomProps, Readonly<ExtractPropTypes< {
|
|
186
|
+
cancellable: {
|
|
187
|
+
type: PropType<boolean>;
|
|
188
|
+
validator?(value: unknown): boolean;
|
|
189
|
+
} & {
|
|
190
|
+
default: boolean | (() => boolean) | null;
|
|
191
|
+
};
|
|
192
|
+
}>>, {
|
|
193
|
+
cancellable: boolean;
|
|
194
|
+
}, {}>;
|
|
195
|
+
|
|
196
|
+
export declare const AGHeadlessModalPanel: DefineComponent< {}, (_ctx: any, _cache: any) => VNode<RendererNode, RendererElement, {
|
|
197
|
+
[key: string]: any;
|
|
198
|
+
}>, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, VNodeProps & AllowedComponentProps & ComponentCustomProps, Readonly<ExtractPropTypes< {}>>, {}, {}>;
|
|
199
|
+
|
|
200
|
+
export declare const AGHeadlessModalTitle: DefineComponent< {
|
|
201
|
+
as: {
|
|
202
|
+
type: PropType<string>;
|
|
203
|
+
validator?(value: unknown): boolean;
|
|
204
|
+
} & {
|
|
205
|
+
default: string | (() => string) | null;
|
|
206
|
+
};
|
|
207
|
+
}, (_ctx: any, _cache: any) => VNode<RendererNode, RendererElement, {
|
|
208
|
+
[key: string]: any;
|
|
209
|
+
}>, unknown, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, VNodeProps & AllowedComponentProps & ComponentCustomProps, Readonly<ExtractPropTypes< {
|
|
210
|
+
as: {
|
|
211
|
+
type: PropType<string>;
|
|
212
|
+
validator?(value: unknown): boolean;
|
|
213
|
+
} & {
|
|
214
|
+
default: string | (() => string) | null;
|
|
215
|
+
};
|
|
216
|
+
}>>, {
|
|
217
|
+
as: string;
|
|
218
|
+
}, {}>;
|
|
219
|
+
|
|
220
|
+
export declare const AGInput: DefineComponent< {
|
|
221
|
+
name: {
|
|
222
|
+
type: PropType<string | null>;
|
|
223
|
+
validator?(value: unknown): boolean;
|
|
224
|
+
} & {
|
|
225
|
+
default: string | (() => string | null) | null;
|
|
226
|
+
};
|
|
227
|
+
}, (_ctx: any, _cache: any) => VNode<RendererNode, RendererElement, {
|
|
228
|
+
[key: string]: any;
|
|
229
|
+
}>, unknown, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, VNodeProps & AllowedComponentProps & ComponentCustomProps, Readonly<ExtractPropTypes< {
|
|
230
|
+
name: {
|
|
231
|
+
type: PropType<string | null>;
|
|
232
|
+
validator?(value: unknown): boolean;
|
|
233
|
+
} & {
|
|
234
|
+
default: string | (() => string | null) | null;
|
|
235
|
+
};
|
|
236
|
+
}>>, {
|
|
237
|
+
name: string | null;
|
|
238
|
+
}, {}>;
|
|
239
|
+
|
|
240
|
+
export declare const AGMarkdown: DefineComponent< {
|
|
241
|
+
langKey: {
|
|
242
|
+
type: PropType<string | null>;
|
|
243
|
+
validator?(value: unknown): boolean;
|
|
244
|
+
} & {
|
|
245
|
+
default: string | (() => string | null) | null;
|
|
246
|
+
};
|
|
247
|
+
text: {
|
|
248
|
+
type: PropType<string | null>;
|
|
249
|
+
validator?(value: unknown): boolean;
|
|
250
|
+
} & {
|
|
251
|
+
default: string | (() => string | null) | null;
|
|
252
|
+
};
|
|
253
|
+
}, (_ctx: any, _cache: any) => VNode<RendererNode, RendererElement, {
|
|
254
|
+
[key: string]: any;
|
|
255
|
+
}>, unknown, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, VNodeProps & AllowedComponentProps & ComponentCustomProps, Readonly<ExtractPropTypes< {
|
|
256
|
+
langKey: {
|
|
257
|
+
type: PropType<string | null>;
|
|
258
|
+
validator?(value: unknown): boolean;
|
|
259
|
+
} & {
|
|
260
|
+
default: string | (() => string | null) | null;
|
|
261
|
+
};
|
|
262
|
+
text: {
|
|
263
|
+
type: PropType<string | null>;
|
|
264
|
+
validator?(value: unknown): boolean;
|
|
265
|
+
} & {
|
|
266
|
+
default: string | (() => string | null) | null;
|
|
267
|
+
};
|
|
268
|
+
}>>, {
|
|
269
|
+
langKey: string | null;
|
|
270
|
+
text: string | null;
|
|
271
|
+
}, {}>;
|
|
272
|
+
|
|
273
|
+
export declare const AGModal: DefineComponent< {}, (_ctx: any, _cache: any) => VNode<RendererNode, RendererElement, {
|
|
274
|
+
[key: string]: any;
|
|
275
|
+
}>, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, VNodeProps & AllowedComponentProps & ComponentCustomProps, Readonly<ExtractPropTypes< {}>>, {}, {}>;
|
|
276
|
+
|
|
277
|
+
export declare const AGModalContext: DefineComponent< {
|
|
278
|
+
modal: {
|
|
279
|
+
type: PropType<Modal<unknown>>;
|
|
280
|
+
validator?(value: unknown): boolean;
|
|
281
|
+
} & {
|
|
282
|
+
required: true;
|
|
283
|
+
};
|
|
284
|
+
childIndex: {
|
|
285
|
+
type: PropType<number>;
|
|
286
|
+
validator?(value: unknown): boolean;
|
|
287
|
+
} & {
|
|
288
|
+
required: true;
|
|
289
|
+
};
|
|
290
|
+
}, (_ctx: any, _cache: any) => VNode<RendererNode, RendererElement, {
|
|
291
|
+
[key: string]: any;
|
|
292
|
+
}>, unknown, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, VNodeProps & AllowedComponentProps & ComponentCustomProps, Readonly<ExtractPropTypes< {
|
|
293
|
+
modal: {
|
|
294
|
+
type: PropType<Modal<unknown>>;
|
|
295
|
+
validator?(value: unknown): boolean;
|
|
296
|
+
} & {
|
|
297
|
+
required: true;
|
|
298
|
+
};
|
|
299
|
+
childIndex: {
|
|
300
|
+
type: PropType<number>;
|
|
301
|
+
validator?(value: unknown): boolean;
|
|
302
|
+
} & {
|
|
303
|
+
required: true;
|
|
304
|
+
};
|
|
305
|
+
}>>, {}, {}>;
|
|
306
|
+
|
|
307
|
+
export declare function arrayProp<T>(defaultValue?: () => T[]): OptionalProp<T[]>;
|
|
308
|
+
|
|
309
|
+
declare type BaseProp<T> = {
|
|
310
|
+
type: PropType<T>;
|
|
311
|
+
validator?(value: unknown): boolean;
|
|
312
|
+
};
|
|
313
|
+
|
|
314
|
+
export declare function booleanProp(defaultValue?: boolean): OptionalProp<boolean>;
|
|
315
|
+
|
|
316
|
+
export declare function bootServices(app: App, services: Record<string, Service>): Promise<void>;
|
|
317
|
+
|
|
318
|
+
export declare function bootstrapApplication(rootComponent: Component, options?: BootstrapOptions): Promise<void>;
|
|
319
|
+
|
|
320
|
+
declare interface BootstrapOptions {
|
|
321
|
+
}
|
|
322
|
+
|
|
323
|
+
export declare function componentRef<T>(): Ref<UnwrapNestedRefs<T> | undefined>;
|
|
324
|
+
|
|
325
|
+
declare const _default: Constructor<State> & Constructor<Service<DefaultServiceState>> & Service;
|
|
326
|
+
|
|
327
|
+
export declare type DefaultServices = typeof defaultServices;
|
|
328
|
+
|
|
329
|
+
declare const defaultServices: {
|
|
330
|
+
$events: Facade<EventsService>;
|
|
331
|
+
};
|
|
332
|
+
|
|
333
|
+
export declare type DefaultServiceState = {};
|
|
334
|
+
|
|
335
|
+
export declare function defineDirective(directive: Directive): Directive;
|
|
336
|
+
|
|
337
|
+
export declare function defineServiceState<State extends ServiceState>(options: {
|
|
338
|
+
initialState: State;
|
|
339
|
+
}): Constructor<State> & ServiceConstructor;
|
|
340
|
+
|
|
341
|
+
export declare function enumProp<Enum extends Record<string, unknown>>(enumeration: Enum, defaultValue?: Enum[keyof Enum]): OptionalProp<Enum[keyof Enum]>;
|
|
342
|
+
|
|
343
|
+
declare type EventListener_2<T = unknown> = (payload: T) => unknown;
|
|
344
|
+
export { EventListener_2 as EventListener }
|
|
345
|
+
|
|
346
|
+
export declare const Events: Facade<EventsService>;
|
|
347
|
+
|
|
348
|
+
export declare interface EventsPayload {
|
|
349
|
+
}
|
|
350
|
+
|
|
351
|
+
export declare class EventsService extends Service {
|
|
352
|
+
private listeners;
|
|
353
|
+
emit<Event extends EventWithoutPayload>(event: Event): Promise<void>;
|
|
354
|
+
emit<Event extends EventWithPayload>(event: Event, payload: EventsPayload[Event]): Promise<void>;
|
|
355
|
+
emit<Event extends string>(event: UnknownEvent<Event>, payload?: unknown): Promise<void>;
|
|
356
|
+
on<Event extends EventWithoutPayload>(event: Event, listener: () => unknown): () => void;
|
|
357
|
+
on<Event extends EventWithPayload>(event: Event, listener: EventListener_2<EventsPayload[Event]>): () => void | void;
|
|
358
|
+
on<Event extends string>(event: UnknownEvent<Event>, listener: EventListener_2): () => void;
|
|
359
|
+
once<Event extends EventWithoutPayload>(event: Event, listener: () => unknown): () => void;
|
|
360
|
+
once<Event extends EventWithPayload>(event: Event, listener: EventListener_2<EventsPayload[Event]>): () => void | void;
|
|
361
|
+
once<Event extends string>(event: UnknownEvent<Event>, listener: EventListener_2): () => void;
|
|
362
|
+
off(event: string, listener: EventListener_2): void;
|
|
363
|
+
}
|
|
364
|
+
|
|
365
|
+
export declare type EventWithoutPayload = {
|
|
366
|
+
[K in keyof EventsPayload]: EventsPayload[K] extends void ? K : never;
|
|
367
|
+
}[keyof EventsPayload];
|
|
368
|
+
|
|
369
|
+
export declare type EventWithPayload = {
|
|
370
|
+
[K in keyof EventsPayload]: EventsPayload[K] extends void ? never : K;
|
|
371
|
+
}[keyof EventsPayload];
|
|
372
|
+
|
|
373
|
+
declare class Form<Fields extends FormFieldDefinitions = FormFieldDefinitions> extends MagicObject {
|
|
374
|
+
errors: DeepReadonly<UnwrapNestedRefs<FormErrors<Fields>>>;
|
|
375
|
+
private _fields;
|
|
376
|
+
private _data;
|
|
377
|
+
private _valid;
|
|
378
|
+
private _submitted;
|
|
379
|
+
private _errors;
|
|
380
|
+
constructor(fields: Fields);
|
|
381
|
+
get valid(): boolean;
|
|
382
|
+
get submitted(): boolean;
|
|
383
|
+
setFieldValue<T extends keyof Fields>(field: T, value: FormData_2<Fields>[T]): void;
|
|
384
|
+
getFieldValue<T extends keyof Fields>(field: T): GetFormFieldValue<Fields[T]['type']>;
|
|
385
|
+
validate(): boolean;
|
|
386
|
+
submit(): boolean;
|
|
387
|
+
protected __get(property: string): unknown;
|
|
388
|
+
protected __set(property: string, value: unknown): void;
|
|
389
|
+
private getFieldErrors;
|
|
390
|
+
private getInitialData;
|
|
391
|
+
private getInitialErrors;
|
|
392
|
+
}
|
|
393
|
+
|
|
394
|
+
declare type FormData_2<T> = {
|
|
395
|
+
[k in keyof T]: T[k] extends FormFieldDefinition<infer TType, infer TRules> ? TRules extends 'required' ? GetFormFieldValue<TType> : GetFormFieldValue<TType> | null : never;
|
|
396
|
+
};
|
|
397
|
+
export { FormData_2 as FormData }
|
|
398
|
+
|
|
399
|
+
export declare type FormErrors<T> = {
|
|
400
|
+
[k in keyof T]: string[] | null;
|
|
401
|
+
};
|
|
402
|
+
|
|
403
|
+
export declare interface FormFieldDefinition<TType extends FormFieldType = FormFieldType, TRules extends string = string> {
|
|
404
|
+
type: TType;
|
|
405
|
+
default?: GetFormFieldValue<TType>;
|
|
406
|
+
rules?: TRules;
|
|
407
|
+
}
|
|
408
|
+
|
|
409
|
+
export declare type FormFieldDefinitions = Record<string, FormFieldDefinition>;
|
|
410
|
+
|
|
411
|
+
export declare type FormFieldType = ObjectValues<typeof FormFieldTypes>;
|
|
412
|
+
|
|
413
|
+
export declare const FormFieldTypes: {
|
|
414
|
+
readonly String: "string";
|
|
415
|
+
readonly Number: "number";
|
|
416
|
+
};
|
|
417
|
+
|
|
418
|
+
export declare type GetFormFieldValue<TType> = TType extends typeof FormFieldTypes.String ? string : TType extends typeof FormFieldTypes.Number ? number : never;
|
|
419
|
+
|
|
420
|
+
export declare interface IAGHeadlessModal extends IAGModal {
|
|
421
|
+
}
|
|
422
|
+
|
|
423
|
+
export declare interface IAGModal {
|
|
424
|
+
cancellable: Ref<boolean>;
|
|
425
|
+
close(): Promise<void>;
|
|
426
|
+
}
|
|
427
|
+
|
|
428
|
+
export declare function injectOrFail<T>(key: InjectionKey<T> | string, errorMessage?: string): T;
|
|
429
|
+
|
|
430
|
+
export declare function injectReactive<T extends object>(key: InjectionKey<T> | string): UnwrapNestedRefs<T> | undefined;
|
|
431
|
+
|
|
432
|
+
export declare function injectReactiveOrFail<T extends object>(key: InjectionKey<T> | string, errorMessage?: string): UnwrapNestedRefs<T>;
|
|
433
|
+
|
|
434
|
+
export declare const Lang: Facade<LangService>;
|
|
435
|
+
|
|
436
|
+
export declare function lang(key: string, parameters?: Record<string, unknown>): string;
|
|
437
|
+
|
|
438
|
+
export declare interface LangOptions {
|
|
439
|
+
messages: Record<string, unknown>;
|
|
440
|
+
defaultLocale?: string;
|
|
441
|
+
fallbackLocale?: string;
|
|
442
|
+
}
|
|
443
|
+
|
|
444
|
+
declare class LangService extends Service {
|
|
445
|
+
private i18n?;
|
|
446
|
+
setup(): void;
|
|
447
|
+
translate(key: string, parameters?: Record<string, unknown>): string;
|
|
448
|
+
}
|
|
449
|
+
|
|
450
|
+
export declare type LangServices = typeof services;
|
|
451
|
+
|
|
452
|
+
export declare type LazyMessages = () => Promise<Record<string, unknown>>;
|
|
453
|
+
|
|
454
|
+
export declare function mixedProp<T>(type: PropType<T>): OptionalProp<T | null>;
|
|
455
|
+
|
|
456
|
+
declare interface Modal<T = unknown> {
|
|
457
|
+
id: string;
|
|
458
|
+
properties: Record<string, unknown>;
|
|
459
|
+
component: Component;
|
|
460
|
+
beforeClose: Promise<T | undefined>;
|
|
461
|
+
afterClose: Promise<T | undefined>;
|
|
462
|
+
}
|
|
463
|
+
|
|
464
|
+
declare interface ModalComponent<Properties extends Record<string, unknown> = Record<string, unknown>, Result = unknown> {
|
|
465
|
+
}
|
|
466
|
+
|
|
467
|
+
declare type ModalProperties<TComponent> = TComponent extends ModalComponent<infer TProperties, unknown> ? TProperties : never;
|
|
468
|
+
|
|
469
|
+
declare type ModalResult<TComponent> = TComponent extends ModalComponent<Record<string, unknown>, infer TResult> ? TResult : never;
|
|
470
|
+
|
|
471
|
+
export declare function numberInput(defaultValue?: number): FormFieldDefinition<typeof FormFieldTypes.Number>;
|
|
472
|
+
|
|
473
|
+
export declare function numberProp(): OptionalProp<number | null>;
|
|
474
|
+
|
|
475
|
+
export declare function numberProp(defaultValue: number): OptionalProp<number>;
|
|
476
|
+
|
|
477
|
+
export declare function objectProp<T = Object>(): OptionalProp<T | null>;
|
|
478
|
+
|
|
479
|
+
export declare function objectProp<T>(defaultValue: () => T): OptionalProp<T>;
|
|
480
|
+
|
|
481
|
+
declare type OptionalProp<T> = BaseProp<T> & {
|
|
482
|
+
default: T | (() => T) | null;
|
|
483
|
+
};
|
|
484
|
+
|
|
485
|
+
export declare function requiredArrayProp<T>(): RequiredProp<T[]>;
|
|
486
|
+
|
|
487
|
+
export declare function requiredEnumProp<Enum extends Record<string, unknown>>(enumeration: Enum): RequiredProp<Enum[keyof Enum]>;
|
|
488
|
+
|
|
489
|
+
export declare function requiredMixedProp<T>(type: PropType<T>): RequiredProp<T>;
|
|
490
|
+
|
|
491
|
+
export declare function requiredNumberInput(defaultValue?: number): FormFieldDefinition<typeof FormFieldTypes.Number, 'required'>;
|
|
492
|
+
|
|
493
|
+
export declare function requiredNumberProp(): RequiredProp<number>;
|
|
494
|
+
|
|
495
|
+
export declare function requiredObjectProp<T = Object>(): RequiredProp<T>;
|
|
496
|
+
|
|
497
|
+
declare type RequiredProp<T> = BaseProp<T> & {
|
|
498
|
+
required: true;
|
|
499
|
+
};
|
|
500
|
+
|
|
501
|
+
export declare function requiredStringInput(defaultValue?: string): FormFieldDefinition<typeof FormFieldTypes.String, 'required'>;
|
|
502
|
+
|
|
503
|
+
export declare function requiredStringProp(): RequiredProp<string>;
|
|
504
|
+
|
|
505
|
+
export declare class Service<State extends ServiceState = DefaultServiceState> extends MagicObject {
|
|
506
|
+
protected _namespace: string;
|
|
507
|
+
private _booted;
|
|
508
|
+
private _state;
|
|
509
|
+
constructor();
|
|
510
|
+
get booted(): PromisedValue<void>;
|
|
511
|
+
launch(namespace?: string): Promise<void>;
|
|
512
|
+
protected __get(property: string): unknown;
|
|
513
|
+
protected __set(property: string, value: unknown): void;
|
|
514
|
+
protected hasState<P extends keyof State>(property: P): boolean;
|
|
515
|
+
protected getState(): State;
|
|
516
|
+
protected getState<P extends keyof State>(property: P): State[P];
|
|
517
|
+
protected setState(state: Partial<State>): void;
|
|
518
|
+
protected getInitialState(): State;
|
|
519
|
+
protected boot(): Promise<void>;
|
|
520
|
+
}
|
|
521
|
+
|
|
522
|
+
export declare type ServiceConstructor<T extends Service = Service> = Constructor<T> & typeof Service;
|
|
523
|
+
|
|
524
|
+
export declare interface Services extends DefaultServices {
|
|
525
|
+
}
|
|
526
|
+
|
|
527
|
+
declare const services: {
|
|
528
|
+
$lang: Facade<LangService>;
|
|
529
|
+
};
|
|
530
|
+
|
|
531
|
+
declare const services_2: {
|
|
532
|
+
$ui: Facade<UIService>;
|
|
533
|
+
};
|
|
534
|
+
|
|
535
|
+
export declare type ServiceState = Record<string, any>;
|
|
536
|
+
|
|
537
|
+
declare interface State {
|
|
538
|
+
modals: Modal[];
|
|
539
|
+
}
|
|
540
|
+
|
|
541
|
+
export declare function stringInput(defaultValue?: string): FormFieldDefinition<typeof FormFieldTypes.String>;
|
|
542
|
+
|
|
543
|
+
export declare function stringProp(): OptionalProp<string | null>;
|
|
544
|
+
|
|
545
|
+
export declare function stringProp(defaultValue: string): OptionalProp<string>;
|
|
546
|
+
|
|
547
|
+
export declare const UI: Facade<UIService>;
|
|
548
|
+
|
|
549
|
+
export declare type UIComponent = ObjectValues<typeof UIComponents>;
|
|
550
|
+
|
|
551
|
+
export declare const UIComponents: {
|
|
552
|
+
readonly AlertModal: "alert-modal";
|
|
553
|
+
};
|
|
554
|
+
|
|
555
|
+
declare class UIService extends _default {
|
|
556
|
+
private modalCallbacks;
|
|
557
|
+
private components;
|
|
558
|
+
alert(message: string): void;
|
|
559
|
+
registerComponent(name: UIComponent, component: Component): void;
|
|
560
|
+
openModal<TModalComponent extends ModalComponent>(component: TModalComponent, properties?: ModalProperties<TModalComponent>): Promise<Modal<ModalResult<TModalComponent>>>;
|
|
561
|
+
closeModal(id: string, result?: unknown): Promise<void>;
|
|
562
|
+
protected boot(): Promise<void>;
|
|
563
|
+
private requireComponent;
|
|
564
|
+
private watchModalEvents;
|
|
565
|
+
}
|
|
566
|
+
|
|
567
|
+
export declare type UIServices = typeof services_2;
|
|
568
|
+
|
|
569
|
+
export declare type UnknownEvent<T> = T extends keyof EventsPayload ? never : T;
|
|
570
|
+
|
|
571
|
+
export declare function useForm<const T extends FormFieldDefinitions>(fields: T): Form<T> & FormData_2<T>;
|
|
572
|
+
|
|
573
|
+
export { }
|
|
574
|
+
|
|
575
|
+
interface BootstrapOptions {
|
|
576
|
+
lang?: LangOptions;
|
|
577
|
+
langMessages?: Record<string, unknown>;
|
|
578
|
+
}
|
|
579
|
+
|
|
580
|
+
interface Services extends LangServices {}
|
|
581
|
+
|
|
582
|
+
interface BootstrapOptions {
|
|
583
|
+
models?: Record<string, Record<string, unknown>>;
|
|
584
|
+
}
|
|
585
|
+
|
|
586
|
+
interface BootstrapOptions {
|
|
587
|
+
routes?: RouteRecordRaw[];
|
|
588
|
+
basePath?: string;
|
|
589
|
+
}
|
|
590
|
+
|
|
591
|
+
import type { RouteRecordRaw } from 'vue-router';
|
|
592
|
+
|
|
593
|
+
declare module '@vue/runtime-core' {
|
|
594
|
+
interface ComponentCustomProperties extends Services {}
|
|
595
|
+
}
|
|
596
|
+
|
|
597
|
+
export interface EventsPayload {
|
|
598
|
+
'modal-will-close': { modal: Modal; result?: unknown };
|
|
599
|
+
'modal-closed': { modal: Modal; result?: unknown };
|
|
600
|
+
'close-modal': { id: string; result?: unknown };
|
|
601
|
+
'hide-modal': { id: string };
|
|
602
|
+
'show-modal': { id: string };
|
|
603
|
+
}
|
|
604
|
+
|
|
605
|
+
interface BootstrapOptions {
|
|
606
|
+
components?: Partial<Record<UIComponent, Component>>;
|
|
607
|
+
}
|
|
608
|
+
|
|
609
|
+
interface Services extends UIServices {}
|