@nent/core
Version:
4 lines • 1.71 kB
JavaScript
/*!
* NENT 2022
*/
import{r as t,h as i,H as s,a as e}from"./index-916ca544.js";import{g as l}from"./elements-397b851b.js";import{o as r,s as n}from"./state-adf07580.js";import{c as a}from"./logging-5a93c8af.js";import{i as o}from"./values-ddfac998.js";import"./index-4bfabbbd.js";const h=class{constructor(i){t(this,i),this.activeClass="active",this.exact=!1,this.strict=!0,this.debug=!1,this.validate=!1}get parentUrl(){var t,i;return(null===(t=this.el.closest("n-view-prompt"))||void 0===t?void 0:t.path)||(null===(i=this.el.closest("n-view"))||void 0===i?void 0:i.path)}componentWillLoad(){this.routeSubscription=r("location",(()=>{if(n.router){this.path=n.router.resolvePathname(this.path,this.parentUrl||"/");const t=n.router.matchPath({path:this.path,exact:this.exact,strict:this.strict});this.match=t?Object.assign({},t):null}}))}handleClick(t,i){const s=n.router;return!(null!=s&&!s.isModifiedEvent(t)&&null!=i&&(t.stopImmediatePropagation(),t.preventDefault(),(0==this.validate||l(s.exactRoute.routeElement))&&s.goToRoute(i),1))}render(){const{router:t}=n,e=null==t?void 0:t.resolvePathname(this.path,this.parentUrl),l=null==t?void 0:t.matchPath({path:e,exact:this.exact,strict:this.strict}),r={[this.activeClass]:o(l),[this.linkClass||""]:!0};a(this.debug,"n-view-link re-render "+e);let h={title:this.el.title,role:this.el.getAttribute("aria-role"),id:this.el.id};return i(s,null,i("a",Object.assign({href:e},h,{"n-attached-click":!0,"n-attached-key-press":!0,class:r,onClick:t=>this.handleClick(t,e),onKeyPress:t=>this.handleClick(t,e)}),i("slot",null)))}disconnectedCallback(){var t;null===(t=this.routeSubscription)||void 0===t||t.call(this)}get el(){return e(this)}};export{h as n_view_link}