UNPKG

@sap-ux/ui-components

Version:
2 lines (1 loc) 15.6 kB
(()=>{var A=Object.defineProperty,j=Object.defineProperties;var K=Object.getOwnPropertyDescriptors;var U=Object.getOwnPropertySymbols;var W=Object.prototype.hasOwnProperty,B=Object.prototype.propertyIsEnumerable;var x=(u,i,o)=>i in u?A(u,i,{enumerable:!0,configurable:!0,writable:!0,value:o}):u[i]=o,M=(u,i)=>{for(var o in i||(i={}))W.call(i,o)&&x(u,o,i[o]);if(U)for(var o of U(i))B.call(i,o)&&x(u,o,i[o]);return u},T=(u,i)=>j(u,K(i));(self.webpackChunk_sap_ux_ui_components=self.webpackChunk_sap_ux_ui_components||[]).push([[652],{"../../node_modules/.pnpm/css-loader@6.8.1_webpack@5.96.1/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[11].use[1]!../../node_modules/.pnpm/sass-loader@13.3.2_sass@1.66.1_webpack@5.96.1/node_modules/sass-loader/dist/cjs.js!./src/components/UITreeDropdown/UITreeDropdown.scss":(u,i,o)=>{var D=o("../../node_modules/.pnpm/css-loader@6.8.1_webpack@5.96.1/node_modules/css-loader/dist/runtime/noSourceMaps.js"),r=o("../../node_modules/.pnpm/css-loader@6.8.1_webpack@5.96.1/node_modules/css-loader/dist/runtime/api.js"),c=r(D);c.push([u.id,'.ui-treeDropdown{position:relative}.ui-treeDropdown-with-label{margin-top:29px}.ui-treeDropdown-wrapper{position:relative}.ui-treeDropdown-wrapper input{padding:0 26px 0 8px;font-family:var(--vscode-font-family)}.ui-treeDropdown-wrapper.disabled>button{z-index:-1}.ui-treeDropdown-wrapper.readonly>button{pointer-events:none}.ui-treeDropdown-caret{position:absolute;width:24px;height:24px;top:0;right:0;cursor:pointer;box-sizing:border-box}.ui-treeDropdown-caret:hover,.ui-treeDropdown-caret:active,.ui-treeDropdown-caret:focus{background-color:rgba(0,0,0,0)}.ui-treeDropdown label{position:absolute;bottom:26px;margin-top:0 !important;font-family:var(--vscode-font-family);font-size:13px;font-weight:bold;box-sizing:border-box;box-shadow:none;margin-right:0px;margin-bottom:0px;margin-left:0px;display:block;padding:4px 0;overflow-wrap:break-word}.ui-treeDropdown label.required:after{content:" *";color:var(--vscode-inputValidation-errorBorder)}.ui-treeDropdown label.disabled{opacity:.4}',""]),u.exports=c},"./src/components/UITreeDropdown/UITreeDropdown.scss":(u,i,o)=>{"use strict";o.r(i),o.d(i,{default:()=>e});var D=o("../../node_modules/.pnpm/style-loader@3.3.3_webpack@5.96.1/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"),r=o.n(D),c=o("../../node_modules/.pnpm/style-loader@3.3.3_webpack@5.96.1/node_modules/style-loader/dist/runtime/styleDomAPI.js"),d=o.n(c),_=o("../../node_modules/.pnpm/style-loader@3.3.3_webpack@5.96.1/node_modules/style-loader/dist/runtime/insertBySelector.js"),p=o.n(_),f=o("../../node_modules/.pnpm/style-loader@3.3.3_webpack@5.96.1/node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js"),S=o.n(f),R=o("../../node_modules/.pnpm/style-loader@3.3.3_webpack@5.96.1/node_modules/style-loader/dist/runtime/insertStyleElement.js"),I=o.n(R),w=o("../../node_modules/.pnpm/style-loader@3.3.3_webpack@5.96.1/node_modules/style-loader/dist/runtime/styleTagTransform.js"),b=o.n(w),C=o("../../node_modules/.pnpm/css-loader@6.8.1_webpack@5.96.1/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[11].use[1]!../../node_modules/.pnpm/sass-loader@13.3.2_sass@1.66.1_webpack@5.96.1/node_modules/sass-loader/dist/cjs.js!./src/components/UITreeDropdown/UITreeDropdown.scss"),h=o.n(C),g={};for(const t in C)t!=="default"&&(g[t]=()=>C[t]);o.d(i,g);var m={};m.styleTagTransform=b(),m.setAttributes=S(),m.insert=p().bind(null,"head"),m.domAPI=d(),m.insertStyleElement=I();var y=r()(h(),m);const e=h()&&h().locals?h().locals:void 0},"./src/components/UITreeDropdown/UITreeDropdown.tsx":function(u,i,o){"use strict";var D=this&&this.__importDefault||function(h){return h&&h.__esModule?h:{default:h}};Object.defineProperty(i,"__esModule",{value:!0}),i.UITreeDropdown=i.EdgePosition=i.UIDirectionalHint=void 0;const r=D(o("../../node_modules/.pnpm/react@16.14.0/node_modules/react/index.js")),c=D(o("../../node_modules/.pnpm/uuid@3.4.0/node_modules/uuid/index.js")),d=o("../../node_modules/.pnpm/@fluentui+react@8.120.5_@types+react-dom@16.9.24_@types+react@16.14.55_react-dom@16.14.0_react@16.14.0/node_modules/@fluentui/react/lib-commonjs/index.js");Object.defineProperty(i,"UIDirectionalHint",{enumerable:!0,get:function(){return d.DirectionalHint}});const _=o("./src/components/UIInput/index.tsx"),p=o("./src/components/UIContextualMenu/index.tsx"),f=o("./src/components/UIButton/UIIconButton.tsx"),S=o("./src/components/Icons.tsx"),R=o("./src/helper/ValidationMessage/index.tsx");o("./src/components/UITreeDropdown/UITreeDropdown.scss");const I={callout:"ui-tree-callout",scrollArea:"ms-ContextualMenu-container",splitButton:"ms-ContextualMenu-splitMenu"};var w;(function(h){h.First="First",h.Last="Last"})(w||(i.EdgePosition=w={}));const b={ArrowUp:"ArrowUp",ArrowDown:"ArrowDown",Enter:"Enter",Escape:"Escape"};class C extends r.default.Component{constructor(g){var m,y;super(g),this.UITreeDropdownRef=r.default.createRef(),this.UITreeDropdownFocusZoneRef=r.default.createRef(),this.inputRef=r.default.createRef(),this.submenuRefs={},this.submenuOffset=0,this.lastKeyDown="",this.componentDidMount=()=>{this.props.items.length&&(this.buildItems(this.props.items),this.setState({isDisabled:!1}))},this.componentDidUpdate=e=>{this.props.items.length!==e.items.length&&(this.setState({isHidden:!0}),this.setState({isDisabled:!this.props.items.length}),this.buildItems(this.props.items)),this.props.value!==e.value&&this.setState({value:this.props.value}),this.calculateSubmenuOffset()},this.buildItems=e=>{if(this.state.items.length!==e.length){e=e.map(this.buildSubItems);const t=this.mapValuesToContextMenu(e);this.setState({originalItems:t,items:t})}},this.buildSubItems=e=>{var t;return(t=e.children)!=null&&t.length&&(e.children=e.children.map(s=>{const n=new RegExp(e.value,"ig"),l=s.value.search(n)===-1?`${e.value}${this.state.valueSeparator}${s.value}`:s.value;return T(M({},s),{split:!1,value:l})})),e},this.mapValuesToContextMenu=(e,t=0)=>e.map(s=>{var n;if((n=s.children)!=null&&n.length){s.split=!0;const l=this.getRefId(s.value,t);this.submenuRefs[l]||(this.submenuRefs[l]=r.default.createRef()),s.subMenuProps={componentRef:this.submenuRefs[l],items:this.mapValuesToContextMenu(s.children,t+1),focusZoneProps:{handleTabKey:d.FocusZoneTabbableElements.none,onFocus:()=>{var O,E,v,P;const a=(O=this.defaultSubmenuFocus)==null?void 0:O.parent;a&&a.item.value===s.value&&a.level===t&&this.focusItemWithValue(this.state.value,(P=(v=(E=this.defaultSubmenuFocus)==null?void 0:E.parent)==null?void 0:v.item.subMenuProps)==null?void 0:P.items)}}}}return T(M({},s),{key:s.value,text:s.label,className:"ui-tree-dropdown-list-item",onClick:()=>this.handleSelection(s.value),onRenderContent:this.handleRenderContent})}),this.handleSelection=e=>{this.hasSelected=!0,this.setState({value:e,valueChanged:!1},()=>this.props.onParameterValueChange(e))},this.handleKeyPress=e=>{switch(e.key){case"Enter":this.state.isMenuOpen?(this.setState({valueChanged:!0}),this.handleSelection(this.state.value?this.state.value:"")):this.toggleMenu(!1,e);break;case"ArrowDown":this.state.isMenuOpen?this.focusDropdown(e,e.key):this.toggleMenu(!1,e);break;case"Tab":this.state.isMenuOpen&&this.toggleMenu(!0),this.handleSelection(this.state.value?this.state.value:"");break;default:}this.lastKeyDown=e.key},this.focusDropdown=(e,t)=>{var s;this.UITreeDropdownFocusZoneRef&&(t===b.Enter?this.focusItemWithValue(this.state.value,this.state.items):(s=this.UITreeDropdownFocusZoneRef.current)==null||s.focus(!0),e.preventDefault())},this.handleRenderContent=(e,t)=>(e.item.className=e.item.value===this.props.value?"is-selected":"",e.item.text=this.highlightQuery(e.item.label,this.state.query),this.applySubmenuPosition(e.item),t?t.renderItemName(e):null),this.handleRenderMenuList=(e,t)=>{let s=[];return e!=null&&e.items&&(s=e.items.map(n=>{var l;return n.className=n.value===this.props.value?"is-selected":"",n.text=this.highlightQuery(n.label,this.state.query),this.applySubmenuPosition(n),(l=n.subMenuProps)==null||l.items.map(a=>(a.className=a.value===this.props.value?"is-selected":"",a)),M({},n)})),t?t(T(M({},e),{items:s})):null},this.toggleMenu=(e,t)=>{if(this.props.readOnly)return;this.setState({isHidden:e});const s=t==null?void 0:t.key;t&&setTimeout(()=>{t.persist(),this.focusDropdown(t,s)},0)},this.highlightQuery=(e,t)=>r.default.createElement(p.UIHighlightMenuOption,{text:e,query:t}),this.filterElement=(e,t)=>{var n;const s=new RegExp(e,"ig");return(n=t==null?void 0:t.children)!=null&&n.length?t.children.filter(l=>this.filterElement(e,l)).length>0:t!=null&&t.value?t.value.search(s)!==-1:!1},this.handleOnChangeValue=e=>{const t=e.target;this.hasSelected=!1,this.setState(s=>({value:t.value,items:s.originalItems.filter(n=>this.filterElement(t.value,n)),query:t.value,valueChanged:!0})),this.state.isMenuOpen||this.toggleMenu(!1)},this.handleDismiss=e=>{e&&"key"in e&&e.key===b.Escape?this.resetValue():this.hasSelected||this.props.onParameterValueChange(""),this.setState(t=>({items:t.originalItems,query:""})),this.toggleMenu(!0),this.originalValue=void 0},this.applySubmenuPosition=e=>{var t;(t=e.subMenuProps)!=null&&t.items&&(e.subMenuProps.calloutProps||(e.subMenuProps.calloutProps={}),e.subMenuProps.calloutProps.styles={root:{marginLeft:this.submenuOffset}})},this.getCalloutDomRef=(e=!1)=>{const t=`${I.callout}${this.state.uiidInput}`,s=document.querySelector(`.${t}`);return e&&s?s.nextSibling:s},this.calculateSubmenuOffset=()=>{const e=this.getCalloutDomRef();if(e){const t=e.querySelector(`.${I.scrollArea}`);this.submenuOffset=0,t&&t.scrollHeight>t.clientHeight&&(this.submenuOffset=t.offsetWidth-t.clientWidth)}},this.onFocusElementChanged=e=>{const t=e.getElementsByClassName("ts-Menu-option");document.getElementsByClassName("ms-Fabric--isFocusVisible").length>0&&t.length>0&&this.setState({value:e.value?e.value:t[0].innerText,valueChanged:!0})},this.onWindowKeyDown=e=>{var s;this.lastKeyDown=e.key;const t=document.activeElement;if([b.ArrowDown,b.ArrowUp].includes(e.key)&&t){const n=this.getEdgePosition(t),l=n.includes(w.First)&&e.key===b.ArrowUp,a=n.includes(w.Last)&&e.key===b.ArrowDown;(l||a)&&(l&&t.closest(`.${I.callout}${this.state.uiidInput}`)&&((s=this.inputRef.current)==null||s.focus()),e.stopPropagation(),e.preventDefault())}},this.handleCustomDownKey=e=>{this.lastKeyDown.includes("Arrow")&&(this.lastKeyDown="",this.onFocusElementChanged(e.target))},this.applyCustomKeyDownHandlingEvents=()=>{window.addEventListener("keydown",this.onWindowKeyDown,!0),window.addEventListener("focus",this.handleCustomDownKey,!0)},this.removeCustomKeyDownHandlingEvents=()=>{window.removeEventListener("keydown",this.onWindowKeyDown,!0),window.removeEventListener("focus",this.handleCustomDownKey,!0)},this.getEdgePosition=e=>{const t=e.closest("ul"),s=e.closest("li"),n=[];return t&&s&&(t.children[0]===s&&n.push(w.First),t.children[t.children.length-1]===s&&n.push(w.Last)),n},this.findItemByValue=(e,t=[],s,n=0)=>{var a,O;let l;for(let E=0;E<t.length;E++){const v=t[E],P={item:v,index:E,parent:s,level:n};if(v.value===e?l=P:(O=(a=v.subMenuProps)==null?void 0:a.items)!=null&&O.length&&(l=this.findItemByValue(e,v.subMenuProps.items,P,n+1)),l)break}return l},this.getItemTarget=(e,t)=>{let s;const n=e.querySelector(".ms-ContextualMenu-list");return n!=null&&n.childNodes[t.index]&&(s=n.childNodes[t.index].firstChild),s},this.focusItemWithValue=(e,t=[])=>{const s=this.findItemByValue(e,t),n=this.getCalloutDomRef(!!this.defaultSubmenuFocus);if(this.defaultSubmenuFocus=void 0,s&&n){let l;if(s.parent){const a=this.getItemTarget(n,s.parent);a&&(this.defaultSubmenuFocus=s,a.dispatchEvent(new KeyboardEvent("keydown",{keyCode:39,which:39,bubbles:!0})))}else l=this.getItemTarget(n,s);if(l)l.focus();else{const a=n.querySelector(`.${I.scrollArea}`);a==null||a.focus()}}},this.getRefId=(e,t)=>`${e}__${t}`,this.state={query:"",value:(m=this.props.value)!=null?m:"",isHidden:!0,originalItems:[],items:[],valueSeparator:(y=this.props.valueSeparator)!=null?y:".",uiidInput:c.default.v4(),isDisabled:!this.props.items.length,isMenuOpen:!1,valueChanged:!1},this.hasSelected=!!this.props.value,this.toggleMenu=this.toggleMenu.bind(this),this.onWindowKeyDown=this.onWindowKeyDown.bind(this),this.handleCustomDownKey=this.handleCustomDownKey.bind(this),(0,d.setIconOptions)({disableWarnings:!0})}resetValue(){this.setState({value:this.originalValue,valueChanged:!1})}getClassNames(){let g=`ui-treeDropdown-wrapper ui-treeDropdown-wrapper-menu${this.state.isMenuOpen?"-open":"-close"} ui-treeDropdown-wrapper-${this.state.uiidInput}`;return this.state.isDisabled&&(g+=" disabled"),this.props.readOnly&&(g+=" readonly"),g}render(){const g=(0,R.getMessageInfo)(this.props);let m=!0;return this.props.useTargetWidth&&(m=!1),r.default.createElement("div",{className:`ui-treeDropdown ui-treeDropDown-${this.state.uiidInput} ${this.props.label?"ui-treeDropdown-with-label":""}`},this.props.label&&r.default.createElement("label",{className:`${this.props.required?"required":""} ${this.state.isDisabled?"disabled":""}`},this.props.label),r.default.createElement("div",{className:this.getClassNames()},r.default.createElement(_.UITextInput,T(M({},this.props),{componentRef:this.inputRef,disabled:this.state.isDisabled,readOnly:this.props.readOnly,autoComplete:"off",value:this.state.value,placeholder:this.props.placeholderText,onKeyDown:this.handleKeyPress,onChange:this.handleOnChangeValue,onClick:()=>{this.toggleMenu(!1)},onFocus:y=>{y.target.select()},errorMessage:g.message})),r.default.createElement(f.UIIconButton,{tabIndex:-1,allowDisabledFocus:!0,className:"ui-treeDropdown-caret",iconProps:{iconName:S.UiIcons.ArrowDown},onClick:()=>{var y;this.state.isHidden&&((y=this.inputRef.current)==null||y.focus()),this.toggleMenu(!this.state.isHidden)}})),!this.state.isHidden&&r.default.createElement(p.UIContextualMenu,{componentRef:this.UITreeDropdownRef,onRenderMenuList:this.handleRenderMenuList,className:"ui-treeDropDown-context-menu",target:`.ui-treeDropDown-${this.state.uiidInput}`,onMenuOpened:()=>{this.originalValue=this.state.value,this.applyCustomKeyDownHandlingEvents(),this.setState({isMenuOpen:!0})},onMenuDismissed:()=>{this.removeCustomKeyDownHandlingEvents(),this.setState({isMenuOpen:!1}),this.state.valueChanged&&this.handleSelection(this.state.value?this.state.value:"")},useTargetWidth:m,useTargetAsMinWidth:!0,onRestoreFocus:y=>{var e;(e=y.originalElement)==null||e.focus()},shouldUpdateWhenHidden:!0,items:this.state.items,onDismiss:this.handleDismiss,shouldFocusOnContainer:!1,focusZoneProps:{componentRef:this.UITreeDropdownFocusZoneRef,handleTabKey:d.FocusZoneTabbableElements.none,isCircularNavigation:!1},shouldFocusOnMount:!1,directionalHint:this.props.directionalHint,calloutProps:{layerProps:{className:`${I.callout}${this.state.uiidInput}`},onLayerMounted:()=>{this.calculateSubmenuOffset()}},styles:{container:{maxHeight:192,overflowY:"auto"}},maxWidth:this.props.maxWidth}))}}i.UITreeDropdown=C},"./src/components/UITreeDropdown/index.tsx":function(u,i,o){"use strict";var D=this&&this.__createBinding||(Object.create?function(c,d,_,p){p===void 0&&(p=_);var f=Object.getOwnPropertyDescriptor(d,_);(!f||("get"in f?!d.__esModule:f.writable||f.configurable))&&(f={enumerable:!0,get:function(){return d[_]}}),Object.defineProperty(c,p,f)}:function(c,d,_,p){p===void 0&&(p=_),c[p]=d[_]}),r=this&&this.__exportStar||function(c,d){for(var _ in c)_!=="default"&&!Object.prototype.hasOwnProperty.call(d,_)&&D(d,c,_)};Object.defineProperty(i,"__esModule",{value:!0}),r(o("./src/components/UITreeDropdown/UITreeDropdown.tsx"),i)}}]);})();