@seemusic/ui-components
Version:
A Vue 3 UI Library. Uses Composable.
1 lines • 6.06 kB
Source Map (JSON)
{"version":3,"file":"SopPageHeader.mjs","sources":["../../../src/components/SopPageHeader/SopPageHeader.tsx"],"sourcesContent":["import { defineComponent, withModifiers, useSlots, getCurrentInstance } from 'vue';\nimport { useLocale } from '../../composables/useLocale';\nimport type { RouteLocationRaw, Router } from 'vue-router';\n\ntype StringArray = string | string[];\n\nexport default defineComponent({\n name: 'SopPageHeader',\n props: {\n title: {\n type: [String, Array],\n default: ''\n },\n back: {\n type: [Object, Number, String, Function],\n default: 0\n }\n },\n setup(props, { slots }) {\n const instance = getCurrentInstance();\n const { t } = useLocale();\n\n const $slots = useSlots();\n const $router = instance?.proxy?.$router as Router;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const validatorDataType = (val: any) => Object.prototype.toString.call(val).slice(8, -1);\n\n function backHtml() {\n return <>\n <i class=\"sop-icon sop-icon--arrow-down\" />\n { t('sop.common.back') }\n </>;\n }\n\n function routeJumpWay() {\n switch(validatorDataType(props.back)) {\n case 'Number':\n return <a\n href=\"#\"\n onClick={withModifiers(() => {\n $router.go(props.back as number);\n }, ['prevent'])}\n >\n {backHtml()}\n </a>;\n case 'String':\n return <a\n href=\"#\"\n onClick={withModifiers(() => {\n $router.push({ path: props.back as string });\n }, ['prevent'])}\n >\n {backHtml()}\n </a>;\n case 'Object':\n return <a\n href=\"#\"\n onClick={withModifiers(() => {\n $router.push(props.back as RouteLocationRaw);\n }, ['prevent'])}\n >\n {backHtml()}\n </a>;\n case 'Function':\n return <a\n href=\"#\"\n onClick={withModifiers(() => {\n (props.back as () => void)();\n }, ['prevent'])}\n >\n {backHtml()}\n </a>;\n }\n }\n\n function genTitle (title: string | string[]) {\n if (Array.isArray(title)) {\n return title.map((text: string, i: number) => (\n <span key={i} class=\"sop-page-title-item\">\n <span class=\"text\">{text}</span>\n {i < title.length -1 ? <span class=\"separate\">/</span> : ''}\n </span>\n ));\n } else {\n return title;\n }\n }\n\n return () => (\n <div class=\"sop-page__hd\">\n {\n props.back ?\n <div class=\"sop-page-path\">\n {routeJumpWay()}\n <span class=\"slice\">/</span>\n <div class=\"sop-page-title\">\n {genTitle(props.title as StringArray)}\n </div>\n </div> :\n <div class=\"sop-page-title\">\n {genTitle(props.title as StringArray)}\n </div>\n }\n {\n $slots.opt &&\n <div class=\"sop-page-opt\">\n {slots.opt?.()}\n </div>\n }\n </div>\n );\n },\n});\n"],"names":["defineComponent","name","props","title","type","String","Array","default","back","Object","Number","Function","setup","slots","instance","getCurrentInstance","t","useLocale","$slots","useSlots","$router","proxy","validatorDataType","val","prototype","toString","call","slice","backHtml","_createVNode","_Fragment","routeJumpWay","withModifiers","go","push","path","genTitle","isArray","map","text","i","length","_createTextVNode","opt"],"mappings":";;AAMA,MAAeA,gDAAgB;AAAA,EAC7BC,MAAM;AAAA,EACNC,OAAO;AAAA,IACLC,OAAO;AAAA,MACLC,MAAM,CAACC,QAASC,KAAK;AAAA,MACrBC,SAAS;AAAA,IACV;AAAA,IACDC,MAAM;AAAA,MACJJ,MAAM,CAACK,QAAQC,QAAQL,QAAQM,QAAQ;AAAA,MACvCJ,SAAS;AAAA,IACX;AAAA,EACD;AAAA,EACDK,MAAMV,OAAO;AAAA,IAAEW;AAAAA,EAAM,GAAG;;AACtB,UAAMC,WAAWC;AACjB,UAAM;AAAA,MAAEC;AAAAA,IAAG,IAAGC,UAAS;AAEvB,UAAMC,SAASC;AACf,UAAMC,WAAUN,0CAAUO,UAAVP,mBAAiBM;AAEjC,UAAME,oBAAqBC,SAAad,OAAOe,UAAUC,SAASC,KAAKH,GAAG,EAAEI,MAAM,GAAG,EAAE;AAEvF,aAASC,WAAW;AAClB,aAAAC,YAAAC,UAAA,MAAA,CAAAD,YAAA,KAAA;AAAA,QAAA,SAAA;AAAA,MAEIb,GAAAA,IAAAA,GAAAA,EAAE,iBAAiB,CAAC,CAAA;AAAA,IAE1B;AAEA,aAASe,eAAe;AACtB,cAAOT,kBAAkBpB,MAAMM,IAAI,GAAC;AAAA,QAClC,KAAK;AACH,iBAAAqB,YAAA,KAAA;AAAA,YAAA,QAAA;AAAA,YAAA,WAEaG,cAAc,MAAM;AAC3BZ,sBAAQa,GAAG/B,MAAMM,IAAc;AAAA,eAC9B,CAAC,SAAS,CAAC;AAAA,aAEboB,CAAAA,SAAU,CAAA,CAAA;AAAA,QAEjB,KAAK;AACH,iBAAAC,YAAA,KAAA;AAAA,YAAA,QAAA;AAAA,YAAA,WAEaG,cAAc,MAAM;AAC3BZ,sBAAQc,KAAK;AAAA,gBAAEC,MAAMjC,MAAMM;AAAAA,cAAe,CAAC;AAAA,eAC1C,CAAC,SAAS,CAAC;AAAA,aAEboB,CAAAA,SAAU,CAAA,CAAA;AAAA,QAEjB,KAAK;AACH,iBAAAC,YAAA,KAAA;AAAA,YAAA,QAAA;AAAA,YAAA,WAEaG,cAAc,MAAM;AAC3BZ,sBAAQc,KAAKhC,MAAMM,IAAwB;AAAA,eAC1C,CAAC,SAAS,CAAC;AAAA,aAEboB,CAAAA,SAAU,CAAA,CAAA;AAAA,QAEjB,KAAK;AACH,iBAAAC,YAAA,KAAA;AAAA,YAAA,QAAA;AAAA,YAAA,WAEWG,cAAc,MAAM;AAC1B9B,oBAAMM,KAAI;AAAA,eACV,CAAC,SAAS,CAAC;AAAA,aAEboB,CAAAA,SAAU,CAAA,CAAA;AAAA,MAEjB;AAAA,IACF;AAEA,aAASQ,SAAUjC,OAA0B;AAC3C,UAAIG,MAAM+B,QAAQlC,KAAK,GAAG;AACxB,eAAOA,MAAMmC,IAAI,CAACC,MAAcC,MAASX,YAAA,QAAA;AAAA,UAAA,OAC5BW;AAAAA,UAAC,SAAA;AAAA,QAAA,GAAA,CAAAX,YAAA,QAAA;AAAA,UAAA,SAAA;AAAA,WACUU,CAAAA,IAAI,CACvBC,GAAAA,IAAIrC,MAAMsC,SAAQ,IAACZ,YAAA,QAAA;AAAA,UAAA,SAAA;AAAA,QAAA,GAAA,CAAAa,gBAAA,GAAA,CAAA,CAAA,IAAqC,EAAE,CAAA,CAE9D;AAAA,MACH,OAAO;AACL,eAAOvC;AAAAA,MACT;AAAA,IACF;AAEA,WAAO,MAAA;;AAAA0B,yBAAA,OAAA;AAAA,QAAA,SAAA;AAAA,MAAA,GAAA,CAGD3B,MAAMM,OAAIqB,YAAA,OAAA;AAAA,QAAA,SAAA;AAAA,MAAA,GAAA,CAELE,aAAY,GAAEF,YAAA,QAAA;AAAA,QAAA,SAAA;AAAA,SAAAa,CAAAA,wBAAAb,YAAA,OAAA;AAAA,QAAA,SAAA;AAAA,MAAA,GAAA,CAGZO,SAASlC,MAAMC,KAAoB,CAAC,OAAA0B,YAAA,OAAA;AAAA,QAAA,SAAA;AAAA,MAAA,GAAA,CAItCO,SAASlC,MAAMC,KAAoB,CAAC,CACjC,GAGRe,OAAOyB,OAAGd,YAAA,OAAA;AAAA,QAAA,SAAA;AAAA,MAAA,GAAA,EAEPhB,MAAAA,MAAM8B,QAAN9B,gBAAAA,IAAAA,WAAa,EACV,CAGX;AAAA;AAAA,EACH;AACF,CAAC;"}