UNPKG

@codegouvfr/react-dsfr

Version:

French State Design System React integration library

4 lines (3 loc) 3.75 kB
/*! DSFR v1.8.5 | SPDX-License-Identifier: MIT | License-Filename: LICENSE.md | restricted use (see terms and conditions) */ !function(){"use strict";var t=window.dsfr,e={NAVIGATION:t.internals.ns.selector("nav"),COLLAPSE:t.internals.ns.selector("nav__item")+" > "+t.internals.ns.selector("collapse"),ITEM:t.internals.ns.selector("nav__item"),ITEM_RIGHT:t.internals.ns("nav__item--align-right"),MENU:t.internals.ns.selector("menu")},i=function(i){function n(){i.call(this),this._isRightAligned=!1}i&&(n.__proto__=i),n.prototype=Object.create(i&&i.prototype),n.prototype.constructor=n;var s={isRightAligned:{configurable:!0}},o={instanceClassName:{configurable:!0}};return o.instanceClassName.get=function(){return"NavigationItem"},n.prototype.init=function(){this.addAscent(t.core.DisclosureEmission.ADDED,this.calculate.bind(this)),this.addAscent(t.core.DisclosureEmission.REMOVED,this.calculate.bind(this)),this.isResizing=!0,this.calculate()},n.prototype.resize=function(){this.calculate()},n.prototype.calculate=function(){var i=this.element.getDescendantInstances(t.core.Collapse.instanceClassName,null,!0)[0];if(i&&this.isBreakpoint(t.core.Breakpoints.LG)&&i.element.node.matches(e.MENU)){var n=this.element.node.parentElement.getBoundingClientRect().right,s=i.element.node.getBoundingClientRect().width,o=this.element.node.getBoundingClientRect().left;this.isRightAligned=o+s>n}else this.isRightAligned=!1},s.isRightAligned.get=function(){return this._isRightAligned},s.isRightAligned.set=function(i){this._isRightAligned!==i&&(this._isRightAligned=i,i?t.internals.dom.addClass(this.element.node,e.ITEM_RIGHT):t.internals.dom.removeClass(this.element.node,e.ITEM_RIGHT))},Object.defineProperties(n.prototype,s),Object.defineProperties(n,o),n}(t.core.Instance),n={NONE:-1,INSIDE:0,OUTSIDE:1},s=function(i){function s(){i.apply(this,arguments)}i&&(s.__proto__=i),s.prototype=Object.create(i&&i.prototype),s.prototype.constructor=s;var o={index:{configurable:!0}},r={instanceClassName:{configurable:!0}};return r.instanceClassName.get=function(){return"Navigation"},s.prototype.init=function(){i.prototype.init.call(this),this.clicked=!1,this.out=!1,this.listen("focusout",this.focusOut.bind(this)),this.listen("mousedown",this.down.bind(this))},s.prototype.validate=function(t){return t.element.node.matches(e.COLLAPSE)},s.prototype.down=function(e){this.isBreakpoint(t.core.Breakpoints.LG)&&-1!==this.index&&this.current&&(this.position=this.current.node.contains(e.target)?n.INSIDE:n.OUTSIDE,this.requestPosition())},s.prototype.focusOut=function(e){this.isBreakpoint(t.core.Breakpoints.LG)&&(this.out=!0,this.requestPosition())},s.prototype.requestPosition=function(){this.isRequesting||(this.isRequesting=!0,this.request(this.getPosition.bind(this)))},s.prototype.getPosition=function(){if(this.out)switch(this.position){case n.OUTSIDE:this.index=-1;break;case n.INSIDE:this.current&&!this.current.node.contains(document.activeElement)&&this.current.focus();break;default:this.index>-1&&!this.current.hasFocus&&(this.index=-1)}this.request(this.requested.bind(this))},s.prototype.requested=function(){this.position=n.NONE,this.out=!1,this.isRequesting=!1},o.index.get=function(){return i.prototype.index},o.index.set=function(t){-1===t&&null!==this.current&&this.current.hasFocus&&this.current.focus(),i.prototype.index=t},Object.defineProperties(s.prototype,o),Object.defineProperties(s,r),s}(t.core.CollapsesGroup);t.navigation={Navigation:s,NavigationItem:i,NavigationMousePosition:n,NavigationSelector:e},t.internals.register(t.navigation.NavigationSelector.NAVIGATION,t.navigation.Navigation),t.internals.register(t.navigation.NavigationSelector.ITEM,t.navigation.NavigationItem)}(); //# sourceMappingURL=navigation.nomodule.min.js.map