From a22888b758b35c2509de4095d5cfbb8cc3621f8f Mon Sep 17 00:00:00 2001 From: Lidor-Systems Date: Wed, 15 Dec 2021 11:54:07 +0100 Subject: [PATCH] 21.4 --- CHANGE_LOG.md | 38 ++ README.md | 6 +- components/integralui.base.grid.js | 4 +- components/integralui.base.js | 4 +- components/integralui.base.value.js | 4 +- components/integralui.button.js | 4 +- components/integralui.calendar.js | 4 +- components/integralui.checkbox.js | 4 +- components/integralui.contextmenu.js | 15 + components/integralui.datepicker.js | 4 +- components/integralui.dragwin.js | 4 +- components/integralui.dropdown.js | 4 +- components/integralui.dropdownbutton.js | 4 +- components/integralui.dropdownfilter.js | 15 + components/integralui.enums.js | 4 +- components/integralui.grid.js | 4 +- components/integralui.header.js | 4 +- components/integralui.item.js | 4 +- components/integralui.list.js | 4 +- components/integralui.menuitem.js | 15 + components/integralui.numeric.js | 4 +- components/integralui.paginator.js | 4 +- components/integralui.progressbar.js | 4 +- components/integralui.radiobutton.js | 4 +- components/integralui.radiogroup.js | 2 +- components/integralui.rating.js | 4 +- components/integralui.scrollbar.js | 4 +- components/integralui.select.js | 4 +- components/integralui.slider.js | 15 - components/integralui.tooltip.js | 4 +- icons/begins-with-dark.ico | Bin 0 -> 1150 bytes icons/begins-with-white.ico | Bin 0 -> 1150 bytes icons/between-dark.ico | Bin 0 -> 1150 bytes icons/between-white.ico | Bin 0 -> 1150 bytes icons/calendar-dark.ico | Bin 0 -> 1150 bytes icons/calendar-white.ico | Bin 0 -> 1150 bytes icons/checkbox-checked-10.ico | Bin 0 -> 1150 bytes icons/checkbox-indeterminate-10.ico | Bin 0 -> 1150 bytes icons/checkbox-unchecked-10.ico | Bin 0 -> 1150 bytes icons/circular-light.png | Bin 0 -> 32656 bytes icons/circular.png | Bin 0 -> 31701 bytes icons/close-24 - Copy.png | Bin 0 -> 30272 bytes icons/close-white-24.png | Bin 0 -> 28218 bytes icons/contains-dark.ico | Bin 0 -> 1150 bytes icons/contains-white.ico | Bin 0 -> 1150 bytes icons/edit-white.ico | Bin 0 -> 1150 bytes icons/ends-with-dark.ico | Bin 0 -> 1150 bytes icons/ends-with-white.ico | Bin 0 -> 1150 bytes icons/equal-dark.ico | Bin 0 -> 1150 bytes icons/equal-white.ico | Bin 0 -> 1150 bytes icons/greater-than-dark.ico | Bin 0 -> 1150 bytes icons/greater-than-equal-dark.ico | Bin 0 -> 1150 bytes icons/greater-than-equal-white.ico | Bin 0 -> 1150 bytes icons/greater-than-white.ico | Bin 0 -> 1150 bytes icons/less-than-dark.ico | Bin 0 -> 1150 bytes icons/less-than-equal-dark.ico | Bin 0 -> 1150 bytes icons/less-than-equal-white.ico | Bin 0 -> 1150 bytes icons/less-than-white.ico | Bin 0 -> 1150 bytes icons/not-contain-dark.ico | Bin 0 -> 1150 bytes icons/not-contain-white.ico | Bin 0 -> 1150 bytes icons/not-equal-dark.ico | Bin 0 -> 1150 bytes icons/not-equal-white.ico | Bin 0 -> 1150 bytes icons/search-dark.ico | Bin 0 -> 1150 bytes icons/search-white.ico | Bin 0 -> 1150 bytes icons/swap-white.ico | Bin 0 -> 1150 bytes package.json | 11 +- resources/icons.png | Bin 121567 -> 121433 bytes services/integralui.common.service.js | 4 +- services/integralui.data.service.js | 4 +- services/integralui.dragdrop.service.js | 2 +- services/integralui.filter.service.js | 4 +- styles/integralui.button.style.js | 11 +- styles/integralui.calendar.style.js | 67 +-- styles/integralui.checkbox.style.js | 127 ++++- styles/integralui.contextmenu.style.js | 51 ++ styles/integralui.datepicker.style.js | 51 +- styles/integralui.dragdrop.style.js | 4 +- styles/integralui.dropdownbutton.style.js | 7 +- styles/integralui.dropdownfilter.style.js | 175 +++++++ styles/integralui.editors.style.js | 8 +- styles/integralui.filter.style.js | 20 +- styles/integralui.grid.style.js | 450 +++++++++--------- styles/integralui.header.style.js | 22 +- styles/integralui.item.style.js | 6 +- styles/integralui.list.style.js | 17 +- styles/integralui.listitem.style.js | 17 +- styles/integralui.menuitem.style.js | 347 ++++++++++++++ styles/integralui.numeric.style.js | 27 +- styles/integralui.paginator.style.js | 17 +- styles/integralui.progressbar.style.js | 21 +- styles/integralui.radiobutton.style.js | 15 +- styles/integralui.rating.style.js | 20 +- styles/integralui.scrollbar.style.js | 28 +- styles/integralui.select.style.js | 21 +- styles/integralui.slider.style.js | 60 --- styles/integralui.sorting.style.js | 4 +- styles/integralui.style.js | 72 +++ styles/integralui.tooltip.style.js | 26 +- themes/midnight/integralui.button.midnight.js | 6 +- .../midnight/integralui.calendar.midnight.js | 47 +- .../midnight/integralui.checkbox.midnight.js | 18 +- .../integralui.contextmenu.midnight.js | 36 ++ .../integralui.datepicker.midnight.js | 29 +- .../midnight/integralui.dragdrop.midnight.js | 6 +- .../integralui.dropdownbutton.midnight.js | 24 + .../integralui.dropdownfilter.midnight.js | 65 +++ .../midnight/integralui.editors.midnight.js | 9 + themes/midnight/integralui.grid.midnight.js | 201 ++++---- themes/midnight/integralui.header.midnight.js | 7 + themes/midnight/integralui.item.midnight.js | 6 +- themes/midnight/integralui.list.midnight.js | 6 +- .../midnight/integralui.listitem.midnight.js | 6 +- .../midnight/integralui.menuitem.midnight.js | 158 ++++++ themes/midnight/integralui.midnight.js | 6 +- .../midnight/integralui.numeric.midnight.js | 9 +- .../midnight/integralui.paginator.midnight.js | 11 +- .../integralui.progressbar.midnight.js | 6 +- .../integralui.radiobutton.midnight.js | 6 +- themes/midnight/integralui.rating.midnight.js | 6 +- .../midnight/integralui.scrollbar.midnight.js | 6 +- themes/midnight/integralui.select.midnight.js | 10 +- themes/midnight/integralui.slider.midnight.js | 14 - .../midnight/integralui.tooltip.midnight.js | 6 +- themes/office/integralui.button.office.js | 6 +- themes/office/integralui.calendar.office.js | 37 +- themes/office/integralui.checkbox.office.js | 6 +- .../office/integralui.contextmenu.office.js | 38 ++ themes/office/integralui.datepicker.office.js | 10 +- themes/office/integralui.dragdrop.office.js | 6 +- .../integralui.dropdownbutton.office.js | 50 ++ .../integralui.dropdownfilter.office.js | 6 + themes/office/integralui.editors.office.js | 6 + themes/office/integralui.grid.office.js | 192 ++++---- themes/office/integralui.header.office.js | 4 + themes/office/integralui.item.office.js | 6 +- themes/office/integralui.list.office.js | 6 +- themes/office/integralui.listitem.office.js | 6 +- themes/office/integralui.menuitem.office.js | 180 +++++++ themes/office/integralui.numeric.office.js | 4 +- themes/office/integralui.office.js | 6 +- themes/office/integralui.paginator.office.js | 6 +- .../office/integralui.progressbar.office.js | 6 +- .../office/integralui.radiobutton.office.js | 6 +- themes/office/integralui.rating.office.js | 6 +- themes/office/integralui.scrollbar.office.js | 6 +- themes/office/integralui.select.office.js | 6 +- themes/office/integralui.slider.office.js | 11 - themes/office/integralui.tooltip.office.js | 6 +- wrappers/react.integralui.button.js | 4 +- wrappers/react.integralui.calendar.js | 4 +- wrappers/react.integralui.checkbox.js | 4 +- wrappers/react.integralui.contextmenu.js | 15 + wrappers/react.integralui.datepicker.js | 4 +- wrappers/react.integralui.dropdownbutton.js | 4 +- wrappers/react.integralui.grid.js | 4 +- wrappers/react.integralui.item.js | 4 +- wrappers/react.integralui.list.js | 4 +- wrappers/react.integralui.numeric.js | 4 +- wrappers/react.integralui.paginator.js | 4 +- wrappers/react.integralui.progressbar.js | 4 +- wrappers/react.integralui.radiobutton.js | 4 +- wrappers/react.integralui.radiogroup.js | 4 +- wrappers/react.integralui.rating.js | 4 +- wrappers/react.integralui.select.js | 4 +- wrappers/react.integralui.slider.js | 15 - wrappers/react.integralui.tooltip.js | 4 +- 166 files changed, 2446 insertions(+), 888 deletions(-) create mode 100644 components/integralui.contextmenu.js create mode 100644 components/integralui.dropdownfilter.js create mode 100644 components/integralui.menuitem.js delete mode 100644 components/integralui.slider.js create mode 100644 icons/begins-with-dark.ico create mode 100644 icons/begins-with-white.ico create mode 100644 icons/between-dark.ico create mode 100644 icons/between-white.ico create mode 100644 icons/calendar-dark.ico create mode 100644 icons/calendar-white.ico create mode 100644 icons/checkbox-checked-10.ico create mode 100644 icons/checkbox-indeterminate-10.ico create mode 100644 icons/checkbox-unchecked-10.ico create mode 100644 icons/circular-light.png create mode 100644 icons/circular.png create mode 100644 icons/close-24 - Copy.png create mode 100644 icons/close-white-24.png create mode 100644 icons/contains-dark.ico create mode 100644 icons/contains-white.ico create mode 100644 icons/edit-white.ico create mode 100644 icons/ends-with-dark.ico create mode 100644 icons/ends-with-white.ico create mode 100644 icons/equal-dark.ico create mode 100644 icons/equal-white.ico create mode 100644 icons/greater-than-dark.ico create mode 100644 icons/greater-than-equal-dark.ico create mode 100644 icons/greater-than-equal-white.ico create mode 100644 icons/greater-than-white.ico create mode 100644 icons/less-than-dark.ico create mode 100644 icons/less-than-equal-dark.ico create mode 100644 icons/less-than-equal-white.ico create mode 100644 icons/less-than-white.ico create mode 100644 icons/not-contain-dark.ico create mode 100644 icons/not-contain-white.ico create mode 100644 icons/not-equal-dark.ico create mode 100644 icons/not-equal-white.ico create mode 100644 icons/search-dark.ico create mode 100644 icons/search-white.ico create mode 100644 icons/swap-white.ico create mode 100644 styles/integralui.contextmenu.style.js create mode 100644 styles/integralui.dropdownfilter.style.js create mode 100644 styles/integralui.menuitem.style.js delete mode 100644 styles/integralui.slider.style.js create mode 100644 styles/integralui.style.js create mode 100644 themes/midnight/integralui.contextmenu.midnight.js create mode 100644 themes/midnight/integralui.dropdownbutton.midnight.js create mode 100644 themes/midnight/integralui.dropdownfilter.midnight.js create mode 100644 themes/midnight/integralui.editors.midnight.js create mode 100644 themes/midnight/integralui.header.midnight.js create mode 100644 themes/midnight/integralui.menuitem.midnight.js delete mode 100644 themes/midnight/integralui.slider.midnight.js create mode 100644 themes/office/integralui.contextmenu.office.js create mode 100644 themes/office/integralui.dropdownbutton.office.js create mode 100644 themes/office/integralui.dropdownfilter.office.js create mode 100644 themes/office/integralui.editors.office.js create mode 100644 themes/office/integralui.header.office.js create mode 100644 themes/office/integralui.menuitem.office.js delete mode 100644 themes/office/integralui.slider.office.js create mode 100644 wrappers/react.integralui.contextmenu.js delete mode 100644 wrappers/react.integralui.slider.js diff --git a/CHANGE_LOG.md b/CHANGE_LOG.md index 5535e1b..5b4b068 100644 --- a/CHANGE_LOG.md +++ b/CHANGE_LOG.md @@ -1,2 +1,40 @@ +v21.4 +- Built-in Inline Filter in Grid for Date, Numeric and String values +- Built-in Inline Editor for Grid components +- Change components CSS styles on demand from code +- Loading icon for all data components +- Option to prevent update of component layout +- Option to customize the drag and drop functionality with wait and resolve methods in data components +- Option to select a date using keyboard in DatePicker +- Option to change row visibility on demand in data components +- Export to JSON now supports exporting specific objects from data components +- Fixed the locales settings not appearing for Calendar in DatePicker +- Fixed the issue with resizing of Columns in Grid components when view is horizontally scrolled +- Fixed the issues with appearance of resize cursor for columns when view is scrolled +- Fixed the issue that prevented change of cell value from a droplist editor +- Fixed the issue with that sorts the grid on column click when column is also resizing +- Editor Text is now correctly updated when using Midnight Themes +- If column is fixed, the resize cursor no longer appears +- Context Menu style is now applied also to submenus +- Other minor bug fixes + +v21.3 +- New CSS custom properties for all web components +- Option to import templates from a file +- CellTouched event available in Grid +- SelectedIndexChanged event available for Select component +- Custom style settings for drag and drop component that can be changed on demand +- Fixed the issue that causes Calendar to throw an error if provided date value is undefined +- Other minor bug fixes + +v21.2 +- Improved performance during data load and update +- Option to set header and footer height from code in Grid components +- CommonService now provides support for conversion of numbers, dates and strings in standard formats +- Scrolling using Touch in Grid is now fully functional +- Fixed the issue that caused incorrect subheader titles during horizontal scrolling in Grid +- Sort order indicator is now displayed also when column is sorted, regardless whether it is selected or not +- Fixed the bug that caused incorrect sorting column when there are multi-level headers + v21.1 - Initial Release diff --git a/README.md b/README.md index ac4cc54..9f71f2f 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,10 @@ -# IntegralUI Web - Grid, v21.1 +# IntegralUI Web - Grid, v21.4 IntegralUI Web - Grid is a native Web Component that displays tabular data sets. You can use it in Angular, React, Vue or any other JavaScript framework. Note This component is also part of [IntegralUI Web](https://github.com/lidorsystems/integralui-web.git) product suite. -![IntegralUI Web - Grid 21.1 - Native Web Component](https://www.lidorsystems.com/products/web/studio/features/grid/integralui-web-grid.png) +![IntegralUI Web - Grid 21.4 - Native Web Component](https://www.lidorsystems.com/products/web/studio/features/grid/integralui-web-grid.png) ## Main Features @@ -43,6 +43,8 @@ npm i integralui-web-grid Open your application and add a reference to a component you want to use. For example, if you are using the IntegralUI Grid component:

+Note A detailed information is available here: [How to Use IntegralUI Web Components](https://www.lidorsystems.com/help/integralui/web-components/introduction/installation/). Explains how to setup and use components for each framework: Angular, React or Vanilla JavaScript. + ### Angular ```bash diff --git a/components/integralui.base.grid.js b/components/integralui.base.grid.js index 3fdde27..e5b1084 100644 --- a/components/integralui.base.grid.js +++ b/components/integralui.base.grid.js @@ -1,6 +1,6 @@ /* filename: integralui.base.grid.js - version : 21.1.0 + version : 21.4.0 Copyright © 2016-2021 Lidor Systems. All rights reserved. This file is part of the "IntegralUI Web" Library. @@ -12,4 +12,4 @@ This SOFTWARE is provided "AS IS", WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for the specific language governing rights and limitations under the License. Any infringement will be prosecuted under applicable laws. */ -import{T as TemplateResult,a as defaultTemplateProcessor,h as html}from"../external/lit-element.js";import{c as classMap}from"../external/class-map.js";import{s as styleMap}from"../external/style-map.js";import{IntegralUIGridLines,IntegralUIContentVisibility,IntegralUISpeedMode,IntegralUISortOrder,IntegralUISelectionMode,IntegralUIVisibility,IntegralUICheckState,IntegralUIEditorType,IntegralUIDateFormat,IntegralUIObjectState,IntegralUIMoveDirection}from"./integralui.enums.js";import IntegralUIBase from"./integralui.base.js";import IntegralUIDataService from"../services/integralui.data.service.js";import IntegralUIFilterService from"../services/integralui.filter.service.js";import IntegralUIDragDropService from"../services/integralui.dragdrop.service.js";import IntegralUIDragWindow from"./integralui.dragwin.js";class IntegralUIBaseGrid extends IntegralUIBase{_init(){super._init();this._dataService=new IntegralUIDataService();this._dragDropService=IntegralUIDragDropService.getInstance();this._filterService=new IntegralUIFilterService();this._headerData=[];this._rowData=[];this._rowHoverData=[];this._rowSelectData=[];this._cellData=[];this._footerData=[];this._completeColumnList={left:[],normal:[],right:[]};this._currentColumnList={left:[],normal:[],right:[]};this._currentRowList=[];this._dataColumns=[];this._dataRows=[];this._flatCompleteColumnList={left:[],normal:[],right:[]};this._flatCurrentColumnList={left:[],normal:[],right:[]};this._fullList=[];this._maxColumnLevels=0;this._scrollColumnList={left:[],normal:[],right:[]};this._scrollFooterList={left:[],normal:[],right:[]};this._scrollRowList={left:[],normal:[],right:[]};this._columnDataKey="columns";this._columnFields={};this._rowDataKey="rows";this._rowFields={};this._isCellValueChangeAllowed=!0;this._cloneElem=null;this._cloneElemStartPos={x:0,y:0};this._dragCmp=null;this._dragEndPos={x:0,y:0};this._dragStartPos={x:0,y:0};this._dropMarkElem=null;this._isCtrlDragEntered=!1;this._isDragActive=!1;this._isFirstDragEnter=!1;this._prevTargetDropPos=-1;this._targetDropRow=null;this._targetDropPos=-1;this._dragGhost=null;this._dragRowObj=null;this._dragRowObjIndex=-1;this._isCtrlDragAllowed=!1;this._isCtrlDropAllowed=!0;this._isColumnReorderAllowed=!1;this._originalScrollColumnList=[];this._reorderColumnObj=null;this._reorderColumnObjPos={top:0,left:0};this._reorderColumnStartPos={top:0,left:0};this._reorderColumnCurrentPos={top:0,left:0};this._reorderColIndex=-1;this._reorderNewColIndex=-1;this._startColumnReorder=!1;this._currentEditingCell=null;this._isEditorFocused=!1;this._filteringColumns=[];this._isFilterAllowed=!1;this._currentExpandColumnID=void 0;this._expandColIndex=0;this._hoverCell=null;this._hoverColumn=null;this._hoverRow=null;this._isGridHovered=!1;this._currentIndex=0;this._prevIndex=0;this._tabIndexCount=0;this._ctrlCursor="default";this._suppressCallback=!1;this._blockHoverRect={height:30,left:0,top:-9999999,width:880};this._blockSelectRect=[];this._blockSelectHeight=0;this._hoverRowObj={data:{}};this._columnStartPos={x:0,y:0};this._resizeColumn=null;this._resizeColumnIndex=-1;this._reorderColumn=null;this._columnReorderActive=!1;this._currentFocusCell=null;this._isKeyboardActive=!1;this._isKeyboardFocusAllowed=!1;this._isKeyPressed=!1;this._keepActive=!1;this._loadRows=[];this._avgRowHeight=0;this._blockMarginTop=0;this._blockSize={width:0,height:0};this._leftBlockSize={width:0,height:0};this._rightBlockSize={width:0,height:0};this._columnPadding={top:0,right:0,bottom:0,left:0};this._currentGridLines=IntegralUIGridLines.Both;this._currentHeaderHeight=0;this._currentFooterHeight=0;this._currentIndent=15;this._currentRowHeight=0;this._isExpandBoxVisible=!0;this._isLayoutUpdating=!1;this._isHoverTemplatePresent=!1;this._isSelectedTemplatePresent=!1;this._numVisibleCells=0;this._viewIndexRange={left:0,middle:999,right:999};this._fixedLeftViewIndexRange=0;this._fixedRightViewIndexRange=0;this._visibleRange=1;this._updateTimer=null;this._isAutoSizeColumnsActive=!1;this._isHeaderVisible=!0;this._isFooterVisible=!0;this._isUpdateActive=!1;this._scrollSize={width:0,height:0};this._contentLeftPos=0;this._initialContentLeftPos=0;this._allColWidth=0;this._horScrollElemPos={bottom:0};this._cornerScrollElemPos={bottom:0};this._paginatorPos={top:0,left:0};this._currentContentVisibility=IntegralUIContentVisibility.Both;this._headerElem={left:null,normal:null,right:null};this._columnElems={left:[],normal:[],right:[]};this._footerElem={left:null,normal:null,right:null};this._footerElems={left:[],normal:[],right:[]};this._bodyElem={left:[],normal:[],right:[]};this._rowElems={left:[],normal:[],right:[]};this._cellElems={left:[],normal:[],right:[]};this._currentPageNumber=1;this._onlyCurrentPage=!1;this._currentPageList=[];this._currentPaging={enabled:!1,panel:!0,pageSize:100};this._pageNumber=0;this._pageList=[];this._pageRowCount=0;this._paginatorHeight=0;this._isColumnResizing=!1;this._currentMouseWheelSpeed=IntegralUISpeedMode.Normal;this._currentScrollPos={x:0,y:0};this._maxScrollPos={x:0,y:0};this._accelerator=.5;this._scrollTimerID=null;this._isScrollTimerActive=!1;this._scrollCount=0;this._isScrollActive=!1;this._prevScrollPos={x:0,y:0};this._scrollBarSize={width:0,height:0};this._scrollLargeChange={x:0,y:0};this._scrollVisibility={horizontal:!0,vertical:!0};this._currentSorting=IntegralUISortOrder.None;this._sortComparer=null;this._sortColumn=null;this._currentSelectedColumn=null;this._currentSelectedRow=null;this._currentSelectionMode=IntegralUISelectionMode.One;this._isRowClicked=!1;this._shiftFirstSelectedRow=null;this._removeIndex=-1;this._currentSelectedRows=[];this._updateDataFields();this._initStyle();this._createScrollRowList();this._isExpandBoxTouched=!1;this._touchStartPos={x:0,y:0};this._touchEndPos={x:0,y:0}}connectedCallback(){}disconnectedCallback(){this._removeDropMark()}attributeChangedCallback(e,t,i){super.attributeChangedCallback(e,t,i)}static get properties(){return{allowColumnReorder:{type:Boolean,attribute:"allow-column-reorder",reflect:!0},allowDrag:{type:Boolean,attribute:"allow-drag",reflect:!0},allowDrop:{type:Boolean,attribute:"allow-drop",reflect:!0},allowFilter:{type:Boolean,attribute:"allow-filter",reflect:!0},allowFocus:{type:Boolean,attribute:"allow-focus",reflect:!0},columns:{type:Array},contentVisibility:{attribute:"content-visibility",converter:{fromAttribute:e=>{switch((e=e.replace(/"|'/,"").replace(/"|'/,"")).toLowerCase()){case"none":return IntegralUIContentVisibility.None;case"hover":return IntegralUIContentVisibility.Hover;case"select":return IntegralUIContentVisibility.Select;default:return IntegralUIContentVisibility.Both}},toAttribute:e=>{switch(e){case IntegralUIContentVisibility.None:return"None";case IntegralUIContentVisibility.Hover:return"Hover";case IntegralUIContentVisibility.Select:return"Select";default:return"Both"}}},reflect:!0},dataFields:{type:Object,attribute:"data-fields"},expandColumnIndex:{type:Number,attribute:"expand-column-index",reflect:!0},gridLines:{attribute:"grid-lines",converter:{fromAttribute:e=>{switch((e=e.replace(/"|'/,"").replace(/"|'/,"")).toLowerCase()){case"none":return IntegralUIGridLines.None;case"horizontal":return IntegralUIGridLines.Horizontal;case"vertical":return IntegralUIGridLines.Vertical;default:return IntegralUIGridLines.Both}},toAttribute:e=>{switch(e){case IntegralUIGridLines.None:return"None";case IntegralUIGridLines.Horizontal:return"Horizontal";case IntegralUIGridLines.Vertical:return"Vertical";default:return"Both"}}},reflect:!0},paging:{type:Object},rowHeight:{type:Number,attribute:"row-height",reflect:!0},rows:{type:Array},selectionMode:{attribute:"selection-mode",converter:{fromAttribute:e=>{switch((e=e.replace(/"|'/,"").replace(/"|'/,"")).toLowerCase()){case"none":return IntegralUISelectionMode.None;case"multisimple":return IntegralUISelectionMode.MultiSimple;case"multiextended":return IntegralUISelectionMode.MultiExtended;default:return IntegralUISelectionMode.One}},toAttribute:e=>{switch(e){case IntegralUISelectionMode.None:return"None";case IntegralUISelectionMode.MultiSimple:return"MultiSimple";case IntegralUISelectionMode.MultiExtended:return"MultiExtended";default:return"One"}}},reflect:!0},showFooter:{type:Boolean,attribute:"show-footer",reflect:!0},showHeader:{type:Boolean,attribute:"show-header",reflect:!0},sorting:{converter:{fromAttribute:e=>{switch((e=e.replace(/"|'/,"").replace(/"|'/,"")).toLowerCase()){case"ascending":return IntegralUISortOrder.Ascending;case"descending":return IntegralUISortOrder.Descending;default:return IntegralUISelectionMode.None}},toAttribute:e=>{switch(e){case IntegralUISortOrder.Ascending:return"Ascending";case IntegralUISortOrder.Descending:return"Descending";default:return"None"}}},reflect:!0}}}get allowColumnReorder(){return this._isColumnReorderAllowed}set allowColumnReorder(e){if(this._isColumnReorderAllowed!==e){const t=this._isColumnReorderAllowed;this._isColumnReorderAllowed=e;this.requestUpdate("allowColumnReorder",t)}}set allowDrag(e){if(this._isCtrlDragAllowed!==e){const t=this._isCtrlDragAllowed;this._isCtrlDragAllowed=e;this.requestUpdate("allowDrag",t);this.updateLayout()}}set allowDrop(e){if(this._isCtrlDropAllowed!==e){const t=this._isCtrlDropAllowed;this._isCtrlDropAllowed=e;this.requestUpdate("allowDrop",t);this.updateLayout()}}set allowFilter(e){if(this._isFilterAllowed!==e){const t=this._isFilterAllowed;this._isFilterAllowed=e;this.requestUpdate("allowFilter",t)}}set allowFocus(e){if(this._isKeyboardFocusAllowed!==e){const t=this._isKeyboardFocusAllowed;this._isKeyboardFocusAllowed=e;if(!e)this._currentFocusCell=null;this.refresh();this.requestUpdate("allowFocus",t)}}get columns(){return this._dataColumns}set columns(e){const t=this._dataColumns;this._dataColumns=e;this._updateData();this.requestUpdate("columns",t)}get contentVisibility(){return this._currentContentVisibility}set contentVisibility(e){const t=this._currentContentVisibility;this._currentContentVisibility=e;this.requestUpdate("contentVisibility",t)}set dataFields(e){this._updateDataFields(e)}get expandColumnIndex(){return this._expandColIndex}set expandColumnIndex(e){const t=this._expandColIndex;this._expandColIndex=e;this.updateLayout();this.requestUpdate("expandColumnIndex",t)}get gridLines(){return this._currentGridLines}set gridLines(e){const t=this._currentGridLines;this._currentGridLines=e;this.refresh();this.requestUpdate("gridLines",t)}get paging(){return this._currentPaging}set paging(e){const t=this._currentPaging;this._updatePaging(e);this.requestUpdate("paging",t)}get rowHeight(){return this._currentRowHeight}set rowHeight(e){const t=this._currentRowHeight;this._currentRowHeight=e;this.requestUpdate("rowHeight",t)}get rows(){return this._dataRows}set rows(e){const t=this._dataRows;this._dataRows=e;this._updateData();this.requestUpdate("rows",t)}get selectedColumn(){return this._currentSelectedColumn}set selectedColumn(e){if(this._currentSelectedColumn!==e){const t=this._currentSelectedColumn;this._processColumnSelection(null,e);this.requestUpdate("selectedColumn",t)}}get selectedRow(){return this._currentSelectedRow}set selectedRow(e){if(this._currentSelectedRow!==e){const t=this._currentSelectedRow;this._processRowSelection(null,e);this.requestUpdate("selectedRow",t)}}get selectionMode(){return this._currentSelectionMode}set selectionMode(e){if(this._currentSelectionMode!==e){const t=this._currentSelectionMode;this._currentSelectionMode=e;this._clearPrevSelection(this._currentSelectionMode!==IntegralUISelectionMode.None?this._currentSelectedRow:null);this.refresh();if(this._currentSelectionMode===IntegralUISelectionMode.None){this._currentSelectedRow=null;this._invokeEvent("selectionChanged",{row:this._currentSelectedRow})}this.requestUpdate("selectionMode",t)}}get showFooter(){return this._isFooterVisible}set showFooter(e){const t=this._isFooterVisible;this._isFooterVisible=e;this.updateLayout();this.requestUpdate("showFooter",t)}get showHeader(){return this._isHeaderVisible}set showHeader(e){const t=this._isHeaderVisible;this._isHeaderVisible=e;this.updateLayout();this.requestUpdate("showHeader",t)}get sorting(){return this._currentSorting}set sorting(e){const t=this._currentSorting;this._currentSorting=e;this.requestUpdate("sorting",t)}addColumn(e){this._callEventAddColumn("add",e)}clearColumns(){this._dataService.clear(null,this._columnDataKey);this._invokeEvent("columnsCleared");this._currentScrollPos.x=0}insertColumnAfter(e,t){this._callEventAddColumn("ref",e,-1,t,!0)}insertColumnAt(e,t){this._callEventAddColumn("at",e,t)}insertColumnBefore(e,t){this._callEventAddColumn("ref",e,-1,t)}removeColumn(e){return this._callEventRemoveColumn(e)}removeColumnAt(e){return this._callEventRemoveColumn(null,e)}_callEventAddColumn(e,t,i,l,s){let r={cancel:!1,column:t};this._invokeEvent("columnAdding",r);if(!0!==r.cancel){switch(e){case"at":this._dataService.insert(t,i,null,null,!1,this._columnDataKey);break;case"ref":this._dataService.insertByRef(t,l,s,this._columnDataKey);break;default:this._dataService.insert(t,-1,null,null,!1,this._columnDataKey)}this._invokeEvent("columnAdded",{column:t})}}_callEventRemoveColumn(e,t){let i={cancel:!1,column:e};this._invokeEvent("columnRemoving",i);if(!0!==i.cancel){this._removeIndex=this._dataColumns?this._dataColumns.indexOf(e):-1;let i=this._dataService.removeAt(e,t,null,this._columnDataKey);if(i.result){this._invokeEvent("columnRemoved",{column:i.obj});return!0}}return!1}addRow(e,t){this._callEventAddRow("add",e,-1,t)}clearRows(e){this._dataService.clear(e,this._rowDataKey);this._invokeEvent("rowsCleared",{parent:e});this.clearSelection();this._currentScrollPos.y=0}insertRowAfter(e,t){this._callEventAddRow("ref",e,-1,null,t,!0)}insertRowAt(e,t,i){this._callEventAddRow("at",e,t,i)}insertRowBefore(e,t){this._callEventAddRow("ref",e,-1,null,t)}removeRow(e){return this._callEventRemoveRow(e)}removeRowAt(e,t){return this._callEventRemoveRow(null,e,t)}_callEventAddRow(e,t,i,l,s,r){let o={cancel:!1,row:t};this._invokeEvent("rowAdding",o);if(!0!==o.cancel){switch(e){case"at":this._dataService.insert(t,i,l,null,!1,this._rowDataKey);break;case"ref":this._dataService.insertByRef(t,s,r,this._rowDataKey);break;default:this._dataService.insert(t,-1,l,null,!1,this._rowDataKey)}this._invokeEvent("rowAdded",{row:t})}}_callEventRemoveRow(e,t,i){let l={cancel:!1,row:e};this._invokeEvent("rowRemoving",l);if(!0!==l.cancel){this.removeIndex=this._dataRows?this._dataRows.indexOf(e):-1;let l=this._dataService.removeAt(e,t,i,this._rowDataKey);if(l.result){if(e&&e[this._rowFields.selected]){e[this._rowFields.selected]=!1;this._currentSelectedRows=this._currentSelectedRows.filter(function(t){return t!==e});if(this._currentSelectedRow&&this._commonService.isEqual(this._currentSelectedRow[this._rowFields.id],e[this._rowFields.id]))this._currentSelectedRow=null;this._invokeEvent("selectionChanged",{row:this._currentSelectedRow})}this._invokeEvent("rowRemoved",{row:l.obj});return!0}}return!1}_cellClickEvent(e,t){if(this._isEnabled&&1===e.which)this._invokeEvent("cellClick",{cell:t.data,event:e})}_cellDblClickEvent(e,t){if(this._isEnabled&&1===e.which)this._invokeEvent("cellDblClick",{cell:t.data,event:e})}_cellRightClickEvent(e,t){if(this._isEnabled)this._invokeEvent("cellRightClick",{cell:t.data,event:e})}_columnClickEvent(e,t){let i=this;if(i._isEnabled&&1===e.which)if(i._isAnimationAllowed)i._invokeEvent("columnClick",{column:t.data,event:e});else i._invokeEvent("columnClick",{column:t.data,event:e})}_columnDblClickEvent(e,t){if(this._isEnabled&&1===e.which)this._invokeEvent("columnDblClick",{column:t.data,event:e})}_columnRightClickEvent(e,t){if(this._isEnabled)this._invokeEvent("columnRightClick",{column:t.data,event:e})}_rowClickEvent(e,t){if(this._isEnabled&&1===e.which)this._invokeEvent("rowClick",{event:e,row:t.data})}_rowDblClickEvent(e,t){if(this._isEnabled&&1===e.which){let i={cancel:!1,event:e,row:t.data};this._invokeEvent("rowDblClick",i);if(!0!==i.cancel)this.toggle(t.data)}}_rowRightClickEvent(e,t){if(this._isEnabled)this._invokeEvent("rowRightClick",{event:e,row:t.data})}_addColumnToCurrentList(e){if(this.isColumnVisible(e)){e.type="column";if(!e[this._columnFields.id])e[this._columnFields.id]=this._commonService.getUniqueId();if(this.isColumnVisible(e)){let t=e[this._columnFields.filterParams],i=t?this._filterService.createTree(t.conditions,t.formula):null,l=this._getSideName(e[this._columnFields.fixed]);this._currentColumnList[l].push({data:e,filter:i})}}}_createColumnLevel(e,t,i,l){if(!e||t>=this._maxColumnLevels)return;let s=0;for(;s0?this._isColumnExpanded(r):!0)&&this._isColumnWithChildrenVisible(r)){if(!r[this._columnFields.id])r[this._columnFields.id]=this._commonService.getUniqueId();if(l)r[this._columnFields.pid]=l;let e=r[this._columnFields.columns],s={colSpan:e?this._getColumnSpan(r):0,data:r,isRoot:0===t?!0:!1,isVisible:!this._isColumnExpanded(r)||!e||0===e.length?!0:!1,rowSpan:!this._isColumnExpanded(r)||!e||0===e.length?this._maxColumnLevels-t:0};this._completeColumnList[i][t].push(s);this._createColumnLevel(r[this._columnFields.columns],t+1,i,r[this._columnFields.id])}s++}}_createColumnListInRange(e,t){if(e)e.forEach(e=>{let i={colIndex:this._getColumnIndexFromList(e),data:e,isVisible:!this._isColumnExpanded(e)||!e[this._columnFields.columns]||0===e[this._columnFields.columns].length?!0:!1};t.push(i);if(this._isColumnExpanded(e))this._createColumnListInRange(e[this._columnFields.columns],t)})}_getColumnListInRange(e){let t=[];if(this._completeColumnList[e].length>0){let i=this._completeColumnList[e][0],l="normal"!==e?0:this._viewIndexRange.left,s="normal"!==e?i.length-1:this._viewIndexRange.right,r=i.filter((e,t)=>t>=l&&t<=s).map(e=>e.data);this._createColumnListInRange(r,t)}return t}_getColumnSpan(e){let t=0;if(!e[this._columnFields.columns]||0===e[this._columnFields.columns].length)return 1;for(let i=0;ithis._addColumnToCurrentList(e));for(let e=0;e<3;e++){let t="";switch(e){case 1:t="left";break;case 2:t="right";break;default:t="normal"}this._createFlatList(this._currentColumnList[t].map(e=>e.data),this._columnFields.columns,this._flatCurrentColumnList[t])}this._updateColumnCompleteList()}this._createColumnsWithFilter()}_updateColumnCompleteList(){for(let e=0;e<3;e++){let t="";switch(e){case 1:t="left";break;case 2:t="right";break;default:t="normal"}this._updateColumnCompleteListBySide(t)}}_updateColumnCompleteListBySide(e){let t=this._currentColumnList[e].map(e=>e.data);this._calcMaxColumnLevels(t,1);for(let t=1;t<=this._maxColumnLevels;t++)this._completeColumnList[e].push([]);this._createColumnLevel(t,0,e);this._flatCompleteColumnList[e]=this._createFlatColumnList(this._completeColumnList[e])}_updateScrollColumnList(){for(let e=0;e<3;e++){let t="";switch(e){case 1:t="left";break;case 2:t="right";break;default:t="normal"}this._refreshScrollColumnList(t)}}_refreshScrollColumnList(e){this._scrollColumnList[e].length=0;this._completeColumnList[e].forEach((t,i)=>{let l={columns:[]};t.forEach((t,s)=>{let r=!0;if("normal"===e)r=(0===i&&s>=this._viewIndexRange.left&&s<=this._viewIndexRange.right)||i>0;if(r){let e={clickPos:{x:0,y:0},colSpan:t.colSpan>0?t.colSpan:1,data:t.data,footerHeight:this._footerHeight>0?this._footerHeight+"px":"auto",headerHeight:this._headerHeight>0?this._headerHeight+"px":"auto",inlineStyle:this._getColumnInlineStyle(t.data[this._columnFields.style]),location:{top:0,left:0},position:"relative",rowSpan:t.rowSpan>0?t.rowSpan:1,style:{}};this._updateColumnStyle(e);l.columns.push(e)}});this._scrollColumnList[e].push(l)});this._scrollFooterList[e].length=0;this._getColumnListInRange(e).forEach(t=>{if(t.isVisible){let i={clickPos:{x:0,y:0},data:t.data,footerHeight:this._footerHeight>0?this._footerHeight+"px":"auto",headerHeight:this._headerHeight>0?this._headerHeight+"px":"auto",inlineStyle:this._getColumnInlineStyle(t.data[this._columnFields.style]),location:{top:0,left:0},position:"relative",style:{}};this._updateColumnStyle(i);this._scrollFooterList[e].push(i)}})}_processLoadData(e,t,i,l){let s=this;s.clearRows(t);s._updateRowFields(i);let r=[];if(e)if(l||void 0===l){let t=[];e.forEach(function(e,i){if(!e[s._rowFields.id])e[s._rowFields.id]=s._commonService.getUniqueId();let l=e[s._rowFields.pid];if(t[l]){if(!t[l][s._rowFields.rows])t[l][s._rowFields.rows]=[];t[e[s._rowFields.id]]=e;t[l][s._rowFields.rows].push(e)}else{t[e[s._rowFields.id]]=e;r.push(e)}});t.length=0}else r=e;if(t){t[s._rowFields.rows]=r;for(let e=0;e0||this._isThereRows(e)))this._isThereChildRows=!0}return s}_addRowToCurrentList(e,t,i,l){let s=this;if(!e.type)e.type="row";if(!e[s._rowFields.id])e[s._rowFields.id]=s._commonService.getUniqueId();if(i)e[s._rowFields.pid]=i;let r=!0,o=e[s._rowFields.cells];if(o&&o.length>0){r=s._isRowAllowed(e,l);for(let t=0;ts._currentPaging.pageSize){s._pageRowCount=1;s._pageNumber++;s._pageList.push([])}s._pageList[s._pageNumber].push({data:e,indent:t})}else s._currentRowList.push({data:e,indent:t});return r}_createEmptyRowObj(){let e={allowEdit:!1,clickPos:{x:0,y:0},cells:[],data:{},draggable:!1,indent:0,inlineStyle:{},isDragAllowed:!0,isEmpty:!0,isGroup:!1,original:{},style:{}};for(let t=0;t<1;t++)e.cells.push(this._createEmptyCellObj());return e}_createEmptyCellObj(){return{align:"",allowEdit:!1,colIndex:-1,data:{},display:"none",displayValue:null,editorClass:"",editorList:[],editorSettings:{},editorStyle:"",editorType:null,editorValue:null,editorValueObject:{},editorVisibility:IntegralUIVisibility.Hover,expandBoxAllowed:!1,format:{},indent:0,inlineStyle:{},isDataEmpty:!0,isDragDropColumn:!1,isEditorEnabled:!0,isEmpty:!0,rowIndex:-1,side:"normal",style:{content:{"iui-grid-row-cell-content":!0}},tabIndex:-1,width:100,height:"auto"}}_createScrollObjFromRow(e,t,i,l,s){let r=null,o=i?i:this._getObjFromRow(t);if(o){let i=(r={allowEdit:!0===o.data[this._rowFields.allowEdit],clickPos:{x:0,y:0},cells:[],data:o.data,draggable:this._isEnabled&&"group"!==o.data.type?!0:!1,isDragAllowed:this._isDragAllowed(t),indent:o.indent,inlineStyle:o.data[this._rowFields.style],original:o.original,style:{}}).data[this._rowFields.cells];for(let t=0;t=0&&n0?this._currentRowHeight+"px":"auto"};d.allowEdit=void 0!==h[this._cellFields.allowEdit]?h[this._cellFields.allowEdit]:r.allowEdit||!0===d.editorSettings.editOnFocus;d.displayValue=this._getCellDisplayValue(d);d.editorValue=this._getCellValue(d);d.editorValueObject=this._getCellValueObject(d);d.editorClass=this._getCellEditorClass(d);r.cells.push(d)}}this._updateRowStyle(r)}return r}_createScrollRowList(){for(let e=0;e<3;e++){let t="";switch(e){case 1:t="left";break;case 2:t="right";break;default:t="normal"}this._createScrollRowListBySide(t)}}_createScrollRowListBySide(e){this._scrollRowList[e].length=0;for(let t=0;t<100;t++){let t=this._createEmptyRowObj();this._scrollRowList[e].push(t)}}_isThereRows(e){return!this._isRowExpanded(e)&&e[this._rowFields.rows]&&e[this._rowFields.rows].length>0&&this._isThereVisibleChildren(e)}_refreshScrollRowList(e,t){let i=this;this._isLayoutUpdating=!0;this._tabIndexCount=0;let l=0,s=this._getColumnListInRange(e);for(let i=this._currentIndex;ithis._resetCellObj(e))}let r=setTimeout(function(){i._isLayoutUpdating=!1;clearTimeout(r)},100)}_resetRowObj(e){if(e){e.clickPos={x:0,y:0};e.data={};e.draggable=!1;e.allowEdit=!1;e.indent=0;e.inlineStyle={};e.isEmpty=!0;e.isGroup=!1;e.original={};e.style={}}}_resetCellObj(e){if(e){e.align="";e.allowEdit=!1;e.colIndex=-1;e.data={};e.display="none";e.displayValue=null;e.editorClass="";e.editorList=[];e.editorSettings={};e.editorStyle="";e.editorType=null;e.editorValue=null;e.editorValueObject={};e.editorVisibility=IntegralUIVisibility.Hover;e.expandBoxAllowed=!1;e.format={};e.indent=0;e.inlineStyle={};e.isEditorEnabled=!0;e.isEmpty=!0;e.rowIndex=-1;e.side="normal";e.style={content:{"iui-grid-row-cell-content":!0}};e.tabIndex=-1;e.width=0;e.height="auto"}}_updateCurrentRowList(e){this._currentRowList.length=0;if(this._currentPaging.enabled){if(this._currentPageNumber>=1&&this._currentPageNumber<=this._pageList.length)for(let e=0;e0){this._applySorting(e);this._pageList.push([]);for(let t=0;t0&&0===this._pageList[this._pageList.length-1].length)this._pageList.splice(this._pageList.length-1,1)}}_updateScrollRowList(e){for(let t=0;t<3;t++){let i="";switch(t){case 1:i="left";break;case 2:i="right";break;default:i="normal"}this._refreshScrollRowList(i,e)}}_updateScrollRowListLimit(e,t){for(let i=0;i=i&&s.y<=l}_ctrlDragEnter(e){if(this._isEnabled)this._processDragEnter(e)}_ctrlDragDrop(e){if(this._isEnabled)this._processDragDrop(e);this._removeDropMark();e.stopPropagation()}_ctrlDragLeave(e){if(this._isEnabled)this._processDragLeave(e)}_ctrlDragOver(e){if(this._isEnabled)this._processDragOver(e);e.stopPropagation()}_ctrlDragEnd(e){this._removeDropMark();let t=this._dragDropService.getData();if(t.targetCtrl&&t.targetCtrl.removeDropMark)t.targetCtrl.removeDropMark();this._rowDragEnd(e,null)}_removeDragHandle(){this._isDragHandleVisible=!1;this._targetDropRow=null;this._targetDropPos=-1}_dropMark(e,t){if(!this._dragCmp&&!this._isScrollTimerActive)this._addDropMark({x:e.pageX,y:e.pageY});if(this._dragCmp){let e="none";if(this._isCtrlDropAllowed)e=t?"block":"none";this._dragCmp.display=e;this._dragCmp.refresh()}}_updateDragComponent(e){if(this._dragCmp)this._dragCmp.updatePos(e)}_isDragAllowed(e){return this._isCtrlDragAllowed?e&&(e[this._rowFields.allowDrag]||void 0===e[this._rowFields.allowDrag])?!0:!1:!1}_isDropAllowed(e,t,i){let l=this._isCtrlDropAllowed;if(l&&e&&t)if((l=t[this._rowFields.allowDrop]||void 0===t[this._rowFields.allowDrop]?!0:!1))if(Array.isArray(e))for(let s=0;s=t.right||i.y<=t.top||i.y>=t.bottom){this._isCtrlDragEntered=!1;this._stopScrollTimer();let t=this._dragDropService.getData(),i={action:e.shiftKey?"copy":"move",dragRow:t.source,dropPos:-1,event:e,isDropAllowed:!1,mousePos:this._commonService.getMousePos(e),sourceCtrl:t.sourceCtrl,targetCtrl:null,targetRow:null};this._invokeEvent("dragLeave",i)}this._dropMark(e)}}_processDragOver(e,t,i,l,s){e.preventDefault();this._processDragEnter(e);let r=!0;if(e.dataTransfer)r="none"===e.dataTransfer.effectAllowed?!1:!0;else if(e.originalEvent&&e.originalEvent.dataTransfer)r="none"===e.originalEvent.dataTransfer.effectAllowed?!1:!0;if(r){let s=this._dragDropService.getData(),o=this._commonService.getShiftPos();if(t&&!t.isEmpty){let n=this._commonService.getMousePos(e);n.x-=o.x;n.y-=o.y;let a=t.data,h="group"===t.data.type?"full":null,d=this._dragDropService.getDropPos(n,i,l,h);r=this._isDropAllowed(s.source,a,d);let c={action:e.shiftKey?"copy":"move",source:s.source,dropPos:d,allow:r,sourceCtrl:s.sourceCtrl,target:a,targetCtrl:this},_=this._callDragDropEvent(e,c);if(!r||!0===_.cancel){if(e.dataTransfer)e.dataTransfer.dropEffect="none";else if(e.originalEvent&&e.originalEvent.dataTransfer)e.originalEvent.dataTransfer.dropEffect="none";this._dropMark(e)}else{let i=this._commonService.getMousePos(e),l=i.y+16,o=i.x+20,n={"iui-dragwin-icon":!0},h="";switch(_.dropPos){case 0:h="iui-dragwin-move-in";break;case 1:h="iui-dragwin-move-up";break;case 2:h="iui-dragwin-move-down";break;default:h=""}if("copy"===_.action)h+="-copy";n[h]=!0;this._updateDragComponent({class:n,top:l,left:o,text:t.data[this._rowFields.text]});this._dropMark(e,r);this._dragDropService.setData({action:_.action,clone:s.clone,dropPos:_.dropPos,source:s.source,sourceCtrl:s.sourceCtrl,sourceData:s.sourceData,target:a,targetCtrl:this})}}else if(!this._isCtrlDropAllowed){if(e.dataTransfer)e.dataTransfer.dropEffect="none";else if(e.originalEvent&&e.originalEvent.dataTransfer)e.originalEvent.dataTransfer.dropEffect="none";this._dropMark(e)}else{r=this._checkEmptySpace(e);let t={action:e.shiftKey?"copy":"move",allow:r,dropPos:-1,source:s.source,sourceCtrl:s.sourceCtrl,target:null,targetCtrl:this},i=this._callDragDropEvent(e,t);if(!r||!0===i.cancel){if(e.dataTransfer)e.dataTransfer.dropEffect="none";else if(e.originalEvent&&e.originalEvent.dataTransfer)e.originalEvent.dataTransfer.dropEffect="none";this._dropMark(e)}else{let t=this._commonService.getMousePos(e),l=t.y+16,o=t.x+20,n={"iui-dragwin-icon":!0,"iui-dragwin-move-end":!0};if("copy"===i.action)n["iui-dragwin-move-end-copy"]=!0;this._updateDragComponent({class:n,top:l,left:o,text:this.name?this.name:"Component"});this._dropMark(e,r&&!this._isScrollTimerActive);this._dragDropService.setData({action:i.action,clone:s.clone,source:s.source,sourceCtrl:s.sourceCtrl,sourceData:s.sourceData,target:null,targetCtrl:this,dropPos:-1})}}}}_processDragDrop(e,t){e.preventDefault();let i=!0;if(e.dataTransfer)i="none"===e.dataTransfer.effectAllowed?!1:!0;else if(e.originalEvent&&e.originalEvent.dataTransfer)i="none"===e.originalEvent.dataTransfer.effectAllowed?!1:!0;let l=this._dragDropService.getData();if(i){let s=t.data;if(t&&!t.isEmpty)i=this._isDropAllowed(l.source,s,l.dropPos);else i=this._checkEmptySpace(e);if(i&&l.source){let t={action:l.action,source:l.source,dropPos:l.dropPos,allow:i,sourceCtrl:l.sourceCtrl,target:l.target,targetCtrl:this},s=this._callDragDropEvent(e,t,!0);this._dragDropService.setData({action:s.action,clone:l.clone,dropPos:s.dropPos,source:l.source,sourceCtrl:l.sourceCtrl,sourceData:l.sourceData,target:l.target,targetCtrl:this});if(!s.cancel)this._drop(this._dragDropService.getData());else i=!1}if(l.sourceCtrl&&l.sourceCtrl._removeDropMark)l.sourceCtrl._removeDropMark()}if(i)this._dragDropService.clearData();let s=this,r=setTimeout(function(){s._dropMark(e);if(i){let t=s._dragDropService.getData(),i={action:t.action,dragRow:t.source,dropPos:t.dropPos,event:e,isDropAllowed:!0,mousePos:s._commonService.getMousePos(e),sourceCtrl:t.sourceCtrl,targetCtrl:s,targetRow:t.target};s._invokeEvent("dragDropComplete",i)}s._isDragActive=!1;s._clearDragDropSettings();clearTimeout(r)},150)}_clearDragDropSettings(){this._dragDropService.clearData();this._isDragActive=!1;this._dragStartPos={x:0,y:0};this._dragEndPos={x:0,y:0};this._removeDropMark();this._removeDragHost();this._changeCursor()}_drop(e){if(e&&e.sourceCtrl){let t="copy"===e.action&&e.clone?e.clone:e.source;if(Array.isArray(t)){let i=[];for(let e=0;e0){for(let t=0;t0){return 100*Math.min(Math.max(l,t),i)/i}return 0}_isCellEditorEnabled(e,t){let i=void 0!==t[this._cellFields.editorSettings]?t[this._cellFields.editorSettings]:{};return!1!==(void 0!==i.enabled?i.enabled:this._getCellEditorSettings(e).enabled)?!0:!1}_openEditor(e){this._currentEditingCell=e.data;this._isEditorFocused=!0;this._keepActive=!0;this.update()}collapse(e){this.toggle(e,!1)}expand(e){this.toggle(e,!0)}_expandBoxMouseDown(e,t){if(this._isEnabled){if(1===e.buttons&&!this._isExpandBoxTouched)this.toggle(t.data);this._isExpandBoxTouched=!1}e.stopPropagation()}_expandBoxMouseUp(e,t){this._isExpandBoxTouched=!1;e.stopPropagation()}_expandBoxTouchStart(e,t){if(this._isEnabled){this._isExpandBoxTouched=!0;this.toggle(t.data)}e.stopPropagation()}toggle(e,t){if(this._isEnabled)if(e){if(!e[this._rowFields.hasChildren]&&(!e[this._rowFields.rows]||0===e[this._rowFields.rows].length))return;else if(t&&!1!==e[this._rowFields.expanded])return;else if(!1===t&&!1===e[this._rowFields.expanded])return;let i=void 0!==t?t:!1!==e[this._rowFields.expanded]?!0:!1,l={cancel:!1,row:e};if(void 0!==t)if(t)this._invokeEvent("beforeExpand",l);else this._invokeEvent("beforeCollapse",l);else if(i)this._invokeEvent("beforeCollapse",l);else this._invokeEvent("beforeExpand",l);if(!0!==l.cancel){let l=e[this._rowFields.expanded],s=void 0!==t?t:!i;if(s!==l){e[this._rowFields.expanded]=s;this._updateCurrentLayout(!1,!0)}if(this._isRowExpanded(e))this._invokeEvent("afterExpand",{row:e});else this._invokeEvent("afterCollapse",{row:e})}}else{this.getFullList().forEach(e=>{e[this._rowFields.expanded]=t});this._updateCurrentLayout(!1,!0)}}_updateExpandingCell(e,t){let i=0,l=this._getExpandingColumn();if(l)i=l[this._columnFields.id];let s=this._getCellByColumnId(e[this._rowFields.cells],i);if(s)s[this._cellFields.expanded]=t}_convertToCSV(e){let t="";for(let i=0;i0){for(let e=0;e=0?JSON.stringify(l.text):l.text;else r.text="";else r.text="";t.push(r)}e.push(t)}return this._convertToCSV(e)}exportToJSON(e,t,i,l){return'[\n{ "columns": '+this._exportColumnsToJSON(e,i)+' },\n{ "rows": '+this._exportRowsToJSON(t,i,l)+" }\n]"}_exportColumnsToJSON(e,t){t=t?t:null;let i=this._dataColumns,l=e?e:[this._columnFields.allowDrag,this._columnFields.allowDrop,this._columnFields.allowFilter,this._columnFields.allowGrouping,this._columnFields.allowResize,this._columnFields.canSelect,this._columnFields.cellTemplateUrl,this._columnFields.columns,this._columnFields.contentAlignment,this._columnFields.contextMenu,this._columnFields.editorType,this._columnFields.editorSettings,this._columnFields.editorTemplate,this._columnFields.filterParams,this._columnFields.fixed,this._columnFields.fixedWidth,this._columnFields.footerAlignment,this._columnFields.footerContent,this._columnFields.footerText,this._columnFields.footerTooltip,this._columnFields.groupText,this._columnFields.headerAlignment,this._columnFields.headerContent,this._columnFields.headerText,this._columnFields.headerTooltip,this._columnFields.icon,this._columnFields.id,this._columnFields.minWidth,this._columnFields.maxWidth,this._columnFields.pid,this._columnFields.selected,this._columnFields.style,this._columnFields.visible,this._columnFields.width];return JSON.stringify(i,l,t)}_exportRowsToJSON(e,t,i){t=t?t:null;let l=!1===i?this._dataRows:this.getFullList(),s=e?e:[this._rowFields.allowCellFocus,this._rowFields.allowDrag,this._rowFields.allowDrop,this._rowFields.allowEdit,this._rowFields.allowFocus,this._rowFields.autoCheck,this._rowFields.canSelect,this._rowFields.cells,this._rowFields.checked,this._rowFields.checkState,this._rowFields.content,this._rowFields.contentVisibility,this._rowFields.contextMenu,this._rowFields.gid,this._rowFields.enabled,this._rowFields.expanded,this._rowFields.fixed,this._rowFields.hasChildren,this._rowFields.icon,this._rowFields.id,this._rowFields.pid,this._rowFields.selected,this._rowFields.statusIcon,this._rowFields.style,this._rowFields.text,this._rowFields.tooltip,this._rowFields.value,this._rowFields.visible,this._cellFields.allowDrag,this._cellFields.allowEdit,this._cellFields.cid,this._cellFields.content,this._cellFields.contextMenu,this._cellFields.editorSettings,this._cellFields.enabled,this._cellFields.isGroup,this._cellFields.rid,this._cellFields.selected,this._cellFields.style,this._cellFields.tag,this._cellFields.text,this._cellFields.tooltip,this._cellFields.value,this._cellFields.valueID,this._cellFields.valueType];if(!1===i)s.push(this._rowFields.rows);return JSON.stringify(l,s,t)}_createColumnsWithFilter(){this._filteringColumns.length=0;let e=[];this._createFlatList(this._dataService.getList(null,this._columnDataKey),this._columnFields.columns,e);this._filteringColumns=e.filter(e=>void 0!==e[this._columnFields.filterParams])}filter(e,t){if(e)e[this._columnFields.filterParams]=t;else for(let e=0;e<3;e++){let t="";switch(e){case 1:t="left";break;case 2:t="right";break;default:t="normal"}this._getCurrentColumnList(t).forEach(e=>delete e[this._columnFields.filterParams])}this.updateLayout();this._invokeEvent("change",{type:"filtering"})}_filterIsThereChildren(e,t){let i=!1,l=e[this._rowFields.rows];if(l)for(let e=0;et[this._columnFields.id]===e);return t.length>0?t[0]:null}_getFilterTree(e){let t=null,i=this._getSideName(e[this._columnFields.fixed]),l=this._getCurrentColumnList(i);for(let i=0;i0){let l=-1,s=null,r=null;for(let o=0;o{if(this._isColumnExpanded(e)&&this._isColumnWithChildrenVisible(e)){if(this._maxColumnLevels=0||this._isColumnResizing)e="ew-resize";if(this._ctrlCursor!==e){this._ctrlCursor=e;this.update()}}cloneRow(e){return this._dataService.clone(e,this._rowDataKey)}_createCloneList(e){let t=[];e.forEach(e=>t.push(this.cloneRow(e)));return t}_createFlatColumnList(e){let t=[];e.map(e=>e.map(e=>t.push(e)));return t}_createFlatList(e,t,i){if(e)e.forEach(e=>{i.push(e);this._createFlatList(e[t],t,i)})}_getCellByColumnId(e,t){let i=null;if(e)for(let l=0;l=0&&e=0&&this._expandColIndext.data===e);return t.length>0?t[0]:null}_getRowCellDisplay(e){return e.colID===this._currentExpandColumnID?"inline-block":"block"}_getRowCurrentIndex(e){if(e){let t=this._getObjFromRow(e);return t&&this._currentRowList?this._currentRowList.indexOf(t):-1}return-1}_getRowElems(e){return this._rowElems[e]}getRowLevel(e){let t=0,i=this.getRowParent(e);for(;i;){t++;i=this.getRowParent(i)}return t}getRowParent(e){return e?this._dataService.findObjectById(e[this._rowFields.pid],this._rowDataKey):null}_getRowScrollIndex(e,t){let i=-1;if(e)for(let l=0;l0)for(let t=0;t0?this._areChildColumnsFixed(e[this._columnFields.columns]):!1}_isColumnWithChildrenVisible(e){let t=!1;if(e)if((t=this.isColumnVisible(e))){let i=e[this._columnFields.columns]||[],l=0;if(i.length>0){i.forEach(e=>{if(this._isColumnWithChildrenVisible(e))l++});t=l>0}}return t}_isThereNoSelectTemplate(e){return this._currentContentVisibility===IntegralUIContentVisibility.Both&&(!this._isSelectedTemplatePresent||!e[this._rowFields.selected])}_isThereHoverTemplate(e){return this._isThereNoSelectTemplate(e)||this._currentContentVisibility===IntegralUIContentVisibility.Hover}_checkRowHoverVisibility(e){return void 0===e[this._rowFields.contentVisibility]||e[this._rowFields.contentVisibility]===IntegralUIContentVisibility.Hover||e[this._rowFields.contentVisibility]===IntegralUIContentVisibility.Both}_isContentAllowed(e,t){let i=this._currentContentVisibility===IntegralUIContentVisibility.Both;switch(t){case"hover":i=this._isThereHoverTemplate(e)&&this._checkRowHoverVisibility(e);break;case"select":let l=i||this._currentContentVisibility===IntegralUIContentVisibility.Select,s=void 0===e[this._rowFields.contentVisibility]||e[this._rowFields.contentVisibility]===IntegralUIContentVisibility.Select||e[this._rowFields.contentVisibility]===IntegralUIContentVisibility.Both;i=l&&s;break;default:i=this._currentContentVisibility===IntegralUIContentVisibility.Both}return i}_isParentOf(e,t){let i=this._dataService.getParent(t);if(e&&t&&i&&this._commonService.isEqual(e[this._rowFields.id],i[this._rowFields.id]))return!0;else return!1}isRowEnabled(e){return this._isEnabled&&e&&this._commonService.isTrue(e[this._rowFields.enabled])}_isRowExpanded(e){return e?e[this._rowFields.expanded]||void 0===e[this._rowFields.expanded]:!0}_isRowFixed(e){return!1}isRowHovered(e){return!this._isDragActive&&!this._isScrollTimerActive&&e&&e===this._hoverRow}_isRowLoading(e){return this._loadRows.indexOf(e)>=0}isRowSelected(e){return e&&!0===e[this._rowFields.selected]}_isThereFixedColumns(e){return this._currentColumnList[e].length>0}_isThereNoRows(e){return e[this._rowFields.rows]&&0===e[this._rowFields.rows].length}_isThereVisibleChildren(e){let t=!1;if(e){let i=e[this._rowFields.rows]||[];if(i&&i.length>0)for(let e=0;e=0&&this._resizeColumnIndex=0&&n=0&&r0&&(!t.data[this._columnFields.pid]||this._getPrevFlatColumnIndex(t.data,t.data[this._columnFields.fixed],!0)>=0)?this._getColumnIndexFromList(t.data):-1;else this._resizeColumnIndex=u?s:s-1;if(this._isColumnWidthFixed(t.data))this._resizeColumnIndex=-1;else if(u){let e=this._getColumnList("right");if(this._resizeColumnIndex>=e.length)this._resizeColumnIndex=-1}this._changeCursor()}}else this._ctrlCursor="default"}else this._ctrlCursor="default"}_columnMouseEnter(e,t){if(this._isEnabled&&!this._isScrollActive&&!this._isColumnResizing&&!this._startColumnReorder){this._blockHoverRect.top=-9999999;this._hoverColumn=t.data;this._resizeColumnIndex=-1;this._updateColumnStyle(t);this.update();this._invokeEvent("columnHover",{column:this._hoverColumn})}}_columnMouseLeave(e,t){if(this._isEnabled&&!this._isScrollActive&&!this._isColumnResizing&&!this._startColumnReorder){this._hoverColumn=null;this._resizeColumnIndex=-1;this._changeCursor();this._updateColumnStyle(t);this.update()}}_footerMouseEnter(e,t){this._blockHoverRect.top=-9999999}_gridMouseMove(e){this._isGridHovered=!1;if(!this._hoverRow)this._blockHoverRect.top=-9999999;if(this._isEnabled)if(1===e.which&&this._columnReorderActive&&this._reorderColumn){this._isGridHovered=!0;this._reorderColumnCurrentPos.left=e.pageX;e.stopPropagation()}}_gridMouseUp(e){if(1===e.which&&this._reorderColumn&&this._reorderNewColIndex>=0&&this._reorderNewColIndex0&&this._commonService.isIndexInRange(e,l)){let t=this._commonService.getPageRect(this._elemRef),i=this._commonService.getPageRect(l[e]);this._blockHoverRect.top=i.top-t.top-1}this.update();this._invokeEvent("rowHover",{row:this._hoverRow})}}_rowMouseLeave(e,t,i){if(this._isEnabled&&!this._isScrollActive&&!this._isColumnResizing&&!this._columnReorderActive)this._clearHoverRow(t.data,i)}_clearHoverRow(e,t){let i=e?e:this._hoverRow,l=this._getRowScrollIndex(i,t);this._hoverRow=null;this._hoverRowObj=null;this._updateRowStyleByIndex(l);this.update()}_getSelectBlockRect(e){let t={left:0,top:"-9999999px",height:0,width:0};if(e=0&&e.rowIndex=this._viewIndexRange.right?!0:!1}_isLastRow(e){return e.rowIndex===this._visibleRange-1?!0:!1}moveFocus(e,t){switch(e){case IntegralUIMoveDirection.Down:if(t)this._processPageDownKey(this._currentFocusCell,null,t);else this._processDownArrowKey(this._currentFocusCell);break;case IntegralUIMoveDirection.First:this._processHomeKey(this._currentFocusCell);break;case IntegralUIMoveDirection.Last:this._processEndKey(this._currentFocusCell);break;case IntegralUIMoveDirection.Left:this._processLeftArrowKey(null,this._currentFocusCell);break;case IntegralUIMoveDirection.Right:this._processRightArrowKey(null,this._currentFocusCell);break;case IntegralUIMoveDirection.Up:if(t)this._processPageUpKey(this._currentFocusCell,null,t);else this._processUpArrowKey(this._currentFocusCell);break;default:this._defaultFunc()}}_onContentScroll(e){e.srcElement.scrollTop=0;e.srcElement.scrollLeft=0;e.target.scrollTop=0;e.target.scrollLeft=0}_processDownArrowKey(e,t){let i=this._isKeyPressed?this._currentFocusCell:e,l=this._getDownCell(i);if(l&&!l.isEmpty){this._updateFocusCell(l);let e=Object.assign({},l),i=this._getRowFromCell(l);if(i){let s=i.data;this._processRowSelection(t,s);if(this._isLastRow(l)){this.scrollPos({x:this._currentScrollPos.x,y:this._currentScrollPos.y+this._avgRowHeight});this.updateView();if(this._currentScrollPos.y0){this.scrollPos({x:this._currentScrollPos.x,y:this._maxScrollPos.y});this.updateView();let s=this;setTimeout(function(){if(s._visibleRange<=s._scrollRowList[l].length){let r=s._getLastScrollIndex(e.side);if(r>=0){let o=s._scrollRowList[l][r],n="normal"!==l?e.colIndex:e.colIndex-s._viewIndexRange.left;if(o&&o.cells&&s._commonService.isIndexInRange(n,o.cells)){i=o.cells[n];s._updateFocusCell(i);s._processRowSelection(t,o.data)}}}},1)}return i}_processHomeKey(e,t){let i=null,l=e.side;if(this._scrollRowList[l].length>0){this.scrollPos({x:this._currentScrollPos.x,y:0});this.updateView();let s=this;setTimeout(function(){let r=s._scrollRowList[l][0];if(r){let o="normal"!==l?e.colIndex:e.colIndex-s._viewIndexRange.left;if(r.cells&&s._commonService.isIndexInRange(o,r.cells)){i=r.cells[o];s._updateFocusCell(i);s._processRowSelection(t,r.data)}}},1)}return i}_processLeftArrowKey(e,t){let i=this.getColumnById(t.data[this._cellFields.cid]);if(i&&this._getColumnIndex(i)===this._expandColIndex){let i=e.data;if(this._isRowExpanded(i)&&this._isThereVisibleChildren(i)){this.collapse(i);return t}}let l=this._isKeyPressed?this._currentFocusCell:t,s=this._getPrevCell(l),r=Object.assign({},s);if(s&&!s.isEmpty){this._updateFocusCell(s);if(this._isFirstCell(s)){this.scrollPos({x:this._currentScrollPos.x-2*s.width,y:this._currentScrollPos.y});this._updateRange();this.update();this._updateReferences();this._updateFocusCell(r)}this.refresh()}return r&&!r.isEmpty?r:null}_processPageDownKey(e,t,i){let l=null,s=this,r=e.side;if(this._scrollRowList[r].length>0){s.scrollPos({x:s._currentScrollPos.x,y:i?s._currentScrollPos.y+s._avgRowHeight*i:s._currentScrollPos.y+s._avgRowHeight*(s._visibleRange-1)});s.updateView();setTimeout(function(){let i=e.rowIndex>=0&&e.rowIndex=0){let o=s._scrollRowList[r][i],n="normal"!==r?e.colIndex:e.colIndex-s._viewIndexRange.left;if(o&&o.cells&&s._commonService.isIndexInRange(n,o.cells)){l=o.cells[n];s._updateFocusCell(l);s._processRowSelection(t,o.data)}}},1)}return l}_processPageUpKey(e,t,i){let l=null,s=this,r=e.side;if(s._scrollRowList[r].length>0){s.scrollPos({x:s._currentScrollPos.x,y:i?s._currentScrollPos.y-s._avgRowHeight*i:s._currentScrollPos.y-s._avgRowHeight*(s._visibleRange-1)});s.updateView();setTimeout(function(){let i=e.rowIndex>=0&&e.rowIndex0||l.data!==i.data){l.rowIndex++;this._updateFocusCell(l)}else if(0===this._currentScrollPos.y)this.refresh()}}}return i&&!i.isEmpty?i:null}_getDownCell(e){let t=e.side;if(e&&e.rowIndex>=0&&e.rowIndex=0?this._scrollRowList[t][i]:null,s="normal"!==t?e.colIndex:e.colIndex-this._viewIndexRange.left;return l&&this._commonService.isIndexInRange(s,l.cells)?l.cells[s]:null}return null}_getFirstCell(e,t){let i=e.side,l=t?e.rowIndex-1:e.rowIndex+1;if(e&&l>=0&&l=0?e.cells[t]:null}return null}_getLastCell(e,t){let i=null,l=e.side,s=t?e.rowIndex-1:this._currentRowList.length=0&&s=0;t--)if(!e.cells[t].isEmpty){i=e.cells[t];break}}return i}_getNextCell(e){let t=e.side;if(e&&e.rowIndex>=0&&e.rowIndex=0?i.cells[s]:null}return null}_getLastScrollIndex(e){let t=0;for(let i=0;i=0&&e.rowIndex=0?i.cells[s]:null}return null}_getUpCell(e){let t=e.side;if(e&&e.rowIndex>=0&&e.rowIndex0?e.rowIndex-1:-1,l=i>=0?this._scrollRowList[t][i]:null,s="normal"!==t?e.colIndex:e.colIndex-this._viewIndexRange.left;return l&&this._commonService.isIndexInRange(s,l.cells)?l.cells[s]:null}return null}_updateFocusCell(e,t){if(e){this._currentFocusCell=Object.assign({},e);this._currentFocusCell.isEmpty=!1;this._setFocusToCell(e,t)}else this._currentFocusCell=null}_getElemFromCell(e,t){let i=this,l=null,s=e.rowIndex,r=e.colIndex-this._viewIndexRange.left;if(this._commonService.isIndexInRange(s,this._rowElems[e.side])){let t=this._rowElems[e.side][s].children;if(this._commonService.isIndexInRange(r,t)){l=t[r].firstElementChild;switch(e.editorType){case IntegralUIEditorType.Custom:this._isEditorFocused=!0;setTimeout(function(){if(l.firstElementChild&&l.firstElementChild.setFocus)l.firstElementChild.setFocus()},10);break;case IntegralUIEditorType.DropList:this._isEditorFocused=!0;setTimeout(function(){l.firstElementChild.setFocus()},10);break;case IntegralUIEditorType.Text:i._openEditor(e);setTimeout(function(){let e=i.shadowRoot.querySelector("#iui-editor-text");if(e)e.focus();i._keepActive=!1},10);break;case IntegralUIEditorType.Rating:case IntegralUIEditorType.Slider:this._isEditorFocused=!0;setTimeout(function(){if(l.firstElementChild&&l.firstElementChild.firstElementChild&&l.firstElementChild.firstElementChild.setFocus)l.firstElementChild.firstElementChild.setFocus()},10);break;default:this._defaultFunc()}}}return l}setFocus(e){let t=this._getObjFromCell(e);this._updateFocusCell(t)}_setFocusToCell(e,t){let i=this._getElemFromCell(e,t);if(i)i.focus()}_getParentColumnList(e){let t=[];if(e&&e[this._columnFields.pid]){let i=this._getSideName(e[this._columnFields.fixed]),l=this._getCurrentColumnList(i).filter(t=>t[this._columnFields.id]===e[this._columnFields.pid]),s=l.length>0?l[0]:null;if(s&&s[this._columnFields.columns]&&s[this._columnFields.columns].length>0)t=s[this._columnFields.columns]}else t=this._dataService.getList(null,this._columnDataKey);return t}moveColumn(e,t,i,l){if(e){if(t!==IntegralUIMoveDirection.Left&&t!==IntegralUIMoveDirection.Right){let t=this._getParentColumnList(e);if(t){let i=t.indexOf(e);if(i>=0)t.splice(i,1)}}let s=-1,r=this._getParentColumnList(i);switch(t){case IntegralUIMoveDirection.After:s=i?this._getNextColumnIndex(i,r):-1;break;case IntegralUIMoveDirection.At:s=l;break;case IntegralUIMoveDirection.Before:s=i?this._getColumnIndex(i,r):-1;break;case IntegralUIMoveDirection.First:s=0;break;case IntegralUIMoveDirection.Last:s=this._getLastColumnIndex(r)+1;break;case IntegralUIMoveDirection.Left:s=this._getPrevColumnIndex(e,r);break;case IntegralUIMoveDirection.Right:s=this._getNextColumnIndex(e,r);break;default:s=-1}if(r&&s>=0){this._isUpdateAllowed=!1;if(t!==IntegralUIMoveDirection.Left&&t!==IntegralUIMoveDirection.Right)r.splice(s,0,e);else if(s0?l:0}_areChildColumnsFixed(e){if(e&&e.length>0){let t=0;for(let i=0;i${e.data[this._columnFields.footerText]} `;return t}_getColumnHeaderTemplate(e){let t=null,i=this.headerTemplate;if(i){let l=i(e.data);if(l)t=new TemplateResult(l.strings,l.values,"html",defaultTemplateProcessor)}if(!t){let i=this._commonService.isString(e.data[this._columnFields.icon])?e.data[this._columnFields.icon].split(" "):[],l={};i.map(e=>l[e]=!0);t=html` ${this._isSortingColumn(e.data)?html``:html``} ${e.data[this._columnFields.headerText]} `}return t}_getColumnWidth(e,t){let i=this._columnFields.width,l=100;switch(t){case"min":i=this._columnFields.minWidth;l=e&&void 0!==e[i]?e[i]:0;return this._isThereChildColumns(e,!0)?this._getColumnWidthFromChildren(e):l;case"max":i=this._columnFields.maxWidth;l=e&&void 0!==e[i]?e[i]:9999999;return this._isThereChildColumns(e,!0)?this._getColumnWidthFromChildren(e):l;default:return e&&void 0!==e[i]?e[i]:100}}_getColumnWidthFromChildren(e){let t=100;if(e){let i=0,l=0,s=this._columnFields.width,r=0;if(this._isThereChildColumns(e)){let o=e[this._columnFields.columns];for(let e=0;et.data[this._columnFields.headerText]===e);t=s.length>0?s[0].data:null}return this._getColumnWidth(t)}_getFooterHeight(){if(this._footerElem.normal)return this._footerElem.normal.offsetHeight;else if(this._footerElem.left)return this._footerElem.left.offsetHeight;else if(this._footerElem.right)return this._footerElem.right.offsetHeight;return 0}_getHeaderHeight(){if(this._headerElem.normal)return this._headerElem.normal.offsetHeight;else if(this._headerElem.left)return this._headerElem.left.offsetHeight;else if(this._headerElem.right)return this._headerElem.right.offsetHeight;return 0}_getNextFlatColumn(e,t,i){let l=null,s=this._getSideName(t),r=this._getCurrentColumnList(s),o=r.filter(t=>t[this._columnFields.pid]===e[this._columnFields.pid]),n=o?o.indexOf(e):-1;n=o&&n=0)l=this._isColumnWidthFixed(r[n])?this._getNextFlatColumn(r[n],t,i):r[n];else if(n>=0)l=r[n];return l}_getNextFlatColumnIndex(e,t,i){let l=this._getNextFlatColumn(e,t,i);return l?this._getColumnIndexFromList(l):-1}_getNumScrollColumns(e){return this._scrollRowList[e].length>0?this._scrollRowList[e][0].cells.length:0}_getNumVisibleColumns(e){return this._flatCompleteColumnList[e].filter(e=>e.isVisible).length}_getPrevFlatColumn(e,t,i){let l=null,s=this._getCurrentColumnList(t),r=s.filter(t=>t[this._columnFields.pid]===e[this._columnFields.pid]),o=r?r.indexOf(e):-1;o=o>0?o-1:-1;if(i&&o>=0)l=this._isColumnWidthFixed(s[o])?this._getPrevFlatColumn(s[o],t,i):s[o];else if(o>=0)l=s[o];return l}_getPrevFlatColumnIndex(e,t,i){let l=this._getPrevFlatColumn(e,t,i);return l?this._getColumnIndexFromList(l):-1}_isThereChildColumns(e,t){let i=this._columnFields.columns;return t?this._areChildColumnsFixed(e[i]):e[i]&&e[i].length>0?!0:!1}_updateAllColumnWidth(){for(let e=0;e<3;e++){let t="";switch(e){case 1:t="left";break;case 2:t="right";break;default:t="normal"}this._updateColumnWidth(t)}}_updateColumnWidth(e,t){let i=this._currentColumnList[e];if(this._isAutoSizeColumnsActive){let e=0,t=0,l=0,s=0,r=[],o=!1;for(let n=0;n=(t=this._getColumnWidth(i[n].data,"min"))){l+=e+this._columnPadding.left+this._columnPadding.right+6;if(!0!==this._isColumnWidthFixed(i[n].data)){s++;r.push(i[n])}else if(o){this._setColumnWidth(i[n].data,e,!0);this._updateCellWidth(i[n].data)}}if(s>0){let e=this.isVerScrollVisible()?20:0,t=(this._clientRect.width-e-l)/s;this._updateColumnWidthByFactor(r,t)}}else if(t)this._changeColumnWidth(t);else for(let e=0;e{let s=e._getRowScrollIndex(l,"normal"),r={height:e._blockSelectHeight,left:0,top:-9999999,width:e._clientRect.width-2};if(0===e._scrollSize.width&&!e._isThereFixedColumns("right"))r.width=e._allColWidth+e._leftBlockSize.width-2;else if(e.isVerScrollVisible())r.width-=17;if(i&&s>=0&&s0){let t=0,i=0;for(let l=0;l0){let e=Math.floor(i/t);if(e>0)this._visibleRange=Math.floor((this._clientRect.height-(this._currentHeaderHeight+this._currentFooterHeight))/e)+1}}}_getMinColumnWidthFromChildren(e){let t=e[this._columnFields.columns];return t&&t.length>0?10*(t.length-1):0}_resizeChildColumns(e,t){let i=e[this._columnFields.columns];if(i&&i.length>0){let e=i.filter(e=>{let i=this._getColumnWidth(e);return this._isColumnWidthFixed(e)||(t<0&&0===i)?!0:!1}).length;t=i.length>e?t/(i.length-e):0;i.filter(e=>!this._isColumnWidthFixed(e)).forEach(e=>{this._updateWidthByFactor(e,t);this._resizeChildColumns(e,t)})}}_resizeParentColumn(e,t){if(e[this._columnFields.pid]){let i=this._getSideName(e[this._columnFields.fixed]),l=this._flatCurrentColumnList[i].filter(t=>t[this._columnFields.id]===e[this._columnFields.pid]),s=l.length>0?l[0]:null;if(s){this._updateWidthByFactor(s,t);this._resizeParentColumn(s,t)}}}_setColumnWidth(e,t,i){if(e&&(i||!0!==e[this._columnFields.fixedWidth])){let i=Math.max(this._getColumnWidth(e,"min"),this._getMinColumnWidthFromChildren(e)),l=this._getColumnWidth(e,"max"),s=Math.min(l,Math.max(i,t));e[this._columnFields.width]=s>0?s:0}}_updateCellWidth(e){if(e){let t=this._getSideName(e[this._columnFields.fixed]),i=this._scrollRowList[t];for(let t=0;t0?s:this._columnPadding.left;if(0===i)l.cells[t].indent=s;else l.cells[t].indent=this._getRowIndent(l,e)}l.cells[t].width=i;break}}}}_updateChildColumnsWidth(e,t,i){if(t>Math.max(this._getColumnWidth(e,"min"),this._getMinColumnWidthFromChildren(e))){this._resizeChildColumns(e,i);this._resizeParentColumn(e,i)}}_updateColumnWidthByFactor(e,t){let i=0,l=0,s=0,r=0,o=0;l=0;let n=[];for(let o=0;o=r)if(i+t<=r){s+=i+t-r;this._setColumnWidth(e[o].data,r);this._updateCellWidth(e[o].data)}else{n.push(e[o]);l++}}if(l>0){let e=s/l;if(0!==e)this._updateColumnWidthByFactor(n,t+e);else for(let e=0;e(o=Math.max(this.getColumnWidth(n[e].data,"min"),this._getMinColumnWidthFromChildren(n[e].data))))this._resizeChildColumns(n[e].data,t)}}}_updateWidthByFactor(e,t){let i=this._getColumnWidth(e);this._isColumnFixed(e,"right")?i-=t:i+=t;i=Math.max(0,i);this._setColumnWidth(e,i);this._updateCellWidth(e)}_windowMouseMove(e){if(this._isEnabled){if(1!==e.buttons){this._clearDragDropSettings();this._resetReorderColumnSettings()}if(1===e.buttons&&this._isColumnResizing){let t=this._commonService.getShiftPos(),i=0,l={x:e.pageX-t.x,y:e.pageY-t.y};if(this._resizeColumn){let e=0;if(this._isAutoSizeColumnsActive){let t=null,s=l.x-this._columnStartPos.x;if(s<0){if((t=this._getPrevFlatColumn(this._resizeColumn,this._resizeColumn[this._columnFields.fixed],!0))){let i=this._getColumnWidth(t)+s,l=this._getColumnWidth(t,"min");if(i>l){this._setColumnWidth(t,i);this._updateCellWidth(t);this._updateChildColumnsWidth(t,i,s);e=this._getColumnWidth(this._resizeColumn)-s;this._setColumnWidth(this._resizeColumn,e);this._updateCellWidth(this._resizeColumn);this._updateChildColumnsWidth(this._resizeColumn,e,-s)}else{this._setColumnWidth(t,l);this._updateCellWidth(t)}}}else if((e=(e=this._getColumnWidth(this._resizeColumn)-s)>(i=this._getColumnWidth(this._resizeColumn,"min"))?e:i)>i){this._setColumnWidth(this._resizeColumn,e);this._updateCellWidth(this._resizeColumn);this._updateChildColumnsWidth(this._resizeColumn,e,-s);if((t=this._getPrevFlatColumn(this._resizeColumn,this._resizeColumn[this._columnFields.fixed],!0))){let e=this._getColumnWidth(t)+s;this._setColumnWidth(t,e);this._updateCellWidth(t);this._updateChildColumnsWidth(t,e,s)}}}else{let t=l.x-this._columnStartPos.x;e=this._getColumnWidth(this._resizeColumn);this._isColumnFixed(this._resizeColumn,"right")?e-=t:e+=t;e=e>0?e:0;this._setColumnWidth(this._resizeColumn,e);this._updateCellWidth(this._resizeColumn);this._updateChildColumnsWidth(this._resizeColumn,e,t)}this._updateScrollSize();this.update()}this._columnStartPos=l}}}_windowMouseUp(e){if(this._isEnabled&&this._isColumnResizing){this._isColumnResizing=!1;this._invokeEvent("columnSizeChanged",{column:this._resizeColumn});this._updateRange()}this._removeDropMark();this._removeDragHost();this._ctrlCursor="default";this._resetReorderColumnSettings();this._clickedCell=null;this._hoverColumn=null;this._resizeColumnIndex=-1;this._changeCursor();this._isCtrlDragEntered=!1;this._isScrollActive=!1;if(this._isEnabled)this.refresh()}_checkForSelectionChange(){if(this._currentSelectedRows.length>0){let e=this.getFullList(),t=[];this._currentSelectedRows.forEach(i=>{if(0===e.filter(e=>this._commonService.isEqual(e[this._rowFields.id],i[this._rowFields.id])).length)t.push(i)});if(t.length>0){let e=[];t.forEach(t=>{t[this._rowFields.selected]=!1;e.push(this._currentSelectedRows.indexOf(t))});if(this._currentSelectedRow&&t.filter(e=>this._commonService.isEqual(this._currentSelectedRow[this._rowFields.id],e[this._rowFields.id])).length>0)this._currentSelectedRow=null;for(let t=e.length-1;t>=0;t--)this._currentSelectedRows.splice(e[t],1)}}}_getDefaultRowTemplate(e,t){let i=null,l=this.rowTemplate;if(l){let s=l(e.data,t.data);if(s)i=new TemplateResult(s.strings,s.values,"html",defaultTemplateProcessor)}if(!i)i=html`${t.displayValue}`;return i}_getRowIndent(e,t){let i=this._columnPadding.left;if(this._isExpandBoxAllowed(t))i+=e.indent;return i}_isExpandBoxAllowed(e){return e?this._getColumnIndex(e)===this._expandColIndex:!1}_updateScrollSize(){let e=this;e._updateLeftBlockSize();e._updateRightBlockSize();e._allColWidth=0;for(let t=0;t0?e._scrollSize.width:0;e._scrollSize.height=e._scrollSize.height>0?e._scrollSize.height:0;e._maxScrollPos={x:e._scrollSize.width,y:e._scrollSize.height};if(e._currentScrollPos.x>e._maxScrollPos.x)e._changeHorizontalScrollPos(e._maxScrollPos.x);if(e._currentScrollPos.y>e._maxScrollPos.y)e._changeVerticalScrollPos(e._maxScrollPos.y);e._scrollBarSize={width:e.isVerScrollVisible()?e._clientRect.width-20:e._clientRect.width-4,height:e.isHorScrollVisible()?e._clientRect.height-20:e._clientRect.height-4};e._scrollLargeChange={x:e._scrollBarSize.width,y:e._scrollBarSize.height-e._currentHeaderHeight-e._currentFooterHeight};e._contentLeftPos=e._initialContentLeftPos-e._leftBlockSize.width;e._blockHoverRect={height:e._avgRowHeight-2,left:0,top:-9999999,width:e._clientRect.width-2};if(0===e._scrollSize.width&&!e._isThereFixedColumns("right"))e._blockHoverRect.width=e._allColWidth+e._leftBlockSize.width-2;else if(e.isVerScrollVisible())e._blockHoverRect.width-=17;let t={height:e._avgRowHeight-2,left:0,top:-9999999,width:e._clientRect.width-2};if(0===e._scrollSize.width&&!e._isThereFixedColumns("right")){e._blockHoverRect.width=e._allColWidth+e._leftBlockSize.width-2;t.width=e._blockHoverRect.width}else if(e.isVerScrollVisible()){e._blockHoverRect.width-=17;t.width-=17}e._blockSelectRect.forEach(e=>{e.width=t.width;e.height=t.height})}_onCtrlMouseEnter(e){if(this._isEnabled&&1===e.buttons&&this._cloneElem)this._cloneElem.style.display="block"}_onCtrlMouseLeave(e){if(this._isEnabled&&1===e.buttons&&this._cloneElem)this._cloneElem.style.display="none";this._stopScrollTimer()}currentPage(e){if(this._currentPageNumber!==e&&e>=1&&e<=this._pageList.length){this._currentPageNumber=e;this._updateCurrentLayout()}return this._currentPageNumber}getMaxPages(){return this._pageList?this._pageList.length:0}firstPage(){if(1!==this._currentPageNumber){this._currentPageNumber=1;this._updateCurrentLayout()}}lastPage(){if(this._currentPageNumber!==this._pageList.length){this._currentPageNumber=this._pageList.length;this._updateCurrentLayout()}}nextPage(){if(this._currentPageNumber1){this._currentPageNumber--;this._updateCurrentLayout()}}_resetPageNumber(){this._currentPageNumber=1}_updatePageNumber(){if(this._currentPageNumber>this._pageList.length)if(0===this._pageList.length)this._resetPageNumber();else this._currentPageNumber=this._pageList.length}_updatePaging(e){if(e)this._currentPaging={enabled:this._commonService.isFieldAvailable(e.enabled,!1),panel:this._commonService.isFieldAvailable(e.panel,!0),pageSize:this._commonService.isFieldAvailable(e.pageSize,100)};else this._currentPaging={enabled:!1,panel:!0,pageSize:100};this._resetPageNumber();this.updateLayout()}_paginatorPageChanged(e){this._currentPageNumber=e.detail.value;this.scrollPos({x:0,y:0});this._updateCurrentLayout();this._invokeEvent("pageChanged",{page:this._currentPageNumber,maxPages:this.getMaxPages(),pageSize:this._currentPaging.pageSize})}_isPaginationEnabled(){return this._currentPaging.enabled&&this._currentPaging.panel}scrollPos(e){if(e){this._currentScrollPos={x:Math.max(0,Math.min(e.x,this._maxScrollPos.x)),y:Math.max(0,Math.min(e.y,this._maxScrollPos.y))};this._currentIndex=this._avgRowHeight>0?Math.floor(this._currentScrollPos.y/this._avgRowHeight):0}return{x:Math.floor(this._currentScrollPos.x),y:Math.floor(this._currentScrollPos.y)}}_changeHorizontalScrollPos(e){this._blockHoverRect.top=-9999999;this._currentScrollPos.x=Math.max(0,Math.min(e,this._maxScrollPos.x));if(this._currentScrollPos.x!==this._prevScrollPos.x){this._updateRange();this._invokeEvent("scrollPosChanged",{value:this._currentScrollPos});this._prevScrollPos.x=this._currentScrollPos.x}}_changeVerticalScrollPos(e){this._blockHoverRect.top=-9999999;this._currentScrollPos.y=Math.max(0,Math.min(e,this._maxScrollPos.y));if(this._currentScrollPos.y!==this._prevScrollPos.y){this.updateView(!0);this._invokeEvent("scrollPosChanged",{value:this._currentScrollPos});this._prevScrollPos.y=this._currentScrollPos.y}}_gridMouseWheel(e){e.preventDefault();if(this._isEnabled){this._hoverRow=null;let t=Math.max(-1,Math.min(1,e.wheelDelta||-e.detail)),i=5;switch(this.mouseWheelSpeed){case IntegralUISpeedMode.VerySlow:i=15;break;case IntegralUISpeedMode.Slow:i=9;break;case IntegralUISpeedMode.Fast:i=3;break;case IntegralUISpeedMode.VeryFast:i=1;break;default:i=5}if(this.isVerScrollVisible()){let e=Math.floor(this._clientRect.height/i);if(this._currentMouseWheelSpeed===IntegralUISpeedMode.VerySlow&&this._avgRowHeight>0)e=this._avgRowHeight;let l=this._currentScrollPos.y+e*t*-1;this._changeVerticalScrollPos(l)}}e.stopPropagation()}isVerScrollVisible(){return this._isEnabled&&this._scrollVisibility.vertical&&this._scrollSize.height>0?!0:!1}isHorScrollVisible(){return this._isEnabled&&this._scrollVisibility.horizontal&&this._scrollSize.width>0?!0:!1}_onVerticalScrollStart(e){this._hoverRow=null;this._isScrollActive=!0}_onVerticalScrollEnd(e){this._isScrollActive=!1}_onVerticalScrollChanged(e){if(this._currentScrollPos.y!==e.detail.value)this._changeVerticalScrollPos(e.detail.value)}_onHorizontalScrollStart(e){this._hoverRow=null;this._isScrollActive=!0}_onHorizontalScrollEnd(e){this._isScrollActive=!1;this.refresh()}_onHorizontalScrollChanged(e){if(this._currentScrollPos.x!==e.detail.value){this._currentScrollPos.x=e.detail.value;this._invokeEvent("scrollPosChanged",{value:this._currentScrollPos});this._updateRange();this._refreshScrollRowList("normal");this.update()}}_scrollMouseDown(e){}updateView(e){this._currentIndex=this._avgRowHeight>0?Math.floor(this._currentScrollPos.y/this._avgRowHeight):0;if(!e||this._currentIndex!==this._prevIndex){this._updateScrollRowList();this._updateSelectContentPos();this.refresh();this._prevIndex=this._currentIndex}}_processScroll(e,t,i){if(this._isEnabled)if(this.isVerScrollVisible()){let l=this._commonService.getShiftPos(),s=this._commonService.getMousePos(e);s.x-=l.x;s.y-=l.y;let r=this._commonService.getPageRect(this._elemRef),o=t?t:0,n=i?i:0,a=r.top+this._currentHeaderHeight+o+25,h=r.bottom-this._currentFooterHeight-this._paginatorHeight-n-25;if(this.isHorScrollVisible())h-=16;if(s.y0)this._startScrollTimer(!1);else if(s.y>h&&this._currentScrollPos.ythis._maxScrollPos.y)this._currentScrollPos.y=this._maxScrollPos.y;else this._currentScrollPos.y+=i;else if(this._currentScrollPos.y-i<0)this._currentScrollPos.y=0;else this._currentScrollPos.y-=i;this.updateView(!0);this._invokeEvent("scrollPosChanged",{value:this._currentScrollPos});if(t.y<=0||this._currentScrollPos.y=0)this._scrollPos({x:this._currentScrollPos.x,y:this._avgRowHeight*(t+1-this._visibleRange/2)});this.updateLayout()}}findColumnById(e){return this._dataService.findObjectById(e,this._columnDataKey)}findRowById(e){return this._dataService.findObjectById(e,this._rowDataKey)}findRowByText(e){return this._dataService.findObjectByText(e,this._rowDataKey)}clearSelection(){this._clearPrevSelection();this._currentSelectedRow=null;this._updateSelectContentPos();this.refresh()}_processColumnSelection(e,t,i){let l=this;if(t){if(!1===t[l._columnFields.canSelect])return;let e=!0;if(l._currentSelectedColumn)e=!l._commonService.isEqual(l._currentSelectedColumn[l._columnFields.id],t[l._columnFields.id]);let i={cancel:!1,obj:t};l._invokeEvent("beforeSelect",i);if(e&&!0!==i.cancel){if(l._currentSelectedColumn){l._currentSelectedColumn[l._columnFields.selected]=!1;l.refresh(l._currentSelectedColumn)}l._currentSelectedColumn=t;t[l._columnFields.selected]=!0;l.refresh(t);l._callAfterSelectEvent(t)}}else return l._currentSelectedColumn}_clearPrevSelection(e){for(let t=0;t0;if(!l.isRowEnabled(t)){l._clearPrevSelection();l._currentSelectedRow=null;l.refresh();if(s)l._invokeEvent("selectionChanged",{row:this._currentSelectedRow})}else{let r=l._currentSelectedRow,o=!0;if(r)o=this._isCtrlKeyPressed(e)||!this._commonService.isEqual(r[l._rowFields.id],t[l._rowFields.id])||!1===r[l._rowFields.selected];let n={cancel:!1,obj:t};l._invokeEvent("beforeSelect",n);if(!0!==n.cancel){let n=e&&(e.shiftKey||e.ctrlKey||e.metaKey)?!0:!1;if(o){if(l._currentSelectionMode===IntegralUISelectionMode.MultiExtended)o=!l._isRowInSelectionList(t)||!n||this._isShiftKeyPressed(e);if(o)if(l._currentSelectionMode===IntegralUISelectionMode.One)l._clearPrevSelection();else if(e&&e.shiftKey)l._clearPrevSelection();else if(!n&&l._currentSelectionMode!==IntegralUISelectionMode.MultiSimple&&(1===l._currentSelectedRows.length||!l._isRowInSelectionList(t)))l._clearPrevSelection();l._currentSelectedRow=t;if(e&&e.shiftKey&&l._currentSelectionMode!==IntegralUISelectionMode.One){if(!l._shiftFirstSelectedRow)l._shiftFirstSelectedRow=r;let e=l._getRowCurrentIndex(l._shiftFirstSelectedRow),i=l._getRowCurrentIndex(t);if(e>i){let t=e;e=i;i=t}if(l._commonService.isIndexInRange(e,l._currentRowList)&&l._commonService.isIndexInRange(i,l._currentRowList))for(let t=e;t<=i;t++){let e=l._currentRowList[t].data;if(!1!==e[l._rowFields.canSelect]){e[l._rowFields.selected]=!0;l._currentSelectedRows.push(e)}}}else if(n||l.selectionMode===IntegralUISelectionMode.MultiSimple){let e=null===t[l._rowFields.selected]||"undefined"===t[l._rowFields.selected]?!1:t[l._rowFields.selected];t[l._rowFields.selected]=!e;if(!t[l._rowFields.selected])l._currentSelectedRows=l._currentSelectedRows.filter(function(e){return e!==t});else if(!l._isRowInSelectionList(t))l._currentSelectedRows.push(t);l._shiftFirstSelectedRow=null}else{t[l._rowFields.selected]=!0;if(!l._isRowInSelectionList(t))l._currentSelectedRows.push(t);l._shiftFirstSelectedRow=null}l._callAfterSelectEvent(t);l.refresh()}else if(n||l._currentSelectionMode===IntegralUISelectionMode.MultiSimple){let e=null===t[l._rowFields.selected]||"undefined"===t[l._rowFields.selected]?!1:t[l._rowFields.selected];if(i&&"undefined"!==i)e=i;t[l._rowFields.selected]=!e;if(!t[l._rowFields.selected])l._currentSelectedRows=l._currentSelectedRows.filter(function(e){return e!==t});else if(!l._isRowInSelectionList(t))l._currentSelectedRows.push(t);l._shiftFirstSelectedRow=null;l._callAfterSelectEvent(t);l.refresh()}else if(!n&&!(l._currentSelectionMode&IntegralUISelectionMode.MultiSimple)&&(1===l._currentSelectedRows.length||!l._isRowInSelectionList(t))){l._shiftFirstSelectedRow=null;l._clearPrevSelection(t);l.refresh();if(s)l._invokeEvent("selectionChanged",{row:this._currentSelectedRow})}}}this._updateSelectContentPos()}}selectRows(e){if(e&&Array.isArray(e)){this._currentSelectedRows.map(e=>e[this._rowFields.selected]=!1);this._currentSelectedRows.length=0;for(let t=0;t0){this._currentSelectedRow=e[e.length-1];this._callAfterSelectEvent(this._currentSelectedRow)}else this._currentSelectedRow=null;this.updateLayout()}}_updateRowSelection(e,t){let i=e&&(e.shiftKey||e.ctrlKey||e.metaKey)?!0:!1;if(this._currentSelectionMode===IntegralUISelectionMode.MultiExtended&&!1!==t[this._rowFields.canSelect]&&this._currentSelectedRows.length>0&&!e.shiftKey&&!i&&1===e.which){let e=this._currentSelectedRows.length;this._clearPrevSelection();this._currentSelectedRow=t;t[this._rowFields.selected]=!0;this._currentSelectedRows.push(t);if(e>1)this._callAfterSelectEvent(t);this.refresh()}}_rowMouseDown(e,t){if(this._isEnabled){this._isRowClicked=!0;this._processRowSelection(e,t.data);if(this._prevClickedObj)this._prevClickedObj.isClicked=!1;t.isClicked=!0;t.clickPos=this._commonService.getClientPos(e,this._elemRef);t.clickPos.x-=this._leftBlockSize.width;this._prevClickedObj=t;this._updateSelectContentPos()}e.stopPropagation()}_rowMouseUp(e,t){if(this._isEnabled&&this._isRowClicked){this._updateRowSelection(e,t.data);this._updateSelectContentPos()}this._isRowClicked=!1}sort(e,t,i){this._sortColumn=e;this._sortComparer=i;this._currentSorting=t;this.updateLayout();this._invokeEvent("change",{type:"sorting"})}_getCellIndexInCollection(e,t,i){let l=-1;if(e)for(let s=0;s=0?i:t._expandColIndex,s=this._getSideName(t._sortColumn?t._sortColumn[t._columnFields.fixed]:void 0),r=t._getCurrentColumnList(s);if(l=0){if(void 0===(r=e[t._rowFields.cells][s][t._cellFields.value]))r=e[t._rowFields.cells][s][t._cellFields.text];if(t._commonService.isObject(r))r=r.value?r.value:r.text}}if(s[t._rowFields.cells]){let e=t._getCellIndexInCollection(s[t._rowFields.cells],l,i);if(e>=0){if(void 0===(o=s[t._rowFields.cells][e][t._cellFields.value]))o=s[t._rowFields.cells][e][t._cellFields.text];if(t._commonService.isObject(o))o=o.value?o.value:o.text}}r=void 0!==r?r:null;o=void 0!==o?o:null;switch(t._currentSorting){case IntegralUISortOrder.Ascending:if(ro)return 1;break;case IntegralUISortOrder.Descending:if(r>o)return-1;else if(r0)e.width=this._ctrlSize.width+"px";if(this._ctrlSize.height>0)e.height=this._ctrlSize.height+"px";return e}_updateColumnStyle(e){if(e){e.style={header:{},footer:{},sorting:{}};e.inlineStyle=this._getColumnInlineStyle(e.data[this._columnFields.style]);e.style.header[this._columnHeaderClassName]=!0;e.style.header[this._defaultStyle.column.header.normal]=!0;if(!this._isScrollActive)if(e.data===this._currentSelectedColumn)e.style.header[this._defaultStyle.column.header.selected]=!0;else if(e.data===this._hoverColumn)e.style.header[this._defaultStyle.column.header.hovered]=!0;e.style.footer[this._columnFooterClassName]=!0;e.style.footer[this._defaultStyle.column.footer.normal]=!0;if(!this._isScrollActive)if(e.data===this._currentSelectedColumn)e.style.footer[this._defaultStyle.column.footer.selected]=!0;else if(e.data===this._hoverColumn)e.style.footer[this._defaultStyle.column.footer.hovered]=!0;switch(this._currentGridLines){case IntegralUIGridLines.None:e.style.header[this._defaultStyle.gridLines.none]=!0;e.style.footer[this._defaultStyle.gridLines.none]=!0;break;case IntegralUIGridLines.Horizontal:e.style.header[this._defaultStyle.gridLines.horizontal]=!0;e.style.footer[this._defaultStyle.gridLines.horizontal]=!0;break;case IntegralUIGridLines.Vertical:e.style.header[this._defaultStyle.gridLines.vertical]=!0;e.style.footer[this._defaultStyle.gridLines.vertical]=!0;break;default:e.style.header[this._defaultStyle.gridLines.both]=!0;e.style.footer[this._defaultStyle.gridLines.both]=!0}if(this._isSortingAllowed()&&this._isSortingColumn(e.data))switch(this._currentSorting){case IntegralUISortOrder.Ascending:e.style.sorting[this._defaultStyle.column.sorting.normal.ascending]=!0;if(e.data===this._currentSelectedColumn)e.style.sorting[this._defaultStyle.column.sorting.selected.ascending]=!0;break;case IntegralUISortOrder.Descending:e.style.sorting[this._defaultStyle.column.sorting.normal.descending]=!0;if(e.data===this._currentSelectedColumn)e.style.sorting[this._defaultStyle.column.sorting.selected.descending]=!0;break;default:this._defaultFunc()}}}_updateRowStyle(e){if(e&&!e.isEmpty){e.style={cell:{},expandBox:{},row:{}};e.inlineStyle=e.data[this._rowFields.style];e.style.row[this._rowClassName]=!0;e.style.row[this._defaultStyle.row.general.normal]=!0;e.style.cell[this._cellClassName]=!0;e.style.cell[this._defaultStyle.row.cell.normal]=!0;if(!this.isRowEnabled(e.data)){e.style.row[this._defaultStyle.row.general.disabled]=!0;e.style.cell[this._defaultStyle.row.cell.disabled]=!0}else if(this.isRowSelected(e.data)){e.style.row[this._defaultStyle.row.general.selected]=!0;e.style.cell[this._defaultStyle.row.cell.selected]=!0}else if(this.isRowHovered(e.data)){e.style.row[this._defaultStyle.row.general.hovered]=!0;e.style.cell[this._defaultStyle.row.cell.hovered]=!0}switch(this._currentGridLines){case IntegralUIGridLines.None:e.style.cell[this._defaultStyle.gridLines.none]=!0;break;case IntegralUIGridLines.Horizontal:e.style.cell[this._defaultStyle.gridLines.horizontal]=!0;break;case IntegralUIGridLines.Vertical:e.style.cell[this._defaultStyle.gridLines.vertical]=!0;break;default:e.style.cell[this._defaultStyle.gridLines.both]=!0}if(this._isThereChildRows||e.data[this._rowFields.hasChildren])e.style.expandBox[this._defaultStyle.row.expandBox.general]=!0;if(this._rowHasChildren(e.data)||this._isThereVisibleChildren(e.data))if(this._isRowLoading(e.data))e.style.expandBox[this._defaultStyle.row.expandBox.load]=!0;else if(!1!==e.data[this._rowFields.expanded])e.style.expandBox[this._defaultStyle.row.expandBox.collapsed]=!0;else e.style.expandBox[this._defaultStyle.row.expandBox.expanded]=!0;e.cells.forEach(e=>{e.style={content:{[this._cellClassName+"-content"]:!0}};if(this._isKeyboardFocusAllowed&&this._currentFocusCell&&e.data===this._currentFocusCell.data)e.style.content[this._cellClassName+"-content-focused"]=!0})}}_updateRowStyleByIndex(e){for(let t=0;t<3;t++){let i="";switch(t){case 1:i="left";break;case 2:i="right";break;default:i="normal"}if(this._commonService.isIndexInRange(e,this._scrollRowList[i]))this._updateRowStyle(this._scrollRowList[i][e])}}_getContentTemplate(e,t){let i=null;switch(t){case"hover":i=this.itemHoverTemplate;break;case"select":i=this.itemSelectTemplate;break;default:i=null}if(i){let t=i(e);return new TemplateResult(t.strings,t.values,"html",defaultTemplateProcessor)}return html``}_processUpdateLayout(){return new Promise(e=>{e()})}refresh(){this._updateControlClass();for(let e=0;e<3;e++){let t="";switch(e){case 1:t="left";break;case 2:t="right";break;default:t="normal"}this._scrollColumnList[t].forEach(e=>e.columns.forEach(e=>this._updateColumnStyle(e)));this._scrollFooterList[t].forEach(e=>this._updateColumnStyle(e));this._scrollRowList[t].forEach(e=>this._updateRowStyle(e))}this.update()}resumeLayout(){this._isUpdateAllowed=!0;this.updateLayout()}suspendLayout(){this._isUpdateAllowed=!1}_updateCurrentLayout(e,t){let i=this;i._resetLayoutTimer();if(i._currentPaging.enabled){i._updatePageList();i._updatePageNumber()}i._updateCurrentRowList(!0);i._updateRange(t);if(e)i.updateFullList();i._updateScrollSize();i._updateAllColumnWidth();i._updateScrollSize();i.update();i._updateTimer=setTimeout(function(){i._updateBlockSize();i._updateSelectContentPos();i.update();clearTimeout(i._updateTimer)},1)}async updateLayout(e){this._ut();if(!this._tCmp)this._at();this._updateReferences();await this._processUpdateLayout(e);this.update()}}export default IntegralUIBaseGrid; \ No newline at end of file +import{T as TemplateResult,a as defaultTemplateProcessor,h as html}from"../external/lit-element.js";import{c as classMap}from"../external/class-map.js";import{s as styleMap}from"../external/style-map.js";import IntegralUIBase from"./integralui.base.js";import IntegralUIDataService from"../services/integralui.data.service.js";import IntegralUIDragDropService from"../services/integralui.dragdrop.service.js";import IntegralUIFilterService from"../services/integralui.filter.service.js";import{IntegralUIGridLines,IntegralUIContentVisibility,IntegralUISpeedMode,IntegralUISortOrder,IntegralUISelectionMode,IntegralUIVisibility,IntegralUICheckState,IntegralUIEditorType,IntegralUIDateFormat,IntegralUIFilterType,IntegralUIObjectState,IntegralUIMoveDirection}from"./integralui.enums.js";import IntegralUIDragWindow from"./integralui.dragwin.js";import"./integralui.dropdown.js";import"./integralui.list.js";class IntegralUIBaseGrid extends IntegralUIBase{_init(){super._init();this._dataService=new IntegralUIDataService();this._dragDropService=IntegralUIDragDropService.getInstance();this._filterService=new IntegralUIFilterService();this._headerData=[];this._rowData=[];this._rowHoverData=[];this._rowSelectData=[];this._cellData=[];this._footerData=[];this._completeColumnList={left:[],normal:[],right:[]};this._currentColumnList={left:[],normal:[],right:[]};this._currentRowList=[];this._dataColumns=[];this._dataRows=[];this._flatCompleteColumnList={left:[],normal:[],right:[]};this._flatCurrentColumnList={left:[],normal:[],right:[]};this._fullList=[];this._maxColumnLevels=0;this._scrollColumnList={left:[],normal:[],right:[]};this._scrollFilterList={left:[],normal:[],right:[]};this._scrollFooterList={left:[],normal:[],right:[]};this._scrollRowList={left:[],normal:[],right:[]};this._columnDataKey="columns";this._columnFields={};this._rowDataKey="rows";this._rowFields={};this._isCellValueChangeAllowed=!0;this._cloneElem=null;this._cloneElemStartPos={x:0,y:0};this._dragCmp=null;this._dragEndPos={x:0,y:0};this._dragStartPos={x:0,y:0};this._dropMarkElem=null;this._isCtrlDragEntered=!1;this._isDragActive=!1;this._isFirstDragEnter=!1;this._prevTargetDropPos=-1;this._targetDropRow=null;this._targetDropPos=-1;this._dragGhost=null;this._dragObj=null;this._dragObjIndex=-1;this._isCtrlDragAllowed=!1;this._isCtrlDropAllowed=!0;this._isColumnReorderAllowed=!0;this._originalScrollColumnList=[];this._reorderColumnObj=null;this._reorderColumnObjPos={top:0,left:0};this._reorderColumnStartPos={top:0,left:0};this._reorderColumnCurrentPos={top:0,left:0};this._reorderColIndex=-1;this._reorderNewColIndex=-1;this._startColumnReorder=!1;this._currentEditingCell=null;this._currentEditingRow=null;this._isEditorFocused=!1;this._filterColumn=null;this._filteringColumns=[];this._isFilterAllowed=!1;this._currentExpandColumnID=void 0;this._expandColIndex=0;this._hoverCell=null;this._hoverColumn=null;this._hoverRow=null;this._isGridHovered=!1;this._currentIndex=0;this._prevIndex=0;this._tabIndexCount=0;this._ctrlCursor="default";this._suppressCallback=!1;this._blockHoverRect={height:30,left:0,top:-9999999,width:880};this._blockSelectRect=[];this._blockSelectHeight=0;this._hoverRowObj={data:{}};this._columnStartPos={x:0,y:0};this._resizeColumn=null;this._resizeColumnIndex=-1;this._reorderColumn=null;this._columnReorderActive=!1;this._currentFocusCell=null;this._isKeyboardActive=!1;this._isKeyboardFocusAllowed=!1;this._isKeyPressed=!1;this._keepActive=!1;this._loadRows=[];this._avgRowHeight=0;this._blockMarginTop=0;this._blockSize={width:0,height:0};this._leftBlockSize={width:0,height:0};this._rightBlockSize={width:0,height:0};this._columnPadding={top:0,right:0,bottom:0,left:0};this._currentGridLines=IntegralUIGridLines.Both;this._currentHeaderHeight=0;this._currentFixedColWidth=0;this._currentFilterHeight=0;this._currentFooterHeight=0;this._currentIndent=15;this._currentRowHeight=0;this._hiddenLeftHeaderElem=null;this._hiddenLeftHeaderElemSize={width:0,height:0};this._isExpandBoxVisible=!0;this._isLayoutUpdating=!1;this._isHoverTemplatePresent=!1;this._isSelectedTemplatePresent=!1;this._numVisibleCells=0;this._providedHeaderHeight=0;this._providedFooterHeight=0;this._viewIndexRange={left:0,middle:999,right:999};this._fixedLeftViewIndexRange=0;this._fixedRightViewIndexRange=0;this._visibleRange=1;this._updateTimer=null;this._isAutoSizeColumnsActive=!1;this._isHeaderVisible=!0;this._isInlineEditorVisible=!1;this._isInlineFilterVisible=!1;this._isFooterVisible=!0;this._isUpdateActive=!1;this._scrollSize={width:0,height:0};this._contentLeftPos=0;this._initialContentLeftPos=0;this._allColWidth=0;this._horScrollElemPos={bottom:0};this._cornerScrollElemPos={bottom:0};this._paginatorPos={top:0,left:0};this._currentContentVisibility=IntegralUIContentVisibility.Both;this._headerElem={left:null,normal:null,right:null};this._columnElems={left:[],normal:[],right:[]};this._filterElem={left:null,normal:null,right:null};this._filterElems={left:[],normal:[],right:[]};this._footerElem={left:null,normal:null,right:null};this._footerElems={left:[],normal:[],right:[]};this._bodyElem={left:[],normal:[],right:[]};this._rowElems={left:[],normal:[],right:[]};this._cellElems={left:[],normal:[],right:[]};this._isLoading=!1;this._isLoadingEnd=!1;this._loadingEndTimeout=null;this._loadIconPos={top:0,left:0};this._currentPageNumber=1;this._onlyCurrentPage=!1;this._currentPageList=[];this._currentPaging={enabled:!1,panel:!0,pageSize:100};this._pageNumber=0;this._pageList=[];this._pageRowCount=0;this._paginatorHeight=0;this._isColumnResizing=!1;this._currentMouseWheelSpeed=IntegralUISpeedMode.Normal;this._currentScrollPos={x:0,y:0};this._maxScrollPos={x:0,y:0};this._accelerator=.5;this._scrollTimerID=null;this._isScrollTimerActive=!1;this._scrollCount=0;this._isScrollActive=!1;this._prevScrollPos={x:0,y:0};this._scrollBarSize={width:0,height:0};this._scrollLargeChange={x:0,y:0};this._scrollVisibility={horizontal:!0,vertical:!0};this._currentSorting=IntegralUISortOrder.None;this._sortComparer=null;this._sortColumn=null;this._currentSelectedColumn=null;this._currentSelectedRow=null;this._currentSelectionMode=IntegralUISelectionMode.One;this._isRowClicked=!1;this._shiftFirstSelectedRow=null;this._removeIndex=-1;this._currentSelectedRows=[];this._updateDataFields();this._initStyle();this._createScrollRowList();this._isExpandBoxTouched=!1;this._touchStartPos={x:0,y:0};this._touchEndPos={x:0,y:0}}connectedCallback(){}disconnectedCallback(){this._removeDropMark()}attributeChangedCallback(e,t,i){super.attributeChangedCallback(e,t,i)}static get properties(){return{allowColumnReorder:{type:Boolean,attribute:"allow-column-reorder",reflect:!0},allowDrag:{type:Boolean,attribute:"allow-drag",reflect:!0},allowDrop:{type:Boolean,attribute:"allow-drop",reflect:!0},allowFilter:{type:Boolean,attribute:"allow-filter",reflect:!0},allowFocus:{type:Boolean,attribute:"allow-focus",reflect:!0},columns:{type:Array},contentVisibility:{attribute:"content-visibility",converter:{fromAttribute:e=>{switch((e=e.replace(/"|'/,"").replace(/"|'/,"")).toLowerCase()){case"none":return IntegralUIContentVisibility.None;case"hover":return IntegralUIContentVisibility.Hover;case"select":return IntegralUIContentVisibility.Select;default:return IntegralUIContentVisibility.Both}},toAttribute:e=>{switch(e){case IntegralUIContentVisibility.None:return"None";case IntegralUIContentVisibility.Hover:return"Hover";case IntegralUIContentVisibility.Select:return"Select";default:return"Both"}}},reflect:!0},dataFields:{type:Object,attribute:"data-fields"},expandColumnIndex:{type:Number,attribute:"expand-column-index",reflect:!0},gridLines:{attribute:"grid-lines",converter:{fromAttribute:e=>{switch((e=e.replace(/"|'/,"").replace(/"|'/,"")).toLowerCase()){case"none":return IntegralUIGridLines.None;case"horizontal":return IntegralUIGridLines.Horizontal;case"vertical":return IntegralUIGridLines.Vertical;default:return IntegralUIGridLines.Both}},toAttribute:e=>{switch(e){case IntegralUIGridLines.None:return"None";case IntegralUIGridLines.Horizontal:return"Horizontal";case IntegralUIGridLines.Vertical:return"Vertical";default:return"Both"}}},reflect:!0},paging:{type:Object},rowHeight:{type:Number,attribute:"row-height",reflect:!0},rows:{type:Array},selectionMode:{attribute:"selection-mode",converter:{fromAttribute:e=>{switch((e=e.replace(/"|'/,"").replace(/"|'/,"")).toLowerCase()){case"none":return IntegralUISelectionMode.None;case"multisimple":return IntegralUISelectionMode.MultiSimple;case"multiextended":return IntegralUISelectionMode.MultiExtended;default:return IntegralUISelectionMode.One}},toAttribute:e=>{switch(e){case IntegralUISelectionMode.None:return"None";case IntegralUISelectionMode.MultiSimple:return"MultiSimple";case IntegralUISelectionMode.MultiExtended:return"MultiExtended";default:return"One"}}},reflect:!0},inlineEditor:{type:Boolean,attribute:"inline-editor",reflect:!0},inlineFilter:{type:Boolean,attribute:"inline-filter",reflect:!0},showFooter:{type:Boolean,attribute:"show-footer",reflect:!0},showHeader:{type:Boolean,attribute:"show-header",reflect:!0},sorting:{converter:{fromAttribute:e=>{switch((e=e.replace(/"|'/,"").replace(/"|'/,"")).toLowerCase()){case"ascending":return IntegralUISortOrder.Ascending;case"descending":return IntegralUISortOrder.Descending;default:return IntegralUISortOrder.None}},toAttribute:e=>{switch(e){case IntegralUISortOrder.Ascending:return"Ascending";case IntegralUISortOrder.Descending:return"Descending";default:return"None"}}},reflect:!0}}}get allowColumnReorder(){return this._isColumnReorderAllowed}set allowColumnReorder(e){if(this._isColumnReorderAllowed!==e){const t=this._isColumnReorderAllowed;this._isColumnReorderAllowed=e;this.requestUpdate("allowColumnReorder",t)}}set allowDrag(e){if(this._isCtrlDragAllowed!==e){const t=this._isCtrlDragAllowed;this._isCtrlDragAllowed=e;this.requestUpdate("allowDrag",t);this.updateLayout()}}set allowDrop(e){if(this._isCtrlDropAllowed!==e){const t=this._isCtrlDropAllowed;this._isCtrlDropAllowed=e;this.requestUpdate("allowDrop",t);this.updateLayout()}}set allowFilter(e){if(this._isFilterAllowed!==e){const t=this._isFilterAllowed;this._isFilterAllowed=e;this.requestUpdate("allowFilter",t)}}set allowFocus(e){if(this._isKeyboardFocusAllowed!==e){const t=this._isKeyboardFocusAllowed;this._isKeyboardFocusAllowed=e;if(!e)this._currentFocusCell=null;this.refresh();this.requestUpdate("allowFocus",t)}}get columns(){return this._dataColumns}set columns(e){const t=this._dataColumns;this._dataColumns=e;this._updateData();this.requestUpdate("columns",t)}get contentVisibility(){return this._currentContentVisibility}set contentVisibility(e){const t=this._currentContentVisibility;this._currentContentVisibility=e;this.requestUpdate("contentVisibility",t)}set dataFields(e){this._updateDataFields(e)}get expandColumnIndex(){return this._expandColIndex}set expandColumnIndex(e){const t=this._expandColIndex;this._expandColIndex=e;this.updateLayout();this.requestUpdate("expandColumnIndex",t)}get footerHeight(){return this._providedFooterHeight}set footerHeight(e){const t=this._providedFooterHeight;this._providedFooterHeight=e;this.requestUpdate("footerHeight",t)}get gridLines(){return this._currentGridLines}set gridLines(e){const t=this._currentGridLines;this._currentGridLines=e;this.refresh();this.requestUpdate("gridLines",t)}get headerHeight(){return this._providedHeaderHeight}set headerHeight(e){const t=this._providedHeaderHeight;this._providedHeaderHeight=e;this.requestUpdate("headerHeight",t)}get inlineEditor(){return this._isInlineEditorVisible}set inlineEditor(e){const t=this._isInlineEditorVisible;this._isInlineEditorVisible=e;this.updateLayout();this.requestUpdate("inlineEditor",t)}get inlineFilter(){return this._isInlineFilterVisible}set inlineFilter(e){const t=this._isInlineFilterVisible;this._isInlineFilterVisible=e;this.updateLayout();this.requestUpdate("inlineFilter",t)}get paging(){return this._currentPaging}set paging(e){const t=this._currentPaging;this._updatePaging(e);this.requestUpdate("paging",t)}get rowHeight(){return this._currentRowHeight}set rowHeight(e){const t=this._currentRowHeight;this._currentRowHeight=e;this.requestUpdate("rowHeight",t)}get rows(){return this._dataRows}set rows(e){const t=this._dataRows;this._dataRows=e;this._updateData();this.requestUpdate("rows",t)}get selectedColumn(){return this._currentSelectedColumn}set selectedColumn(e){if(this._currentSelectedColumn!==e){const t=this._currentSelectedColumn;this._processColumnSelection(null,e);this.requestUpdate("selectedColumn",t)}}get selectedRow(){return this._currentSelectedRow}set selectedRow(e){if(this._currentSelectedRow!==e){const t=this._currentSelectedRow;this._processRowSelection(null,e);this.requestUpdate("selectedRow",t)}}get selectionMode(){return this._currentSelectionMode}set selectionMode(e){if(this._currentSelectionMode!==e){const t=this._currentSelectionMode;this._currentSelectionMode=e;this._clearPrevSelection(this._currentSelectionMode!==IntegralUISelectionMode.None?this._currentSelectedRow:null);this.refresh();if(this._currentSelectionMode===IntegralUISelectionMode.None){this._currentSelectedRow=null;this._invokeEvent("selectionChanged",{obj:this._currentSelectedRow})}this.requestUpdate("selectionMode",t)}}get showFooter(){return this._isFooterVisible}set showFooter(e){const t=this._isFooterVisible;this._isFooterVisible=e;this.updateLayout();this.requestUpdate("showFooter",t)}get showHeader(){return this._isHeaderVisible}set showHeader(e){const t=this._isHeaderVisible;this._isHeaderVisible=e;this.updateLayout();this.requestUpdate("showHeader",t)}get sorting(){return this._currentSorting}set sorting(e){const t=this._currentSorting;this._currentSorting=e;this.requestUpdate("sorting",t)}addColumn(e){this._callEventAddColumn("add",e)}clearColumns(){this._dataService.clear(null,this._columnDataKey);this._invokeEvent("columnsCleared");this._currentScrollPos.x=0}insertColumnAfter(e,t){this._callEventAddColumn("ref",e,-1,t,!0)}insertColumnAt(e,t){this._callEventAddColumn("at",e,t)}insertColumnBefore(e,t){this._callEventAddColumn("ref",e,-1,t)}removeColumn(e){return this._callEventRemoveColumn(e)}removeColumnAt(e){return this._callEventRemoveColumn(null,e)}_callEventAddColumn(e,t,i,l,s){let r={cancel:!1,column:t};this._invokeEvent("columnAdding",r);if(!0!==r.cancel){switch(e){case"at":this._dataService.insert(t,i,null,null,!1,this._columnDataKey);break;case"ref":this._dataService.insertByRef(t,l,s,this._columnDataKey);break;default:this._dataService.insert(t,-1,null,null,!1,this._columnDataKey)}this._invokeEvent("columnAdded",{column:t})}}_callEventRemoveColumn(e,t){let i={cancel:!1,column:e};this._invokeEvent("columnRemoving",i);if(!0!==i.cancel){this._removeIndex=this._dataColumns?this._dataColumns.indexOf(e):-1;let i=this._dataService.removeAt(e,t,null,this._columnDataKey);if(i.result){this._invokeEvent("columnRemoved",{column:i.obj});return!0}}return!1}addRow(e,t){this._callEventAddRow("add",e,-1,t)}clearRows(e){this._dataService.clear(e,this._rowDataKey);this._invokeEvent("rowsCleared",{parent:e});this.clearSelection();this._currentScrollPos.y=0}insertRowAfter(e,t){this._callEventAddRow("ref",e,-1,null,t,!0)}insertRowAt(e,t,i){this._callEventAddRow("at",e,t,i)}insertRowBefore(e,t){this._callEventAddRow("ref",e,-1,null,t)}removeRow(e){return this._callEventRemoveRow(e)}removeRowAt(e,t){return this._callEventRemoveRow(null,e,t)}_callEventAddRow(e,t,i,l,s,r){let o={cancel:!1,row:t};this._invokeEvent("rowAdding",o);if(!0!==o.cancel){switch(e){case"at":this._dataService.insert(t,i,l,null,!1,this._rowDataKey);break;case"ref":this._dataService.insertByRef(t,s,r,this._rowDataKey);break;default:this._dataService.insert(t,-1,l,null,!1,this._rowDataKey)}this._invokeEvent("rowAdded",{row:t})}}_callEventRemoveRow(e,t,i){let l={cancel:!1,row:e};this._invokeEvent("rowRemoving",l);if(!0!==l.cancel){this.removeIndex=this._dataRows?this._dataRows.indexOf(e):-1;let l=this._dataService.removeAt(e,t,i,this._rowDataKey);if(l.result){if(e&&e[this._rowFields.selected]){e[this._rowFields.selected]=!1;this._currentSelectedRows=this._currentSelectedRows.filter(function(t){return t!==e});if(this._currentSelectedRow&&this._commonService.isEqual(this._currentSelectedRow[this._rowFields.id],e[this._rowFields.id]))this._currentSelectedRow=null;this._invokeEvent("selectionChanged",{obj:this._currentSelectedRow})}this._invokeEvent("rowRemoved",{row:l.obj});return!0}}return!1}_cellClickEvent(e,t){if(this._isEnabled&&1===e.which)this._invokeEvent("cellClick",{cell:t.data,event:e})}_cellDblClickEvent(e,t){if(this._isEnabled&&1===e.which)this._invokeEvent("cellDblClick",{cell:t.data,event:e})}_cellRightClickEvent(e,t){if(this._isEnabled)this._invokeEvent("cellRightClick",{cell:t.data,event:e})}_columnClickEvent(e,t){if(this._isEnabled&&1===e.which&&!this._isColumnResizing)this._invokeEvent("columnClick",{column:t.data,event:e})}_columnDblClickEvent(e,t){if(this._isEnabled&&1===e.which)this._invokeEvent("columnDblClick",{column:t.data,event:e})}_columnRightClickEvent(e,t){if(this._isEnabled)this._invokeEvent("columnRightClick",{column:t.data,event:e})}_rowClickEvent(e,t){if(this._isEnabled&&1===e.which)this._invokeEvent("rowClick",{event:e,row:t.data})}_rowDblClickEvent(e,t){if(this._isEnabled&&1===e.which){let i={cancel:!1,event:e,row:t.data};this._invokeEvent("rowDblClick",i);if(!0!==i.cancel)this.toggle(t.data)}}_rowRightClickEvent(e,t){if(this._isEnabled)this._invokeEvent("rowRightClick",{event:e,row:t.data})}_addColumnToCurrentList(e){if(this.isColumnVisible(e)){e.type="column";if(!e[this._columnFields.id])e[this._columnFields.id]=this._commonService.getUniqueId();if(this.isColumnVisible(e)){let t=e[this._columnFields.filterParams],i=t?this._filterService.createTree(t.conditions,t.formula):null,l=this._getSideName(e[this._columnFields.fixed]);this._currentColumnList[l].push({data:e,filter:i})}}}_createColumnLevel(e,t,i,l){if(!e||t>=this._maxColumnLevels)return;let s=0;for(;s{let i={colIndex:this._getColumnIndexFromList(e),data:e,isVisible:!e[this._columnFields.columns]||0===e[this._columnFields.columns].length?!0:!1};t.push(i);this._createColumnListInRange(e[this._columnFields.columns],t)})}_getColumnData(){return this._dataService.getList(null,this._columnDataKey)}_getColumnListInRange(e){let t=[];if(this._completeColumnList[e].length>0){let i=this._completeColumnList[e][0],l="normal"!==e?0:this._viewIndexRange.left,s="normal"!==e?i.length-1:this._viewIndexRange.right,r=i.filter((e,t)=>t>=l&&t<=s).map(e=>e.data);this._createColumnListInRange(r,t)}return t}_getColumnSpan(e){let t=0;if(!e[this._columnFields.columns]||0===e[this._columnFields.columns].length)return 1;for(let i=0;ithis._addColumnToCurrentList(e));for(let e=0;e<3;e++){let t="";switch(e){case 1:t="left";break;case 2:t="right";break;default:t="normal"}this._createFlatList(this._currentColumnList[t].map(e=>e.data),this._columnFields.columns,this._flatCurrentColumnList[t])}this._updateColumnCompleteList()}this._createColumnsWithFilter()}_updateColumnCompleteList(){for(let e=0;e<3;e++){let t="";switch(e){case 1:t="left";break;case 2:t="right";break;default:t="normal"}this._updateColumnCompleteListBySide(t)}}_updateColumnCompleteListBySide(e){let t=this._currentColumnList[e].map(e=>e.data);this._calcMaxColumnLevels(t,1);for(let t=1;t<=this._maxColumnLevels;t++)this._completeColumnList[e].push([]);this._createColumnLevel(t,0,e);this._flatCompleteColumnList[e]=this._createFlatColumnList(this._completeColumnList[e])}_updateScrollColumnList(){for(let e=0;e<3;e++){let t="";switch(e){case 1:t="left";break;case 2:t="right";break;default:t="normal"}this._refreshScrollColumnList(t)}}_isColumnParentInRange(e,t,i){let l=!1;if(t>=0&&t0)l=(s=this._completeColumnList[e][t].filter(e=>e.data[this._columnFields.id]===i)).length>0?this._isColumnParentInRange(e,t-1,s[0].data[this._columnFields.pid]):!1;else l=(s=this._completeColumnList[e][t].filter((e,t)=>t>=this._viewIndexRange.left&&t<=this._viewIndexRange.right).filter(e=>e.data[this._columnFields.id]===i)).length>0?!0:!1}return l}_refreshScrollColumnList(e){this._scrollColumnList[e].length=0;this._completeColumnList[e].forEach((t,i)=>{let l={columns:[]};t.forEach((t,s)=>{let r=!0;if("normal"===e)if(0===i&&s>=this._viewIndexRange.left&&s<=this._viewIndexRange.right)r=!0;else r=this._isColumnParentInRange(e,i-1,t.data[this._columnFields.pid]);if(r){let e={clickPos:{x:0,y:0},colSpan:t.colSpan>0?t.colSpan:1,data:t.data,footerHeight:this._providedFooterHeight>0?this._providedFooterHeight+"px":"auto",headerHeight:this._providedHeaderHeight>0?this._providedHeaderHeight+"px":"auto",inlineStyle:this._getColumnInlineStyle(t.data[this._columnFields.style]),location:{top:0,left:0},position:"relative",rowSpan:t.rowSpan>0?t.rowSpan:1,style:{}};this._updateColumnStyle(e);l.columns.push(e)}});this._scrollColumnList[e].push(l)});this._scrollFooterList[e].length=0;let t=this._getColumnListInRange(e);t.forEach(t=>{if(t.isVisible){let i={clickPos:{x:0,y:0},data:t.data,footerHeight:this._providedFooterHeight>0?this._providedFooterHeight+"px":"auto",headerHeight:this._providedHeaderHeight>0?this._providedHeaderHeight+"px":"auto",inlineStyle:this._getColumnInlineStyle(t.data[this._columnFields.style]),location:{top:0,left:0},position:"relative",style:{}};i.displayValue=this._getFooterDisplayValue(i);this._updateColumnStyle(i);this._scrollFooterList[e].push(i)}});this._scrollFilterList[e].length=0;t.forEach(t=>{if(t.isVisible){let i={clickPos:{x:0,y:0},data:t.data,filterAdjustment:this._getFilterAdjustment(t.data,{top:4}),filterDropDownSize:{width:225},filterFormat:this._getColumnFormat(t.data),filterOperation:this._getFilterOperation(t.data),filterSettings:this._getFilterSettings(t.data),filterType:this._getFilterType(t.data),filterValue:this._getFilterValue(t.data),location:{top:0,left:0},position:"relative",style:{}};i.filterCalendarSize=i.filterSettings.calendarSize;i.isFilterAllowed=!1!==i.filterSettings.visible;this._updateColumnStyle(i);this._scrollFilterList[e].push(i)}})}_processLoadData(e,t,i,l){let s=this;s.clearRows(t);s._updateRowFields(i);let r=[];if(e)if(l||void 0===l){let t=[];e.forEach(function(e,i){if(!e[s._rowFields.id])e[s._rowFields.id]=s._commonService.getUniqueId();let l=e[s._rowFields.pid];if(t[l]){if(!t[l][s._rowFields.rows])t[l][s._rowFields.rows]=[];t[e[s._rowFields.id]]=e;t[l][s._rowFields.rows].push(e)}else{t[e[s._rowFields.id]]=e;r.push(e)}});t.length=0}else r=e;if(t){t[s._rowFields.rows]=r;for(let e=0;e0||this._isThereRows(e)))this._isThereChildRows=!0}return s}_addRowToCurrentList(e,t,i,l){let s=this;if(!e.type)e.type="row";if(!e[s._rowFields.id])e[s._rowFields.id]=s._commonService.getUniqueId();if(i)e[s._rowFields.pid]=i;let r=!0,o=e[s._rowFields.cells];if(o&&o.length>0){r=s._isRowAllowed(e,l);for(let t=0;ts._currentPaging.pageSize){s._pageRowCount=1;s._pageNumber++;s._pageList.push([])}s._pageList[s._pageNumber].push({data:e,indent:t})}else s._currentRowList.push({data:e,indent:t});return r}_createEmptyRowObj(){let e={allowEdit:!1,clickPos:{x:0,y:0},cells:[],data:{},draggable:!1,indent:0,inlineStyle:{},isDragAllowed:!0,isEditAllowed:!0,isEditorActive:!1,isEmpty:!0,isGroup:!1,original:{},style:{}};for(let t=0;t<1;t++)e.cells.push(this._createEmptyCellObj());return e}_createEmptyCellObj(){return{align:"",allowEdit:!1,colIndex:-1,data:{},display:"none",displayValue:null,editorClass:"",editorList:[],editorSettings:{},editorStyle:"",editorType:null,editorValue:null,editorValueObject:{},editorVisibility:IntegralUIVisibility.Hover,expandBoxAllowed:!1,format:{},indent:0,inlineStyle:{},isDataEmpty:!0,isDragDropColumn:!1,isEditorColumn:!1,isEditorEnabled:!0,isEmpty:!0,rowIndex:-1,side:"normal",style:{content:{"iui-grid-row-cell-content":!0}},tabIndex:-1,width:100,height:"auto"}}_createScrollObjFromRow(e,t,i,l,s){let r=null,o=i?i:this._getObjFromRow(t);if(o){let n=(r={allowEdit:!0===o.data[this._rowFields.allowEdit],clickPos:{x:0,y:0},cells:[],data:o.data,draggable:this._isEnabled&&"group"!==o.data.type?!0:!1,isDragAllowed:this._isDragAllowed(t),isEditAllowed:this._isEditAllowed(t),isEditorActive:i.data===this._currentEditingRow,indent:o.indent,inlineStyle:o.data[this._rowFields.style],original:o.original,style:{}}).data[this._rowFields.cells];for(let i=0;i=0&&a0?this._currentRowHeight+"px":"auto"};c.allowEdit=void 0!==d[this._cellFields.allowEdit]?d[this._cellFields.allowEdit]:r.allowEdit||!0===c.editorSettings.editOnFocus;c.displayValue=this._getCellDisplayValue(c);c.editorValue=this._getCellValue(c);c.editorValueObject=this._getCellValueObject(c);c.editorClass=this._getCellEditorClass(c);c.tabIndex=c.isDragDropColumn||c.isEditorColumn?-1:this._tabIndexCount;r.cells.push(c)}}this._updateRowStyle(r)}return r}_createScrollRowList(){for(let e=0;e<3;e++){let t="";switch(e){case 1:t="left";break;case 2:t="right";break;default:t="normal"}this._createScrollRowListBySide(t)}}_createScrollRowListBySide(e){this._scrollRowList[e].length=0;for(let t=0;t<100;t++){let t=this._createEmptyRowObj();this._scrollRowList[e].push(t)}}_getRowData(){return this._dataService.getList(null,this._rowDataKey)}_isThereRows(e){return!this._isRowExpanded(e)&&e[this._rowFields.rows]&&e[this._rowFields.rows].length>0&&this._isThereVisibleChildren(e)}_refreshScrollRowList(e,t){let i=this;this._isLayoutUpdating=!0;this._tabIndexCount=0;let l=0,s=this._getColumnListInRange(e);for(let i=this._currentIndex;ithis._resetCellObj(e))}let r=setTimeout(function(){i._isLayoutUpdating=!1;clearTimeout(r)},100)}_resetRowObj(e){if(e){e.clickPos={x:0,y:0};e.data={};e.draggable=!1;e.allowEdit=!1;e.indent=0;e.inlineStyle={};e.isEmpty=!0;e.isGroup=!1;e.original={};e.style={}}}_resetCellObj(e){if(e){e.align="";e.allowEdit=!1;e.colIndex=-1;e.data={};e.display="none";e.displayValue=null;e.editorClass="";e.editorList=[];e.editorSettings={};e.editorStyle="";e.editorType=null;e.editorValue=null;e.editorValueObject={};e.editorVisibility=IntegralUIVisibility.Hover;e.expandBoxAllowed=!1;e.format={};e.indent=0;e.inlineStyle={};e.isEditorEnabled=!0;e.isEmpty=!0;e.rowIndex=-1;e.side="normal";e.style={content:{"iui-grid-row-cell-content":!0}};e.tabIndex=-1;e.width=0;e.height="auto"}}_updateCurrentRowList(e){this._currentRowList.length=0;if(this._currentPaging.enabled){if(this._currentPageNumber>=1&&this._currentPageNumber<=this._pageList.length)for(let e=0;e0){this._applySorting(e);this._pageList.push([]);for(let t=0;t0&&0===this._pageList[this._pageList.length-1].length)this._pageList.splice(this._pageList.length-1,1)}}_updateScrollRowList(e){for(let t=0;t<3;t++){let i="";switch(t){case 1:i="left";break;case 2:i="right";break;default:i="normal"}this._refreshScrollRowList(i,e)}}_updateScrollRowListLimit(e,t){for(let i=0;i=i&&s.y<=l}_clearDragDropSettings(e){if(e)this._dragDropService.clearData();this._isDragActive=!1;this._dragStartPos={x:0,y:0};this._dragEndPos={x:0,y:0};this._removeDropMark();this._removeDragHost();this._changeCursor()}_ctrlDragEnter(e){if(this._isEnabled)this._processDragEnter(e)}_ctrlDragDrop(e){if(this._isEnabled)this._processDragDrop(e);this._removeDropMark();e.stopPropagation()}_ctrlDragLeave(e){if(this._isEnabled)this._processDragLeave(e)}_ctrlDragOver(e){if(this._isEnabled)this._processDragOver(e);e.stopPropagation()}_ctrlDragEnd(e){this._removeDropMark();let t=this._dragDropService.getData();if(t.targetCtrl&&t.targetCtrl.removeDropMark)t.targetCtrl.removeDropMark();this._rowDragEnd(e,null)}_removeDragHandle(){this._isDragHandleVisible=!1;this._targetDropRow=null;this._targetDropPos=-1}_dropMark(e,t){if(!this._dragCmp&&!this._isScrollTimerActive)this._addDropMark({x:e.pageX,y:e.pageY});if(this._dragCmp){let e="none";if(this._isCtrlDropAllowed)e=t?"block":"none";this._dragCmp.display=e;this._dragCmp.refresh()}}_updateDragComponent(e){if(this._dragCmp)this._dragCmp.updatePos(e)}_isDragAllowed(e){return this._isCtrlDragAllowed?e&&(e[this._rowFields.allowDrag]||void 0===e[this._rowFields.allowDrag])?!0:!1:!1}_isDropAllowed(e,t,i){let l=this._isCtrlDropAllowed;if(l&&e&&t)if((l=t[this._rowFields.allowDrop]||void 0===t[this._rowFields.allowDrop]?!0:!1))if(Array.isArray(e))for(let s=0;s=t.right||i.y<=t.top||i.y>=t.bottom){this._isCtrlDragEntered=!1;this._stopScrollTimer();let t=this._dragDropService.getData(),i={action:e.shiftKey?"copy":"move",dragObj:t.source,dropPos:-1,event:e,isDropAllowed:!1,mousePos:this._commonService.getMousePos(e),sourceCtrl:t.sourceCtrl,targetCtrl:null,targetObj:null};this._invokeEvent("dragLeave",i)}this._dropMark(e)}}_processDragOver(e,t,i,l,s){e.preventDefault();this._processDragEnter(e);let r=!0;if(e.dataTransfer)r="none"===e.dataTransfer.effectAllowed?!1:!0;else if(e.originalEvent&&e.originalEvent.dataTransfer)r="none"===e.originalEvent.dataTransfer.effectAllowed?!1:!0;if(r){let s=this._dragDropService.getData(),o=this._commonService.getShiftPos();if(t&&!t.isEmpty){let n=this._commonService.getMousePos(e);n.x-=o.x;n.y-=o.y;let a=t.data,h="group"===t.data.type?"full":null,d=this._dragDropService.getDropPos(n,i,l,h);r=this._isDropAllowed(s.source,a,d);let c={action:e.shiftKey?"copy":"move",source:s.source,dropPos:d,allow:r,sourceCtrl:s.sourceCtrl,target:a,targetCtrl:this},u=this._callDragDropEvent(e,c);if(!r||!0===u.cancel){if(e.dataTransfer)e.dataTransfer.dropEffect="none";else if(e.originalEvent&&e.originalEvent.dataTransfer)e.originalEvent.dataTransfer.dropEffect="none";this._dropMark(e)}else{let i=this._commonService.getMousePos(e),l=i.y+16,o=i.x+20,n={"iui-dragwin-icon":!0},h="";switch(u.dropPos){case 0:h="iui-dragwin-move-in";break;case 1:h="iui-dragwin-move-up";break;case 2:h="iui-dragwin-move-down";break;default:h=""}if("copy"===u.action)h+="-copy";n[h]=!0;this._updateDragComponent({class:n,top:l,left:o,text:t.data[this._rowFields.text]});this._dropMark(e,r);this._dragDropService.setData({action:u.action,clone:s.clone,dropPos:u.dropPos,source:s.source,sourceCtrl:s.sourceCtrl,sourceData:s.sourceData,target:a,targetCtrl:this})}}else if(!this._isCtrlDropAllowed){if(e.dataTransfer)e.dataTransfer.dropEffect="none";else if(e.originalEvent&&e.originalEvent.dataTransfer)e.originalEvent.dataTransfer.dropEffect="none";this._dropMark(e)}else{r=this._checkEmptySpace(e);let t={action:e.shiftKey?"copy":"move",allow:r,dropPos:-1,source:s.source,sourceCtrl:s.sourceCtrl,target:null,targetCtrl:this},i=this._callDragDropEvent(e,t);if(!r||!0===i.cancel){if(e.dataTransfer)e.dataTransfer.dropEffect="none";else if(e.originalEvent&&e.originalEvent.dataTransfer)e.originalEvent.dataTransfer.dropEffect="none";this._dropMark(e)}else{let t=this._commonService.getMousePos(e),l=t.y+16,o=t.x+20,n={"iui-dragwin-icon":!0,"iui-dragwin-move-end":!0};if("copy"===i.action)n["iui-dragwin-move-end-copy"]=!0;this._updateDragComponent({class:n,top:l,left:o,text:this.name?this.name:"Component"});this._dropMark(e,r&&!this._isScrollTimerActive);this._dragDropService.setData({action:i.action,clone:s.clone,source:s.source,sourceCtrl:s.sourceCtrl,sourceData:s.sourceData,target:null,targetCtrl:this,dropPos:-1})}}}}_processDragDrop(e,t){e.preventDefault();let i=!0;if(e.dataTransfer)i="none"===e.dataTransfer.effectAllowed?!1:!0;else if(e.originalEvent&&e.originalEvent.dataTransfer)i="none"===e.originalEvent.dataTransfer.effectAllowed?!1:!0;let l=this._dragDropService.getData();if(i){let s=t.data;if(t&&!t.isEmpty)i=this._isDropAllowed(l.source,s,l.dropPos);else i=this._checkEmptySpace(e);if(i&&l.source){let t={action:l.action,source:l.source,dropPos:l.dropPos,allow:i,sourceCtrl:l.sourceCtrl,target:l.target,targetCtrl:this},s=this._callDragDropEvent(e,t,!0);this._dragDropService.setData({action:s.action,clone:l.clone,dropPos:s.dropPos,source:l.source,sourceCtrl:l.sourceCtrl,sourceData:l.sourceData,target:l.target,targetCtrl:this});if(!s.cancel&&this._isProcessAllowed)this._drop(this._dragDropService.getData())}else this._dragDropService.clearData();if(l.sourceCtrl&&l.sourceCtrl._clearDragDropSettings)l.sourceCtrl._clearDragDropSettings()}else this._dragDropService.clearData();this._isDragActive=!1;this._clearDragDropSettings()}_drop(e){if(e&&e.sourceCtrl){let t="copy"===e.action&&e.clone?e.clone:e.source;if(Array.isArray(t)){let i=[];for(let e=0;e0){for(let t=0;t0){return 100*Math.min(Math.max(l,t),i)/i}return 0}_getFirstEditingCell(e){let t=e[this._rowFields.cells].filter(e=>{let t=this.getColumnById(e[this._cellFields.cid]);return t&&void 0!==t[this._columnFields.editorType]});return t.length>0?t[0]:null}_getFooterDisplayValue(e){return this._commonService.convertValue(e.data[this._columnFields.footerValue],e.data[this._columnFields.format])}_isCellEditorEnabled(e,t){let i=void 0!==t[this._cellFields.editorSettings]?t[this._cellFields.editorSettings]:{};return!1!==(void 0!==i.enabled?i.enabled:this._getCellEditorSettings(e).enabled)?!0:!1}_isEditAllowed(e){return this._isInlineEditorVisible?e&&(e[this._rowFields.allowEdit]||void 0===e[this._rowFields.allowEdit])?!0:!1:!1}_openEditor(e){this._currentEditingCell=e.data;this._isEditorFocused=!0;this._keepActive=!0;this.update()}collapse(e){this.toggle(e,!1)}expand(e){this.toggle(e,!0)}_expandBoxMouseDown(e,t){if(this._isEnabled){if(1===e.buttons&&!this._isExpandBoxTouched)this.toggle(t.data);this._isExpandBoxTouched=!1}e.stopPropagation()}_expandBoxMouseUp(e,t){this._isExpandBoxTouched=!1;e.stopPropagation()}_expandBoxTouchStart(e,t){if(this._isEnabled){this._isExpandBoxTouched=!0;this.toggle(t.data)}e.stopPropagation()}toggle(e,t){if(this._isEnabled)if(e){if(!e[this._rowFields.hasChildren]&&(!e[this._rowFields.rows]||0===e[this._rowFields.rows].length))return;else if(t&&!1!==e[this._rowFields.expanded])return;else if(!1===t&&!1===e[this._rowFields.expanded])return;let i=void 0!==t?t:!1!==e[this._rowFields.expanded]?!0:!1,l={cancel:!1,row:e};if(void 0!==t)if(t)this._invokeEvent("beforeExpand",l);else this._invokeEvent("beforeCollapse",l);else if(i)this._invokeEvent("beforeCollapse",l);else this._invokeEvent("beforeExpand",l);if(!0!==l.cancel){let l=e[this._rowFields.expanded],s=void 0!==t?t:!i;if(s!==l){e[this._rowFields.expanded]=s;this._updateRowExpandValue(e[this._rowFields.id],s);this._updateCurrentLayout(!1,!0)}if(this._isRowExpanded(e))this._invokeEvent("afterExpand",{row:e});else this._invokeEvent("afterCollapse",{row:e})}}else{this.getFullList().forEach(e=>{e[this._rowFields.expanded]=t;this._updateRowExpandValue(e[this._rowFields.id],t)});this._updateCurrentLayout(!1,!0)}}_updateExpandingCell(e,t){let i=0,l=this._getExpandingColumn();if(l)i=l[this._columnFields.id];let s=this._getCellByColumnId(e[this._rowFields.cells],i);if(s)s[this._cellFields.expanded]=t}_updateRowExpandValue(e,t){}_convertToCSV(e){let t="";for(let i=0;i0){for(let e=0;e=0?JSON.stringify(l.text):l.text;else r.text="";else r.text="";t.push(r)}e.push(t)}return this._convertToCSV(e)}exportToJSON(e,t,i,l,s){let r=e?e.columns:null,o=this._exportColumnsToJSON(r,t,l),n=e?e.rows:null;return'[\n{ "columns": '+o+' },\n{ "rows": '+this._exportRowsToJSON(n,i,l,s)+" }\n]"}_exportColumnsToJSON(e,t,i){i=i?i:null;e=e?e:this._dataColumns;let l=t?t:[this._columnFields.allowDrag,this._columnFields.allowDrop,this._columnFields.allowFilter,this._columnFields.allowGrouping,this._columnFields.allowResize,this._columnFields.canSelect,this._columnFields.cellTemplateUrl,this._columnFields.columns,this._columnFields.contentAlignment,this._columnFields.contextMenu,this._columnFields.editorType,this._columnFields.editorSettings,this._columnFields.editorTemplate,this._columnFields.filterOperation,this._columnFields.filterParams,this._columnFields.filterSettings,this._columnFields.filterType,this._columnFields.fixed,this._columnFields.fixedWidth,this._columnFields.footerAlignment,this._columnFields.footerContent,this._columnFields.footerText,this._columnFields.footerValue,this._columnFields.footerTooltip,this._columnFields.groupText,this._columnFields.headerAlignment,this._columnFields.headerContent,this._columnFields.headerText,this._columnFields.headerTooltip,this._columnFields.headerValue,this._columnFields.icon,this._columnFields.id,this._columnFields.minWidth,this._columnFields.maxWidth,this._columnFields.pid,this._columnFields.selected,this._columnFields.sorting,this._columnFields.style,this._columnFields.visible,this._columnFields.width];return JSON.stringify(e,l,i)}_exportRowsToJSON(e,t,i,l){i=i?i:null;e=e?e:!1===l?this._dataRows:this.getFullList();let s=t?t:[this._rowFields.allowCellFocus,this._rowFields.allowDrag,this._rowFields.allowDrop,this._rowFields.allowEdit,this._rowFields.allowFocus,this._rowFields.autoCheck,this._rowFields.canSelect,this._rowFields.cells,this._rowFields.checked,this._rowFields.checkState,this._rowFields.content,this._rowFields.contentVisibility,this._rowFields.contextMenu,this._rowFields.gid,this._rowFields.editorVisible,this._rowFields.enabled,this._rowFields.expanded,this._rowFields.fixed,this._rowFields.hasChildren,this._rowFields.icon,this._rowFields.id,this._rowFields.pid,this._rowFields.selected,this._rowFields.sorting,this._rowFields.statusIcon,this._rowFields.style,this._rowFields.text,this._rowFields.tooltip,this._rowFields.value,this._rowFields.visible,this._cellFields.allowDrag,this._cellFields.allowEdit,this._cellFields.cid,this._cellFields.colName,this._cellFields.content,this._cellFields.contextMenu,this._cellFields.editorSettings,this._cellFields.enabled,this._cellFields.isGroup,this._cellFields.rid,this._cellFields.selected,this._cellFields.style,this._cellFields.tag,this._cellFields.text,this._cellFields.tooltip,this._cellFields.value,this._cellFields.valueID,this._cellFields.valueType];if(!1===l)s.push(this._rowFields.rows);return JSON.stringify(e,s,i)}_filterOperationChanged(e,t){if(!this._isScrollActive)t.data[this._columnFields.filterOperation]=e.detail.operation}_filterValueChanged(e,t){if(!this._isScrollActive){if(e.detail.filter&&e.detail.filter.operation){let i=e.detail.value?t.filterType===IntegralUIFilterType.Date?this._getDateNum(e.detail.value):e.detail.value:null,l=null!==i,s={allowParent:t.filterSettings.allowParent||!0,caseSensitive:t.filterSettings.caseSensitive||!1,conditions:{value:e.detail.value,operation:e.detail.filter.operation}};if("<>"===e.detail.filter.operation){if(t.filterType===IntegralUIFilterType.Date)l=this._commonService.isDate(e.detail.value)&&this._commonService.isDate(e.detail.value2);let r=e.detail.value2?t.filterType===IntegralUIFilterType.Date?this._getDateNum(e.detail.value2):e.detail.value2:null;s.conditions=[{value:i,operation:">="},{value:r,operation:"<="}];s.formula="(a & b)"}if(l)this.filter(t.data,s);else this.filter(t.data)}else this.filter(t.data);t.data[this._columnFields.filterOperation]=e.detail.filter.operation;t.data[this._columnFields.filterValue]={value:e.detail.value,value2:e.detail.value2};t.filterOperation=t.data[this._columnFields.filterOperation];t.filterValue=t.data[this._columnFields.filterValue]}}_getDateNum(e){if(this._commonService.isDate(e)){let t=e.getFullYear(),i=e.getMonth(),l=e.getDate();return new Date(t,i,l,0,0,0,0).valueOf()}return 0}_getFilterAdjustment(e,t){let i=this._getFilterSettings(e),l=i.dropDownAdjustment?i.dropDownAdjustment:{};return{top:void 0!==l.top?l.top:t.top,left:void 0!==l.left?l.left:t.left,width:void 0!==l.width?l.width:t.width,height:void 0!==l.height?l.height:t.height}}_getFilterOperation(e){return void 0!==e[this._columnFields.filterOperation]?e[this._columnFields.filterOperation]:null}_getFilterSettings(e){return void 0!==e[this._columnFields.filterSettings]?e[this._columnFields.filterSettings]:{}}_getFilterType(e){return void 0!==e[this._columnFields.filterType]?e[this._columnFields.filterType]:IntegralUIFilterType.String}_getFilterValue(e){return void 0!==e[this._columnFields.filterValue]?e[this._columnFields.filterValue]:{value:null,value2:null}}_createColumnsWithFilter(){this._filteringColumns.length=0;let e=[];this._createFlatList(this._dataService.getList(null,this._columnDataKey),this._columnFields.columns,e);this._filteringColumns=e.filter(e=>void 0!==e[this._columnFields.filterParams])}filter(e,t){if(e)e[this._columnFields.filterParams]=t;else for(let e=0;e<3;e++){let t="";switch(e){case 1:t="left";break;case 2:t="right";break;default:t="normal"}this._getCurrentColumnList(t).forEach(e=>delete e[this._columnFields.filterParams])}this.updateLayout();this._invokeEvent("change",{type:"filtering"})}_filterIsThereChildren(e,t){let i=!1,l=e[this._rowFields.rows];if(l)for(let e=0;et[this._columnFields.id]===e);return t.length>0?t[0]:null}_getFilterTree(e){let t=null,i=this._getSideName(e[this._columnFields.fixed]),l=this._getCurrentColumnList(i);for(let i=0;i0){let l=-1,s=null,r=null;for(let o=0;o{if(this._maxColumnLevels=0||this._isColumnResizing)e="ew-resize";if(this._ctrlCursor!==e){this._ctrlCursor=e;this.update()}}cloneRow(e){return this._dataService.clone(e,this._rowDataKey)}_createCloneList(e){let t=[];e.forEach(e=>t.push(this.cloneRow(e)));return t}_createFlatColumnList(e){let t=[];e.map(e=>e.map(e=>t.push(e)));return t}_createFlatList(e,t,i){if(e)e.forEach(e=>{i.push(e);this._createFlatList(e[t],t,i)})}_getCellByColumnId(e,t){let i=null;if(e)for(let l=0;l=0&&e=0&&this._expandColIndexe.push(t.data));return e}getList(e,t){switch(e){case"current":return this._getCurrentList();case"selected":return this._currentSelectedRows;default:return this._dataService.getList(t,this._rowDataKey)}}_getObjFromCell(e){let t=null;for(let i=0;it.data===e);return t.length>0?t[0]:null}_getRowCellDisplay(e){return e.colID===this._currentExpandColumnID?"inline-block":"block"}_getRowCurrentIndex(e){if(e){let t=this._getObjFromRow(e);return t&&this._currentRowList?this._currentRowList.indexOf(t):-1}return-1}_getRowElems(e){return this._rowElems[e]}getRowLevel(e){let t=0,i=this.getRowParent(e);for(;i;){t++;i=this.getRowParent(i)}return t}getRowParent(e){return e?this._dataService.findObjectById(e[this._rowFields.pid],this._rowDataKey):null}_getRowScrollIndex(e,t){let i=-1;if(e)for(let l=0;l0)for(let t=0;t0?this._areChildColumnsFixed(e[this._columnFields.columns]):!1}_isColumnWithChildrenVisible(e){let t=!1;if(e)if((t=this.isColumnVisible(e))){let i=e[this._columnFields.columns]||[],l=0;if(i.length>0){i.forEach(e=>{if(this._isColumnWithChildrenVisible(e))l++});t=l>0}}return t}_isThereNoSelectTemplate(e){return this._currentContentVisibility===IntegralUIContentVisibility.Both&&(!this._isSelectedTemplatePresent||!e[this._rowFields.selected])}_isThereHoverTemplate(e){return this._isThereNoSelectTemplate(e)||this._currentContentVisibility===IntegralUIContentVisibility.Hover}_checkRowHoverVisibility(e){return void 0===e[this._rowFields.contentVisibility]||e[this._rowFields.contentVisibility]===IntegralUIContentVisibility.Hover||e[this._rowFields.contentVisibility]===IntegralUIContentVisibility.Both}_isContentAllowed(e,t){let i=this._currentContentVisibility===IntegralUIContentVisibility.Both;switch(t){case"hover":i=this._isThereHoverTemplate(e)&&this._checkRowHoverVisibility(e);break;case"select":let l=i||this._currentContentVisibility===IntegralUIContentVisibility.Select,s=void 0===e[this._rowFields.contentVisibility]||e[this._rowFields.contentVisibility]===IntegralUIContentVisibility.Select||e[this._rowFields.contentVisibility]===IntegralUIContentVisibility.Both;i=l&&s;break;default:i=this._currentContentVisibility===IntegralUIContentVisibility.Both}return i}_isParentOf(e,t){let i=this._dataService.getParent(t);if(e&&t&&i&&this._commonService.isEqual(e[this._rowFields.id],i[this._rowFields.id]))return!0;else return!1}isRowEnabled(e){return this._isEnabled&&e&&this._commonService.isTrue(e[this._rowFields.enabled])}_isRowExpanded(e){return e?e[this._rowFields.expanded]||void 0===e[this._rowFields.expanded]:!0}_isRowFixed(e){return!1}isRowHovered(e){return!this._isDragActive&&!this._isScrollTimerActive&&e&&e===this._hoverRow}_isRowLoading(e){return this._loadRows.indexOf(e)>=0}isRowSelected(e){return e&&!0===e[this._rowFields.selected]}_isThereFixedColumns(e){return this._currentColumnList[e].length>0}_isThereNoRows(e){return e[this._rowFields.rows]&&0===e[this._rowFields.rows].length}_isThereVisibleChildren(e){let t=!1;if(e){let i=e[this._rowFields.rows]||[];if(i&&i.length>0)for(let e=0;e=0){let i=this._getColumnList(e);if(t>=0&&t=0&&this._resizeColumnIndex=0&&n=0&&o0&&(!t.data[this._columnFields.pid]||this._getPrevFlatColumnIndex(t.data,t.data[this._columnFields.fixed],!0)>=0)?this._getColumnIndexFromList(t.data):-1;else if(g)this._resizeColumnIndex=r;else{this._resizeColumnIndex=r-1;this._updateResizeColumnIndex(l,this._resizeColumnIndex)}if(this._isColumnWidthFixed(t.data))this._resizeColumnIndex=-1;else if(g){let e=this._getColumnList("right");if(this._resizeColumnIndex>=e.length)this._resizeColumnIndex=-1}this._changeCursor()}}else this._ctrlCursor="default"}else this._ctrlCursor="default"}_columnMouseEnter(e,t){if(this._isEnabled&&!this._isScrollActive&&!this._isColumnResizing&&!this._startColumnReorder){this._blockHoverRect.top=-9999999;this._hoverColumn=t.data;this._resizeColumnIndex=-1;this._updateColumnStyle(t);this.update();this._invokeEvent("columnHover",{column:this._hoverColumn})}}_columnMouseLeave(e,t){if(this._isEnabled&&!this._isScrollActive&&!this._isColumnResizing&&!this._startColumnReorder){this._hoverColumn=null;this._resizeColumnIndex=-1;this._changeCursor();this._updateColumnStyle(t);this.update()}}_footerMouseEnter(e,t){this._blockHoverRect.top=-9999999}_gridMouseMove(e){this._isGridHovered=!1;if(!this._hoverRow)this._blockHoverRect.top=-9999999;if(this._isEnabled)if(1===e.which&&this._columnReorderActive&&this._reorderColumn){this._isGridHovered=!0;this._reorderColumnCurrentPos.left=e.pageX;e.stopPropagation()}}_gridMouseUp(e){if(1===e.which&&this._reorderColumn&&this._reorderNewColIndex>=0&&this._reorderNewColIndex0&&this._commonService.isIndexInRange(e,l)){let t=this._commonService.getPageRect(this._elemRef),i=this._commonService.getPageRect(l[e]);this._blockHoverRect.top=i.top-t.top-1}this.update();this._invokeEvent("rowHover",{row:this._hoverRow})}}_rowMouseLeave(e,t,i){if(this._isEnabled&&!this._isScrollActive&&!this._isColumnResizing&&!this._columnReorderActive)this._clearHoverRow(t.data,i)}_clearHoverRow(e,t){let i=e?e:this._hoverRow,l=this._getRowScrollIndex(i,t);this._hoverRow=null;this._hoverRowObj=null;this._updateRowStyleByIndex(l);this.update()}_getSelectBlockRect(e){let t={left:0,top:"-9999999px",height:0,width:0};if(e=0&&e.rowIndex=this._viewIndexRange.right?!0:!1}_isLastRow(e){return e.rowIndex===this._visibleRange-1?!0:!1}moveFocus(e,t){switch(e){case IntegralUIMoveDirection.Down:if(t)this._processPageDownKey(this._currentFocusCell,null,t);else this._processDownArrowKey(this._currentFocusCell);break;case IntegralUIMoveDirection.First:this._processHomeKey(this._currentFocusCell);break;case IntegralUIMoveDirection.Last:this._processEndKey(this._currentFocusCell);break;case IntegralUIMoveDirection.Left:this._processLeftArrowKey(null,this._currentFocusCell);break;case IntegralUIMoveDirection.Right:this._processRightArrowKey(null,this._currentFocusCell);break;case IntegralUIMoveDirection.Up:if(t)this._processPageUpKey(this._currentFocusCell,null,t);else this._processUpArrowKey(this._currentFocusCell);break;default:this._defaultFunc()}}_onContentScroll(e){e.srcElement.scrollTop=0;e.srcElement.scrollLeft=0;e.target.scrollTop=0;e.target.scrollLeft=0}_processDownArrowKey(e,t){let i=this._isKeyPressed?this._currentFocusCell:e,l=this._getDownCell(i);if(l&&!l.isEmpty){this._updateFocusCell(l);let e=Object.assign({},l),i=this._getRowFromCell(l);if(i){let s=i.data;this._processRowSelection(t,s);if(this._isLastRow(l)){this.scrollPos({x:this._currentScrollPos.x,y:this._currentScrollPos.y+this._avgRowHeight});this.updateView();if(this._currentScrollPos.y0){this.scrollPos({x:this._currentScrollPos.x,y:this._maxScrollPos.y});this.updateView();let s=this;setTimeout(function(){if(s._visibleRange<=s._scrollRowList[l].length){let r=s._getLastScrollIndex(e.side);if(r>=0){let o=s._scrollRowList[l][r],n="normal"!==l?e.colIndex:e.colIndex-s._viewIndexRange.left;if(o&&o.cells&&s._commonService.isIndexInRange(n,o.cells)){i=o.cells[n];s._updateFocusCell(i);s._processRowSelection(t,o.data)}}}},1)}return i}_processHomeKey(e,t){let i=null,l=e.side;if(this._scrollRowList[l].length>0){this.scrollPos({x:this._currentScrollPos.x,y:0});this.updateView();let s=this;setTimeout(function(){let r=s._scrollRowList[l][0];if(r){let o="normal"!==l?e.colIndex:e.colIndex-s._viewIndexRange.left;if(r.cells&&s._commonService.isIndexInRange(o,r.cells)){i=r.cells[o];s._updateFocusCell(i);s._processRowSelection(t,r.data)}}},1)}return i}_processLeftArrowKey(e,t){let i=this.getColumnById(t.data[this._cellFields.cid]);if(i&&this._getColumnIndex(i)===this._expandColIndex){let i=e.data;if(this._isRowExpanded(i)&&this._isThereVisibleChildren(i)){this.collapse(i);return t}}let l=this._isKeyPressed?this._currentFocusCell:t,s=this._getPrevCell(l),r=Object.assign({},s);if(s&&!s.isEmpty){this._updateFocusCell(s);if(this._isFirstCell(s)){this.scrollPos({x:this._currentScrollPos.x-2*s.width,y:this._currentScrollPos.y});this._updateRange();this.update();this._updateReferences();this._updateFocusCell(r)}this.refresh()}return r&&!r.isEmpty?r:null}_processPageDownKey(e,t,i){let l=null,s=this,r=e.side;if(this._scrollRowList[r].length>0){s.scrollPos({x:s._currentScrollPos.x,y:i?s._currentScrollPos.y+s._avgRowHeight*i:s._currentScrollPos.y+s._avgRowHeight*(s._visibleRange-1)});s.updateView();setTimeout(function(){let i=e.rowIndex>=0&&e.rowIndex=0){let o=s._scrollRowList[r][i],n="normal"!==r?e.colIndex:e.colIndex-s._viewIndexRange.left;if(o&&o.cells&&s._commonService.isIndexInRange(n,o.cells)){l=o.cells[n];s._updateFocusCell(l);s._processRowSelection(t,o.data)}}},1)}return l}_processPageUpKey(e,t,i){let l=null,s=this,r=e.side;if(s._scrollRowList[r].length>0){s.scrollPos({x:s._currentScrollPos.x,y:i?s._currentScrollPos.y-s._avgRowHeight*i:s._currentScrollPos.y-s._avgRowHeight*(s._visibleRange-1)});s.updateView();setTimeout(function(){let i=e.rowIndex>=0&&e.rowIndex0||l.data!==i.data){l.rowIndex++;this._updateFocusCell(l)}else if(0===this._currentScrollPos.y)this.refresh()}}}return i&&!i.isEmpty?i:null}_getDownCell(e){let t=e.side;if(e&&e.rowIndex>=0&&e.rowIndex=0?this._scrollRowList[t][i]:null,s="normal"!==t?e.colIndex:e.colIndex-this._viewIndexRange.left;return l&&this._commonService.isIndexInRange(s,l.cells)?l.cells[s]:null}return null}_getFirstCell(e,t){let i=e.side,l=t?e.rowIndex-1:e.rowIndex+1;if(e&&l>=0&&l=0?e.cells[t]:null}return null}_getLastCell(e,t){let i=null,l=e.side,s=t?e.rowIndex-1:this._currentRowList.length=0&&s=0;t--)if(!e.cells[t].isEmpty){i=e.cells[t];break}}return i}_getNextCell(e){let t=e.side;if(e&&e.rowIndex>=0&&e.rowIndex=0?i.cells[s]:null}return null}_getLastScrollIndex(e){let t=0;for(let i=0;i=0&&e.rowIndex=0?i.cells[s]:null}return null}_getUpCell(e){let t=e.side;if(e&&e.rowIndex>=0&&e.rowIndex0?e.rowIndex-1:-1,l=i>=0?this._scrollRowList[t][i]:null,s="normal"!==t?e.colIndex:e.colIndex-this._viewIndexRange.left;return l&&this._commonService.isIndexInRange(s,l.cells)?l.cells[s]:null}return null}_updateFocusCell(e,t){if(e){this._currentFocusCell=Object.assign({},e);this._currentFocusCell.isEmpty=!1;this._setFocusToCell(e,t)}else this._currentFocusCell=null}_getElemFromCell(e,t){let i=this,l=null,s=e.rowIndex,r=e.colIndex-this._viewIndexRange.left;if(this._commonService.isIndexInRange(s,this._rowElems[e.side])){let t=this._rowElems[e.side][s].children;if(this._commonService.isIndexInRange(r,t)){l=t[r].firstElementChild;switch(e.editorType){case IntegralUIEditorType.Custom:case IntegralUIEditorType.Date:case IntegralUIEditorType.DropList:this._isEditorFocused=!0;setTimeout(function(){if(l.firstElementChild&&l.firstElementChild.setFocus)l.firstElementChild.setFocus()},10);break;case IntegralUIEditorType.Text:i._openEditor(e);setTimeout(function(){let e=i.shadowRoot.querySelector("#iui-editor-text");if(e)e.focus();i._keepActive=!1},10);break;case IntegralUIEditorType.Rating:case IntegralUIEditorType.Slider:this._isEditorFocused=!0;setTimeout(function(){if(l.firstElementChild&&l.firstElementChild.firstElementChild&&l.firstElementChild.firstElementChild.setFocus)l.firstElementChild.firstElementChild.setFocus()},10);break;default:this._defaultFunc()}}}return l}setFocus(e){let t=this._getObjFromCell(e);this._updateFocusCell(t)}_setFocusToCell(e,t){let i=this._getElemFromCell(e,t);if(i)i.focus()}beginLoad(){this._isLoading=!0;this.update();let e=this.shadowRoot.querySelector(".iui-loading-icon");if(e)this._loadIconPos={top:(this._clientRect.height-e.offsetHeight)/2,left:(this._clientRect.width-e.offsetWidth)/2}}endLoad(){let e=this;e._isLoading=!1;e._isLoadingEnd=!0;e.update();e._loadingEndTimeout=setTimeout(function(){e._isLoadingEnd=!1;e.update();clearTimeout(e._loadingEndTimeout)},400)}_getParentColumnList(e){let t=[];if(e&&e[this._columnFields.pid]){let i=this._getSideName(e[this._columnFields.fixed]),l=this._getCurrentColumnList(i).filter(t=>t[this._columnFields.id]===e[this._columnFields.pid]),s=l.length>0?l[0]:null;if(s&&s[this._columnFields.columns]&&s[this._columnFields.columns].length>0)t=s[this._columnFields.columns]}else t=this._dataService.getList(null,this._columnDataKey);return t}moveColumn(e,t,i,l){if(e){if(t!==IntegralUIMoveDirection.Left&&t!==IntegralUIMoveDirection.Right){let t=this._getParentColumnList(e);if(t){let i=t.indexOf(e);if(i>=0)t.splice(i,1)}}let s=-1,r=this._getParentColumnList(i);switch(t){case IntegralUIMoveDirection.After:s=i?this._getNextColumnIndex(i,r):-1;break;case IntegralUIMoveDirection.At:s=l;break;case IntegralUIMoveDirection.Before:s=i?this._getColumnIndex(i,r):-1;break;case IntegralUIMoveDirection.First:s=0;break;case IntegralUIMoveDirection.Last:s=this._getLastColumnIndex(r)+1;break;case IntegralUIMoveDirection.Left:s=this._getPrevColumnIndex(e,r);break;case IntegralUIMoveDirection.Right:s=this._getNextColumnIndex(e,r);break;default:s=-1}if(r&&s>=0){this._isUpdateAllowed=!1;if(t!==IntegralUIMoveDirection.Left&&t!==IntegralUIMoveDirection.Right)r.splice(s,0,e);else if(s0?l:0}_areChildColumnsFixed(e){if(e&&e.length>0){let t=0;for(let i=0;i${e.data[this._columnFields.footerText]} `;return t}_getColumnHeaderTemplate(e){let t=null,i=this.headerTemplate;if(i){let l=i(e.data);if(l)t=new TemplateResult(l.strings,l.values,"html",defaultTemplateProcessor)}if(!t){let i=this._commonService.isString(e.data[this._columnFields.icon])?e.data[this._columnFields.icon].split(" "):[],l={};i.map(e=>l[e]=!0);t=html` ${this._isSortingColumn(e.data)?html``:html``} ${e.data[this._columnFields.headerText]} `}return t}_getColumnWidth(e,t){let i=this._columnFields.width,l=100;switch(t){case"min":i=this._columnFields.minWidth;l=e&&void 0!==e[i]?e[i]:0;return this._isThereChildColumns(e,!0)?this._getColumnWidthFromChildren(e):l;case"max":i=this._columnFields.maxWidth;l=e&&void 0!==e[i]?e[i]:9999999;return this._isThereChildColumns(e,!0)?this._getColumnWidthFromChildren(e):l;default:return e&&void 0!==e[i]?e[i]:100}}_getColumnWidthFromChildren(e){let t=100;if(e){let i=0,l=0,s=this._columnFields.width,r=0;if(this._isThereChildColumns(e)){let o=e[this._columnFields.columns];for(let e=0;et.data[this._columnFields.headerText]===e);t=s.length>0?s[0].data:null}return this._getColumnWidth(t)}_getFilterHeight(){if(this._filterElem.normal)return this._filterElem.normal.offsetHeight;else if(this._filterElem.left)return this._filterElem.left.offsetHeight;else if(this._filterElem.right)return this._filterElem.right.offsetHeight;return 0}_getFooterHeight(){if(this._footerElem.normal)return this._footerElem.normal.offsetHeight;else if(this._footerElem.left)return this._footerElem.left.offsetHeight;else if(this._footerElem.right)return this._footerElem.right.offsetHeight;return 0}_getHeaderHeight(){if(this._headerElem.normal)return this._headerElem.normal.offsetHeight;else if(this._headerElem.left)return this._headerElem.left.offsetHeight;else if(this._headerElem.right)return this._headerElem.right.offsetHeight;return 0}_getNextFlatColumn(e,t,i){let l=null,s=this._getSideName(t),r=this._getCurrentColumnList(s),o=r.filter(t=>t[this._columnFields.pid]===e[this._columnFields.pid]),n=o?o.indexOf(e):-1;n=o&&n=0)l=this._isColumnWidthFixed(r[n])?this._getNextFlatColumn(r[n],t,i):r[n];else if(n>=0)l=r[n];return l}_getNextFlatColumnIndex(e,t,i){let l=this._getNextFlatColumn(e,t,i);return l?this._getColumnIndexFromList(l):-1}_getNumScrollColumns(e){return this._scrollRowList[e].length>0?this._scrollRowList[e][0].cells.length:0}_getNumVisibleColumns(e){return this._flatCompleteColumnList[e].filter(e=>e.isVisible).length}_getPrevFlatColumn(e,t,i){let l=null,s=this._getCurrentColumnList(t),r=s.filter(t=>t[this._columnFields.pid]===e[this._columnFields.pid]),o=r?r.indexOf(e):-1;o=o>0?o-1:-1;if(i&&o>=0)l=this._isColumnWidthFixed(s[o])?this._getPrevFlatColumn(s[o],t,i):s[o];else if(o>=0)l=s[o];return l}_getPrevFlatColumnIndex(e,t,i){let l=this._getPrevFlatColumn(e,t,i);return l?this._getColumnIndexFromList(l):-1}_isThereChildColumns(e,t){let i=this._columnFields.columns;return t?this._areChildColumnsFixed(e[i]):e[i]&&e[i].length>0?!0:!1}_updateAllColumnWidth(){for(let e=0;e<3;e++){let t="";switch(e){case 1:t="left";break;case 2:t="right";break;default:t="normal"}this._updateColumnWidth(t)}}_updateColumnWidth(e,t){let i=this._currentColumnList[e];if(this._isAutoSizeColumnsActive){let e=0,t=0,l=0,s=0,r=[],o=!1;for(let n=0;n=(t=this._getColumnWidth(i[n].data,"min"))){l+=e+this._columnPadding.left+this._columnPadding.right+6;if(!0!==this._isColumnWidthFixed(i[n].data)){s++;r.push(i[n])}else if(o){this._setColumnWidth(i[n].data,e,!0);this._updateCellWidth(i[n].data)}}if(s>0){let e=this.isVerScrollVisible()?20:0,t=(this._clientRect.width-e-l)/s;this._updateColumnWidthByFactor(r,t)}}else if(t)this._changeColumnWidth(t);else for(let e=0;e{let s=e._getRowScrollIndex(l,"normal"),r={height:e._blockSelectHeight,left:0,top:-9999999,width:e._clientRect.width-2};if(0===e._scrollSize.width&&!e._isThereFixedColumns("right"))r.width=e._allColWidth+e._leftBlockSize.width-2;else if(e.isVerScrollVisible())r.width-=17;if(i&&s>=0&&s0){let t=0,i=0;for(let l=0;l0){let e=Math.floor(i/t);if(e>0)this._visibleRange=Math.floor((this._clientRect.height-(this._currentHeaderHeight+this._currentFilterHeight+this._currentFooterHeight))/e)+1}}}_getMinColumnWidthFromChildren(e){let t=e[this._columnFields.columns];return t&&t.length>0?10*(t.length-1):0}_resizeChildColumns(e,t){let i=e[this._columnFields.columns];if(i&&i.length>0){let e=i.filter(e=>{let i=this._getColumnWidth(e);if(this._isColumnWidthFixed(e))return!0;else return t<0&&0===i?!0:!1}).length;t=i.length>e?t/(i.length-e):0;i.filter(e=>!this._isColumnWidthFixed(e)).forEach(e=>{this._updateWidthByFactor(e,t);this._resizeChildColumns(e,t)})}}_resizeParentColumn(e,t){if(e[this._columnFields.pid]){let i=this._getSideName(e[this._columnFields.fixed]),l=this._flatCurrentColumnList[i].filter(t=>t[this._columnFields.id]===e[this._columnFields.pid]),s=l.length>0?l[0]:null;if(s){this._updateWidthByFactor(s,t);this._resizeParentColumn(s,t)}}}_setColumnWidth(e,t,i){if(e&&(i||!0!==e[this._columnFields.fixedWidth])){let i=Math.max(this._getColumnWidth(e,"min"),this._getMinColumnWidthFromChildren(e)),l=this._getColumnWidth(e,"max"),s=Math.min(l,Math.max(i,t));e[this._columnFields.width]=s>0?s:0}}_updateCellWidth(e){if(e){let t=this._getSideName(e[this._columnFields.fixed]),i=this._scrollRowList[t];for(let t=0;t0?s:this._columnPadding.left;if(0===i)l.cells[t].indent=s;else l.cells[t].indent=this._getRowIndent(l,e)}l.cells[t].width=i;break}}}}_updateChildColumnsWidth(e,t,i){if(t>Math.max(this._getColumnWidth(e,"min"),this._getMinColumnWidthFromChildren(e))){this._resizeChildColumns(e,i);this._resizeParentColumn(e,i)}}_updateColumnWidthByFactor(e,t){let i=0,l=0,s=0,r=0,o=0;l=0;let n=[];for(let o=0;o=r)if(i+t<=r){s+=i+t-r;this._setColumnWidth(e[o].data,r);this._updateCellWidth(e[o].data)}else{n.push(e[o]);l++}}if(l>0){let e=s/l;if(0!==e)this._updateColumnWidthByFactor(n,t+e);else for(let e=0;e(o=Math.max(this.getColumnWidth(n[e].data,"min"),this._getMinColumnWidthFromChildren(n[e].data))))this._resizeChildColumns(n[e].data,t)}}}_updateWidthByFactor(e,t){let i=this._getColumnWidth(e);this._isColumnFixed(e,"right")?i-=t:i+=t;i=Math.max(0,i);this._setColumnWidth(e,i);this._updateCellWidth(e)}_windowMouseMove(e){if(this._isEnabled){if(1!==e.buttons){this._clearDragDropSettings(!0);this._resetReorderColumnSettings()}if(1===e.buttons&&this._isColumnResizing){let t=this._commonService.getShiftPos(),i=0,l={x:e.pageX-t.x,y:e.pageY-t.y};if(this._resizeColumn){let e=0;if(this._isAutoSizeColumnsActive){let t=null,s=l.x-this._columnStartPos.x;if(s<0){if((t=this._getPrevFlatColumn(this._resizeColumn,this._resizeColumn[this._columnFields.fixed],!0))){let i=this._getColumnWidth(t)+s,l=this._getColumnWidth(t,"min");if(i>l){this._setColumnWidth(t,i);this._updateCellWidth(t);this._updateChildColumnsWidth(t,i,s);e=this._getColumnWidth(this._resizeColumn)-s;this._setColumnWidth(this._resizeColumn,e);this._updateCellWidth(this._resizeColumn);this._updateChildColumnsWidth(this._resizeColumn,e,-s)}else{this._setColumnWidth(t,l);this._updateCellWidth(t)}}}else if((e=(e=this._getColumnWidth(this._resizeColumn)-s)>(i=this._getColumnWidth(this._resizeColumn,"min"))?e:i)>i){this._setColumnWidth(this._resizeColumn,e);this._updateCellWidth(this._resizeColumn);this._updateChildColumnsWidth(this._resizeColumn,e,-s);if((t=this._getPrevFlatColumn(this._resizeColumn,this._resizeColumn[this._columnFields.fixed],!0))){let e=this._getColumnWidth(t)+s;this._setColumnWidth(t,e);this._updateCellWidth(t);this._updateChildColumnsWidth(t,e,s)}}}else{let t=l.x-this._columnStartPos.x;e=this._getColumnWidth(this._resizeColumn);this._isColumnFixed(this._resizeColumn,"right")?e-=t:e+=t;e=e>0?e:0;this._setColumnWidth(this._resizeColumn,e);this._updateCellWidth(this._resizeColumn);this._updateChildColumnsWidth(this._resizeColumn,e,t)}this._updateScrollSize();this.update()}this._columnStartPos=l}}}_windowClick(e){if(this._isEnabled&&this._isColumnResizing){this._isColumnResizing=!1;this._invokeEvent("columnSizeChanged",{column:this._resizeColumn});if(null!==this._resizeColumn&&"left"===this._resizeColumn[this._columnFields.fixed])this._currentFixedColWidth=this._resizeColumn[this._columnFields.width];this._updateRange()}this._removeDropMark();this._removeDragHost();this._ctrlCursor="default";this._resetReorderColumnSettings();this._clickedCell=null;this._hoverColumn=null;this._resizeColumnIndex=-1;this._changeCursor();this._isCtrlDragEntered=!1;this._isScrollActive=!1;if(this._isEnabled)this.refresh()}_checkForSelectionChange(){if(this._currentSelectedRows.length>0){let e=this.getFullList(),t=[];this._currentSelectedRows.forEach(i=>{if(0===e.filter(e=>this._commonService.isEqual(e[this._rowFields.id],i[this._rowFields.id])).length)t.push(i)});if(t.length>0){let e=[];t.forEach(t=>{t[this._rowFields.selected]=!1;e.push(this._currentSelectedRows.indexOf(t))});if(this._currentSelectedRow&&t.filter(e=>this._commonService.isEqual(this._currentSelectedRow[this._rowFields.id],e[this._rowFields.id])).length>0)this._currentSelectedRow=null;for(let t=e.length-1;t>=0;t--)this._currentSelectedRows.splice(e[t],1)}}}_getDefaultRowTemplate(e,t){let i=null,l=this.rowTemplate;if(l){let s=l(e.data,t.data);if(s)i=new TemplateResult(s.strings,s.values,"html",defaultTemplateProcessor)}if(!i)i=html`${t.displayValue}`;return i}_getRowIndent(e,t){let i=this._columnPadding.left;if(this._isExpandBoxAllowed(t))i+=e.indent;return i}_isExpandBoxAllowed(e,t){return e?this._getColumnIndex(e)===this._expandColIndex:!1}_updateScrollSize(){let e=this;e._updateLeftBlockSize();e._updateRightBlockSize();e._allColWidth=0;for(let t=0;t0?e._scrollSize.width:0;e._scrollSize.height=e._scrollSize.height>0?e._scrollSize.height:0;e._maxScrollPos={x:e._scrollSize.width,y:e._scrollSize.height};if(e._currentScrollPos.x>e._maxScrollPos.x)e._changeHorizontalScrollPos(e._maxScrollPos.x);if(e._currentScrollPos.y>e._maxScrollPos.y)e._changeVerticalScrollPos(e._maxScrollPos.y);e._scrollBarSize={width:e.isVerScrollVisible()?e._clientRect.width-20:e._clientRect.width-4,height:e.isHorScrollVisible()?e._clientRect.height-20:e._clientRect.height-4};e._scrollLargeChange={x:e._scrollBarSize.width,y:e._scrollBarSize.height-e._currentHeaderHeight-e._currentFilterHeight-e._currentFooterHeight};e._contentLeftPos=e._initialContentLeftPos-e._leftBlockSize.width;e._blockHoverRect={height:e._avgRowHeight-2,left:0,top:-9999999,width:e._clientRect.width-2};if(0===e._scrollSize.width&&!e._isThereFixedColumns("right"))e._blockHoverRect.width=e._allColWidth+e._leftBlockSize.width-2;else if(e.isVerScrollVisible())e._blockHoverRect.width-=17;let t={height:e._avgRowHeight-2,left:0,top:-9999999,width:e._clientRect.width-2};if(0===e._scrollSize.width&&!e._isThereFixedColumns("right")){e._blockHoverRect.width=e._allColWidth+e._leftBlockSize.width-2;t.width=e._blockHoverRect.width}else if(e.isVerScrollVisible()){e._blockHoverRect.width-=17;t.width-=17}e._blockSelectRect.forEach(e=>{e.width=t.width;e.height=t.height})}_onCtrlMouseEnter(e){if(this._isEnabled&&1===e.buttons&&this._cloneElem)this._cloneElem.style.display="block"}_onCtrlMouseLeave(e){if(this._isEnabled&&1===e.buttons&&this._cloneElem)this._cloneElem.style.display="none";this._stopScrollTimer()}currentPage(e){if(this._currentPageNumber!==e&&e>=1&&e<=this._pageList.length){this._currentPageNumber=e;this._updateCurrentLayout()}return this._currentPageNumber}getMaxPages(){return this._pageList?this._pageList.length:0}firstPage(){if(1!==this._currentPageNumber){this._currentPageNumber=1;this._updateCurrentLayout()}}lastPage(){if(this._currentPageNumber!==this._pageList.length){this._currentPageNumber=this._pageList.length;this._updateCurrentLayout()}}nextPage(){if(this._currentPageNumber1){this._currentPageNumber--;this._updateCurrentLayout()}}_resetPageNumber(){this._currentPageNumber=1}_updatePageNumber(){if(this._currentPageNumber>this._pageList.length)if(0===this._pageList.length)this._resetPageNumber();else this._currentPageNumber=this._pageList.length}_updatePaging(e){if(e)this._currentPaging={enabled:this._commonService.isFieldAvailable(e.enabled,!1),panel:this._commonService.isFieldAvailable(e.panel,!0),pageSize:this._commonService.isFieldAvailable(e.pageSize,100)};else this._currentPaging={enabled:!1,panel:!0,pageSize:100};this._resetPageNumber();this.updateLayout()}_paginatorPageChanged(e){this._currentPageNumber=e.detail.value;this.scrollPos({x:0,y:0});this._updateCurrentLayout();this._invokeEvent("pageChanged",{page:this._currentPageNumber,maxPages:this.getMaxPages(),pageSize:this._currentPaging.pageSize})}_isPaginationEnabled(){return this._currentPaging.enabled&&this._currentPaging.panel}scrollPos(e){if(e){this._currentScrollPos={x:Math.max(0,Math.min(e.x,this._maxScrollPos.x)),y:Math.max(0,Math.min(e.y,this._maxScrollPos.y))};this._currentIndex=this._avgRowHeight>0?Math.floor(this._currentScrollPos.y/this._avgRowHeight):0}return{x:Math.floor(this._currentScrollPos.x),y:Math.floor(this._currentScrollPos.y)}}_changeHorizontalScrollPos(e){this._blockHoverRect.top=-9999999;this._currentScrollPos.x=Math.max(0,Math.min(e,this._maxScrollPos.x));if(this._currentScrollPos.x!==this._prevScrollPos.x){this._updateRange();this._invokeEvent("scrollPosChanged",{value:this._currentScrollPos,max:this._maxScrollPos});this._prevScrollPos.x=this._currentScrollPos.x}}_changeVerticalScrollPos(e){this._blockHoverRect.top=-9999999;this._currentScrollPos.y=Math.max(0,Math.min(e,this._maxScrollPos.y));if(this._currentScrollPos.y!==this._prevScrollPos.y){this.updateView(!0);this._invokeEvent("scrollPosChanged",{value:this._currentScrollPos,max:this._maxScrollPos});this._prevScrollPos.y=this._currentScrollPos.y}}_gridMouseWheel(e){e.preventDefault();if(this._isEnabled){this._hoverRow=null;let t=Math.max(-1,Math.min(1,e.wheelDelta||-e.detail)),i=5;switch(this.mouseWheelSpeed){case IntegralUISpeedMode.VerySlow:i=15;break;case IntegralUISpeedMode.Slow:i=9;break;case IntegralUISpeedMode.Fast:i=3;break;case IntegralUISpeedMode.VeryFast:i=1;break;default:i=5}if(this.isVerScrollVisible()){let e=Math.floor(this._clientRect.height/i);if(this._currentMouseWheelSpeed===IntegralUISpeedMode.VerySlow&&this._avgRowHeight>0)e=this._avgRowHeight;let l=this._currentScrollPos.y+e*t*-1;this._changeVerticalScrollPos(l)}}e.stopPropagation()}isVerScrollVisible(){return this._isEnabled&&this._scrollVisibility.vertical&&this._scrollSize.height>0?!0:!1}isHorScrollVisible(){return this._isEnabled&&this._scrollVisibility.horizontal&&this._scrollSize.width>0?!0:!1}_onVerticalScrollStart(e){this._hoverRow=null;this._isScrollActive=!0}_onVerticalScrollEnd(e){this._isScrollActive=!1}_onVerticalScrollChanged(e){if(this._currentScrollPos.y!==e.detail.value)this._changeVerticalScrollPos(e.detail.value)}_onHorizontalScrollStart(e){this._hoverRow=null;this._isScrollActive=!0}_onHorizontalScrollEnd(e){this._isScrollActive=!1;this.refresh()}_onHorizontalScrollChanged(e){if(this._currentScrollPos.x!==e.detail.value){this._currentScrollPos.x=e.detail.value;this._invokeEvent("scrollPosChanged",{value:this._currentScrollPos,max:this._maxScrollPos});this._updateRange();this._refreshScrollRowList("normal");this.update()}}_scrollMouseDown(e){}updateView(e){this._currentIndex=this._avgRowHeight>0?Math.floor(this._currentScrollPos.y/this._avgRowHeight):0;if(!e||this._currentIndex!==this._prevIndex){this._updateScrollRowList();this._updateSelectContentPos();this.refresh();this._prevIndex=this._currentIndex}}_processScroll(e,t,i){if(this._isEnabled)if(this.isVerScrollVisible()){let l=this._commonService.getShiftPos(),s=this._commonService.getMousePos(e);s.x-=l.x;s.y-=l.y;let r=this._commonService.getPageRect(this._elemRef),o=t?t:0,n=i?i:0,a=r.top+this._currentHeaderHeight+this._currentFilterHeight+o+25,h=r.bottom-this._currentFooterHeight-this._paginatorHeight-n-25;if(this.isHorScrollVisible())h-=16;if(s.y0)this._startScrollTimer(!1);else if(s.y>h&&this._currentScrollPos.ythis._maxScrollPos.y)this._currentScrollPos.y=this._maxScrollPos.y;else this._currentScrollPos.y+=i;else if(this._currentScrollPos.y-i<0)this._currentScrollPos.y=0;else this._currentScrollPos.y-=i;this.updateView(!0);this._invokeEvent("scrollPosChanged",{value:this._currentScrollPos,max:this._maxScrollPos});if(t.y<=0||this._currentScrollPos.y=0)this._scrollPos({x:this._currentScrollPos.x,y:this._avgRowHeight*(t+1-this._visibleRange/2)});this.updateLayout()}}findColumnById(e){return this._dataService.findObjectById(e,this._columnDataKey)}findRowById(e){return this._dataService.findObjectById(e,this._rowDataKey)}findRowByText(e){return this._dataService.findObjectByText(e,this._rowDataKey)}clearSelection(){this._clearPrevSelection();this._currentSelectedRow=null;this._updateSelectContentPos();this.refresh()}_processColumnSelection(e,t,i){let l=this;if(t){if(!1===t[l._columnFields.canSelect])return;let e=!0;if(l._currentSelectedColumn)e=!l._commonService.isEqual(l._currentSelectedColumn[l._columnFields.id],t[l._columnFields.id]);let i={cancel:!1,obj:t};l._invokeEvent("beforeSelect",i);if(e&&!0!==i.cancel){if(l._currentSelectedColumn){l._currentSelectedColumn[l._columnFields.selected]=!1;l.refresh(l._currentSelectedColumn)}l._currentSelectedColumn=t;t[l._columnFields.selected]=!0;l.refresh(t);l._callAfterSelectEvent(t)}}else return l._currentSelectedColumn}_clearPrevSelection(e){for(let t=0;t0;if(!l.isRowEnabled(t)){l._clearPrevSelection();l._currentSelectedRow=null;l.refresh();if(s)l._invokeEvent("selectionChanged",{obj:this._currentSelectedRow})}else{let r=l._currentSelectedRow,o=!0;if(r)o=this._isCtrlKeyPressed(e)||!this._commonService.isEqual(r[l._rowFields.id],t[l._rowFields.id])||!1===r[l._rowFields.selected];let n={cancel:!1,obj:t};l._invokeEvent("beforeSelect",n);if(!0!==n.cancel){let n=e&&(e.shiftKey||e.ctrlKey||e.metaKey)?!0:!1;if(o){if(l._currentSelectionMode===IntegralUISelectionMode.MultiExtended)o=!l._isRowInSelectionList(t)||!n||this._isShiftKeyPressed(e);if(o)if(l._currentSelectionMode===IntegralUISelectionMode.One)l._clearPrevSelection();else if(e&&e.shiftKey)l._clearPrevSelection();else if(!n&&l._currentSelectionMode!==IntegralUISelectionMode.MultiSimple&&(1===l._currentSelectedRows.length||!l._isRowInSelectionList(t)))l._clearPrevSelection();l._currentSelectedRow=t;if(e&&e.shiftKey&&l._currentSelectionMode!==IntegralUISelectionMode.One){if(!l._shiftFirstSelectedRow)l._shiftFirstSelectedRow=r;let e=l._getRowCurrentIndex(l._shiftFirstSelectedRow),i=l._getRowCurrentIndex(t);if(e>i){let t=e;e=i;i=t}if(l._commonService.isIndexInRange(e,l._currentRowList)&&l._commonService.isIndexInRange(i,l._currentRowList))for(let t=e;t<=i;t++){let e=l._currentRowList[t].data;if(!1!==e[l._rowFields.canSelect]){e[l._rowFields.selected]=!0;l._currentSelectedRows.push(e)}}}else if(n||l.selectionMode===IntegralUISelectionMode.MultiSimple){let e=null===t[l._rowFields.selected]||"undefined"===t[l._rowFields.selected]?!1:t[l._rowFields.selected];t[l._rowFields.selected]=!e;if(!t[l._rowFields.selected])l._currentSelectedRows=l._currentSelectedRows.filter(function(e){return e!==t});else if(!l._isRowInSelectionList(t))l._currentSelectedRows.push(t);l._shiftFirstSelectedRow=null}else{t[l._rowFields.selected]=!0;if(!l._isRowInSelectionList(t))l._currentSelectedRows.push(t);l._shiftFirstSelectedRow=null}l._callAfterSelectEvent(t);l.refresh()}else if(n||l._currentSelectionMode===IntegralUISelectionMode.MultiSimple){let e=null===t[l._rowFields.selected]||"undefined"===t[l._rowFields.selected]?!1:t[l._rowFields.selected];if(i&&"undefined"!==i)e=i;t[l._rowFields.selected]=!e;if(!t[l._rowFields.selected])l._currentSelectedRows=l._currentSelectedRows.filter(function(e){return e!==t});else if(!l._isRowInSelectionList(t))l._currentSelectedRows.push(t);l._shiftFirstSelectedRow=null;l._callAfterSelectEvent(t);l.refresh()}else if(!n&&!(l._currentSelectionMode&IntegralUISelectionMode.MultiSimple)&&(1===l._currentSelectedRows.length||!l._isRowInSelectionList(t))){l._shiftFirstSelectedRow=null;l._clearPrevSelection(t);l.refresh();if(s)l._invokeEvent("selectionChanged",{obj:this._currentSelectedRow})}}}this._updateSelectContentPos()}}selectRows(e){if(e&&Array.isArray(e)){this._currentSelectedRows.map(e=>e[this._rowFields.selected]=!1);this._currentSelectedRows.length=0;for(let t=0;t0){this._currentSelectedRow=e[e.length-1];this._callAfterSelectEvent(this._currentSelectedRow)}else this._currentSelectedRow=null;this.updateLayout()}}_updateRowSelection(e,t){let i=e&&(e.shiftKey||e.ctrlKey||e.metaKey)?!0:!1;if(this._currentSelectionMode===IntegralUISelectionMode.MultiExtended&&!1!==t[this._rowFields.canSelect]&&this._currentSelectedRows.length>0&&!e.shiftKey&&!i&&1===e.which){let e=this._currentSelectedRows.length;this._clearPrevSelection();this._currentSelectedRow=t;t[this._rowFields.selected]=!0;this._currentSelectedRows.push(t);if(e>1)this._callAfterSelectEvent(t);this.refresh()}}_rowMouseDown(e,t){if(this._isEnabled){this._isRowClicked=!0;this._processRowSelection(e,t.data);if(this._prevClickedObj)this._prevClickedObj.isClicked=!1;t.isClicked=!0;t.clickPos=this._commonService.getClientPos(e,this._elemRef);t.clickPos.x-=this._leftBlockSize.width;this._prevClickedObj=t;this._updateSelectContentPos()}e.stopPropagation()}_rowMouseUp(e,t){if(this._isEnabled&&this._isRowClicked){this._updateRowSelection(e,t.data);this._updateSelectContentPos()}this._isRowClicked=!1}sort(e,t,i){this._sortColumn=e;this._sortComparer=i;this._currentSorting=t;this.updateLayout();this._invokeEvent("change",{type:"sorting"})}_getCellIndexInCollection(e,t,i){let l=-1;if(e)for(let s=0;s=0?i:t._expandColIndex,s=this._getSideName(t._sortColumn?t._sortColumn[t._columnFields.fixed]:void 0),r=t._flatCompleteColumnList[s];if(l=0){if(void 0===(r=e[t._rowFields.cells][s][t._cellFields.value]))r=e[t._rowFields.cells][s][t._cellFields.text];if(t._commonService.isObject(r))r=r.value?r.value:r.text}}if(s[t._rowFields.cells]){let e=t._getCellIndexInCollection(s[t._rowFields.cells],l,i);if(e>=0){if(void 0===(o=s[t._rowFields.cells][e][t._cellFields.value]))o=s[t._rowFields.cells][e][t._cellFields.text];if(t._commonService.isObject(o))o=o.value?o.value:o.text}}r=void 0!==r?r:null;o=void 0!==o?o:null;switch(t._currentSorting){case IntegralUISortOrder.Ascending:if(ro)return 1;break;case IntegralUISortOrder.Descending:if(r>o)return-1;else if(r0)e.width=this._ctrlSize.width+"px";if(this._ctrlSize.height>0)e.height=this._ctrlSize.height+"px";return e}_updateColumnStyle(e){if(e){e.style={header:{},filter:{},footer:{},expandBox:{},sorting:{}};e.inlineStyle=this._getColumnInlineStyle(e.data[this._columnFields.style]);e.style.header[this._columnHeaderClassName]=!0;e.style.header[this._defaultStyle.column.header.normal]=!0;if(!this._isScrollActive)if(e.data===this._currentSelectedColumn)e.style.header[this._defaultStyle.column.header.selected]=!0;else if(e.data===this._hoverColumn)e.style.header[this._defaultStyle.column.header.hovered]=!0;e.style.filter[this._columnFilterClassName]=!0;e.style.filter[this._defaultStyle.column.filter.normal]=!0;e.style.footer[this._columnFooterClassName]=!0;e.style.footer[this._defaultStyle.column.footer.normal]=!0;if(!this._isScrollActive)if(e.data===this._currentSelectedColumn){e.style.filter[this._defaultStyle.column.filter.selected]=!0;e.style.footer[this._defaultStyle.column.footer.selected]=!0}else if(e.data===this._hoverColumn){e.style.filter[this._defaultStyle.column.filter.hovered]=!0;e.style.footer[this._defaultStyle.column.footer.hovered]=!0}if("left"!==e.data[this._columnFields.fixed]&&!e.data[this._columnFields.isEnd]&&this._defaultStyle.column.expandBox){e.style.expandBox[this._defaultStyle.column.expandBox.general]=!0;if(this._isColumnExpanded(e.data))e.style.expandBox[this._defaultStyle.column.expandBox.collapsed]=!0;else e.style.expandBox[this._defaultStyle.column.expandBox.expanded]=!0}switch(this._currentGridLines){case IntegralUIGridLines.None:e.style.header[this._defaultStyle.gridLines.none]=!0;e.style.filter[this._defaultStyle.gridLines.none]=!0;e.style.footer[this._defaultStyle.gridLines.none]=!0;break;case IntegralUIGridLines.Horizontal:e.style.header[this._defaultStyle.gridLines.horizontal]=!0;e.style.filter[this._defaultStyle.gridLines.horizontal]=!0;e.style.footer[this._defaultStyle.gridLines.horizontal]=!0;break;case IntegralUIGridLines.Vertical:e.style.header[this._defaultStyle.gridLines.vertical]=!0;e.style.filter[this._defaultStyle.gridLines.vertical]=!0;e.style.footer[this._defaultStyle.gridLines.vertical]=!0;break;default:e.style.header[this._defaultStyle.gridLines.both]=!0;e.style.filter[this._defaultStyle.gridLines.both]=!0;e.style.footer[this._defaultStyle.gridLines.both]=!0}if(this._isSortingAllowed()&&this._isSortingColumn(e.data))switch(this._currentSorting){case IntegralUISortOrder.Ascending:e.style.sorting[this._defaultStyle.column.sorting.normal.ascending]=!0;e.style.sorting[this._defaultStyle.column.sorting.selected.ascending]=!0;break;case IntegralUISortOrder.Descending:e.style.sorting[this._defaultStyle.column.sorting.normal.descending]=!0;e.style.sorting[this._defaultStyle.column.sorting.selected.descending]=!0;break;default:this._defaultFunc()}}}_updateRowStyle(e){if(e&&!e.isEmpty){e.style={cell:{},expandBox:{},row:{}};e.inlineStyle=e.data[this._rowFields.style];e.style.row[this._rowClassName]=!0;e.style.row[this._defaultStyle.row.general.normal]=!0;e.style.cell[this._cellClassName]=!0;e.style.cell[this._defaultStyle.row.cell.normal]=!0;if(!this.isRowEnabled(e.data)){e.style.row[this._defaultStyle.row.general.disabled]=!0;e.style.cell[this._defaultStyle.row.cell.disabled]=!0}else if(this.isRowSelected(e.data)){e.style.row[this._defaultStyle.row.general.selected]=!0;e.style.cell[this._defaultStyle.row.cell.selected]=!0}else if(this.isRowHovered(e.data)){e.style.row[this._defaultStyle.row.general.hovered]=!0;e.style.cell[this._defaultStyle.row.cell.hovered]=!0}switch(this._currentGridLines){case IntegralUIGridLines.None:e.style.cell[this._defaultStyle.gridLines.none]=!0;break;case IntegralUIGridLines.Horizontal:e.style.cell[this._defaultStyle.gridLines.horizontal]=!0;break;case IntegralUIGridLines.Vertical:e.style.cell[this._defaultStyle.gridLines.vertical]=!0;break;default:e.style.cell[this._defaultStyle.gridLines.both]=!0}if(this._isThereChildRows||e.data[this._rowFields.hasChildren])e.style.expandBox[this._defaultStyle.row.expandBox.general]=!0;if(this._rowHasChildren(e.data)||this._isThereVisibleChildren(e.data))if(this._isRowLoading(e.data))e.style.expandBox[this._defaultStyle.row.expandBox.load]=!0;else if(!1!==e.data[this._rowFields.expanded])e.style.expandBox[this._defaultStyle.row.expandBox.collapsed]=!0;else e.style.expandBox[this._defaultStyle.row.expandBox.expanded]=!0;e.cells.forEach(e=>{e.style={content:{[this._cellClassName+"-content"]:!0}};if(this._isKeyboardFocusAllowed&&this._currentFocusCell&&e.data===this._currentFocusCell.data)e.style.content[this._cellClassName+"-content-focused"]=!0})}}_updateRowStyleByIndex(e){for(let t=0;t<3;t++){let i="";switch(t){case 1:i="left";break;case 2:i="right";break;default:i="normal"}if(this._commonService.isIndexInRange(e,this._scrollRowList[i]))this._updateRowStyle(this._scrollRowList[i][e])}}_getContentTemplate(e,t){let i=null;switch(t){case"hover":i=this.rowHoverTemplate;break;case"select":i=this.rowSelectTemplate;break;default:i=null}if(i){let t=i(e);return new TemplateResult(t.strings,t.values,"html",defaultTemplateProcessor)}return html``}_getRowEditorTemplate(e){if(e.isEditAllowed&&!e.isEmpty){let t="iui-grid-editing";if(e.isEditorActive)t+=" iui-grid-editing-active";return html``}return html``}_columnTouchStart(e,t){if(this._isEnabled)this._processColumnSelection(e,t.data)}_rowTouchStart(e,t){if(this._isEnabled)this._processRowSelection(e,t.data)}_ctrlTouchStart(e){e.preventDefault();if(this._isEnabled){let t=this._commonService.getTouchData(e);if(t&&t.length>0)this._touchStartPos={x:t[0].pageX,y:t[0].pageY}}}_ctrlTouchEnd(e){let t=this;if(t._isEnabled){let i=t._commonService.getTouchData(e);if(i&&i.length>0)t._touchEndPos={x:i[0].pageX,y:i[0].pageY};let l={dx:t._touchEndPos.x-t._touchStartPos.x,dy:t._touchEndPos.y-t._touchStartPos.y},s=!1,r=!1,o=t._touchStartPos,n={x:t._currentScrollPos.x,y:t._currentScrollPos.y},a=setInterval(function(){let e=t._currentScrollPos;if(l.dx<-20){o.x-=30;if(o.x>t._touchEndPos.x)e.x+=30;else{e.x=n.x-l.dx;s=!0}}else if(l.dx>20){o.x+=30;if(o.xt._touchEndPos.y)e.y+=25;else{e.y=n.y-l.dy;r=!0}}else if(l.dy>20){o.y+=25;if(o.y{e()})}refresh(){this._updateControlClass();for(let e=0;e<3;e++){let t="";switch(e){case 1:t="left";break;case 2:t="right";break;default:t="normal"}this._scrollColumnList[t].forEach(e=>e.columns.forEach(e=>this._updateColumnStyle(e)));this._scrollFooterList[t].forEach(e=>this._updateColumnStyle(e));this._scrollRowList[t].forEach(e=>this._updateRowStyle(e))}this.update()}resolve(e){this._isProcessAllowed=!0;if(this._commonService.isString(e))switch(e.toLowerCase()){case"dragdrop":this._drop(this._dragDropService.getData());break;default:this._defaultFunc()}}resumeLayout(){this._isUpdateAllowed=!0;this.updateLayout()}suspendLayout(){this._isUpdateAllowed=!1}_updateCurrentLayout(e,t){let i=this;i._resetLayoutTimer();if(i._currentPaging.enabled){i._updatePageList();i._updatePageNumber()}i._updateCurrentRowList(!0);i._updateRange(t);if(e)i.updateFullList();i._updateScrollSize();i._updateAllColumnWidth();i._updateScrollSize();i.update();i._updateTimer=setTimeout(function(){i._updateBlockSize();i._updateSelectContentPos();i.update();clearTimeout(i._updateTimer)},1)}async updateLayout(e){this._ut();if(!this._tCmp)this._at();this._updateReferences();await this._processUpdateLayout(e);this.update()}}export default IntegralUIBaseGrid; \ No newline at end of file diff --git a/components/integralui.base.js b/components/integralui.base.js index f0317eb..af46b7c 100644 --- a/components/integralui.base.js +++ b/components/integralui.base.js @@ -1,6 +1,6 @@ /* filename: integralui.base.js - version : 21.1.0 + version : 21.4.0 Copyright © 2016-2021 Lidor Systems. All rights reserved. This file is part of the "IntegralUI Web" Library. @@ -12,4 +12,4 @@ This SOFTWARE is provided "AS IS", WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for the specific language governing rights and limitations under the License. Any infringement will be prosecuted under applicable laws. */ -import{L as LitElement,c as css,h as html}from"../external/lit-element.js";import{s as styleMap}from"../external/style-map.js";import IntegralUICommonService from"../services/integralui.common.service.js";import{IntegralUIObjectState,IntegralUITheme}from"./integralui.enums.js";class IntegralUIBase extends LitElement{constructor(){super();this._init();this._initStyle()}_init(){this._commonService=new IntegralUICommonService();this._isAnimationAllowed=!1;this._ctrlData=null;this._ctrlName="";this._ctrlState=IntegralUIObjectState.Normal;this._isEnabled=!0;this._isReadOnly=!1;this._isUpdateAllowed=!0;this._options={currentStyle:null};this._clientRect={width:0,height:0};this._ctrlSize={width:0,height:0};this._prevClientRect={width:0,height:0};this._elemRef=null;this._currentResourcePath="../icons";this._currentCustomStyle={};this._currentTheme=IntegralUITheme.None;this._currentThemeSettings=css``;this._defaultStyle={};this._ctrlClass={};this._generalClassName="iui-control";this._tCmp=null}_initStyle(){this._defaultStyle={general:{disabled:this._generalClassName+"-disabled",focused:this._generalClassName+"-focused",normal:this._generalClassName,hovered:this._generalClassName+"-hovered",selected:this._generalClassName+"-selected"}};this.refresh()}attributeChangedCallback(e,t,s){super.attributeChangedCallback(e,t,s)}static get properties(){return{allowAnimation:{type:Boolean,attribute:"allow-animation",relect:!0},allowUpdate:{type:Boolean,attribute:"allow-update",relect:!0},controlStyle:{type:Object,attribute:"control-style"},customStyle:{type:Object,attribute:"custom-style"},data:{type:Object},enabled:{type:Boolean,relect:!0},name:{type:String,relect:!0},readOnly:{type:Boolean,attribute:"read-only",relect:!0},resourcePath:{type:String,attribute:"resource-path",relect:!0},size:{type:Object},state:{type:Number,relect:!0},theme:{converter:{fromAttribute:e=>{switch((e=e.replace(/"|'/,"").replace(/"|'/,"")).toLowerCase()){case"office":return IntegralUITheme.Office;case"midnight":return IntegralUITheme.Midnight;default:return IntegralUITheme.None}},toAttribute:e=>{switch(e){case IntegralUITheme.Office:return"Office";case IntegralUITheme.Midnight:return"Midnight";default:return"None"}}},reflect:!0}}}get allowAnimation(){return this._isAnimationAllowed}set allowAnimation(e){if(this._isAnimationAllowed!==e){const t=this._isAnimationAllowed;this._isAnimationAllowed=e;this.requestUpdate("allowAnimation",t)}}get allowUpdate(){return this._isUpdateAllowed}set allowUpdate(e){if(this._isUpdateAllowed!==e){const t=this._isUpdateAllowed;this._isUpdateAllowed=e;this.requestUpdate("allowUpdate",t)}}get controlStyle(){return this._ctrlStyle}set controlStyle(e){if(this._ctrlStyle!==e){const t=this._ctrlStyle;this._ctrlStyle=e;this.requestUpdate("controlStyle",t);this.refresh()}}get customStyle(){return this._currentCustomStyle}set customStyle(e){if(this._currentCustomStyle!==e){const t=this._currentCustomStyle;this._currentCustomStyle=e;this.requestUpdate("customStyle",t);this.refresh()}}get data(){return this._ctrlData}set data(e){if(this._ctrlData!==e){const t=this._ctrlData;this._ctrlData=e;this.requestUpdate("data",t)}}get enabled(){return this._isEnabled}set enabled(e){if(void 0!==e&&this._isEnabled!==e){const t=this._isEnabled;this._isEnabled=e;this._invokeEvent("enabledChanged",{enabled:e});this.requestUpdate("enabled",t);if(e)this.state&=~IntegralUIObjectState.Disabled;else this.state|=IntegralUIObjectState.Disabled}}get name(){return this._ctrlName}set name(e){if(this._ctrlName!==e){const t=this._ctrlName;this._ctrlName=e;this.requestUpdate("name",t)}}get readOnly(){return this._isReadOnly}set readOnly(e){if(this._isReadOnly!==e){const t=this._isReadOnly;this._isReadOnly=e;this.requestUpdate("readOnly",t)}}get resourcePath(){return this._currentResourcePath}set resourcePath(e){if(this._currentResourcePath!==e){const t=this._currentResourcePath;this._currentResourcePath=e;this._updateControlStyleSettings(e);this.requestUpdate("resourcePath",t)}}get size(){return this._ctrlSize}set size(e){if(e){let t=!1;const s=this._ctrlSize;if(void 0!==e.width&&this._ctrlSize.width!==e.width){this._ctrlSize.width=e.width;t=!0}if(void 0!==e.height&&this._ctrlSize.height!==e.height){this._ctrlSize.height=e.height;t=!0}if(t){this._invokeEvent("sizeChanged",{size:this._ctrlSize});this.requestUpdate("size",s);this.updateLayout()}}}get state(){return this._ctrlState}set state(e){if(this._ctrlState!==e){const t=this._ctrlState;this._ctrlState=e;this._updateControlClass();this._processStateChanged();this.requestUpdate("state",t);this._invokeEvent("stateChanged",{state:e});this.update()}}get theme(){return this._currentTheme}set theme(e){if(this._currentTheme!==e){const t=this._currentTheme;this._currentTheme=e;this._updateThemeSettings(e);this.requestUpdate("theme",t);this.refresh()}}_invokeEvent(e,t,s,i){let l=new CustomEvent(e,{detail:t,bubbles:void 0!==s?s:!1,composed:void 0!==i?i:!1});if(this._isUpdateAllowed)this.dispatchEvent(l);return t}_defaultFunc(){}_processStateChanged(){}setFocus(){if(this._elemRef)this._elemRef.focus()}_updateThemeSettings(){this._currentThemeSettings=css``}refresh(){this._updateStyle(this.controlStyle);this._updateControlClass();this.update();this._updateReferences()}_updateControlClass(){this._ctrlClass={};this._ctrlClass[this._generalClassName]=!0;if(this._options.currentStyle&&this._options.currentStyle.general){this._ctrlClass[this._options.currentStyle.general.normal]=!0;if(this.state&IntegralUIObjectState.Disabled)this._ctrlClass[this._options.currentStyle.general.disabled]=!0;else if(this.state&IntegralUIObjectState.Focused)this._ctrlClass[this._options.currentStyle.general.focused]=!0;else if(this.state&IntegralUIObjectState.Selected)this._ctrlClass[this._options.currentStyle.general.selected]=!0;else if(this.state&IntegralUIObjectState.Hovered)this._ctrlClass[this._options.currentStyle.general.hovered]=!0;if(this.allowAnimation)if(this.state&IntegralUIObjectState.Hovered)this._ctrlClass[this._defaultStyle.general.normal+"-enter"]=!0;else this._ctrlClass[this._defaultStyle.general.normal+"-leave"]=!0}}_getControlClass(){return this._ctrlClass}_getControlStyle(){let e={};if(this._ctrlSize.width>0)e.width=this._ctrlSize.width+"px";if(this._ctrlSize.height>0)e.height=this._ctrlSize.height+"px";return e}_getDefaultStyle(){return{general:this._getDefaultGeneralStyle()}}_getDefaultGeneralStyle(){return this._defaultStyle&&this._defaultStyle.general?{disabled:this._defaultStyle.general.disabled,focused:this._defaultStyle.general.focused,hovered:this._defaultStyle.general.hovered,normal:this._defaultStyle.general.normal,selected:this._defaultStyle.general.selected}:{}}_getGeneralStyle(e){if(this._commonService)if(this._commonService.isString(e))return e;else if(e)return{disabled:this._commonService.isFieldAvailable(e.disabled,this.generalClassName+"-disabled"),focused:this._commonService.isFieldAvailable(e.focused,this.generalClassName+"-focused"),hovered:this._commonService.isFieldAvailable(e.hovered,this.generalClassName+"-hovered"),normal:this._commonService.isFieldAvailable(e.normal,this.generalClassName),selected:this._commonService.isFieldAvailable(e.selected,this.generalClassName+"-selected")};return this._getDefaultGeneralStyle()}_updateControlStyleSettings(e){}_updateStyle(e){if(e)this._options.currentStyle={general:this._getGeneralStyle(e.general)};else this._options.currentStyle=this._getDefaultStyle()}_at(){if(this._elemRef){this._tCmp=document.createElement("iui-tc",{is:IntegralUITComponent});if(this._tCmp){this._elemRef.appendChild(this._tCmp);this._ut()}}}_rt(){if(this._tCmp)this._tCmp.parentNode.removeChild(this._tCmp);this._tCmp=null}_ut(){this._tCmp=this._elemRef?this._elemRef.querySelector("iui-tc"):null}async shouldUpdate(e){e.forEach((e,t)=>{});return!0}async updateLayout(){this.update()}_updateReferences(){}}class IntegralUITComponent extends LitElement{constructor(){super();this._display="";this._data="";this._timer=null;this._cycle=6e4;this._default="none"}disconnectedCallback(){if(this._timer)clearInterval(this._timer)}_crpar(){return["si","Tri","Ver","on","al "]}_crtr(e){return e[1]+e[4]+e[2]+e[0]+e[3]}firstUpdated(e){let t=this;t._data=t._crtr(t._crpar());t._display=t._default;t._timer=setInterval(function(){t._display="block";let e=setTimeout(function(){t._display=t._default;t.update();clearTimeout(e)},3e3);t.update()},t._cycle);t.update()}render(){return html`
${this._data}
`}}window.customElements.define("iui-tc",IntegralUITComponent);export default IntegralUIBase;export{IntegralUITComponent}; \ No newline at end of file +import{L as LitElement,c as css,h as html}from"../external/lit-element.js";import{s as styleMap}from"../external/style-map.js";import IntegralUICommonService from"../services/integralui.common.service.js";import{IntegralUIObjectState,IntegralUITheme}from"./integralui.enums.js";class IntegralUIBase extends LitElement{constructor(){super();this._init();this._initStyle()}_init(){this._commonService=new IntegralUICommonService();this._isAnimationAllowed=!1;this._ctrlData=null;this._ctrlName="";this._ctrlState=IntegralUIObjectState.Normal;this._isEnabled=!0;this._isReadOnly=!1;this._options={currentStyle:null};this._clientRect={width:0,height:0};this._ctrlSize={width:0,height:0};this._prevClientRect={width:0,height:0};this._elemRef=null;this._currentResourcePath="../icons";this._currentCustomStyle={};this._currentTheme=IntegralUITheme.None;this._currentThemeSettings=css``;this._defaultStyle={};this._ctrlClass={};this._generalClassName="iui-control";this._isProcessAllowed=!0;this._isUpdateAllowed=!0;this._tCmp=null}_initStyle(){this._defaultStyle={general:{disabled:this._generalClassName+"-disabled",focused:this._generalClassName+"-focused",normal:this._generalClassName,hovered:this._generalClassName+"-hovered",selected:this._generalClassName+"-selected"}};this.refresh()}attributeChangedCallback(e,t,s){super.attributeChangedCallback(e,t,s)}static get properties(){return{allowAnimation:{type:Boolean,attribute:"allow-animation",relect:!0},allowUpdate:{type:Boolean,attribute:"allow-update",relect:!0},customStyle:{type:Object,attribute:"custom-style"},data:{type:Object},enabled:{type:Boolean,relect:!0},name:{type:String,relect:!0},readOnly:{type:Boolean,attribute:"read-only",relect:!0},resourcePath:{type:String,attribute:"resource-path",relect:!0},size:{type:Object},state:{type:Number,relect:!0},theme:{converter:{fromAttribute:e=>{switch((e=e.replace(/"|'/,"").replace(/"|'/,"")).toLowerCase()){case"office":return IntegralUITheme.Office;case"midnight":return IntegralUITheme.Midnight;default:return IntegralUITheme.None}},toAttribute:e=>{switch(e){case IntegralUITheme.Office:return"Office";case IntegralUITheme.Midnight:return"Midnight";default:return"None"}}},reflect:!0}}}get allowAnimation(){return this._isAnimationAllowed}set allowAnimation(e){if(this._isAnimationAllowed!==e){const t=this._isAnimationAllowed;this._isAnimationAllowed=e;this.requestUpdate("allowAnimation",t)}}get allowUpdate(){return this._isUpdateAllowed}set allowUpdate(e){if(this._isUpdateAllowed!==e){const t=this._isUpdateAllowed;this._isUpdateAllowed=e;this.requestUpdate("allowUpdate",t)}}get customStyle(){return this._currentCustomStyle}set customStyle(e){if(this._currentCustomStyle!==e){const t=this._currentCustomStyle;this._currentCustomStyle=e;this.requestUpdate("customStyle",t);this.refresh()}}get data(){return this._ctrlData}set data(e){if(this._ctrlData!==e){const t=this._ctrlData;this._ctrlData=e;this.requestUpdate("data",t)}}get enabled(){return this._isEnabled}set enabled(e){if(void 0!==e&&this._isEnabled!==e){const t=this._isEnabled;this._isEnabled=e;this._invokeEvent("enabledChanged",{enabled:e});this.requestUpdate("enabled",t);if(e)this.state&=~IntegralUIObjectState.Disabled;else this.state|=IntegralUIObjectState.Disabled}}get name(){return this._ctrlName}set name(e){if(this._ctrlName!==e){const t=this._ctrlName;this._ctrlName=e;this.requestUpdate("name",t)}}get readOnly(){return this._isReadOnly}set readOnly(e){if(this._isReadOnly!==e){const t=this._isReadOnly;this._isReadOnly=e;this.requestUpdate("readOnly",t)}}get resourcePath(){return this._currentResourcePath}set resourcePath(e){if(this._currentResourcePath!==e){const t=this._currentResourcePath;this._currentResourcePath=e;this._updateControlStyleSettings(e);this.requestUpdate("resourcePath",t)}}get size(){return this._ctrlSize}set size(e){if(e){let t=!1;const s=this._ctrlSize;if(void 0!==e.width&&this._ctrlSize.width!==e.width){this._ctrlSize.width=Math.max(e.width,0);t=!0}if(void 0!==e.height&&this._ctrlSize.height!==e.height){this._ctrlSize.height=Math.max(e.height,0);t=!0}if(t){this._invokeEvent("sizeChanged",{size:this._ctrlSize});this.requestUpdate("size",s);this.updateLayout()}}}get state(){return this._ctrlState}set state(e){if(this._ctrlState!==e){const t=this._ctrlState;this._ctrlState=e;this._updateControlClass();this._processStateChanged();this.requestUpdate("state",t);this._invokeEvent("stateChanged",{state:e});this.update()}}get theme(){return this._currentTheme}set theme(e){if(this._currentTheme!==e){const t=this._currentTheme;this._currentTheme=e;this._updateThemeSettings(e);this.requestUpdate("theme",t);this.refresh()}}_invokeEvent(e,t,s,i){let l=new CustomEvent(e,{detail:t,bubbles:void 0!==s?s:!1,composed:void 0!==i?i:!1});this.dispatchEvent(l);return t}_defaultFunc(){}getElemRef(){return this._elemRef}getSize(e){return this._elemRef?e?{width:this._elemRef.clientWidth,height:this._elemRef.clientHeight}:{width:this._elemRef.offsetWidth,height:this._elemRef.offsetHeight}:{width:0,height:0}}_processStateChanged(){}setFocus(){if(this._elemRef)this._elemRef.focus()}_updateThemeSettings(){this._currentThemeSettings=css``}refresh(){this._updateStyle(this.controlStyle);this._updateControlClass();this.update();this._updateReferences()}setStyle(e){if(this._elemRef)Object.assign(this._elemRef.style,e)}_updateControlClass(){this._ctrlClass={};this._ctrlClass[this._generalClassName]=!0;if(this._options.currentStyle&&this._options.currentStyle.general){this._ctrlClass[this._options.currentStyle.general.normal]=!0;if(this.state&IntegralUIObjectState.Disabled)this._ctrlClass[this._options.currentStyle.general.disabled]=!0;else if(this.state&IntegralUIObjectState.Focused)this._ctrlClass[this._options.currentStyle.general.focused]=!0;else if(this.state&IntegralUIObjectState.Selected)this._ctrlClass[this._options.currentStyle.general.selected]=!0;else if(this.state&IntegralUIObjectState.Hovered)this._ctrlClass[this._options.currentStyle.general.hovered]=!0;if(this.allowAnimation)if(this.state&IntegralUIObjectState.Hovered)this._ctrlClass[this._defaultStyle.general.normal+"-enter"]=!0;else this._ctrlClass[this._defaultStyle.general.normal+"-leave"]=!0}}_getControlClass(){return this._ctrlClass}_getControlStyle(){let e={};if(this._ctrlSize.width>0)e.width=this._ctrlSize.width+"px";if(this._ctrlSize.height>0)e.height=this._ctrlSize.height+"px";return e}_getDefaultStyle(){return{general:this._getDefaultGeneralStyle()}}_getDefaultGeneralStyle(){return this._defaultStyle&&this._defaultStyle.general?{disabled:this._defaultStyle.general.disabled,focused:this._defaultStyle.general.focused,hovered:this._defaultStyle.general.hovered,normal:this._defaultStyle.general.normal,selected:this._defaultStyle.general.selected}:{}}_getGeneralStyle(e){if(this._commonService)if(this._commonService.isString(e))return e;else if(e)return{disabled:this._commonService.isFieldAvailable(e.disabled,this.generalClassName+"-disabled"),focused:this._commonService.isFieldAvailable(e.focused,this.generalClassName+"-focused"),hovered:this._commonService.isFieldAvailable(e.hovered,this.generalClassName+"-hovered"),normal:this._commonService.isFieldAvailable(e.normal,this.generalClassName),selected:this._commonService.isFieldAvailable(e.selected,this.generalClassName+"-selected")};return this._getDefaultGeneralStyle()}_updateControlStyleSettings(e){}_updateStyle(e){if(e)this._options.currentStyle={general:this._getGeneralStyle(e.general)};else this._options.currentStyle=this._getDefaultStyle()}_at(){if(this._elemRef){this._tCmp=document.createElement("iui-tc",{is:IntegralUITComponent});if(this._tCmp){this._elemRef.appendChild(this._tCmp);this._ut()}}}_rt(){if(this._tCmp)this._tCmp.parentNode.removeChild(this._tCmp);this._tCmp=null}_ut(){this._tCmp=this._elemRef?this._elemRef.querySelector("iui-tc"):null}resolve(e){this._isProcessAllowed=!0}async shouldUpdate(e){e.forEach((e,t)=>{});return!0}async updateLayout(){this.update()}wait(){this._isProcessAllowed=!1}_updateReferences(){}}class IntegralUITComponent extends LitElement{constructor(){super();this._display="";this._data="";this._timer=null;this._cycle=6e4;this._default="none"}disconnectedCallback(){if(this._timer)clearInterval(this._timer)}_crpar(){return["si","Tri","Ver","on","al "]}_crtr(e){return e[1]+e[4]+e[2]+e[0]+e[3]}firstUpdated(e){let t=this;t._data=t._crtr(t._crpar());t._display=t._default;t._timer=setInterval(function(){t._display="block";let e=setTimeout(function(){t._display=t._default;t.update();clearTimeout(e)},3e3);t.update()},t._cycle);t.update()}render(){return html`
${this._data}
`}}window.customElements.define("iui-tc",IntegralUITComponent);export default IntegralUIBase;export{IntegralUITComponent}; \ No newline at end of file diff --git a/components/integralui.base.value.js b/components/integralui.base.value.js index 1b4cba0..7e1108e 100644 --- a/components/integralui.base.value.js +++ b/components/integralui.base.value.js @@ -1,6 +1,6 @@ /* filename: integralui.base.value.js - version : 21.1.0 + version : 21.4.0 Copyright © 2016-2021 Lidor Systems. All rights reserved. This file is part of the "IntegralUI Web" Library. @@ -12,4 +12,4 @@ This SOFTWARE is provided "AS IS", WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for the specific language governing rights and limitations under the License. Any infringement will be prosecuted under applicable laws. */ -import IntegralUIObjectState from"./integralui.enums.js";import IntegralUIBase from"./integralui.base.js";class IntegralUIBaseValue extends IntegralUIBase{_init(){super._init();this._currentValue=0;this._contentClass={};this._generalClassName="iui-basevalue";this._contentClassName=this._generalClassName+"-content"}_initStyle(){this._defaultStyle={general:{disabled:this._generalClassName+"-disabled",focused:this._generalClassName+"-focused",normal:this._generalClassName,hovered:this._generalClassName+"-hovered",selected:this._generalClassName+"-selected"},content:{disabled:this._contentClassName+"-disabled",focused:this._contentClassName+"-focused",normal:this._contentClassName,hovered:this._contentClassName+"-hovered",selected:this._contentClassName+"-selected"}};this.refresh()}attributeChangedCallback(e,t,s){super.attributeChangedCallback(e,t,s)}static get properties(){return{value:{type:Number,reflect:!0}}}get value(){return this._currentValue}set value(e){if(this._currentValue!==e){const t=this._currentValue;this._currentValue=e;this._invokeEvent("valueChanged",{value:this._currentValue});this.requestUpdate("value",t);this.updateLayout()}}_preventDragStart(e){e.preventDefault();e.stopPropagation()}async updateLayout(){await this._processUpdateLayout();this.performUpdate()}_processUpdateLayout(){let e=this;return new Promise(t=>{let s=setTimeout(function(){e._clientRect={width:e._elemRef.clientWidth,height:e._elemRef.clientHeight};clearTimeout(s);t()},1)})}refresh(){this._updateStyle(this.controlStyle);this._updateControlClass();this._updateContentClass();this.performUpdate()}_getDefaultStyle(){return{general:this._getDefaultGeneralStyle(),content:this._getDefaultContentStyle()}}_getDefaultContentStyle(){return this._defaultStyle&&this._defaultStyle.content?{disabled:this._defaultStyle.content.disabled,focused:this._defaultStyle.content.focused,hovered:this._defaultStyle.content.hovered,normal:this._defaultStyle.content.normal,selected:this._defaultStyle.content.selected}:{}}_getContentClass(){return this._contentClass}_getContentStyle(e){if(this._commonService)if(this._commonService.isString(e))return e;else if(e)return{disabled:this._commonService.isFieldAvailable(e.disabled,this._contentClassName+"-disabled"),focused:this._commonService.isFieldAvailable(e.focused,this._contentClassName+"-focused"),hovered:this._commonService.isFieldAvailable(e.hovered,this._contentClassName+"-hovered"),normal:this._commonService.isFieldAvailable(e.normal,this._contentClassName),selected:this._commonService.isFieldAvailable(e.selected,this._contentClassName+"-selected")};return this._getDefaultContentStyle()}_updateContentClass(){this._contentClass={};this._contentClass[this._contentClassName]=!0;if(this._options.currentStyle&&this._options.currentStyle.content){this._contentClass[this._options.currentStyle.content.normal]=!0;if(this.state&IntegralUIObjectState.Disabled)this._contentClass[this._options.currentStyle.content.disabled]=!0;else if(this.state&IntegralUIObjectState.Focused)this._contentClass[this._options.currentStyle.content.focused]=!0;else if(this.state&IntegralUIObjectState.Selected)this._contentClass[this._options.currentStyle.content.selected]=!0;else if(this.state&IntegralUIObjectState.Hovered)this._contentClass[this._options.currentStyle.content.hovered]=!0}}_updateStyle(e){if(e)this._options.currentStyle={general:this._getGeneralStyle(e.general),content:this._getContentStyle(e.content)};else this._options.currentStyle=this._getDefaultStyle()}}export default IntegralUIBaseValue; \ No newline at end of file +import IntegralUIBase from"./integralui.base.js";import{IntegralUIObjectState}from"./integralui.enums.js";class IntegralUIBaseValue extends IntegralUIBase{_init(){super._init();this._currentValue=0;this._contentClass={};this._generalClassName="iui-basevalue";this._contentClassName=this._generalClassName+"-content"}_initStyle(){this._defaultStyle={general:{disabled:this._generalClassName+"-disabled",focused:this._generalClassName+"-focused",normal:this._generalClassName,hovered:this._generalClassName+"-hovered",selected:this._generalClassName+"-selected"},content:{disabled:this._contentClassName+"-disabled",focused:this._contentClassName+"-focused",normal:this._contentClassName,hovered:this._contentClassName+"-hovered",selected:this._contentClassName+"-selected"}};this.refresh()}attributeChangedCallback(e,t,s){super.attributeChangedCallback(e,t,s)}static get properties(){return{value:{type:Number,reflect:!0}}}get value(){return this._currentValue}set value(e){if(this._currentValue!==e){const t=this._currentValue;this._currentValue=e;this._invokeEvent("valueChanged",{value:this._currentValue});this.requestUpdate("value",t);this.updateLayout()}}_preventDragStart(e){e.preventDefault();e.stopPropagation()}async updateLayout(){await this._processUpdateLayout();this.performUpdate()}_processUpdateLayout(){let e=this;return new Promise(t=>{let s=setTimeout(function(){e._clientRect={width:e._elemRef.clientWidth,height:e._elemRef.clientHeight};clearTimeout(s);t()},1)})}refresh(){this._updateStyle(this.controlStyle);this._updateControlClass();this._updateContentClass();this.performUpdate()}_getDefaultStyle(){return{general:this._getDefaultGeneralStyle(),content:this._getDefaultContentStyle()}}_getDefaultContentStyle(){return this._defaultStyle&&this._defaultStyle.content?{disabled:this._defaultStyle.content.disabled,focused:this._defaultStyle.content.focused,hovered:this._defaultStyle.content.hovered,normal:this._defaultStyle.content.normal,selected:this._defaultStyle.content.selected}:{}}_getContentClass(){return this._contentClass}_getContentStyle(e){if(this._commonService)if(this._commonService.isString(e))return e;else if(e)return{disabled:this._commonService.isFieldAvailable(e.disabled,this._contentClassName+"-disabled"),focused:this._commonService.isFieldAvailable(e.focused,this._contentClassName+"-focused"),hovered:this._commonService.isFieldAvailable(e.hovered,this._contentClassName+"-hovered"),normal:this._commonService.isFieldAvailable(e.normal,this._contentClassName),selected:this._commonService.isFieldAvailable(e.selected,this._contentClassName+"-selected")};return this._getDefaultContentStyle()}_updateContentClass(){this._contentClass={};this._contentClass[this._contentClassName]=!0;if(this._options.currentStyle&&this._options.currentStyle.content){this._contentClass[this._options.currentStyle.content.normal]=!0;if(this.state&IntegralUIObjectState.Disabled)this._contentClass[this._options.currentStyle.content.disabled]=!0;else if(this.state&IntegralUIObjectState.Focused)this._contentClass[this._options.currentStyle.content.focused]=!0;else if(this.state&IntegralUIObjectState.Selected)this._contentClass[this._options.currentStyle.content.selected]=!0;else if(this.state&IntegralUIObjectState.Hovered)this._contentClass[this._options.currentStyle.content.hovered]=!0}}_updateStyle(e){if(e)this._options.currentStyle={general:this._getGeneralStyle(e.general),content:this._getContentStyle(e.content)};else this._options.currentStyle=this._getDefaultStyle()}}export default IntegralUIBaseValue; \ No newline at end of file diff --git a/components/integralui.button.js b/components/integralui.button.js index 6fc1a8c..599aec5 100644 --- a/components/integralui.button.js +++ b/components/integralui.button.js @@ -1,6 +1,6 @@ /* filename: integralui.button.js - version : 21.1.0 + version : 21.4.0 Copyright © 2016-2021 Lidor Systems. All rights reserved. This file is part of the "IntegralUI Web" Library. @@ -12,4 +12,4 @@ This SOFTWARE is provided "AS IS", WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for the specific language governing rights and limitations under the License. Any infringement will be prosecuted under applicable laws. */ -import{c as css,h as html}from"../external/lit-element.js";import{c as classMap}from"../external/class-map.js";import{s as styleMap}from"../external/style-map.js";import{IntegralUIObjectState,IntegralUITheme}from"./integralui.enums.js";import"./integralui.base.js";import IntegralUIBaseValue from"./integralui.base.value.js";import{iuiButtonDefaultStyle}from"../styles/integralui.button.style.js";import{iuiButtonOfficeStyle}from"../themes/office/integralui.button.office.js";import{iuiButtonMidnightStyle}from"../themes/midnight/integralui.button.midnight.js";class IntegralUIButton extends IntegralUIBaseValue{_init(){super._init();this._parentCtrl=null;this._pressedValue=!1;this._generalClassName="iui-button";this._contentClassName=this._generalClassName+"-content";this._currentControlStyleSettings=iuiButtonDefaultStyle;this._initStyle()}connectedCallback(){}disconnectedCallback(){}setParent(t){this._parentCtrl=t}attributeChangedCallback(t,e,s){super.attributeChangedCallback(t,e,s)}static get properties(){return{pressed:{type:Boolean,reflect:!0}}}get pressed(){return this._pressedValue}set pressed(t){if(this._pressedValue!==t){const e=this._pressedValue;this._pressedValue=t;if(this._pressedValue)this.state|=IntegralUIObjectState.Selected;else this.state&=~IntegralUIObjectState.Selected;this.refresh();this._invokeEvent("pressedChanged",{pressed:this._pressedValue});this.requestUpdate("pressed",e)}}_ctrlMouseDown(t){if(this._isEnabled&&this._parentCtrl&&1===t.which)this._parentCtrl.invokeCtrlMethod("PRESS",this)}_ctrlMouseEnter(t){if(this._isEnabled)this.state|=IntegralUIObjectState.Hovered}_ctrlMouseLeave(t){if(this._isEnabled)this.state&=~IntegralUIObjectState.Hovered}_updateThemeSettings(t){this._currentThemeSettings=css``;switch(t){case IntegralUITheme.Office:this._currentThemeSettings.cssText=this._commonService.replaceAll(iuiButtonOfficeStyle.cssText,"../icons",this._currentResourcePath);break;case IntegralUITheme.Midnight:this._currentThemeSettings.cssText=this._commonService.replaceAll(iuiButtonMidnightStyle.cssText,"../icons",this._currentResourcePath);break;default:this._currentThemeSettings.cssText=""}}_ctrlTouchStart(t){t.preventDefault();if(this._isEnabled&&this._parentCtrl)this._parentCtrl.invokeCtrlMethod("PRESS",this)}firstUpdated(t){this._elemRef=this.shadowRoot.querySelector("div[data-ctrl=button]");this.updateLayout()}render(){return html`
`}_updateControlStyleSettings(t){this._currentControlStyleSettings=css``;this._currentControlStyleSettings.cssText=this._commonService.replaceAll(iuiButtonDefaultStyle.cssText,"../icons",t)}}window.customElements.define("iui-button",IntegralUIButton);export default IntegralUIButton; \ No newline at end of file +import{c as css,h as html}from"../external/lit-element.js";import{c as classMap}from"../external/class-map.js";import{s as styleMap}from"../external/style-map.js";import IntegralUIBaseValue from"./integralui.base.value.js";import{IntegralUIObjectState,IntegralUITheme}from"./integralui.enums.js";import{iuiButtonDefaultStyle}from"../styles/integralui.button.style.js";import{iuiButtonOfficeStyle}from"../themes/office/integralui.button.office.js";import{iuiButtonMidnightStyle}from"../themes/midnight/integralui.button.midnight.js";class IntegralUIButton extends IntegralUIBaseValue{_init(){super._init();this._parentCtrl=null;this._pressedValue=!1;this._generalClassName="iui-button";this._contentClassName=this._generalClassName+"-content";this._currentControlStyleSettings=iuiButtonDefaultStyle;this._initStyle()}connectedCallback(){}disconnectedCallback(){}setParent(t){this._parentCtrl=t}attributeChangedCallback(t,e,s){super.attributeChangedCallback(t,e,s)}static get properties(){return{pressed:{type:Boolean,reflect:!0}}}get pressed(){return this._pressedValue}set pressed(t){if(this._pressedValue!==t){const e=this._pressedValue;this._pressedValue=t;if(this._pressedValue)this.state|=IntegralUIObjectState.Selected;else this.state&=~IntegralUIObjectState.Selected;this.refresh();this._invokeEvent("pressedChanged",{pressed:this._pressedValue});this.requestUpdate("pressed",e)}}_ctrlMouseDown(t){if(this._isEnabled&&this._parentCtrl&&1===t.which)this._parentCtrl.invokeCtrlMethod("PRESS",this)}_ctrlMouseEnter(t){if(this._isEnabled)this.state|=IntegralUIObjectState.Hovered}_ctrlMouseLeave(t){if(this._isEnabled)this.state&=~IntegralUIObjectState.Hovered}_updateThemeSettings(t){this._currentThemeSettings=css``;switch(t){case IntegralUITheme.Office:this._currentThemeSettings.cssText=this._commonService.replaceAll(iuiButtonOfficeStyle.cssText,"../icons",this._currentResourcePath);break;case IntegralUITheme.Midnight:this._currentThemeSettings.cssText=this._commonService.replaceAll(iuiButtonMidnightStyle.cssText,"../icons",this._currentResourcePath);break;default:this._currentThemeSettings.cssText=""}}_ctrlTouchStart(t){t.preventDefault();if(this._isEnabled&&this._parentCtrl)this._parentCtrl.invokeCtrlMethod("PRESS",this)}firstUpdated(t){this._elemRef=this.shadowRoot.querySelector("div[data-ctrl=button]");this.updateLayout()}render(){return html`
`}_updateControlStyleSettings(t){this._currentControlStyleSettings=css``;this._currentControlStyleSettings.cssText=this._commonService.replaceAll(iuiButtonDefaultStyle.cssText,"../icons",t)}}window.customElements.define("iui-button",IntegralUIButton);export default IntegralUIButton; \ No newline at end of file diff --git a/components/integralui.calendar.js b/components/integralui.calendar.js index 5910ab3..7789092 100644 --- a/components/integralui.calendar.js +++ b/components/integralui.calendar.js @@ -1,6 +1,6 @@ /* filename: integralui.calendar.js - version : 21.1.0 + version : 21.4.0 Copyright © 2016-2021 Lidor Systems. All rights reserved. This file is part of the "IntegralUI Web" Library. @@ -12,4 +12,4 @@ This SOFTWARE is provided "AS IS", WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for the specific language governing rights and limitations under the License. Any infringement will be prosecuted under applicable laws. */ -import{c as css,h as html}from"../external/lit-element.js";import{c as classMap}from"../external/class-map.js";import{s as styleMap}from"../external/style-map.js";import{IntegralUIWeekDays,IntegralUIObjectState,IntegralUITheme}from"./integralui.enums.js";import IntegralUIBase from"./integralui.base.js";import{iuiCalendarDefaultStyle}from"../styles/integralui.calendar.style.js";import{iuiCalendarOfficeStyle}from"../themes/office/integralui.calendar.office.js";import{iuiCalendarMidnightStyle}from"../themes/midnight/integralui.calendar.midnight.js";class IntegralUICalendar extends IntegralUIBase{_init(){super._init();this._animateCurrentPos=0;this._animateNextPos=0;this._animatePrevPos=0;this._animateCurrentOpacity=1;this._animateNextOpacity=0;this._animatePrevOpacity=0;this._decadeOpacity=0;this._monthOpacity=1;this._yearOpacity=0;this._isDecadeAnimated=!1;this._isMonthAnimated=!1;this._isYearAnimated=!1;this._currentDate=new Date();this._currentFirstDayOfWeek=IntegralUIWeekDays.Sunday;this._currentLocales="en-us";this._currentSelectedDate=new Date();this._currentTodayDate=new Date();this._listDayWeek=[];this._title="";this._listYears=[];this._nextListYears=[];this._prevListYears=[];this._listMonths=[];this._nextListMonths=[];this._prevListMonths=[];this._listDaysInMonth=[];this._nextListDaysInMonth=[];this._prevListDaysInMonth=[];this._hoverDate=null;this._prevHoverDate=null;this._buttonMargin={top:2,right:2,bottom:2,left:2};this._ctrlOpacity=1;this._contentSize={width:0,height:0};this._displayMode=0;this._headerSize={width:0,height:0};this._isTodayVisible=!0;this._prevDisplayMode=0;this._titleMargin={top:2,right:2,bottom:2,left:2};this._titleSize={width:0,height:0};this._updateTimer=null;this._currentControlStyleSettings=iuiCalendarDefaultStyle;this._generalClassName="iui-calendar";this._cellClassName=this._generalClassName+"-cell";this._isNavigationActive=!1;this._navTimer=null;for(let e=0;e<7;e++)this._listDayWeek.push({});let e=this._currentSelectedDate.getDate(),t=this._currentSelectedDate.getMonth(),a=this._currentSelectedDate.getFullYear();this._currentDate=new Date(a,t,e);this._initStyle();this.updateLayout()}_initStyle(){this._defaultStyle={general:{disabled:this._generalClassName+"-disabled",focused:this._generalClassName+"-focused",normal:this._generalClassName,hovered:this._generalClassName+"-hovered",selected:this._generalClassName+"-selected"},cell:{disabled:this._cellClassName+"-disabled",focused:this._cellClassName+"-focused",grayed:this._cellClassName+"-grayed",normal:this._cellClassName,hovered:this._cellClassName+"-hovered",selected:this._cellClassName+"-selected",today:this._cellClassName+"-today"}};this.refresh()}connectedCallback(){this._windowMouseUp=this._windowMouseUp.bind(this);window.addEventListener("mouseup",this._windowMouseUp)}disconnectedCallback(){window.removeEventListener("mouseup",this._windowMouseUp)}attributeChangedCallback(e,t,a){super.attributeChangedCallback(e,t,a)}static get properties(){return{firstDayOfWeek:{attribute:"first-dayofweek",converter:{fromAttribute:e=>{switch((e=e.replace(/"|'/,"").replace(/"|'/,"")).toLowerCase()){case"monday":return IntegralUIWeekDays.Monday;case"tuesday":return IntegralUIWeekDays.Tuesday;case"wednesday":return IntegralUIWeekDays.Wednesday;case"thursday":return IntegralUIWeekDays.Thursday;case"friday":return IntegralUIWeekDays.Friday;case"saturday":return IntegralUIWeekDays.Saturday;default:return IntegralUIWeekDays.Sunday}},toAttribute:e=>{switch(e){case IntegralUIWeekDays.Monday:return"Monday";case IntegralUIWeekDays.Tuesday:return"Tuesday";case IntegralUIWeekDays.Wednesday:return"Wednesday";case IntegralUIWeekDays.Thursday:return"Thursday";case IntegralUIWeekDays.Friday:return"Friday";case IntegralUIWeekDays.Saturday:return"Saturday";default:return"Sunday"}}},reflect:!0},locales:{type:String,reflect:!0},selectedDate:{type:Object,attribute:"selected-date"},showToday:{type:Boolean,attribute:"show-today",reflect:!0},todayDate:{type:Object,attribute:"today-date"}}}get firstDayOfWeek(){return this._currentFirstDayOfWeek}set firstDayOfWeek(e){if(this._currentFirstDayOfWeek!==e){const t=this._currentFirstDayOfWeek;this._currentFirstDayOfWeek=e;this.requestUpdate("firstDayOfWeek",t)}}get locales(){return this._currentLocales}set locales(e){if(this._currentLocales!==e){const t=this._currentLocales;this._currentLocales=e;this.requestUpdate("locales",t)}}get selectedDate(){return this._currentSelectedDate}set selectedDate(e){if(this._currentSelectedDate!==e){const t=this._currentSelectedDate;this._currentSelectedDate=e;this._currentDate=new Date(e.getFullYear(),e.getMonth(),e.getDate());this.requestUpdate("selectedDate",t)}}get showToday(){return this._isTodayVisible}set showToday(e){if(this._isTodayVisible!==e){const t=this._isTodayVisible;this._isTodayVisible=e;this.requestUpdate("showToday",t)}}get todayDate(){return this._currentTodayDate}set todayDate(e){if(this._currentTodayDate!==e){const t=this._currentTodayDate;this._currentTodayDate=e;this.updateLayout();this.requestUpdate("todayDate",t)}}_clearDisplayAnimation(){this._isMonthAnimated=!1;this._isDecadeAnimated=!1;this._isYearAnimated=!1}_animateDisplayChanges(e){let t=this;if(!e)t.updateLayout();else{let e=t._currentDate.getDate(),a=t._currentDate.getMonth(),i=t._currentDate.getFullYear();t._updateHeaderTitle(new Date(i,a,e))}if(t._isAnimationAllowed){t._isMonthAnimated=0===t._prevDisplayMode?!0:!1;t._isDecadeAnimated=2===t._prevDisplayMode?!0:!1;t._isYearAnimated=1===t._prevDisplayMode?!0:!1;let e=.03,a=setInterval(function(){switch(t._displayMode){case 1:if(t._yearOpacity<1){t._yearOpacity+=e;t._decadeOpacity=t._decadeOpacity>0?t._decadeOpacity-e:0;t._monthOpacity=t._monthOpacity>0?t._monthOpacity-e:0}else{t._decadeOpacity=0;t._monthOpacity=0;t._yearOpacity=1;t._clearDisplayAnimation();t.refresh();clearInterval(a)}break;case 2:if(t._decadeOpacity<1){t._decadeOpacity+=e;t._monthOpacity=t._monthOpacity>0?t._monthOpacity-e:0;t._yearOpacity=t._yearOpacity>0?t._yearOpacity-e:0}else{t._decadeOpacity=1;t._monthOpacity=0;t._yearOpacity=0;t._clearDisplayAnimation();t.refresh();clearInterval(a)}break;default:if(t._monthOpacity<1){t._monthOpacity+=e;t._decadeOpacity=t._decadeOpacity>0?t._decadeOpacity-e:0;t._yearOpacity=t._yearOpacity>0?t._yearOpacity-e:0}else{t._decadeOpacity=0;t._monthOpacity=1;t._yearOpacity=0;t._clearDisplayAnimation();t.refresh();clearInterval(a)}}},5)}else{t._isMonthAnimated=!1;t._isDecadeAnimated=!1;t._isYearAnimated=!1;switch(t._displayMode){case 1:t._decadeOpacity=0;t._monthOpacity=0;t._yearOpacity=1;t.refresh();break;case 2:t._decadeOpacity=1;t._monthOpacity=0;t._yearOpacity=0;t.refresh();break;default:t._decadeOpacity=0;t._monthOpacity=1;t._yearOpacity=0;t.refresh()}}}_getCorrectDayInMonth(e,t,a){let i=this._getLastDayFromMonth(t,e);return a<=i?a:i}_getDayofWeekOrder(){switch(this._currentFirstDayOfWeek){case IntegralUIWeekDays.Monday:return 0;case IntegralUIWeekDays.Tuesday:return 1;case IntegralUIWeekDays.Wednesday:return 2;case IntegralUIWeekDays.Thursday:return 3;case IntegralUIWeekDays.Friday:return 4;case IntegralUIWeekDays.Saturday:return 5;default:return 6}}_getLastDayFromMonth(e,t){if(1===e)return t%4===0?29:28;else if(3===e||5===e||8===e||10===e)return 30;else return 31}_getPrevMonth(e){let t=e.getMonth();return 0===t?11:t-1}_getPrevYear(e){let t=e.getMonth(),a=e.getFullYear();return 1===this._displayMode?a-1:0===t?a-1:a}_getNextMonth(e){let t=e.getMonth();return 11===t?0:t+1}_getNextYear(e){let t=e.getMonth(),a=e.getFullYear();return 1===this._displayMode?a+1:11===t?a+1:a}_getWeekNames(){let e=new Date(2017,0,2),t=[];for(let a=0;a<7;a++){t.push(e.toLocaleString(this._currentLocales,{weekday:"long"}));e.setDate(e.getDate()+1)}return t}_isDateEqual(e,t){return this._isYearEqual(e,t)&&this._isMonthEqual(e,t)&&e.getDate()===t.getDate()}_isMonthEqual(e,t){return e.getMonth()===t.getMonth()}_isYearEqual(e,t){return e.getFullYear()===t.getFullYear()}_reset(){this._displayMode=0;this._decadeOpacity=0;this._monthOpacity=1;this._yearOpacity=0}refresh(){this._updateControlClass();if(this._currentDate){let e=this._currentDate.getDate(),t=this._currentDate.getMonth(),a=this._currentDate.getFullYear(),i=new Date(a,t,e),s=null;for(let e=0;e{e._updateTimer=setTimeout(function(){e._clientRect={width:e._elemRef.clientWidth,height:e._elemRef.clientHeight};e._headerSize={width:e._clientRect.width-4,height:e._headerElem.offsetHeight};e._contentSize={width:e._clientRect.width,height:e._clientRect.height-e._headerSize.height};e._listYears.length=0;e._nextListYears.length=0;e._prevListYears.length=0;e._listMonths.length=0;e._nextListMonths.length=0;e._prevListMonths.length=0;e._listDaysInMonth.length=0;e._nextListDaysInMonth.length=0;e._prevListDaysInMonth.length=0;let a=e._currentDate.getDate(),i=e._currentDate.getMonth(),s=e._currentDate.getFullYear(),r=new Date(s,i,a);r.setFullYear(s-10);e._updateDecadeLayout(e._prevListYears,r);r.setFullYear(s+10);e._updateDecadeLayout(e._nextListYears,r);r.setFullYear(s);e._updateDecadeLayout(e._listYears,r);r.setFullYear(s-1);e._updateYearLayout(e._prevListMonths,r);r.setFullYear(s+1);e._updateYearLayout(e._nextListMonths,r);r.setFullYear(s);e._updateYearLayout(e._listMonths,r);r=new Date(e._getPrevYear(e._currentDate),e._getPrevMonth(e._currentDate),1);e._updateMonthLayout(e._prevListDaysInMonth,r);r=new Date(e._getNextYear(e._currentDate),e._getNextMonth(e._currentDate),1);e._updateMonthLayout(e._nextListDaysInMonth,r);r=new Date(s,i,a);e._updateMonthLayout(e._listDaysInMonth,r);e._updateHeaderTitle(r);e.update();e._updateHeaderLayout();e._animatePrevPos=-e._contentSize.width;e._animateCurrentPos=0;e._animateNextPos=e._contentSize.width;e._animatePrevOpacity=0;e._animateCurrentOpacity=1;e._animateNextOpacity=0;e.refresh();clearTimeout(e._updateTimer);t()},1)})}_updateHeaderLayout(){this._buttonMargin={top:(this._headerSize.height-this._headerButtonElem.offsetHeight)/2,right:2,bottom:2,left:2};this._titleMargin={top:(this._headerSize.height-this._headerTitleElem.offsetHeight)/2,right:2,bottom:2,left:2};this._titleSize={width:this._headerSize.width-2*(this._headerButtonElem.offsetWidth+this._buttonMargin.left+this._buttonMargin.right)-(this._titleMargin.left+this._titleMargin.right),height:this._headerSize.height}}_updateHeaderTitle(e){switch(this._displayMode){case 1:this._title=e.getFullYear().toString();break;case 2:let t=10*Math.floor(e.getFullYear()/10);this._title=t.toString()+" - "+(t+9).toString();break;default:let a=e.toLocaleString(this.locales,{month:"long"}),i=e.getFullYear().toString();this._title=a+", "+i}}_updateDecadeLayout(e,t){let a=10*Math.floor(t.getFullYear()/10)-1,i=!1;for(let s=0;s<3;s++){let r={years:[]};for(let e=0;e<4;e++){i=(0===s&&0===e)||(2===s&&3===e)?!0:!1;r.years.push({grayed:i,style:this._getYearObjectStyle(t,a,i),value:a});a++}e.push(r)}}_updateMonthLayout(e,t){let a=this._getWeekNames(),i=this._getDayofWeekOrder(),s=i;this._listDayWeek.length=0;for(let e=0;e<7&&si?h-s:h-s+7)>0?h:7;let o=l>0?l-1:11,_=this._getLastDayFromMonth(o,r),c=!1,d=0;for(let a=0;a<6;a++){let i={days:[]};if(0===a){for(let e=0;e=n)c=!0;d=d0){a._animateCurrentPos-=5;a._animateNextPos-=5;a._animateCurrentOpacity=a._animateCurrentOpacity>0?a._animateCurrentOpacity-.01:0;a._animateNextOpacity=a._animateNextOpacity<1?a._animateNextOpacity+.01:1;a.update()}else{a._animateCurrentPos=-a._contentSize.width;a._animateNextPos=0;a._animateCurrentOpacity=0;a._animateNextOpacity=1;a._updateCurrentDate(t);a._prevHoverDate=null;a._hoverDate=null;a.update();clearInterval(e)}},5)}else{a._updateCurrentDate(t);a._prevHoverDate=null;a._hoverDate=null;a.update()}e.stopPropagation()}prev(e,t){let a=this;if(a._isAnimationAllowed){let e=setInterval(function(){if(a._animatePrevPos<0){a._animateCurrentPos+=5;a._animatePrevPos+=5;a._animateCurrentOpacity=a._animateCurrentOpacity>0?a._animateCurrentOpacity-.01:0;a._animatePrevOpacity=a._animatePrevOpacity<1?a._animatePrevOpacity+.01:1;a.update()}else{a._animateCurrentPos=a._contentSize.width;a._animatePrevPos=0;a._animateCurrentOpacity=0;a._animatePrevOpacity=1;a._updateCurrentDate(t,!0);a._prevHoverDate=null;a._hoverDate=null;a.update();clearInterval(e)}},5)}else{a._updateCurrentDate(t,!0);a._prevHoverDate=null;a._hoverDate=null;a.update()}e.stopPropagation()}_removeNavigationTimer(){this._isNavigationActive=!1;if(this._navTimer)clearInterval(this._navTimer);this._navTimer=null}_processDayClicked(e,t){let a=t.isPrev?this._getPrevYear(this._currentDate):t.isNext?this._getNextYear(this._currentDate):this._currentDate.getFullYear(),i=t.isPrev?this._getPrevMonth(this._currentDate):t.isNext?this._getNextMonth(this._currentDate):this._currentDate.getMonth(),s=t.value;this.selectedDate=new Date(a,i,s);t.isPrev?this.prev(e,this.selectedDate):t.isNext?this.next(e,this.selectedDate):this.refresh();this._invokeEvent("dateChanged",{date:this._currentSelectedDate})}_processMonthClicked(e){let t=this._currentDate.getFullYear(),a=e.value,i=this._getCorrectDayInMonth(t,a,this._currentSelectedDate.getDate());this.selectedDate=new Date(t,a,i);this._prevDisplayMode=this._displayMode;this._displayMode=0;this._animateDisplayChanges()}_processYearClicked(e){let t=e.value,a=this._currentDate.getMonth(),i=this._currentSelectedDate.getDate();this.selectedDate=new Date(t,a,i);this._prevDisplayMode=this._displayMode;this._displayMode=1;this._animateDisplayChanges()}_windowMouseUp(e){this._removeNavigationTimer()}_getDayObjectStyle(e,t,a){return this._getCellObjectStyle(e,new Date(e.getFullYear(),e.getMonth(),t),a)}_getMonthObjectStyle(e,t,a){return this._getCellObjectStyle(e,new Date(e.getFullYear(),t,1),a)}_getYearObjectStyle(e,t,a){return this._getCellObjectStyle(e,new Date(t,0,1),a)}_getCellObjectStyle(e,t,a){let i={};i[this._cellClassName]=!0;switch(this._displayMode){case 1:if(!a)if(this._isMonthEqual(t,this._currentDate))i[this._defaultStyle.cell.selected]=!0;else if(this._hoverDate&&this._isMonthEqual(t,this._hoverDate)){i[this._defaultStyle.cell.hovered]=!0;if(this._isAnimationAllowed)i[this._cellClassName+"-enter"]=!0}else if(this._prevHoverDate&&this._isMonthEqual(t,this._prevHoverDate)){i[this._defaultStyle.cell.normal]=!0;if(this._isAnimationAllowed)i[this._cellClassName+"-leave"]=!0}else i[this._defaultStyle.cell.normal]=!0;else i[this._defaultStyle.cell.grayed]=!0;break;case 2:if(this._isYearEqual(t,this._currentDate))i[this._defaultStyle.cell.selected]=!0;else if(this._hoverDate&&this._isYearEqual(t,this._hoverDate)){i[this._defaultStyle.cell.hovered]=!0;if(this._isAnimationAllowed)i[this._cellClassName+"-enter"]=!0}else if(this._prevHoverDate&&this._isYearEqual(t,this._prevHoverDate)){i[this._defaultStyle.cell.normal]=!0;if(this._isAnimationAllowed)i[this._cellClassName+"-leave"]=!0}else i[this._defaultStyle.cell.normal]=!0;break;default:if(!a){if(this._isDateEqual(t,this._currentSelectedDate))i[this._defaultStyle.cell.selected]=!0;else if(this._hoverDate&&this._isDateEqual(t,this._hoverDate)){i[this._defaultStyle.cell.hovered]=!0;if(this._isAnimationAllowed&&(!this.showToday||!this._isDateEqual(t,this._currentTodayDate)))i[this._cellClassName+"-enter"]=!0}else if(this._prevHoverDate&&this._isDateEqual(t,this._prevHoverDate)){i[this._defaultStyle.cell.normal]=!0;if(this._isAnimationAllowed&&(!this.showToday||!this._isDateEqual(t,this._currentTodayDate)))i[this._cellClassName+"-leave"]=!0}else i[this._defaultStyle.cell.normal]=!0;if(this._isTodayVisible&&this._isDateEqual(t,this._currentTodayDate))i[this._defaultStyle.cell.today]=!0}else i[this._defaultStyle.cell.grayed]=!0}return i}_updateThemeSettings(e){this._currentThemeSettings=css``;switch(e){case IntegralUITheme.Office:this._currentThemeSettings.cssText=this._commonService.replaceAll(iuiCalendarOfficeStyle.cssText,"../icons",this._currentResourcePath);break;case IntegralUITheme.Midnight:this._currentThemeSettings.cssText=this._commonService.replaceAll(iuiCalendarMidnightStyle.cssText,"../icons",this._currentResourcePath);break;default:this._currentThemeSettings.cssText=""}}firstUpdated(e){this._updateReferences();this.updateLayout()}_getCalendarLayout(){switch(this._displayMode){case 1:return this._getYearLayout();case 2:return this._getDecadeLayout();default:return this._getMonthLayout()}}_getDecadeLayout(){return html`
${this._prevListYears.map(e=>html` ${e.years.map(e=>html` `)} `)}
${e.value}
${this._listYears.map(e=>html` ${e.years.map(e=>html` `)} `)}
${e.value}
${this._nextListYears.map(e=>html` ${e.years.map(e=>html` `)} `)}
${e.value}
`}_getMonthLayout(){return html`
${this._listDayWeek.map(e=>html` `)} ${this._prevListDaysInMonth.map(e=>html` ${e.days.map(e=>html` `)} `)}
${e.text}
${e.value}
${this._listDayWeek.map(e=>html` `)} ${this._listDaysInMonth.map(e=>html` ${e.days.map(e=>html` `)} `)}
${e.text}
${e.value}
${this._listDayWeek.map(e=>html` `)} ${this._nextListDaysInMonth.map(e=>html` ${e.days.map(e=>html` `)} `)}
${e.text}
${e.value}
`}_getYearLayout(){return html`
${this._prevListMonths.map(e=>html` ${e.months.map(e=>html` `)} `)}
${e.text}
${this._listMonths.map(e=>html` ${e.months.map(e=>html` `)} `)}
${e.text}
${this._nextListMonths.map(e=>html` ${e.months.map(e=>html` `)} `)}
${e.text}
`}render(){return html`
${this._getCalendarLayout()}
`}_updateControlStyleSettings(e){this._currentControlStyleSettings=css``;this._currentControlStyleSettings.cssText=this._commonService.replaceAll(iuiCalendarDefaultStyle.cssText,"../icons",e)}_updateReferences(){this._elemRef=this.shadowRoot.querySelector("div[data-ctrl=calendar]");this._headerElem=this.shadowRoot.querySelector("#header");this._headerButtonElem=this.shadowRoot.querySelector("#header-button");this._headerTitleElem=this.shadowRoot.querySelector("#header-title")}}window.customElements.define("iui-calendar",IntegralUICalendar);export default IntegralUICalendar; \ No newline at end of file +import{c as css,h as html}from"../external/lit-element.js";import{c as classMap}from"../external/class-map.js";import{s as styleMap}from"../external/style-map.js";import IntegralUIBase from"./integralui.base.js";import{IntegralUIWeekDays,IntegralUIObjectState,IntegralUITheme}from"./integralui.enums.js";import{iuiCalendarDefaultStyle}from"../styles/integralui.calendar.style.js";import{iuiCalendarOfficeStyle}from"../themes/office/integralui.calendar.office.js";import{iuiCalendarMidnightStyle}from"../themes/midnight/integralui.calendar.midnight.js";class IntegralUICalendar extends IntegralUIBase{_init(){super._init();this._animateCurrentPos=0;this._animateNextPos=0;this._animatePrevPos=0;this._animateCurrentOpacity=1;this._animateNextOpacity=0;this._animatePrevOpacity=0;this._decadeOpacity=0;this._monthOpacity=1;this._yearOpacity=0;this._isDecadeAnimated=!1;this._isMonthAnimated=!1;this._isYearAnimated=!1;this._currentDate=new Date();this._currentFirstDayOfWeek=IntegralUIWeekDays.Sunday;this._currentLocales="en-us";this._currentSelectedDate=new Date();this._currentTodayDate=new Date();this._listDayWeek=[];this._title="";this._listYears=[];this._nextListYears=[];this._prevListYears=[];this._listMonths=[];this._nextListMonths=[];this._prevListMonths=[];this._listDaysInMonth=[];this._nextListDaysInMonth=[];this._prevListDaysInMonth=[];this._hoverDate=null;this._prevHoverDate=null;this._buttonMargin={top:2,right:2,bottom:2,left:2};this._ctrlOpacity=1;this._contentSize={width:0,height:0};this._displayMode=0;this._headerSize={width:0,height:0};this._isTodayVisible=!0;this._prevDisplayMode=0;this._titleMargin={top:2,right:2,bottom:2,left:2};this._titleSize={width:0,height:0};this._updateTimer=null;this._currentControlStyleSettings=iuiCalendarDefaultStyle;this._generalClassName="iui-calendar";this._cellClassName=this._generalClassName+"-cell";this._isNavigationActive=!1;this._navTimer=null;for(let e=0;e<7;e++)this._listDayWeek.push({});let e=this._currentSelectedDate.getDate(),t=this._currentSelectedDate.getMonth(),a=this._currentSelectedDate.getFullYear();this._currentDate=new Date(a,t,e);this._initStyle();this.updateLayout()}_initStyle(){this._defaultStyle={general:{disabled:this._generalClassName+"-disabled",focused:this._generalClassName+"-focused",normal:this._generalClassName,hovered:this._generalClassName+"-hovered",selected:this._generalClassName+"-selected"},cell:{disabled:this._cellClassName+"-disabled",focused:this._cellClassName+"-focused",grayed:this._cellClassName+"-grayed",normal:this._cellClassName,hovered:this._cellClassName+"-hovered",selected:this._cellClassName+"-selected",today:this._cellClassName+"-today"}};this.refresh()}connectedCallback(){this._windowMouseUp=this._windowMouseUp.bind(this);window.addEventListener("mouseup",this._windowMouseUp)}disconnectedCallback(){window.removeEventListener("mouseup",this._windowMouseUp)}attributeChangedCallback(e,t,a){super.attributeChangedCallback(e,t,a)}static get properties(){return{firstDayOfWeek:{attribute:"first-dayofweek",converter:{fromAttribute:e=>{switch((e=e.replace(/"|'/,"").replace(/"|'/,"")).toLowerCase()){case"monday":return IntegralUIWeekDays.Monday;case"tuesday":return IntegralUIWeekDays.Tuesday;case"wednesday":return IntegralUIWeekDays.Wednesday;case"thursday":return IntegralUIWeekDays.Thursday;case"friday":return IntegralUIWeekDays.Friday;case"saturday":return IntegralUIWeekDays.Saturday;default:return IntegralUIWeekDays.Sunday}},toAttribute:e=>{switch(e){case IntegralUIWeekDays.Monday:return"Monday";case IntegralUIWeekDays.Tuesday:return"Tuesday";case IntegralUIWeekDays.Wednesday:return"Wednesday";case IntegralUIWeekDays.Thursday:return"Thursday";case IntegralUIWeekDays.Friday:return"Friday";case IntegralUIWeekDays.Saturday:return"Saturday";default:return"Sunday"}}},reflect:!0},locales:{type:String,reflect:!0},selectedDate:{type:Object,attribute:"selected-date"},showToday:{type:Boolean,attribute:"show-today",reflect:!0},todayDate:{type:Object,attribute:"today-date"}}}get firstDayOfWeek(){return this._currentFirstDayOfWeek}set firstDayOfWeek(e){if(this._currentFirstDayOfWeek!==e){const t=this._currentFirstDayOfWeek;this._currentFirstDayOfWeek=e;this.requestUpdate("firstDayOfWeek",t)}}get locales(){return this._currentLocales}set locales(e){if(this._currentLocales!==e){const t=this._currentLocales;this._currentLocales=e;this.requestUpdate("locales",t)}}get selectedDate(){return this._currentSelectedDate}set selectedDate(e){if(this._commonService.isValue(e)&&this._currentSelectedDate!==e){const t=this._currentSelectedDate;this._currentSelectedDate=e;this._currentDate=new Date(e.getFullYear(),e.getMonth(),e.getDate());this.requestUpdate("selectedDate",t)}}get showToday(){return this._isTodayVisible}set showToday(e){if(this._isTodayVisible!==e){const t=this._isTodayVisible;this._isTodayVisible=e;this.requestUpdate("showToday",t)}}get todayDate(){return this._currentTodayDate}set todayDate(e){if(this._currentTodayDate!==e){const t=this._currentTodayDate;this._currentTodayDate=e;this.updateLayout();this.requestUpdate("todayDate",t)}}_clearDisplayAnimation(){this._isMonthAnimated=!1;this._isDecadeAnimated=!1;this._isYearAnimated=!1}_animateDisplayChanges(e){let t=this;if(!e)t.updateLayout();else{let e=t._currentDate.getDate(),a=t._currentDate.getMonth(),i=t._currentDate.getFullYear();t._updateHeaderTitle(new Date(i,a,e))}if(t._isAnimationAllowed){t._isMonthAnimated=0===t._prevDisplayMode?!0:!1;t._isDecadeAnimated=2===t._prevDisplayMode?!0:!1;t._isYearAnimated=1===t._prevDisplayMode?!0:!1;let e=.03,a=setInterval(function(){switch(t._displayMode){case 1:if(t._yearOpacity<1){t._yearOpacity+=e;t._decadeOpacity=t._decadeOpacity>0?t._decadeOpacity-e:0;t._monthOpacity=t._monthOpacity>0?t._monthOpacity-e:0}else{t._decadeOpacity=0;t._monthOpacity=0;t._yearOpacity=1;t._clearDisplayAnimation();t.refresh();clearInterval(a)}break;case 2:if(t._decadeOpacity<1){t._decadeOpacity+=e;t._monthOpacity=t._monthOpacity>0?t._monthOpacity-e:0;t._yearOpacity=t._yearOpacity>0?t._yearOpacity-e:0}else{t._decadeOpacity=1;t._monthOpacity=0;t._yearOpacity=0;t._clearDisplayAnimation();t.refresh();clearInterval(a)}break;default:if(t._monthOpacity<1){t._monthOpacity+=e;t._decadeOpacity=t._decadeOpacity>0?t._decadeOpacity-e:0;t._yearOpacity=t._yearOpacity>0?t._yearOpacity-e:0}else{t._decadeOpacity=0;t._monthOpacity=1;t._yearOpacity=0;t._clearDisplayAnimation();t.refresh();clearInterval(a)}}},5)}else{t._isMonthAnimated=!1;t._isDecadeAnimated=!1;t._isYearAnimated=!1;switch(t._displayMode){case 1:t._decadeOpacity=0;t._monthOpacity=0;t._yearOpacity=1;t.refresh();break;case 2:t._decadeOpacity=1;t._monthOpacity=0;t._yearOpacity=0;t.refresh();break;default:t._decadeOpacity=0;t._monthOpacity=1;t._yearOpacity=0;t.refresh()}}}_getCorrectDayInMonth(e,t,a){let i=this._getLastDayFromMonth(t,e);return a<=i?a:i}_getDayofWeekOrder(){switch(this._currentFirstDayOfWeek){case IntegralUIWeekDays.Monday:return 0;case IntegralUIWeekDays.Tuesday:return 1;case IntegralUIWeekDays.Wednesday:return 2;case IntegralUIWeekDays.Thursday:return 3;case IntegralUIWeekDays.Friday:return 4;case IntegralUIWeekDays.Saturday:return 5;default:return 6}}_getLastDayFromMonth(e,t){if(1===e)return t%4===0?29:28;else if(3===e||5===e||8===e||10===e)return 30;else return 31}_getPrevMonth(e){let t=e.getMonth();return 0===t?11:t-1}_getPrevYear(e){let t=e.getMonth(),a=e.getFullYear();return 1===this._displayMode?a-1:0===t?a-1:a}_getNextMonth(e){let t=e.getMonth();return 11===t?0:t+1}_getNextYear(e){let t=e.getMonth(),a=e.getFullYear();return 1===this._displayMode?a+1:11===t?a+1:a}_getWeekNames(){let e=new Date(2017,0,2),t=[];for(let a=0;a<7;a++){t.push(e.toLocaleString(this._currentLocales,{weekday:"long"}));e.setDate(e.getDate()+1)}return t}_isDateEqual(e,t){return this._isYearEqual(e,t)&&this._isMonthEqual(e,t)&&e.getDate()===t.getDate()}_isMonthEqual(e,t){return e.getMonth()===t.getMonth()}_isYearEqual(e,t){return e.getFullYear()===t.getFullYear()}_reset(){this._displayMode=0;this._decadeOpacity=0;this._monthOpacity=1;this._yearOpacity=0}refresh(){this._updateControlClass();if(this._currentDate){let e=this._currentDate.getDate(),t=this._currentDate.getMonth(),a=this._currentDate.getFullYear(),i=new Date(a,t,e),s=null;for(let e=0;e{e._updateTimer=setTimeout(function(){e._clientRect={width:e._elemRef.clientWidth,height:e._elemRef.clientHeight};e._headerSize={width:e._clientRect.width-4,height:e._headerElem.offsetHeight};e._contentSize={width:e._clientRect.width,height:e._clientRect.height-e._headerSize.height};e._listYears.length=0;e._nextListYears.length=0;e._prevListYears.length=0;e._listMonths.length=0;e._nextListMonths.length=0;e._prevListMonths.length=0;e._listDaysInMonth.length=0;e._nextListDaysInMonth.length=0;e._prevListDaysInMonth.length=0;let a=e._currentDate.getDate(),i=e._currentDate.getMonth(),s=e._currentDate.getFullYear(),r=new Date(s,i,a);r.setFullYear(s-10);e._updateDecadeLayout(e._prevListYears,r);r.setFullYear(s+10);e._updateDecadeLayout(e._nextListYears,r);r.setFullYear(s);e._updateDecadeLayout(e._listYears,r);r.setFullYear(s-1);e._updateYearLayout(e._prevListMonths,r);r.setFullYear(s+1);e._updateYearLayout(e._nextListMonths,r);r.setFullYear(s);e._updateYearLayout(e._listMonths,r);r=new Date(e._getPrevYear(e._currentDate),e._getPrevMonth(e._currentDate),1);e._updateMonthLayout(e._prevListDaysInMonth,r);r=new Date(e._getNextYear(e._currentDate),e._getNextMonth(e._currentDate),1);e._updateMonthLayout(e._nextListDaysInMonth,r);r=new Date(s,i,a);e._updateMonthLayout(e._listDaysInMonth,r);e._updateHeaderTitle(r);e.update();e._updateHeaderLayout();e._animatePrevPos=-e._contentSize.width;e._animateCurrentPos=0;e._animateNextPos=e._contentSize.width;e._animatePrevOpacity=0;e._animateCurrentOpacity=1;e._animateNextOpacity=0;e.refresh();clearTimeout(e._updateTimer);t()},1)})}_updateHeaderLayout(){this._buttonMargin={top:(this._headerSize.height-this._headerButtonElem.offsetHeight)/2,right:2,bottom:2,left:2};this._titleMargin={top:(this._headerSize.height-this._headerTitleElem.offsetHeight)/2,right:2,bottom:2,left:2};this._titleSize={width:this._headerSize.width-2*(this._headerButtonElem.offsetWidth+this._buttonMargin.left+this._buttonMargin.right)-(this._titleMargin.left+this._titleMargin.right),height:this._headerSize.height}}_updateHeaderTitle(e){switch(this._displayMode){case 1:this._title=e.getFullYear().toString();break;case 2:let t=10*Math.floor(e.getFullYear()/10);this._title=t.toString()+" - "+(t+9).toString();break;default:let a=e.toLocaleString(this.locales,{month:"long"}),i=e.getFullYear().toString();this._title=a+", "+i}}_updateDecadeLayout(e,t){let a=10*Math.floor(t.getFullYear()/10)-1,i=!1;for(let s=0;s<3;s++){let r={years:[]};for(let e=0;e<4;e++){if(0===s&&0===e)i=!0;else if(2===s&&3===e)i=!0;else i=!1;r.years.push({grayed:i,style:this._getYearObjectStyle(t,a,i),value:a});a++}e.push(r)}}_updateMonthLayout(e,t){let a=this._getWeekNames(),i=this._getDayofWeekOrder(),s=i;this._listDayWeek.length=0;for(let e=0;e<7&&si?h-s:h-s+7)>0?h:7;let o=l>0?l-1:11,_=this._getLastDayFromMonth(o,r),c=!1,d=0;for(let a=0;a<6;a++){let i={days:[]};if(0===a){for(let e=0;e=n)c=!0;d=d0){a._animateCurrentPos-=5;a._animateNextPos-=5;a._animateCurrentOpacity=a._animateCurrentOpacity>0?a._animateCurrentOpacity-.01:0;a._animateNextOpacity=a._animateNextOpacity<1?a._animateNextOpacity+.01:1;a.update()}else{a._animateCurrentPos=-a._contentSize.width;a._animateNextPos=0;a._animateCurrentOpacity=0;a._animateNextOpacity=1;a._updateCurrentDate(t);a._prevHoverDate=null;a._hoverDate=null;a.update();clearInterval(e)}},5)}else{a._updateCurrentDate(t);a._prevHoverDate=null;a._hoverDate=null;a.update()}e.stopPropagation()}_prev(e,t){let a=this;if(a._isAnimationAllowed){let e=setInterval(function(){if(a._animatePrevPos<0){a._animateCurrentPos+=5;a._animatePrevPos+=5;a._animateCurrentOpacity=a._animateCurrentOpacity>0?a._animateCurrentOpacity-.01:0;a._animatePrevOpacity=a._animatePrevOpacity<1?a._animatePrevOpacity+.01:1;a.update()}else{a._animateCurrentPos=a._contentSize.width;a._animatePrevPos=0;a._animateCurrentOpacity=0;a._animatePrevOpacity=1;a._updateCurrentDate(t,!0);a._prevHoverDate=null;a._hoverDate=null;a.update();clearInterval(e)}},5)}else{a._updateCurrentDate(t,!0);a._prevHoverDate=null;a._hoverDate=null;a.update()}e.stopPropagation()}_removeNavigationTimer(){this._isNavigationActive=!1;if(this._navTimer)clearInterval(this._navTimer);this._navTimer=null}_processDayClicked(e,t){let a=t.isPrev?this._getPrevYear(this._currentDate):t.isNext?this._getNextYear(this._currentDate):this._currentDate.getFullYear(),i=t.isPrev?this._getPrevMonth(this._currentDate):t.isNext?this._getNextMonth(this._currentDate):this._currentDate.getMonth(),s=t.value;this.selectedDate=new Date(a,i,s);t.isPrev?this._prev(e,this.selectedDate):t.isNext?this._next(e,this.selectedDate):this.refresh();this._invokeEvent("dateChanged",{date:this._currentSelectedDate})}_processMonthClicked(e){let t=this._currentDate.getFullYear(),a=e.value,i=this._getCorrectDayInMonth(t,a,this._currentSelectedDate.getDate());this.selectedDate=new Date(t,a,i);this._prevDisplayMode=this._displayMode;this._displayMode=0;this._animateDisplayChanges()}_processYearClicked(e){let t=e.value,a=this._currentDate.getMonth(),i=this._currentSelectedDate.getDate();this.selectedDate=new Date(t,a,i);this._prevDisplayMode=this._displayMode;this._displayMode=1;this._animateDisplayChanges()}_windowMouseUp(e){this._removeNavigationTimer()}_getDayObjectStyle(e,t,a){return this._getCellObjectStyle(e,new Date(e.getFullYear(),e.getMonth(),t),a)}_getMonthObjectStyle(e,t,a){return this._getCellObjectStyle(e,new Date(e.getFullYear(),t,1),a)}_getYearObjectStyle(e,t,a){return this._getCellObjectStyle(e,new Date(t,0,1),a)}_getCellObjectStyle(e,t,a){let i={};i[this._cellClassName]=!0;switch(this._displayMode){case 1:if(!a)if(this._isMonthEqual(t,this._currentDate))i[this._defaultStyle.cell.selected]=!0;else if(this._hoverDate&&this._isMonthEqual(t,this._hoverDate)){i[this._defaultStyle.cell.hovered]=!0;if(this._isAnimationAllowed)i[this._cellClassName+"-enter"]=!0}else if(this._prevHoverDate&&this._isMonthEqual(t,this._prevHoverDate)){i[this._defaultStyle.cell.normal]=!0;if(this._isAnimationAllowed)i[this._cellClassName+"-leave"]=!0}else i[this._defaultStyle.cell.normal]=!0;else i[this._defaultStyle.cell.grayed]=!0;break;case 2:if(this._isYearEqual(t,this._currentDate))i[this._defaultStyle.cell.selected]=!0;else if(this._hoverDate&&this._isYearEqual(t,this._hoverDate)){i[this._defaultStyle.cell.hovered]=!0;if(this._isAnimationAllowed)i[this._cellClassName+"-enter"]=!0}else if(this._prevHoverDate&&this._isYearEqual(t,this._prevHoverDate)){i[this._defaultStyle.cell.normal]=!0;if(this._isAnimationAllowed)i[this._cellClassName+"-leave"]=!0}else i[this._defaultStyle.cell.normal]=!0;break;default:if(!a){if(this._isDateEqual(t,this._currentSelectedDate))i[this._defaultStyle.cell.selected]=!0;else if(this._hoverDate&&this._isDateEqual(t,this._hoverDate)){i[this._defaultStyle.cell.hovered]=!0;if(this._isAnimationAllowed&&(!this.showToday||!this._isDateEqual(t,this._currentTodayDate)))i[this._cellClassName+"-enter"]=!0}else if(this._prevHoverDate&&this._isDateEqual(t,this._prevHoverDate)){i[this._defaultStyle.cell.normal]=!0;if(this._isAnimationAllowed&&(!this.showToday||!this._isDateEqual(t,this._currentTodayDate)))i[this._cellClassName+"-leave"]=!0}else i[this._defaultStyle.cell.normal]=!0;if(this._isTodayVisible&&this._isDateEqual(t,this._currentTodayDate))i[this._defaultStyle.cell.today]=!0}else i[this._defaultStyle.cell.grayed]=!0}return i}_updateThemeSettings(e){this._currentThemeSettings=css``;switch(e){case IntegralUITheme.Office:this._currentThemeSettings.cssText=this._commonService.replaceAll(iuiCalendarOfficeStyle.cssText,"../../icons",this._currentResourcePath);break;case IntegralUITheme.Midnight:this._currentThemeSettings.cssText=this._commonService.replaceAll(iuiCalendarMidnightStyle.cssText,"../../icons",this._currentResourcePath);break;default:this._currentThemeSettings.cssText=""}}firstUpdated(e){this._updateReferences();this.updateLayout()}_getCalendarLayout(){switch(this._displayMode){case 1:return this._getYearLayout();case 2:return this._getDecadeLayout();default:return this._getMonthLayout()}}_getDecadeLayout(){return html`
${this._prevListYears.map(e=>html` ${e.years.map(e=>html` `)} `)}
${e.value}
${this._listYears.map(e=>html` ${e.years.map(e=>html` `)} `)}
${e.value}
${this._nextListYears.map(e=>html` ${e.years.map(e=>html` `)} `)}
${e.value}
`}_getMonthLayout(){return html`
${this._listDayWeek.map(e=>html` `)} ${this._prevListDaysInMonth.map(e=>html` ${e.days.map(e=>html` `)} `)}
${e.text}
${e.value}
${this._listDayWeek.map(e=>html` `)} ${this._listDaysInMonth.map(e=>html` ${e.days.map(e=>html` `)} `)}
${e.text}
${e.value}
${this._listDayWeek.map(e=>html` `)} ${this._nextListDaysInMonth.map(e=>html` ${e.days.map(e=>html` `)} `)}
${e.text}
${e.value}
`}_getYearLayout(){return html`
${this._prevListMonths.map(e=>html` ${e.months.map(e=>html` `)} `)}
${e.text}
${this._listMonths.map(e=>html` ${e.months.map(e=>html` `)} `)}
${e.text}
${this._nextListMonths.map(e=>html` ${e.months.map(e=>html` `)} `)}
${e.text}
`}render(){return html`
${this._getCalendarLayout()}
`}_updateControlStyleSettings(e){this._currentControlStyleSettings=css``;this._currentControlStyleSettings.cssText=this._commonService.replaceAll(iuiCalendarDefaultStyle.cssText,"../icons",e)}_updateReferences(){this._elemRef=this.shadowRoot.querySelector("div[data-ctrl=calendar]");this._headerElem=this.shadowRoot.querySelector("#header");this._headerButtonElem=this.shadowRoot.querySelector("#header-button");this._headerTitleElem=this.shadowRoot.querySelector("#header-title")}}window.customElements.define("iui-calendar",IntegralUICalendar);export default IntegralUICalendar; \ No newline at end of file diff --git a/components/integralui.checkbox.js b/components/integralui.checkbox.js index baa522d..85c4d5f 100644 --- a/components/integralui.checkbox.js +++ b/components/integralui.checkbox.js @@ -1,6 +1,6 @@ /* filename: integralui.checkbox.js - version : 21.1.0 + version : 21.4.0 Copyright © 2016-2021 Lidor Systems. All rights reserved. This file is part of the "IntegralUI Web" Library. @@ -12,4 +12,4 @@ This SOFTWARE is provided "AS IS", WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for the specific language governing rights and limitations under the License. Any infringement will be prosecuted under applicable laws. */ -import{c as css,h as html}from"../external/lit-element.js";import{c as classMap}from"../external/class-map.js";import{s as styleMap}from"../external/style-map.js";import{IntegralUICheckState,IntegralUIObjectState,IntegralUITheme}from"./integralui.enums.js";import IntegralUIBaseValue from"./integralui.base.value.js";import{iuiCheckBoxDefaultStyle}from"../styles/integralui.checkbox.style.js";import{iuiCheckBoxOfficeStyle}from"../themes/office/integralui.checkbox.office.js";import{iuiCheckBoxMidnightStyle}from"../themes/midnight/integralui.checkbox.midnight.js";class IntegralUICheckBox extends IntegralUIBaseValue{constructor(){super();this._checkedValue=!1;this._checkStateValue=IntegralUICheckState.Unchecked;this._isThreeState=!1;this._buttonClass={};this._generalClassName="iui-checkbox";this._buttonClassName=this._generalClassName+"-btn";this._contentClassName=this._generalClassName+"-content";this._currentControlStyleSettings=iuiCheckBoxDefaultStyle;this._initStyle()}_init(){super._init();this._initStyle()}_initStyle(){this._defaultStyle={general:{disabled:this._generalClassName+"-disabled",focused:this._generalClassName+"-focused",normal:this._generalClassName,hovered:this._generalClassName+"-hovered",selected:this._generalClassName+"-selected"},button:{general:this._buttonClassName,disabled:this._buttonClassName+"-disabled",checked:this._buttonClassName+"-checked",indeterminate:this._buttonClassName+"-indeterminate",unchecked:this._buttonClassName+"-unchecked"},content:{disabled:this._contentClassName+"-disabled",focused:this._contentClassName+"-focused",normal:this._contentClassName,hovered:this._contentClassName+"-hovered",selected:this._contentClassName+"-selected"}};this.refresh()}connectedCallback(){}disconnectedCallback(){}attributeChangedCallback(e,t,s){super.attributeChangedCallback(e,t,s)}static get properties(){return{checked:{type:Boolean,reflect:!0},checkState:{attribute:"check-state",converter:{fromAttribute:e=>{switch((e=e.replace(/"|'/,"").replace(/"|'/,"")).toLowerCase()){case"checked":return IntegralUICheckState.Checked;case"indeterminate":return IntegralUICheckState.Indeterminate;default:return IntegralUICheckState.Unchecked}},toAttribute:e=>{switch(e){case IntegralUICheckState.Checked:return"Checked";case IntegralUICheckState.Indeterminate:return"Indeterminate";default:return"Unchecked"}}},reflect:!0},threeState:{type:Boolean,attribute:"three-state"}}}get checked(){return this._checkedValue}set checked(e){if(this._checkedValue!==e){const t=this._checkedValue;this._checkedValue=e;this._checkStateValue=this._checkedValue?IntegralUICheckState.Checked:IntegralUICheckState.Unchecked;this.refresh();this._invokeEvent("checkedChanged",{checked:this._checkedValue,checkState:this._checkStateValue});this.requestUpdate("checked",t)}}get checkState(){return this._checkStateValue}set checkState(e){if(this._checkStateValue!==e){const t=this._checkStateValue;this._checkStateValue=e;this._checkedValue=this._checkStateValue===IntegralUICheckState.Checked?!0:!1;this.refresh();this._invokeEvent("checkStateChanged",{checked:this._checkedValue,checkState:this._checkStateValue});this.requestUpdate("checkState",t)}}get threeState(){return this._isThreeState}set threeState(e){if(this._isThreeState!==e){const t=this._isThreeState;this._isThreeState=e;this.refresh();this.requestUpdate("threeState",t)}}_ctrlMouseDown(e){if(this._isEnabled&&1===e.which)if(this.threeState)switch(this.checkState){case IntegralUICheckState.Indeterminate:this.checkState=IntegralUICheckState.Checked;this.checked=!0;break;case IntegralUICheckState.Checked:this.checkState=IntegralUICheckState.Unchecked;this.checked=!1;break;default:this.checkState=IntegralUICheckState.Indeterminate;this.checked=!1}else{this.checked=void 0!==this.checked?!this.checked:!0;this.checkState=this.checked?IntegralUICheckState.Checked:IntegralUICheckState.Unchecked}}refresh(){this._updateStyle(this.controlStyle);this._updateControlClass();this._updateButtonClass();this._updateContentClass();this.update();this._updateReferences()}_updateButtonClass(){this._buttonClass={};this._buttonClass[this._buttonClassName]=!0;if(this._options.currentStyle){this._buttonClass[this._options.currentStyle.button.general]=!0;if(this.threeState)switch(this.checkState){case IntegralUICheckState.Indeterminate:this._buttonClass[this._options.currentStyle.button.indeterminate]=!0;break;case IntegralUICheckState.Checked:this._buttonClass[this._options.currentStyle.button.checked]=!0;break;case IntegralUICheckState.Unchecked:this._buttonClass[this._options.currentStyle.button.unchecked]=!0;break;default:this._defaultFunc()}else this._buttonClass[this.checked?this._options.currentStyle.button.checked:this._options.currentStyle.button.unchecked]=!0;if(this.state&IntegralUIObjectState.Disabled)this._buttonClass[this._options.currentStyle.button.disabled]=!0}}_getButtonClass(){return this._buttonClass}_getButtonStyle(e){if(this._commonService.isString(e))return e;else if(e)return{general:this._commonService.isFieldAvailable(e.general,this._buttonClassName),disabled:this._commonService.isFieldAvailable(e.disabled,this._buttonClassName+"-disabled"),checked:this._commonService.isFieldAvailable(e.checked,this._buttonClassName+"-checked"),indeterminate:this._commonService.isFieldAvailable(e.indeterminate,this._buttonClassName+"-indeterminate"),unchecked:this._commonService.isFieldAvailable(e.unchecked,this._buttonClassName+"-unchecked")};else return{general:this._defaultStyle.button.general,disabled:this._defaultStyle.button.disabled,checked:this._defaultStyle.button.checked,indeterminate:this._defaultStyle.button.indeterminate,unchecked:this._defaultStyle.button.unchecked}}_updateStyle(e){if(e)this._options.currentStyle={general:this._getGeneralStyle(e.general),button:this._getButtonStyle(e.button),content:this._getContentStyle(e.button)};else this._options.currentStyle={general:{disabled:this._defaultStyle.general.disabled,focused:this._defaultStyle.general.focused,hovered:this._defaultStyle.general.hovered,normal:this._defaultStyle.general.normal,selected:this._defaultStyle.general.selected},button:{general:this._defaultStyle.button.general,disabled:this._defaultStyle.button.disabled,checked:this._defaultStyle.button.checked,indeterminate:this._defaultStyle.button.indeterminate,unchecked:this._defaultStyle.button.unchecked},content:{disabled:this._defaultStyle.content.disabled,focused:this._defaultStyle.content.focused,hovered:this._defaultStyle.content.hovered,normal:this._defaultStyle.content.normal,selected:this._defaultStyle.content.selected}}}_updateThemeSettings(e){this._currentThemeSettings=css``;switch(e){case IntegralUITheme.Office:this._currentThemeSettings.cssText=this._commonService.replaceAll(iuiCheckBoxOfficeStyle.cssText,"../icons",this._currentResourcePath);break;case IntegralUITheme.Midnight:this._currentThemeSettings.cssText=this._commonService.replaceAll(iuiCheckBoxMidnightStyle.cssText,"../icons",this._currentResourcePath);break;default:this._currentThemeSettings.cssText=""}}firstUpdated(e){this._updateReferences();this.updateLayout()}render(){return html`
`}_updateControlStyleSettings(e){this._currentControlStyleSettings=css``;this._currentControlStyleSettings.cssText=this._commonService.replaceAll(iuiCheckBoxDefaultStyle.cssText,"../icons",e);this.update()}_updateReferences(){this._elemRef=this.shadowRoot.querySelector("div[data-ctrl=checkbox]")}}window.customElements.define("iui-checkbox",IntegralUICheckBox);export default IntegralUICheckBox; \ No newline at end of file +import{c as css,h as html}from"../external/lit-element.js";import{c as classMap}from"../external/class-map.js";import{s as styleMap}from"../external/style-map.js";import IntegralUIBaseValue from"./integralui.base.value.js";import{IntegralUICheckState,IntegralUIObjectState,IntegralUITheme}from"./integralui.enums.js";import{iuiCheckBoxDefaultStyle}from"../styles/integralui.checkbox.style.js";import{iuiCheckBoxOfficeStyle}from"../themes/office/integralui.checkbox.office.js";import{iuiCheckBoxMidnightStyle}from"../themes/midnight/integralui.checkbox.midnight.js";class IntegralUICheckBox extends IntegralUIBaseValue{constructor(){super();this._checkedValue=!1;this._checkStateValue=IntegralUICheckState.Unchecked;this._isThreeState=!1;this._buttonClass={};this._generalClassName="iui-checkbox";this._buttonClassName=this._generalClassName+"-btn";this._contentClassName=this._generalClassName+"-content";this._currentControlStyleSettings=iuiCheckBoxDefaultStyle;this._initStyle()}_init(){super._init();this._initStyle()}_initStyle(){this._defaultStyle={general:{disabled:this._generalClassName+"-disabled",focused:this._generalClassName+"-focused",normal:this._generalClassName,hovered:this._generalClassName+"-hovered",selected:this._generalClassName+"-selected"},button:{general:this._buttonClassName,disabled:this._buttonClassName+"-disabled",checked:this._buttonClassName+"-checked",indeterminate:this._buttonClassName+"-indeterminate",unchecked:this._buttonClassName+"-unchecked"},content:{disabled:this._contentClassName+"-disabled",focused:this._contentClassName+"-focused",normal:this._contentClassName,hovered:this._contentClassName+"-hovered",selected:this._contentClassName+"-selected"}};this.refresh()}connectedCallback(){}disconnectedCallback(){}attributeChangedCallback(e,t,s){super.attributeChangedCallback(e,t,s)}static get properties(){return{checked:{type:Boolean,reflect:!0},checkState:{attribute:"check-state",converter:{fromAttribute:e=>{switch((e=e.replace(/"|'/,"").replace(/"|'/,"")).toLowerCase()){case"checked":return IntegralUICheckState.Checked;case"indeterminate":return IntegralUICheckState.Indeterminate;default:return IntegralUICheckState.Unchecked}},toAttribute:e=>{switch(e){case IntegralUICheckState.Checked:return"Checked";case IntegralUICheckState.Indeterminate:return"Indeterminate";default:return"Unchecked"}}},reflect:!0},threeState:{type:Boolean,attribute:"three-state"}}}get checked(){return this._checkedValue}set checked(e){if(this._checkedValue!==e){const t=this._checkedValue;this._checkedValue=e;this._checkStateValue=this._checkedValue?IntegralUICheckState.Checked:IntegralUICheckState.Unchecked;this.refresh();this._invokeEvent("checkedChanged",{checked:this._checkedValue,checkState:this._checkStateValue});this.requestUpdate("checked",t)}}get checkState(){return this._checkStateValue}set checkState(e){if(this._checkStateValue!==e){const t=this._checkStateValue;this._checkStateValue=e;this._checkedValue=this._checkStateValue===IntegralUICheckState.Checked?!0:!1;this.refresh();this._invokeEvent("checkStateChanged",{checked:this._checkedValue,checkState:this._checkStateValue});this.requestUpdate("checkState",t)}}get threeState(){return this._isThreeState}set threeState(e){if(this._isThreeState!==e){const t=this._isThreeState;this._isThreeState=e;this.refresh();this.requestUpdate("threeState",t)}}_ctrlMouseDown(e){if(this._isEnabled&&1===e.which)if(this.threeState)switch(this.checkState){case IntegralUICheckState.Indeterminate:this.checkState=IntegralUICheckState.Checked;this.checked=!0;break;case IntegralUICheckState.Checked:this.checkState=IntegralUICheckState.Unchecked;this.checked=!1;break;default:this.checkState=IntegralUICheckState.Indeterminate;this.checked=!1}else{this.checked=void 0!==this.checked?!this.checked:!0;this.checkState=this.checked?IntegralUICheckState.Checked:IntegralUICheckState.Unchecked}}refresh(){this._updateStyle(this.controlStyle);this._updateControlClass();this._updateButtonClass();this._updateContentClass();this.update();this._updateReferences()}_updateButtonClass(){this._buttonClass={};this._buttonClass[this._buttonClassName]=!0;if(this._options.currentStyle){this._buttonClass[this._options.currentStyle.button.general]=!0;if(this.threeState)switch(this.checkState){case IntegralUICheckState.Indeterminate:this._buttonClass[this._options.currentStyle.button.indeterminate]=!0;break;case IntegralUICheckState.Checked:this._buttonClass[this._options.currentStyle.button.checked]=!0;break;case IntegralUICheckState.Unchecked:this._buttonClass[this._options.currentStyle.button.unchecked]=!0;break;default:this._defaultFunc()}else this._buttonClass[this.checked?this._options.currentStyle.button.checked:this._options.currentStyle.button.unchecked]=!0;if(this.state&IntegralUIObjectState.Disabled)this._buttonClass[this._options.currentStyle.button.disabled]=!0}}_getButtonClass(){return this._buttonClass}_getButtonStyle(e){if(this._commonService.isString(e))return e;else if(e)return{general:this._commonService.isFieldAvailable(e.general,this._buttonClassName),disabled:this._commonService.isFieldAvailable(e.disabled,this._buttonClassName+"-disabled"),checked:this._commonService.isFieldAvailable(e.checked,this._buttonClassName+"-checked"),indeterminate:this._commonService.isFieldAvailable(e.indeterminate,this._buttonClassName+"-indeterminate"),unchecked:this._commonService.isFieldAvailable(e.unchecked,this._buttonClassName+"-unchecked")};else return{general:this._defaultStyle.button.general,disabled:this._defaultStyle.button.disabled,checked:this._defaultStyle.button.checked,indeterminate:this._defaultStyle.button.indeterminate,unchecked:this._defaultStyle.button.unchecked}}_updateStyle(e){if(e)this._options.currentStyle={general:this._getGeneralStyle(e.general),button:this._getButtonStyle(e.button),content:this._getContentStyle(e.button)};else this._options.currentStyle={general:{disabled:this._defaultStyle.general.disabled,focused:this._defaultStyle.general.focused,hovered:this._defaultStyle.general.hovered,normal:this._defaultStyle.general.normal,selected:this._defaultStyle.general.selected},button:{general:this._defaultStyle.button.general,disabled:this._defaultStyle.button.disabled,checked:this._defaultStyle.button.checked,indeterminate:this._defaultStyle.button.indeterminate,unchecked:this._defaultStyle.button.unchecked},content:{disabled:this._defaultStyle.content.disabled,focused:this._defaultStyle.content.focused,hovered:this._defaultStyle.content.hovered,normal:this._defaultStyle.content.normal,selected:this._defaultStyle.content.selected}}}_updateThemeSettings(e){this._currentThemeSettings=css``;switch(e){case IntegralUITheme.Office:this._currentThemeSettings.cssText=this._commonService.replaceAll(iuiCheckBoxOfficeStyle.cssText,"../icons",this._currentResourcePath);break;case IntegralUITheme.Midnight:this._currentThemeSettings.cssText=this._commonService.replaceAll(iuiCheckBoxMidnightStyle.cssText,"../icons",this._currentResourcePath);break;default:this._currentThemeSettings.cssText=""}}firstUpdated(e){this._updateReferences();this.updateLayout()}render(){return html`
`}_updateControlStyleSettings(e){this._currentControlStyleSettings=css``;this._currentControlStyleSettings.cssText=this._commonService.replaceAll(iuiCheckBoxDefaultStyle.cssText,"../icons",e);this.update()}_updateReferences(){this._elemRef=this.shadowRoot.querySelector("div[data-ctrl=checkbox]")}}window.customElements.define("iui-checkbox",IntegralUICheckBox);export default IntegralUICheckBox; \ No newline at end of file diff --git a/components/integralui.contextmenu.js b/components/integralui.contextmenu.js new file mode 100644 index 0000000..38988b4 --- /dev/null +++ b/components/integralui.contextmenu.js @@ -0,0 +1,15 @@ +/* + filename: integralui.contextmenu.js + version : 21.4.0 + Copyright © 2016-2021 Lidor Systems. All rights reserved. + + This file is part of the "IntegralUI Web" Library. + + The contents of this file are subject to the IntegralUI Web License, and may not be used except in compliance with the License. + A copy of the License should have been installed in the product's root installation directory or it can be found at + http://www.lidorsystems.com/products/web/studio/license-agreement.aspx. + + This SOFTWARE is provided "AS IS", WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for the specific language + governing rights and limitations under the License. Any infringement will be prosecuted under applicable laws. +*/ +import{L as LitElement,c as css,T as TemplateResult,a as defaultTemplateProcessor,h as html}from"../external/lit-element.js";import{c as classMap}from"../external/class-map.js";import{s as styleMap}from"../external/style-map.js";import IntegralUIBase,{IntegralUITComponent}from"./integralui.base.js";import IntegralUICommonService from"../services/integralui.common.service.js";import{IntegralUITheme,IntegralUIDirection}from"./integralui.enums.js";import"./integralui.menuitem.js";import{iuiContextMenuDefaultStyle}from"../styles/integralui.contextmenu.style.js";import{iuiContextMenuOfficeStyle}from"../themes/office/integralui.contextmenu.office.js";import{iuiContextMenuMidnightStyle}from"../themes/midnight/integralui.contextmenu.midnight.js";class IntegralUIContextMenuWindow extends LitElement{constructor(){super();this._commonService=new IntegralUICommonService();this._currentOptions={};this._menuItems=[];this._updateOptions();this._blockDisplay="none";this._blockElemWidth="0";this._blockElemHeight="0";this._blockOverflow="hidden";this._blockOpacity=0;this._currentResourcePath="../icons";this._currentControlStyleSettings=iuiContextMenuDefaultStyle;this._currentCustomStyle=[];this._currentTheme=IntegralUITheme.None;this._currentThemeSettings=css``;this._ctrlClass={};this._generalClassName="iui-contextmenu";this._initTimout=null;this._initStyle()}_initStyle(){this._defaultStyle={general:{disabled:this._generalClassName+"-disabled",focused:this._generalClassName+"-focused",normal:this._generalClassName,hovered:this._generalClassName+"-hovered",selected:this._generalClassName+"-selected"}};this.refresh();this._initFocus()}_initFocus(){let e=this;e._initTimout=setTimeout(function(){if(e._elemRef)e._elemRef.focus()},1)}connectedCallback(){}disconnectedCallback(){this._rt();if(this._initTimout)clearTimeout(this._initTimout);this._initTimout=null}attributeChangedCallback(e,t,i){super.attributeChangedCallback(e,t,i)}static get properties(){return{allowAnimation:{type:Boolean,attribute:"allow-animation",relect:!0},customStyle:{type:Object,attribute:"custom-style"},options:{type:Object},resourcePath:{type:String,attribute:"resource-path",relect:!0},theme:{converter:{fromAttribute:e=>{switch((e=e.replace(/"|'/,"").replace(/"|'/,"")).toLowerCase()){case"office":return IntegralUITheme.Office;case"midnight":return IntegralUITheme.Midnight;default:return IntegralUITheme.None}},toAttribute:e=>{switch(e){case IntegralUITheme.Office:return"Office";case IntegralUITheme.Midnight:return"Midnight";default:return"None"}}},reflect:!0}}}get allowAnimation(){return this._isAnimationAllowed}set allowAnimation(e){if(this._isAnimationAllowed!==e){const t=this._isAnimationAllowed;this._isAnimationAllowed=e;this.requestUpdate("allowAnimation",t)}}get customStyle(){return this._currentCustomStyle}set customStyle(e){if(this._currentCustomStyle!==e){const t=this._currentCustomStyle;this._currentCustomStyle=e;this.requestUpdate("customStyle",t);this.refresh()}}get options(){return this._currentOptions}set options(e){const t=this._currentOptions;this._updateOptions(e);this.refresh();this.requestUpdate("options",t)}get resourcePath(){return this._currentResourcePath}set resourcePath(e){if(this._currentResourcePath!==e){const t=this._currentResourcePath;this._currentResourcePath=e;this._updateControlStyleSettings(e);this.requestUpdate("resourcePath",t)}}get theme(){return this._currentTheme}set theme(e){if(this._currentTheme!==e){const t=this._currentTheme;this._currentTheme=e;this._updateThemeSettings(e);this.requestUpdate("theme",t)}}_updateOptions(e){if(e)this._currentOptions={adjustment:this._commonService.isFieldAvailable(e.adjustment,{top:0,left:0}),autoClose:this._commonService.isFieldAvailable(e.autoClose,!0),direction:this._commonService.isFieldAvailable(e.direction,IntegralUIDirection.None),inverse:this._commonService.isFieldAvailable(e.inverse,!1),items:this._commonService.isFieldAvailable(e.items,[]),mode:this._commonService.isFieldAvailable(e.mode,"normal"),position:this._commonService.isFieldAvailable(e.position,{x:0,y:-9999999})};else this._currentOptions={adjustment:{top:0,left:0},autoClose:!0,direction:IntegralUIDirection.None,inverse:!1,items:[],mode:"normal",position:{x:0,y:-9999999}}}_invokeEvent(e,t,i,n){let s=new CustomEvent(e,{detail:t,bubbles:void 0!==i?i:!1,composed:void 0!==n?n:!1});this.dispatchEvent(s);return t}_onBlur(e){if(!1!==this.autoClose)this._invokeEvent("closed",{event:e})}_onRightClick(e){e.preventDefault()}_defaultFunc(){}invokeCtrlMethod(e,t){switch(e){case"MENU_CLICK":this._invokeEvent("menuClick",{event:t.event,item:t.item});break;default:this._defaultFunc()}}_getSize(){return{width:this._elemRef.offsetWidth,height:this._elemRef.offsetHeight}}_adjustPosition(e,t,i,n,s){let o=this,r=o._commonService.getShiftPos();setTimeout(function(){let l=o._getSize(),c=i;if("manual"===t&&s){c.x=s.left+s.width+r.x+o._currentOptions.adjustment.left;c.y=s.bottom+r.y+4+o._currentOptions.adjustment.top;if(o._currentOptions.direction&IntegralUIDirection.Above)c.y-=l.height;if(o._currentOptions.inverse||o._currentOptions.direction&IntegralUIDirection.Left)c.x-=l.width}if(n)if(c.y+l.height>n.height){let e=c.y+l.height-n.height;c.y-=e}o._currentOptions.position=c;o.update();o._updateReferences();o._invokeEvent("menuOpened",{event:e})},10)}open(e,t,i,n,s){let o=this;if(o._currentOptions.items){o._blockDisplay="block";o._blockOpacity=1;o._ut();if(!o._tCmp)o._at();o._adjustPosition(e,t,i,n,s)}}_getClassName(){return this._generalClassName}_getControlClass(){return this._ctrlClass}_updateControlClass(){this._ctrlClass={};this._ctrlClass["iui-contextmenu"]=!0}_updateThemeSettings(e){this._currentThemeSettings=css``;switch(e){case IntegralUITheme.Office:this._currentThemeSettings.cssText=this._commonService.replaceAll(iuiContextMenuOfficeStyle.cssText,"../icons",this._currentResourcePath);break;case IntegralUITheme.Midnight:this._currentThemeSettings.cssText=this._commonService.replaceAll(iuiContextMenuMidnightStyle.cssText,"../icons",this._currentResourcePath);break;default:this._currentThemeSettings.cssText=""}}_getItemTemplate(e){if(this.itemTemplate){let t=this.itemTemplate(e);return new TemplateResult(t.strings,t.values,"html",defaultTemplateProcessor)}else{let t={},i=this._commonService.isString(e.icon)?e.icon.split(" "):[];i.map(e=>t[e]=!0);return html` ${i.length>0?html``:html``} ${e.iconUrl?html`${e.text} `}}firstUpdated(e){this._updateReferences()}refresh(){this._updateControlClass();this.update();this._updateReferences()}render(){return html`
    ${this._currentOptions.items.map(e=>html` `)}
`}_updateControlStyleSettings(e){this._currentControlStyleSettings=css``;this._currentControlStyleSettings.cssText=this._commonService.replaceAll(iuiContextMenuDefaultStyle.cssText,"../icons",e)}_updateReferences(){this._elemRef=this.shadowRoot.querySelector("div[data-ctrl=contextmenu-win]");this._contentElem=this.shadowRoot.querySelector("#content");if(this._contentElem){this._menuItems=this._contentElem.querySelectorAll("iui-menuitem");if(this._menuItems)this._menuItems.forEach(e=>e.setParent(this))}}_at(){if(this._elemRef){this._tCmp=document.createElement("iui-tc",{is:IntegralUITComponent});if(this._tCmp){this._elemRef.appendChild(this._tCmp);this._ut()}}}_rt(){if(this._tCmp)this._tCmp.parentNode.removeChild(this._tCmp);this._tCmp=null}_ut(){this._tCmp=this._elemRef?this._elemRef.querySelector("iui-tc"):null}}window.customElements.define("iui-contextmenu-win",IntegralUIContextMenuWindow);class IntegralUIContextMenu extends IntegralUIBase{constructor(){super();this._currentSettings=null;this._winScrollPos={top:0,left:0};this._cmpRef=null;this._cmp=null;this._currentThemeSettings=css``}connectedCallback(){}disconnectedCallback(){this._removeContextMenuWindow()}attributeChangedCallback(e,t,i){super.attributeChangedCallback(e,t,i)}static get properties(){return{settings:{type:Object}}}get settings(){return this._currentSettings}set settings(e){if(this._currentSettings!==e){const t=this._currentSettings;this._currentSettings=e;this.requestUpdate("settings",t)}}_closeContextMenu(){if(this._cmpRef)this._cmpRef.close()}_removeContextMenu(){this._removeContextMenuWindow()}_menuItemClick(e){this._invokeEvent("menuClick",{event:e.detail.event,item:e.detail.item});this._removeContextMenuWindow()}_getSize(){return{width:this._elemRef.offsetWidth,height:this._elemRef.offsetHeight}}_isInsideClick(e){this._contentSlotElem=this.shadowRoot.querySelector("slot").assignedNodes();if(this._contentSlotElem){this._contentSlotElem=this._contentSlotElem.filter(e=>1===e.nodeType);if(this._contentSlotElem&&this._contentSlotElem.length>0){let t=this._commonService.getPageRect(this._contentSlotElem[0]),i=this._commonService.getMousePos(e),n=this._commonService.getShiftPos();i.x-=n.x;i.y-=n.y;return i.x>=t.left&&i.x<=t.right&&i.y>=t.top&&i.y<=t.bottom}}return!1}_ctrlContextMenu(e){if("manual"!==this._currentSettings.position)this._processMenuOpen(e)}_ctrlMouseDown(e){if("manual"===this._currentSettings.position&&(this._currentSettings.buttonType<0||e.which===this._currentSettings.buttonType))this._processMenuOpen(e,"manual")}_processMenuOpen(e,t){if(!this._isInsideClick(e))return;e.preventDefault();let i=this;i._winScrollPos={top:document.documentElement.scrollTop,left:document.documentElement.scrollLeft};let n={cancel:!1,event:e};i._invokeEvent("menuOpening",n);if(!0!==n.cancel){i._addContextMenuWindow();if(i._cmpRef){i._cmpRef.allowAnimation=i.allowAnimation;i._cmpRef.customStyle=i.customStyle;i._cmpRef.itemTemplate=i.itemTemplate;i._cmpRef.options=i._currentSettings;i._cmpRef.options.mode=t;i._cmpRef.resourcePath=i._currentResourcePath;i._cmpRef.theme=i._currentTheme;let n=i._currentSettings.appSize?i._currentSettings.appSize:{width:window.innerWidth,height:window.innerHeight};if("manual"===t)i._cmpRef.open(e,t,{x:0,y:0},n,i._elemRef.getBoundingClientRect());else i._cmpRef.open(e,t,{x:e.pageX,y:e.pageY},n);setTimeout(function(){window.scrollTo(i._winScrollPos.left,i._winScrollPos.top)},5);this._removeContextMenu=this._removeContextMenu.bind(this);this._cmpRef.addEventListener("closed",this._removeContextMenu);this._menuItemClick=this._menuItemClick.bind(this);this._cmpRef.addEventListener("menuClick",this._menuItemClick);if("manual"===t)e.stopPropagation()}}}_addContextMenuWindow(){this._removeContextMenuWindow();this._cmpRef=document.createElement("iui-contextmenu-win",{is:IntegralUIContextMenuWindow});document.body.appendChild(this._cmpRef)}_removeContextMenuWindow(){if(this._cmpRef){this._cmpRef.removeEventListener("menuClick",this._menuItemClick);this._cmpRef.removeEventListener("closed",this._removeContextMenu);this._cmpRef.parentNode.removeChild(this._cmpRef)}this._cmpRef=null}firstUpdated(e){this._updateReferences()}render(){return html`
`}_updateReferences(){this._elemRef=this.shadowRoot.querySelector("div[data-ctrl=contextmenu]")}}window.customElements.define("iui-contextmenu",IntegralUIContextMenu);export default IntegralUIContextMenu;export{IntegralUIContextMenuWindow}; \ No newline at end of file diff --git a/components/integralui.datepicker.js b/components/integralui.datepicker.js index 506fd97..492c431 100644 --- a/components/integralui.datepicker.js +++ b/components/integralui.datepicker.js @@ -1,6 +1,6 @@ /* filename: integralui.datepicker.js - version : 21.1.0 + version : 21.4.0 Copyright © 2016-2021 Lidor Systems. All rights reserved. This file is part of the "IntegralUI Web" Library. @@ -12,4 +12,4 @@ This SOFTWARE is provided "AS IS", WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for the specific language governing rights and limitations under the License. Any infringement will be prosecuted under applicable laws. */ -import{c as css,h as html}from"../external/lit-element.js";import{c as classMap}from"../external/class-map.js";import{s as styleMap}from"../external/style-map.js";import{IntegralUISpeedMode,IntegralUIWeekDays,IntegralUIDateFormat,IntegralUIObjectState,IntegralUITheme}from"./integralui.enums.js";import IntegralUIBase from"./integralui.base.js";import IntegralUIDropDown from"./integralui.dropdown.js";import"./integralui.calendar.js";import"./integralui.header.js";import{iuiDatePickerDefaultStyle}from"../styles/integralui.datepicker.style.js";import{iuiDatePickerOfficeStyle}from"../themes/office/integralui.datepicker.office.js";import{iuiDatePickerMidnightStyle}from"../themes/midnight/integralui.datepicker.midnight.js";class IntegralUIDatePicker extends IntegralUIBase{_init(){super._init();this._currentAnimationSpeed=IntegralUISpeedMode.Normal;this._cmpRef=null;this._currentDropDownAdjustment={top:0,left:0,width:0,height:0};this._currentFirstDayOfWeek=IntegralUIWeekDays.Sunday;this._currentFormat=IntegralUIDateFormat.Short;this._currentFormatOptions=null;this._currentLocales="en-us";this._currentSelectedDate=new Date();this._expandState="none";this._isExpanded=!1;this._currentCalendarSize={width:250,height:200};this._headerClass={};this._generalClassName="iui-datepicker";this._headerClassName=this._generalClassName+"-header";this._headerExpandBoxClassName=this._headerClassName+"-expand-box";this._calendarClassName="iui-calendar";this._calendarCellClassName="iui-calendar-cell";this._currentControlStyleSettings=iuiDatePickerDefaultStyle;this._initStyle()}_initStyle(){this._defaultStyle={general:{disabled:this._generalClassName+"-disabled",focused:this._generalClassName+"-focused",normal:this._generalClassName,hovered:this._generalClassName+"-hovered",selected:this._generalClassName+"-selected"},header:{general:{disabled:this._headerClassName+"-disabled",focused:this._headerClassName+"-focused",normal:this._headerClassName,hovered:this._headerClassName+"-hovered",selected:this._headerClassName+"-selected"},expandBox:this._headerExpandBoxClassName},calendar:{general:{disabled:this._calendarClassName+"-disabled",focused:this._calendarClassName+"-focused",normal:this._calendarClassName,hovered:this._calendarClassName+"-hovered",selected:this._calendarClassName+"-selected"},cell:{disabled:this._calendarCellClassName+"-disabled",focused:this._calendarCellClassName+"-focused",grayed:this._calendarCellClassName+"-grayed",normal:this._calendarCellClassName,hovered:this._calendarCellClassName+"-hovered",selected:this._calendarCellClassName+"-selected",today:this._calendarCellClassName+"-today"}}};this.refresh()}connectedCallback(){}disconnectedCallback(){}attributeChangedCallback(e,t,a){super.attributeChangedCallback(e,t,a)}static get properties(){return{animationSpeed:{attribute:"animation-speed",converter:{fromAttribute:e=>{switch((e=e.replace(/"|'/,"").replace(/"|'/,"")).toLowerCase()){case"veryslow":return IntegralUISpeedMode.VerySlow;case"slow":return IntegralUISpeedMode.Slow;case"fast":return IntegralUISpeedMode.Fast;case"veryfast":return IntegralUISpeedMode.VeryFast;default:return IntegralUISpeedMode.Normal}},toAttribute:e=>{switch(e){case IntegralUISpeedMode.VerySlow:return"VerySlow";case IntegralUISpeedMode.Slow:return"Slow";case IntegralUISpeedMode.Fast:return"Fast";case IntegralUISpeedMode.VeryFast:return"VeryFast";default:return"Normal"}}},reflect:!0},calendarSize:{type:Object,attribute:"calendar-size"},dropDownAdjustment:{type:Object,attribute:"dropdown-adjustment"},expanded:{type:Boolean,reflect:!0},firstDayOfWeek:{attribute:"first-dayofweek",converter:{fromAttribute:e=>{switch((e=e.replace(/"|'/,"").replace(/"|'/,"")).toLowerCase()){case"monday":return IntegralUIWeekDays.Monday;case"tuesday":return IntegralUIWeekDays.Tuesday;case"wednesday":return IntegralUIWeekDays.Wednesday;case"thursday":return IntegralUIWeekDays.Thursday;case"friday":return IntegralUIWeekDays.Friday;case"saturday":return IntegralUIWeekDays.Saturday;default:return IntegralUIWeekDays.Sunday}},toAttribute:e=>{switch(e){case IntegralUIWeekDays.Monday:return"Monday";case IntegralUIWeekDays.Tuesday:return"Tuesday";case IntegralUIWeekDays.Wednesday:return"Wednesday";case IntegralUIWeekDays.Thursday:return"Thursday";case IntegralUIWeekDays.Friday:return"Friday";case IntegralUIWeekDays.Saturday:return"Saturday";default:return"Sunday"}}},reflect:!0},format:{converter:{fromAttribute:e=>{switch((e=e.replace(/"|'/,"").replace(/"|'/,"")).toLowerCase()){case"long":return IntegralUIDateFormat.Long;case"custom":return IntegralUIDateFormat.Custom;default:return IntegralUIDateFormat.Short}},toAttribute:e=>{switch(e){case IntegralUIDateFormat.Long:return"Long";case IntegralUIDateFormat.Custom:return"Custom";default:return"Short"}}},reflect:!0},formatOptions:{type:Object,attribute:"format-options"},locales:{type:String,reflect:!0},selectedDate:{type:Object,attribute:"selected-date"}}}get animationSpeed(){return this._currentAnimationSpeed}set animationSpeed(e){if(this._currentAnimationSpeed!==e){const t=this._currentAnimationSpeed;this._currentAnimationSpeed=e;this.requestUpdate("animationSpeed",t)}}get dropDownAdjustment(){return this._currentDropDownAdjustment}set dropDownAdjustment(e){if(e){const t=this._currentDropDownAdjustment;if(void 0!==e.top&&this._currentDropDownAdjustment.top!==e.top)this._currentDropDownAdjustment.top=e.top;if(void 0!==e.left&&this._currentDropDownAdjustment.left!==e.left)this._currentDropDownAdjustment.left=e.left;if(void 0!==e.width&&this._currentDropDownAdjustment.width!==e.width)this._currentDropDownAdjustment.width=e.width;if(void 0!==e.height&&this._currentDropDownSize.height!==e.height)this._currentDropDownAdjustment.height=e.height;this.requestUpdate("dropDownAdjustment",t)}}get expanded(){return this._isExpanded}set expanded(e){if(this._isExpanded!==e){const t=this._isExpanded;let a=this,r={cancel:!1,date:this._currentSelectedDate};a._invokeEvent("beforeExpand",r);if(!0!==r.cancel){a._isExpanded=e;if(e)a._expandState="expand";else a._expandState="collapse";let r=setTimeout(function(){if("collapse"===a._expandState)a._expandState="none";clearTimeout(r)},300);a._isExpanded=e;a._header.animationState=a._isExpanded?"expand":"collapse";a.toggle();a.requestUpdate("expanded",t)}}}get firstDayOfWeek(){return this._currentFirstDayOfWeek}set firstDayOfWeek(e){if(this._currentFirstDayOfWeek!==e){const t=this._currentFirstDayOfWeek;this._currentFirstDayOfWeek=e;this.requestUpdate("firstDayOfWeek",t)}}get calendarSize(){return this._currentCalendarSize}set calendarSize(e){if(e){const t=this._currentCalendarSize;if(e.width&&this._currentCalendarSize.width!==e.width)this._currentCalendarSize.width=e.width;if(e.height&&this._currentCalendarSize.height!==e.height)this._currentCalendarSize.height=e.height;this.requestUpdate("calendarSize",t)}}get format(){return this._currentFormat}set format(e){if(this._currentFormat!==e){const t=this._currentFormat;this._currentFormat=e;this.requestUpdate("format",t)}}get formatOptions(){return this._currentFormatOptions}set formatOptions(e){if(this._currentFormatOptions!==e){const t=this._currentFormatOptions;this._currentFormatOptions=e;this.requestUpdate("formatOptions",t)}}get locales(){return this._currentLocales}set locales(e){if(this._currentLocales!==e){const t=this._currentLocales;this._currentLocales=e;this.requestUpdate("locales",t)}}get selectedDate(){return this._currentSelectedDate}set selectedDate(e){if(this._currentSelectedDate!==e){const t=this._currentSelectedDate;this._currentSelectedDate=e;this._invokeEvent("dateChanged",{date:this._currentSelectedDate});this.requestUpdate("selectedDate",t)}}_getSelectedDate(){let e="";if(this._currentSelectedDate){let t={year:"numeric",month:"numeric",day:"numeric"};switch(this._currentFormat){case IntegralUIDateFormat.Long:t.weekday="long";break;case IntegralUIDateFormat.Custom:t=this._currentFormatOptions;break;default:this._defaultFunc()}e=this._currentSelectedDate.toLocaleString(this.locales,t)}return e}_addCalendar(){this._removeCalendar();this._cmpRef=document.createElement("iui-dropdown",{is:IntegralUIDropDown});document.body.appendChild(this._cmpRef);if(this._cmpRef){this._cmpRef.allowAnimation=this.allowAnimation;this._cmpRef.animationSpeed=this.animationSpeed;this._cmpRef.contentTemplate=this._getContentTemplate();this._cmpRef.customStyle=this.customStyle;this._cmpRef.resourcePath=this.resourcePath;this._cmpRef.size=this._currentCalendarSize;this._cmpRef.theme=this._currentTheme;let e=this._commonService.getPageRect(this._elemRef),t=this._commonService.getShiftPos();this._cmpRef.position={top:e.top+this._header.getSize().height+t.y+this._currentDropDownAdjustment.top,left:e.left+t.x+this._currentDropDownAdjustment.left};this._cmpRef.open();this._removeCtrl=this._removeCtrl.bind(this);this._cmpRef.addEventListener("closed",this._removeCtrl);let a=this;setTimeout(function(){let e=a._cmpRef.getContent();if(e&&e.setFocus)e.setFocus()},100)}}_closeCalendar(){if(this._cmpRef)this._cmpRef.close()}_calendarBlur(e){this._closeCalendar()}_dateChanged(e){this.selectedDate=e.detail.date;this._closeCalendar();this.update()}_removeCtrl(e){this.collapse();this._invokeEvent("closed",{date:this._currentSelectedDate});this._removeCalendar()}_removeCalendar(){if(this._cmpRef){this._cmpRef.removeEventListener("closed",this._removeCtrl);this._cmpRef.parentNode.removeChild(this._cmpRef)}this._cmpRef=null}collapse(){this.expanded=!1}expand(){this.expanded=!0}toggle(){if(this._isExpanded)this._addCalendar()}_ctrlKeyDown(e){let t={cancel:!1,date:this._currentSelectedDate,event:e};this._invokeEvent("keyDown",t);let a=e.shiftKey?e.ctrlKey?365:30:1;switch(e.keyCode){case 37:if(!t.cancel){let e=new Date(Number(this._currentSelectedDate));e.setDate(e.getDate()-a);this.selectedDate=e;this.update()}e.stopPropagation();break;case 39:if(!t.cancel){let e=new Date(Number(this._currentSelectedDate));e.setDate(e.getDate()+a);this.selectedDate=e;this.update()}e.stopPropagation();break;default:this._defaultFunc()}}_onCtrlMouseEnter(e){if(this._isEnabled)this.state|=IntegralUIObjectState.hovered}_onCtrlMouseLeave(e){this.state&=~IntegralUIObjectState.hovered}_openCalendar(e){if(this._isEnabled&&1===e.detail.buttons){this.expanded=!0;this._invokeEvent("opened",{event:e.detail})}}_getCurrentHeaderStyle(){return this._defaultStyle.header}_updateThemeSettings(e){this._currentThemeSettings=css``;switch(e){case IntegralUITheme.Office:this._currentThemeSettings.cssText=this._commonService.replaceAll(iuiDatePickerOfficeStyle.cssText,"../icons",this._currentResourcePath);break;case IntegralUITheme.Midnight:this._currentThemeSettings.cssText=this._commonService.replaceAll(iuiDatePickerMidnightStyle.cssText,"../icons",this._currentResourcePath);break;default:this._currentThemeSettings.cssText=""}}_getContentTemplate(){let e={width:this._currentCalendarSize.width-4,height:this._currentCalendarSize.height-4};return html``}firstUpdated(e){this.updateLayout()}render(){return html`
`}_updateControlStyleSettings(e){this._currentControlStyleSettings=css``;this._currentControlStyleSettings.cssText=this._commonService.replaceAll(iuiDatePickerDefaultStyle.cssText,"../icons",e)}_updateReferences(){this._elemRef=this.shadowRoot.querySelector("div[data-ctrl=datepicker]");this._header=this.shadowRoot.querySelector("#header")}}window.customElements.define("iui-datepicker",IntegralUIDatePicker);export default IntegralUIDatePicker; \ No newline at end of file +import{c as css,h as html}from"../external/lit-element.js";import{c as classMap}from"../external/class-map.js";import{s as styleMap}from"../external/style-map.js";import IntegralUIBase from"./integralui.base.js";import{IntegralUISpeedMode,IntegralUIWeekDays,IntegralUIDateFormat,IntegralUIObjectState,IntegralUITheme}from"./integralui.enums.js";import IntegralUIDropDown from"./integralui.dropdown.js";import"./integralui.header.js";import"./integralui.calendar.js";import{iuiDatePickerDefaultStyle}from"../styles/integralui.datepicker.style.js";import{iuiDatePickerOfficeStyle}from"../themes/office/integralui.datepicker.office.js";import{iuiDatePickerMidnightStyle}from"../themes/midnight/integralui.datepicker.midnight.js";class IntegralUIDatePicker extends IntegralUIBase{_init(){super._init();this._currentAnimationSpeed=IntegralUISpeedMode.Normal;this._currentAnimationType="arrow";this._cmpRef=null;this._currentDropDownAdjustment={top:0,left:0,width:0,height:0};this._currentFirstDayOfWeek=IntegralUIWeekDays.Sunday;this._currentFormat=IntegralUIDateFormat.Short;this._currentFormatOptions=null;this._currentLocales="en-us";this._currentSelectedDate=new Date();this._expandState="none";this._isExpanded=!1;this._currentCalendarSize={width:250,height:200};this._headerClass={};this._generalClassName="iui-datepicker";this._headerClassName=this._generalClassName+"-header";this._headerExpandBoxClassName=this._headerClassName+"-expand-box";this._calendarClassName="iui-calendar";this._calendarCellClassName="iui-calendar-cell";this._currentControlStyleSettings=iuiDatePickerDefaultStyle;this._focusTimeout=null;this._initStyle()}_initStyle(){this._defaultStyle={general:{disabled:this._generalClassName+"-disabled",focused:this._generalClassName+"-focused",normal:this._generalClassName,hovered:this._generalClassName+"-hovered",selected:this._generalClassName+"-selected"},header:{general:{disabled:this._headerClassName+"-disabled",focused:this._headerClassName+"-focused",normal:this._headerClassName,hovered:this._headerClassName+"-hovered",selected:this._headerClassName+"-selected"},expandBox:this._headerExpandBoxClassName},calendar:{general:{disabled:this._calendarClassName+"-disabled",focused:this._calendarClassName+"-focused",normal:this._calendarClassName,hovered:this._calendarClassName+"-hovered",selected:this._calendarClassName+"-selected"},cell:{disabled:this._calendarCellClassName+"-disabled",focused:this._calendarCellClassName+"-focused",grayed:this._calendarCellClassName+"-grayed",normal:this._calendarCellClassName,hovered:this._calendarCellClassName+"-hovered",selected:this._calendarCellClassName+"-selected",today:this._calendarCellClassName+"-today"}}};this.refresh()}connectedCallback(){}disconnectedCallback(){if(this._focusTimeout)clearTimeout(this._focusTimeout)}attributeChangedCallback(e,t,a){super.attributeChangedCallback(e,t,a)}static get properties(){return{animationSpeed:{attribute:"animation-speed",converter:{fromAttribute:e=>{switch((e=e.replace(/"|'/,"").replace(/"|'/,"")).toLowerCase()){case"veryslow":return IntegralUISpeedMode.VerySlow;case"slow":return IntegralUISpeedMode.Slow;case"fast":return IntegralUISpeedMode.Fast;case"veryfast":return IntegralUISpeedMode.VeryFast;default:return IntegralUISpeedMode.Normal}},toAttribute:e=>{switch(e){case IntegralUISpeedMode.VerySlow:return"VerySlow";case IntegralUISpeedMode.Slow:return"Slow";case IntegralUISpeedMode.Fast:return"Fast";case IntegralUISpeedMode.VeryFast:return"VeryFast";default:return"Normal"}}},reflect:!0},animationType:{type:String,reflect:!0},calendarSize:{type:Object,attribute:"calendar-size"},dropDownAdjustment:{type:Object,attribute:"dropdown-adjustment"},expanded:{type:Boolean,reflect:!0},firstDayOfWeek:{attribute:"first-dayofweek",converter:{fromAttribute:e=>{switch((e=e.replace(/"|'/,"").replace(/"|'/,"")).toLowerCase()){case"monday":return IntegralUIWeekDays.Monday;case"tuesday":return IntegralUIWeekDays.Tuesday;case"wednesday":return IntegralUIWeekDays.Wednesday;case"thursday":return IntegralUIWeekDays.Thursday;case"friday":return IntegralUIWeekDays.Friday;case"saturday":return IntegralUIWeekDays.Saturday;default:return IntegralUIWeekDays.Sunday}},toAttribute:e=>{switch(e){case IntegralUIWeekDays.Monday:return"Monday";case IntegralUIWeekDays.Tuesday:return"Tuesday";case IntegralUIWeekDays.Wednesday:return"Wednesday";case IntegralUIWeekDays.Thursday:return"Thursday";case IntegralUIWeekDays.Friday:return"Friday";case IntegralUIWeekDays.Saturday:return"Saturday";default:return"Sunday"}}},reflect:!0},format:{converter:{fromAttribute:e=>{switch((e=e.replace(/"|'/,"").replace(/"|'/,"")).toLowerCase()){case"long":return IntegralUIDateFormat.Long;case"custom":return IntegralUIDateFormat.Custom;default:return IntegralUIDateFormat.Short}},toAttribute:e=>{switch(e){case IntegralUIDateFormat.Long:return"Long";case IntegralUIDateFormat.Custom:return"Custom";default:return"Short"}}},reflect:!0},formatOptions:{type:Object,attribute:"format-options"},locales:{type:String,reflect:!0},selectedDate:{type:Object,attribute:"selected-date"}}}get animationSpeed(){return this._currentAnimationSpeed}set animationSpeed(e){if(this._currentAnimationSpeed!==e){const t=this._currentAnimationSpeed;this._currentAnimationSpeed=e;this.requestUpdate("animationSpeed",t)}}get animationType(){return this._currentAnimationType}set animationType(e){if(this._currentAnimationType!==e){const t=this._currentAnimationType;this._currentAnimationType=e;this.requestUpdate("animationSpeed",t)}}get calendarSize(){return this._currentCalendarSize}set calendarSize(e){if(e){const t=this._currentCalendarSize;if(e.width&&this._currentCalendarSize.width!==e.width)this._currentCalendarSize.width=e.width;if(e.height&&this._currentCalendarSize.height!==e.height)this._currentCalendarSize.height=e.height;this.requestUpdate("calendarSize",t)}}get dropDownAdjustment(){return this._currentDropDownAdjustment}set dropDownAdjustment(e){if(e){const t=this._currentDropDownAdjustment;if(void 0!==e.top&&this._currentDropDownAdjustment.top!==e.top)this._currentDropDownAdjustment.top=e.top;if(void 0!==e.left&&this._currentDropDownAdjustment.left!==e.left)this._currentDropDownAdjustment.left=e.left;if(void 0!==e.width&&this._currentDropDownAdjustment.width!==e.width)this._currentDropDownAdjustment.width=e.width;if(void 0!==e.height&&this._currentDropDownSize.height!==e.height)this._currentDropDownAdjustment.height=e.height;this.requestUpdate("dropDownAdjustment",t)}}get expanded(){return this._isExpanded}set expanded(e){if(this._isExpanded!==e){const t=this._isExpanded;let a=this,r={cancel:!1,date:this._currentSelectedDate};a._invokeEvent("beforeExpand",r);if(!0!==r.cancel){a._isExpanded=e;if(e)a._expandState="expand";else a._expandState="collapse";let r=setTimeout(function(){if("collapse"===a._expandState)a._expandState="none";clearTimeout(r)},300);a._isExpanded=e;a._header.animationState=a._isExpanded?"expand":"collapse";a.toggle();a.requestUpdate("expanded",t)}}}get firstDayOfWeek(){return this._currentFirstDayOfWeek}set firstDayOfWeek(e){if(this._currentFirstDayOfWeek!==e){const t=this._currentFirstDayOfWeek;this._currentFirstDayOfWeek=e;this.requestUpdate("firstDayOfWeek",t)}}get format(){return this._currentFormat}set format(e){if(this._currentFormat!==e){const t=this._currentFormat;this._currentFormat=e;this.requestUpdate("format",t)}}get formatOptions(){return this._currentFormatOptions}set formatOptions(e){if(this._currentFormatOptions!==e){const t=this._currentFormatOptions;this._currentFormatOptions=e;this.requestUpdate("formatOptions",t)}}get locales(){return this._currentLocales}set locales(e){if(this._currentLocales!==e){const t=this._currentLocales;this._currentLocales=e;this.requestUpdate("locales",t)}}get selectedDate(){return this._currentSelectedDate}set selectedDate(e){if(this._currentSelectedDate!==e){const t=this._currentSelectedDate;this._currentSelectedDate=e;this._invokeEvent("dateChanged",{date:this._currentSelectedDate});this.requestUpdate("selectedDate",t)}}_getSelectedDate(){let e="";if(this._commonService.isDate(this._currentSelectedDate)){let t={year:"numeric",month:"numeric",day:"numeric"};switch(this._currentFormat){case IntegralUIDateFormat.Long:t.weekday="long";break;case IntegralUIDateFormat.Custom:t=this._currentFormatOptions;break;default:this._defaultFunc()}e=this._currentSelectedDate.toLocaleString(this.locales,t)}return e}_addCalendar(){this._removeCalendar();this._cmpRef=document.createElement("iui-dropdown",{is:IntegralUIDropDown});document.body.appendChild(this._cmpRef);if(this._cmpRef){this._cmpRef.allowAnimation=this.allowAnimation;this._cmpRef.animationSpeed=this.animationSpeed;this._cmpRef.contentTemplate=this._getContentTemplate();this._cmpRef.customStyle=this.customStyle;this._cmpRef.resourcePath=this.resourcePath;this._cmpRef.size=this._currentCalendarSize;this._cmpRef.theme=this._currentTheme;let e=this._commonService.getPageRect(this._elemRef),t=this._commonService.getShiftPos();this._cmpRef.position={top:e.top+this._header.getSize().height+t.y+this._currentDropDownAdjustment.top,left:e.left+t.x+this._currentDropDownAdjustment.left};this._cmpRef.open();this._removeCtrl=this._removeCtrl.bind(this);this._cmpRef.addEventListener("closed",this._removeCtrl);let a=this;setTimeout(function(){let e=a._cmpRef.getContent();if(e&&e.setFocus)e.setFocus()},100)}}_closeCalendar(){if(this._cmpRef)this._cmpRef.close()}_calendarBlur(e){this._closeCalendar()}_dateChanged(e){this.selectedDate=e.detail.date;this._closeCalendar();this.update();let t=this;t._focusTimeout=setTimeout(function(){t.setFocus();clearTimeout(t._focusTimeout)},1)}_removeCtrl(e){this.collapse();this._invokeEvent("closed",{date:this._currentSelectedDate});this._removeCalendar()}_removeCalendar(){if(this._cmpRef){this._cmpRef.removeEventListener("closed",this._removeCtrl);this._cmpRef.parentNode.removeChild(this._cmpRef)}this._cmpRef=null}collapse(){this.expanded=!1}expand(){this.expanded=!0}toggle(){if(this._isExpanded)this._addCalendar()}_ctrlKeyDown(e){let t={cancel:!1,date:this._currentSelectedDate,event:e};this._invokeEvent("keyDown",t);if(this._currentSelectedDate){let a=e.shiftKey?e.ctrlKey?365:30:1;switch(e.keyCode){case 37:if(!t.cancel){let e=new Date(Number(this._currentSelectedDate));e.setDate(e.getDate()-a);this.selectedDate=e;this.update()}e.stopPropagation();break;case 39:if(!t.cancel){let e=new Date(Number(this._currentSelectedDate));e.setDate(e.getDate()+a);this.selectedDate=e;this.update()}e.stopPropagation();break;default:this._defaultFunc()}}}_onCtrlMouseEnter(e){if(this._isEnabled)this.state|=IntegralUIObjectState.hovered}_onCtrlMouseLeave(e){this.state&=~IntegralUIObjectState.hovered}_openCalendar(e){if(this._isEnabled&&1===e.detail.buttons){this.expanded=!0;this._invokeEvent("opened",{event:e.detail})}}_getCurrentHeaderStyle(){return this._defaultStyle.header}_updateThemeSettings(e){this._currentThemeSettings=css``;switch(e){case IntegralUITheme.Office:this._currentThemeSettings.cssText=this._commonService.replaceAll(iuiDatePickerOfficeStyle.cssText,"../../icons",this._currentResourcePath);break;case IntegralUITheme.Midnight:this._currentThemeSettings.cssText=this._commonService.replaceAll(iuiDatePickerMidnightStyle.cssText,"../../icons",this._currentResourcePath);break;default:this._currentThemeSettings.cssText=""}}_getContentTemplate(){let e={width:this._currentCalendarSize.width-4,height:this._currentCalendarSize.height-4};return html``}firstUpdated(e){this.updateLayout()}render(){return html`
`}_updateControlStyleSettings(e){this._currentControlStyleSettings=css``;this._currentControlStyleSettings.cssText=this._commonService.replaceAll(iuiDatePickerDefaultStyle.cssText,"../icons",e)}_updateReferences(){this._elemRef=this.shadowRoot.querySelector("div[data-ctrl=datepicker]");this._header=this.shadowRoot.querySelector("#header")}}window.customElements.define("iui-datepicker",IntegralUIDatePicker);export default IntegralUIDatePicker; \ No newline at end of file diff --git a/components/integralui.dragwin.js b/components/integralui.dragwin.js index 2206734..d7fb26c 100644 --- a/components/integralui.dragwin.js +++ b/components/integralui.dragwin.js @@ -1,6 +1,6 @@ /* filename: integralui.dragwin.js - version : 21.1.0 + version : 21.4.0 Copyright © 2016-2021 Lidor Systems. All rights reserved. This file is part of the "IntegralUI Web" Library. @@ -12,4 +12,4 @@ This SOFTWARE is provided "AS IS", WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for the specific language governing rights and limitations under the License. Any infringement will be prosecuted under applicable laws. */ -import{L as LitElement,c as css,h as html}from"../external/lit-element.js";import{c as classMap}from"../external/class-map.js";import{s as styleMap}from"../external/style-map.js";import IntegralUICommonService from"../services/integralui.common.service.js";import{IntegralUITheme}from"./integralui.enums.js";import{iuiDragWinDefaultStyle}from"../styles/integralui.dragdrop.style.js";import{iuiDragWinOfficeStyle}from"../themes/office/integralui.dragdrop.office.js";import{iuiDragWinMidnightStyle}from"../themes/midnight/integralui.dragdrop.midnight.js";class IntegralUIDragWindow extends LitElement{constructor(){super();this._commonService=new IntegralUICommonService();this._currentIconClass="";this._currentPosition={x:0,y:0};this._currentSize={width:0,height:0};this._currentTitle="";this._currentDisplay="block";this._currentControlStyleSettings=iuiDragWinDefaultStyle;this._currentResourcePath="../icons";this._currentTheme=IntegralUITheme.None;this._currentThemeSettings=css``}connectedCallback(){}disconnectedCallback(){}static get properties(){return{display:{type:String,reflect:!0},iconClass:{type:String,attribute:"icon-class",reflect:!0},position:{type:Object},resourcePath:{type:String,attribute:"resource-path",reflect:!0},size:{type:Object},title:{type:String,reflect:!0},theme:{converter:{fromAttribute:t=>{switch((t=t.replace(/"|'/,"").replace(/"|'/,"")).toLowerCase()){case"office":return IntegralUITheme.Office;case"midnight":return IntegralUITheme.Midnight;default:return IntegralUITheme.None}},toAttribute:t=>{switch(t){case IntegralUITheme.Office:return"Office";case IntegralUITheme.Midnight:return"Midnight";default:return"None"}}},reflect:!0}}}attributeChangedCallback(t,e,i){super.attributeChangedCallback(t,e,i)}get display(){return this._currentDisplay}set display(t){if(this._currentDisplay!==t){const e=this._currentDisplay;this._currentDisplay=t;this.requestUpdate("display",e)}}get iconClass(){return this._currentIconClass}set iconClass(t){if(this._currentIconClass!==t){const e=this._currentIconClass;this._currentIconClass=t;this.requestUpdate("iconClass",e)}}get position(){return this._currentPosition}set position(t){const e=this._currentPosition;this._currentPosition=t;this.requestUpdate("position",e)}get resourcePath(){return this._currentResourcePath}set resourcePath(t){if(this._currentResourcePath!==t){const e=this._currentResourcePath;this._currentResourcePath=t;this._updateControlStyleSettings(t);this.requestUpdate("resourcePath",e)}}get size(){return this._currentSize}set size(t){const e=this._currentSize;this._currentSize=t;this.requestUpdate("size",e)}get title(){return this._currentTitle}set title(t){if(this._currentTitle!==t){const e=this._currentTitle;this._currentTitle=t;this.requestUpdate("title",e)}}get theme(){return this._currentTheme}set theme(t){if(this._currentTheme!==t){const e=this._currentTheme;this._currentTheme=t;this._updateThemeSettings(t);this.requestUpdate("theme",e);this.refresh()}}updatePos(t){if(t){if(t.class)this.iconClass=t.class;this.position={x:t.left,y:t.top};if(t.text)this.title=t.text;this.refresh()}}_updateThemeSettings(t){this._currentThemeSettings=css``;switch(t){case IntegralUITheme.Office:this._currentThemeSettings.cssText=this._commonService.replaceAll(iuiDragWinOfficeStyle.cssText,"../icons",this._currentResourcePath);break;case IntegralUITheme.Midnight:this._currentThemeSettings.cssText=this._commonService.replaceAll(iuiDragWinMidnightStyle.cssText,"../icons",this._currentResourcePath);break;default:this._currentThemeSettings.cssText=""}}firstUpdated(t){}refresh(){this.update()}render(){return html`
${this.title}
`}_updateControlStyleSettings(t){this._currentControlStyleSettings=css``;this._currentControlStyleSettings.cssText=this._commonService.replaceAll(iuiDragWinDefaultStyle.cssText,"../icons",t)}}window.customElements.define("iui-dragwin",IntegralUIDragWindow);export default IntegralUIDragWindow; \ No newline at end of file +import{L as LitElement,c as css,h as html}from"../external/lit-element.js";import{c as classMap}from"../external/class-map.js";import{s as styleMap}from"../external/style-map.js";import IntegralUICommonService from"../services/integralui.common.service.js";import{IntegralUITheme}from"./integralui.enums.js";import{iuiDragWinDefaultStyle}from"../styles/integralui.dragdrop.style.js";import{iuiDragWinOfficeStyle}from"../themes/office/integralui.dragdrop.office.js";import{iuiDragWinMidnightStyle}from"../themes/midnight/integralui.dragdrop.midnight.js";class IntegralUIDragWindow extends LitElement{constructor(){super();this._commonService=new IntegralUICommonService();this._currentIconClass="";this._currentPosition={x:0,y:0};this._currentSize={width:0,height:0};this._currentTitle="";this._currentDisplay="block";this._currentControlStyleSettings=iuiDragWinDefaultStyle;this._currentResourcePath="../icons";this._currentCustomStyle={};this._currentTheme=IntegralUITheme.None;this._currentThemeSettings=css``}connectedCallback(){}disconnectedCallback(){}static get properties(){return{customStyle:{type:Object,attribute:"custom-style"},display:{type:String,reflect:!0},iconClass:{type:String,attribute:"icon-class",reflect:!0},position:{type:Object},resourcePath:{type:String,attribute:"resource-path",reflect:!0},size:{type:Object},title:{type:String,reflect:!0},theme:{converter:{fromAttribute:t=>{switch((t=t.replace(/"|'/,"").replace(/"|'/,"")).toLowerCase()){case"office":return IntegralUITheme.Office;case"midnight":return IntegralUITheme.Midnight;default:return IntegralUITheme.None}},toAttribute:t=>{switch(t){case IntegralUITheme.Office:return"Office";case IntegralUITheme.Midnight:return"Midnight";default:return"None"}}},reflect:!0}}}attributeChangedCallback(t,e,s){super.attributeChangedCallback(t,e,s)}get customStyle(){return this._currentCustomStyle}set customStyle(t){if(this._currentCustomStyle!==t){const e=this._currentCustomStyle;this._currentCustomStyle=t;this.requestUpdate("customStyle",e);this.refresh()}}get display(){return this._currentDisplay}set display(t){if(this._currentDisplay!==t){const e=this._currentDisplay;this._currentDisplay=t;this.requestUpdate("display",e)}}get iconClass(){return this._currentIconClass}set iconClass(t){if(this._currentIconClass!==t){const e=this._currentIconClass;this._currentIconClass=t;this.requestUpdate("iconClass",e)}}get position(){return this._currentPosition}set position(t){const e=this._currentPosition;this._currentPosition=t;this.requestUpdate("position",e)}get resourcePath(){return this._currentResourcePath}set resourcePath(t){if(this._currentResourcePath!==t){const e=this._currentResourcePath;this._currentResourcePath=t;this._updateControlStyleSettings(t);this.requestUpdate("resourcePath",e)}}get size(){return this._currentSize}set size(t){const e=this._currentSize;this._currentSize=t;this.requestUpdate("size",e)}get title(){return this._currentTitle}set title(t){if(this._currentTitle!==t){const e=this._currentTitle;this._currentTitle=t;this.requestUpdate("title",e)}}get theme(){return this._currentTheme}set theme(t){if(this._currentTheme!==t){const e=this._currentTheme;this._currentTheme=t;this._updateThemeSettings(t);this.requestUpdate("theme",e);this.refresh()}}updatePos(t){if(t){if(t.class)this.iconClass=t.class;this.position={x:t.left,y:t.top};if(t.text)this.title=t.text;this.refresh()}}_updateThemeSettings(t){this._currentThemeSettings=css``;switch(t){case IntegralUITheme.Office:this._currentThemeSettings.cssText=this._commonService.replaceAll(iuiDragWinOfficeStyle.cssText,"../icons",this._currentResourcePath);break;case IntegralUITheme.Midnight:this._currentThemeSettings.cssText=this._commonService.replaceAll(iuiDragWinMidnightStyle.cssText,"../icons",this._currentResourcePath);break;default:this._currentThemeSettings.cssText=""}}firstUpdated(t){}refresh(){this.update()}render(){return html`
${""!==this._currentIconClass?html``:html``} ${this._currentTitle}
`}_updateControlStyleSettings(t){this._currentControlStyleSettings=css``;this._currentControlStyleSettings.cssText=this._commonService.replaceAll(iuiDragWinDefaultStyle.cssText,"../icons",t)}}window.customElements.define("iui-dragwin",IntegralUIDragWindow);export default IntegralUIDragWindow; \ No newline at end of file diff --git a/components/integralui.dropdown.js b/components/integralui.dropdown.js index a288e44..5b84333 100644 --- a/components/integralui.dropdown.js +++ b/components/integralui.dropdown.js @@ -1,6 +1,6 @@ /* filename: integralui.dropdown.js - version : 21.1.0 + version : 21.4.0 Copyright © 2016-2021 Lidor Systems. All rights reserved. This file is part of the "IntegralUI Web" Library. @@ -12,4 +12,4 @@ This SOFTWARE is provided "AS IS", WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for the specific language governing rights and limitations under the License. Any infringement will be prosecuted under applicable laws. */ -import{h as html}from"../external/lit-element.js";import{c as classMap}from"../external/class-map.js";import{s as styleMap}from"../external/style-map.js";import{IntegralUISpeedMode}from"./integralui.enums.js";import IntegralUIBase from"./integralui.base.js";class IntegralUIDropDown extends IntegralUIBase{_init(){super._init();this._closeTimer=null;this._currentAnimationSpeed=IntegralUISpeedMode.Normal;this._openTimer=null;this._keepActive=!1;this._currentValue=null;this._ctrlDisplay="block";this._ctrlOpacity=1;this._ctrlPos={top:0,left:0};this._contentDisplay="absolute";this._contentOpacity=0;this._contentPos={top:-9999,left:0};this._generalClassName="iui-dropdown";this._currentContentTemplate=html``;this._initStyle()}_initStyle(){this._defaultStyle={general:{disabled:this._generalClassName+"-disabled",focused:this._generalClassName+"-focused",normal:this._generalClassName,hovered:this._generalClassName+"-hovered",selected:this._generalClassName+"-selected"}};this.refresh()}connectedCallback(){}disconnectedCallback(){this._removeCloseTimer();this._removeOpenTimer()}static get properties(){return{animationSpeed:{attribute:"animation-speed",converter:{fromAttribute:e=>{switch((e=e.replace(/"|'/,"").replace(/"|'/,"")).toLowerCase()){case"veryslow":return IntegralUISpeedMode.VerySlow;case"slow":return IntegralUISpeedMode.Slow;case"fast":return IntegralUISpeedMode.Fast;case"veryfast":return IntegralUISpeedMode.VeryFast;default:return IntegralUISpeedMode.Normal}},toAttribute:e=>{switch(e){case IntegralUISpeedMode.VerySlow:return"VerySlow";case IntegralUISpeedMode.Slow:return"Slow";case IntegralUISpeedMode.Fast:return"Fast";case IntegralUISpeedMode.VeryFast:return"VeryFast";default:return"Normal"}}},reflect:!0},contentTemplate:{type:Object,attribute:"content-template"},display:{type:String,reflect:!0},opacity:{type:Number,reflect:!0},position:{type:Object},value:{type:Number,reflect:!0}}}attributeChangedCallback(e,t,i){super.attributeChangedCallback(e,t,i)}get animationSpeed(){return this._currentAnimationSpeed}set animationSpeed(e){if(this._currentAnimationSpeed!==e){const t=this._currentAnimationSpeed;this._currentAnimationSpeed=e;this.requestUpdate("animationSpeed",t)}}get contentTemplate(){return this._currentContentTemplate}set contentTemplate(e){const t=this._currentContentTemplate;this._currentContentTemplate=e;this.requestUpdate("contentTemplate",t)}get display(){return this._ctrlDisplay}set display(e){if(this._ctrlDisplay!==e){const t=this._ctrlDisplay;this._ctrlDisplay=e;this.requestUpdate("display",t)}}get opacity(){return this._ctrlOpacity}set opacity(e){if(this._ctrlOpacity!==e){const t=this._ctrlOpacity;this._ctrlOpacity=e;this.requestUpdate("opacity",t)}}get position(){return this._ctrlPos}set position(e){const t=this._ctrlPos;this._ctrlPos=e;this.requestUpdate("position",t)}get value(){return this._currentValue}set value(e){if(this._currentValue!==e){const t=this._currentValue;this._currentValue=e;this._invokeEvent("valueChanged",{value:this._currentValue});this.requestUpdate("value",t);this.updateLayout()}}_onBlur(){this.close()}getContent(){return this._contentElem.firstElementChild}_getAnimationFactor(e){let t=10;switch(this._currentAnimationSpeed){case IntegralUISpeedMode.VerySlow:t=e?2:1;break;case IntegralUISpeedMode.Slow:t=e?4:3;break;case IntegralUISpeedMode.Fast:t=e?9:7;break;case IntegralUISpeedMode.VeryFast:t=e?12:10;break;default:t=e?7:5}return t}open(){let e=this;e._removeCloseTimer();e._removeOpenTimer();if(e._isAnimationAllowed&&e._ctrlSize.height>0)setTimeout(function(){e._contentOpacity=0;e._contentPos.top=-e._ctrlSize.height;let t=e._getAnimationFactor();e._openTimer=setInterval(function(){if(e._contentPos.top<0){e._contentPos.top+=t;e._contentOpacity=Math.abs(1+e._contentPos.top/e._ctrlSize.height);e.update()}else{e._contentPos.top=0;e._contentOpacity=1;e._removeOpenTimer();e.update()}},5)},1);else{e._contentPos.top=0;e._contentOpacity=1;e.update()}}close(){let e=this;e._removeCloseTimer();e._removeOpenTimer();if(e._isAnimationAllowed&&e._ctrlSize.height>0){e._contentOpacity=1;e._contentPos.top=0;let t=e._getAnimationFactor(!0);e._closeTimer=setInterval(function(){if(e._contentPos.top>-e._ctrlSize.height){e._contentPos.top-=t;e._contentOpacity=Math.abs(1+e._contentPos.top/e._ctrlSize.height);e.update()}else{e._contentPos.top=-e._ctrlSize.height;e._contentOpacity=0;e.update();e._invokeEvent("closed",{value:this._currentValue});e._removeCloseTimer()}},5)}else{e._contentPos.top=-e._ctrlSize.height;e._contentOpacity=0;e.update();e._invokeEvent("closed",{value:this._currentValue})}e._keepActive=!1}_removeCloseTimer(){if(this._closeTimer)clearInterval(this._closeTimer)}_removeOpenTimer(){if(this._openTimer)clearInterval(this._openTimer)}_getContentStyle(){return{opacity:this._contentOpacity,left:this._contentPos.left+"px",position:this._contentDisplay,top:this._contentPos.top+"px"}}_getControlStyle(){let e={display:this._ctrlDisplay,opacity:this._ctrlOpacity,left:this._ctrlPos.left+"px",overflow:"hidden",position:"absolute",top:this._ctrlPos.top+"px",zIndex:9999999};if(this._ctrlSize.width>0)e.width=this._ctrlSize.width+"px";if(this._ctrlSize.height>0)e.height=this._ctrlSize.height+"px";return e}firstUpdated(e){this._updateReferences()}refresh(){this._updateControlClass();this.update();this._updateReferences()}updateLayout(){this.update();this._updateReferences()}render(){return html`
${this._currentContentTemplate}
`}_updateReferences(){this._elemRef=this.shadowRoot.querySelector("div[data-ctrl=dropdown]");this._contentElem=this.shadowRoot.querySelector("#content")}}window.customElements.define("iui-dropdown",IntegralUIDropDown);export default IntegralUIDropDown; \ No newline at end of file +import{h as html}from"../external/lit-element.js";import{c as classMap}from"../external/class-map.js";import{s as styleMap}from"../external/style-map.js";import IntegralUIBase from"./integralui.base.js";import{IntegralUISpeedMode}from"./integralui.enums.js";class IntegralUIDropDown extends IntegralUIBase{_init(){super._init();this._closeTimer=null;this._currentAnimationSpeed=IntegralUISpeedMode.Normal;this._openTimer=null;this._keepActive=!1;this._currentValue=null;this._ctrlDisplay="block";this._ctrlOpacity=1;this._ctrlPos={top:0,left:0};this._contentDisplay="absolute";this._contentOpacity=0;this._contentPos={top:-9999,left:0};this._generalClassName="iui-dropdown";this._currentContentTemplate=html``;this._initStyle()}_initStyle(){this._defaultStyle={general:{disabled:this._generalClassName+"-disabled",focused:this._generalClassName+"-focused",normal:this._generalClassName,hovered:this._generalClassName+"-hovered",selected:this._generalClassName+"-selected"}};this.refresh()}connectedCallback(){}disconnectedCallback(){this._removeCloseTimer();this._removeOpenTimer()}static get properties(){return{animationSpeed:{attribute:"animation-speed",converter:{fromAttribute:e=>{switch((e=e.replace(/"|'/,"").replace(/"|'/,"")).toLowerCase()){case"veryslow":return IntegralUISpeedMode.VerySlow;case"slow":return IntegralUISpeedMode.Slow;case"fast":return IntegralUISpeedMode.Fast;case"veryfast":return IntegralUISpeedMode.VeryFast;default:return IntegralUISpeedMode.Normal}},toAttribute:e=>{switch(e){case IntegralUISpeedMode.VerySlow:return"VerySlow";case IntegralUISpeedMode.Slow:return"Slow";case IntegralUISpeedMode.Fast:return"Fast";case IntegralUISpeedMode.VeryFast:return"VeryFast";default:return"Normal"}}},reflect:!0},contentTemplate:{type:Object,attribute:"content-template"},display:{type:String,reflect:!0},opacity:{type:Number,reflect:!0},position:{type:Object},value:{type:Number,reflect:!0}}}attributeChangedCallback(e,t,i){super.attributeChangedCallback(e,t,i)}get animationSpeed(){return this._currentAnimationSpeed}set animationSpeed(e){if(this._currentAnimationSpeed!==e){const t=this._currentAnimationSpeed;this._currentAnimationSpeed=e;this.requestUpdate("animationSpeed",t)}}get contentTemplate(){return this._currentContentTemplate}set contentTemplate(e){const t=this._currentContentTemplate;this._currentContentTemplate=e;this.requestUpdate("contentTemplate",t)}get display(){return this._ctrlDisplay}set display(e){if(this._ctrlDisplay!==e){const t=this._ctrlDisplay;this._ctrlDisplay=e;this.requestUpdate("display",t)}}get opacity(){return this._ctrlOpacity}set opacity(e){if(this._ctrlOpacity!==e){const t=this._ctrlOpacity;this._ctrlOpacity=e;this.requestUpdate("opacity",t)}}get position(){return this._ctrlPos}set position(e){const t=this._ctrlPos;this._ctrlPos=e;this.requestUpdate("position",t)}get value(){return this._currentValue}set value(e){if(this._currentValue!==e){const t=this._currentValue;this._currentValue=e;this._invokeEvent("valueChanged",{value:this._currentValue});this.requestUpdate("value",t);this.updateLayout()}}_onBlur(){this.close()}getContent(){return this._contentElem.firstElementChild}_getAnimationFactor(e){let t=10;switch(this._currentAnimationSpeed){case IntegralUISpeedMode.VerySlow:t=e?2:1;break;case IntegralUISpeedMode.Slow:t=e?4:3;break;case IntegralUISpeedMode.Fast:t=e?9:7;break;case IntegralUISpeedMode.VeryFast:t=e?12:10;break;default:t=e?7:5}return t}open(){let e=this;e._removeCloseTimer();e._removeOpenTimer();if(e._isAnimationAllowed&&e._ctrlSize.height>0)setTimeout(function(){e._contentOpacity=0;e._contentPos.top=-e._ctrlSize.height;let t=e._getAnimationFactor();e._openTimer=setInterval(function(){if(e._contentPos.top<0){e._contentPos.top+=t;e._contentOpacity=Math.abs(1+e._contentPos.top/e._ctrlSize.height);e.update()}else{e._contentPos.top=0;e._contentOpacity=1;e._removeOpenTimer();e.update()}},5)},1);else{e._contentPos.top=0;e._contentOpacity=1;e.update()}}close(){let e=this;e._removeCloseTimer();e._removeOpenTimer();if(e._isAnimationAllowed&&e._ctrlSize.height>0){e._contentOpacity=1;e._contentPos.top=0;let t=e._getAnimationFactor(!0);e._closeTimer=setInterval(function(){if(e._contentPos.top>-e._ctrlSize.height){e._contentPos.top-=t;e._contentOpacity=Math.abs(1+e._contentPos.top/e._ctrlSize.height);e.update()}else{e._contentPos.top=-e._ctrlSize.height;e._contentOpacity=0;e.update();e._invokeEvent("closed",{value:this._currentValue});e._removeCloseTimer()}},5)}else{e._contentPos.top=-e._ctrlSize.height;e._contentOpacity=0;e.update();e._invokeEvent("closed",{value:this._currentValue})}e._keepActive=!1}_removeCloseTimer(){if(this._closeTimer)clearInterval(this._closeTimer)}_removeOpenTimer(){if(this._openTimer)clearInterval(this._openTimer)}_getContentStyle(){return{opacity:this._contentOpacity,left:this._contentPos.left+"px",position:this._contentDisplay,top:this._contentPos.top+"px"}}_getControlStyle(){let e={display:this._ctrlDisplay,opacity:this._ctrlOpacity,left:this._ctrlPos.left+"px",overflow:"hidden",position:"absolute",top:this._ctrlPos.top+"px",zIndex:9999999};if(this._ctrlSize.width>0)e.width=this._ctrlSize.width+"px";if(this._ctrlSize.height>0)e.height=this._ctrlSize.height+"px";return e}firstUpdated(e){this._updateReferences()}refresh(){this._updateControlClass();this.update();this._updateReferences()}updateLayout(){this.update();this._updateReferences()}render(){return html`
${this._currentContentTemplate}
`}_updateReferences(){this._elemRef=this.shadowRoot.querySelector("div[data-ctrl=dropdown]");this._contentElem=this.shadowRoot.querySelector("#content")}}window.customElements.define("iui-dropdown",IntegralUIDropDown);export default IntegralUIDropDown; \ No newline at end of file diff --git a/components/integralui.dropdownbutton.js b/components/integralui.dropdownbutton.js index 3fb180f..9606828 100644 --- a/components/integralui.dropdownbutton.js +++ b/components/integralui.dropdownbutton.js @@ -1,6 +1,6 @@ /* filename: integralui.dropdownbutton.js - version : 21.1.0 + version : 21.4.0 Copyright © 2016-2021 Lidor Systems. All rights reserved. This file is part of the "IntegralUI Web" Library. @@ -12,4 +12,4 @@ This SOFTWARE is provided "AS IS", WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for the specific language governing rights and limitations under the License. Any infringement will be prosecuted under applicable laws. */ -import{c as css,T as TemplateResult,a as defaultTemplateProcessor,h as html}from"../external/lit-element.js";import{c as classMap}from"../external/class-map.js";import{s as styleMap}from"../external/style-map.js";import{IntegralUIDirection,IntegralUIPlacement,IntegralUIObjectState,IntegralUITheme}from"./integralui.enums.js";import IntegralUIBase from"./integralui.base.js";import IntegralUIDropDown from"./integralui.dropdown.js";import{iuiButtonOfficeStyle}from"../themes/office/integralui.button.office.js";import{iuiButtonMidnightStyle}from"../themes/midnight/integralui.button.midnight.js";import{iuiDropDownButtonDefaultStyle}from"../styles/integralui.dropdownbutton.style.js";class IntegralUIDropDownButton extends IntegralUIBase{_init(){super._init();this._currentDropDownAdjustment={top:0,left:0,width:0,height:0};this._currentDropDownSize={width:0,height:0};this._currentDirection=IntegralUIDirection.Below;this._currentPlacement=IntegralUIPlacement.Right;this._isDropDownIconVisible=!0;this._isExpanded=!1;this._generalClassName="iui-dropdownbutton";this._buttonClassName=this._generalClassName+"-btn";this._currentControlStyleSettings=iuiDropDownButtonDefaultStyle;this._initStyle()}_initStyle(){this._defaultStyle={general:{disabled:this._generalClassName+"-disabled",focused:this._generalClassName+"-focused",normal:this._generalClassName,hovered:this._generalClassName+"-hovered",selected:this._generalClassName+"-selected"},button:{disabled:this._buttonClassName+"-disabled",focused:this._buttonClassName+"-focused",normal:this._buttonClassName,hovered:this._buttonClassName+"-hovered",selected:this._buttonClassName+"-selected"}};this.refresh()}connectedCallback(){}disconnectedCallback(){this._removeDropDown()}attributeChangedCallback(t,e,s){super.attributeChangedCallback(t,e,s)}static get properties(){return{direction:{converter:{fromAttribute:t=>{switch((t=t.replace(/"|'/,"").replace(/"|'/,"")).toLowerCase()){case"none":return IntegralUIDirection.None;case"above":return IntegralUIDirection.Above;case"right":return IntegralUIDirection.Right;case"left":return IntegralUIDirection.Left;default:return IntegralUIDirection.Below}},toAttribute:t=>{switch(t){case IntegralUIDirection.None:return"None";case IntegralUIDirection.Above:return"Above";case IntegralUIDirection.Right:return"Right";case IntegralUIDirection.Left:return"Left";default:return"Below"}}},reflect:!0},dropDownAdjustment:{type:Object,attribute:"dropdown-adjustment"},dropDownIcon:{type:Boolean,attribute:"dropdown-icon",reflect:!0},dropDownSize:{type:Object,attribute:"dropdown-size"},expanded:{type:Boolean,reflect:!0},placement:{converter:{fromAttribute:t=>{switch((t=t.replace(/"|'/,"").replace(/"|'/,"")).toLowerCase()){case"top":return IntegralUIPlacement.Top;case"bottom":return IntegralUIPlacement.Bottom;case"left":return IntegralUIPlacement.Left;default:return IntegralUIPlacement.Right}},toAttribute:t=>{switch(t){case IntegralUIPlacement.Top:return"Top";case IntegralUIPlacement.Bottom:return"Bottom";case IntegralUIPlacement.Left:return"Left";default:return"Right"}}},reflect:!0}}}get direction(){return this._currentDirection}set direction(t){const e=this._currentDirection;this._currentDirection=t;this._updateAdjustment();this.requestUpdate("direction",e);this.refresh()}get dropDownAdjustment(){return this._currentDropDownAdjustment}set dropDownAdjustment(t){if(t){const e=this._currentDropDownAdjustment;if(void 0!==t.top&&this._currentDropDownAdjustment.top!==t.top)this._currentDropDownAdjustment.top=t.top;if(void 0!==t.left&&this._currentDropDownAdjustment.left!==t.left)this._currentDropDownAdjustment.left=t.left;if(void 0!==t.width&&this._currentDropDownAdjustment.width!==t.width)this._currentDropDownAdjustment.width=t.width;if(void 0!==t.height&&this._currentDropDownSize.height!==t.height)this._currentDropDownAdjustment.height=t.height;this.requestUpdate("dropDownAdjustment",e)}}get dropDownIcon(){return this._isDropDownIconVisible}set dropDownIcon(t){if(this._isDropDownIconVisible!==t){const e=this._isDropDownIconVisible;this._isDropDownIconVisible=t;this.update();this.requestUpdate("dropDownIcon",e)}}get dropDownSize(){return this._currentDropDownSize}set dropDownSize(t){if(t){let e=!1;const s=this._currentDropDownSize;if(void 0!==t.width&&this._currentDropDownSize.width!==t.width){this._currentDropDownSize.width=t.width;e=!0}if(void 0!==t.height&&this._currentDropDownSize.height!==t.height){this._currentDropDownSize.height=t.height;e=!0}if(e){this.updateLayout();this.requestUpdate("dropDownSize",s)}}}get expanded(){return this._isExpanded}set expanded(t){if(this._isExpanded!==t){const e=this._isExpanded;this._isExpanded=t;if(this._isExpanded)this._addDropDown();else this._closeDropDown();this._invokeEvent("expandedChanged",{expanded:t});this.requestUpdate("expanded",e)}}get placement(){return this._currentPlacement}set placement(t){const e=this._currentPlacement;this._currentPlacement=t;this._updateAdjustment();this.requestUpdate("placement",e);this.refresh()}_preventDragStart(t){t.preventDefault();t.stopPropagation()}_addDropDown(){this._removeDropDown();this._cmpRef=document.createElement("iui-dropdown",{is:IntegralUIDropDown});document.body.appendChild(this._cmpRef);if(this._cmpRef){this._cmpRef.allowAnimation=this.allowAnimation;this._cmpRef.contentTemplate=this._getContentTemplate();this._cmpRef.customStyle=this.customStyle;this._cmpRef.resourcePath=this.resourcePath;this._cmpRef.size=this._getDropDownSize();this._cmpRef.theme=this._currentTheme;let t=this._commonService.getPageRect(this._elemRef),e=this._commonService.getShiftPos();this._cmpRef.position={top:t.bottom+e.y+this._currentDropDownAdjustment.top,left:t.left+e.x+this._currentDropDownAdjustment.left};this._cmpRef.open();this._removeCtrl=this._removeCtrl.bind(this);this._cmpRef.addEventListener("closed",this._removeCtrl)}}_closeDropDown(){if(this._cmpRef)this._cmpRef.close()}_getDropDownSize(){let t={width:0!==this._currentDropDownSize.width&&this._currentDropDownSize.width>this._elemRef.offsetWidth?this._currentDropDownSize.width:this._elemRef.offsetWidth,height:0!==this._currentDropDownSize.height?this._currentDropDownSize.height:100};t.width+=this._currentDropDownAdjustment.width;t.height+=this._currentDropDownAdjustment.height;return t}_openDropDown(t){if(this._isEnabled&&1===t.which){this.toggle();this._invokeEvent("opened",{event:t,expanded:!0})}}_removeCtrl(t){this.collapse();this._invokeEvent("closed",{event:t,expanded:!1});this._removeDropDown()}_removeDropDown(){if(this._cmpRef){this._cmpRef.removeEventListener("closed",this._removeCtrl);this._cmpRef.parentNode.removeChild(this._cmpRef)}this._cmpRef=null}collapse(){this.expanded=!1}expand(){this.expanded=!0}toggle(){this.expanded=!this.expanded}_ctrlMouseDown(t){this._openDropDown(t)}_ctrlMouseEnter(t){if(this._isEnabled)this.state|=IntegralUIObjectState.Hovered}_ctrlMouseLeave(t){if(this._isEnabled)this.state&=~IntegralUIObjectState.Hovered}_getButtonClass(){return this._buttonClass}_updateButtonClass(){this._buttonClass={};if(this._currentPlacement===IntegralUIPlacement.Left){this._buttonClass[this._buttonClassName+"-left"]=!0;if(this._currentDirection&IntegralUIDirection.Left)this._buttonClass[this._generalClassName+"-open-left"]=!0;else if(this._currentDirection&IntegralUIDirection.Above)this._buttonClass[this._generalClassName+"-open-above"]=!0}else{this._buttonClass[this._buttonClassName+"-right"]=!0;if(this._currentDirection&IntegralUIDirection.Right)this._buttonClass[this._generalClassName+"-open-right"]=!0;else if(this._currentDirection&IntegralUIDirection.Above)this._buttonClass[this._generalClassName+"-open-above"]=!0}if(this._defaultStyle){this._buttonClass[this._defaultStyle.button.normal]=!0;if(this.state&IntegralUIObjectState.Disabled)this._buttonClass[this._defaultStyle.button.disabled]=!0;else if(this.state&IntegralUIObjectState.Focused)this._buttonClass[this._defaultStyle.button.focused]=!0;else if(this.state&IntegralUIObjectState.Selected)this._buttonClass[this._defaultStyle.button.selected]=!0;else if(this.state&IntegralUIObjectState.Hovered)this._buttonClass[this._defaultStyle.button.hovered]=!0}}_updateThemeSettings(t){this._currentThemeSettings=css``;switch(t){case IntegralUITheme.Office:this._currentThemeSettings.cssText=this._commonService.replaceAll(iuiButtonOfficeStyle.cssText,"../icons",this._currentResourcePath);break;case IntegralUITheme.Midnight:this._currentThemeSettings.cssText=this._commonService.replaceAll(iuiButtonMidnightStyle.cssText,"../icons",this._currentResourcePath);break;default:this._currentThemeSettings.cssText=""}}_getContentTemplate(){if(this.contentTemplate){let t=this.contentTemplate(this._ctrlData);return new TemplateResult(t.strings,t.values,"html",defaultTemplateProcessor)}return html``}_ctrlTouchStart(t){t.preventDefault();this._openDropDown(t)}firstUpdated(t){this._updateReferences();this.updateLayout()}refresh(){this._updateStyle(this.controlStyle);this._updateButtonClass();this._updateControlClass();this.update();this._updateReferences()}render(){return html`
${this._isDropDownIconVisible?html`
`:html``}
`}_updateControlStyleSettings(t){this._currentControlStyleSettings=css``;this._currentControlStyleSettings.cssText=this._commonService.replaceAll(iuiDropDownButtonDefaultStyle.cssText,"../icons",t)}_updateReferences(){this._elemRef=this.shadowRoot.querySelector("div[data-ctrl=dropdownbutton]");this._buttonElem=this.shadowRoot.querySelector("#button")}}window.customElements.define("iui-dropdownbutton",IntegralUIDropDownButton);export default IntegralUIDropDownButton; \ No newline at end of file +import{c as css,T as TemplateResult,a as defaultTemplateProcessor,h as html}from"../external/lit-element.js";import{c as classMap}from"../external/class-map.js";import{s as styleMap}from"../external/style-map.js";import IntegralUIBase from"./integralui.base.js";import{IntegralUIDirection,IntegralUIPlacement,IntegralUIObjectState,IntegralUITheme}from"./integralui.enums.js";import IntegralUIDropDown from"./integralui.dropdown.js";import{iuiDropDownButtonDefaultStyle}from"../styles/integralui.dropdownbutton.style.js";import{iuiDropDownButtonMidnightStyle}from"../themes/midnight/integralui.dropdownbutton.midnight.js";import{iuiDropDownButtonOfficeStyle}from"../themes/office/integralui.dropdownbutton.office.js";class IntegralUIDropDownButton extends IntegralUIBase{_init(){super._init();this._currentDropDownAdjustment={top:0,left:0,width:0,height:0};this._currentDropDownSize={width:0,height:0};this._currentDirection=IntegralUIDirection.Below;this._currentPlacement=IntegralUIPlacement.Right;this._isDropDownIconVisible=!0;this._isExpanded=!1;this._generalClassName="iui-dropdownbutton";this._buttonClassName=this._generalClassName+"-btn";this._currentControlStyleSettings=iuiDropDownButtonDefaultStyle;this._initStyle()}_initStyle(){this._defaultStyle={general:{disabled:this._generalClassName+"-disabled",focused:this._generalClassName+"-focused",normal:this._generalClassName,hovered:this._generalClassName+"-hovered",selected:this._generalClassName+"-selected"},button:{disabled:this._buttonClassName+"-disabled",focused:this._buttonClassName+"-focused",normal:this._buttonClassName,hovered:this._buttonClassName+"-hovered",selected:this._buttonClassName+"-selected"}};this.refresh()}connectedCallback(){}disconnectedCallback(){this._removeDropDown()}attributeChangedCallback(t,e,s){super.attributeChangedCallback(t,e,s)}static get properties(){return{direction:{converter:{fromAttribute:t=>{switch((t=t.replace(/"|'/,"").replace(/"|'/,"")).toLowerCase()){case"none":return IntegralUIDirection.None;case"above":return IntegralUIDirection.Above;case"right":return IntegralUIDirection.Right;case"left":return IntegralUIDirection.Left;default:return IntegralUIDirection.Below}},toAttribute:t=>{switch(t){case IntegralUIDirection.None:return"None";case IntegralUIDirection.Above:return"Above";case IntegralUIDirection.Right:return"Right";case IntegralUIDirection.Left:return"Left";default:return"Below"}}},reflect:!0},dropDownAdjustment:{type:Object,attribute:"dropdown-adjustment"},dropDownIcon:{type:Boolean,attribute:"dropdown-icon",reflect:!0},dropDownSize:{type:Object,attribute:"dropdown-size"},expanded:{type:Boolean,reflect:!0},placement:{converter:{fromAttribute:t=>{switch((t=t.replace(/"|'/,"").replace(/"|'/,"")).toLowerCase()){case"top":return IntegralUIPlacement.Top;case"bottom":return IntegralUIPlacement.Bottom;case"left":return IntegralUIPlacement.Left;default:return IntegralUIPlacement.Right}},toAttribute:t=>{switch(t){case IntegralUIPlacement.Top:return"Top";case IntegralUIPlacement.Bottom:return"Bottom";case IntegralUIPlacement.Left:return"Left";default:return"Right"}}},reflect:!0}}}get direction(){return this._currentDirection}set direction(t){const e=this._currentDirection;this._currentDirection=t;this._updateAdjustment();this.requestUpdate("direction",e);this.refresh()}get dropDownAdjustment(){return this._currentDropDownAdjustment}set dropDownAdjustment(t){if(t){const e=this._currentDropDownAdjustment;if(void 0!==t.top&&this._currentDropDownAdjustment.top!==t.top)this._currentDropDownAdjustment.top=t.top;if(void 0!==t.left&&this._currentDropDownAdjustment.left!==t.left)this._currentDropDownAdjustment.left=t.left;if(void 0!==t.width&&this._currentDropDownAdjustment.width!==t.width)this._currentDropDownAdjustment.width=t.width;if(void 0!==t.height&&this._currentDropDownSize.height!==t.height)this._currentDropDownAdjustment.height=t.height;this.requestUpdate("dropDownAdjustment",e)}}get dropDownIcon(){return this._isDropDownIconVisible}set dropDownIcon(t){if(this._isDropDownIconVisible!==t){const e=this._isDropDownIconVisible;this._isDropDownIconVisible=t;this.update();this.requestUpdate("dropDownIcon",e)}}get dropDownSize(){return this._currentDropDownSize}set dropDownSize(t){if(t){let e=!1;const s=this._currentDropDownSize;if(void 0!==t.width&&this._currentDropDownSize.width!==t.width){this._currentDropDownSize.width=t.width;e=!0}if(void 0!==t.height&&this._currentDropDownSize.height!==t.height){this._currentDropDownSize.height=t.height;e=!0}if(e){this.updateLayout();this.requestUpdate("dropDownSize",s)}}}get expanded(){return this._isExpanded}set expanded(t){if(this._isExpanded!==t){const e=this._isExpanded;this._isExpanded=t;if(this._isExpanded)this._addDropDown();else this._closeDropDown();this._invokeEvent("expandedChanged",{expanded:t});this.requestUpdate("expanded",e)}}get placement(){return this._currentPlacement}set placement(t){const e=this._currentPlacement;this._currentPlacement=t;this._updateAdjustment();this.requestUpdate("placement",e);this.refresh()}_preventDragStart(t){t.preventDefault();t.stopPropagation()}_addDropDown(){this._removeDropDown();this._cmpRef=document.createElement("iui-dropdown",{is:IntegralUIDropDown});document.body.appendChild(this._cmpRef);if(this._cmpRef){this._cmpRef.allowAnimation=this.allowAnimation;this._cmpRef.contentTemplate=this._getContentTemplate();this._cmpRef.customStyle=this.customStyle;this._cmpRef.resourcePath=this.resourcePath;this._cmpRef.size=this._getDropDownSize();this._cmpRef.theme=this._currentTheme;let t=this._commonService.getPageRect(this._elemRef),e=this._commonService.getShiftPos();this._cmpRef.position={top:t.bottom+e.y+this._currentDropDownAdjustment.top,left:t.left+e.x+this._currentDropDownAdjustment.left};this._cmpRef.open();this._removeCtrl=this._removeCtrl.bind(this);this._cmpRef.addEventListener("closed",this._removeCtrl)}}_closeDropDown(){if(this._cmpRef)this._cmpRef.close()}_getDropDownSize(){let t={width:0!==this._currentDropDownSize.width&&this._currentDropDownSize.width>this._elemRef.offsetWidth?this._currentDropDownSize.width:this._elemRef.offsetWidth,height:0!==this._currentDropDownSize.height?this._currentDropDownSize.height:100};t.width+=this._currentDropDownAdjustment.width;t.height+=this._currentDropDownAdjustment.height;return t}_openDropDown(t){if(this._isEnabled&&1===t.which){this.toggle();this._invokeEvent("opened",{event:t,expanded:!0})}}_removeCtrl(t){this.collapse();this._invokeEvent("closed",{event:t,expanded:!1});this._removeDropDown()}_removeDropDown(){if(this._cmpRef){this._cmpRef.removeEventListener("closed",this._removeCtrl);this._cmpRef.parentNode.removeChild(this._cmpRef)}this._cmpRef=null}collapse(){this.expanded=!1}expand(){this.expanded=!0}toggle(){this.expanded=!this.expanded}_ctrlMouseDown(t){this._openDropDown(t)}_ctrlMouseEnter(t){if(this._isEnabled)this.state|=IntegralUIObjectState.Hovered}_ctrlMouseLeave(t){if(this._isEnabled)this.state&=~IntegralUIObjectState.Hovered}_getButtonClass(){return this._buttonClass}_updateButtonClass(){this._buttonClass={};if(this._currentPlacement===IntegralUIPlacement.Left){this._buttonClass[this._buttonClassName+"-left"]=!0;if(this._currentDirection&IntegralUIDirection.Left)this._buttonClass[this._generalClassName+"-open-left"]=!0;else if(this._currentDirection&IntegralUIDirection.Above)this._buttonClass[this._generalClassName+"-open-above"]=!0}else{this._buttonClass[this._buttonClassName+"-right"]=!0;if(this._currentDirection&IntegralUIDirection.Right)this._buttonClass[this._generalClassName+"-open-right"]=!0;else if(this._currentDirection&IntegralUIDirection.Above)this._buttonClass[this._generalClassName+"-open-above"]=!0}if(this._defaultStyle){this._buttonClass[this._defaultStyle.button.normal]=!0;if(this.state&IntegralUIObjectState.Disabled)this._buttonClass[this._defaultStyle.button.disabled]=!0;else if(this.state&IntegralUIObjectState.Focused)this._buttonClass[this._defaultStyle.button.focused]=!0;else if(this.state&IntegralUIObjectState.Selected)this._buttonClass[this._defaultStyle.button.selected]=!0;else if(this.state&IntegralUIObjectState.Hovered)this._buttonClass[this._defaultStyle.button.hovered]=!0}}_updateThemeSettings(t){this._currentThemeSettings=css``;switch(t){case IntegralUITheme.Office:this._currentThemeSettings.cssText=this._commonService.replaceAll(iuiDropDownButtonOfficeStyle.cssText,"../icons",this._currentResourcePath);break;case IntegralUITheme.Midnight:this._currentThemeSettings.cssText=this._commonService.replaceAll(iuiDropDownButtonMidnightStyle.cssText,"../icons",this._currentResourcePath);break;default:this._currentThemeSettings.cssText=""}}_getContentTemplate(){if(this.contentTemplate){let t=this.contentTemplate(this._ctrlData);return new TemplateResult(t.strings,t.values,"html",defaultTemplateProcessor)}return html``}_ctrlTouchStart(t){t.preventDefault();this._openDropDown(t)}firstUpdated(t){this._updateReferences();this.updateLayout()}refresh(){this._updateStyle(this.controlStyle);this._updateButtonClass();this._updateControlClass();this.update();this._updateReferences()}render(){return html`
${this._isDropDownIconVisible?html`
`:html``}
`}_updateControlStyleSettings(t){this._currentControlStyleSettings=css``;this._currentControlStyleSettings.cssText=this._commonService.replaceAll(iuiDropDownButtonDefaultStyle.cssText,"../icons",t)}_updateReferences(){this._elemRef=this.shadowRoot.querySelector("div[data-ctrl=dropdownbutton]");this._buttonElem=this.shadowRoot.querySelector("#button")}}window.customElements.define("iui-dropdownbutton",IntegralUIDropDownButton);export default IntegralUIDropDownButton; \ No newline at end of file diff --git a/components/integralui.dropdownfilter.js b/components/integralui.dropdownfilter.js new file mode 100644 index 0000000..ff7c66f --- /dev/null +++ b/components/integralui.dropdownfilter.js @@ -0,0 +1,15 @@ +/* + filename: integralui.dropdownfilter.js + version : 21.4.0 + Copyright © 2016-2021 Lidor Systems. All rights reserved. + + This file is part of the "IntegralUI Web" Library. + + The contents of this file are subject to the IntegralUI Web License, and may not be used except in compliance with the License. + A copy of the License should have been installed in the product's root installation directory or it can be found at + http://www.lidorsystems.com/products/web/studio/license-agreement.aspx. + + This SOFTWARE is provided "AS IS", WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for the specific language + governing rights and limitations under the License. Any infringement will be prosecuted under applicable laws. +*/ +import{c as css,h as html}from"../external/lit-element.js";import{c as classMap}from"../external/class-map.js";import{s as styleMap}from"../external/style-map.js";import IntegralUIBase from"./integralui.base.js";import{IntegralUIFilterType,IntegralUITheme}from"./integralui.enums.js";import IntegralUIDropDown from"./integralui.dropdown.js";import"./integralui.datepicker.js";import"./integralui.list.js";import{iuiDropDownFilterDefaultStyle}from"../styles/integralui.dropdownfilter.style.js";import{iuiDropDownFilterOfficeStyle}from"../themes/office/integralui.dropdownfilter.office.js";import{iuiDropDownFilterMidnightStyle}from"../themes/midnight/integralui.dropdownfilter.midnight.js";class IntegralUIDropDownFilter extends IntegralUIBase{_init(){super._init();this._testValue={value:"",value2:""};this._currentDataFields={};this._currentList=[];this._filterList=[];this._currentFilter=null;this._currentOperation=null;this._currentType=IntegralUIFilterType.String;this._currentValue=null;this._currentValue2=null;this._dropDownRef=null;this._dropList=null;this._currentCalendarSize={width:250,height:200};this._currentFormat={};this._currentDropDownAdjustment={top:0,left:0,width:0,height:0};this._currentDropDownSize={width:0,height:0};this._currentMaxDropDownItems=5;this._currentParentBounds={top:0,right:0,bottom:0,left:0,height:0,width:0,x:0,y:0};this._valueRef=null;this._currentControlStyleSettings=iuiDropDownFilterDefaultStyle;this._generalClassName="iui-dropdownfilter";this._filterIcon={};this._iconClasses={equal:"iui-filter-equal",notEqual:"iui-filter-not-equal",beginsWith:"iui-filter-begins-with",endsWith:"iui-filter-ends-with",contains:"iui-filter-contains",doesNotContain:"iui-filter-not-contain",greaterThan:"iui-filter-greater-than",greaterThanEqualTo:"iui-filter-greater-than-equal",lessThan:"iui-filter-less-than",lessThanEqualTo:"iui-filter-less-than-equal",between:"iui-filter-between",search:"iui-filter-search"};this._dropListTimeout=null;this._updateDataFields();this._updateDropDownList();this._updateFilterIcon();this._initStyle()}connectedCallback(){}disconnectedCallback(){if(this._dropListTimeout)clearTimeout(this._dropListTimeout);if(this._inputFocusTimeout)clearTimeout(this._inputFocusTimeout);this._removeDropDown()}attributeChangedCallback(t,e,i){super.attributeChangedCallback(t,e,i)}static get properties(){return{dataFields:{type:Object,attribute:"data-fields"},dropDownAdjustment:{type:Object,attribute:"dropdown-adjustment"},dropDownSize:{type:Object,attribute:"dropdown-size"},formatOptions:{type:Object,attribute:"format-options"},maxDropDownItems:{type:Number,attribute:"max-dropdown-items",reflect:!0},operation:{type:String,reflect:!0},items:{type:Array},type:{converter:{fromAttribute:t=>{switch((t=t.replace(/"|'/,"").replace(/"|'/,"")).toLowerCase()){case"boolean":return IntegralUIFilterType.Boolean;case"date":return IntegralUIFilterType.Date;case"numeric":return IntegralUIFilterType.Numeric;default:return IntegralUIFilterType.String}},toAttribute:t=>{switch(t){case IntegralUIFilterType.Boolean:return"Boolean";case IntegralUIFilterType.Date:return"Date";case IntegralUIFilterType.Numeric:return"Numeric";default:return"String"}}},reflect:!0},value:{type:Object}}}get calendarSize(){return this._currentCalendarSize}set calendarSize(t){if(t){const e=this._currentCalendarSize;if(t.width&&this._currentCalendarSize.width!==t.width)this._currentCalendarSize.width=t.width;if(t.height&&this._currentCalendarSize.height!==t.height)this._currentCalendarSize.height=t.height;this.requestUpdate("calendarSize",e)}}get dataFields(){return this._currentDataFields}set dataFields(t){const e=this._currentDataFields;this._updateDataFields(t);this.requestUpdate("dataFields",e)}get dropDownAdjustment(){return this._currentDropDownAdjustment}set dropDownAdjustment(t){if(t){const e=this._currentDropDownAdjustment;if(void 0!==t.top&&this._currentDropDownAdjustment.top!==t.top)this._currentDropDownAdjustment.top=t.top;if(void 0!==t.left&&this._currentDropDownAdjustment.left!==t.left)this._currentDropDownAdjustment.left=t.left;if(void 0!==t.width&&this._currentDropDownAdjustment.width!==t.width)this._currentDropDownAdjustment.width=t.width;if(void 0!==t.height&&this._currentDropDownSize.height!==t.height)this._currentDropDownAdjustment.height=t.height;this.requestUpdate("dropDownAdjustment",e)}}get dropDownSize(){return this._currentDropDownSize}set dropDownSize(t){if(t){let e=!1;const i=this._currentDropDownSize;if(void 0!==t.width&&this._currentDropDownSize.width!==t.width){this._currentDropDownSize.width=t.width;e=!0}if(void 0!==t.height&&this._currentDropDownSize.height!==t.height){this._currentDropDownSize.height=t.height;e=!0}if(e){this.updateLayout();this.requestUpdate("dropDownSize",i)}}}get format(){return this._currentFormat}set format(t){if(this._currentFormat!==t){const e=this._currentFormat;this._currentFormat=t;this.requestUpdate("formatOptions",e)}}get maxDropDownItems(){return this._currentMaxDropDownItems}set maxDropDownItems(t){if(void 0!==t&&this._currentMaxDropDownItems!==t){const e=this._currentMaxDropDownItems;this._currentMaxDropDownItems=t;this.requestUpdate("maxDropDownItems",e)}}get operation(){return this._currentOperation}set operation(t){const e=this._currentOperation;this._currentOperation=t;this._currentFilter=this._findFilterByOperation();this.refresh();this.requestUpdate("operation",e)}get parentBounds(){return this._currentParentBounds}set parentBounds(t){if(this._currentParentBounds!==t){const e=this._currentParentBounds;this._currentParentBounds=t;this.requestUpdate("parent",e)}}get type(){return this._currentType}set type(t){if(this._currentType!==t){const e=this._currentType;this._currentType=t;this._updateDropDownList();this.requestUpdate("type",e);this.update()}}get value(){return this._testValue}set value(t){let e=!1;const i=this._testValue;if(this._currentType===IntegralUIFilterType.Date){if(this._currentValue!==t.value){this._currentValue=t.value;e=!0}if(this._currentValue2!==t.value2){this._currentValue2=t.value2;e=!0}if(e){this.requestUpdate("value",i);this.updateLayout()}}else{if(this._currentValue!==t.value){this._currentValue=t.value;e=!0}if(this._currentValue2!==t.value2){this._currentValue2=t.value2;e=!0}if(e){this.requestUpdate("value",i);this.updateLayout()}}}_isValueChanged(t){return""!==t.value||""!==t.value2}_updateDataFields(t){let e=t||{};this._dataFields={equals:e.equals?e.equals:"Equals",doesNotEqual:e.doesNotEqual?e.doesNotEqual:"Does not equal",beginsWith:e.beginsWith?e.beginsWith:"Begins with",endsWith:e.endsWith?e.endsWith:"Ends with",contains:e.contains?e.contains:"Contains",doesNotContain:e.doesNotContain?e.doesNotContain:"Does not contain",greaterThan:e.greaterThan?e.greaterThan:"Greater than",greaterThanEqualTo:e.greaterThanEqualTo?e.greaterThanEqualTo:"Greater than or equal to",lessThan:e.lessThan?e.lessThan:"Less than",lessThanEqualTo:e.lessThanEqualTo?e.lessThanEqualTo:"Less than or equal to",between:e.between?e.between:"Between",reset:e.reset?e.reset:"Reset"};this._filterList=[{id:1,icon:"iui-filter-list-icon "+this._iconClasses.equal,text:this._dataFields.equals,operation:"="},{id:2,icon:"iui-filter-list-icon "+this._iconClasses.notEqual,text:this._dataFields.doesNotEqual,operation:"!="},{id:3,icon:"iui-filter-list-icon "+this._iconClasses.beginsWith,text:this._dataFields.beginsWith,operation:"->",filterType:IntegralUIFilterType.String},{id:4,icon:"iui-filter-list-icon "+this._iconClasses.endsWith,text:this._dataFields.endsWith,operation:"<-",filterType:IntegralUIFilterType.String},{id:5,icon:"iui-filter-list-icon "+this._iconClasses.contains,text:this._dataFields.contains,operation:"[]",filterType:IntegralUIFilterType.String},{id:6,icon:"iui-filter-list-icon "+this._iconClasses.doesNotContain,text:this._dataFields.doesNotContain,operation:"][",filterType:IntegralUIFilterType.String},{id:7,icon:"iui-filter-list-icon "+this._iconClasses.greaterThan,text:this._dataFields.greaterThan,operation:">",filterType:IntegralUIFilterType.Date|IntegralUIFilterType.Numeric},{id:8,icon:"iui-filter-list-icon "+this._iconClasses.greaterThanEqualTo,text:this._dataFields.greaterThanEqualTo,operation:">=",filterType:IntegralUIFilterType.Date|IntegralUIFilterType.Numeric},{id:9,icon:"iui-filter-list-icon "+this._iconClasses.lessThan,text:this._dataFields.lessThan,operation:"<",filterType:IntegralUIFilterType.Date|IntegralUIFilterType.Numeric},{id:10,icon:"iui-filter-list-icon "+this._iconClasses.lessThanEqualTo,text:this._dataFields.lessThanEqualTo,operation:"<=",filterType:IntegralUIFilterType.Date|IntegralUIFilterType.Numeric},{id:11,icon:"iui-filter-list-icon "+this._iconClasses.between,text:this._dataFields.between,operation:"<>",filterType:IntegralUIFilterType.Date|IntegralUIFilterType.Numeric},{id:12,icon:"iui-filter-list-icon "+this._iconClasses.search,text:this._dataFields.reset,operation:null}];this._updateDropDownList()}_updateDropDownList(){this._currentList=this._filterList.filter(t=>!t.filterType||t.filterType&this._currentType);this._currentMaxDropDownItems=this._currentList.length;this._currentFilter=this._findFilterByOperation();this._resetValue()}_resetValue(){this._currentValue=this._currentValue2=null}_addDropDown(){this._removeDropDown();this._dropDownRef=document.createElement("iui-dropdown",{is:IntegralUIDropDown});document.body.appendChild(this._dropDownRef);if(this._dropDownRef){this._dropDownRef.allowAnimation=this.allowAnimation;this._dropDownRef.contentTemplate=this._getDropDownTemplate();this._dropDownRef.customStyle=this.customStyle;this._dropDownRef.resourcePath=this.resourcePath;this._dropDownRef.size=this._getDropDownSize();this._dropDownRef.theme=this._currentTheme;let t=this._commonService.getPageRect(this._elemRef),e=this._commonService.getShiftPos();this._dropDownRef.position={top:t.bottom+e.y+this._currentDropDownAdjustment.top,left:t.left+e.x+this._currentDropDownAdjustment.left};if(t.right>this._currentParentBounds.right)this._dropDownRef.position.left+=22-this._dropDownRef.size.width;this._dropDownClosed=this._dropDownClosed.bind(this);this._dropDownRef.addEventListener("closed",this._dropDownClosed)}}_dropDownBlur(t){if(this._dropDownRef)this._dropDownRef.close()}_dropDownClosed(t){this._removeDropDown()}_filterMouseDown(t){if(this._isEnabled&&1===t.which)this._showDropDown();t.stopPropagation()}_itemDropDownSelected(t){if(this._dropList)this._dropList.clearSelection();if(t.detail.item&&this._currentFilter!==t.detail.item)this._currentFilter=t.detail.item;this._currentOperation=this._currentFilter.operation;this._updateFilterIcon();this._invokeEvent("filterChanged",{operation:this._currentOperation});if(this._currentFilter&&12===this._currentFilter.id){this._resetValue();this._callValueChanged();this._currentFilter=this._currentList[0]}this._callValueChanged();this.update();this._setFocusToValue()}_listSizeChanged(t){if(this._dropDownRef)this._dropDownRef.size={height:t.detail.size.height+4}}_removeDropDown(){if(this._dropDownRef){this._dropDownRef.removeEventListener("closed",this._dropDownClosed);this._dropDownRef.parentNode.removeChild(this._dropDownRef)}this._dropDownRef=null}_showDropDown(){let t=this;t._addDropDown();if(t._dropDownRef){t._dropDownRef.open();t._dropListTimeout=setTimeout(function(){if(t._dropDownRef){t._dropList=t._dropDownRef.getContent();if(t._dropList){t._dropList.focus();t._dropList.scrollTo(t._currentFilter)}}clearTimeout(t._dropListTimeout)},100)}}_callValueChanged(){this._invokeEvent("valueChanged",{filter:this._currentFilter,value:this._currentValue,value2:this._currentValue2})}_dateValueChanged(t,e){if(this._currentFilter&&"<>"===this._currentFilter.operation)if(e)this._currentValue2=t.detail.date;else this._currentValue=t.detail.date;else this._currentValue=t.detail.date;this._callValueChanged()}_findFilterByOperation(t){let e=t;if(!t)e=this._currentOperation?this._currentOperation:this._currentType===IntegralUIFilterType.String?"[]":"=";let i=this._filterList.filter(t=>t.operation===e);return i.length>0?i[0]:null}_isValueSet(t){return void 0!==t&&null!==t&&""!==t?!0:!1}_inputKeyDown(t,e){if(this._isEnabled)switch(t.keyCode){case 13:if(this._currentFilter&&"<>"===this._currentFilter.operation){this._setCurrentValue(t.target.value,e);if(this._isValueSet(this._currentValue)&&this._isValueSet(this._currentValue2))this._callValueChanged()}else{this._setCurrentValue(t.target.value);this._callValueChanged()}break;default:this._defaultFunc()}}_setCurrentValue(t,e){let i=this._currentType===IntegralUIFilterType.Numeric?Number(t):t;if(e)this._currentValue2=i;else this._currentValue=i}_inputGotFocus(){if(this._currentType===IntegralUIFilterType.String){let t=this,e=this.shadowRoot.querySelector(".iui-filter-input");if(e){e.selectionStart=e.selectionEnd=1e4;t._inputFocusTimeout=setTimeout(function(){e.setSelectionRange(e.selectionStart,e.selectionEnd);e.scrollLeft=e.scrollWidth;e.select();clearTimeout(t._inputFocusTimeout)},100)}}}_inputLostFocus(t,e){this._setCurrentValue(t.target.value,e)}_setFocusToValue(){let t=null;if(this._currentType===IntegralUIFilterType.Date){if((t=this.shadowRoot.querySelector("#iui-filter-date")))t.setFocus()}else if((t=this.shadowRoot.querySelector(".iui-filter-input")))t.focus()}_getDropDownSize(){let t={width:0!==this._currentDropDownSize.width?this._currentDropDownSize.width:this._elemRef.offsetWidth,height:0!==this._currentDropDownSize.height?this._currentDropDownSize.height:100};t.width+=this._currentDropDownAdjustment.width;t.height+=this._currentDropDownAdjustment.height;return t}_updateFilterIcon(){this._filterIcon={"iui-filter-icon":!0};switch(this._currentOperation){case"=":this._filterIcon[this._iconClasses.equal]=!0;break;case"!=":this._filterIcon[this._iconClasses.notEqual]=!0;break;case"->":this._filterIcon[this._iconClasses.beginsWith]=!0;break;case"<-":this._filterIcon[this._iconClasses.endsWith]=!0;break;case"[]":this._filterIcon[this._iconClasses.contains]=!0;break;case"][":this._filterIcon[this._iconClasses.doesNotContain]=!0;break;case">":this._filterIcon[this._iconClasses.greaterThan]=!0;break;case">=":this._filterIcon[this._iconClasses.greaterThanEqualTo]=!0;break;case"<":this._filterIcon[this._iconClasses.lessThan]=!0;break;case"<=":this._filterIcon[this._iconClasses.lessThanEqualTo]=!0;break;case"<>":this._filterIcon[this._iconClasses.between]=!0;break;default:this._filterIcon[this._iconClasses.search]=!0}}_getFilterIcon(){return this._filterIcon}refresh(){this._updateStyle(this.controlStyle);this._updateControlClass();this._updateFilterIcon();this.update();this._updateReferences()}_updateThemeSettings(t){this._currentThemeSettings=css``;switch(t){case IntegralUITheme.Office:this._currentThemeSettings.cssText=this._commonService.replaceAll(iuiDropDownFilterOfficeStyle.cssText,"../icons",this._currentResourcePath);break;case IntegralUITheme.Midnight:this._currentThemeSettings.cssText=this._commonService.replaceAll(iuiDropDownFilterMidnightStyle.cssText,"../icons",this._currentResourcePath);break;default:this._currentThemeSettings.cssText=""}}_getDropDownTemplate(){let t=this._getDropDownSize();t.width-=4;t.height-=4;if(this._currentMaxDropDownItems>0)t={width:this._getDropDownSize().width-4};return html` `}_getFilterValueLayout(){let t=html``;if(this._currentType===IntegralUIFilterType.Date){let e=css` .iui-datepicker { background: var(--datepicker-background, transparent); margin: var(--datepicker-margin, 0); } .iui-datepicker:focus { outline: none !important; } .iui-datepicker-header { border-color: var(--datepicker-border-color, transparent); padding: var(--datepicker-header-padding, 0); } .iui-header-expand-box-arrow { margin: var(--header-expand-box-margin, 2px); } .iui-header-label { padding: var(--header-label-padding, 2px 0 0 0); } `,i=this._commonService.getPageRect(this._elemRef),r={top:this._currentDropDownAdjustment.top,left:i.width-this._currentCalendarSize.width-20};if(i.right-this._currentCalendarSize.width"===this._currentFilter.operation){let s=css` .iui-datepicker { display: var(--datepicker-display, inline-block); width: var(--datepicker-width, calc(50% - 5px)); } `;r.left=i.width/2-this._currentCalendarSize.width-10;t=html`
`}else t=html` `}else if(this._currentFilter&&"<>"===this._currentFilter.operation)t=html`
`;else t=html` `;return t}firstUpdated(t){this._updateReferences();this.updateLayout()}render(){return html`
${this._getFilterValueLayout()}
`}_updateControlStyleSettings(t){this._currentControlStyleSettings=css``;this._currentControlStyleSettings.cssText=this._commonService.replaceAll(iuiDropDownFilterDefaultStyle.cssText,"../icons",t)}_updateReferences(){this._elemRef=this.shadowRoot.querySelector("div[data-ctrl=dropdownfilter]");this._valueRef=this.shadowRoot.querySelector(".iui-filter-value")}}window.customElements.define("iui-dropdownfilter",IntegralUIDropDownFilter);export default IntegralUIDropDownFilter; \ No newline at end of file diff --git a/components/integralui.enums.js b/components/integralui.enums.js index 6c6c0cf..51f2b9f 100644 --- a/components/integralui.enums.js +++ b/components/integralui.enums.js @@ -1,6 +1,6 @@ /* filename: integralui.enums.js - version : 21.1.0 + version : 21.4.0 Copyright © 2016-2021 Lidor Systems. All rights reserved. This file is part of the "IntegralUI Web" Library. @@ -12,4 +12,4 @@ This SOFTWARE is provided "AS IS", WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for the specific language governing rights and limitations under the License. Any infringement will be prosecuted under applicable laws. */ -const IntegralUIAlignment={None:0,Top:1,Right:2,Bottom:4,Left:8};Object.freeze(IntegralUIAlignment);const IntegralUIAnchorStyle={None:0,Top:1,Right:2,Bottom:4,Left:8};Object.freeze(IntegralUIAnchorStyle);const IntegralUIAnimationType={None:"None",Fade:"Fade",Slide:"Slide"};Object.freeze(IntegralUIAnimationType);const IntegralUICheckState={Unchecked:"Unchecked",Indeterminate:"Indeterminate",Checked:"Checked"};Object.freeze(IntegralUICheckState);const IntegralUIColorFormat={HEX:"HEX",HSL:"HSL",RGB:"RGB"};Object.freeze(IntegralUIColorFormat);const IntegralUIContentVisibility={None:"None",Hover:"Hover",Select:"Select",Both:"Both"};Object.freeze(IntegralUIContentVisibility);const IntegralUIDateFormat={Short:"Short",Long:"Long",Custom:"Custom"};Object.freeze(IntegralUIDateFormat);const IntegralUIDirection={None:1,Above:2,Right:4,Below:8,Left:16};Object.freeze(IntegralUIDirection);const IntegralUIDragDropDisplayMode={Popup:"Popup",Handle:"Handle"};Object.freeze(IntegralUIDragDropDisplayMode);const IntegralUIEditorType={None:"None",Button:"Button",CheckBox:"CheckBox",Color:"Color",Custom:"Custom",Date:"Date",DropList:"DropList",Image:"Image",Label:"Label",ListScroller:"ListScroller",Numeric:"Numeric",Progress:"Progress",Rating:"Rating",Slider:"Slider",Text:"Text"};Object.freeze(IntegralUIEditorType);const IntegralUIGridLines={None:"None",Horizontal:"Horizontal",Vertical:"Vertical",Both:"Both"};Object.freeze(IntegralUIGridLines);const IntegralUINumericDisplayMode={InBound:"InBound",LeftRight:"LeftRight",UpDown:"UpDown"};Object.freeze(IntegralUINumericDisplayMode);const IntegralUIItemDisplayMode={Partial:"Partial",Full:"Full"};Object.freeze(IntegralUIItemDisplayMode);const IntegralUIObjectState={Normal:0,Hovered:1,Selected:2,Focused:4,Disabled:8};Object.freeze(IntegralUIObjectState);const IntegralUIOrientation={Horizontal:"Horizontal",Vertical:"Vertical"};Object.freeze(IntegralUIOrientation);const IntegralUIIncrementMode={Free:"Free",Partial:"Partial",Full:"Full"};Object.freeze(IntegralUIIncrementMode);const IntegralUIMoveDirection={After:"After",At:"At",Before:"Before",Down:"Down",First:"First",Left:"Left",Last:"Last",Right:"Right",Up:"Up"};Object.freeze(IntegralUIMoveDirection);const IntegralUIPlacement={Top:"Top",Right:"Right",Bottom:"Bottom",Left:"Left"};Object.freeze(IntegralUIPlacement);const IntegralUIScrollMode={Horizontal:"Horizontal",Vertical:"Vertical"};Object.freeze(IntegralUIScrollMode);const IntegralUISelectionMode={None:"None",One:"One",MultiSimple:"MultiSimple",MultiExtended:"MultiExtended"};Object.freeze(IntegralUISelectionMode);const IntegralUISortOrder={None:"None",Ascending:"Ascending",Descending:"Descending"};Object.freeze(IntegralUISortOrder);const IntegralUISpeedMode={VerySlow:"VerySlow",Slow:"Slow",Normal:"Normal",Fast:"Fast",VeryFast:"VeryFast"};Object.freeze(IntegralUISpeedMode);const IntegralUITabDisplayMode={AutoSized:"AutoSized",Compressed:"Compressed",Justified:"Justified"};Object.freeze(IntegralUITabDisplayMode);const IntegralUITabScrollMode={None:"None",InBound:"InBound",OutBound:"OutBound"};Object.freeze(IntegralUITabScrollMode);const IntegralUITabStripPlacement={Top:"Top",Right:"Right",Middle:"Middle",Bottom:"Bottom",Left:"Left"};Object.freeze(IntegralUITabStripPlacement);const IntegralUITheme={None:"None",Midnight:"Midnight",Office:"Office"};Object.freeze(IntegralUITheme);const IntegralUIToolItemType={Button:"Button",CheckBox:"CheckBox",Date:"Date",DropList:"DropList",Image:"Image",Label:"Label",ListScroller:"ListScroller",Numeric:"Numeric",Progress:"Progress",Rating:"Rating",Separator:"Separator",Slider:"Slider",TextBox:"TextBox"};Object.freeze(IntegralUIToolItemType);const IntegralUIVisibility={None:1,Hover:2,Click:4,Always:8};Object.freeze(IntegralUIVisibility);const IntegralUIWeekDays={Monday:"Monday",Tuesday:"Tuesday",Wednesday:"Wednesday",Thursday:"Thursday",Friday:"Friday",Saturday:"Saturday",Sunday:"Sunday"};Object.freeze(IntegralUIWeekDays);export default IntegralUIObjectState;export{IntegralUIAlignment,IntegralUIAnchorStyle,IntegralUIAnimationType,IntegralUICheckState,IntegralUIColorFormat,IntegralUIContentVisibility,IntegralUIDateFormat,IntegralUIDirection,IntegralUIDragDropDisplayMode,IntegralUIEditorType,IntegralUIGridLines,IntegralUIIncrementMode,IntegralUIItemDisplayMode,IntegralUIMoveDirection,IntegralUINumericDisplayMode,IntegralUIObjectState,IntegralUIOrientation,IntegralUIPlacement,IntegralUIScrollMode,IntegralUISelectionMode,IntegralUISortOrder,IntegralUISpeedMode,IntegralUITabDisplayMode,IntegralUITabScrollMode,IntegralUITabStripPlacement,IntegralUITheme,IntegralUIToolItemType,IntegralUIVisibility,IntegralUIWeekDays}; \ No newline at end of file +const IntegralUIAlignment={None:0,Top:1,Right:2,Bottom:4,Left:8};Object.freeze(IntegralUIAlignment);const IntegralUIAnchorStyle={None:0,Top:1,Right:2,Bottom:4,Left:8};Object.freeze(IntegralUIAnchorStyle);const IntegralUIAnimationType={None:"None",Fade:"Fade",Slide:"Slide"};Object.freeze(IntegralUIAnimationType);const IntegralUICheckMode={TwoState:"TwoState",ThreeState:"ThreeState"};Object.freeze(IntegralUICheckMode);const IntegralUICheckState={Unchecked:"Unchecked",Indeterminate:"Indeterminate",Checked:"Checked"};Object.freeze(IntegralUICheckState);const IntegralUIColorFormat={HEX:"HEX",HSL:"HSL",RGB:"RGB"};Object.freeze(IntegralUIColorFormat);const IntegralUIContentVisibility={None:"None",Hover:"Hover",Select:"Select",Both:"Both"};Object.freeze(IntegralUIContentVisibility);const IntegralUIDateFormat={Short:"Short",Long:"Long",Custom:"Custom"};Object.freeze(IntegralUIDateFormat);const IntegralUIDirection={None:1,Above:2,Right:4,Below:8,Left:16};Object.freeze(IntegralUIDirection);const IntegralUIDockStyle={None:"None",Top:"Top",Right:"Right",Fill:"Fill",Bottom:"Bottom",Left:"Left"};Object.freeze(IntegralUIDockStyle);const IntegralUIDragDropDisplayMode={Popup:"Popup",Handle:"Handle"};Object.freeze(IntegralUIDragDropDisplayMode);const IntegralUIEditorType={None:"None",Button:"Button",CheckBox:"CheckBox",Color:"Color",Custom:"Custom",Date:"Date",DropList:"DropList",Image:"Image",Label:"Label",ListScroller:"ListScroller",Numeric:"Numeric",Progress:"Progress",Rating:"Rating",Slider:"Slider",Text:"Text"};Object.freeze(IntegralUIEditorType);const IntegralUIFilterType={Boolean:1,Date:2,Numeric:4,String:8};Object.freeze(IntegralUIFilterType);const IntegralUIGridLines={None:"None",Horizontal:"Horizontal",Vertical:"Vertical",Both:"Both"};Object.freeze(IntegralUIGridLines);const IntegralUIIncrementMode={Free:"Free",Partial:"Partial",Full:"Full"};Object.freeze(IntegralUIIncrementMode);const IntegralUIItemDisplayMode={Partial:"Partial",Full:"Full"};Object.freeze(IntegralUIItemDisplayMode);const IntegralUIMoveDirection={After:"After",At:"At",Before:"Before",Down:"Down",First:"First",Left:"Left",Last:"Last",Right:"Right",Up:"Up"};Object.freeze(IntegralUIMoveDirection);const IntegralUINumericDisplayMode={InBound:"InBound",LeftRight:"LeftRight",UpDown:"UpDown"};Object.freeze(IntegralUINumericDisplayMode);const IntegralUIObjectState={Normal:0,Hovered:1,Selected:2,Focused:4,Disabled:8};Object.freeze(IntegralUIObjectState);const IntegralUIOrientation={Horizontal:"Horizontal",Vertical:"Vertical"};Object.freeze(IntegralUIOrientation);const IntegralUIPlacement={Top:"Top",Right:"Right",Bottom:"Bottom",Left:"Left"};Object.freeze(IntegralUIPlacement);const IntegralUIScrollMode={Horizontal:"Horizontal",Vertical:"Vertical"};Object.freeze(IntegralUIScrollMode);const IntegralUISelectionMode={None:"None",One:"One",MultiSimple:"MultiSimple",MultiExtended:"MultiExtended"};Object.freeze(IntegralUISelectionMode);const IntegralUISortOrder={None:"None",Ascending:"Ascending",Descending:"Descending"};Object.freeze(IntegralUISortOrder);const IntegralUISpeedMode={VerySlow:"VerySlow",Slow:"Slow",Normal:"Normal",Fast:"Fast",VeryFast:"VeryFast"};Object.freeze(IntegralUISpeedMode);const IntegralUITabDisplayMode={AutoSized:"AutoSized",Compressed:"Compressed",Justified:"Justified"};Object.freeze(IntegralUITabDisplayMode);const IntegralUITabScrollMode={None:"None",InBound:"InBound",OutBound:"OutBound"};Object.freeze(IntegralUITabScrollMode);const IntegralUITabStripPlacement={Top:"Top",Right:"Right",Middle:"Middle",Bottom:"Bottom",Left:"Left"};Object.freeze(IntegralUITabStripPlacement);const IntegralUITheme={None:"None",Midnight:"Midnight",Office:"Office"};Object.freeze(IntegralUITheme);const IntegralUIToolItemType={Button:"Button",CheckBox:"CheckBox",Date:"Date",DropList:"DropList",Image:"Image",Label:"Label",ListScroller:"ListScroller",Numeric:"Numeric",Progress:"Progress",Rating:"Rating",Separator:"Separator",Slider:"Slider",TextBox:"TextBox"};Object.freeze(IntegralUIToolItemType);const IntegralUIVisibility={None:1,Hover:2,Click:4,Always:8};Object.freeze(IntegralUIVisibility);const IntegralUIWeekDays={Monday:"Monday",Tuesday:"Tuesday",Wednesday:"Wednesday",Thursday:"Thursday",Friday:"Friday",Saturday:"Saturday",Sunday:"Sunday"};Object.freeze(IntegralUIWeekDays);export default IntegralUIObjectState;export{IntegralUIAlignment,IntegralUIAnchorStyle,IntegralUIAnimationType,IntegralUICheckMode,IntegralUICheckState,IntegralUIColorFormat,IntegralUIContentVisibility,IntegralUIDateFormat,IntegralUIDirection,IntegralUIDockStyle,IntegralUIDragDropDisplayMode,IntegralUIEditorType,IntegralUIFilterType,IntegralUIGridLines,IntegralUIIncrementMode,IntegralUIItemDisplayMode,IntegralUIMoveDirection,IntegralUINumericDisplayMode,IntegralUIObjectState,IntegralUIOrientation,IntegralUIPlacement,IntegralUIScrollMode,IntegralUISelectionMode,IntegralUISortOrder,IntegralUISpeedMode,IntegralUITabDisplayMode,IntegralUITabScrollMode,IntegralUITabStripPlacement,IntegralUITheme,IntegralUIToolItemType,IntegralUIVisibility,IntegralUIWeekDays}; \ No newline at end of file diff --git a/components/integralui.grid.js b/components/integralui.grid.js index f129ab4..c6e73b1 100644 --- a/components/integralui.grid.js +++ b/components/integralui.grid.js @@ -1,6 +1,6 @@ /* filename: integralui.grid.js - version : 21.1.0 + version : 21.4.0 Copyright © 2016-2021 Lidor Systems. All rights reserved. This file is part of the "IntegralUI Web" Library. @@ -12,4 +12,4 @@ This SOFTWARE is provided "AS IS", WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for the specific language governing rights and limitations under the License. Any infringement will be prosecuted under applicable laws. */ -import{c as css,h as html}from"../external/lit-element.js";import{c as classMap}from"../external/class-map.js";import{s as styleMap}from"../external/style-map.js";import{IntegralUIVisibility,IntegralUIEditorType,IntegralUITheme}from"./integralui.enums.js";import IntegralUIBaseGrid from"./integralui.base.grid.js";import{iuiEditorsDefaultStyle}from"../styles/integralui.editors.style.js";import{iuiSortingDefaultStyle}from"../styles/integralui.sorting.style.js";import"./integralui.paginator.js";import"./integralui.scrollbar.js";import{iuiScrollBarStyle}from"../styles/integralui.scrollbar.style.js";import{iuiScrollBarOfficeStyle}from"../themes/office/integralui.scrollbar.office.js";import{iuiScrollBarMidnightStyle}from"../themes/midnight/integralui.scrollbar.midnight.js";import{iuiGridDefaultStyle}from"../styles/integralui.grid.style.js";import{iuiGridOfficeStyle}from"../themes/office/integralui.grid.office.js";import{iuiGridMidnightStyle}from"../themes/midnight/integralui.grid.midnight.js";class IntegralUIGrid extends IntegralUIBaseGrid{_init(){super._init();this._isExpandBoxVisible=!0;this._dataGroups=[];this._currentGrouping={dropdown:{items:[]},enabled:!1,showAddButton:!1,showColumns:!1,showPanel:!0};this._expandTimeout=null;this._expandRow=null;this._isAutoExpandActive=!1;this._groupReorderActive=!1;this._hoverGroup=null;this._reorderGroup=null;this._dragGroupElemSize={width:0,height:0};this._groupCoordinates=[];this._reorderGroupPos=-1;this._dragGroupSettings={display:"none",top:0,left:0,label:""};this._groupList=[];this._activeGroups=[];this._groupExpandList=[];this._groupPanelSize={width:0,height:0};this._groupPanelHeight=0;this._isGroupListItemSelected=!1;this._isGroupPanelHovered=!1;this._groupReorderMargin=50;this._reorderGroupWidth=50;this._currentControlStyleSettings=iuiGridDefaultStyle;this._currentEditorStyleSettings=iuiEditorsDefaultStyle;this._currentScrollStyleSettings=iuiScrollBarStyle;this._currentSortStyleSettings=iuiSortingDefaultStyle;this._generalClassName="iui-grid";this._columnClassName=this._generalClassName+"-column";this._columnHeaderClassName=this._columnClassName+"-header";this._columnBodyClassName=this._columnClassName+"-body";this._columnFooterClassName=this._columnClassName+"-footer";this._rowClassName=this._generalClassName+"-row";this._cellBorderClassName="iui-grid-lines-both";this._cellClassName=this._rowClassName+"-cell";this._expandBoxClassName=this._generalClassName+"-expand-box";this._gridLinesClassName=this._generalClassName+"-lines";this._sortingClassName="iui-sort";this._initStyle();this._updateData();this._resizeObserver=new ResizeObserver(e=>{if(e&&e.length>0&&e[0].contentRect){let e=!1;if(this._clientRect.width!==this._prevClientRect.width){this._prevClientRect.width=this._clientRect.width;e=!0}if(this._clientRect.height!==this._prevClientRect.height){this._prevClientRect.height=this._clientRect.height;e=!0}if(e)this.updateLayout(!0)}})}connectedCallback(){super.connectedCallback();this._windowMouseMove=this._windowMouseMove.bind(this);window.addEventListener("mousemove",this._windowMouseMove);this._windowMouseUp=this._windowMouseUp.bind(this);window.addEventListener("mouseup",this._windowMouseUp)}disconnectedCallback(){super.disconnectedCallback();window.removeEventListener("mousemove",this._windowMouseMove);window.removeEventListener("mouseup",this._windowMouseUp);if(this._resizeObserver)this._resizeObserver.disconnect();this._resizeObserver=null;this._resetLayoutTimer();this._rt()}_initStyle(){this._defaultStyle={general:{disabled:this._generalClassName+"-disabled",focused:this._generalClassName+"-focused",normal:this._generalClassName,hovered:this._generalClassName+"-hovered",selected:this._generalClassName+"-selected"},column:{header:{cell:this._columnHeaderClassName+"-cell",disabled:this._columnHeaderClassName+"-disabled",normal:this._columnHeaderClassName,hovered:this._columnHeaderClassName+"-hovered",selected:this._columnHeaderClassName+"-selected"},body:{cell:this._columnBodyClassName+"-cell",disabled:this._columnBodyClassName+"-disabled",normal:this._columnBodyClassName,hovered:this._columnBodyClassName+"-hovered",selected:this._columnBodyClassName+"-selected"},footer:{cell:this._columnFooterClassName+"-cell",disabled:this._columnFooterClassName+"-disabled",normal:this._columnFooterClassName,hovered:this._columnFooterClassName+"-hovered",selected:this._columnFooterClassName+"-selected"},sorting:{normal:{ascending:this._sortingClassName+"-ascending",descending:this._sortingClassName+"-descending"},selected:{ascending:this._sortingClassName+"-ascending-selected",descending:this._sortingClassName+"-descending-selected"}}},row:{general:{disabled:this._rowClassName+"-disabled",focused:this._rowClassName+"-focused",normal:this._rowClassName,hovered:this._rowClassName+"-hovered",selected:this._rowClassName+"-selected"},expandBox:{general:this._expandBoxClassName,load:this._expandBoxClassName+"-load",expanded:this._expandBoxClassName+"-open",collapsed:this._expandBoxClassName+"-close"},cell:{disabled:this._cellClassName+"-disabled",focused:this._cellClassName+"-focused",normal:this._cellClassName,hovered:this._cellClassName+"-hovered",selected:this._cellClassName+"-selected"}},gridLines:{none:this._gridLinesClassName+"-none",horizontal:this._gridLinesClassName+"-horizontal",vertical:this._gridLinesClassName+"-vertical",both:this._gridLinesClassName+"-both"}};this._updateStyle(this.controlStyle);this._updateControlClass();this.refresh()}attributeChangedCallback(e,t,i){super.attributeChangedCallback(e,t,i)}static get properties(){return{autoExpand:{type:Boolean,attribute:"auto-expand",reflect:!0},grouping:{type:Object},groups:{type:Array},showExpandBox:{type:Boolean,attribute:"show-expandbox",reflect:!0}}}get autoExpand(){return this._isAutoExpandActive}set autoExpand(e){const t=this._isAutoExpandActive;this._isAutoExpandActive=e;this.requestUpdate("autoExpand",t)}get grouping(){return this._currentGrouping}set grouping(e){const t=this._currentGrouping;this._updateGrouping(e);this.requestUpdate("grouping",t)}get groups(){return this._dataGroups}set groups(e){const t=this._dataGroups;this._dataGroups=e;this.requestUpdate("groups",t)}get showExpandBox(){return this._isExpandBoxVisible}set showExpandBox(e){const t=this._isExpandBoxVisible;this._isExpandBoxVisible=e;this.updateLayout();this.requestUpdate("showExpandBox",t)}_addRowToGroup(e){let t=e[this._rowFields.cells];if(t&&t.length>0){let i=-1,s=null;this._dataGroups.forEach((e,l)=>{let o=l;if((i=e[this._groupFields.cid]))o=this._getCellIndexById(t,l,i);if(o>=0&&o0){this._dataGroups.forEach(e=>{if(!e[this._groupFields.id])e[this._groupFields.id]=this._commonService.getUniqueId();this._activeGroups.push(e)});let e=this._dataService.getList(null,this._rowDataKey);if(e)for(let t=0;t{if("group"===e.type){let i=this._getCellByColumnId(e[this._rowFields.cells],t);if(i)for(let s=0;s{if("group"===e.type)this._groupExpandList.push({id:e[this._rowFields.id],expanded:this._isRowExpanded(e)})})}_updateExpandStatus(){this._createGroupExpandList()}_updateGroupExpandValue(e,t){let i=this._commonService.getObjFromListById(this._groupExpandList,e);if(i)i.expanded=t}loadData(e,t){this._processLoadData(e,null,t)}_updateDataFields(e){let t=e||{};this._updateColumnFields(t.column);this._updateGroupFields(t.group);this._updateRowFields(t.row);this._updateCellFields(t.cell)}_updateGroupFields(e){if(e)this._groupFields={id:e.id?e.id:"id",cells:e.cells?e.cells:"cells",cid:e.cid?e.cid:"cid",expanded:e.expanded?e.expanded:"expanded",rows:e.rows?e.rows:"rows",text:e.text?e.text:"text"};else this._groupFields={id:"id",cid:"cid",cells:"cells",expanded:"expanded",rows:"rows",text:"text"}}_updateGrouping(e){if(e)this._currentGrouping={dropdown:{items:this._commonService.isFieldAvailable(e.items,[])},enabled:this._commonService.isFieldAvailable(e.enabled,!1),showAddButton:this._commonService.isFieldAvailable(e.showAddButton,!1),showColumns:this._commonService.isFieldAvailable(e.showColumns,!1),showPanel:this._commonService.isFieldAvailable(e.showPanel,!0)};else this._currentGrouping={dropdown:{items:[]},enabled:!1,showAddButton:!1,showColumns:!1,showPanel:!0};this.updateLayout()}_addChildRows(e,t,i,s){let l=!0;if(!e[this._rowFields.rows])return l=this._addRowToCurrentList(e,t,i,s);if((l=this._addRowToCurrentList(e,t,i,s))){let i=0,l=!0;if(("group"===e.type&&(s||this._isRowExpanded(e)))||(!0===e[this._rowFields.hasChildren]&&(s||this._isRowExpanded(e)))){let o=e[this._rowFields.rows];if(o){this._applySorting(o);for(let r=0;r0||this._isThereRows(e)))this._isThereChildRows=!0}return l}_updateCurrentRowList(e){this._currentRowList.length=0;if(this._currentPaging.enabled){if(this._currentPageNumber>=1&&this._currentPageNumber<=this._pageList.length)for(let e=0;e0)e=this._groupList;if(e){this._applySorting(e);for(let t=0;t0)e=this._groupList;if(e)for(let t=0;t0)e=this._groupList;if(e&&e.length>0){this._applySorting(e);this._pageList.push([]);for(let t=0;t0&&0===this._pageList[this._pageList.length-1].length)this._pageList.splice(this._pageList.length-1,1)}}_expandOnDelay(e){let t=this;if(!1!==t._isAutoExpandActive){if(t._expandRow!==e){if(t._expandTimeout)clearTimeout(t._expandTimeout);t._expandTimeout=setTimeout(function(){if(t._expandTimeout)t.expand(e);clearTimeout(t._expandTimeout)},500)}t._expandRow=e}}_rowDragStart(e,t,i){if(this._isEnabled)if(t.isDragAllowed&&this._hoverCell&&this._hoverCell.isDragDropColumn){this._dragRowObjIndex=i;this._dragRowObj=t;this.update();this._dragGhost=this.shadowRoot.querySelector("#drag-row-elem");this._processDragStart(e,t.data)}else e.preventDefault();e.stopPropagation()}_rowDragOver(e,t,i,s){if(this._isEnabled){let l=this._getRowElems(s);if(l&&i>=0&&i{e[this._rowFields.expanded]=t;this._updateExpandingCell(e,t);if("group"===e.type)this._updateGroupExpandValue(e[this._rowFields.id],t)});this._updateCurrentLayout(!1,!0)}}isColumnVisible(e){let t=e&&!1!==e[this._columnFields.visible];if(this._currentGrouping.enabled&&this._dataGroups.length>0&&!this._currentGrouping.showColumns)t=e?t&&!this._checkColumnPresence(e[this._columnFields.id]):t;return t}_getGroupTextFromColumn(e){let t="";if(e)if(!(t=e[this._columnFields.groupText])||""===t)t=e[this._columnFields.headerText];return t}_getGroupText(e){let t="",i=this.getColumnById(e.cid);if(i)t=this._getGroupTextFromColumn(i);else if(this._currentGrouping&&this._currentGrouping.dropdown&&this._currentGrouping.dropdown.items){let i=this._commonService._getObjFromListById(this._currentGrouping.dropdown.items,e.cid);if(i)t=i.text}return t}_updateDragGroupElem(e,t){let i=this._commonService.getPadding(this._groupingPanelElem),s=this._commonService.getPageRect(this._groupingPanelElem),l=this._commonService.getShiftPos(),o=this._commonService.getMousePos(e);o.x-=s.left+l.x;o.y-=s.top+l.y;this._dragGroupElemSize.width=this._dragGroupElem.offsetWidth;let r={x:o.x-this._dragGroupElemSize.width/2,y:o.y};this._dragGroupSettings.top=i.top;this._dragGroupSettings.left=r.x;this._dragGroupSettings.display="block";this._dragGroupSettings.label=t}_groupPanelDragEnter(e){this._dropMark(e)}_groupPanelMouseEnter(e){if(this._isEnabled){this._isGroupPanelHovered=!0;if(1===e.which&&this._columnReorderActive&&this._reorderColumn){this._dragGroupSettings.display="none";this._dragGroupSettings.label=this._reorderColumn[this._columnFields.headerText];this._groupReorderActive=!0;this._reorderGroup=null;this._dropMark(e)}else this._changeCursor()}e.stopPropagation()}_groupPanelMouseMove(e){if(this._isEnabled&&1===e.which&&((this._columnReorderActive&&this._reorderColumn)||(this._groupReorderActive&&this._reorderGroup))){this._isGroupPanelHovered=!0;let t=this._commonService.getPageRect(this._groupingPanelElem),i=this._commonService.getShiftPos(),s=this._commonService.getMousePos(e);s.x-=t.left+i.x;s.y-=t.top+i.y;let l="";if(this._reorderColumn)l=this._getGroupTextFromColumn(this._reorderColumn);else if(this._reorderGroup)l=this._getGroupText(this._reorderGroup);this._updateDragGroupElem(e,l);this._dropMark(e);this._changeCursor();this.update()}e.stopPropagation()}_groupPanelMouseLeave(e){this._isGroupPanelHovered=!1;this._dragGroupSettings.display="none"}_checkColumnPresence(e){let t=!1;for(let i=0;i=0){if(!this._checkColumnPresence(e)){this._dataGroups.splice(i,0,t);this.updateLayout();this._invokeEvent("groupOrderChanged")}}}else if(!this._checkColumnPresence(e))if(this._addGroup(t))this._invokeEvent("groupOrderChanged")}this._resetReorderColumnSettings();this._hoverGroup=null;this._reorderGroup=null;this._dropMark(e);this._dragGroupSettings.display="none";this._changeCursor();e.stopPropagation()}}_groupMouseEnter(e,t){if(this._isEnabled&&1===e.which){this._hoverGroup=t;e.stopPropagation()}}_groupMouseLeave(e,t){if(this._isEnabled&&1===e.which){this._hoverGroup=null;e.stopPropagation()}}_groupMouseDown(e,t){if(this._isEnabled&&1===e.which&&this._dataGroups.length>1){this._groupReorderActive=!0;this._reorderGroup=t;this._updateDragGroupElem(e,this._getGroupText(this._reorderGroup))}e.stopPropagation()}_groupButtonMouseDown(e,t){if(this._isEnabled&&1===e.which)this._removeGroup(t);e.stopPropagation()}_addGroup(e){let t=!1,i={cancel:!1,group:e};this._invokeEvent("groupAdding",i);if(!0!==i.cancel){this._dataGroups.push(e);this.updateLayout();this._invokeEvent("groupAdded",{group:e});t=!0}return t}_removeGroup(e){let t=this._dataGroups.indexOf(e);if(t>=0){let i={cancel:!1,group:e};this._invokeEvent("groupRemoving",i);if(!0!==i.cancel){this._dataGroups.splice(t,1);this.updateLayout();this._invokeEvent("groupRemoved",{group:e})}}}_groupListItemSelected(e){if(!this._checkColumnPresence(e.id))this._addGroup({cid:e.id});this._isGroupListItemSelected=!0}_getCellsAllSides(){let e=[];for(let t=0;t<3;t++){let i=0,s=[],l="";switch(t){case 1:i=this._fixedLeftViewIndexRange;l="normal";break;case 2:i=this._fixedRightViewIndexRange;l="right";break;default:i=this._numVisibleCells;l="left"}s=this._scrollRowList[l].filter((e,t)=>t===this._dragRowObjIndex).filter((e,t)=>t0?s[0].cells:[])}return e}_getDragRowLayoutBySide(){let e=this._getCellsAllSides(),t=this._dragRowObj;return html` ${e.map(e=>html`
${this._getExpandBoxLayout(t,e)} ${this._getRowCellTemplate(t,e)}
`)} `}_getDragRowLayout(){if(this._dragRowObjIndex>=0){return html`
${this._getDragRowLayoutBySide()}
`}return html``}_getExpandBoxLayout(e,t){if(this._isExpandBoxVisible&&t.expandBoxAllowed)if(t.allowEdit&&t.data===this._currentEditingCell)return html``;else return html``;return html``}_getFooterLayout(e){if(this._isFooterVisible){let t="footer",i="footer-cell-elem",s="iui-grid-block",l={bottom:this._getBlockBottomPos()+"px"},o=this._isThereFixedColumns(e);switch(e){case"left":t="footer-left";i="footer-left-cell-elem";s+=" iui-grid-block-bottom-left";l.left=0;break;case"right":t="footer-right";i="footer-right-cell-elem";s+=" iui-grid-block-bottom-right";l.right=this._getBlockRightPos()+"px";break;default:s+=" iui-grid-block-bottom";l.left=-this._contentLeftPos+"px"}if(o)return html`
${this._scrollFooterList[e].map(e=>html` `)}
`}return html``}_getGroupLayout(){if(this._currentGrouping&&this._currentGrouping.enabled)return html`
${this._activeGroups.map((e,t)=>html`

${this._getGroupText(e)}

`)} ${0===this._activeGroups.length?html`

Empty Group

`:html``}

${this._dragGroupSettings.label}

`;else return html``}_getHeaderLayout(e){if(this._isHeaderVisible){let t="header",i="header-cell-elem",s="iui-grid-block",l={},o=this._isThereFixedColumns(e);switch(e){case"left":t="header-left";i="header-left-cell-elem";s+=" iui-grid-block-top-left";l={left:0,top:this._groupPanelHeight+"px"};break;case"right":t="header-right";i="header-right-cell-elem";s+=" iui-grid-block-top-right";l={right:this._getBlockRightPos()+"px",top:this._groupPanelHeight+"px"};break;default:s+=" iui-grid-block-top";l={left:-this._contentLeftPos+"px",top:this._groupPanelHeight+"px"}}if(o)return html`
${this._scrollColumnList[e].map(t=>html` ${t.columns.map(e=>html` `)} ${"right"!==e?html``:html``} `)}
${this._getColumnHeaderTemplate(e)}
_
`}return html``}_getHoverContentLayout(){if(this._isHoverTemplatePresent&&!this._isUpdateActive&&this._isContentAllowed(this._hoverRowObj.data,"hover"))return html`
${this._getContentTemplate(this._hoverRowObj.data,"hover")}
`;else return html``}_getRowCellTemplate(e,t){let i=html``;if(t.editorType){let s=!1;if(t.editorVisibility&IntegralUIVisibility.Hover&&t.editorVisibility&IntegralUIVisibility.Click)s=e.data===this._hoverRow||e.data===this._currentSelectedRow;else if(t.editorVisibility&IntegralUIVisibility.None)s=!1;else if(t.editorVisibility&IntegralUIVisibility.Hover)s=e.data===this._hoverRow;else if(t.editorVisibility&IntegralUIVisibility.Click)s=e.data===this._currentSelectedRow;else s=!0;let l=t.editorSettings;if("group"===e.data.type)if(t.isDragDropColumn)i=e.isDragAllowed&&!e.isEmpty?html``:html``;else i=this._getDefaultRowTemplate(e,t);else switch(t.editorType){case IntegralUIEditorType.CheckBox:if(!t.isDataEmpty)i=html`
`;break;case IntegralUIEditorType.Date:if(s){let s=css` .iui-datepicker { background: transparent; margin: var(--datepicker-margin, 0); } .iui-datepicker:focus { outline: none !important; } .iui-datepicker-header { border: 0; padding: var(--datepicker-header-padding, 0); } .iui-header-expand-box-arrow { margin: var(--header-expand-box-margin, 2px); } .iui-header-label { padding: var(--header-label-padding, 0); } `,o=this._getEditorAdjustment(t,{top:6,left:-6,width:11});i=html` `}else i=html`${t.editorValue}`;break;case IntegralUIEditorType.DropList:if(s){let s=css` .iui-select { background: transparent; margin: var(--select-margin, 0); } .iui-select:focus { outline: none !important; } .iui-select-header { border: 0; padding: var(--select-header-padding, 0); } .iui-header-expand-box-arrow { margin: var(--header-expand-box-margin, 2px); } .iui-header-label { padding: var(--header-label-padding, 0); } `,o=this._getEditorAdjustment(t,{top:6,left:-6,width:11});i=html` `}else if(t.editorValueObject)i=html`${t.editorValueObject.text}`;else i=html`${t.editorValue}`;break;case IntegralUIEditorType.Numeric:if(s){i=html` `}else i=html`${t.displayValue}`;break;case IntegralUIEditorType.Progress:i=html`
`;break;case IntegralUIEditorType.Rating:if(!t.isDataEmpty){let s=css` .iui-rating { background: var(--rating-background, transparent); border: var(--rating-border, 0); } .iui-rating:focus { outline: none !important; } `;i=html`
`}break;case IntegralUIEditorType.Slider:if(!t.isDataEmpty){let s=css` .iui-slider:focus { outline: none !important; } `;i=html`
`}break;case IntegralUIEditorType.Text:if(t.allowEdit&&this._isEditorFocused&&this._currentEditingCell===t.data)i=html` `;else i=this._getDefaultRowTemplate(e,t);break;default:if(t.isDragDropColumn)i=e.isDragAllowed&&!e.isEmpty?html``:html``;else i=this._getDefaultRowTemplate(e,t)}}return i}_getRowLayout(e){let t="body",i="row-cell-elem",s=0,l={},o=this._isThereFixedColumns(e),r="iui-grid-block",a="row-elem",n={};switch(e){case"left":t="body-left";i="row-left-cell-elem";s=this._fixedLeftViewIndexRange;l={left:0};r+=" iui-grid-block-left";a="row-left-elem";n={"margin-top":this._blockMarginTop+this._groupPanelHeight+"px",height:this._leftBlockSize.height+"px",width:this._leftBlockSize.width+"px"};break;case"right":t="body-right";i="row-right-cell-elem";s=this._fixedRightViewIndexRange;r+=" iui-grid-block-right";a="row-right-elem";n={"margin-top":this._blockMarginTop+this._groupPanelHeight+"px",height:this._rightBlockSize.height+"px",right:this._getBlockRightPos()+"px",width:this._rightBlockSize.width+"px"};break;default:s=this._numVisibleCells;l={left:-this._contentLeftPos+"px",position:"absolute"};n={"margin-top":this._blockMarginTop+this._groupPanelHeight+"px",height:this._blockSize.height+"px"}}if(o)return html`
${this._scrollRowList[e].filter((e,t)=>!e.isEmpty&&thtml` ${t.cells.filter((e,t)=>thtml` `)} `)}
${this._getExpandBoxLayout(t,e)} ${this._getRowCellTemplate(t,e)}
`}_getSelectContentLayout(){if(this._isSelectedTemplatePresent&&!this._isUpdateActive)return this._currentSelectedRows.map((e,t)=>html` ${this._isContentAllowed(e,"select")?html`
${this._getContentTemplate(e,"select")}
`:html``}
`);else return html``}_processUpdateLayout(e){let t=this;return new Promise(i=>{if(t._isUpdateAllowed){t._resetLayoutTimer();t._updateTimer=setTimeout(function(){t._updateCurrentColumnList(e);t._updateGroupList();if(t._currentPaging.enabled)t._updatePageList();t._updateCurrentRowList(e);t.updateFullList();t._updateScrollColumnList();t._updateReferences();t._updateExpandingColumnID();if(t._getNumScrollColumns("normal")0?t._paginatorHeight-2:0;t._cornerScrollElemPos.bottom=t._paginatorHeight>0?t._paginatorHeight-2:0;t._clientRect={width:t._elemRef.clientWidth,height:t._elemRef.clientHeight-t._groupPanelHeight-t._paginatorHeight};if(t._groupingPanelElem){let e=t._commonService.getBorderWidth(t.groupingPanelElem),i=t._commonService.getPadding(t.groupingPanelElem);t._groupPanelSize.width=t._clientRect.width-(i.left+i.right)-(e.left+e.right)}t._updateRange();t.update();t._updateReferences();let s=setTimeout(function(){t._columnPadding={top:0,right:0,bottom:0,left:0};let e=[];if(t._columnElems.normal&&t._isHeaderVisible)e=t._columnElems.normal;else if(t._footerElems.normal&&t._isFooterVisible)e=t._footerElems.normal;else if(t._cellElems.normal)e=t._cellElems.normal;if(e&&e.length>0)t._columnPadding=t._commonService.getPadding(e[0].firstElementChild);t._currentHeaderHeight=t._getHeaderHeight();t._currentFooterHeight=t._getFooterHeight();t._updateVisibleRange();t._updateRange();t.update();let l=setTimeout(function(){t._blockMarginTop=t._currentHeaderHeight;t._updateBlockSize();t._checkForSelectionChange();if(t._rowElems){let e=t._rowElems.normal;t._avgRowHeight=0;if(e&&e.length>0){let i=0,s=0;for(let l=0;l0)t._avgRowHeight=Math.floor(s/i)}}t._updateScrollSize();t._updateAllColumnWidth();t._updateScrollSize();t._updateSelectContentPos();t._invokeEvent("updateComplete");t._isUpdateActive=!1;t.update();clearTimeout(l);i()},1);clearTimeout(s)},1);clearTimeout(t._updateTimer)},100)}})}_updateRange(e){this._viewIndexRange={left:0,middle:999,right:999};this._updateLeftBlockSize();this._updateRightBlockSize();this._fixedLeftViewIndexRange=this._completeColumnList.left.length>0?this._completeColumnList.left[0].length:0;this._fixedRightViewIndexRange=this._completeColumnList.right.length>0?this._completeColumnList.right[0].length:0;let t=!1,i=!1,s=!1,l=this._currentScrollPos.x+this._clientRect.width-this._leftBlockSize.width,o=l+1,r=0;if(this._completeColumnList.normal.length>0){let e=this._completeColumnList.normal[0].length;for(let a=0;a=this._currentScrollPos.x){this._viewIndexRange.left=a;t=!0}if(!i&&r>=l){this._viewIndexRange.middle=a;i=!0}if(!s&&r>=o){this._viewIndexRange.right=a;s=!0}if(t&&s)break}if(!i)this._viewIndexRange.middle=e;if(!s)this._viewIndexRange.right=e;r=0;for(let t=0;t0){let t=0,i=0;for(let s=0;s0){let e=Math.floor(i/t);if(e>0)this._visibleRange=Math.floor((this._clientRect.height-(this._currentHeaderHeight+this._currentFooterHeight))/e)+1}}}_updateThemeSettings(e){this._currentThemeSettings=css``;this._currentScrollStyleSettings=css``;switch(e){case IntegralUITheme.Office:this._currentThemeSettings.cssText=this._commonService.replaceAll(iuiGridOfficeStyle.cssText,"../icons",this._currentResourcePath);this._currentScrollStyleSettings.cssText=this._commonService.replaceAll(iuiScrollBarOfficeStyle.cssText,"../icons",this._currentResourcePath);break;case IntegralUITheme.Midnight:this._currentThemeSettings.cssText=this._commonService.replaceAll(iuiGridMidnightStyle.cssText,"../icons",this._currentResourcePath);this._currentScrollStyleSettings.cssText=this._commonService.replaceAll(iuiScrollBarMidnightStyle.cssText,"../icons",this._currentResourcePath);break;default:this._currentThemeSettings.cssText="";this._currentScrollStyleSettings.cssText=this._commonService.replaceAll(iuiScrollBarStyle.cssText,"../icons",this._currentResourcePath)}}firstUpdated(e){let t=this;t._updateReferences();setTimeout(function(){t._isHoverTemplatePresent=t.rowHoverTemplate?!0:!1;t._isSelectedTemplatePresent=t.rowSelectTemplate?!0:!1;t.updateLayout()},1)}render(){return html`
${this._getGroupLayout()} ${this._getHeaderLayout("normal")} ${this._getHeaderLayout("left")} ${this._getHeaderLayout("right")} ${this._getRowLayout("normal")} ${this._getRowLayout("left")} ${this._getRowLayout("right")} ${this._getDragRowLayout()} ${this._getHoverContentLayout()} ${this._getSelectContentLayout()} ${this._getFooterLayout("normal")} ${this._getFooterLayout("left")} ${this._getFooterLayout("right")} ${this.isVerScrollVisible()?html``:html``} ${this.isHorScrollVisible()?html``:html``} ${this.isVerScrollVisible()&&this.isHorScrollVisible()?html`
`:html``} ${this._isPaginationEnabled()?html``:html``}
`}_updateControlStyleSettings(e){this._currentControlStyleSettings=css``;this._currentControlStyleSettings.cssText=this._commonService.replaceAll(iuiGridDefaultStyle.cssText,"../icons",e);this._currentEditorStyleSettings=css``;this._currentEditorStyleSettings.cssText=this._commonService.replaceAll(iuiEditorsDefaultStyle.cssText,"../icons",e);this._currentSortStyleSettings=css``;this._currentSortStyleSettings.cssText=this._commonService.replaceAll(iuiSortingDefaultStyle.cssText,"../icons",e)}_updateReferences(){this._elemRef=this.shadowRoot.querySelector("div[data-ctrl=grid]");this._headerElem={normal:this.shadowRoot.querySelector("#header"),left:this.shadowRoot.querySelector("#header-left"),right:this.shadowRoot.querySelector("#header-right")};this._columnElems={normal:this._headerElem.normal?this._headerElem.normal.querySelectorAll("#header-cell-elem"):[],left:this._headerElem.left?this._headerElem.left.querySelectorAll("#header-left-cell-elem"):[],right:this._headerElem.right?this._headerElem.right.querySelectorAll("#header-right-cell-elem"):[]};this._bodyElem={normal:this.shadowRoot.querySelector("#body"),left:this.shadowRoot.querySelector("#body-left"),right:this.shadowRoot.querySelector("#body-right")};this._rowElems={normal:this._bodyElem.normal?this._bodyElem.normal.rows:[],left:this._bodyElem.left?this._bodyElem.left.rows:[],right:this._bodyElem.right?this._bodyElem.right.rows:[]};this._cellElems={normal:this._bodyElem.normal?this._bodyElem.normal.querySelectorAll("#row-cell-elem"):[],left:this._bodyElem.left?this._bodyElem.left.querySelectorAll("#row-left-cell-elem"):[],right:this._bodyElem.right?this._bodyElem.right.querySelectorAll("#row-right-cell-elem"):[]};this._footerElem={normal:this.shadowRoot.querySelector("#footer"),left:this.shadowRoot.querySelector("#footer-left"),right:this.shadowRoot.querySelector("#footer-right")};this._footerElems={normal:this._footerElem.normal?this._footerElem.normal.querySelectorAll("#footer-cell-elem"):[],left:this._footerElem.left?this._footerElem.left.querySelectorAll("#footer-left-cell-elem"):[],right:this._footerElem.right?this._footerElem.right.querySelectorAll("#footer-right-cell-elem"):[]};this._groupingPanelElem=this.shadowRoot.querySelector("#grouping-panel");this._dragGroupElem=this.shadowRoot.querySelector("#drag-group");this._paginatorElem=this.shadowRoot.querySelector("#paginator");if(this._resizeObserver)this._resizeObserver.observe(this._elemRef)}}window.customElements.define("iui-grid",IntegralUIGrid);export default IntegralUIGrid; \ No newline at end of file +import{c as css,h as html}from"../external/lit-element.js";import{c as classMap}from"../external/class-map.js";import{s as styleMap}from"../external/style-map.js";import{IntegralUIFilterType,IntegralUIVisibility,IntegralUIEditorType,IntegralUITheme}from"./integralui.enums.js";import IntegralUIBaseGrid from"./integralui.base.grid.js";import"./integralui.dropdownfilter.js";import{iuiBaseDefaultStyle}from"../styles/integralui.style.js";import{iuiGridDefaultStyle}from"../styles/integralui.grid.style.js";import{iuiGridOfficeStyle}from"../themes/office/integralui.grid.office.js";import{iuiGridMidnightStyle}from"../themes/midnight/integralui.grid.midnight.js";import{iuiEditorsDefaultStyle}from"../styles/integralui.editors.style.js";import{iuiEditorsOfficeStyle}from"../themes/office/integralui.editors.office.js";import{iuiEditorsMidnightStyle}from"../themes/midnight/integralui.editors.midnight.js";import{iuiFilterDefaultStyle}from"../styles/integralui.filter.style.js";import{iuiSortingDefaultStyle}from"../styles/integralui.sorting.style.js";import{iuiScrollBarStyle}from"../styles/integralui.scrollbar.style.js";import{iuiScrollBarOfficeStyle}from"../themes/office/integralui.scrollbar.office.js";import{iuiScrollBarMidnightStyle}from"../themes/midnight/integralui.scrollbar.midnight.js";import"./integralui.paginator.js";class IntegralUIGrid extends IntegralUIBaseGrid{_init(){super._init();this._isExpandBoxVisible=!0;this._dataGroups=[];this._currentGrouping={dropdown:{items:[]},enabled:!1,showAddButton:!1,showColumns:!1,showPanel:!0};this._expandTimeout=null;this._expandRow=null;this._isAutoExpandActive=!1;this._groupReorderActive=!1;this._hoverGroup=null;this._reorderGroup=null;this._dragGroupElemSize={width:0,height:0};this._groupCoordinates=[];this._reorderGroupPos=-1;this._dragGroupSettings={display:"none",top:0,left:0,label:""};this._groupList=[];this._activeGroups=[];this._groupExpandList=[];this._groupPanelSize={width:0,height:0};this._groupPanelHeight=0;this._isGroupListItemSelected=!1;this._isGroupPanelHovered=!1;this._groupReorderMargin=50;this._reorderGroupWidth=50;this._currentBaseStyleSettings=iuiBaseDefaultStyle;this._currentControlStyleSettings=iuiGridDefaultStyle;this._currentEditorStyleSettings=iuiEditorsDefaultStyle;this._currentEditorThemeSettings=css``;this._currentFilterStyleSettings=iuiFilterDefaultStyle;this._currentScrollStyleSettings=iuiScrollBarStyle;this._currentSortStyleSettings=iuiSortingDefaultStyle;this._generalClassName="iui-grid";this._columnClassName=this._generalClassName+"-column";this._columnHeaderClassName=this._columnClassName+"-header";this._columnFilterClassName=this._columnClassName+"-filter";this._columnBodyClassName=this._columnClassName+"-body";this._columnFooterClassName=this._columnClassName+"-footer";this._rowClassName=this._generalClassName+"-row";this._cellBorderClassName="iui-grid-lines-both";this._cellClassName=this._rowClassName+"-cell";this._expandBoxClassName=this._generalClassName+"-expand-box";this._gridLinesClassName=this._generalClassName+"-lines";this._sortingClassName="iui-sort";this._initStyle();this._updateData();this._resizeObserver=new ResizeObserver(e=>{if(e&&e.length>0&&e[0].contentRect){let e=!1;if(this._clientRect.width!==this._prevClientRect.width){this._prevClientRect.width=this._clientRect.width;e=!0}if(this._clientRect.height!==this._prevClientRect.height){this._prevClientRect.height=this._clientRect.height;e=!0}if(e)this.updateLayout(!0)}})}connectedCallback(){super.connectedCallback();this._windowMouseMove=this._windowMouseMove.bind(this);window.addEventListener("mousemove",this._windowMouseMove);this._windowClick=this._windowClick.bind(this);window.addEventListener("click",this._windowClick)}disconnectedCallback(){super.disconnectedCallback();window.removeEventListener("mousemove",this._windowMouseMove);window.removeEventListener("click",this._windowClick);if(this._loadingEndTimeout)clearTimeout(this._loadingEndTimeout);if(this._resizeObserver)this._resizeObserver.disconnect();this._resizeObserver=null;this._resetLayoutTimer();this._rt()}_initStyle(){this._defaultStyle={general:{disabled:this._generalClassName+"-disabled",focused:this._generalClassName+"-focused",normal:this._generalClassName,hovered:this._generalClassName+"-hovered",selected:this._generalClassName+"-selected"},column:{header:{cell:this._columnHeaderClassName+"-cell",disabled:this._columnHeaderClassName+"-disabled",normal:this._columnHeaderClassName,hovered:this._columnHeaderClassName+"-hovered",selected:this._columnHeaderClassName+"-selected"},filter:{cell:this._columnFilterClassName+"-cell",disabled:this._columnFilterClassName+"-disabled",normal:this._columnFilterClassName,hovered:this._columnFilterClassName+"-hovered",selected:this._columnFilterClassName+"-selected"},body:{cell:this._columnBodyClassName+"-cell",disabled:this._columnBodyClassName+"-disabled",normal:this._columnBodyClassName,hovered:this._columnBodyClassName+"-hovered",selected:this._columnBodyClassName+"-selected"},footer:{cell:this._columnFooterClassName+"-cell",disabled:this._columnFooterClassName+"-disabled",normal:this._columnFooterClassName,hovered:this._columnFooterClassName+"-hovered",selected:this._columnFooterClassName+"-selected"},sorting:{normal:{ascending:this._sortingClassName+"-ascending",descending:this._sortingClassName+"-descending"},selected:{ascending:this._sortingClassName+"-ascending-selected",descending:this._sortingClassName+"-descending-selected"}}},row:{general:{disabled:this._rowClassName+"-disabled",focused:this._rowClassName+"-focused",normal:this._rowClassName,hovered:this._rowClassName+"-hovered",selected:this._rowClassName+"-selected"},expandBox:{general:this._expandBoxClassName,load:this._expandBoxClassName+"-load",expanded:this._expandBoxClassName+"-open",collapsed:this._expandBoxClassName+"-close"},cell:{disabled:this._cellClassName+"-disabled",focused:this._cellClassName+"-focused",normal:this._cellClassName,hovered:this._cellClassName+"-hovered",selected:this._cellClassName+"-selected"}},gridLines:{none:this._gridLinesClassName+"-none",horizontal:this._gridLinesClassName+"-horizontal",vertical:this._gridLinesClassName+"-vertical",both:this._gridLinesClassName+"-both"}};this._updateStyle(this.controlStyle);this._updateControlClass();this.refresh()}attributeChangedCallback(e,t,i){super.attributeChangedCallback(e,t,i)}static get properties(){return{autoExpand:{type:Boolean,attribute:"auto-expand",reflect:!0},grouping:{type:Object},groups:{type:Array},showExpandBox:{type:Boolean,attribute:"show-expandbox",reflect:!0}}}get autoExpand(){return this._isAutoExpandActive}set autoExpand(e){const t=this._isAutoExpandActive;this._isAutoExpandActive=e;this.requestUpdate("autoExpand",t)}get grouping(){return this._currentGrouping}set grouping(e){const t=this._currentGrouping;this._updateGrouping(e);this.requestUpdate("grouping",t)}get groups(){return this._dataGroups}set groups(e){const t=this._dataGroups;this._dataGroups=e;this.requestUpdate("groups",t)}get showExpandBox(){return this._isExpandBoxVisible}set showExpandBox(e){const t=this._isExpandBoxVisible;this._isExpandBoxVisible=e;this.updateLayout();this.requestUpdate("showExpandBox",t)}loadData(e,t){this._processLoadData(e,null,t)}_addRowToGroup(e){let t=e[this._rowFields.cells];if(t&&t.length>0){let i=-1,s=null;this._dataGroups.forEach((e,l)=>{let r=l;if((i=e[this._groupFields.cid]))r=this._getCellIndexById(t,l,i);if(r>=0&&r0){this._dataGroups.forEach(e=>{if(!e[this._groupFields.id])e[this._groupFields.id]=this._commonService.getUniqueId();this._activeGroups.push(e)});let e=this._dataService.getList(null,this._rowDataKey);if(e)for(let t=0;t{if("group"===e.type){let i=this._getCellByColumnId(e[this._rowFields.cells],t);if(i)for(let s=0;s{if("group"===e.type)this._groupExpandList.push({id:e[this._rowFields.id],expanded:this._isRowExpanded(e)})})}_updateExpandStatus(){this._createGroupExpandList()}_updateGroupExpandValue(e,t){let i=this._commonService.getObjFromListById(this._groupExpandList,e);if(i)i.expanded=t}_updateDataFields(e){let t=e||{};this._updateColumnFields(t.column);this._updateGroupFields(t.group);this._updateRowFields(t.row);this._updateCellFields(t.cell);this._updateFilterFields(t.filter)}_updateGroupFields(e){if(e)this._groupFields={id:e.id?e.id:"id",cells:e.cells?e.cells:"cells",cid:e.cid?e.cid:"cid",expanded:e.expanded?e.expanded:"expanded",rows:e.rows?e.rows:"rows",text:e.text?e.text:"text"};else this._groupFields={id:"id",cid:"cid",cells:"cells",expanded:"expanded",rows:"rows",text:"text"}}_updateGrouping(e){if(e)this._currentGrouping={dropdown:{items:this._commonService.isFieldAvailable(e.items,[])},enabled:this._commonService.isFieldAvailable(e.enabled,!1),showAddButton:this._commonService.isFieldAvailable(e.showAddButton,!1),showColumns:this._commonService.isFieldAvailable(e.showColumns,!1),showPanel:this._commonService.isFieldAvailable(e.showPanel,!0)};else this._currentGrouping={dropdown:{items:[]},enabled:!1,showAddButton:!1,showColumns:!1,showPanel:!0};this.updateLayout()}_addChildRowCheck(e,t){let i=!1;if("group"===e.type||!0===e[this._rowFields.hasChildren])i=t||this._isRowExpanded(e)?!0:!1;return i}_addChildRows(e,t,i,s){let l=!0;if(!e[this._rowFields.rows])return l=this._addRowToCurrentList(e,t,i,s);if((l=this._addRowToCurrentList(e,t,i,s))){let i=0,l=!0;if(this._addChildRowCheck(e,s)){let r=e[this._rowFields.rows];if(r){this._applySorting(r);for(let o=0;o0||this._isThereRows(e)))this._isThereChildRows=!0}return l}_updateCurrentRowList(e){this._currentRowList.length=0;if(this._currentPaging.enabled){if(this._currentPageNumber>=1&&this._currentPageNumber<=this._pageList.length)for(let e=0;e0)e=this._groupList;if(e){this._applySorting(e);for(let t=0;t0)e=this._groupList;if(e)for(let t=0;t0)e=this._groupList;if(e&&e.length>0){this._applySorting(e);this._pageList.push([]);for(let t=0;t0&&0===this._pageList[this._pageList.length-1].length)this._pageList.splice(this._pageList.length-1,1)}}_expandOnDelay(e){let t=this;if(!1!==t._isAutoExpandActive){if(t._expandRow!==e){if(t._expandTimeout)clearTimeout(t._expandTimeout);t._expandTimeout=setTimeout(function(){if(t._expandTimeout)t.expand(e);clearTimeout(t._expandTimeout)},500)}t._expandRow=e}}_rowDragStart(e,t,i){if(this._isEnabled)if(t.isDragAllowed&&this._hoverCell&&this._hoverCell.isDragDropColumn){this._dragObjIndex=i;this._dragObj=t;this.update();this._dragGhost=this.shadowRoot.querySelector("#drag-row-elem");this._processDragStart(e,t.data)}else e.preventDefault();e.stopPropagation()}_rowDragOver(e,t,i,s){if(this._isEnabled){let l=this._getRowElems(s);if(l&&i>=0&&i{e[this._rowFields.expanded]=t;this._updateExpandingCell(e,t);if("group"===e.type)this._updateGroupExpandValue(e[this._rowFields.id],t)});this._updateCurrentLayout(!1,!0)}}isColumnVisible(e){let t=e&&!1!==e[this._columnFields.visible];if(this._currentGrouping.enabled&&this._dataGroups.length>0&&!this._currentGrouping.showColumns)t=e?t&&!this._checkColumnPresence(e[this._columnFields.id]):t;return t}_getGroupTextFromColumn(e){let t="";if(e)if(!(t=e[this._columnFields.groupText])||""===t)t=e[this._columnFields.headerText];return t}_getGroupText(e){let t="",i=this.getColumnById(e.cid);if(i)t=this._getGroupTextFromColumn(i);else if(this._currentGrouping&&this._currentGrouping.dropdown&&this._currentGrouping.dropdown.items){let i=this._commonService.getObjFromListById(this._currentGrouping.dropdown.items,e.cid);if(i)t=i.text}return t}_updateDragGroupElem(e,t){let i=this._commonService.getPadding(this._groupingPanelElem),s=this._commonService.getPageRect(this._groupingPanelElem),l=this._commonService.getShiftPos(),r=this._commonService.getMousePos(e);r.x-=s.left+l.x;r.y-=s.top+l.y;this._dragGroupElemSize.width=this._dragGroupElem.offsetWidth;let o={x:r.x-this._dragGroupElemSize.width/2,y:r.y};this._dragGroupSettings.top=i.top;this._dragGroupSettings.left=o.x;this._dragGroupSettings.display="block";this._dragGroupSettings.label=t}_groupPanelDragEnter(e){this._dropMark(e)}_groupPanelMouseEnter(e){if(this._isEnabled){this._isGroupPanelHovered=!0;if(1===e.which&&this._columnReorderActive&&this._reorderColumn){this._dragGroupSettings.display="none";this._dragGroupSettings.label=this._reorderColumn[this._columnFields.headerText];this._groupReorderActive=!0;this._reorderGroup=null;this._dropMark(e)}else this._changeCursor()}e.stopPropagation()}_groupPanelMouseMove(e){if(this._isEnabled&&1===e.which&&this._isGroupReorderInProcess()){this._isGroupPanelHovered=!0;let t=this._commonService.getPageRect(this._groupingPanelElem),i=this._commonService.getShiftPos(),s=this._commonService.getMousePos(e);s.x-=t.left+i.x;s.y-=t.top+i.y;let l="";if(this._reorderColumn)l=this._getGroupTextFromColumn(this._reorderColumn);else if(this._reorderGroup)l=this._getGroupText(this._reorderGroup);this._updateDragGroupElem(e,l);this._dropMark(e);this._changeCursor();this.update()}e.stopPropagation()}_groupPanelMouseLeave(e){this._isGroupPanelHovered=!1;this._dragGroupSettings.display="none"}_checkColumnPresence(e){let t=!1;for(let i=0;i=0){if(!this._checkColumnPresence(e)){this._dataGroups.splice(i,0,t);this.updateLayout();this._invokeEvent("groupOrderChanged")}}}else if(!this._checkColumnPresence(e))if(this._addGroup(t))this._invokeEvent("groupOrderChanged")}this._resetReorderColumnSettings();this._hoverGroup=null;this._reorderGroup=null;this._dropMark(e);this._dragGroupSettings.display="none";this._changeCursor();e.stopPropagation()}}_groupMouseEnter(e,t){if(this._isEnabled&&1===e.which){this._hoverGroup=t;e.stopPropagation()}}_groupMouseLeave(e,t){if(this._isEnabled&&1===e.which){this._hoverGroup=null;e.stopPropagation()}}_groupMouseDown(e,t){if(this._isEnabled&&1===e.which&&this._dataGroups.length>1){this._groupReorderActive=!0;this._reorderGroup=t;this._updateDragGroupElem(e,this._getGroupText(this._reorderGroup))}e.stopPropagation()}_groupButtonMouseDown(e,t){if(this._isEnabled&&1===e.which)this._removeGroup(t);e.stopPropagation()}_isGroupReorderInProcess(){let e=!1;if(this._columnReorderActive&&this._reorderColumn)e=!0;else if(this._groupReorderActive&&this._reorderGroup)e=!0;return e}_addGroup(e){let t=!1,i={cancel:!1,group:e};this._invokeEvent("groupAdding",i);if(!0!==i.cancel){this._dataGroups.push(e);this.updateLayout();this._invokeEvent("groupAdded",{group:e});t=!0}return t}_removeGroup(e){let t=this._dataGroups.indexOf(e);if(t>=0){let i={cancel:!1,group:e};this._invokeEvent("groupRemoving",i);if(!0!==i.cancel){this._dataGroups.splice(t,1);this.updateLayout();this._invokeEvent("groupRemoved",{group:e})}}}_groupListItemSelected(e){if(!this._checkColumnPresence(e.id))this._addGroup({cid:e.id});this._isGroupListItemSelected=!0}_getCellsAllSides(){let e=[];for(let t=0;t<3;t++){let i=0,s=[],l="";switch(t){case 1:i=this._fixedLeftViewIndexRange;l="normal";break;case 2:i=this._fixedRightViewIndexRange;l="right";break;default:i=this._numVisibleCells;l="left"}s=this._scrollRowList[l].filter((e,t)=>t===this._dragObjIndex).filter((e,t)=>t0?s[0].cells:[])}return e}_getDragRowLayoutBySide(){let e=this._getCellsAllSides(),t=this._dragObj;return html` ${e.map(e=>html`
${this._getExpandBoxLayout(t,e)} ${this._getRowCellTemplate(t,e)}
`)} `}_getDragRowLayout(){if(this._dragObjIndex>=0){return html`
${this._getDragRowLayoutBySide()}
`}return html``}_getExpandBoxLayout(e,t){if(this._isExpandBoxVisible&&t.expandBoxAllowed)if(t.allowEdit&&t.data===this._currentEditingCell)return html``;else return html``;return html``}_getFilterCellTemplate(e){let t=html``;if(e.isFilterAllowed)switch(e.filterType){case IntegralUIFilterType.Boolean:break;default:let i=css` `;t=html` `}return t}_getFilterLayout(e){if(this._isInlineFilterVisible){let t="filter",i="filter-cell-elem",s="iui-grid-block",l={top:this._currentHeaderHeight+this._groupPanelHeight+"px"},r=this._isThereFixedColumns(e);switch(e){case"left":t="filter-left";i="filter-left-cell-elem";s+=" iui-grid-block-filter-left";l.left=0;break;case"right":t="filter-right";i="filter-right-cell-elem";s+=" iui-grid-block-filter-right";l.right=this._getBlockRightPos()+"px";break;default:s+=" iui-grid-block-filter";l.left=-this._contentLeftPos+"px"}if(r)return html`
${this._scrollFilterList[e].map(e=>html` `)}
${this._getFilterCellTemplate(e)}
`}return html``}_getFooterLayout(e){if(this._isFooterVisible){let t="footer",i="footer-cell-elem",s="iui-grid-block",l={bottom:this._getBlockBottomPos()+"px"},r=this._isThereFixedColumns(e);switch(e){case"left":t="footer-left";i="footer-left-cell-elem";s+=" iui-grid-block-bottom-left";l.left=0;break;case"right":t="footer-right";i="footer-right-cell-elem";s+=" iui-grid-block-bottom-right";l.right=this._getBlockRightPos()+"px";break;default:s+=" iui-grid-block-bottom";l.left=-this._contentLeftPos+"px"}if(r)return html`
${this._scrollFooterList[e].map(e=>html` `)}
`}return html``}_getGroupLayout(){if(this._currentGrouping&&this._currentGrouping.enabled)return html`
${this._activeGroups.map((e,t)=>html`

${this._getGroupText(e)}

`)} ${0===this._activeGroups.length?html`

Empty Group

`:html``}

${this._dragGroupSettings.label}

`;else return html``}_getHeaderLayout(e){if(this._isHeaderVisible){let t="header",i="header-cell-elem",s="iui-grid-block",l={},r=this._isThereFixedColumns(e);switch(e){case"left":t="header-left";i="header-left-cell-elem";s+=" iui-grid-block-top-left";l={left:0,top:this._groupPanelHeight+"px"};break;case"right":t="header-right";i="header-right-cell-elem";s+=" iui-grid-block-top-right";l={right:this._getBlockRightPos()+"px",top:this._groupPanelHeight+"px"};break;default:s+=" iui-grid-block-top";l={left:-this._contentLeftPos+"px",top:this._groupPanelHeight+"px"}}if(r)return html`
${this._scrollColumnList[e].map(t=>html` ${t.columns.map(e=>html` `)} ${"right"!==e?html``:html``} `)}
${this._getColumnHeaderTemplate(e)}
0?this._providedHeaderHeight+"px":"auto",padding:"8px",pointerEvents:"none",opacity:0})}>_
`}return html``}_getHoverContentLayout(){if(this._isHoverTemplatePresent&&!this._isUpdateActive&&this._isContentAllowed(this._hoverRowObj.data,"hover"))return html`
${this._getContentTemplate(this._hoverRowObj.data,"hover")}
`;else return html``}_getRowCellTemplate(e,t){let i=html``;if(t.editorType){let s=!1;if(t.editorVisibility&IntegralUIVisibility.Hover&&t.editorVisibility&IntegralUIVisibility.Click)s=e.data===this._hoverRow||e.data===this._currentSelectedRow;else if(t.editorVisibility&IntegralUIVisibility.None)s=!1;else if(t.editorVisibility&IntegralUIVisibility.Hover)s=e.data===this._hoverRow;else if(t.editorVisibility&IntegralUIVisibility.Click)s=e.data===this._currentSelectedRow;else s=!0;let l=t.editorSettings;if("group"===e.data.type)if(t.isDragDropColumn)i=e.isDragAllowed&&!e.isEmpty?html``:html``;else i=this._getDefaultRowTemplate(e,t);else switch(t.editorType){case IntegralUIEditorType.CheckBox:if(!t.isDataEmpty)i=html`
`;break;case IntegralUIEditorType.Date:if(s){let s=css` .iui-datepicker-header { text-align: var(--datepicker-header-text-align, left); } `,r=css` .iui-datepicker-header { text-align: var(--datepicker-header-text-align, center); } `,o=[css` .iui-datepicker { background: transparent; margin: var(--datepicker-margin, 0); } .iui-datepicker:focus { outline: none !important; } .iui-datepicker-header { border: 0; padding: var(--datepicker-header-padding, 0); } .iui-header-expand-box-arrow { margin: var(--header-expand-box-margin, 2px); } .iui-header-label { padding: var(--header-label-padding, 0); } `,this.customStyle];switch(t.align){case"left":o.splice(1,0,s);break;case"center":o.splice(1,0,r);break;default:this._defaultFunc()}let a=this._getEditorAdjustment(t,{top:6,left:-6,width:11});i=html` `}else i=html`${t.editorValue}`;break;case IntegralUIEditorType.DropList:if(s){let s=css` .iui-select { background: transparent; margin: var(--select-margin, 0); } .iui-select:focus { outline: none !important; } .iui-select-header { border: 0; padding: var(--select-header-padding, 0); } .iui-header-expand-box-arrow { margin: var(--header-expand-box-margin, 2px); } .iui-header-label { padding: var(--header-label-padding, 0); } `,r=this._getEditorAdjustment(t,{top:6,left:-6,width:11});i=html` `}else if(t.editorValueObject)i=html`${t.editorValueObject.text}`;else i=html`${t.editorValue}`;break;case IntegralUIEditorType.Numeric:if(s){i=html` `}else i=html`${t.displayValue}`;break;case IntegralUIEditorType.Progress:i=html`
`;break;case IntegralUIEditorType.Rating:if(!t.isDataEmpty){let s=css` .iui-rating { background: var(--rating-background, transparent); border: var(--rating-border, 0); } .iui-rating:focus { outline: none !important; } `;i=html`
`}break;case IntegralUIEditorType.Slider:if(!t.isDataEmpty){let s=css` .iui-slider:focus { outline: none !important; } `;i=html`
`}break;case IntegralUIEditorType.Text:if(s&&t.allowEdit&&this._isEditorFocused&&this._currentEditingCell===t.data)i=html` `;else i=this._getDefaultRowTemplate(e,t);break;default:if(t.isEditorColumn)i=this._getRowEditorTemplate(e);else if(t.isDragDropColumn)i=e.isDragAllowed&&!e.isEmpty?html``:html``;else i=this._getDefaultRowTemplate(e,t)}}return i}_getRowLayout(e){let t="body",i="row-cell-elem",s=0,l={},r=this._isThereFixedColumns(e),o="iui-grid-block",a="row-elem",h={};switch(e){case"left":t="body-left";i="row-left-cell-elem";s=this._fixedLeftViewIndexRange;l={left:0};o+=" iui-grid-block-left";a="row-left-elem";h={"margin-top":this._blockMarginTop+this._groupPanelHeight+"px",height:this._leftBlockSize.height+"px",width:this._leftBlockSize.width+"px"};break;case"right":t="body-right";i="row-right-cell-elem";s=this._fixedRightViewIndexRange;o+=" iui-grid-block-right";a="row-right-elem";h={"margin-top":this._blockMarginTop+this._groupPanelHeight+"px",height:this._rightBlockSize.height+"px",right:this._getBlockRightPos()+"px",width:this._rightBlockSize.width+"px"};break;default:s=this._numVisibleCells;l={left:-this._contentLeftPos+"px",position:"absolute"};h={"margin-top":this._blockMarginTop+this._groupPanelHeight+"px",height:this._blockSize.height+"px"}}if(r)return html`
${this._scrollRowList[e].filter((e,t)=>!e.isEmpty&&thtml` ${t.cells.filter((e,t)=>thtml` `)} `)}
${this._getExpandBoxLayout(t,e)} ${this._getRowCellTemplate(t,e)}
`}_getCellStyle(e){let t=e.inlineStyle||{};t.paddingLeft=e.indent+"px";t.textAlign=e.align;t.width=e.width+"px";t.height=e.height;return t}_getSelectContentLayout(){if(this._isSelectedTemplatePresent&&!this._isUpdateActive)return this._currentSelectedRows.map((e,t)=>html` ${this._isContentAllowed(e,"select")?html`
${this._getContentTemplate(e,"select")}
`:html``}
`);else return html``}_processUpdateLayout(e){let t=this;return new Promise(i=>{if(t._isUpdateAllowed){t._resetLayoutTimer();t._updateTimer=setTimeout(function(){t._updateCurrentColumnList(e);t._updateGroupList();if(t._currentPaging.enabled)t._updatePageList();t._updateCurrentRowList(e);t.updateFullList();t._updateScrollColumnList();t._updateReferences();t._updateExpandingColumnID();if(t._getNumScrollColumns("normal")0?t._paginatorHeight-1:0;t._cornerScrollElemPos.bottom=t._paginatorHeight>0?t._paginatorHeight-1:0;t._clientRect={width:t._elemRef.clientWidth,height:t._elemRef.clientHeight-t._groupPanelHeight-t._paginatorHeight};if(t._groupingPanelElem){let e=t._commonService.getBorderWidth(t.groupingPanelElem),i=t._commonService.getPadding(t.groupingPanelElem);t._groupPanelSize.width=t._clientRect.width-(i.left+i.right)-(e.left+e.right)}t._updateRange();t.update();t._updateReferences();let s=setTimeout(function(){t._columnPadding={top:0,right:0,bottom:0,left:0};let e=[];if(t._columnElems.normal&&t._isHeaderVisible)e=t._columnElems.normal;else if(t._footerElems.normal&&t._isFooterVisible)e=t._footerElems.normal;else if(t._cellElems.normal)e=t._cellElems.normal;if(e&&e.length>0)t._columnPadding=t._commonService.getPadding(e[0].firstElementChild);t._currentHeaderHeight=t._getHeaderHeight();t._currentFilterHeight=t._getFilterHeight();t._currentFooterHeight=t._getFooterHeight();t._updateVisibleRange();t._updateRange();t.update();let l=setTimeout(function(){t._blockMarginTop=t._currentHeaderHeight+t._currentFilterHeight;t._updateBlockSize();t._checkForSelectionChange();if(t._rowElems){let e=t._rowElems.normal;t._avgRowHeight=0;if(e&&e.length>0){let i=0,s=0;for(let l=0;l0)t._avgRowHeight=Math.floor(s/i)}}t._updateScrollSize();t._updateAllColumnWidth();t._updateScrollSize();t._updateSelectContentPos();t._invokeEvent("updateComplete");t._isUpdateActive=!1;t.update();clearTimeout(l);i()},1);clearTimeout(s)},1);clearTimeout(t._updateTimer)},100)}})}_updateRange(e){this._viewIndexRange={left:0,middle:999,right:999};this._updateLeftBlockSize();this._updateRightBlockSize();this._fixedLeftViewIndexRange=this._completeColumnList.left.length>0?this._completeColumnList.left[0].length:0;this._fixedRightViewIndexRange=this._completeColumnList.right.length>0?this._completeColumnList.right[0].length:0;let t=!1,i=!1,s=!1,l=this._currentScrollPos.x+this._clientRect.width-this._leftBlockSize.width,r=l+this._clientRect.width/2,o=0;if(this._completeColumnList.normal.length>0){let e=this._completeColumnList.normal[0].length;for(let a=0;a=this._currentScrollPos.x){this._viewIndexRange.left=a;t=!0}if(!i&&o>=l){this._viewIndexRange.middle=a;i=!0}if(!s&&o>=r){this._viewIndexRange.right=a;s=!0}if(t&&s)break}if(!i)this._viewIndexRange.middle=e;if(!s)this._viewIndexRange.right=e;o=0;for(let t=0;t0){let t=0,i=0;for(let s=0;s0){let e=Math.floor(i/t);if(e>0)this._visibleRange=Math.floor((this._clientRect.height-(this._currentHeaderHeight+this._currentFilterHeight+this._currentFooterHeight))/e)+1}}}_updateThemeSettings(e){this._currentThemeSettings=css``;this._currentEditorThemeSettings=css``;this._currentScrollStyleSettings=css``;switch(e){case IntegralUITheme.Office:this._currentThemeSettings.cssText=this._commonService.replaceAll(iuiGridOfficeStyle.cssText,"../../icons",this._currentResourcePath);this._currentEditorThemeSettings.cssText=this._commonService.replaceAll(iuiEditorsOfficeStyle.cssText,"../../icons",e);this._currentScrollStyleSettings.cssText=this._commonService.replaceAll(iuiScrollBarOfficeStyle.cssText,"../../icons",this._currentResourcePath);break;case IntegralUITheme.Midnight:this._currentThemeSettings.cssText=this._commonService.replaceAll(iuiGridMidnightStyle.cssText,"../../icons",this._currentResourcePath);this._currentEditorThemeSettings.cssText=this._commonService.replaceAll(iuiEditorsMidnightStyle.cssText,"../../icons",this._currentResourcePath);this._currentScrollStyleSettings.cssText=this._commonService.replaceAll(iuiScrollBarMidnightStyle.cssText,"../../icons",this._currentResourcePath);break;default:this._currentThemeSettings.cssText="";this._currentEditorThemeSettings.cssText="";this._currentScrollStyleSettings.cssText=this._commonService.replaceAll(iuiScrollBarStyle.cssText,"../icons",this._currentResourcePath)}}firstUpdated(e){let t=this;t._updateReferences();setTimeout(function(){t._isHoverTemplatePresent=t.rowHoverTemplate?!0:!1;t._isSelectedTemplatePresent=t.rowSelectTemplate?!0:!1;t.updateLayout()},1)}render(){return html`
${this._getGroupLayout()} ${this._getHeaderLayout("normal")} ${this._getHeaderLayout("left")} ${this._getHeaderLayout("right")} ${this._getFilterLayout("normal")} ${this._getFilterLayout("left")} ${this._getFilterLayout("right")} ${this._getRowLayout("normal")} ${this._getRowLayout("left")} ${this._getRowLayout("right")} ${this._getDragRowLayout()} ${this._getHoverContentLayout()} ${this._getSelectContentLayout()} ${this._getFooterLayout("normal")} ${this._getFooterLayout("left")} ${this._getFooterLayout("right")} ${this.isVerScrollVisible()?html``:html``} ${this.isHorScrollVisible()?html``:html``} ${this.isVerScrollVisible()&&this.isHorScrollVisible()?html`
`:html``} ${this._isPaginationEnabled()?html``:html``}
${this._isLoading?html`
`:html``}
`}_updateControlStyleSettings(e){this._currentBaseStyleSettings=css``;this._currentBaseStyleSettings.cssText=this._commonService.replaceAll(iuiBaseDefaultStyle.cssText,"../icons",e);this._currentControlStyleSettings=css``;this._currentControlStyleSettings.cssText=this._commonService.replaceAll(iuiGridDefaultStyle.cssText,"../icons",e);this._currentEditorStyleSettings=css``;this._currentEditorStyleSettings.cssText=this._commonService.replaceAll(iuiEditorsDefaultStyle.cssText,"../icons",e);this._currentFilterStyleSettings=css``;this._currentFilterStyleSettings.cssText=this._commonService.replaceAll(iuiFilterDefaultStyle.cssText,"../icons",e);this._currentSortStyleSettings=css``;this._currentSortStyleSettings.cssText=this._commonService.replaceAll(iuiSortingDefaultStyle.cssText,"../icons",e)}_updateReferences(){this._elemRef=this.shadowRoot.querySelector("div[data-ctrl=grid]");this._headerElem={normal:this.shadowRoot.querySelector("#header"),left:this.shadowRoot.querySelector("#header-left"),right:this.shadowRoot.querySelector("#header-right")};this._hiddenLeftHeaderElem=this._headerElem.left?this._headerElem.left.querySelector("#header-left-cell-end"):null;if(this._hiddenLeftHeaderElem)this._hiddenLeftHeaderElemSize.width=this._hiddenLeftHeaderElem.offsetWidth;this._columnElems={normal:this._headerElem.normal?this._headerElem.normal.querySelectorAll("#header-cell-elem"):[],left:this._headerElem.left?this._headerElem.left.querySelectorAll("#header-left-cell-elem"):[],right:this._headerElem.right?this._headerElem.right.querySelectorAll("#header-right-cell-elem"):[]};this._filterElem={normal:this.shadowRoot.querySelector("#filter"),left:this.shadowRoot.querySelector("#filter-left"),right:this.shadowRoot.querySelector("#filter-right")};this._filterElems={normal:this._filterElem.normal?this._filterElem.normal.querySelectorAll("#filter-cell-elem"):[],left:this._filterElem.left?this._filterElem.left.querySelectorAll("#filter-left-cell-elem"):[],right:this._filterElem.right?this._filterElem.right.querySelectorAll("#filter-right-cell-elem"):[]};this._bodyElem={normal:this.shadowRoot.querySelector("#body"),left:this.shadowRoot.querySelector("#body-left"),right:this.shadowRoot.querySelector("#body-right")};this._rowElems={normal:this._bodyElem.normal?this._bodyElem.normal.rows:[],left:this._bodyElem.left?this._bodyElem.left.rows:[],right:this._bodyElem.right?this._bodyElem.right.rows:[]};this._cellElems={normal:this._bodyElem.normal?this._bodyElem.normal.querySelectorAll("#row-cell-elem"):[],left:this._bodyElem.left?this._bodyElem.left.querySelectorAll("#row-left-cell-elem"):[],right:this._bodyElem.right?this._bodyElem.right.querySelectorAll("#row-right-cell-elem"):[]};this._footerElem={normal:this.shadowRoot.querySelector("#footer"),left:this.shadowRoot.querySelector("#footer-left"),right:this.shadowRoot.querySelector("#footer-right")};this._footerElems={normal:this._footerElem.normal?this._footerElem.normal.querySelectorAll("#footer-cell-elem"):[],left:this._footerElem.left?this._footerElem.left.querySelectorAll("#footer-left-cell-elem"):[],right:this._footerElem.right?this._footerElem.right.querySelectorAll("#footer-right-cell-elem"):[]};this._groupingPanelElem=this.shadowRoot.querySelector("#grouping-panel");this._dragGroupElem=this.shadowRoot.querySelector("#drag-group");this._paginatorElem=this.shadowRoot.querySelector("#paginator");if(this._resizeObserver)this._resizeObserver.observe(this._elemRef)}}window.customElements.define("iui-grid",IntegralUIGrid);export default IntegralUIGrid; \ No newline at end of file diff --git a/components/integralui.header.js b/components/integralui.header.js index b359ec2..451a170 100644 --- a/components/integralui.header.js +++ b/components/integralui.header.js @@ -1,6 +1,6 @@ /* filename: integralui.header.js - version : 21.1.0 + version : 21.4.0 Copyright © 2016-2021 Lidor Systems. All rights reserved. This file is part of the "IntegralUI Web" Library. @@ -12,4 +12,4 @@ This SOFTWARE is provided "AS IS", WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for the specific language governing rights and limitations under the License. Any infringement will be prosecuted under applicable laws. */ -import{h as html}from"../external/lit-element.js";import{c as classMap}from"../external/class-map.js";import{s as styleMap}from"../external/style-map.js";import IntegralUIObjectState from"./integralui.enums.js";import"./integralui.base.js";import IntegralUIItem from"./integralui.item.js";import{iuiHeaderDefaultStyle}from"../styles/integralui.header.style.js";class IntegralUIHeaderItem extends IntegralUIItem{_init(){super._init();this._currentAnimationState="";this._currentAnimationType="";this._expandHorizontalClass={};this._expandVerticalClass={};this._expandArrowBottomLeftClass={};this._expandArrowBottomRightClass={};this._expandArrowVerticalClass={};this._expandArrowTopLeftClass={};this._expandArrowTopRightClass={};this._generalClassName="iui-header";this._expandBoxClassName=this._generalClassName+"expand-box";this._contentClassName=this._generalClassName+"-content";this._initStyle()}connectedCallback(){}disconnectedCallback(){}_initStyle(){this._defaultStyle={general:{disabled:this._generalClassName+"-disabled",focused:this._generalClassName+"-focused",normal:this._generalClassName,hovered:this._generalClassName+"-hovered",selected:this._generalClassName+"-selected"},content:{disabled:this._contentClassName+"-disabled",focused:this._contentClassName+"-focused",normal:this._contentClassName,hovered:this._contentClassName+"-hovered",selected:this._contentClassName+"-selected"},expandBox:this._expandBoxClassName};this.refresh()}attributeChangedCallback(e,t,a){super.attributeChangedCallback(e,t,a)}static get properties(){return{animationType:{type:String},animationState:{type:String}}}get animationState(){return this._currentAnimationState}set animationState(e){if(this._currentAnimationState!==e){const t=this._currentAnimationState;this._currentAnimationState=e;this.requestUpdate("animationState",t);this.performUpdate()}}get animationType(){return this._currentAnimationType}set animationType(e){if(this._currentAnimationType!==e){const t=this._currentAnimationType;this._currentAnimationType=e;this.requestUpdate("animationType",t);this.performUpdate()}}_getExpandVerticalClass(){this._expandVerticalClass={};this._expandVerticalClass["iui-header-expand-box-vertical"]=!0;if(this.state&IntegralUIObjectState.Selected)this._expandVerticalClass["iui-header-expand-box-vertical-collapse"]=!0;else this._expandVerticalClass["iui-header-expand-box-vertical-expand"]=!0;if(this._options.currentStyle.expandBox)this._expandVerticalClass[this._options.currentStyle.expandBox]=!0;return this._expandVerticalClass}_getExpandHorizontalClass(){this._expandHorizontalClass={};this._expandHorizontalClass["iui-header-expand-box-horizontal"]=!0;if(this.state&IntegralUIObjectState.Selected)this._expandHorizontalClass["iui-header-expand-box-horizontal-collapse"]=!0;else this._expandHorizontalClass["iui-header-expand-box-horizontal-expand"]=!0;if(this._options.currentStyle.expandBox)this._expandHorizontalClass[this._options.currentStyle.expandBox]=!0;return this._expandHorizontalClass}_getExpandArrowBottomLeftClass(){this._expandArrowBottomLeftClass={};this._expandArrowBottomLeftClass["iui-header-expand-box-arrow-bottom-left"]=!0;if("expand"===this.animationState)this._expandArrowBottomLeftClass["iui-header-expand-box-arrow-bottom-left-collapse"]=!0;else this._expandArrowBottomLeftClass["iui-header-expand-box-arrow-bottom-left-expand"]=!0;if(this._options.currentStyle.expandBox)this._expandArrowBottomLeftClass[this._options.currentStyle.expandBox]=!0;return this._expandArrowBottomLeftClass}_getExpandArrowBottomRightClass(){this._expandArrowBottomRightClass={};this._expandArrowBottomRightClass["iui-header-expand-box-arrow-bottom-right"]=!0;if("expand"===this.animationState)this._expandArrowBottomRightClass["iui-header-expand-box-arrow-bottom-right-collapse"]=!0;else this._expandArrowBottomRightClass["iui-header-expand-box-arrow-bottom-right-expand"]=!0;if(this._options.currentStyle.expandBox)this._expandArrowBottomRightClass[this._options.currentStyle.expandBox]=!0;return this._expandArrowBottomRightClass}_getExpandArrowVerticalClass(){this._expandArrowVerticalClass={};this._expandArrowVerticalClass["iui-header-expand-box-arrow-vertical"]=!0;if("expand"===this.animationState)this._expandArrowVerticalClass["iui-header-expand-box-arrow-vertical-collapse"]=!0;else this._expandArrowVerticalClass["iui-header-expand-box-arrow-vertical-expand"]=!0;if(this._options.currentStyle.expandBox)this._expandArrowVerticalClass[this._options.currentStyle.expandBox]=!0;return this._expandArrowVerticalClass}_getExpandArrowTopLeftClass(){this._expandArrowTopLeftClass={};this._expandArrowTopLeftClass["iui-header-expand-box-arrow-top-left"]=!0;if("expand"===this.animationState)this._expandArrowTopLeftClass["iui-header-expand-box-arrow-top-left-expand"]=!0;else this._expandArrowTopLeftClass["iui-header-expand-box-arrow-top-left-collapse"]=!0;if(this._options.currentStyle.expandBox)this._expandArrowTopLeftClass[this._options.currentStyle.expandBox]=!0;return this._expandArrowTopLeftClass}_getExpandArrowTopRightClass(){this._expandArrowTopRightClass={};this._expandArrowTopRightClass["iui-header-expand-box-arrow-top-right"]=!0;if("expand"===this.animationState)this._expandArrowTopRightClass["iui-header-expand-box-arrow-top-right-expand"]=!0;else this._expandArrowTopRightClass["iui-header-expand-box-arrow-top-right-collapse"]=!0;if(this._options.currentStyle.expandBox)this._expandArrowTopRightClass[this._options.currentStyle.expandBox]=!0;return this._expandArrowTopRightClass}_expandBoxClicked(e){if(this._isEnabled&&1===e.buttons)this._invokeEvent("expandClicked",e)}_getControlStyle(){let e={};if(this._ctrlSize.width>0)e.width=this._ctrlSize.width+"px";if(this._ctrlSize.height>0)e.height=this._ctrlSize.height+"px";return e}_updateStyle(e){if(e)this._options.currentStyle={general:this._getGeneralStyle(e.general),content:this._getContentStyle(e.content),expandBox:this._commonService.isFieldAvailable(e.expandBox,this._expandBoxClassName)};else this._options.currentStyle={general:{disabled:this._defaultStyle.general.disabled,focused:this._defaultStyle.general.focused,hovered:this._defaultStyle.general.hovered,normal:this._defaultStyle.general.normal,selected:this._defaultStyle.general.selected},content:{disabled:this._defaultStyle.content.disabled,focused:this._defaultStyle.content.focused,hovered:this._defaultStyle.content.hovered,normal:this._defaultStyle.content.normal,selected:this._defaultStyle.content.selected},expandBox:this._defaultStyle.expandBox}}_getHeaderTemplate(){let e=this._commonService.isString(this.icon)?this.icon.split(" "):[],t={};e.map(e=>t[e]=!0);return html` ${this.icon?html``:html``} ${this.iconUrl?html``:html``} ${""!==this.text?html`${this.text}`:html``} `}firstUpdated(e){}render(){return html`
${this._getHeaderTemplate()} ${"plus-minus"===this._currentAnimationType?html`
`:""} ${"arrow"===this._currentAnimationType?html`
`:""}
`}_updateReferences(){this._elemRef=this.shadowRoot.querySelector("div[data-ctrl=header]");this._contentElem=this.shadowRoot.querySelector("#content")}}window.customElements.define("iui-header",IntegralUIHeaderItem);export default IntegralUIHeaderItem; \ No newline at end of file +import{c as css,h as html}from"../external/lit-element.js";import{c as classMap}from"../external/class-map.js";import{s as styleMap}from"../external/style-map.js";import{IntegralUIObjectState,IntegralUITheme}from"./integralui.enums.js";import IntegralUIItem from"./integralui.item.js";import{iuiHeaderDefaultStyle}from"../styles/integralui.header.style.js";import{iuiHeaderOfficeStyle}from"../themes/office/integralui.header.office.js";import{iuiHeaderMidnightStyle}from"../themes/midnight/integralui.header.midnight.js";class IntegralUIHeaderItem extends IntegralUIItem{_init(){super._init();this._currentAnimationState="";this._currentAnimationType="";this._expandHorizontalClass={};this._expandVerticalClass={};this._expandArrowBottomLeftClass={};this._expandArrowBottomRightClass={};this._expandArrowVerticalClass={};this._expandArrowTopLeftClass={};this._expandArrowTopRightClass={};this._generalClassName="iui-header";this._expandBoxClassName=this._generalClassName+"expand-box";this._contentClassName=this._generalClassName+"-content";this._currentControlStyleSettings=iuiHeaderDefaultStyle;this._initStyle()}connectedCallback(){}disconnectedCallback(){}_initStyle(){this._defaultStyle={general:{disabled:this._generalClassName+"-disabled",focused:this._generalClassName+"-focused",normal:this._generalClassName,hovered:this._generalClassName+"-hovered",selected:this._generalClassName+"-selected"},content:{disabled:this._contentClassName+"-disabled",focused:this._contentClassName+"-focused",normal:this._contentClassName,hovered:this._contentClassName+"-hovered",selected:this._contentClassName+"-selected"},expandBox:this._expandBoxClassName};this.refresh()}attributeChangedCallback(e,t,a){super.attributeChangedCallback(e,t,a)}static get properties(){return{animationType:{type:String},animationState:{type:String}}}get animationState(){return this._currentAnimationState}set animationState(e){if(this._currentAnimationState!==e){const t=this._currentAnimationState;this._currentAnimationState=e;this.requestUpdate("animationState",t);this.performUpdate()}}get animationType(){return this._currentAnimationType}set animationType(e){if(this._currentAnimationType!==e){const t=this._currentAnimationType;this._currentAnimationType=e;this.requestUpdate("animationType",t);this.update()}}_getExpandVerticalClass(){this._expandVerticalClass={};this._expandVerticalClass["iui-header-expand-box-vertical"]=!0;if(this.state&IntegralUIObjectState.Selected)this._expandVerticalClass["iui-header-expand-box-vertical-collapse"]=!0;else this._expandVerticalClass["iui-header-expand-box-vertical-expand"]=!0;if(this._options.currentStyle.expandBox)this._expandVerticalClass[this._options.currentStyle.expandBox]=!0;return this._expandVerticalClass}_getExpandHorizontalClass(){this._expandHorizontalClass={};this._expandHorizontalClass["iui-header-expand-box-horizontal"]=!0;if(this.state&IntegralUIObjectState.Selected)this._expandHorizontalClass["iui-header-expand-box-horizontal-collapse"]=!0;else this._expandHorizontalClass["iui-header-expand-box-horizontal-expand"]=!0;if(this._options.currentStyle.expandBox)this._expandHorizontalClass[this._options.currentStyle.expandBox]=!0;return this._expandHorizontalClass}_getExpandArrowBottomLeftClass(){this._expandArrowBottomLeftClass={};this._expandArrowBottomLeftClass["iui-header-expand-box-arrow-bottom-left"]=!0;if("expand"===this.animationState)this._expandArrowBottomLeftClass["iui-header-expand-box-arrow-bottom-left-collapse"]=!0;else this._expandArrowBottomLeftClass["iui-header-expand-box-arrow-bottom-left-expand"]=!0;if(this._options.currentStyle.expandBox)this._expandArrowBottomLeftClass[this._options.currentStyle.expandBox]=!0;return this._expandArrowBottomLeftClass}_getExpandArrowBottomRightClass(){this._expandArrowBottomRightClass={};this._expandArrowBottomRightClass["iui-header-expand-box-arrow-bottom-right"]=!0;if("expand"===this.animationState)this._expandArrowBottomRightClass["iui-header-expand-box-arrow-bottom-right-collapse"]=!0;else this._expandArrowBottomRightClass["iui-header-expand-box-arrow-bottom-right-expand"]=!0;if(this._options.currentStyle.expandBox)this._expandArrowBottomRightClass[this._options.currentStyle.expandBox]=!0;return this._expandArrowBottomRightClass}_getExpandArrowVerticalClass(){this._expandArrowVerticalClass={};this._expandArrowVerticalClass["iui-header-expand-box-arrow-vertical"]=!0;if("expand"===this.animationState)this._expandArrowVerticalClass["iui-header-expand-box-arrow-vertical-collapse"]=!0;else this._expandArrowVerticalClass["iui-header-expand-box-arrow-vertical-expand"]=!0;if(this._options.currentStyle.expandBox)this._expandArrowVerticalClass[this._options.currentStyle.expandBox]=!0;return this._expandArrowVerticalClass}_getExpandArrowTopLeftClass(){this._expandArrowTopLeftClass={};this._expandArrowTopLeftClass["iui-header-expand-box-arrow-top-left"]=!0;if("expand"===this.animationState)this._expandArrowTopLeftClass["iui-header-expand-box-arrow-top-left-expand"]=!0;else this._expandArrowTopLeftClass["iui-header-expand-box-arrow-top-left-collapse"]=!0;if(this._options.currentStyle.expandBox)this._expandArrowTopLeftClass[this._options.currentStyle.expandBox]=!0;return this._expandArrowTopLeftClass}_getExpandArrowTopRightClass(){this._expandArrowTopRightClass={};this._expandArrowTopRightClass["iui-header-expand-box-arrow-top-right"]=!0;if("expand"===this.animationState)this._expandArrowTopRightClass["iui-header-expand-box-arrow-top-right-expand"]=!0;else this._expandArrowTopRightClass["iui-header-expand-box-arrow-top-right-collapse"]=!0;if(this._options.currentStyle.expandBox)this._expandArrowTopRightClass[this._options.currentStyle.expandBox]=!0;return this._expandArrowTopRightClass}_expandBoxClicked(e){if(this._isEnabled&&1===e.buttons)this._invokeEvent("expandClicked",e)}_getControlStyle(){let e={};if(this._ctrlSize.width>0)e.width=this._ctrlSize.width+"px";if(this._ctrlSize.height>0)e.height=this._ctrlSize.height+"px";return e}_updateStyle(e){if(e)this._options.currentStyle={general:this._getGeneralStyle(e.general),content:this._getContentStyle(e.content),expandBox:this._commonService.isFieldAvailable(e.expandBox,this._expandBoxClassName)};else this._options.currentStyle={general:{disabled:this._defaultStyle.general.disabled,focused:this._defaultStyle.general.focused,hovered:this._defaultStyle.general.hovered,normal:this._defaultStyle.general.normal,selected:this._defaultStyle.general.selected},content:{disabled:this._defaultStyle.content.disabled,focused:this._defaultStyle.content.focused,hovered:this._defaultStyle.content.hovered,normal:this._defaultStyle.content.normal,selected:this._defaultStyle.content.selected},expandBox:this._defaultStyle.expandBox}}_updateThemeSettings(e){this._currentThemeSettings=css``;switch(e){case IntegralUITheme.Office:this._currentThemeSettings.cssText=this._commonService.replaceAll(iuiHeaderOfficeStyle.cssText,"../../icons",this._currentResourcePath);break;case IntegralUITheme.Midnight:this._currentThemeSettings.cssText=this._commonService.replaceAll(iuiHeaderMidnightStyle.cssText,"../../icons",this._currentResourcePath);break;default:this._currentThemeSettings.cssText=""}}_getHeaderTemplate(){let e=this._commonService.isString(this.icon)?this.icon.split(" "):[],t={};e.map(e=>t[e]=!0);return html` ${this.icon?html``:html``} ${this.iconUrl?html``:html``} ${""!==this.text?html`${this.text}`:html``} `}firstUpdated(e){}render(){return html`
${this._getHeaderTemplate()} ${"plus-minus"===this._currentAnimationType?html`
`:""} ${"arrow"===this._currentAnimationType?html`
`:""} ${"calendar"===this._currentAnimationType?html`
`:""}
`}_updateControlStyleSettings(e){this._currentControlStyleSettings=css``;this._currentControlStyleSettings.cssText=this._commonService.replaceAll(iuiHeaderDefaultStyle.cssText,"../icons",e)}_updateReferences(){this._elemRef=this.shadowRoot.querySelector("div[data-ctrl=header]");this._contentElem=this.shadowRoot.querySelector("#content")}}window.customElements.define("iui-header",IntegralUIHeaderItem);export default IntegralUIHeaderItem; \ No newline at end of file diff --git a/components/integralui.item.js b/components/integralui.item.js index 6bb885e..8fd6991 100644 --- a/components/integralui.item.js +++ b/components/integralui.item.js @@ -1,6 +1,6 @@ /* filename: integralui.item.js - version : 21.1.0 + version : 21.4.0 Copyright © 2016-2021 Lidor Systems. All rights reserved. This file is part of the "IntegralUI Web" Library. @@ -12,4 +12,4 @@ This SOFTWARE is provided "AS IS", WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for the specific language governing rights and limitations under the License. Any infringement will be prosecuted under applicable laws. */ -import{c as css,h as html}from"../external/lit-element.js";import{c as classMap}from"../external/class-map.js";import{s as styleMap}from"../external/style-map.js";import{IntegralUIObjectState,IntegralUITheme}from"./integralui.enums.js";import IntegralUIBase from"./integralui.base.js";import{iuiItemDefaultStyle}from"../styles/integralui.item.style.js";import{iuiItemOfficeStyle}from"../themes/office/integralui.item.office.js";import{iuiItemMidnightStyle}from"../themes/midnight/integralui.item.midnight.js";class IntegralUIItem extends IntegralUIBase{connectedCallback(){}disconnectedCallback(){}_init(){super._init();this._currentIcon="";this._currentIconUrl="";this._currentIconSize={width:16,height:16};this._currentText="";this._isVisible=!0;this._parentCtrl=null;this._itemPos={top:0,left:0};this._positionType="static";this._contentClass={};this._generalClassName="iui-item";this._contentClassName=this._generalClassName+"-content"}_initStyle(){this._defaultStyle={general:{disabled:this._generalClassName+"-disabled",focused:this._generalClassName+"-focused",normal:this._generalClassName,hovered:this._generalClassName+"-hovered",selected:this._generalClassName+"-selected"},content:{disabled:this._contentClassName+"-disabled",focused:this._contentClassName+"-focused",normal:this._contentClassName,hovered:this._contentClassName+"-hovered",selected:this._contentClassName+"-selected"}};this.refresh()}setParent(e){this._parentCtrl=e}attributeChangedCallback(e,t,s){super.attributeChangedCallback(e,t,s)}static get properties(){return{icon:{type:String,reflect:!0},iconUrl:{type:String,attribute:"icon-url",reflect:!0},iconSize:{type:Object},text:{type:String,reflect:!0},visible:{type:Boolean,reflect:!0}}}get icon(){return this._currentIcon}set icon(e){if(this._currentIcon!==e){const t=this._currentIcon;this._currentIcon=e;this.requestUpdate("icon",t)}}get iconUrl(){return this._currentIconUrl}set iconUrl(e){if(this._currentIconUrl!==e){const t=this._currentIconUrl;this._currentIconUrl=e;this.requestUpdate("iconUrl",t)}}get iconSize(){return this._currentIconSize}set iconSize(e){if(this._currentIconSize!==e){const t=this._currentIconSize;this._currentIconSize=e;this.requestUpdate("iconSize",t)}}get text(){return this._currentText}set text(e){if(this._currentText!==e){const t=this._currentText;this._currentText=e;this.requestUpdate("text",t);this.update()}}get visible(){return this._isVisible}set visible(e){if(this._isVisible!==e){const t=this._isVisible;this._isVisible=e;this.requestUpdate("visible",t)}}_processStateChanged(){this._updateContentClass()}_onClick(e){if(this._isEnabled)this._invokeEvent("click",e);e.stopPropagation()}_onMouseDown(e){if(this._isEnabled){this._invokeEvent("mouseDown",e);if(this._parentCtrl&&this._parentCtrl.invokeCtrlMethod)this._parentCtrl.invokeCtrlMethod("ITEM_SELECT",this)}e.stopPropagation()}_onMouseUp(e){if(this._isEnabled)this._invokeEvent("mouseUp",e);e.stopPropagation()}_onMouseEnter(e){if(this._isEnabled){this.state|=IntegralUIObjectState.Hovered;this._invokeEvent("mouseEnter",e)}e.stopPropagation()}_onMouseMove(e){if(this._isEnabled)this._invokeEvent("mouseMove",e);e.stopPropagation()}_onMouseLeave(e){if(this._isEnabled){this.state&=~IntegralUIObjectState.Hovered;this._invokeEvent("mouseLeave",e)}e.stopPropagation()}getContentSize(){let e={width:0,height:0};if(this._contentElem){let t=this._commonService.getMargin(this._contentElem);e={width:this._contentElem.offsetWidth+(t.left+t.right),height:this._contentElem.offsetHeight+(t.top+t.bottom)/2}}return e}getIconStatus(){return this.icon?"inline-block":"none"}getMargin(){if(this._elemRef)return this._commonService.getMargin(this._elemRef.firstElementChild);else return{top:0,right:0,bottom:0,left:0}}getPageRect(){let e={top:0,right:0,bottom:0,left:0};if(this._elemRef)e=this._commonService.getPageRect(this._elemRef.firstElementChild);return e}getClientSize(){let e={width:0,height:0};if(this._elemRef)e={width:this._elemRef.firstElementChild.clientWidth,height:this._elemRef.firstElementChild.clientHeight};return e}getSize(){let e={width:0,height:0};this._updateReferences();if(this._elemRef){let t=this._commonService.getMargin(this._elemRef);e={width:this._elemRef.offsetWidth+(t.left+t.right),height:this._elemRef.offsetHeight+(t.top+t.bottom)/2}}return e}resetPos(){this.updateLayout("static",{x:"auto",y:"auto"})}updateLayout(e,t){this._updateReferences();this._positionType=e;this._itemPos={top:t.y,left:t.x}}updatePos(e){this.updateLayout("absolute",e)}_getControlStyle(){let e={position:this._positionType,top:this._itemPos.top+"px",left:this._itemPos.left+"px"};if(this._ctrlSize.width>0)e.width=this._ctrlSize.width+"px";if(this._ctrlSize.height>0)e.height=this._ctrlSize.height+"px";return e}_updateContentClass(){this._contentClass={};this._contentClass[this._contentClassName]=!0;if(this._options.currentStyle){this._contentClass[this._options.currentStyle.content.normal]=!0;if(this.state&IntegralUIObjectState.Disabled)this._contentClass[this._options.currentStyle.content.disabled]=!0;else if(this.state&IntegralUIObjectState.Focused)this._contentClass[this._options.currentStyle.content.focused]=!0;else if(this.state&IntegralUIObjectState.Selected)this._contentClass[this._options.currentStyle.content.selected]=!0;else if(this.state&IntegralUIObjectState.Hovered)this._contentClass[this._options.currentStyle.content.hovered]=!0}}_getContentClass(){return this._contentClass}_getContentStyle(e){if(this._commonService.isString(e))return e;else if(e)return{disabled:this._commonService.isFieldAvailable(e.disabled,this._contentClassName+"-disabled"),focused:this._commonService.isFieldAvailable(e.focused,this._contentClassName+"-focused"),hovered:this._commonService.isFieldAvailable(e.hovered,this._contentClassName+"-hovered"),normal:this._commonService.isFieldAvailable(e.normal,this._contentClassName),selected:this._commonService.isFieldAvailable(e.selected,this._contentClassName+"-selected")};else return{disabled:this._defaultStyle.content.disabled,focused:this._defaultStyle.content.focused,hovered:this._defaultStyle.content.hovered,normal:this._defaultStyle.content.normal,selected:this._defaultStyle.content.selected}}_updateStyle(e){if(e)this._options.currentStyle={general:this._getGeneralStyle(e.general),content:this._getContentStyle(e.content)};else this._options.currentStyle={general:{disabled:this._defaultStyle.general.disabled,focused:this._defaultStyle.general.focused,hovered:this._defaultStyle.general.hovered,normal:this._defaultStyle.general.normal,selected:this._defaultStyle.general.selected},content:{disabled:this._defaultStyle.content.disabled,focused:this._defaultStyle.content.focused,hovered:this._defaultStyle.content.hovered,normal:this._defaultStyle.content.normal,selected:this._defaultStyle.content.selected}}}_updateThemeSettings(e){this._currentThemeSettings=css``;switch(e){case IntegralUITheme.Office:this._currentThemeSettings.cssText=this._commonService.replaceAll(iuiItemOfficeStyle.cssText,"../icons",this._currentResourcePath);break;case IntegralUITheme.Midnight:this._currentThemeSettings.cssText=this._commonService.replaceAll(iuiItemMidnightStyle.cssText,"../icons",this._currentResourcePath);break;default:this._currentThemeSettings.cssText=""}}firstUpdated(e){this._updateReferences()}refresh(){this._updateStyle(this.controlStyle);this._updateControlClass();this._updateContentClass();this.update();this._updateReferences()}render(){return html`
${this.icon?html``:html``} ${this.iconUrl?html``:html``} ${this.text?html`${this.text}`:html``}
`}_updateReferences(){this._elemRef=this.shadowRoot.querySelector("div[data-ctrl=item]");this._contentElem=this.shadowRoot.querySelector("#content")}}window.customElements.define("iui-item",IntegralUIItem);export default IntegralUIItem; \ No newline at end of file +import{c as css,h as html}from"../external/lit-element.js";import{c as classMap}from"../external/class-map.js";import{s as styleMap}from"../external/style-map.js";import IntegralUIBase from"./integralui.base.js";import{IntegralUIObjectState,IntegralUITheme}from"./integralui.enums.js";import{iuiItemDefaultStyle}from"../styles/integralui.item.style.js";import{iuiItemOfficeStyle}from"../themes/office/integralui.item.office.js";import{iuiItemMidnightStyle}from"../themes/midnight/integralui.item.midnight.js";class IntegralUIItem extends IntegralUIBase{connectedCallback(){}disconnectedCallback(){}_init(){super._init();this._currentIcon="";this._currentIconUrl="";this._currentIconSize={width:16,height:16};this._currentText="";this._isVisible=!0;this._parentCtrl=null;this._itemPos={top:0,left:0};this._positionType="static";this._contentClass={};this._currentControlStyleSettings=iuiItemDefaultStyle;this._generalClassName="iui-item";this._contentClassName=this._generalClassName+"-content"}_initStyle(){this._defaultStyle={general:{disabled:this._generalClassName+"-disabled",focused:this._generalClassName+"-focused",normal:this._generalClassName,hovered:this._generalClassName+"-hovered",selected:this._generalClassName+"-selected"},content:{disabled:this._contentClassName+"-disabled",focused:this._contentClassName+"-focused",normal:this._contentClassName,hovered:this._contentClassName+"-hovered",selected:this._contentClassName+"-selected"}};this.refresh()}setParent(t){this._parentCtrl=t}attributeChangedCallback(t,e,s){super.attributeChangedCallback(t,e,s)}static get properties(){return{icon:{type:String,reflect:!0},iconUrl:{type:String,attribute:"icon-url",reflect:!0},iconSize:{type:Object},text:{type:String,reflect:!0},visible:{type:Boolean,reflect:!0}}}get icon(){return this._currentIcon}set icon(t){if(this._currentIcon!==t){const e=this._currentIcon;this._currentIcon=t;this.requestUpdate("icon",e)}}get iconUrl(){return this._currentIconUrl}set iconUrl(t){if(this._currentIconUrl!==t){const e=this._currentIconUrl;this._currentIconUrl=t;this.requestUpdate("iconUrl",e)}}get iconSize(){return this._currentIconSize}set iconSize(t){if(this._currentIconSize!==t){const e=this._currentIconSize;this._currentIconSize=t;this.requestUpdate("iconSize",e)}}get text(){return this._currentText}set text(t){if(this._currentText!==t){const e=this._currentText;this._currentText=t;this.requestUpdate("text",e);this.update()}}get visible(){return this._isVisible}set visible(t){if(this._isVisible!==t){const e=this._isVisible;this._isVisible=t;this.requestUpdate("visible",e)}}_processStateChanged(){this._updateContentClass()}_onClick(t){if(this._isEnabled)this._invokeEvent("click",t);t.stopPropagation()}_onMouseDown(t){if(this._isEnabled){this._invokeEvent("mouseDown",t);if(this._parentCtrl&&this._parentCtrl.invokeCtrlMethod)this._parentCtrl.invokeCtrlMethod("ITEM_SELECT",this)}t.stopPropagation()}_onMouseUp(t){if(this._isEnabled)this._invokeEvent("mouseUp",t);t.stopPropagation()}_onMouseEnter(t){if(this._isEnabled){this.state|=IntegralUIObjectState.Hovered;this._invokeEvent("mouseEnter",t)}t.stopPropagation()}_onMouseMove(t){if(this._isEnabled)this._invokeEvent("mouseMove",t);t.stopPropagation()}_onMouseLeave(t){if(this._isEnabled){this.state&=~IntegralUIObjectState.Hovered;this._invokeEvent("mouseLeave",t)}t.stopPropagation()}getContentSize(){let t={width:0,height:0};if(this._contentElem){let e=this._commonService.getMargin(this._contentElem);t={width:this._contentElem.offsetWidth+(e.left+e.right),height:this._contentElem.offsetHeight+(e.top+e.bottom)/2}}return t}getIconStatus(){return this.icon?"inline-block":"none"}getMargin(){if(this._elemRef)return this._commonService.getMargin(this._elemRef.firstElementChild);else return{top:0,right:0,bottom:0,left:0}}getPageRect(){let t={top:0,right:0,bottom:0,left:0};if(this._elemRef)t=this._commonService.getPageRect(this._elemRef.firstElementChild);return t}getClientSize(){let t={width:0,height:0};if(this._elemRef)t={width:this._elemRef.firstElementChild.clientWidth,height:this._elemRef.firstElementChild.clientHeight};return t}getSize(){let t={width:0,height:0};this._updateReferences();if(this._elemRef){let e=this._commonService.getMargin(this._elemRef);t={width:this._elemRef.offsetWidth+(e.left+e.right),height:this._elemRef.offsetHeight+(e.top+e.bottom)/2}}return t}resetPos(){this.updateLayout("static",{x:"auto",y:"auto"})}updateLayout(t,e){this._updateReferences();this._positionType=t;this._itemPos={top:e.y,left:e.x}}updatePos(t){this.updateLayout("absolute",t)}_getControlStyle(){let t={position:this._positionType,top:this._itemPos.top+"px",left:this._itemPos.left+"px"};if(this._ctrlSize.width>0)t.width=this._ctrlSize.width+"px";if(this._ctrlSize.height>0)t.height=this._ctrlSize.height+"px";return t}_updateContentClass(){this._contentClass={};this._contentClass[this._contentClassName]=!0;if(this._options.currentStyle){this._contentClass[this._options.currentStyle.content.normal]=!0;if(this.state&IntegralUIObjectState.Disabled)this._contentClass[this._options.currentStyle.content.disabled]=!0;else if(this.state&IntegralUIObjectState.Focused)this._contentClass[this._options.currentStyle.content.focused]=!0;else if(this.state&IntegralUIObjectState.Selected)this._contentClass[this._options.currentStyle.content.selected]=!0;else if(this.state&IntegralUIObjectState.Hovered)this._contentClass[this._options.currentStyle.content.hovered]=!0}}_getContentClass(){return this._contentClass}_getContentStyle(t){if(this._commonService.isString(t))return t;else if(t)return{disabled:this._commonService.isFieldAvailable(t.disabled,this._contentClassName+"-disabled"),focused:this._commonService.isFieldAvailable(t.focused,this._contentClassName+"-focused"),hovered:this._commonService.isFieldAvailable(t.hovered,this._contentClassName+"-hovered"),normal:this._commonService.isFieldAvailable(t.normal,this._contentClassName),selected:this._commonService.isFieldAvailable(t.selected,this._contentClassName+"-selected")};else return{disabled:this._defaultStyle.content.disabled,focused:this._defaultStyle.content.focused,hovered:this._defaultStyle.content.hovered,normal:this._defaultStyle.content.normal,selected:this._defaultStyle.content.selected}}_updateStyle(t){if(t)this._options.currentStyle={general:this._getGeneralStyle(t.general),content:this._getContentStyle(t.content)};else this._options.currentStyle={general:{disabled:this._defaultStyle.general.disabled,focused:this._defaultStyle.general.focused,hovered:this._defaultStyle.general.hovered,normal:this._defaultStyle.general.normal,selected:this._defaultStyle.general.selected},content:{disabled:this._defaultStyle.content.disabled,focused:this._defaultStyle.content.focused,hovered:this._defaultStyle.content.hovered,normal:this._defaultStyle.content.normal,selected:this._defaultStyle.content.selected}}}_updateThemeSettings(t){this._currentThemeSettings=css``;switch(t){case IntegralUITheme.Office:this._currentThemeSettings.cssText=this._commonService.replaceAll(iuiItemOfficeStyle.cssText,"../icons",this._currentResourcePath);break;case IntegralUITheme.Midnight:this._currentThemeSettings.cssText=this._commonService.replaceAll(iuiItemMidnightStyle.cssText,"../icons",this._currentResourcePath);break;default:this._currentThemeSettings.cssText=""}}firstUpdated(t){this._updateReferences()}refresh(){this._updateStyle(this.controlStyle);this._updateControlClass();this._updateContentClass();this.update();this._updateReferences()}render(){return html`
${this.icon?html``:html``} ${this.iconUrl?html``:html``} ${this.text?html`${this.text}`:html``}
`}_updateControlStyleSettings(t){this._currentControlStyleSettings=css``;this._currentControlStyleSettings.cssText=this._commonService.replaceAll(iuiItemDefaultStyle.cssText,"../icons",t)}_updateReferences(){this._elemRef=this.shadowRoot.querySelector("div[data-ctrl=item]");this._contentElem=this.shadowRoot.querySelector("#content")}}window.customElements.define("iui-item",IntegralUIItem);export default IntegralUIItem; \ No newline at end of file diff --git a/components/integralui.list.js b/components/integralui.list.js index 1aca3ae..42a6f12 100644 --- a/components/integralui.list.js +++ b/components/integralui.list.js @@ -1,6 +1,6 @@ /* filename: integralui.list.js - version : 21.1.0 + version : 21.4.0 Copyright © 2016-2021 Lidor Systems. All rights reserved. This file is part of the "IntegralUI Web" Library. @@ -12,4 +12,4 @@ This SOFTWARE is provided "AS IS", WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for the specific language governing rights and limitations under the License. Any infringement will be prosecuted under applicable laws. */ -import{c as css,h as html}from"../external/lit-element.js";import{c as classMap}from"../external/class-map.js";import{s as styleMap}from"../external/style-map.js";import{IntegralUISpeedMode,IntegralUIOrientation,IntegralUISelectionMode,IntegralUISortOrder,IntegralUIMoveDirection,IntegralUIObjectState,IntegralUITheme}from"./integralui.enums.js";import IntegralUIBase from"./integralui.base.js";import IntegralUIDataService from"../services/integralui.data.service.js";import"./integralui.scrollbar.js";import{iuiListDefaultStyle}from"../styles/integralui.list.style.js";import{iuiListOfficeStyle}from"../themes/office/integralui.list.office.js";import{iuiListMidnightStyle}from"../themes/midnight/integralui.list.midnight.js";import{iuiListItemDefaultStyle}from"../styles/integralui.listitem.style.js";import{iuiListItemOfficeStyle}from"../themes/office/integralui.listitem.office.js";import{iuiListItemMidnightStyle}from"../themes/midnight/integralui.listitem.midnight.js";class IntegralUIList extends IntegralUIBase{_init(){super._init();this._dataService=new IntegralUIDataService();this._currentFields={};this._currentList=[];this._dataItems=[];this._scrollItemList=[];this._hoverItem=null;this._keepActive=!1;this._currentFocusObj=null;this._isFocusAllowed=!1;this._isKeyProcessed=!1;this._allowUpdate=!0;this._avgItemHeight=0;this._blockSize={width:0,height:0};this._contentSize={width:0,height:0};this._currentIndex=0;this._currentItemSpacing=0;this._currentMaxVisibleItems=0;this._prevIndex=0;this._isUpdateActive=!1;this._visibleRange=100;this._updateTimer=null;this._currentMouseWheelSpeed=IntegralUISpeedMode.Normal;this._currentScrollPos={x:0,y:0};this._maxScrollPos={x:0,y:0};this._accelerator=.5;this._isScrollActive=!1;this._isScrollTimerActive=!1;this._prevScrollPos={x:0,y:0};this._scrollBarSize={width:0,height:0};this._scrollCount=0;this._scrollLargeChange={x:0,y:0};this._scrollSize={width:0,height:0};this._scrollTimerID=null;this._scrollVisibility={horizontal:!0,vertical:!0};this._horScrollOrientation=IntegralUIOrientation.Horizontal;this._currentSelection=null;this._currentSelectionMode=IntegralUISelectionMode.One;this._isItemClicked=!1;this._shiftFirstSelectedItem=null;this._removeIndex=-1;this._currentSelectedItems=[];this._currentSorting=IntegralUISortOrder.None;this._sortComparer=null;this._currentControlStyleSettings=iuiListDefaultStyle;this._currentItemStyleSettings=iuiListItemDefaultStyle;this._currentItemThemeSettings=css``;this._generalClassName="iui-list";this._itemClassName="iui-listitem";this._itemContentClassName=this._itemClassName+"-content";this._refreshTimer=null;this._updateDataFields();this._updateData();this._initStyle()}_initStyle(){this._defaultStyle={general:{disabled:this._generalClassName+"-disabled",focused:this._generalClassName+"-focused",normal:this._generalClassName,hovered:this._generalClassName+"-hovered",selected:this._generalClassName+"-selected"},item:{general:{disabled:this._itemClassName+"-disabled",focused:this._itemClassName+"-focused",normal:this._itemClassName,hovered:this._itemClassName+"-hovered",selected:this._itemClassName+"-selected"},content:{disabled:this._itemContentClassName+"-disabled",focused:this._itemContentClassName+"-focused",normal:this._itemContentClassName,hovered:this._itemContentClassName+"-hovered",selected:this._itemContentClassName+"-selected"}}};this._updateControlClass();this.refresh()}connectedCallback(){super.connectedCallback()}disconnectedCallback(){super.disconnectedCallback()}attributeChangedCallback(e,t,i){super.attributeChangedCallback(e,t,i)}static get properties(){return{allowFocus:{type:Boolean,attribute:"allow-focus",reflect:!0},dataFields:{type:Object,attribute:"data-fields"},items:{type:Array},itemSpacing:{type:Number,attribute:"item-spacing",reflect:!0},mouseWheelSpeed:{attribute:"mousewheel-speed",converter:{fromAttribute:e=>{switch((e=e.replace(/"|'/,"").replace(/"|'/,"")).toLowerCase()){case"veryslow":return IntegralUISpeedMode.VerySlow;case"slow":return IntegralUISpeedMode.Slow;case"fast":return IntegralUISpeedMode.Fast;case"veryfast":return IntegralUISpeedMode.VeryFast;default:return IntegralUISpeedMode.Normal}},toAttribute:e=>{switch(e){case IntegralUISpeedMode.VerySlow:return"VerySlow";case IntegralUISpeedMode.Slow:return"Slow";case IntegralUISpeedMode.Fast:return"Fast";case IntegralUISpeedMode.VeryFast:return"VeryFast";default:return"Normal"}}},reflect:!0},selectedItem:{type:Object,attribute:"selected-item"},selectionMode:{attribute:"selection-mode",converter:{fromAttribute:e=>{switch((e=e.replace(/"|'/,"").replace(/"|'/,"")).toLowerCase()){case"none":return IntegralUISelectionMode.None;case"multisimple":return IntegralUISelectionMode.MultiSimple;case"multiextended":return IntegralUISelectionMode.MultiExtended;default:return IntegralUISelectionMode.One}},toAttribute:e=>{switch(e){case IntegralUISelectionMode.None:return"None";case IntegralUISelectionMode.MultiSimple:return"MultiSimple";case IntegralUISelectionMode.MultiExtended:return"MultiExtended";default:return"One"}}},reflect:!0},showScroll:{type:Object,attribute:"show-scroll"},sorting:{converter:{fromAttribute:e=>{switch((e=e.replace(/"|'/,"").replace(/"|'/,"")).toLowerCase()){case"ascending":return IntegralUISortOrder.Ascending;case"descending":return IntegralUISortOrder.Descending;default:return IntegralUISpeedMode.None}},toAttribute:e=>{switch(e){case IntegralUISortOrder.Ascending:return"Ascending";case IntegralUISortOrder.Descending:return"Descending";default:return"None"}}},reflect:!0}}}set allowFocus(e){if(this._isFocusAllowed!==e){const t=this._isFocusAllowed;this._isFocusAllowed=e;if(!e)this._currentFocusObj=null;this.refresh();this.requestUpdate("allowFocus",t);this.updateLayout()}}get dataFields(){return this._currentFields}set dataFields(e){const t=this._currentFields;this._updateDataFields(e);this.requestUpdate("dataFields",t)}get items(){return this._dataItems}set items(e){const t=this._dataItems;this._dataItems=e;this._updateData();this.requestUpdate("items",t)}get itemSpacing(){return this._currentItemSpacing}set itemSpacing(e){const t=this._currentItemSpacing;this._currentItemSpacing=e;this.requestUpdate("itemSpacing",t)}get maxVisibleItems(){return this._currentMaxVisibleItems}set maxVisibleItems(e){const t=this._currentMaxVisibleItems;this._currentMaxVisibleItems=e;this.updateLayout();this.requestUpdate("maxVisibleItems",t)}get mouseWheelSpeed(){return this._currentMouseWheelSpeed}set mouseWheelSpeed(e){if(this._currentMouseWheelSpeed!==e){const t=this._currentMouseWheelSpeed;this._currentMouseWheelSpeed=e;this.requestUpdate("mouseWheelSpeed",t)}}get selectedItem(){return this._currentSelection}set selectedItem(e){if(this._currentSelection!==e){const t=this._currentSelection;this._dataItems.filter(t=>t!==e).forEach(e=>delete e[this._currentFields.selected]);let i=this;i._processSelection(null,e);i.requestUpdate("selectedItem",t)}}get selectionMode(){return this._currentSelectionMode}set selectionMode(e){if(this._currentSelectionMode!==e){const t=this._currentSelectionMode;this._currentSelectionMode=e;this._clearPrevSelection(this._currentSelectionMode!==IntegralUISelectionMode.None?this._currentSelection:null);let i=this,s=setTimeout(function(){i.refresh();if(i._currentSelectionMode===IntegralUISelectionMode.None){i._currentSelection=null;if(!i._keepActive)i._invokeEvent("selectionChanged",{item:null})}i.requestUpdate("selectionMode",t);clearTimeout(s)},1)}}get showScroll(){return this._scrollVisibility}set showScroll(e){if(e){let t=!1;const i=this._scrollVisibility;if(void 0!==e.horizontal&&this._scrollVisibility.horizontal!==e.horizontal){this._scrollVisibility.horizontal=e.horizontal;t=!0}if(void 0!==e.vertical&&this._scrollVisibility.vertical!==e.vertical){this._scrollVisibility.vertical=e.vertical;t=!0}if(t){this.requestUpdate("showScroll",i);this.updateLayout()}}}get sorting(){return this._currentSorting}set sorting(e){if(this._currentSorting!==e){const t=this._currentSorting;this._currentSorting=e;this.requestUpdate("sorting",t)}}_itemClickEvent(e,t){if(this._isEnabled&&1===e.which)this._invokeEvent("itemClick",{event:e,item:t.data})}_addItemToCurrentList(e){e.type="item";if(!e[this._currentFields.id])e[this._currentFields.id]=this._commonService.getUniqueId();if(this._isItemAllowed(e))this._currentList.push({data:e})}loadData(e,t){this.clearItems();this._updateDataFields(t);this._dataItems.length=0;e.map(e=>this._dataItems.push(e));this._invokeEvent("loadComplete");this.updateLayout()}_updateCurrentList(){this._currentList.length=0;let e=this._dataService.getList();if(e){this._applySorting(e);e.map(e=>this._addItemToCurrentList(e))}}_updateData(){this._dataService.init([{data:this._dataItems}])}_updateDataFields(e){if(e)this._currentFields={enabled:e.enabled?e.enabled:"enabled",icon:e.icon?e.icon:"icon",iconUrl:e.iconUrl?e.iconUrl:"iconUrl",id:e.id?e.id:"id",selected:e.selected?e.selected:"selected",style:e.style?e.style:"style",text:e.text?e.text:"text",value:e.value?e.value:"value",visible:e.visible?e.visible:"visible"};else this._currentFields={enabled:"enabled",icon:"icon",iconUrl:"iconUrl",id:"id",selected:"selected",style:"style",text:"text",value:"value",visible:"visible"};if(this._dataService)this._dataService.updateDataFields(this._currentFields)}_resetScrollItemList(){this._scrollItemList.length=0;this.update()}_updateScrollItemList(){this._resetScrollItemList();this._scrollItemList.length=0;this.update();let e=1;for(let t=this._currentIndex;tt.push(this.cloneItem(e)));return t}_getFilterTree(e){return e?this._filterService.createTree(e.conditions,e.formula):null}_getObjFromItem(e){return this._getObjFromList(e,this._currentList)}_getObjFromList(e,t){let i=t.filter(t=>e&&t.data===e);return i.length>0?i[0]:null}_getObjFromScrollItem(e){return this._getObjFromList(e,this._scrollItemList)}_getItemCurrentIndex(e){let t=this._getObjFromItem(e);return e&&t&&this._currentList?this._currentList.indexOf(t):-1}_getItemScrollIndex(e){return e&&this._scrollItemList?this._scrollItemList.indexOf(e):-1}_getItemElem(e){let t=this._getObjFromScrollItem(e);if(t){let e=this._getItemElemList(),i=this._getItemScrollIndex(t);if(i>=0&&i=0&&i0?this._scrollItemList[0].data:null}_isItemAllowed(e){if(!1===e[this._currentFields.visible])return!1;else return!0}_isItemEnabled(e){return!0}_isItemHovered(e){return!this._isDragActive&&!this._isScrollTimerActive&&e&&e===this._hoverItem?!0:!1}_isItemSelected(e){return e&&!0===e[this._currentFields.selected]?!0:!1}_gotFocus(e){this._keepActive=!0}_ctrlKeyDown(e){e.preventDefault();let t=this;t._keepActive=!1;switch(e.keyCode){case 9:t._keepActive=!0;if(e.shiftKey){t.selectedItem=t._getPrevItem();t._scrollList(IntegralUIMoveDirection.Up)}else{t.selectedItem=t._getNextItem();t._scrollList(IntegralUIMoveDirection.Down)}break;case 13:t._isKeyProcessed=!0;t._keepActive=!1;t._processSelection(e,t._currentSelection);break;case 27:t._isKeyProcessed=!0;t._keepActive=!1;t._invokeEvent("selectionChanged",{item:null});break;case 33:t._keepActive=!0;t.selectedItem=t._getPrevItem(!0);t._scrollList(IntegralUIMoveDirection.Up);break;case 34:t._keepActive=!0;t.selectedItem=t._getNextItem(!0);t._scrollList(IntegralUIMoveDirection.Down);break;case 35:t._keepActive=!0;t.selectedItem=t._dataItems[t._dataItems.length-1];t._scrollList(IntegralUIMoveDirection.Down);break;case 36:t._keepActive=!0;t.selectedItem=t._dataItems[0];t._scrollList(IntegralUIMoveDirection.Up);break;case 38:t._keepActive=!0;t.selectedItem=t._getPrevItem();t._scrollList(IntegralUIMoveDirection.Up);break;case 40:t._keepActive=!0;t.selectedItem=t._getNextItem();t._scrollList(IntegralUIMoveDirection.Down);break;default:this._defaultFunc()}t._isKeyProcessed=!1}_getCurrentSelectedIndex(){return this._dataItems.indexOf(this._currentSelection)}_getNextItem(){let e=this._getCurrentSelectedIndex();if(e<0&&this._dataItems.length>0)return this._dataItems[0];else return e>=0&&e0?this._dataItems[e-1]:this._dataItems[0]}isActive(){return this._keepActive}_lostFocus(e){this._keepActive=!1}_scrollList(e){let t=this,i=setTimeout(function(){t.scrollTo(t.selectedItem,e);clearTimeout(i)},1)}_getContentSize(){return{width:0,height:0}}_updateBlockSize(){this._blockSize={width:0,height:0}}_resetLayoutTimer(){if(this._updateTimer)clearTimeout(this._updateTimer);this._updateTimer=null}suspendLayout(){this._allowUpdate=!1}resumeLayout(){this._allowUpdate=!0;this.updateLayout()}async shouldUpdate(e){e.forEach((e,t)=>{});if(e.has("items"))await this.updateLayout();if(this._elemRef){this._clientRect={width:this._elemRef.clientWidth-2,height:this._elemRef.clientHeight-2};if(this._clientRect.width!==this._prevClientRect.width){this.updateLayout();this._prevClientRect.width=this._clientRect.width}else if(this._clientRect.height!==this._prevClientRect.height){this.updateLayout();this._prevClientRect.height=this._clientRect.height}}return!0}_updateCurrentLayout(e){}_updateItemElems(){this._itemElems=this.shadowRoot.querySelectorAll("li[data-item]");this._itemContentElems=this.shadowRoot.querySelectorAll("div[data-item-content]")}async updateLayout(){await this._processUpdateLayout();await this._processUpdateLayout();this.update()}_processUpdateLayout(){let e=this;return new Promise(t=>{if(e._allowUpdate){e._resetLayoutTimer();e.updateTimer=setTimeout(function(){e._updateCurrentList();e._clientRect={width:e._elemRef.clientWidth,height:e._elemRef.clientHeight};e._updateScrollItemList();e.update();let i=setTimeout(function(){e._updateItemElems();e._updateBlockSize();e._avgItemHeight=0;let s=e._getItemElemList();if(s&&s.length>0){let t=0;for(let e=0;e0){let t=Math.min(e._currentList.length,e._currentMaxVisibleItems);e.size={height:t*e._avgItemHeight}}}e._updateScrollSize();e._updateVisibleRange();e._updateScrollItemList();e.refresh();e._invokeEvent("updateComplete");e._updateItemElems();clearTimeout(i);t()},1);clearTimeout(e.updateTimer)},1)}})}_updateScrollSize(){let e=this;e._contentSize={width:e._clientRect.width-2,height:e._clientRect.height-2};e._scrollSize={width:0,height:e._currentList.length<=e._currentMaxVisibleItems?0:e._avgItemHeight*e._currentList.length-e._clientRect.height+e._avgItemHeight};if(e.isVerScrollVisible()){e._contentSize.width-=18;if(e._scrollSize.width>0)e._scrollSize.width+=16}if(e.isHorScrollVisible())e._scrollSize.height+=16;e._scrollSize.width=e._scrollSize.width>0?e._scrollSize.width:0;e._scrollSize.height=e._scrollSize.height>0?e._scrollSize.height:0;e._maxScrollPos={x:e._scrollSize.width,y:e._scrollSize.height};if(e._currentScrollPos.x>e._maxScrollPos.x)e._changeHorizontalScrollPos(e._maxScrollPos.x);if(e._currentScrollPos.y>e._maxScrollPos.y)e._changeVerticalScrollPos(e._maxScrollPos.y);e._scrollBarSize={width:e.isVerScrollVisible()?e._clientRect.width-18:e._clientRect.width-4,height:e.isHorScrollVisible()?e._clientRect.height-18:e._clientRect.height-4};e._scrollLargeChange={x:e._scrollBarSize.width,y:e._scrollBarSize.height}}_updateVisibleRange(){this._visibleRange=1;let e=this._getItemElemList();if(e&&e.length>0){let t=0;for(let i=0;i0)this._visibleRange=Math.floor(this._clientRect.height/i)+1}}updateView(){this._currentIndex=this._avgItemHeight>0?Math.floor(this._currentScrollPos.y/this._avgItemHeight):0;if(this._currentIndex!==this._prevIndex){this._updateScrollItemList();this._updateBlockSize();this._prevIndex=this._currentIndex;this.update();this._updateItemElems()}else this.update()}_onCtrlMouseEnter(e){if(this._isEnabled)this.state|=IntegralUIObjectState.Hovered}_onCtrlMouseLeave(e){this.state&=~IntegralUIObjectState.Hovered;this.update();this._stopScrollTimer()}_itemMouseDown(e,t){if(this._isEnabled){this._isItemClicked=!0;if(this._isFocusAllowed&&1===e.buttons)this._currentFocusObj=t;this._processSelection(e,t.data)}e.stopPropagation()}_itemMouseEnter(e,t){if(this._isEnabled&&!this._isScrollActive){this._hoverItem=t.data;this._updateItemStyle(t);this.update();this._invokeEvent("itemHover",{item:t.data})}}_itemMouseLeave(e,t){if(this._isEnabled&&!this._isScrollActive){this._hoverItem=null;this._updateItemStyle(t);this.update()}}_itemMouseUp(e,t){if(this._isEnabled&&this._isItemClicked)this._updateSelection(e,t.data);this._isItemClicked=!1}_onScroll(e){if(e.target){e.target.scrollTop=0;e.target.scrollLeft=0}}scrollPos(e){if(e){this._currentScrollPos={x:Math.max(0,Math.min(e.x,this._maxScrollPos.x)),y:Math.max(0,Math.min(e.y,this._maxScrollPos.y))};this.updateView();this._invokeEvent("scrollPosChanged",{value:this._currentScrollPos})}return{x:Math.floor(this._currentScrollPos.x),y:Math.floor(this._currentScrollPos.y)}}_changeHorizontalScrollPos(e){this._currentScrollPos.x=Math.max(0,Math.min(e,this._maxScrollPos.x));if(this._currentScrollPos.x!==this._prevScrollPos.x){this._invokeEvent("scrollPosChanged",{value:this.scrollPos()});this._prevScrollPos.x=this._currentScrollPos.x;this.update()}}_changeVerticalScrollPos(e){this._currentScrollPos.y=Math.max(0,Math.min(e,this._maxScrollPos.y));if(this._currentScrollPos.y!==this._prevScrollPos.y){this.updateView();this._invokeEvent("scrollPosChanged",{value:this.scrollPos()});this._prevScrollPos.y=this._currentScrollPos.y}}_processMouseWheel(e,t){if(this._isEnabled){this._hoverItem=null;let i=Math.max(-1,Math.min(1,e.wheelDelta||-e.detail)),s=5;switch(this._mouseWheelSpeed){case IntegralUISpeedMode.VerySlow:s=15;break;case IntegralUISpeedMode.Slow:s=9;break;case IntegralUISpeedMode.Fast:s=3;break;case IntegralUISpeedMode.VeryFast:s=1;break;default:s=5}e.preventDefault();if(this.isVerScrollVisible()){let e=Math.floor(this._clientRect.height/s);if(this._mouseWheelSpeed===IntegralUISpeedMode.VerySlow&&this._avgItemHeight>0)e=this._avgItemHeight;let t=this._currentScrollPos.y+e*i*-1;if(i>0&&t<=this._avgItemHeight)t=0;this._changeVerticalScrollPos(t)}else if(t&&this.isHorScrollVisible()){let e=Math.floor(this._clientRect.width/s),t=this._currentScrollPos.x+e*i*-1;this._changeHorizontalScrollPos(t)}e.stopPropagation()}}isVerScrollVisible(){return this._isEnabled&&this._scrollVisibility.vertical&&this._scrollSize.height>0?!0:!1}isHorScrollVisible(){return this._isEnabled&&this._scrollVisibility.horizontal&&this._scrollSize.width>0?!0:!1}_onVerticalScrollStart(e){this._hoverItem=null;this._isScrollActive=!0}_onVerticalScrollEnd(e){this._isScrollActive=!1}_onVerticalScrollChanged(e){this._changeVerticalScrollPos(e.detail.value)}_onHorizontalScrollStart(e){this._hoverItem=null;this._isScrollActive=!0}_onHorizontalScrollEnd(e){this._isScrollActive=!1}_onHorizontalScrollChanged(e){this._currentScrollPos.x=e.detail.value;this._invokeEvent("scrollPosChanged",{value:this.scrollPos()});this.update()}_processScroll(e){if(this.isVerScrollVisible()){let t=this._commonService.getShiftPos(),i=this._commonService.getMousePos(e);i.x-=t.x;i.y-=t.y;let s=this._commonService.getPageRect(this._elemRef),l=s.top+25,r=s.bottom-25;if(this.isHorScrollVisible())r-=16;if(i.y0)this._startScrollTimer(!1);else if(i.y>r&&this._currentScrollPos.ythis._maxScrollPos.y)this._currentScrollPos.y=this._maxScrollPos.y;else this._currentScrollPos.y+=i;else if(this._currentScrollPos.y-i<0)this._currentScrollPos.y=0;else this._currentScrollPos.y-=i;if(t.y<=0||this._currentScrollPos.y=0)this.scrollPos({x:this._currentScrollPos.x,y:this._avgItemHeight*(t+1-Math.floor(this._visibleRange/2))});this.updateLayout()}}_callAfterSelectEvent(e){if(!this._keepActive){let t={item:e};this._invokeEvent("afterSelect",t);this._invokeEvent("selectionChanged",t)}}clearSelection(){this._clearPrevSelection();this._currentSelection=null;this.refresh()}_clearComponentSelection(){this._itemList.forEach(e=>e.state&=~IntegralUIObjectState.Selected)}_clearPrevSelection(e){for(let t=0;t0;if(!s._isItemEnabled(t)){s._clearPrevSelection();s.refresh();if(r&&!s._keepActive)s._invokeEvent("selectionChanged",{item:null})}else{let n=s._currentSelection,c=!0;if(n)c=s._isKeyProcessed||s._isCtrlKeyPressed(e)||!s._commonService.isEqual(n[s._currentFields.id],t[s._currentFields.id])||!1===n[s._currentFields.selected];let o={cancel:!1,item:t};s._invokeEvent("beforeSelect",o);l=!0===o.cancel?!1:!0;if(!0!==o.cancel){let l=e&&(e.shiftKey||e.ctrlKey||e.metaKey)?!0:!1;if(c){if(s.selectionMode===IntegralUISelectionMode.MultiExtended)c=!s._isItemInSelectionList(t)||!l||s._isShiftKeyPressed(e);if(c)if(s.selectionMode===IntegralUISelectionMode.One)s._clearPrevSelection();else if(e&&e.shiftKey)s._clearPrevSelection();else if(!l&&s.selectionMode!==IntegralUISelectionMode.MultiSimple&&(1===s._currentSelectedItems.length||!s._isItemInSelectionList(t)))s._clearPrevSelection();s._currentSelection=t;if(e&&e.shiftKey&&s.selectionMode!==IntegralUISelectionMode.One){if(!s._shiftFirstSelectedItem)s._shiftFirstSelectedItem=n;let e=s._getItemCurrentIndex(s._shiftFirstSelectedItem),i=s._getItemCurrentIndex(t);if(e>i){let t=e;e=i;i=t}if(s._commonService.isIndexInRange(e,s._currentList)&&s._commonService._isIndexInRange(i,s._currentList))for(let t=e;t<=i;t++)if(!1!==s._currentList[t].data[s._currentFields.canSelect]){s._currentList[t].data[s._currentFields.selected]=!0;s._currentSelectedItems.push(s._currentList[t].data)}}else if(l||s.selectionMode===IntegralUISelectionMode.MultiSimple){let e=null===t[s._currentFields.selected]||"undefined"===t[s._currentFields.selected]?!1:t[s._currentFields.selected];t[s._currentFields.selected]=!e;if(!t[s._currentFields.selected])s._currentSelectedItems=s._currentSelectedItems.filter(function(e){return e!==t});else if(!s._isItemInSelectionList(t))s._currentSelectedItems.push(t);s._shiftFirstSelectedItem=null}else{t[s._currentFields.selected]=!0;if(!s._isItemInSelectionList(t))s._currentSelectedItems.push(t);s._shiftFirstSelectedItem=null}s._callAfterSelectEvent(t);s.refresh()}else if(l||s.selectionMode===IntegralUISelectionMode.MultiSimple){let e=null===t[s._currentFields.selected]||"undefined"===t[s._currentFields.selected]?!1:t[s._currentFields.selected];if(i&&"undefined"!==i)e=i;t[s._currentFields.selected]=!e;if(!t[s._currentFields.selected])s._currentSelectedItems=s._currentSelectedItems.filter(function(e){return e!==t});else if(!s._isItemInSelectionList(t))s._currentSelectedItems.push(t);s._shiftFirstSelectedItem=null;s._callAfterSelectEvent(t);s.refresh()}else if(!l&&!(s.selectionMode&IntegralUISelectionMode.MultiSimple)&&(1===s._currentSelectedItems.length||!s._isItemInSelectionList(t))){s._shiftFirstSelectedItem=null;s._clearPrevSelection(t);s.refresh();if(c&&r&&!s._keepActive)s._invokeEvent("selectionChanged",{item:null})}}}}return l}selectItems(e){if(e&&Array.isArray(e)){this._currentSelectedItems.map(e=>e[this._currentFields.selected]=!1);this._currentSelectedItems.length=0;for(let t=0;t0){this._currentSelection=e[e.length-1];this._callAfterSelectEvent(this._currentSelection)}else this._currentSelection=null;this.refresh()}}_updateSelection(e,t){let i=e&&(e.shiftKey||e.ctrlKey||e.metaKey)?!0:!1;if(this.selectionMode===IntegralUISelectionMode.MultiExtended&&!1!==t[this._currentFields.canSelect]&&this._currentSelectedItems.length>0&&!e.shiftKey&&!i&&1===e.which){let e=this._currentSelectedItems.length;this._clearPrevSelection();t[this._currentFields.selected]=!0;this._currentSelectedItems.push(t);if(e>1)this._callAfterSelectEvent(t);this.refresh()}}_applySorting(e){let t=this;if(e)if(t._sortComparer)e.sort(t._sortComparer);else if(t._isSortingAllowed())e.sort(function(e,i){let s=null,l=null;if(!(s=e[t._currentFields.value]))s=e[t._currentFields.text];if(t._commonService.isObject(s))s=s.value?s.value:s.text;if(!(l=i[t._currentFields.value]))l=i[t._currentFields.text];if(t._commonService.isObject(l))l=l.value?l.value:l.text;s=void 0!==s?s:null;l=void 0!==l?l:null;switch(t._currentSorting){case IntegralUISortOrder.Ascending:if(sl)return 1;break;case IntegralUISortOrder.Descending:if(s>l)return-1;else if(st[e]=!0);return html` ${i.length>0?html``:html``} ${e.iconUrl?html`${e[this._currentFields.text]} `}_ctrlTouchStart(e){e.preventDefault();if(this._isEnabled){let t=this._commonService.getTouchData(e);if(t&&t.length>0)this._touchStartPos={x:t[0].pageX,y:t[0].pageY}}}_ctrlTouchEnd(e){let t=this;if(t._isEnabled){let i=t._commonService.getTouchData(e);if(i&&i.length>0)t._touchEndPos={x:i[0].pageX,y:i[0].pageY};let s={dx:t._touchEndPos.x-t._touchStartPos.x,dy:t._touchEndPos.y-t._touchStartPos.y},l=!1,r=!1,n=t._touchStartPos,c={x:t._currentScrollPos.x,y:t._currentScrollPos.y},o=setInterval(function(){let e=t._currentScrollPos;if(s.dx<-20){n.x-=30;if(n.x>t._touchEndPos.x)e.x+=30;else{e.x=c.x-s.dx;l=!0}}else if(s.dx>20){n.x+=30;if(n.xt._touchEndPos.y)e.y+=25;else{e.y=c.y-s.dy;r=!0}}else if(s.dy>20){n.y+=25;if(n.y{})}refresh(e){this._resetRefresh();this._updateControlClass();this._scrollItemList.map(e=>this._updateItemStyle(e));this.update();this._updateReferences()}_resetRefresh(){if(this._refreshTimer)clearTimeout(this._refreshTimer);this._refreshTimer=null}render(){return html`
    ${this._scrollItemList.map((e,t)=>html`
  • ${this._getItemTemplate(e.data)}
  • `)}
${this.isVerScrollVisible()?html``:html``} ${this.isHorScrollVisible()?html``:html``} ${this.isVerScrollVisible()&&this.isHorScrollVisible()?html`
`:html``}
`}_updateControlStyleSettings(e){this._currentControlStyleSettings=css``;this._currentControlStyleSettings.cssText=this._commonService.replaceAll(iuiListDefaultStyle.cssText,"../icons",e);this._currentItemStyleSettings=css``;this._currentItemStyleSettings.cssText=this._commonService.replaceAll(iuiListItemDefaultStyle.cssText,"../icons",e)}_updateReferences(){this._elemRef=this.shadowRoot.querySelector("div[data-ctrl=list]");this._contentElem=this.shadowRoot.querySelector("#content")}}window.customElements.define("iui-list",IntegralUIList);export default IntegralUIList; \ No newline at end of file +import{c as css,h as html}from"../external/lit-element.js";import{c as classMap}from"../external/class-map.js";import{s as styleMap}from"../external/style-map.js";import IntegralUIBase from"./integralui.base.js";import IntegralUIDataService from"../services/integralui.data.service.js";import{IntegralUISpeedMode,IntegralUIOrientation,IntegralUISelectionMode,IntegralUISortOrder,IntegralUIMoveDirection,IntegralUIObjectState,IntegralUITheme}from"./integralui.enums.js";import"./integralui.scrollbar.js";import{iuiListDefaultStyle}from"../styles/integralui.list.style.js";import{iuiListOfficeStyle}from"../themes/office/integralui.list.office.js";import{iuiListMidnightStyle}from"../themes/midnight/integralui.list.midnight.js";import{iuiListItemDefaultStyle}from"../styles/integralui.listitem.style.js";import{iuiListItemOfficeStyle}from"../themes/office/integralui.listitem.office.js";import{iuiListItemMidnightStyle}from"../themes/midnight/integralui.listitem.midnight.js";class IntegralUIList extends IntegralUIBase{_init(){super._init();this._dataService=new IntegralUIDataService();this._currentFields={};this._currentList=[];this._dataItems=[];this._scrollItemList=[];this._hoverItem=null;this._keepActive=!1;this._currentFocusObj=null;this._isFocusAllowed=!1;this._isKeyProcessed=!1;this._avgItemHeight=0;this._blockSize={width:0,height:0};this._contentSize={width:0,height:0};this._currentIndex=0;this._currentItemSpacing=0;this._currentMaxVisibleItems=0;this._prevIndex=0;this._isUpdateActive=!1;this._visibleRange=100;this._updateTimer=null;this._currentMouseWheelSpeed=IntegralUISpeedMode.Normal;this._currentScrollPos={x:0,y:0};this._maxScrollPos={x:0,y:0};this._accelerator=.5;this._isScrollActive=!1;this._isScrollTimerActive=!1;this._prevScrollPos={x:0,y:0};this._scrollBarSize={width:0,height:0};this._scrollCount=0;this._scrollLargeChange={x:0,y:0};this._scrollSize={width:0,height:0};this._scrollTimerID=null;this._scrollVisibility={horizontal:!0,vertical:!0};this._horScrollOrientation=IntegralUIOrientation.Horizontal;this._currentSelection=null;this._currentSelectionMode=IntegralUISelectionMode.One;this._isItemClicked=!1;this._shiftFirstSelectedItem=null;this._removeIndex=-1;this._currentSelectedItems=[];this._currentSorting=IntegralUISortOrder.None;this._sortComparer=null;this._currentControlStyleSettings=iuiListDefaultStyle;this._currentItemStyleSettings=iuiListItemDefaultStyle;this._currentItemThemeSettings=css``;this._generalClassName="iui-list";this._itemClassName="iui-listitem";this._itemContentClassName=this._itemClassName+"-content";this._refreshTimer=null;this._updateDataFields();this._updateData();this._initStyle()}_initStyle(){this._defaultStyle={general:{disabled:this._generalClassName+"-disabled",focused:this._generalClassName+"-focused",normal:this._generalClassName,hovered:this._generalClassName+"-hovered",selected:this._generalClassName+"-selected"},item:{general:{disabled:this._itemClassName+"-disabled",focused:this._itemClassName+"-focused",normal:this._itemClassName,hovered:this._itemClassName+"-hovered",selected:this._itemClassName+"-selected"},content:{disabled:this._itemContentClassName+"-disabled",focused:this._itemContentClassName+"-focused",normal:this._itemContentClassName,hovered:this._itemContentClassName+"-hovered",selected:this._itemContentClassName+"-selected"}}};this._updateControlClass();this.refresh()}connectedCallback(){super.connectedCallback()}disconnectedCallback(){super.disconnectedCallback()}attributeChangedCallback(e,t,i){super.attributeChangedCallback(e,t,i)}static get properties(){return{allowFocus:{type:Boolean,attribute:"allow-focus",reflect:!0},dataFields:{type:Object,attribute:"data-fields"},items:{type:Array},itemSpacing:{type:Number,attribute:"item-spacing",reflect:!0},mouseWheelSpeed:{attribute:"mousewheel-speed",converter:{fromAttribute:e=>{switch((e=e.replace(/"|'/,"").replace(/"|'/,"")).toLowerCase()){case"veryslow":return IntegralUISpeedMode.VerySlow;case"slow":return IntegralUISpeedMode.Slow;case"fast":return IntegralUISpeedMode.Fast;case"veryfast":return IntegralUISpeedMode.VeryFast;default:return IntegralUISpeedMode.Normal}},toAttribute:e=>{switch(e){case IntegralUISpeedMode.VerySlow:return"VerySlow";case IntegralUISpeedMode.Slow:return"Slow";case IntegralUISpeedMode.Fast:return"Fast";case IntegralUISpeedMode.VeryFast:return"VeryFast";default:return"Normal"}}},reflect:!0},selectedItem:{type:Object,attribute:"selected-item"},selectionMode:{attribute:"selection-mode",converter:{fromAttribute:e=>{switch((e=e.replace(/"|'/,"").replace(/"|'/,"")).toLowerCase()){case"none":return IntegralUISelectionMode.None;case"multisimple":return IntegralUISelectionMode.MultiSimple;case"multiextended":return IntegralUISelectionMode.MultiExtended;default:return IntegralUISelectionMode.One}},toAttribute:e=>{switch(e){case IntegralUISelectionMode.None:return"None";case IntegralUISelectionMode.MultiSimple:return"MultiSimple";case IntegralUISelectionMode.MultiExtended:return"MultiExtended";default:return"One"}}},reflect:!0},showScroll:{type:Object,attribute:"show-scroll"},sorting:{converter:{fromAttribute:e=>{switch((e=e.replace(/"|'/,"").replace(/"|'/,"")).toLowerCase()){case"ascending":return IntegralUISortOrder.Ascending;case"descending":return IntegralUISortOrder.Descending;default:return IntegralUISpeedMode.None}},toAttribute:e=>{switch(e){case IntegralUISortOrder.Ascending:return"Ascending";case IntegralUISortOrder.Descending:return"Descending";default:return"None"}}},reflect:!0}}}set allowFocus(e){if(this._isFocusAllowed!==e){const t=this._isFocusAllowed;this._isFocusAllowed=e;if(!e)this._currentFocusObj=null;this.refresh();this.requestUpdate("allowFocus",t);this.updateLayout()}}get dataFields(){return this._currentFields}set dataFields(e){const t=this._currentFields;this._updateDataFields(e);this.requestUpdate("dataFields",t)}get items(){return this._dataItems}set items(e){const t=this._dataItems;this._dataItems=e;this._updateData();this.requestUpdate("items",t)}get itemSpacing(){return this._currentItemSpacing}set itemSpacing(e){const t=this._currentItemSpacing;this._currentItemSpacing=e;this.requestUpdate("itemSpacing",t)}get maxVisibleItems(){return this._currentMaxVisibleItems}set maxVisibleItems(e){const t=this._currentMaxVisibleItems;this._currentMaxVisibleItems=e;this.updateLayout();this.requestUpdate("maxVisibleItems",t)}get mouseWheelSpeed(){return this._currentMouseWheelSpeed}set mouseWheelSpeed(e){if(this._currentMouseWheelSpeed!==e){const t=this._currentMouseWheelSpeed;this._currentMouseWheelSpeed=e;this.requestUpdate("mouseWheelSpeed",t)}}get selectedItem(){return this._currentSelection}set selectedItem(e){if(this.allowUpdate&&this._currentSelection!==e){const t=this._currentSelection;this._dataItems.filter(t=>t!==e).forEach(e=>delete e[this._currentFields.selected]);let i=this;i._processSelection(null,e);i.requestUpdate("selectedItem",t)}}get selectionMode(){return this._currentSelectionMode}set selectionMode(e){if(this._currentSelectionMode!==e){const t=this._currentSelectionMode;this._currentSelectionMode=e;this._clearPrevSelection(this._currentSelectionMode!==IntegralUISelectionMode.None?this._currentSelection:null);let i=this,s=setTimeout(function(){i.refresh();if(i._currentSelectionMode===IntegralUISelectionMode.None){i._currentSelection=null;if(!i._keepActive)i._invokeEvent("selectionChanged",{item:null})}i.requestUpdate("selectionMode",t);clearTimeout(s)},1)}}get showScroll(){return this._scrollVisibility}set showScroll(e){if(e){let t=!1;const i=this._scrollVisibility;if(void 0!==e.horizontal&&this._scrollVisibility.horizontal!==e.horizontal){this._scrollVisibility.horizontal=e.horizontal;t=!0}if(void 0!==e.vertical&&this._scrollVisibility.vertical!==e.vertical){this._scrollVisibility.vertical=e.vertical;t=!0}if(t){this.requestUpdate("showScroll",i);this.updateLayout()}}}get sorting(){return this._currentSorting}set sorting(e){if(this._currentSorting!==e){const t=this._currentSorting;this._currentSorting=e;this.requestUpdate("sorting",t)}}_itemClickEvent(e,t){if(this._isEnabled&&1===e.which)this._invokeEvent("itemClick",{event:e,item:t.data})}_addItemToCurrentList(e){e.type="item";if(!e[this._currentFields.id])e[this._currentFields.id]=this._commonService.getUniqueId();if(this._isItemAllowed(e))this._currentList.push({data:e})}loadData(e,t){this.clearItems();this._updateDataFields(t);this._dataItems.length=0;e.map(e=>this._dataItems.push(e));this._invokeEvent("loadComplete");this.updateLayout()}_updateCurrentList(){this._currentList.length=0;let e=this._dataService.getList();if(e){this._applySorting(e);e.map(e=>this._addItemToCurrentList(e))}}_updateData(){this._dataService.init([{data:this._dataItems}])}_updateDataFields(e){if(e)this._currentFields={enabled:e.enabled?e.enabled:"enabled",icon:e.icon?e.icon:"icon",iconUrl:e.iconUrl?e.iconUrl:"iconUrl",id:e.id?e.id:"id",selected:e.selected?e.selected:"selected",style:e.style?e.style:"style",text:e.text?e.text:"text",value:e.value?e.value:"value",visible:e.visible?e.visible:"visible"};else this._currentFields={enabled:"enabled",icon:"icon",iconUrl:"iconUrl",id:"id",selected:"selected",style:"style",text:"text",value:"value",visible:"visible"};if(this._dataService)this._dataService.updateDataFields(this._currentFields)}_resetScrollItemList(){this._scrollItemList.length=0;this.update()}_updateScrollItemList(){this._resetScrollItemList();this._scrollItemList.length=0;this.update();let e=1;for(let t=this._currentIndex;tt.push(this.cloneItem(e)));return t}_getFilterTree(e){return e?this._filterService.createTree(e.conditions,e.formula):null}_getObjFromItem(e){return this._getObjFromList(e,this._currentList)}_getObjFromList(e,t){let i=t.filter(t=>e&&t.data===e);return i.length>0?i[0]:null}_getObjFromScrollItem(e){return this._getObjFromList(e,this._scrollItemList)}_getItemCurrentIndex(e){let t=this._getObjFromItem(e);return e&&t&&this._currentList?this._currentList.indexOf(t):-1}_getItemScrollIndex(e){return e&&this._scrollItemList?this._scrollItemList.indexOf(e):-1}_getItemElem(e){let t=this._getObjFromScrollItem(e);if(t){let e=this._getItemElemList(),i=this._getItemScrollIndex(t);if(i>=0&&i=0&&i0?this._scrollItemList[0].data:null}_isItemAllowed(e){if(!1===e[this._currentFields.visible])return!1;else return!0}_isItemEnabled(e){return!0}_isItemHovered(e){return!this._isDragActive&&!this._isScrollTimerActive&&e&&e===this._hoverItem?!0:!1}_isItemSelected(e){return e&&!0===e[this._currentFields.selected]?!0:!1}_gotFocus(e){this._keepActive=!0}_ctrlKeyDown(e){e.preventDefault();let t=this;t._keepActive=!1;switch(e.keyCode){case 9:t._keepActive=!0;if(e.shiftKey){t.selectedItem=t._getPrevItem();t._scrollList(IntegralUIMoveDirection.Up)}else{t.selectedItem=t._getNextItem();t._scrollList(IntegralUIMoveDirection.Down)}break;case 13:t._isKeyProcessed=!0;t._keepActive=!1;t._processSelection(e,t._currentSelection);break;case 27:t._isKeyProcessed=!0;t._keepActive=!1;t._invokeEvent("selectionChanged",{item:null});break;case 33:t._keepActive=!0;t.selectedItem=t._getPrevItem(!0);t._scrollList(IntegralUIMoveDirection.Up);break;case 34:t._keepActive=!0;t.selectedItem=t._getNextItem(!0);t._scrollList(IntegralUIMoveDirection.Down);break;case 35:t._keepActive=!0;t.selectedItem=t._dataItems[t._dataItems.length-1];t._scrollList(IntegralUIMoveDirection.Down);break;case 36:t._keepActive=!0;t.selectedItem=t._dataItems[0];t._scrollList(IntegralUIMoveDirection.Up);break;case 38:t._keepActive=!0;t.selectedItem=t._getPrevItem();t._scrollList(IntegralUIMoveDirection.Up);break;case 40:t._keepActive=!0;t.selectedItem=t._getNextItem();t._scrollList(IntegralUIMoveDirection.Down);break;default:this._defaultFunc()}t._isKeyProcessed=!1}_getCurrentSelectedIndex(){return this._dataItems.indexOf(this._currentSelection)}_getNextItem(){let e=this._getCurrentSelectedIndex();if(e<0&&this._dataItems.length>0)return this._dataItems[0];else return e>=0&&e0?this._dataItems[e-1]:this._dataItems[0]}isActive(){return this._keepActive}_lostFocus(e){this._keepActive=!1}_scrollList(e){let t=this,i=setTimeout(function(){t.scrollTo(t.selectedItem,e);clearTimeout(i)},1)}_getContentSize(){return{width:0,height:0}}_updateBlockSize(){this._blockSize={width:0,height:0}}_resetLayoutTimer(){if(this._updateTimer)clearTimeout(this._updateTimer);this._updateTimer=null}suspendLayout(){this._isUpdateAllowed=!1}resumeLayout(){this._isUpdateAllowed=!0;this.updateLayout()}async shouldUpdate(e){e.forEach((e,t)=>{});if(e.has("items"))await this.updateLayout();if(this._elemRef){this._clientRect={width:this._elemRef.clientWidth-2,height:this._elemRef.clientHeight-2};if(this._clientRect.width!==this._prevClientRect.width){this.updateLayout();this._prevClientRect.width=this._clientRect.width}else if(this._clientRect.height!==this._prevClientRect.height){this.updateLayout();this._prevClientRect.height=this._clientRect.height}}return!0}_updateCurrentLayout(e){}_updateItemElems(){this._itemElems=this.shadowRoot.querySelectorAll("li[data-item]");this._itemContentElems=this.shadowRoot.querySelectorAll("div[data-item-content]")}async updateLayout(){await this._processUpdateLayout();await this._processUpdateLayout();this.update()}_processUpdateLayout(){let e=this;return new Promise(t=>{if(e._isUpdateAllowed){e._resetLayoutTimer();e.updateTimer=setTimeout(function(){e._updateCurrentList();e._clientRect={width:e._elemRef.clientWidth,height:e._elemRef.clientHeight};e._updateScrollItemList();e.update();let i=setTimeout(function(){e._updateItemElems();e._updateBlockSize();e._avgItemHeight=0;let s=e._getItemElemList();if(s&&s.length>0){let t=0;for(let e=0;e0){let t=Math.min(e._currentList.length,e._currentMaxVisibleItems);e.size={height:t*e._avgItemHeight}}}e._updateScrollSize();e._updateVisibleRange();e._updateScrollItemList();e.refresh();e._invokeEvent("updateComplete");e._updateItemElems();clearTimeout(i);t()},1);clearTimeout(e.updateTimer)},1)}})}_updateScrollSize(){let e=this;e._contentSize={width:e._clientRect.width-2,height:e._clientRect.height-2};e._scrollSize={width:0,height:e._currentList.length<=e._currentMaxVisibleItems?0:e._avgItemHeight*e._currentList.length-e._clientRect.height+e._avgItemHeight};if(e.isVerScrollVisible()){e._contentSize.width-=18;if(e._scrollSize.width>0)e._scrollSize.width+=16}if(e.isHorScrollVisible())e._scrollSize.height+=16;e._scrollSize.width=e._scrollSize.width>0?e._scrollSize.width:0;e._scrollSize.height=e._scrollSize.height>0?e._scrollSize.height:0;e._maxScrollPos={x:e._scrollSize.width,y:e._scrollSize.height};if(e._currentScrollPos.x>e._maxScrollPos.x)e._changeHorizontalScrollPos(e._maxScrollPos.x);if(e._currentScrollPos.y>e._maxScrollPos.y)e._changeVerticalScrollPos(e._maxScrollPos.y);e._scrollBarSize={width:e.isVerScrollVisible()?e._clientRect.width-18:e._clientRect.width-4,height:e.isHorScrollVisible()?e._clientRect.height-18:e._clientRect.height-4};e._scrollLargeChange={x:e._scrollBarSize.width,y:e._scrollBarSize.height}}_updateVisibleRange(){this._visibleRange=1;let e=this._getItemElemList();if(e&&e.length>0){let t=0;for(let i=0;i0)this._visibleRange=Math.floor(this._clientRect.height/i)+1}}updateView(){this._currentIndex=this._avgItemHeight>0?Math.floor(this._currentScrollPos.y/this._avgItemHeight):0;if(this._currentIndex!==this._prevIndex){this._updateScrollItemList();this._updateBlockSize();this._prevIndex=this._currentIndex;this.update();this._updateItemElems()}else this.update()}_onCtrlMouseEnter(e){if(this._isEnabled)this.state|=IntegralUIObjectState.Hovered}_onCtrlMouseLeave(e){this.state&=~IntegralUIObjectState.Hovered;this.update();this._stopScrollTimer()}_itemMouseDown(e,t){if(this._isEnabled){this._isItemClicked=!0;if(this._isFocusAllowed&&1===e.buttons)this._currentFocusObj=t;this._processSelection(e,t.data)}e.stopPropagation()}_itemMouseEnter(e,t){if(this._isEnabled&&!this._isScrollActive){this._hoverItem=t.data;this._updateItemStyle(t);this.update();this._invokeEvent("itemHover",{item:t.data})}}_itemMouseLeave(e,t){if(this._isEnabled&&!this._isScrollActive){this._hoverItem=null;this._updateItemStyle(t);this.update()}}_itemMouseUp(e,t){if(this._isEnabled&&this._isItemClicked)this._updateSelection(e,t.data);this._isItemClicked=!1}_onScroll(e){if(e.target){e.target.scrollTop=0;e.target.scrollLeft=0}}scrollPos(e){if(e){this._currentScrollPos={x:Math.max(0,Math.min(e.x,this._maxScrollPos.x)),y:Math.max(0,Math.min(e.y,this._maxScrollPos.y))};this.updateView();this._invokeEvent("scrollPosChanged",{value:this._currentScrollPos})}return{x:Math.floor(this._currentScrollPos.x),y:Math.floor(this._currentScrollPos.y)}}_changeHorizontalScrollPos(e){this._currentScrollPos.x=Math.max(0,Math.min(e,this._maxScrollPos.x));if(this._currentScrollPos.x!==this._prevScrollPos.x){this._invokeEvent("scrollPosChanged",{value:this.scrollPos()});this._prevScrollPos.x=this._currentScrollPos.x;this.update()}}_changeVerticalScrollPos(e){this._currentScrollPos.y=Math.max(0,Math.min(e,this._maxScrollPos.y));if(this._currentScrollPos.y!==this._prevScrollPos.y){this.updateView();this._invokeEvent("scrollPosChanged",{value:this.scrollPos()});this._prevScrollPos.y=this._currentScrollPos.y}}_processMouseWheel(e,t){if(this._isEnabled){this._hoverItem=null;let i=Math.max(-1,Math.min(1,e.wheelDelta||-e.detail)),s=5;switch(this._mouseWheelSpeed){case IntegralUISpeedMode.VerySlow:s=15;break;case IntegralUISpeedMode.Slow:s=9;break;case IntegralUISpeedMode.Fast:s=3;break;case IntegralUISpeedMode.VeryFast:s=1;break;default:s=5}e.preventDefault();if(this.isVerScrollVisible()){let e=Math.floor(this._clientRect.height/s);if(this._mouseWheelSpeed===IntegralUISpeedMode.VerySlow&&this._avgItemHeight>0)e=this._avgItemHeight;let t=this._currentScrollPos.y+e*i*-1;if(i>0&&t<=this._avgItemHeight)t=0;this._changeVerticalScrollPos(t)}else if(t&&this.isHorScrollVisible()){let e=Math.floor(this._clientRect.width/s),t=this._currentScrollPos.x+e*i*-1;this._changeHorizontalScrollPos(t)}e.stopPropagation()}}isVerScrollVisible(){return this._isEnabled&&this._scrollVisibility.vertical&&this._scrollSize.height>0?!0:!1}isHorScrollVisible(){return this._isEnabled&&this._scrollVisibility.horizontal&&this._scrollSize.width>0?!0:!1}_onVerticalScrollStart(e){this._hoverItem=null;this._isScrollActive=!0}_onVerticalScrollEnd(e){this._isScrollActive=!1}_onVerticalScrollChanged(e){this._changeVerticalScrollPos(e.detail.value)}_onHorizontalScrollStart(e){this._hoverItem=null;this._isScrollActive=!0}_onHorizontalScrollEnd(e){this._isScrollActive=!1}_onHorizontalScrollChanged(e){this._currentScrollPos.x=e.detail.value;this._invokeEvent("scrollPosChanged",{value:this.scrollPos()});this.update()}_processScroll(e){if(this.isVerScrollVisible()){let t=this._commonService.getShiftPos(),i=this._commonService.getMousePos(e);i.x-=t.x;i.y-=t.y;let s=this._commonService.getPageRect(this._elemRef),l=s.top+25,r=s.bottom-25;if(this.isHorScrollVisible())r-=16;if(i.y0)this._startScrollTimer(!1);else if(i.y>r&&this._currentScrollPos.ythis._maxScrollPos.y)this._currentScrollPos.y=this._maxScrollPos.y;else this._currentScrollPos.y+=i;else if(this._currentScrollPos.y-i<0)this._currentScrollPos.y=0;else this._currentScrollPos.y-=i;if(t.y<=0||this._currentScrollPos.y=0)this.scrollPos({x:this._currentScrollPos.x,y:this._avgItemHeight*(t+1-Math.floor(this._visibleRange/2))});this.updateLayout()}}_callAfterSelectEvent(e){if(!this._keepActive){let t={item:e};this._invokeEvent("afterSelect",t);this._invokeEvent("selectionChanged",t)}}clearSelection(){this._clearPrevSelection();this._currentSelection=null;this.refresh()}_clearComponentSelection(){this._itemList.forEach(e=>e.state&=~IntegralUIObjectState.Selected)}_clearPrevSelection(e){for(let t=0;t0;if(!s._isItemEnabled(t)){s._clearPrevSelection();s.refresh();if(r&&!s._keepActive)s._invokeEvent("selectionChanged",{item:null})}else{let n=s._currentSelection,c=!0;if(n)c=s._isKeyProcessed||s._isCtrlKeyPressed(e)||!s._commonService.isEqual(n[s._currentFields.id],t[s._currentFields.id])||!1===n[s._currentFields.selected];let o={cancel:!1,item:t};s._invokeEvent("beforeSelect",o);l=!0===o.cancel?!1:!0;if(!0!==o.cancel){let l=e&&(e.shiftKey||e.ctrlKey||e.metaKey)?!0:!1;if(c){if(s.selectionMode===IntegralUISelectionMode.MultiExtended)c=!s._isItemInSelectionList(t)||!l||s._isShiftKeyPressed(e);if(c)if(s.selectionMode===IntegralUISelectionMode.One)s._clearPrevSelection();else if(e&&e.shiftKey)s._clearPrevSelection();else if(!l&&s.selectionMode!==IntegralUISelectionMode.MultiSimple&&(1===s._currentSelectedItems.length||!s._isItemInSelectionList(t)))s._clearPrevSelection();s._currentSelection=t;if(e&&e.shiftKey&&s.selectionMode!==IntegralUISelectionMode.One){if(!s._shiftFirstSelectedItem)s._shiftFirstSelectedItem=n;let e=s._getItemCurrentIndex(s._shiftFirstSelectedItem),i=s._getItemCurrentIndex(t);if(e>i){let t=e;e=i;i=t}if(s._commonService.isIndexInRange(e,s._currentList)&&s._commonService._isIndexInRange(i,s._currentList))for(let t=e;t<=i;t++)if(!1!==s._currentList[t].data[s._currentFields.canSelect]){s._currentList[t].data[s._currentFields.selected]=!0;s._currentSelectedItems.push(s._currentList[t].data)}}else if(l||s.selectionMode===IntegralUISelectionMode.MultiSimple){let e=null===t[s._currentFields.selected]||"undefined"===t[s._currentFields.selected]?!1:t[s._currentFields.selected];t[s._currentFields.selected]=!e;if(!t[s._currentFields.selected])s._currentSelectedItems=s._currentSelectedItems.filter(function(e){return e!==t});else if(!s._isItemInSelectionList(t))s._currentSelectedItems.push(t);s._shiftFirstSelectedItem=null}else{t[s._currentFields.selected]=!0;if(!s._isItemInSelectionList(t))s._currentSelectedItems.push(t);s._shiftFirstSelectedItem=null}s._callAfterSelectEvent(t);s.refresh()}else if(l||s.selectionMode===IntegralUISelectionMode.MultiSimple){let e=null===t[s._currentFields.selected]||"undefined"===t[s._currentFields.selected]?!1:t[s._currentFields.selected];if(i&&"undefined"!==i)e=i;t[s._currentFields.selected]=!e;if(!t[s._currentFields.selected])s._currentSelectedItems=s._currentSelectedItems.filter(function(e){return e!==t});else if(!s._isItemInSelectionList(t))s._currentSelectedItems.push(t);s._shiftFirstSelectedItem=null;s._callAfterSelectEvent(t);s.refresh()}else if(!l&&!(s.selectionMode&IntegralUISelectionMode.MultiSimple)&&(1===s._currentSelectedItems.length||!s._isItemInSelectionList(t))){s._shiftFirstSelectedItem=null;s._clearPrevSelection(t);s.refresh();if(c&&r&&!s._keepActive)s._invokeEvent("selectionChanged",{item:null})}}}}return l}selectItems(e){if(e&&Array.isArray(e)){this._currentSelectedItems.map(e=>e[this._currentFields.selected]=!1);this._currentSelectedItems.length=0;for(let t=0;t0){this._currentSelection=e[e.length-1];this._callAfterSelectEvent(this._currentSelection)}else this._currentSelection=null;this.refresh()}}_updateSelection(e,t){let i=e&&(e.shiftKey||e.ctrlKey||e.metaKey)?!0:!1;if(this.selectionMode===IntegralUISelectionMode.MultiExtended&&!1!==t[this._currentFields.canSelect]&&this._currentSelectedItems.length>0&&!e.shiftKey&&!i&&1===e.which){let e=this._currentSelectedItems.length;this._clearPrevSelection();t[this._currentFields.selected]=!0;this._currentSelectedItems.push(t);if(e>1)this._callAfterSelectEvent(t);this.refresh()}}_applySorting(e){let t=this;if(e)if(t._sortComparer)e.sort(t._sortComparer);else if(t._isSortingAllowed())e.sort(function(e,i){let s=null,l=null;if(!(s=e[t._currentFields.value]))s=e[t._currentFields.text];if(t._commonService.isObject(s))s=s.value?s.value:s.text;if(!(l=i[t._currentFields.value]))l=i[t._currentFields.text];if(t._commonService.isObject(l))l=l.value?l.value:l.text;s=void 0!==s?s:null;l=void 0!==l?l:null;switch(t._currentSorting){case IntegralUISortOrder.Ascending:if(sl)return 1;break;case IntegralUISortOrder.Descending:if(s>l)return-1;else if(st[e]=!0);return html` ${i.length>0?html``:html``} ${e.iconUrl?html`${e[this._currentFields.text]} `}_ctrlTouchStart(e){e.preventDefault();if(this._isEnabled){let t=this._commonService.getTouchData(e);if(t&&t.length>0)this._touchStartPos={x:t[0].pageX,y:t[0].pageY}}}_ctrlTouchEnd(e){let t=this;if(t._isEnabled){let i=t._commonService.getTouchData(e);if(i&&i.length>0)t._touchEndPos={x:i[0].pageX,y:i[0].pageY};let s={dx:t._touchEndPos.x-t._touchStartPos.x,dy:t._touchEndPos.y-t._touchStartPos.y},l=!1,r=!1,n=t._touchStartPos,c={x:t._currentScrollPos.x,y:t._currentScrollPos.y},o=setInterval(function(){let e=t._currentScrollPos;if(s.dx<-20){n.x-=30;if(n.x>t._touchEndPos.x)e.x+=30;else{e.x=c.x-s.dx;l=!0}}else if(s.dx>20){n.x+=30;if(n.xt._touchEndPos.y)e.y+=25;else{e.y=c.y-s.dy;r=!0}}else if(s.dy>20){n.y+=25;if(n.y{})}refresh(e){this._resetRefresh();this._updateControlClass();this._scrollItemList.map(e=>this._updateItemStyle(e));this.update();this._updateReferences()}_resetRefresh(){if(this._refreshTimer)clearTimeout(this._refreshTimer);this._refreshTimer=null}render(){return html`
    ${this._scrollItemList.map((e,t)=>html`
  • ${this._getItemTemplate(e.data)}
  • `)}
${this.isVerScrollVisible()?html``:html``} ${this.isHorScrollVisible()?html``:html``} ${this.isVerScrollVisible()&&this.isHorScrollVisible()?html`
`:html``}
`}_updateControlStyleSettings(e){this._currentControlStyleSettings=css``;this._currentControlStyleSettings.cssText=this._commonService.replaceAll(iuiListDefaultStyle.cssText,"../icons",e);this._currentItemStyleSettings=css``;this._currentItemStyleSettings.cssText=this._commonService.replaceAll(iuiListItemDefaultStyle.cssText,"../icons",e)}_updateReferences(){this._elemRef=this.shadowRoot.querySelector("div[data-ctrl=list]");this._contentElem=this.shadowRoot.querySelector("#content")}}window.customElements.define("iui-list",IntegralUIList);export default IntegralUIList; \ No newline at end of file diff --git a/components/integralui.menuitem.js b/components/integralui.menuitem.js new file mode 100644 index 0000000..8e35877 --- /dev/null +++ b/components/integralui.menuitem.js @@ -0,0 +1,15 @@ +/* + filename: integralui.menuitem.js + version : 21.4.0 + Copyright © 2016-2021 Lidor Systems. All rights reserved. + + This file is part of the "IntegralUI Web" Library. + + The contents of this file are subject to the IntegralUI Web License, and may not be used except in compliance with the License. + A copy of the License should have been installed in the product's root installation directory or it can be found at + http://www.lidorsystems.com/products/web/studio/license-agreement.aspx. + + This SOFTWARE is provided "AS IS", WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for the specific language + governing rights and limitations under the License. Any infringement will be prosecuted under applicable laws. +*/ +import{c as css,h as html}from"../external/lit-element.js";import{c as classMap}from"../external/class-map.js";import{s as styleMap}from"../external/style-map.js";import IntegralUIItem from"./integralui.item.js";import IntegralUIDataService from"../services/integralui.data.service.js";import{IntegralUIOrientation,IntegralUIObjectState,IntegralUITheme}from"./integralui.enums.js";import{iuiMenuItemDefaultStyle}from"../styles/integralui.menuitem.style.js";import{iuiMenuItemOfficeStyle}from"../themes/office/integralui.menuitem.office.js";import{iuiMenuItemMidnightStyle}from"../themes/midnight/integralui.menuitem.midnight.js";class IntegralUIMenuItem extends IntegralUIItem{_init(){super._init();this._dataService=new IntegralUIDataService();this._contentAnimation={display:"none",left:0,width:0,height:0};this._dataItems=[];this._childItems=[];this._currentLevel=0;this._currentOrientation=IntegralUIOrientation.Vertical;this._currentPause=300;this._currentIconUrl=null;this._expandState="none";this._isExpanded=!1;this._isItemHovered=!1;this._blockPos={top:0,left:0};this._popupOrder=999;this._blockDisplay="none";this._blockElemWidth="0";this._blockElemHeight="0";this._blockOverflow="hidden";this._blockOpacity=0;this._pauseTimer=null;this._parentOffset={left:0,top:0,width:0,height:0};this._currentTemplateRef=null;this._currentControlStyleSettings=iuiMenuItemDefaultStyle;this._updateData();this._initStyle()}_initClassNames(){this._parentClassName=this._parentCtrl&&this._parentCtrl._getClassName?this._parentCtrl._getClassName():"iui-menu";this._generalClassName=this.data&&!this.data.pid?this._parentClassName+"item-root":this._parentClassName+"item";this._blockClassName=this._parentClassName+"item-block";this._contentClassName=this._generalClassName+"-content";this._expandBoxClassName="iui-menu-marker-expand";this._expandBoxSpaceClassName=this._expandBoxClassName+"-space";this._separatorClassName=this._generalClassName+"-separator";this._isExpanded=this.data&&void 0!==this.data.expanded?this.data.expanded:!1;this._defaultStyle={general:{disabled:this._generalClassName+"-disabled",focused:this._generalClassName+"-focused",normal:this._generalClassName,hovered:this._generalClassName+"-hovered",selected:this._generalClassName+"-selected"},expandBox:{general:this._expandBoxClassName,animated:this._expandBoxClassName+"-load",expanded:this._expandBoxClassName+"-open",collapsed:this._expandBoxClassName+"-close"},content:{disabled:this._contentClassName+"-disabled",focused:this._contentClassName+"-focused",normal:this._contentClassName,hovered:this._contentClassName+"-hovered",selected:this._contentClassName+"-selected"},separator:this._separatorClassName}}_initStyle(){this._initClassNames();this.refresh()}connectedCallback(){}disconnectedCallback(){this._removePauseTimer()}setParent(e){this._parentCtrl=e;this._initClassNames()}attributeChangedCallback(e,t,s){super.attributeChangedCallback(e,t,s)}static get properties(){return{data:{type:Object},expanded:{type:Boolean,relect:!0},iconUrl:{type:String,relect:!0},items:{type:Array},level:{type:Number,reflect:!0},orientation:{converter:{fromAttribute:e=>"horizontal"===(e=e.replace(/"|'/,"").replace(/"|'/,"")).toLowerCase()?IntegralUIOrientation.Horizontal:IntegralUIOrientation.Vertical,toAttribute:(e,t)=>e===IntegralUIOrientation.Horizontal?"Horizontal":"Vertical"},reflect:!0},pause:{type:Number,reflect:!0},templateRef:{type:Object,attribute:"template-ref"}}}get data(){return this._ctrlData}set data(e){if(this._ctrlData!==e){const t=this._ctrlData;this._ctrlData=e;this._initStyle();this.requestUpdate("data",t)}}get expanded(){return this._isExpanded}set expanded(e){if(this._isExpanded!==e&&this._isEnabled){if(e)this._expandState="expand";else this._expandState="collapse";this._isExpanded=e;this._toggleContent()}}get iconUrl(){return this._currentIconUrl}set iconUrl(e){if(this._currentIconUrl!==e){const t=this._currentIconUrl;this._currentIconUrl=e;this.requestUpdate("iconUrl",t)}}get items(){return this._dataItems}set items(e){const t=this._dataItems;this._dataItems=e;this._updateData();this.requestUpdate("items",t)}get level(){return this._currentLevel}set level(e){if(this._currentLevel!==e){const t=this._currentLevel;this._currentLevel=e;this.requestUpdate("level",t)}}get orientation(){return this._currentOrientation}set orientation(e){if(this._currentOrientation!==e){const t=this._currentOrientation;this._currentOrientation=e;this.requestUpdate("orientation",t)}}get pause(){return this._currentPause}set pause(e){if(this._currentPause!==e){const t=this._currentPause;this._currentPause=e;this.requestUpdate("pause",t)}}get templateRef(){return this._currentTemplateRef}set templateRef(e){if(this._currentTemplateRef!==e){const t=this._currentTemplateRef;this._currentTemplateRef=e;this.requestUpdate("templateRef",t)}}_updateData(){this._dataService.init([{data:this.items}])}collapse(){this.expanded=!1}expand(){this.expanded=!0}toggle(){this.expanded=!this.expanded}_onExpandBoxMouseDown(e){if(this._isEnabled)this.toggle()}_getDataType(){return this.data&&this.data.type?this.data.type:"item"}_getItemLevel(){return void 0!==this._currentLevel?this._currentLevel+1:0}_getOffset(){return this._elemRef?{left:this._elemRef.offsetLeft,top:this._elemRef.offsetTop,width:this._elemRef.offsetWidth,height:this._elemRef.offsetHeight}:{left:0,top:0,width:0,height:0}}_isThereChildren(){return this._dataItems&&this._dataItems.length>0}_isBlockVisible(){return this._isItemHovered&&this._isThereChildren()}setOffset(e){this._parentOffset=e}updateLayout(){let e=this;e._updateReferences();let t=setTimeout(function(){if(e.data&&e._elemRef)if(e.data.pid||e._currentOrientation===IntegralUIOrientation.Vertical)e._blockPos={top:e._currentLevel>0?-2:-1,left:e._elemRef.offsetLeft+e._elemRef.offsetWidth-3};else e._blockPos={top:e._parentOffset.height-8,left:-1};e.refresh();clearTimeout(t)},1)}_onMouseEnter(e){if(this._isEnabled){this.state|=IntegralUIObjectState.Hovered;this._isItemHovered=!0;this.updateLayout();this.expand();this._invokeEvent("mouseEnter",e)}e.stopPropagation()}_onMouseDown(e){if(this._isEnabled)this._invokeEvent("mouseDown",e);e.stopPropagation()}_onMouseLeave(e){if(this._isEnabled){this.state&=~IntegralUIObjectState.Hovered;this._removePauseTimer();this._isItemHovered=!1;this.collapse();this._invokeEvent("mouseLeave",e)}e.stopPropagation()}_onMouseUp(e){if(this._isEnabled){if(1===e.which)this._parentCtrl.invokeCtrlMethod("MENU_CLICK",{event:e,cmp:this,item:this.data});this._invokeEvent("mouseUp",e)}e.stopPropagation()}_onContextMenu(e){e.preventDefault();e.stopPropagation()}_onChildItemMouseDown(e){this.collapse()}_removePauseTimer(){if(this._pauseTimer)clearTimeout(this._pauseTimer)}_toggleContent(){let e=this;if(e._dataItems){let t=e._elemRef.offsetHeight/2*e._dataItems.length,s=0,i=0;if(e._isAnimationAllowed)if(e._isExpanded){e._removePauseTimer();e._pauseTimer=setTimeout(function(){if(e._pauseTimer){e._blockDisplay="block";let a=setInterval(function(){if(s0){s-=i=0===i?1:i+2;e._blockElemHeight=s+"px";e._blockOpacity=s/t;e.refresh()}else{e._blockDisplay="none";e._blockElemHeight="0";e._blockOpacity=0;e._expandState="none";e.refresh();clearInterval(a)}},25)}else if(e._isExpanded){e._removePauseTimer();e._pauseTimer=setTimeout(function(){if(e._pauseTimer){e._blockDisplay="block";e._blockElemHeight="auto";e._blockOverflow="visible";e._blockOpacity=1;e._expandState="none"}e.refresh();e._removePauseTimer()},300)}else{e._blockOverflow="hidden";e._blockDisplay="none";e._blockElemHeight="0";e._blockOpacity=0;e._expandState="none";e.refresh()}}}_getControlStyle(){let e={};if(this.data)e=this.data.style||{};e.display=this._getItemDisplay();return e}_getItemDisplay(){let e="block";if(this.data&&void 0!==this.data.pid)e=this._currentOrientation?this._currentOrientation===IntegralUIOrientation.Vertical?"block":"inline-block":"block";else e=this._currentOrientation?this._currentOrientation===IntegralUIOrientation.Vertical?"block":"inline-block":"inline-block";return e}_updateControlClass(){this._ctrlClass={};this._ctrlClass[this._generalClassName]=!0;if("separator"===this._getDataType())this._ctrlClass[this._getSeparatorClass()]=!0;else if(this._defaultStyle){this._ctrlClass[this._defaultStyle.general.normal]=!0;if(this.state&IntegralUIObjectState.Disabled)this._ctrlClass[this._defaultStyle.general.isabled]=!0;else if(this.state&IntegralUIObjectState.Focused)this._ctrlClass[this._defaultStyle.general.focused]=!0;else if(this.state&IntegralUIObjectState.Selected)this._ctrlClass[this._defaultStyle.general.selected]=!0;else if(this.state&IntegralUIObjectState.Hovered)this._ctrlClass[this._defaultStyle.general.hovered]=!0;if(this._isThereChildren()){let e=this._getExpandBoxClass();if(this.data&&this.data.pid)e+="-right";else if(this._currentOrientation===IntegralUIOrientation.Vertical)e+="-right";else e+="-down";this._ctrlClass[e]=!0;this._ctrlClass[this._getExpandBoxSpaceClass()]=!0}}}_getExpandBoxSpaceClass(){let e="";if(this._isThereChildren())e=this._expandBoxSpaceClassName;return e}_getSeparatorClass(){return this._defaultStyle?this._defaultStyle.separator:this._defaultStyle.separator}_getExpandBoxClass(){let e="";if(this._isThereChildren())e=this._defaultStyle.expandBox.general;return e}_updateThemeSettings(e){this._currentThemeSettings=css``;switch(e){case IntegralUITheme.Office:this._currentThemeSettings.cssText=this._commonService.replaceAll(iuiMenuItemOfficeStyle.cssText,"../icons",this._currentResourcePath);break;case IntegralUITheme.Midnight:this._currentThemeSettings.cssText=this._commonService.replaceAll(iuiMenuItemMidnightStyle.cssText,"../icons",this._currentResourcePath);break;default:this._currentThemeSettings.cssText=""}}_getItemTemplate(e){if(this._parentCtrl&&this._parentCtrl._getItemTemplate)return this._parentCtrl._getItemTemplate(e);else return html``}firstUpdated(e){this._updateReferences();this.updateLayout()}_getChildItemLayout(){if(this._isThereChildren())return html`
    ${this._dataItems.map(e=>html` `)}
`;else return html``}refresh(){this._updateStyle(this.controlStyle);this._updateControlClass();this._updateContentClass();this.update();this._updateReferences();this._refreshChildren()}_refreshChildren(){if(this._childItems)this._childItems.forEach(e=>e.refresh())}render(){return html`
  • ${"item"===this._getDataType()?html` ${this.templateRef} ${this._getChildItemLayout()}`:html``} ${"separator"===this._getDataType()?html`
    `:html``}
  • `}_updateControlStyleSettings(e){this._currentControlStyleSettings=css``;this._currentControlStyleSettings.cssText=this._commonService.replaceAll(iuiMenuItemDefaultStyle.cssText,"../icons",e)}_updateReferences(){this._elemRef=this.shadowRoot.querySelector("li[data-ctrl=menuitem]");this._blockElem=this.shadowRoot.querySelector("#block");if(this._blockElem){this._childItems=this._blockElem.querySelectorAll("iui-menuitem");if(this._childItems)this._childItems.forEach(e=>{e.setParent(this._parentCtrl);e.setOffset(this._getOffset())})}}}window.customElements.define("iui-menuitem",IntegralUIMenuItem);export default IntegralUIMenuItem; \ No newline at end of file diff --git a/components/integralui.numeric.js b/components/integralui.numeric.js index 426c7ea..c6e6ee1 100644 --- a/components/integralui.numeric.js +++ b/components/integralui.numeric.js @@ -1,6 +1,6 @@ /* filename: integralui.numeric.js - version : 21.1.0 + version : 21.4.0 Copyright © 2016-2021 Lidor Systems. All rights reserved. This file is part of the "IntegralUI Web" Library. @@ -12,4 +12,4 @@ This SOFTWARE is provided "AS IS", WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for the specific language governing rights and limitations under the License. Any infringement will be prosecuted under applicable laws. */ -import{c as css,h as html}from"../external/lit-element.js";import{c as classMap}from"../external/class-map.js";import{s as styleMap}from"../external/style-map.js";import{IntegralUIAlignment,IntegralUINumericDisplayMode,IntegralUISpeedMode,IntegralUITheme}from"./integralui.enums.js";import IntegralUIBaseValue from"./integralui.base.value.js";import{iuiNumericDefaultStyle}from"../styles/integralui.numeric.style.js";import{iuiNumericOfficeStyle}from"../themes/office/integralui.numeric.office.js";import{iuiNumericMidnightStyle}from"../themes/midnight/integralui.numeric.midnight.js";class IntegralUINumeric extends IntegralUIBaseValue{_init(){super._init();this._ctrlMaxValue=100;this._ctrlMinValue=0;this._currentStep=1;this._currentAccelerator=0;this._currentDecimals=0;this._currentValue=0;this._startValue=0;this._valueTimer=null;this._valueCount=0;this._isChangeActive=!1;this._stopTimer=!0;this._contentSize={width:0,height:0};this._ctrlValueWidth=0;this._currentButtonAlign=IntegralUIAlignment.Right;this._leftRightMarginTop=0;this._topBotomMarginLeft=0;this._currentDisplayMode=IntegralUINumericDisplayMode.InBound;this._currentMouseWheelSpeed=IntegralUISpeedMode.Normal;this._currentControlStyleSettings=iuiNumericDefaultStyle;this._generalClassName="iui-numeric";this._contentClassName=this._generalClassName+"-content";this._initStyle()}connectedCallback(){this._windowMouseUp=this._windowMouseUp.bind(this);window.addEventListener("mouseup",this._windowMouseUp)}disconnectedCallback(){window.removeEventListener("mouseup",this._windowMouseUp);if(this._valueTimer)clearInterval(this._valueTimer)}attributeChangedCallback(e,t,i){super.attributeChangedCallback(e,t,i)}static get properties(){return{accelerator:{type:Number,reflect:!0},decimals:{type:Number,reflect:!0},displayMode:{attribute:"display-mode",converter:{fromAttribute:e=>{switch((e=e.replace(/"|'/,"").replace(/"|'/,"")).toLowerCase()){case"leftright":return IntegralUINumericDisplayMode.LeftRight;case"updown":return IntegralUINumericDisplayMode.UpDown;default:return IntegralUINumericDisplayMode.InBound}},toAttribute:e=>{switch(e){case IntegralUINumericDisplayMode.LeftRight:return"LeftRight";case IntegralUINumericDisplayMode.UpDown:return"UpDown";default:return"InBound"}}},reflect:!0},max:{type:Number,reflect:!0},min:{type:Number,reflect:!0},mouseWheelSpeed:{attribute:"mousewheel-speed",converter:{fromAttribute:e=>{switch((e=e.replace(/"|'/,"").replace(/"|'/,"")).toLowerCase()){case"veryslow":return IntegralUISpeedMode.VerySlow;case"slow":return IntegralUISpeedMode.Slow;case"fast":return IntegralUISpeedMode.Fast;case"veryfast":return IntegralUISpeedMode.VeryFast;default:return IntegralUISpeedMode.Normal}},toAttribute:e=>{switch(e){case IntegralUISpeedMode.VerySlow:return"VerySlow";case IntegralUISpeedMode.Slow:return"Slow";case IntegralUISpeedMode.Fast:return"Fast";case IntegralUISpeedMode.VeryFast:return"VeryFast";default:return"Normal"}}},reflect:!0},step:{type:Number,reflect:!0}}}get accelerator(){return this._currentAccelerator}set accelerator(e){if(void 0!==e&&this._currentAccelerator!==e){const t=this._currentAccelerator;this._currentAccelerator=e;this.requestUpdate("accelerator",t)}}get buttonAlign(){return this._currentButtonAlign}set buttonAlign(e){if(void 0!==e&&this._currentButtonAlign!==e){const t=this._currentButtonAlign;this._currentButtonAlign=e;this.requestUpdate("buttonAlign",t)}}get decimals(){return this._currentDecimals}set decimals(e){if(void 0!==e&&this._currentDecimals!==e){const t=this._currentDecimals;this._currentDecimals=e;this.requestUpdate("accelerator",t)}}get displayMode(){return this._currentDisplayMode}set displayMode(e){if(void 0!==e&&this._currentDisplayMode!==e){const t=this._currentDisplayMode;this._currentDisplayMode=e;this.updateLayout();this.requestUpdate("displayMode",t)}}get max(){return this._ctrlMaxValue}set max(e){if(void 0!==e&&this._ctrlMaxValue!==e){const t=this._ctrlMaxValue;this._ctrlMaxValue=e;this.requestUpdate("max",t)}}get min(){return this._ctrlMinValue}set min(e){if(void 0!==e&&this._ctrlMinValue!==e){const t=this._ctrlMinValue;this._ctrlMinValue=e;this.requestUpdate("min",t)}}get mouseWheelSpeed(){return this._currentMouseWheelSpeed}set mouseWheelSpeed(e){if(void 0!==e&&this._currentMouseWheelSpeed!==e){const t=this._currentMouseWheelSpeed;this._currentMouseWheelSpeed=e;this.requestUpdate("mouseWheelSpeed",t)}}get step(){return this._currentStep}set step(e){if(void 0!==e&&this._currentStep!==e){const t=this._currentStep;this._currentStep=e;this.requestUpdate("step",t)}}get value(){return this._currentDecimals>0?parseFloat(this._currentValue):parseInt(this._currentValue)}set value(e){if(void 0!==e){e=this._currentDecimals>0?e:Math.floor(e);if((e=Math.max(this._ctrlMinValue,Math.min(this._ctrlMaxValue,e)))!==this._currentValue&&e>=this._ctrlMinValue&&e<=this._ctrlMaxValue){const t=this._currentValue;this._currentValue=this._currentDecimals>0?parseFloat(parseFloat(e).toFixed(this._currentDecimals)):e;this.update();this._invokeEvent("valueChanged",{value:this._currentValue});this.requestUpdate("value",t)}}}updateLayout(){let e=this;e.update();e._updateReferences();let t=setTimeout(function(){let i=e._commonService.getPadding(e._elemRef);e._clientRect={width:e._elemRef.clientWidth-(i.left+i.right),height:e._elemRef.clientHeight-(i.top+i.bottom)};e._contentSize={width:e._currentValue<100?Math.floor(e._clientRect.width*e._currentValue/100):e._clientRect.width,height:e._clientRect.height};let s=e._commonService.getBorderWidth(e._valueElem),r=e._commonService.getMargin(e._valueElem),l=e._commonService.getPadding(e._valueElem);switch(e._currentDisplayMode){case IntegralUINumericDisplayMode.LeftRight:if(e._leftrightButtonsElem){e._ctrlValueWidth=e._clientRect.width-(s.left+s.right+r.left+r.right+l.left+l.right+2*e._leftrightButtonsElem.offsetWidth);if(e._valueElem)e._leftRightMarginTop=(e._valueElem.offsetHeight-e._leftrightButtonsElem.offsetHeight)/2}break;case IntegralUINumericDisplayMode.UpDown:if(e._upDownButtonsChildElem&&e._valueElem)e._topBotomMarginLeft=(e._valueElem.offsetWidth-e._upDownButtonsChildElem.offsetWidth)/2;break;default:if(e._inboundButtonsElem)e._ctrlValueWidth=e._clientRect.width-(s.left+s.right+r.left+r.right+l.left+l.right+e._inboundButtonsElem.offsetWidth+1)}e.update();clearTimeout(t)},1)}_changeValueTimerElapsed(e){if(0===this._valueCount)this._valueCount=1;this._valueCount+=this._currentAccelerator*this._currentStep;this._stopTimer=!1;this._changeValue(e);if(this._stopTimer){clearInterval(this._valueTimer);this._isChangeActive=!1}}_changeValue(e){if(e)if(this.value+this._valueCount0)this.value-=this._valueCount;else{this._stopTimer=!0;this.value=this._ctrlMinValue}}decreaseValue(){this.value-=this._currentStep}increaseValue(){this.value+=this._currentStep}_inputChange(e){this.value=e.target.value;e.stopPropagation()}_startChange(e){let t=this;if(t._valueTimer)clearInterval(this._valueTimer);t._isChangeActive=!0;t._valueCount=0;t._startValue=this._currentValue;t._valueTimer=setInterval(function(){t._changeValueTimerElapsed(e)},100)}_stopChange(){if(this._valueTimer)clearInterval(this._valueTimer);this._isChangeActive=!1;this._startValue=this._currentValue}_ctrlMouseWheel(e){if(this._isEnabled){e.preventDefault();let t=Math.max(-1,Math.min(1,e.wheelDelta||-e.detail)),i=5;switch(this._currentMouseWheelSpeed){case IntegralUISpeedMode.VerySlow:i=1;break;case IntegralUISpeedMode.Slow:i=2;break;case IntegralUISpeedMode.Fast:i=10;break;case IntegralUISpeedMode.VeryFast:i=100;break;default:i=5}let s=this._currentStep*i;this.value+=s*t;e.stopPropagation()}}_onMouseDown(e,t){this._startChange(t)}_onMouseUp(e){this._stopChange()}_windowMouseUp(e){this._stopChange()}_updateThemeSettings(e){this._currentThemeSettings=css``;switch(e){case IntegralUITheme.Office:this._currentThemeSettings.cssText=this._commonService.replaceAll(iuiNumericOfficeStyle.cssText,"../icons",this._currentResourcePath);break;case IntegralUITheme.Midnight:this._currentThemeSettings.cssText=this._commonService.replaceAll(iuiNumericMidnightStyle.cssText,"../icons",this._currentResourcePath);break;default:this._currentThemeSettings.cssText=""}}firstUpdated(e){this._updateReferences();this.updateLayout()}render(){return html`
    ${this._currentDisplayMode===IntegralUINumericDisplayMode.InBound?html`
    `:html``} ${this._currentDisplayMode===IntegralUINumericDisplayMode.LeftRight?html`
    `:html``} ${this._currentDisplayMode===IntegralUINumericDisplayMode.UpDown?html`
    `:html``}
    `}_updateControlStyleSettings(e){this._currentControlStyleSettings=css``;this._currentControlStyleSettings.cssText=this._commonService.replaceAll(iuiNumericDefaultStyle.cssText,"../icons",e)}_updateReferences(){this._elemRef=this.shadowRoot.querySelector("div[data-ctrl=numeric]");this._valueElem=this.shadowRoot.querySelector("#ctrl-value");this._inboundButtonsElem=this.shadowRoot.querySelector("#inbound-buttons");this._leftrightButtonsElem=this.shadowRoot.querySelector("#leftright-buttons");this._upDownButtonsElem=this.shadowRoot.querySelector("#updown-buttons");this._upDownButtonsChildElem=this.shadowRoot.querySelector("#updown-buttons-child")}}window.customElements.define("iui-numeric",IntegralUINumeric);export default IntegralUINumeric; \ No newline at end of file +import{c as css,h as html}from"../external/lit-element.js";import{c as classMap}from"../external/class-map.js";import{s as styleMap}from"../external/style-map.js";import IntegralUIBaseValue from"./integralui.base.value.js";import{IntegralUIAlignment,IntegralUINumericDisplayMode,IntegralUISpeedMode,IntegralUITheme}from"./integralui.enums.js";import{iuiNumericDefaultStyle}from"../styles/integralui.numeric.style.js";import{iuiNumericOfficeStyle}from"../themes/office/integralui.numeric.office.js";import{iuiNumericMidnightStyle}from"../themes/midnight/integralui.numeric.midnight.js";class IntegralUINumeric extends IntegralUIBaseValue{_init(){super._init();this._ctrlMaxValue=100;this._ctrlMinValue=0;this._currentStep=1;this._currentAccelerator=0;this._currentDecimals=0;this._currentValue=0;this._startValue=0;this._valueTimer=null;this._valueCount=0;this._isChangeActive=!1;this._stopTimer=!0;this._contentSize={width:0,height:0};this._ctrlValueWidth=0;this._currentButtonAlign=IntegralUIAlignment.Right;this._leftRightMarginTop=0;this._topBotomMarginLeft=0;this._currentDisplayMode=IntegralUINumericDisplayMode.InBound;this._currentMouseWheelSpeed=IntegralUISpeedMode.Normal;this._currentControlStyleSettings=iuiNumericDefaultStyle;this._generalClassName="iui-numeric";this._contentClassName=this._generalClassName+"-content";this._initStyle()}connectedCallback(){this._windowMouseUp=this._windowMouseUp.bind(this);window.addEventListener("mouseup",this._windowMouseUp)}disconnectedCallback(){window.removeEventListener("mouseup",this._windowMouseUp);if(this._valueTimer)clearInterval(this._valueTimer)}attributeChangedCallback(e,t,i){super.attributeChangedCallback(e,t,i)}static get properties(){return{accelerator:{type:Number,reflect:!0},decimals:{type:Number,reflect:!0},displayMode:{attribute:"display-mode",converter:{fromAttribute:e=>{switch((e=e.replace(/"|'/,"").replace(/"|'/,"")).toLowerCase()){case"leftright":return IntegralUINumericDisplayMode.LeftRight;case"updown":return IntegralUINumericDisplayMode.UpDown;default:return IntegralUINumericDisplayMode.InBound}},toAttribute:e=>{switch(e){case IntegralUINumericDisplayMode.LeftRight:return"LeftRight";case IntegralUINumericDisplayMode.UpDown:return"UpDown";default:return"InBound"}}},reflect:!0},max:{type:Number,reflect:!0},min:{type:Number,reflect:!0},mouseWheelSpeed:{attribute:"mousewheel-speed",converter:{fromAttribute:e=>{switch((e=e.replace(/"|'/,"").replace(/"|'/,"")).toLowerCase()){case"veryslow":return IntegralUISpeedMode.VerySlow;case"slow":return IntegralUISpeedMode.Slow;case"fast":return IntegralUISpeedMode.Fast;case"veryfast":return IntegralUISpeedMode.VeryFast;default:return IntegralUISpeedMode.Normal}},toAttribute:e=>{switch(e){case IntegralUISpeedMode.VerySlow:return"VerySlow";case IntegralUISpeedMode.Slow:return"Slow";case IntegralUISpeedMode.Fast:return"Fast";case IntegralUISpeedMode.VeryFast:return"VeryFast";default:return"Normal"}}},reflect:!0},step:{type:Number,reflect:!0}}}get accelerator(){return this._currentAccelerator}set accelerator(e){if(void 0!==e&&this._currentAccelerator!==e){const t=this._currentAccelerator;this._currentAccelerator=e;this.requestUpdate("accelerator",t)}}get buttonAlign(){return this._currentButtonAlign}set buttonAlign(e){if(void 0!==e&&this._currentButtonAlign!==e){const t=this._currentButtonAlign;this._currentButtonAlign=e;this.requestUpdate("buttonAlign",t)}}get decimals(){return this._currentDecimals}set decimals(e){if(void 0!==e&&this._currentDecimals!==e){const t=this._currentDecimals;this._currentDecimals=e;this.requestUpdate("accelerator",t)}}get displayMode(){return this._currentDisplayMode}set displayMode(e){if(void 0!==e&&this._currentDisplayMode!==e){const t=this._currentDisplayMode;this._currentDisplayMode=e;this.updateLayout();this.requestUpdate("displayMode",t)}}get max(){return this._ctrlMaxValue}set max(e){if(void 0!==e&&this._ctrlMaxValue!==e){const t=this._ctrlMaxValue;this._ctrlMaxValue=e;this.requestUpdate("max",t)}}get min(){return this._ctrlMinValue}set min(e){if(void 0!==e&&this._ctrlMinValue!==e){const t=this._ctrlMinValue;this._ctrlMinValue=e;this.requestUpdate("min",t)}}get mouseWheelSpeed(){return this._currentMouseWheelSpeed}set mouseWheelSpeed(e){if(void 0!==e&&this._currentMouseWheelSpeed!==e){const t=this._currentMouseWheelSpeed;this._currentMouseWheelSpeed=e;this.requestUpdate("mouseWheelSpeed",t)}}get step(){return this._currentStep}set step(e){if(void 0!==e&&this._currentStep!==e){const t=this._currentStep;this._currentStep=e;this.requestUpdate("step",t)}}get value(){return this._currentDecimals>0?parseFloat(this._currentValue):parseInt(this._currentValue)}set value(e){if(void 0!==e){e=this._currentDecimals>0?e:Math.floor(e);if((e=Math.max(this._ctrlMinValue,Math.min(this._ctrlMaxValue,e)))!==this._currentValue&&e>=this._ctrlMinValue&&e<=this._ctrlMaxValue){const t=this._currentValue;this._currentValue=this._currentDecimals>0?parseFloat(parseFloat(e).toFixed(this._currentDecimals)):e;this.update();this._invokeEvent("valueChanged",{value:this._currentValue});this.requestUpdate("value",t)}}}updateLayout(){let e=this;e.update();e._updateReferences();let t=setTimeout(function(){let i=e._commonService.getPadding(e._elemRef);e._clientRect={width:e._elemRef.clientWidth-(i.left+i.right),height:e._elemRef.clientHeight-(i.top+i.bottom)};e._contentSize={width:e._currentValue<100?Math.floor(e._clientRect.width*e._currentValue/100):e._clientRect.width,height:e._clientRect.height};let s=e._commonService.getBorderWidth(e._valueElem),r=e._commonService.getMargin(e._valueElem),l=e._commonService.getPadding(e._valueElem);switch(e._currentDisplayMode){case IntegralUINumericDisplayMode.LeftRight:if(e._leftrightButtonsElem){e._ctrlValueWidth=e._clientRect.width-(s.left+s.right+r.left+r.right+l.left+l.right+2*e._leftrightButtonsElem.offsetWidth);if(e._valueElem)e._leftRightMarginTop=(e._valueElem.offsetHeight-e._leftrightButtonsElem.offsetHeight)/2}break;case IntegralUINumericDisplayMode.UpDown:if(e._upDownButtonsChildElem&&e._valueElem)e._topBotomMarginLeft=(e._valueElem.offsetWidth-e._upDownButtonsChildElem.offsetWidth)/2;break;default:if(e._inboundButtonsElem)e._ctrlValueWidth=e._clientRect.width-(s.left+s.right+r.left+r.right+l.left+l.right+e._inboundButtonsElem.offsetWidth+1)}e.update();clearTimeout(t)},1)}_changeValueTimerElapsed(e){if(0===this._valueCount)this._valueCount=1;this._valueCount+=this._currentAccelerator*this._currentStep;this._stopTimer=!1;this._changeValue(e);if(this._stopTimer){clearInterval(this._valueTimer);this._isChangeActive=!1}}_changeValue(e){if(e)if(this.value+this._valueCount0)this.value-=this._valueCount;else{this._stopTimer=!0;this.value=this._ctrlMinValue}}decreaseValue(){this.value-=this._currentStep}increaseValue(){this.value+=this._currentStep}_inputChange(e){this.value=e.target.value;e.stopPropagation()}_startChange(e){let t=this;if(t._valueTimer)clearInterval(this._valueTimer);t._isChangeActive=!0;t._valueCount=0;t._startValue=this._currentValue;t._valueTimer=setInterval(function(){t._changeValueTimerElapsed(e)},100)}_stopChange(){if(this._valueTimer)clearInterval(this._valueTimer);this._isChangeActive=!1;this._startValue=this._currentValue}_ctrlMouseWheel(e){if(this._isEnabled){e.preventDefault();let t=Math.max(-1,Math.min(1,e.wheelDelta||-e.detail)),i=5;switch(this._currentMouseWheelSpeed){case IntegralUISpeedMode.VerySlow:i=1;break;case IntegralUISpeedMode.Slow:i=2;break;case IntegralUISpeedMode.Fast:i=10;break;case IntegralUISpeedMode.VeryFast:i=100;break;default:i=5}let s=this._currentStep*i;this.value+=s*t;e.stopPropagation()}}_onMouseDown(e,t){this._startChange(t)}_onMouseUp(e){this._stopChange()}_windowMouseUp(e){this._stopChange()}_updateThemeSettings(e){this._currentThemeSettings=css``;switch(e){case IntegralUITheme.Office:this._currentThemeSettings.cssText=this._commonService.replaceAll(iuiNumericOfficeStyle.cssText,"../icons",this._currentResourcePath);break;case IntegralUITheme.Midnight:this._currentThemeSettings.cssText=this._commonService.replaceAll(iuiNumericMidnightStyle.cssText,"../icons",this._currentResourcePath);break;default:this._currentThemeSettings.cssText=""}}firstUpdated(e){this._updateReferences();this.updateLayout()}render(){return html`
    ${this._currentDisplayMode===IntegralUINumericDisplayMode.InBound?html`
    `:html``} ${this._currentDisplayMode===IntegralUINumericDisplayMode.LeftRight?html`
    `:html``} ${this._currentDisplayMode===IntegralUINumericDisplayMode.UpDown?html`
    `:html``}
    `}_updateControlStyleSettings(e){this._currentControlStyleSettings=css``;this._currentControlStyleSettings.cssText=this._commonService.replaceAll(iuiNumericDefaultStyle.cssText,"../icons",e)}_updateReferences(){this._elemRef=this.shadowRoot.querySelector("div[data-ctrl=numeric]");this._valueElem=this.shadowRoot.querySelector("#ctrl-value");this._inboundButtonsElem=this.shadowRoot.querySelector("#inbound-buttons");this._leftrightButtonsElem=this.shadowRoot.querySelector("#leftright-buttons");this._upDownButtonsElem=this.shadowRoot.querySelector("#updown-buttons");this._upDownButtonsChildElem=this.shadowRoot.querySelector("#updown-buttons-child")}}window.customElements.define("iui-numeric",IntegralUINumeric);export default IntegralUINumeric; \ No newline at end of file diff --git a/components/integralui.paginator.js b/components/integralui.paginator.js index 93ca73c..7bf368d 100644 --- a/components/integralui.paginator.js +++ b/components/integralui.paginator.js @@ -1,6 +1,6 @@ /* filename: integralui.paginator.js - version : 21.1.0 + version : 21.4.0 Copyright © 2016-2021 Lidor Systems. All rights reserved. This file is part of the "IntegralUI Web" Library. @@ -12,4 +12,4 @@ This SOFTWARE is provided "AS IS", WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for the specific language governing rights and limitations under the License. Any infringement will be prosecuted under applicable laws. */ -import{c as css,h as html}from"../external/lit-element.js";import{c as classMap}from"../external/class-map.js";import{s as styleMap}from"../external/style-map.js";import{IntegralUITheme}from"./integralui.enums.js";import IntegralUIBase from"./integralui.base.js";import{iuiPaginatorDefaultStyle}from"../styles/integralui.paginator.style.js";import{iuiPaginatorOfficeStyle}from"../themes/office/integralui.paginator.office.js";import{iuiPaginatorMidnightStyle}from"../themes/midnight/integralui.paginator.midnight.js";class IntegralUIPaginator extends IntegralUIBase{_init(){super._init();this._currentPageNumber=0;this._isEnabled=!0;this._maxPageNumber=9999999;this._minPageNumber=0;this._numPages="0";this._inputWidth=30;this._prevValue=0;this._currentControlStyleSettings=iuiPaginatorDefaultStyle;this._generalClassName="iui-paginator";this._initStyle();this._initStyle()}connectedCallback(){}disconnectedCallback(){}attributeChangedCallback(e,t,a){super.attributeChangedCallback(e,t,a)}static get properties(){return{currentPage:{type:Number,attribute:"current-page",reflect:!0},maxPages:{type:Number,attribute:"max-pages",reflect:!0}}}get currentPage(){return this._currentPageNumber}set currentPage(e){this._prevValue=this._currentPageNumber;if(this._currentPageNumber!==e){const t=this._currentPageNumber;this._currentPageNumber=e;this._updateCurrentPage();this.requestUpdate("currentPage",t)}}get maxPages(){return this._maxPageNumber}set maxPages(e){if(this._maxPageNumber!==e){const t=this._maxPageNumber;this._maxPageNumber=e;if(e>0)this._minPageNumber=1;this.update();this.requestUpdate("maxPages",t)}}_onInputChange(e){this.currentPage=e.target.value}_updateCurrentPage(){if(0===this._currentPageNumber)this._currentPageNumber=this._maxPageNumber>0?1:this._currentPageNumber;else this._currentPageNumber=Math.max(0,Math.min(this._currentPageNumber,this._maxPageNumber));if(this._currentPageNumber!==this._prevValue)this._invokeEvent("pageChanged",{value:this._currentPageNumber});this._prevValue=this._currentPageNumber;this.update()}_processUpdateLayout(){let e=this;return new Promise(t=>{e._inputWidth=e._inputLabelElem.offsetWidth+20;t()})}firstPage(){if(this._isEnabled&&this.currentPage!==this._minPageNumber)this.currentPage=this._minPageNumber}lastPage(){if(this._isEnabled&&this.currentPage!==this._maxPageNumber)this.currentPage=this._maxPageNumber}nextPage(){if(this._isEnabled&&this.currentPagethis._minPageNumber)this.currentPage--}_updateThemeSettings(e){this._currentThemeSettings=css``;switch(e){case IntegralUITheme.Office:this._currentThemeSettings.cssText=this._commonService.replaceAll(iuiPaginatorOfficeStyle.cssText,"../icons",this._currentResourcePath);break;case IntegralUITheme.Midnight:this._currentThemeSettings.cssText=this._commonService.replaceAll(iuiPaginatorMidnightStyle.cssText,"../icons",this._currentResourcePath);break;default:this._currentThemeSettings.cssText=""}}firstUpdated(e){this._updateReferences();let t=this,a=setTimeout(function(){t._updateCurrentPage();clearTimeout(a)},10);this.updateLayout()}render(){return html`
    / ${this._maxPageNumber}
    `}_updateControlStyleSettings(e){this._currentControlStyleSettings=css``;this._currentControlStyleSettings.cssText=this._commonService.replaceAll(iuiPaginatorDefaultStyle.cssText,"../icons",e)}async updateLayout(){await this._processUpdateLayout();this.update()}_updateReferences(){this._elemRef=this.shadowRoot.querySelector("div[data-ctrl=paginator]");this._inputLabelElem=this.shadowRoot.querySelector("#input-label")}}window.customElements.define("iui-paginator",IntegralUIPaginator);export default IntegralUIPaginator; \ No newline at end of file +import{c as css,h as html}from"../external/lit-element.js";import{c as classMap}from"../external/class-map.js";import{s as styleMap}from"../external/style-map.js";import IntegralUIBase from"./integralui.base.js";import{IntegralUITheme}from"./integralui.enums.js";import{iuiPaginatorDefaultStyle}from"../styles/integralui.paginator.style.js";import{iuiPaginatorOfficeStyle}from"../themes/office/integralui.paginator.office.js";import{iuiPaginatorMidnightStyle}from"../themes/midnight/integralui.paginator.midnight.js";class IntegralUIPaginator extends IntegralUIBase{_init(){super._init();this._currentPageNumber=0;this._isEnabled=!0;this._maxPageNumber=9999999;this._minPageNumber=0;this._numPages="0";this._inputWidth=30;this._prevValue=0;this._currentControlStyleSettings=iuiPaginatorDefaultStyle;this._generalClassName="iui-paginator";this._initStyle();this._initStyle()}connectedCallback(){}disconnectedCallback(){}attributeChangedCallback(e,t,a){super.attributeChangedCallback(e,t,a)}static get properties(){return{currentPage:{type:Number,attribute:"current-page",reflect:!0},maxPages:{type:Number,attribute:"max-pages",reflect:!0}}}get currentPage(){return this._currentPageNumber}set currentPage(e){this._prevValue=this._currentPageNumber;if(this._currentPageNumber!==e){const t=this._currentPageNumber;this._currentPageNumber=e;this._updateCurrentPage();this.requestUpdate("currentPage",t)}}get maxPages(){return this._maxPageNumber}set maxPages(e){if(this._maxPageNumber!==e){const t=this._maxPageNumber;this._maxPageNumber=e;if(e>0)this._minPageNumber=1;this.update();this.requestUpdate("maxPages",t)}}_onInputChange(e){this.currentPage=e.target.value}_updateCurrentPage(){if(0===this._currentPageNumber)this._currentPageNumber=this._maxPageNumber>0?1:this._currentPageNumber;else this._currentPageNumber=Math.max(0,Math.min(this._currentPageNumber,this._maxPageNumber));if(this._currentPageNumber!==this._prevValue)this._invokeEvent("pageChanged",{value:this._currentPageNumber});this._prevValue=this._currentPageNumber;this.update()}_processUpdateLayout(){let e=this;return new Promise(t=>{e._inputWidth=e._inputLabelElem.offsetWidth+20;t()})}firstPage(){if(this._isEnabled&&this.currentPage!==this._minPageNumber)this.currentPage=this._minPageNumber}lastPage(){if(this._isEnabled&&this.currentPage!==this._maxPageNumber)this.currentPage=this._maxPageNumber}nextPage(){if(this._isEnabled&&this.currentPagethis._minPageNumber)this.currentPage--}_updateThemeSettings(e){this._currentThemeSettings=css``;switch(e){case IntegralUITheme.Office:this._currentThemeSettings.cssText=this._commonService.replaceAll(iuiPaginatorOfficeStyle.cssText,"../icons",this._currentResourcePath);break;case IntegralUITheme.Midnight:this._currentThemeSettings.cssText=this._commonService.replaceAll(iuiPaginatorMidnightStyle.cssText,"../icons",this._currentResourcePath);break;default:this._currentThemeSettings.cssText=""}}firstUpdated(e){this._updateReferences();let t=this,a=setTimeout(function(){t._updateCurrentPage();clearTimeout(a)},10);this.updateLayout()}render(){return html`
    / ${this._maxPageNumber}
    `}_updateControlStyleSettings(e){this._currentControlStyleSettings=css``;this._currentControlStyleSettings.cssText=this._commonService.replaceAll(iuiPaginatorDefaultStyle.cssText,"../icons",e)}async updateLayout(){await this._processUpdateLayout();this.update()}_updateReferences(){this._elemRef=this.shadowRoot.querySelector("div[data-ctrl=paginator]");this._inputLabelElem=this.shadowRoot.querySelector("#input-label")}}window.customElements.define("iui-paginator",IntegralUIPaginator);export default IntegralUIPaginator; \ No newline at end of file diff --git a/components/integralui.progressbar.js b/components/integralui.progressbar.js index e72509f..875492a 100644 --- a/components/integralui.progressbar.js +++ b/components/integralui.progressbar.js @@ -1,6 +1,6 @@ /* filename: integralui.progressbar.js - version : 21.1.0 + version : 21.4.0 Copyright © 2016-2021 Lidor Systems. All rights reserved. This file is part of the "IntegralUI Web" Library. @@ -12,4 +12,4 @@ This SOFTWARE is provided "AS IS", WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for the specific language governing rights and limitations under the License. Any infringement will be prosecuted under applicable laws. */ -import{c as css,h as html}from"../external/lit-element.js";import{c as classMap}from"../external/class-map.js";import{s as styleMap}from"../external/style-map.js";import{IntegralUIOrientation,IntegralUITheme}from"./integralui.enums.js";import IntegralUIBaseValue from"./integralui.base.value.js";import{iuiProgressBarDefaultStyle}from"../styles/integralui.progressbar.style.js";import{iuiProgressBarOfficeStyle}from"../themes/office/integralui.progressbar.office.js";import{iuiProgressBarMidnightStyle}from"../themes/midnight/integralui.progressbar.midnight.js";class IntegralUIProgressBar extends IntegralUIBaseValue{_init(){super._init();this._currentValue=0;this._ctrlPadding={top:0,right:0,bottom:0,left:0};this._currentOrientation=IntegralUIOrientation.Horizontal;this._contentSize={width:0,height:0};this._fadingSize={width:0,height:0};this._currentControlStyleSettings=iuiProgressBarDefaultStyle;this._generalClassName="iui-progressbar";this._contentClassName=this._generalClassName+"-content";this._contentInterval=null;this._delayTimeout=null;this._fadingInterval=null;this._initStyle()}connectedCallback(){}disconnectedCallback(){this._removeContentInterval();this._removeDelayTimeout();this._removeFadingInterval()}attributeChangedCallback(t,e,i){super.attributeChangedCallback(t,e,i)}static get properties(){return{orientation:{converter:{fromAttribute:t=>"horizontal"===(t=t.replace(/"|'/,"").replace(/"|'/,"")).toLowerCase()?IntegralUIOrientation.Horizontal:IntegralUIOrientation.Vertical,toAttribute:(t,e)=>t===IntegralUIOrientation.Horizontal?"Horizontal":"Vertical"},reflect:!0}}}get orientation(){return this._currentOrientation}set orientation(t){if(this._currentOrientation!==t){const e=this._currentOrientation;this._currentOrientation=t;this.requestUpdate("orientation",e);this.updateLayout()}}_animateProgress(){let t=this,e=t._currentOrientation===IntegralUIOrientation.Horizontal?t._currentValue<100?Math.floor(t._clientRect.width*t._currentValue/100):t._clientRect.width:t._currentValue<100?Math.floor(t._clientRect.height*t._currentValue/100):t._clientRect.height;if(t.allowAnimation){t._removeContentInterval();t._contentInterval=setInterval(function(){if(t._currentOrientation===IntegralUIOrientation.Horizontal)if(t._contentSize.widthe){t._fadingSize.width-=3;t.update()}else{t._fadingSize.width=e;t.update();clearInterval(t._fadingInterval)}else if(t._fadingSize.height>e){t._fadingSize.height-=3;t.update()}else{t._fadingSize.height=e;t.update();clearInterval(t._fadingInterval)}},1);clearTimeout(t._delayTimeout)},500)}else{if(t._currentOrientation===IntegralUIOrientation.Horizontal)t._contentSize.width=e;else t._contentSize.height=e;t.update()}}_removeContentInterval(){if(this._contentInterval)clearInterval(this._contentInterval)}_removeDelayTimeout(){if(this._delayTimeout)clearTimeout(this._delayTimeout)}_removeFadingInterval(){if(this._fadingInterval)clearInterval(this._fadingInterval)}_processUpdateLayout(){let t=this;return new Promise(e=>{let i=setTimeout(function(){t._ctrlPadding=t._commonService.getPadding(t._elemRef);t._clientRect={width:t._elemRef.clientWidth-(t._ctrlPadding.left+t._ctrlPadding.right),height:t._elemRef.clientHeight-(t._ctrlPadding.top+t._ctrlPadding.bottom)};t._animateProgress();clearTimeout(i);e()},1)})}_getProgressStyle(){let t={"z-index":2};if(this._currentOrientation===IntegralUIOrientation.Horizontal)t.width=this._contentSize.width+"px";else{t.position="absolute";t.bottom="-1px";t.height=this._contentSize.height+"px"}return t}_getProgressFadingStyle(){let t={opacity:"0.25",position:"absolute","z-index":1};if(this._currentOrientation===IntegralUIOrientation.Horizontal){t.left=this._ctrlPadding.left+"px";t.top=this._ctrlPadding.top+"px";t.width=this._fadingSize.width+"px"}else{t.left=this._ctrlPadding.left+"px";t.bottom=this._ctrlPadding.bottom-1+"px";t.height=this._fadingSize.height+"px"}return t}_updateThemeSettings(t){this._currentThemeSettings=css``;switch(t){case IntegralUITheme.Office:this._currentThemeSettings.cssText=this._commonService.replaceAll(iuiProgressBarOfficeStyle.cssText,"../icons",this._currentResourcePath);break;case IntegralUITheme.Midnight:this._currentThemeSettings.cssText=this._commonService.replaceAll(iuiProgressBarMidnightStyle.cssText,"../icons",this._currentResourcePath);break;default:this._currentThemeSettings.cssText=""}}firstUpdated(t){this._updateReferences();this.updateLayout()}render(){return html`
    ${this.allowAnimation?html`
    `:html``}
    `}_updateControlStyleSettings(t){this._currentControlStyleSettings=css``;this._currentControlStyleSettings.cssText=this._commonService.replaceAll(iuiProgressBarDefaultStyle.cssText,"../icons",t)}_updateReferences(){this._elemRef=this.shadowRoot.querySelector("div[data-ctrl=progressbar]")}}window.customElements.define("iui-progressbar",IntegralUIProgressBar);export default IntegralUIProgressBar; \ No newline at end of file +import{c as css,h as html}from"../external/lit-element.js";import{c as classMap}from"../external/class-map.js";import{s as styleMap}from"../external/style-map.js";import IntegralUIBaseValue from"./integralui.base.value.js";import{IntegralUIOrientation,IntegralUITheme}from"./integralui.enums.js";import{iuiProgressBarDefaultStyle}from"../styles/integralui.progressbar.style.js";import{iuiProgressBarOfficeStyle}from"../themes/office/integralui.progressbar.office.js";import{iuiProgressBarMidnightStyle}from"../themes/midnight/integralui.progressbar.midnight.js";class IntegralUIProgressBar extends IntegralUIBaseValue{_init(){super._init();this._currentValue=0;this._ctrlPadding={top:0,right:0,bottom:0,left:0};this._currentOrientation=IntegralUIOrientation.Horizontal;this._contentSize={width:0,height:0};this._fadingSize={width:0,height:0};this._currentControlStyleSettings=iuiProgressBarDefaultStyle;this._generalClassName="iui-progressbar";this._contentClassName=this._generalClassName+"-content";this._contentInterval=null;this._delayTimeout=null;this._fadingInterval=null;this._initStyle()}connectedCallback(){}disconnectedCallback(){this._removeContentInterval();this._removeDelayTimeout();this._removeFadingInterval()}attributeChangedCallback(t,e,i){super.attributeChangedCallback(t,e,i)}static get properties(){return{orientation:{converter:{fromAttribute:t=>"horizontal"===(t=t.replace(/"|'/,"").replace(/"|'/,"")).toLowerCase()?IntegralUIOrientation.Horizontal:IntegralUIOrientation.Vertical,toAttribute:(t,e)=>t===IntegralUIOrientation.Horizontal?"Horizontal":"Vertical"},reflect:!0}}}get orientation(){return this._currentOrientation}set orientation(t){if(this._currentOrientation!==t){const e=this._currentOrientation;this._currentOrientation=t;this.requestUpdate("orientation",e);this.updateLayout()}}_animateProgress(){let t=this,e=t._currentOrientation===IntegralUIOrientation.Horizontal?t._currentValue<100?Math.floor(t._clientRect.width*t._currentValue/100):t._clientRect.width:t._currentValue<100?Math.floor(t._clientRect.height*t._currentValue/100):t._clientRect.height;if(t.allowAnimation){t._removeContentInterval();t._contentInterval=setInterval(function(){if(t._currentOrientation===IntegralUIOrientation.Horizontal)if(t._contentSize.widthe){t._fadingSize.width-=3;t.update()}else{t._fadingSize.width=e;t.update();clearInterval(t._fadingInterval)}else if(t._fadingSize.height>e){t._fadingSize.height-=3;t.update()}else{t._fadingSize.height=e;t.update();clearInterval(t._fadingInterval)}},1);clearTimeout(t._delayTimeout)},500)}else{if(t._currentOrientation===IntegralUIOrientation.Horizontal)t._contentSize.width=e;else t._contentSize.height=e;t.update()}}_removeContentInterval(){if(this._contentInterval)clearInterval(this._contentInterval)}_removeDelayTimeout(){if(this._delayTimeout)clearTimeout(this._delayTimeout)}_removeFadingInterval(){if(this._fadingInterval)clearInterval(this._fadingInterval)}_processUpdateLayout(){let t=this;return new Promise(e=>{let i=setTimeout(function(){t._ctrlPadding=t._commonService.getPadding(t._elemRef);t._clientRect={width:t._elemRef.clientWidth-(t._ctrlPadding.left+t._ctrlPadding.right),height:t._elemRef.clientHeight-(t._ctrlPadding.top+t._ctrlPadding.bottom)};t._animateProgress();clearTimeout(i);e()},1)})}_getProgressStyle(){let t={"z-index":2};if(this._currentOrientation===IntegralUIOrientation.Horizontal)t.width=this._contentSize.width+"px";else{t.position="absolute";t.bottom="-1px";t.height=this._contentSize.height+"px"}return t}_getProgressFadingStyle(){let t={opacity:"0.25",position:"absolute","z-index":1};if(this._currentOrientation===IntegralUIOrientation.Horizontal){t.left=this._ctrlPadding.left+"px";t.top=this._ctrlPadding.top+"px";t.width=this._fadingSize.width+"px"}else{t.left=this._ctrlPadding.left+"px";t.bottom=this._ctrlPadding.bottom-1+"px";t.height=this._fadingSize.height+"px"}return t}_updateThemeSettings(t){this._currentThemeSettings=css``;switch(t){case IntegralUITheme.Office:this._currentThemeSettings.cssText=this._commonService.replaceAll(iuiProgressBarOfficeStyle.cssText,"../icons",this._currentResourcePath);break;case IntegralUITheme.Midnight:this._currentThemeSettings.cssText=this._commonService.replaceAll(iuiProgressBarMidnightStyle.cssText,"../icons",this._currentResourcePath);break;default:this._currentThemeSettings.cssText=""}}firstUpdated(t){this._updateReferences();this.updateLayout()}render(){return html`
    ${this.allowAnimation?html`
    `:html``}
    `}_updateControlStyleSettings(t){this._currentControlStyleSettings=css``;this._currentControlStyleSettings.cssText=this._commonService.replaceAll(iuiProgressBarDefaultStyle.cssText,"../icons",t)}_updateReferences(){this._elemRef=this.shadowRoot.querySelector("div[data-ctrl=progressbar]")}}window.customElements.define("iui-progressbar",IntegralUIProgressBar);export default IntegralUIProgressBar; \ No newline at end of file diff --git a/components/integralui.radiobutton.js b/components/integralui.radiobutton.js index a3396c2..8b6b8c7 100644 --- a/components/integralui.radiobutton.js +++ b/components/integralui.radiobutton.js @@ -1,6 +1,6 @@ /* filename: integralui.radiobutton.js - version : 21.1.0 + version : 21.4.0 Copyright © 2016-2021 Lidor Systems. All rights reserved. This file is part of the "IntegralUI Web" Library. @@ -12,4 +12,4 @@ This SOFTWARE is provided "AS IS", WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for the specific language governing rights and limitations under the License. Any infringement will be prosecuted under applicable laws. */ -import{c as css,h as html}from"../external/lit-element.js";import{c as classMap}from"../external/class-map.js";import{s as styleMap}from"../external/style-map.js";import{IntegralUIObjectState,IntegralUITheme}from"./integralui.enums.js";import IntegralUIBaseValue from"./integralui.base.value.js";import{iuiRadioButtonDefaultStyle}from"../styles/integralui.radiobutton.style.js";import{iuiRadioButtonOfficeStyle}from"../themes/office/integralui.radiobutton.office.js";import{iuiRadioButtonMidnightStyle}from"../themes/midnight/integralui.radiobutton.midnight.js";class IntegralUIRadioButton extends IntegralUIBaseValue{constructor(){super();this._parentCtrl=null;this._checkedValue=!1;this._buttonClass={};this._generalClassName="iui-radio-button";this._buttonClassName=this._generalClassName+"-btn";this._contentClassName=this._generalClassName+"-content";this._currentControlStyleSettings=iuiRadioButtonDefaultStyle;this._initStyle()}_init(){super._init();this._initStyle()}_initStyle(){this._defaultStyle={general:{disabled:this._generalClassName+"-disabled",focused:this._generalClassName+"-focused",normal:this._generalClassName,hovered:this._generalClassName+"-hovered",selected:this._generalClassName+"-selected"},button:{general:this._buttonClassName,disabled:this._buttonClassName+"-disabled",checked:this._buttonClassName+"-checked",unchecked:this._buttonClassName+"-unchecked"},content:{disabled:this._contentClassName+"-disabled",focused:this._contentClassName+"-focused",normal:this._contentClassName,hovered:this._contentClassName+"-hovered",selected:this._contentClassName+"-selected"}};this.refresh()}connectedCallback(){}disconnectedCallback(){}setParent(e){this._parentCtrl=e}attributeChangedCallback(e,t,s){super.attributeChangedCallback(e,t,s)}static get properties(){return{checked:{type:Boolean,reflect:!0}}}get checked(){return this._checkedValue}set checked(e){if(this._checkedValue!==e){const t=this._checkedValue;this._checkedValue=e;if(this._checkedValue)this.state|=IntegralUIObjectState.Selected;else this.state&=~IntegralUIObjectState.Selected;this.refresh();this._invokeEvent("checkedChanged",{checked:this._checkedValue});this.requestUpdate("checked",t)}}_ctrlMouseDown(e){if(this._isEnabled&&1===e.which)if(this._parentCtrl)this._parentCtrl.invokeCtrlMethod("CHECKED",this);else this.checked=void 0!==this.checked?!this.checked:!0}refresh(){this._updateStyle(this.controlStyle);this._updateControlClass();this._updateButtonClass();this._updateContentClass();this.update();this._updateReferences()}_updateButtonClass(){this._buttonClass={};this._buttonClass[this._buttonClassName]=!0;if(this._options.currentStyle){this._buttonClass[this._options.currentStyle.button.general]=!0;this._buttonClass[this.checked?this._options.currentStyle.button.checked:this._options.currentStyle.button.unchecked]=!0;if(this.state&IntegralUIObjectState.Disabled)this._buttonClass[this._options.currentStyle.button.disabled]=!0}}_getButtonClass(){return this._buttonClass}_getButtonStyle(e){if(this._commonService.isString(e))return e;else if(e)return{general:this._commonService.isFieldAvailable(e.general,this._buttonClassName),disabled:this._commonService.isFieldAvailable(e.disabled,this._buttonClassName+"-disabled"),checked:this._commonService.isFieldAvailable(e.checked,this._buttonClassName+"-checked"),unchecked:this._commonService.isFieldAvailable(e.unchecked,this._buttonClassName+"-unchecked")};else return{general:this._defaultStyle.button.general,disabled:this._defaultStyle.button.disabled,checked:this._defaultStyle.button.checked,unchecked:this._defaultStyle.button.unchecked}}_updateStyle(e){if(e)this._options.currentStyle={general:this._getGeneralStyle(e.general),button:this._getButtonStyle(e.button),content:this._getContentStyle(e.button)};else this._options.currentStyle={general:{disabled:this._defaultStyle.general.disabled,focused:this._defaultStyle.general.focused,hovered:this._defaultStyle.general.hovered,normal:this._defaultStyle.general.normal,selected:this._defaultStyle.general.selected},button:{general:this._defaultStyle.button.general,disabled:this._defaultStyle.button.disabled,checked:this._defaultStyle.button.checked,unchecked:this._defaultStyle.button.unchecked},content:{disabled:this._defaultStyle.content.disabled,focused:this._defaultStyle.content.focused,hovered:this._defaultStyle.content.hovered,normal:this._defaultStyle.content.normal,selected:this._defaultStyle.content.selected}}}_updateThemeSettings(e){this._currentThemeSettings=css``;switch(e){case IntegralUITheme.Office:this._currentThemeSettings.cssText=this._commonService.replaceAll(iuiRadioButtonOfficeStyle.cssText,"../icons",this._currentResourcePath);break;case IntegralUITheme.Midnight:this._currentThemeSettings.cssText=this._commonService.replaceAll(iuiRadioButtonMidnightStyle.cssText,"../icons",this._currentResourcePath);break;default:this._currentThemeSettings.cssText=""}}firstUpdated(e){this._updateReferences();this.updateLayout()}render(){return html`
    `}_updateControlStyleSettings(e){this._currentControlStyleSettings=css``;this._currentControlStyleSettings.cssText=this._commonService.replaceAll(iuiRadioButtonDefaultStyle.cssText,"../icons",e)}_updateReferences(){this._elemRef=this.shadowRoot.querySelector("div[data-ctrl=radiobutton]")}}window.customElements.define("iui-radiobutton",IntegralUIRadioButton);export default IntegralUIRadioButton; \ No newline at end of file +import{c as css,h as html}from"../external/lit-element.js";import{c as classMap}from"../external/class-map.js";import{s as styleMap}from"../external/style-map.js";import IntegralUIBaseValue from"./integralui.base.value.js";import{IntegralUIObjectState,IntegralUITheme}from"./integralui.enums.js";import{iuiRadioButtonDefaultStyle}from"../styles/integralui.radiobutton.style.js";import{iuiRadioButtonOfficeStyle}from"../themes/office/integralui.radiobutton.office.js";import{iuiRadioButtonMidnightStyle}from"../themes/midnight/integralui.radiobutton.midnight.js";class IntegralUIRadioButton extends IntegralUIBaseValue{constructor(){super();this._parentCtrl=null;this._checkedValue=!1;this._buttonClass={};this._generalClassName="iui-radio-button";this._buttonClassName=this._generalClassName+"-btn";this._contentClassName=this._generalClassName+"-content";this._currentControlStyleSettings=iuiRadioButtonDefaultStyle;this._initStyle()}_init(){super._init();this._initStyle()}_initStyle(){this._defaultStyle={general:{disabled:this._generalClassName+"-disabled",focused:this._generalClassName+"-focused",normal:this._generalClassName,hovered:this._generalClassName+"-hovered",selected:this._generalClassName+"-selected"},button:{general:this._buttonClassName,disabled:this._buttonClassName+"-disabled",checked:this._buttonClassName+"-checked",unchecked:this._buttonClassName+"-unchecked"},content:{disabled:this._contentClassName+"-disabled",focused:this._contentClassName+"-focused",normal:this._contentClassName,hovered:this._contentClassName+"-hovered",selected:this._contentClassName+"-selected"}};this.refresh()}connectedCallback(){}disconnectedCallback(){}setParent(e){this._parentCtrl=e}attributeChangedCallback(e,t,s){super.attributeChangedCallback(e,t,s)}static get properties(){return{checked:{type:Boolean,reflect:!0}}}get checked(){return this._checkedValue}set checked(e){if(this._checkedValue!==e){const t=this._checkedValue;this._checkedValue=e;if(this._checkedValue)this.state|=IntegralUIObjectState.Selected;else this.state&=~IntegralUIObjectState.Selected;this.refresh();this._invokeEvent("checkedChanged",{checked:this._checkedValue});this.requestUpdate("checked",t)}}_ctrlMouseDown(e){if(this._isEnabled&&1===e.which)if(this._parentCtrl)this._parentCtrl.invokeCtrlMethod("CHECKED",this);else this.checked=void 0!==this.checked?!this.checked:!0}refresh(){this._updateStyle(this.controlStyle);this._updateControlClass();this._updateButtonClass();this._updateContentClass();this.update();this._updateReferences()}_updateButtonClass(){this._buttonClass={};this._buttonClass[this._buttonClassName]=!0;if(this._options.currentStyle){this._buttonClass[this._options.currentStyle.button.general]=!0;this._buttonClass[this.checked?this._options.currentStyle.button.checked:this._options.currentStyle.button.unchecked]=!0;if(this.state&IntegralUIObjectState.Disabled)this._buttonClass[this._options.currentStyle.button.disabled]=!0}}_getButtonClass(){return this._buttonClass}_getButtonStyle(e){if(this._commonService.isString(e))return e;else if(e)return{general:this._commonService.isFieldAvailable(e.general,this._buttonClassName),disabled:this._commonService.isFieldAvailable(e.disabled,this._buttonClassName+"-disabled"),checked:this._commonService.isFieldAvailable(e.checked,this._buttonClassName+"-checked"),unchecked:this._commonService.isFieldAvailable(e.unchecked,this._buttonClassName+"-unchecked")};else return{general:this._defaultStyle.button.general,disabled:this._defaultStyle.button.disabled,checked:this._defaultStyle.button.checked,unchecked:this._defaultStyle.button.unchecked}}_updateStyle(e){if(e)this._options.currentStyle={general:this._getGeneralStyle(e.general),button:this._getButtonStyle(e.button),content:this._getContentStyle(e.button)};else this._options.currentStyle={general:{disabled:this._defaultStyle.general.disabled,focused:this._defaultStyle.general.focused,hovered:this._defaultStyle.general.hovered,normal:this._defaultStyle.general.normal,selected:this._defaultStyle.general.selected},button:{general:this._defaultStyle.button.general,disabled:this._defaultStyle.button.disabled,checked:this._defaultStyle.button.checked,unchecked:this._defaultStyle.button.unchecked},content:{disabled:this._defaultStyle.content.disabled,focused:this._defaultStyle.content.focused,hovered:this._defaultStyle.content.hovered,normal:this._defaultStyle.content.normal,selected:this._defaultStyle.content.selected}}}_updateThemeSettings(e){this._currentThemeSettings=css``;switch(e){case IntegralUITheme.Office:this._currentThemeSettings.cssText=this._commonService.replaceAll(iuiRadioButtonOfficeStyle.cssText,"../icons",this._currentResourcePath);break;case IntegralUITheme.Midnight:this._currentThemeSettings.cssText=this._commonService.replaceAll(iuiRadioButtonMidnightStyle.cssText,"../icons",this._currentResourcePath);break;default:this._currentThemeSettings.cssText=""}}firstUpdated(e){this._updateReferences();this.updateLayout()}render(){return html`
    `}_updateControlStyleSettings(e){this._currentControlStyleSettings=css``;this._currentControlStyleSettings.cssText=this._commonService.replaceAll(iuiRadioButtonDefaultStyle.cssText,"../icons",e)}_updateReferences(){this._elemRef=this.shadowRoot.querySelector("div[data-ctrl=radiobutton]")}}window.customElements.define("iui-radiobutton",IntegralUIRadioButton);export default IntegralUIRadioButton; \ No newline at end of file diff --git a/components/integralui.radiogroup.js b/components/integralui.radiogroup.js index eafcd21..59f75ea 100644 --- a/components/integralui.radiogroup.js +++ b/components/integralui.radiogroup.js @@ -1,6 +1,6 @@ /* filename: integralui.radiogroup.js - version : 21.1.0 + version : 21.4.0 Copyright © 2016-2021 Lidor Systems. All rights reserved. This file is part of the "IntegralUI Web" Library. diff --git a/components/integralui.rating.js b/components/integralui.rating.js index 7180109..72ba7a3 100644 --- a/components/integralui.rating.js +++ b/components/integralui.rating.js @@ -1,6 +1,6 @@ /* filename: integralui.rating.js - version : 21.1.0 + version : 21.4.0 Copyright © 2016-2021 Lidor Systems. All rights reserved. This file is part of the "IntegralUI Web" Library. @@ -12,4 +12,4 @@ This SOFTWARE is provided "AS IS", WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for the specific language governing rights and limitations under the License. Any infringement will be prosecuted under applicable laws. */ -import{c as css,h as html}from"../external/lit-element.js";import{c as classMap}from"../external/class-map.js";import{s as styleMap}from"../external/style-map.js";import{IntegralUIIncrementMode,IntegralUIObjectState,IntegralUITheme}from"./integralui.enums.js";import IntegralUIBaseValue from"./integralui.base.value.js";import{iuiRatingDefaultStyle}from"../styles/integralui.rating.style.js";import{iuiRatingOfficeStyle}from"../themes/office/integralui.rating.office.js";import{iuiRatingMidnightStyle}from"../themes/midnight/integralui.rating.midnight.js";class IntegralUIRating extends IntegralUIBaseValue{_init(){super._init();this._ctrlMaxValue=5;this._currentDivision=1;this._currentStepSize=16;this._currentIncrement=IntegralUIIncrementMode.Free;this._currentValue=0;this._currentTabIndex=0;this._isRatingChangeActive=!1;this._contentSize={width:0,height:0};this._ratingSize={width:0,height:0};this._ratingClass=[];this._generalClassName="iui-rating";this._contentClassName=this._generalClassName+"-content";this._ratingClassName=this._generalClassName+"-value";this._currentControlStyleSettings=iuiRatingDefaultStyle}_initStyle(){this._defaultStyle={general:{disabled:this._generalClassName+"-disabled",focused:this._generalClassName+"-focused",normal:this._generalClassName,hovered:this._generalClassName+"-hovered",selected:this._generalClassName+"-selected"},content:{disabled:this._contentClassName+"-disabled",focused:this._contentClassName+"-focused",normal:this._contentClassName,hovered:this._contentClassName+"-hovered",selected:this._contentClassName+"-selected"},rating:{disabled:this._ratingClassName+"-disabled",focused:this._ratingClassName+"-focused",normal:this._ratingClassName,hovered:this._ratingClassName+"-hovered",selected:this._ratingClassName+"-selected"}};this.refresh()}connectedCallback(){this._windowMouseUp=this._windowMouseUp.bind(this);window.addEventListener("mouseup",this._windowMouseUp)}disconnectedCallback(){window.removeEventListener("mouseup",this._windowMouseUp)}attributeChangedCallback(e,t,i){super.attributeChangedCallback(e,t,i)}static get properties(){return{division:{type:Number,reflect:!0},increment:{converter:{fromAttribute:e=>{switch((e=e.replace(/"|'/,"").replace(/"|'/,"")).toLowerCase()){case"partial":return IntegralUIIncrementMode.Partial;case"full":return IntegralUIIncrementMode.Full;default:return IntegralUIIncrementMode.Free}},toAttribute:e=>{switch(e){case IntegralUIIncrementMode.Partial:return"Partial";case IntegralUIIncrementMode.Full:return"Full";default:return"Free"}}},reflect:!0},max:{type:Number,reflect:!0},stepSize:{type:Number,attribute:"step-size",reflect:!0}}}get division(){return this._currentDivision}set division(e){if(void 0!==e&&e>=1){let t=Math.floor(e);if(this._currentDivision!==t){const t=this._currentDivision;this._currentDivision=e;this.requestUpdate("division",t)}}}get increment(){return this._currentIncrement}set increment(e){if(void 0!==e&&this._currentIncrement!==e){const t=this._currentIncrement;this._currentIncrement=e;this.requestUpdate("increment",t)}}get max(){return this._ctrlMaxValue}set max(e){if(void 0!==e&&this._ctrlMaxValue!==e){const t=this._ctrlMaxValue;this._ctrlMaxValue=e;this.requestUpdate("max",t);this.updateLayout()}}get stepSize(){return this._currentStepSize}set stepSize(e){if(void 0!==e&&this._currentStepSize!==e){const t=this._currentStepSize;this._currentStepSize=e;this.requestUpdate("stepSize",t);this.updateLayout()}}get tabIndex(){return this._currentTabIndex}set tabIndex(e){if(void 0!==e&&this._currentTabIndex!==e){const t=this._currentTabIndex;this._currentTabIndex=e;this.requestUpdate("tabIndex",t);this.update()}}get value(){return this._currentValue}set value(e){if(void 0!==e){let t=Math.floor(e);switch(this._currentIncrement){case IntegralUIIncrementMode.Partial:if(this._currentDivision>1){let i=this._currentDivision/4,s=this._currentDivision/2,a=Math.floor(t/this._currentDivision);if(t>a*this._currentDivision+i)e=a*this._currentDivision+s;else if(t>a*this._currentDivision+3*i)e=(a+1)*this._currentDivision;else e=a*this._currentDivision}else if(e>t+.25)e=t+.5;else if(e>t+.75)e=t+1;else e=t;break;case IntegralUIIncrementMode.Full:if(this._currentDivision>1){let i=Math.floor(t/this._currentDivision)+1;e=Math.max(t,i*this._currentDivision)}else e=e>t+.5?t+1:t;break;default:this._defaultFunc()}if((e=Math.max(0,Math.min(this._ctrlMaxValue*this._currentDivision,e)))!==this.currentValue&&e<=this._ctrlMaxValue*this._currentDivision){const t=this._currentValue;this._currentValue=e;this._invokeEvent("valueChanged",{value:this._currentValue});this.requestUpdate("value",t);this.updateLayout()}}}_getContentWidth(){return this._contentSize.width}_getRatingWidth(){return this._ratingSize.width}_ctrlKeyDown(e){if(this._isEnabled&&!this._isReadOnly){let t={cancel:!1,value:this._currentValue,event:e};this._invokeEvent("keyDown",t);switch(e.keyCode){case 37:if(!t.cancel)this.value-=1;e.stopPropagation();break;case 39:if(!t.cancel)this.value+=1;e.stopPropagation();break;default:this._defaultFunc()}}}_processUpdateLayout(){let e=this;return new Promise(t=>{if(e._elemRef){let i=e._commonService.getPadding(e._elemRef);e._clientRect={width:e._elemRef.clientWidth-(i.left+i.right),height:e._elemRef.clientHeight-(i.top+i.bottom)};e._contentSize={width:e._ctrlMaxValue*e._currentStepSize,height:e._clientRect.height};e._ratingSize={width:e._currentValue0){let i=this._commonService.getPageRect(this._elemRef),s=this._commonService.getShiftPos();this.value=(t[0].pageX-i.left-s.x)*this._currentDivision/this._currentStepSize;this.updateLayout();e.stopPropagation()}}}_windowMouseUp(e){this._isRatingChangeActive=!1}refresh(){this._updateStyle(this.controlStyle);this._updateControlClass();this._updateContentClass();this._updateRatingClass();this.update();this._updateReferences()}_getControlStyle(){let e={width:this._getContentWidth()+"px"};if(this._ctrlSize.width>0)e.width=this._ctrlSize.width+"px";if(this._ctrlSize.height>0)e.height=this._ctrlSize.height+"px";return e}_getRatingValueClass(){return this._ratingClass}_updateRatingClass(){this._ratingClass={};this._ratingClass[this._ratingClassName]=!0;if(this._options.currentStyle){this._ratingClass[this._options.currentStyle.rating.normal]=!0;if(this.state&IntegralUIObjectState.Disabled)this._ratingClass[this._options.currentStyle.rating.disabled]=!0;else if(this.state&IntegralUIObjectState.focused)this._ratingClass[this._options.currentStyle.rating.focused]=!0;else if(this.state&IntegralUIObjectState.selected)this._ratingClass[this._options.currentStyle.rating.selected]=!0;else if(this.state&IntegralUIObjectState.hovered)this._ratingClass[this._options.currentStyle.rating.hovered]=!0}}_getRatingStyle(e){if(this._commonService.isString(e))return e;else if(e)return{disabled:this._commonService.isFieldAvailable(e.disabled,this._ratingClassName+"-disabled"),focused:this._commonService.isFieldAvailable(e.focused,this._ratingClassName+"-focused"),hovered:this._commonService.isFieldAvailable(e.hovered,this._ratingClassName+"-hovered"),normal:this._commonService.isFieldAvailable(e.normal,this._ratingClassName),selected:this._commonService.isFieldAvailable(e.selected,this._ratingClassName+"-selected")};else return{disabled:this._defaultStyle.rating.disabled,focused:this._defaultStyle.rating.focused,hovered:this._defaultStyle.rating.hovered,normal:this._defaultStyle.rating.normal,selected:this._defaultStyle.rating.selected}}_updateStyle(e){if(e)this._options.currentStyle={general:this._getGeneralStyle(e.general),content:this._getContentStyle(e.content),rating:this._getRatingStyle(e.rating)};else this._options.currentStyle={general:{disabled:this._defaultStyle.general.disabled,focused:this._defaultStyle.general.focused,hovered:this._defaultStyle.general.hovered,normal:this._defaultStyle.general.normal,selected:this._defaultStyle.general.selected},content:{disabled:this._defaultStyle.content.disabled,focused:this._defaultStyle.content.focused,hovered:this._defaultStyle.content.hovered,normal:this._defaultStyle.content.normal,selected:this._defaultStyle.content.selected},rating:{disabled:this._defaultStyle.rating.disabled,focused:this._defaultStyle.rating.focused,hovered:this._defaultStyle.rating.hovered,normal:this._defaultStyle.rating.normal,selected:this._defaultStyle.rating.selected}}}_updateThemeSettings(e){this._currentThemeSettings=css``;switch(e){case IntegralUITheme.Office:this._currentThemeSettings.cssText=this._commonService.replaceAll(iuiRatingOfficeStyle.cssText,"../icons",this._currentResourcePath);break;case IntegralUITheme.Midnight:this._currentThemeSettings.cssText=this._commonService.replaceAll(iuiRatingMidnightStyle.cssText,"../icons",this._currentResourcePath);break;default:this._currentThemeSettings.cssText=""}}firstUpdated(e){this._updateReferences();this.updateLayout()}render(){return html`
    `}_updateControlStyleSettings(e){this._currentControlStyleSettings=css``;this._currentControlStyleSettings.cssText=this._commonService.replaceAll(iuiRatingDefaultStyle.cssText,"../icons",e)}_updateReferences(){this._elemRef=this.shadowRoot.querySelector("div[data-ctrl=rating]")}}window.customElements.define("iui-rating",IntegralUIRating);export default IntegralUIRating; \ No newline at end of file +import{c as css,h as html}from"../external/lit-element.js";import{c as classMap}from"../external/class-map.js";import{s as styleMap}from"../external/style-map.js";import IntegralUIBaseValue from"./integralui.base.value.js";import{IntegralUIIncrementMode,IntegralUIObjectState,IntegralUITheme}from"./integralui.enums.js";import{iuiRatingDefaultStyle}from"../styles/integralui.rating.style.js";import{iuiRatingOfficeStyle}from"../themes/office/integralui.rating.office.js";import{iuiRatingMidnightStyle}from"../themes/midnight/integralui.rating.midnight.js";class IntegralUIRating extends IntegralUIBaseValue{_init(){super._init();this._ctrlMaxValue=5;this._currentDivision=1;this._currentStepSize=16;this._currentIncrement=IntegralUIIncrementMode.Free;this._currentValue=0;this._currentTabIndex=0;this._isRatingChangeActive=!1;this._contentSize={width:0,height:0};this._ratingSize={width:0,height:0};this._ratingClass=[];this._generalClassName="iui-rating";this._contentClassName=this._generalClassName+"-content";this._ratingClassName=this._generalClassName+"-value";this._currentControlStyleSettings=iuiRatingDefaultStyle}_initStyle(){this._defaultStyle={general:{disabled:this._generalClassName+"-disabled",focused:this._generalClassName+"-focused",normal:this._generalClassName,hovered:this._generalClassName+"-hovered",selected:this._generalClassName+"-selected"},content:{disabled:this._contentClassName+"-disabled",focused:this._contentClassName+"-focused",normal:this._contentClassName,hovered:this._contentClassName+"-hovered",selected:this._contentClassName+"-selected"},rating:{disabled:this._ratingClassName+"-disabled",focused:this._ratingClassName+"-focused",normal:this._ratingClassName,hovered:this._ratingClassName+"-hovered",selected:this._ratingClassName+"-selected"}};this.refresh()}connectedCallback(){this._windowMouseUp=this._windowMouseUp.bind(this);window.addEventListener("mouseup",this._windowMouseUp)}disconnectedCallback(){window.removeEventListener("mouseup",this._windowMouseUp)}attributeChangedCallback(e,t,i){super.attributeChangedCallback(e,t,i)}static get properties(){return{division:{type:Number,reflect:!0},increment:{converter:{fromAttribute:e=>{switch((e=e.replace(/"|'/,"").replace(/"|'/,"")).toLowerCase()){case"partial":return IntegralUIIncrementMode.Partial;case"full":return IntegralUIIncrementMode.Full;default:return IntegralUIIncrementMode.Free}},toAttribute:e=>{switch(e){case IntegralUIIncrementMode.Partial:return"Partial";case IntegralUIIncrementMode.Full:return"Full";default:return"Free"}}},reflect:!0},max:{type:Number,reflect:!0},stepSize:{type:Number,attribute:"step-size",reflect:!0},tabIndex:{type:Number,attribute:"tab-index",reflect:!0}}}get division(){return this._currentDivision}set division(e){if(void 0!==e&&e>=1){let t=Math.floor(e);if(this._currentDivision!==t){const t=this._currentDivision;this._currentDivision=e;this.requestUpdate("division",t)}}}get increment(){return this._currentIncrement}set increment(e){if(void 0!==e&&this._currentIncrement!==e){const t=this._currentIncrement;this._currentIncrement=e;this.requestUpdate("increment",t)}}get max(){return this._ctrlMaxValue}set max(e){if(void 0!==e&&this._ctrlMaxValue!==e){const t=this._ctrlMaxValue;this._ctrlMaxValue=e;this.requestUpdate("max",t);this.updateLayout()}}get stepSize(){return this._currentStepSize}set stepSize(e){if(void 0!==e&&this._currentStepSize!==e){const t=this._currentStepSize;this._currentStepSize=e;this.requestUpdate("stepSize",t);this.updateLayout()}}get tabIndex(){return this._currentTabIndex}set tabIndex(e){if(void 0!==e&&this._currentTabIndex!==e){const t=this._currentTabIndex;this._currentTabIndex=e;this.requestUpdate("tabIndex",t);this.update()}}get value(){return this._currentValue}set value(e){if(void 0!==e){let t=Math.floor(e);switch(this._currentIncrement){case IntegralUIIncrementMode.Partial:if(this._currentDivision>1){let i=this._currentDivision/4,s=this._currentDivision/2,a=Math.floor(t/this._currentDivision);if(t>a*this._currentDivision+i)e=a*this._currentDivision+s;else if(t>a*this._currentDivision+3*i)e=(a+1)*this._currentDivision;else e=a*this._currentDivision}else if(e>t+.25)e=t+.5;else if(e>t+.75)e=t+1;else e=t;break;case IntegralUIIncrementMode.Full:if(this._currentDivision>1){let i=Math.floor(t/this._currentDivision)+1;e=Math.max(t,i*this._currentDivision)}else e=e>t+.5?t+1:t;break;default:this._defaultFunc()}if((e=Math.max(0,Math.min(this._ctrlMaxValue*this._currentDivision,e)))!==this.currentValue&&e<=this._ctrlMaxValue*this._currentDivision){const t=this._currentValue;this._currentValue=e;this._invokeEvent("valueChanged",{value:this._currentValue});this.requestUpdate("value",t);this.updateLayout()}}}_getContentWidth(){return this._contentSize.width}_getRatingWidth(){return this._ratingSize.width}_ctrlKeyDown(e){if(this._isEnabled&&!this._isReadOnly){let t={cancel:!1,value:this._currentValue,event:e};this._invokeEvent("keyDown",t);switch(e.keyCode){case 37:if(!t.cancel)this.value-=1;e.stopPropagation();break;case 39:if(!t.cancel)this.value+=1;e.stopPropagation();break;default:this._defaultFunc()}}}_processUpdateLayout(){let e=this;return new Promise(t=>{if(e._elemRef){let i=e._commonService.getPadding(e._elemRef);e._clientRect={width:e._elemRef.clientWidth-(i.left+i.right),height:e._elemRef.clientHeight-(i.top+i.bottom)};e._contentSize={width:e._ctrlMaxValue*e._currentStepSize,height:e._clientRect.height};e._ratingSize={width:e._currentValue0){let i=this._commonService.getPageRect(this._elemRef),s=this._commonService.getShiftPos();this.value=(t[0].pageX-i.left-s.x)*this._currentDivision/this._currentStepSize;this.updateLayout();e.stopPropagation()}}}_windowMouseUp(e){this._isRatingChangeActive=!1}refresh(){this._updateStyle(this.controlStyle);this._updateControlClass();this._updateContentClass();this._updateRatingClass();this.update();this._updateReferences()}_getControlStyle(){let e={width:this._getContentWidth()+"px"};if(this._ctrlSize.width>0)e.width=this._ctrlSize.width+"px";if(this._ctrlSize.height>0)e.height=this._ctrlSize.height+"px";return e}_getRatingValueClass(){return this._ratingClass}_updateRatingClass(){this._ratingClass={};this._ratingClass[this._ratingClassName]=!0;if(this._options.currentStyle){this._ratingClass[this._options.currentStyle.rating.normal]=!0;if(this.state&IntegralUIObjectState.Disabled)this._ratingClass[this._options.currentStyle.rating.disabled]=!0;else if(this.state&IntegralUIObjectState.focused)this._ratingClass[this._options.currentStyle.rating.focused]=!0;else if(this.state&IntegralUIObjectState.selected)this._ratingClass[this._options.currentStyle.rating.selected]=!0;else if(this.state&IntegralUIObjectState.hovered)this._ratingClass[this._options.currentStyle.rating.hovered]=!0}}_getRatingStyle(e){if(this._commonService.isString(e))return e;else if(e)return{disabled:this._commonService.isFieldAvailable(e.disabled,this._ratingClassName+"-disabled"),focused:this._commonService.isFieldAvailable(e.focused,this._ratingClassName+"-focused"),hovered:this._commonService.isFieldAvailable(e.hovered,this._ratingClassName+"-hovered"),normal:this._commonService.isFieldAvailable(e.normal,this._ratingClassName),selected:this._commonService.isFieldAvailable(e.selected,this._ratingClassName+"-selected")};else return{disabled:this._defaultStyle.rating.disabled,focused:this._defaultStyle.rating.focused,hovered:this._defaultStyle.rating.hovered,normal:this._defaultStyle.rating.normal,selected:this._defaultStyle.rating.selected}}_updateStyle(e){if(e)this._options.currentStyle={general:this._getGeneralStyle(e.general),content:this._getContentStyle(e.content),rating:this._getRatingStyle(e.rating)};else this._options.currentStyle={general:{disabled:this._defaultStyle.general.disabled,focused:this._defaultStyle.general.focused,hovered:this._defaultStyle.general.hovered,normal:this._defaultStyle.general.normal,selected:this._defaultStyle.general.selected},content:{disabled:this._defaultStyle.content.disabled,focused:this._defaultStyle.content.focused,hovered:this._defaultStyle.content.hovered,normal:this._defaultStyle.content.normal,selected:this._defaultStyle.content.selected},rating:{disabled:this._defaultStyle.rating.disabled,focused:this._defaultStyle.rating.focused,hovered:this._defaultStyle.rating.hovered,normal:this._defaultStyle.rating.normal,selected:this._defaultStyle.rating.selected}}}_updateThemeSettings(e){this._currentThemeSettings=css``;switch(e){case IntegralUITheme.Office:this._currentThemeSettings.cssText=this._commonService.replaceAll(iuiRatingOfficeStyle.cssText,"../icons",this._currentResourcePath);break;case IntegralUITheme.Midnight:this._currentThemeSettings.cssText=this._commonService.replaceAll(iuiRatingMidnightStyle.cssText,"../icons",this._currentResourcePath);break;default:this._currentThemeSettings.cssText=""}}firstUpdated(e){this._updateReferences();this.updateLayout()}render(){return html`
    `}_updateControlStyleSettings(e){this._currentControlStyleSettings=css``;this._currentControlStyleSettings.cssText=this._commonService.replaceAll(iuiRatingDefaultStyle.cssText,"../icons",e)}_updateReferences(){this._elemRef=this.shadowRoot.querySelector("div[data-ctrl=rating]")}}window.customElements.define("iui-rating",IntegralUIRating);export default IntegralUIRating; \ No newline at end of file diff --git a/components/integralui.scrollbar.js b/components/integralui.scrollbar.js index f3c4781..b99167e 100644 --- a/components/integralui.scrollbar.js +++ b/components/integralui.scrollbar.js @@ -1,6 +1,6 @@ /* filename: integralui.scrollbar.js - version : 21.1.0 + version : 21.4.0 Copyright © 2016-2021 Lidor Systems. All rights reserved. This file is part of the "IntegralUI Web" Library. @@ -12,4 +12,4 @@ This SOFTWARE is provided "AS IS", WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for the specific language governing rights and limitations under the License. Any infringement will be prosecuted under applicable laws. */ -import{c as css,h as html}from"../external/lit-element.js";import{c as classMap}from"../external/class-map.js";import{s as styleMap}from"../external/style-map.js";import{IntegralUIOrientation,IntegralUITheme}from"./integralui.enums.js";import IntegralUIBase from"./integralui.base.js";import{iuiScrollBarStyle}from"../styles/integralui.scrollbar.style.js";import{iuiScrollBarOfficeStyle}from"../themes/office/integralui.scrollbar.office.js";import{iuiScrollBarMidnightStyle}from"../themes/midnight/integralui.scrollbar.midnight.js";class IntegralUIScrollBar extends IntegralUIBase{_init(){super._init();this._currentMaxValue=0;this._currentMinValue=0;this._currentValue=0;this._currentSplitterDistance={x:0,y:0};this._emptySpace=0;this._maxPos={x:0,y:0};this._currentOrientation=IntegralUIOrientation.Vertical;this._scrollPos={top:0,right:0,bottom:0,left:0};this._scrollSize={width:0,height:0};this._thumbSize={width:0,height:0};this._thumbPos={x:2,y:2};this._isThumbActive=!1;this._prevPos={x:0,y:0};this._smallChange=0;this._largeChangeValue=0;this._scrollInterval=null;this._scrollTimeout=null;this._thumbStartPos={x:0,y:0};this._ctrlStyle={"iui-scrollbar-vertical":!0};this._thumbStyle={"iui-scrollbar-vertical-thumb":!0}}connectedCallback(){super.connectedCallback();this._windowMouseMove=this._windowMouseMove.bind(this);window.addEventListener("mousemove",this._windowMouseMove);this._windowMouseUp=this._windowMouseUp.bind(this);window.addEventListener("mouseup",this._windowMouseUp)}disconnectedCallback(){super.disconnectedCallback();window.removeEventListener("mousemove",this._windowMouseMove);window.removeEventListener("mouseup",this._windowMouseUp);this._clearScrollTimers()}static get properties(){return{height:{type:Number},largeChange:{type:Number,attribute:"large-change"},max:{type:Number,reflect:!0},min:{type:Number,reflect:!0},orientation:{converter:{fromAttribute:t=>"horizontal"===(t=t.replace(/"|'/,"").replace(/"|'/,"")).toLowerCase()?IntegralUIOrientation.Horizontal:IntegralUIOrientation.Vertical,toAttribute:(t,e)=>t===IntegralUIOrientation.Horizontal?"Horizontal":"Vertical"},reflect:!0},position:{type:Object},value:{type:Number,reflect:!0},width:{type:Number}}}attributeChangedCallback(t,e,i){super.attributeChangedCallback(t,e,i)}set height(t){if(this._scrollSize.height!==t&&t>=0){const e=this._scrollSize.height;this._scrollSize.height=t;this.requestUpdate("height",e);this.updateLayout()}}set largeChange(t){if(this._largeChangeValue!==t&&t>=0){const e=this._largeChangeValue;this._largeChangeValue=t;this.requestUpdate("largeChange",e)}}get max(){return this._currentMaxValue}set max(t){if(this._currentMaxValue!==t){const e=this._currentMaxValue;if(t<=0)this._currentMaxValue=1;else this._currentMaxValue=t;if(this._currentValue>this._currentMaxValue)this._currentValue=this._currentMaxValue;this.requestUpdate("max",e);this.updateLayout()}}get min(){return this._currentMinValue}set min(t){if(this._currentMinValue!==t&&t>=0){const e=this._currentMinValue;this._currentMinValue=t;this.requestUpdate("min",e);this.updateLayout()}}get orientation(){return this._currentOrientation}set orientation(t){if(this._currentOrientation!==t){const e=this._currentOrientation;this._currentOrientation=t;this.requestUpdate("orientation",e);this.updateLayout()}}set position(t){const e=this._scrollPos;if(void 0!==t)this._scrollPos={top:this._commonService.isFieldAvailable(t.top,0),right:this._commonService.isFieldAvailable(t.right,0),bottom:this._commonService.isFieldAvailable(t.bottom,0),left:this._commonService.isFieldAvailable(t.left,0)};else this._scrollPos={top:0,right:0,bottom:0,left:0};this.requestUpdate("position",e)}get value(){return this._currentValue}set value(t){if(this._currentValue!==t){const e=this._currentValue;if(tthis._currentMaxValue)this._currentValue=this._currentMaxValue;else this._currentValue=t;this.requestUpdate("value",e);this.updateLayout();this._invokeEvent("valueChanged",{value:this._currentValue})}}set width(t){if(this._scrollSize.width!==t&&t>=0){this._scrollSize.width=t;this.updateLayout()}}_thumbMouseDown(t){if(this._isEnabled){let e=this._commonService.getShiftPos(),i={x:t.pageX-e.x,y:t.pageY-e.y};this._thumbStartPos=i;this._isThumbActive=!0;this.prevPos={x:this.value,y:this.value};this._invokeEvent("scrollStart",{event:t,value:this._currentValue})}this._invokeEvent("scrollMouseDown");t.stopPropagation()}_windowMouseMove(t){if(this._isEnabled&&1===t.buttons&&this._isThumbActive){let e=this._commonService.getShiftPos(),i={x:t.pageX-e.x,y:t.pageY-e.y},s=0;if(this.orientation===IntegralUIOrientation.Horizontal){if(this._emptySpace>0)s=this.prevPos.x+(i.x-this._thumbStartPos.x)*this._currentMaxValue/this._emptySpace}else if(this._emptySpace>0)s=this.prevPos.y+(i.y-this._thumbStartPos.y)*this._currentMaxValue/this._emptySpace;this.value=s}}_windowMouseUp(t){if(this._isEnabled){this._isThumbActive=!1;this._prevPos.y=this._currentValue;this._clearScrollTimers();this._invokeEvent("scrollEnd",{event:t,value:this._currentValue})}}isVertical(){return this.orientation===IntegralUIOrientation.Vertical?!0:!1}_changeScrollPos(t){if(this._isEnabled){let e=this;e._processLargeChange(t);e._clearScrollTimers();e._scrollTimeout=setTimeout(function(){e._scrollInterval=setInterval(function(){if(e._currentValue>e._currentMinValue&&e._currentValuethis._thumbPos.y+this._thumbSize.height?2:-1;else e=t.offsetXthis._thumbPos.x+this._thumbSize.width?2:-1;switch(e){case 1:this.value-=this._largeChangeValue;break;case 2:this.value+=this._largeChangeValue;break;default:this._defaultFunc()}}_clearScrollTimers(){if(this._scrollTimeout)clearTimeout(this._scrollTimeout);if(this._scrollInterval)clearInterval(this._scrollInterval);this._scrollTimeout=null;this._scrollInterval=null}_updateThemeSettings(t){this._currentThemeSettings=css``;switch(t){case IntegralUITheme.Office:this._currentThemeSettings.cssText=this._commonService.replaceAll(iuiScrollBarOfficeStyle.cssText,"../icons",this._currentResourcePath);break;case IntegralUITheme.Midnight:this._currentThemeSettings.cssText=this._commonService.replaceAll(iuiScrollBarMidnightStyle.cssText,"../icons",this._currentResourcePath);break;default:this._currentThemeSettings.cssText=""}}firstUpdated(t){this.updateLayout()}async updateLayout(){await this._processUpdateLayout();this.update()}_processUpdateLayout(){return new Promise(t=>{if(this.orientation===IntegralUIOrientation.Horizontal){this._ctrlStyle={"iui-scrollbar-horizontal":!0};this._thumbStyle={"iui-scrollbar-horizontal-thumb":!0};if(0===this._largeChangeValue)this._largeChangeValue=this._scrollSize.width;let t=this._scrollSize.width-2,e=0;if(this._currentMaxValue+t>0)e=t*t/(this._currentMaxValue+t);e=t/(this._currentMaxValue+this._largeChangeValue)*this._largeChangeValue;if(this._currentMaxValue<=0)e=t;else if(e<7)e=7;this._thumbSize.width=e;this._emptySpace=t-e;if(this._currentMaxValue>0)this._thumbPos.x=2+this._currentValue*this._emptySpace/this._currentMaxValue}else{this._ctrlStyle={"iui-scrollbar-vertical":!0};this._thumbStyle={"iui-scrollbar-vertical-thumb":!0};if(0===this._largeChangeValue)this._largeChangeValue=this._scrollSize.height;let t=this._scrollSize.height-2,e=0;if(this._currentMaxValue+t>0)e=t*t/(this._currentMaxValue+t);e=t/(this._currentMaxValue+this._largeChangeValue)*this._largeChangeValue;if(this._currentMaxValue<=0)e=t;else if(e<7)e=7;this._thumbSize.height=e;this._emptySpace=t-e;if(this._currentMaxValue>0)this._thumbPos.y=2+this._currentValue*this._emptySpace/this._currentMaxValue}t()})}render(){const t=this.isVertical()?{top:this._scrollPos.top+"px",right:0,height:this._scrollSize.height+"px"}:{bottom:this._scrollPos.bottom+"px",left:0,width:this._scrollSize.width+"px"},e=this.isVertical()?{top:this._thumbPos.y+"px",height:this._thumbSize.height+"px"}:{left:this._thumbPos.x+"px",width:this._thumbSize.width+"px"};return html`
    `}updated(t){t.forEach((t,e)=>{})}}window.customElements.define("iui-scrollbar",IntegralUIScrollBar);export default IntegralUIScrollBar; \ No newline at end of file +import{c as css,h as html}from"../external/lit-element.js";import{c as classMap}from"../external/class-map.js";import{s as styleMap}from"../external/style-map.js";import IntegralUIBase from"./integralui.base.js";import{IntegralUIOrientation,IntegralUITheme}from"./integralui.enums.js";import{iuiScrollBarStyle}from"../styles/integralui.scrollbar.style.js";import{iuiScrollBarOfficeStyle}from"../themes/office/integralui.scrollbar.office.js";import{iuiScrollBarMidnightStyle}from"../themes/midnight/integralui.scrollbar.midnight.js";class IntegralUIScrollBar extends IntegralUIBase{_init(){super._init();this._currentMaxValue=0;this._currentMinValue=0;this._currentValue=0;this._currentSplitterDistance={x:0,y:0};this._emptySpace=0;this._maxPos={x:0,y:0};this._currentOrientation=IntegralUIOrientation.Vertical;this._scrollPos={top:0,right:0,bottom:0,left:0};this._scrollSize={width:0,height:0};this._thumbSize={width:0,height:0};this._thumbPos={x:2,y:2};this._isThumbActive=!1;this._prevPos={x:0,y:0};this._smallChange=0;this._largeChangeValue=0;this._scrollInterval=null;this._scrollTimeout=null;this._thumbStartPos={x:0,y:0};this._ctrlStyle={"iui-scrollbar-vertical":!0};this._thumbStyle={"iui-scrollbar-vertical-thumb":!0}}connectedCallback(){super.connectedCallback();this._windowMouseMove=this._windowMouseMove.bind(this);window.addEventListener("mousemove",this._windowMouseMove);this._windowMouseUp=this._windowMouseUp.bind(this);window.addEventListener("mouseup",this._windowMouseUp)}disconnectedCallback(){super.disconnectedCallback();window.removeEventListener("mousemove",this._windowMouseMove);window.removeEventListener("mouseup",this._windowMouseUp);this._clearScrollTimers()}static get properties(){return{height:{type:Number},largeChange:{type:Number,attribute:"large-change"},max:{type:Number,reflect:!0},min:{type:Number,reflect:!0},orientation:{converter:{fromAttribute:t=>"horizontal"===(t=t.replace(/"|'/,"").replace(/"|'/,"")).toLowerCase()?IntegralUIOrientation.Horizontal:IntegralUIOrientation.Vertical,toAttribute:(t,e)=>t===IntegralUIOrientation.Horizontal?"Horizontal":"Vertical"},reflect:!0},position:{type:Object},value:{type:Number,reflect:!0},width:{type:Number}}}attributeChangedCallback(t,e,i){super.attributeChangedCallback(t,e,i)}set height(t){if(this._scrollSize.height!==t&&t>=0){const e=this._scrollSize.height;this._scrollSize.height=t;this.requestUpdate("height",e);this.updateLayout()}}set largeChange(t){if(this._largeChangeValue!==t&&t>=0){const e=this._largeChangeValue;this._largeChangeValue=t;this.requestUpdate("largeChange",e)}}get max(){return this._currentMaxValue}set max(t){if(this._currentMaxValue!==t){const e=this._currentMaxValue;if(t<=0)this._currentMaxValue=1;else this._currentMaxValue=t;if(this._currentValue>this._currentMaxValue)this._currentValue=this._currentMaxValue;this.requestUpdate("max",e);this.updateLayout()}}get min(){return this._currentMinValue}set min(t){if(this._currentMinValue!==t&&t>=0){const e=this._currentMinValue;this._currentMinValue=t;this.requestUpdate("min",e);this.updateLayout()}}get orientation(){return this._currentOrientation}set orientation(t){if(this._currentOrientation!==t){const e=this._currentOrientation;this._currentOrientation=t;this.requestUpdate("orientation",e);this.updateLayout()}}set position(t){const e=this._scrollPos;if(void 0!==t)this._scrollPos={top:this._commonService.isFieldAvailable(t.top,0),right:this._commonService.isFieldAvailable(t.right,0),bottom:this._commonService.isFieldAvailable(t.bottom,0),left:this._commonService.isFieldAvailable(t.left,0)};else this._scrollPos={top:0,right:0,bottom:0,left:0};this.requestUpdate("position",e)}get value(){return this._currentValue}set value(t){if(this._currentValue!==t){const e=this._currentValue;if(tthis._currentMaxValue)this._currentValue=this._currentMaxValue;else this._currentValue=t;this.requestUpdate("value",e);this.updateLayout();this._invokeEvent("valueChanged",{value:this._currentValue})}}set width(t){if(this._scrollSize.width!==t&&t>=0){this._scrollSize.width=t;this.updateLayout()}}_thumbMouseDown(t){if(this._isEnabled){let e=this._commonService.getShiftPos(),i={x:t.pageX-e.x,y:t.pageY-e.y};this._thumbStartPos=i;this._isThumbActive=!0;this.prevPos={x:this.value,y:this.value};this._invokeEvent("scrollStart",{event:t,value:this._currentValue})}this._invokeEvent("scrollMouseDown");t.stopPropagation()}_windowMouseMove(t){if(this._isEnabled&&1===t.buttons&&this._isThumbActive){let e=this._commonService.getShiftPos(),i={x:t.pageX-e.x,y:t.pageY-e.y},s=0;if(this.orientation===IntegralUIOrientation.Horizontal){if(this._emptySpace>0)s=this.prevPos.x+(i.x-this._thumbStartPos.x)*this._currentMaxValue/this._emptySpace}else if(this._emptySpace>0)s=this.prevPos.y+(i.y-this._thumbStartPos.y)*this._currentMaxValue/this._emptySpace;this.value=s}}_windowMouseUp(t){if(this._isEnabled){this._isThumbActive=!1;this._prevPos.y=this._currentValue;this._clearScrollTimers();this._invokeEvent("scrollEnd",{event:t,value:this._currentValue})}}isVertical(){return this.orientation===IntegralUIOrientation.Vertical?!0:!1}_changeScrollPos(t){if(this._isEnabled){let e=this;e._processLargeChange(t);e._clearScrollTimers();e._scrollTimeout=setTimeout(function(){e._scrollInterval=setInterval(function(){if(e._currentValue>e._currentMinValue&&e._currentValuethis._thumbPos.y+this._thumbSize.height?2:-1;else e=t.offsetXthis._thumbPos.x+this._thumbSize.width?2:-1;switch(e){case 1:this.value-=this._largeChangeValue;break;case 2:this.value+=this._largeChangeValue;break;default:this._defaultFunc()}}_clearScrollTimers(){if(this._scrollTimeout)clearTimeout(this._scrollTimeout);if(this._scrollInterval)clearInterval(this._scrollInterval);this._scrollTimeout=null;this._scrollInterval=null}_updateThemeSettings(t){this._currentThemeSettings=css``;switch(t){case IntegralUITheme.Office:this._currentThemeSettings.cssText=this._commonService.replaceAll(iuiScrollBarOfficeStyle.cssText,"../icons",this._currentResourcePath);break;case IntegralUITheme.Midnight:this._currentThemeSettings.cssText=this._commonService.replaceAll(iuiScrollBarMidnightStyle.cssText,"../icons",this._currentResourcePath);break;default:this._currentThemeSettings.cssText=""}}firstUpdated(t){this.updateLayout()}async updateLayout(){await this._processUpdateLayout();this.update()}_processUpdateLayout(){return new Promise(t=>{if(this.orientation===IntegralUIOrientation.Horizontal){this._ctrlStyle={"iui-scrollbar-horizontal":!0};this._thumbStyle={"iui-scrollbar-horizontal-thumb":!0};if(0===this._largeChangeValue)this._largeChangeValue=this._scrollSize.width;let t=this._scrollSize.width-2,e=0;if(this._currentMaxValue+t>0)e=t*t/(this._currentMaxValue+t);e=t/(this._currentMaxValue+this._largeChangeValue)*this._largeChangeValue;if(this._currentMaxValue<=0)e=t;else if(e<7)e=7;this._thumbSize.width=e;this._emptySpace=t-e;if(this._currentMaxValue>0)this._thumbPos.x=2+this._currentValue*this._emptySpace/this._currentMaxValue}else{this._ctrlStyle={"iui-scrollbar-vertical":!0};this._thumbStyle={"iui-scrollbar-vertical-thumb":!0};if(0===this._largeChangeValue)this._largeChangeValue=this._scrollSize.height;let t=this._scrollSize.height-2,e=0;if(this._currentMaxValue+t>0)e=t*t/(this._currentMaxValue+t);e=t/(this._currentMaxValue+this._largeChangeValue)*this._largeChangeValue;if(this._currentMaxValue<=0)e=t;else if(e<7)e=7;this._thumbSize.height=e;this._emptySpace=t-e;if(this._currentMaxValue>0)this._thumbPos.y=2+this._currentValue*this._emptySpace/this._currentMaxValue}t()})}render(){const t=this.isVertical()?{top:this._scrollPos.top+"px",right:0,height:this._scrollSize.height+"px"}:{bottom:this._scrollPos.bottom+"px",left:0,width:this._scrollSize.width+"px"},e=this.isVertical()?{top:this._thumbPos.y+"px",height:this._thumbSize.height+"px"}:{left:this._thumbPos.x+"px",width:this._thumbSize.width+"px"};return html`
    `}updated(t){t.forEach((t,e)=>{})}}window.customElements.define("iui-scrollbar",IntegralUIScrollBar);export default IntegralUIScrollBar; \ No newline at end of file diff --git a/components/integralui.select.js b/components/integralui.select.js index f81270d..747e456 100644 --- a/components/integralui.select.js +++ b/components/integralui.select.js @@ -1,6 +1,6 @@ /* filename: integralui.select.js - version : 21.1.0 + version : 21.4.0 Copyright © 2016-2021 Lidor Systems. All rights reserved. This file is part of the "IntegralUI Web" Library. @@ -12,4 +12,4 @@ This SOFTWARE is provided "AS IS", WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for the specific language governing rights and limitations under the License. Any infringement will be prosecuted under applicable laws. */ -import{c as css,h as html}from"../external/lit-element.js";import{c as classMap}from"../external/class-map.js";import{s as styleMap}from"../external/style-map.js";import{IntegralUITheme}from"./integralui.enums.js";import IntegralUIBase from"./integralui.base.js";import IntegralUIDropDown from"./integralui.dropdown.js";import"./integralui.list.js";import"./integralui.header.js";import{iuiSelectDefaultStyle}from"../styles/integralui.select.style.js";import{iuiSelectOfficeStyle}from"../themes/office/integralui.select.office.js";import{iuiSelectMidnightStyle}from"../themes/midnight/integralui.select.midnight.js";class IntegralUISelect extends IntegralUIBase{_init(){super._init();this._dataItems=[];this._cmpRef=null;this._dropList=null;this._isDropDownVisible=!1;this._isDropDownUpdateAllowed=!0;this._expandState="none";this._isExpanded=!1;this._isSelected=!1;this._currentDropDownAdjustment={top:0,left:0,width:0,height:0};this._currentDropDownSize={width:0,height:0};this._currentMaxDropDownItems=5;this._currentSelection=null;this._currentIndex=-1;this._currentControlStyleSettings=iuiSelectDefaultStyle;this._generalClassName="iui-select";this._headerClassName=this._generalClassName+"-header";this._headerExpandBoxClassName=this._headerClassName+"-expand-box";this._initStyle()}_initStyle(){this._defaultStyle={general:{disabled:this._generalClassName+"-disabled",focused:this._generalClassName+"-focused",normal:this._generalClassName,hovered:this._generalClassName+"-hovered",selected:this._generalClassName+"-selected"},header:{general:{disabled:this._headerClassName+"-disabled",focused:this._headerClassName+"-focused",normal:this._headerClassName,hovered:this._headerClassName+"-hovered",selected:this._headerClassName+"-selected"},expandBox:this._headerExpandBoxClassName}};this.refresh()}connectedCallback(){}disconnectedCallback(){this._removeDropDown()}attributeChangedCallback(e,t,i){super.attributeChangedCallback(e,t,i)}static get properties(){return{dropDownAdjustment:{type:Object,attribute:"dropdown-adjustment"},dropDownSize:{type:Object,attribute:"dropdown-size"},expanded:{type:Boolean,reflect:!0},maxDropDownItems:{type:Number,attribute:"max-dropdown-items",reflect:!0},items:{type:Array},selectedIndex:{type:Number,attribute:"selected-index",reflect:!0},selectedItem:{type:Object,attribute:"selected-item"}}}get dropDownAdjustment(){return this._currentDropDownAdjustment}set dropDownAdjustment(e){if(e){const t=this._currentDropDownAdjustment;if(void 0!==e.top&&this._currentDropDownAdjustment.top!==e.top)this._currentDropDownAdjustment.top=e.top;if(void 0!==e.left&&this._currentDropDownAdjustment.left!==e.left)this._currentDropDownAdjustment.left=e.left;if(void 0!==e.width&&this._currentDropDownAdjustment.width!==e.width)this._currentDropDownAdjustment.width=e.width;if(void 0!==e.height&&this._currentDropDownSize.height!==e.height)this._currentDropDownAdjustment.height=e.height;this.requestUpdate("dropDownAdjustment",t)}}get dropDownSize(){return this._currentDropDownSize}set dropDownSize(e){if(e){let t=!1;const i=this._currentDropDownSize;if(void 0!==e.width&&this._currentDropDownSize.width!==e.width){this._currentDropDownSize.width=e.width;t=!0}if(void 0!==e.height&&this._currentDropDownSize.height!==e.height){this._currentDropDownSize.height=e.height;t=!0}if(t){this.updateLayout();this.requestUpdate("dropDownSize",i)}}}get expanded(){return this._isExpanded}set expanded(e){if(this._isExpanded!==e){const t=this._isExpanded;let i=this,s={cancel:!1,item:this._currentSelection};i._invokeEvent("beforeExpand",s);if(!0!==s.cancel){i._isExpanded=e;if(e)i._expandState="expand";else i._expandState="collapse";let s=setTimeout(function(){if("collapse"===i._expandState)i._expandState="none";clearTimeout(s)},300);i._header.animationState=i._isExpanded?"expand":"collapse";if(this._isExpanded)this._showDropDown();else this._closeDropDown();i.requestUpdate("expanded",t)}}}get items(){return this._dataItems}set items(e){const t=this._dataItems;this._dataItems=e;this.requestUpdate("items",t)}get maxDropDownItems(){return this._currentMaxDropDownItems}set maxDropDownItems(e){if(void 0!==e&&this._currentMaxDropDownItems!==e){const t=this._currentMaxDropDownItems;this._currentMaxDropDownItems=e;this.requestUpdate("maxDropDownItems",t)}}get selectedIndex(){return this._currentSelection}set selectedIndex(e){if(this._commonService.isIndexInRange(e,this._dataItems))this.selectedItem=this._dataItems[e]}get selectedItem(){return this._currentSelection}set selectedItem(e){let t={cancel:!1,item:e};this._invokeEvent("beforeSelect",t);if(!0!==t.cancel&&this._currentSelection!==e){const t=this._currentSelection;this._currentSelection=e;this._currentIndex=this._dataItems.indexOf(e);this.requestUpdate("selectedItem",t);this._invokeEvent("afterSelect",{item:e});this._invokeEvent("selectionChanged",{item:e});this.update()}}_addDropDown(){this._removeDropDown();this._cmpRef=document.createElement("iui-dropdown",{is:IntegralUIDropDown});document.body.appendChild(this._cmpRef);if(this._cmpRef){this._cmpRef.allowAnimation=this.allowAnimation;this._cmpRef.contentTemplate=this._getContentTemplate();this._cmpRef.customStyle=this.customStyle;this._cmpRef.resourcePath=this.resourcePath;this._cmpRef.size=this._getDropDownSize();this._cmpRef.theme=this._currentTheme;let e=this._commonService.getPageRect(this._elemRef),t=this._commonService.getShiftPos();this._cmpRef.position={top:e.top+this._header.getSize().height+t.y+this._currentDropDownAdjustment.top,left:e.left+t.x+this._currentDropDownAdjustment.left};this._removeCtrl=this._removeCtrl.bind(this);this._cmpRef.addEventListener("closed",this._removeCtrl)}}_closeDropDown(){if(this._dropList)this._dropList.allowUpdate=!1;if(this._cmpRef)this._cmpRef.close();this._isDropDownVisible=!1}_dropDownBlur(e){this.expanded=!1;this._invokeEvent("lostFocus",{item:this._currentSelection})}_itemSelected(e){if(this._dropList)this._dropList.clearSelection();if(e.detail.item&&this.selectedItem!==e.detail.item)this.selectedItem=e.detail.item;this.expanded=!1;this._elemRef.focus()}_listSizeChanged(e){if(this._cmpRef)this._cmpRef.size={height:e.detail.size.height+4}}_removeCtrl(e){this._invokeEvent("closed",{item:this._currentSelection});this._removeDropDown()}_removeDropDown(){if(this._cmpRef){this._cmpRef.removeEventListener("closed",this._removeCtrl);this._cmpRef.parentNode.removeChild(this._cmpRef)}this._cmpRef=null;this._isDropDownVisible=!1;if(this._dropList)this._dropList.allowUpdate=!0}_showDropDown(){let e=this;e._addDropDown();if(e._cmpRef){e._cmpRef.open();setTimeout(function(){if(e._cmpRef){e._dropList=e._cmpRef.getContent();if(e._dropList){e._dropList.focus();e._dropList.scrollTo(e._currentSelection)}}e._isDropDownVisible=e._cmpRef?!0:!1},100)}}_headerClick(e){if(this._isEnabled&&1===e.detail.buttons){this.expanded=!0;this._invokeEvent("opened",{event:e.detail})}}collapse(){this.expanded=!1}expand(){this.expanded=!0}toggle(){this.expanded=!this.expanded}_getHeaderIcon(){return this._currentSelection?this._currentSelection.icon:""}_getHeaderIconUrl(){return this._currentSelection?this._currentSelection.iconUrl:""}_getHeaderText(){return this._currentSelection?this._currentSelection.text:""}_ctrlKeyDown(e){if(this._isEnabled)switch(e.keyCode){case 13:this._processEnterKey(e);break;case 40:break;default:this._defaultFunc()}}_processEnterKey(e){this._keepActive=!0;this.expanded=!0;this._invokeEvent("opened",{event:e.detail})}_getDropDownSize(){let e={width:0!==this._currentDropDownSize.width&&this._currentDropDownSize.width>this._elemRef.offsetWidth?this._currentDropDownSize.width:this._elemRef.offsetWidth,height:0!==this._currentDropDownSize.height?this._currentDropDownSize.height:100};e.width+=this._currentDropDownAdjustment.width;e.height+=this._currentDropDownAdjustment.height;return e}_processMouseWheel(e){if(this._isEnabled)e.stopPropagation()}clearSelection(){this._currentSelection=null;this.refresh()}_getCurrentHeaderStyle(){return this._defaultStyle.header}_updateThemeSettings(e){this._currentThemeSettings=css``;switch(e){case IntegralUITheme.Office:this._currentThemeSettings.cssText=this._commonService.replaceAll(iuiSelectOfficeStyle.cssText,"../icons",this._currentResourcePath);break;case IntegralUITheme.Midnight:this._currentThemeSettings.cssText=this._commonService.replaceAll(iuiSelectMidnightStyle.cssText,"../icons",this._currentResourcePath);break;default:this._currentThemeSettings.cssText=""}}_getContentTemplate(){let e=this._getDropDownSize();e.width-=4;e.height-=4;if(this._currentMaxDropDownItems>0)e={width:this._getDropDownSize().width-4};return html``}firstUpdated(e){this._updateReferences();this.updateLayout()}render(){return html`
    `}_updateControlStyleSettings(e){this._currentControlStyleSettings=css``;this._currentControlStyleSettings.cssText=this._commonService.replaceAll(iuiSelectDefaultStyle.cssText,"../icons",e)}_updateReferences(){this._elemRef=this.shadowRoot.querySelector("div[data-ctrl=select]");this._header=this.shadowRoot.querySelector("#header")}}window.customElements.define("iui-select",IntegralUISelect);export default IntegralUISelect; \ No newline at end of file +import{c as css,h as html}from"../external/lit-element.js";import{c as classMap}from"../external/class-map.js";import{s as styleMap}from"../external/style-map.js";import IntegralUIBase from"./integralui.base.js";import{IntegralUITheme}from"./integralui.enums.js";import IntegralUIDropDown from"./integralui.dropdown.js";import"./integralui.header.js";import"./integralui.list.js";import{iuiSelectDefaultStyle}from"../styles/integralui.select.style.js";import{iuiSelectOfficeStyle}from"../themes/office/integralui.select.office.js";import{iuiSelectMidnightStyle}from"../themes/midnight/integralui.select.midnight.js";class IntegralUISelect extends IntegralUIBase{_init(){super._init();this._dataItems=[];this._cmpRef=null;this._dropList=null;this._isDropDownVisible=!1;this._isDropDownUpdateAllowed=!0;this._expandState="none";this._isExpanded=!1;this._isSelected=!1;this._currentDropDownAdjustment={top:0,left:0,width:0,height:0};this._currentDropDownSize={width:0,height:0};this._currentMaxDropDownItems=5;this._currentSelection=null;this._currentIndex=-1;this._currentControlStyleSettings=iuiSelectDefaultStyle;this._dropListTimeout=null;this._generalClassName="iui-select";this._headerClassName=this._generalClassName+"-header";this._headerExpandBoxClassName=this._headerClassName+"-expand-box";this._initStyle()}_initStyle(){this._defaultStyle={general:{disabled:this._generalClassName+"-disabled",focused:this._generalClassName+"-focused",normal:this._generalClassName,hovered:this._generalClassName+"-hovered",selected:this._generalClassName+"-selected"},header:{general:{disabled:this._headerClassName+"-disabled",focused:this._headerClassName+"-focused",normal:this._headerClassName,hovered:this._headerClassName+"-hovered",selected:this._headerClassName+"-selected"},expandBox:this._headerExpandBoxClassName}};this.refresh()}connectedCallback(){}disconnectedCallback(){if(this._dropListTimeout)clearTimeout(this._dropListTimeout);this._removeDropDown()}attributeChangedCallback(e,t,i){super.attributeChangedCallback(e,t,i)}static get properties(){return{dropDownAdjustment:{type:Object,attribute:"dropdown-adjustment"},dropDownSize:{type:Object,attribute:"dropdown-size"},expanded:{type:Boolean,reflect:!0},maxDropDownItems:{type:Number,attribute:"max-dropdown-items",reflect:!0},items:{type:Array},selectedIndex:{type:Number,attribute:"selected-index",reflect:!0},selectedItem:{type:Object,attribute:"selected-item"}}}get dropDownAdjustment(){return this._currentDropDownAdjustment}set dropDownAdjustment(e){if(e){const t=this._currentDropDownAdjustment;if(void 0!==e.top&&this._currentDropDownAdjustment.top!==e.top)this._currentDropDownAdjustment.top=e.top;if(void 0!==e.left&&this._currentDropDownAdjustment.left!==e.left)this._currentDropDownAdjustment.left=e.left;if(void 0!==e.width&&this._currentDropDownAdjustment.width!==e.width)this._currentDropDownAdjustment.width=e.width;if(void 0!==e.height&&this._currentDropDownSize.height!==e.height)this._currentDropDownAdjustment.height=e.height;this.requestUpdate("dropDownAdjustment",t)}}get dropDownSize(){return this._currentDropDownSize}set dropDownSize(e){if(e){let t=!1;const i=this._currentDropDownSize;if(void 0!==e.width&&this._currentDropDownSize.width!==e.width){this._currentDropDownSize.width=e.width;t=!0}if(void 0!==e.height&&this._currentDropDownSize.height!==e.height){this._currentDropDownSize.height=e.height;t=!0}if(t){this.updateLayout();this.requestUpdate("dropDownSize",i)}}}get expanded(){return this._isExpanded}set expanded(e){if(this._isExpanded!==e){const t=this._isExpanded;let i=this,s={cancel:!1,item:this._currentSelection};i._invokeEvent("beforeExpand",s);if(!0!==s.cancel){i._isExpanded=e;if(e)i._expandState="expand";else i._expandState="collapse";let s=setTimeout(function(){if("collapse"===i._expandState)i._expandState="none";clearTimeout(s)},300);i._header.animationState=i._isExpanded?"expand":"collapse";if(this._isExpanded)this._showDropDown();else this._closeDropDown();i.requestUpdate("expanded",t)}}}get items(){return this._dataItems}set items(e){const t=this._dataItems;this._dataItems=e;this.requestUpdate("items",t)}get maxDropDownItems(){return this._currentMaxDropDownItems}set maxDropDownItems(e){if(void 0!==e&&this._currentMaxDropDownItems!==e){const t=this._currentMaxDropDownItems;this._currentMaxDropDownItems=e;this.requestUpdate("maxDropDownItems",t)}}get selectedIndex(){return this._currentSelection}set selectedIndex(e){if(this._commonService.isIndexInRange(e,this._dataItems)&&this._currentIndex!==e){this._invokeEvent("selectedIndexChanged ",{index:e,item:this._dataItems[e]});this.selectedItem=this._dataItems[e]}}get selectedItem(){return this._currentSelection}set selectedItem(e){let t={cancel:!1,item:e};this._invokeEvent("beforeSelect",t);if(!0!==t.cancel&&this._currentSelection!==e){const t=this._currentSelection;this._currentSelection=e;this._currentIndex=this._dataItems.indexOf(e);this.requestUpdate("selectedItem",t);this._invokeEvent("afterSelect",{item:e});this._invokeEvent("selectionChanged",{item:e});this.update()}}_addDropDown(){this._removeDropDown();this._cmpRef=document.createElement("iui-dropdown",{is:IntegralUIDropDown});document.body.appendChild(this._cmpRef);if(this._cmpRef){this._cmpRef.allowAnimation=this.allowAnimation;this._cmpRef.contentTemplate=this._getContentTemplate();this._cmpRef.customStyle=this.customStyle;this._cmpRef.resourcePath=this.resourcePath;this._cmpRef.size=this._getDropDownSize();this._cmpRef.theme=this._currentTheme;let e=this._commonService.getPageRect(this._elemRef),t=this._commonService.getShiftPos();this._cmpRef.position={top:e.top+this._header.getSize().height+t.y+this._currentDropDownAdjustment.top,left:e.left+t.x+this._currentDropDownAdjustment.left};this._removeCtrl=this._removeCtrl.bind(this);this._cmpRef.addEventListener("closed",this._removeCtrl)}}_closeDropDown(){if(this._dropList)this._dropList.allowUpdate=!1;if(this._cmpRef)this._cmpRef.close();this._isDropDownVisible=!1}_dropDownBlur(e){this.expanded=!1;this._invokeEvent("lostFocus",{item:this._currentSelection})}_itemSelected(e){if(this._dropList)this._dropList.clearSelection();if(e.detail.item&&this.selectedItem!==e.detail.item)this.selectedItem=e.detail.item;this.expanded=!1;this._elemRef.focus()}_listSizeChanged(e){if(this._cmpRef)this._cmpRef.size={height:e.detail.size.height+4}}_removeCtrl(e){this._invokeEvent("closed",{item:this._currentSelection});this._removeDropDown()}_removeDropDown(){if(this._cmpRef){this._cmpRef.removeEventListener("closed",this._removeCtrl);this._cmpRef.parentNode.removeChild(this._cmpRef)}this._cmpRef=null;this._isDropDownVisible=!1;if(this._dropList)this._dropList.allowUpdate=!0}_showDropDown(){let e=this;e._addDropDown();if(e._cmpRef){e._cmpRef.open();e._dropListTimeout=setTimeout(function(){if(e._cmpRef){e._dropList=e._cmpRef.getContent();if(e._dropList){e._dropList.focus();e._dropList.scrollTo(e._currentSelection)}}e._isDropDownVisible=e._cmpRef?!0:!1;clearTimeout(e._dropListTimeout)},100)}}_headerClick(e){if(this._isEnabled&&1===e.detail.buttons){this.expanded=!0;this._invokeEvent("opened",{event:e.detail})}}collapse(){this.expanded=!1}expand(){this.expanded=!0}toggle(){this.expanded=!this.expanded}_getHeaderIcon(){return this._currentSelection?this._currentSelection.icon:""}_getHeaderIconUrl(){return this._currentSelection?this._currentSelection.iconUrl:""}_getHeaderText(){return this._currentSelection?this._currentSelection.text:""}_ctrlKeyDown(e){if(this._isEnabled)switch(e.keyCode){case 13:this._processEnterKey(e);break;case 40:break;default:this._defaultFunc()}}_processEnterKey(e){this._keepActive=!0;this.expanded=!0;this._invokeEvent("opened",{event:e.detail})}_getDropDownSize(){let e={width:0!==this._currentDropDownSize.width&&this._currentDropDownSize.width>this._elemRef.offsetWidth?this._currentDropDownSize.width:this._elemRef.offsetWidth,height:0!==this._currentDropDownSize.height?this._currentDropDownSize.height:100};e.width+=this._currentDropDownAdjustment.width;e.height+=this._currentDropDownAdjustment.height;return e}_processMouseWheel(e){if(this._isEnabled)e.stopPropagation()}clearSelection(){this._currentSelection=null;this.refresh()}_getCurrentHeaderStyle(){return this._defaultStyle.header}_updateThemeSettings(e){this._currentThemeSettings=css``;switch(e){case IntegralUITheme.Office:this._currentThemeSettings.cssText=this._commonService.replaceAll(iuiSelectOfficeStyle.cssText,"../icons",this._currentResourcePath);break;case IntegralUITheme.Midnight:this._currentThemeSettings.cssText=this._commonService.replaceAll(iuiSelectMidnightStyle.cssText,"../icons",this._currentResourcePath);break;default:this._currentThemeSettings.cssText=""}}_getContentTemplate(){let e=this._getDropDownSize();e.width-=4;e.height-=4;if(this._currentMaxDropDownItems>0)e={width:this._getDropDownSize().width-4};return html``}firstUpdated(e){this._updateReferences();this.updateLayout()}render(){return html`
    `}_updateControlStyleSettings(e){this._currentControlStyleSettings=css``;this._currentControlStyleSettings.cssText=this._commonService.replaceAll(iuiSelectDefaultStyle.cssText,"../icons",e)}_updateReferences(){this._elemRef=this.shadowRoot.querySelector("div[data-ctrl=select]");this._header=this.shadowRoot.querySelector("#header")}}window.customElements.define("iui-select",IntegralUISelect);export default IntegralUISelect; \ No newline at end of file diff --git a/components/integralui.slider.js b/components/integralui.slider.js deleted file mode 100644 index acfb523..0000000 --- a/components/integralui.slider.js +++ /dev/null @@ -1,15 +0,0 @@ -/* - filename: integralui.slider.js - version : 21.1.0 - Copyright © 2016-2021 Lidor Systems. All rights reserved. - - This file is part of the "IntegralUI Web" Library. - - The contents of this file are subject to the IntegralUI Web License, and may not be used except in compliance with the License. - A copy of the License should have been installed in the product's root installation directory or it can be found at - http://www.lidorsystems.com/products/web/studio/license-agreement.aspx. - - This SOFTWARE is provided "AS IS", WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for the specific language - governing rights and limitations under the License. Any infringement will be prosecuted under applicable laws. -*/ -import{c as css,h as html}from"../external/lit-element.js";import{c as classMap}from"../external/class-map.js";import{s as styleMap}from"../external/style-map.js";import{IntegralUIOrientation,IntegralUIObjectState,IntegralUITheme}from"./integralui.enums.js";import IntegralUIBaseValue from"./integralui.base.value.js";import{iuiSliderDefaultStyle}from"../styles/integralui.slider.style.js";import{iuiSliderOfficeStyle}from"../themes/office/integralui.slider.office.js";import{iuiSliderMidnightStyle}from"../themes/midnight/integralui.slider.midnight.js";class IntegralUISlider extends IntegralUIBaseValue{_init(){super._init();this._ctrlMaxValue=100;this._ctrlMinValue=0;this._currentValue=0;this._isSliderChangeActive=!1;this._currentOrientation=IntegralUIOrientation.Horizontal;this._contentSize={width:0,height:0};this._handleSize={width:0,height:0};this._sliderSize={width:0,height:0};this._sliderPos=0;this._currentControlStyleSettings=iuiSliderDefaultStyle;this._sliderBackgroundClass={};this._sliderButtonClass={};this._generalClassName="iui-slider";this._contentClassName=this._generalClassName+"-content";this._sliderBackgroundClassName=this._generalClassName+"-background";this._sliderButtonClassName=this._generalClassName+"-button";this._initStyle()}_initStyle(){this._defaultStyle={general:{disabled:this._generalClassName+"-disabled",focused:this._generalClassName+"-focused",normal:this._generalClassName,hovered:this._generalClassName+"-hovered",selected:this._generalClassName+"-selected"},content:{disabled:this._contentClassName+"-disabled",focused:this._contentClassName+"-focused",normal:this._contentClassName,hovered:this._contentClassName+"-hovered",selected:this._contentClassName+"-selected"},slider:{background:{disabled:this._sliderBackgroundClassName+"-disabled",focused:this._sliderBackgroundClassName+"-focused",normal:this._sliderBackgroundClassName,hovered:this._sliderBackgroundClassName+"-hovered",selected:this._sliderBackgroundClassName+"-selected"},button:{disabled:this._sliderButtonClassName+"-disabled",focused:this._sliderButtonClassName+"-focused",normal:this._sliderButtonClassName,hovered:this._sliderButtonClassName+"-hovered",selected:this._sliderButtonClassName+"-selected"}}};this.refresh()}connectedCallback(){this._windowMouseMove=this._windowMouseMove.bind(this);window.addEventListener("mousemove",this._windowMouseMove);this._windowMouseUp=this._windowMouseUp.bind(this);window.addEventListener("mouseup",this._windowMouseUp)}disconnectedCallback(){window.removeEventListener("mousemove",this._windowMouseMove);window.removeEventListener("mouseup",this._windowMouseUp)}attributeChangedCallback(e,t,i){super.attributeChangedCallback(e,t,i)}static get properties(){return{max:{type:Number,reflect:!0},min:{type:Number,reflect:!0},orientation:{converter:{fromAttribute:e=>"horizontal"===(e=e.replace(/"|'/,"").replace(/"|'/,"")).toLowerCase()?IntegralUIOrientation.Horizontal:IntegralUIOrientation.Vertical,toAttribute:(e,t)=>e===IntegralUIOrientation.Horizontal?"Horizontal":"Vertical"},reflect:!0}}}get max(){return this._ctrlMaxValue}set max(e){if(void 0!==e){e=Math.floor(e);if(this._ctrlMaxValue!==e){const t=this._ctrlMaxValue;this._ctrlMaxValue=e;this.requestUpdate("max",t)}}}get min(){return this._ctrlMinValue}set min(e){if(void 0!==e){e=Math.floor(e);if(this._ctrlMinValue!==e){const t=this._ctrlMinValue;this._ctrlMinValue=e;this.requestUpdate("min",t)}}}get orientation(){return this._currentOrientation}set orientation(e){if(void 0!==e&&this._currentOrientation!==e){const t=this._currentOrientation;this._currentOrientation=e;this.requestUpdate("orientation",t);this.updateLayout()}}get value(){return Math.floor(this._currentValue)}set value(e){if(void 0!==e){e=Math.floor(e);if((e=Math.max(0,Math.min(this._ctrlMaxValue,e)))!==this._currentValue&&e>=this._ctrlMinValue&&e<=this._ctrlMaxValue){const t=this._currentValue;this._currentValue=e;this._invokeEvent("valueChanged",{value:this._currentValue});this.requestUpdate("value",t);this.updateLayout()}}}_getContentWidth(){return this._contentSize.width}_getSliderWidth(){return this._sliderSize.width}_ctrlKeyDown(e){if(this._isEnabled&&!this._isReadOnly){let t={cancel:!1,value:this._currentValue,event:e};this._invokeEvent("keyDown",t);switch(e.keyCode){case 37:if(!t.cancel)this.value-=1;e.stopPropagation();break;case 39:if(!t.cancel)this.value+=1;e.stopPropagation();break;default:this._defaultFunc()}}}_processUpdateLayout(){let e=this;return new Promise(t=>{let i=setTimeout(function(){let s=e._commonService.getPadding(e._elemRef);e._clientRect={width:e._elemRef.clientWidth-(s.left+s.right),height:e._elemRef.clientHeight-(s.top+s.bottom)};e._contentSize={width:e._clientRect.width-2,height:e._clientRect.height-2};e._sliderSize={width:e._clientRect.width-4,height:e._clientRect.height-4};if(e._currentOrientation===IntegralUIOrientation.Horizontal){e._contentSize.height=1;e._sliderSize.width=e._sliderSize.height/2}else{e._contentSize.width=1;e._sliderSize.height=e._sliderSize.width/2}e._handleSize={width:e._handleElem.offsetWidth,height:e._handleElem.offsetHeight};if(e._currentValuee._ctrlMaxValue)e._currentValue=Math.max(e._ctrlMinValue,Math.min(e._ctrlMaxValue,e._currentValue));if(e._currentOrientation===IntegralUIOrientation.Horizontal)e._sliderPos=e._currentValue*(e._clientRect.width-e._handleSize.width)/e._ctrlMaxValue;else e._sliderPos=e._currentValue*(e._clientRect.height-e._handleSize.height)/e._ctrlMaxValue;e._updateContentClass();e._updateSliderBackgroundClass();e.update();clearTimeout(i);t()},1)})}_ctrlMouseEnter(e){this._animationState="in"}_ctrlMouseLeave(e){if(!this._isSliderChangeActive)this._animationState="out"}_ctrlMouseDown(e){if(this._isEnabled&&!this._isReadOnly&&1===e.which){this._isSliderChangeActive=!0;if(this._currentOrientation===IntegralUIOrientation.Horizontal){if(this._clientRect.width>0)this.value=this._ctrlMaxValue*e.offsetX/this._clientRect.width}else if(this._clientRect.height>0)this.value=this._ctrlMaxValue*(this._clientRect.height-e.offsetY)/this._clientRect.height;e.stopPropagation()}}_ctrlMouseMove(e){this._animationState="in"}_ctrlMouseUp(e){this._isSliderChangeActive=!1}_ctrlMouseWheel(e){if(this._isEnabled&&!this._isReadOnly){e.preventDefault();let t=Math.max(-1,Math.min(1,e.wheelDelta||-e.detail)),i=(this._ctrlMaxValue-this._ctrlMinValue)/10;this.value+=i*t*-1;e.stopPropagation()}}_ctrlTouchEnd(e){if(this._isEnabled&&!this._isReadOnly){let t=this._commonService.getTouchData(e);if(t&&t.length>0){let i=this._commonService.getPageRect(this._elemRef),s=this._commonService.getShiftPos();if(this._currentOrientation===IntegralUIOrientation.Horizontal){if(this._clientRect.width>0)this.value=this._ctrlMaxValue*(t[0].pageX-i.left-s.x)/this._clientRect.width}else if(this._clientRect.height>0)this.value=this._ctrlMaxValue*(this._clientRect.height-(t[0].pageY-i.bottom-s.y))/this._clientRect.height;e.stopPropagation()}}}_windowMouseMove(e){if(this._isEnabled&&!this._isReadOnly&&1===e.which&&this._isSliderChangeActive){let t=this._commonService.getMousePos(e),i=this._commonService.getShiftPos();t.x-=i.x;t.y-=i.y;let s=this._commonService.getPageRect(this._elemRef),l=0;if(this._currentOrientation===IntegralUIOrientation.Horizontal){if(t.xs.right)l=this._ctrlMaxValue;else if(this._clientRect.width>0)l=this._ctrlMaxValue*(t.x-s.left)/this._clientRect.width}else if(t.y>s.bottom)l=this._ctrlMinValue;else if(t.y0)l=this._ctrlMaxValue*(s.bottom-t.y)/this._clientRect.height;this.value=l;e.stopPropagation()}}_windowMouseUp(e){this._isSliderChangeActive=!1;this._animationState="out"}_getSliderBackStyle(){let e={position:"absolute"};if(this._currentOrientation===IntegralUIOrientation.Horizontal)Object.assign(e,{left:this._sliderPos+this._handleSize.width+"px",top:this._clientRect.height/2+"px",width:this._contentSize.width-this._sliderPos-this._handleSize.width+"px"});else Object.assign(e,{left:this._clientRect.width/2+"px",bottom:this._sliderPos+this._handleSize.height+"px",height:this._contentSize.height-this._sliderPos-this._handleSize.height+"px"});return e}_getSliderBackValueStyle(){let e={position:"absolute"};if(this._currentOrientation===IntegralUIOrientation.Horizontal)Object.assign(e,{left:"0",top:this._clientRect.height/2+"px",width:this._sliderPos+"px"});else Object.assign(e,{left:this._clientRect.width/2+"px",bottom:"0",height:this._sliderPos+"px"});return e}_getSliderValueStyle(){let e={position:"absolute"};if(this._currentOrientation===IntegralUIOrientation.Horizontal)Object.assign(e,{left:this._sliderPos+"px",top:"0",width:this._sliderSize.width+"px",height:this._sliderSize.height+"px"});else Object.assign(e,{left:"0",bottom:this._sliderPos+"px",width:this._sliderSize.width+"px",height:this._sliderSize.height+"px"});return e}_updateContentClass(){this._contentClass={};if(this._currentOrientation===IntegralUIOrientation.Horizontal)this._contentClass[this._contentClassName]=!0;else this._contentClass[this._contentClassName+"-vertical"]=!0;if(this._options.currentStyle){this._contentClass[this._options.currentStyle.content.normal]=!0;if(this.state&IntegralUIObjectState.Disabled)this._contentClass[this._options.currentStyle.content.disabled]=!0;else if(this.state&IntegralUIObjectState.focused)this._contentClass[this._options.currentStyle.content.focused]=!0;else if(this.state&IntegralUIObjectState.selected)this._contentClass[this._options.currentStyle.content.selected]=!0;else if(this.state&IntegralUIObjectState.hovered)this._contentClass[this._options.currentStyle.content.hovered]=!0}}_getSliderBackgroundClass(){return this._sliderBackgroundClass}_updateSliderBackgroundClass(){this._sliderBackgroundClass={};if(this._currentOrientation===IntegralUIOrientation.Horizontal)this._sliderBackgroundClass[this._sliderBackgroundClassName]=!0;else this._sliderBackgroundClass[this._sliderBackgroundClassName+"-vertical"]=!0;if(this._options.currentStyle){this._sliderBackgroundClass[this._options.currentStyle.slider.background.normal]=!0;if(this.state&IntegralUIObjectState.Disabled)this._sliderBackgroundClass[this._options.currentStyle.slider.background.disabled]=!0;else if(this.state&IntegralUIObjectState.focused)this._sliderBackgroundClass[this._options.currentStyle.slider.background.focused]=!0;else if(this.state&IntegralUIObjectState.selected)this._sliderBackgroundClass[this._options.currentStyle.slider.background.selected]=!0;else if(this.state&IntegralUIObjectState.hovered)this._sliderBackgroundClass[this._options.currentStyle.slider.background.hovered]=!0}}_getSliderButtonClass(){return this._sliderButtonClass}_updateSliderButtonClass(){this._sliderButtonClass={};this._sliderButtonClass[this._sliderButtonClassName]=!0;if(this._options.currentStyle){this._sliderButtonClass[this._options.currentStyle.slider.button.normal]=!0;if(this.state&IntegralUIObjectState.Disabled)this._sliderButtonClass[this._options.currentStyle.slider.button.disabled]=!0;else if(this.state&IntegralUIObjectState.focused)this._sliderButtonClass[this._options.currentStyle.slider.button.focused]=!0;else if(this.state&IntegralUIObjectState.selected)this._sliderButtonClass[this._options.currentStyle.slider.button.selected]=!0;else if(this.state&IntegralUIObjectState.hovered)this._sliderButtonClass[this._options.currentStyle.slider.button.hovered]=!0}}_getSliderBackgroundStyle(e){if(this._commonService.isString(e))return e;else if(e)return{disabled:this._commonService.isFieldAvailable(e.disabled,this._sliderBackgroundClassName+"-disabled"),focused:this._commonService.isFieldAvailable(e.focused,this._sliderBackgroundClassName+"-focused"),hovered:this._commonService.isFieldAvailable(e.hovered,this._sliderBackgroundClassName+"-hovered"),normal:this._commonService.isFieldAvailable(e.normal,this._sliderBackgroundClassName),selected:this._commonService.isFieldAvailable(e.selected,this._sliderBackgroundClassName+"-selected")};else return{disabled:this._defaultStyle.slider.background.disabled,focused:this._defaultStyle.slider.background.focused,hovered:this._defaultStyle.slider.background.hovered,normal:this._defaultStyle.slider.background.normal,selected:this._defaultStyle.slider.background.selected}}_getSliderButtonStyle(e){if(this._commonService.isString(e))return e;else if(e)return{disabled:this._commonService.isFieldAvailable(e.disabled,this._sliderButtonClassName+"-disabled"),focused:this._commonService.isFieldAvailable(e.focused,this._sliderButtonClassName+"-focused"),hovered:this._commonService.isFieldAvailable(e.hovered,this._sliderButtonClassName+"-hovered"),normal:this._commonService.isFieldAvailable(e.normal,this._sliderButtonClassName),selected:this._commonService.isFieldAvailable(e.selected,this._sliderButtonClassName+"-selected")};else return{disabled:this._defaultStyle.slider.button.disabled,focused:this._defaultStyle.slider.button.focused,hovered:this._defaultStyle.slider.button.hovered,normal:this._defaultStyle.slider.button.normal,selected:this._defaultStyle.slider.button.selected}}_getSliderStyle(e){if(this._commonService.isString(e))return e;else if(e)return{background:this._getSliderBackgroundStyle(e.background),button:this._getSliderButtonStyle(e.button)};else return{background:{disabled:this._defaultStyle.slider.background.disabled,focused:this._defaultStyle.slider.background.focused,hovered:this._defaultStyle.slider.background.hovered,normal:this._defaultStyle.slider.background.normal,selected:this._defaultStyle.slider.background.selected},button:{disabled:this._defaultStyle.slider.button.disabled,focused:this._defaultStyle.slider.button.focused,hovered:this._defaultStyle.slider.button.hovered,normal:this._defaultStyle.slider.button.normal,selected:this._defaultStyle.slider.button.selected}}}_updateStyle(e){if(e)this._options.currentStyle={general:this._getGeneralStyle(e.general),content:this._getContentStyle(e.content),slider:this._getSliderStyle(e.slider)};else this._options.currentStyle={general:{disabled:this._defaultStyle.general.disabled,focused:this._defaultStyle.general.focused,hovered:this._defaultStyle.general.hovered,normal:this._defaultStyle.general.normal,selected:this._defaultStyle.general.selected},content:{disabled:this._defaultStyle.content.disabled,focused:this._defaultStyle.content.focused,hovered:this._defaultStyle.content.hovered,normal:this._defaultStyle.content.normal,selected:this._defaultStyle.content.selected},slider:this._getSliderStyle()}}refresh(){this._updateStyle(this.controlStyle);this._updateControlClass();this._updateContentClass();this._updateSliderBackgroundClass();this._updateSliderButtonClass();this.update();this._updateReferences()}_updateThemeSettings(e){this._currentThemeSettings=css``;switch(e){case IntegralUITheme.Office:this._currentThemeSettings.cssText=this._commonService.replaceAll(iuiSliderOfficeStyle.cssText,"../icons",this._currentResourcePath);break;case IntegralUITheme.Midnight:this._currentThemeSettings.cssText=this._commonService.replaceAll(iuiSliderMidnightStyle.cssText,"../icons",this._currentResourcePath);break;default:this._currentThemeSettings.cssText=""}}firstUpdated(e){this._updateReferences();this.updateLayout()}render(){return html`
    `}_updateControlStyleSettings(e){this._currentControlStyleSettings=css``;this._currentControlStyleSettings.cssText=this._commonService.replaceAll(iuiSliderDefaultStyle.cssText,"../icons",e)}_updateReferences(){this._elemRef=this.shadowRoot.querySelector("div[data-ctrl=slider]");this._handleElem=this.shadowRoot.querySelector("#handle")}}window.customElements.define("iui-slider",IntegralUISlider);export default IntegralUISlider; \ No newline at end of file diff --git a/components/integralui.tooltip.js b/components/integralui.tooltip.js index 61e08c2..73a0a69 100644 --- a/components/integralui.tooltip.js +++ b/components/integralui.tooltip.js @@ -1,6 +1,6 @@ /* filename: integralui.tooltip.js - version : 21.1.0 + version : 21.4.0 Copyright © 2016-2021 Lidor Systems. All rights reserved. This file is part of the "IntegralUI Web" Library. @@ -12,4 +12,4 @@ This SOFTWARE is provided "AS IS", WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for the specific language governing rights and limitations under the License. Any infringement will be prosecuted under applicable laws. */ -import{L as LitElement,c as css,h as html}from"../external/lit-element.js";import{c as classMap}from"../external/class-map.js";import{s as styleMap}from"../external/style-map.js";import IntegralUICommonService from"../services/integralui.common.service.js";import{IntegralUITheme,IntegralUISpeedMode}from"./integralui.enums.js";import IntegralUIBase from"./integralui.base.js";import{iuiTooltipStyle}from"../styles/integralui.tooltip.style.js";import{iuiTooltipOfficeStyle}from"../themes/office/integralui.tooltip.office.js";import{iuiTooltipMidnightStyle}from"../themes/midnight/integralui.tooltip.midnight.js";class IntegralUITooltipWindow extends LitElement{constructor(){super();this._commonService=new IntegralUICommonService();this._animationTimer=null;this._currentOpacity=0;this._currentOptions={};this._showTimer=null;this._popupTimer=null;this._mousePos={x:0,y:0};this._currentPos={x:0,y:0};this._currentSize={width:0,height:0};this._tooltipDisplay="none";this._startPos={x:0,y:0};this._tooltipSize={width:0,height:0};this._updateOptions();this._currentTheme=IntegralUITheme.None;this._currentThemeSettings=css``;this._ctrlClass={};this._generalClassName="iui-tooltip";this._initStyle()}connectedCallback(){}disconnectedCallback(){this._removeAnimationTimer();this._removeTimers()}_initStyle(){this._defaultStyle={general:{disabled:this._generalClassName+"-disabled",focused:this._generalClassName+"-focused",normal:this._generalClassName,hovered:this._generalClassName+"-hovered",selected:this._generalClassName+"-selected"}}}attributeChangedCallback(t,e,i){super.attributeChangedCallback(t,e,i)}static get properties(){return{options:{type:Object},theme:{converter:{fromAttribute:t=>{switch((t=t.replace(/"|'/,"").replace(/"|'/,"")).toLowerCase()){case"office":return IntegralUITheme.Office;case"midnight":return IntegralUITheme.Midnight;default:return IntegralUITheme.None}},toAttribute:t=>{switch(t){case IntegralUITheme.Office:return"Office";case IntegralUITheme.Midnight:return"Midnight";default:return"None"}}},reflect:!0}}}get options(){return this._currentOptions}set options(t){const e=this._currentOptions;this._updateOptions(t);this.refresh();this.requestUpdate("options",e)}get theme(){return this._currentTheme}set theme(t){if(this._currentTheme!==t){const e=this._currentTheme;this._currentTheme=t;this._updateThemeSettings(t);this.requestUpdate("theme",e)}}_animateHide(){let t=this;t._removeAnimationTimer();setTimeout(function(){t._currentOpacity=1;t._currentPos={x:t._startPos.x,y:t._startPos.y};t._currentSize={width:t._tooltipSize.width,height:t._tooltipSize.height};let e={x:t._startPos.x+t._tooltipSize.width/2,y:t._startPos.y+t._tooltipSize.height/2},i=t._getAnimationFactor(),s=t._tooltipSize.width/(2*i),r=t._tooltipSize.height/(2*i),o=e.x-t._startPos.x;t._animationTimer=setInterval(function(){if(t._currentPos.x=e.x&&t._currentPos.y>=e.y){t._removeTimers();t._removeAnimationTimer();t._invokeEvent("closed")}},5)},1)}_animateShow(){let t=this;t._removeAnimationTimer();setTimeout(function(){t._currentOpacity=0;t._currentPos={x:t._startPos.x+t._tooltipSize.width/2,y:t._startPos.y+t._tooltipSize.height/2};t._currentSize={width:0,height:0};let e=t._getAnimationFactor(),i=t._tooltipSize.width/(2*e),s=t._tooltipSize.height/(2*e),r=t._currentPos.x-t._startPos.x;t._animationTimer=setInterval(function(){if(t._currentPos.x>t._startPos.x){t._currentPos.x-=i;t._currentSize.width+=2*i;t._currentOpacity=Math.abs(1-(t._currentPos.x-t._startPos.x)/r)}else{t._currentPos.x=t._startPos.x;t._currentSize.width=t._tooltipSize.width;t._currentOpacity=1}if(t._currentPos.y>t._startPos.y){t._currentPos.y-=s;t._currentSize.height+=2*s}else{t._currentPos.y=t._startPos.y;t._currentSize.height=t._tooltipSize.height}t.update();if(t._currentPos.x<=t._startPos.x&&t._currentPos.y<=t._startPos.y)t._removeAnimationTimer()},5)},1)}_getAnimationFactor(){let t=30;switch(this._currentOptions.animationSpeed){case IntegralUISpeedMode.VerySlow:t=50;break;case IntegralUISpeedMode.Slow:t=40;break;case IntegralUISpeedMode.Fast:t=20;break;case IntegralUISpeedMode.VeryFast:t=10;break;default:t=30}return t}_removeAnimationTimer(){if(this._animationTimer)clearInterval(this._animationTimer)}_updateOptions(t){if(t)this._currentOptions={allowAnimation:this._commonService.isFieldAvailable(t.allowAnimation,!0),animationSpeed:this._commonService.isFieldAvailable(t.animationSpeed,!0),autoPopDelay:this._commonService.isFieldAvailable(t.autoPopDelay,5e4),enabled:this._commonService.isFieldAvailable(t.enabled,!0),initialDelay:this._commonService.isFieldAvailable(t.initialDelay,500),position:this._commonService.isFieldAvailable(t.position,"mouse"),showMarker:this._commonService.isFieldAvailable(t.showMarker,!0),title:this._commonService.isFieldAvailable(t.title,"")};else this._currentOptions={allowAnimation:!0,animationSpeed:IntegralUISpeedMode.Normal,autoPopDelay:5e3,enabled:!0,initialDelay:500,position:"mouse",showMarker:!0,title:""}}_invokeEvent(t,e,i,s){let r=new CustomEvent(t,{detail:e,bubbles:void 0!==i?i:!1,composed:void 0!==s?s:!1});this.dispatchEvent(r);return e}_defaultFunc(){}_removeTimers(){if(this._showTimer){clearTimeout(this._showTimer);this._showTimer=null}if(this._popupTimer){clearTimeout(this._popupTimer);this._popupTimer=null}}close(){if(this._currentOptions.allowAnimation)this._animateHide();else{this._currentOpacity=0;this._currentPos={x:this._startPos.x,y:this._startPos.y};this._currentSize={width:this._currentOptions.width,height:this._tooltipSize.height};this._invokeEvent("closed");this.update()}}open(t,e){let i=this;i._startPos.y=-9999999;i._tooltipDisplay="block";i.update();let s=setTimeout(function(){i._tooltipSize=i._getSize();i._tooltipDisplay="none";i.update();i._removeTimers();if(i._currentOptions.enabled&&""!==i._currentOptions.title)i._showTimer=setTimeout(function(){i._show(t,e);i._popupTimer=setTimeout(function(){i.close();clearTimeout(i._popupTimer)},i._currentOptions.autoPopDelay);clearTimeout(i._showTimer)},i._currentOptions.initialDelay);clearTimeout(s)},1)}_show(t,e){this._startPos={x:this._mousePos.x,y:this._mousePos.y+24};switch(this._currentOptions.position){case"above":this._startPos={x:t.left+Math.floor((e.width-this._tooltipSize.width)/2),y:t.top-4-this._tooltipSize.height};break;case"below":this._startPos={x:t.left+Math.floor((e.width-this._tooltipSize.width)/2),y:t.bottom+4};break;case"left":this._startPos={x:t.left-4-this._tooltipSize.width,y:t.top+Math.floor((e.height-this._tooltipSize.height)/2)};break;case"right":this._startPos={x:t.right+4,y:t.top+Math.floor((e.height-this._tooltipSize.height)/2)};break;default:this._startPos={x:this._mousePos.x,y:this._mousePos.y+24}}this._tooltipDisplay="block";if(this._currentOptions.allowAnimation)this._animateShow();else{this._currentOpacity=1;this._currentPos={x:this._startPos.x,y:this._startPos.y};this._currentSize={width:this._tooltipSize.width,height:this._tooltipSize.height};this.update()}}_getSize(){return{width:(this._contentElem?this._contentElem.offsetWidth:0)+2,height:(this._contentElem?this._contentElem.offsetHeight:0)+2}}updateMousePos(t){this._mousePos=t}_getControlClass(){return this._ctrlClass}_updateControlClass(){this._ctrlClass={};this._ctrlClass["iui-tooltip"]=!0;if(this._currentOptions.showMarker)switch(this._currentOptions.position){case"above":this._ctrlClass["iui-tooltip-marker-bottom"]=!0;break;case"right":this._ctrlClass["iui-tooltip-marker-left"]=!0;break;case"below":this._ctrlClass["iui-tooltip-marker-top"]=!0;break;case"left":this._ctrlClass["iui-tooltip-marker-right"]=!0;break;default:this._defaultFunc()}if(!1===this._currentOptions.allowAnimation)this._ctrlClass["iui-tooltip-animation-none"]=!0}_updateThemeSettings(t){this._currentThemeSettings=css``;switch(t){case IntegralUITheme.Office:this._currentThemeSettings.cssText=this._commonService.replaceAll(iuiTooltipOfficeStyle.cssText,"../icons",this._currentResourcePath);break;case IntegralUITheme.Midnight:this._currentThemeSettings.cssText=this._commonService.replaceAll(iuiTooltipMidnightStyle.cssText,"../icons",this._currentResourcePath);break;default:this._currentThemeSettings.cssText=""}}firstUpdated(t){this._updateReferences()}refresh(){this._updateControlClass();this.update();this._updateReferences()}render(){return html`
    ${this._currentOptions.title}
    `}_updateReferences(){this._elemRef=this.shadowRoot.querySelector("div[data-ctrl=tooltip-win]");this._contentElem=this.shadowRoot.querySelector("#content")}}window.customElements.define("iui-tooltip-win",IntegralUITooltipWindow);class IntegralUITooltip extends IntegralUIBase{_init(){super._init();this._currentSettings=null;this._cmpRef=null;this._currentTheme=IntegralUITheme.None;this._currentThemeSettings=css``}connectedCallback(){}disconnectedCallback(){this._removeWindow()}attributeChangedCallback(t,e,i){super.attributeChangedCallback(t,e,i)}static get properties(){return{settings:{type:Object},theme:{converter:{fromAttribute:t=>{switch((t=t.replace(/"|'/,"").replace(/"|'/,"")).toLowerCase()){case"office":return IntegralUITheme.Office;case"midnight":return IntegralUITheme.Midnight;default:return IntegralUITheme.None}},toAttribute:t=>{switch(t){case IntegralUITheme.Office:return"Office";case IntegralUITheme.Midnight:return"Midnight";default:return"None"}}},reflect:!0}}}get settings(){return this._currentSettings}set settings(t){if(this._currentSettings!==t){const e=this._currentSettings;this._currentSettings=t;this.requestUpdate("settings",e)}}get theme(){return this._currentTheme}set theme(t){if(this._currentTheme!==t){const e=this._currentTheme;this._currentTheme=t;this.requestUpdate("theme",e)}}_close(){if(this._cmpRef)this._cmpRef.close()}_getSize(){return{width:this._elemRef.offsetWidth,height:this._elemRef.offsetHeight}}_ctrlMouseEnter(t){if(this._isEnabled){this._addWindow();if(this._cmpRef){this._cmpRef.options=this._currentSettings;this._cmpRef.theme=this._currentTheme;this._cmpRef.updateMousePos(this._commonService.getMousePos(t));let e=this._elemRef.getBoundingClientRect();this._cmpRef.open(e,this._getSize());this._removeCtrl=this._removeCtrl.bind(this);this._cmpRef.addEventListener("closed",this._removeCtrl)}}}_ctrlMouseLeave(t){this._close();this._removeWindow()}_ctrlMouseMove(t){if(this._cmpRef)this._cmpRef.updateMousePos(this._commonService.getMousePos(t))}_removeCtrl(t){this._removeWindow()}_addWindow(){this._removeWindow();this._cmpRef=document.createElement("iui-tooltip-win",{is:IntegralUITooltipWindow});document.body.appendChild(this._cmpRef)}_removeWindow(){if(this._cmpRef){this._cmpRef.removeEventListener("closed",this._removeCtrl);this._cmpRef.parentNode.removeChild(this._cmpRef)}this._cmpRef=null}firstUpdated(t){this._updateReferences()}render(){return html`
    `}_updateReferences(){this._elemRef=this.shadowRoot.querySelector("div[data-ctrl=tooltip]")}}window.customElements.define("iui-tooltip",IntegralUITooltip);export default IntegralUITooltip;export{IntegralUITooltipWindow}; \ No newline at end of file +import{L as LitElement,c as css,h as html}from"../external/lit-element.js";import{c as classMap}from"../external/class-map.js";import{s as styleMap}from"../external/style-map.js";import IntegralUIBase from"./integralui.base.js";import IntegralUICommonService from"../services/integralui.common.service.js";import{IntegralUITheme,IntegralUISpeedMode}from"./integralui.enums.js";import{iuiTooltipStyle}from"../styles/integralui.tooltip.style.js";import{iuiTooltipOfficeStyle}from"../themes/office/integralui.tooltip.office.js";import{iuiTooltipMidnightStyle}from"../themes/midnight/integralui.tooltip.midnight.js";class IntegralUITooltipWindow extends LitElement{constructor(){super();this._commonService=new IntegralUICommonService();this._animationTimer=null;this._currentOpacity=0;this._currentOptions={};this._showTimer=null;this._popupTimer=null;this._mousePos={x:0,y:0};this._currentPos={x:0,y:0};this._currentSize={width:0,height:0};this._tooltipDisplay="none";this._startPos={x:0,y:0};this._tooltipSize={width:0,height:0};this._updateOptions();this._currentTheme=IntegralUITheme.None;this._currentThemeSettings=css``;this._ctrlClass={};this._generalClassName="iui-tooltip";this._initStyle()}connectedCallback(){}disconnectedCallback(){this._removeAnimationTimer();this._removeTimers()}_initStyle(){this._defaultStyle={general:{disabled:this._generalClassName+"-disabled",focused:this._generalClassName+"-focused",normal:this._generalClassName,hovered:this._generalClassName+"-hovered",selected:this._generalClassName+"-selected"}}}attributeChangedCallback(t,e,i){super.attributeChangedCallback(t,e,i)}static get properties(){return{options:{type:Object},theme:{converter:{fromAttribute:t=>{switch((t=t.replace(/"|'/,"").replace(/"|'/,"")).toLowerCase()){case"office":return IntegralUITheme.Office;case"midnight":return IntegralUITheme.Midnight;default:return IntegralUITheme.None}},toAttribute:t=>{switch(t){case IntegralUITheme.Office:return"Office";case IntegralUITheme.Midnight:return"Midnight";default:return"None"}}},reflect:!0}}}get options(){return this._currentOptions}set options(t){const e=this._currentOptions;this._updateOptions(t);this.refresh();this.requestUpdate("options",e)}get theme(){return this._currentTheme}set theme(t){if(this._currentTheme!==t){const e=this._currentTheme;this._currentTheme=t;this._updateThemeSettings(t);this.requestUpdate("theme",e)}}_animateHide(){let t=this;t._removeAnimationTimer();setTimeout(function(){t._currentOpacity=1;t._currentPos={x:t._startPos.x,y:t._startPos.y};t._currentSize={width:t._tooltipSize.width,height:t._tooltipSize.height};let e={x:t._startPos.x+t._tooltipSize.width/2,y:t._startPos.y+t._tooltipSize.height/2},i=t._getAnimationFactor(),s=t._tooltipSize.width/(2*i),o=t._tooltipSize.height/(2*i),r=e.x-t._startPos.x;t._animationTimer=setInterval(function(){if(t._currentPos.x=e.x&&t._currentPos.y>=e.y){t._removeTimers();t._removeAnimationTimer();t._invokeEvent("closed")}},5)},1)}_animateShow(){let t=this;t._removeAnimationTimer();setTimeout(function(){t._currentOpacity=0;t._currentPos={x:t._startPos.x+t._tooltipSize.width/2,y:t._startPos.y+t._tooltipSize.height/2};t._currentSize={width:0,height:0};let e=t._getAnimationFactor(),i=t._tooltipSize.width/(2*e),s=t._tooltipSize.height/(2*e),o=t._currentPos.x-t._startPos.x;t._animationTimer=setInterval(function(){if(t._currentPos.x>t._startPos.x){t._currentPos.x-=i;t._currentSize.width+=2*i;t._currentOpacity=Math.abs(1-(t._currentPos.x-t._startPos.x)/o)}else{t._currentPos.x=t._startPos.x;t._currentSize.width=t._tooltipSize.width;t._currentOpacity=1}if(t._currentPos.y>t._startPos.y){t._currentPos.y-=s;t._currentSize.height+=2*s}else{t._currentPos.y=t._startPos.y;t._currentSize.height=t._tooltipSize.height}t.update();if(t._currentPos.x<=t._startPos.x&&t._currentPos.y<=t._startPos.y)t._removeAnimationTimer()},5)},1)}_getAnimationFactor(){let t=30;switch(this._currentOptions.animationSpeed){case IntegralUISpeedMode.VerySlow:t=50;break;case IntegralUISpeedMode.Slow:t=40;break;case IntegralUISpeedMode.Fast:t=20;break;case IntegralUISpeedMode.VeryFast:t=10;break;default:t=30}return t}_removeAnimationTimer(){if(this._animationTimer)clearInterval(this._animationTimer)}_updateOptions(t){if(t)this._currentOptions={allowAnimation:this._commonService.isFieldAvailable(t.allowAnimation,!0),animationSpeed:this._commonService.isFieldAvailable(t.animationSpeed,!0),autoPopDelay:this._commonService.isFieldAvailable(t.autoPopDelay,5e4),enabled:this._commonService.isFieldAvailable(t.enabled,!0),initialDelay:this._commonService.isFieldAvailable(t.initialDelay,500),position:this._commonService.isFieldAvailable(t.position,"mouse"),showMarker:this._commonService.isFieldAvailable(t.showMarker,!0),title:this._commonService.isFieldAvailable(t.title,"")};else this._currentOptions={allowAnimation:!0,animationSpeed:IntegralUISpeedMode.Normal,autoPopDelay:5e3,enabled:!0,initialDelay:500,position:"mouse",showMarker:!0,title:""}}_invokeEvent(t,e,i,s){let o=new CustomEvent(t,{detail:e,bubbles:void 0!==i?i:!1,composed:void 0!==s?s:!1});this.dispatchEvent(o);return e}_defaultFunc(){}_removeTimers(){if(this._showTimer){clearTimeout(this._showTimer);this._showTimer=null}if(this._popupTimer){clearTimeout(this._popupTimer);this._popupTimer=null}}close(){if(this._currentOptions.allowAnimation)this._animateHide();else{this._currentOpacity=0;this._currentPos={x:this._startPos.x,y:this._startPos.y};this._currentSize={width:this._currentOptions.width,height:this._tooltipSize.height};this._invokeEvent("closed");this.update()}}open(t,e){let i=this;i._startPos.y=-9999999;i._tooltipDisplay="block";i.update();let s=setTimeout(function(){i._tooltipSize=i._getSize();i._tooltipDisplay="none";i.update();i._removeTimers();if(i._currentOptions.enabled&&""!==i._currentOptions.title)i._showTimer=setTimeout(function(){i._show(t,e);i._popupTimer=setTimeout(function(){i.close();clearTimeout(i._popupTimer)},i._currentOptions.autoPopDelay);clearTimeout(i._showTimer)},i._currentOptions.initialDelay);clearTimeout(s)},1)}_show(t,e){this._startPos={x:this._mousePos.x,y:this._mousePos.y+24};switch(this._currentOptions.position){case"above":this._startPos={x:t.left+Math.floor((e.width-this._tooltipSize.width)/2),y:t.top-4-this._tooltipSize.height};break;case"below":this._startPos={x:t.left+Math.floor((e.width-this._tooltipSize.width)/2),y:t.bottom+4};break;case"left":this._startPos={x:t.left-4-this._tooltipSize.width,y:t.top+Math.floor((e.height-this._tooltipSize.height)/2)};break;case"right":this._startPos={x:t.right+4,y:t.top+Math.floor((e.height-this._tooltipSize.height)/2)};break;default:this._startPos={x:this._mousePos.x,y:this._mousePos.y+24}}this._tooltipDisplay="block";if(this._currentOptions.allowAnimation)this._animateShow();else{this._currentOpacity=1;this._currentPos={x:this._startPos.x,y:this._startPos.y};this._currentSize={width:this._tooltipSize.width,height:this._tooltipSize.height};this.update()}}_getSize(){return{width:(this._contentElem?this._contentElem.offsetWidth:0)+2,height:(this._contentElem?this._contentElem.offsetHeight:0)+2}}updateMousePos(t){this._mousePos=t}_getControlClass(){return this._ctrlClass}_updateControlClass(){this._ctrlClass={};this._ctrlClass["iui-tooltip"]=!0;if(this._currentOptions.showMarker)switch(this._currentOptions.position){case"above":this._ctrlClass["iui-tooltip-marker-bottom"]=!0;break;case"right":this._ctrlClass["iui-tooltip-marker-left"]=!0;break;case"below":this._ctrlClass["iui-tooltip-marker-top"]=!0;break;case"left":this._ctrlClass["iui-tooltip-marker-right"]=!0;break;default:this._defaultFunc()}if(!1===this._currentOptions.allowAnimation)this._ctrlClass["iui-tooltip-animation-none"]=!0}_updateThemeSettings(t){this._currentThemeSettings=css``;switch(t){case IntegralUITheme.Office:this._currentThemeSettings.cssText=this._commonService.replaceAll(iuiTooltipOfficeStyle.cssText,"../icons",this._currentResourcePath);break;case IntegralUITheme.Midnight:this._currentThemeSettings.cssText=this._commonService.replaceAll(iuiTooltipMidnightStyle.cssText,"../icons",this._currentResourcePath);break;default:this._currentThemeSettings.cssText=""}}firstUpdated(t){this._updateReferences()}refresh(){this._updateControlClass();this.update();this._updateReferences()}render(){return html`
    ${this._currentOptions.title}
    `}_updateReferences(){this._elemRef=this.shadowRoot.querySelector("div[data-ctrl=tooltip-win]");this._contentElem=this.shadowRoot.querySelector("#content")}}window.customElements.define("iui-tooltip-win",IntegralUITooltipWindow);class IntegralUITooltip extends IntegralUIBase{_init(){super._init();this._currentSettings=null;this._cmpRef=null;this._currentTheme=IntegralUITheme.None;this._currentThemeSettings=css``}connectedCallback(){}disconnectedCallback(){this._removeWindow()}attributeChangedCallback(t,e,i){super.attributeChangedCallback(t,e,i)}static get properties(){return{settings:{type:Object}}}get settings(){return this._currentSettings}set settings(t){if(this._currentSettings!==t){const e=this._currentSettings;this._currentSettings=t;this.requestUpdate("settings",e)}}_close(){if(this._cmpRef)this._cmpRef.close()}_getSize(){return{width:this._elemRef.offsetWidth,height:this._elemRef.offsetHeight}}_ctrlMouseEnter(t){if(this._isEnabled){this._addWindow();if(this._cmpRef){this._cmpRef.options=this._currentSettings;this._cmpRef.theme=this._currentTheme;this._cmpRef.updateMousePos(this._commonService.getMousePos(t));let e=this._elemRef.getBoundingClientRect();this._cmpRef.open(e,this._getSize());this._removeCtrl=this._removeCtrl.bind(this);this._cmpRef.addEventListener("closed",this._removeCtrl)}}}_ctrlMouseLeave(t){this._close();this._removeWindow()}_ctrlMouseMove(t){if(this._cmpRef)this._cmpRef.updateMousePos(this._commonService.getMousePos(t))}_removeCtrl(t){this._removeWindow()}_addWindow(){this._removeWindow();this._cmpRef=document.createElement("iui-tooltip-win",{is:IntegralUITooltipWindow});document.body.appendChild(this._cmpRef)}_removeWindow(){if(this._cmpRef){this._cmpRef.removeEventListener("closed",this._removeCtrl);this._cmpRef.parentNode.removeChild(this._cmpRef)}this._cmpRef=null}firstUpdated(t){this._updateReferences()}render(){return html`
    `}_updateReferences(){this._elemRef=this.shadowRoot.querySelector("div[data-ctrl=tooltip]")}}window.customElements.define("iui-tooltip",IntegralUITooltip);export default IntegralUITooltip;export{IntegralUITooltipWindow}; \ No newline at end of file diff --git a/icons/begins-with-dark.ico b/icons/begins-with-dark.ico new file mode 100644 index 0000000000000000000000000000000000000000..8c2d69c146ebfc07abc01668038df9884b2be104 GIT binary patch literal 1150 zcmeH`yA8rH6h$8r9gU%&cF7nXfe|Pv86j*yOP3KCAyl-CzzA$$&UNf4U1CZ^qT~Dg zzOk&BEqI+XR&U3p+1AWJW=ttH7tnXAPhzU3#L0KyNBgSz)CSN@)umc# o={HBoKfw(;XkqxCIraaXZ~tR1j++w?IIlCb?>yJU=vzzCF-i~t+Z(lG)fgo@5$1V&&3^F9AW>5@<)6n%N; z^SwJKQermaa?ZGW+t1C`X0`!RWO5!cV{f&{q&2q~<4+JmaL`DnJ`)}fZ-_;oiq!{I zU+uMJtr@C2);WqxZi}kdOX~^#UGZPh2D|5Rz@AG?}p5D{;?ikJ5Ip%N8#vh~V9{}GsY%{D2EGx_# Q+&=}{E2o-z)TR literal 0 HcmV?d00001 diff --git a/icons/between-white.ico b/icons/between-white.ico new file mode 100644 index 0000000000000000000000000000000000000000..6b5db956a300e0e5d405d515b930002680e152dc GIT binary patch literal 1150 zcmd6nI}XAy42C}>HkOKk6-JK6ZF&Tb)2)~23A(`)Y$8jRmDgBBe{BDcBvardYnqV# z!Rrh+;3*JFn9NH7(XN+_|14Wd>2O%rH7V?EaW=kG&0ETQZZvDY(z&K-?ddJgNY?I( z-Z-1DRei?yt&G=VCeGd)`^5SO5S3 literal 0 HcmV?d00001 diff --git a/icons/calendar-dark.ico b/icons/calendar-dark.ico new file mode 100644 index 0000000000000000000000000000000000000000..763cf1e00688414e14624b9ece40de92aa4af86c GIT binary patch literal 1150 zcmeHDISzm@3^NiNOU1y<$kX^K58)xjX>rv7I)tSIshp^GE(I9)LIC}WeFPQ&8$pUp z<{1EL^OTYP*+qs=h)&a7XL;HAulHS`m-}mv9->|HZI70wnpVz}X5$3wp&W6FEv?R} T_9%T#7k~FDnh72|55RB%yEV2u literal 0 HcmV?d00001 diff --git a/icons/calendar-white.ico b/icons/calendar-white.ico new file mode 100644 index 0000000000000000000000000000000000000000..3a07fdbf185efd7f31dd11c9a4d1e692828492ff GIT binary patch literal 1150 zcmZQzU<5(|0R|wcz>vYhz#zuJz@P!dKp~(AL>x#lFaYI*xFHzK2NLJbo%>HIHa0f? zPY#CJOO9TUo>BdfxEt!>2aCs%NdN!;p8s8-ZPfL9+H;$mYE^E2_q-p^bI!T<++4E|S0Z8D2W>fG)?;R)K#5AF&R|AwJzk-l zbMri}%>F{W4fSj5Hku54Wde&G7J3<48Q;xAsett)=Kr<4E?uzt4XAz60p&nTkig~)E~{Js1K7eBbjp4C#$<*?R!#`cPknh` z4M+DNU+$%SJwNrb_4Vqjkv;UU^?&%$h5QeC*83j(@%lbr`|sZOyvj8)5jekJTwi-p zzV_y+{VPxJO4%he3jdMu0`y)^eM7ouxoa5x=&MGp2kP$_x2)Yk+qv_K*(AvS4O%O+ RVe*|B^DIw?8=0s@x2+~;q9k?WuG8uf3jh4dKt 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%0A#_~&BYoc$|#;H6O5kahiq*Tty$__W8o*Vyn? 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⁢F4?W}uv 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 M$*IZKNt;Fd56py!(f|Me literal 0 HcmV?d00001 diff --git a/icons/close-24 - Copy.png b/icons/close-24 - Copy.png new file mode 100644 index 0000000000000000000000000000000000000000..dfd249c5c2476b04a5f65fbf801369d8bfb10d8d GIT binary patch literal 30272 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 literal 0 HcmV?d00001 diff --git a/icons/edit-white.ico b/icons/edit-white.ico new file mode 100644 index 0000000000000000000000000000000000000000..1e915cc84f5e692ebcc3a0bdc60af88c19577d6c GIT binary patch literal 1150 zcmbu9KS~2Z7{y;uNMVtf!ctR+SV}J70c=DYkKirD!h6_zhlSMISqe+QZdoD3e=Ej} zzh`z~8_A6B@|%yDo%g*ryRcG+yWbb%Q0ME?mZW`PiIwF#MdI0DW695)A%yT>231uB zQ|TA8hVfH!!7V_2zg?Xj=5 zpRj;uIEC0A&TL<6ziM8oDLtIozKy=gk#ZLM+1J{6UEirk5PKH)aE|6Iu6{Qs5Zl9< z?c2^VV}6#phRV?6C`@u%}Cm_#29}b#^6y6aQ8fT0yycWz4MZ!%d?}m z$Clh(_Fu%hW7~rv^DyyL0`_!d75kPFGcIW2uq%S ZzxKc8a=4L9f0j(Vzysdky(x4#{{a38yXOD^ literal 0 HcmV?d00001 diff --git a/icons/ends-with-white.ico b/icons/ends-with-white.ico new file mode 100644 index 0000000000000000000000000000000000000000..50b88f51ac08723d289ddd810dc0da196b4b1cd4 GIT binary patch literal 1150 zcmeH{y$!-J5Jo>FIvR_DIwfOd6iP})K%z+pqc8#;oy7=9ERYS%yCf$p6v^&E(ewR% zXFDe)(t;-hu{PQ-rH!O5kRmhYF%q@)YGjC6Qc6Ehj4?nDH=75xg#^bbHa}<3`Ru5b z`kzz(#rA}q_tseSexGZNeon(4cDB94VXj`2qxS(lG&OqHpwDM#{xDasm#pc(XiGi+ YdhK^@|9}tONixzI?(hPOjZEkM8(sSz@Bjb+ literal 0 HcmV?d00001 diff --git a/icons/equal-dark.ico b/icons/equal-dark.ico new file mode 100644 index 0000000000000000000000000000000000000000..5faf70fe3cf03fb9c8cd8be4fef039523ffd3bea GIT binary patch literal 1150 zcmZQzU<5(|0R|wcz>vYhz#zuJz@P!dKp~(AL>x#lFaYI*xFHzK2NM7P{~yIv2m@nd vV8V~548V>uKl1g02Lo#W?%qem^eBgCJv$ja5L7Q literal 0 HcmV?d00001 diff --git a/icons/equal-white.ico b/icons/equal-white.ico new file mode 100644 index 0000000000000000000000000000000000000000..6b6767f6c35e9471dd956f4d14413925f2ce1ec3 GIT binary patch literal 1150 zcmZQzU<5(|0R|wcz>vYhz#zuJz@P!dKp~(AL>x#lFaYI*xFHzK2NM7P{~yIv2!nIy w&iy9^qlY^wdO>Q@^$#?kQukA;f1v$8bnOR~0jT%@GXnz%!^F|~FmVtK0RG=C-T(jq literal 0 HcmV?d00001 diff --git a/icons/greater-than-dark.ico b/icons/greater-than-dark.ico new file mode 100644 index 0000000000000000000000000000000000000000..1198c13e2bbc3ccd02d857be09b39400f1cd2b99 GIT binary patch literal 1150 zcmZQzU<5(|0R|wcz>vYhz#zuJz@P!dKp~(AL>x#lFaYI*xFHzK2NM7P{~vVN*x2|# z2$SnJnEp{SAaP4+cu=B$r0E5vS(u;6O~3Tj2Py*?7=8lr4CXTF literal 0 HcmV?d00001 diff --git a/icons/greater-than-equal-dark.ico b/icons/greater-than-equal-dark.ico new file mode 100644 index 0000000000000000000000000000000000000000..08a19765429d2c197ccbce2b1640e1828a328908 GIT binary patch literal 1150 zcmd^+F$w}f3`L({XR}z?YH2?Q@H*bYBY3nu#Ddm#D~R#OA(dHnVbMm0KVe>eG8qOI zT1|uY9mgeXfW0InQn>;sw_a7f&)UrFL!}gRWw|LV>VMrM?u{AaJavxDpRwql#mt|v ztTtHY4;G%W7=Djq-l6>59&_sdt=9h_-aPal-{5zHUV5D1a)53Nx3gGV*;CBr`QDV1 JI_WBDWL{Y<&ZhtX literal 0 HcmV?d00001 diff --git a/icons/greater-than-equal-white.ico b/icons/greater-than-equal-white.ico new file mode 100644 index 0000000000000000000000000000000000000000..eb2d838dd0709cf2c1289efd1028ba259ae76fb5 GIT binary patch literal 1150 zcmd^+F$w}f3`L({XR}z?YUwS!j<@g#-fZ>|3tHQ)AjThuRA$+QMH?CZgn9YNWEfaz zH4WN#9G9>G_L7iD2ZR~0lF>R&SGt4PcfJ0ds9y8 Jq^qQnc>z1_F8crg literal 0 HcmV?d00001 diff --git a/icons/greater-than-white.ico b/icons/greater-than-white.ico new file mode 100644 index 0000000000000000000000000000000000000000..eafeeebd2cdabe6e1c56003fb6e7773a60cdbcd0 GIT binary patch literal 1150 zcmZQzU<5(|0R|wcz>vYhz#zuJz@P!dKp~(AL>x#lFaYI*xFHzK2NM7P{~vVt+_`iA zL6}^(!Ss)s0f}2m!-Eq2BTX+T&BFXlZu+IKK2RCJ!0;1@e*p2HdIpAn_CPUtAnu1^ RAR8nGlKb%=q86kFgaNb+C!hcT literal 0 HcmV?d00001 diff --git a/icons/less-than-dark.ico b/icons/less-than-dark.ico new file mode 100644 index 0000000000000000000000000000000000000000..2f0d5f0b1d3301e58d8429ce004484c0f3ffb6d7 GIT binary patch literal 1150 zcmZQzU<5(|0R|wcz>vYhz#zuJz@P!dKp~(AL>x#lFaYI*xFHzK2NM7P{~z?&*x2|# z2$SPhm|k-9k2JlY@TJ7hu=p7@12s>E8eV literal 0 HcmV?d00001 diff --git a/icons/less-than-equal-dark.ico b/icons/less-than-equal-dark.ico new file mode 100644 index 0000000000000000000000000000000000000000..b19f1bb76c6fc6609b5f59b6a3fd5e8d2f75cdc9 GIT binary patch literal 1150 zcmds%F$w}P5JjJ0x6NW<>z4L8fXC5Wc!WKI$MGoEVq+nWe_RGa2H1 OeC|5a%%riCVDJDxN6aMv literal 0 HcmV?d00001 diff --git a/icons/less-than-equal-white.ico b/icons/less-than-equal-white.ico new file mode 100644 index 0000000000000000000000000000000000000000..b86f63788358f06005fad277c26341ef0ec8a105 GIT binary patch literal 1150 zcmds%F$w}P5JjJ0x6NW<>z3ZaH1 OeC|5a%%riCVDJDne=KvYhz#zuJz@P!dKp~(AL>x#lFaYI*xFHzK2NM7P{~z@D+_`iA zL6{u3!t|1(f28RJg)b$3hQ-gQ8K`**79Ozh8C*1|3;^Q!KrGL|@Xwxs;ZHpS!;k+A W3?HEw#0H7|vxlews|AXI^Z@|PtS7Jl literal 0 HcmV?d00001 diff --git a/icons/not-contain-dark.ico b/icons/not-contain-dark.ico new file mode 100644 index 0000000000000000000000000000000000000000..fe5e42497456617d80ce9faf94d06c08f6467e2b GIT binary patch literal 1150 zcmd6nF%H5o5Ck_89Zf_*os!<4;vYPOx9}_~=ZrOywaQs^AZxwZy*VkBr6ta~D(+49 zlXR7I3q=)8@57{+UCv#f99OONFH}mYF8vM;?;5@B#ma%AB!AvQ{~Z4rHx2yEiALvb4lmSH*qP z<0M@r-9u4D)B7+fW|wo+s*8W~zGY_kjG4{YA03{~GkxaHd(QUgo%alv zx$~a0J$mOo!)5Ng=WLJOdCzc}JMZ~u4`y_@vE!Q=PCxoLGnn6bdjq8B*7e$@nc&(^ F(;IuRHqrn9 literal 0 HcmV?d00001 diff --git a/icons/not-equal-dark.ico b/icons/not-equal-dark.ico new file mode 100644 index 0000000000000000000000000000000000000000..42abf47a33d1371d89afd26876fed4ee5fec4555 GIT binary patch literal 1150 zcmZQzU<5(|0R|wcz>vYhz#zuJz@P!dKp~(AL>x#lFaYI*xFHzK2NM7P{~uJ?*x2|# z2$SnBn0{)QL5drY?InhdZZvYhz#zuJz@P!dKp~(AL>x#lFaYI*xFHzK2NM7P{~uKN+_`iA zL6}^3!SqwZ3{u>HY%eivbhC-kgRBN!KRTZjwdi_bd{WFnR!a;UW(SNWMh~(Ym_A}? zm_B0EVp9Xt52CTj6C(yQgBZ2+RRbym7#KbS@kb#33B(7OA^1-{1H(Ui1pohhpxS;Q KJ`d3Y(gy&X@H6TF literal 0 HcmV?d00001 diff --git a/icons/search-dark.ico b/icons/search-dark.ico new file mode 100644 index 0000000000000000000000000000000000000000..7dc3ce71ea6485401baa8acb3e437d8c2ce7874f GIT binary patch literal 1150 zcmbu9&uW7}5XL7~^iWB(lzOd%fM6gNDeWPUTVJ9Fb8MeLLoab z4{pCvSM25wNDbrcelx$BVKovB@Uv~g{haP}qBA1$VUVEIIvf#VC&#r_d)$N&y$r|& zY|)qFd|a2huD=b3!)L6o`qV)FHP~0*_r+u~5t^p`Ks!}yL{SvO)-ci7+Vi{z!!Vx4 z<8h^N4a>4#z|SR*+>ydbUd(1Q&i`^<_j@{>3ez;-!QM!gy=0Rl5k*lzsxMx%#x)$r z`M?}G*jq%~a|g>aS9xVwO0@N?ag8txMGyq{U6$9fceif~Hw%t&56<1eS22}Q_YKc- zJ3FsCx{CbSck)!edR~X-&-47y{4v)~(^Tv`KaMs1W1d+x#HtxqtJT)?>#$pAC+mQ> zWsRnf>?b|fw`Kl5kDR4ahq>jx{D148_y*vgATpv2Ud(I&J0f~CcUv|>9JX2Tw}a>x DYXzif literal 0 HcmV?d00001 diff --git a/icons/search-white.ico b/icons/search-white.ico new file mode 100644 index 0000000000000000000000000000000000000000..bf6c1a4471c9b2e27b13dc0672fe9da78d5935d5 GIT binary patch literal 1150 zcmbu9u}Z{15QgVau&}rwVr^+FiFk!@kbo~?kt_8XYC7iB*OPpZudn_MC1%ek=f=6BGir!xA;9D=iDgTwmpaW zSfA?gUBEM};Brh4^fPz@7x*F`cYBa4VHq^4)%86*Mmf!|;mZ81rx5#Wj>Qk^pP>6! zxHhjw_TF39wafF|rD^KXwdR8FjramL9dD_1)n!@si_U(IH!aIA)-K=A;Fx_ekTb}1|D3)0PY`r zpTHZyL=ll}oCYu}uTATnTkrigs$y7jZ_dtoqt7E#7F~7b$~^O2xjfb#-PI#Ms?D-9z1ht3-2MQdQH7ctKLu)}nl!Em MZDwtu$gRh;0JEGnS^xk5 literal 0 HcmV?d00001 diff --git a/package.json b/package.json index 8113465..98c4941 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "integralui-web-grid", - "version": "21.1.0", + "version": "21.4.0", "description": "IntegralUI Web - Grid is a native Web Component that displays tabular data sets", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" @@ -11,6 +11,15 @@ }, "keywords": [ "grid", + "datatable", + "datagrid", + "angular-grid", + "angular-table", + "react-grid", + "react-table", + "javascript-table", + "grouping", + "pagination", "components", "integralui", "ui", diff --git a/resources/icons.png b/resources/icons.png index 01d4eca6d76214180a4d8a0a34f8c75ea37c4060..d0b13ba5acef2b70408298e3161478b548ab09f1 100644 GIT binary patch delta 65195 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 G!T%3QV;o%o delta 65390 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%0A~Euq}#)I+9SBgu(wkPK5Z10J{Q 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 XG3$AnemwbrAeXebf>@2HVc`D&Hh(ps diff --git a/services/integralui.common.service.js b/services/integralui.common.service.js index 3b41b15..c075e91 100644 --- a/services/integralui.common.service.js +++ b/services/integralui.common.service.js @@ -1,6 +1,6 @@ /* filename: integralui.common.service.js - version : 21.1.0 + version : 21.4.0 Copyright © 2016-2021 Lidor Systems. All rights reserved. This file is part of the "IntegralUI Web" Library. @@ -12,4 +12,4 @@ This SOFTWARE is provided "AS IS", WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for the specific language governing rights and limitations under the License. Any infringement will be prosecuted under applicable laws. */ -class IntegralUICommonService{calcMargin(t){if(t)return{top:getComputedStyle(t)["margin-top"]?parseInt(getComputedStyle(t)["margin-top"],10):getComputedStyle(t).marginTop?parseInt(getComputedStyle(t).marginTop,10):0,right:getComputedStyle(t)["margin-right"]?parseInt(getComputedStyle(t)["margin-right"],10):getComputedStyle(t).marginRight?parseInt(getComputedStyle(t).marginRight,10):0,bottom:getComputedStyle(t)["margin-bottom"]?parseInt(getComputedStyle(t)["margin-bottom"],10):getComputedStyle(t).marginBottom?parseInt(getComputedStyle(t).marginBottom,10):0,left:getComputedStyle(t)["margin-left"]?parseInt(getComputedStyle(t)["margin-left"],10):getComputedStyle(t).marginLeft?parseInt(getComputedStyle(t).marginLeft,10):0};else return{top:0,right:0,bottom:0,left:0}}checkHit(t,e,r){if(t>=r.left&&t<=r.right&&e>=r.top&&e<=r.bottom)return!0;else return!1}checkNumInRange(t,e,r){return t>e-r&&t1)r-=1;if(r<1/6)return t+6*(e-t)*r;if(r<.5)return e;if(r<2/3)return t+(e-t)*(2/3-r)*6;else return t}convertRgbaToHex(t){let e="#";this.convertRgbaToNum(t,!0).forEach(t=>{t=t.toString(16);e+=1===t.length?"0"+t:t});return e}convertRgbaToHsl(t){let e,r,o=this.convertRgbaToNum(t,!0),n=o[0]/255,g=o[1]/255,i=o[2]/255,l=Math.max(n,g,i),a=Math.min(n,g,i),d=(l+a)/2;if(l===a)e=r=0;else{let t=l-a;r=d>.5?t/(2-l-a):t/(l+a);switch(l){case n:e=(g-i)/t+(gparseInt(t));if(e)r=r.filter((t,e)=>e<3);r.forEach(t=>this.setNumInRange(t,0,255));return r}convertHexToRgba(t){let e=0,r=0,o=0;if(4===(t=t.replace(/[.*+?^${}()|[\]\\]/g,"")).length){e=Number("0x"+t[1]+t[1]);r=Number("0x"+t[2]+t[2]);o=Number("0x"+t[3]+t[3])}else if(7===t.length){e=Number("0x"+t[1]+t[2]);r=Number("0x"+t[3]+t[4]);o=Number("0x"+t[5]+t[6])}return"rgba("+parseInt(e,10).toString()+","+parseInt(r,10).toString()+","+parseInt(o,10).toString()+",1)"}convertHslToRgba(t){let e=(t=(t=t.replace(/[.*+?^${}()|[\]\\]/g,"")).replace(String.fromCharCode(176),"").replace("%","").replace("%","")).split(",").filter((t,e)=>e<3).map(t=>parseInt(t)),r=e[0],o=e[1]/100,n=e[2]/100,g=0,i=0,l=0;if(0===o)g=i=l=n;else{let t=n<.5?n*(1+o):n+o-n*o,e=2*n-t;g=this.colorToRgb(e,t,r+1/3);i=this.colorToRgb(e,t,r);l=this.colorToRgb(e,t,r-1/3)}return"rgba("+(g=Math.round(255*g))+", "+(i=Math.round(255*i))+", "+(l=Math.round(255*l))+", 1)"}_defaultFunc(){}getBodyElem(t){let e=null;for(;t;){if(null===t.offsetParent){e=t;break}t=t.offsetParent}return e}getBorderWidth(t){if(t)return{top:getComputedStyle(t)["border-top-width"]?parseInt(getComputedStyle(t)["border-top-width"],10):getComputedStyle(t).borderTopWidth?parseInt(getComputedStyle(t).borderTopWidth,10):0,right:getComputedStyle(t)["border-right-width"]?parseInt(getComputedStyle(t)["border-right-width"],10):getComputedStyle(t).borderRightWidth?parseInt(getComputedStyle(t).borderRightWidth,10):0,bottom:getComputedStyle(t)["border-bottom-width"]?parseInt(getComputedStyle(t)["border-bottom-width"],10):getComputedStyle(t).borderTopWidth?parseInt(getComputedStyle(t).borderTopWidth,10):0,left:getComputedStyle(t)["border-left-width"]?parseInt(getComputedStyle(t)["border-left-width"],10):getComputedStyle(t).borderLeftWidth?parseInt(getComputedStyle(t).borderLeftWidth,10):0};else return{top:0,right:0,bottom:0,left:0}}getClientPos(t,e){let r=this.getShiftPos(),o=this.getMousePos(t);o.x-=r.x;o.y-=r.y;let n=this.getPageRect(e);return{x:o.x-n.left,y:o.y-n.top}}getColorAtPosition(t,e,r){if(t){const o=t.getImageData(e,r,1,1).data;return"rgba("+o[0]+","+o[1]+","+o[2]+",1)"}return""}getMargin(t){return t?this.calcMargin(t):{top:0,right:0,bottom:0,left:0}}getMouseOffsetPos(t,e){let r=this.getShiftPos(),o=this.getMousePos(t);o.x-=r.x;o.y-=r.y;let n=this.getPageRect(e);return{x:o.x-n.left,y:o.y-n.top}}getMousePos(t){return{x:t.pageX?t.pageX:t.originalEvent?t.originalEvent.pageX:0,y:t.pageY?t.pageY:t.originalEvent?t.originalEvent.pageY:0}}getObjFromListById(t,e){let r=null;if(t)for(let o=0;o0?document.body.scrollLeft:document.documentElement.scrollLeft>0?document.documentElement.scrollLeft:0,y:document.body.scrollTop>0?document.body.scrollTop:document.documentElement.scrollTop>0?document.documentElement.scrollTop:0}}getTouchData(t){return t.changedTouches?t.changedTouches:t.originalEvent?t.originalEvent.changedTouches:null}getUniqueId(t){let e=t||"-";function r(){return(65536*(1+Math.random())|0).toString(16).substring(1)}return r()+r()+e+r()+e+r()+e+r()+e+r()+r()+r()}isDate(t){return t&&"[object Date]"===Object.prototype.toString.call(t)&&!isNaN(t)}isTrue(t){return!1===t?!1:!0}isEmpty(t){return 0===Object.keys(t).length&&t.constructor===Object}isEqual(t,e){if(t&&e)return t.toString()===e.toString();else return!1}isFieldAvailable(t,e){return void 0!==t?t:e}isIndexInRange(t,e){return e?t>=0&&t=r.left&&t<=r.right&&e>=r.top&&e<=r.bottom)return!0;else return!1}checkNumInRange(t,e,r){return t>e-r&&t1)r-=1;if(r<1/6)return t+6*(e-t)*r;if(r<.5)return e;if(r<2/3)return t+(e-t)*(2/3-r)*6;else return t}convertRgbaToHex(t){let e="#";this.convertRgbaToNum(t,!0).forEach(t=>{t=t.toString(16);e+=1===t.length?"0"+t:t});return e}convertRgbaToHsl(t){let e,r,o=this.convertRgbaToNum(t,!0),n=o[0]/255,i=o[1]/255,g=o[2]/255,l=Math.max(n,i,g),a=Math.min(n,i,g),u=(l+a)/2;if(l===a)e=r=0;else{let t=l-a;r=u>.5?t/(2-l-a):t/(l+a);switch(l){case n:e=(i-g)/t+(iparseInt(t));if(e)r=r.filter((t,e)=>e<3);r.forEach(t=>this.setNumInRange(t,0,255));return r}convertHexToRgba(t){let e=0,r=0,o=0;if(4===(t=t.replace(/[.*+?^${}()|[\]\\]/g,"")).length){e=Number("0x"+t[1]+t[1]);r=Number("0x"+t[2]+t[2]);o=Number("0x"+t[3]+t[3])}else if(7===t.length){e=Number("0x"+t[1]+t[2]);r=Number("0x"+t[3]+t[4]);o=Number("0x"+t[5]+t[6])}return"rgba("+parseInt(e,10).toString()+","+parseInt(r,10).toString()+","+parseInt(o,10).toString()+",1)"}convertHslToRgba(t){let e=(t=(t=t.replace(/[.*+?^${}()|[\]\\]/g,"")).replace(String.fromCharCode(176),"").replace("%","").replace("%","")).split(",").filter((t,e)=>e<3).map(t=>parseInt(t)),r=e[0],o=e[1]/100,n=e[2]/100,i=0,g=0,l=0;if(0===o)i=g=l=n;else{let t=n<.5?n*(1+o):n+o-n*o,e=2*n-t;i=this.colorToRgb(e,t,r+1/3);g=this.colorToRgb(e,t,r);l=this.colorToRgb(e,t,r-1/3)}return"rgba("+(i=Math.round(255*i))+", "+(g=Math.round(255*g))+", "+(l=Math.round(255*l))+", 1)"}convertValue(t,e){let r=null!==t&&void 0!==t?t:null;if(e){let o=e.locales||"en-US",n=e.options||{};if(this.isNumber(r))r=Intl.NumberFormat(o,n).format(r);else if(this.isDate(r))r=Intl.DateTimeFormat(o,n).format(r);else r=this.convertValueToString(t)}else r=this.convertValueToString(t);return r}convertValueToString(t){return null!==t&&void 0!==t?t.toString():""}_defaultFunc(){}getBodyElem(t){let e=null;for(;t;){if(null===t.offsetParent){e=t;break}t=t.offsetParent}return e}getBorderWidth(t){if(t)return{top:getComputedStyle(t)["border-top-width"]?parseInt(getComputedStyle(t)["border-top-width"],10):getComputedStyle(t).borderTopWidth?parseInt(getComputedStyle(t).borderTopWidth,10):0,right:getComputedStyle(t)["border-right-width"]?parseInt(getComputedStyle(t)["border-right-width"],10):getComputedStyle(t).borderRightWidth?parseInt(getComputedStyle(t).borderRightWidth,10):0,bottom:getComputedStyle(t)["border-bottom-width"]?parseInt(getComputedStyle(t)["border-bottom-width"],10):getComputedStyle(t).borderTopWidth?parseInt(getComputedStyle(t).borderTopWidth,10):0,left:getComputedStyle(t)["border-left-width"]?parseInt(getComputedStyle(t)["border-left-width"],10):getComputedStyle(t).borderLeftWidth?parseInt(getComputedStyle(t).borderLeftWidth,10):0};else return{top:0,right:0,bottom:0,left:0}}getClientPos(t,e){let r=this.getShiftPos(),o=this.getMousePos(t);o.x-=r.x;o.y-=r.y;let n=this.getPageRect(e);return{x:o.x-n.left,y:o.y-n.top}}getColorAtPosition(t,e,r){if(t){const o=t.getImageData(e,r,1,1).data;return"rgba("+o[0]+","+o[1]+","+o[2]+",1)"}return""}getMargin(t){return t?this.calcMargin(t):{top:0,right:0,bottom:0,left:0}}getMouseOffsetPos(t,e){let r=this.getShiftPos(),o=this.getMousePos(t);o.x-=r.x;o.y-=r.y;let n=this.getPageRect(e);return{x:o.x-n.left,y:o.y-n.top}}getMousePos(t){return{x:t.pageX?t.pageX:t.originalEvent?t.originalEvent.pageX:0,y:t.pageY?t.pageY:t.originalEvent?t.originalEvent.pageY:0}}getObjFromListById(t,e){let r=null;if(t)for(let o=0;o0?document.body.scrollLeft:document.documentElement.scrollLeft>0?document.documentElement.scrollLeft:0,y:document.body.scrollTop>0?document.body.scrollTop:document.documentElement.scrollTop>0?document.documentElement.scrollTop:0}}getTouchData(t){return t.changedTouches?t.changedTouches:t.originalEvent?t.originalEvent.changedTouches:null}getUniqueId(t){let e=t||"-";function r(){return(65536*(1+Math.random())|0).toString(16).substring(1)}return r()+r()+e+r()+e+r()+e+r()+e+r()+r()+r()}isDate(t){return t&&"[object Date]"===Object.prototype.toString.call(t)&&!isNaN(t)}isTrue(t){return!1===t?!1:!0}isEmpty(t){return t&&0===Object.keys(t).length&&t.constructor===Object}isEqual(t,e){if(t&&e)return t.toString()===e.toString();else return!1}isFieldAvailable(t,e){return void 0!==t?t:e}isFunc(t){return t?"function"===typeof t||t instanceof Function:!1}isIndexInRange(t,e){return e?t>=0&&t=0&&e0)e=this.data[0];else for(let i=0;i=0&&e0)e=this.data[0];else for(let i=0;i=t.length)if(!1!==i)return e.substring(0,t.length)===t?!0:!1;else return e.toLowerCase().substring(0,t.length)===t.toLowerCase()?!0:!1;return!1}endsWith(e,t,i){if(void 0!==e&&void 0!==t&&this.isString(e)&&this.isString(t))if(e.length>=t.length)if(!1!==i)return e.substring(e.length-t.length,e.length)===t?!0:!1;else return e.toLowerCase().substring(e.length-t.length,e.length)===t.toLowerCase()?!0:!1;return!1}getFilterCondition(e,t){let i="abcdefghijklmnopqrstuvwxyz".indexOf(t);return e&&i>=0&&i":s=e>i;break;case">=":s=e>=i;break;case"<":s=e":if(this.isString(e)&&this.isString(i))s=!1!==l?e!==i:e.toLowerCase()!==i.toLowerCase();else s=e!==i;break;case"->":s=this.beginsWith(e,i,l);break;case"<-":s=this.endsWith(e,i,l);break;case"><":case"[]":s=this.isString(e)&&this.isString(i)?!1!==l?e.indexOf(i)>-1:e.toLowerCase().indexOf(i.toLowerCase())>-1:!1;break;default:s=!1}if(!0===r)s=!s}return s}getFilterResult(e,t,i,r){if(t){if(Array.isArray(t.value)){let l=[];for(let s=0;s=t.length)if(!1!==i)return e.substring(0,t.length)===t?!0:!1;else return e.toLowerCase().substring(0,t.length)===t.toLowerCase()?!0:!1;return!1}endsWith(e,t,i){if(void 0!==e&&void 0!==t&&this.isString(e)&&this.isString(t))if(e.length>=t.length)if(!1!==i)return e.substring(e.length-t.length,e.length)===t?!0:!1;else return e.toLowerCase().substring(e.length-t.length,e.length)===t.toLowerCase()?!0:!1;return!1}getFilterCondition(e,t){let i="abcdefghijklmnopqrstuvwxyz".indexOf(t);return e&&i>=0&&i":l=e>i;break;case">=":l=e>=i;break;case"<":l=e":if(this.isString(e)&&this.isString(i))l=!1!==s?e!==i:e.toLowerCase()!==i.toLowerCase();else l=e!==i;break;case"->":l=this.beginsWith(e,i,s);break;case"<-":l=this.endsWith(e,i,s);break;case"><":case"[]":l=this.isString(e)&&this.isString(i)?!1!==s?e.indexOf(i)>-1:e.toLowerCase().indexOf(i.toLowerCase())>-1:!1;break;case"][":l=!(l=this.isString(e)&&this.isString(i)?!1!==s?e.indexOf(i)>-1:e.toLowerCase().indexOf(i.toLowerCase())>-1:!1);break;default:l=!1}if(!0===r)l=!l}return l}getFilterResult(e,t,i,r){if(t){if(Array.isArray(t.value)){let s=[];for(let l=0;l div, .iui-grid-column-footer > div, .iui-grid-row-cell > div - { + .iui-grid-column-header > div, .iui-grid-column-filter > div, .iui-grid-column-footer > div, .iui-grid-row-cell > div { border: 2px solid transparent; margin: 0; padding: 2px; @@ -193,35 +215,34 @@ export const iuiGridDefaultStyle = css` /*text-overflow: ellipsis;*/ white-space2: nowrap; } - .iui-grid-column-header-cell-content, .iui-grid-column-footer-cell-content, .iui-grid-row-cell-label - { + .iui-grid-column-header-cell-content, .iui-grid-column-filter-cell-content, .iui-grid-column-footer-cell-content, .iui-grid-row-cell-label { display: inline; padding: 0 3px; vertical-align: middle; cursor: default; } - .iui-grid-row, .iui-grid-row-fixed - { - color: black; + .iui-grid-row, .iui-grid-row-fixed { + color: var(--grid-row-color, black); margin: 0; padding: 0; white-space: nowrap; z-index: 0; } - .iui-grid-row-hovered - { - background-color: #f5f5f5; - border: thin solid #efefef; - color: black; - } - .iui-grid-row-selected - { - background-color: #e5e5e5; - border: thin solid #dedede; - color: black; - } - .iui-grid-row-cell - { + .iui-grid-row-hovered { + animation-name: var(--grid-row-hovered-animation-name, none); + background: var(--grid-row-hovered-background, #f5f5f5); + border: var(--grid-row-hovered-border, thin solid #efefef); + border-color: var(--grid-row-hovered-border-color, #efefef); + color: var(--grid-row-hovered-color, black); + } + .iui-grid-row-selected { + animation-name: var(--grid-row-selected-animation-name, none); + background: var(--grid-row-selected-background, #e5e5e5); + border: var(--grid-row-selected-border, thin solid #dedede); + border-color: var(--grid-row-selected-border-color, #dedede); + color: var(--grid-row-selected-color, black); + } + .iui-grid-row-cell { border-left: thin solid transparent; border-right: thin solid transparent; border-bottom: thin solid transparent; @@ -229,25 +250,20 @@ export const iuiGridDefaultStyle = css` /*position: relative;*/ vertical-align: middle; } - .iui-grid-row-cell-content - { + .iui-grid-row-cell-content { border: 2px solid transparent; white-space: nowrap; } - .iui-grid-row-cell-content:focus - { + .iui-grid-row-cell-content:focus { outline: none !important; } - .iui-grid-row-cell-content-focused - { + .iui-grid-row-cell-content-focused { border: 2px solid gray !important; } - .iui-grid-cell-empty - { + .iui-grid-cell-empty { border: thin solid transparent !important; } - .iui-grid-expand-box - { + .iui-grid-expand-box { display: inline-block; width: 16px; height: 16px; @@ -282,49 +298,39 @@ export const iuiGridDefaultStyle = css` 0% { opacity: 1; } 100% { opacity: 0; } } - .iui-grid-expand-box-load - { + .iui-grid-expand-box-load { background: url(../icons/load.gif) no-repeat 0 0; } - .iui-grid-expand-box-open - { + .iui-grid-expand-box-open { background: url(../icons/expand.ico) no-repeat 0 0; } - .iui-grid-expand-box-open-disabled - { + .iui-grid-expand-box-open-disabled { background: url(../icons/expand-disabled.ico) no-repeat 0 0; } - .iui-grid-expand-box-close - { + .iui-grid-expand-box-close { background: url(../icons/collapse.ico) no-repeat 0 0; } - .iui-grid-expand-box-close-disabled - { + .iui-grid-expand-box-close-disabled { background: url(../icons/collapse-disabled.ico) no-repeat 0 0; } - .iui-grid-column-reorder-mark - { + .iui-grid-column-reorder-mark { position: absolute; pointer-events: none; } - .iui-grid-column-reorder-mark span - { + .iui-grid-column-reorder-mark span { background-repeat: no-repeat; display: inline-block; width: 16px; height: 16px; vertical-align: middle; } - .iui-grid-column-reorder-mark-left - { + .iui-grid-column-reorder-mark-left { background-image: url(../icons/move-left.ico); } - .iui-grid-column-reorder-mark-right - { + .iui-grid-column-reorder-mark-right { background-image: url(../icons/move-right.ico); } - .iui-grid-column-reorder-tooltip - { + .iui-grid-column-reorder-tooltip { background: -webkit-linear-gradient(white, #F1EFEC); background: -moz-linear-gradient(white, #F1EFEC); background: -ms-linear-gradient(white, #F1EFEC); @@ -345,137 +351,115 @@ export const iuiGridDefaultStyle = css` max-width: 200px; z-index: 999; } - .iui-grid-column-reorder-tooltip span - { + .iui-grid-column-reorder-tooltip span { display: inline-block; padding: 3px; margin: 0 2px 0 0; vertical-align: middle; } - .iui-grid-column-header-left, .iui-grid-column-footer-left - { + .iui-grid-column-header-left, .iui-grid-column-filter-left, .iui-grid-column-footer-left { border-right: 1px solid #ababab; } - .iui-grid-column-header-right, .iui-grid-column-footer-right - { + .iui-grid-column-header-right, .iui-grid-column-filter-right, .iui-grid-column-footer-right { border-left: 1px solid #ababab; } - .iui-grid-rows-left, .iui-grid-rows-left-top, .iui-grid-rows-left-bottom - { + .iui-grid-rows-left, .iui-grid-rows-left-top, .iui-grid-rows-left-bottom { border-right: 1px solid #ababab; } - .iui-grid-rows-right, .iui-grid-rows-right-top, .iui-grid-rows-right-bottom - { + .iui-grid-rows-right, .iui-grid-rows-right-top, .iui-grid-rows-right-bottom { border-left: 1px solid #ababab; } - .iui-grid-rows-top-block - { + .iui-grid-rows-top-block { background: #f6f6f6; border-bottom: thin solid #efefef; } - .iui-grid-rows-bottom-block - { + .iui-grid-rows-bottom-block { background: #f6f6f6; border-top: thin solid #c5c5c5; z-index: 2; } - .iui-grid-rows-bottom-block .iui-grid-row:last-child .iui-grid-lines-both - { + .iui-grid-rows-bottom-block .iui-grid-row:last-child .iui-grid-lines-both { border-bottom: 0; } - .iui-grid-row-cell:first-child - { + .iui-grid-row-cell:first-child { border-left: thin solid #d5d5d5; } - .iui-grid-row-cell:last-child - { + .iui-grid-row-cell:last-child { border-right: thin solid #d5d5d5; } - .iui-grid-lines-none - { + .iui-grid-lines-none { border-color: transparent !important; } - .iui-grid-lines-horizontal:not(:last-child) - { + .iui-grid-lines-horizontal:not(:last-child) { border-left-color: transparent; border-right-color: transparent; border-bottom-color: #d5d5d5; } - .iui-grid-lines-horizontal:last-child - { + .iui-grid-lines-horizontal:last-child { border-left-color: transparent; border-bottom-color: #d5d5d5; } - .iui-grid-lines-vertical - { + .iui-grid-lines-vertical { border-right-color: #d5d5d5; } - .iui-grid-column-header .iui-grid-lines-vertical, .iui-grid-column-footer .iui-grid-lines-vertical - { + .iui-grid-column-header .iui-grid-lines-vertical, .iui-grid-column-filter .iui-grid-lines-vertical, .iui-grid-column-footer .iui-grid-lines-vertical { border-left-color: #d5d5d5; border-right-color: #d5d5d5; } - .iui-grid-row:last-child .iui-grid-lines-vertical - { + .iui-grid-row:last-child .iui-grid-lines-vertical { border-bottom-color: #d5d5d5; } - .iui-grid-lines-both - { + .iui-grid-lines-both { border-right-color: #d5d5d5; border-bottom-color: #d5d5d5; } - .iui-grid-column-header .iui-grid-lines-both, .iui-grid-column-footer .iui-grid-lines-both - { + .iui-grid-column-header .iui-grid-lines-both, .iui-grid-column-filter .iui-grid-lines-both, .iui-grid-column-footer .iui-grid-lines-both { border-left-color: #d5d5d5; border-right-color: #d5d5d5; border-bottom-color: #d5d5d5; } /* Grouping */ - .iui-grid-grouping-panel - { - background-color: #f0f0f0; - border-bottom: thin solid #d5d5d5; + .iui-grid-grouping-panel { + background: var(--grid-grouping-panel-background, #f0f0f0); + border: var(--grid-grouping-panel-border, 0); + border-bottom: var(--grid-grouping-panel-border-bottom, thin solid #d5d5d5); + color: var(--grid-grouping-panel-color, black); margin: 0; - padding: 3px; + padding: var(--grid-grouping-panel-padding, 3px); position: absolute; top: 0; white-space: nowrap; width: 100%; } - .iui-grid-grouping-panel-item - { - background-color: #dedede; + .iui-grid-grouping-panel-item { + background: var(--grid-grouping-panel-item-background, #dedede); + border: var(--grid-grouping-panel-item-border, thin solid #bebebe); display: inline-block; - border: thin solid #bebebe; - border-radius: 3px; - margin: 2px 3px; + border-radius: var(--grid-grouping-panel-item-border-radius, 3px); + margin: var(--grid-grouping-panel-item-margin, 2px 3px); /*overflow: hidden;*/ - padding: 2px 5px; + padding: var(--grid-grouping-panel-item-padding, 2px 5px); position: relative; } - .iui-grid-grouping-panel-item-disabled - { - color: gray; + .iui-grid-grouping-panel-item-disabled { + color: var(--grid-grouping-panel-item-disabled-color, gray); } - .iui-grid-grouping-panel-item-label - { + .iui-grid-grouping-panel-item-label { display: inline-block; overflow: hidden; padding: 0; margin: 0 0 2px 0; vertical-align: middle; } - .iui-grid-grouping-panel-toolbar - { + .iui-grid-grouping-panel-toolbar { display: inline-block; overflow: hidden; padding: 0; margin: 0; vertical-align: middle; } - .iui-grid-grouping-panel-toolbar-button-add - { + .iui-grid-grouping-panel-toolbar-button-add { background: #dedede; border: thin solid #bebebe; border-radius: 3px; @@ -485,12 +469,10 @@ export const iuiGridDefaultStyle = css` padding: 0; vertical-align: middle; } - .iui-grid-grouping-panel-toolbar-button-add:hover - { + .iui-grid-grouping-panel-toolbar-button-add:hover { opacity: 1; } - .iui-grid-grouping-panel-toolbar-button-add > span - { + .iui-grid-grouping-panel-toolbar-button-add > span { background-image: url(../icons/plus-24.png); display: inline-block; overflow: hidden; @@ -500,8 +482,7 @@ export const iuiGridDefaultStyle = css` height: 24px; vertical-align: middle; } - .iui-grid-grouping-panel-item-button - { + .iui-grid-grouping-panel-item-button { background-image: url(../icons/close-dark.ico); display: inline-block; overflow: hidden; @@ -511,30 +492,27 @@ export const iuiGridDefaultStyle = css` height: 16px; vertical-align: middle; } - .iui-grid-grouping-marker::before - { + .iui-grid-grouping-marker::before { content: ""; - border: 6px solid #dedede; - border-color: transparent transparent transparent #ababab; + border: var(--grid-grouping-marker-before-border, 6px solid #dedede); + border-color: var(--grid-grouping-marker-before-border-color, transparent transparent transparent #ababab); position: absolute; top: 25%; right: -12px; width: 0; height: 0; } - .iui-grid-grouping-marker::after - { + .iui-grid-grouping-marker::after { content: ""; - border: 6px solid #dedede; - border-color: transparent transparent transparent #dedede; + border: var(--grid-grouping-marker-after-border, 6px solid #dedede); + border-color: var(--grid-grouping-marker-after-border-color, transparent transparent transparent #dedede); position: absolute; top: 25%; right: -11px; width: 0; height: 0; } - .iui-grid-grouping-panel-dropdown-list - { + .iui-grid-grouping-panel-dropdown-list { cursor: default; margin: 0; overflow: auto; @@ -544,16 +522,13 @@ export const iuiGridDefaultStyle = css` width: auto; height: auto; } - .iui-grid-grouping-panel-dropdown-list li - { + .iui-grid-grouping-panel-dropdown-list li { padding: 5px; } - .iui-grid-grouping-panel-dropdown-list li:hover - { + .iui-grid-grouping-panel-dropdown-list li:hover { background: #e5e5e5; } - .iui-grid-grouping-panel-dropdown-list-checkbox - { + .iui-grid-grouping-panel-dropdown-list-checkbox { /*background: url('') no-repeat 0 0;*/ display: inline-block; padding: 0; @@ -562,31 +537,27 @@ export const iuiGridDefaultStyle = css` height: 16px; vertical-align: middle; } - .iui-grid-grouping-panel-dropdown-list-checkbox-true - { + .iui-grid-grouping-panel-dropdown-list-checkbox-true { background-image: url(../icons/check-mark-dark.ico); } /* Disabled State */ - .iui-grid-disabled div - { - opacity: 0.75; + .iui-grid-disabled div { + opacity: var(--grid-disabled-opacity, 0.75); pointer-events: none; } /* Animation */ - .iui-grid-column-animate - { + .iui-grid-column-animate { border: 0; background-color: transparent; box-shadow: none; overflow: hidden; position: relative; } - .iui-grid-column-animate-enter - { + .iui-grid-column-animate-enter { animation-name: grid-column-animate-enter; animation-delay: 0s; animation-direction: normal; @@ -596,8 +567,7 @@ export const iuiGridDefaultStyle = css` animation-play-state: running; animation-timing-function: linear; } - @keyframes grid-column-animate-enter - { + @keyframes grid-column-animate-enter { 0% { border: thin solid transparent; box-shadow: none; @@ -607,8 +577,7 @@ export const iuiGridDefaultStyle = css` box-shadow: 2px 3px 3px #cecece; } } - .iui-grid-column-animate-select-block - { + .iui-grid-column-animate-select-block { display: block; pointer-events: none; position: absolute; @@ -616,8 +585,7 @@ export const iuiGridDefaultStyle = css` top: 0; z-index: 9; } - .iui-grid-column-animate-select - { + .iui-grid-column-animate-select { background: #d5d5d5; display: block; left: 0; @@ -625,8 +593,7 @@ export const iuiGridDefaultStyle = css` opacity: 0; top: 0; } - .iui-grid-column-animate-select-left - { + .iui-grid-column-animate-select-left { animation-name: grid-column-animate-select-left; animation-delay: 0s; animation-direction: normal; @@ -636,8 +603,7 @@ export const iuiGridDefaultStyle = css` animation-play-state: running; animation-timing-function: linear; } - @keyframes grid-column-animate-select-left - { + @keyframes grid-column-animate-select-left { 0% { left: 100%; opacity: 0.5; @@ -649,8 +615,7 @@ export const iuiGridDefaultStyle = css` width: 100%; } } - .iui-grid-column-animate-select-right - { + .iui-grid-column-animate-select-right { animation-name: grid-column-animate-select-right; animation-delay: 0s; animation-direction: normal; @@ -660,8 +625,7 @@ export const iuiGridDefaultStyle = css` animation-play-state: running; animation-timing-function: linear; } - @keyframes grid-column-animate-select-right - { + @keyframes grid-column-animate-select-right { 0% { width: 0; opacity: 0.5; @@ -673,8 +637,7 @@ export const iuiGridDefaultStyle = css` } - .iui-grid-row-animate - { + .iui-grid-row-animate { border: 0; background-color: transparent; box-shadow: none; @@ -682,8 +645,7 @@ export const iuiGridDefaultStyle = css` overflow: hidden; position: relative; } - .iui-grid-row-animate-enter - { + .iui-grid-row-animate-enter { animation-name: grid-row-animate-enter; animation-delay: 0s; animation-direction: normal; @@ -693,8 +655,7 @@ export const iuiGridDefaultStyle = css` animation-play-state: running; animation-timing-function: linear; } - @keyframes grid-row-animate-enter - { + @keyframes grid-row-animate-enter { 0% { border: thin solid transparent; box-shadow: none; @@ -704,8 +665,7 @@ export const iuiGridDefaultStyle = css` box-shadow: 2px 3px 3px #cecece; } } - .iui-grid-row-animate-select-block - { + .iui-grid-row-animate-select-block { display: block; pointer-events: none; position: absolute; @@ -713,8 +673,7 @@ export const iuiGridDefaultStyle = css` top: 0; z-index: 9; } - .iui-grid-row-animate-select - { + .iui-grid-row-animate-select { background: #f5f5f5; display: block; left: 0; @@ -722,8 +681,7 @@ export const iuiGridDefaultStyle = css` opacity: 0; top: 0; } - .iui-grid-row-animate-select-left - { + .iui-grid-row-animate-select-left { animation-name: grid-row-animate-select-left; animation-delay: 0s; animation-direction: normal; @@ -733,8 +691,7 @@ export const iuiGridDefaultStyle = css` animation-play-state: running; animation-timing-function: linear; } - @keyframes grid-row-animate-select-left - { + @keyframes grid-row-animate-select-left { 0% { left: 100%; opacity: 0.5; @@ -746,8 +703,7 @@ export const iuiGridDefaultStyle = css` width: 100%; } } - .iui-grid-row-animate-select-right - { + .iui-grid-row-animate-select-right { animation-name: grid-row-animate-select-right; animation-delay: 0s; animation-direction: normal; @@ -757,8 +713,7 @@ export const iuiGridDefaultStyle = css` animation-play-state: running; animation-timing-function: linear; } - @keyframes grid-row-animate-select-right - { + @keyframes grid-row-animate-select-right { 0% { width: 0; opacity: 0.5; @@ -781,8 +736,9 @@ export const iuiGridDefaultStyle = css` */ + /* Drag Drop Column */ .iui-grid-handle { - background-image: var(--grid-background-image, url(../icons/grab.ico)); + background-image: var(--grid-handle-background-image, url(../icons/grab.ico)); background-repeat: repeat; cursor: var(--grid-handle-cursor, grab); display: block; @@ -792,4 +748,30 @@ export const iuiGridDefaultStyle = css` vertical-align: middle; width: var(--grid-handle-width, 16px); } + + /* Editing Column */ + .iui-grid-editing { + background-repeat: repeat; + cursor: var(--grid-editing-cursor, default); + display: block; + height: var(--grid-editing-height, 16px); + margin: var(--grid-editing-margin, 2px 0); + opacity: 0.25; + padding: 0; + vertical-align: middle; + width: var(--grid-editing-width, 16px); + } + .iui-grid-editing:hover { + background-image: var(--grid-editing-background-image, url(../icons/edit.ico)); + opacity: 0.25; + } + .iui-grid-editing-active { + background-image: var(--grid-editing-background-image, url(../icons/edit.ico)); + opacity: 1; + } + .iui-grid-editing-active:hover { + opacity: 1 !important; + } `; + +export { iuiGridDefaultStyle }; diff --git a/styles/integralui.header.style.js b/styles/integralui.header.style.js index 42f9659..37f3ba7 100644 --- a/styles/integralui.header.style.js +++ b/styles/integralui.header.style.js @@ -1,12 +1,15 @@ import { c as css } from '../external/lit-element.js'; -export const iuiHeaderDefaultStyle = css` +const iuiHeaderDefaultStyle = css` /* Normal State */ .iui-header { overflow: hidden; position: relative; } + .iui-header:focus { + outline: none !important; + } .iui-header-move-marker { border: thin solid red; @@ -17,7 +20,9 @@ export const iuiHeaderDefaultStyle = css` } .iui-header-label { display: inline-block; + margin: var(--header-label-margin, 0); padding: var(--header-label-padding, 1px); + text-align: var(--header-label-text-align, left); } .iui-header-label-empty { display: block; @@ -142,6 +147,17 @@ export const iuiHeaderDefaultStyle = css` 100% { max-width: 0; left: 7px; } } + .iui-header-expand-box-calendar + { + background-image: url(../icons/calendar-dark.ico); + display: block; + height: 16px; + margin: var(--header-expand-box-margin, 2px); + position: absolute; + right: var(--header-expand-box-right, 0); + top: var(--header-expand-box-top, 0); + width: 16px; + } .iui-header-expand-box-arrow @@ -377,4 +393,6 @@ export const iuiHeaderDefaultStyle = css` 0% { max-width: 10px; } 100% { max-width: 0; } } -`; \ No newline at end of file +`; + +export { iuiHeaderDefaultStyle }; diff --git a/styles/integralui.item.style.js b/styles/integralui.item.style.js index 8942f66..a39ae25 100644 --- a/styles/integralui.item.style.js +++ b/styles/integralui.item.style.js @@ -1,6 +1,6 @@ import { c as css } from '../external/lit-element.js'; -export const iuiItemDefaultStyle = css` +const iuiItemDefaultStyle = css` .iui-item { background: var(--item-background, transparent); border: var(--item-border, thin solid transparent); @@ -38,4 +38,6 @@ export const iuiItemDefaultStyle = css` overflow: hidden; position: relative; } -`; \ No newline at end of file +`; + +export { iuiItemDefaultStyle }; diff --git a/styles/integralui.list.style.js b/styles/integralui.list.style.js index 94a54bd..ca450ec 100644 --- a/styles/integralui.list.style.js +++ b/styles/integralui.list.style.js @@ -1,16 +1,23 @@ import { c as css } from '../external/lit-element.js'; -export const iuiListDefaultStyle = css` - .iui-list - { +const iuiListDefaultStyle = css` + .iui-list { background: var(--list-background, white); border: var(--list-border, thin solid #cecece); + border-color: var(--list-border-color, #cecece); + border-radius: var(--list-border-radius, 1px); + border-width: var(--list-border-width, thin); color: var(--list-color, black); cursor: var(--list-cursor, default); + display: var(--list-display, block); + float: var(--list-float, none); + height: var(--list-height, auto); margin: var(--list-margin, 0); + opacity: var(--list-opacity, 1); overflow: hidden; padding: var(--list-padding, 1px); - position: relative; + position: var(--list-position, relative); + width: var(--list-width, auto); -webkit-user-select: none; -khtml-user-select: none; @@ -50,3 +57,5 @@ export const iuiListDefaultStyle = css` pointer-events: none; } `; + +export { iuiListDefaultStyle }; diff --git a/styles/integralui.listitem.style.js b/styles/integralui.listitem.style.js index bdd41cc..5ae7ec5 100644 --- a/styles/integralui.listitem.style.js +++ b/styles/integralui.listitem.style.js @@ -1,15 +1,24 @@ import { c as css } from '../external/lit-element.js'; -export const iuiListItemDefaultStyle = css` +const iuiListItemDefaultStyle = css` .iui-listitem { background: var(--listitem-background, transparent); border: var(--listitem-border, 2px solid transparent); + border-color: var(--listitem-border-color, transparent); + border-radius: var(--listitem-border-radius, 1px); + border-width: var(--listitem-border-width, 2px); color: var(--listitem-color, black); + cursor: var(--listitem-cursor, default); + display: var(--listitem-display, block); + height: var(--listitem-height, auto); list-style-type: none; - overflow: hidden; margin: var(--listitem-margin, 0); + opacity: var(--listitem-opacity, 1); + overflow: hidden; padding: var(--listitem-padding, 0); - white-space: nowrap; + position: var(--listitem-position, relative); + white-space: var(--listitem-white-space, nowrap); + width: var(--listitem-width, auto); } .iui-listitem-general { list-style-type: none; @@ -181,3 +190,5 @@ export const iuiListItemDefaultStyle = css` } } `; + +export { iuiListItemDefaultStyle }; diff --git a/styles/integralui.menuitem.style.js b/styles/integralui.menuitem.style.js new file mode 100644 index 0000000..afa9105 --- /dev/null +++ b/styles/integralui.menuitem.style.js @@ -0,0 +1,347 @@ +import { c as css } from '../external/lit-element.js'; + +const iuiMenuItemDefaultStyle = css` + .iui-menu { + background: var(--menu-background, #f5f5f5); + border: var(--menu-border, 0); + border-color: var(--menu-border-color, transparent); + border-radius: var(--menu-border-radius, 1px); + border-width: var(--menu-border-width, thin); + color: var(--menu-color, black); + cursor: var(--menu-cursor, default); + display: var(--menu-display, block); + float: var(--menu-float, none); + height: var(--menu-height, auto); + margin: var(--menu-margin, 0); + opacity: var(--menu-opacity, 1); + overflow: hidden; + padding: var(--menu-padding, 0); + position: var(--menu-position, relative); + width: var(--menu-width, auto); + } + .iui-menu-block, .iui-menuitem-block, .iui-contextmenuitem-block + { + background: transparent; + list-style-type: none; + margin: 0; + padding: 3px; + position: relative; + } + .iui-menuitem-block, .iui-contextmenuitem-block + { + background: #f5f5f5; + border: solid thin #dedede; + margin: 0; + padding: 1px; + position: absolute; + z-index: 999; + } + .iui-menuitem-root, .iui-contextmenuitem-root + { + background: none; + border: thin solid transparent; + color: black; + display: inline-block; + position: relative; + list-style-type: none; + width: var(--menuitem-root-margin, 0 3px); + padding: 5px 6px 5px 4px; + white-space: nowrap; + width: var(--menuitem-root-width, auto); + } + .iui-menuitem-root-vertical, .iui-contextmenuitem-root-vertical + { + border: thin solid transparent; + display: block; + position: relative; + list-style-type: none; + margin: 3px 0; + padding: 5px 6px; + white-space: nowrap; + } + .iui-menuitem-root-disabled, .iui-menuitem-disabled, , .iui-contextmenuitem-root-disabled, .iui-contextmenuitem-disabled + { + opacity: 0.6; + pointer-events: none; + } + .iui-menuitem-root-hovered, .iui-menuitem-root-selected, .iui-contextmenuitem-root-hovered, .iui-contextmenuitem-root-selected + { + background: #e5e5e5; + border-color: #dedede; + } + .iui-menuitem-hovered, .iui-menuitem-selected, .iui-contextmenuitem-hovered, .iui-contextmenuitem-root-selected + { + background: #ededed; + border-color: #e5e5e5; + } + .iui-menuitem-root-content, .iui-contextmenuitem-root-content + { + display: inline-block; + padding: 0 2px; + vertical-align: middle; + } + .iui-menuitem-content, .iui-contextmenuitem-content + { + display: inline-block; + vertical-align: middle; + } + .iui-menuitem-root:first-of-type, .iui-contextmenuitem-root:first-of-type + { + margin: auto 0; + } + + .iui-menuitem-root:last-of-type, .iui-contextmenuitem-root:last-of-type + { + margin-right: 0; + } + .iui-menu-marker-expand-space + { + padding-right: 20px; + } + .iui-menu-marker-expand-space-rtl + { + padding-left: 20px; + } + .iui-menu-marker-expand-down::before + { + content: ""; + border: 4px solid #ababab; + border-color: #ababab transparent transparent transparent; + position: absolute; + top: 45%; + right: 5px; + width: 0; + height: 0; + } + .iui-menu-marker-expand-down::after + { + content: ""; + border: 4px solid transparent; + border-color: transparent transparent transparent transparent; + position: absolute; + top: 45%; + right: 5px; + width: 0; + height: 0; + } + .iui-menu-marker-expand-down-rtl::before + { + content: ""; + border: 4px solid #ababab; + border-color: #ababab transparent transparent transparent; + position: absolute; + top: 45%; + left: 5px; + width: 0; + height: 0; + } + .iui-menu-marker-expand-down-rtl::after + { + content: ""; + border: 4px solid transparent; + border-color: transparent transparent transparent transparent; + position: absolute; + top: 45%; + left: 5px; + width: 0; + height: 0; + } + .iui-menu-marker-expand-right::before + { + content: ""; + border: 4px solid #ababab; + border-color: transparent transparent transparent #ababab; + position: absolute; + top: 35%; + left: 92%; + width: 0; + height: 0; + } + .iui-menu-marker-expand-right::after + { + content: ""; + border: 4px solid transparent; + border-color: transparent transparent transparent transparent; + position: absolute; + top: 35%; + left: 92%; + width: 0; + height: 0; + } + .iui-menu-marker-expand-left::before + { + content: ""; + border: 4px solid #ababab; + border-color: transparent #ababab transparent transparent; + position: absolute; + top: 35%; + left: 2%; + width: 0; + height: 0; + } + .iui-menu-marker-expand-left::after + { + content: ""; + border: 4px solid transparent; + border-color: transparent transparent transparent transparent; + position: absolute; + top: 35%; + left: 2%; + width: 0; + height: 0; + } + .iui-menu-marker-top::before + { + content: ""; + border: 4px solid #fefefe; + border-color: transparent transparent #1e4691 transparent; + position: absolute; + top: -9px; + left: 10px; + width: 0; + height: 0; + } + .iui-menu-marker-top::after + { + content: ""; + border: 4px solid #fefefe; + border-color: transparent transparent #fefefe transparent; + position: absolute; + top: -8px; + left: 10px; + width: 0; + height: 0; + } + .iui-menu-marker-top-rtl::before + { + content: ""; + border: 4px solid #fefefe; + border-color: transparent transparent #1e4691 transparent; + position: absolute; + top: -9px; + right: 10px; + width: 0; + height: 0; + } + .iui-menu-marker-top-rtl::after + { + content: ""; + border: 4px solid #fefefe; + border-color: transparent transparent #fefefe transparent; + position: absolute; + top: -8px; + right: 10px; + width: 0; + height: 0; + } + .iui-menu-marker-left::before + { + content: ""; + border: 4px solid #fefefe; + border-color: transparent #1e4691 transparent transparent; + position: absolute; + top: 12px; + left: -9px; + } + .iui-menu-marker-left::after + { + content: ""; + border: 4px solid #fefefe; + border-color: transparent #fefefe transparent transparent; + position: absolute; + top: 12px; + left: -8px; + } + .iui-menu-marker-right::before + { + content: ""; + border: 4px solid #fefefe; + border-color: transparent transparent transparent #1e4691; + position: absolute; + top: 12px; + right: -9px; + } + .iui-menu-marker-right::after + { + content: ""; + border: 4px solid #fefefe; + border-color: transparent transparent transparent #fefefe; + position: absolute; + top: 12px; + right: -8px; + } + + + .iui-menuitem, .iui-contextmenuitem + { + border: thin solid transparent; + display: block; + list-style-type: none; + margin: 1px 0; + padding: 3px 4px 3px 2px; + position: relative; + white-space: nowrap; + width: var(--menuitem-width, auto); + } + .iui-contextmenuitem { + padding: 5px 6px 5px 4px; + } + .iui-menuitem:first-of-type, .iui-contextmenuitem:first-of-type + { + margin-top: 0; + } + .iui-menuitem:last-of-type, .iui-contextmenuitem:last-of-type + { + margin-bottom: 0; + } + .iui-menuitem-expand, .iui-contextmenuitem-expand + { + background-position: -14px 0px; + } + .iui-menuitem-root-separator, .iui-menuitem-separator, .iui-contextmenuitem-root-separator, .iui-contextmenuitem-separator + { + background: transparent; + border: 0; + margin: 0; + padding: 3px; + } + .iui-menuitem-root-separator > hr, .iui-menuitem-separator > hr, .iui-contextmenuitem-root-separator > hr, .iui-contextmenuitem-separator > hr + { + background: #e5e5e5; + border: 0; + margin: 0; + padding: 0; + height: 1px; + } + .iui-menu-load + { + background: transparent; + display: inline-block; + width: 16px; + height: 16px; + position: absolute; + top: 0; + right: 2px; + vertical-align: middle; + } + .iui-menu-load-rtl + { + background: transparent; + display: inline-block; + width: 16px; + height: 16px; + position: absolute; + top: 0; + left: 2px; + vertical-align: middle; + } + + /* Disabled State */ + .iui-menu-disabled div + { + opacity: 0.75; + pointer-events: none; + } +`; + +export { iuiMenuItemDefaultStyle }; diff --git a/styles/integralui.numeric.style.js b/styles/integralui.numeric.style.js index 0b012ec..2357d2c 100644 --- a/styles/integralui.numeric.style.js +++ b/styles/integralui.numeric.style.js @@ -1,15 +1,23 @@ import { c as css } from '../external/lit-element.js'; -export const iuiNumericDefaultStyle = css` +const iuiNumericDefaultStyle = css` .iui-numeric { - background: white; - color: black; - cursor: default; + background: var(--numeric-background, white); + border: var(--numeric-border, 0); + border-color: var(--numeric-border-color, transparent); + border-radius: var(--numeric-border-radius, 1px); + border-width: var(--numeric-border-width, thin); + color: var(--numeric-color, black); + cursor: var(--numeric-cursor, default); display: var(--numeric-display, block); + float: var(--numeric-float, none); + height: var(--numeric-height, auto); margin: var(--numeric-margin, 0); + opacity: var(--numeric-opacity, 1); overflow: hidden; - padding: 0; - position: relative; + padding: var(--numeric-padding, 0); + position: var(--numeric-position, relative); + width: var(--numeric-width, auto); -webkit-touch-callout: none; -webkit-user-select: none; @@ -150,6 +158,12 @@ export const iuiNumericDefaultStyle = css` text-align: center; } + + .iui-numeric-inbound-value input, .iui-numeric-leftright-value input, .iui-numeric-updown-value input { + background: transparent; + border: 0; + } + /* Disabled State */ .iui-numeric-disabled div { @@ -158,3 +172,4 @@ export const iuiNumericDefaultStyle = css` } `; +export { iuiNumericDefaultStyle }; diff --git a/styles/integralui.paginator.style.js b/styles/integralui.paginator.style.js index b9b8c5c..fe3956e 100644 --- a/styles/integralui.paginator.style.js +++ b/styles/integralui.paginator.style.js @@ -1,15 +1,24 @@ import { c as css } from '../external/lit-element.js'; -export const iuiPaginatorDefaultStyle = css` +const iuiPaginatorDefaultStyle = css` .iui-paginator { background: var(--paginator-background, #f0f0f0); border: var(--paginator-border, 0); + border-color: var(--paginator-border-color, transparent); + border-radius: var(--paginator-border-radius, 1px); + border-width: var(--paginator-border-width, thin); color: var(--paginator-color, black); cursor: var(--paginator-cursor, default); + display: var(--paginator-display, block); + float: var(--paginator-float, none); + height: var(--paginator-height, auto); margin: var(--paginator-margin, 1px 0); + opacity: var(--paginator-opacity, 1); + overflow: hidden; padding: var(--paginator-padding, 3px 3px 0px 3px); - position: relative; + position: var(--paginator-position, relative); white-space: nowrap; + width: var(--paginator-width, auto); -webkit-user-select: none; -khtml-user-select: none; @@ -70,4 +79,6 @@ export const iuiPaginatorDefaultStyle = css` opacity: var(--paginator-disabled-opacity, 0.75); pointer-events: none; } -`; \ No newline at end of file +`; + +export { iuiPaginatorDefaultStyle }; diff --git a/styles/integralui.progressbar.style.js b/styles/integralui.progressbar.style.js index 68501ce..5a81f0a 100644 --- a/styles/integralui.progressbar.style.js +++ b/styles/integralui.progressbar.style.js @@ -1,18 +1,23 @@ - import { c as css } from '../external/lit-element.js'; -export const iuiProgressBarDefaultStyle = css` - .iui-progressbar - { +const iuiProgressBarDefaultStyle = css` + .iui-progressbar { background: var(--progressbar-background, white); border: var(--progressbar-border, thin solid #cecece); - border-radius: var(--progressbar-border-radius, 3px); + border-color: var(--progressbar-border-color, #cecece); + border-radius: var(--progressbar-border-radius, 1px); + border-width: var(--progressbar-border-width, thin); color: var(--progressbar-color, black); cursor: var(--progressbar-cursor, default); + display: var(--progressbar-display, block); + float: var(--progressbar-float, none); + height: var(--progressbar-height, auto); margin: var(--progressbar-margin, 0); + opacity: var(--progressbar-opacity, 1); overflow: hidden; padding: var(--progressbar-padding, 2px); - position: relative; + position: var(--progressbar-position, relative); + width: var(--progressbar-width, auto); -webkit-user-select: none; -khtml-user-select: none; @@ -35,4 +40,6 @@ export const iuiProgressBarDefaultStyle = css` opacity: var(--progressbar-disabled-opacity, 0.25); pointer-events: none; } -`; \ No newline at end of file +`; + +export { iuiProgressBarDefaultStyle }; diff --git a/styles/integralui.radiobutton.style.js b/styles/integralui.radiobutton.style.js index a0b624d..798e205 100644 --- a/styles/integralui.radiobutton.style.js +++ b/styles/integralui.radiobutton.style.js @@ -1,18 +1,23 @@ - import { c as css } from '../external/lit-element.js'; -export const iuiRadioButtonDefaultStyle = css` +const iuiRadioButtonDefaultStyle = css` .iui-radio-button { background: var(--radio-button-background, transparent); border: var(--radio-button-border, 0); - border-color: var(--radio-button-border-color, transparent); + border-color: var(--radio-button-border-color, transparent); + border-radius: var(--radio-button-border-radius, 1px); + border-width: var(--radio-button-border-width, thin); color: var(--radio-button-color, black); cursor: var(--radio-button-cursor, default); display: var(--radio-button-display, inline-block); + float: var(--radio-button-float, none); + height: var(--radio-button-height, auto); margin: var(--radio-button-margin, 2px 0); + opacity: var(--radio-button-opacity, 1); overflow: hidden; padding: var(--radio-button-padding, 5px); - position: relative; + position: var(--radio-button-position, relative); + width: var(--radio-button-width, auto); -webkit-user-select: none; -khtml-user-select: none; @@ -59,3 +64,5 @@ export const iuiRadioButtonDefaultStyle = css` opacity: var(--radio-button-btn-disabled-opacity, 0.75); } `; + +export { iuiRadioButtonDefaultStyle }; diff --git a/styles/integralui.rating.style.js b/styles/integralui.rating.style.js index 88133af..5632c31 100644 --- a/styles/integralui.rating.style.js +++ b/styles/integralui.rating.style.js @@ -1,19 +1,23 @@ import { c as css } from '../external/lit-element.js'; -export const iuiRatingDefaultStyle = css` - .iui-rating - { +const iuiRatingDefaultStyle = css` + .iui-rating { background: var(--rating-background, white); border: var(--rating-border, thin solid #cecece); - border-radius: var(--rating-border-radius, 3px); + border-color: var(--rating-border-color, #cecece); + border-radius: var(--rating-border-radius, 1px); + border-width: var(--rating-border-width, thin); color: var(--rating-color, black); cursor: var(--rating-cursor, default); display: var(--rating-display, block); - height: var(--rating-image-height, 16px); + float: var(--rating-float, none); + height: var(--rating-height, 16px); margin: var(--rating-margin, 0); + opacity: var(--rating-opacity, 1); overflow: hidden; padding: var(--rating-padding, 1px); - position: relative; + position: var(--rating-position, relative); + width: var(--rating-width, auto); -webkit-user-select: none; -khtml-user-select: none; @@ -45,4 +49,6 @@ export const iuiRatingDefaultStyle = css` opacity: var(--rating-disabled-opacity, 0.4); pointer-events: none; } -`; \ No newline at end of file +`; + +export { iuiRatingDefaultStyle }; diff --git a/styles/integralui.scrollbar.style.js b/styles/integralui.scrollbar.style.js index b435bb4..21f8f09 100644 --- a/styles/integralui.scrollbar.style.js +++ b/styles/integralui.scrollbar.style.js @@ -1,13 +1,21 @@ import { c as css } from '../external/lit-element.js'; -export const iuiScrollBarStyle = css` +const iuiScrollBarStyle = css` .iui-scrollbar-vertical { background: var(--scrollbar-vertical-background, #f5f5f5); + border: var(--scrollbar-horizontal-border, 0); + border-color: var(--scrollbar-border-color, #f5f5f5); border-left: var(--scrollbar-vertical-border-left, thin solid #f5f5f5); + border-radius: var(--scrollbar-vertical-border-radius, 1px); + border-width: var(--scrollbar-vertical-border-width, thin); cursor: var(--scrollbar-vertical-cursor, default); - margin: 0; + display: var(--scrollbar-vertical-display, block); + height: var(--scrollbar-vertical-height, auto); + margin: var(--scrollbar-vertical-margin, 0); + opacity: var(--scrollbar-vertical-opacity, 1); + overflow: hidden; padding: var(--scrollbar-vertical-padding, 2px); - position: absolute; + position: var(--scrollbar-vertical-position, absolute); top: 0; width: var(--scrollbar-vertical-width, 11px); z-index: 99; @@ -38,13 +46,21 @@ export const iuiScrollBarStyle = css` } .iui-scrollbar-horizontal { background: var(--scrollbar-horizontal-background, #f5f5f5); + border: var(--scrollbar-horizontal-border, 0); + border-color: var(--scrollbar-border-color, #f5f5f5); + border-radius: var(--scrollbar-horizontal-border-radius, 1px); border-top: var(--scrollbar-horizontal-border-top, thin solid #f5f5f5); + border-width: var(--scrollbar-horizontal-border-width, thin); bottom: 0; cursor: var(--scrollbar-horizontal-cursor, default); + display: var(--scrollbar-horizontal-display, block); height: var(--scrollbar-horizontal-height, 11px); - margin: 0; + margin: var(--scrollbar-horizontal-margin, 0); + opacity: var(--scrollbar-horizontal-opacity, 1); + overflow: hidden; padding: var(--scrollbar-horizontal-padding, 2px); - position: absolute; + position: var(--scrollbar-horizontal-position, absolute); + width: var(--scrollbar-horizontal-width, auto); z-index: 99; -webkit-user-select: none; @@ -95,3 +111,5 @@ export const iuiScrollBarStyle = css` pointer-events: none; } `; + +export { iuiScrollBarStyle }; diff --git a/styles/integralui.select.style.js b/styles/integralui.select.style.js index 282255a..53bf3a4 100644 --- a/styles/integralui.select.style.js +++ b/styles/integralui.select.style.js @@ -2,14 +2,22 @@ import { c as css } from '../external/lit-element.js'; const iuiSelectDefaultStyle = css` .iui-select { - background: white; - color: black; - cursor: default; + background: var(--select-background, white); + border: var(--select-border, 0); + border-color: var(--select-border-color, transparent); + border-radius: var(--select-border-radius, 1px); + border-width: var(--select-border-width, thin); + color: var(--select-color, black); + cursor: var(--select-cursor, default); display: var(--select-display, block); + float: var(--select-float, none); + height: var(--select-height, auto); margin: var(--select-margin, 2px 0); + opacity: var(--select-opacity, 1); overflow: hidden; - padding: 0; - position: relative; + padding: var(--select-padding, 0); + position: var(--select-position, relative); + vertical-align: var(--select-vertical-align, middle); width: var(--select-width, auto); } .iui-select:focus { @@ -22,6 +30,9 @@ const iuiSelectDefaultStyle = css` padding: var(--select-header-padding, 3px); white-space: nowrap; } + .iui-select-header:focus { + outline: none !important; + } .iui-select-header-hovered { background: transparent; border: thin solid #cecece; diff --git a/styles/integralui.slider.style.js b/styles/integralui.slider.style.js deleted file mode 100644 index fd6ad36..0000000 --- a/styles/integralui.slider.style.js +++ /dev/null @@ -1,60 +0,0 @@ - -import { c as css } from '../external/lit-element.js'; - -export const iuiSliderDefaultStyle = css` - .iui-slider { - background: var(--slider-background, transparent); - cursor: var(--slider-cursor, default); - margin: var(--slider-margin, 0); - overflow: hidden; - padding: 0; - position: relative; - - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -o-user-select: none; - -ms-user-select: none; - user-select: none; - } - .iui-slider:focus { - outline: none !important; - } - .iui-slider-content { - background: var(--slider-content-background, #cecece); - height: var(--slider-content-size, 1px); - } - .iui-slider-content-vertical { - background: var(--slider-content-background, #cecece); - width: var(--slider-content-size, 1px); - } - .iui-slider-background { - background: var(--slider-background-appearance, #afafaf); - height: var(--slider-background-size, 1px); - } - .iui-slider-background-vertical { - background: var(--slider-background-appearance, #afafaf); - width: var(--slider-background-size, 1px); - } - .iui-slider-button { - background: var(--slider-button-background, #e5e5e5); - border: var(--slider-button-border, 2px solid #afafaf); - border-radius: var(--slider-button-border-radius, 3px); - pointer-events: none; - } - - - /* Disabled State */ - .iui-slider-disabled div { - pointer-events: none; - } - - .iui-slider-disabled .iui-slider-content { - background: var(--slider-disabled-background, #dedede); - } - - .iui-slider-disabled .iui-slider-value { - background: var(--slider-disabled-value-background, #f5f5f5); - border-color: var(--slider-disabled-value-border-color, #e5e5e5); - } -`; diff --git a/styles/integralui.sorting.style.js b/styles/integralui.sorting.style.js index 6c66d77..c18724c 100644 --- a/styles/integralui.sorting.style.js +++ b/styles/integralui.sorting.style.js @@ -1,6 +1,6 @@ import { c as css } from '../external/lit-element.js'; -export const iuiSortingDefaultStyle = css` +const iuiSortingDefaultStyle = css` .iui-sort-ascending { margin: 0; @@ -34,3 +34,5 @@ export const iuiSortingDefaultStyle = css` background-image: url(../icons/sort-descending-white.ico); } `; + +export { iuiSortingDefaultStyle }; diff --git a/styles/integralui.style.js b/styles/integralui.style.js new file mode 100644 index 0000000..0a8cbd1 --- /dev/null +++ b/styles/integralui.style.js @@ -0,0 +1,72 @@ +import { c as css } from '../external/lit-element.js'; + +const iuiBaseDefaultStyle = css` + .iui-base-loading { + opacity: 1; + pointer-events: none; + + animation-name: iui-base-loading-animate; + animation-delay: 0s; + animation-direction: normal; + animation-duration: 0.4s; + animation-fill-mode: forwards; + animation-iteration-count: 1; + animation-play-state: running; + animation-timing-function: linear; + } + @keyframes iui-base-loading-animate { + 0% { opacity: 1; } + 100% { opacity: 0.4; } + } + .iui-base-loading-end { + opacity: 0.4; + pointer-events: none; + + animation-name: iui-base-loading-end-animate; + animation-delay: 0s; + animation-direction: normal; + animation-duration: 0.4s; + animation-fill-mode: forwards; + animation-iteration-count: 1; + animation-play-state: running; + animation-timing-function: linear; + } + @keyframes iui-base-loading-end-animate { + 0% { opacity: 0.4; } + 100% { opacity: 1; } + } + + + .iui-loading-icon { + background-image: url(../icons/circular.png); + height: 48px; + left: 0; + position: absolute; + top: 0; + width: 48px; + z-index: 999; + + animation-name: iui-loading-icon-animate; + animation-delay: 0s; + animation-direction: normal; + animation-duration: 1s; + animation-fill-mode: forwards; + animation-iteration-count: infinite; + animation-play-state: running; + animation-timing-function: linear; + } + @keyframes iui-loading-icon-animate { + 0% { + -ms-transform: rotate(0deg); + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -ms-transform: rotate(360deg); + -webkit-transform: rotate(360deg); + transform: rotate(360deg); + } + } +`; + +export { iuiBaseDefaultStyle }; diff --git a/styles/integralui.tooltip.style.js b/styles/integralui.tooltip.style.js index 4be47f1..dbacfe9 100644 --- a/styles/integralui.tooltip.style.js +++ b/styles/integralui.tooltip.style.js @@ -1,19 +1,25 @@ - import { c as css } from '../external/lit-element.js'; -export const iuiTooltipStyle = css` - .iui-tooltip - { +const iuiTooltipStyle = css` + .iui-tooltip { background: var(--tooltip-background, #e5e5e5); border: var(--tooltip-border, thin solid #888888); + border-color: var(--tooltip-border-color, #888888); + border-radius: var(--tooltip-border-radius, 1px); + border-width: var(--tooltip-border-width, thin); color: var(--tooltip-color, #323232); cursor: var(--tooltip-cursor, default); - font-size: var(--tooltip-font-size, 1em); + display: var(--tooltip-display, block); + font-size: var(--tooltip-font-size, 1rem); + height: var(--tooltip-height, auto); + margin: var(--tooltip-margin, 0); + opacity: var(--tooltip-opacity, 1); overflow: hidden; - padding: 0; - position: absolute; - top: -999999px; - z-index: 999; + padding: var(--tooltip-padding, 0); + position: var(--tooltip-position, absolute); + top: -9999999px; + width: var(--tooltip-width, auto); + z-index: 9999999; -webkit-user-select: none; -khtml-user-select: none; @@ -116,3 +122,5 @@ export const iuiTooltipStyle = css` right: -8px; } `; + +export { iuiTooltipStyle }; diff --git a/themes/midnight/integralui.button.midnight.js b/themes/midnight/integralui.button.midnight.js index 46e3aee..3495905 100644 --- a/themes/midnight/integralui.button.midnight.js +++ b/themes/midnight/integralui.button.midnight.js @@ -1,6 +1,6 @@ import { c as css } from '../../external/lit-element.js'; -export const iuiButtonMidnightStyle = css` +const iuiButtonMidnightStyle = css` .iui-button { background: var(--button-background, #0e639c); border: var(--button-hovered-border, thin solid #0e639c); @@ -19,4 +19,6 @@ export const iuiButtonMidnightStyle = css` border-color: var(--button-selected-border-color, #0a4369); color: var(--button-selected-color, white); } -`; \ No newline at end of file +`; + +export { iuiButtonMidnightStyle }; diff --git a/themes/midnight/integralui.calendar.midnight.js b/themes/midnight/integralui.calendar.midnight.js index 142a10e..47e09b9 100644 --- a/themes/midnight/integralui.calendar.midnight.js +++ b/themes/midnight/integralui.calendar.midnight.js @@ -1,25 +1,26 @@ import { c as css } from '../../external/lit-element.js'; -export const iuiCalendarMidnightStyle = css` +const iuiCalendarMidnightStyle = css` .iui-calendar { - background-color: #252526; - border-color: #151515; - color: #cccccc; + background: var(--calendar-background, #252526); + border: var(--calendar-border, thin solid #151515); + border-color: var(--calendar-border-color, #151515); + color: var(--calendar-color, #cccccc); } .iui-calendar-cell { - color: #cccccc; + color: var(--calendar-cell-color, #cccccc); } .iui-calendar-cell-hovered, .iui-calendar-cell-grayed:hover { - background: #1177bb; - border-color: #1177bb; + background: var(--calendar-cell-hovered-background, #1177bb); + border-color: var(--calendar-cell-hovered-border-color, #1177bb); } .iui-calendar-cell-selected { - background: #0e639c; - border-color: #0e639c; - color: white; + background: var(--calendar-cell-selected-background, #0e639c); + border-color: var(--calendar-cell-selected-border-color, #0e639c); + color: var(--calendar-cell-selected-color, white); } .iui-calendar-cell-today { - border-color: #0a4369; + border-color: var(--calendar-cell-today-border-color, #0a4369); } .iui-calendar-header-button-prev span { background-image: url(../../icons/prev-white-24.png); @@ -28,23 +29,25 @@ export const iuiCalendarMidnightStyle = css` background-image: url(../../icons/next-white-24.png); } @keyframes calendar-cell-enter { - 0% { - background: transparent; - border-color: transparent; + 0% { + background: var(--calendar-animation-cell-enter-background-0, transparent); + border-color: var(--calendar-animation-cell-enter-border-color-0, transparent); } 100% { - background: #1177bb; - border-color: #1177bb; + background: var(--calendar-animation-cell-enter-background-100, #1177bb); + border-color: var(--calendar-animation-cell-enter-border-color-100, #1177bb); } } @keyframes calendar-cell-leave { - 0% { - background: #1177bb; - border-color: #1177bb; + 0% { + background: var(--calendar-animation-cell-leave-background-0, #1177bb); + border-color: var(--calendar-animation-cell-leave-border-color-0, #1177bb); } 100% { - background: transparent; - border-color: transparent; + background: var(--calendar-animation-cell-leave-background-100, transparent); + border-color: var(--calendar-animation-cell-leave-border-color-100, transparent); } } -`; \ No newline at end of file +`; + +export { iuiCalendarMidnightStyle }; diff --git a/themes/midnight/integralui.checkbox.midnight.js b/themes/midnight/integralui.checkbox.midnight.js index 3a0c9ef..1eaae16 100644 --- a/themes/midnight/integralui.checkbox.midnight.js +++ b/themes/midnight/integralui.checkbox.midnight.js @@ -1,7 +1,21 @@ import { c as css } from '../../external/lit-element.js'; -export const iuiCheckBoxMidnightStyle = css` +const iuiCheckBoxMidnightStyle = css` .iui-checkbox { color: var(--checkbox-color, #cccccc); } -`; \ No newline at end of file + .iui-checkbox-btn span { + background-image: var(--checkbox-btn-background-image, url(../icons/checkbox-unchecked-10.ico)); + } + .iui-checkbox-btn-checked span { + background-image: var(--checkbox-btn-checked-background-image, url(../icons/checkbox-checked-10.ico)); + } + .iui-checkbox-btn-indeterminate span { + background-image: var(--checkbox-btn-indeterminate-background-image, url(../icons/checkbox-indeterminate-10.ico)); + } + .iui-checkbox-btn-unchecked span { + background-image: var(--checkbox-btn-unchecked-background-image, url(../icons/checkbox-unchecked-10.ico)); + } +`; + +export { iuiCheckBoxMidnightStyle }; diff --git a/themes/midnight/integralui.contextmenu.midnight.js b/themes/midnight/integralui.contextmenu.midnight.js new file mode 100644 index 0000000..a7bb166 --- /dev/null +++ b/themes/midnight/integralui.contextmenu.midnight.js @@ -0,0 +1,36 @@ +import { c as css } from '../../external/lit-element.js'; + +const iuiContextMenuMidnightStyle = css` + .iui-contextmenu { + background: var(--contextmenu-background, #252526); + border: var(--contextmenu-border, thin solid #151515); + box-shadow: var(--contextmenu-box-shadow, 0 2px 5px #151515); + color: var(--contextmenu-color, #cccccc); + } + .iui-menuitem-block { + background: var(--contextmenu-background, #252526); + border: var(--contextmenu-border, thin solid #151515); + } + .iui-contextmenuitem-root { + border-color: var(--contextmenuitem-root-border-color, transparent); + color: var(--contextmenuitem-root-color, #cccccc); + } + .iui-contextmenuitem-root-hovered { + background: var(--contextmenuitem-root-hovered-background, #1177bb); + border-color: var(--contextmenuitem-root-hovered-border-color, #1177bb); + color: var(--contextmenuitem-root-hovered-color, white); + } + .iui-contextmenuitem-root-selected { + background: var(--contextmenuitem-root-selected-background, #1177bb); + border-color: var(--contextmenuitem-root-selected-border-color, #1177bb); + color: var(--contextmenuitem-root-selected-color, white); + } + .iui-contextmenuitem-root-separator, .iui-contextmenuitem-separator { + background: var(--contextmenuitem-separator-background, #252526); + } + .iui-contextmenuitem-root-separator > hr, .iui-contextmenuitem-separator > hr { + background: var(--contextmenuitem-separator-line-background, #151515); + } +`; + +export { iuiContextMenuMidnightStyle }; diff --git a/themes/midnight/integralui.datepicker.midnight.js b/themes/midnight/integralui.datepicker.midnight.js index 908a48b..06799c3 100644 --- a/themes/midnight/integralui.datepicker.midnight.js +++ b/themes/midnight/integralui.datepicker.midnight.js @@ -1,22 +1,29 @@ import { c as css } from '../../external/lit-element.js'; -export const iuiDatePickerMidnightStyle = css` +const iuiDatePickerMidnightStyle = css` .iui-datepicker { - background-color: #252526; - border-color: #151515; - color: #cccccc; + background: var(--datepicker-background, #252526); + color: var(--datepicker-color, #cccccc); + } + .iui-datepicker:focus { + border-color: #646464; } /* Header */ .iui-datepicker-header { - border: thin solid #151515; + border: var(--datepicker-header-border, thin solid #151515); + } + .iui-datepicker-header-hovered { + border: var(--datepicker-header-hovered-border, thin solid #151515); + color: var(--datepicker-header-hovered-color, white); } - .iui-datepicker-header-hovered, .iui-datepicker-header-selected { - background: transparent; - border: thin solid #151515; - color: white; + .iui-datepicker-header-selected { + border: var(--datepicker-header-selected-border, thin solid #151515); + color: var(--datepicker-header-selected-color, white); } .iui-datepicker-header-expand-box { - background: #484848 !important; + background: var(--datepicker-header-expand-box-background, #cccccc); } -`; \ No newline at end of file +`; + +export { iuiDatePickerMidnightStyle }; diff --git a/themes/midnight/integralui.dragdrop.midnight.js b/themes/midnight/integralui.dragdrop.midnight.js index ec56d06..f8669d2 100644 --- a/themes/midnight/integralui.dragdrop.midnight.js +++ b/themes/midnight/integralui.dragdrop.midnight.js @@ -1,6 +1,6 @@ import { c as css } from '../../external/lit-element.js'; -export const iuiDragWinMidnightStyle = css` +const iuiDragWinMidnightStyle = css` .iui-dragwin { background: -webkit-linear-gradient(#363636, #303030); background: -moz-linear-gradient(#363636, #303030); @@ -16,4 +16,6 @@ export const iuiDragWinMidnightStyle = css` .iui-dragwin-title { border-left: thin solid #151515; } -`; \ No newline at end of file +`; + +export { iuiDragWinMidnightStyle }; diff --git a/themes/midnight/integralui.dropdownbutton.midnight.js b/themes/midnight/integralui.dropdownbutton.midnight.js new file mode 100644 index 0000000..c1725e0 --- /dev/null +++ b/themes/midnight/integralui.dropdownbutton.midnight.js @@ -0,0 +1,24 @@ +import { c as css } from '../../external/lit-element.js'; + +const iuiDropDownButtonMidnightStyle = css` + .iui-dropdownbutton { + background: var(--dropdownbutton-background, #0e639c); + border: var(--dropdownbutton-hovered-border, thin solid #0e639c); + border-color: var(--dropdownbutton-border-color, #0e639c); + color: var(--dropdownbutton-color, white); + } + .iui-dropdownbutton-hovered { + background: var(--dropdownbutton-hovered-background, #1177bb); + border: var(--dropdownbutton-hovered-border, thin solid #1177bb); + border-color: var(--dropdownbutton-hovered-border-color, #1177bb); + color: var(--dropdownbutton-hovered-color, white); + } + .iui-dropdownbutton-selected { + background: var(--dropdownbutton-selected-background, #0a4369); + border: var(--dropdownbutton-selected-border, thin solid #0a4369); + border-color: var(--dropdownbutton-selected-border-color, #0a4369); + color: var(--dropdownbutton-selected-color, white); + } +`; + +export { iuiDropDownButtonMidnightStyle }; diff --git a/themes/midnight/integralui.dropdownfilter.midnight.js b/themes/midnight/integralui.dropdownfilter.midnight.js new file mode 100644 index 0000000..3810f13 --- /dev/null +++ b/themes/midnight/integralui.dropdownfilter.midnight.js @@ -0,0 +1,65 @@ +import { c as css } from '../../external/lit-element.js'; + +const iuiDropDownFilterMidnightStyle = css` + .iui-dropdownfilter { + border-color: #151515; + color: #cccccc; + } + + /* DropDown Window */ + .iui-dropdownfilter-dropdown { + background: #252526; + border: thin solid #151515; + color: #cccccc; + } + .iui-dropdownfilter-dropdown .iui-item-hovered { + background-color: #2a2d2e; + border: thin solid #2a2d2e; + } + .iui-dropdownfilter-dropdown .iui-item-dropdownfiltered { + background-color: #37373d; + border: thin solid #37373d; + } + .iui-filter-input { + color: #cccccc; + } + + .iui-filter-equal { + background-image: url(../icons/equal-white.ico); + } + .iui-filter-not-equal { + background-image: url(../icons/not-equal-white.ico); + } + .iui-filter-begins-with { + background-image: url(../icons/begins-with-white.ico); + } + .iui-filter-ends-with { + background-image: url(../icons/ends-with-white.ico); + } + .iui-filter-contains { + background-image: url(../icons/contains-white.ico); + } + .iui-filter-not-contain { + background-image: url(../icons/not-contain-white.ico); + } + .iui-filter-greater-than { + background-image: url(../icons/greater-than-white.ico); + } + .iui-filter-greater-than-equal { + background-image: url(../icons/greater-than-equal-white.ico); + } + .iui-filter-less-than { + background-image: url(../icons/less-than-white.ico); + } + .iui-filter-less-than-equal { + background-image: url(../icons/less-than-equal-white.ico); + } + .iui-filter-between { + background-image: url(../icons/between-white.ico); + } + .iui-filter-search { + background-image: url(../icons/search-white.ico); + } +`; + +export { iuiDropDownFilterMidnightStyle }; diff --git a/themes/midnight/integralui.editors.midnight.js b/themes/midnight/integralui.editors.midnight.js new file mode 100644 index 0000000..fa9f30c --- /dev/null +++ b/themes/midnight/integralui.editors.midnight.js @@ -0,0 +1,9 @@ +import { c as css } from '../../external/lit-element.js'; + +const iuiEditorsMidnightStyle = css` + .iui-editor-text { + color: #cccccc; + } +`; + +export { iuiEditorsMidnightStyle }; diff --git a/themes/midnight/integralui.grid.midnight.js b/themes/midnight/integralui.grid.midnight.js index 5893717..d54571c 100644 --- a/themes/midnight/integralui.grid.midnight.js +++ b/themes/midnight/integralui.grid.midnight.js @@ -1,18 +1,16 @@ import { c as css } from '../../external/lit-element.js'; -export const iuiGridMidnightStyle = css` - .iui-grid - { - background-color: #252526; - border-color: #252526; - color: #cccccc; +const iuiGridMidnightStyle = css` + .iui-grid { + background: var(--grid-background, #252526); + border-color: var(--grid-border-color, #252526); + color: var(--grid-color, #cccccc); } .iui-grid-block { - background: #252526; + background: var(--grid-background, #252526); } - .iui-grid-block-left, .iui-grid-block-right - { - background: #232324; + .iui-grid-block-left, .iui-grid-block-right { + background: var(--grid-block-fixed-background, #232324); } .iui-grid-block-hover, .iui-grid-block-select { background: transparent; @@ -26,15 +24,22 @@ export const iuiGridMidnightStyle = css` background: transparent; } .iui-grid-block-top-left .iui-grid-column-header, + .iui-grid-block-top-left .iui-grid-column-filter, .iui-grid-block-top-left .iui-grid-column-footer, .iui-grid-block-top-right .iui-grid-column-header, + .iui-grid-block-top-right .iui-grid-column-filter, .iui-grid-block-top-right .iui-grid-column-footer { - background-color: #272a2b; - border: thin solid transparent !important; - color: #cccccc; + background: var(--grid-column-fixed-background, #272a2b); + border: var(--grid-column-fixed-border, thin solid transparent); + color: var(--grid-column-fixed-color, #cccccc); + } + .iui-grid-block-top-left .iui-grid-column-filter, .iui-grid-block-top-right .iui-grid-column-filter { + background: var(--grid-column-fixed-filter-background, transparent); } .iui-grid-block-top-left .iui-grid-column-header, - .iui-grid-block-top-right .iui-grid-column-header { + .iui-grid-block-top-left .iui-grid-column-filter, + .iui-grid-block-top-right .iui-grid-column-header, + .iui-grid-block-top-right .iui-grid-column-filter { border-bottom: thin solid #212121 !important; } .iui-grid-block-top-left .iui-grid-column-footer, @@ -56,29 +61,28 @@ export const iuiGridMidnightStyle = css` .iui-grid-block-hover { border: thin solid #252526; } - .iui-grid-column-header, .iui-grid-column-footer - { - background-color: #2a2d2e; - border-color: transparent; + .iui-grid-column-header, .iui-grid-column-filter, .iui-grid-column-footer { + background: var(--grid-column-background, #2a2d2e); + border-color: var(--grid-column-border-color, transparent); border-right: thin solid transparent !important; - color: #cccccc; + color: var(--grid-column-color, #cccccc); + } + .iui-grid-column-filter { + background: var(--grid-column-filter-background, transparent); } - .iui-grid-column-header - { + .iui-grid-column-header, .iui-grid-column-filter { border-bottom: thin solid #212121 !important; } - .iui-grid-column-footer - { + .iui-grid-column-footer { border-top: thin solid #212121 !important; - color: #cccccc; + color: var(--grid-column-footer-color, #cccccc); } - .iui-grid-column-header-hovered - { - background-color: #113954; - border-color: #113954; - color: white; + .iui-grid-column-header-hovered { + background: var(--grid-column-header-hovered-background, #113954); + border-color: var(--grid-colum-header-hovered-border-color, #113954); + color: var(--grid-column-header-hovered-color, white); - animation-name: iui-grid-column-hovered-animate-enter; + animation-name: var(--grid-column-header-hovered-animation-name, iui-grid-column-hovered-animate-enter); animation-delay: 0s; animation-direction: normal; animation-duration: 0.15s; @@ -88,16 +92,15 @@ export const iuiGridMidnightStyle = css` animation-timing-function: linear; } @keyframes iui-grid-column-hovered-animate-enter { - 0% { background: #2a2d2e; } - 100% { background: #113954; } + 0% { background: var(--grid-animation-column-hovered-background-0, #2a2d2e); } + 100% { background: var(--grid-animation-column-hovered-background-100, #113954); } } - .iui-grid-column-header-selected - { - background-color: #0c293d; - border-right-color: #0c293d; - color: white; + .iui-grid-column-header-selected { + background: var(--grid-column-header-selected-background, #0c293d); + border-color: var(--grid-colum-header-selected-border-color, #0c293d); + color: var(--grid-column-header-selected-color, white); - animation-name: iui-grid-column-selected-animate-enter; + animation-name: var(--grid-column-header-selected-animation-name, iui-grid-column-selected-animate-enter); animation-delay: 0s; animation-direction: normal; animation-duration: 0.15s; @@ -107,22 +110,20 @@ export const iuiGridMidnightStyle = css` animation-timing-function: linear; } @keyframes iui-grid-column-selected-animate-enter { - 0% { background: #113954; } - 100% { background: #0c293d; } + 0% { background: var(--grid-animation-column-selected-background-0, #113954); } + 100% { background: var(--grid-animation-column-selected-background-100, #0c293d); } } - .iui-grid-column-header-cell-selected - { - background-color: transparent; + .iui-grid-column-header-cell-selected { + background: transparent; } .iui-grid-row, .iui-grid-row-fixed { - color: #646464; + color: var(--grid-row-color, #646464); } - .iui-grid-row-hovered - { - background-color: #2a2d2e; - color: #cccccc; + .iui-grid-row-hovered { + background: var(--grid-row-hovered-background, #2a2d2e); + color: var(--grid-row-hovered-color, #cccccc); - animation-name: iui-grid-row-hovered-animate-enter; + animation-name: var(--grid-row-hovered-animation-name, iui-grid-row-hovered-animate-enter); animation-delay: 0s; animation-direction: normal; animation-duration: 0.15s; @@ -132,16 +133,15 @@ export const iuiGridMidnightStyle = css` animation-timing-function: linear; } @keyframes iui-grid-row-hovered-animate-enter { - 0% { background: transparent; } - 100% { background: #2a2d2e; } + 0% { background: var(--grid-animation-row-hovered-background-0, transparent); } + 100% { background: var(--grid-animation-row-hovered-background-100, #2a2d2e); } } - .iui-grid-row-selected - { - background-color: #0a4369; - border-color: #0a4369; - color: white; + .iui-grid-row-selected { + background: var(--grid-row-selected-background, #0a4369); + border-color: var(--grid-row-selected-border-color, #0a4369); + color: var(--grid-row-selected-color, white); - animation-name: iui-grid-row-selected-animate-enter; + animation-name: var(--grid-row-selected-animation-name, iui-grid-row-selected-animate-enter); animation-delay: 0s; animation-direction: normal; animation-duration: 0.25s; @@ -151,44 +151,42 @@ export const iuiGridMidnightStyle = css` animation-timing-function: linear; } @keyframes iui-grid-row-selected-animate-enter { - 0% { background: #2a2d2e; color: #cccccc; } - 100% { background: #0a4369; color: white; } - } - .iui-grid-row-cell:first-child - { + 0% { + background: var(--grid-animation-row-selected-background-0, #2a2d2e); + color: var(--grid-animation-row-selected-color-0, #cccccc); + } + 100% { + background: var(--grid-animation-row-selected-background-100, #0a4369); + color: var(--grid-animation-row-selected-color-100, white); + } + } + .iui-grid-row-cell:first-child { border-left: thin solid transparent; } - .iui-grid-row-cell:last-child - { + .iui-grid-row-cell:last-child { border-right: thin solid transparent; } - .iui-grid-lines-horizontal:not(:last-child) - { + .iui-grid-lines-horizontal:not(:last-child) { border-bottom-color: #212121; } - .iui-grid-lines-horizontal:last-child - { + .iui-grid-lines-horizontal:last-child { border-bottom: thin solid #212121; } - .iui-grid-lines-vertical - { + .iui-grid-lines-vertical { border-right: thin solid transparent; } - .iui-grid-lines-both - { + .iui-grid-lines-both { border-right: thin solid transparent; border-bottom: thin solid #212121; } - .iui-grid-expand-box-open - { + .iui-grid-expand-box-open { background: url(../../icons/expandbox-icons.png) no-repeat -48px 0; opacity: 0.25; } .iui-grid-expand-box-open:hover, .iui-grid-expand-box-close:hover { opacity: 0.75; } - .iui-grid-expand-box-close - { + .iui-grid-expand-box-close { background: url(../../icons/expandbox-icons.png) no-repeat -48px -16px; opacity: 0.25; } @@ -205,34 +203,29 @@ export const iuiGridMidnightStyle = css` } /* Animation */ - .iui-grid-column-animate-select - { + .iui-grid-column-animate-select { background: #113954; } - .iui-grid-row-animate-select - { + .iui-grid-row-animate-select { background: #113d5c; } /* Filtering and Sorting */ - .iui-grid .iui-filtering, .iui-grid .iui-filtering-hovered, .iui-grid .iui-filtering-selected - { + .iui-grid .iui-filtering, .iui-grid .iui-filtering-hovered, .iui-grid .iui-filtering-selected { background-position: -96px -128px; } - .iui-grid .iui-sort-ascending, .iui-grid .iui-sort-ascending-hovered, .iui-grid .iui-sort-ascending-selected - { + .iui-grid .iui-sort-ascending, .iui-grid .iui-sort-ascending-hovered, .iui-grid .iui-sort-ascending-selected { background-position: -48px -128px !important; } - .iui-grid .iui-sort-descending, .iui-grid .iui-sort-descending-hovered, .iui-grid .iui-sort-descending-selected - { + .iui-grid .iui-sort-descending, .iui-grid .iui-sort-descending-hovered, .iui-grid .iui-sort-descending-selected { background-position: -32px -128px !important; } /* Grouping */ .iui-grid-grouping-panel { - background-color: transparent; - border-bottom: thin solid #151515; - color: #cccccc; + background: var(--grid-grouping-panel-background, transparent); + border-bottom: var(--grid-grouping-panel-border-bottom, thin solid #151515); + color: var(--grid-grouping-panel-color, #cccccc); } .iui-grid-grouping-panel-toolbar-button-add:hover { opacity: 0.75; @@ -241,8 +234,8 @@ export const iuiGridMidnightStyle = css` background-image: url(../../icons/plus-white-24.png); } .iui-grid-grouping-panel-item { - background-color: #363636; - border: thin solid #363636; + background: var(--grid-grouping-panel-item-background, #363636); + border: var(--grid-grouping-panel-item-border, thin solid #363636); } .iui-grid-grouping-panel-item-button { background-image: url(../../icons/close-gray.ico); @@ -252,12 +245,12 @@ export const iuiGridMidnightStyle = css` border: thin solid #363636; } .iui-grid-grouping-marker::before { - border: 6px solid #363636; - border-color: transparent transparent transparent #363636; + border: var(--grid-grouping-marker-before-border, 6px solid #363636); + border-color: var(--grid-grouping-marker-before-border-color, transparent transparent transparent #363636); } .iui-grid-grouping-marker::after { - border: 6px solid #363636; - border-color: transparent transparent transparent #363636; + border: var(--grid-grouping-marker-after-border, 6px solid #363636); + border-color: var(--grid-grouping-marker-after-border-color, transparent transparent transparent #363636); } .iui-grid-grouping-panel-dropdown-list { background: #252526; @@ -271,8 +264,20 @@ export const iuiGridMidnightStyle = css` .iui-grid-grouping-panel-dropdown-list li:hover { background-color: #2a2d2e; } - + + /* Drag Drop */ .iui-grid-handle { - background-image: var(--treegrid-background-image, url(../icons/grab-white.ico)); + background-image: var(--grid-handle-background-image, url(../../icons/grab-white.ico)); + } + + /* Editor */ + .iui-grid-editing:hover { + background-image: var(--grid-editing-background-image, url(../../icons/edit-white.ico)); } -`; \ No newline at end of file + .iui-grid-editing-active { + background-image: var(--grid-editing-background-image, url(../../icons/edit-white.ico)); + opacity: 1; + } +`; + +export { iuiGridMidnightStyle }; diff --git a/themes/midnight/integralui.header.midnight.js b/themes/midnight/integralui.header.midnight.js new file mode 100644 index 0000000..2d4290c --- /dev/null +++ b/themes/midnight/integralui.header.midnight.js @@ -0,0 +1,7 @@ +import { c as css } from '../../external/lit-element.js'; + +export const iuiHeaderMidnightStyle = css` + .iui-header-expand-box-calendar { + background-image: url(../../icons/calendar-white.ico); + } +`; \ No newline at end of file diff --git a/themes/midnight/integralui.item.midnight.js b/themes/midnight/integralui.item.midnight.js index f0578f6..b7208a7 100644 --- a/themes/midnight/integralui.item.midnight.js +++ b/themes/midnight/integralui.item.midnight.js @@ -1,6 +1,6 @@ import { c as css } from '../../external/lit-element.js'; -export const iuiItemMidnightStyle = css` +const iuiItemMidnightStyle = css` .iui-item { color: var(--item-color, #cccccc); } @@ -15,4 +15,6 @@ export const iuiItemMidnightStyle = css` border: var(--item-selected-border, thin solid #0a4369); color: var(--item-selected-color, white); } -`; \ No newline at end of file +`; + +export { iuiItemMidnightStyle }; diff --git a/themes/midnight/integralui.list.midnight.js b/themes/midnight/integralui.list.midnight.js index 49360c0..962a565 100644 --- a/themes/midnight/integralui.list.midnight.js +++ b/themes/midnight/integralui.list.midnight.js @@ -1,9 +1,11 @@ import { c as css } from '../../external/lit-element.js'; -export const iuiListMidnightStyle = css` +const iuiListMidnightStyle = css` .iui-list { background: var(--list-background, #252526); border: var(--list-border, thin solid #151515); color: var(--list-color, #cccccc); } -`; \ No newline at end of file +`; + +export { iuiListMidnightStyle }; diff --git a/themes/midnight/integralui.listitem.midnight.js b/themes/midnight/integralui.listitem.midnight.js index 11a6816..c3156f7 100644 --- a/themes/midnight/integralui.listitem.midnight.js +++ b/themes/midnight/integralui.listitem.midnight.js @@ -1,6 +1,6 @@ import { c as css } from '../../external/lit-element.js'; -export const iuiListItemMidnightStyle = css` +const iuiListItemMidnightStyle = css` .iui-listitem { color: var(--listitem-color, #cccccc); } @@ -28,4 +28,6 @@ export const iuiListItemMidnightStyle = css` .iui-listitem-animate-select { background: var(--listitem-animate-select-background, #2d2d33); } -`; \ No newline at end of file +`; + +export { iuiListItemMidnightStyle }; diff --git a/themes/midnight/integralui.menuitem.midnight.js b/themes/midnight/integralui.menuitem.midnight.js new file mode 100644 index 0000000..1e166ac --- /dev/null +++ b/themes/midnight/integralui.menuitem.midnight.js @@ -0,0 +1,158 @@ +import { c as css } from '../../external/lit-element.js'; + +const iuiMenuItemMidnightStyle = css` + .iui-menu + { + background-color: #252526; + color: white; + } + .iui-menu-block + { + background-color: #252526; + border-color: #151515; + } + .iui-menuitem-block + { + background-color: #252526; + border: solid thin #151515; + box-shadow: 0 2px 5px #151515; + color: #cccccc; + } + .iui-menuitem-root, .iui-menuitem-root-vertical + { + background: none; + border: solid thin #252526; + color: #cccccc; + } + .iui-menuitem-root-hovered, .iui-menuitem-root-selected, .iui-contextmenuitem-hovered, .iui-contextmenuitem-selected + { + animation-name: none; + background-color: #1177bb !important; + border: solid thin #1177bb !important; + color: white; + } + .iui-menuitem-root-hovered a + { + color: black; + } + .iui-menuitem + { + background-color: #252526; + border-color: transparent; + color: #cccccc; + } + .iui-menuitem-hovered + { + animation-name: none; + background-color: #1177bb !important; + border-color: #1177bb !important; + color: white; + } + .iui-menuitem-selected + { + animation-name: none; + background-color: #1177bb !important; + border-color: #1177bb !important; + color: white; + } + .iui-menuitem-selected a + { + color: white; + } + .iui-menu li > ul + { + background-color: #252526; + border: thin solid #151515; + box-shadow: 0 2px 5px #151515; + } + .iui-menu-expand-box + { + width: 16px; + height: 16px; + } + .iui-menuitem-normal + { + background-color: transparent; + border-color: transparent; + color: #cccccc; + } + .iui-menuitem-root-separator, .iui-menuitem-separator + { + background-color: #252526; + } + .iui-menuitem-root-separator > hr, .iui-menuitem-separator > hr + { + background-color: #151515; + } + .iui-menu-marker-expand-down::before + { + border: 4px solid #0a4369; + border-color: #0a4369 transparent transparent transparent; + } + .iui-menu-marker-expand-down-rtl::before + { + border: 4px solid #0a4369; + border-color: #0a4369 transparent transparent transparent; + } + .iui-menu-marker-expand-right::before + { + border: 4px solid #0a4369; + border-color: transparent transparent transparent #0a4369; + } + .iui-menu-marker-expand-left::before + { + border: 4px solid #0a4369; + border-color: transparent #0a4369 transparent transparent; + } + .iui-menu-marker-top::before + { + border: 4px solid #484848; + border-color: transparent transparent #1177bb transparent; + } + .iui-menu-marker-top::after + { + border: 4px solid #484848; + border-color: transparent transparent #242424 transparent; + } + .iui-menu-marker-top-rtl::before + { + border: 4px solid #484848; + border-color: transparent transparent #000000 transparent; + } + .iui-menu-marker-top-rtl::after + { + border: 4px solid #484848; + border-color: transparent transparent #242424 transparent; + } + .iui-menu-marker-left::before + { + border: 4px solid #484848; + border-color: transparent #000000 transparent transparent; + } + .iui-menu-marker-left::after + { + border: 4px solid #484848; + border-color: transparent #242424 transparent transparent; + } + .iui-menu-marker-right::before + { + border: 4px solid #484848; + border-color: transparent transparent transparent #000000; + } + .iui-menu-marker-right::after + { + border: 4px solid #484848; + border-color: transparent transparent transparent #242424; + } + .iui-menu-disabled > ul + { + background: #808080; + } + .iui-menuitem-root-disabled, .iui-menuitem-disabled + { + border: solid thin transparent; + color: #cccccc; + } +`; + +export { iuiMenuItemMidnightStyle }; diff --git a/themes/midnight/integralui.midnight.js b/themes/midnight/integralui.midnight.js index 31aedc7..5f0bb8f 100644 --- a/themes/midnight/integralui.midnight.js +++ b/themes/midnight/integralui.midnight.js @@ -1,6 +1,6 @@ import { c as css } from '../../external/lit-element.js'; -export const iuiMidnightStyle = css` +const iuiMidnightStyle = css` .iui-header-expand-box { opacity: 0.75; } @@ -35,4 +35,6 @@ export const iuiMidnightStyle = css` background-color: #37373d; color: white; } -`; \ No newline at end of file +`; + +export { iuiMidnightStyle }; diff --git a/themes/midnight/integralui.numeric.midnight.js b/themes/midnight/integralui.numeric.midnight.js index 56fea9d..01e35dc 100644 --- a/themes/midnight/integralui.numeric.midnight.js +++ b/themes/midnight/integralui.numeric.midnight.js @@ -1,6 +1,6 @@ import { c as css } from '../../external/lit-element.js'; -export const iuiNumericMidnightStyle = css` +const iuiNumericMidnightStyle = css` .iui-numeric { background: transparent; } @@ -59,4 +59,11 @@ export const iuiNumericMidnightStyle = css` border: thin solid #151515; color: #cecece; } + + + .iui-numeric-inbound-value input, .iui-numeric-leftright-value input, .iui-numeric-updown-value input { + color: #cecece; + } `; + +export { iuiNumericMidnightStyle }; diff --git a/themes/midnight/integralui.paginator.midnight.js b/themes/midnight/integralui.paginator.midnight.js index 8bafbe2..b95dc45 100644 --- a/themes/midnight/integralui.paginator.midnight.js +++ b/themes/midnight/integralui.paginator.midnight.js @@ -1,8 +1,8 @@ import { c as css } from '../../external/lit-element.js'; -export const iuiPaginatorMidnightStyle = css` +const iuiPaginatorMidnightStyle = css` .iui-paginator { - background: var(--paginator-background, transparent); + background: var(--paginator-background, #252526); } .iui-paginator-button { background-color: var(--paginator-button-background-color, #0e639c); @@ -16,4 +16,9 @@ export const iuiPaginatorMidnightStyle = css` border: var(--paginator-input-border, thin solid #151515); color: var(--paginator-input-color, #cecece); } -`; \ No newline at end of file + .iui-paginator-label { + color: #cecece; + } +`; + +export { iuiPaginatorMidnightStyle }; diff --git a/themes/midnight/integralui.progressbar.midnight.js b/themes/midnight/integralui.progressbar.midnight.js index 15ffa85..029cf68 100644 --- a/themes/midnight/integralui.progressbar.midnight.js +++ b/themes/midnight/integralui.progressbar.midnight.js @@ -1,6 +1,6 @@ import { c as css } from '../../external/lit-element.js'; -export const iuiProgressBarMidnightStyle = css` +const iuiProgressBarMidnightStyle = css` .iui-progressbar { background: var(--progressbar-background, #272a2b); border: var(--progressbar-border, thin solid #151515); @@ -8,4 +8,6 @@ export const iuiProgressBarMidnightStyle = css` .iui-progressbar-content { background: var(--progressbar-content-background, #0a4369); } -`; \ No newline at end of file +`; + +export { iuiProgressBarMidnightStyle }; diff --git a/themes/midnight/integralui.radiobutton.midnight.js b/themes/midnight/integralui.radiobutton.midnight.js index 3588406..4d60a4a 100644 --- a/themes/midnight/integralui.radiobutton.midnight.js +++ b/themes/midnight/integralui.radiobutton.midnight.js @@ -1,7 +1,9 @@ import { c as css } from '../../external/lit-element.js'; -export const iuiRadioButtonMidnightStyle = css` +const iuiRadioButtonMidnightStyle = css` .iui-radio-button { color: var(--radio-button-color, #cccccc); } -`; \ No newline at end of file +`; + +export { iuiRadioButtonMidnightStyle }; diff --git a/themes/midnight/integralui.rating.midnight.js b/themes/midnight/integralui.rating.midnight.js index b338ec9..c0cb2ff 100644 --- a/themes/midnight/integralui.rating.midnight.js +++ b/themes/midnight/integralui.rating.midnight.js @@ -1,9 +1,11 @@ import { c as css } from '../../external/lit-element.js'; -export const iuiRatingMidnightStyle = css` +const iuiRatingMidnightStyle = css` .iui-rating { background: var(--rating-background, #252526); border: var(--rating-border, thin solid #252526); color: var(--rating-color, #cccccc); } -`; \ No newline at end of file +`; + +export { iuiRatingMidnightStyle }; diff --git a/themes/midnight/integralui.scrollbar.midnight.js b/themes/midnight/integralui.scrollbar.midnight.js index 8d62875..807d8a3 100644 --- a/themes/midnight/integralui.scrollbar.midnight.js +++ b/themes/midnight/integralui.scrollbar.midnight.js @@ -1,6 +1,6 @@ import { c as css } from '../../external/lit-element.js'; -export const iuiScrollBarMidnightStyle = css` +const iuiScrollBarMidnightStyle = css` .iui-scrollbar-vertical { background: var(--scrollbar-vertical-background, #1e1e1e); border-left: var(--scrollbar-vertical-border-left, thin solid #151515); @@ -20,4 +20,6 @@ export const iuiScrollBarMidnightStyle = css` .iui-scrollbar-corner { background: var(--scrollbar-corner-background, #1e1e1e); } -`; \ No newline at end of file +`; + +export { iuiScrollBarMidnightStyle }; diff --git a/themes/midnight/integralui.select.midnight.js b/themes/midnight/integralui.select.midnight.js index e042751..10006f4 100644 --- a/themes/midnight/integralui.select.midnight.js +++ b/themes/midnight/integralui.select.midnight.js @@ -1,6 +1,6 @@ import { c as css } from '../../external/lit-element.js'; -export const iuiSelectMidnightStyle = css` +const iuiSelectMidnightStyle = css` .iui-select { background-color: #252526; border-color: #151515; @@ -17,7 +17,7 @@ export const iuiSelectMidnightStyle = css` color: white; } .iui-select-header-expand-box { - background: #484848 !important; + background: #cccccc !important; } /* ComboBox DropDown Window */ @@ -34,8 +34,6 @@ export const iuiSelectMidnightStyle = css` background-color: #37373d; border: thin solid #37373d; } +`; - .iui-select-header-expand-box { - background: #cccccc !important; - } -`; \ No newline at end of file +export { iuiSelectMidnightStyle }; diff --git a/themes/midnight/integralui.slider.midnight.js b/themes/midnight/integralui.slider.midnight.js deleted file mode 100644 index 25c30b0..0000000 --- a/themes/midnight/integralui.slider.midnight.js +++ /dev/null @@ -1,14 +0,0 @@ -import { c as css } from '../../external/lit-element.js'; - -export const iuiSliderMidnightStyle = css` - .iui-slider-content, .iui-slider-content-vertical { - background: var(--slider-content-background, #303030); - } - .iui-slider-background, .iui-slider-background-vertical { - background: var(--slider-background-appearance, #0e639c); - } - .iui-slider-button { - background: var(--slider-button-background, transparent); - border: var(--slider-button-border, 2px solid #0e639c); - } -`; \ No newline at end of file diff --git a/themes/midnight/integralui.tooltip.midnight.js b/themes/midnight/integralui.tooltip.midnight.js index cf3cd88..dc8eaa1 100644 --- a/themes/midnight/integralui.tooltip.midnight.js +++ b/themes/midnight/integralui.tooltip.midnight.js @@ -1,10 +1,12 @@ import { c as css } from '../../external/lit-element.js'; -export const iuiTooltipMidnightStyle = css` +const iuiTooltipMidnightStyle = css` .iui-tooltip { background: var(--tooltip-background, #303030); border: var(--tooltip-border, thin solid #151515); color: var(--tooltip-color, #cccccc); } -`; \ No newline at end of file +`; + +export { iuiTooltipMidnightStyle }; diff --git a/themes/office/integralui.button.office.js b/themes/office/integralui.button.office.js index 96f89a2..f1e12d4 100644 --- a/themes/office/integralui.button.office.js +++ b/themes/office/integralui.button.office.js @@ -1,6 +1,6 @@ import { c as css } from '../../external/lit-element.js'; -export const iuiButtonOfficeStyle = css` +const iuiButtonOfficeStyle = css` .iui-button { background: var(--button-background, #e2e2e2); border: var(--button-hovered-border, thin solid #e2e2e2); @@ -45,4 +45,6 @@ export const iuiButtonOfficeStyle = css` border-color: var(--button-selected-border-color, #0a64ad); color: var(--button-selected-color, white); } -`; \ No newline at end of file +`; + +export { iuiButtonOfficeStyle }; diff --git a/themes/office/integralui.calendar.office.js b/themes/office/integralui.calendar.office.js index d1bf76f..0c6bf95 100644 --- a/themes/office/integralui.calendar.office.js +++ b/themes/office/integralui.calendar.office.js @@ -1,36 +1,37 @@ import { c as css } from '../../external/lit-element.js'; -export const iuiCalendarOfficeStyle = css` +const iuiCalendarOfficeStyle = css` .iui-calendar-cell-hovered, .iui-calendar-cell-grayed:hover { - background: #e5f3fe; - border-color: #e5f3fe; + background: var(--calendar-cell-hovered-background, #e5f3fe); + border-color: var(--calendar-cell-hovered-border-color, #e5f3fe); } .iui-calendar-cell-selected { - background: #cce8ff; - border-color: #cce8ff; - color: black; + background: var(--calendar-cell-selected-background, #cce8ff); + border-color: var(--calendar-cell-selected-border-color, #cce8ff); } .iui-calendar-cell-today { - border-color: #b4dbfc; + border-color: var(--calendar-cell-today-border-color, #b4dbfc); } @keyframes calendar-cell-enter { - 0% { - background: transparent; - border-color: transparent; + 0% { + background: var(--calendar-animation-cell-enter-background-0, transparent); + border-color: var(--calendar-animation-cell-enter-border-color-0, transparent); } 100% { - background: #e5f3fe; - border-color: #e5f3fe; + background: var(--calendar-animation-cell-enter-background-100, #e5f3fe); + border-color: var(--calendar-animation-cell-enter-border-color-100, #e5f3fe); } } @keyframes calendar-cell-leave { - 0% { - background: #e5f3fe; - border-color: #e5f3fe; + 0% { + background: var(--calendar-animation-cell-leave-background-0, #e5f3fe); + border-color: var(--calendar-animation-cell-leave-border-color-0, #e5f3fe); } 100% { - background: transparent; - border-color: transparent; + background: var(--calendar-animation-cell-leave-background-100, transparent); + border-color: var(--calendar-animation-cell-leave-border-color-100, transparent); } } -`; \ No newline at end of file +`; + +export { iuiCalendarOfficeStyle }; diff --git a/themes/office/integralui.checkbox.office.js b/themes/office/integralui.checkbox.office.js index 43aee13..b8e4d68 100644 --- a/themes/office/integralui.checkbox.office.js +++ b/themes/office/integralui.checkbox.office.js @@ -1,4 +1,6 @@ import { c as css } from '../../external/lit-element.js'; -export const iuiCheckBoxOfficeStyle = css` -`; \ No newline at end of file +const iuiCheckBoxOfficeStyle = css` +`; + +export { iuiCheckBoxOfficeStyle }; diff --git a/themes/office/integralui.contextmenu.office.js b/themes/office/integralui.contextmenu.office.js new file mode 100644 index 0000000..1b8f038 --- /dev/null +++ b/themes/office/integralui.contextmenu.office.js @@ -0,0 +1,38 @@ +import { c as css } from '../../external/lit-element.js'; + +const iuiContextMenuOfficeStyle = css` + .iui-contextmenu, .iui-contextmenu .iui-menuitem-block { + background: var(--contextmenu-background, #fefefe); + border: var(--contextmenu-border, thin solid #dedede); + } + .iui-contextmenuitem-root { + border-color: var(--contextmenuitem-root-border-color, transparent); + color: var(--contextmenuitem-root-color, black); + } + .iui-contextmenuitem-root-hovered, .iui-contextmenuitem-root-selected { + background: var(--contextmenuitem-root-hovered-background, transparent); + border-color: var(--contextmenuitem-root-hovered-border-color, transparent); + color: var(--contextmenuitem-root-hovered-color, black); + + animation-name: var(--contextmenuitem-root-animation-name, iui-menuitem-animate-enter); + animation-delay: 0s; + animation-direction: normal; + animation-duration: 0.15s; + animation-fill-mode: forwards; + animation-iteration-count: 1; + animation-play-state: running; + animation-timing-function: linear; + } + @keyframes iui-menuitem-animate-enter { + 0% { + background: var(--contextmenu-animation-menuitem-enter-background-0, transparent); + border-color: var(--contextmenu-animation-menuitem-enter-border-color-0, transparent); + } + 100% { + background: var(--contextmenu-animation-menuitem-enter-background-100, #d9edfd); + border-color: var(--contextmenu-animation-menuitem-enter-border-color-100, #d9edfd); + } + } +`; + +export { iuiContextMenuOfficeStyle }; diff --git a/themes/office/integralui.datepicker.office.js b/themes/office/integralui.datepicker.office.js index 9315681..3cfb10c 100644 --- a/themes/office/integralui.datepicker.office.js +++ b/themes/office/integralui.datepicker.office.js @@ -1,11 +1,13 @@ import { c as css } from '../../external/lit-element.js'; -export const iuiDatePickerOfficeStyle = css` +const iuiDatePickerOfficeStyle = css` /* Header */ .iui-datepicker-header { - border: thin solid #d9d9d9; + border: var(--datepicker-header-border, thin solid #d9d9d9); } .iui-datepicker-header-hovered .iui-datepicker-header-expand-box, .iui-datepicker-header-selected .iui-datepicker-header-expand-box { - background: #0d7edb !important; + background: #0d7edb; } -`; \ No newline at end of file +`; + +export { iuiDatePickerOfficeStyle }; diff --git a/themes/office/integralui.dragdrop.office.js b/themes/office/integralui.dragdrop.office.js index 5d267d4..31552ea 100644 --- a/themes/office/integralui.dragdrop.office.js +++ b/themes/office/integralui.dragdrop.office.js @@ -1,4 +1,6 @@ import { c as css } from '../../external/lit-element.js'; -export const iuiDragWinOfficeStyle = css` -`; \ No newline at end of file +const iuiDragWinOfficeStyle = css` +`; + +export { iuiDragWinOfficeStyle }; diff --git a/themes/office/integralui.dropdownbutton.office.js b/themes/office/integralui.dropdownbutton.office.js new file mode 100644 index 0000000..5a0324f --- /dev/null +++ b/themes/office/integralui.dropdownbutton.office.js @@ -0,0 +1,50 @@ +import { c as css } from '../../external/lit-element.js'; + +const iuiDropDownButtonOfficeStyle = css` + .iui-dropdownbutton { + background: var(--dropdownbutton-background, #e2e2e2); + border: var(--dropdownbutton-hovered-border, thin solid #e2e2e2); + border-color: var(--dropdownbutton-border-color, #e2e2e2); + } + .iui-dropdownbutton-enter { + animation-name: iui-dropdownbutton-animate-enter; + animation-delay: 0s; + animation-direction: normal; + animation-duration: 0.25s; + animation-fill-mode: forwards; + animation-iteration-count: 1; + animation-play-state: running; + animation-timing-function: linear; + } + @keyframes iui-dropdownbutton-animate-enter { + 0% { box-shadow: var(--dropdownbutton-enter-animation-box-shadow-0, 0 0 0 transparent); } + 100% { box-shadow: var(--dropdownbutton-enter-animation-box-shadow-100, 2px 3px 3px #e5e5e5); } + } + .iui-dropdownbutton-leave { + animation-name: iui-dropdownbutton-animate-leave; + animation-delay: 0s; + animation-direction: normal; + animation-duration: 0.25s; + animation-fill-mode: forwards; + animation-iteration-count: 1; + animation-play-state: running; + animation-timing-function: linear; + } + @keyframes iui-dropdownbutton-animate-leave { + 0% { box-shadow: var(--dropdownbutton-leave-animation-box-shadow-0, 2px 3px 3px #e5e5e5); } + 100% { box-shadow: var(--dropdownbutton-leave-animation-box-shadow-100, 0 0 0 transparent); } + } + .iui-dropdownbutton-hovered { + background: var(--dropdownbutton-hovered-background, #a5d3fa); + border: var(--dropdownbutton-hovered-border, thin solid #a5d3fa); + border-color: var(--dropdownbutton-hovered-border-color, #a5d3fa); + } + .iui-dropdownbutton-selected { + background: var(--dropdownbutton-selected-background, #0a64ad); + border: var(--dropdownbutton-selected-border, thin solid #0a64ad); + border-color: var(--dropdownbutton-selected-border-color, #0a64ad); + color: var(--dropdownbutton-selected-color, white); + } +`; + +export { iuiDropDownButtonOfficeStyle }; diff --git a/themes/office/integralui.dropdownfilter.office.js b/themes/office/integralui.dropdownfilter.office.js new file mode 100644 index 0000000..85b8796 --- /dev/null +++ b/themes/office/integralui.dropdownfilter.office.js @@ -0,0 +1,6 @@ +import { c as css } from '../../external/lit-element.js'; + +const iuiDropDownFilterOfficeStyle = css` +`; + +export { iuiDropDownFilterOfficeStyle }; diff --git a/themes/office/integralui.editors.office.js b/themes/office/integralui.editors.office.js new file mode 100644 index 0000000..9daf35e --- /dev/null +++ b/themes/office/integralui.editors.office.js @@ -0,0 +1,6 @@ +import { c as css } from '../../external/lit-element.js'; + +const iuiEditorsOfficeStyle = css` +`; + +export { iuiEditorsOfficeStyle }; diff --git a/themes/office/integralui.grid.office.js b/themes/office/integralui.grid.office.js index 7ce1613..d0a0ce4 100644 --- a/themes/office/integralui.grid.office.js +++ b/themes/office/integralui.grid.office.js @@ -1,22 +1,22 @@ import { c as css } from '../../external/lit-element.js'; -export const iuiGridOfficeStyle = css` - .iui-grid - { - border: thin solid #d9d9d9; - color: #000000; +const iuiGridOfficeStyle = css` + .iui-grid { + border-color: var(--grid-border-color, #d9d9d9); + color: var(--grid-color, black); } - .iui-grid-block-left, .iui-grid-block-right - { - background: #f9f9f9; + .iui-grid-block-left, .iui-grid-block-right { + background: var(--grid-block-fixed-background, #f9f9f9); } .iui-grid-block-top-left .iui-grid-column-header, + .iui-grid-block-top-left .iui-grid-column-filter, .iui-grid-block-top-left .iui-grid-column-footer, - .iui-grid-block-top-right .iui-grid-column-header, + .iui-grid-block-top-right .iui-grid-column-header, + .iui-grid-block-top-right .iui-grid-column-filter, .iui-grid-block-top-right .iui-grid-column-footer { - background-color: #eeeeee; - border: thin solid transparent !important; - color: #000000; + background: var(--grid-column-fixed-background, #eeeeee); + border: var(--grid-column-fixed-border, thin solid transparent); + color: var(--grid-column-fixed-color, black); } .iui-grid-block-top-left .iui-grid-column-header-hovered, .iui-grid-block-top-right .iui-grid-column-header-hovered { @@ -33,29 +33,28 @@ export const iuiGridOfficeStyle = css` .iui-grid-block-hover { border: thin solid #bebebe; } - .iui-grid-column-header, .iui-grid-column-footer - { - background-color: #f5f5f5; - border-color: transparent; + .iui-grid-column-header, .iui-grid-column-filter, .iui-grid-column-footer { + background: var(--grid-column-background, #f5f5f5); + border-color: var(--grid-column-border-color, transparent); border-right: thin solid transparent !important; - color: #49678f; + color: var(--grid-column-color, #49678f); + } + .iui-grid-column-filter { + background: var(--grid-column-filter-background, transparent); } - .iui-grid-column-header - { + .iui-grid-column-header, .iui-grid-column-filter { border-bottom: thin solid #efefef !important; } - .iui-grid-column-footer - { + .iui-grid-column-footer { border-top: thin solid #efefef !important; - color: #323232; + color: var(--grid-column-footer-color, #323232); } - .iui-grid-column-header-hovered - { - background-color: #e9e9e9; - border-color: #e9e9e9; - color: #49678f; + .iui-grid-column-header-hovered { + background: var(--grid-column-header-hovered-background, #e9e9e9); + border-color: var(--grid-colum-header-hovered-border-color, #e9e9e9); + color: var(--grid-column-header-hovered-color, #49678f); - animation-name: iui-grid-column-hovered-animate-enter; + animation-name: var(--grid-column-header-hovered-animation-name, iui-grid-column-hovered-animate-enter); animation-delay: 0s; animation-direction: normal; animation-duration: 0.15s; @@ -65,16 +64,15 @@ export const iuiGridOfficeStyle = css` animation-timing-function: linear; } @keyframes iui-grid-column-hovered-animate-enter { - 0% { background: #f5f5f5; } - 100% { background: #e9e9e9; } + 0% { background: var(--grid-animation-column-hovered-background-0, #f5f5f5); } + 100% { background: var(--grid-animation-column-hovered-background-100, #e9e9e9); } } - .iui-grid-column-header-selected - { - background-color: #d9d9d9; - border-right-color: #d9d9d9; - color: #3d5576; + .iui-grid-column-header-selected { + background: var(--grid-column-header-hovered-background, #d9d9d9); + border-color: var(--grid-colum-header-hovered-border-color, #d9d9d9); + color: var(--grid-column-header-hovered-color, #3d5576); - animation-name: iui-grid-column-selected-animate-enter; + animation-name: var(--grid-column-header-selected-animation-name, iui-grid-column-selected-animate-enter); animation-delay: 0s; animation-direction: normal; animation-duration: 0.15s; @@ -84,22 +82,20 @@ export const iuiGridOfficeStyle = css` animation-timing-function: linear; } @keyframes iui-grid-column-selected-animate-enter { - 0% { background: #e9e9e9; } - 100% { background: #d9d9d9; } + 0% { background: var(--grid-animation-column-selected-background-0, #e9e9e9); } + 100% { background: var(--grid-animation-column-selected-background-100, #d9d9d9); } } - .iui-grid-column-header-cell-selected - { - background-color: transparent; + .iui-grid-column-header-cell-selected { + background: transparent; } .iui-grid-row, .iui-grid-row-fixed { - color: #646464; + color: var(--grid-row-color, #646464); } - .iui-grid-row-hovered - { - background-color: transparent; - color: #000000; + .iui-grid-row-hovered { + background: var(--grid-row-hovered-background, transparent); + color: var(--grid-row-hovered-color, black); - animation-name: iui-grid-row-hovered-animate-enter; + animation-name: var(--grid-row-hovered-animation-name, iui-grid-row-hovered-animate-enter); animation-delay: 0s; animation-direction: normal; animation-duration: 0.15s; @@ -109,16 +105,15 @@ export const iuiGridOfficeStyle = css` animation-timing-function: linear; } @keyframes iui-grid-row-hovered-animate-enter { - 0% { background: transparent; } - 100% { background: #d9edfd; } + 0% { background: var(--grid-animation-row-hovered-background-0, transparent); } + 100% { background: var(--grid-animation-row-hovered-background-100, #d9edfd); } } - .iui-grid-row-selected - { - background-color: #d9edfd; - border-color: #99d1ff; - color: #000000; + .iui-grid-row-selected { + background: var(--grid-row-selected-background, #d9edfd); + border-color: var(--grid-row-selected-border-color, #99d1ff); + color: var(--grid-row-selected-color, black); - animation-name: iui-grid-row-selected-animate-enter; + animation-name: var(--grid-row-selected-animation-name, iui-grid-row-selected-animate-enter); animation-delay: 0s; animation-direction: normal; animation-duration: 0.25s; @@ -128,103 +123,84 @@ export const iuiGridOfficeStyle = css` animation-timing-function: linear; } @keyframes iui-grid-row-selected-animate-enter { - 0% { background: #d9edfd; } - 100% { background: #a5d3fa; } + 0% { background: var(--grid-animation-row-selected-background-0, #d9edfd); } + 100% { background: var(--grid-animation-row-selected-background-100, #a5d3fa); } } - .iui-grid-row-cell:first-child - { + .iui-grid-row-cell:first-child { border-left: thin solid transparent; } - .iui-grid-row-cell:last-child - { + .iui-grid-row-cell:last-child { border-right: thin solid transparent; } - .iui-grid-lines-horizontal:not(:last-child) - { + .iui-grid-lines-horizontal:not(:last-child) { border-bottom-color: #efefef; } - .iui-grid-lines-horizontal:last-child - { + .iui-grid-lines-horizontal:last-child { border-bottom: thin solid #efefef; } - .iui-grid-lines-vertical - { + .iui-grid-lines-vertical { border-right: thin solid transparent; } - .iui-grid-lines-both - { + .iui-grid-lines-both { border-right: thin solid transparent; border-bottom: thin solid #efefef; } - .iui-grid-expand-box-open - { + .iui-grid-expand-box-open { background: url(../../icons/expandbox-icons.png) no-repeat -80px 0; } - .iui-grid-expand-box-open:hover - { + .iui-grid-expand-box-open:hover { background: url(../../icons/expandbox-icons.png) no-repeat -64px 0; } - .iui-grid-expand-box-close - { + .iui-grid-expand-box-close { background: url(../../icons/expandbox-icons.png) no-repeat -80px -16px; } - .iui-grid-expand-box-close:hover - { + .iui-grid-expand-box-close:hover { background: url(../../icons/expandbox-icons.png) no-repeat -64px -16px; } /* Grouping */ - .iui-grid-grouping-panel - { - background-color: #f5f5f5; - border-bottom: thin solid #d9d9d9; - } - .iui-grid-grouping-panel-item - { - background-color: #e2e2e2; - border: thin solid #e2e2e2; + .iui-grid-grouping-panel { + background: var(--grid-grouping-panel-background, #f5f5f5); + border-bottom: var(--grid-grouping-panel-border-bottom, thin solid #d9d9d9); } - .iui-grid-grouping-panel-toolbar-button-add - { + .iui-grid-grouping-panel-item { + background: var(--grid-grouping-panel-item-background, #e2e2e2); + border: var(--grid-grouping-panel-item-border, thin solid #e2e2e2); + } + .iui-grid-grouping-panel-toolbar-button-add { background: #e2e2e2; border: thin solid #e2e2e2; } - .iui-grid-grouping-marker::before - { - border: 6px solid #e2e2e2; - border-color: transparent transparent transparent #e2e2e2; + .iui-grid-grouping-marker::before { + border: var(--grid-grouping-marker-before-border, 6px solid #e2e2e2); + border-color: var(--grid-grouping-marker-before-border-color, transparent transparent transparent #e2e2e2); } - .iui-grid-grouping-marker::after - { - border: 6px solid #e2e2e2; - border-color: transparent transparent transparent #e2e2e2; + .iui-grid-grouping-marker::after { + border: var(--grid-grouping-marker-after-border, 6px solid #e2e2e2); + border-color: var(--grid-grouping-marker-after-border-color, transparent transparent transparent #e2e2e2); } - .iui-grid-grouping-panel-dropdown-list li:hover - { + .iui-grid-grouping-panel-dropdown-list li:hover { background: #e5e5e5; } /* Animation */ - .iui-grid-column-animate-select - { + .iui-grid-column-animate-select { background: #e9e9e9; } - .iui-grid-row-animate-select - { + .iui-grid-row-animate-select { background: #d9edfd; } /* Filtering and Sorting */ - .iui-grid .iui-filtering, .iui-grid .iui-filtering-hovered, .iui-grid .iui-filtering-selected - { + .iui-grid .iui-filtering, .iui-grid .iui-filtering-hovered, .iui-grid .iui-filtering-selected { background-position: -96px -128px; } - .iui-grid .iui-sort-ascending, .iui-grid .iui-sort-ascending-hovered, .iui-grid .iui-sort-ascending-selected - { + .iui-grid .iui-sort-ascending, .iui-grid .iui-sort-ascending-hovered, .iui-grid .iui-sort-ascending-selected { background-position: -48px -128px !important; } - .iui-grid .iui-sort-descending, .iui-grid .iui-sort-descending-hovered, .iui-grid .iui-sort-descending-selected - { + .iui-grid .iui-sort-descending, .iui-grid .iui-sort-descending-hovered, .iui-grid .iui-sort-descending-selected { background-position: -32px -128px !important; } `; + +export { iuiGridOfficeStyle }; diff --git a/themes/office/integralui.header.office.js b/themes/office/integralui.header.office.js new file mode 100644 index 0000000..3668fca --- /dev/null +++ b/themes/office/integralui.header.office.js @@ -0,0 +1,4 @@ +import { c as css } from '../../external/lit-element.js'; + +export const iuiHeaderOfficeStyle = css` +`; \ No newline at end of file diff --git a/themes/office/integralui.item.office.js b/themes/office/integralui.item.office.js index c281de6..63188ec 100644 --- a/themes/office/integralui.item.office.js +++ b/themes/office/integralui.item.office.js @@ -1,6 +1,6 @@ import { c as css } from '../../external/lit-element.js'; -export const iuiItemOfficeStyle = css` +const iuiItemOfficeStyle = css` .iui-item { color: var(--item-color, #646464); } @@ -52,4 +52,6 @@ export const iuiItemOfficeStyle = css` border-color: var(--item-selected-animation-border-color-100, #a5d3fa); } } -`; \ No newline at end of file +`; + +export { iuiItemOfficeStyle }; diff --git a/themes/office/integralui.list.office.js b/themes/office/integralui.list.office.js index 96fd990..eb8a86e 100644 --- a/themes/office/integralui.list.office.js +++ b/themes/office/integralui.list.office.js @@ -1,10 +1,12 @@ import { c as css } from '../../external/lit-element.js'; -export const iuiListOfficeStyle = css` +const iuiListOfficeStyle = css` .iui-list { background: var(--list-background, white); border: var(--list-border, thin solid #d9d9d9); color: var(--list-color, black); } -`; \ No newline at end of file +`; + +export { iuiListOfficeStyle }; diff --git a/themes/office/integralui.listitem.office.js b/themes/office/integralui.listitem.office.js index 37ed72d..3967f91 100644 --- a/themes/office/integralui.listitem.office.js +++ b/themes/office/integralui.listitem.office.js @@ -1,6 +1,6 @@ import { c as css } from '../../external/lit-element.js'; -export const iuiListItemOfficeStyle = css` +const iuiListItemOfficeStyle = css` .iui-listitem { color: var(--listitem-color, #646464); } @@ -55,4 +55,6 @@ export const iuiListItemOfficeStyle = css` .iui-listitem-animate-select { background: var(--listitem-animate-select-background, #d9edfd); } -`; \ No newline at end of file +`; + +export { iuiListItemOfficeStyle }; diff --git a/themes/office/integralui.menuitem.office.js b/themes/office/integralui.menuitem.office.js new file mode 100644 index 0000000..50f64d6 --- /dev/null +++ b/themes/office/integralui.menuitem.office.js @@ -0,0 +1,180 @@ +import { c as css } from '../../external/lit-element.js'; + +const iuiMenuItemOfficeStyle = css` + .iui-menu + { + background-color: #2455b0; + } + .iui-menu > ul + { + background-color: #2455b0; + } + .iui-menuitem-root, .iui-menuitem-root-vertical + { + background: none; + border: solid thin #2455b0; + color: white; + } + .iui-menuitem-root-hovered, .iui-menuitem-root-selected + { + background-color: #153268 !important; + border: solid thin #0f244a !important; + color: white; + + animation-name: iui-menuitem-root-hovered-animate-enter; + animation-delay: 0s; + animation-direction: normal; + animation-duration: 0.15s; + animation-fill-mode: forwards; + animation-iteration-count: 1; + animation-play-state: running; + animation-timing-function: linear; + } + @keyframes iui-menuitem-root-hovered-animate-enter { + 0% { background: transparent; border-color: transparent; } + 100% { background: #153268; border-color: #0f244a; } + } + .iui-menuitem-root-hovered a + { + color: black; + } + .iui-menuitem + { + color: black; + } + .iui-menuitem-hovered, .iui-menuitem-selected, .iui-contextmenuitem-hovered, .iui-contextmenuitem-selected + { + background-color: #d9edfd !important; + border: solid thin #d9edfd !important; + color: black; + + animation-name: iui-menuitem-hovered-animate-enter; + animation-delay: 0s; + animation-direction: normal; + animation-duration: 0.15s; + animation-fill-mode: forwards; + animation-iteration-count: 1; + animation-play-state: running; + animation-timing-function: linear; + } + @keyframes iui-menuitem-hovered-animate-enter { + 0% { background: transparent; border-color: transparent; } + 100% { background: #d9edfd; border-color: #d9edfd; } + } + .iui-menuitem-selected a + { + color: black; + } + .iui-menu li > ul + { + background-color: #fefefe; + border: solid thin #1e4691; + } + .iui-menu-expand-box + { + width: 16px; + height: 16px; + } + .iui-menuitem, .iui-contextmenuitem + { + background-color: #fefefe; + border: solid thin #fefefe; + color: black; + } + .iui-menu-marker-expand-down::before + { + border: 4px solid #6791e1; + border-color: #6791e1 transparent transparent transparent; + } + .iui-menu-marker-expand-down-rtl::before + { + border: 4px solid #6791e1; + border-color: #6791e1 transparent transparent transparent; + } + .iui-menu-marker-expand-right::before + { + border: 4px solid #6791e1; + border-color: transparent transparent transparent #6791e1; + } + .iui-menu-marker-expand-left::before + { + border: 4px solid #6791e1; + border-color: transparent #6791e1 transparent transparent; + } + .iui-menu-marker-top::before + { + border: 4px solid #fefefe; + border-color: transparent transparent #1e4691 transparent; + } + .iui-menu-marker-top::after + { + border: 4px solid #fefefe; + border-color: transparent transparent #fefefe transparent; + } + .iui-menu-marker-top-rtl::before + { + border: 4px solid #fefefe; + border-color: transparent transparent #1e4691 transparent; + } + .iui-menu-marker-top-rtl::after + { + border: 4px solid #fefefe; + border-color: transparent transparent #fefefe transparent; + } + .iui-menu-marker-left::before + { + border: 4px solid #fefefe; + border-color: transparent #1e4691 transparent transparent; + } + .iui-menu-marker-left::after + { + border: 4px solid #fefefe; + border-color: transparent #fefefe transparent transparent; + } + .iui-menu-marker-right::before + { + border: 4px solid #fefefe; + border-color: transparent transparent transparent #1e4691; + } + .iui-menu-marker-right::after + { + border: 4px solid #fefefe; + border-color: transparent transparent transparent #fefefe; + } + .iui-menu-disabled > ul + { + background: #808080; + } + .iui-menuitem-root-disabled, .iui-menuitem-disabled + { + border: solid thin transparent; + color: #cecece; + } + + .iui-contextmenuitem-root-hovered, .iui-contextmenuitem-root-selected { + background: var(--contextmenuitem-hovered-background, transparent); + border: var(--contextmenuitem-hovered-border, thin solid transparent); + color: var(--contextmenuitem-hovered-color, black); + + animation-name: iui-contextmenuitem-hovered-animate-enter; + animation-delay: 0s; + animation-direction: normal; + animation-duration: 0.15s; + animation-fill-mode: forwards; + animation-iteration-count: 1; + animation-play-state: running; + animation-timing-function: linear; + } + @keyframes iui-contextmenuitem-hovered-animate-enter { + 0% { + background: var(--contextmenuitem-hovered-animation-background-0, transparent); + border-color: var(--contextmenuitem-hovered-animation-border-color-0, transparent); + } + 100% { + background: var(--contextmenuitem-hovered-animation-background-100, #d9edfd); + border-color: var(--contextmenuitem-hovered-animation-border-color-100, #d9edfd); + } + } +`; + +export { iuiMenuItemOfficeStyle }; diff --git a/themes/office/integralui.numeric.office.js b/themes/office/integralui.numeric.office.js index e90e7f2..442f6e7 100644 --- a/themes/office/integralui.numeric.office.js +++ b/themes/office/integralui.numeric.office.js @@ -1,6 +1,6 @@ import { c as css } from '../../external/lit-element.js'; -export const iuiNumericOfficeStyle = css` +const iuiNumericOfficeStyle = css` .iui-numeric-inbound-btn { background: #e2e2e2; border: thin solid #e2e2e2; @@ -30,3 +30,5 @@ export const iuiNumericOfficeStyle = css` border: thin solid #91c1e7; } `; + +export { iuiNumericOfficeStyle }; diff --git a/themes/office/integralui.office.js b/themes/office/integralui.office.js index 1863869..45dec40 100644 --- a/themes/office/integralui.office.js +++ b/themes/office/integralui.office.js @@ -1,6 +1,6 @@ import { c as css } from '../../external/lit-element.js'; -export const iuiOfficeStyle = css` +const iuiOfficeStyle = css` .iui-header-enter { animation-name: iui-combobox-header-animate-enter; animation-delay: 0s; @@ -29,4 +29,6 @@ export const iuiOfficeStyle = css` 0% { box-shadow: 2px 3px 3px #e5e5e5; } 100% { box-shadow: 0 0 0 transparent; } } -`; \ No newline at end of file +`; + +export { iuiOfficeStyle }; diff --git a/themes/office/integralui.paginator.office.js b/themes/office/integralui.paginator.office.js index 4ffd13e..41016a2 100644 --- a/themes/office/integralui.paginator.office.js +++ b/themes/office/integralui.paginator.office.js @@ -1,7 +1,9 @@ import { c as css } from '../../external/lit-element.js'; -export const iuiPaginatorOfficeStyle = css` +const iuiPaginatorOfficeStyle = css` .iui-paginator { background: var(--paginator-background, #f5f5f5); } -`; \ No newline at end of file +`; + +export { iuiPaginatorOfficeStyle }; diff --git a/themes/office/integralui.progressbar.office.js b/themes/office/integralui.progressbar.office.js index cdef4d9..6c9fd7e 100644 --- a/themes/office/integralui.progressbar.office.js +++ b/themes/office/integralui.progressbar.office.js @@ -1,4 +1,6 @@ import { c as css } from '../../external/lit-element.js'; -export const iuiProgressBarOfficeStyle = css` -`; \ No newline at end of file +const iuiProgressBarOfficeStyle = css` +`; + +export { iuiProgressBarOfficeStyle }; diff --git a/themes/office/integralui.radiobutton.office.js b/themes/office/integralui.radiobutton.office.js index 17c8098..68aa696 100644 --- a/themes/office/integralui.radiobutton.office.js +++ b/themes/office/integralui.radiobutton.office.js @@ -1,4 +1,6 @@ import { c as css } from '../../external/lit-element.js'; -export const iuiRadioButtonOfficeStyle = css` -`; \ No newline at end of file +const iuiRadioButtonOfficeStyle = css` +`; + +export { iuiRadioButtonOfficeStyle }; diff --git a/themes/office/integralui.rating.office.js b/themes/office/integralui.rating.office.js index e206d1e..92d59e4 100644 --- a/themes/office/integralui.rating.office.js +++ b/themes/office/integralui.rating.office.js @@ -1,4 +1,6 @@ import { c as css } from '../../external/lit-element.js'; -export const iuiRatingOfficeStyle = css` -`; \ No newline at end of file +const iuiRatingOfficeStyle = css` +`; + +export { iuiRatingOfficeStyle }; diff --git a/themes/office/integralui.scrollbar.office.js b/themes/office/integralui.scrollbar.office.js index b3f4978..4e07ebf 100644 --- a/themes/office/integralui.scrollbar.office.js +++ b/themes/office/integralui.scrollbar.office.js @@ -1,4 +1,6 @@ import { c as css } from '../../external/lit-element.js'; -export const iuiScrollBarOfficeStyle = css` -`; \ No newline at end of file +const iuiScrollBarOfficeStyle = css` +`; + +export { iuiScrollBarOfficeStyle }; diff --git a/themes/office/integralui.select.office.js b/themes/office/integralui.select.office.js index 3650c83..9aea172 100644 --- a/themes/office/integralui.select.office.js +++ b/themes/office/integralui.select.office.js @@ -1,6 +1,6 @@ import { c as css } from '../../external/lit-element.js'; -export const iuiSelectOfficeStyle = css` +const iuiSelectOfficeStyle = css` /* Header */ .iui-select-header { border: thin solid #d9d9d9; @@ -8,4 +8,6 @@ export const iuiSelectOfficeStyle = css` .iui-select-header-hovered .iui-select-header-expand-box, .iui-select-header-selected .iui-select-header-expand-box { background: #0d7edb !important; } -`; \ No newline at end of file +`; + +export { iuiSelectOfficeStyle }; diff --git a/themes/office/integralui.slider.office.js b/themes/office/integralui.slider.office.js deleted file mode 100644 index 91d98b3..0000000 --- a/themes/office/integralui.slider.office.js +++ /dev/null @@ -1,11 +0,0 @@ -import { c as css } from '../../external/lit-element.js'; - -export const iuiSliderOfficeStyle = css` - .iui-slider-background, .iui-slider-background-vertical { - background: var(--slider-background-appearance, #5f8bde); - } - .iui-slider-button { - background: var(--slider-button-background, transparent); - border: var(--slider-button-border, 2px solid #5f8bde); - } -`; \ No newline at end of file diff --git a/themes/office/integralui.tooltip.office.js b/themes/office/integralui.tooltip.office.js index 8785066..28a6e3b 100644 --- a/themes/office/integralui.tooltip.office.js +++ b/themes/office/integralui.tooltip.office.js @@ -1,4 +1,6 @@ import { c as css } from '../../external/lit-element.js'; -export const iuiTooltipOfficeStyle = css` -`; \ No newline at end of file +const iuiTooltipOfficeStyle = css` +`; + +export { iuiTooltipOfficeStyle }; diff --git a/wrappers/react.integralui.button.js b/wrappers/react.integralui.button.js index 484c7fb..9a6e9e5 100644 --- a/wrappers/react.integralui.button.js +++ b/wrappers/react.integralui.button.js @@ -1,6 +1,6 @@ /* filename: react.integralui.button.js - version : 21.1.0 + version : 21.4.0 Copyright © 2016-2021 Lidor Systems. All rights reserved. This file is part of the "IntegralUI Web" Library. @@ -12,4 +12,4 @@ This SOFTWARE is provided "AS IS", WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for the specific language governing rights and limitations under the License. Any infringement will be prosecuted under applicable laws. */ -import React,{Component}from"react";import"../components/integralui.button.js";var _createClass=function(){function e(e,t){for(var r=0;r