@gp-grid/vue 0.22.0 → 0.23.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +18 -15
- package/dist/index.js +1 -1
- package/dist/styles.css +1 -1
- package/package.json +2 -2
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Component, ComputedRef, Ref, ShallowRef, VNode } from "vue";
|
|
2
|
-
import { CellDataType, CellPosition, CellPosition as CellPosition$1, CellRange, CellRange as CellRange$1, CellRendererParams, CellRendererParams as CellRendererParams$1, CellValue, CellValue as CellValue$1, CellValueChangedEvent, CellValueChangedEvent as CellValueChangedEvent$1, ColumnDefinition as ColumnDefinition$1, ColumnFilterModel, ColumnFilterModel as ColumnFilterModel$1, ContainerBounds, DataSource, DataSource as DataSource$1, DataSourceLoadMode, DataSourceRange, DataSourceRequest, DataSourceResponse, DateFilterCondition, DragState, DragState as DragState$1, EditRendererParams, EditRendererParams as EditRendererParams$1, FillHandlePosition, FilterCondition, FilterModel, FilterPopupState, GridCore, GridCore as GridCore$1, GridFilterOperatorLabels, GridInstruction, GridInstruction as GridInstruction$1,
|
|
2
|
+
import { CellDataType, CellPosition, CellPosition as CellPosition$1, CellRange, CellRange as CellRange$1, CellRendererParams, CellRendererParams as CellRendererParams$1, CellValue, CellValue as CellValue$1, CellValueChangedEvent, CellValueChangedEvent as CellValueChangedEvent$1, ColumnDefinition as ColumnDefinition$1, ColumnFilterInput, ColumnFilterModel, ColumnFilterModel as ColumnFilterModel$1, ContainerBounds, DataSource, DataSource as DataSource$1, DataSourceLoadMode, DataSourceRange, DataSourceRequest, DataSourceResponse, DateFilterCondition, DragState, DragState as DragState$1, EditRendererParams, EditRendererParams as EditRendererParams$1, FillHandlePosition, FilterCombination, FilterCombination as FilterCombination$1, FilterCondition, FilterConditionGroup, FilterModel, FilterPopupState, GridCore, GridCore as GridCore$1, GridFilterOperatorLabels, GridInstruction, GridInstruction as GridInstruction$1, GridLabelOverrides, GridLabelOverrides as GridLabelOverrides$1, GridLabels, GridState, GridState as GridState$1, HeaderData, HeaderRendererParams, HeaderRendererParams as HeaderRendererParams$1, HighlightingOptions, KeyEventData, LegacyColumnFilterModel, LegacyFilterCondition, MutableDataSource, MutableDataSource as MutableDataSource$1, NumberFilterCondition, ParallelSortOptions, PointerEventData, RowCacheEviction, RowCacheOptions, RowId, RowId as RowId$1, RowLoadingMode, RowLoadingOptions, RowLoadingOptions as RowLoadingOptions$1, SelectionState, SlotData, SlotData as SlotData$1, SortDirection, SortDirection as SortDirection$1, SortModel, TextFilterCondition, VisibleColumnInfo, buildCellClasses, buildCellClasses as buildCellClasses$1, calculateColumnPositions, createClientDataSource, createDataSourceFromArray, createInitialState, createMutableClientDataSource, createServerDataSource, findColumnAtX, getFieldValue as getCellValue, getTotalWidth, isCellActive, isCellActive as isCellActive$1, isCellEditing, isCellEditing as isCellEditing$1, isCellInFillPreview, isCellInFillPreview as isCellInFillPreview$1, isCellSelected, isCellSelected as isCellSelected$1, isLegacyColumnFilterModel, isRowVisible, normalizeColumnFilterModel } from "@gp-grid/core";
|
|
3
3
|
//#region src/types.d.ts
|
|
4
4
|
/** Row data alias — core's generic defaults to `unknown`, this preserves the name. */
|
|
5
5
|
type Row = unknown;
|
|
@@ -56,7 +56,7 @@ interface GpGridProps<TData = unknown> {
|
|
|
56
56
|
isLoading: boolean;
|
|
57
57
|
}>;
|
|
58
58
|
/** Override any user-visible grid label. Unspecified labels fall back to English defaults. */
|
|
59
|
-
labels?:
|
|
59
|
+
labels?: GridLabelOverrides$1;
|
|
60
60
|
}
|
|
61
61
|
//#endregion
|
|
62
62
|
//#region src/GpGrid.vue.d.ts
|
|
@@ -102,7 +102,7 @@ type __VLS_Props = {
|
|
|
102
102
|
/** Called when a column is moved/reordered. */
|
|
103
103
|
onColumnMoved?: (fromIndex: number, toIndex: number) => void;
|
|
104
104
|
/** Override any user-visible grid label. Unspecified labels fall back to English defaults. */
|
|
105
|
-
labels?:
|
|
105
|
+
labels?: GridLabelOverrides$1;
|
|
106
106
|
};
|
|
107
107
|
declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {
|
|
108
108
|
core: import("vue").ShallowRef<GridCore$1<unknown> | null, GridCore$1<unknown> | null>;
|
|
@@ -314,20 +314,23 @@ interface LocalFilterCondition<TOperator extends string> {
|
|
|
314
314
|
operator: TOperator;
|
|
315
315
|
value: string;
|
|
316
316
|
valueTo: string;
|
|
317
|
-
|
|
317
|
+
}
|
|
318
|
+
interface LocalFilterGroup<TOperator extends string> {
|
|
319
|
+
conditions: LocalFilterCondition<TOperator>[];
|
|
320
|
+
combination: FilterCombination$1;
|
|
318
321
|
}
|
|
319
322
|
interface UseFilterConditionsResult<TOperator extends string> {
|
|
320
|
-
|
|
321
|
-
combination: Ref<
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
323
|
+
groups: Ref<LocalFilterGroup<TOperator>[]>;
|
|
324
|
+
combination: Ref<FilterCombination$1>;
|
|
325
|
+
setGroupCombination: (groupIndex: number, combination: FilterCombination$1) => void;
|
|
326
|
+
updateCondition: (groupIndex: number, conditionIndex: number, updates: Partial<LocalFilterCondition<TOperator>>) => void;
|
|
327
|
+
addCondition: (groupIndex: number, defaultOperator: TOperator) => void;
|
|
328
|
+
removeCondition: (groupIndex: number, conditionIndex: number) => void;
|
|
329
|
+
addGroup: (defaultOperator: TOperator) => void;
|
|
330
|
+
removeGroup: (groupIndex: number) => void;
|
|
325
331
|
}
|
|
326
|
-
/**
|
|
327
|
-
|
|
328
|
-
* Used by NumberFilterContent, DateFilterContent, and TextFilterContent (condition mode).
|
|
329
|
-
*/
|
|
330
|
-
declare function useFilterConditions<TOperator extends string>(initialConditions: LocalFilterCondition<TOperator>[], initialCombination?: "and" | "or"): UseFilterConditionsResult<TOperator>;
|
|
332
|
+
/** Manage the one-level condition groups used by every Vue filter editor. */
|
|
333
|
+
declare function useFilterConditions<TOperator extends string>(initialGroups: LocalFilterGroup<TOperator>[], initialCombination?: FilterCombination$1): UseFilterConditionsResult<TOperator>;
|
|
331
334
|
//#endregion
|
|
332
335
|
//#region src/gridState/useGridState.d.ts
|
|
333
336
|
/**
|
|
@@ -399,4 +402,4 @@ interface RenderHeaderOptions {
|
|
|
399
402
|
*/
|
|
400
403
|
declare function renderHeader(options: RenderHeaderOptions): VNode;
|
|
401
404
|
//#endregion
|
|
402
|
-
export { type CellDataType, type CellPosition, type CellRange, type CellRendererParams, type CellValue, type CellValueChangedEvent, type ColumnDefinition, type ColumnFilterModel, type ContainerBounds, type DataSource, type DataSourceLoadMode, type DataSourceRange, type DataSourceRequest, type DataSourceResponse, type DateFilterCondition, type DragState, type EditRendererParams, type FilterCondition, type FilterModel, type FilterPopupState, _default as GpGrid, _default as default, type GpGridProps, GridCore, type GridFilterOperatorLabels, type GridInstruction, type GridLabels, type GridState, type HeaderData, type HeaderRendererParams, type KeyEventData, type LocalFilterCondition, type MutableDataSource, type NumberFilterCondition, type PointerEventData, type RowCacheEviction, type RowCacheOptions, type RowId, type RowLoadingMode, type RowLoadingOptions, type SelectionState, type SlotData, type SortDirection, type SortModel, type TextFilterCondition, type UseFillHandleOptions, type UseFillHandleResult, type UseFilterConditionsResult, type UseFilterPopupOptions, type UseGpGridOptions, type UseGpGridResult, type UseGridDataOptions, type UseGridDataResult, type UseInputHandlerOptions, type UseInputHandlerResult, type VueCellRenderer, type VueEditRenderer, type VueHeaderRenderer, buildCellClasses, calculateColumnPositions, createClientDataSource, createDataSourceFromArray, createInitialState, createMutableClientDataSource, createServerDataSource, findColumnAtX, getCellValue, getTotalWidth, isCellActive, isCellEditing, isCellInFillPreview, isCellSelected, isRowVisible, renderCell, renderEditCell, renderHeader, useAutoScroll, useFillHandle, useFilterConditions, useFilterPopup, useGpGrid, useGridData, useGridState, useInputHandler };
|
|
405
|
+
export { type CellDataType, type CellPosition, type CellRange, type CellRendererParams, type CellValue, type CellValueChangedEvent, type ColumnDefinition, type ColumnFilterInput, type ColumnFilterModel, type ContainerBounds, type DataSource, type DataSourceLoadMode, type DataSourceRange, type DataSourceRequest, type DataSourceResponse, type DateFilterCondition, type DragState, type EditRendererParams, type FilterCombination, type FilterCondition, type FilterConditionGroup, type FilterModel, type FilterPopupState, _default as GpGrid, _default as default, type GpGridProps, GridCore, type GridFilterOperatorLabels, type GridInstruction, type GridLabelOverrides, type GridLabels, type GridState, type HeaderData, type HeaderRendererParams, type KeyEventData, type LegacyColumnFilterModel, type LegacyFilterCondition, type LocalFilterCondition, type LocalFilterGroup, type MutableDataSource, type NumberFilterCondition, type PointerEventData, type RowCacheEviction, type RowCacheOptions, type RowId, type RowLoadingMode, type RowLoadingOptions, type SelectionState, type SlotData, type SortDirection, type SortModel, type TextFilterCondition, type UseFillHandleOptions, type UseFillHandleResult, type UseFilterConditionsResult, type UseFilterPopupOptions, type UseGpGridOptions, type UseGpGridResult, type UseGridDataOptions, type UseGridDataResult, type UseInputHandlerOptions, type UseInputHandlerResult, type VueCellRenderer, type VueEditRenderer, type VueHeaderRenderer, buildCellClasses, calculateColumnPositions, createClientDataSource, createDataSourceFromArray, createInitialState, createMutableClientDataSource, createServerDataSource, findColumnAtX, getCellValue, getTotalWidth, isCellActive, isCellEditing, isCellInFillPreview, isCellSelected, isLegacyColumnFilterModel, isRowVisible, normalizeColumnFilterModel, renderCell, renderEditCell, renderHeader, useAutoScroll, useFillHandle, useFilterConditions, useFilterPopup, useGpGrid, useGridData, useGridState, useInputHandler };
|
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{Fragment as e,computed as t,createBlock as n,createCommentVNode as r,createElementBlock as i,createElementVNode as a,createTextVNode as o,createVNode as s,defineComponent as c,h as l,normalizeClass as u,normalizeStyle as d,onMounted as f,onUnmounted as p,openBlock as m,ref as h,renderList as g,resolveDynamicComponent as _,shallowRef as v,toDisplayString as y,unref as b,vModelText as x,watch as S,watchEffect as C,withDirectives as w,withModifiers as T}from"vue";import{GridCore as E,GridCore as D,PendingCellTapController as O,ROW_DRAG_HOLD_MS as k,TAP_SLOP_PX as A,TouchScrollController as j,applyInstruction as M,bindPeekSelectAll as N,buildCellClasses as P,buildCellClasses as F,calculateColumnPositions as I,calculateFillHandlePosition as L,calculateFilterPopupPosition as R,calculateScaledColumnPositions as z,createClientDataSource as B,createClientDataSource as ee,createDataSourceFromArray as V,createDataSourceFromArray as H,createInitialState as U,createInitialState as W,createMutableClientDataSource as te,createMutableClientDataSource as ne,createServerDataSource as re,findColumnAtX as ie,formatCellValue as ae,formatLabel as G,getDateOperatorOptions as K,getFieldValue as oe,getFieldValue as se,getNumberOperatorOptions as q,getTextOperatorOptions as ce,getTotalWidth as le,getTotalWidth as ue,groupDistinctValues as de,isBlankCellValue as fe,isCellActive as pe,isCellActive as J,isCellEditing as Y,isCellEditing as X,isCellInFillPreview as me,isCellInFillPreview as Z,isCellSelected as he,isCellSelected as ge,isRowVisible as _e,labelsForSelectedValues as ve,rawValuesForLabels as ye,resolveGridLabels as be,scrollCellIntoView as xe}from"@gp-grid/core";function Se(e){let t=v(W(e));return{state:t,applyInstructions:e=>{let n=t.value,r=new Map(n.slots),i=new Map(n.headers),a={pendingScrollTop:null};for(let t of e){let e=M(t,r,i);e&&Object.assign(a,e)}a.slots=r,a.headers=i,t.value={...n,...a}},reset:()=>{t.value=W()}}}function Ce(e,t){let n=h(null);function r(r,i){n.value&&clearInterval(n.value),n.value=setInterval(()=>{let n=e.value;n&&(n.scrollTop+=i,n.scrollLeft+=r,t?.())},16)}function i(){n.value&&=(clearInterval(n.value),null)}return p(()=>{i()}),{startAutoScroll:r,stopAutoScroll:i}}function we(e,t,n,r){let{activeCell:i,selectionRange:a,editingCell:o,filterPopupOpen:s,rowHeight:c,headerHeight:l,columnPositions:u,columnWidths:d,visibleColumnsWithIndices:f,slots:m,rowsWrapperOffset:g}=r,_=h({isDragging:!1,dragType:null,fillSourceRange:null,fillTarget:null,columnResize:null,columnMove:null,rowDrag:null}),v=null,y=null,b=null,x=null,C=null,w=e=>{e.preventDefault()},T=new O({getCore:()=>e.value,isBrowser:typeof window<`u`,onTapConfirmed:()=>t.value?.focus()}),{startAutoScroll:E,stopAutoScroll:D}=Ce(t,()=>{let t=e.value;if(v&&t?.input){let e=j();e&&(t.input.handleDragMove(v,e),_.value=t.input.getDragState())}});S([()=>l,()=>c,u,f],()=>{let t=e.value;if(t?.input){let e=f.value;t.input.updateDeps({getHeaderHeight:()=>l,getRowHeight:()=>c,getColumnPositions:()=>u.value,getColumnCount:()=>e.length,getOriginalColumnIndex:t=>{let n=e[t];return n?n.originalIndex:t}})}},{immediate:!0});function j(){let e=t.value;if(!e)return null;let n=e.getBoundingClientRect();return{top:n.top,left:n.left,width:n.width,height:n.height,scrollTop:e.scrollTop,scrollLeft:e.scrollLeft}}function M(e){return{clientX:e.clientX,clientY:e.clientY,button:e.button,shiftKey:e.shiftKey,ctrlKey:e.ctrlKey,metaKey:e.metaKey,pointerId:e.pointerId,pointerType:e.pointerType}}function N(){y?.();let n=t=>{t.preventDefault();let n=e.value,r=j();if(!n?.input||!r)return;let i=M(t);v=i;let a=n.input.handleDragMove(i,r);a&&(a.autoScroll?E(a.autoScroll.dx,a.autoScroll.dy):D(),_.value=n.input.getDragState())},r=()=>{try{let t=e.value;t?.input&&t.input.handleDragEnd()}finally{let i=e.value,a=i?.input?i.input.getDragState():{isDragging:!1,dragType:null,fillSourceRange:null,fillTarget:null,columnResize:null,columnMove:null,rowDrag:null};_.value=a,v=null,D(),document.removeEventListener(`touchmove`,w),C!==null&&t.value&&(t.value.style.overflow=C,C=null),document.removeEventListener(`pointermove`,n),document.removeEventListener(`pointerup`,r),document.removeEventListener(`pointercancel`,r),y=null}};document.addEventListener(`pointermove`,n,{passive:!1}),document.addEventListener(`pointerup`,r),document.addEventListener(`pointercancel`,r),y=()=>{document.removeEventListener(`pointermove`,n),document.removeEventListener(`pointerup`,r),document.removeEventListener(`pointercancel`,r)}}function P(){b!==null&&(clearTimeout(b),b=null,e.value?.input?.cancelPendingRowDrag()),x=null}function F(n,r,i){let a=e.value;if(!a?.input)return;let o=a.input.handleCellMouseDown(n,r,M(i));if(o.focusContainer&&t.value?.focus(),o.startTap&&T.start(i),o.startDrag===`selection`)a.input.startSelectionDrag(),_.value=a.input.getDragState(),N();else if(o.startDrag===`row-drag`)_.value=a.input.getDragState(),N();else if(o.startDrag===`row-drag-pending`){P(),x={pointerId:i.pointerId,target:i.currentTarget??i.target};let e=i.clientX,n=i.clientY,r=t=>{let r=t.clientX-e,i=t.clientY-n;(Math.abs(r)>A||Math.abs(i)>A)&&(P(),s())},o=()=>{P(),s()},s=()=>{document.removeEventListener(`pointermove`,r),document.removeEventListener(`pointerup`,o),document.removeEventListener(`pointercancel`,o)};document.addEventListener(`pointermove`,r),document.addEventListener(`pointerup`,o,{once:!0}),document.addEventListener(`pointercancel`,o,{once:!0}),b=setTimeout(()=>{b=null,s();let e=x;if(x=null,a.input.confirmPendingRowDrag()){if(t.value&&(C=t.value.style.overflow,t.value.style.overflow=`hidden`),document.addEventListener(`touchmove`,w,{passive:!1}),e)try{e.target.setPointerCapture(e.pointerId)}catch{}_.value=a.input.getDragState(),N()}},k)}}function I(t,n){let r=e.value;r?.input&&r.input.handleCellDoubleClick(t,n)}function L(t){let n=e.value;if(!n?.input)return;let r=n.input.handleFillHandleMouseDown(i.value,a.value,M(t));if(r.preventDefault&&t.preventDefault(),r.stopPropagation&&t.stopPropagation(),r.startDrag===`fill`){try{t.target.setPointerCapture(t.pointerId)}catch{}_.value=n.input.getDragState(),N()}}function R(t,r){let i=e.value;if(!i?.input)return;let a=n.value[t];if(!a)return;let o=a.colId??a.field;i.input.handleHeaderClick(o,r.shiftKey)}function z(t,n,r,i){let a=e.value;if(!a?.input)return;let o=a.input.handleHeaderMouseDown(t,n,r,M(i));if(o.preventDefault&&i.preventDefault(),o.stopPropagation&&i.stopPropagation(),o.startDrag===`column-move`){try{i.target.setPointerCapture(i.pointerId)}catch{}_.value=a.input.getDragState(),N()}}function B(t,n,r){let i=e.value;if(!i?.input)return;let a=i.input.handleHeaderResizeMouseDown(t,n,M(r));a.preventDefault&&r.preventDefault(),a.stopPropagation&&r.stopPropagation(),a.startDrag===`column-resize`&&(_.value=i.input.getDragState(),N())}function ee(n){let r=e.value,a=t.value;if(!r?.input)return;let l=r.input.handleKeyDown({key:n.key,shiftKey:n.shiftKey,ctrlKey:n.ctrlKey,metaKey:n.metaKey},i.value,o.value,s.value);l.preventDefault&&n.preventDefault(),l.scrollToCell&&a&&xe(r,a,l.scrollToCell.row,c,m.value,g.value,{colIndex:l.scrollToCell.col,visibleColumns:f.value,columnPositions:u.value,columnWidths:d.value})}function V(t){let n=e.value;if(n===null||o.value!==null||s.value)return;let r=t.clipboardData?.getData(`text/plain`)??``;n.pasteClipboardText(r)&&t.preventDefault()}function H(n,r){let i=e.value,a=t.value;if(!i?.input||!a)return;let o=i.input.handleWheel(n.deltaY,n.deltaX,r);o&&(n.preventDefault(),a.scrollTop+=o.dy,a.scrollLeft+=o.dx)}return p(()=>{y?.(),y=null,P(),T.cancel(),D(),document.removeEventListener(`touchmove`,w),C!==null&&t.value&&(t.value.style.overflow=C,C=null)}),{handleCellMouseDown:F,handleCellDoubleClick:I,handleFillHandleMouseDown:L,handleHeaderClick:R,handleHeaderMouseDown:z,handleHeaderResizeMouseDown:B,handleKeyDown:ee,handlePaste:V,handleWheel:H,dragState:_}}const Te=e=>{let{activeCell:n,selectionRange:r,slots:i,columns:a,visibleColumnsWithIndices:o,columnPositions:s,columnWidths:c,rowHeight:l}=e;return{fillHandlePosition:t(()=>L({activeCell:n.value,selectionRange:r.value,slots:i.value,columns:a.value,visibleColumnsWithIndices:o.value,columnPositions:s.value,columnWidths:c.value,rowHeight:l}))}};function Ee(e,t){let{onClose:n,ignoreSelector:r=`.gp-grid-filter-icon`}=t,i=null,a=null;f(()=>{i=t=>{let i=t.target;r&&i.closest(r)||e.value&&!e.value.contains(i)&&n()},a=e=>{e.key===`Escape`&&n()},requestAnimationFrame(()=>{i&&document.addEventListener(`pointerdown`,i),a&&document.addEventListener(`keydown`,a)})}),p(()=>{i&&document.removeEventListener(`pointerdown`,i),a&&document.removeEventListener(`keydown`,a)})}function Q(e,t=`and`){let n=h([...e]);return{conditions:n,combination:h(t),updateCondition:(e,t)=>{let r=[...n.value];r[e]={...r[e],...t},n.value=r},addCondition:e=>{n.value=[...n.value,{operator:e,value:``,valueTo:``,nextOperator:`and`}]},removeCondition:e=>{n.value=n.value.filter((t,n)=>n!==e)}}}const De={class:`gp-grid-filter-content gp-grid-filter-text`},Oe={key:0,class:`gp-grid-filter-mode-toggle`},ke={key:1,class:`gp-grid-filter-info`},Ae=[`placeholder`],je={class:`gp-grid-filter-actions`},Me=[`disabled`],Ne={class:`gp-grid-filter-list`},Pe={key:0,class:`gp-grid-filter-option`},Fe=[`checked`],Ie={class:`gp-grid-filter-blank`},Le=[`checked`,`onChange`],Re={key:0,class:`gp-grid-filter-combination`},ze=[`onClick`],Be=[`onClick`],Ve={class:`gp-grid-filter-row`},He=[`value`,`autofocus`,`onChange`],Ue=[`value`],We=[`value`,`placeholder`,`onInput`],Ge=[`onClick`],Ke={class:`gp-grid-filter-buttons`},qe=c({__name:`TextFilterContent`,props:{distinctValues:{},valueFormatter:{type:Function},currentFilter:{},labels:{}},emits:[`apply`,`close`],setup(n,{emit:o}){let s=n,c=o,l=t(()=>ce(s.labels)),d=t(()=>de(s.distinctValues,s.valueFormatter)),f=t(()=>d.value.length>100),p=h(t(()=>{if(!s.currentFilter?.conditions[0])return f.value?`condition`:`values`;let e=s.currentFilter.conditions[0];return e.selectedValues&&e.selectedValues.size>0?`values`:`condition`}).value),_=t(()=>{if(!s.currentFilter?.conditions[0])return new Set;let e=s.currentFilter.conditions[0];return e.selectedValues?ve(d.value,e.selectedValues):new Set}),v=t(()=>s.currentFilter?.conditions[0]?s.currentFilter.conditions[0].includeBlank??!0:!0),S=h(``),C=h(new Set(_.value)),T=h(v.value),{conditions:E,combination:D,updateCondition:O,addCondition:k,removeCondition:A}=Q(t(()=>{if(!s.currentFilter?.conditions.length)return[{operator:`contains`,value:``,valueTo:``,nextOperator:`and`}];let e=s.currentFilter.conditions[0];if(e.selectedValues&&e.selectedValues.size>0)return[{operator:`contains`,value:``,valueTo:``,nextOperator:`and`}];let t=s.currentFilter.combination??`and`;return s.currentFilter.conditions.map(e=>{let n=e;return{operator:n.operator,value:n.value??``,valueTo:``,nextOperator:n.nextOperator??t}})}).value,s.currentFilter?.combination??`and`),j=t(()=>{if(!S.value)return d.value;let e=S.value.toLowerCase();return d.value.filter(t=>t.label.toLowerCase().includes(e))}),M=t(()=>s.distinctValues.some(fe)),N=t(()=>j.value.every(e=>C.value.has(e.label))&&(!M.value||T.value));function P(){C.value=new Set(j.value.map(e=>e.label)),M.value&&(T.value=!0)}function F(){C.value=new Set,T.value=!1}function I(e){let t=new Set(C.value);t.has(e)?t.delete(e):t.add(e),C.value=t}function L(){if(p.value===`values`){if(d.value.every(e=>C.value.has(e.label))&&(!M.value||T.value)){c(`apply`,null);return}let e={conditions:[{type:`text`,operator:`equals`,selectedValues:ye(d.value,C.value),includeBlank:T.value}],combination:`and`};c(`apply`,e)}else{let e=E.value.filter(e=>e.operator===`blank`||e.operator===`notBlank`||e.value.trim()!==``);if(e.length===0){c(`apply`,null);return}let t={conditions:e.map(e=>({type:`text`,operator:e.operator,value:e.value,nextOperator:e.nextOperator})),combination:`and`};c(`apply`,t)}}function R(){c(`apply`,null)}return(t,o)=>(m(),i(`div`,De,[r(` Mode toggle - only show if not too many values `),f.value?r(`v-if`,!0):(m(),i(`div`,Oe,[a(`button`,{type:`button`,class:u({active:p.value===`values`}),onClick:o[0]||=e=>p.value=`values`},y(n.labels.valuesMode),3),a(`button`,{type:`button`,class:u({active:p.value===`condition`}),onClick:o[1]||=e=>p.value=`condition`},y(n.labels.conditionMode),3)])),r(` Too many values message `),f.value&&p.value===`condition`?(m(),i(`div`,ke,y(b(G)(n.labels.tooManyValues,{count:d.value.length})),1)):r(`v-if`,!0),r(` VALUES MODE `),p.value===`values`?(m(),i(e,{key:2},[r(` Search input `),w(a(`input`,{"onUpdate:modelValue":o[2]||=e=>S.value=e,class:`gp-grid-filter-search`,type:`text`,placeholder:n.labels.searchPlaceholder,autofocus:``},null,8,Ae),[[x,S.value]]),r(` Select all / Deselect all `),a(`div`,je,[a(`button`,{type:`button`,disabled:N.value,onClick:P},y(n.labels.selectAll),9,Me),a(`button`,{type:`button`,onClick:F},y(n.labels.deselectAll),1)]),r(` Checkbox list `),a(`div`,Ne,[r(` Blanks option `),M.value?(m(),i(`label`,Pe,[a(`input`,{type:`checkbox`,checked:T.value,onChange:o[3]||=e=>T.value=!T.value},null,40,Fe),a(`span`,Ie,y(n.labels.blanks),1)])):r(`v-if`,!0),r(` Values `),(m(!0),i(e,null,g(j.value,e=>(m(),i(`label`,{key:e.label,class:`gp-grid-filter-option`},[a(`input`,{type:`checkbox`,checked:C.value.has(e.label),onChange:t=>I(e.label)},null,40,Le),a(`span`,null,y(e.label),1)]))),128))])],64)):r(`v-if`,!0),r(` CONDITION MODE `),p.value===`condition`?(m(),i(e,{key:3},[(m(!0),i(e,null,g(b(E),(t,o)=>(m(),i(`div`,{key:o,class:`gp-grid-filter-condition`},[r(` Combination toggle (AND/OR) for conditions after the first `),o>0?(m(),i(`div`,Re,[a(`button`,{type:`button`,class:u({active:b(E)[o-1]?.nextOperator===`and`}),onClick:e=>b(O)(o-1,{nextOperator:`and`})},y(n.labels.and),11,ze),a(`button`,{type:`button`,class:u({active:b(E)[o-1]?.nextOperator===`or`}),onClick:e=>b(O)(o-1,{nextOperator:`or`})},y(n.labels.or),11,Be)])):r(`v-if`,!0),a(`div`,Ve,[r(` Operator select `),a(`select`,{value:t.operator,autofocus:o===0,onChange:e=>b(O)(o,{operator:e.target.value})},[(m(!0),i(e,null,g(l.value,e=>(m(),i(`option`,{key:e.value,value:e.value},y(e.label),9,Ue))),128))],40,He),r(` Text input (hidden for blank/notBlank) `),t.operator!==`blank`&&t.operator!==`notBlank`?(m(),i(`input`,{key:0,type:`text`,value:t.value,placeholder:n.labels.valuePlaceholder,class:`gp-grid-filter-text-input`,onInput:e=>b(O)(o,{value:e.target.value})},null,40,We)):r(`v-if`,!0),r(` Remove button (only if more than one condition) `),b(E).length>1?(m(),i(`button`,{key:1,type:`button`,class:`gp-grid-filter-remove`,onClick:e=>b(A)(o)},y(n.labels.removeCondition),9,Ge)):r(`v-if`,!0)])]))),128)),r(` Add condition button `),a(`button`,{type:`button`,class:`gp-grid-filter-add`,onClick:o[4]||=e=>b(k)(`contains`)},y(n.labels.addCondition),1)],64)):r(`v-if`,!0),r(` Apply/Clear buttons `),a(`div`,Ke,[a(`button`,{type:`button`,class:`gp-grid-filter-btn-clear`,onClick:R},y(n.labels.clear),1),a(`button`,{type:`button`,class:`gp-grid-filter-btn-apply`,onClick:L},y(n.labels.apply),1)])]))}}),Je={class:`gp-grid-filter-content gp-grid-filter-number`},Ye={key:0,class:`gp-grid-filter-combination`},Xe=[`onClick`],Ze=[`onClick`],Qe={class:`gp-grid-filter-row`},$e=[`value`,`onChange`],et=[`value`],tt=[`value`,`placeholder`,`onInput`],nt={class:`gp-grid-filter-to`},rt=[`value`,`placeholder`,`onInput`],it=[`onClick`],at={class:`gp-grid-filter-buttons`},ot=c({__name:`NumberFilterContent`,props:{currentFilter:{},labels:{}},emits:[`apply`,`close`],setup(n,{emit:o}){let s=n,c=o,l=t(()=>q(s.labels)),{conditions:d,combination:f,updateCondition:p,addCondition:h,removeCondition:_}=Q(t(()=>{if(!s.currentFilter?.conditions.length)return[{operator:`=`,value:``,valueTo:``,nextOperator:`and`}];let e=s.currentFilter.combination??`and`;return s.currentFilter.conditions.map(t=>{let n=t;return{operator:n.operator,value:n.value==null?``:String(n.value),valueTo:n.valueTo==null?``:String(n.valueTo),nextOperator:n.nextOperator??e}})}).value,s.currentFilter?.combination??`and`);function v(){let e=d.value.filter(e=>e.operator===`blank`||e.operator===`notBlank`?!0:e.operator===`between`?e.value!==``&&e.valueTo!==``:e.value!==``);if(e.length===0){c(`apply`,null);return}let t={conditions:e.map(e=>({type:`number`,operator:e.operator,value:e.value?parseFloat(e.value):void 0,valueTo:e.valueTo?parseFloat(e.valueTo):void 0,nextOperator:e.nextOperator})),combination:`and`};c(`apply`,t)}function x(){c(`apply`,null)}return(t,o)=>(m(),i(`div`,Je,[(m(!0),i(e,null,g(b(d),(t,o)=>(m(),i(`div`,{key:o,class:`gp-grid-filter-condition`},[r(` Combination toggle (AND/OR) for conditions after the first `),o>0?(m(),i(`div`,Ye,[a(`button`,{type:`button`,class:u({active:b(d)[o-1]?.nextOperator===`and`}),onClick:e=>b(p)(o-1,{nextOperator:`and`})},y(n.labels.and),11,Xe),a(`button`,{type:`button`,class:u({active:b(d)[o-1]?.nextOperator===`or`}),onClick:e=>b(p)(o-1,{nextOperator:`or`})},y(n.labels.or),11,Ze)])):r(`v-if`,!0),a(`div`,Qe,[r(` Operator select `),a(`select`,{value:t.operator,onChange:e=>b(p)(o,{operator:e.target.value})},[(m(!0),i(e,null,g(l.value,e=>(m(),i(`option`,{key:e.value,value:e.value},y(e.label),9,et))),128))],40,$e),r(` Number input (hidden for blank/notBlank) `),t.operator!==`blank`&&t.operator!==`notBlank`?(m(),i(`input`,{key:0,type:`number`,value:t.value,placeholder:n.labels.valuePlaceholder,onInput:e=>b(p)(o,{value:e.target.value})},null,40,tt)):r(`v-if`,!0),r(` Second number input for "between" `),t.operator===`between`?(m(),i(e,{key:1},[a(`span`,nt,y(n.labels.betweenSeparator),1),a(`input`,{type:`number`,value:t.valueTo,placeholder:n.labels.valuePlaceholder,onInput:e=>b(p)(o,{valueTo:e.target.value})},null,40,rt)],64)):r(`v-if`,!0),r(` Remove button (only if more than one condition) `),b(d).length>1?(m(),i(`button`,{key:2,type:`button`,class:`gp-grid-filter-remove`,onClick:e=>b(_)(o)},y(n.labels.removeCondition),9,it)):r(`v-if`,!0)])]))),128)),r(` Add condition button `),a(`button`,{type:`button`,class:`gp-grid-filter-add`,onClick:o[0]||=e=>b(h)(`=`)},y(n.labels.addCondition),1),r(` Apply/Clear buttons `),a(`div`,at,[a(`button`,{type:`button`,class:`gp-grid-filter-btn-clear`,onClick:x},y(n.labels.clear),1),a(`button`,{type:`button`,class:`gp-grid-filter-btn-apply`,onClick:v},y(n.labels.apply),1)])]))}}),st={class:`gp-grid-filter-content gp-grid-filter-date`},ct={key:0,class:`gp-grid-filter-combination`},lt=[`onClick`],ut=[`onClick`],dt={class:`gp-grid-filter-row`},ft=[`value`,`onChange`],pt=[`value`],mt=[`value`,`onInput`],ht={class:`gp-grid-filter-to`},gt=[`value`,`onInput`],_t=[`onClick`],vt={class:`gp-grid-filter-buttons`},yt=c({__name:`DateFilterContent`,props:{currentFilter:{},labels:{}},emits:[`apply`,`close`],setup(n,{emit:o}){let s=n,c=o,l=t(()=>K(s.labels));function d(e){if(!e)return``;let t=typeof e==`string`?new Date(e):e;return isNaN(t.getTime())?``:t.toISOString().split(`T`)[0]}let{conditions:f,combination:p,updateCondition:h,addCondition:_,removeCondition:v}=Q(t(()=>{if(!s.currentFilter?.conditions.length)return[{operator:`=`,value:``,valueTo:``,nextOperator:`and`}];let e=s.currentFilter.combination??`and`;return s.currentFilter.conditions.map(t=>{let n=t;return{operator:n.operator,value:d(n.value),valueTo:d(n.valueTo),nextOperator:n.nextOperator??e}})}).value,s.currentFilter?.combination??`and`);function x(){let e=f.value.filter(e=>e.operator===`blank`||e.operator===`notBlank`?!0:e.operator===`between`?e.value!==``&&e.valueTo!==``:e.value!==``);if(e.length===0){c(`apply`,null);return}let t={conditions:e.map(e=>({type:`date`,operator:e.operator,value:e.value||void 0,valueTo:e.valueTo||void 0,nextOperator:e.nextOperator})),combination:`and`};c(`apply`,t)}function S(){c(`apply`,null)}return(t,o)=>(m(),i(`div`,st,[(m(!0),i(e,null,g(b(f),(t,o)=>(m(),i(`div`,{key:o,class:`gp-grid-filter-condition`},[r(` Combination toggle (AND/OR) for conditions after the first `),o>0?(m(),i(`div`,ct,[a(`button`,{type:`button`,class:u({active:b(f)[o-1]?.nextOperator===`and`}),onClick:e=>b(h)(o-1,{nextOperator:`and`})},y(n.labels.and),11,lt),a(`button`,{type:`button`,class:u({active:b(f)[o-1]?.nextOperator===`or`}),onClick:e=>b(h)(o-1,{nextOperator:`or`})},y(n.labels.or),11,ut)])):r(`v-if`,!0),a(`div`,dt,[r(` Operator select `),a(`select`,{value:t.operator,onChange:e=>b(h)(o,{operator:e.target.value})},[(m(!0),i(e,null,g(l.value,e=>(m(),i(`option`,{key:e.value,value:e.value},y(e.label),9,pt))),128))],40,ft),r(` Date input (hidden for blank/notBlank) `),t.operator!==`blank`&&t.operator!==`notBlank`?(m(),i(`input`,{key:0,type:`date`,value:t.value,onInput:e=>b(h)(o,{value:e.target.value})},null,40,mt)):r(`v-if`,!0),r(` Second date input for "between" `),t.operator===`between`?(m(),i(e,{key:1},[a(`span`,ht,y(n.labels.betweenSeparator),1),a(`input`,{type:`date`,value:t.valueTo,onInput:e=>b(h)(o,{valueTo:e.target.value})},null,40,gt)],64)):r(`v-if`,!0),r(` Remove button (only if more than one condition) `),b(f).length>1?(m(),i(`button`,{key:2,type:`button`,class:`gp-grid-filter-remove`,onClick:e=>b(v)(o)},y(n.labels.removeCondition),9,_t)):r(`v-if`,!0)])]))),128)),r(` Add condition button `),a(`button`,{type:`button`,class:`gp-grid-filter-add`,onClick:o[0]||=e=>b(_)(`=`)},y(n.labels.addCondition),1),r(` Apply/Clear buttons `),a(`div`,vt,[a(`button`,{type:`button`,class:`gp-grid-filter-btn-clear`,onClick:S},y(n.labels.clear),1),a(`button`,{type:`button`,class:`gp-grid-filter-btn-apply`,onClick:x},y(n.labels.apply),1)])]))}}),bt={class:`gp-grid-filter-header`},xt=c({__name:`FilterPopup`,props:{column:{},colIndex:{},containerRef:{},distinctValues:{},currentFilter:{},labels:{}},emits:[`apply`,`close`],setup(o,{emit:c}){let l=o,u=c,g=h(null),_=h(0),v=h(0),x=h(200),S=h(!1);Ee(g,{onClose:()=>u(`close`),ignoreSelector:`.gp-grid-filter-icon`});let w=t(()=>l.column.colId??l.column.field);function T(e){u(`apply`,w.value,e),u(`close`)}function E(){u(`close`)}let D=t(()=>l.column.cellDataType);t(()=>D.value===`text`||D.value===`object`);let O=t(()=>D.value===`number`),k=t(()=>D.value===`date`||D.value===`dateString`||D.value===`dateTime`||D.value===`dateTimeString`),A=null,j=()=>{let e=l.containerRef,t=g.value;if(!e||!t)return;let n=e.querySelector(`[data-col-index="${l.colIndex}"]`);if(!n)return;let r=R(n,t);_.value=r.top,v.value=r.left,x.value=r.minWidth,S.value=!0},M=()=>{A===null&&(A=requestAnimationFrame(()=>{A=null,j()}))};C(()=>{l.colIndex,j()},{flush:`post`}),f(()=>{window.addEventListener(`scroll`,M,{passive:!0,capture:!0}),window.addEventListener(`resize`,M)}),p(()=>{window.removeEventListener(`scroll`,M,{capture:!0}),window.removeEventListener(`resize`,M),A!==null&&cancelAnimationFrame(A)});let N=t(()=>({position:`fixed`,top:`${_.value}px`,left:`${v.value}px`,minWidth:`${x.value}px`,zIndex:1e4,visibility:S.value?`visible`:`hidden`}));return(t,c)=>(m(),i(`div`,{ref_key:`popupRef`,ref:g,class:`gp-grid-filter-popup`,style:d(N.value)},[a(`div`,bt,y(b(G)(o.labels.filterTitle,{column:o.column.headerName??o.column.field})),1),r(` Number filter `),O.value?(m(),n(ot,{key:0,"current-filter":o.currentFilter,labels:o.labels,onApply:T,onClose:E},null,8,[`current-filter`,`labels`])):k.value?(m(),i(e,{key:1},[r(` Date filter `),s(yt,{"current-filter":o.currentFilter,labels:o.labels,onApply:T,onClose:E},null,8,[`current-filter`,`labels`])],2112)):(m(),i(e,{key:2},[r(` Text filter (default) `),s(qe,{"distinct-values":o.distinctValues,"value-formatter":o.column.valueFormatter,"current-filter":o.currentFilter,labels:o.labels,onApply:T,onClose:E},null,8,[`distinct-values`,`value-formatter`,`current-filter`,`labels`])],2112))],4))}}),St=e=>e==null||e===``?o(``):typeof e==`string`?o(e):e,$=(e,t)=>typeof e==`function`?St(e(t)):l(e,t),Ct=e=>{let t=e.cellDataType;return t===`text`||t===`boolean`||t===`object`};function wt(t){let{column:n,colIndex:r,sortDirection:i,sortIndex:a,sortable:o,filterable:s,hasFilter:c,core:u,container:d,headerRenderers:f,globalHeaderRenderer:p}=t,m={column:n,colIndex:r,sortDirection:i,sortIndex:a,sortable:o,filterable:s,hasFilter:c,onSort:(e,t)=>{u&&o&&u.setSort(n.colId??n.field,e,t)},onFilterClick:()=>{if(u&&s){let e=d?.querySelector(`[data-col-index="${r}"]`);if(e){let t=e.getBoundingClientRect();u.openFilterPopup(r,{top:t.top,left:t.left,width:t.width,height:t.height},Ct(n))}}}};if(n.headerRenderer!=null)if(typeof n.headerRenderer==`string`){let e=f[n.headerRenderer];if(e)return $(e,m)}else return $(n.headerRenderer,m);if(p)return $(p,m);let h=[l(`span`,{class:`gp-grid-header-text`},n.headerName??n.field)],g=[];if(o){let e=[l(`span`,{class:`gp-grid-sort-arrows-stack`},[l(`svg`,{class:`gp-grid-sort-arrow-up${i===`asc`?` active`:``}`,width:`8`,height:`6`,viewBox:`0 0 8 6`},[l(`path`,{d:`M4 0L8 6H0L4 0Z`,fill:`currentColor`})]),l(`svg`,{class:`gp-grid-sort-arrow-down${i===`desc`?` active`:``}`,width:`8`,height:`6`,viewBox:`0 0 8 6`},[l(`path`,{d:`M4 6L0 0H8L4 6Z`,fill:`currentColor`})])])];a!==void 0&&a>0&&e.push(l(`span`,{class:`gp-grid-sort-index`},String(a))),g.push(l(`span`,{class:`gp-grid-sort-arrows`},e))}return s&&g.push(l(`span`,{class:`gp-grid-filter-icon${c?` active`:``}`,onPointerdown:e=>{e.stopPropagation(),e.preventDefault(),m.onFilterClick()},onClick:e=>{e.stopPropagation()}},[l(`svg`,{width:`16`,height:`16`,viewBox:`0 0 24 24`,fill:`currentColor`},[l(`path`,{d:`M4 4h16l-6 8v5l-4 2v-7L4 4z`})])])),g.length>0&&h.push(l(`span`,{class:`gp-grid-header-icons`},g)),l(e,h)}const Tt=[`data-col-index`,`onPointerdown`],Et=[`onPointerdown`],Dt=c({__name:`GridHeader`,props:{headerHeight:{},scrollLeft:{},contentWidth:{},totalWidth:{},isLoading:{type:Boolean},visibleColumnsWithIndices:{},columnPositions:{},columnWidths:{},headers:{},sortingEnabled:{type:Boolean},onHeaderMouseDown:{type:Function},onHeaderResizeMouseDown:{type:Function},coreRef:{},outerContainerRef:{},headerRenderers:{},globalHeaderRenderer:{type:Function}},setup(t){let o=t;return(t,s)=>(m(),i(`div`,{class:u([`gp-grid-header`,{"gp-grid-header--loading":o.isLoading}]),style:d({height:`${o.headerHeight}px`})},[a(`div`,{style:d({position:`absolute`,top:0,left:0,transform:`translateX(${-o.scrollLeft}px)`,width:`${Math.max(o.contentWidth,o.totalWidth)}px`,height:`${o.headerHeight}px`})},[(m(!0),i(e,null,g(o.visibleColumnsWithIndices,({column:e,originalIndex:t},a)=>(m(),i(`div`,{key:e.colId??e.field,class:`gp-grid-header-cell`,"data-col-index":t,style:d({left:`${o.columnPositions[a]}px`,width:`${o.columnWidths[a]}px`,height:`${o.headerHeight}px`}),onPointerdown:e=>o.onHeaderMouseDown(t,o.columnWidths[a]??0,o.headerHeight,e)},[(m(),n(_(b(wt)({column:e,colIndex:t,sortDirection:o.headers.get(t)?.sortDirection,sortIndex:o.headers.get(t)?.sortIndex,sortable:e.sortable!==!1&&o.sortingEnabled,filterable:e.filterable!==!1,hasFilter:o.headers.get(t)?.hasFilter??!1,core:o.coreRef,container:o.outerContainerRef,headerRenderers:o.headerRenderers,globalHeaderRenderer:o.globalHeaderRenderer})))),e.resizable===!1?r(`v-if`,!0):(m(),i(`div`,{key:0,class:`gp-grid-header-resize-handle`,onPointerdown:T(e=>o.onHeaderResizeMouseDown(t,o.columnWidths[a]??0,e),[`stop`])},null,40,Et))],44,Tt))),128))],4)],6))}});function Ot(e){let{column:t,rowData:n,rowIndex:r,colIndex:i,isActive:a,isSelected:o,isEditing:s,cellRenderers:c,globalCellRenderer:u}=e,d=oe(n,t.field),f={value:t.valueFormatter?t.valueFormatter(d):d,rowData:n,column:t,rowIndex:r,colIndex:i,isActive:a,isSelected:o,isEditing:s};if(t.cellRenderer!=null)if(typeof t.cellRenderer==`string`){let e=c[t.cellRenderer];if(e)return $(e,f)}else return $(t.cellRenderer,f);return u?$(u,f):l(`span`,{class:`gp-grid-cell-content`},ae(d,t.valueFormatter))}function kt(e){let{column:t,rowData:n,rowIndex:r,colIndex:i,initialValue:a,core:s,editRenderers:c,globalEditRenderer:u}=e;if(!s)return o(``);let d=se(n,t.field),f={value:t.valueFormatter?t.valueFormatter(d):d,rowData:n,column:t,rowIndex:r,colIndex:i,isActive:!0,isSelected:!0,isEditing:!0,initialValue:a,onValueChange:e=>s.updateEditValue(e),onCommit:()=>s.commitEdit(),onCancel:()=>s.cancelEdit()};if(t.editRenderer!=null)if(typeof t.editRenderer==`string`){let e=c[t.editRenderer];if(e)return $(e,f)}else return $(t.editRenderer,f);return u?$(u,f):l(`input`,{class:`gp-grid-edit-input`,type:`text`,value:a==null?``:String(a),autofocus:!0,onFocus:e=>e.target.select(),onInput:e=>s.updateEditValue(e.target.value),onKeydown:e=>{e.stopPropagation(),e.key===`Enter`?s.commitEdit():e.key===`Escape`?s.cancelEdit():e.key===`Tab`&&(e.preventDefault(),s.commitEdit(),s.selection.moveFocus(e.shiftKey?`left`:`right`,!1))},onBlur:()=>s.commitEdit()})}const At=[`data-cell-row`,`data-cell-col`,`onPointerdown`,`onDblclick`,`onMouseenter`],jt={key:0,class:`gp-grid-error`},Mt={key:1,class:`gp-grid-empty`},Nt=c({__name:`GridBody`,props:{rowHeight:{},totalHeaderHeight:{},contentWidth:{},contentHeight:{},totalWidth:{},rowsWrapperOffset:{},activeCell:{},selectionRange:{},editingCell:{},hoverPosition:{},error:{},isLoading:{type:Boolean},totalRows:{},labels:{},slotsArray:{},visibleColumnsWithIndices:{},columnPositions:{},columnWidths:{},fillHandlePosition:{},dragState:{},onScroll:{type:Function},onWheel:{type:Function},wheelDampening:{},onCellMouseDown:{type:Function},onCellDoubleClick:{type:Function},onCellMouseEnter:{type:Function},onCellMouseLeave:{type:Function},onFillHandleMouseDown:{type:Function},coreRef:{},cellRenderers:{},editRenderers:{},globalCellRenderer:{},globalEditRenderer:{}},setup(t,{expose:o}){let s=t,c=h(null),l=e=>[`gp-grid-row`,...s.coreRef?.highlight?.computeRowClasses(e.rowIndex,e.rowData)??[]].filter(Boolean).join(` `),f=(e,t,n,r,i)=>{let a=X(e,t,s.editingCell),o=F(J(e,t,s.activeCell),ge(e,t,s.selectionRange),a,Z(e,t,s.dragState.dragType===`fill`,s.dragState.fillSourceRange,s.dragState.fillTarget)),c=s.coreRef?.highlight?.computeCombinedCellClasses(e,t,n,r)??[],l=n.rowDrag===!0,u=n.wrapText===!0&&!a;return[o,...c,l?`gp-grid-cell--row-drag-handle`:``,u?`gp-grid-cell--wrap`:``].filter(Boolean).join(` `)};return o({bodyRef:c}),(t,o)=>(m(),i(`div`,{ref_key:`bodyRef`,ref:c,style:{flex:`1`,overflow:`auto`,position:`relative`},onScroll:o[2]||=(...e)=>s.onScroll&&s.onScroll(...e),onWheel:o[3]||=e=>s.onWheel(e,s.wheelDampening)},[r(` Content sizer - provides scroll range `),a(`div`,{style:d({width:`${Math.max(s.contentWidth,s.totalWidth)}px`,height:`${Math.max(s.contentHeight-s.totalHeaderHeight,0)}px`,position:`relative`,minWidth:`100%`})},[r(` Rows wrapper `),a(`div`,{class:`gp-grid-rows-wrapper`,style:d({width:`${Math.max(s.contentWidth,s.totalWidth)}px`,transform:`translateY(${s.rowsWrapperOffset}px)`})},[r(` Row slots `),(m(!0),i(e,null,g(s.slotsArray.filter(e=>e.rowIndex>=0),t=>(m(),i(`div`,{key:t.slotId,class:u(l(t)),style:d({position:`absolute`,top:0,left:0,transform:`translateY(${t.translateY}px)`,width:`${Math.max(s.contentWidth,s.totalWidth)}px`,height:`${s.rowHeight}px`})},[(m(!0),i(e,null,g(s.visibleColumnsWithIndices,({column:a,originalIndex:c},l)=>(m(),i(`div`,{key:`${t.slotId}-${a.colId??a.field}`,class:u(f(t.rowIndex,c,a,t.rowData,s.hoverPosition)),"data-cell-row":t.rowIndex,"data-cell-col":c,style:d({position:`absolute`,left:`${s.columnPositions[l]}px`,top:0,width:`${s.columnWidths[l]}px`,height:`${s.rowHeight}px`}),onPointerdown:e=>s.onCellMouseDown(t.rowIndex,c,e),onDblclick:()=>s.onCellDoubleClick(t.rowIndex,c),onMouseenter:()=>s.onCellMouseEnter(t.rowIndex,c),onMouseleave:o[0]||=(...e)=>s.onCellMouseLeave&&s.onCellMouseLeave(...e)},[r(` Edit mode `),b(X)(t.rowIndex,c,s.editingCell)&&s.editingCell?(m(),n(_(b(kt)({column:a,rowData:t.rowData,rowIndex:t.rowIndex,colIndex:c,initialValue:s.editingCell.initialValue,core:s.coreRef,editRenderers:s.editRenderers,globalEditRenderer:s.globalEditRenderer})),{key:0})):(m(),i(e,{key:1},[r(` View mode `),(m(),n(_(b(Ot)({column:a,rowData:t.rowData,rowIndex:t.rowIndex,colIndex:c,isActive:b(J)(t.rowIndex,c,s.activeCell),isSelected:b(ge)(t.rowIndex,c,s.selectionRange),isEditing:!1,cellRenderers:s.cellRenderers,globalCellRenderer:s.globalCellRenderer}))))],64))],46,At))),128))],6))),128)),r(` Fill handle `),s.fillHandlePosition&&!s.editingCell?(m(),i(`div`,{key:0,class:`gp-grid-fill-handle`,style:d({top:`${s.fillHandlePosition.top}px`,left:`${s.fillHandlePosition.left}px`}),onPointerdown:o[1]||=(...e)=>s.onFillHandleMouseDown&&s.onFillHandleMouseDown(...e)},null,36)):r(`v-if`,!0),r(` Row drop indicator `),s.dragState.dragType===`row-drag`&&s.dragState.rowDrag?.dropTargetIndex!==null?(m(),i(`div`,{key:1,class:`gp-grid-row-drop-indicator`,style:d({transform:`translateY(${s.dragState.rowDrag.dropIndicatorY}px)`,width:`${Math.max(s.contentWidth,s.totalWidth)}px`})},null,4)):r(`v-if`,!0)],4)],4),r(` Error message `),s.error?(m(),i(`div`,jt,y(b(G)(s.labels.errorPrefix,{message:s.error})),1)):r(`v-if`,!0),r(` Empty state `),!s.isLoading&&!s.error&&s.totalRows===0?(m(),i(`div`,Mt,y(s.labels.emptyState),1)):r(`v-if`,!0)],544))}}),Pt=c({__name:`CellPeek`,props:{peekCell:{},column:{},rowData:{},containerRef:{},cellRenderers:{},globalCellRenderer:{}},emits:[`close`],setup(e,{emit:r}){let a=e,o=r,s=h(null),c=h(0),l=h(0),u=h(0),g=h(!1),v=null,y=()=>{let e=a.containerRef,t=s.value;if(!e||!t)return;let n=e.querySelector(`[data-cell-row="${a.peekCell.row}"][data-cell-col="${a.peekCell.col}"]`);if(!n){o(`close`);return}let r=n.getBoundingClientRect();c.value=r.top,l.value=r.left,u.value=r.width,g.value=!0},b=()=>{v===null&&(v=requestAnimationFrame(()=>{v=null,y()}))},x=e=>{let t=e.target;s.value?.contains(t)||o(`close`)},C=null,w=null;f(()=>{y(),window.addEventListener(`scroll`,b,{passive:!0,capture:!0}),window.addEventListener(`resize`,b),s.value&&(w=N(s.value)),C=requestAnimationFrame(()=>{document.addEventListener(`pointerdown`,x)})}),p(()=>{window.removeEventListener(`scroll`,b,{capture:!0}),window.removeEventListener(`resize`,b),document.removeEventListener(`pointerdown`,x),w?.(),v!==null&&cancelAnimationFrame(v),C!==null&&cancelAnimationFrame(C)}),S(()=>[a.peekCell.row,a.peekCell.col],()=>y(),{flush:`post`});let T=t(()=>({position:`fixed`,top:`${c.value}px`,left:`${l.value}px`,width:`${u.value}px`,visibility:g.value?`visible`:`hidden`})),E=t(()=>Ot({column:a.column,rowData:a.rowData,rowIndex:a.peekCell.row,colIndex:a.peekCell.col,isActive:!0,isSelected:!1,isEditing:!1,cellRenderers:a.cellRenderers,globalCellRenderer:a.globalCellRenderer}));return(e,t)=>(m(),i(`div`,{ref_key:`overlayRef`,ref:s,class:`gp-grid-cell-peek`,style:d(T.value)},[(m(),n(_(E.value)))],4))}}),Ft={key:1,class:`gp-grid-loading`},It=c({__name:`GpGrid`,props:{columns:{},dataSource:{},rowData:{},rowHeight:{},headerHeight:{},overscan:{default:3},rowLoading:{},sortingEnabled:{type:Boolean,default:!0},darkMode:{type:Boolean,default:!1},wheelDampening:{default:.1},maxFlingVelocity:{},cellRenderers:{default:()=>({})},editRenderers:{default:()=>({})},headerRenderers:{default:()=>({})},cellRenderer:{},editRenderer:{},headerRenderer:{},initialWidth:{},initialHeight:{},highlighting:{},getRowId:{},onCellValueChanged:{},loadingComponent:{},rowDragEntireRow:{type:Boolean},onRowDragEnd:{},onColumnResized:{},onColumnMoved:{},labels:{}},setup(o,{expose:c}){let l=o,g=h(null),x=h(null),C=t(()=>x.value?.bodyRef??null),w=v(null),T=v(null),E=v(null),O=new j({getCore:()=>w.value,getScrollEl:()=>C.value,isBrowser:typeof window<`u`}),k=h(0),{state:A,applyInstructions:M,reset:N}=Se({initialWidth:l.initialWidth,initialHeight:l.initialHeight}),P=t(()=>l.headerHeight??l.rowHeight),F=t(()=>be(l.labels)),I=t(()=>A.value.columns??l.columns),L=t(()=>I.value.map((e,t)=>({column:e,originalIndex:t})).filter(({column:e})=>!e.hidden)),R=t(()=>z(L.value.map(e=>e.column),A.value.viewportWidth)),B=t(()=>R.value.positions),V=t(()=>R.value.widths),U=t(()=>ue(B.value)),W=t(()=>Array.from(A.value.slots.values())),{handleCellMouseDown:te,handleCellDoubleClick:ne,handleFillHandleMouseDown:re,handleHeaderClick:ie,handleHeaderMouseDown:ae,handleHeaderResizeMouseDown:G,handleKeyDown:K,handlePaste:oe,handleWheel:se,dragState:q}=we(w,C,I,{activeCell:t(()=>A.value.activeCell),selectionRange:t(()=>A.value.selectionRange),editingCell:t(()=>A.value.editingCell),filterPopupOpen:t(()=>A.value.filterPopup?.isOpen??!1),rowHeight:l.rowHeight,headerHeight:P.value,columnPositions:B,columnWidths:V,visibleColumnsWithIndices:L,slots:t(()=>A.value.slots),rowsWrapperOffset:t(()=>A.value.rowsWrapperOffset)}),{fillHandlePosition:ce}=Te({activeCell:t(()=>A.value.activeCell),selectionRange:t(()=>A.value.selectionRange),slots:t(()=>A.value.slots),columns:I,visibleColumnsWithIndices:L,columnPositions:B,columnWidths:V,rowHeight:l.rowHeight});function le(){let e=C.value,t=w.value;!e||!t||t.setViewport(e.scrollTop,e.scrollLeft,e.clientWidth,e.clientHeight)}function de(){let e=C.value;e&&(k.value=e.scrollLeft),le()}function fe(e,t){let n=w.value;n&&n.setFilter(e,t)}function pe(){let e=w.value;e&&e.closeFilterPopup()}function J(){w.value?.stopPeek()}let Y=t(()=>{let e=A.value.peekCell;if(!e)return null;let t=I.value[e.col],n=W.value.find(t=>t.rowIndex===e.row);return!t||!n?null:{peek:e,column:t,rowData:n.rowData}});function X(e,t){w.value?.input.handleCellMouseEnter(e,t)}function me(){w.value?.input.handleCellMouseLeave()}function Z(){return l.dataSource??(l.rowData?H(l.rowData):ee([]))}function he(e){E.value&&=(E.value(),null),w.value&&w.value.destroy();let t=new D({columns:l.columns,dataSource:e,rowHeight:l.rowHeight,headerHeight:P.value,overscan:l.overscan,maxFlingVelocity:l.maxFlingVelocity,rowLoading:l.rowLoading,sortingEnabled:l.sortingEnabled,highlighting:l.highlighting,getRowId:l.getRowId,onCellValueChanged:l.onCellValueChanged?e=>l.onCellValueChanged?.(e):void 0,rowDragEntireRow:l.rowDragEntireRow??!1,onRowDragEnd:(e,t)=>l.onRowDragEnd?.(e,t),onColumnResized:(e,t)=>l.onColumnResized?.(e,t),onColumnMoved:(e,t)=>l.onColumnMoved?.(e,t)});w.value=t,O.syncCore(),E.value=t.onBatchInstruction(e=>{M(e)}),t.initialize();let n=C.value;n&&t.setViewport(n.scrollTop,n.scrollLeft,n.clientWidth,n.clientHeight)}return f(()=>{let e=Z();T.value=e,he(e),O.attach();let t=C.value;if(t&&typeof ResizeObserver<`u`){let e=new ResizeObserver(()=>{w.value?.setViewport(t.scrollTop,t.scrollLeft,t.clientWidth,t.clientHeight)});e.observe(t),p(()=>{e.disconnect()})}p(()=>{O.detach(),E.value&&=(E.value(),null),w.value&&=(w.value.destroy(),null),T.value&&=(T.value.destroy?.(),null)})}),S([()=>l.dataSource,()=>l.rowData],()=>{l.rowData&&l.rowData.length>1e4&&T.value&&console.warn(`[gp-grid] rowData prop changed with ${l.rowData.length} rows — this triggers a full rebuild. Use useGridData() for efficient updates.`);let e=Z(),t=T.value;t&&t!==e?(t.destroy?.(),T.value=e,w.value?.setDataSource(e)):t||(T.value=e)}),S(()=>l.dataSource,e=>{if(e){let t=e;if(t.subscribe){let e=t.subscribe(()=>{w.value?.refreshFromTransaction()});p(()=>e())}}},{immediate:!0}),S(()=>A.value.pendingScrollTop,e=>{if(e!==null){let t=C.value;t&&(O.stop(),t.scrollTop=e)}},{flush:`post`}),S(()=>l.highlighting,e=>{w.value?.highlight&&e&&w.value.highlight.updateOptions(e)}),c({core:w}),(t,c)=>(m(),i(`div`,{ref_key:`outerContainerRef`,ref:g,class:u([`gp-grid-container`,{"gp-grid-container--dark":o.darkMode}]),style:{width:`100%`,height:`100%`,position:`relative`,display:`flex`,"flex-direction":`column`},tabindex:`0`,onKeydown:c[0]||=(...e)=>b(K)&&b(K)(...e),onPaste:c[1]||=(...e)=>b(oe)&&b(oe)(...e)},[s(Dt,{"header-height":P.value,"scroll-left":k.value,"content-width":b(A).contentWidth,"total-width":U.value,"is-loading":b(A).isLoading,"visible-columns-with-indices":L.value,"column-positions":B.value,"column-widths":V.value,headers:b(A).headers,"sorting-enabled":o.sortingEnabled,"on-header-mouse-down":b(ae),"on-header-resize-mouse-down":b(G),"core-ref":w.value,"outer-container-ref":g.value,"header-renderers":o.headerRenderers??{},"global-header-renderer":o.headerRenderer},null,8,[`header-height`,`scroll-left`,`content-width`,`total-width`,`is-loading`,`visible-columns-with-indices`,`column-positions`,`column-widths`,`headers`,`sorting-enabled`,`on-header-mouse-down`,`on-header-resize-mouse-down`,`core-ref`,`outer-container-ref`,`header-renderers`,`global-header-renderer`]),s(Nt,{ref_key:`gridBodyComp`,ref:x,"row-height":o.rowHeight,"total-header-height":P.value,"content-width":b(A).contentWidth,"content-height":b(A).contentHeight,"total-width":U.value,"rows-wrapper-offset":b(A).rowsWrapperOffset,"active-cell":b(A).activeCell,"selection-range":b(A).selectionRange,"editing-cell":b(A).editingCell,"hover-position":b(A).hoverPosition,error:b(A).error,"is-loading":b(A).isLoading,"total-rows":b(A).totalRows,labels:F.value,"slots-array":W.value,"visible-columns-with-indices":L.value,"column-positions":B.value,"column-widths":V.value,"fill-handle-position":b(ce),"drag-state":b(q),"on-scroll":de,"on-wheel":b(se),"wheel-dampening":o.wheelDampening,"on-cell-mouse-down":b(te),"on-cell-double-click":b(ne),"on-cell-mouse-enter":X,"on-cell-mouse-leave":me,"on-fill-handle-mouse-down":b(re),"core-ref":w.value,"cell-renderers":o.cellRenderers??{},"edit-renderers":o.editRenderers??{},"global-cell-renderer":o.cellRenderer,"global-edit-renderer":o.editRenderer},null,8,`row-height.total-header-height.content-width.content-height.total-width.rows-wrapper-offset.active-cell.selection-range.editing-cell.hover-position.error.is-loading.total-rows.labels.slots-array.visible-columns-with-indices.column-positions.column-widths.fill-handle-position.drag-state.on-wheel.wheel-dampening.on-cell-mouse-down.on-cell-double-click.on-fill-handle-mouse-down.core-ref.cell-renderers.edit-renderers.global-cell-renderer.global-edit-renderer`.split(`.`)),r(` Loading overlay - positioned outside scrollable area to avoid Firefox sticky issues `),b(A).isLoading?(m(),i(`div`,{key:0,style:d({position:`absolute`,top:`${P.value}px`,left:0,right:0,bottom:0,zIndex:50,pointerEvents:`none`})},[c[3]||=a(`div`,{class:`gp-grid-loading-overlay`},null,-1),l.loadingComponent?(m(),n(_(l.loadingComponent),{key:0,"is-loading":!0})):(m(),i(`div`,Ft,[...c[2]||=[a(`div`,{class:`gp-grid-loading-spinner`},null,-1)]]))],4)):r(`v-if`,!0),r(` Filter Popup `),b(A).filterPopup?.isOpen&&b(A).filterPopup.column?(m(),n(xt,{key:1,column:b(A).filterPopup.column,"col-index":b(A).filterPopup.colIndex,"container-ref":g.value,"distinct-values":b(A).filterPopup.distinctValues,"current-filter":b(A).filterPopup.currentFilter,labels:F.value,onApply:fe,onClose:pe},null,8,[`column`,`col-index`,`container-ref`,`distinct-values`,`current-filter`,`labels`])):r(`v-if`,!0),r(` Cell Peek (read-only multi-line overlay on dblclick of non-editable cell) `),Y.value?(m(),n(Pt,{key:2,"peek-cell":Y.value.peek,column:Y.value.column,"row-data":Y.value.rowData,"container-ref":g.value,"cell-renderers":o.cellRenderers??{},"global-cell-renderer":o.cellRenderer,onClose:J},null,8,[`peek-cell`,`column`,`row-data`,`container-ref`,`cell-renderers`,`global-cell-renderer`])):r(`v-if`,!0),r(` Column resize line `),b(q).dragType===`column-resize`&&b(q).columnResize?(m(),i(`div`,{key:3,class:`gp-grid-column-resize-line`,style:d({left:`${(B.value[L.value.findIndex(e=>e.originalIndex===b(q).columnResize.colIndex)]??0)+b(q).columnResize.currentWidth-k.value}px`})},null,4)):r(`v-if`,!0),r(` Column move ghost `),b(q).dragType===`column-move`&&b(q).columnMove?(m(),i(e,{key:4},[a(`div`,{class:`gp-grid-column-move-ghost`,style:d({left:`${b(q).columnMove.currentX-b(q).columnMove.ghostWidth/2}px`,top:`${b(q).columnMove.currentY-b(q).columnMove.ghostHeight/2}px`,width:`${b(q).columnMove.ghostWidth}px`,height:`${b(q).columnMove.ghostHeight}px`})},y(I.value[b(q).columnMove.sourceColIndex]?.headerName??I.value[b(q).columnMove.sourceColIndex]?.field??``),5),b(q).columnMove.dropTargetIndex===null?r(`v-if`,!0):(m(),i(`div`,{key:0,class:`gp-grid-column-drop-indicator`,style:d({left:`${(B.value[b(q).columnMove.dropTargetIndex]??0)-k.value}px`,height:`${P.value}px`})},null,4))],64)):r(`v-if`,!0),r(` Row drag ghost (fixed position, follows cursor) `),b(q).dragType===`row-drag`&&b(q).rowDrag?(m(),i(`div`,{key:5,class:`gp-grid-row-drag-ghost`,style:d({left:`${b(q).rowDrag.currentX+12}px`,top:`${b(q).rowDrag.currentY-o.rowHeight/2}px`,width:`${Math.min(300,U.value)}px`,height:`${o.rowHeight}px`})},null,4)):r(`v-if`,!0)],34))}});function Lt(e){let n=h(null),r=h(null),i=new j({getCore:()=>r.value,getScrollEl:()=>n.value,isBrowser:typeof window<`u`}),{state:a,applyInstructions:o}=Se(),s=t(()=>e.headerHeight??e.rowHeight),c=t(()=>e.columns.map((e,t)=>({column:e,originalIndex:t})).filter(({column:e})=>!e.hidden)),l=t(()=>z(c.value.map(e=>e.column),a.value.viewportWidth)),u=t(()=>l.value.positions),d=t(()=>l.value.widths),m=t(()=>ue(u.value)),g=t(()=>Array.from(a.value.slots.values())),{handleCellMouseDown:_,handleCellDoubleClick:v,handleFillHandleMouseDown:y,handleHeaderClick:b,handleKeyDown:x,handlePaste:C,handleWheel:w,dragState:T}=we(r,n,t(()=>e.columns),{activeCell:t(()=>a.value.activeCell),selectionRange:t(()=>a.value.selectionRange),editingCell:t(()=>a.value.editingCell),filterPopupOpen:t(()=>a.value.filterPopup?.isOpen??!1),rowHeight:e.rowHeight,headerHeight:s.value,columnPositions:u,columnWidths:d,visibleColumnsWithIndices:c,slots:t(()=>a.value.slots),rowsWrapperOffset:t(()=>a.value.rowsWrapperOffset)}),E=()=>{let e=n.value,t=r.value;!e||!t||t.setViewport(e.scrollTop,e.scrollLeft,e.clientWidth,e.clientHeight)},O=(e,t)=>{let n=r.value;n&&n.setFilter(e,t)},k=()=>{let e=r.value;e&&e.closeFilterPopup()},A=(e,t)=>{r.value?.input.handleCellMouseEnter(e,t)},M=()=>{r.value?.input.handleCellMouseLeave()};f(()=>{let t=e.dataSource??(e.rowData?H(e.rowData):ee([])),a=new D({columns:e.columns,dataSource:t,rowHeight:e.rowHeight,headerHeight:s.value,overscan:e.overscan??3,maxFlingVelocity:e.maxFlingVelocity,rowLoading:e.rowLoading,sortingEnabled:e.sortingEnabled??!0,highlighting:e.highlighting,getRowId:e.getRowId,onCellValueChanged:e.onCellValueChanged?t=>e.onCellValueChanged?.(t):void 0});r.value=a,i.syncCore();let c=a.onBatchInstruction(e=>{o(e)});a.initialize(),i.attach(),p(()=>i.detach());let l=n.value;if(l){a.setViewport(l.scrollTop,l.scrollLeft,l.clientWidth,l.clientHeight);let e=new ResizeObserver(()=>{a.setViewport(l.scrollTop,l.scrollLeft,l.clientWidth,l.clientHeight)});e.observe(l),p(()=>{e.disconnect(),c(),r.value=null})}}),S(()=>a.value.pendingScrollTop,e=>{if(e!==null){let t=n.value;t&&(i.stop(),t.scrollTop=e)}},{flush:`post`}),S(()=>e.dataSource,e=>{if(e){let t=e;if(t.subscribe){let e=t.subscribe(()=>{r.value?.refresh()});p(()=>e())}}},{immediate:!0}),S(()=>e.highlighting,e=>{r.value?.highlight&&e&&r.value.highlight.updateOptions(e)});let{fillHandlePosition:N}=Te({activeCell:t(()=>a.value.activeCell),selectionRange:t(()=>a.value.selectionRange),slots:t(()=>a.value.slots),columns:t(()=>e.columns),visibleColumnsWithIndices:c,columnPositions:u,columnWidths:d,rowHeight:e.rowHeight});return{containerRef:n,coreRef:r,state:a,slotsArray:g,totalHeaderHeight:s,columnPositions:u,columnWidths:d,totalWidth:m,fillHandlePosition:N,handleScroll:E,handleCellMouseDown:_,handleCellDoubleClick:v,handleFillHandleMouseDown:y,handleHeaderClick:b,handleKeyDown:x,handlePaste:C,handleWheel:w,handleFilterApply:O,handleFilterPopupClose:k,handleCellMouseEnter:A,handleCellMouseLeave:M,dragState:T,isCellSelected:ge,isCellActive:J,isCellEditing:X,isCellInFillPreview:Z,buildCellClasses:F}}const Rt=(e,t)=>{let n=ne(e,{getRowId:t.getRowId,debounceMs:t.debounceMs,useWorker:t.useWorker,parallelSort:t.parallelSort});return p(()=>{n.clear()}),{dataSource:n,updateRow:n.updateRow,addRows:n.addRows,removeRows:n.removeRows,updateCell:n.updateCell,clear:n.clear,getRowById:n.getRowById,getTotalRowCount:n.getTotalRowCount,flushTransactions:n.flushTransactions}};export{It as GpGrid,It as default,E as GridCore,P as buildCellClasses,I as calculateColumnPositions,B as createClientDataSource,V as createDataSourceFromArray,U as createInitialState,te as createMutableClientDataSource,re as createServerDataSource,ie as findColumnAtX,se as getCellValue,le as getTotalWidth,pe as isCellActive,Y as isCellEditing,me as isCellInFillPreview,he as isCellSelected,_e as isRowVisible,Ot as renderCell,kt as renderEditCell,wt as renderHeader,Ce as useAutoScroll,Te as useFillHandle,Q as useFilterConditions,Ee as useFilterPopup,Lt as useGpGrid,Rt as useGridData,Se as useGridState,we as useInputHandler};
|
|
1
|
+
import{Fragment as e,computed as t,createBlock as n,createCommentVNode as r,createElementBlock as i,createElementVNode as a,createTextVNode as o,createVNode as s,defineComponent as c,h as l,normalizeClass as u,normalizeStyle as d,onMounted as f,onUnmounted as p,openBlock as m,ref as h,renderList as g,resolveDynamicComponent as _,shallowRef as v,toDisplayString as y,unref as b,vModelText as x,watch as S,watchEffect as C,withDirectives as w,withModifiers as T}from"vue";import{GridCore as E,GridCore as D,PendingCellTapController as O,ROW_DRAG_HOLD_MS as k,TAP_SLOP_PX as A,TouchScrollController as j,applyInstruction as M,bindPeekSelectAll as N,buildCellClasses as P,buildCellClasses as F,calculateColumnPositions as I,calculateFillHandlePosition as L,calculateFilterPopupPosition as R,calculateScaledColumnPositions as z,createClientDataSource as B,createClientDataSource as V,createDataSourceFromArray as H,createDataSourceFromArray as U,createInitialState as W,createInitialState as G,createMutableClientDataSource as ee,createMutableClientDataSource as te,createServerDataSource as ne,findColumnAtX as re,formatCellValue as ie,formatLabel as K,getDateOperatorOptions as ae,getFieldValue as oe,getFieldValue as se,getNumberOperatorOptions as q,getTextOperatorOptions as ce,getTotalWidth as le,getTotalWidth as ue,groupDistinctValues as de,isBlankCellValue as fe,isCellActive as pe,isCellActive as J,isCellEditing as Y,isCellEditing as X,isCellInFillPreview as me,isCellInFillPreview as Z,isCellSelected as he,isCellSelected as ge,isLegacyColumnFilterModel as _e,isRowVisible as ve,labelsForSelectedValues as ye,normalizeColumnFilterModel as be,rawValuesForLabels as xe,resolveGridLabels as Se,scrollCellIntoView as Ce}from"@gp-grid/core";function we(e){let t=v(G(e));return{state:t,applyInstructions:e=>{let n=t.value,r=new Map(n.slots),i=new Map(n.headers),a={pendingScrollTop:null};for(let t of e){let e=M(t,r,i);e&&Object.assign(a,e)}a.slots=r,a.headers=i,t.value={...n,...a}},reset:()=>{t.value=G()}}}function Te(e,t){let n=h(null);function r(r,i){n.value&&clearInterval(n.value),n.value=setInterval(()=>{let n=e.value;n&&(n.scrollTop+=i,n.scrollLeft+=r,t?.())},16)}function i(){n.value&&=(clearInterval(n.value),null)}return p(()=>{i()}),{startAutoScroll:r,stopAutoScroll:i}}function Ee(e,t,n,r){let{activeCell:i,selectionRange:a,editingCell:o,filterPopupOpen:s,rowHeight:c,headerHeight:l,columnPositions:u,columnWidths:d,visibleColumnsWithIndices:f,slots:m,rowsWrapperOffset:g}=r,_=h({isDragging:!1,dragType:null,fillSourceRange:null,fillTarget:null,columnResize:null,columnMove:null,rowDrag:null}),v=null,y=null,b=null,x=null,C=null,w=e=>{e.preventDefault()},T=new O({getCore:()=>e.value,isBrowser:typeof window<`u`,onTapConfirmed:()=>t.value?.focus()}),{startAutoScroll:E,stopAutoScroll:D}=Te(t,()=>{let t=e.value;if(v&&t?.input){let e=j();e&&(t.input.handleDragMove(v,e),_.value=t.input.getDragState())}});S([()=>l,()=>c,u,f],()=>{let t=e.value;if(t?.input){let e=f.value;t.input.updateDeps({getHeaderHeight:()=>l,getRowHeight:()=>c,getColumnPositions:()=>u.value,getColumnCount:()=>e.length,getOriginalColumnIndex:t=>{let n=e[t];return n?n.originalIndex:t}})}},{immediate:!0});function j(){let e=t.value;if(!e)return null;let n=e.getBoundingClientRect();return{top:n.top,left:n.left,width:n.width,height:n.height,scrollTop:e.scrollTop,scrollLeft:e.scrollLeft}}function M(e){return{clientX:e.clientX,clientY:e.clientY,button:e.button,shiftKey:e.shiftKey,ctrlKey:e.ctrlKey,metaKey:e.metaKey,pointerId:e.pointerId,pointerType:e.pointerType}}function N(){y?.();let n=t=>{t.preventDefault();let n=e.value,r=j();if(!n?.input||!r)return;let i=M(t);v=i;let a=n.input.handleDragMove(i,r);a&&(a.autoScroll?E(a.autoScroll.dx,a.autoScroll.dy):D(),_.value=n.input.getDragState())},r=()=>{try{let t=e.value;t?.input&&t.input.handleDragEnd()}finally{let i=e.value,a=i?.input?i.input.getDragState():{isDragging:!1,dragType:null,fillSourceRange:null,fillTarget:null,columnResize:null,columnMove:null,rowDrag:null};_.value=a,v=null,D(),document.removeEventListener(`touchmove`,w),C!==null&&t.value&&(t.value.style.overflow=C,C=null),document.removeEventListener(`pointermove`,n),document.removeEventListener(`pointerup`,r),document.removeEventListener(`pointercancel`,r),y=null}};document.addEventListener(`pointermove`,n,{passive:!1}),document.addEventListener(`pointerup`,r),document.addEventListener(`pointercancel`,r),y=()=>{document.removeEventListener(`pointermove`,n),document.removeEventListener(`pointerup`,r),document.removeEventListener(`pointercancel`,r)}}function P(){b!==null&&(clearTimeout(b),b=null,e.value?.input?.cancelPendingRowDrag()),x=null}function F(n,r,i){let a=e.value;if(!a?.input)return;let o=a.input.handleCellMouseDown(n,r,M(i));if(o.focusContainer&&t.value?.focus(),o.startTap&&T.start(i),o.startDrag===`selection`)a.input.startSelectionDrag(),_.value=a.input.getDragState(),N();else if(o.startDrag===`row-drag`)_.value=a.input.getDragState(),N();else if(o.startDrag===`row-drag-pending`){P(),x={pointerId:i.pointerId,target:i.currentTarget??i.target};let e=i.clientX,n=i.clientY,r=t=>{let r=t.clientX-e,i=t.clientY-n;(Math.abs(r)>A||Math.abs(i)>A)&&(P(),s())},o=()=>{P(),s()},s=()=>{document.removeEventListener(`pointermove`,r),document.removeEventListener(`pointerup`,o),document.removeEventListener(`pointercancel`,o)};document.addEventListener(`pointermove`,r),document.addEventListener(`pointerup`,o,{once:!0}),document.addEventListener(`pointercancel`,o,{once:!0}),b=setTimeout(()=>{b=null,s();let e=x;if(x=null,a.input.confirmPendingRowDrag()){if(t.value&&(C=t.value.style.overflow,t.value.style.overflow=`hidden`),document.addEventListener(`touchmove`,w,{passive:!1}),e)try{e.target.setPointerCapture(e.pointerId)}catch{}_.value=a.input.getDragState(),N()}},k)}}function I(t,n){let r=e.value;r?.input&&r.input.handleCellDoubleClick(t,n)}function L(t){let n=e.value;if(!n?.input)return;let r=n.input.handleFillHandleMouseDown(i.value,a.value,M(t));if(r.preventDefault&&t.preventDefault(),r.stopPropagation&&t.stopPropagation(),r.startDrag===`fill`){try{t.target.setPointerCapture(t.pointerId)}catch{}_.value=n.input.getDragState(),N()}}function R(t,r){let i=e.value;if(!i?.input)return;let a=n.value[t];if(!a)return;let o=a.colId??a.field;i.input.handleHeaderClick(o,r.shiftKey)}function z(t,n,r,i){let a=e.value;if(!a?.input)return;let o=a.input.handleHeaderMouseDown(t,n,r,M(i));if(o.preventDefault&&i.preventDefault(),o.stopPropagation&&i.stopPropagation(),o.startDrag===`column-move`){try{i.target.setPointerCapture(i.pointerId)}catch{}_.value=a.input.getDragState(),N()}}function B(t,n,r){let i=e.value;if(!i?.input)return;let a=i.input.handleHeaderResizeMouseDown(t,n,M(r));a.preventDefault&&r.preventDefault(),a.stopPropagation&&r.stopPropagation(),a.startDrag===`column-resize`&&(_.value=i.input.getDragState(),N())}function V(n){let r=e.value,a=t.value;if(!r?.input)return;let l=r.input.handleKeyDown({key:n.key,shiftKey:n.shiftKey,ctrlKey:n.ctrlKey,metaKey:n.metaKey},i.value,o.value,s.value);l.preventDefault&&n.preventDefault(),l.scrollToCell&&a&&Ce(r,a,l.scrollToCell.row,c,m.value,g.value,{colIndex:l.scrollToCell.col,visibleColumns:f.value,columnPositions:u.value,columnWidths:d.value})}function H(t){let n=e.value;if(n===null||o.value!==null||s.value)return;let r=t.clipboardData?.getData(`text/plain`)??``;n.pasteClipboardText(r)&&t.preventDefault()}function U(n,r){let i=e.value,a=t.value;if(!i?.input||!a)return;let o=i.input.handleWheel(n.deltaY,n.deltaX,r);o&&(n.preventDefault(),a.scrollTop+=o.dy,a.scrollLeft+=o.dx)}return p(()=>{y?.(),y=null,P(),T.cancel(),D(),document.removeEventListener(`touchmove`,w),C!==null&&t.value&&(t.value.style.overflow=C,C=null)}),{handleCellMouseDown:F,handleCellDoubleClick:I,handleFillHandleMouseDown:L,handleHeaderClick:R,handleHeaderMouseDown:z,handleHeaderResizeMouseDown:B,handleKeyDown:V,handlePaste:H,handleWheel:U,dragState:_}}const De=e=>{let{activeCell:n,selectionRange:r,slots:i,columns:a,visibleColumnsWithIndices:o,columnPositions:s,columnWidths:c,rowHeight:l}=e;return{fillHandlePosition:t(()=>L({activeCell:n.value,selectionRange:r.value,slots:i.value,columns:a.value,visibleColumnsWithIndices:o.value,columnPositions:s.value,columnWidths:c.value,rowHeight:l}))}};function Oe(e,t){let{onClose:n,ignoreSelector:r=`.gp-grid-filter-icon`}=t,i=null,a=null;f(()=>{i=t=>{let i=t.target;r&&i.closest(r)||e.value&&!e.value.contains(i)&&n()},a=e=>{e.key===`Escape`&&n()},requestAnimationFrame(()=>{i&&document.addEventListener(`pointerdown`,i),a&&document.addEventListener(`keydown`,a)})}),p(()=>{i&&document.removeEventListener(`pointerdown`,i),a&&document.removeEventListener(`keydown`,a)})}const ke=e=>({operator:e,value:``,valueTo:``});function Q(e,t=`and`){let n=h(e.map(e=>({...e,conditions:[...e.conditions]})));return{groups:n,combination:h(t),setGroupCombination:(e,t)=>{n.value=n.value.map((n,r)=>r===e?{...n,combination:t}:n)},updateCondition:(e,t,r)=>{n.value=n.value.map((n,i)=>{if(i!==e)return n;let a=n.conditions.map((e,n)=>n===t?{...e,...r}:e);return{...n,conditions:a}})},addCondition:(e,t)=>{n.value=n.value.map((n,r)=>r===e?{...n,conditions:[...n.conditions,ke(t)]}:n)},removeCondition:(e,t)=>{n.value=n.value.map((n,r)=>r===e?{...n,conditions:n.conditions.filter((e,n)=>n!==t)}:n)},addGroup:e=>{n.value=[...n.value,{conditions:[ke(e)],combination:`and`}]},removeGroup:e=>{n.value=n.value.filter((t,n)=>n!==e)}}}const Ae={class:`gp-grid-filter-content gp-grid-filter-text`},je={key:0,class:`gp-grid-filter-mode-toggle`},Me=[`aria-pressed`],Ne=[`aria-pressed`],Pe={key:1,class:`gp-grid-filter-info`},Fe=[`placeholder`],Ie={class:`gp-grid-filter-actions`},Le=[`disabled`],Re={class:`gp-grid-filter-list`},ze={key:0,class:`gp-grid-filter-option`},Be=[`checked`],Ve={class:`gp-grid-filter-blank`},He=[`checked`,`onChange`],Ue={key:3,class:`gp-grid-filter-groups`},We={key:0,class:`gp-grid-filter-combination`},Ge=[`aria-pressed`],Ke=[`aria-pressed`],qe={key:0,class:`gp-grid-filter-group-actions`},Je={key:0,class:`gp-grid-filter-combination`},Ye=[`aria-pressed`,`onClick`],Xe=[`aria-pressed`,`onClick`],Ze=[`onClick`],Qe={class:`gp-grid-filter-row`},$e=[`value`,`autofocus`,`onChange`],et=[`value`],tt=[`value`,`placeholder`,`onInput`],nt=[`onClick`],rt=[`onClick`],it={class:`gp-grid-filter-buttons`},at=c({__name:`TextFilterContent`,props:{distinctValues:{},valueFormatter:{type:Function},currentFilter:{},labels:{}},emits:[`apply`,`close`],setup(n,{emit:o}){let s=n,c=o,l=t(()=>ce(s.labels)),d=t(()=>de(s.distinctValues,s.valueFormatter)),f=t(()=>d.value.length>100),p=t(()=>s.currentFilter?.groups[0]?.conditions[0]),_=h(t(()=>p.value===void 0?f.value?`condition`:`values`:p.value.selectedValues===void 0?`condition`:`values`).value),v=t(()=>p.value?.selectedValues===void 0?new Set:ye(d.value,p.value.selectedValues)),S=h(``),C=h(new Set(v.value)),T=h(p.value?.includeBlank??!0),{groups:E,combination:D,setGroupCombination:O,updateCondition:k,addCondition:A,removeCondition:j,addGroup:M,removeGroup:N}=Q(t(()=>s.currentFilter?.groups.length&&p.value?.selectedValues===void 0?s.currentFilter.groups.map(e=>({combination:e.combination,conditions:e.conditions.map(e=>{let t=e;return{operator:t.operator,value:t.value??``,valueTo:``}})})):[{conditions:[{operator:`contains`,value:``,valueTo:``}],combination:`and`}]).value,s.currentFilter?.combination??`and`),P=t(()=>{if(!S.value)return d.value;let e=S.value.toLowerCase();return d.value.filter(t=>t.label.toLowerCase().includes(e))}),F=t(()=>s.distinctValues.some(fe)),I=t(()=>P.value.every(e=>C.value.has(e.label))&&(!F.value||T.value)),L=()=>{C.value=new Set(P.value.map(e=>e.label)),F.value&&(T.value=!0)},R=()=>{C.value=new Set,T.value=!1},z=e=>{let t=new Set(C.value);t.has(e)?t.delete(e):t.add(e),C.value=t},B=e=>e.operator===`blank`||e.operator===`notBlank`||e.value.trim()!==``,V=()=>{if(_.value===`values`){if(d.value.every(e=>C.value.has(e.label))&&(!F.value||T.value)){c(`apply`,null);return}let e={type:`text`,operator:`equals`,selectedValues:xe(d.value,C.value),includeBlank:T.value};c(`apply`,{groups:[{conditions:[e],combination:`and`}],combination:`and`});return}let e=E.value.flatMap(e=>{let t=e.conditions.filter(B);return t.length===0?[]:[{conditions:t.map(e=>({type:`text`,operator:e.operator,value:e.value})),combination:e.combination}]});if(e.length===0){c(`apply`,null);return}c(`apply`,{groups:e,combination:D.value})},H=()=>c(`apply`,null);return(t,o)=>(m(),i(`div`,Ae,[f.value?r(`v-if`,!0):(m(),i(`div`,je,[a(`button`,{type:`button`,class:u({active:_.value===`values`}),"aria-pressed":_.value===`values`,onClick:o[0]||=e=>_.value=`values`},y(n.labels.valuesMode),11,Me),a(`button`,{type:`button`,class:u({active:_.value===`condition`}),"aria-pressed":_.value===`condition`,onClick:o[1]||=e=>_.value=`condition`},y(n.labels.conditionMode),11,Ne)])),f.value&&_.value===`condition`?(m(),i(`div`,Pe,y(b(K)(n.labels.tooManyValues,{count:d.value.length})),1)):r(`v-if`,!0),_.value===`values`?(m(),i(e,{key:2},[w(a(`input`,{"onUpdate:modelValue":o[2]||=e=>S.value=e,class:`gp-grid-filter-search`,type:`text`,placeholder:n.labels.searchPlaceholder,autofocus:``},null,8,Fe),[[x,S.value]]),a(`div`,Ie,[a(`button`,{type:`button`,disabled:I.value,onClick:L},y(n.labels.selectAll),9,Le),a(`button`,{type:`button`,onClick:R},y(n.labels.deselectAll),1)]),a(`div`,Re,[F.value?(m(),i(`label`,ze,[a(`input`,{type:`checkbox`,checked:T.value,onChange:o[3]||=e=>T.value=!T.value},null,40,Be),a(`span`,Ve,y(n.labels.blanks),1)])):r(`v-if`,!0),(m(!0),i(e,null,g(P.value,e=>(m(),i(`label`,{key:e.label,class:`gp-grid-filter-option`},[a(`input`,{type:`checkbox`,checked:C.value.has(e.label),onChange:t=>z(e.label)},null,40,He),a(`span`,null,y(e.label),1)]))),128))])],64)):r(`v-if`,!0),_.value===`condition`?(m(),i(`div`,Ue,[b(E).length>1?(m(),i(`div`,We,[a(`button`,{type:`button`,class:u({active:b(D)===`and`}),"aria-pressed":b(D)===`and`,onClick:o[4]||=e=>D.value=`and`},y(n.labels.and),11,Ge),a(`button`,{type:`button`,class:u({active:b(D)===`or`}),"aria-pressed":b(D)===`or`,onClick:o[5]||=e=>D.value=`or`},y(n.labels.or),11,Ke)])):r(`v-if`,!0),(m(!0),i(e,null,g(b(E),(t,o)=>(m(),i(`div`,{key:o,class:`gp-grid-filter-group`},[t.conditions.length>1||b(E).length>1?(m(),i(`div`,qe,[t.conditions.length>1?(m(),i(`div`,Je,[a(`button`,{type:`button`,class:u({active:t.combination===`and`}),"aria-pressed":t.combination===`and`,onClick:e=>b(O)(o,`and`)},y(n.labels.and),11,Ye),a(`button`,{type:`button`,class:u({active:t.combination===`or`}),"aria-pressed":t.combination===`or`,onClick:e=>b(O)(o,`or`)},y(n.labels.or),11,Xe)])):r(`v-if`,!0),b(E).length>1?(m(),i(`button`,{key:1,type:`button`,class:`gp-grid-filter-remove gp-grid-filter-group-remove`,onClick:e=>b(N)(o)},y(n.labels.removeGroup),9,Ze)):r(`v-if`,!0)])):r(`v-if`,!0),(m(!0),i(e,null,g(t.conditions,(s,c)=>(m(),i(`div`,{key:c,class:`gp-grid-filter-condition`},[a(`div`,Qe,[a(`select`,{value:s.operator,autofocus:o===0&&c===0,onChange:e=>b(k)(o,c,{operator:e.target.value})},[(m(!0),i(e,null,g(l.value,e=>(m(),i(`option`,{key:e.value,value:e.value},y(e.label),9,et))),128))],40,$e),s.operator!==`blank`&&s.operator!==`notBlank`?(m(),i(`input`,{key:0,type:`text`,class:`gp-grid-filter-text-input`,value:s.value,placeholder:n.labels.valuePlaceholder,onInput:e=>b(k)(o,c,{value:e.target.value})},null,40,tt)):r(`v-if`,!0),t.conditions.length>1?(m(),i(`button`,{key:1,type:`button`,class:`gp-grid-filter-remove`,onClick:e=>b(j)(o,c)},y(n.labels.removeCondition),9,nt)):r(`v-if`,!0)])]))),128)),a(`button`,{type:`button`,class:`gp-grid-filter-add`,onClick:e=>b(A)(o,`contains`)},y(n.labels.addCondition),9,rt)]))),128)),a(`button`,{type:`button`,class:`gp-grid-filter-add gp-grid-filter-add-group`,onClick:o[6]||=e=>b(M)(`contains`)},y(n.labels.addGroup),1)])):r(`v-if`,!0),a(`div`,it,[a(`button`,{type:`button`,class:`gp-grid-filter-btn-clear`,onClick:H},y(n.labels.clear),1),a(`button`,{type:`button`,class:`gp-grid-filter-btn-apply`,onClick:V},y(n.labels.apply),1)])]))}}),ot={class:`gp-grid-filter-content gp-grid-filter-number`},st={class:`gp-grid-filter-groups`},ct={key:0,class:`gp-grid-filter-combination`},lt=[`aria-pressed`],ut=[`aria-pressed`],dt={key:0,class:`gp-grid-filter-group-actions`},ft={key:0,class:`gp-grid-filter-combination`},pt=[`aria-pressed`,`onClick`],mt=[`aria-pressed`,`onClick`],ht=[`onClick`],gt={class:`gp-grid-filter-row`},_t=[`value`,`onChange`],vt=[`value`],yt=[`value`,`placeholder`,`onInput`],bt={class:`gp-grid-filter-to`},xt=[`value`,`placeholder`,`onInput`],St=[`onClick`],Ct=[`onClick`],wt={class:`gp-grid-filter-buttons`},Tt=c({__name:`NumberFilterContent`,props:{currentFilter:{},labels:{}},emits:[`apply`,`close`],setup(n,{emit:o}){let s=n,c=o,l=t(()=>q(s.labels)),{groups:d,combination:f,setGroupCombination:p,updateCondition:h,addCondition:_,removeCondition:v,addGroup:x,removeGroup:S}=Q(t(()=>s.currentFilter?.groups.length?s.currentFilter.groups.map(e=>({combination:e.combination,conditions:e.conditions.map(e=>{let t=e;return{operator:t.operator,value:t.value==null?``:String(t.value),valueTo:t.valueTo==null?``:String(t.valueTo)}})})):[{conditions:[{operator:`=`,value:``,valueTo:``}],combination:`and`}]).value,s.currentFilter?.combination??`and`),C=e=>e.operator===`blank`||e.operator===`notBlank`?!0:e.operator===`between`?e.value!==``&&e.valueTo!==``:e.value!==``,w=()=>{let e=d.value.flatMap(e=>{let t=e.conditions.filter(C);return t.length===0?[]:[{conditions:t.map(e=>({type:`number`,operator:e.operator,value:e.value?Number.parseFloat(e.value):void 0,valueTo:e.valueTo?Number.parseFloat(e.valueTo):void 0})),combination:e.combination}]});if(e.length===0){c(`apply`,null);return}c(`apply`,{groups:e,combination:f.value})},T=()=>c(`apply`,null);return(t,o)=>(m(),i(`div`,ot,[a(`div`,st,[b(d).length>1?(m(),i(`div`,ct,[a(`button`,{type:`button`,class:u({active:b(f)===`and`}),"aria-pressed":b(f)===`and`,onClick:o[0]||=e=>f.value=`and`},y(n.labels.and),11,lt),a(`button`,{type:`button`,class:u({active:b(f)===`or`}),"aria-pressed":b(f)===`or`,onClick:o[1]||=e=>f.value=`or`},y(n.labels.or),11,ut)])):r(`v-if`,!0),(m(!0),i(e,null,g(b(d),(t,o)=>(m(),i(`div`,{key:o,class:`gp-grid-filter-group`},[t.conditions.length>1||b(d).length>1?(m(),i(`div`,dt,[t.conditions.length>1?(m(),i(`div`,ft,[a(`button`,{type:`button`,class:u({active:t.combination===`and`}),"aria-pressed":t.combination===`and`,onClick:e=>b(p)(o,`and`)},y(n.labels.and),11,pt),a(`button`,{type:`button`,class:u({active:t.combination===`or`}),"aria-pressed":t.combination===`or`,onClick:e=>b(p)(o,`or`)},y(n.labels.or),11,mt)])):r(`v-if`,!0),b(d).length>1?(m(),i(`button`,{key:1,type:`button`,class:`gp-grid-filter-remove gp-grid-filter-group-remove`,onClick:e=>b(S)(o)},y(n.labels.removeGroup),9,ht)):r(`v-if`,!0)])):r(`v-if`,!0),(m(!0),i(e,null,g(t.conditions,(s,c)=>(m(),i(`div`,{key:c,class:`gp-grid-filter-condition`},[a(`div`,gt,[a(`select`,{value:s.operator,onChange:e=>b(h)(o,c,{operator:e.target.value})},[(m(!0),i(e,null,g(l.value,e=>(m(),i(`option`,{key:e.value,value:e.value},y(e.label),9,vt))),128))],40,_t),s.operator!==`blank`&&s.operator!==`notBlank`?(m(),i(`input`,{key:0,type:`number`,value:s.value,placeholder:n.labels.valuePlaceholder,onInput:e=>b(h)(o,c,{value:e.target.value})},null,40,yt)):r(`v-if`,!0),s.operator===`between`?(m(),i(e,{key:1},[a(`span`,bt,y(n.labels.betweenSeparator),1),a(`input`,{type:`number`,value:s.valueTo,placeholder:n.labels.valuePlaceholder,onInput:e=>b(h)(o,c,{valueTo:e.target.value})},null,40,xt)],64)):r(`v-if`,!0),t.conditions.length>1?(m(),i(`button`,{key:2,type:`button`,class:`gp-grid-filter-remove`,onClick:e=>b(v)(o,c)},y(n.labels.removeCondition),9,St)):r(`v-if`,!0)])]))),128)),a(`button`,{type:`button`,class:`gp-grid-filter-add`,onClick:e=>b(_)(o,`=`)},y(n.labels.addCondition),9,Ct)]))),128)),a(`button`,{type:`button`,class:`gp-grid-filter-add gp-grid-filter-add-group`,onClick:o[2]||=e=>b(x)(`=`)},y(n.labels.addGroup),1)]),a(`div`,wt,[a(`button`,{type:`button`,class:`gp-grid-filter-btn-clear`,onClick:T},y(n.labels.clear),1),a(`button`,{type:`button`,class:`gp-grid-filter-btn-apply`,onClick:w},y(n.labels.apply),1)])]))}}),Et={class:`gp-grid-filter-content gp-grid-filter-date`},Dt={class:`gp-grid-filter-groups`},Ot={key:0,class:`gp-grid-filter-combination`},kt=[`aria-pressed`],At=[`aria-pressed`],jt={key:0,class:`gp-grid-filter-group-actions`},Mt={key:0,class:`gp-grid-filter-combination`},Nt=[`aria-pressed`,`onClick`],Pt=[`aria-pressed`,`onClick`],Ft=[`onClick`],It={class:`gp-grid-filter-row`},Lt=[`value`,`onChange`],Rt=[`value`],zt=[`value`,`onInput`],Bt={class:`gp-grid-filter-to`},Vt=[`value`,`onInput`],Ht=[`onClick`],Ut=[`onClick`],Wt={class:`gp-grid-filter-buttons`},Gt=c({__name:`DateFilterContent`,props:{currentFilter:{},labels:{}},emits:[`apply`,`close`],setup(n,{emit:o}){let s=n,c=o,l=t(()=>ae(s.labels)),d=e=>{if(!e)return``;let t=typeof e==`string`?new Date(e):e;return Number.isNaN(t.getTime())?``:t.toISOString().split(`T`)[0]},{groups:f,combination:p,setGroupCombination:h,updateCondition:_,addCondition:v,removeCondition:x,addGroup:S,removeGroup:C}=Q(t(()=>s.currentFilter?.groups.length?s.currentFilter.groups.map(e=>({combination:e.combination,conditions:e.conditions.map(e=>{let t=e;return{operator:t.operator,value:d(t.value),valueTo:d(t.valueTo)}})})):[{conditions:[{operator:`=`,value:``,valueTo:``}],combination:`and`}]).value,s.currentFilter?.combination??`and`),w=e=>e.operator===`blank`||e.operator===`notBlank`?!0:e.operator===`between`?e.value!==``&&e.valueTo!==``:e.value!==``,T=()=>{let e=f.value.flatMap(e=>{let t=e.conditions.filter(w);return t.length===0?[]:[{conditions:t.map(e=>({type:`date`,operator:e.operator,value:e.value||void 0,valueTo:e.valueTo||void 0})),combination:e.combination}]});if(e.length===0){c(`apply`,null);return}c(`apply`,{groups:e,combination:p.value})},E=()=>c(`apply`,null);return(t,o)=>(m(),i(`div`,Et,[a(`div`,Dt,[b(f).length>1?(m(),i(`div`,Ot,[a(`button`,{type:`button`,class:u({active:b(p)===`and`}),"aria-pressed":b(p)===`and`,onClick:o[0]||=e=>p.value=`and`},y(n.labels.and),11,kt),a(`button`,{type:`button`,class:u({active:b(p)===`or`}),"aria-pressed":b(p)===`or`,onClick:o[1]||=e=>p.value=`or`},y(n.labels.or),11,At)])):r(`v-if`,!0),(m(!0),i(e,null,g(b(f),(t,o)=>(m(),i(`div`,{key:o,class:`gp-grid-filter-group`},[t.conditions.length>1||b(f).length>1?(m(),i(`div`,jt,[t.conditions.length>1?(m(),i(`div`,Mt,[a(`button`,{type:`button`,class:u({active:t.combination===`and`}),"aria-pressed":t.combination===`and`,onClick:e=>b(h)(o,`and`)},y(n.labels.and),11,Nt),a(`button`,{type:`button`,class:u({active:t.combination===`or`}),"aria-pressed":t.combination===`or`,onClick:e=>b(h)(o,`or`)},y(n.labels.or),11,Pt)])):r(`v-if`,!0),b(f).length>1?(m(),i(`button`,{key:1,type:`button`,class:`gp-grid-filter-remove gp-grid-filter-group-remove`,onClick:e=>b(C)(o)},y(n.labels.removeGroup),9,Ft)):r(`v-if`,!0)])):r(`v-if`,!0),(m(!0),i(e,null,g(t.conditions,(s,c)=>(m(),i(`div`,{key:c,class:`gp-grid-filter-condition`},[a(`div`,It,[a(`select`,{value:s.operator,onChange:e=>b(_)(o,c,{operator:e.target.value})},[(m(!0),i(e,null,g(l.value,e=>(m(),i(`option`,{key:e.value,value:e.value},y(e.label),9,Rt))),128))],40,Lt),s.operator!==`blank`&&s.operator!==`notBlank`?(m(),i(`input`,{key:0,type:`date`,value:s.value,onInput:e=>b(_)(o,c,{value:e.target.value})},null,40,zt)):r(`v-if`,!0),s.operator===`between`?(m(),i(e,{key:1},[a(`span`,Bt,y(n.labels.betweenSeparator),1),a(`input`,{type:`date`,value:s.valueTo,onInput:e=>b(_)(o,c,{valueTo:e.target.value})},null,40,Vt)],64)):r(`v-if`,!0),t.conditions.length>1?(m(),i(`button`,{key:2,type:`button`,class:`gp-grid-filter-remove`,onClick:e=>b(x)(o,c)},y(n.labels.removeCondition),9,Ht)):r(`v-if`,!0)])]))),128)),a(`button`,{type:`button`,class:`gp-grid-filter-add`,onClick:e=>b(v)(o,`=`)},y(n.labels.addCondition),9,Ut)]))),128)),a(`button`,{type:`button`,class:`gp-grid-filter-add gp-grid-filter-add-group`,onClick:o[2]||=e=>b(S)(`=`)},y(n.labels.addGroup),1)]),a(`div`,Wt,[a(`button`,{type:`button`,class:`gp-grid-filter-btn-clear`,onClick:E},y(n.labels.clear),1),a(`button`,{type:`button`,class:`gp-grid-filter-btn-apply`,onClick:T},y(n.labels.apply),1)])]))}}),Kt={class:`gp-grid-filter-header`},qt=c({__name:`FilterPopup`,props:{column:{},colIndex:{},containerRef:{},distinctValues:{},currentFilter:{},labels:{}},emits:[`apply`,`close`],setup(o,{emit:c}){let l=o,u=c,g=h(null),_=h(0),v=h(0),x=h(200),S=h(!1);Oe(g,{onClose:()=>u(`close`),ignoreSelector:`.gp-grid-filter-icon`});let w=t(()=>l.column.colId??l.column.field);function T(e){u(`apply`,w.value,e),u(`close`)}function E(){u(`close`)}let D=t(()=>l.column.cellDataType);t(()=>D.value===`text`||D.value===`object`);let O=t(()=>D.value===`number`),k=t(()=>D.value===`date`||D.value===`dateString`||D.value===`dateTime`||D.value===`dateTimeString`),A=null,j=()=>{let e=l.containerRef,t=g.value;if(!e||!t)return;let n=e.querySelector(`[data-col-index="${l.colIndex}"]`);if(!n)return;let r=R(n,t);_.value=r.top,v.value=r.left,x.value=r.minWidth,S.value=!0},M=()=>{A===null&&(A=requestAnimationFrame(()=>{A=null,j()}))};C(()=>{l.colIndex,j()},{flush:`post`}),f(()=>{window.addEventListener(`scroll`,M,{passive:!0,capture:!0}),window.addEventListener(`resize`,M)}),p(()=>{window.removeEventListener(`scroll`,M,{capture:!0}),window.removeEventListener(`resize`,M),A!==null&&cancelAnimationFrame(A)});let N=t(()=>({position:`fixed`,top:`${_.value}px`,left:`${v.value}px`,minWidth:`${x.value}px`,zIndex:1e4,visibility:S.value?`visible`:`hidden`}));return(t,c)=>(m(),i(`div`,{ref_key:`popupRef`,ref:g,class:`gp-grid-filter-popup`,style:d(N.value)},[a(`div`,Kt,y(b(K)(o.labels.filterTitle,{column:o.column.headerName??o.column.field})),1),r(` Number filter `),O.value?(m(),n(Tt,{key:0,"current-filter":o.currentFilter,labels:o.labels,onApply:T,onClose:E},null,8,[`current-filter`,`labels`])):k.value?(m(),i(e,{key:1},[r(` Date filter `),s(Gt,{"current-filter":o.currentFilter,labels:o.labels,onApply:T,onClose:E},null,8,[`current-filter`,`labels`])],2112)):(m(),i(e,{key:2},[r(` Text filter (default) `),s(at,{"distinct-values":o.distinctValues,"value-formatter":o.column.valueFormatter,"current-filter":o.currentFilter,labels:o.labels,onApply:T,onClose:E},null,8,[`distinct-values`,`value-formatter`,`current-filter`,`labels`])],2112))],4))}}),Jt=e=>e==null||e===``?o(``):typeof e==`string`?o(e):e,$=(e,t)=>typeof e==`function`?Jt(e(t)):l(e,t),Yt=e=>{let t=e.cellDataType;return t===`text`||t===`boolean`||t===`object`};function Xt(t){let{column:n,colIndex:r,sortDirection:i,sortIndex:a,sortable:o,filterable:s,hasFilter:c,core:u,container:d,headerRenderers:f,globalHeaderRenderer:p}=t,m={column:n,colIndex:r,sortDirection:i,sortIndex:a,sortable:o,filterable:s,hasFilter:c,onSort:(e,t)=>{u&&o&&u.setSort(n.colId??n.field,e,t)},onFilterClick:()=>{if(u&&s){let e=d?.querySelector(`[data-col-index="${r}"]`);if(e){let t=e.getBoundingClientRect();u.openFilterPopup(r,{top:t.top,left:t.left,width:t.width,height:t.height},Yt(n))}}}};if(n.headerRenderer!=null)if(typeof n.headerRenderer==`string`){let e=f[n.headerRenderer];if(e)return $(e,m)}else return $(n.headerRenderer,m);if(p)return $(p,m);let h=[l(`span`,{class:`gp-grid-header-text`},n.headerName??n.field)],g=[];if(o){let e=[l(`span`,{class:`gp-grid-sort-arrows-stack`},[l(`svg`,{class:`gp-grid-sort-arrow-up${i===`asc`?` active`:``}`,width:`8`,height:`6`,viewBox:`0 0 8 6`},[l(`path`,{d:`M4 0L8 6H0L4 0Z`,fill:`currentColor`})]),l(`svg`,{class:`gp-grid-sort-arrow-down${i===`desc`?` active`:``}`,width:`8`,height:`6`,viewBox:`0 0 8 6`},[l(`path`,{d:`M4 6L0 0H8L4 6Z`,fill:`currentColor`})])])];a!==void 0&&a>0&&e.push(l(`span`,{class:`gp-grid-sort-index`},String(a))),g.push(l(`span`,{class:`gp-grid-sort-arrows`},e))}return s&&g.push(l(`span`,{class:`gp-grid-filter-icon${c?` active`:``}`,onPointerdown:e=>{e.stopPropagation(),e.preventDefault(),m.onFilterClick()},onClick:e=>{e.stopPropagation()}},[l(`svg`,{width:`16`,height:`16`,viewBox:`0 0 24 24`,fill:`currentColor`},[l(`path`,{d:`M4 4h16l-6 8v5l-4 2v-7L4 4z`})])])),g.length>0&&h.push(l(`span`,{class:`gp-grid-header-icons`},g)),l(e,h)}const Zt=[`data-col-index`,`onPointerdown`],Qt=[`onPointerdown`],$t=c({__name:`GridHeader`,props:{headerHeight:{},scrollLeft:{},contentWidth:{},totalWidth:{},isLoading:{type:Boolean},visibleColumnsWithIndices:{},columnPositions:{},columnWidths:{},headers:{},sortingEnabled:{type:Boolean},onHeaderMouseDown:{type:Function},onHeaderResizeMouseDown:{type:Function},coreRef:{},outerContainerRef:{},headerRenderers:{},globalHeaderRenderer:{type:Function}},setup(t){let o=t;return(t,s)=>(m(),i(`div`,{class:u([`gp-grid-header`,{"gp-grid-header--loading":o.isLoading}]),style:d({height:`${o.headerHeight}px`})},[a(`div`,{style:d({position:`absolute`,top:0,left:0,transform:`translateX(${-o.scrollLeft}px)`,width:`${Math.max(o.contentWidth,o.totalWidth)}px`,height:`${o.headerHeight}px`})},[(m(!0),i(e,null,g(o.visibleColumnsWithIndices,({column:e,originalIndex:t},a)=>(m(),i(`div`,{key:e.colId??e.field,class:`gp-grid-header-cell`,"data-col-index":t,style:d({left:`${o.columnPositions[a]}px`,width:`${o.columnWidths[a]}px`,height:`${o.headerHeight}px`}),onPointerdown:e=>o.onHeaderMouseDown(t,o.columnWidths[a]??0,o.headerHeight,e)},[(m(),n(_(b(Xt)({column:e,colIndex:t,sortDirection:o.headers.get(t)?.sortDirection,sortIndex:o.headers.get(t)?.sortIndex,sortable:e.sortable!==!1&&o.sortingEnabled,filterable:e.filterable!==!1,hasFilter:o.headers.get(t)?.hasFilter??!1,core:o.coreRef,container:o.outerContainerRef,headerRenderers:o.headerRenderers,globalHeaderRenderer:o.globalHeaderRenderer})))),e.resizable===!1?r(`v-if`,!0):(m(),i(`div`,{key:0,class:`gp-grid-header-resize-handle`,onPointerdown:T(e=>o.onHeaderResizeMouseDown(t,o.columnWidths[a]??0,e),[`stop`])},null,40,Qt))],44,Zt))),128))],4)],6))}});function en(e){let{column:t,rowData:n,rowIndex:r,colIndex:i,isActive:a,isSelected:o,isEditing:s,cellRenderers:c,globalCellRenderer:u}=e,d=oe(n,t.field),f={value:t.valueFormatter?t.valueFormatter(d):d,rowData:n,column:t,rowIndex:r,colIndex:i,isActive:a,isSelected:o,isEditing:s};if(t.cellRenderer!=null)if(typeof t.cellRenderer==`string`){let e=c[t.cellRenderer];if(e)return $(e,f)}else return $(t.cellRenderer,f);return u?$(u,f):l(`span`,{class:`gp-grid-cell-content`},ie(d,t.valueFormatter))}function tn(e){let{column:t,rowData:n,rowIndex:r,colIndex:i,initialValue:a,core:s,editRenderers:c,globalEditRenderer:u}=e;if(!s)return o(``);let d=se(n,t.field),f={value:t.valueFormatter?t.valueFormatter(d):d,rowData:n,column:t,rowIndex:r,colIndex:i,isActive:!0,isSelected:!0,isEditing:!0,initialValue:a,onValueChange:e=>s.updateEditValue(e),onCommit:()=>s.commitEdit(),onCancel:()=>s.cancelEdit()};if(t.editRenderer!=null)if(typeof t.editRenderer==`string`){let e=c[t.editRenderer];if(e)return $(e,f)}else return $(t.editRenderer,f);return u?$(u,f):l(`input`,{class:`gp-grid-edit-input`,type:`text`,value:a==null?``:String(a),autofocus:!0,onFocus:e=>e.target.select(),onInput:e=>s.updateEditValue(e.target.value),onKeydown:e=>{e.stopPropagation(),e.key===`Enter`?s.commitEdit():e.key===`Escape`?s.cancelEdit():e.key===`Tab`&&(e.preventDefault(),s.commitEdit(),s.selection.moveFocus(e.shiftKey?`left`:`right`,!1))},onBlur:()=>s.commitEdit()})}const nn=[`data-cell-row`,`data-cell-col`,`onPointerdown`,`onDblclick`,`onMouseenter`],rn={key:0,class:`gp-grid-error`},an={key:1,class:`gp-grid-empty`},on=c({__name:`GridBody`,props:{rowHeight:{},totalHeaderHeight:{},contentWidth:{},contentHeight:{},totalWidth:{},rowsWrapperOffset:{},activeCell:{},selectionRange:{},editingCell:{},hoverPosition:{},error:{},isLoading:{type:Boolean},totalRows:{},labels:{},slotsArray:{},visibleColumnsWithIndices:{},columnPositions:{},columnWidths:{},fillHandlePosition:{},dragState:{},onScroll:{type:Function},onWheel:{type:Function},wheelDampening:{},onCellMouseDown:{type:Function},onCellDoubleClick:{type:Function},onCellMouseEnter:{type:Function},onCellMouseLeave:{type:Function},onFillHandleMouseDown:{type:Function},coreRef:{},cellRenderers:{},editRenderers:{},globalCellRenderer:{},globalEditRenderer:{}},setup(t,{expose:o}){let s=t,c=h(null),l=e=>[`gp-grid-row`,...s.coreRef?.highlight?.computeRowClasses(e.rowIndex,e.rowData)??[]].filter(Boolean).join(` `),f=(e,t,n,r,i)=>{let a=X(e,t,s.editingCell),o=F(J(e,t,s.activeCell),ge(e,t,s.selectionRange),a,Z(e,t,s.dragState.dragType===`fill`,s.dragState.fillSourceRange,s.dragState.fillTarget)),c=s.coreRef?.highlight?.computeCombinedCellClasses(e,t,n,r)??[],l=n.rowDrag===!0,u=n.wrapText===!0&&!a;return[o,...c,l?`gp-grid-cell--row-drag-handle`:``,u?`gp-grid-cell--wrap`:``].filter(Boolean).join(` `)};return o({bodyRef:c}),(t,o)=>(m(),i(`div`,{ref_key:`bodyRef`,ref:c,style:{flex:`1`,overflow:`auto`,position:`relative`},onScroll:o[2]||=(...e)=>s.onScroll&&s.onScroll(...e),onWheel:o[3]||=e=>s.onWheel(e,s.wheelDampening)},[r(` Content sizer - provides scroll range `),a(`div`,{style:d({width:`${Math.max(s.contentWidth,s.totalWidth)}px`,height:`${Math.max(s.contentHeight-s.totalHeaderHeight,0)}px`,position:`relative`,minWidth:`100%`})},[r(` Rows wrapper `),a(`div`,{class:`gp-grid-rows-wrapper`,style:d({width:`${Math.max(s.contentWidth,s.totalWidth)}px`,transform:`translateY(${s.rowsWrapperOffset}px)`})},[r(` Row slots `),(m(!0),i(e,null,g(s.slotsArray.filter(e=>e.rowIndex>=0),t=>(m(),i(`div`,{key:t.slotId,class:u(l(t)),style:d({position:`absolute`,top:0,left:0,transform:`translateY(${t.translateY}px)`,width:`${Math.max(s.contentWidth,s.totalWidth)}px`,height:`${s.rowHeight}px`})},[(m(!0),i(e,null,g(s.visibleColumnsWithIndices,({column:a,originalIndex:c},l)=>(m(),i(`div`,{key:`${t.slotId}-${a.colId??a.field}`,class:u(f(t.rowIndex,c,a,t.rowData,s.hoverPosition)),"data-cell-row":t.rowIndex,"data-cell-col":c,style:d({position:`absolute`,left:`${s.columnPositions[l]}px`,top:0,width:`${s.columnWidths[l]}px`,height:`${s.rowHeight}px`}),onPointerdown:e=>s.onCellMouseDown(t.rowIndex,c,e),onDblclick:()=>s.onCellDoubleClick(t.rowIndex,c),onMouseenter:()=>s.onCellMouseEnter(t.rowIndex,c),onMouseleave:o[0]||=(...e)=>s.onCellMouseLeave&&s.onCellMouseLeave(...e)},[r(` Edit mode `),b(X)(t.rowIndex,c,s.editingCell)&&s.editingCell?(m(),n(_(b(tn)({column:a,rowData:t.rowData,rowIndex:t.rowIndex,colIndex:c,initialValue:s.editingCell.initialValue,core:s.coreRef,editRenderers:s.editRenderers,globalEditRenderer:s.globalEditRenderer})),{key:0})):(m(),i(e,{key:1},[r(` View mode `),(m(),n(_(b(en)({column:a,rowData:t.rowData,rowIndex:t.rowIndex,colIndex:c,isActive:b(J)(t.rowIndex,c,s.activeCell),isSelected:b(ge)(t.rowIndex,c,s.selectionRange),isEditing:!1,cellRenderers:s.cellRenderers,globalCellRenderer:s.globalCellRenderer}))))],64))],46,nn))),128))],6))),128)),r(` Fill handle `),s.fillHandlePosition&&!s.editingCell?(m(),i(`div`,{key:0,class:`gp-grid-fill-handle`,style:d({top:`${s.fillHandlePosition.top}px`,left:`${s.fillHandlePosition.left}px`}),onPointerdown:o[1]||=(...e)=>s.onFillHandleMouseDown&&s.onFillHandleMouseDown(...e)},null,36)):r(`v-if`,!0),r(` Row drop indicator `),s.dragState.dragType===`row-drag`&&s.dragState.rowDrag?.dropTargetIndex!==null?(m(),i(`div`,{key:1,class:`gp-grid-row-drop-indicator`,style:d({transform:`translateY(${s.dragState.rowDrag.dropIndicatorY}px)`,width:`${Math.max(s.contentWidth,s.totalWidth)}px`})},null,4)):r(`v-if`,!0)],4)],4),r(` Error message `),s.error?(m(),i(`div`,rn,y(b(K)(s.labels.errorPrefix,{message:s.error})),1)):r(`v-if`,!0),r(` Empty state `),!s.isLoading&&!s.error&&s.totalRows===0?(m(),i(`div`,an,y(s.labels.emptyState),1)):r(`v-if`,!0)],544))}}),sn=c({__name:`CellPeek`,props:{peekCell:{},column:{},rowData:{},containerRef:{},cellRenderers:{},globalCellRenderer:{}},emits:[`close`],setup(e,{emit:r}){let a=e,o=r,s=h(null),c=h(0),l=h(0),u=h(0),g=h(!1),v=null,y=()=>{let e=a.containerRef,t=s.value;if(!e||!t)return;let n=e.querySelector(`[data-cell-row="${a.peekCell.row}"][data-cell-col="${a.peekCell.col}"]`);if(!n){o(`close`);return}let r=n.getBoundingClientRect();c.value=r.top,l.value=r.left,u.value=r.width,g.value=!0},b=()=>{v===null&&(v=requestAnimationFrame(()=>{v=null,y()}))},x=e=>{let t=e.target;s.value?.contains(t)||o(`close`)},C=null,w=null;f(()=>{y(),window.addEventListener(`scroll`,b,{passive:!0,capture:!0}),window.addEventListener(`resize`,b),s.value&&(w=N(s.value)),C=requestAnimationFrame(()=>{document.addEventListener(`pointerdown`,x)})}),p(()=>{window.removeEventListener(`scroll`,b,{capture:!0}),window.removeEventListener(`resize`,b),document.removeEventListener(`pointerdown`,x),w?.(),v!==null&&cancelAnimationFrame(v),C!==null&&cancelAnimationFrame(C)}),S(()=>[a.peekCell.row,a.peekCell.col],()=>y(),{flush:`post`});let T=t(()=>({position:`fixed`,top:`${c.value}px`,left:`${l.value}px`,width:`${u.value}px`,visibility:g.value?`visible`:`hidden`})),E=t(()=>en({column:a.column,rowData:a.rowData,rowIndex:a.peekCell.row,colIndex:a.peekCell.col,isActive:!0,isSelected:!1,isEditing:!1,cellRenderers:a.cellRenderers,globalCellRenderer:a.globalCellRenderer}));return(e,t)=>(m(),i(`div`,{ref_key:`overlayRef`,ref:s,class:`gp-grid-cell-peek`,style:d(T.value)},[(m(),n(_(E.value)))],4))}}),cn={key:1,class:`gp-grid-loading`},ln=c({__name:`GpGrid`,props:{columns:{},dataSource:{},rowData:{},rowHeight:{},headerHeight:{},overscan:{default:3},rowLoading:{},sortingEnabled:{type:Boolean,default:!0},darkMode:{type:Boolean,default:!1},wheelDampening:{default:.1},maxFlingVelocity:{},cellRenderers:{default:()=>({})},editRenderers:{default:()=>({})},headerRenderers:{default:()=>({})},cellRenderer:{},editRenderer:{},headerRenderer:{},initialWidth:{},initialHeight:{},highlighting:{},getRowId:{},onCellValueChanged:{},loadingComponent:{},rowDragEntireRow:{type:Boolean},onRowDragEnd:{},onColumnResized:{},onColumnMoved:{},labels:{}},setup(o,{expose:c}){let l=o,g=h(null),x=h(null),C=t(()=>x.value?.bodyRef??null),w=v(null),T=v(null),E=v(null),O=new j({getCore:()=>w.value,getScrollEl:()=>C.value,isBrowser:typeof window<`u`}),k=h(0),{state:A,applyInstructions:M,reset:N}=we({initialWidth:l.initialWidth,initialHeight:l.initialHeight}),P=t(()=>l.headerHeight??l.rowHeight),F=t(()=>Se(l.labels)),I=t(()=>A.value.columns??l.columns),L=t(()=>I.value.map((e,t)=>({column:e,originalIndex:t})).filter(({column:e})=>!e.hidden)),R=t(()=>z(L.value.map(e=>e.column),A.value.viewportWidth)),B=t(()=>R.value.positions),H=t(()=>R.value.widths),W=t(()=>ue(B.value)),G=t(()=>Array.from(A.value.slots.values())),{handleCellMouseDown:ee,handleCellDoubleClick:te,handleFillHandleMouseDown:ne,handleHeaderClick:re,handleHeaderMouseDown:ie,handleHeaderResizeMouseDown:K,handleKeyDown:ae,handlePaste:oe,handleWheel:se,dragState:q}=Ee(w,C,I,{activeCell:t(()=>A.value.activeCell),selectionRange:t(()=>A.value.selectionRange),editingCell:t(()=>A.value.editingCell),filterPopupOpen:t(()=>A.value.filterPopup?.isOpen??!1),rowHeight:l.rowHeight,headerHeight:P.value,columnPositions:B,columnWidths:H,visibleColumnsWithIndices:L,slots:t(()=>A.value.slots),rowsWrapperOffset:t(()=>A.value.rowsWrapperOffset)}),{fillHandlePosition:ce}=De({activeCell:t(()=>A.value.activeCell),selectionRange:t(()=>A.value.selectionRange),slots:t(()=>A.value.slots),columns:I,visibleColumnsWithIndices:L,columnPositions:B,columnWidths:H,rowHeight:l.rowHeight});function le(){let e=C.value,t=w.value;!e||!t||t.setViewport(e.scrollTop,e.scrollLeft,e.clientWidth,e.clientHeight)}function de(){let e=C.value;e&&(k.value=e.scrollLeft),le()}function fe(e,t){let n=w.value;n&&n.setFilter(e,t)}function pe(){let e=w.value;e&&e.closeFilterPopup()}function J(){w.value?.stopPeek()}let Y=t(()=>{let e=A.value.peekCell;if(!e)return null;let t=I.value[e.col],n=G.value.find(t=>t.rowIndex===e.row);return!t||!n?null:{peek:e,column:t,rowData:n.rowData}});function X(e,t){w.value?.input.handleCellMouseEnter(e,t)}function me(){w.value?.input.handleCellMouseLeave()}function Z(){return l.dataSource??(l.rowData?U(l.rowData):V([]))}function he(e){E.value&&=(E.value(),null),w.value&&w.value.destroy();let t=new D({columns:l.columns,dataSource:e,rowHeight:l.rowHeight,headerHeight:P.value,overscan:l.overscan,maxFlingVelocity:l.maxFlingVelocity,rowLoading:l.rowLoading,sortingEnabled:l.sortingEnabled,highlighting:l.highlighting,getRowId:l.getRowId,onCellValueChanged:l.onCellValueChanged?e=>l.onCellValueChanged?.(e):void 0,rowDragEntireRow:l.rowDragEntireRow??!1,onRowDragEnd:(e,t)=>l.onRowDragEnd?.(e,t),onColumnResized:(e,t)=>l.onColumnResized?.(e,t),onColumnMoved:(e,t)=>l.onColumnMoved?.(e,t)});w.value=t,O.syncCore(),E.value=t.onBatchInstruction(e=>{M(e)}),t.initialize();let n=C.value;n&&t.setViewport(n.scrollTop,n.scrollLeft,n.clientWidth,n.clientHeight)}return f(()=>{let e=Z();T.value=e,he(e),O.attach();let t=C.value;if(t&&typeof ResizeObserver<`u`){let e=new ResizeObserver(()=>{w.value?.setViewport(t.scrollTop,t.scrollLeft,t.clientWidth,t.clientHeight)});e.observe(t),p(()=>{e.disconnect()})}p(()=>{O.detach(),E.value&&=(E.value(),null),w.value&&=(w.value.destroy(),null),T.value&&=(T.value.destroy?.(),null)})}),S([()=>l.dataSource,()=>l.rowData],()=>{l.rowData&&l.rowData.length>1e4&&T.value&&console.warn(`[gp-grid] rowData prop changed with ${l.rowData.length} rows — this triggers a full rebuild. Use useGridData() for efficient updates.`);let e=Z(),t=T.value;t&&t!==e?(t.destroy?.(),T.value=e,w.value?.setDataSource(e)):t||(T.value=e)}),S(()=>l.dataSource,e=>{if(e){let t=e;if(t.subscribe){let e=t.subscribe(()=>{w.value?.refreshFromTransaction()});p(()=>e())}}},{immediate:!0}),S(()=>A.value.pendingScrollTop,e=>{if(e!==null){let t=C.value;t&&(O.stop(),t.scrollTop=e)}},{flush:`post`}),S(()=>l.highlighting,e=>{w.value?.highlight&&e&&w.value.highlight.updateOptions(e)}),c({core:w}),(t,c)=>(m(),i(`div`,{ref_key:`outerContainerRef`,ref:g,class:u([`gp-grid-container`,{"gp-grid-container--dark":o.darkMode}]),style:{width:`100%`,height:`100%`,position:`relative`,display:`flex`,"flex-direction":`column`},tabindex:`0`,onKeydown:c[0]||=(...e)=>b(ae)&&b(ae)(...e),onPaste:c[1]||=(...e)=>b(oe)&&b(oe)(...e)},[s($t,{"header-height":P.value,"scroll-left":k.value,"content-width":b(A).contentWidth,"total-width":W.value,"is-loading":b(A).isLoading,"visible-columns-with-indices":L.value,"column-positions":B.value,"column-widths":H.value,headers:b(A).headers,"sorting-enabled":o.sortingEnabled,"on-header-mouse-down":b(ie),"on-header-resize-mouse-down":b(K),"core-ref":w.value,"outer-container-ref":g.value,"header-renderers":o.headerRenderers??{},"global-header-renderer":o.headerRenderer},null,8,[`header-height`,`scroll-left`,`content-width`,`total-width`,`is-loading`,`visible-columns-with-indices`,`column-positions`,`column-widths`,`headers`,`sorting-enabled`,`on-header-mouse-down`,`on-header-resize-mouse-down`,`core-ref`,`outer-container-ref`,`header-renderers`,`global-header-renderer`]),s(on,{ref_key:`gridBodyComp`,ref:x,"row-height":o.rowHeight,"total-header-height":P.value,"content-width":b(A).contentWidth,"content-height":b(A).contentHeight,"total-width":W.value,"rows-wrapper-offset":b(A).rowsWrapperOffset,"active-cell":b(A).activeCell,"selection-range":b(A).selectionRange,"editing-cell":b(A).editingCell,"hover-position":b(A).hoverPosition,error:b(A).error,"is-loading":b(A).isLoading,"total-rows":b(A).totalRows,labels:F.value,"slots-array":G.value,"visible-columns-with-indices":L.value,"column-positions":B.value,"column-widths":H.value,"fill-handle-position":b(ce),"drag-state":b(q),"on-scroll":de,"on-wheel":b(se),"wheel-dampening":o.wheelDampening,"on-cell-mouse-down":b(ee),"on-cell-double-click":b(te),"on-cell-mouse-enter":X,"on-cell-mouse-leave":me,"on-fill-handle-mouse-down":b(ne),"core-ref":w.value,"cell-renderers":o.cellRenderers??{},"edit-renderers":o.editRenderers??{},"global-cell-renderer":o.cellRenderer,"global-edit-renderer":o.editRenderer},null,8,`row-height.total-header-height.content-width.content-height.total-width.rows-wrapper-offset.active-cell.selection-range.editing-cell.hover-position.error.is-loading.total-rows.labels.slots-array.visible-columns-with-indices.column-positions.column-widths.fill-handle-position.drag-state.on-wheel.wheel-dampening.on-cell-mouse-down.on-cell-double-click.on-fill-handle-mouse-down.core-ref.cell-renderers.edit-renderers.global-cell-renderer.global-edit-renderer`.split(`.`)),r(` Loading overlay - positioned outside scrollable area to avoid Firefox sticky issues `),b(A).isLoading?(m(),i(`div`,{key:0,style:d({position:`absolute`,top:`${P.value}px`,left:0,right:0,bottom:0,zIndex:50,pointerEvents:`none`})},[c[3]||=a(`div`,{class:`gp-grid-loading-overlay`},null,-1),l.loadingComponent?(m(),n(_(l.loadingComponent),{key:0,"is-loading":!0})):(m(),i(`div`,cn,[...c[2]||=[a(`div`,{class:`gp-grid-loading-spinner`},null,-1)]]))],4)):r(`v-if`,!0),r(` Filter Popup `),b(A).filterPopup?.isOpen&&b(A).filterPopup.column?(m(),n(qt,{key:1,column:b(A).filterPopup.column,"col-index":b(A).filterPopup.colIndex,"container-ref":g.value,"distinct-values":b(A).filterPopup.distinctValues,"current-filter":b(A).filterPopup.currentFilter,labels:F.value,onApply:fe,onClose:pe},null,8,[`column`,`col-index`,`container-ref`,`distinct-values`,`current-filter`,`labels`])):r(`v-if`,!0),r(` Cell Peek (read-only multi-line overlay on dblclick of non-editable cell) `),Y.value?(m(),n(sn,{key:2,"peek-cell":Y.value.peek,column:Y.value.column,"row-data":Y.value.rowData,"container-ref":g.value,"cell-renderers":o.cellRenderers??{},"global-cell-renderer":o.cellRenderer,onClose:J},null,8,[`peek-cell`,`column`,`row-data`,`container-ref`,`cell-renderers`,`global-cell-renderer`])):r(`v-if`,!0),r(` Column resize line `),b(q).dragType===`column-resize`&&b(q).columnResize?(m(),i(`div`,{key:3,class:`gp-grid-column-resize-line`,style:d({left:`${(B.value[L.value.findIndex(e=>e.originalIndex===b(q).columnResize.colIndex)]??0)+b(q).columnResize.currentWidth-k.value}px`})},null,4)):r(`v-if`,!0),r(` Column move ghost `),b(q).dragType===`column-move`&&b(q).columnMove?(m(),i(e,{key:4},[a(`div`,{class:`gp-grid-column-move-ghost`,style:d({left:`${b(q).columnMove.currentX-b(q).columnMove.ghostWidth/2}px`,top:`${b(q).columnMove.currentY-b(q).columnMove.ghostHeight/2}px`,width:`${b(q).columnMove.ghostWidth}px`,height:`${b(q).columnMove.ghostHeight}px`})},y(I.value[b(q).columnMove.sourceColIndex]?.headerName??I.value[b(q).columnMove.sourceColIndex]?.field??``),5),b(q).columnMove.dropTargetIndex===null?r(`v-if`,!0):(m(),i(`div`,{key:0,class:`gp-grid-column-drop-indicator`,style:d({left:`${(B.value[b(q).columnMove.dropTargetIndex]??0)-k.value}px`,height:`${P.value}px`})},null,4))],64)):r(`v-if`,!0),r(` Row drag ghost (fixed position, follows cursor) `),b(q).dragType===`row-drag`&&b(q).rowDrag?(m(),i(`div`,{key:5,class:`gp-grid-row-drag-ghost`,style:d({left:`${b(q).rowDrag.currentX+12}px`,top:`${b(q).rowDrag.currentY-o.rowHeight/2}px`,width:`${Math.min(300,W.value)}px`,height:`${o.rowHeight}px`})},null,4)):r(`v-if`,!0)],34))}});function un(e){let n=h(null),r=h(null),i=new j({getCore:()=>r.value,getScrollEl:()=>n.value,isBrowser:typeof window<`u`}),{state:a,applyInstructions:o}=we(),s=t(()=>e.headerHeight??e.rowHeight),c=t(()=>e.columns.map((e,t)=>({column:e,originalIndex:t})).filter(({column:e})=>!e.hidden)),l=t(()=>z(c.value.map(e=>e.column),a.value.viewportWidth)),u=t(()=>l.value.positions),d=t(()=>l.value.widths),m=t(()=>ue(u.value)),g=t(()=>Array.from(a.value.slots.values())),{handleCellMouseDown:_,handleCellDoubleClick:v,handleFillHandleMouseDown:y,handleHeaderClick:b,handleKeyDown:x,handlePaste:C,handleWheel:w,dragState:T}=Ee(r,n,t(()=>e.columns),{activeCell:t(()=>a.value.activeCell),selectionRange:t(()=>a.value.selectionRange),editingCell:t(()=>a.value.editingCell),filterPopupOpen:t(()=>a.value.filterPopup?.isOpen??!1),rowHeight:e.rowHeight,headerHeight:s.value,columnPositions:u,columnWidths:d,visibleColumnsWithIndices:c,slots:t(()=>a.value.slots),rowsWrapperOffset:t(()=>a.value.rowsWrapperOffset)}),E=()=>{let e=n.value,t=r.value;!e||!t||t.setViewport(e.scrollTop,e.scrollLeft,e.clientWidth,e.clientHeight)},O=(e,t)=>{let n=r.value;n&&n.setFilter(e,t)},k=()=>{let e=r.value;e&&e.closeFilterPopup()},A=(e,t)=>{r.value?.input.handleCellMouseEnter(e,t)},M=()=>{r.value?.input.handleCellMouseLeave()};f(()=>{let t=e.dataSource??(e.rowData?U(e.rowData):V([])),a=new D({columns:e.columns,dataSource:t,rowHeight:e.rowHeight,headerHeight:s.value,overscan:e.overscan??3,maxFlingVelocity:e.maxFlingVelocity,rowLoading:e.rowLoading,sortingEnabled:e.sortingEnabled??!0,highlighting:e.highlighting,getRowId:e.getRowId,onCellValueChanged:e.onCellValueChanged?t=>e.onCellValueChanged?.(t):void 0});r.value=a,i.syncCore();let c=a.onBatchInstruction(e=>{o(e)});a.initialize(),i.attach(),p(()=>i.detach());let l=n.value;if(l){a.setViewport(l.scrollTop,l.scrollLeft,l.clientWidth,l.clientHeight);let e=new ResizeObserver(()=>{a.setViewport(l.scrollTop,l.scrollLeft,l.clientWidth,l.clientHeight)});e.observe(l),p(()=>{e.disconnect(),c(),r.value=null})}}),S(()=>a.value.pendingScrollTop,e=>{if(e!==null){let t=n.value;t&&(i.stop(),t.scrollTop=e)}},{flush:`post`}),S(()=>e.dataSource,e=>{if(e){let t=e;if(t.subscribe){let e=t.subscribe(()=>{r.value?.refresh()});p(()=>e())}}},{immediate:!0}),S(()=>e.highlighting,e=>{r.value?.highlight&&e&&r.value.highlight.updateOptions(e)});let{fillHandlePosition:N}=De({activeCell:t(()=>a.value.activeCell),selectionRange:t(()=>a.value.selectionRange),slots:t(()=>a.value.slots),columns:t(()=>e.columns),visibleColumnsWithIndices:c,columnPositions:u,columnWidths:d,rowHeight:e.rowHeight});return{containerRef:n,coreRef:r,state:a,slotsArray:g,totalHeaderHeight:s,columnPositions:u,columnWidths:d,totalWidth:m,fillHandlePosition:N,handleScroll:E,handleCellMouseDown:_,handleCellDoubleClick:v,handleFillHandleMouseDown:y,handleHeaderClick:b,handleKeyDown:x,handlePaste:C,handleWheel:w,handleFilterApply:O,handleFilterPopupClose:k,handleCellMouseEnter:A,handleCellMouseLeave:M,dragState:T,isCellSelected:ge,isCellActive:J,isCellEditing:X,isCellInFillPreview:Z,buildCellClasses:F}}const dn=(e,t)=>{let n=te(e,{getRowId:t.getRowId,debounceMs:t.debounceMs,useWorker:t.useWorker,parallelSort:t.parallelSort});return p(()=>{n.clear()}),{dataSource:n,updateRow:n.updateRow,addRows:n.addRows,removeRows:n.removeRows,updateCell:n.updateCell,clear:n.clear,getRowById:n.getRowById,getTotalRowCount:n.getTotalRowCount,flushTransactions:n.flushTransactions}};export{ln as GpGrid,ln as default,E as GridCore,P as buildCellClasses,I as calculateColumnPositions,B as createClientDataSource,H as createDataSourceFromArray,W as createInitialState,ee as createMutableClientDataSource,ne as createServerDataSource,re as findColumnAtX,se as getCellValue,le as getTotalWidth,pe as isCellActive,Y as isCellEditing,me as isCellInFillPreview,he as isCellSelected,_e as isLegacyColumnFilterModel,ve as isRowVisible,be as normalizeColumnFilterModel,en as renderCell,tn as renderEditCell,Xt as renderHeader,Te as useAutoScroll,De as useFillHandle,Q as useFilterConditions,Oe as useFilterPopup,un as useGpGrid,dn as useGridData,we as useGridState,Ee as useInputHandler};
|
package/dist/styles.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
.gp-grid-container{--gp-grid-bg:#fff;--gp-grid-bg-alt:#f8f9fa;--gp-grid-text:#212529;--gp-grid-text-secondary:#6c757d;--gp-grid-text-muted:#adb5bd;--gp-grid-border:#dee2e6;--gp-grid-border-light:#e9ecef;--gp-grid-header-bg:#f1f3f5;--gp-grid-header-text:#212529;--gp-grid-header-z-index:10;--gp-grid-primary:#228be6;--gp-grid-primary-light:#e7f5ff;--gp-grid-primary-border:#74c0fc;--gp-grid-hover:#f1f3f5;--gp-grid-filter-bg:#f8f9fa;--gp-grid-input-bg:#fff;--gp-grid-input-border:#ced4da;--gp-grid-error-bg:#fff5f5;--gp-grid-error-text:#c92a2a;--gp-grid-loading-bg:#fffffff2;--gp-grid-loading-text:#495057;--gp-grid-scrollbar-track:#f1f3f5;--gp-grid-scrollbar-thumb:#ced4da;--gp-grid-scrollbar-thumb-hover:#adb5bd}.gp-grid-container--dark{--gp-grid-bg:#1a1b1e;--gp-grid-bg-alt:#25262b;--gp-grid-text:#c1c2c5;--gp-grid-text-secondary:#909296;--gp-grid-text-muted:#5c5f66;--gp-grid-border:#373a40;--gp-grid-border-light:#2c2e33;--gp-grid-header-bg:#25262b;--gp-grid-header-text:#c1c2c5;--gp-grid-header-z-index:10;--gp-grid-primary:#339af0;--gp-grid-primary-light:#1c3d5a;--gp-grid-primary-border:#1c7ed6;--gp-grid-hover:#2c2e33;--gp-grid-filter-bg:#25262b;--gp-grid-input-bg:#1a1b1e;--gp-grid-input-border:#373a40;--gp-grid-error-bg:#2c1a1a;--gp-grid-error-text:#ff6b6b;--gp-grid-loading-bg:#1a1b1ef2;--gp-grid-loading-text:#c1c2c5;--gp-grid-scrollbar-track:#25262b;--gp-grid-scrollbar-thumb:#373a40;--gp-grid-scrollbar-thumb-hover:#4a4d52}.gp-grid-container{-webkit-user-select:none;user-select:none;outline:none}:where(.gp-grid-container){color:var(--gp-grid-text);background-color:var(--gp-grid-bg);border:1px solid var(--gp-grid-border);border-radius:6px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;font-size:13px;line-height:1.5}.gp-grid-container:focus{outline:none}:where(.gp-grid-container:focus){border-color:var(--gp-grid-primary)}.gp-grid-header{z-index:11;flex-shrink:0;position:sticky;top:0;left:0;overflow:hidden}:where(.gp-grid-header){background-color:var(--gp-grid-header-bg);border-bottom:1px solid var(--gp-grid-border)}.gp-grid-container .gp-grid-header-cell{box-sizing:border-box;user-select:none;touch-action:none;display:flex;position:absolute;top:0}:where(.gp-grid-header-cell){border-right:1px solid var(--gp-grid-border);letter-spacing:.5px;color:var(--gp-grid-header-text);cursor:pointer;background-color:#0000;align-items:center;padding:0 12px;font-size:12px;font-weight:600;transition:background-color .1s}:where(.gp-grid-header-cell:hover){background-color:var(--gp-grid-hover)}:where(.gp-grid-header-cell:active){background-color:var(--gp-grid-border-light)}.gp-grid-container .gp-grid-header-text{text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}:where(.gp-grid-header-text){color:var(--gp-grid-header-text)}.gp-grid-header-icons{align-items:center;gap:4px;margin-left:auto;display:flex}.gp-grid-sort-arrows{flex-direction:row;align-items:center;gap:2px;margin-left:6px;display:flex}.gp-grid-sort-arrows-stack{flex-direction:column;align-items:center;gap:2px;display:flex}:where(.gp-grid-sort-arrow-up),:where(.gp-grid-sort-arrow-down){opacity:.35;color:var(--gp-grid-text);transition:opacity .15s,color .15s}:where(.gp-grid-sort-arrow-up.active),:where(.gp-grid-sort-arrow-down.active){opacity:1;color:var(--gp-grid-primary)}:where(.gp-grid-sort-index){color:var(--gp-grid-primary);font-size:9px;font-weight:600}.gp-grid-filter-icon{justify-content:center;align-items:center;width:20px;height:20px;display:flex}:where(.gp-grid-filter-icon){cursor:pointer;color:var(--gp-grid-text-secondary);border-radius:4px;margin-left:2px;transition:background-color .15s,color .15s}:where(.gp-grid-filter-icon:hover){background-color:var(--gp-grid-hover);color:var(--gp-grid-primary)}:where(.gp-grid-filter-icon.active){color:var(--gp-grid-primary);background-color:var(--gp-grid-primary-light)}@media (pointer:coarse) and (hover:none) and (width<=768px){.gp-grid-filter-icon{width:44px;min-width:44px;height:44px;min-height:44px}:where(.gp-grid-filter-icon){margin-left:0}.gp-grid-filter-icon svg{width:20px;height:20px}}.gp-grid-header--loading .gp-grid-header-cell{pointer-events:none}:where(.gp-grid-header--loading .gp-grid-header-cell){opacity:.6;cursor:default}.gp-grid-header-resize-handle{cursor:col-resize;z-index:10;touch-action:none;width:6px;height:100%;position:absolute;top:0;right:-3px}:where(.gp-grid-header-resize-handle:hover),:where(.gp-grid-header-resize-handle--active){background-color:var(--gp-grid-primary);opacity:.4}@media (pointer:coarse) and (hover:none) and (width<=768px){.gp-grid-header-resize-handle{width:24px;right:-12px}}.gp-grid-column-resize-line{z-index:1000;pointer-events:none;width:2px;height:100%;position:absolute;top:0}:where(.gp-grid-column-resize-line){background-color:var(--gp-grid-primary)}.gp-grid-column-move-ghost{pointer-events:none;z-index:2000;box-sizing:border-box;white-space:nowrap;text-overflow:ellipsis;align-items:center;display:flex;position:fixed;overflow:hidden}:where(.gp-grid-column-move-ghost){opacity:.7;background-color:var(--gp-grid-header-bg);border:2px solid var(--gp-grid-primary);letter-spacing:.5px;color:var(--gp-grid-header-text);border-radius:4px;padding:0 12px;font-size:12px;font-weight:600;box-shadow:0 4px 12px #00000026}.gp-grid-column-drop-indicator{z-index:1000;pointer-events:none;width:3px;height:100%;position:absolute;top:0;left:0}:where(.gp-grid-column-drop-indicator){background-color:var(--gp-grid-primary);border-radius:2px}.gp-grid-rows-wrapper{z-index:1;will-change:transform;position:absolute;top:0;left:0}.gp-grid-row{position:absolute;top:0;left:0}:where(.gp-grid-row){background-color:var(--gp-grid-bg)}.gp-grid-cell{box-sizing:border-box;white-space:nowrap;-webkit-user-select:none;user-select:none;display:flex;position:absolute;top:0;overflow:hidden}.gp-grid-cell-content{text-overflow:ellipsis;white-space:nowrap;flex:auto;min-width:0;overflow:hidden}.gp-grid-cell--wrap{align-items:flex-start}.gp-grid-cell--wrap .gp-grid-cell-content{white-space:normal;overflow-wrap:anywhere;text-overflow:clip}:where(.gp-grid-cell){cursor:cell;color:var(--gp-grid-text);border-right:1px solid var(--gp-grid-border-light);border-bottom:1px solid var(--gp-grid-border-light);background-color:#0000;align-items:center;padding:0 12px}.gp-grid-cell--active{z-index:5;outline:none}:where(.gp-grid-cell--active){background-color:var(--gp-grid-primary-light);border:2px solid var(--gp-grid-primary);padding:0 11px}:where(.gp-grid-cell--selected){background-color:var(--gp-grid-primary-light)}.gp-grid-cell--editing{z-index:10}:where(.gp-grid-cell--editing){background-color:var(--gp-grid-bg);border:2px solid var(--gp-grid-primary);padding:0}.gp-grid-fill-handle{z-index:11;pointer-events:auto;box-sizing:border-box;touch-action:none;width:8px;height:8px;position:absolute}:where(.gp-grid-fill-handle){background-color:var(--gp-grid-primary);border:2px solid var(--gp-grid-bg);cursor:crosshair;border-radius:1px}:where(.gp-grid-fill-handle:hover){transform:scale(1.2)}@media (pointer:coarse) and (hover:none) and (width<=768px){.gp-grid-fill-handle{width:24px;height:24px}:where(.gp-grid-fill-handle){border-width:3px;border-radius:3px}}:where(.gp-grid-cell.gp-grid-cell--fill-preview){background-color:var(--gp-grid-primary-light);border:1px dashed var(--gp-grid-primary)}.gp-grid-edit-input{width:100%;height:100%}:where(.gp-grid-edit-input){font-family:inherit;font-size:inherit;color:var(--gp-grid-text);background-color:#0000;border:none;padding:0 11px}.gp-grid-edit-input:focus{outline:none}.gp-grid-cell-peek{z-index:20;box-sizing:border-box;max-height:320px;position:absolute;overflow:auto}:where(.gp-grid-cell-peek){background-color:var(--gp-grid-bg);color:var(--gp-grid-text);border:2px solid var(--gp-grid-primary);font-family:inherit;font-size:inherit;white-space:pre-wrap;overflow-wrap:anywhere;cursor:text;-webkit-user-select:text;user-select:text;border-radius:3px;padding:8px 11px;line-height:1.4;box-shadow:0 4px 12px #00000026}.gp-grid-cell-peek .gp-grid-cell-content{white-space:inherit;text-overflow:clip;overflow:visible}.gp-grid-loading-anchor{z-index:900;pointer-events:none;height:0;position:sticky;top:0;left:0;overflow:visible}.gp-grid-loading-overlay{pointer-events:none;width:100%;height:100%;position:absolute;top:0;left:0}:where(.gp-grid-loading-overlay){background-color:var(--gp-grid-loading-overlay-bg,#fff6)}:where(.gp-grid-container--dark .gp-grid-loading-overlay){background-color:var(--gp-grid-loading-overlay-bg,#0000004d)}.gp-grid-loading{z-index:1000;pointer-events:auto;display:flex;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}:where(.gp-grid-loading){background-color:var(--gp-grid-loading-bg);color:var(--gp-grid-loading-text);border:1px solid var(--gp-grid-border);border-radius:6px;align-items:center;gap:10px;padding:12px 20px;font-size:13px;font-weight:500}.gp-grid-loading-spinner{width:16px;height:16px;animation:.7s linear infinite gp-grid-spin}:where(.gp-grid-loading-spinner){border:2px solid var(--gp-grid-border);border-top-color:var(--gp-grid-primary);border-radius:50%}@keyframes gp-grid-spin{to{transform:rotate(360deg)}}.gp-grid-error{z-index:1000;-webkit-user-select:text;user-select:text;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}:where(.gp-grid-error){background-color:var(--gp-grid-error-bg);color:var(--gp-grid-error-text);border:1px solid var(--gp-grid-error-text);text-align:center;cursor:text;border-radius:6px;max-width:80%;padding:12px 20px;font-size:13px;font-weight:500}.gp-grid-empty{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}:where(.gp-grid-empty){color:var(--gp-grid-text-muted);text-align:center;font-size:14px}.gp-grid-container::-webkit-scrollbar{width:8px;height:8px}:where(.gp-grid-container)::-webkit-scrollbar-track{background-color:var(--gp-grid-scrollbar-track)}:where(.gp-grid-container)::-webkit-scrollbar-thumb{background-color:var(--gp-grid-scrollbar-thumb);border-radius:4px}:where(.gp-grid-container)::-webkit-scrollbar-thumb:hover{background-color:var(--gp-grid-scrollbar-thumb-hover)}:where(.gp-grid-container)::-webkit-scrollbar-corner{background-color:var(--gp-grid-scrollbar-track)}.gp-grid-filter-popup{flex-direction:column;max-width:min(360px,100vw - 16px);max-height:400px;display:flex}:where(.gp-grid-filter-popup){background-color:var(--gp-grid-bg);border:1px solid var(--gp-grid-border);border-radius:6px;font-size:13px;box-shadow:0 4px 12px #00000026}:where(.gp-grid-filter-header){border-bottom:1px solid var(--gp-grid-border-light);color:var(--gp-grid-header-text);padding:10px 12px;font-weight:600}.gp-grid-filter-content{flex-direction:column;min-height:0;display:flex;overflow-y:auto}:where(.gp-grid-filter-content){gap:10px;padding:10px 12px}.gp-grid-filter-mode-toggle{display:flex}:where(.gp-grid-filter-mode-toggle){background-color:var(--gp-grid-bg-alt);border-radius:4px;gap:4px;padding:2px}.gp-grid-filter-mode-toggle button{flex:1}:where(.gp-grid-filter-mode-toggle button){color:var(--gp-grid-text-secondary);cursor:pointer;background-color:#0000;border:none;border-radius:3px;padding:6px 10px;font-family:inherit;font-size:11px;transition:background-color .15s,color .15s}:where(.gp-grid-filter-mode-toggle button:hover){color:var(--gp-grid-text)}:where(.gp-grid-filter-mode-toggle button.active){background-color:var(--gp-grid-bg);color:var(--gp-grid-text);box-shadow:0 1px 2px #0000001a}:where(.gp-grid-filter-info){color:var(--gp-grid-text-secondary);background-color:var(--gp-grid-bg-alt);border-radius:4px;padding:6px 8px;font-size:11px}.gp-grid-filter-search{box-sizing:border-box;width:100%;height:30px}:where(.gp-grid-filter-search){border:1px solid var(--gp-grid-input-border);background-color:var(--gp-grid-input-bg);color:var(--gp-grid-text);border-radius:4px;padding:0 10px;font-family:inherit;font-size:12px}:where(.gp-grid-filter-search:focus){border-color:var(--gp-grid-primary);outline:none}.gp-grid-filter-actions{display:flex}:where(.gp-grid-filter-actions){gap:8px}.gp-grid-filter-actions button{flex:1}:where(.gp-grid-filter-actions button){border:1px solid var(--gp-grid-input-border);background-color:var(--gp-grid-bg);color:var(--gp-grid-text);cursor:pointer;border-radius:3px;padding:4px 8px;font-family:inherit;font-size:11px}:where(.gp-grid-filter-actions button:hover:not(:disabled)){background-color:var(--gp-grid-hover)}:where(.gp-grid-filter-actions button:disabled){opacity:.5;cursor:not-allowed}.gp-grid-filter-list{flex-direction:column;max-height:200px;display:flex;overflow-y:auto}:where(.gp-grid-filter-list){border:1px solid var(--gp-grid-border-light);border-radius:4px;gap:4px;padding:6px}.gp-grid-filter-option{align-items:center;display:flex}:where(.gp-grid-filter-option){cursor:pointer;border-radius:3px;gap:8px;padding:4px 6px}:where(.gp-grid-filter-option:hover){background-color:var(--gp-grid-hover)}.gp-grid-filter-option input[type=checkbox]{margin:0}:where(.gp-grid-filter-option input[type=checkbox]){cursor:pointer}.gp-grid-filter-option span{text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}:where(.gp-grid-filter-blank){color:var(--gp-grid-text-muted);font-style:italic}.gp-grid-filter-condition{flex-direction:column;display:flex}:where(.gp-grid-filter-condition){gap:6px}.gp-grid-filter-row{align-items:center;display:flex}:where(.gp-grid-filter-row){gap:6px}.gp-grid-filter-row select{height:30px}:where(.gp-grid-filter-row select){border:1px solid var(--gp-grid-input-border);background-color:var(--gp-grid-input-bg);color:var(--gp-grid-text);cursor:pointer;border-radius:4px;padding:0 6px;font-family:inherit;font-size:12px}.gp-grid-filter-row input[type=number],.gp-grid-filter-row input[type=date],.gp-grid-filter-row input[type=text],.gp-grid-filter-text-input{box-sizing:border-box;flex:1;min-width:0;height:30px}:where(.gp-grid-filter-row input[type=number]),:where(.gp-grid-filter-row input[type=date]),:where(.gp-grid-filter-row input[type=text]),:where(.gp-grid-filter-text-input){border:1px solid var(--gp-grid-input-border);background-color:var(--gp-grid-input-bg);color:var(--gp-grid-text);border-radius:4px;padding:0 8px;font-family:inherit;font-size:12px}:where(.gp-grid-filter-row input:focus){border-color:var(--gp-grid-primary);outline:none}:where(.gp-grid-filter-to){color:var(--gp-grid-text-secondary);font-size:11px}.gp-grid-filter-remove{width:24px;height:24px}:where(.gp-grid-filter-remove){color:var(--gp-grid-text-muted);cursor:pointer;background-color:#0000;border:none;border-radius:3px;padding:0;font-size:16px;line-height:1}:where(.gp-grid-filter-remove:hover){background-color:var(--gp-grid-error-bg);color:var(--gp-grid-error-text)}.gp-grid-filter-combination{display:flex}:where(.gp-grid-filter-combination){gap:4px;margin-bottom:4px}.gp-grid-filter-combination button{flex:1}:where(.gp-grid-filter-combination button){border:1px solid var(--gp-grid-input-border);background-color:var(--gp-grid-bg);color:var(--gp-grid-text-secondary);cursor:pointer;border-radius:3px;padding:4px 8px;font-family:inherit;font-size:10px}:where(.gp-grid-filter-combination button.active){background-color:var(--gp-grid-primary);border-color:var(--gp-grid-primary);color:#fff}.gp-grid-filter-add{width:100%}:where(.gp-grid-filter-add){border:1px dashed var(--gp-grid-border);color:var(--gp-grid-text-secondary);cursor:pointer;background-color:#0000;border-radius:4px;padding:6px;font-family:inherit;font-size:11px}:where(.gp-grid-filter-add:hover){background-color:var(--gp-grid-hover);border-color:var(--gp-grid-primary);color:var(--gp-grid-primary)}.gp-grid-filter-buttons{display:flex}:where(.gp-grid-filter-buttons){border-top:1px solid var(--gp-grid-border-light);gap:8px;padding-top:8px}.gp-grid-filter-btn-clear,.gp-grid-filter-btn-apply{flex:1}:where(.gp-grid-filter-btn-clear),:where(.gp-grid-filter-btn-apply){cursor:pointer;border-radius:4px;padding:8px 12px;font-family:inherit;font-size:12px}:where(.gp-grid-filter-btn-clear){border:1px solid var(--gp-grid-input-border);background-color:var(--gp-grid-bg);color:var(--gp-grid-text)}:where(.gp-grid-filter-btn-clear:hover){background-color:var(--gp-grid-hover)}:where(.gp-grid-filter-btn-apply){border:1px solid var(--gp-grid-primary);background-color:var(--gp-grid-primary);color:#fff}:where(.gp-grid-filter-btn-apply:hover){opacity:.9}.gp-grid-cell--row-drag-handle{touch-action:none}:where(.gp-grid-cell--row-drag-handle){cursor:grab}:where(.gp-grid-cell--row-drag-handle:active){cursor:grabbing}.gp-grid-row-drag-icon{justify-content:center;align-items:center;width:100%;height:100%;display:flex}:where(.gp-grid-row-drag-icon){color:var(--gp-grid-text-secondary)}.gp-grid-row-drag-icon svg{width:16px;height:16px}.gp-grid-row-drag-ghost{pointer-events:none;z-index:2000;box-sizing:border-box;position:fixed;overflow:hidden}:where(.gp-grid-row-drag-ghost){opacity:.8;background-color:var(--gp-grid-bg,#fff);border:2px solid var(--gp-grid-primary);border-radius:4px;box-shadow:0 4px 12px #00000026}.gp-grid-row-drop-indicator{z-index:1000;pointer-events:none;width:100%;height:3px;position:absolute;left:0}:where(.gp-grid-row-drop-indicator){background-color:var(--gp-grid-primary);border-radius:2px}
|
|
1
|
+
.gp-grid-container{--gp-grid-bg:#fff;--gp-grid-bg-alt:#f8f9fa;--gp-grid-text:#212529;--gp-grid-text-secondary:#6c757d;--gp-grid-text-muted:#adb5bd;--gp-grid-border:#dee2e6;--gp-grid-border-light:#e9ecef;--gp-grid-header-bg:#f1f3f5;--gp-grid-header-text:#212529;--gp-grid-header-z-index:10;--gp-grid-primary:#228be6;--gp-grid-primary-light:#e7f5ff;--gp-grid-primary-border:#74c0fc;--gp-grid-hover:#f1f3f5;--gp-grid-filter-bg:#f8f9fa;--gp-grid-input-bg:#fff;--gp-grid-input-border:#ced4da;--gp-grid-error-bg:#fff5f5;--gp-grid-error-text:#c92a2a;--gp-grid-loading-bg:#fffffff2;--gp-grid-loading-text:#495057;--gp-grid-scrollbar-track:#f1f3f5;--gp-grid-scrollbar-thumb:#ced4da;--gp-grid-scrollbar-thumb-hover:#adb5bd}.gp-grid-container--dark{--gp-grid-bg:#1a1b1e;--gp-grid-bg-alt:#25262b;--gp-grid-text:#c1c2c5;--gp-grid-text-secondary:#909296;--gp-grid-text-muted:#5c5f66;--gp-grid-border:#373a40;--gp-grid-border-light:#2c2e33;--gp-grid-header-bg:#25262b;--gp-grid-header-text:#c1c2c5;--gp-grid-header-z-index:10;--gp-grid-primary:#339af0;--gp-grid-primary-light:#1c3d5a;--gp-grid-primary-border:#1c7ed6;--gp-grid-hover:#2c2e33;--gp-grid-filter-bg:#25262b;--gp-grid-input-bg:#1a1b1e;--gp-grid-input-border:#373a40;--gp-grid-error-bg:#2c1a1a;--gp-grid-error-text:#ff6b6b;--gp-grid-loading-bg:#1a1b1ef2;--gp-grid-loading-text:#c1c2c5;--gp-grid-scrollbar-track:#25262b;--gp-grid-scrollbar-thumb:#373a40;--gp-grid-scrollbar-thumb-hover:#4a4d52}.gp-grid-container{-webkit-user-select:none;user-select:none;outline:none}:where(.gp-grid-container){color:var(--gp-grid-text);background-color:var(--gp-grid-bg);border:1px solid var(--gp-grid-border);border-radius:6px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;font-size:13px;line-height:1.5}.gp-grid-container:focus{outline:none}:where(.gp-grid-container:focus){border-color:var(--gp-grid-primary)}.gp-grid-header{z-index:11;flex-shrink:0;position:sticky;top:0;left:0;overflow:hidden}:where(.gp-grid-header){background-color:var(--gp-grid-header-bg);border-bottom:1px solid var(--gp-grid-border)}.gp-grid-container .gp-grid-header-cell{box-sizing:border-box;user-select:none;touch-action:none;display:flex;position:absolute;top:0}:where(.gp-grid-header-cell){border-right:1px solid var(--gp-grid-border);letter-spacing:.5px;color:var(--gp-grid-header-text);cursor:pointer;background-color:#0000;align-items:center;padding:0 12px;font-size:12px;font-weight:600;transition:background-color .1s}:where(.gp-grid-header-cell:hover){background-color:var(--gp-grid-hover)}:where(.gp-grid-header-cell:active){background-color:var(--gp-grid-border-light)}.gp-grid-container .gp-grid-header-text{text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}:where(.gp-grid-header-text){color:var(--gp-grid-header-text)}.gp-grid-header-icons{align-items:center;gap:4px;margin-left:auto;display:flex}.gp-grid-sort-arrows{flex-direction:row;align-items:center;gap:2px;margin-left:6px;display:flex}.gp-grid-sort-arrows-stack{flex-direction:column;align-items:center;gap:2px;display:flex}:where(.gp-grid-sort-arrow-up),:where(.gp-grid-sort-arrow-down){opacity:.35;color:var(--gp-grid-text);transition:opacity .15s,color .15s}:where(.gp-grid-sort-arrow-up.active),:where(.gp-grid-sort-arrow-down.active){opacity:1;color:var(--gp-grid-primary)}:where(.gp-grid-sort-index){color:var(--gp-grid-primary);font-size:9px;font-weight:600}.gp-grid-filter-icon{justify-content:center;align-items:center;width:20px;height:20px;display:flex}:where(.gp-grid-filter-icon){cursor:pointer;color:var(--gp-grid-text-secondary);border-radius:4px;margin-left:2px;transition:background-color .15s,color .15s}:where(.gp-grid-filter-icon:hover){background-color:var(--gp-grid-hover);color:var(--gp-grid-primary)}:where(.gp-grid-filter-icon.active){color:var(--gp-grid-primary);background-color:var(--gp-grid-primary-light)}@media (pointer:coarse) and (hover:none) and (width<=768px){.gp-grid-filter-icon{width:44px;min-width:44px;height:44px;min-height:44px}:where(.gp-grid-filter-icon){margin-left:0}.gp-grid-filter-icon svg{width:20px;height:20px}}.gp-grid-header--loading .gp-grid-header-cell{pointer-events:none}:where(.gp-grid-header--loading .gp-grid-header-cell){opacity:.6;cursor:default}.gp-grid-header-resize-handle{cursor:col-resize;z-index:10;touch-action:none;width:6px;height:100%;position:absolute;top:0;right:-3px}:where(.gp-grid-header-resize-handle:hover),:where(.gp-grid-header-resize-handle--active){background-color:var(--gp-grid-primary);opacity:.4}@media (pointer:coarse) and (hover:none) and (width<=768px){.gp-grid-header-resize-handle{width:24px;right:-12px}}.gp-grid-column-resize-line{z-index:1000;pointer-events:none;width:2px;height:100%;position:absolute;top:0}:where(.gp-grid-column-resize-line){background-color:var(--gp-grid-primary)}.gp-grid-column-move-ghost{pointer-events:none;z-index:2000;box-sizing:border-box;white-space:nowrap;text-overflow:ellipsis;align-items:center;display:flex;position:fixed;overflow:hidden}:where(.gp-grid-column-move-ghost){opacity:.7;background-color:var(--gp-grid-header-bg);border:2px solid var(--gp-grid-primary);letter-spacing:.5px;color:var(--gp-grid-header-text);border-radius:4px;padding:0 12px;font-size:12px;font-weight:600;box-shadow:0 4px 12px #00000026}.gp-grid-column-drop-indicator{z-index:1000;pointer-events:none;width:3px;height:100%;position:absolute;top:0;left:0}:where(.gp-grid-column-drop-indicator){background-color:var(--gp-grid-primary);border-radius:2px}.gp-grid-rows-wrapper{z-index:1;will-change:transform;position:absolute;top:0;left:0}.gp-grid-row{position:absolute;top:0;left:0}:where(.gp-grid-row){background-color:var(--gp-grid-bg)}.gp-grid-cell{box-sizing:border-box;white-space:nowrap;-webkit-user-select:none;user-select:none;display:flex;position:absolute;top:0;overflow:hidden}.gp-grid-cell-content{text-overflow:ellipsis;white-space:nowrap;flex:auto;min-width:0;overflow:hidden}.gp-grid-cell--wrap{align-items:flex-start}.gp-grid-cell--wrap .gp-grid-cell-content{white-space:normal;overflow-wrap:anywhere;text-overflow:clip}:where(.gp-grid-cell){cursor:cell;color:var(--gp-grid-text);border-right:1px solid var(--gp-grid-border-light);border-bottom:1px solid var(--gp-grid-border-light);background-color:#0000;align-items:center;padding:0 12px}.gp-grid-cell--active{z-index:5;outline:none}:where(.gp-grid-cell--active){background-color:var(--gp-grid-primary-light);border:2px solid var(--gp-grid-primary);padding:0 11px}:where(.gp-grid-cell--selected){background-color:var(--gp-grid-primary-light)}.gp-grid-cell--editing{z-index:10}:where(.gp-grid-cell--editing){background-color:var(--gp-grid-bg);border:2px solid var(--gp-grid-primary);padding:0}.gp-grid-fill-handle{z-index:11;pointer-events:auto;box-sizing:border-box;touch-action:none;width:8px;height:8px;position:absolute}:where(.gp-grid-fill-handle){background-color:var(--gp-grid-primary);border:2px solid var(--gp-grid-bg);cursor:crosshair;border-radius:1px}:where(.gp-grid-fill-handle:hover){transform:scale(1.2)}@media (pointer:coarse) and (hover:none) and (width<=768px){.gp-grid-fill-handle{width:24px;height:24px}:where(.gp-grid-fill-handle){border-width:3px;border-radius:3px}}:where(.gp-grid-cell.gp-grid-cell--fill-preview){background-color:var(--gp-grid-primary-light);border:1px dashed var(--gp-grid-primary)}.gp-grid-edit-input{width:100%;height:100%}:where(.gp-grid-edit-input){font-family:inherit;font-size:inherit;color:var(--gp-grid-text);background-color:#0000;border:none;padding:0 11px}.gp-grid-edit-input:focus{outline:none}.gp-grid-cell-peek{z-index:20;box-sizing:border-box;max-height:320px;position:absolute;overflow:auto}:where(.gp-grid-cell-peek){background-color:var(--gp-grid-bg);color:var(--gp-grid-text);border:2px solid var(--gp-grid-primary);font-family:inherit;font-size:inherit;white-space:pre-wrap;overflow-wrap:anywhere;cursor:text;-webkit-user-select:text;user-select:text;border-radius:3px;padding:8px 11px;line-height:1.4;box-shadow:0 4px 12px #00000026}.gp-grid-cell-peek .gp-grid-cell-content{white-space:inherit;text-overflow:clip;overflow:visible}.gp-grid-loading-anchor{z-index:900;pointer-events:none;height:0;position:sticky;top:0;left:0;overflow:visible}.gp-grid-loading-overlay{pointer-events:none;width:100%;height:100%;position:absolute;top:0;left:0}:where(.gp-grid-loading-overlay){background-color:var(--gp-grid-loading-overlay-bg,#fff6)}:where(.gp-grid-container--dark .gp-grid-loading-overlay){background-color:var(--gp-grid-loading-overlay-bg,#0000004d)}.gp-grid-loading{z-index:1000;pointer-events:auto;display:flex;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}:where(.gp-grid-loading){background-color:var(--gp-grid-loading-bg);color:var(--gp-grid-loading-text);border:1px solid var(--gp-grid-border);border-radius:6px;align-items:center;gap:10px;padding:12px 20px;font-size:13px;font-weight:500}.gp-grid-loading-spinner{width:16px;height:16px;animation:.7s linear infinite gp-grid-spin}:where(.gp-grid-loading-spinner){border:2px solid var(--gp-grid-border);border-top-color:var(--gp-grid-primary);border-radius:50%}@keyframes gp-grid-spin{to{transform:rotate(360deg)}}.gp-grid-error{z-index:1000;-webkit-user-select:text;user-select:text;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}:where(.gp-grid-error){background-color:var(--gp-grid-error-bg);color:var(--gp-grid-error-text);border:1px solid var(--gp-grid-error-text);text-align:center;cursor:text;border-radius:6px;max-width:80%;padding:12px 20px;font-size:13px;font-weight:500}.gp-grid-empty{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}:where(.gp-grid-empty){color:var(--gp-grid-text-muted);text-align:center;font-size:14px}.gp-grid-container::-webkit-scrollbar{width:8px;height:8px}:where(.gp-grid-container)::-webkit-scrollbar-track{background-color:var(--gp-grid-scrollbar-track)}:where(.gp-grid-container)::-webkit-scrollbar-thumb{background-color:var(--gp-grid-scrollbar-thumb);border-radius:4px}:where(.gp-grid-container)::-webkit-scrollbar-thumb:hover{background-color:var(--gp-grid-scrollbar-thumb-hover)}:where(.gp-grid-container)::-webkit-scrollbar-corner{background-color:var(--gp-grid-scrollbar-track)}.gp-grid-filter-popup{flex-direction:column;max-width:min(360px,100vw - 16px);max-height:400px;display:flex}:where(.gp-grid-filter-popup){background-color:var(--gp-grid-bg);border:1px solid var(--gp-grid-border);border-radius:6px;font-size:13px;box-shadow:0 4px 12px #00000026}:where(.gp-grid-filter-header){border-bottom:1px solid var(--gp-grid-border-light);color:var(--gp-grid-header-text);padding:10px 12px;font-weight:600}.gp-grid-filter-content{flex-direction:column;min-height:0;display:flex;overflow-y:auto}:where(.gp-grid-filter-content){gap:10px;padding:10px 12px}.gp-grid-filter-mode-toggle{display:flex}:where(.gp-grid-filter-mode-toggle){gap:4px}.gp-grid-filter-mode-toggle button{flex:1}:where(.gp-grid-filter-mode-toggle button){border:1px solid var(--gp-grid-input-border);background-color:var(--gp-grid-bg);color:var(--gp-grid-text-secondary);cursor:pointer;border-radius:3px;padding:6px 10px;font-family:inherit;font-size:11px;transition:background-color .15s,color .15s}:where(.gp-grid-filter-mode-toggle button:hover){color:var(--gp-grid-text)}.gp-grid-filter-mode-toggle button.active{background-color:var(--gp-grid-primary);border-color:var(--gp-grid-primary);color:#fff}:where(.gp-grid-filter-info){color:var(--gp-grid-text-secondary);background-color:var(--gp-grid-bg-alt);border-radius:4px;padding:6px 8px;font-size:11px}.gp-grid-filter-search{box-sizing:border-box;width:100%;height:30px}:where(.gp-grid-filter-search){border:1px solid var(--gp-grid-input-border);background-color:var(--gp-grid-input-bg);color:var(--gp-grid-text);border-radius:4px;padding:0 10px;font-family:inherit;font-size:12px}:where(.gp-grid-filter-search:focus){border-color:var(--gp-grid-primary);outline:none}.gp-grid-filter-actions{display:flex}:where(.gp-grid-filter-actions){gap:8px}.gp-grid-filter-actions button{flex:1}:where(.gp-grid-filter-actions button){border:1px solid var(--gp-grid-input-border);background-color:var(--gp-grid-bg);color:var(--gp-grid-text);cursor:pointer;border-radius:3px;padding:4px 8px;font-family:inherit;font-size:11px}:where(.gp-grid-filter-actions button:hover:not(:disabled)){background-color:var(--gp-grid-hover)}:where(.gp-grid-filter-actions button:disabled){opacity:.5;cursor:not-allowed}.gp-grid-filter-list{flex-direction:column;max-height:200px;display:flex;overflow-y:auto}:where(.gp-grid-filter-list){border:1px solid var(--gp-grid-border-light);border-radius:4px;gap:4px;padding:6px}.gp-grid-filter-option{align-items:center;display:flex}:where(.gp-grid-filter-option){cursor:pointer;border-radius:3px;gap:8px;padding:4px 6px}:where(.gp-grid-filter-option:hover){background-color:var(--gp-grid-hover)}.gp-grid-filter-option input[type=checkbox]{margin:0}:where(.gp-grid-filter-option input[type=checkbox]){cursor:pointer}.gp-grid-filter-option span{text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}:where(.gp-grid-filter-blank){color:var(--gp-grid-text-muted);font-style:italic}.gp-grid-filter-groups,.gp-grid-filter-group{flex-direction:column;display:flex}:where(.gp-grid-filter-groups){gap:8px}:where(.gp-grid-filter-group){border:1px solid var(--gp-grid-border-light);background-color:var(--gp-grid-bg-alt);border-radius:5px;gap:6px;padding:8px}.gp-grid-filter-group-actions{justify-content:flex-end;align-items:center;display:flex}:where(.gp-grid-filter-group-actions){gap:6px}:where(.gp-grid-filter-group-actions .gp-grid-filter-combination){flex:1;margin-bottom:0}:where(.gp-grid-filter-group-remove){margin-bottom:-2px}:where(.gp-grid-filter-add-group){margin-top:2px}.gp-grid-filter-condition{flex-direction:column;display:flex}:where(.gp-grid-filter-condition){gap:6px}.gp-grid-filter-row{align-items:center;display:flex}:where(.gp-grid-filter-row){gap:6px}.gp-grid-filter-row select{height:30px}:where(.gp-grid-filter-row select){border:1px solid var(--gp-grid-input-border);background-color:var(--gp-grid-input-bg);color:var(--gp-grid-text);cursor:pointer;border-radius:4px;padding:0 6px;font-family:inherit;font-size:12px}.gp-grid-filter-row input[type=number],.gp-grid-filter-row input[type=date],.gp-grid-filter-row input[type=text],.gp-grid-filter-text-input{box-sizing:border-box;flex:1;min-width:0;height:30px}:where(.gp-grid-filter-row input[type=number]),:where(.gp-grid-filter-row input[type=date]),:where(.gp-grid-filter-row input[type=text]),:where(.gp-grid-filter-text-input){border:1px solid var(--gp-grid-input-border);background-color:var(--gp-grid-input-bg);color:var(--gp-grid-text);border-radius:4px;padding:0 8px;font-family:inherit;font-size:12px}:where(.gp-grid-filter-row input:focus){border-color:var(--gp-grid-primary);outline:none}:where(.gp-grid-filter-to){color:var(--gp-grid-text-secondary);font-size:11px}.gp-grid-filter-remove{flex:none;justify-content:center;align-items:center;width:24px;height:24px;display:inline-flex}:where(.gp-grid-filter-remove){color:var(--gp-grid-text-muted);cursor:pointer;background-color:#0000;border:none;border-radius:3px;padding:0;font-size:16px;line-height:1}:where(.gp-grid-filter-remove:hover){background-color:var(--gp-grid-error-bg);color:var(--gp-grid-error-text)}.gp-grid-filter-combination{display:flex}:where(.gp-grid-filter-combination){gap:4px;margin-bottom:4px}.gp-grid-filter-combination button{flex:1}:where(.gp-grid-filter-combination button){border:1px solid var(--gp-grid-input-border);background-color:var(--gp-grid-bg);color:var(--gp-grid-text-secondary);cursor:pointer;border-radius:3px;padding:4px 8px;font-family:inherit;font-size:10px}.gp-grid-filter-combination button.active{background-color:var(--gp-grid-primary);border-color:var(--gp-grid-primary);color:#fff}.gp-grid-filter-content button:focus-visible,.gp-grid-filter-content select:focus-visible,.gp-grid-filter-content input:focus-visible{outline:2px solid var(--gp-grid-primary);outline-offset:2px}.gp-grid-filter-mode-toggle button:focus-visible{outline-offset:-2px}.gp-grid-filter-add{width:100%}:where(.gp-grid-filter-add){border:1px dashed var(--gp-grid-border);color:var(--gp-grid-text-secondary);cursor:pointer;background-color:#0000;border-radius:4px;padding:6px;font-family:inherit;font-size:11px}:where(.gp-grid-filter-add:hover){background-color:var(--gp-grid-hover);border-color:var(--gp-grid-primary);color:var(--gp-grid-primary)}.gp-grid-filter-buttons{display:flex}:where(.gp-grid-filter-buttons){border-top:1px solid var(--gp-grid-border-light);gap:8px;padding-top:8px}.gp-grid-filter-btn-clear,.gp-grid-filter-btn-apply{flex:1}:where(.gp-grid-filter-btn-clear),:where(.gp-grid-filter-btn-apply){cursor:pointer;border-radius:4px;padding:8px 12px;font-family:inherit;font-size:12px}:where(.gp-grid-filter-btn-clear){border:1px solid var(--gp-grid-input-border);background-color:var(--gp-grid-bg);color:var(--gp-grid-text)}:where(.gp-grid-filter-btn-clear:hover){background-color:var(--gp-grid-hover)}:where(.gp-grid-filter-btn-apply){border:1px solid var(--gp-grid-primary);background-color:var(--gp-grid-primary);color:#fff}:where(.gp-grid-filter-btn-apply:hover){opacity:.9}.gp-grid-cell--row-drag-handle{touch-action:none}:where(.gp-grid-cell--row-drag-handle){cursor:grab}:where(.gp-grid-cell--row-drag-handle:active){cursor:grabbing}.gp-grid-row-drag-icon{justify-content:center;align-items:center;width:100%;height:100%;display:flex}:where(.gp-grid-row-drag-icon){color:var(--gp-grid-text-secondary)}.gp-grid-row-drag-icon svg{width:16px;height:16px}.gp-grid-row-drag-ghost{pointer-events:none;z-index:2000;box-sizing:border-box;position:fixed;overflow:hidden}:where(.gp-grid-row-drag-ghost){opacity:.8;background-color:var(--gp-grid-bg,#fff);border:2px solid var(--gp-grid-primary);border-radius:4px;box-shadow:0 4px 12px #00000026}.gp-grid-row-drop-indicator{z-index:1000;pointer-events:none;width:100%;height:3px;position:absolute;left:0}:where(.gp-grid-row-drop-indicator){background-color:var(--gp-grid-primary);border-radius:2px}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@gp-grid/vue",
|
|
3
3
|
"description": "A high-performance Vue 3 data grid component with virtual scrolling, cell selection, sorting, filtering, and Excel-like editing",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.23.1",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"main": "dist/index.js",
|
|
@@ -50,7 +50,7 @@
|
|
|
50
50
|
"nuxt3"
|
|
51
51
|
],
|
|
52
52
|
"dependencies": {
|
|
53
|
-
"@gp-grid/core": "0.
|
|
53
|
+
"@gp-grid/core": "0.23.1"
|
|
54
54
|
},
|
|
55
55
|
"peerDependencies": {
|
|
56
56
|
"vue": "^3.4.0"
|